loopforge 3.0.0 → 3.2.1

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 (178) hide show
  1. package/README.md +128 -145
  2. package/dist/audit.d.ts +50 -0
  3. package/dist/audit.d.ts.map +1 -0
  4. package/dist/audit.js +158 -0
  5. package/dist/audit.js.map +1 -0
  6. package/dist/canonical-state.d.ts +28 -20
  7. package/dist/canonical-state.d.ts.map +1 -1
  8. package/dist/canonical-state.js +82 -173
  9. package/dist/canonical-state.js.map +1 -1
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +25 -16
  12. package/dist/cli.js.map +1 -1
  13. package/dist/cognitive-governance.d.ts +25 -33
  14. package/dist/cognitive-governance.d.ts.map +1 -1
  15. package/dist/cognitive-governance.js +38 -138
  16. package/dist/cognitive-governance.js.map +1 -1
  17. package/dist/enforcement-gate.d.ts +76 -0
  18. package/dist/enforcement-gate.d.ts.map +1 -0
  19. package/dist/enforcement-gate.js +1071 -0
  20. package/dist/enforcement-gate.js.map +1 -0
  21. package/dist/engine.d.ts +99 -0
  22. package/dist/engine.d.ts.map +1 -0
  23. package/dist/engine.js +839 -0
  24. package/dist/engine.js.map +1 -0
  25. package/dist/evidence-claims.d.ts +50 -0
  26. package/dist/evidence-claims.d.ts.map +1 -0
  27. package/dist/evidence-claims.js +134 -0
  28. package/dist/evidence-claims.js.map +1 -0
  29. package/dist/evidence-provider.d.ts +21 -23
  30. package/dist/evidence-provider.d.ts.map +1 -1
  31. package/dist/evidence-provider.js +74 -34
  32. package/dist/evidence-provider.js.map +1 -1
  33. package/dist/generate-schema.js +1 -84
  34. package/dist/generate-schema.js.map +1 -1
  35. package/dist/index.d.ts +19 -22
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +16 -15
  38. package/dist/index.js.map +1 -1
  39. package/dist/loop-compiler.d.ts +41 -3
  40. package/dist/loop-compiler.d.ts.map +1 -1
  41. package/dist/loop-compiler.js +632 -273
  42. package/dist/loop-compiler.js.map +1 -1
  43. package/dist/loop-extras-parser.d.ts +2 -2
  44. package/dist/loop-extras-parser.d.ts.map +1 -1
  45. package/dist/loop-extras-parser.js +2 -2
  46. package/dist/loop-extras-parser.js.map +1 -1
  47. package/dist/loop-projection.d.ts +26 -0
  48. package/dist/loop-projection.d.ts.map +1 -0
  49. package/dist/loop-projection.js +142 -0
  50. package/dist/loop-projection.js.map +1 -0
  51. package/dist/loop-store.d.ts +112 -24
  52. package/dist/loop-store.d.ts.map +1 -1
  53. package/dist/loop-store.js +365 -218
  54. package/dist/loop-store.js.map +1 -1
  55. package/dist/mcp/round-lifecycle.d.ts +216 -0
  56. package/dist/mcp/round-lifecycle.d.ts.map +1 -0
  57. package/dist/mcp/round-lifecycle.js +926 -0
  58. package/dist/mcp/round-lifecycle.js.map +1 -0
  59. package/dist/mcp/server.d.ts +2 -1
  60. package/dist/mcp/server.d.ts.map +1 -1
  61. package/dist/mcp/server.js +28 -42
  62. package/dist/mcp/server.js.map +1 -1
  63. package/dist/mcp/session.d.ts +53 -101
  64. package/dist/mcp/session.d.ts.map +1 -1
  65. package/dist/mcp/session.js +306 -1105
  66. package/dist/mcp/session.js.map +1 -1
  67. package/dist/mcp/tools.d.ts +13 -16
  68. package/dist/mcp/tools.d.ts.map +1 -1
  69. package/dist/mcp/tools.js +479 -413
  70. package/dist/mcp/tools.js.map +1 -1
  71. package/dist/policy-metrics.d.ts +12 -17
  72. package/dist/policy-metrics.d.ts.map +1 -1
  73. package/dist/policy-metrics.js +95 -161
  74. package/dist/policy-metrics.js.map +1 -1
  75. package/dist/policy.d.ts +44 -35
  76. package/dist/policy.d.ts.map +1 -1
  77. package/dist/policy.js +31 -115
  78. package/dist/policy.js.map +1 -1
  79. package/dist/prompt-assembler.d.ts +37 -6
  80. package/dist/prompt-assembler.d.ts.map +1 -1
  81. package/dist/prompt-assembler.js +389 -160
  82. package/dist/prompt-assembler.js.map +1 -1
  83. package/dist/prompt-policy.d.ts +1 -8
  84. package/dist/prompt-policy.d.ts.map +1 -1
  85. package/dist/prompt-policy.js +8 -26
  86. package/dist/prompt-policy.js.map +1 -1
  87. package/dist/protocol.d.ts +357 -229
  88. package/dist/protocol.d.ts.map +1 -1
  89. package/dist/protocol.js +139 -15
  90. package/dist/protocol.js.map +1 -1
  91. package/dist/replay.d.ts +5 -13
  92. package/dist/replay.d.ts.map +1 -1
  93. package/dist/replay.js +19 -55
  94. package/dist/replay.js.map +1 -1
  95. package/dist/round-coordinator.d.ts +20 -24
  96. package/dist/round-coordinator.d.ts.map +1 -1
  97. package/dist/round-coordinator.js +99 -92
  98. package/dist/round-coordinator.js.map +1 -1
  99. package/dist/round-driver.d.ts +14 -13
  100. package/dist/round-driver.d.ts.map +1 -1
  101. package/dist/round-driver.js +26 -14
  102. package/dist/round-driver.js.map +1 -1
  103. package/dist/round-transaction.d.ts +15 -18
  104. package/dist/round-transaction.d.ts.map +1 -1
  105. package/dist/round-transaction.js +38 -47
  106. package/dist/round-transaction.js.map +1 -1
  107. package/dist/self-eval.d.ts +53 -0
  108. package/dist/self-eval.d.ts.map +1 -0
  109. package/dist/self-eval.js +284 -0
  110. package/dist/self-eval.js.map +1 -0
  111. package/dist/storage.d.ts +9 -4
  112. package/dist/storage.d.ts.map +1 -1
  113. package/dist/storage.js +18 -6
  114. package/dist/storage.js.map +1 -1
  115. package/dist/token-utils.d.ts +15 -3
  116. package/dist/token-utils.d.ts.map +1 -1
  117. package/dist/token-utils.js +24 -5
  118. package/dist/token-utils.js.map +1 -1
  119. package/dist/verification-gate.d.ts +108 -0
  120. package/dist/verification-gate.d.ts.map +1 -0
  121. package/dist/verification-gate.js +971 -0
  122. package/dist/verification-gate.js.map +1 -0
  123. package/loop_policy.json +44 -15
  124. package/package.json +5 -10
  125. package/skills/perception/SKILL.md +182 -199
  126. package/dist/canonical-event-writer.d.ts +0 -20
  127. package/dist/canonical-event-writer.d.ts.map +0 -1
  128. package/dist/canonical-event-writer.js +0 -131
  129. package/dist/canonical-event-writer.js.map +0 -1
  130. package/dist/compiler-subgoals.d.ts +0 -7
  131. package/dist/compiler-subgoals.d.ts.map +0 -1
  132. package/dist/compiler-subgoals.js +0 -93
  133. package/dist/compiler-subgoals.js.map +0 -1
  134. package/dist/derive-id.d.ts +0 -12
  135. package/dist/derive-id.d.ts.map +0 -1
  136. package/dist/derive-id.js +0 -31
  137. package/dist/derive-id.js.map +0 -1
  138. package/dist/mcp/session-projection.d.ts +0 -5
  139. package/dist/mcp/session-projection.d.ts.map +0 -1
  140. package/dist/mcp/session-projection.js +0 -18
  141. package/dist/mcp/session-projection.js.map +0 -1
  142. package/dist/mcp/session-queue.d.ts +0 -3
  143. package/dist/mcp/session-queue.d.ts.map +0 -1
  144. package/dist/mcp/session-queue.js +0 -18
  145. package/dist/mcp/session-queue.js.map +0 -1
  146. package/dist/mcp/session-types.d.ts +0 -72
  147. package/dist/mcp/session-types.d.ts.map +0 -1
  148. package/dist/mcp/session-types.js +0 -2
  149. package/dist/mcp/session-types.js.map +0 -1
  150. package/dist/round-commit-store.d.ts +0 -12
  151. package/dist/round-commit-store.d.ts.map +0 -1
  152. package/dist/round-commit-store.js +0 -13
  153. package/dist/round-commit-store.js.map +0 -1
  154. package/dist/round-gate.d.ts +0 -31
  155. package/dist/round-gate.d.ts.map +0 -1
  156. package/dist/round-gate.js +0 -259
  157. package/dist/round-gate.js.map +0 -1
  158. package/dist/round-recovery.d.ts +0 -17
  159. package/dist/round-recovery.d.ts.map +0 -1
  160. package/dist/round-recovery.js +0 -117
  161. package/dist/round-recovery.js.map +0 -1
  162. package/dist/round-report.d.ts +0 -16
  163. package/dist/round-report.d.ts.map +0 -1
  164. package/dist/round-report.js +0 -401
  165. package/dist/round-report.js.map +0 -1
  166. package/dist/runtime-services.d.ts +0 -59
  167. package/dist/runtime-services.d.ts.map +0 -1
  168. package/dist/runtime-services.js +0 -460
  169. package/dist/runtime-services.js.map +0 -1
  170. package/dist/vault-format.d.ts +0 -4
  171. package/dist/vault-format.d.ts.map +0 -1
  172. package/dist/vault-format.js +0 -4
  173. package/dist/vault-format.js.map +0 -1
  174. package/dist/vault-types.d.ts +0 -24
  175. package/dist/vault-types.d.ts.map +0 -1
  176. package/dist/vault-types.js +0 -2
  177. package/dist/vault-types.js.map +0 -1
  178. package/loopforge-policy.json +0 -340
