mirror of
https://github.com/Kilo-Org/kilocode.git
synced 2026-09-21 05:52:35 +08:00
Remove wrappers for Provider service (#10658)
* refactor(opencode): remove legacy Provider promise wrappers in favor of Effect service usage Replace static `Provider.list`, `Provider.getModel`, `Provider.getLanguage`, `Provider.getSmallModel`, and `Provider.defaultModel` promise helpers with direct `Provider.Service.use()` calls through `AppRuntime.runPromise`. This eliminates the `makeRuntime` import and the wrapper functions that bypassed the Effect dependency injection system. - Remove legacy promise helpers from provider.ts - Update kilo-sessions, roll-call, commit-message, enhance-prompt, and task tool to use Provider.Service via AppRuntime directly - Thread Provider.Interface into KiloTask.select for proper DI - Add Provider.defaultLayer to test layers that exercise TaskTool - Update commit-message tests to spy on CommitMessageRuntime.model() * docs(sdk): regenerate v2 SDK types and update edit endpoint description
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { describe, expect, test, mock, beforeEach, spyOn } from "bun:test"
|
||||
import type { GitContext } from "@/kilocode/commit-message/types"
|
||||
import type { Provider } from "@/provider/provider"
|
||||
|
||||
// Mock dependencies before importing the module under test.
|
||||
// IMPORTANT: Bun's mock.module() is process-wide and permanent. To avoid
|
||||
@@ -7,7 +8,6 @@ import type { GitContext } from "@/kilocode/commit-message/types"
|
||||
// this test needs.
|
||||
|
||||
const realLog = await import("@opencode-ai/core/util/log")
|
||||
const realProvider = await import("@/provider/provider")
|
||||
const realAgent = await import("@/agent/agent")
|
||||
const realGitContext = await import("@/kilocode/commit-message/git-context")
|
||||
|
||||
@@ -36,19 +36,6 @@ mock.module("@/kilocode/commit-message/git-context", () => ({
|
||||
},
|
||||
}))
|
||||
|
||||
mock.module("@/provider/provider", () => ({
|
||||
...realProvider,
|
||||
Provider: {
|
||||
...realProvider.Provider,
|
||||
defaultModel: async () => ({ providerID: "test", modelID: "test-model" }),
|
||||
getSmallModel: async () => ({
|
||||
providerID: "test",
|
||||
id: "test-small-model",
|
||||
}),
|
||||
getModel: async () => ({ providerID: "test", id: "test-model" }),
|
||||
},
|
||||
}))
|
||||
|
||||
mock.module("@/agent/agent", () => ({
|
||||
...realAgent,
|
||||
Agent: {},
|
||||
@@ -67,10 +54,14 @@ mock.module("@opencode-ai/core/util/log", () => ({
|
||||
import { CommitMessageRuntime, generateCommitMessage } from "../../../src/kilocode/commit-message/generate"
|
||||
|
||||
const stream = spyOn(CommitMessageRuntime, "generate").mockImplementation(async () => mockStreamText)
|
||||
const model = spyOn(CommitMessageRuntime, "model").mockImplementation(
|
||||
async () => ({ providerID: "test", id: "test-small-model" }) as Provider.Model,
|
||||
)
|
||||
|
||||
describe("commit-message.generate", () => {
|
||||
beforeEach(() => {
|
||||
stream.mockImplementation(async () => mockStreamText)
|
||||
model.mockImplementation(async () => ({ providerID: "test", id: "test-small-model" }) as Provider.Model)
|
||||
mockStreamText = "feat(src): add hello world logging"
|
||||
mockGitContext = { ...defaultGitContext }
|
||||
captured = { path: "" }
|
||||
|
||||
@@ -8,6 +8,7 @@ import { MessageV2 } from "../../src/session/message-v2"
|
||||
import type { SessionPrompt } from "../../src/session/prompt"
|
||||
import { MessageID, PartID } from "../../src/session/schema"
|
||||
import { ModelID, ProviderID } from "../../src/provider/schema"
|
||||
import { Provider } from "../../src/provider/provider"
|
||||
import { TaskTool, type TaskPromptOps } from "../../src/tool/task"
|
||||
import { Truncate } from "../../src/tool/truncate"
|
||||
import { ToolRegistry } from "../../src/tool/registry"
|
||||
@@ -26,6 +27,7 @@ const it = testEffect(
|
||||
CrossSpawnSpawner.defaultLayer,
|
||||
Session.defaultLayer,
|
||||
Truncate.defaultLayer,
|
||||
Provider.defaultLayer,
|
||||
ToolRegistry.defaultLayer,
|
||||
),
|
||||
)
|
||||
|
||||
@@ -12,6 +12,7 @@ import { MessageV2 } from "../../src/session/message-v2"
|
||||
import type { SessionPrompt } from "../../src/session/prompt"
|
||||
import { MessageID, PartID } from "../../src/session/schema"
|
||||
import { ModelID, ProviderID } from "../../src/provider/schema"
|
||||
import { Provider } from "../../src/provider/provider"
|
||||
import { TaskTool, type TaskPromptOps } from "../../src/tool/task"
|
||||
import { Truncate } from "../../src/tool/truncate"
|
||||
import { ToolRegistry } from "../../src/tool/registry"
|
||||
@@ -94,6 +95,7 @@ const it = testEffect(
|
||||
CrossSpawnSpawner.defaultLayer,
|
||||
Session.defaultLayer,
|
||||
Truncate.defaultLayer,
|
||||
Provider.defaultLayer,
|
||||
ToolRegistry.defaultLayer,
|
||||
),
|
||||
)
|
||||
|
||||
@@ -8,6 +8,7 @@ import { MessageV2 } from "../../src/session/message-v2"
|
||||
import type { SessionPrompt } from "../../src/session/prompt"
|
||||
import { MessageID, PartID, SessionID } from "../../src/session/schema" // kilocode_change - SessionID used by cost propagation tests
|
||||
import { ModelID, ProviderID } from "../../src/provider/schema"
|
||||
import { Provider } from "../../src/provider/provider" // kilocode_change
|
||||
import { TaskTool, type TaskPromptOps } from "../../src/tool/task"
|
||||
import { Truncate } from "@/tool/truncate"
|
||||
import { ToolRegistry } from "@/tool/registry"
|
||||
@@ -30,6 +31,7 @@ const it = testEffect(
|
||||
CrossSpawnSpawner.defaultLayer,
|
||||
Session.defaultLayer,
|
||||
Truncate.defaultLayer,
|
||||
Provider.defaultLayer, // kilocode_change
|
||||
ToolRegistry.defaultLayer,
|
||||
),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user