Two native-inference hardening features from boocode_code_review_v2 §1 #12. MistakeTracker: new pure mistake-tracker.ts tracks consecutive heterogeneous tool failures (kinds surfaced per tool from tool-phase.ts). On 3 in a row the turn loop soft-nudges (model-facing recovery guidance + mistake_recovery sentinel + reset), then escalates to stopping the turn (cap-hit-style, Continue affordance) on a re-trip. Complements doom-loop (identical repeats) + cap-hit. File-provenance ledger: compaction.ts derives a deterministic ## Files Read list from the head messages' read-tool calls and injects it into the rolling-summary prompt so provenance survives compaction (no new table; read-only). mistake_recovery sentinel: MessageMetadata arm (server + web) + MessageBubble render branch. Built by 2 parallel agents. Server 545 tests passing (23 new); build + web tsc clean. Native-inference only. Builds on v2.7.3. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
47 lines
1.5 KiB
TypeScript
47 lines
1.5 KiB
TypeScript
// v1.11: anchored rolling summary template. Verbatim port from opencode
|
|
// (packages/opencode/src/session/compaction.ts SUMMARY_TEMPLATE). Kept in a
|
|
// separate module so the long template literal doesn't bloat compaction.ts.
|
|
|
|
export const SUMMARY_TEMPLATE = `Output exactly the Markdown structure shown inside <template> and keep the section order unchanged. Do not include the <template> tags in your response.
|
|
<template>
|
|
## Goal
|
|
- [single-sentence task summary]
|
|
|
|
## Constraints & Preferences
|
|
- [user constraints, preferences, specs, or "(none)"]
|
|
|
|
## Progress
|
|
### Done
|
|
- [completed work or "(none)"]
|
|
|
|
### In Progress
|
|
- [current work or "(none)"]
|
|
|
|
### Blocked
|
|
- [blockers or "(none)"]
|
|
|
|
## Key Decisions
|
|
- [decision and why, or "(none)"]
|
|
|
|
## Next Steps
|
|
- [ordered next actions or "(none)"]
|
|
|
|
## Critical Context
|
|
- [important technical facts, errors, open questions, or "(none)"]
|
|
|
|
## Relevant Files
|
|
- [file or directory path: why it matters, or "(none)"]
|
|
|
|
## Files Read
|
|
- [file or directory path that has been read/searched this session, or "(none)"]
|
|
</template>
|
|
|
|
Rules:
|
|
- Keep every section, even when empty.
|
|
- Use terse bullets, not prose paragraphs.
|
|
- Preserve exact file paths, commands, error strings, and identifiers when known.
|
|
- For ## Files Read: this is a cumulative provenance ledger. MERGE the paths
|
|
listed in any "## Files Read" block provided below with those already in the
|
|
previous summary — never drop a previously-recorded path. Sort and dedupe.
|
|
- Do not mention the summary process or that context was compacted.`;
|