diff --git a/README.md b/README.md index 08f917f..2038a95 100644 --- a/README.md +++ b/README.md @@ -29,8 +29,8 @@ The package manager records the checkout in `~/.prime/agent/settings.json`. Keep ## configuration ```bash -export PRIME_COMMITMENT_OBSERVER_PROVIDER=google -export PRIME_COMMITMENT_OBSERVER_MODEL=gemini-3.1-flash-lite +export PRIME_COMMITMENT_OBSERVER_PROVIDER=deepseek +export PRIME_COMMITMENT_OBSERVER_MODEL=deepseek-v4-flash export PRIME_COMMITMENT_OBSERVER_TIMEOUT_MS=60000 ``` diff --git a/src/observer.ts b/src/observer.ts index 35b9827..c3f9bd3 100644 --- a/src/observer.ts +++ b/src/observer.ts @@ -23,8 +23,8 @@ export type ObserverResult = export function configFromEnv(env: NodeJS.ProcessEnv = process.env): ObserverConfig { return { - provider: env.PRIME_COMMITMENT_OBSERVER_PROVIDER ?? "google", - modelId: env.PRIME_COMMITMENT_OBSERVER_MODEL ?? "gemini-3.1-flash-lite", + provider: env.PRIME_COMMITMENT_OBSERVER_PROVIDER ?? "deepseek", + modelId: env.PRIME_COMMITMENT_OBSERVER_MODEL ?? "deepseek-v4-flash", apiKey: env.PRIME_COMMITMENT_OBSERVER_API_KEY, baseUrl: env.PRIME_COMMITMENT_OBSERVER_BASE_URL, temperature: env.PRIME_COMMITMENT_OBSERVER_TEMPERATURE diff --git a/src/prompt.ts b/src/prompt.ts index cedd611..0f2c48c 100644 --- a/src/prompt.ts +++ b/src/prompt.ts @@ -1,6 +1,8 @@ export const OBSERVER_SYSTEM_PROMPT = `You maintain a lightweight ledger of unfinished user requests after one completed agent turn. -Return JSON matching the supplied schema. +Return exactly one JSON object with this shape and no Markdown: +{"existing":[{"id":"...","canonicalRequest":"...","status":"..."}],"additions":[{"canonicalRequest":"...","status":"..."}]} +Existing entries always include id. Addition entries never include id. Rules: - Return every existing thread exactly once in existing, with its unchanged id. diff --git a/test/logic.test.ts b/test/logic.test.ts index 6d91b7f..41b8b27 100644 --- a/test/logic.test.ts +++ b/test/logic.test.ts @@ -159,6 +159,7 @@ test("pending context escapes user-authored markup", () => { test("prompt has one coherent completion contract", () => { assert.match(OBSERVER_SYSTEM_PROMPT, /Use done when/); + assert.match(OBSERVER_SYSTEM_PROMPT, /Addition entries never include id/); assert.doesNotMatch(OBSERVER_SYSTEM_PROMPT, /Never emit done|evidenceActionIds|required validation/); });