summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorKit Langton <[email protected]>2026-04-30 21:29:28 -0400
committerGitHub <[email protected]>2026-04-30 21:29:28 -0400
commit8aa8798e076b7f3ca40c8dd0b34256413e049dae (patch)
tree791b25d4dc9c7c703d4d0ec6f24fc8d92c3a66b6
parent6d4629b566f2ab7e689e9ea0600dfbce63b68952 (diff)
downloadopencode-8aa8798e076b7f3ca40c8dd0b34256413e049dae.tar.gz
opencode-8aa8798e076b7f3ca40c8dd0b34256413e049dae.zip
refactor(session): yield instance context in llm (#25200)
-rw-r--r--packages/opencode/src/session/llm.ts10
1 files changed, 7 insertions, 3 deletions
diff --git a/packages/opencode/src/session/llm.ts b/packages/opencode/src/session/llm.ts
index b8b891185..58677debc 100644
--- a/packages/opencode/src/session/llm.ts
+++ b/packages/opencode/src/session/llm.ts
@@ -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,