refactor(core): move database schema ownership (#29068)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { afterAll, beforeAll, beforeEach, describe, expect, test } from "bun:test"
|
||||
import { SessionLegacy } from "@opencode-ai/core/session/legacy"
|
||||
import path from "path"
|
||||
import { tool, type ModelMessage } from "ai"
|
||||
import { Cause, Effect, Exit, Fiber, Layer, Stream } from "effect"
|
||||
@@ -13,7 +14,7 @@ import { Provider } from "@/provider/provider"
|
||||
import { ProviderTransform } from "@/provider/transform"
|
||||
import { ModelsDev } from "@opencode-ai/core/models-dev"
|
||||
import { Plugin } from "@/plugin"
|
||||
import { ProviderID, ModelID } from "../../src/provider/schema"
|
||||
|
||||
import { testEffect } from "../lib/effect"
|
||||
import type { Agent } from "../../src/agent/agent"
|
||||
import { MessageV2 } from "../../src/session/message-v2"
|
||||
@@ -22,6 +23,7 @@ import { RuntimeFlags } from "@/effect/runtime-flags"
|
||||
import { Permission } from "@/permission"
|
||||
import { LLMAISDK } from "@/session/llm/ai-sdk"
|
||||
import { Session as SessionNs } from "@/session/session"
|
||||
import { ProviderV2 } from "@opencode-ai/core/provider"
|
||||
|
||||
type ConfigModel = NonNullable<NonNullable<Config.Info["provider"]>[string]["models"]>[string]
|
||||
|
||||
@@ -712,8 +714,8 @@ describe("session.llm.stream", () => {
|
||||
)
|
||||
|
||||
const resolved = yield* Provider.use.getModel(
|
||||
ProviderID.make(vivgridFixture.providerID),
|
||||
ModelID.make(fixture.model.id),
|
||||
ProviderV2.ID.make(vivgridFixture.providerID),
|
||||
ProviderV2.ModelID.make(fixture.model.id),
|
||||
)
|
||||
const sessionID = SessionID.make("session-test-1")
|
||||
const agent = {
|
||||
@@ -731,8 +733,8 @@ describe("session.llm.stream", () => {
|
||||
role: "user",
|
||||
time: { created: Date.now() },
|
||||
agent: agent.name,
|
||||
model: { providerID: ProviderID.make(vivgridFixture.providerID), modelID: resolved.id, variant: "high" },
|
||||
} satisfies MessageV2.User
|
||||
model: { providerID: ProviderV2.ID.make(vivgridFixture.providerID), modelID: resolved.id, variant: "high" },
|
||||
} satisfies SessionLegacy.User
|
||||
|
||||
yield* drain({
|
||||
user,
|
||||
@@ -786,8 +788,8 @@ describe("session.llm.stream", () => {
|
||||
const pending = waitStreamingRequest("/chat/completions")
|
||||
|
||||
const resolved = yield* Provider.use.getModel(
|
||||
ProviderID.make(alibabaQwenFixture.providerID),
|
||||
ModelID.make(fixture.model.id),
|
||||
ProviderV2.ID.make(alibabaQwenFixture.providerID),
|
||||
ProviderV2.ModelID.make(fixture.model.id),
|
||||
)
|
||||
const sessionID = SessionID.make("session-test-service-abort")
|
||||
const agent = {
|
||||
@@ -802,8 +804,8 @@ describe("session.llm.stream", () => {
|
||||
role: "user",
|
||||
time: { created: Date.now() },
|
||||
agent: agent.name,
|
||||
model: { providerID: ProviderID.make(alibabaQwenFixture.providerID), modelID: resolved.id },
|
||||
} satisfies MessageV2.User
|
||||
model: { providerID: ProviderV2.ID.make(alibabaQwenFixture.providerID), modelID: resolved.id },
|
||||
} satisfies SessionLegacy.User
|
||||
|
||||
const fiber = yield* drain({
|
||||
user,
|
||||
@@ -854,8 +856,8 @@ describe("session.llm.stream", () => {
|
||||
)
|
||||
|
||||
const resolved = yield* Provider.use.getModel(
|
||||
ProviderID.make(alibabaQwenFixture.providerID),
|
||||
ModelID.make(fixture.model.id),
|
||||
ProviderV2.ID.make(alibabaQwenFixture.providerID),
|
||||
ProviderV2.ModelID.make(fixture.model.id),
|
||||
)
|
||||
const sessionID = SessionID.make("session-test-tools")
|
||||
const agent = {
|
||||
@@ -871,9 +873,9 @@ describe("session.llm.stream", () => {
|
||||
role: "user",
|
||||
time: { created: Date.now() },
|
||||
agent: agent.name,
|
||||
model: { providerID: ProviderID.make(alibabaQwenFixture.providerID), modelID: resolved.id },
|
||||
model: { providerID: ProviderV2.ID.make(alibabaQwenFixture.providerID), modelID: resolved.id },
|
||||
tools: { question: true },
|
||||
} satisfies MessageV2.User
|
||||
} satisfies SessionLegacy.User
|
||||
|
||||
yield* drain({
|
||||
user,
|
||||
@@ -958,7 +960,7 @@ describe("session.llm.stream", () => {
|
||||
]
|
||||
const request = waitRequest("/responses", createEventResponse(responseChunks, true))
|
||||
|
||||
const resolved = yield* Provider.use.getModel(ProviderID.openai, ModelID.make(model.id))
|
||||
const resolved = yield* Provider.use.getModel(ProviderV2.ID.openai, ProviderV2.ModelID.make(model.id))
|
||||
const sessionID = SessionID.make("session-test-2")
|
||||
const agent = {
|
||||
name: "test",
|
||||
@@ -974,8 +976,8 @@ describe("session.llm.stream", () => {
|
||||
role: "user",
|
||||
time: { created: Date.now() },
|
||||
agent: agent.name,
|
||||
model: { providerID: ProviderID.make("openai"), modelID: resolved.id, variant: "high" },
|
||||
} satisfies MessageV2.User
|
||||
model: { providerID: ProviderV2.ID.make("openai"), modelID: resolved.id, variant: "high" },
|
||||
} satisfies SessionLegacy.User
|
||||
|
||||
yield* drain({
|
||||
user,
|
||||
@@ -1063,7 +1065,7 @@ describe("session.llm.stream", () => {
|
||||
}),
|
||||
)
|
||||
|
||||
const resolved = yield* Provider.use.getModel(ProviderID.openai, ModelID.make(model.id))
|
||||
const resolved = yield* Provider.use.getModel(ProviderV2.ID.openai, ProviderV2.ModelID.make(model.id))
|
||||
const sessionID = SessionID.make("session-test-native-flag-off")
|
||||
const agent = {
|
||||
name: "test",
|
||||
@@ -1088,8 +1090,8 @@ describe("session.llm.stream", () => {
|
||||
role: "user",
|
||||
time: { created: Date.now() },
|
||||
agent: agent.name,
|
||||
model: { providerID: ProviderID.make("openai"), modelID: resolved.id, variant: "high" },
|
||||
} satisfies MessageV2.User,
|
||||
model: { providerID: ProviderV2.ID.make("openai"), modelID: resolved.id, variant: "high" },
|
||||
} satisfies SessionLegacy.User,
|
||||
sessionID,
|
||||
model: resolved,
|
||||
agent,
|
||||
@@ -1133,7 +1135,7 @@ describe("session.llm.stream", () => {
|
||||
]
|
||||
const request = waitRequest("/responses", createEventResponse(chunks, true))
|
||||
|
||||
const resolved = yield* Provider.use.getModel(ProviderID.openai, ModelID.make(model.id))
|
||||
const resolved = yield* Provider.use.getModel(ProviderV2.ID.openai, ProviderV2.ModelID.make(model.id))
|
||||
const sessionID = SessionID.make("session-test-native")
|
||||
const agent = {
|
||||
name: "test",
|
||||
@@ -1150,8 +1152,8 @@ describe("session.llm.stream", () => {
|
||||
role: "user",
|
||||
time: { created: Date.now() },
|
||||
agent: agent.name,
|
||||
model: { providerID: ProviderID.make("openai"), modelID: resolved.id, variant: "high" },
|
||||
} satisfies MessageV2.User,
|
||||
model: { providerID: ProviderV2.ID.make("openai"), modelID: resolved.id, variant: "high" },
|
||||
} satisfies SessionLegacy.User,
|
||||
sessionID,
|
||||
model: resolved,
|
||||
agent,
|
||||
@@ -1217,7 +1219,7 @@ describe("session.llm.stream", () => {
|
||||
}),
|
||||
)
|
||||
|
||||
const resolved = yield* Provider.use.getModel(ProviderID.openai, ModelID.make(model.id))
|
||||
const resolved = yield* Provider.use.getModel(ProviderV2.ID.openai, ProviderV2.ModelID.make(model.id))
|
||||
const sessionID = SessionID.make("session-test-native-injected-tool")
|
||||
const agent = {
|
||||
name: "test",
|
||||
@@ -1233,8 +1235,8 @@ describe("session.llm.stream", () => {
|
||||
role: "user",
|
||||
time: { created: Date.now() },
|
||||
agent: agent.name,
|
||||
model: { providerID: ProviderID.make("openai"), modelID: resolved.id },
|
||||
} satisfies MessageV2.User,
|
||||
model: { providerID: ProviderV2.ID.make("openai"), modelID: resolved.id },
|
||||
} satisfies SessionLegacy.User,
|
||||
sessionID,
|
||||
model: resolved,
|
||||
agent,
|
||||
@@ -1305,7 +1307,7 @@ describe("session.llm.stream", () => {
|
||||
const request = waitRequest("/responses", createEventResponse(chunks, true))
|
||||
let executed: unknown
|
||||
|
||||
const resolved = yield* Provider.use.getModel(ProviderID.openai, ModelID.make(model.id))
|
||||
const resolved = yield* Provider.use.getModel(ProviderV2.ID.openai, ProviderV2.ModelID.make(model.id))
|
||||
const sessionID = SessionID.make("session-test-native-tool")
|
||||
const agent = {
|
||||
name: "test",
|
||||
@@ -1321,8 +1323,8 @@ describe("session.llm.stream", () => {
|
||||
role: "user",
|
||||
time: { created: Date.now() },
|
||||
agent: agent.name,
|
||||
model: { providerID: ProviderID.make("openai"), modelID: resolved.id },
|
||||
} satisfies MessageV2.User,
|
||||
model: { providerID: ProviderV2.ID.make("openai"), modelID: resolved.id },
|
||||
} satisfies SessionLegacy.User,
|
||||
sessionID,
|
||||
model: resolved,
|
||||
agent,
|
||||
@@ -1431,7 +1433,7 @@ describe("session.llm.stream", () => {
|
||||
),
|
||||
).toString("base64")}`
|
||||
|
||||
const resolved = yield* Provider.use.getModel(ProviderID.openai, ModelID.make(model.id))
|
||||
const resolved = yield* Provider.use.getModel(ProviderV2.ID.openai, ProviderV2.ModelID.make(model.id))
|
||||
const sessionID = SessionID.make("session-test-data-url")
|
||||
const agent = {
|
||||
name: "test",
|
||||
@@ -1446,8 +1448,8 @@ describe("session.llm.stream", () => {
|
||||
role: "user",
|
||||
time: { created: Date.now() },
|
||||
agent: agent.name,
|
||||
model: { providerID: ProviderID.make("openai"), modelID: resolved.id },
|
||||
} satisfies MessageV2.User
|
||||
model: { providerID: ProviderV2.ID.make("openai"), modelID: resolved.id },
|
||||
} satisfies SessionLegacy.User
|
||||
|
||||
yield* drain({
|
||||
user,
|
||||
@@ -1519,8 +1521,8 @@ describe("session.llm.stream", () => {
|
||||
const request = waitRequest("/messages", createEventResponse(chunks))
|
||||
|
||||
const resolved = yield* Provider.use.getModel(
|
||||
ProviderID.make(minimaxFixture.providerID),
|
||||
ModelID.make(model.id),
|
||||
ProviderV2.ID.make(minimaxFixture.providerID),
|
||||
ProviderV2.ModelID.make(model.id),
|
||||
)
|
||||
const sessionID = SessionID.make("session-test-3")
|
||||
const agent = {
|
||||
@@ -1538,8 +1540,8 @@ describe("session.llm.stream", () => {
|
||||
role: "user",
|
||||
time: { created: Date.now() },
|
||||
agent: agent.name,
|
||||
model: { providerID: ProviderID.make("minimax"), modelID: ModelID.make("MiniMax-M2.5") },
|
||||
} satisfies MessageV2.User
|
||||
model: { providerID: ProviderV2.ID.make("minimax"), modelID: ProviderV2.ModelID.make("MiniMax-M2.5") },
|
||||
} satisfies SessionLegacy.User
|
||||
|
||||
yield* drain({
|
||||
user,
|
||||
@@ -1615,7 +1617,7 @@ describe("session.llm.stream", () => {
|
||||
]
|
||||
const request = waitRequest("/messages", createEventResponse(chunks))
|
||||
|
||||
const resolved = yield* Provider.use.getModel(ProviderID.make("anthropic"), ModelID.make(model.id))
|
||||
const resolved = yield* Provider.use.getModel(ProviderV2.ID.make("anthropic"), ProviderV2.ModelID.make(model.id))
|
||||
const sessionID = SessionID.make("session-test-anthropic-tools")
|
||||
const agent = {
|
||||
name: "test",
|
||||
@@ -1629,8 +1631,8 @@ describe("session.llm.stream", () => {
|
||||
role: "user",
|
||||
time: { created: Date.now() },
|
||||
agent: agent.name,
|
||||
model: { providerID: ProviderID.make("anthropic"), modelID: resolved.id, variant: "max" },
|
||||
} satisfies MessageV2.User
|
||||
model: { providerID: ProviderV2.ID.make("anthropic"), modelID: resolved.id, variant: "max" },
|
||||
} satisfies SessionLegacy.User
|
||||
|
||||
const input = [
|
||||
{
|
||||
@@ -1814,7 +1816,7 @@ describe("session.llm.stream", () => {
|
||||
]
|
||||
const request = waitRequest(pathSuffix, createEventResponse(chunks))
|
||||
|
||||
const resolved = yield* Provider.use.getModel(ProviderID.make(geminiFixture.providerID), ModelID.make(model.id))
|
||||
const resolved = yield* Provider.use.getModel(ProviderV2.ID.make(geminiFixture.providerID), ProviderV2.ModelID.make(model.id))
|
||||
const sessionID = SessionID.make("session-test-4")
|
||||
const agent = {
|
||||
name: "test",
|
||||
@@ -1831,8 +1833,8 @@ describe("session.llm.stream", () => {
|
||||
role: "user",
|
||||
time: { created: Date.now() },
|
||||
agent: agent.name,
|
||||
model: { providerID: ProviderID.make(geminiFixture.providerID), modelID: resolved.id },
|
||||
} satisfies MessageV2.User
|
||||
model: { providerID: ProviderV2.ID.make(geminiFixture.providerID), modelID: resolved.id },
|
||||
} satisfies SessionLegacy.User
|
||||
|
||||
yield* drain({
|
||||
user,
|
||||
|
||||
Reference in New Issue
Block a user