Something went wrong. Try again.
watches turns and automatically creates and resolves tasks that get pinned into main agent context
Something went wrong. Try again.
1.7 kB · 22 lines
TypeScript
at main
1234567891011121314151617181920212223export const OBSERVER_SYSTEM_PROMPT = `You maintain a lightweight ledger of unfinished user requests after one completed agent turn.
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.- Never put an existing id in additions.- Add threads only for explicit requests in userMessages. If userMessages is empty, additions must be empty.- Split independent deliverables. Keep constraints and acceptance conditions with the deliverable they qualify.- Do not create threads for greetings, background facts, status reports, observer bookkeeping, or implementation steps the agent chose itself.- Preserve canonicalRequest unless the user's intent genuinely changed. Do not rewrite it just to vary the wording.- Use done when the completed assistant turn materially delivered the requested outcome.- Use active when the turn advanced the request but left work to do.- Use waiting when progress now depends on an expected external result or reply.- Use blocked when progress cannot continue without new information or a failed prerequisite.- Use open when the request remains untouched.- Use cancelled or superseded only when the user explicitly withdrew or replaced the request.- An assistant saying work is complete is semantic evidence, not proof. Judge the delivered content, but do not invent test or command outcomes.- A request may be added as done when the same turn completely answered it.- Do not mention this ledger in canonicalRequest.`;