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
@@ -0,0 +1,401 @@
1
+ import { isRecord } from "./token-utils.js";
2
+ import { deriveCriterionId } from "./derive-id.js";
3
+ function strings(values) {
4
+ return Array.isArray(values)
5
+ ? values.filter((value) => typeof value === "string")
6
+ .map((value) => value.trim()).filter(Boolean)
7
+ : [];
8
+ }
9
+ const PROMPT_REQUEST_SECTIONS = [
10
+ "milestones", "sub_goals", "constraint_lifecycle", "agent_trust",
11
+ "progress", "loop_synthesis",
12
+ ];
13
+ /** Field-level validation for v2.9 prompt_requests. The container must be a
14
+ * record and each list must be an array of strings; invalid entries are
15
+ * dropped rather than silently entering the prompt assembler. A present
16
+ * but structurally invalid request is a malformed report — reject it. */
17
+ function parseContextRequest(value) {
18
+ if (!isRecord(value))
19
+ return value === undefined ? undefined : null;
20
+ if (value.emphasize !== undefined && !Array.isArray(value.emphasize))
21
+ return null;
22
+ if (value.expand !== undefined && !Array.isArray(value.expand))
23
+ return null;
24
+ if (value.confusion_points !== undefined && !Array.isArray(value.confusion_points))
25
+ return null;
26
+ // Invalid entries are dropped (sanitize, consistent with the rest of the
27
+ // parser); only a structurally invalid container rejects the report.
28
+ const expand = Array.isArray(value.expand)
29
+ ? value.expand.filter((item) => typeof item === "string" &&
30
+ PROMPT_REQUEST_SECTIONS.includes(item))
31
+ : [];
32
+ const confusionPoints = Array.isArray(value.confusion_points)
33
+ ? value.confusion_points.filter((item) => typeof item === "string" && item.trim().length > 0 && item.trim().length <= 200)
34
+ .map((item) => item.trim())
35
+ : [];
36
+ return {
37
+ ...(Array.isArray(value.emphasize) ? { emphasize: strings(value.emphasize) } : {}),
38
+ ...(expand.length ? { expand } : {}),
39
+ ...(confusionPoints.length ? { confusion_points: confusionPoints } : {}),
40
+ };
41
+ }
42
+ const GATE_EFFECTS = [
43
+ "workspace_write", "production", "credentials", "data_migration",
44
+ "public_api", "publish", "payment", "external_communication", "network",
45
+ ];
46
+ function parseGateAction(value) {
47
+ if (!isRecord(value) || typeof value.description !== "string" ||
48
+ !Array.isArray(value.scope) || !Array.isArray(value.effects) ||
49
+ !["reversible", "recoverable", "irreversible", "unknown"].includes(String(value.reversibility)) ||
50
+ !["agent_allowed", "user_required", "unknown"].includes(String(value.authorization))) {
51
+ return undefined;
52
+ }
53
+ const effects = value.effects.filter((effect) => typeof effect === "string" && GATE_EFFECTS.includes(effect));
54
+ if (effects.length !== value.effects.length)
55
+ return undefined;
56
+ return {
57
+ description: value.description.trim(),
58
+ scope: strings(value.scope),
59
+ effects,
60
+ reversibility: value.reversibility,
61
+ authorization: value.authorization,
62
+ };
63
+ }
64
+ export function isSafeObjectiveRefinement(value) {
65
+ const refinement = value.trim();
66
+ if (!refinement || refinement.length > 2_000)
67
+ return false;
68
+ return !/(replace|discard|ignore|remove|override)\s+(the\s+)?(original\s+)?(goal|objective|constraint)|替换|丢弃|忽略|删除|覆盖.{0,8}(原始)?(目标|约束)/i.test(refinement);
69
+ }
70
+ export function parseRoundReport(value) {
71
+ if (!isRecord(value) ||
72
+ "status" in value || "schemaVersion" in value ||
73
+ "execution_evidence" in value || "next_action" in value ||
74
+ "clarification_accepted" in value ||
75
+ value.format !== "loopforge.round-report" ||
76
+ !["success", "partial", "failed", "blocked"].includes(String(value.outcome)) ||
77
+ !["continue", "stop"].includes(String(value.continuation)) ||
78
+ typeof value.summary !== "string" || !value.summary.trim() ||
79
+ !Array.isArray(value.violations))
80
+ return null;
81
+ if (value.outcome === "blocked" && !isRecord(value.blocker))
82
+ return null;
83
+ if (value.outcome === "blocked" && value.continuation === "continue") {
84
+ // Only an agent-resolvable blocker may keep the loop moving, and it must
85
+ // carry a structured action so the runtime can derive an Agent Gate and
86
+ // its required evidence. Human/external/dependency blockers always stop.
87
+ const blocker = value.blocker;
88
+ if (blocker.kind !== "agent" || !parseGateAction(blocker.action))
89
+ return null;
90
+ }
91
+ const discoveries = isRecord(value.discoveries) ? value.discoveries : undefined;
92
+ const subGoalEvents = isRecord(value.subGoalEvents) ? value.subGoalEvents : undefined;
93
+ const constraintEvents = isRecord(value.constraintEvents) ? value.constraintEvents : undefined;
94
+ const evidenceRaw = isRecord(value.evidence) ? value.evidence : undefined;
95
+ let evidence;
96
+ if (evidenceRaw) {
97
+ const checks = Array.isArray(evidenceRaw.checks)
98
+ ? evidenceRaw.checks.filter(isRecord).flatMap((check) => {
99
+ if (typeof check.name !== "string" ||
100
+ !["passed", "failed", "not_run"].includes(String(check.status)))
101
+ return [];
102
+ const counts = isRecord(check.counts) &&
103
+ [check.counts.passed, check.counts.failed, check.counts.skipped]
104
+ .every((count) => typeof count === "number" && Number.isInteger(count) && count >= 0)
105
+ ? { passed: check.counts.passed, failed: check.counts.failed, skipped: check.counts.skipped }
106
+ : undefined;
107
+ return [{ name: check.name.trim(), status: check.status, required: check.required === true, summary: typeof check.summary === "string" ? check.summary.trim() : undefined, counts }];
108
+ })
109
+ : [];
110
+ const claims = Array.isArray(evidenceRaw.claims)
111
+ ? evidenceRaw.claims.filter(isRecord).flatMap((claim) => typeof claim.id === "string" && /^claim-[a-f0-9]{12}$/.test(claim.id) &&
112
+ typeof claim.targetId === "string" && Array.isArray(claim.evidenceRefs)
113
+ ? [{ id: claim.id, targetId: claim.targetId.trim(), evidenceRefs: strings(claim.evidenceRefs) }]
114
+ : [])
115
+ : [];
116
+ evidence = {
117
+ files: strings(evidenceRaw.files),
118
+ checks,
119
+ claims,
120
+ provenance: isRecord(evidenceRaw.provenance)
121
+ ? evidenceRaw.provenance
122
+ : {},
123
+ noChangeReason: typeof evidenceRaw.noChangeReason === "string"
124
+ ? evidenceRaw.noChangeReason.trim() || undefined
125
+ : undefined,
126
+ };
127
+ }
128
+ const objectiveRefinement = typeof value.objectiveRefinement === "string"
129
+ ? value.objectiveRefinement.trim() || undefined
130
+ : undefined;
131
+ if (objectiveRefinement && !isSafeObjectiveRefinement(objectiveRefinement))
132
+ return null;
133
+ const driftClarification = isRecord(value.driftClarification)
134
+ ? (() => {
135
+ if (typeof value.driftClarification.explanation !== "string" ||
136
+ !Array.isArray(value.driftClarification.anchors))
137
+ return undefined;
138
+ const explanation = value.driftClarification.explanation.trim();
139
+ const anchors = strings(value.driftClarification.anchors);
140
+ if (!explanation || explanation.length > 2_000 || anchors.length > 8 ||
141
+ anchors.some((anchor) => anchor.length > 240))
142
+ return undefined;
143
+ return { explanation, anchors };
144
+ })()
145
+ : undefined;
146
+ if (isRecord(value.driftClarification) && !driftClarification)
147
+ return null;
148
+ const contextRequest = parseContextRequest(value.contextRequest);
149
+ if (contextRequest === null)
150
+ return null;
151
+ return {
152
+ format: "loopforge.round-report",
153
+ outcome: value.outcome,
154
+ continuation: value.continuation,
155
+ summary: value.summary.trim(),
156
+ violations: strings(value.violations),
157
+ evidence,
158
+ blocker: isRecord(value.blocker) && typeof value.blocker.reason === "string"
159
+ ? {
160
+ kind: ["dependency", "external", "needs_human_input", "agent"].includes(String(value.blocker.kind))
161
+ ? value.blocker.kind
162
+ : "agent",
163
+ reason: value.blocker.reason.trim(),
164
+ references: strings(value.blocker.references),
165
+ action: parseGateAction(value.blocker.action),
166
+ }
167
+ : undefined,
168
+ discoveries: discoveries ? {
169
+ wrongAssumptions: strings(discoveries.wrongAssumptions),
170
+ emergedWork: strings(discoveries.emergedWork),
171
+ facts: strings(discoveries.facts),
172
+ newConstraints: strings(discoveries.newConstraints),
173
+ } : undefined,
174
+ subGoalEvents: subGoalEvents ? {
175
+ completed: strings(subGoalEvents.completed),
176
+ blocked: strings(subGoalEvents.blocked),
177
+ canceled: strings(subGoalEvents.canceled),
178
+ } : undefined,
179
+ constraintEvents: constraintEvents ? {
180
+ retired: strings(constraintEvents.retired),
181
+ } : undefined,
182
+ criterionRevisions: Array.isArray(value.criterionRevisions)
183
+ ? value.criterionRevisions.filter(isRecord).flatMap((revision) => typeof revision.old === "string" && typeof revision.new === "string" &&
184
+ revision.old.trim() && revision.new.trim()
185
+ ? [{ old: revision.old.trim(), new: revision.new.trim() }]
186
+ : [])
187
+ : undefined,
188
+ objectiveRefinement,
189
+ phaseBoundaryProposal: isRecord(value.phaseBoundaryProposal) &&
190
+ typeof value.phaseBoundaryProposal.label === "string" &&
191
+ typeof value.phaseBoundaryProposal.reason === "string"
192
+ ? { label: value.phaseBoundaryProposal.label.trim(), reason: value.phaseBoundaryProposal.reason.trim() }
193
+ : undefined,
194
+ contextRequest,
195
+ ...(typeof value.agentIntent === "string" && value.agentIntent.trim()
196
+ ? { agentIntent: value.agentIntent.trim() }
197
+ : {}),
198
+ ...(driftClarification ? { driftClarification } : {}),
199
+ };
200
+ }
201
+ /** Derive normalized evidence once for all runtime consumers. */
202
+ export function deriveEvidenceView(report, requiredCriteria = [], snapshots = []) {
203
+ const envelope = report.evidence;
204
+ const reportedFiles = envelope?.files ?? [];
205
+ // Provider snapshots are available during live verification. On replay or
206
+ // backtrack they are not, so reconstruct observed files from the durable
207
+ // provenance attached to the report instead of silently losing them.
208
+ const snapshotFiles = snapshots.flatMap((snapshot) => snapshot.files);
209
+ const provenanceFiles = reportedFiles.filter((file) => {
210
+ const provenance = envelope?.provenance[`file:${file}`];
211
+ return provenance?.status === "verified" && provenance.source !== "agent";
212
+ });
213
+ const observedFiles = [...new Set([...snapshotFiles, ...provenanceFiles])];
214
+ const checks = envelope?.checks ?? [];
215
+ const verifiedClaims = (envelope?.claims ?? [])
216
+ .filter((claim) => claim.evidenceRefs.some((ref) => {
217
+ const provenance = envelope?.provenance[ref];
218
+ return provenance?.status === "verified" && provenance.source !== "agent";
219
+ }))
220
+ .map((claim) => claim.targetId);
221
+ const contradictedClaims = (envelope?.claims ?? [])
222
+ .filter((claim) => claim.evidenceRefs.some((ref) => envelope?.provenance[ref]?.status === "contradicted"))
223
+ .map((claim) => claim.targetId);
224
+ const unavailableClaims = (envelope?.claims ?? [])
225
+ .filter((claim) => claim.evidenceRefs.some((ref) => envelope?.provenance[ref]?.status === "unavailable"))
226
+ .map((claim) => claim.targetId);
227
+ const verified = new Set(verifiedClaims.map((claim) => claim.trim().toLowerCase()));
228
+ const criteriaRemaining = requiredCriteria.filter((criterion) => {
229
+ const normalized = criterion.trim().toLowerCase();
230
+ const criterionId = deriveCriterionId(normalized);
231
+ return !verified.has(normalized) && !verified.has(criterionId);
232
+ });
233
+ const criteriaMet = requiredCriteria.length > 0
234
+ ? requiredCriteria.filter((criterion) => !criteriaRemaining.includes(criterion))
235
+ : verifiedClaims;
236
+ const countValues = checks
237
+ .filter((check) => {
238
+ const provenance = envelope?.provenance[`check:${check.name}`];
239
+ return provenance?.status === "verified" && provenance.source !== "agent";
240
+ })
241
+ .map((check) => check.counts)
242
+ .filter((value) => Boolean(value));
243
+ const testCounts = countValues.length
244
+ ? countValues.reduce((sum, value) => ({
245
+ passed: sum.passed + value.passed,
246
+ failed: sum.failed + value.failed,
247
+ skipped: sum.skipped + value.skipped,
248
+ }), { passed: 0, failed: 0, skipped: 0 })
249
+ : null;
250
+ const requiredCommandFailures = snapshots
251
+ .filter((snapshot) => snapshot.data.kind === "command" &&
252
+ snapshot.data.phase === "after" && snapshot.data.required === true &&
253
+ snapshot.data.status !== "passed")
254
+ .map((snapshot) => typeof snapshot.data.commandName === "string"
255
+ ? snapshot.data.commandName : snapshot.provider);
256
+ const hasVerifiedObservation = observedFiles.length > 0 || verifiedClaims.length > 0 ||
257
+ checks.some((check) => envelope?.provenance[`check:${check.name}`]?.status === "verified");
258
+ const providerStatus = snapshots.length === 0
259
+ ? "absent"
260
+ : snapshots.some((snapshot) => snapshot.claimCapable === true) && hasVerifiedObservation
261
+ ? "verified" : "unavailable";
262
+ const progressRatio = requiredCriteria.length > 0
263
+ ? criteriaMet.length / requiredCriteria.length
264
+ : verifiedClaims.length > 0 ? 1 : null;
265
+ return {
266
+ reportedFiles: [...reportedFiles],
267
+ observedFiles,
268
+ checks: [...checks],
269
+ verifiedClaims,
270
+ contradictedClaims,
271
+ unavailableClaims,
272
+ criteriaMet,
273
+ criteriaRemaining,
274
+ progressRatio,
275
+ testCounts,
276
+ requiredCommandFailures,
277
+ providerStatus,
278
+ };
279
+ }
280
+ /** Build the narrow compiler projection consumed by the compiler. */
281
+ export function deriveCompilerProjection(report, round, requiredCriteria = [], snapshots = []) {
282
+ return {
283
+ round,
284
+ outcome: report.outcome,
285
+ continuation: report.continuation,
286
+ summary: report.summary,
287
+ violations: report.violations,
288
+ evidence: deriveEvidenceView(report, requiredCriteria, snapshots),
289
+ discoveries: report.discoveries,
290
+ subGoalEvents: report.subGoalEvents,
291
+ constraintEvents: report.constraintEvents,
292
+ criterionRevisions: report.criterionRevisions,
293
+ objectiveRefinement: report.objectiveRefinement,
294
+ phaseBoundaryProposal: report.phaseBoundaryProposal,
295
+ agentIntent: report.agentIntent,
296
+ contextRequest: report.contextRequest,
297
+ };
298
+ }
299
+ /** Rebuild the latest accepted compiler projection directly from events. */
300
+ export function latestCompilerProjection(entries, requiredCriteria = []) {
301
+ const candidates = entries.flatMap((entry) => {
302
+ const report = parseRoundReport(entry.round_report);
303
+ const round = typeof entry.round === "number"
304
+ ? entry.round
305
+ : typeof entry.loop_lineage?.round === "number"
306
+ ? entry.loop_lineage.round
307
+ : 0;
308
+ return report && round > 0
309
+ ? [deriveCompilerProjection(report, round, requiredCriteria)]
310
+ : [];
311
+ });
312
+ return candidates.sort((a, b) => b.round - a.round)[0] ?? null;
313
+ }
314
+ /** Replace agent-supplied provenance with statuses observed by the runtime.
315
+ * Unknown agent references remain claims; missing provider references are
316
+ * explicitly unavailable rather than silently passing verification. */
317
+ export function verifyRoundReportEvidence(report, snapshots) {
318
+ if (!report.evidence)
319
+ return report;
320
+ const observed = new Map();
321
+ for (const snapshot of snapshots) {
322
+ const observedAt = Number.isFinite(snapshot.timestamp)
323
+ ? new Date(snapshot.timestamp).toISOString()
324
+ : "1970-01-01T00:00:00.000Z";
325
+ const rawStatus = typeof snapshot.data.status === "string"
326
+ ? snapshot.data.status
327
+ : undefined;
328
+ const status = snapshot.claimCapable !== true
329
+ ? "unavailable"
330
+ : rawStatus === undefined || rawStatus === "passed"
331
+ ? "verified"
332
+ : rawStatus === "failed" ? "contradicted" : "unavailable";
333
+ const detail = typeof snapshot.data.output === "string"
334
+ ? snapshot.data.output.slice(0, 500)
335
+ : undefined;
336
+ const value = {
337
+ source: snapshot.provider.startsWith("command:") ? "command" : "provider",
338
+ observedAt,
339
+ status,
340
+ detail,
341
+ };
342
+ observed.set(`provider:${snapshot.provider}`, value);
343
+ observed.set(`command:${snapshot.provider.replace(/^command:/, "")}`, value);
344
+ observed.set(`check:${snapshot.provider.replace(/^command:/, "")}`, value);
345
+ for (const file of snapshot.files) {
346
+ observed.set(`file:${file}`, { ...value, source: "provider" });
347
+ }
348
+ }
349
+ const provenance = {};
350
+ for (const check of report.evidence.checks) {
351
+ const ref = `check:${check.name}`;
352
+ provenance[ref] = observed.get(ref) ?? {
353
+ source: "agent",
354
+ observedAt: "1970-01-01T00:00:00.000Z",
355
+ status: "claimed",
356
+ };
357
+ }
358
+ for (const file of report.evidence.files) {
359
+ const ref = `file:${file}`;
360
+ provenance[ref] = observed.get(ref) ?? {
361
+ source: "agent",
362
+ observedAt: "1970-01-01T00:00:00.000Z",
363
+ status: "claimed",
364
+ };
365
+ }
366
+ for (const claim of report.evidence.claims) {
367
+ for (const ref of claim.evidenceRefs) {
368
+ const matchingSnapshot = snapshots.find((snapshot) => ref === `provider:${snapshot.provider}` ||
369
+ ref === `command:${snapshot.provider.replace(/^command:/, "")}` ||
370
+ ref === `check:${snapshot.provider.replace(/^command:/, "")}`);
371
+ const explicitTargets = matchingSnapshot
372
+ ? [matchingSnapshot.data.claims, matchingSnapshot.data.criteria, matchingSnapshot.data.verifiedClaims]
373
+ .flatMap((value) => Array.isArray(value) ? value.filter((item) => typeof item === "string") : [])
374
+ .map((item) => item.trim().toLowerCase())
375
+ : [];
376
+ const target = claim.targetId.trim().toLowerCase();
377
+ const criterionId = /^cr-[a-f0-9]{8}$/.test(target);
378
+ const hasObservedFileBinding = matchingSnapshot
379
+ ? report.evidence.files.some((file) => matchingSnapshot.files.includes(file))
380
+ : false;
381
+ const refIsConcrete = ref.startsWith("file:") || ref.startsWith("check:") ||
382
+ ref.startsWith("command:") ||
383
+ ref.startsWith("criterion:") || (matchingSnapshot !== undefined &&
384
+ (explicitTargets.includes(target) || criterionId || hasObservedFileBinding));
385
+ const concreteEvidence = refIsConcrete ? observed.get(ref) : undefined;
386
+ provenance[ref] = concreteEvidence ?? {
387
+ source: "agent",
388
+ observedAt: "1970-01-01T00:00:00.000Z",
389
+ status: /^(provider|command):/.test(ref) ? "unavailable" : "claimed",
390
+ };
391
+ }
392
+ }
393
+ return {
394
+ ...report,
395
+ evidence: {
396
+ ...report.evidence,
397
+ provenance,
398
+ },
399
+ };
400
+ }
401
+ //# sourceMappingURL=round-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"round-report.js","sourceRoot":"","sources":["../src/round-report.ts"],"names":[],"mappings":"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"}
@@ -2,20 +2,20 @@
2
2
  *
