loopforge 2.7.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 (173) hide show
  1. package/README.md +136 -182
  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 +211 -64
  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 +26 -26
  26. package/dist/evidence-provider.d.ts.map +1 -1
  27. package/dist/evidence-provider.js +45 -71
  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 +23 -29
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +16 -26
  34. package/dist/index.js.map +1 -1
  35. package/dist/loop-compiler.d.ts +2 -2
  36. package/dist/loop-compiler.d.ts.map +1 -1
  37. package/dist/loop-compiler.js +321 -315
  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 -311
  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 +123 -19
  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 +65 -84
  64. package/dist/mcp/session.d.ts.map +1 -1
  65. package/dist/mcp/session.js +667 -224
  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 +401 -254
  70. package/dist/mcp/tools.js.map +1 -1
  71. package/dist/policy-metrics.d.ts +24 -0
  72. package/dist/policy-metrics.d.ts.map +1 -1
  73. package/dist/policy-metrics.js +174 -0
  74. package/dist/policy-metrics.js.map +1 -1
  75. package/dist/policy.d.ts +74 -12
  76. package/dist/policy.d.ts.map +1 -1
  77. package/dist/policy.js +124 -19
  78. package/dist/policy.js.map +1 -1
  79. package/dist/prompt-assembler.d.ts +8 -4
  80. package/dist/prompt-assembler.d.ts.map +1 -1
  81. package/dist/prompt-assembler.js +533 -86
  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 +259 -173
  88. package/dist/protocol.d.ts.map +1 -1
  89. package/dist/protocol.js +17 -96
  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 +53 -22
  100. package/dist/round-coordinator.d.ts.map +1 -1
  101. package/dist/round-coordinator.js +140 -44
  102. package/dist/round-coordinator.js.map +1 -1
  103. package/dist/round-driver.d.ts +18 -10
  104. package/dist/round-driver.d.ts.map +1 -1
  105. package/dist/round-driver.js +11 -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 +23 -12
  120. package/dist/round-transaction.d.ts.map +1 -1
  121. package/dist/round-transaction.js +104 -91
  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/{engine.js → runtime-services.js} +157 -275
  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 +12 -8
  132. package/dist/token-utils.d.ts.map +1 -1
  133. package/dist/token-utils.js +56 -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 +13 -7
  146. package/skills/perception/SKILL.md +200 -90
  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 -50
  152. package/dist/enforcement-gate.d.ts.map +0 -1
  153. package/dist/enforcement-gate.js +0 -501
  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.map +0 -1
  158. package/dist/interop.d.ts +0 -35
  159. package/dist/interop.d.ts.map +0 -1
  160. package/dist/interop.js +0 -34
  161. package/dist/interop.js.map +0 -1
  162. package/dist/run.d.ts +0 -51
  163. package/dist/run.d.ts.map +0 -1
  164. package/dist/run.js +0 -200
  165. package/dist/run.js.map +0 -1
  166. package/dist/self-eval.d.ts +0 -23
  167. package/dist/self-eval.d.ts.map +0 -1
  168. package/dist/self-eval.js +0 -151
  169. package/dist/self-eval.js.map +0 -1
  170. package/dist/verification-gate.d.ts +0 -52
  171. package/dist/verification-gate.d.ts.map +0 -1
  172. package/dist/verification-gate.js +0 -527
  173. 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,32 +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
