loopforge 2.7.0 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +103 -166
- package/dist/canonical-state.d.ts.map +1 -1
- package/dist/canonical-state.js +44 -6
- package/dist/canonical-state.js.map +1 -1
- package/dist/enforcement-gate.d.ts +22 -1
- package/dist/enforcement-gate.d.ts.map +1 -1
- package/dist/enforcement-gate.js +281 -38
- package/dist/enforcement-gate.js.map +1 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +21 -3
- package/dist/engine.js.map +1 -1
- package/dist/evidence-provider.d.ts +3 -5
- package/dist/evidence-provider.d.ts.map +1 -1
- package/dist/evidence-provider.js +24 -10
- package/dist/evidence-provider.js.map +1 -1
- package/dist/index.d.ts +2 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -11
- package/dist/index.js.map +1 -1
- package/dist/loop-compiler.d.ts +2 -2
- package/dist/loop-compiler.d.ts.map +1 -1
- package/dist/loop-compiler.js +135 -42
- package/dist/loop-compiler.js.map +1 -1
- package/dist/loop-store.d.ts.map +1 -1
- package/dist/loop-store.js +3 -5
- package/dist/loop-store.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +42 -8
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session.d.ts +27 -2
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +145 -1
- package/dist/mcp/session.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +26 -4
- package/dist/mcp/tools.js.map +1 -1
- package/dist/policy-metrics.d.ts +8 -0
- package/dist/policy-metrics.d.ts.map +1 -1
- package/dist/policy-metrics.js +11 -0
- package/dist/policy-metrics.js.map +1 -1
- package/dist/policy.d.ts +46 -0
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +12 -2
- package/dist/policy.js.map +1 -1
- package/dist/prompt-assembler.d.ts +3 -1
- package/dist/prompt-assembler.d.ts.map +1 -1
- package/dist/prompt-assembler.js +427 -29
- package/dist/prompt-assembler.js.map +1 -1
- package/dist/protocol.d.ts +54 -8
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +7 -1
- package/dist/protocol.js.map +1 -1
- package/dist/round-coordinator.d.ts +28 -4
- package/dist/round-coordinator.d.ts.map +1 -1
- package/dist/round-coordinator.js +91 -7
- package/dist/round-coordinator.js.map +1 -1
- package/dist/round-driver.d.ts +4 -0
- package/dist/round-driver.d.ts.map +1 -1
- package/dist/round-driver.js +2 -0
- package/dist/round-driver.js.map +1 -1
- package/dist/round-transaction.d.ts +4 -0
- package/dist/round-transaction.d.ts.map +1 -1
- package/dist/round-transaction.js +4 -5
- package/dist/round-transaction.js.map +1 -1
- package/dist/self-eval.d.ts.map +1 -1
- package/dist/self-eval.js +30 -0
- package/dist/self-eval.js.map +1 -1
- package/dist/token-utils.d.ts +3 -0
- package/dist/token-utils.d.ts.map +1 -1
- package/dist/token-utils.js +6 -0
- package/dist/token-utils.js.map +1 -1
- package/dist/verification-gate.d.ts +6 -2
- package/dist/verification-gate.d.ts.map +1 -1
- package/dist/verification-gate.js +41 -5
- package/dist/verification-gate.js.map +1 -1
- package/package.json +2 -2
- package/skills/perception/SKILL.md +105 -30
- package/dist/interop.d.ts +0 -35
- package/dist/interop.d.ts.map +0 -1
- package/dist/interop.js +0 -34
- package/dist/interop.js.map +0 -1
- package/dist/run.d.ts +0 -51
- package/dist/run.d.ts.map +0 -1
- package/dist/run.js +0 -200
- package/dist/run.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,198 +1,141 @@
|
|
|
1
1
|
# LoopForge
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
tasks. It maintains objectives, constraints, evidence, decisions, progress, and
|
|
5
|
-
recovery state across 100+ rounds — with hierarchical summaries, structured
|
|
6
|
-
sub-goal tracking, time-aware constraint decay, and adaptive prompt budgets.
|
|
3
|
+
**A context window is not memory. Memory needs a runtime.**
|
|
7
4
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
to make a long task resumable and auditable without letting the prompt become the
|
|
11
|
-
only copy of the state. All similarity thresholds are policy-driven (v2.5);
|
|
12
|
-
Agent trust and stop semantics provide long-horizon observability.
|
|
5
|
+
> **v2.11.0** — `npm install -g loopforge`. Node.js ≥ 18. Zero runtime dependencies.
|
|
6
|
+
> [中文文档](../README.zh-CN.md)
|
|
13
7
|
|
|
14
|
-
|
|
15
|
-
newer and has no runtime dependencies.
|
|
8
|
+
---
|
|
16
9
|
|
|
17
|
-
##
|
|
10
|
+
## The real problems with long-horizon tasks
|
|
18
11
|
|
|
19
|
-
|
|
20
|
-
npm install -g loopforge@next
|
|
21
|
-
loopforge init --client claude
|
|
22
|
-
claude mcp add loopforge -- npx loopforge mcp
|
|
23
|
-
```
|
|
12
|
+
Any AI coding agent, given a long enough task, hits three walls. Not because the model isn't smart enough. Not because the context window isn't large enough. These are **architectural** problems.
|
|
24
13
|
|
|
25
|
-
|
|
14
|
+
### Problem 1: The summary cascade
|
|
26
15
|
|
|
27
|
-
|
|
28
|
-
loopforge init --client codex
|
|
29
|
-
codex mcp add loopforge -- npx loopforge mcp
|
|
30
|
-
```
|
|
16
|
+
Context fills up → compress. Fills up again → compress again. The third compression is a summary of a summary of a summary. Every cycle evaporates information — critical constraints get silently deleted because the summarizer judged them "no longer relevant." Researchers found that after 3–4 summary cycles, constraint violation rates spike from 0% to 59%. The agent doesn't know what it forgot, because the forgetting itself was compressed away.
|
|
31
17
|
|
|
32
|
-
|
|
18
|
+
### Problem 2: Self-correction doesn't work
|
|
33
19
|
|
|
34
|
-
|
|
35
|
-
loopforge init --client generic
|
|
36
|
-
```
|
|
20
|
+
Models cannot reliably improve themselves through introspection — they talk themselves out of correct answers. Effective recovery requires an **external verifier** — an independent observer that doesn't share the agent's context, doesn't participate in its reasoning, and only looks at inputs and outputs.
|
|
37
21
|
|
|
38
|
-
|
|
39
|
-
Perception skill under `.loopforge/skills/` unless `--target` is supplied.
|
|
22
|
+
### Problem 3: Compound error (p^N)
|
|
40
23
|
|
|
41
|
-
|
|
24
|
+
If each step succeeds with probability p, N sequential steps succeed with probability p^N. Frontier agents nail nearly 100% of tasks under 4 minutes but crater to under 10% on tasks over 4 hours. Small errors at each step become the correct input for the next step.
|
|
42
25
|
|
|
43
|
-
|
|
44
|
-
2. LoopForge compiles one prompt from the canonical state.
|
|
45
|
-
3. The Agent executes that prompt and submits a structured evaluation through
|
|
46
|
-
`loopforge_next`.
|
|
47
|
-
4. LoopForge captures evidence, verifies the evaluation, enforces the round
|
|
48
|
-
boundary, and either commits, rejects, or stops the round.
|
|
49
|
-
5. If work remains, the next prompt is compiled from the committed state.
|
|
26
|
+
**These three problems amplify each other. The summary cascade loses information → lost information becomes errors → the agent can't self-correct because those errors look reasonable within its own context.**
|
|
50
27
|
|
|
51
|
-
|
|
52
|
-
number, and commits no feedback. A process restart can recover the current prompt
|
|
53
|
-
and the last committed decision without advancing the round twice.
|
|
28
|
+
---
|
|
54
29
|
|
|
55
|
-
##
|
|
30
|
+
## What LoopForge does about it
|
|
56
31
|
|
|
57
|
-
LoopForge
|
|
58
|
-
describe how much state is included, not which reasoning method the Agent must
|
|
59
|
-
use.
|
|
32
|
+
LoopForge doesn't compete on context window size. It runs **outside** the agent and provides three things:
|
|
60
33
|
|
|
61
|
-
|
|
62
|
-
| --- | --- |
|
|
63
|
-
| L0 | Same-round retry with the rejection reason and changed evidence |
|
|
64
|
-
| L1 | Normal continuation with a compact state capsule |
|
|
65
|
-
| L2 | First round, checkpoint, goal change, or full state rehydration |
|
|
34
|
+
### 1. Breaks the summary cascade: Vault → compile, not summary → summary
|
|
66
35
|
|
|
67
|
-
|
|
68
|
-
sections, character budget, round ID, and attempt number.
|
|
36
|
+
Each round's self-evaluation is written to a **typed vault** (JSON documents). The next round's prompt is not generated from the previous prompt's summary — it's **recompiled from the vault**. Milestones aren't summaries of summaries; they're recomputed from raw vault entries. Constraints and criteria carry stable IDs (`c-XXXXXXXX`, `cr-XXXXXXXX`) for exact matching — no Jaccard guesswork.
|
|
69
37
|
|
|
70
|
-
|
|
38
|
+
```
|
|
39
|
+
❌ Traditional: prompt → summary → next prompt → re-summarize → … (information evaporates each cycle)
|
|
40
|
+
✅ LoopForge: prompt → vault entry → next prompt (recompiled from vault, zero evaporation)
|
|
41
|
+
```
|
|
71
42
|
|
|
72
|
-
|
|
43
|
+
### 2. External judgment: the perspective the agent cannot provide for itself
|
|
73
44
|
|
|
74
|
-
|
|
75
|
-
.loopforge/
|
|
76
|
-
loops/<sha256(loopId)>/
|
|
77
|
-
metadata.json
|
|
78
|
-
session.json
|
|
79
|
-
rounds/<round>.json
|
|
80
|
-
state/<loopId>-state.md
|
|
81
|
-
```
|
|
45
|
+
The verification gate cross-checks every agent claim against independent evidence — Git snapshots, test runner output, explicit verification commands. The enforcement gate detects what the agent cannot self-diagnose:
|
|
82
46
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
47
|
+
- R1: You claimed success but criteria remain unmet → **you're deceiving yourself**
|
|
48
|
+
- R3: You claimed success with no verifiable evidence → **your claim is empty**
|
|
49
|
+
- R4: You've been stuck for 3 rounds → **you're stalled and you don't know it**
|
|
50
|
+
- R5: Your progress is exactly zero → **you're going through the motions**
|
|
51
|
+
- R7: You said you'd do X but did Y → **your intent and actions are disconnected**
|
|
86
52
|
|
|
87
|
-
|
|
53
|
+
**The agent cannot self-detect these. The agent is the system that produced those narratives. External judgment is necessary.**
|
|
88
54
|
|
|
89
|
-
|
|
90
|
-
loopforge migrate
|
|
91
|
-
loopforge migrate --from path/to/prompt_vault.json --json
|
|
92
|
-
```
|
|
55
|
+
### 3. Walk back from dead ends
|
|
93
56
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
The stdio server exposes synchronous Agent-driven tools:
|
|
99
|
-
|
|
100
|
-
- `loopforge_start`
|
|
101
|
-
- `loopforge_next`
|
|
102
|
-
- `loopforge_status`
|
|
103
|
-
- `loopforge_pause`
|
|
104
|
-
- `loopforge_resume`
|
|
105
|
-
- `loopforge_stop`
|
|
106
|
-
- `loopforge_list`
|
|
107
|
-
- `loopforge_replay`
|
|
108
|
-
- `loopforge_health`
|
|
109
|
-
|
|
110
|
-
Tool results include `structuredContent` and a serialized text block for older
|
|
111
|
-
clients. LoopForge intentionally does not implement MCP Tasks. Long-running work
|
|
112
|
-
belongs to the Agent that is already executing the user's task.
|
|
113
|
-
|
|
114
|
-
Running sessions use renewable leases so two MCP processes cannot advance the
|
|
115
|
-
same loop at once. Paused and running sessions can be reconstructed from the
|
|
116
|
-
typed store after a restart.
|
|
117
|
-
|
|
118
|
-
## Command evidence
|
|
119
|
-
|
|
120
|
-
Git evidence is enabled by default. Verification commands are explicit and
|
|
121
|
-
disabled unless added to `loop_policy.json`:
|
|
122
|
-
|
|
123
|
-
```json
|
|
124
|
-
{
|
|
125
|
-
"evidence": {
|
|
126
|
-
"providers": ["git"],
|
|
127
|
-
"timeout_ms": 120000,
|
|
128
|
-
"commands": [
|
|
129
|
-
{
|
|
130
|
-
"name": "tests",
|
|
131
|
-
"enabled": true,
|
|
132
|
-
"executable": "npm",
|
|
133
|
-
"args": ["test"],
|
|
134
|
-
"cwd": ".",
|
|
135
|
-
"phase": "after",
|
|
136
|
-
"required": true,
|
|
137
|
-
"timeout_ms": 120000,
|
|
138
|
-
"max_output_chars": 20000,
|
|
139
|
-
"success_exit_codes": [0]
|
|
140
|
-
}
|
|
141
|
-
]
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
```
|
|
57
|
+
Progress stall or flatline → roll back to the last clean round instead of terminating. A diagnosis of why the path failed is injected. The backtrack prompt includes concrete workspace restore commands — `git checkout -- . && git clean -fd` with affected file lists. The verification gate checks that the workspace was actually restored before the next submission. Valid discoveries from skipped rounds are preserved.
|
|
58
|
+
|
|
59
|
+
---
|
|
145
60
|
|
|
146
|
-
|
|
147
|
-
the workspace. Output is capped at 20,000 characters and timeouts abort the
|
|
148
|
-
child process. If an Agent claims success while a required command fails, times
|
|
149
|
-
out, is missing, or has an invalid working directory, the verification verdict
|
|
150
|
-
is `contradicted`.
|
|
61
|
+
## What LoopForge is not
|
|
151
62
|
|
|
152
|
-
|
|
63
|
+
- ❌ **Not a memory system** — the state file is a derived view. The vault is truth. No RAG, no vector DB.
|
|
64
|
+
- ❌ **Not a context compressor** — doesn't compress prompts, doesn't do smart summarization. Recompiles from vault, not from the previous prompt.
|
|
65
|
+
- ❌ **Not a constraint tracker** — constraints are one signal the verification gate monitors. The core value is external judgment.
|
|
66
|
+
- ❌ **Not a replacement for the agent** — the agent still reads code, edits files, runs tools, and decides how to reason. LoopForge owns the **round boundary**.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Install
|
|
153
71
|
|
|
154
72
|
```bash
|
|
155
|
-
loopforge
|
|
156
|
-
loopforge init --client claude
|
|
157
|
-
loopforge
|
|
158
|
-
loopforge inspect LOOP_ID [--round N] [--prompt] [--json]
|
|
159
|
-
loopforge migrate [--from PATH] [--json]
|
|
73
|
+
npm install -g loopforge
|
|
74
|
+
loopforge init --client claude
|
|
75
|
+
claude mcp add loopforge -- npx loopforge mcp
|
|
160
76
|
```
|
|
161
77
|
|
|
162
|
-
|
|
163
|
-
Node version, store permissions, Git availability, and configured command
|
|
164
|
-
evidence paths without running verification commands.
|
|
78
|
+
Works with Claude Code, Codex CLI, or any MCP-compatible client.
|
|
165
79
|
|
|
166
|
-
|
|
80
|
+
The MCP server path (`loopforge mcp`) is the primary integration. It provides
|
|
81
|
+
the full cognitive infrastructure: verification gate, enforcement gate,
|
|
82
|
+
backtrack, evidence collection, and crash recovery. The engine is also
|
|
83
|
+
available as a library for custom integrations.
|
|
167
84
|
|
|
168
|
-
|
|
169
|
-
import { run } from "loopforge";
|
|
85
|
+
---
|
|
170
86
|
|
|
171
|
-
|
|
172
|
-
task: "Audit this repository and fix confirmed defects",
|
|
173
|
-
constraintsFromPlan: ["Do not change the public API"],
|
|
174
|
-
execute: async (prompt, context) => {
|
|
175
|
-
return agent.execute(prompt, { signal: context.signal });
|
|
176
|
-
},
|
|
177
|
-
});
|
|
178
|
-
```
|
|
87
|
+
## Architecture
|
|
179
88
|
|
|
180
|
-
For an embedding that already owns long-term context or telemetry, use explicit
|
|
181
|
-
hooks instead of auto-discovery:
|
|
182
|
-
|
|
183
|
-
```typescript
|
|
184
|
-
const result = await run({
|
|
185
|
-
task,
|
|
186
|
-
execute,
|
|
187
|
-
contextProvider: async ({ loopId, round, lastEvaluation }) => {
|
|
188
|
-
return myContextStore.read({ loopId, round, lastEvaluation });
|
|
189
|
-
},
|
|
190
|
-
terminalSinks: [async (event) => myTelemetry.record(event)],
|
|
191
|
-
});
|
|
192
89
|
```
|
|
90
|
+
┌─────────────────────────────────────────────────────┐
|
|
91
|
+
│ Agent executes round │
|
|
92
|
+
│ Reads code · Edits files · Runs tools · Reasons │
|
|
93
|
+
└──────────────────────┬──────────────────────────────┘
|
|
94
|
+
│ Agent submits SelfEvaluation
|
|
95
|
+
▼
|
|
96
|
+
┌─────────────────────────────────────────────────────┐
|
|
97
|
+
│ LoopForge round boundary │
|
|
98
|
+
│ │
|
|
99
|
+
│ Evidence → Verify → Enforce → Commit → Compile │
|
|
100
|
+
│ (Git/cmd) (11 checks) (7 rules) (vault) (next) │
|
|
101
|
+
│ │
|
|
102
|
+
│ accept: commit state, compile next round │
|
|
103
|
+
│ reject: retry same round, zero state mutation │
|
|
104
|
+
│ backtrack: roll back to last clean round, restore │
|
|
105
|
+
│ terminate: persist terminal state │
|
|
106
|
+
└──────────────────────┬──────────────────────────────┘
|
|
107
|
+
│ Recompile prompt from vault
|
|
108
|
+
▼
|
|
109
|
+
┌─────────────────────────────────────────────────────┐
|
|
110
|
+
│ Vault (typed JSON persistence) │
|
|
111
|
+
│ loops/<id>/rounds/<n>.json · session.json · policy │
|
|
112
|
+
│ Source of truth. Not a summary chain. │
|
|
113
|
+
└─────────────────────────────────────────────────────┘
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Key capabilities
|
|
119
|
+
|
|
120
|
+
**Vault → compile, not summary → summary.** Every round's self-evaluation is written to the vault. The next prompt is recompiled from vault entries. Stable IDs (`c-` / `cr-` / `sg-XXXXXXXX`) enable exact constraint, criterion, and sub-goal matching — no Jaccard false positives.
|
|
121
|
+
|
|
122
|
+
**External judgment.** The verification gate cross-checks agent claims against independent evidence. The enforcement gate detects cognitive integrity violations — progress stalls, intent-action gaps, empty success claims. The judge never shares the agent's context.
|
|
193
123
|
|
|
194
|
-
|
|
195
|
-
|
|
124
|
+
**Model expresses information needs.** Each round, the agent tells the compiler: what to emphasize, which sections to expand, where it's confused. The compiler reorders within safety boundaries — mandatory sections untouched, budget respected.
|
|
125
|
+
|
|
126
|
+
**Walk back from dead ends.** Progress stall → roll back to last clean round with a diagnosis. Workspace restore is prompted and verified — the next submission is rejected if files from skipped rounds are still dirty.
|
|
127
|
+
|
|
128
|
+
**Substantive drift, not filler.** R7 accepts intentional pivots only when the clarification references concrete IDs or file paths. Three consecutive weak clarifications terminate the loop.
|
|
129
|
+
|
|
130
|
+
**Thin prompt, fat state file.** L0 (retry) / L1 (continuation) / L2 (full rehydration) control density only — reasoning strategy belongs to the agent. Truth is in the vault.
|
|
131
|
+
|
|
132
|
+
**Pause · Resume · Replay.** Cross-process session leases. Idempotent resume after interruption. Time-travel queries over committed rounds.
|
|
133
|
+
|
|
134
|
+
**Nine MCP tools.** `start` · `next` · `status` · `stop` · `pause` · `list` · `replay` · `resume` · `health`. Every tool returns typed `structuredContent`.
|
|
135
|
+
|
|
136
|
+
**Zero dependencies. Policy-driven.** Node.js stdlib only. All thresholds, budgets, and intervals live in `loop_policy.json`. 491 tests.
|
|
137
|
+
|
|
138
|
+
---
|
|
196
139
|
|
|
197
140
|
## Development
|
|
198
141
|
|
|
@@ -202,15 +145,9 @@ npm test
|
|
|
202
145
|
npm pack --dry-run --json
|
|
203
146
|
```
|
|
204
147
|
|
|
205
|
-
The schema in `../loopforge-protocol.json` is generated from `src/protocol.ts`.
|
|
206
|
-
Do not edit it by hand.
|
|
207
|
-
|
|
208
|
-
## 2.0 compatibility boundary
|
|
148
|
+
The protocol schema in `../loopforge-protocol.json` is generated from `src/protocol.ts`. Do not edit it by hand.
|
|
209
149
|
|
|
210
|
-
|
|
211
|
-
Tasks, automatic memory discovery, global PromptCraft vaults, Markdown lineage
|
|
212
|
-
fallbacks, `Technique` and `Analysis` wire fields, and the `loopforge-mcp`
|
|
213
|
-
binary. Use `loopforge mcp`, the typed `FileLoopStore`, and explicit providers.
|
|
150
|
+
---
|
|
214
151
|
|
|
215
152
|
## License
|
|
216
153
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical-state.d.ts","sourceRoot":"","sources":["../src/canonical-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,OAAO,EACP,gBAAgB,EACjB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"canonical-state.d.ts","sourceRoot":"","sources":["../src/canonical-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,OAAO,EACP,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAIvB,eAAO,MAAM,8BAA8B,EAAG,CAAU,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,OAAO,8BAA8B,CAAC;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,wEAAwE;IACxE,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,+CAA+C;IAC/C,kBAAkB,EAAE,cAAc,EAAE,CAAC;IACrC,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,oDAAoD;IACpD,WAAW,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC;QAAC,oBAAoB,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACjJ,6EAA6E;IAC7E,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,+DAA+D;IAC/D,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,8DAA8D;IAC9D,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,6CAA6C;IAC7C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,KAAK,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;KACnE,CAAC;CACH;AAID,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAYtD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAEpE;AA4CD;kEACkE;AAClE,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAgK9E;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,mBAAmB,EAC7B,aAAa,EAAE,MAAM,GACpB,kBAAkB,CAiFpB"}
|
package/dist/canonical-state.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { createHash } from "node:crypto";
|
|
7
7
|
import { unique } from "./token-utils.js";
|
|
8
|
+
import { getPolicy } from "./policy.js";
|
|
8
9
|
export const CANONICAL_STATE_SCHEMA_VERSION = 1;
|
|
9
10
|
// unique() imported from token-utils.ts
|
|
10
11
|
/** Deterministic JSON serialization used by state and prompt hashes. */
|
|
@@ -30,6 +31,38 @@ function addList(lines, title, values) {
|
|
|
30
31
|
lines.push(`- ${value}`);
|
|
31
32
|
lines.push("");
|
|
32
33
|
}
|
|
34
|
+
/** v2.11: Derive a stable 8-char hex ID from text using SHA-256.
|
|
35
|
+
* Same hash strategy as computeGoalTextHash in loop-compiler.ts. */
|
|
36
|
+
function deriveItemId(text) {
|
|
37
|
+
return createHash("sha256").update(text.trim().replace(/\s+/g, " ").toLowerCase()).digest("hex").slice(0, 8);
|
|
38
|
+
}
|
|
39
|
+
/** v2.11: Render a list with ID prefixes when constraint_id_enabled is true.
|
|
40
|
+
* Each item gets a [prefix-XXXXXXXX] tag derived from its text hash.
|
|
41
|
+
* Items that already look like IDs (e.g. "cr-a3f2b1c0") are rendered as-is. */
|
|
42
|
+
function addListWithIds(lines, title, values, prefix) {
|
|
43
|
+
if (values.length === 0)
|
|
44
|
+
return;
|
|
45
|
+
const idEnabled = getPolicy().evolution.constraint_id_enabled;
|
|
46
|
+
lines.push(`## ${title}`, "");
|
|
47
|
+
for (const value of values) {
|
|
48
|
+
const trimmed = value.trim();
|
|
49
|
+
if (!trimmed)
|
|
50
|
+
continue;
|
|
51
|
+
// If the value is already an ID, render it as-is
|
|
52
|
+
const idRegex = /^(c|cr|sg)-[a-f0-9]{8}$/;
|
|
53
|
+
if (idRegex.test(trimmed)) {
|
|
54
|
+
lines.push(`- [\`${trimmed}\`] ${trimmed}`);
|
|
55
|
+
}
|
|
56
|
+
else if (idEnabled) {
|
|
57
|
+
const id = prefix + "-" + deriveItemId(trimmed);
|
|
58
|
+
lines.push(`- [\`${id}\`] ${trimmed}`);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
lines.push(`- ${trimmed}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
lines.push("");
|
|
65
|
+
}
|
|
33
66
|
/** Human/Agent-readable materialized view. It is always reproducible from the
|
|
34
67
|
* canonical state and is never consulted as transaction truth. */
|
|
35
68
|
export function renderCanonicalStateMarkdown(state) {
|
|
@@ -49,9 +82,10 @@ export function renderCanonicalStateMarkdown(state) {
|
|
|
49
82
|
state.currentTask,
|
|
50
83
|
"",
|
|
51
84
|
];
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
85
|
+
// v2.11: Success Criteria and Constraints render with stable IDs for exact agent matching
|
|
86
|
+
addListWithIds(lines, "Success Criteria", state.successCriteria, "cr");
|
|
87
|
+
addListWithIds(lines, "Hard Constraints", state.hardConstraints, "c");
|
|
88
|
+
addListWithIds(lines, "Active Constraints", state.activeConstraints, "c");
|
|
55
89
|
addList(lines, "Changes Since Last Round", state.changesSinceLastRound);
|
|
56
90
|
if (state.progress.estimate !== null ||
|
|
57
91
|
state.progress.criteriaMet.length > 0 ||
|
|
@@ -77,7 +111,7 @@ export function renderCanonicalStateMarkdown(state) {
|
|
|
77
111
|
}
|
|
78
112
|
lines.push("");
|
|
79
113
|
}
|
|
80
|
-
|
|
114
|
+
addListWithIds(lines, "Remaining", state.remainingCriteria, "cr");
|
|
81
115
|
addList(lines, "Blockers", state.blockers);
|
|
82
116
|
addList(lines, "Discoveries", state.discoveries);
|
|
83
117
|
addList(lines, "Cross-Round Outcomes", state.rollingOutcomes);
|
|
@@ -87,6 +121,7 @@ export function renderCanonicalStateMarkdown(state) {
|
|
|
87
121
|
if (state.inactiveConstraints.length > 0) {
|
|
88
122
|
lines.push("## Inactive Constraints", "");
|
|
89
123
|
lines.push("> Demoted after prolonged inactivity. Removed from prompts ", "but kept here. Auto-reactivated if violated again.", "");
|
|
124
|
+
const idEnabled = getPolicy().evolution.constraint_id_enabled;
|
|
90
125
|
for (const c of state.inactiveConstraints) {
|
|
91
126
|
const meta = state.constraintMetadata.find((m) => m.text === c);
|
|
92
127
|
const age = meta
|
|
@@ -95,7 +130,10 @@ export function renderCanonicalStateMarkdown(state) {
|
|
|
95
130
|
const lastV = meta?.last_violated_at_round
|
|
96
131
|
? `last violated R${meta.last_violated_at_round}`
|
|
97
132
|
: "never violated";
|
|
98
|
-
|
|
133
|
+
const idLabel = idEnabled && meta?.id
|
|
134
|
+
? `[\`${meta.id}\`] `
|
|
135
|
+
: "";
|
|
136
|
+
lines.push(`- ${idLabel}${c} (${lastV}, ${age} rounds inactive)`);
|
|
99
137
|
}
|
|
100
138
|
lines.push("");
|
|
101
139
|
}
|
|
@@ -149,7 +187,7 @@ export function renderCanonicalStateMarkdown(state) {
|
|
|
149
187
|
: sg.status === "blocked"
|
|
150
188
|
? ` (blocked R${sg.status_changed_at_round})`
|
|
151
189
|
: ` (canceled R${sg.status_changed_at_round})`;
|
|
152
|
-
lines.push(`- ${statusIcon} ${sg.description}${detail}${stale}`);
|
|
190
|
+
lines.push(`- ${statusIcon} [\`${sg.id}\`] ${sg.description}${detail}${stale}`);
|
|
153
191
|
}
|
|
154
192
|
lines.push("");
|
|
155
193
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical-state.js","sourceRoot":"","sources":["../src/canonical-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASzC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAU,CAAC;AAoDzD,wCAAwC;AAExC,wEAAwE;AACxE,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACrE,CAAC;IACD,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC1B,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CACzD,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAyB;IAC1D,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,OAAO,CAAC,KAAe,EAAE,KAAa,EAAE,MAAgB;IAC/D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAChC,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;IACrD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjB,CAAC;AAED;kEACkE;AAClE,MAAM,UAAU,4BAA4B,CAAC,KAAyB;IACpE,MAAM,KAAK,GAAG;QACZ,uBAAuB,KAAK,CAAC,MAAM,EAAE;QACrC,EAAE;QACF,eAAe,KAAK,CAAC,aAAa,EAAE;QACpC,cAAc,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,EAAE;QAC9C,gBAAgB,KAAK,CAAC,MAAM,EAAE;QAC9B,EAAE;QACF,mBAAmB;QACnB,EAAE;QACF,KAAK,CAAC,SAAS;QACf,EAAE;QACF,iBAAiB;QACjB,EAAE;QACF,KAAK,CAAC,WAAW;QACjB,EAAE;KACH,CAAC;IACF,OAAO,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAC1D,OAAO,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAC1D,OAAO,CAAC,KAAK,EAAE,oBAAoB,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC9D,OAAO,CAAC,KAAK,EAAE,0BAA0B,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACxE,IACE,KAAK,CAAC,QAAQ,CAAC,QAAQ,KAAK,IAAI;QAChC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QACrC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;QAC3C,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;QACtC,KAAK,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,EAC7B,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAC1F,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QACxC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CACR,cAAc,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,WAAW;gBACpD,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,UAAU,CACjF,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC;YACrC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrD,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,EAAE,sBAAsB,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAC9D,OAAO,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAC1D,OAAO,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACxD,OAAO,CAAC,KAAK,EAAE,qBAAqB,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAChE,IAAI,KAAK,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CACR,6DAA6D,EAC7D,oDAAoD,EACpD,EAAE,CACH,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;YAChE,MAAM,GAAG,GAAG,IAAI;gBACd,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,CAAC;gBAC9E,CAAC,CAAC,GAAG,CAAC;YACR,MAAM,KAAK,GAAG,IAAI,EAAE,sBAAsB;gBACxC,CAAC,CAAC,kBAAkB,IAAI,CAAC,sBAAsB,EAAE;gBACjD,CAAC,CAAC,gBAAgB,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,GAAG,mBAAmB,CAAC,CAAC;QAC1D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,KAAK,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,KAAK,gBAAgB;gBAC1C,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YACjD,KAAK,CAAC,IAAI,CACR,OAAO,QAAQ,IAAI,CAAC,CAAC,KAAK,EAAE,EAC5B,UAAU,CAAC,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,KAAK;gBACvD,aAAa,CAAC,CAAC,CAAC,oBAAoB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EACzD,EAAE,EACF,gBAAgB,CAAC,CAAC,OAAO,EAAE,EAC3B,EAAE,CACH,CAAC;YACF,IAAI,CAAC,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBACvC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,mBAAmB;oBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC5D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;YACD,IAAI,CAAC,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;gBACzC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB;oBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC7D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QACxC,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,UAAU,GACd,EAAE,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACpC,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBAC5B,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;wBAChC,EAAE,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YACvC,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,KAAK,SAAS;gBACnC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,KAAK,MAAM,IAAI,EAAE,CAAC,kBAAkB;gBAC1D,CAAC,CAAC,YAAY,EAAE,CAAC,kBAAkB,GAAG;gBACtC,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,aAAa;oBAC7B,CAAC,CAAC,YAAY,EAAE,CAAC,uBAAuB,GAAG;oBAC3C,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS;wBACzB,CAAC,CAAC,YAAY,EAAE,CAAC,iBAAiB,GAAG;wBACrC,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS;4BACzB,CAAC,CAAC,cAAc,EAAE,CAAC,uBAAuB,GAAG;4BAC7C,CAAC,CAAC,eAAe,EAAE,CAAC,uBAAuB,GAAG,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC,KAAK,UAAU,IAAI,EAAE,CAAC,WAAW,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAG,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;YAC1C,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9F,CAAC,CAAC,GAAG,CAAC;QACR,KAAK,CAAC,IAAI,CACR,gBAAgB,EAAE,EAAE,EACpB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EACrD,eAAe,KAAK,CAAC,eAAe,CAAC,MAAM,MAAM,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EACpF,YAAY,GAAG,EAAE,EACjB,EAAE,CACH,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,EAAE,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,EAAE,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAA2B,EAC3B,QAA6B,EAC7B,aAAqB;IAErB,MAAM,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC;IACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC;IAC1C,MAAM,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,IAAI,EAAE,CAAC;IAC3D,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC;IACzC,MAAM,iBAAiB,GAAG,IAAI,EAAE,kBAAkB,CAAC;IAEnD,MAAM,OAAO,GAAG,MAAM,CAAC;QACrB,OAAO,CAAC,oBAAoB;QAC5B,IAAI,EAAE,cAAc;QACpB,GAAG,CAAC,IAAI,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC/C,yBAAyB,KAAK,EAAE,CACjC;KACF,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,MAAM,CAAC;QACzB,GAAG,CAAC,IAAI,EAAE,sBAAsB,IAAI,EAAE,CAAC;QACvC,GAAG,CAAC,IAAI,EAAE,gBAAgB,IAAI,EAAE,CAAC;KAClC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,CAAC;QACtB,GAAG,CAAC,IAAI,EAAE,qBAAqB,IAAI,EAAE,CAAC;QACtC,IAAI,EAAE,mBAAmB;QACzB,OAAO,CAAC,gBAAgB;QACxB,GAAG,QAAQ,CAAC,QAAQ;KACrB,CAAC,CAAC;IAEH,OAAO;QACL,aAAa,EAAE,8BAA8B;QAC7C,MAAM,EAAE,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO;QAC3C,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK;QACtC,SAAS,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;QACnC,MAAM,EAAE,QAAQ,CAAC,OAAO;QACxB,SAAS,EAAE,SAAS,EAAE,SAAS,IAAI,OAAO,CAAC,IAAI;QAC/C,gBAAgB,EAAE,SAAS,EAAE,OAAO,IAAI,CAAC;QACzC,WAAW,EAAE,OAAO,CAAC,IAAI;QACzB,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,gBAAgB,IAAI,EAAE,CAAC;QAC1D,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,gBAAgB,IAAI,EAAE,CAAC;QAC1D,iBAAiB,EAAE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACtD,kBAAkB,EAAE,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACxD,mBAAmB,EAAE,MAAM,CAAC,QAAQ,CAAC,oBAAoB,IAAI,EAAE,CAAC;QAChE,kBAAkB,EAAE,QAAQ,CAAC,mBAAmB,IAAI,EAAE;QACtD,qBAAqB,EAAE,OAAO;QAC9B,iBAAiB,EAAE,MAAM,CACvB,IAAI,EAAE,kBAAkB,EAAE,0BAA0B,IAAI,EAAE,CAC3D;QACD,QAAQ;QACR,iBAAiB;QACjB,WAAW;QACX,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC,mBAAmB;QACrE,eAAe,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC;QACpD,eAAe,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,IAAI,EAAE,CAAC;QACxD,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,eAAe,IAAI,EAAE,CAAC;QACtD,qEAAqE;QACrE,WAAW,EAAE,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC;aACrC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC;aAC1C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACX,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,iBAAiB,EAAE,CAAC,CAAC,kBAAkB;YACvC,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,mBAAmB,EAAE,CAAC,CAAC,mBAAmB;YAC1C,oBAAoB,EAAE,CAAC,CAAC,oBAAoB;SAC7C,CAAC,CAAC;QACL,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,EAAE;QACrC,aAAa,EAAE,OAAO,EAAE,cAAc,IAAI,EAAE;QAC5C,QAAQ,EAAE,QAAQ,CAAC,SAAS,IAAI,EAAE;QAClC,eAAe,EAAE,QAAQ,CAAC,iBAAiB;QAC3C,eAAe,EAAE,QAAQ,CAAC,iBAAiB,IAAI,EAAE;QACjD,iBAAiB,EAAE,QAAQ,CAAC,mBAAmB;QAC/C,eAAe,EAAE,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE;QACvD,aAAa;QACb,QAAQ,EAAE;YACR,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,IAAI,IAAI;YACtD,WAAW,EAAE,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,IAAI,EAAE,CAAC;YAClE,iBAAiB,EAAE,MAAM,CACvB,iBAAiB,EAAE,0BAA0B,IAAI,EAAE,CACpD;YACD,YAAY,EAAE,MAAM,CAAC,iBAAiB,EAAE,aAAa,IAAI,EAAE,CAAC;YAC5D,KAAK,EAAE,iBAAiB,EAAE,YAAY,IAAI,IAAI;SAC/C;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"canonical-state.js","sourceRoot":"","sources":["../src/canonical-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,25 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import type { VaultEntry } from "./backends/interface.js";
|
|
20
20
|
import type { EnforcementResult, SelfEvaluation, VerificationFlag, VerificationResult } from "./protocol.js";
|
|
21
|
+
/** Scan backwards from currentRound to find the most recent clean round.
|
|
22
|
+
* Collects discovered_constraints from skipped rounds along the way.
|
|
23
|
+
* Returns null when no clean round is found within maxDepth. */
|
|
24
|
+
export declare function findSafeRestorePoint(currentRound: number, vaultEntries: VaultEntry[], maxDepth: number): {
|
|
25
|
+
round: number;
|
|
26
|
+
skippedDiscoveries: string[];
|
|
27
|
+
} | null;
|
|
28
|
+
/** Build the backtrack prompt injected at the top of the restored round.
|
|
29
|
+
*
|
|
30
|
+
* v2.13: Includes concrete workspace restore instructions with affected
|
|
31
|
+
* file lists from skipped rounds. The agent must restore the working tree
|
|
32
|
+
* to the clean round's state before proceeding. */
|
|
33
|
+
export declare function buildBacktrackPrompt(fromRound: number, toRound: number, triggerRule: string, skippedDiscoveries: string[],
|
|
34
|
+
/** v2.13: Files changed in the skipped rounds (from evidence snapshots).
|
|
35
|
+
* Used to show the agent exactly what needs to be reverted. */
|
|
36
|
+
skippedFiles?: string[],
|
|
37
|
+
/** v2.13: Git HEAD commit hash at the backtrack point (current HEAD).
|
|
38
|
+
* The agent must discard work back to the clean round's state. */
|
|
39
|
+
_gitHead?: string): string;
|
|
21
40
|
/** Enforce round-boundary rules based on the verification gate's findings
|
|
22
41
|
* and the agent's self-evaluation integrity.
|
|
23
42
|
*
|
|
@@ -30,7 +49,9 @@ import type { EnforcementResult, SelfEvaluation, VerificationFlag, VerificationR
|
|
|
30
49
|
* @param consecutiveRejections How many consecutive rounds have already been rejected.
|
|
31
50
|
* Starts at 0; increments on each reject; resets on accept.
|
|
32
51
|
*/
|
|
33
|
-
export declare function enforceRound(selfEval: SelfEvaluation, verifyResult: VerificationResult, currentRound: number, vaultEntries: VaultEntry[], consecutiveRejections?: number, skipEvidenceRules?: boolean
|
|
52
|
+
export declare function enforceRound(selfEval: SelfEvaluation, verifyResult: VerificationResult, currentRound: number, vaultEntries: VaultEntry[], consecutiveRejections?: number, skipEvidenceRules?: boolean,
|
|
53
|
+
/** v2.12: Current clarification streak for R7 escalation. */
|
|
54
|
+
driftClarificationStreak?: number): EnforcementResult;
|
|
34
55
|
/** Build a rejection prompt for the agent.
|
|
35
56
|
*
|
|
36
57
|
* The prompt clearly states the round was rejected, why, what the agent
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enforcement-gate.d.ts","sourceRoot":"","sources":["../src/enforcement-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"enforcement-gate.d.ts","sourceRoot":"","sources":["../src/enforcement-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AA6DvB;;iEAEiE;AACjE,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,UAAU,EAAE,EAC1B,QAAQ,EAAE,MAAM,GACf;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAsCxD;AAED;;;;oDAIoD;AACpD,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,kBAAkB,EAAE,MAAM,EAAE;AAC5B;gEACgE;AAChE,YAAY,GAAE,MAAM,EAAO;AAC3B;mEACmE;AACnE,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CA0HR;AA4kBD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,kBAAkB,EAChC,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,UAAU,EAAE,EAC1B,qBAAqB,GAAE,MAAU,EACjC,iBAAiB,UAAQ;AACzB,6DAA6D;AAC7D,wBAAwB,GAAE,MAAU,GACnC,iBAAiB,CA0BnB;AAED;;;;;;;;;;;;;;sEAcsE;AACtE,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,iBAAiB,EAChC,iBAAiB,GAAE,gBAAgB,EAAO,GACzC,MAAM,CA6CR"}
|