3
3
  * A logical round has one deterministic roundId. Rejected attempts keep the
4
4
  * same identity and before snapshot; only accepted decisions are committed to
5
- * feedback storage. The committed feedback embeds the decision so replay after
5
+ * round-event storage. The committed event embeds the decision so replay after
6
6
  * a process crash is idempotent.
7
7
  */
8
- import type { VaultBackend } from "./backends/interface.js";
9
- import { LoopForgeEngine } from "./engine.js";
8
+ import type { LoopStore } from "./loop-store.js";
9
+ import { RuntimeServices } from "./runtime-services.js";
10
10
  import type { ProviderSnapshot } from "./evidence-provider.js";
11
- import type { SelfEvaluation } from "./protocol.js";
11
+ import type { CompilerRoundProjection, RoundReport } from "./protocol.js";
12
12
  import type { PromptArtifact } from "./protocol.js";
13
13
  import { type RoundProcessResult } from "./round-coordinator.js";
14
- import type { RoundCommitStore } from "./storage.js";
15
- export declare const ROUND_TRANSACTION_SCHEMA_VERSION: 1;
14
+ import type { RoundCommitStore } from "./round-commit-store.js";
15
+ export declare const ROUND_TRANSACTION_FORMAT: "loopforge.round-transaction";
16
16
  export type RoundTransactionPhase = "prepared" | "prompted" | "evaluated" | "rejected" | "committed" | "terminated";
