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