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
@@ -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,15 +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[];
43
42
  /** v2.12: Current clarification streak for R7 escalation. */
44
43
  driftClarificationStreak?: number;
44
+ /** Terminal enforcement checks that already consumed their guided retry. */
45
+ escalatedRejectionChecks?: string[];
45
46
  /** v2.13: Files from skipped backtrack rounds for restore check. */
46
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[];
47
54
  actualEvidence: ProviderSnapshot[];
48
55
  }
49
56
  export interface RoundTransactionOutcome {
@@ -64,7 +71,7 @@ export declare class RoundTransactionCoordinator {
64
71
  private readonly engine;
65
72
  private readonly backend;
66
73
  private readonly commitStore;
67
- constructor(engine: LoopForgeEngine, backend?: VaultBackend, commitStore?: RoundCommitStore);
74
+ constructor(engine: RuntimeServices, backend?: LoopStore, commitStore?: RoundCommitStore);
68
75
  process(input: RoundTransactionInput): RoundTransactionOutcome;
69
76
  /** Recover an already committed decision without evaluating or writing. */
70
77
  recover(snapshot: RoundTransactionSnapshot): RoundTransactionOutcome | null;
@@ -1 +1 @@
1
- {"version":3,"file":"round-transaction.d.ts","sourceRoot":"","sources":["../src/round-transaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"round-transaction.d.ts","sourceRoot":"","sources":["../src/round-transaction.ts"],"names":[],"mappings":"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"}