loopforge 2.11.0 → 3.0.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.
Files changed (166) hide show
  1. package/README.md +145 -128
  2. package/dist/canonical-event-writer.d.ts +20 -0
  3. package/dist/canonical-event-writer.d.ts.map +1 -0
  4. package/dist/canonical-event-writer.js +131 -0
  5. package/dist/canonical-event-writer.js.map +1 -0
  6. package/dist/canonical-state.d.ts +20 -16
  7. package/dist/canonical-state.d.ts.map +1 -1
  8. package/dist/canonical-state.js +170 -61
  9. package/dist/canonical-state.js.map +1 -1
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +11 -10
  12. package/dist/cli.js.map +1 -1
  13. package/dist/cognitive-governance.d.ts +48 -0
  14. package/dist/cognitive-governance.d.ts.map +1 -0
  15. package/dist/cognitive-governance.js +226 -0
  16. package/dist/cognitive-governance.js.map +1 -0
  17. package/dist/compiler-subgoals.d.ts +7 -0
  18. package/dist/compiler-subgoals.d.ts.map +1 -0
  19. package/dist/compiler-subgoals.js +93 -0
  20. package/dist/compiler-subgoals.js.map +1 -0
  21. package/dist/derive-id.d.ts +12 -0
  22. package/dist/derive-id.d.ts.map +1 -0
  23. package/dist/derive-id.js +31 -0
  24. package/dist/derive-id.js.map +1 -0
  25. package/dist/evidence-provider.d.ts +23 -21
  26. package/dist/evidence-provider.d.ts.map +1 -1
  27. package/dist/evidence-provider.js +34 -74
  28. package/dist/evidence-provider.js.map +1 -1
  29. package/dist/generate-schema.js +90 -2
  30. package/dist/generate-schema.js.map +1 -1
  31. package/dist/index.d.ts +22 -19
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +15 -16
  34. package/dist/index.js.map +1 -1
  35. package/dist/loop-compiler.d.ts +1 -1
  36. package/dist/loop-compiler.d.ts.map +1 -1
  37. package/dist/loop-compiler.js +250 -337
  38. package/dist/loop-compiler.js.map +1 -1
  39. package/dist/loop-extras-parser.d.ts +2 -2
  40. package/dist/loop-extras-parser.d.ts.map +1 -1
  41. package/dist/loop-extras-parser.js +2 -2
  42. package/dist/loop-extras-parser.js.map +1 -1
  43. package/dist/loop-store.d.ts +20 -58
  44. package/dist/loop-store.d.ts.map +1 -1
  45. package/dist/loop-store.js +232 -309
  46. package/dist/loop-store.js.map +1 -1
  47. package/dist/mcp/server.d.ts +3 -3
  48. package/dist/mcp/server.d.ts.map +1 -1
  49. package/dist/mcp/server.js +83 -13
  50. package/dist/mcp/server.js.map +1 -1
  51. package/dist/mcp/session-projection.d.ts +5 -0
  52. package/dist/mcp/session-projection.d.ts.map +1 -0
  53. package/dist/mcp/session-projection.js +18 -0
  54. package/dist/mcp/session-projection.js.map +1 -0
  55. package/dist/mcp/session-queue.d.ts +3 -0
  56. package/dist/mcp/session-queue.d.ts.map +1 -0
  57. package/dist/mcp/session-queue.js +18 -0
  58. package/dist/mcp/session-queue.js.map +1 -0
  59. package/dist/mcp/session-types.d.ts +72 -0
  60. package/dist/mcp/session-types.d.ts.map +1 -0
  61. package/dist/mcp/session-types.js +2 -0
  62. package/dist/mcp/session-types.js.map +1 -0
  63. package/dist/mcp/session.d.ts +49 -93
  64. package/dist/mcp/session.d.ts.map +1 -1
  65. package/dist/mcp/session.js +544 -245
  66. package/dist/mcp/session.js.map +1 -1
  67. package/dist/mcp/tools.d.ts +26 -1
  68. package/dist/mcp/tools.d.ts.map +1 -1
  69. package/dist/mcp/tools.js +399 -274
  70. package/dist/mcp/tools.js.map +1 -1
  71. package/dist/policy-metrics.d.ts +17 -1
  72. package/dist/policy-metrics.d.ts.map +1 -1
  73. package/dist/policy-metrics.js +164 -1
  74. package/dist/policy-metrics.js.map +1 -1
  75. package/dist/policy.d.ts +34 -18
  76. package/dist/policy.d.ts.map +1 -1
  77. package/dist/policy.js +113 -18
  78. package/dist/policy.js.map +1 -1
  79. package/dist/prompt-assembler.d.ts +5 -3
  80. package/dist/prompt-assembler.d.ts.map +1 -1
  81. package/dist/prompt-assembler.js +126 -77
  82. package/dist/prompt-assembler.js.map +1 -1
  83. package/dist/prompt-policy.d.ts +8 -1
  84. package/dist/prompt-policy.d.ts.map +1 -1
  85. package/dist/prompt-policy.js +26 -8
  86. package/dist/prompt-policy.js.map +1 -1
  87. package/dist/protocol.d.ts +232 -192
  88. package/dist/protocol.d.ts.map +1 -1
  89. package/dist/protocol.js +15 -100
  90. package/dist/protocol.js.map +1 -1
  91. package/dist/replay.d.ts +11 -3
  92. package/dist/replay.d.ts.map +1 -1
  93. package/dist/replay.js +51 -14
  94. package/dist/replay.js.map +1 -1
  95. package/dist/round-commit-store.d.ts +12 -0
  96. package/dist/round-commit-store.d.ts.map +1 -0
  97. package/dist/round-commit-store.js +13 -0
  98. package/dist/round-commit-store.js.map +1 -0
  99. package/dist/round-coordinator.d.ts +25 -18
  100. package/dist/round-coordinator.d.ts.map +1 -1
  101. package/dist/round-coordinator.js +83 -71
  102. package/dist/round-coordinator.js.map +1 -1
  103. package/dist/round-driver.d.ts +14 -10
  104. package/dist/round-driver.d.ts.map +1 -1
  105. package/dist/round-driver.js +9 -13
  106. package/dist/round-driver.js.map +1 -1
  107. package/dist/round-gate.d.ts +31 -0
  108. package/dist/round-gate.d.ts.map +1 -0
  109. package/dist/round-gate.js +259 -0
  110. package/dist/round-gate.js.map +1 -0
  111. package/dist/round-recovery.d.ts +17 -0
  112. package/dist/round-recovery.d.ts.map +1 -0
  113. package/dist/round-recovery.js +117 -0
  114. package/dist/round-recovery.js.map +1 -0
  115. package/dist/round-report.d.ts +16 -0
  116. package/dist/round-report.d.ts.map +1 -0
  117. package/dist/round-report.js +401 -0
  118. package/dist/round-report.js.map +1 -0
  119. package/dist/round-transaction.d.ts +19 -12
  120. package/dist/round-transaction.d.ts.map +1 -1
  121. package/dist/round-transaction.js +102 -88
  122. package/dist/round-transaction.js.map +1 -1
  123. package/dist/runtime-services.d.ts +59 -0
  124. package/dist/runtime-services.d.ts.map +1 -0
  125. package/dist/runtime-services.js +460 -0
  126. package/dist/runtime-services.js.map +1 -0
  127. package/dist/storage.d.ts +3 -9
  128. package/dist/storage.d.ts.map +1 -1
  129. package/dist/storage.js +6 -17
  130. package/dist/storage.js.map +1 -1
  131. package/dist/token-utils.d.ts +9 -8
  132. package/dist/token-utils.d.ts.map +1 -1
  133. package/dist/token-utils.js +50 -10
  134. package/dist/token-utils.js.map +1 -1
  135. package/dist/vault-format.d.ts +4 -0
  136. package/dist/vault-format.d.ts.map +1 -0
  137. package/dist/vault-format.js +4 -0
  138. package/dist/vault-format.js.map +1 -0
  139. package/dist/vault-types.d.ts +24 -0
  140. package/dist/vault-types.d.ts.map +1 -0
  141. package/dist/vault-types.js +2 -0
  142. package/dist/vault-types.js.map +1 -0
  143. package/loop_policy.json +10 -12
  144. package/loopforge-policy.json +340 -0
  145. package/package.json +12 -6
  146. package/skills/perception/SKILL.md +199 -164
  147. package/dist/backends/interface.d.ts +0 -39
  148. package/dist/backends/interface.d.ts.map +0 -1
  149. package/dist/backends/interface.js +0 -6
  150. package/dist/backends/interface.js.map +0 -1
  151. package/dist/enforcement-gate.d.ts +0 -71
  152. package/dist/enforcement-gate.d.ts.map +0 -1
  153. package/dist/enforcement-gate.js +0 -744
  154. package/dist/enforcement-gate.js.map +0 -1
  155. package/dist/engine.d.ts +0 -59
  156. package/dist/engine.d.ts.map +0 -1
  157. package/dist/engine.js +0 -596
  158. package/dist/engine.js.map +0 -1
  159. package/dist/self-eval.d.ts +0 -23
  160. package/dist/self-eval.d.ts.map +0 -1
  161. package/dist/self-eval.js +0 -181
  162. package/dist/self-eval.js.map +0 -1
  163. package/dist/verification-gate.d.ts +0 -56
  164. package/dist/verification-gate.d.ts.map +0 -1
  165. package/dist/verification-gate.js +0 -563
  166. package/dist/verification-gate.js.map +0 -1
