diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index 58edffe3f9..fb822ff17e 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -1443,7 +1443,7 @@ NOTE: At any point in time through this workflow you should feel free to ask the const [skills, env, instructions, modelMsgs] = yield* Effect.all([ sys.skills(agent), - Effect.sync(() => sys.environment(model)), + sys.environment(model), instruction.system().pipe(Effect.orDie), MessageV2.toModelMessagesEffect(msgs, model), ]) diff --git a/packages/opencode/src/session/system.ts b/packages/opencode/src/session/system.ts index 9099f2d174..06c71fa7db 100644 --- a/packages/opencode/src/session/system.ts +++ b/packages/opencode/src/session/system.ts @@ -1,6 +1,6 @@ import { Context, Effect, Layer } from "effect" -import { Instance } from "../project/instance" +import { InstanceState } from "@/effect/instance-state" import PROMPT_ANTHROPIC from "./prompt/anthropic.txt" import PROMPT_DEFAULT from "./prompt/default.txt" @@ -33,7 +33,7 @@ export function provider(model: Provider.Model) { } export interface Interface { - readonly environment: (model: Provider.Model) => string[] + readonly environment: (model: Provider.Model) => Effect.Effect readonly skills: (agent: Agent.Info) => Effect.Effect } @@ -45,22 +45,22 @@ export const layer = Layer.effect( const skill = yield* Skill.Service return Service.of({ - environment(model) { - const project = Instance.project + environment: Effect.fn("SystemPrompt.environment")(function* (model: Provider.Model) { + const ctx = yield* InstanceState.context return [ [ `You are powered by the model named ${model.api.id}. The exact model ID is ${model.providerID}/${model.api.id}`, `Here is some useful information about the environment you are running in:`, ``, - ` Working directory: ${Instance.directory}`, - ` Workspace root folder: ${Instance.worktree}`, - ` Is directory a git repo: ${project.vcs === "git" ? "yes" : "no"}`, + ` Working directory: ${ctx.directory}`, + ` Workspace root folder: ${ctx.worktree}`, + ` Is directory a git repo: ${ctx.project.vcs === "git" ? "yes" : "no"}`, ` Platform: ${process.platform}`, ` Today's date: ${new Date().toDateString()}`, ``, ].join("\n"), ] - }, + }), skills: Effect.fn("SystemPrompt.skills")(function* (agent: Agent.Info) { if (Permission.disabled(["skill"], agent.permission).has("skill")) return