|
|
@@ -7,7 +7,7 @@ import { mergeDeep, pipe } from "remeda"
|
|
|
import { GitLabWorkflowLanguageModel } from "gitlab-ai-provider"
|
|
|
import { ProviderTransform } from "@/provider/transform"
|
|
|
import { Config } from "@/config/config"
|
|
|
-import { Instance } from "@/project/instance"
|
|
|
+import { InstanceState } from "@/effect/instance-state"
|
|
|
import type { Agent } from "@/agent/agent"
|
|
|
import type { MessageV2 } from "./message-v2"
|
|
|
import { Plugin } from "@/plugin"
|
|
|
@@ -268,7 +268,7 @@ const live: Layer.Layer<
|
|
|
|
|
|
const bridge = yield* EffectBridge.make()
|
|
|
const approvedToolsForSession = new Set<string>()
|
|
|
- workflowModel.approvalHandler = Instance.bind(async (approvalTools) => {
|
|
|
+ workflowModel.approvalHandler = InstanceState.bind(async (approvalTools) => {
|
|
|
const uniqueNames = [...new Set(approvalTools.map((t: { name: string }) => t.name))] as string[]
|
|
|
// Auto-approve tools that were already approved in this session
|
|
|
// (prevents infinite approval loops for server-side MCP tools)
|
|
|
@@ -330,6 +330,10 @@ const live: Layer.Layer<
|
|
|
})
|
|
|
: undefined
|
|
|
|
|
|
+ const opencodeProjectID = input.model.providerID.startsWith("opencode")
|
|
|
+ ? (yield* InstanceState.context).project.id
|
|
|
+ : undefined
|
|
|
+
|
|
|
return streamText({
|
|
|
onError(error) {
|
|
|
l.error("stream error", {
|
|
|
@@ -369,7 +373,7 @@ const live: Layer.Layer<
|
|
|
headers: {
|
|
|
...(input.model.providerID.startsWith("opencode")
|
|
|
? {
|
|
|
- "x-opencode-project": Instance.project.id,
|
|
|
+ "x-opencode-project": opencodeProjectID,
|
|
|
"x-opencode-session": input.sessionID,
|
|
|
"x-opencode-request": input.user.id,
|
|
|
"x-opencode-client": Flag.OPENCODE_CLIENT,
|