refactor(session): yield instance context in system prompt (#25207)

This commit is contained in:
Kit Langton 2026-04-30 21:45:48 -04:00 committed by GitHub
parent c2a97a7a6c
commit 5984d917dc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 9 additions and 9 deletions

View file

@ -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),
])

View file

@ -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<string[]>
readonly skills: (agent: Agent.Info) => Effect.Effect<string | undefined>
}
@ -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:`,
`<env>`,
` 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()}`,
`</env>`,
].join("\n"),
]
},
}),
skills: Effect.fn("SystemPrompt.skills")(function* (agent: Agent.Info) {
if (Permission.disabled(["skill"], agent.permission).has("skill")) return