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/engine.js DELETED
@@ -1,596 +0,0 @@
1
- /** LoopForge-loop_compile — Engine (outer loop manager).
2
- *
3
- * 2-mode engine with vault-backed loop lineage persistence.
4
- * invokeLoopCompile (primary), invokeFeedback.
5
- * Circuit breaker prevents infinite stall loops.
6
- * EngineMetrics tracks silent-failure counters for observability.
7
- */
8
- import { randomUUID } from "node:crypto";
9
- import { getPolicy } from "./policy.js";
10
- import { FileLoopStore, LoopStoreBackend } from "./loop-store.js";
11
- import { AgentStatus, Mode, makeExecutionFeedback, makeLoopCompileRequest, makeLoopObjective, makeLoopRoundResult, makeSessionState, makeTaskId, } from "./protocol.js";
12
- import { compileLoop } from "./loop-compiler.js";
13
- import { logEvent } from "./observability.js";
14
- import { policyMetrics } from "./policy-metrics.js";
15
- import { parseExecutionEvidence, parseCriterionRevisions, parseWorkerResults, } from "./self-eval.js";
16
- import { parseLoopExtras } from "./loop-extras-parser.js";
17
- // ── Re-export self-evaluation utilities (moved to self-eval.ts) ──────────
18
- export { parseExecutionEvidence, parseCriterionRevisions, parseWorkerResults, extractSelfEvaluation, buildSelfEvaluation, } from "./self-eval.js";
19
- function makeEngineMetrics() {
20
- return {
21
- vaultWriteErrors: 0,
22
- sessionStart: Date.now(),
23
- };
24
- }
25
- // ═══════════════════════════════════════════════════════════════════════════
26
- // LoopForgeEngine
27
- // ═══════════════════════════════════════════════════════════════════════════
28
- export class LoopForgeEngine {
29
- state = null;
30
- backend = null;
31
- metrics = null;
32
- lastTask = null;
33
- constructor(storeOrBackend) {
34
- if (storeOrBackend) {
35
- this.backend = "readSession" in storeOrBackend
36
- ? new LoopStoreBackend(storeOrBackend)
37
- : storeOrBackend;
38
- }
39
- }
40
- resolveBackend() {
41
- if (this.backend === null) {
42
- this.backend = new LoopStoreBackend(new FileLoopStore(getPolicy().backend.root_dir));
43
- }
44
- return this.backend;
45
- }
46
- /** Public accessor for the vault backend — used by runtime/verification gate. */
47
- getBackend() {
48
- return this.resolveBackend();
49
- }
50
- /** Expose engine health counters for observability (MCP status, logging). */
51
- getMetrics() {
52
- if (this.metrics === null) {
53
- this.metrics = makeEngineMetrics();
54
- }
55
- return this.metrics;
56
- }
57
- ensureInit(request) {
58
- if (this.state === null) {
59
- this.state = makeSessionState(request.task_id || makeTaskId(request.task));
60
- }
61
- if (this.metrics === null) {
62
- this.metrics = makeEngineMetrics();
63
- }
64
- }
65
- // ═══════════════════════════════════════════════════════════════════════
66
- // Feedback persistence
67
- // ═══════════════════════════════════════════════════════════════════════
68
- persistFeedbackToVault(signal) {
69
- if (this.metrics === null) {
70
- this.metrics = makeEngineMetrics();
71
- }
72
- // v2.6: write directly — the buffer was always flushed immediately
73
- // (autoFeedback calls persistFeedbackToVault then immediately flushFeedbackBuffer).
74
- const entry = this.buildFeedbackEntry(signal);
75
- if (!entry)
76
- return;
77
- try {
78
- this.resolveBackend().appendEntry(entry);
79
- }
80
- catch (error) {
81
- if (this.metrics)
82
- this.metrics.vaultWriteErrors++;
83
- console.warn(`LoopForge: vault write failed (feedback_persist) — ${error}`);
84
- logEvent("vault_write_error", { error: "feedback_persist" });
85
- policyMetrics.recordVaultWriteError("feedback_persist");
86
- }
87
- }
88
- buildFeedbackEntry(signal) {
89
- try {
90
- return {
91
- id: randomUUID(),
92
- task_id: signal.task_id ?? "feedback",
93
- version_tag: "v1",
94
- is_active: true,
95
- timestamp: new Date().toISOString().replace(/\.\d+Z$/, ""),
96
- user_intent: String(signal.task_type ?? "").slice(0, 200),
97
- success: signal.success ?? false,
98
- execution_feedback: JSON.stringify({
99
- success: signal.success ?? false,
100
- status: signal.success ? "success" : "partial",
101
- constraint_compliance: {
102
- all_hard_constraints_met: !Array.isArray(signal.violations) || signal.violations.length === 0,
103
- violations: signal.violations ?? [],
104
- },
105
- output_summary: signal.task_type ?? "",
106
- improvement_notes: signal.manual_fixes ?? "",
107
- }),
108
- task_type: signal.task_type ?? "",
109
- tags: signal.skill_used ? [signal.skill_used] : [],
110
- skill_used: signal.skill_used ?? "",
111
- loop_id: signal.loop_id,
112
- loop_lineage: signal.loop_lineage ?? {},
113
- // Persist execution_evidence so the enforcement gate (R4/R5) can
114
- // read progress_estimate from vault entries across rounds.
115
- execution_evidence: signal.execution_evidence ?? null,
116
- discovered_constraints: signal.discovered_constraints ?? [],
117
- emerged_subtasks: signal.emerged_subtasks ?? [],
118
- retracted_constraints: signal.retracted_constraints ?? [],
119
- worker_results: signal.worker_results ?? [],
120
- };
121
- }
122
- catch {
123
- if (this.metrics)
124
- this.metrics.vaultWriteErrors++;
125
- logEvent("vault_write_error", { error: "feedback_entry_build" });
126
- return null;
127
- }
128
- }
129
- // ═══════════════════════════════════════════════════════════════════════
130
- // Lineage persistence
131
- // ═══════════════════════════════════════════════════════════════════════
132
- persistLoopLineage(response, request) {
133
- if (this.metrics === null)
134
- this.metrics = makeEngineMetrics();
135
- const loopObjDict = response.loop_objective
136
- ? response.loop_objective
137
- : null;
138
- const structuredLineage = {
139
- loop_id: response.loop_id,
140
- round: response.round,
141
- goal_id: response.goal_id,
142
- goal_text_hash: response.goal_text_hash,
143
- recompile_level: response.recompile_level,
144
- constraints_active: response.constraints_active,
145
- task: request.task,
146
- success: true,
147
- };
148
- let lastOutputSummary = "";
149
- let lastViolations = [];
150
- if (request.last_round_result) {
151
- lastOutputSummary = request.last_round_result.output_summary || "";
152
- lastViolations = request.last_round_result.constraint_violations || [];
153
- }
154
- const entry = {
155
- id: randomUUID(),
156
- task_id: `loop:${response.loop_id}:r${response.round}`,
157
- version_tag: "v1",
158
- is_active: true,
159
- timestamp: new Date().toISOString().replace(/\.\d+Z$/, ""),
160
- user_intent: `loop_compile round ${response.round} — ${response.goal_id}`,
161
- task_type: "loop_lineage",
162
- loop_id: response.loop_id,
163
- loop_lineage: structuredLineage,
164
- loop_objective: loopObjDict,
165
- task: request.task,
166
- output_summary: lastOutputSummary,
167
- constraint_violations: lastViolations,
168
- tags: [response.loop_id, response.recompile_level, response.goal_id],
169
- };
170
- // 1. JSON vault write (primary)
171
- let vaultOk = false;
172
- try {
173
- this.resolveBackend().appendEntry(entry);
174
- vaultOk = true;
175
- }
176
- catch (error) {
177
- if (this.metrics)
178
- this.metrics.vaultWriteErrors++;
179
- console.warn(`LoopForge: vault write failed (lineage_persist) — ${error}`);
180
- logEvent("vault_write_error", { error: "persist_lineage_json" });
181
- policyMetrics.recordVaultWriteError("lineage_persist");
182
- }
183
- return vaultOk;
184
- }
185
- // ═══════════════════════════════════════════════════════════════════════
186
- // Delegation journal (v1.9 — AgentTool mode)
187
- // ═══════════════════════════════════════════════════════════════════════
188
- /** Record sub-agent delegations for this round into the vault.
189
- * Written as a lightweight journal entry so the main agent's rolling
190
- * summary can reference delegation history in subsequent rounds. */
191
- recordDelegation(loopId, round, entries) {
192
- if (!entries.length)
193
- return;
194
- const taskId = `loop:${loopId}:r${round}:delegations`;
195
- const existing = this.resolveBackend().queryEntries({ prefix: taskId })
196
- .some((candidate) => candidate.task_id === taskId);
197
- if (existing)
198
- return;
199
- const entry = {
200
- id: randomUUID(),
201
- task_id: taskId,
202
- version_tag: "v1",
203
- is_active: true,
204
- timestamp: new Date().toISOString().replace(/\.\d+Z$/, ""),
205
- user_intent: `Delegation journal — round ${round}`,
206
- task_type: "delegation_journal",
207
- loop_id: loopId,
208
- loop_lineage: {
209
- round,
210
- delegations: entries.map((e) => ({
211
- index: e.index,
212
- agentId: e.agentId,
213
- subAgentType: e.subAgentType,
214
- subTask: e.subTask,
215
- resultSummary: e.resultSummary,
216
- success: e.success,
217
- discoveredConstraints: e.discoveredConstraints,
218
- })),
219
- },
220
- };
221
- try {
222
- this.resolveBackend().appendEntry(entry);
223
- }
224
- catch (error) {
225
- if (this.metrics)
226
- this.metrics.vaultWriteErrors++;
227
- console.warn(`LoopForge: vault write failed (delegation_persist) — ${error}`);
228
- logEvent("vault_write_error", { error: "record_delegation" });
229
- policyMetrics.recordVaultWriteError("delegation_persist");
230
- }
231
- }
232
- // ═══════════════════════════════════════════════════════════════════════
233
- // Hydrate loop context from vault
234
- // ═══════════════════════════════════════════════════════════════════════
235
- hydrateLoopContext(loopId) {
236
- const prefix = `loop:${loopId}:r`;
237
- const results = this.resolveBackend().queryEntries({ prefix });
238
- // Merge feedback success flags into lineage entries
239
- const fbEntries = this.resolveBackend().queryEntries({
240
- prefix,
241
- feedbackOnly: true,
242
- });
243
- const fbSuccess = new Map();
244
- for (const fe of fbEntries) {
245
- const tid = String(fe.task_id ?? "");
246
- const parts = tid.split(":r");
247
- if (parts.length >= 2) {
248
- const roundStr = parts[1].split(":")[0];
249
- const fbRound = parseInt(roundStr, 10);
250
- if (!Number.isNaN(fbRound) && fe.success !== undefined) {
251
- fbSuccess.set(fbRound, fe.success);
252
- }
253
- }
254
- }
255
- for (const entry of results) {
256
- const lineage = (entry.loop_lineage ?? entry.lineage ?? {});
257
- const rnd = lineage.round;
258
- if (rnd && fbSuccess.has(rnd)) {
259
- lineage.success = fbSuccess.get(rnd);
260
- entry.success = fbSuccess.get(rnd);
261
- }
262
- }
263
- const finalResults = results;
264
- for (const entry of finalResults) {
265
- const lineage = (entry.loop_lineage ?? entry.lineage ?? {});
266
- if (!entry.output_summary) {
267
- entry.output_summary = lineage.output_summary ?? "";
268
- }
269
- if (!entry.constraint_violations) {
270
- entry.constraint_violations =
271
- lineage.constraint_violations ?? [];
272
- }
273
- }
274
- if (!finalResults.length)
275
- return null;
276
- return { results: finalResults, global_entries: [] };
277
- }
278
- // ═══════════════════════════════════════════════════════════════════════
279
- // Feedback (public)
280
- // ═══════════════════════════════════════════════════════════════════════
281
- invokeFeedback(request, _hydrateResults) {
282
- this.ensureInit(request);
283
- this.lastTask = request.task;
284
- const fb = request.feedback;
285
- if (!fb) {
286
- return {
287
- status: AgentStatus.ERROR,
288
- response: {
289
- status: AgentStatus.ERROR,
290
- prompt: null,
291
- error: "Feedback mode requires a feedback payload.",
292
- },
293
- };
294
- }
295
- const success = fb.success;
296
- const violations = fb.constraint_violations ?? [];
297
- const fixes = fb.manual_fixes_needed ?? "";
298
- // Loop-aware task_id for feedback→lineage backfill
299
- const loopId = request.loop_id;
300
- const loopRound = request.round;
301
- let taskId;
302
- if (loopId && loopRound !== undefined) {
303
- taskId = `loop:${loopId}:r${loopRound}:feedback`;
304
- }
305
- else {
306
- taskId = request.task_id ?? request.task.slice(0, 60);
307
- }
308
- const signal = {
309
- task_id: taskId,
310
- task_type: request.task.slice(0, 80),
311
- success,
312
- skill_used: request.skill_name ?? "",
313
- violations,
314
- manual_fixes: fixes,
315
- loop_id: loopId,
316
- round: loopRound,
317
- };
318
- this.persistFeedbackToVault(signal);
319
- // Update state
320
- this.state.call_count++;
321
- this.state.success_trend.push(success);
322
- if (this.state.success_trend.length > 20) {
323
- this.state.success_trend = this.state.success_trend.slice(-20);
324
- }
325
- logEvent("round_complete", {
326
- success,
327
- loopId: loopId ?? "unknown",
328
- round: loopRound ?? this.state.call_count,
329
- });
330
- return {
331
- status: AgentStatus.OK,
332
- response: {
333
- status: AgentStatus.OK,
334
- prompt: `## Feedback Recorded\n\nSuccess: ${success}\nSignals: 1`,
335
- error: null,
336
- },
337
- };
338
- }
339
- // ═══════════════════════════════════════════════════════════════════════
340
- // Auto-Feedback (v1.1 — autonomous loop, no human in the loop)
341
- // ═══════════════════════════════════════════════════════════════════════
342
- /** Record self-evaluation from agent output without human intervention.
343
- * Converts SelfEvaluation → ExecutionFeedback → vault persistence.
344
- * P0–P2: Also persists discovered_constraints, objective_refinement,
345
- * and emerged_subtasks for the compiler to consume next round.
346
- * Call this BEFORE invokeLoopCompile for the next round so that
347
- * hydrateLoopContext picks up the latest success flags. */
348
- autoFeedback(selfEval, loopId, round, task, roundTransaction) {
349
- this.ensureInit({ task, mode: Mode.FEEDBACK, feedback: null, skill_name: null, task_id: null });
350
- const fb = makeExecutionFeedback({
351
- output: selfEval.output_summary,
352
- success: selfEval.success,
353
- constraint_violations: selfEval.constraint_violations,
354
- manual_fixes_needed: "",
355
- });
356
- const taskId = `loop:${loopId}:r${round}:feedback`;
357
- const transactionId = typeof roundTransaction?.round_id === "string"
358
- ? roundTransaction.round_id
359
- : null;
360
- const transactionPersisted = () => {
361
- if (!transactionId)
362
- return false;
363
- return this.resolveBackend().queryEntries({
364
- prefix: taskId,
365
- feedbackOnly: true,
366
- }).some((entry) => {
367
- if (entry.task_id !== taskId)
368
- return false;
369
- const lineage = entry.loop_lineage;
370
- const transaction = lineage?.round_transaction;
371
- return transaction !== null &&
372
- typeof transaction === "object" &&
373
- !Array.isArray(transaction) &&
374
- transaction.round_id === transactionId;
375
- });
376
- };
377
- const alreadyCommitted = transactionPersisted();
378
- // Multi-agent: Merge sub-agent discovered constraints into the main constraint flow
379
- const subDiscovered = (selfEval.worker_results ?? [])
380
- .flatMap((w) => w.discoveredConstraints ?? [])
381
- .filter((c) => c.length > 0);
382
- const mergedDiscovered = [
383
- ...new Set([...(selfEval.discovered_constraints ?? []), ...subDiscovered]),
384
- ];
385
- const signal = {
386
- task_id: taskId,
387
- task_type: task.slice(0, 80),
388
- success: fb.success,
389
- skill_used: "",
390
- violations: selfEval.constraint_violations,
391
- manual_fixes: "",
392
- loop_id: loopId,
393
- round,
394
- // P0–P2: Evolution fields
395
- discovered_constraints: mergedDiscovered,
396
- objective_refinement: selfEval.objective_refinement ?? "",
397
- emerged_subtasks: selfEval.emerged_subtasks ?? [],
398
- // P4: Execution evidence
399
- execution_evidence: selfEval.execution_evidence ?? null,
400
- // P5: Self-correction
401
- retracted_constraints: selfEval.retracted_constraints ?? [],
402
- revised_success_criteria: selfEval.revised_success_criteria ?? [],
403
- wrong_assumptions: selfEval.wrong_assumptions ?? [],
404
- // Multi-agent: Worker delegation results
405
- worker_results: selfEval.worker_results ?? [],
406
- loop_lineage: roundTransaction
407
- ? {
408
- round,
409
- round_id: roundTransaction.round_id,
410
- round_transaction: roundTransaction,
411
- }
412
- : {},
413
- };
414
- if (!alreadyCommitted) {
415
- this.persistFeedbackToVault(signal);
416
- if (transactionId && !transactionPersisted()) {
417
- throw new Error(`Round feedback commit failed: ${transactionId}`);
418
- }
419
- }
420
- // Multi-agent: Auto-record delegation journal from worker_results
421
- if (selfEval.worker_results && selfEval.worker_results.length > 0) {
422
- const entries = selfEval.worker_results.map((w, i) => ({
423
- index: i + 1,
424
- agentId: w.agentId,
425
- subAgentType: w.subAgentType,
426
- subTask: w.subTask,
427
- resultSummary: w.resultSummary,
428
- success: w.success,
429
- discoveredConstraints: w.discoveredConstraints ?? [],
430
- }));
431
- this.recordDelegation(loopId, round, entries);
432
- }
433
- // Replaying a committed transaction may repair derived delegation data,
434
- // but must never apply the feedback to mutable engine state twice.
435
- if (alreadyCommitted)
436
- return fb.success;
437
- // Update state
438
- this.state.call_count++;
439
- this.state.success_trend.push(fb.success);
440
- if (this.state.success_trend.length > 20) {
441
- this.state.success_trend = this.state.success_trend.slice(-20);
442
- }
443
- // v2.5: Old binary-success circuit breaker removed — stalled loops
444
- // are now detected by the enforcement gate (R4/R5) using
445
- // progress_estimate gradients rather than success=true/false count.
446
- logEvent("round_complete", {
447
- loopId,
448
- round,
449
- success: fb.success,
450
- });
451
- return fb.success;
452
- }
453
- // ═══════════════════════════════════════════════════════════════════════
454
- // Loop Compile (public, primary)
455
- // ═══════════════════════════════════════════════════════════════════════
456
- invokeLoopCompile(request, hydrateResults, options = {}) {
457
- this.ensureInit(request);
458
- this.lastTask = request.task;
459
- // Parse extras via typed extraction pipeline (loop-extras-parser.ts).
460
- // Errors are collected but never thrown — the compiler always gets
461
- // best-effort defaults so a malformed request doesn't crash the engine.
462
- const extras = request;
463
- const { parsed, ctx } = parseLoopExtras(extras, request.task_id ?? "");
464
- if (ctx.errors.length > 0) {
465
- logEvent("extras_parse_errors", {
466
- errors: ctx.errors.map((e) => `${e.field}: ${e.message}`),
467
- });
468
- }
469
- const lcr = makeLoopCompileRequest({
470
- loop_id: parsed.loop_id,
471
- round: parsed.round,
472
- goal_id: parsed.goal_id,
473
- task: request.task,
474
- domain: parsed.domain,
475
- next_task_proposal: parsed.next_task_proposal,
476
- plan_source: parsed.plan_source,
477
- constraints_from_plan: parsed.constraints_from_plan,
478
- new_since_last_round: parsed.new_since_last_round,
479
- force_level: parsed.force_level,
480
- health_check_interval: parsed.health_check_interval,
481
- external_context: parsed.external_context,
482
- max_rounds: parsed.max_rounds,
483
- verification_flags: parsed.verification_flags,
484
- attempt: parsed.attempt,
485
- consecutive_rejections: parsed.consecutive_rejections,
486
- rejection_notice: parsed.rejection_notice,
487
- });
488
- // Convert last_round_result if present (object already validated by parser)
489
- if (parsed.last_round_result) {
490
- const rr = parsed.last_round_result;
491
- // Parse P4 execution evidence (shared helper)
492
- const executionEvidence = parseExecutionEvidence(rr.execution_evidence);
493
- // Parse P5 revised_success_criteria (shared parser)
494
- const revisedCriteria = parseCriterionRevisions(rr.revised_success_criteria);
495
- lcr.last_round_result = makeLoopRoundResult({
496
- round: rr.round ?? 0,
497
- success: rr.success ?? false,
498
- output_summary: rr.output_summary ?? "",
499
- constraint_violations: rr.constraint_violations ?? [],
500
- manual_fixes_needed: rr.manual_fixes_needed ?? "",
501
- // P0–P2: Cognitive evolution fields
502
- discovered_constraints: Array.isArray(rr.discovered_constraints)
503
- ? rr.discovered_constraints.filter((v) => typeof v === "string")
504
- : [],
505
- objective_refinement: typeof rr.objective_refinement === "string"
506
- ? rr.objective_refinement
507
- : "",
508
- emerged_subtasks: Array.isArray(rr.emerged_subtasks)
509
- ? rr.emerged_subtasks.filter((v) => typeof v === "string")
510
- : [],
511
- // P4: Execution evidence
512
- execution_evidence: executionEvidence,
513
- // P5: Self-correction
514
- retracted_constraints: Array.isArray(rr.retracted_constraints)
515
- ? rr.retracted_constraints.filter((v) => typeof v === "string")
516
- : [],
517
- revised_success_criteria: revisedCriteria,
518
- wrong_assumptions: Array.isArray(rr.wrong_assumptions)
519
- ? rr.wrong_assumptions.filter((v) => typeof v === "string")
520
- : [],
521
- // v1.10: Checkpoint boundary
522
- compression_checkpoint: typeof rr.compression_checkpoint === "boolean" ? rr.compression_checkpoint : false,
523
- checkpoint_label: typeof rr.checkpoint_label === "string" ? rr.checkpoint_label : "",
524
- // v2.2: Sub-goal lifecycle
525
- completed_subtasks: Array.isArray(rr.completed_subtasks)
526
- ? rr.completed_subtasks.filter((v) => typeof v === "string")
527
- : [],
528
- blocked_subtasks: Array.isArray(rr.blocked_subtasks)
529
- ? rr.blocked_subtasks.filter((v) => typeof v === "string")
530
- : [],
531
- canceled_subtasks: Array.isArray(rr.canceled_subtasks)
532
- ? rr.canceled_subtasks.filter((v) => typeof v === "string")
533
- : [],
534
- // v2.8: Drift clarification
535
- drift_clarification: typeof rr.drift_clarification === "string"
536
- ? rr.drift_clarification
537
- : undefined,
538
- // Multi-agent: Worker delegation results (shared parser)
539
- worker_results: parseWorkerResults(rr.worker_results),
540
- });
541
- }
542
- // Convert loop_objective if present (object already validated by parser)
543
- if (parsed.loop_objective) {
544
- const obj = parsed.loop_objective;
545
- lcr.loop_objective = makeLoopObjective({
546
- objective: obj.objective ?? "",
547
- success_criteria: obj.success_criteria ?? [],
548
- hard_constraints: obj.hard_constraints ?? [],
549
- created_at_round: obj.created_at_round ?? 1,
550
- loop_id: obj.loop_id ?? "",
551
- });
552
- }
553
- // Hydrate vault context for cross-round memory
554
- let context = hydrateResults ?? null;
555
- if (context === null && lcr.loop_id && lcr.round > 1) {
556
- context = this.hydrateLoopContext(lcr.loop_id);
557
- }
558
- // Delegate to pure-function compiler
559
- let response;
560
- try {
561
- response = compileLoop(lcr, context);
562
- }
563
- catch (exc) {
564
- return {
565
- status: AgentStatus.ERROR,
566
- response: {
567
- status: AgentStatus.ERROR,
568
- prompt: null,
569
- error: `loop_compile failed: ${exc}`,
570
- },
571
- };
572
- }
573
- // Persist lineage to vault
574
- if (options.persistLineage !== false) {
575
- this.persistLoopLineage(response, lcr);
576
- }
577
- return {
578
- status: AgentStatus.OK,
579
- response: {
580
- status: AgentStatus.OK,
581
- prompt: response.prompt,
582
- error: null,
583
- state_file_content: response.state_file_content,
584
- prompt_artifact: response.prompt_artifact,
585
- warnings: response.warnings,
586
- },
587
- };
588
- }
589
- }
590
- // ═══════════════════════════════════════════════════════════════════════════
591
- // Factory
592
- // ═══════════════════════════════════════════════════════════════════════════
593
- export function createEngine(store) {
594
- return new LoopForgeEngine(store);
595
- }
596
- //# sourceMappingURL=engine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- /** Self-evaluation extraction and parsing — pure functions.
2
- *
3
- * These functions parse an Agent's raw output into a structured
4
- * SelfEvaluation. They have no dependency on Engine state, file I/O,
5
- * or external services. They are shared by both the MCP tool handler
6
- * (which receives structured JSON directly) and the legacy invoke
7
- * path (which regex-scans free-text Agent output).
8
- */
9
- import { type CriterionRevision, type ExecutionEvidence, type SelfEvaluation } from "./protocol.js";
10
- /** Parse ExecutionEvidence from a raw JSON object. */
11
- export declare function parseExecutionEvidence(raw: Record<string, unknown> | undefined | null): ExecutionEvidence | undefined;
12
- /** Parse CriterionRevision[] from a raw JSON array. */
13
- export declare function parseCriterionRevisions(raw: unknown): CriterionRevision[];
14
- /** Parse WorkerResult[] from a raw JSON array. */
15
- export declare function parseWorkerResults(raw: unknown): import("./protocol.js").WorkerResult[];
16
- /** Extract a structured SelfEvaluation from agent output text.
17
- * Returns null if no valid self-eval block is found.
18
- * The agent is instructed to output JSON between the delimiters. */
19
- export declare function extractSelfEvaluation(text: string): SelfEvaluation | null;
20
- /** Build a SelfEvaluation from a parsed JSON object.
21
- * Lenient parsing: missing optional fields get sensible defaults. */
22
- export declare function buildSelfEvaluation(raw: Record<string, unknown>): SelfEvaluation;
23
- //# sourceMappingURL=self-eval.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"self-eval.d.ts","sourceRoot":"","sources":["../src/self-eval.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EAEtB,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAIvB,sDAAsD;AACtD,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,GAC9C,iBAAiB,GAAG,SAAS,CAwB/B;AAED,uDAAuD;AACvD,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,GACX,iBAAiB,EAAE,CAWrB;AAED,kDAAkD;AAClD,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,GACX,OAAO,eAAe,EAAE,YAAY,EAAE,CAqBxC;AAID;;qEAEqE;AACrE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAczE;AAED;sEACsE;AACtE,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,cAAc,CA0DhB"}