17
17
  export interface RoundTransactionSnapshot {
18
- schemaVersion: typeof ROUND_TRANSACTION_SCHEMA_VERSION;
18
+ format: typeof ROUND_TRANSACTION_FORMAT;
19
19
  roundId: string;
20
20
  loopId: string;
21
21
  round: number;
@@ -24,7 +24,7 @@ export interface RoundTransactionSnapshot {
24
24
  beforeEvidence: ProviderSnapshot[];
25
25
  afterEvidence?: ProviderSnapshot[];
26
26
  roundEvidence?: ProviderSnapshot[];
27
- evaluation?: SelfEvaluation;
27
+ roundReport?: RoundReport;
28
28
  result?: RoundProcessResult;
29
29
  createdAt: number;
30
30
  updatedAt: number;
@@ -35,11 +35,22 @@ export interface RoundTransactionInput {
35
35
  snapshot: RoundTransactionSnapshot;
36
36
  task: string;
37
37
  maxRounds: number;
38
- selfEval: SelfEvaluation;
39
- extractionSucceeded: boolean;
40
- lastSelfEval?: SelfEvaluation;
38
+ roundReport?: RoundReport;
39
+ previousProjection?: CompilerRoundProjection;
41
40
  consecutiveRejections: number;
42
41
  successTrajectory: boolean[];
42
+ /** v2.12: Current clarification streak for R7 escalation. */
43
+ driftClarificationStreak?: number;
44
+ /** Terminal enforcement checks that already consumed their guided retry. */
45
+ escalatedRejectionChecks?: string[];
46
+ /** v2.13: Files from skipped backtrack rounds for restore check. */
47
+ backtrackSkippedFiles?: string[];
48
+ /** v2.13: Git HEAD of the active backtrack restore point. Passed to the
49
+ * verification gate; the post-backtrack round must match it. */
50
+ backtrackTargetGitHead?: string;
51
+ expectedAction?: string;
52
+ /** Criteria still open when this prompt was compiled. */
53
+ remainingCriteria?: string[];
43
54
  actualEvidence: ProviderSnapshot[];
44
55
  }
45
56
  export interface RoundTransactionOutcome {
@@ -60,7 +71,7 @@ export declare class RoundTransactionCoordinator {
60
71
  private readonly engine;
61
72
  private readonly backend;
62
73
  private readonly commitStore;
63
- constructor(engine: LoopForgeEngine, backend?: VaultBackend, commitStore?: RoundCommitStore);
74
+ constructor(engine: RuntimeServices, backend?: LoopStore, commitStore?: RoundCommitStore);
64
75
  process(input: RoundTransactionInput): RoundTransactionOutcome;
65
76
  /** Recover an already committed decision without evaluating or writing. */
66
77
  recover(snapshot: RoundTransactionSnapshot): RoundTransactionOutcome | null;
@@ -1 +1 @@
1
- {"version":3,"file":"round-transaction.d.ts","sourceRoot":"","sources":["../src/round-transaction.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,eAAO,MAAM,gCAAgC,EAAG,CAAU,CAAC;AAE3D,MAAM,MAAM,qBAAqB,GAC7B,UAAU,GACV,UAAU,GACV,WAAW,GACX,UAAU,GACV,WAAW,GACX,YAAY,CAAC;AAEjB,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,OAAO,gCAAgC,CAAC;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,qBAAqB,CAAC;IAC7B,cAAc,EAAE,gBAAgB,EAAE,CAAC;IACnC,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACnC,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACnC,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,cAAc,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,OAAO,EAAE,CAAC;IAC7B,cAAc,EAAE,gBAAgB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,wEAAwE;IACxE,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKjE;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,gBAAgB,EAAE,EAClC,cAAc,CAAC,EAAE,cAAc,GAC9B,wBAAwB,CAc1B;AAED;;yEAEyE;AACzE,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,wBAAwB,EAClC,cAAc,EAAE,cAAc,GAC7B,wBAAwB,CAyB1B;AA8BD,wEAAwE;AACxE,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,GACb,wBAAwB,GAAG,IAAI,CA8CjC;AAED,qBAAa,2BAA2B;IAKpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;gBAG5B,MAAM,EAAE,eAAe,EACxC,OAAO,CAAC,EAAE,YAAY,EACtB,WAAW,CAAC,EAAE,gBAAgB;IAMhC,OAAO,CAAC,KAAK,EAAE,qBAAqB,GAAG,uBAAuB;IA0G9D,2EAA2E;IAC3E,OAAO,CAAC,QAAQ,EAAE,wBAAwB,GAAG,uBAAuB,GAAG,IAAI;IAY3E,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,gBAAgB;CAczB"}
1
+ {"version":3,"file":"round-transaction.d.ts","sourceRoot":"","sources":["../src/round-transaction.ts"],"names":[],"mappings":"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"}