- ...overrides,
74
- };
75
- }
76
- /** Regex to extract a self-evaluation JSON block from agent output. */
77
- export const SELF_EVAL_REGEX = /---loopforge-eval\s*([\s\S]*?)\s*---end-loopforge-eval/;
78
32
  export function makeLoopObjective(overrides = {}) {
79
33
  return {
80
34
  objective: "",
@@ -123,6 +77,7 @@ export function makeSubGoal(overrides = {}) {
123
77
  }
124
78
  export function makeConstraintMeta(overrides = {}) {
125
79
  return {
80
+ id: "",
126
81
  text: "",
127
82
  discovered_at_round: 0,
128
83
  last_violated_at_round: 0,
@@ -140,30 +95,6 @@ export function makeTaskAlignment(overrides = {}) {
140
95
  ...overrides,
141
96
  };
142
97
  }
143
- export function makeLoopRoundResult(overrides = {}) {
144
- return {
145
- round: 0,
146
- success: false,
147
- output_summary: "",
148
- constraint_violations: [],
149
- manual_fixes_needed: "",
150
- discovered_constraints: [],
151
- objective_refinement: "",
152
- emerged_subtasks: [],
153
- execution_evidence: undefined,
154
- retracted_constraints: [],
155
- revised_success_criteria: [],
156
- wrong_assumptions: [],
157
- worker_results: [],
158
- compression_checkpoint: false,
159
- checkpoint_label: "",
160
- next_action: undefined,
161
- completed_subtasks: [],
162
- blocked_subtasks: [],
163
- canceled_subtasks: [],
164
- ...overrides,
165
- };
166
- }
167
98
  export function makeLoopCompileRequest(overrides = {}) {
168
99
  return {
169
100
  mode: Mode.LOOP_COMPILE,
@@ -177,7 +108,7 @@ export function makeLoopCompileRequest(overrides = {}) {
177
108
  plan_source: null,
178
109
  constraints_from_plan: [],
179
110
  new_since_last_round: "",
180
- last_round_result: null,
111
+ last_round_view: null,
181
112
  force_level: "auto",
182
113
  health_check_interval: 1,
183
114
  external_context: "",
@@ -210,12 +141,24 @@ export function makeLoopCompileResponse(overrides = {}) {
210
141
  constraint_metadata: [],
211
142
  agent_trust_score: undefined,
212
143
  agent_trust_trend: [],
213
- suggested_next_task: "",
144
+ projection: makeLoopCompileProjection(),
214
145
  plan_source: null,
215
146
  warnings: [],
216
147
  error: "",
217
148
  state_file_content: undefined,
218
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: [],
219
162
  ...overrides,
220
163
  };
221
164
  }
@@ -225,10 +168,6 @@ export function makeEvidenceSnapshot(overrides = {}) {
225
168
  export function makeSessionState(taskId) {
226
169
  return {
227
170
  task_id: taskId,
228
- call_count: 0,
229
- success_trend: [],
230
- current_version: "v1",
231
- feedback_buffer: [],
232
171
  };
233
172
  }
234
173
  export function makeEnforcementResult(overrides = {}) {
@@ -237,6 +176,8 @@ export function makeEnforcementResult(overrides = {}) {
237
176
  reason: "",
238
177
  fix_instructions: "",
239
178
  check: "",
179
+ clarification_accepted: false,
180
+ escalation_issued: false,
240
181
  ...overrides,
241
182
  };
242
183
  }
@@ -256,26 +197,6 @@ export function makeVerificationResult(overrides = {}) {
256
197
  ...overrides,
257
198
  };
258
199
  }
259
- // ── Serialisation helpers ───────────────────────────────────────────────────
260
- export function toDict(obj) {
261
- const result = {};
262
- for (const [key, value] of Object.entries(obj)) {
263
- if (value === null || value === undefined)
264
- continue;
265
- if (typeof value === "object" && !Array.isArray(value)) {
266
- result[key] = toDict(value);
267
- }
268
- else if (Array.isArray(value)) {
269
- result[key] = value.map((v) => typeof v === "object" && v !== null && !Array.isArray(v)
270
- ? toDict(v)
271
- : v);
272
- }
273
- else {
274
- result[key] = value;
275
- }
276
- }
277
- return result;
278
- }
279
200
  // ── Factory helpers ─────────────────────────────────────────────────────────
280
201
  export function makeTaskId(taskDescription) {
281
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":"AAAA;;;;;;GAMG;AAEH,8EAA8E;AAE9E,MAAM,CAAN,IAAY,IAEX;AAFD,WAAY,IAAI;IACd,qCAA6B,CAAA;AAC/B,CAAC,EAFW,IAAI,KAAJ,IAAI,QAEf;AAED,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,wBAAS,CAAA;IACT,8BAAe,CAAA;IACf,kCAAmB,CAAA;AACrB,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AA6PD,MAAM,UAAU,oBAAoB,CAClC,YAAuC,EAAE;IAEzC,OAAO;QACL,KAAK,EAAE,EAAE;QACT,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;QACjC,OAAO,EAAE,EAAE;QACX,mBAAmB,EAAE,EAAE;QACvB,oBAAoB,EAAE,EAAE;QACxB,oBAAoB,EAAE,CAAC;QACvB,IAAI,EAAE,MAAM;QACZ,kBAAkB,EAAE,CAAC;QACrB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAyCD,MAAM,UAAU,iBAAiB,CAC/B,YAAoC,EAAE;IAEtC,OAAO;QACL,SAAS,EAAE,EAAE;QACb,gBAAgB,EAAE,EAAE;QACpB,gBAAgB,EAAE,EAAE;QACpB,gBAAgB,EAAE,CAAC;QACnB,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,CAAC;QACV,kBAAkB,EAAE,EAAE;QACtB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAWD,MAAM,UAAU,cAAc,CAAC,YAAiC,EAAE;IAChE,OAAO;QACL,cAAc,EAAE,GAAG;QACnB,oBAAoB,EAAE,GAAG;QACzB,cAAc,EAAE,KAAK;QACrB,kBAAkB,EAAE,IAAI;QACxB,eAAe,EAAE,GAAG;QACpB,sBAAsB,EAAE,MAAM;QAC9B,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAwBD,MAAM,UAAU,kBAAkB,CAChC,YAAqC,EAAE;IAEvC,OAAO;QACL,YAAY,EAAE,EAAE;QAChB,gBAAgB,EAAE,EAAE;QACpB,cAAc,EAAE,CAAC;QACjB,kBAAkB,EAAE,CAAC;QACrB,eAAe,EAAE,EAAE;QACnB,UAAU,EAAE,EAAE;QACd,cAAc,EAAE,EAAE;QAClB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAuBD,MAAM,UAAU,WAAW,CACzB,YAA8B,EAAE;IAEhC,OAAO;QACL,EAAE,EAAE,EAAE;QACN,WAAW,EAAE,EAAE;QACf,MAAM,EAAE,SAAS;QACjB,iBAAiB,EAAE,CAAC;QACpB,uBAAuB,EAAE,CAAC;QAC1B,QAAQ,EAAE,CAAC;QACX,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAyBD,MAAM,UAAU,kBAAkB,CAChC,YAAqC,EAAE;IAEvC,OAAO;QACL,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,EAAE;QACR,mBAAmB,EAAE,CAAC;QACtB,sBAAsB,EAAE,CAAC;QACzB,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,QAAQ;QAChB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AASD,MAAM,UAAU,iBAAiB,CAC/B,YAAoC,EAAE;IAEtC,OAAO;QACL,UAAU,EAAE,IAAI;QAChB,eAAe,EAAE,GAAG;QACpB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,MAAM;QAClB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAmCD,MAAM,UAAU,sBAAsB,CACpC,YAAyC,EAAE;IAE3C,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,YAAY;QACvB,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,EAAE;QACV,kBAAkB,EAAE,EAAE;QACtB,cAAc,EAAE,IAAI;QACpB,WAAW,EAAE,IAAI;QACjB,qBAAqB,EAAE,EAAE;QACzB,oBAAoB,EAAE,EAAE;QACxB,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,MAAM;QACnB,qBAAqB,EAAE,CAAC;QACxB,gBAAgB,EAAE,EAAE;QACpB,kBAAkB,EAAE,EAAE;QACtB,OAAO,EAAE,CAAC;QACV,sBAAsB,EAAE,CAAC;QACzB,gBAAgB,EAAE,EAAE;QACpB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AA4ED,MAAM,UAAU,uBAAuB,CACrC,YAA0C,EAAE;IAE5C,OAAO;QACL,MAAM,EAAE,WAAW,CAAC,EAAE;QACtB,MAAM,EAAE,EAAE;QACV,eAAe,EAAE,IAAI;QACrB,kBAAkB,EAAE,EAAE;QACtB,OAAO,EAAE,EAAE;QACX,kBAAkB,EAAE,EAAE;QACtB,mBAAmB,EAAE,EAAE;QACvB,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,EAAE;QACX,cAAc,EAAE,EAAE;QAClB,cAAc,EAAE,IAAI;QACpB,WAAW,EAAE,IAAI;QACjB,cAAc,EAAE,IAAI;QACpB,eAAe,EAAE,IAAI;QACrB,SAAS,EAAE,EAAE;QACb,oBAAoB,EAAE,EAAE;QACxB,mBAAmB,EAAE,EAAE;QACvB,iBAAiB,EAAE,SAAS;QAC5B,iBAAiB,EAAE,EAAE;QACrB,UAAU,EAAE,yBAAyB,EAAE;QACvC,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,EAAE;QACT,kBAAkB,EAAE,SAAS;QAC7B,eAAe,EAAE,SAAS;QAC1B,eAAe,EAAE,SAAS;QAC1B,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAgBD,MAAM,UAAU,yBAAyB,CACvC,YAA4C,EAAE;IAE9C,OAAO;QACL,mBAAmB,EAAE,EAAE;QACvB,aAAa,EAAE,EAAE;QACjB,oBAAoB,EAAE,EAAE;QACxB,qBAAqB,EAAE,EAAE;QACzB,eAAe,EAAE,EAAE;QACnB,cAAc,EAAE,EAAE;QAClB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAmBD,MAAM,UAAU,oBAAoB,CAClC,YAAuC,EAAE;IAEzC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,SAAS,EAAE,CAAC;AACtF,CAAC;AAwBD,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,OAAO;QACL,OAAO,EAAE,MAAM;KAChB,CAAC;AACJ,CAAC;AAqDD,MAAM,UAAU,qBAAqB,CACnC,YAAwC,EAAE;IAE1C,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,EAAE;QACV,gBAAgB,EAAE,EAAE;QACpB,KAAK,EAAE,EAAE;QACT,sBAAsB,EAAE,KAAK;QAC7B,iBAAiB,EAAE,KAAK;QACxB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AA4CD,MAAM,UAAU,oBAAoB,CAClC,YAAuC,EAAE;IAEzC,OAAO;QACL,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAgBD,MAAM,UAAU,sBAAsB,CACpC,YAAyC,EAAE;IAE3C,OAAO;QACL,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,EAAE;QACT,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,+EAA+E;AAE/E,MAAM,UAAU,UAAU,CAAC,eAAuB;IAChD,IAAI,IAAI,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7D,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IACzC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,IAAI,IAAI,cAAc,CAAC;AAChC,CAAC"}
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,43 +15,61 @@
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. */
38
34
  evidenceSnapshots?: ProviderSnapshot[];
39
35
  /** Success values from already committed rounds. */
40
36
  successTrajectory?: boolean[];
37
+ /** v2.13: Files from skipped backtrack rounds. Passed to verification
38
+ * gate for post-backtrack workspace restore check. */
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[];
41
49
  }
42
50
  /** Result of processing a round through the coordinator. */
43
51
  export interface RoundProcessResult {
44
52
  /** What the caller should do next. */
45
- action: "continue" | "stop" | "reject" | "terminate";
53
+ action: "continue" | "stop" | "reject" | "terminate" | "backtrack";
46
54
  /** Reason for stop (set when action is "stop" or "terminate"). */
47
55
  stopReason?: StopReason;
48
56
  /** Rejection prompt (set when action is "reject"). */
49
57
  rejectionPrompt?: string;
58
+ /** v2.10: Backtrack prompt (set when action is "backtrack"). */
59
+ backtrackPrompt?: string;
60
+ /** v2.10: Round to restore state from (set when action is "backtrack"). */
61
+ backtrackTarget?: number;
62
+ /** v2.10: Discovered constraints from skipped rounds to preserve. */
63
+ backtrackSkippedDiscoveries?: string[];
64
+ /** v2.10: Which enforcement rule triggered the backtrack. */
65
+ backtrackTriggerRule?: string;
50
66
  /** Verification flags from this round (for injection into next prompt). */
51
67
  verificationFlags: VerificationFlag[];
52
68
  /** Enforcement action for observability. */
53
- enforcementAction?: "accept" | "reject" | "terminate";
69
+ enforcementAction?: "accept" | "reject" | "terminate" | "backtrack";
54
70
  /** Enforcement reason (set when rejected or terminated). */
55
71
  enforcementReason?: string;
56
- /** Whether this round was successful (from selfEval.success). */
72
+ /** Whether this round was successful according to the canonical report. */
57
73
  roundSuccess: boolean;
58
74
  /** Whether the verification gate returned "contradicted". */
59
75
  gateContradicted: boolean;
@@ -62,17 +78,30 @@ export interface RoundProcessResult {
62
78
  /** Which enforcement check fired (set when action is "reject" or "terminate").
63
79
  * Used by callers to track per-rule rejection counters. */
64
80
  rejectionCheck?: string;
65
- /** The selfEval to store as lastSelfEval for the next round
81
+ /** The compiler view to store as lastRoundView for the next round
66
82
  * (undefined when action is "reject" — caller should NOT update). */
67
- newLastSelfEval?: SelfEvaluation;
83
+ newRoundProjection?: CompilerRoundProjection;
68
84
  /** Whether the caller should push roundSuccess onto the success trajectory.
69
85
  * false when gateContradicted or when action is "reject". */
70
86
  shouldPushSuccessTrajectory: boolean;
87
+ /** v2.12: True when this round's intent_drift was waived via substantive
88
+ * drift_clarification. The caller uses this to track clarification streaks. */
89
+ clarificationAccepted?: boolean;
90
+ /** True when a terminal enforcement rule was converted into one final reject. */
91
+ escalationIssued?: boolean;
92
+ /** v2.13: Git HEAD commit hash of the backtrack target round.
93
+ * Set when action is "backtrack". The verification gate uses this
94
+ * to check that the agent restored the workspace before working. */
95
+ backtrackTargetGitHead?: string;
96
+ /** v2.13: Files changed in skipped rounds during backtrack.
97
+ * The next round's verification gate checks that these files are
98
+ * not still dirty (agent must restore workspace first). */
99
+ backtrackSkippedFiles?: string[];
71
100
  }
72
101
  export declare class RoundCoordinator {
73
102
  private backend;
74
- constructor(backend?: VaultBackend);
75
- /** 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:
76
105
  * verify → enforce → stop decision.
77
106
  *
78
107
  * This is the single entry point called by SessionManager.
@@ -80,9 +109,11 @@ export declare class RoundCoordinator {
80
109
  * - Compiling the next prompt (if action is "continue")
81
110
  * - Managing heartbeat / signal handlers (runtime only)
82
111
  * - Memory injection (both paths, before calling processRound)
83
- * - Transactional feedback commit (accepted rounds only)
112
+ * - Transactional round-event commit (accepted rounds only)
84
113
  * - State file I/O (both paths, after compiling)
85
- */
86
- processRound(input: RoundProcessInput): RoundProcessResult;
114
+ *
115
+ * @param driftClarificationStreak v2.12: Current clarification streak
116
+ * from session state. Passed through to enforceRound for R7 escalation. */
117
+ processRound(input: RoundProcessInput, driftClarificationStreak?: number): RoundProcessResult;
87
118
  }
88
119
  //# sourceMappingURL=round-coordinator.d.ts.map
@@ -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;AAQvB,+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;CAC/B;AAED,4DAA4D;AAC5D,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC;IACrD,kEAAkE;IAClE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2EAA2E;IAC3E,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,4CAA4C;IAC5C,iBAAiB,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;IACtD,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;CACtC;AAID,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAA2B;gBAE9B,OAAO,CAAC,EAAE,YAAY;IAIlC;;;;;;;;;;OAUG;IACH,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB;CA2K3D"}
1
+ {"version":3,"file":"round-coordinator.d.ts","sourceRoot":"","sources":["../src/round-coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EACV,uBAAuB,EAEvB,WAAW,EACX,UAAU,EACV,gBAAgB,EAEjB,MAAM,eAAe,CAAC;AAiBvB,+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,WAAW,EAAE,WAAW,CAAC;IACzB,gEAAgE;IAChE,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;IAC7C,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;IACjC;qEACiE;IACjE,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,wDAAwD;IACxD,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;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,2EAA2E;IAC3E,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,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;IAC7C;kEAC8D;IAC9D,2BAA2B,EAAE,OAAO,CAAC;IACrC;oFACgF;IAChF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;yEAEqE;IACrE,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;gEAE4D;IAC5D,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CAClC;AAID,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAwB;gBAE3B,OAAO,CAAC,EAAE,SAAS;IAI/B;;;;;;;;;;;;gFAY4E;IAC5E,YAAY,CACV,KAAK,EAAE,iBAAiB,EACxB,wBAAwB,GAAE,MAAU,GACnC,kBAAkB;CAgStB"}