package/dist/protocol.js CHANGED
@@ -9,7 +9,6 @@
9
9
  export var Mode;
10
10
  (function (Mode) {
11
11
  Mode["LOOP_COMPILE"] = "loop_compile";
12
- Mode["FEEDBACK"] = "feedback";
13
12
  })(Mode || (Mode = {}));
14
13
  export var AgentStatus;
15
14
  (function (AgentStatus) {
@@ -17,25 +16,6 @@ export var AgentStatus;
17
16
  AgentStatus["ERROR"] = "error";
18
17
  AgentStatus["STALLED"] = "stalled";
19
18
  })(AgentStatus || (AgentStatus = {}));
20
- export function makeExecutionFeedback(overrides = {}) {
21
- return {
22
- output: "",
23
- success: false,
24
- constraint_violations: [],
25
- manual_fixes_needed: "",
26
- ...overrides,
27
- };
28
- }
29
- export function makeExecutionEvidence(overrides = {}) {
30
- return {
31
- files_changed: [],
32
- test_results: null,
33
- success_criteria_met: [],
34
- success_criteria_remaining: [],
35
- progress_estimate: 0.0,
36
- ...overrides,
37
- };
38
- }
39
19
  export function makeMilestoneSummary(overrides = {}) {
40
20
  return {
41
21
  label: "",
@@ -49,34 +29,6 @@ export function makeMilestoneSummary(overrides = {}) {
49
29
  ...overrides,
50
30
  };
51
31
  }
52
- export function makeSelfEvaluation(overrides = {}) {
53
- return {
54
- success: false,
55
- output_summary: "",
56
- constraint_violations: [],
57
- should_continue: true,
58
- discovered_constraints: [],
59
- objective_refinement: "",
60
- emerged_subtasks: [],
61
- execution_evidence: undefined,
62
- retracted_constraints: [],
63
- revised_success_criteria: [],
64
- wrong_assumptions: [],
65
- worker_results: [],
66
- compression_checkpoint: false,
67
- checkpoint_label: "",
68
- next_action: undefined,
69
- completed_subtasks: [],
70
- blocked_subtasks: [],
71
- canceled_subtasks: [],
72
- stop_reason: undefined,
73
- drift_clarification: undefined,
74
- prompt_requests: undefined,
75
- ...overrides,
76
- };
77
- }
78
- /** Regex to extract a self-evaluation JSON block from agent output. */
79
- export const SELF_EVAL_REGEX = /---loopforge-eval\s*([\s\S]*?)\s*---end-loopforge-eval/;
80
32
  export function makeLoopObjective(overrides = {}) {
81
33
  return {
82
34
  objective: "",
@@ -143,32 +95,6 @@ export function makeTaskAlignment(overrides = {}) {
143
95
  ...overrides,
144
96
  };
145
97
  }
146
- export function makeLoopRoundResult(overrides = {}) {
147
- return {
148
- round: 0,
149
- success: false,
150
- output_summary: "",
151
- constraint_violations: [],
152
- manual_fixes_needed: "",
153
- discovered_constraints: [],
154
- objective_refinement: "",
155
- emerged_subtasks: [],
156
- execution_evidence: undefined,
157
- retracted_constraints: [],
158
- revised_success_criteria: [],
159
- wrong_assumptions: [],
160
- worker_results: [],
161
- compression_checkpoint: false,
162
- checkpoint_label: "",
163
- next_action: undefined,
164
- completed_subtasks: [],
165
- blocked_subtasks: [],
166
- canceled_subtasks: [],
167
- drift_clarification: undefined,
168
- prompt_requests: undefined,
169
- ...overrides,
170
- };
171
- }
172
98
  export function makeLoopCompileRequest(overrides = {}) {
173
99
  return {
174
100
  mode: Mode.LOOP_COMPILE,
@@ -182,7 +108,7 @@ export function makeLoopCompileRequest(overrides = {}) {
182
108
  plan_source: null,
183
109
  constraints_from_plan: [],
184
110
  new_since_last_round: "",
185
- last_round_result: null,
111
+ last_round_view: null,
186
112
  force_level: "auto",
187
113
  health_check_interval: 1,
188
114
  external_context: "",
@@ -215,12 +141,24 @@ export function makeLoopCompileResponse(overrides = {}) {
215
141
  constraint_metadata: [],
216
142
  agent_trust_score: undefined,
217
143
  agent_trust_trend: [],
218
- suggested_next_task: "",
144
+ projection: makeLoopCompileProjection(),
219
145
  plan_source: null,
220
146
  warnings: [],
221
147
  error: "",
222
148
  state_file_content: undefined,
223
149
  prompt_artifact: undefined,
150
+ canonical_state: undefined,
151
+ ...overrides,
152
+ };
153
+ }
154
+ export function makeLoopCompileProjection(overrides = {}) {
155
+ return {
156
+ suggestedNextAction: "",
157
+ verifiedFacts: [],
158
+ verifiedEvidenceRefs: [],
159
+ regressionObligations: [],
160
+ discoveredFacts: [],
161
+ activeBlockers: [],
224
162
  ...overrides,
225
163
  };
226
164
  }
@@ -230,10 +168,6 @@ export function makeEvidenceSnapshot(overrides = {}) {
230
168
  export function makeSessionState(taskId) {
231
169
  return {
232
170
  task_id: taskId,
233
- call_count: 0,
234
- success_trend: [],
235
- current_version: "v1",
236
- feedback_buffer: [],
237
171
  };
238
172
  }
239
173
  export function makeEnforcementResult(overrides = {}) {
@@ -243,6 +177,7 @@ export function makeEnforcementResult(overrides = {}) {
243
177
  fix_instructions: "",
244
178
  check: "",
245
179
  clarification_accepted: false,
180
+ escalation_issued: false,
246
181
  ...overrides,
247
182
  };
248
183
  }
@@ -262,26 +197,6 @@ export function makeVerificationResult(overrides = {}) {
262
197
  ...overrides,
263
198
  };
264
199
  }
265
- // ── Serialisation helpers ───────────────────────────────────────────────────
266
- function toDict(obj) {
267
- const result = {};
268
- for (const [key, value] of Object.entries(obj)) {
269
- if (value === null || value === undefined)
270
- continue;
271
- if (typeof value === "object" && !Array.isArray(value)) {
272
- result[key] = toDict(value);
273
- }
274
- else if (Array.isArray(value)) {
275
- result[key] = value.map((v) => typeof v === "object" && v !== null && !Array.isArray(v)
276
- ? toDict(v)
277
- : v);
278
- }
279
- else {
280
- result[key] = value;
281
- }
282
- }
283
- return result;
284
- }
285
200
  // ── Factory helpers ─────────────────────────────────────────────────────────
286
201
  export function makeTaskId(taskDescription) {
287
202
  let slug = taskDescription.toLowerCase().trim().slice(0, 60);
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
package/dist/replay.d.ts CHANGED
@@ -1,17 +1,25 @@
1
1
  /** ReplayBackend — time-travel queries over vault lineage.
2
2
  *
3
- * Depends on VaultBackend interface — no direct filesystem access.
3
+ * Depends on LoopStore — no direct filesystem access.
4
4
  * Enables audit, comparison, and timeline analysis of loop rounds.
5
5
  */
6
- import type { VaultBackend, VaultEntry } from "./backends/interface.js";
6
+ import type { VaultEntry } from "./vault-types.js";
7
+ import type { LoopStore } from "./loop-store.js";
7
8
  export declare class ReplayBackend {
8
9
  private readonly backend;
9
- constructor(backend: VaultBackend);
10
+ constructor(backend: LoopStore);
10
11
  getRound(loopId: string, roundNum: number): VaultEntry | null;
11
12
  replay(loopId: string, opts?: {
12
13
  start?: number;
13
14
  end?: number;
14
15
  }): VaultEntry[];
16
+ /** Return the complete canonical event stream for a loop.
17
+ *
18
+ * Unlike the legacy round summary below, this view preserves every event
19
+ * (round events, gates, retries and lineage) and its event_sequence so callers
20
+ * can paginate and replay the durable source of truth deterministically.
21
+ */
22
+ eventTimeline(loopId: string): Record<string, unknown>[];
15
23
  timeline(loopId: string): Record<string, unknown>[];
16
24
  private maxRound;
17
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAMxE,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;gBAE3B,OAAO,EAAE,YAAY;IAMjC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAgC7D,MAAM,CACJ,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GACtC,UAAU,EAAE;IAkBf,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAqBnD,OAAO,CAAC,QAAQ;CAajB"}
1
+ {"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAMjD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;gBAExB,OAAO,EAAE,SAAS;IAM9B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAgC7D,MAAM,CACJ,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GACtC,UAAU,EAAE;IAkBf;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IA+BxD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAqBnD,OAAO,CAAC,QAAQ;CAcjB"}
package/dist/replay.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /** ReplayBackend — time-travel queries over vault lineage.
2
2
  *
3
- * Depends on VaultBackend interface — no direct filesystem access.
3
+ * Depends on LoopStore — no direct filesystem access.
4
4
  * Enables audit, comparison, and timeline analysis of loop rounds.
5
5
  */
6
6
  // ═══════════════════════════════════════════════════════════════════════════
@@ -14,22 +14,20 @@ export class ReplayBackend {
14
14
  // ── Single-round lookup ────────────────────────────────────────────────
15
15
  getRound(loopId, roundNum) {
16
16
  const prefix = `loop:${loopId}:r${roundNum}`;
17
- const entries = this.backend.queryEntries({ prefix });
18
- const lineageEntries = entries.filter((e) => !String(e.task_id ?? "").endsWith(":feedback"));
17
+ const entries = this.backend.queryLoopEvents(loopId)
18
+ .filter((entry) => String(entry.task_id ?? "").startsWith(prefix));
19
+ const lineageEntries = entries.filter((e) => !String(e.task_id ?? "").endsWith(":event"));
19
20
  if (!lineageEntries.length)
20
21
  return null;
21
22
  const entry = { ...lineageEntries[0] };
22
- // Merge feedback success flag
23
- const fbEntries = this.backend.queryEntries({
24
- prefix,
25
- feedbackOnly: true,
26
- });
27
- if (fbEntries.length) {
28
- const fbSuccess = fbEntries[0].success;
29
- if (fbSuccess !== undefined) {
30
- entry.success = fbSuccess;
23
+ // Merge round-event success flag
24
+ const roundEvents = entries.filter((entry) => String(entry.task_id ?? "").endsWith(":event"));
25
+ if (roundEvents.length) {
26
+ const eventSuccess = roundEvents[0].success;
27
+ if (eventSuccess !== undefined) {
28
+ entry.success = eventSuccess;
31
29
  const lineage = (entry.loop_lineage ?? {});
32
- lineage.success = fbSuccess;
30
+ lineage.success = eventSuccess;
33
31
  entry.loop_lineage = lineage;
34
32
  }
35
33
  }
@@ -53,6 +51,44 @@ export class ReplayBackend {
53
51
  return results;
54
52
  }
55
53
  // ── Timeline ──────────────────────────────────────────────────────────
54
+ /** Return the complete canonical event stream for a loop.
55
+ *
56
+ * Unlike the legacy round summary below, this view preserves every event
57
+ * (round events, gates, retries and lineage) and its event_sequence so callers
58
+ * can paginate and replay the durable source of truth deterministically.
59
+ */
60
+ eventTimeline(loopId) {
61
+ const entries = this.backend.queryLoopEvents(loopId);
62
+ const seen = new Set();
63
+ return entries
64
+ .filter((entry) => {
65
+ const key = `${entry.task_id ?? entry.id ?? ""}:${entry.event_sequence ?? ""}`;
66
+ if (seen.has(key))
67
+ return false;
68
+ seen.add(key);
69
+ const taskId = String(entry.task_id ?? "");
70
+ return entry.loop_id === loopId ||
71
+ (entry.loop_id === undefined &&
72
+ (taskId === `loop:${loopId}` || taskId.startsWith(`loop:${loopId}:`)));
73
+ })
74
+ .sort((left, right) => {
75
+ const leftSequence = left.event_sequence;
76
+ const rightSequence = right.event_sequence;
77
+ if (typeof leftSequence === "number" && typeof rightSequence === "number" && leftSequence !== rightSequence) {
78
+ return leftSequence - rightSequence;
79
+ }
80
+ const leftRound = typeof left.loop_lineage?.round === "number" ? left.loop_lineage.round : 0;
81
+ const rightRound = typeof right.loop_lineage?.round === "number" ? right.loop_lineage.round : 0;
82
+ if (leftRound !== rightRound)
83
+ return leftRound - rightRound;
84
+ return String(left.task_id ?? left.id ?? "").localeCompare(String(right.task_id ?? right.id ?? ""));
85
+ })
86
+ .map((entry) => ({
87
+ ...entry,
88
+ round: typeof entry.loop_lineage?.round === "number" ? entry.loop_lineage.round : 0,
89
+ eventType: entry.task_type ?? "event",
90
+ }));
91
+ }
56
92
  timeline(loopId) {
57
93
  const entries = this.replay(loopId);
58
94
  const timeline = [];
@@ -72,7 +108,8 @@ export class ReplayBackend {
72
108
  // ── Helpers ─────────────────────────────────────────────────────────────
73
109
  maxRound(loopId) {
74
110
  const prefix = `loop:${loopId}:r`;
75
- const entries = this.backend.queryEntries({ prefix });
111
+ const entries = this.backend.queryLoopEvents(loopId)
112
+ .filter((entry) => String(entry.task_id ?? "").startsWith(prefix));
76
113
  let maxR = 0;
77
114
  for (const e of entries) {
78
115
  const lineage = (e.loop_lineage ?? {});
@@ -1 +1 @@
1
- {"version":3,"file":"replay.js","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"replay.js","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { VaultEntry } from "./vault-types.js";
2
+ import type { LoopStore } from "./loop-store.js";
3
+ export interface RoundCommitStore {
4
+ find(loopId: string, round: number): VaultEntry[];
5
+ }
6
+ /** Backend-specific lookup kept outside storage/session orchestration. */
7
+ export declare class VaultRoundCommitStore implements RoundCommitStore {
8
+ private readonly backend;
9
+ constructor(backend: LoopStore);
10
+ find(loopId: string, round: number): VaultEntry[];
11
+ }
12
+ //# sourceMappingURL=round-commit-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"round-commit-store.d.ts","sourceRoot":"","sources":["../src/round-commit-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CAAC;CACnD;AAED,0EAA0E;AAC1E,qBAAa,qBAAsB,YAAW,gBAAgB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,SAAS;IAE/C,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE;CAKlD"}
@@ -0,0 +1,13 @@
1
+ /** Backend-specific lookup kept outside storage/session orchestration. */
2
+ export class VaultRoundCommitStore {
3
+ backend;
4
+ constructor(backend) {
5
+ this.backend = backend;
6
+ }
7
+ find(loopId, round) {
8
+ const prefix = `loop:${loopId}:r${round}:event`;
9
+ return this.backend.queryLoopEvents(loopId)
10
+ .filter((entry) => entry.task_id === prefix);
11
+ }
12
+ }
13
+ //# sourceMappingURL=round-commit-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"round-commit-store.js","sourceRoot":"","sources":["../src/round-commit-store.ts"],"names":[],"mappings":"AAOA,0EAA0E;AAC1E,MAAM,OAAO,qBAAqB;IACH;IAA7B,YAA6B,OAAkB;QAAlB,YAAO,GAAP,OAAO,CAAW;IAAG,CAAC;IAEnD,IAAI,CAAC,MAAc,EAAE,KAAa;QAChC,MAAM,MAAM,GAAG,QAAQ,MAAM,KAAK,KAAK,QAAQ,CAAC;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC;aACxC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;IACjD,CAAC;CACF"}
@@ -5,10 +5,8 @@
5
5
  *
6
6
  * verify → enforce → stop decision
7
7
  *
8
- * Before this module, runtime.ts and session.ts each maintained their
9
- * own copy of the pipeline (~60 lines each). Drift between the two
10
- * paths (e.g. git verification only wired into one side) was a known
11
- * risk. The RoundCoordinator is the single source of truth.
8
+ * The RoundCoordinator is the single source of truth for this pipeline;
9
+ * transport adapters only prepare input and route the resulting decision.
12
10
  *
13
11
  * State transitions:
14
12
  * RoundStarted → EvidenceCaptured → EvaluationSubmitted
@@ -17,21 +15,19 @@
17
15
  * Persistence is owned by round-transaction.ts so reject paths remain
18
16
  * side-effect free and accepted decisions can be replayed idempotently.
19
17
  */
20
- import type { VaultBackend } from "./backends/interface.js";
18
+ import type { LoopStore } from "./loop-store.js";
21
19
  import type { ProviderSnapshot } from "./evidence-provider.js";
22
- import type { SelfEvaluation, StopReason, VerificationFlag } from "./protocol.js";
20
+ import type { CompilerRoundProjection, RoundReport, StopReason, VerificationFlag } from "./protocol.js";
23
21
  /** Input to a single round processing step. */
24
22
  export interface RoundProcessInput {
25
23
  loopId: string;
26
24
  task: string;
27
25
  currentRound: number;
28
26
  maxRounds: number;
29
- /** The agent's self-evaluation for this round. */
30
- selfEval: SelfEvaluation;
31
- /** Whether structured extraction succeeded (false = heuristic fallback). */
32
- extractionSucceeded: boolean;
33
- /** The previous round's validated SelfEvaluation (null for round 1). */
34
- lastSelfEval?: SelfEvaluation;
27
+ /** The normalized Agent report for this round. */
28
+ roundReport: RoundReport;
29
+ /** Previous accepted compiler projection (null for round 1). */
30
+ previousProjection?: CompilerRoundProjection;
35
31
  /** How many consecutive rounds have been rejected by enforcement. */
36
32
  consecutiveRejections: number;
37
33
  /** v1.18: Evidence snapshots from configured providers. */
@@ -41,6 +37,15 @@ export interface RoundProcessInput {
41
37
  /** v2.13: Files from skipped backtrack rounds. Passed to verification
42
38
  * gate for post-backtrack workspace restore check. */
43
39
  backtrackSkippedFiles?: string[];
40
+ /** v2.13: Git HEAD of the active backtrack restore point. Passed to the
41
+ * verification gate; the post-backtrack round must match it. */
42
+ backtrackTargetGitHead?: string;
43
+ /** Runtime-derived action from the prompt being completed. */
44
+ expectedAction?: string;
45
+ /** Terminal enforcement checks that already consumed their guided retry. */
46
+ escalatedRejectionChecks?: string[];
47
+ /** Criteria still open when the report was compiled. */
48
+ remainingCriteria?: string[];
44
49
  }
45
50
  /** Result of processing a round through the coordinator. */
46
51
  export interface RoundProcessResult {
@@ -64,7 +69,7 @@ export interface RoundProcessResult {
64
69
  enforcementAction?: "accept" | "reject" | "terminate" | "backtrack";
65
70
  /** Enforcement reason (set when rejected or terminated). */
66
71
  enforcementReason?: string;
67
- /** Whether this round was successful (from selfEval.success). */
72
+ /** Whether this round was successful according to the canonical report. */
68
73
  roundSuccess: boolean;
69
74
  /** Whether the verification gate returned "contradicted". */
70
75
  gateContradicted: boolean;
@@ -73,15 +78,17 @@ export interface RoundProcessResult {
73
78
  /** Which enforcement check fired (set when action is "reject" or "terminate").
74
79
  * Used by callers to track per-rule rejection counters. */
75
80
  rejectionCheck?: string;
76
- /** The selfEval to store as lastSelfEval for the next round
81
+ /** The compiler view to store as lastRoundView for the next round
77
82
  * (undefined when action is "reject" — caller should NOT update). */
78
- newLastSelfEval?: SelfEvaluation;
83
+ newRoundProjection?: CompilerRoundProjection;
79
84
  /** Whether the caller should push roundSuccess onto the success trajectory.
80
85
  * false when gateContradicted or when action is "reject". */
81
86
  shouldPushSuccessTrajectory: boolean;
82
87
  /** v2.12: True when this round's intent_drift was waived via substantive
83
88
  * drift_clarification. The caller uses this to track clarification streaks. */
84
89
  clarificationAccepted?: boolean;
90
+ /** True when a terminal enforcement rule was converted into one final reject. */
91
+ escalationIssued?: boolean;
85
92
  /** v2.13: Git HEAD commit hash of the backtrack target round.
86
93
  * Set when action is "backtrack". The verification gate uses this
87
94
  * to check that the agent restored the workspace before working. */
@@ -93,8 +100,8 @@ export interface RoundProcessResult {
93
100
  }
94
101
  export declare class RoundCoordinator {
95
102
  private backend;
96
- constructor(backend?: VaultBackend);
97
- /** Process a single round's self-evaluation through the decision pipeline:
103
+ constructor(backend?: LoopStore);
104
+ /** Process a single round's round report through the decision pipeline:
98
105
  * verify → enforce → stop decision.
99
106
  *
100
107
  * This is the single entry point called by SessionManager.
@@ -102,7 +109,7 @@ export declare class RoundCoordinator {
102
109
  * - Compiling the next prompt (if action is "continue")
103
110
  * - Managing heartbeat / signal handlers (runtime only)
104
111
  * - Memory injection (both paths, before calling processRound)
105
- * - Transactional feedback commit (accepted rounds only)
112
+ * - Transactional round-event commit (accepted rounds only)
106
113
  * - State file I/O (both paths, after compiling)
107
114
  *
108
115
  * @param driftClarificationStreak v2.12: Current clarification streak
@@ -1 +1 @@
1
- {"version":3,"file":"round-coordinator.d.ts","sourceRoot":"","sources":["../src/round-coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAEV,cAAc,EACd,UAAU,EACV,gBAAgB,EAEjB,MAAM,eAAe,CAAC;AAcvB,+CAA+C;AAC/C,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,QAAQ,EAAE,cAAc,CAAC;IACzB,4EAA4E;IAC5E,mBAAmB,EAAE,OAAO,CAAC;IAC7B,wEAAwE;IACxE,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,qEAAqE;IACrE,qBAAqB,EAAE,MAAM,CAAC;IAC9B,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,oDAAoD;IACpD,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC;IAC9B;2DACuD;IACvD,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CAClC;AAED,4DAA4D;AAC5D,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;IACnE,kEAAkE;IAClE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAC;IACvC,6DAA6D;IAC7D,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,2EAA2E;IAC3E,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,4CAA4C;IAC5C,iBAAiB,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;IACpE,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iEAAiE;IACjE,YAAY,EAAE,OAAO,CAAC;IACtB,6DAA6D;IAC7D,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iEAAiE;IACjE,wBAAwB,EAAE,MAAM,CAAC;IACjC;gEAC4D;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;0EACsE;IACtE,eAAe,CAAC,EAAE,cAAc,CAAC;IACjC;kEAC8D;IAC9D,2BAA2B,EAAE,OAAO,CAAC;IACrC;oFACgF;IAChF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;yEAEqE;IACrE,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;gEAE4D;IAC5D,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CAClC;AAID,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAA2B;gBAE9B,OAAO,CAAC,EAAE,YAAY;IAIlC;;;;;;;;;;;;gFAY4E;IAC5E,YAAY,CACV,KAAK,EAAE,iBAAiB,EACxB,wBAAwB,GAAE,MAAU,GACnC,kBAAkB;CA0QtB"}
1
+ {"version":3,"file":"round-coordinator.d.ts","sourceRoot":"","sources":["../src/round-coordinator.ts"],"names":[],"mappings":"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"}