|
|
@@ -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
|