@@ -1,460 +0,0 @@
1
- /** LoopForge runtime services — stateless compiler, round-event and metrics boundary.
2
- *
3
- * The public execution path owns session and transaction state; this service
4
- * provides the pure compile and round-event operations used by that path.
5
- * invokeLoopCompile is the primary operation. RuntimeMetrics tracks
6
- * silent-failure counters for observability.
7
- */
8
- import { randomUUID } from "node:crypto";
9
- import { getPolicy } from "./policy.js";
10
- import { FileLoopStore } from "./loop-store.js";
11
- import { AgentStatus, Mode, makeLoopCompileRequest, makeLoopObjective, 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 { parseLoopExtras } from "./loop-extras-parser.js";
16
- import { CanonicalEventWriter } from "./canonical-event-writer.js";
17
- import { parseRoundReport, } from "./round-report.js";
18
- function makeRuntimeMetrics() {
19
- return {
20
- vaultWriteErrors: 0,
21
- sessionStart: Date.now(),
22
- };
23
- }
24
- // ═══════════════════════════════════════════════════════════════════════════
25
- // RuntimeServices
26
- // ═══════════════════════════════════════════════════════════════════════════
27
- export class RuntimeServices {
28
- state = null;
29
- backend = null;
30
- metrics = null;
31
- eventWriter = null;
32
- lastTask = null;
33
- constructor(store) {
34
- if (store)
35
- this.backend = store;
36
- }
37
- resolveBackend() {
38
- if (this.backend === null) {
39
- this.backend = new FileLoopStore(getPolicy().backend.root_dir);
40
- }
41
- return this.backend;
42
- }
43
- /** Public accessor for the vault backend — used by runtime/verification gate. */
44
- getBackend() {
45
- return this.resolveBackend();
46
- }
47
- writer() {
48
- return this.eventWriter ??= new CanonicalEventWriter(this.resolveBackend());
49
- }
50
- /** Expose runtime health counters for observability (MCP status, logging). */
51
- getMetrics() {
52
- if (this.metrics === null) {
53
- this.metrics = makeRuntimeMetrics();
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 = makeRuntimeMetrics();
63
- }
64
- }
65
- // ═══════════════════════════════════════════════════════════════════════
66
- // Canonical round-event persistence
67
- // ═══════════════════════════════════════════════════════════════════════
68
- persistRoundEvent(signal) {
69
- if (this.metrics === null) {
70
- this.metrics = makeRuntimeMetrics();
71
- }
72
- // Round events are committed synchronously by the canonical writer.
73
- const entry = this.buildRoundEventEntry(signal);
74
- if (!entry) {
75
- throw new Error("Cannot persist a round event without a valid canonical RoundReport");
76
- }
77
- try {
78
- this.writer().append(entry);
79
- }
80
- catch (error) {
81
- if (this.metrics)
82
- this.metrics.vaultWriteErrors++;
83
- logEvent("vault_write_error", { error: "round_event_persist" });
84
- logEvent("persist_failure", { operation: "round_event" });
85
- policyMetrics.recordVaultWriteError("round_event_persist");
86
- throw new Error(`Round event persistence failed: ${error instanceof Error ? error.message : String(error)}`);
87
- }
88
- }
89
- buildRoundEventEntry(signal) {
90
- try {
91
- const canonicalReport = parseRoundReport(signal.round_report);
92
- if (!canonicalReport)
93
- return null;
94
- return {
95
- id: randomUUID(),
96
- task_id: signal.task_id ?? "round-event",
97
- format: "loopforge.event",
98
- is_active: true,
99
- timestamp: new Date().toISOString().replace(/\.\d+Z$/, ""),
100
- user_intent: `round event ${String(signal.round ?? "")}`.trim(),
101
- task_type: "round_event",
102
- success: signal.success === true,
103
- loop_id: signal.loop_id,
104
- loop_lineage: signal.loop_lineage ?? {},
105
- round_report: canonicalReport,
106
- };
107
- }
108
- catch (error) {
109
- if (this.metrics)
110
- this.metrics.vaultWriteErrors++;
111
- logEvent("vault_write_error", { error: "round_event_build" });
112
- logEvent("persist_failure", { operation: "round_event_build" });
113
- throw new Error(`Round event construction failed: ${error instanceof Error ? error.message : String(error)}`);
114
- }
115
- }
116
- // ═══════════════════════════════════════════════════════════════════════
117
- // Lineage persistence
118
- // ═══════════════════════════════════════════════════════════════════════
119
- persistLoopLineage(response, request) {
120
- if (this.metrics === null)
121
- this.metrics = makeRuntimeMetrics();
122
- const loopObjDict = response.loop_objective
123
- ? response.loop_objective
124
- : null;
125
- const structuredLineage = {
126
- loop_id: response.loop_id,
127
- round: response.round,
128
- goal_id: response.goal_id,
129
- goal_text_hash: response.goal_text_hash,
130
- recompile_level: response.recompile_level,
131
- constraints_active: response.constraints_active,
132
- task: request.task,
133
- };
134
- const entry = {
135
- id: randomUUID(),
136
- task_id: `loop:${response.loop_id}:r${response.round}`,
137
- format: "loopforge.event",
138
- is_active: true,
139
- timestamp: new Date().toISOString().replace(/\.\d+Z$/, ""),
140
- user_intent: `loop_compile round ${response.round} — ${response.goal_id}`,
141
- task_type: "loop_lineage",
142
- loop_id: response.loop_id,
143
- loop_lineage: structuredLineage,
144
- loop_objective: loopObjDict,
145
- task: request.task,
146
- tags: [response.loop_id, response.recompile_level, response.goal_id],
147
- };
148
- // 1. JSON vault write (primary)
149
- let vaultOk = false;
150
- try {
151
- this.writer().append(entry);
152
- vaultOk = true;
153
- }
154
- catch (error) {
155
- if (this.metrics)
156
- this.metrics.vaultWriteErrors++;
157
- logEvent("vault_write_error", { error: "persist_lineage_json" });
158
- logEvent("persist_failure", { operation: "lineage" });
159
- policyMetrics.recordVaultWriteError("lineage_persist");
160
- throw new Error(`Loop lineage persistence failed: ${error instanceof Error ? error.message : String(error)}`);
161
- }
162
- return vaultOk;
163
- }
164
- // ═══════════════════════════════════════════════════════════════════════
165
- // Delegation journal (v1.9 — AgentTool mode)
166
- // ═══════════════════════════════════════════════════════════════════════
167
- /** Record sub-agent delegations for this round into the vault.
168
- * Written as a lightweight journal entry so the main agent's rolling
169
- * summary can reference delegation history in subsequent rounds. */
170
- recordDelegation(loopId, round, entries) {
171
- if (!entries.length)
172
- return;
173
- const taskId = `loop:${loopId}:r${round}:delegations`;
174
- const existing = this.resolveBackend().queryLoopEvents(loopId)
175
- .some((candidate) => candidate.task_id === taskId);
176
- if (existing)
177
- return;
178
- const entry = {
179
- id: randomUUID(),
180
- task_id: taskId,
181
- format: "loopforge.event",
182
- is_active: true,
183
- timestamp: new Date().toISOString().replace(/\.\d+Z$/, ""),
184
- user_intent: `Delegation journal — round ${round}`,
185
- task_type: "delegation_journal",
186
- loop_id: loopId,
187
- loop_lineage: {
188
- round,
189
- delegations: entries.map((e) => ({
190
- index: e.index,
191
- agentId: e.agentId,
192
- subAgentType: e.subAgentType,
193
- subTask: e.subTask,
194
- resultSummary: e.resultSummary,
195
- success: e.success,
196
- discoveredConstraints: e.discoveredConstraints,
197
- })),
198
- },
199
- };
200
- try {
201
- this.writer().append(entry);
202
- }
203
- catch (error) {
204
- if (this.metrics)
205
- this.metrics.vaultWriteErrors++;
206
- logEvent("vault_write_error", { error: "record_delegation" });
207
- logEvent("persist_failure", { operation: "delegation" });
208
- policyMetrics.recordVaultWriteError("delegation_persist");
209
- throw new Error(`Failed to persist delegation journal for ${loopId} round ${round}`, { cause: error instanceof Error ? error : undefined });
210
- }
211
- }
212
- // ═══════════════════════════════════════════════════════════════════════
213
- // Hydrate loop context from vault
214
- // ═══════════════════════════════════════════════════════════════════════
215
- hydrateLoopContext(loopId) {
216
- const prefix = `loop:${loopId}:r`;
217
- // Hydration builds an ephemeral event projection. Clone entries
218
- // before merging round events so a read can never mutate the Vault backend.
219
- const loopEntries = this.resolveBackend().queryLoopEvents(loopId);
220
- const results = [
221
- ...loopEntries.filter((entry) => String(entry.task_id ?? "").startsWith(prefix)),
222
- // Gate decisions are loop facts too; include them so the compiler can
223
- // rebuild the active gate after a user decision across restarts.
224
- ...loopEntries.filter((entry) => String(entry.task_id ?? "").startsWith(`loop:${loopId}:gate`)),
225
- ].map((entry) => ({
226
- ...entry,
227
- loop_lineage: entry.loop_lineage ? { ...entry.loop_lineage } : undefined,
228
- }));
229
- // Merge round-event success flags into lineage entries
230
- const roundEvents = loopEntries.filter((entry) => String(entry.task_id ?? "").startsWith(prefix) &&
231
- String(entry.task_id ?? "").endsWith(":event"));
232
- const eventSuccess = new Map();
233
- const eventByRound = new Map();
234
- for (const event of roundEvents) {
235
- const tid = String(event.task_id ?? "");
236
- // task_id is `loop:<loopId>:r<round>:event`. loopId may itself contain
237
- // ":r" (validateLoopId permits colons), so a naive split(":r") would
238
- // misparse. Greedy (.+) backtracks to the LAST `:r<digits>` segment,
239
- // which is always the real round number.
240
- const match = tid.match(/^loop:(.+):r(\d+)(?::.+)?$/);
241
- if (match) {
242
- const eventRound = parseInt(match[2], 10);
243
- if (!Number.isNaN(eventRound) && event.success !== undefined) {
244
- eventSuccess.set(eventRound, event.success);
245
- eventByRound.set(eventRound, event);
246
- }
247
- }
248
- }
249
- for (const entry of results) {
250
- const lineage = (entry.loop_lineage ?? {});
251
- const rnd = lineage.round;
252
- if (rnd && eventSuccess.has(rnd)) {
253
- lineage.success = eventSuccess.get(rnd);
254
- entry.success = eventSuccess.get(rnd);
255
- const event = eventByRound.get(rnd);
256
- if (event?.round_report) {
257
- const report = parseRoundReport(event.round_report);
258
- if (report)
259
- entry.round_report = report;
260
- }
261
- }
262
- }
263
- const finalResults = results;
264
- for (const entry of finalResults) {
265
- const lineage = (entry.loop_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
- // Canonical round-event commit
280
- // ═══════════════════════════════════════════════════════════════════════
281
- /** Record a round report and persist the canonical event.
282
- * Compiler views remain ephemeral and are never written as facts.
283
- * P0–P2: Also persists discovered_constraints, objective_refinement,
284
- * and emerged_subtasks for the compiler to consume next round.
285
- * Call this BEFORE invokeLoopCompile for the next round so that
286
- * hydrateLoopContext picks up the latest success flags. */
287
- commitRoundReport(loopId, round, task, roundTransaction, roundReport) {
288
- if (!roundReport)
289
- throw new Error("commitRoundReport requires a canonical RoundReport");
290
- this.ensureInit({ task, mode: Mode.LOOP_COMPILE, skill_name: null, task_id: null });
291
- const taskId = `loop:${loopId}:r${round}:event`;
292
- const transactionId = typeof roundTransaction?.round_id === "string"
293
- ? roundTransaction.round_id
294
- : null;
295
- const transactionPersisted = () => {
296
- if (!transactionId)
297
- return false;
298
- return this.resolveBackend().queryLoopEvents(loopId)
299
- .filter((entry) => entry.task_id === taskId)
300
- .some((entry) => {
301
- if (entry.task_id !== taskId)
302
- return false;
303
- const lineage = entry.loop_lineage;
304
- const transaction = lineage?.round_transaction;
305
- return transaction !== null &&
306
- typeof transaction === "object" &&
307
- !Array.isArray(transaction) &&
308
- transaction.round_id === transactionId;
309
- });
310
- };
311
- const alreadyCommitted = transactionPersisted();
312
- const signal = {
313
- task_id: taskId,
314
- task_type: "round_event",
315
- success: roundReport.outcome === "success",
316
- loop_id: loopId,
317
- round,
318
- format: "loopforge.event",
319
- round_report: roundReport,
320
- loop_lineage: roundTransaction
321
- ? {
322
- round,
323
- round_id: roundTransaction.round_id,
324
- round_transaction: roundTransaction,
325
- }
326
- : {},
327
- };
328
- if (!alreadyCommitted) {
329
- this.persistRoundEvent(signal);
330
- if (transactionId && !transactionPersisted()) {
331
- throw new Error(`Round event commit failed: ${transactionId}`);
332
- }
333
- }
334
- if (alreadyCommitted)
335
- return roundReport.outcome === "success";
336
- logEvent("round_complete", {
337
- loopId,
338
- round,
339
- success: roundReport.outcome === "success",
340
- });
341
- return roundReport.outcome === "success";
342
- }
343
- // ═══════════════════════════════════════════════════════════════════════
344
- // Loop Compile (public, primary)
345
- // ═══════════════════════════════════════════════════════════════════════
346
- invokeLoopCompile(request, hydrateResults, options = {}) {
347
- this.ensureInit(request);
348
- this.lastTask = request.task;
349
- // Parse extras via typed extraction pipeline (loop-extras-parser.ts).
350
- // Errors are collected but never thrown — the compiler always gets
351
- // best-effort defaults so a malformed request doesn't crash the engine.
352
- const extras = request;
353
- const { parsed, ctx } = parseLoopExtras(extras, request.task_id ?? "");
354
- if (ctx.errors.length > 0) {
355
- logEvent("extras_parse_errors", {
356
- errors: ctx.errors.map((e) => `${e.field}: ${e.message}`),
357
- });
358
- }
359
- const lcr = makeLoopCompileRequest({
360
- loop_id: parsed.loop_id,
361
- round: parsed.round,
362
- goal_id: parsed.goal_id,
363
- task: request.task,
364
- domain: parsed.domain,
365
- next_task_proposal: parsed.next_task_proposal,
366
- plan_source: parsed.plan_source,
367
- constraints_from_plan: parsed.constraints_from_plan,
368
- new_since_last_round: parsed.new_since_last_round,
369
- force_level: parsed.force_level,
370
- health_check_interval: parsed.health_check_interval,
371
- external_context: parsed.external_context,
372
- max_rounds: parsed.max_rounds,
373
- verification_flags: parsed.verification_flags,
374
- attempt: parsed.attempt,
375
- consecutive_rejections: parsed.consecutive_rejections,
376
- rejection_notice: parsed.rejection_notice,
377
- loop_objective: parsed.loop_objective,
378
- });
379
- // Convert only the canonical compiler projection.
380
- if (parsed.last_round_view) {
381
- const rr = parsed.last_round_view;
382
- if (rr.evidence && typeof rr.evidence === "object" &&
383
- typeof rr.summary === "string") {
384
- lcr.last_round_view = rr;
385
- }
386
- else {
387
- return {
388
- status: AgentStatus.ERROR,
389
- response: {
390
- status: AgentStatus.ERROR,
391
- prompt: null,
392
- error: "last_round_view must be a CompilerRoundProjection",
393
- },
394
- };
395
- }
396
- }
397
- // Convert loop_objective if present (object already validated by parser).
398
- // Preserve the caller-supplied version and refinement_history so
399
- // objective versioning (P1) survives the request round-trip.
400
- if (parsed.loop_objective) {
401
- const obj = parsed.loop_objective;
402
- lcr.loop_objective = makeLoopObjective({
403
- objective: obj.objective ?? "",
404
- success_criteria: obj.success_criteria ?? [],
405
- hard_constraints: obj.hard_constraints ?? [],
406
- created_at_round: obj.created_at_round ?? 1,
407
- loop_id: obj.loop_id ?? "",
408
- ...(typeof obj.version === "number" ? { version: obj.version } : {}),
409
- ...(Array.isArray(obj.refinement_history)
410
- ? {
411
- refinement_history: obj.refinement_history.filter((item) => typeof item === "string"),
412
- }
413
- : {}),
414
- });
415
- }
416
- // Hydrate vault context for cross-round memory
417
- let context = hydrateResults ?? null;
418
- if (context === null && lcr.loop_id && lcr.round > 1) {
419
- context = this.hydrateLoopContext(lcr.loop_id);
420
- }
421
- // Delegate to pure-function compiler
422
- let response;
423
- try {
424
- response = compileLoop(lcr, context);
425
- }
426
- catch (exc) {
427
- return {
428
- status: AgentStatus.ERROR,
429
- response: {
430
- status: AgentStatus.ERROR,
431
- prompt: null,
432
- error: `loop_compile failed: ${exc}`,
433
- },
434
- };
435
- }
436
- // Persist lineage to vault
437
- if (options.persistLineage !== false) {
438
- this.persistLoopLineage(response, lcr);
439
- }
440
- return {
441
- status: AgentStatus.OK,
442
- response: {
443
- status: AgentStatus.OK,
444
- prompt: response.prompt,
445
- error: null,
446
- state_file_content: response.state_file_content,
447
- prompt_artifact: response.prompt_artifact,
448
- canonical_state: response.canonical_state,
449
- warnings: response.warnings,
450
- },
451
- };
452
- }
453
- }
454
- // ═══════════════════════════════════════════════════════════════════════════
455
- // Factory
456
- // ═══════════════════════════════════════════════════════════════════════════
457
- export function createRuntimeServices(store) {
458
- return new RuntimeServices(store);
459
- }
460
- //# sourceMappingURL=runtime-services.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime-services.js","sourceRoot":"","sources":["../src/runtime-services.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- /** Stable storage format identifiers shared by persistence modules. */
2
- export declare const LOOP_STORE_FORMAT: "loopforge.store";
3
- export declare const LOOP_EVENT_FORMAT: "loopforge.event";
4
- //# sourceMappingURL=vault-format.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vault-format.d.ts","sourceRoot":"","sources":["../src/vault-format.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,eAAO,MAAM,iBAAiB,EAAG,iBAA0B,CAAC;AAC5D,eAAO,MAAM,iBAAiB,EAAG,iBAA0B,CAAC"}
@@ -1,4 +0,0 @@
1
- /** Stable storage format identifiers shared by persistence modules. */
2
- export const LOOP_STORE_FORMAT = "loopforge.store";
3
- export const LOOP_EVENT_FORMAT = "loopforge.event";
4
- //# sourceMappingURL=vault-format.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vault-format.js","sourceRoot":"","sources":["../src/vault-format.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAA0B,CAAC;AAC5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAA0B,CAAC"}
@@ -1,24 +0,0 @@
1
- /** Shared durable event shape, independent from backend adapters. */
2
- export interface VaultEntry {
3
- id?: string;
4
- event_sequence?: number;
5
- task_id?: string;
6
- format?: "loopforge.event";
7
- is_active?: boolean;
8
- timestamp?: string;
9
- user_intent?: string;
10
- task_type?: string;
11
- quality_score?: number;
12
- success?: boolean;
13
- skill_used?: string;
14
- loop_id?: string;
15
- loop_lineage?: Record<string, unknown>;
16
- loop_objective?: Record<string, unknown> | null;
17
- task?: string;
18
- output_summary?: string;
19
- constraint_violations?: string[];
20
- tags?: string[];
21
- full_prompt?: string;
22
- [key: string]: unknown;
23
- }
24
- //# sourceMappingURL=vault-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vault-types.d.ts","sourceRoot":"","sources":["../src/vault-types.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,MAAM,WAAW,UAAU;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=vault-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vault-types.js","sourceRoot":"","sources":["../src/vault-types.ts"],"names":[],"mappings":""}