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,226 @@
1
+ import { createHash } from "node:crypto";
2
+ import { deriveCriterionId, deriveGateId, deriveTextHash } from "./derive-id.js";
3
+ import { isRecord } from "./token-utils.js";
4
+ import { entryRound } from "./token-utils.js";
5
+ const USER_EFFECTS = new Set([
6
+ "production", "credentials", "data_migration", "public_api", "publish",
7
+ "payment", "external_communication",
8
+ ]);
9
+ const USER_RISK = /production|prod\b|credential|secret|permission|publish|release|database migration|schema migration|public api break|rm\s+-rf|reset\s+--hard|send email|payment|生产|上线|凭据|密钥|权限|发布|数据迁移|破坏性/i;
10
+ export function canonicalizeGateAction(action) {
11
+ return JSON.stringify({
12
+ description: action.description.trim(),
13
+ scope: [...action.scope].map((value) => value.trim()).filter(Boolean).sort(),
14
+ effects: [...action.effects].sort(),
15
+ reversibility: action.reversibility,
16
+ authorization: action.authorization,
17
+ });
18
+ }
19
+ export function gateActionHash(action) {
20
+ return createHash("sha256").update(canonicalizeGateAction(action)).digest("hex").slice(0, 16);
21
+ }
22
+ export function deriveStructuredGate(action) {
23
+ const actionHash = gateActionHash(action);
24
+ const highRisk = action.authorization === "user_required" ||
25
+ action.reversibility === "irreversible" ||
26
+ action.reversibility === "unknown" ||
27
+ action.effects.some((effect) => USER_EFFECTS.has(effect));
28
+ const userGate = highRisk || action.authorization === "unknown" || action.effects.length === 0;
29
+ return {
30
+ id: `gate-${actionHash}`,
31
+ actionHash,
32
+ gate: userGate
33
+ ? {
34
+ kind: "user",
35
+ question: `Authorize this action: ${action.description}`,
36
+ blockedScope: action.scope.length ? action.scope : [action.description],
37
+ allowedWork: ["Read-only investigation", "Local dry-run", "Prepare verification and rollback evidence"],
38
+ }
39
+ : {
40
+ kind: "agent",
41
+ problem: action.description,
42
+ requiredEvidence: action.scope,
43
+ suggestedResolution: "Resolve the technical blocker and submit concrete evidence in RoundReport.",
44
+ },
45
+ };
46
+ }
47
+ export function deriveGate(action, scope = []) {
48
+ if (typeof action !== "string")
49
+ return deriveStructuredGate(action);
50
+ const normalized = [action, ...scope].join("\n").trim();
51
+ const id = deriveGateId(normalized);
52
+ const gate = USER_RISK.test(normalized)
53
+ ? {
54
+ kind: "user",
55
+ question: `Authorize this high-risk action: ${action}`,
56
+ blockedScope: scope.length ? scope : [action],
57
+ allowedWork: ["Read-only investigation", "Local dry-run", "Prepare verification and rollback evidence"],
58
+ }
59
+ : {
60
+ kind: "agent",
61
+ problem: action,
62
+ requiredEvidence: scope,
63
+ suggestedResolution: "Resolve the technical blocker and submit concrete evidence in RoundReport.",
64
+ };
65
+ return { id, gate };
66
+ }
67
+ function report(entry) {
68
+ return isRecord(entry.round_report) ? entry.round_report : null;
69
+ }
70
+ /**
71
+ * Replay events in a deterministic logical order. Backends are allowed to
72
+ * return entries in different physical orders, so insertion order cannot be
73
+ * used to decide which gate decision or verification result wins.
74
+ * Shared with the policy-metrics replay path, which must fold events in the
75
+ * same order as the audit.
76
+ */
77
+ export function auditOrder(entries) {
78
+ return entries
79
+ .map((entry, index) => ({ entry, index }))
80
+ .sort((left, right) => {
81
+ const leftSequence = left.entry.event_sequence;
82
+ const rightSequence = right.entry.event_sequence;
83
+ if (typeof leftSequence === "number" && typeof rightSequence === "number" && leftSequence !== rightSequence) {
84
+ return leftSequence - rightSequence;
85
+ }
86
+ const roundDiff = entryRound(left.entry) - entryRound(right.entry);
87
+ if (roundDiff !== 0)
88
+ return roundDiff;
89
+ const timeLeft = Date.parse(left.entry.timestamp ?? "");
90
+ const timeRight = Date.parse(right.entry.timestamp ?? "");
91
+ const validLeft = Number.isFinite(timeLeft);
92
+ const validRight = Number.isFinite(timeRight);
93
+ if (validLeft && validRight && timeLeft !== timeRight) {
94
+ return timeLeft - timeRight;
95
+ }
96
+ if (validLeft !== validRight)
97
+ return validLeft ? -1 : 1;
98
+ const key = (entry) => [
99
+ entry.task_type ?? "",
100
+ entry.task_id ?? entry.id ?? "",
101
+ entry.gate_id ?? "",
102
+ entry.approved === true ? "1" : entry.approved === false ? "0" : "",
103
+ ].join("\u0000");
104
+ const keyDiff = key(left.entry).localeCompare(key(right.entry));
105
+ return keyDiff !== 0 ? keyDiff : left.index - right.index;
106
+ })
107
+ .map(({ entry }) => entry);
108
+ }
109
+ /** Read-only, replayable audit derived from accepted vault events. */
110
+ export function auditEntries(loopId, entries) {
111
+ const orderedEntries = auditOrder(entries);
112
+ const objectiveEntry = [...orderedEntries].reverse().find((entry) => isRecord(entry.loop_objective));
113
+ const objective = objectiveEntry && isRecord(objectiveEntry.loop_objective)
114
+ ? objectiveEntry.loop_objective
115
+ : null;
116
+ const declared = objective && Array.isArray(objective.success_criteria)
117
+ ? objective.success_criteria.filter((value) => typeof value === "string")
118
+ : [];
119
+ const evidenced = new Set();
120
+ const passed = new Set();
121
+ const failed = new Set();
122
+ const unavailable = new Set();
123
+ const evidenceRefs = new Set();
124
+ const gateState = new Map();
125
+ const obligations = new Map();
126
+ const criterionByTarget = new Map();
127
+ for (const criterion of declared) {
128
+ const normalized = criterion.trim().replace(/\s+/g, " ").toLowerCase();
129
+ criterionByTarget.set(normalized, criterion);
130
+ criterionByTarget.set(deriveCriterionId(normalized), criterion);
131
+ }
132
+ for (const entry of orderedEntries) {
133
+ if (entry.task_type === "gate_decision" && typeof entry.gate_id === "string") {
134
+ gateState.set(entry.gate_id, entry.approved === true);
135
+ }
136
+ if (entry.task_type === "gate_opened" && typeof entry.gate_id === "string") {
137
+ if (!gateState.has(entry.gate_id))
138
+ gateState.set(entry.gate_id, false);
139
+ }
140
+ const value = report(entry);
141
+ const evidence = value && isRecord(value.evidence) ? value.evidence : null;
142
+ if (value && isRecord(value.blocker) && typeof value.blocker.reason === "string") {
143
+ const refs = Array.isArray(value.blocker.references)
144
+ ? value.blocker.references.filter((ref) => typeof ref === "string")
145
+ : [];
146
+ const derived = isRecord(value.blocker.action)
147
+ ? deriveStructuredGate(value.blocker.action)
148
+ : deriveGate(value.blocker.reason, refs);
149
+ if (derived.gate.kind === "user" && !gateState.has(derived.id)) {
150
+ gateState.set(derived.id, false);
151
+ }
152
+ }
153
+ if (!evidence)
154
+ continue;
155
+ const provenance = isRecord(evidence.provenance) ? evidence.provenance : {};
156
+ if (Array.isArray(evidence.claims)) {
157
+ for (const raw of evidence.claims) {
158
+ if (!isRecord(raw) || typeof raw.targetId !== "string" || !Array.isArray(raw.evidenceRefs) || raw.evidenceRefs.length === 0)
159
+ continue;
160
+ const refs = raw.evidenceRefs.filter((ref) => typeof ref === "string");
161
+ const verified = refs.some((ref) => isRecord(provenance[ref]) &&
162
+ provenance[ref].status === "verified" && provenance[ref].source !== "agent");
163
+ if (verified) {
164
+ const normalizedTarget = raw.targetId.trim().replace(/\s+/g, " ").toLowerCase();
165
+ evidenced.add(criterionByTarget.get(normalizedTarget) ?? raw.targetId.trim());
166
+ }
167
+ for (const ref of refs)
168
+ evidenceRefs.add(ref);
169
+ }
170
+ }
171
+ if (Array.isArray(evidence.checks)) {
172
+ for (const raw of evidence.checks) {
173
+ if (!isRecord(raw) || typeof raw.name !== "string")
174
+ continue;
175
+ const checkProvenance = provenance[`check:${raw.name}`];
176
+ const evidenceStatus = isRecord(checkProvenance)
177
+ ? checkProvenance.status
178
+ : "unavailable";
179
+ const id = `reg-${deriveTextHash(raw.name, 12)}`;
180
+ const sourceRound = entryRound(entry);
181
+ if (raw.status === "passed" && evidenceStatus === "verified") {
182
+ passed.add(raw.name);
183
+ failed.delete(raw.name);
184
+ unavailable.delete(raw.name);
185
+ obligations.set(raw.name, { id, check: raw.name, sourceRound, status: "satisfied" });
186
+ }
187
+ else if (raw.status === "failed" || evidenceStatus === "contradicted") {
188
+ failed.add(raw.name);
189
+ passed.delete(raw.name);
190
+ unavailable.delete(raw.name);
191
+ obligations.set(raw.name, { id, check: raw.name, sourceRound, status: "contradicted" });
192
+ }
193
+ else {
194
+ unavailable.add(raw.name);
195
+ passed.delete(raw.name);
196
+ obligations.set(raw.name, { id, check: raw.name, sourceRound, status: "open" });
197
+ }
198
+ }
199
+ }
200
+ }
201
+ const missing = declared.filter((criterion) => !evidenced.has(criterion));
202
+ const unresolvedUserGates = [...gateState].filter(([, approved]) => !approved).map(([id]) => id);
203
+ const verdict = failed.size > 0 ? "contradicted"
204
+ : missing.length || unresolvedUserGates.length || unavailable.size ? "incomplete"
205
+ : "passed";
206
+ const sequences = entries.map((entry) => entry.event_sequence);
207
+ const sequenceValues = sequences.filter((value) => typeof value === "number" && Number.isInteger(value) && value > 0);
208
+ const sequenceSet = new Set(sequenceValues);
209
+ const sequenceComplete = entries.length === 0
210
+ || (sequenceValues.length === entries.length
211
+ && sequenceSet.size === entries.length
212
+ && Math.min(...sequenceValues) === 1
213
+ && Math.max(...sequenceValues) === entries.length
214
+ && entries.every((entry) => entry.loop_id === undefined || entry.loop_id === loopId));
215
+ return {
216
+ loopId,
217
+ verdict,
218
+ criteria: { declared, evidenced: [...evidenced].sort(), missing },
219
+ checks: { passed: [...passed].sort(), failed: [...failed].sort(), unavailable: [...unavailable].sort() },
220
+ unresolvedUserGates,
221
+ sequenceComplete,
222
+ evidenceRefs: [...evidenceRefs].sort(),
223
+ regressionObligations: [...obligations.values()].sort((a, b) => a.check.localeCompare(b.check)),
224
+ };
225
+ }
226
+ //# sourceMappingURL=cognitive-governance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cognitive-governance.js","sourceRoot":"","sources":["../src/cognitive-governance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { CompilerRoundProjection, SubGoal } from "./protocol.js";
2
+ type Entry = Record<string, unknown>;
3
+ type EntryProjection = (entry: Entry) => CompilerRoundProjection | null;
4
+ /** Derive the complete SubGoal lifecycle from prior entries and this projection. */
5
+ export declare function manageSubGoals(loopId: string, currentRound: number, lastRoundResult: CompilerRoundProjection | null, vaultContext: Record<string, unknown> | null, project: EntryProjection): SubGoal[];
6
+ export {};
7
+ //# sourceMappingURL=compiler-subgoals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler-subgoals.d.ts","sourceRoot":"","sources":["../src/compiler-subgoals.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAItE,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACrC,KAAK,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,uBAAuB,GAAG,IAAI,CAAC;AAoBxE,oFAAoF;AACpF,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,uBAAuB,GAAG,IAAI,EAC/C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EAC5C,OAAO,EAAE,eAAe,GACvB,OAAO,EAAE,CAwDX"}
@@ -0,0 +1,93 @@
1
+ import { deriveSubGoalId } from "./derive-id.js";
2
+ import { getPolicy } from "./policy.js";
3
+ import { makeSubGoal } from "./protocol.js";
4
+ import { jaccardSimilarity, entryRound } from "./token-utils.js";
5
+ function lineage(entry) {
6
+ const value = entry.loop_lineage;
7
+ return value !== null && typeof value === "object" && !Array.isArray(value) ? value : {};
8
+ }
9
+ function matchSubGoal(target, subGoals, threshold) {
10
+ const trimmed = target.trim();
11
+ const exact = subGoals.findIndex((goal) => goal.id === trimmed);
12
+ if (exact >= 0)
13
+ return exact;
14
+ let bestIdx = -1;
15
+ let bestScore = 0;
16
+ for (let i = 0; i < subGoals.length; i++) {
17
+ const score = jaccardSimilarity(trimmed, subGoals[i].description);
18
+ if (score > bestScore) {
19
+ bestScore = score;
20
+ bestIdx = i;
21
+ }
22
+ }
23
+ return bestScore >= threshold ? bestIdx : -1;
24
+ }
25
+ /** Derive the complete SubGoal lifecycle from prior entries and this projection. */
26
+ export function manageSubGoals(loopId, currentRound, lastRoundResult, vaultContext, project) {
27
+ const policy = getPolicy().evolution;
28
+ const entries = vaultContext && Array.isArray(vaultContext.results)
29
+ ? vaultContext.results.filter((value) => {
30
+ if (value === null || typeof value !== "object" || Array.isArray(value))
31
+ return false;
32
+ const entry = value;
33
+ return entry.loop_id === loopId || lineage(entry).loop_id === loopId;
34
+ })
35
+ : [];
36
+ const subGoals = [];
37
+ for (const entry of entries.filter((item) => entryRound(item) >= 1 && entryRound(item) < currentRound)) {
38
+ const descriptions = project(entry)?.discoveries?.emergedWork ?? [];
39
+ for (const description of descriptions) {
40
+ if (matchSubGoal(description, subGoals, policy.subgoal_dedup_threshold) >= 0)
41
+ continue;
42
+ const round = entryRound(entry);
43
+ subGoals.push(makeSubGoal({ id: deriveSubGoalId(description), description: description.trim(), status: "pending", declared_at_round: round, status_changed_at_round: round, priority: subGoals.length }));
44
+ }
45
+ }
46
+ if (lastRoundResult) {
47
+ const round = lastRoundResult.round || currentRound - 1;
48
+ for (const description of lastRoundResult.discoveries?.emergedWork ?? []) {
49
+ if (matchSubGoal(description, subGoals, policy.subgoal_dedup_threshold) >= 0)
50
+ continue;
51
+ subGoals.push(makeSubGoal({ id: deriveSubGoalId(description), description: description.trim(), status: "pending", declared_at_round: round, status_changed_at_round: round, priority: subGoals.length }));
52
+ }
53
+ const update = (items, status) => {
54
+ for (const description of items) {
55
+ const index = matchSubGoal(description, subGoals, policy.subgoal_match_threshold);
56
+ if (index < 0)
57
+ continue;
58
+ const goal = subGoals[index];
59
+ if (goal.status === "done" || goal.status === "canceled")
60
+ continue;
61
+ goal.status = status;
62
+ goal.status_changed_at_round = round;
63
+ if (status === "done")
64
+ goal.completed_at_round = round;
65
+ }
66
+ };
67
+ update(lastRoundResult.subGoalEvents?.completed ?? [], "done");
68
+ update(lastRoundResult.subGoalEvents?.blocked ?? [], "blocked");
69
+ update(lastRoundResult.subGoalEvents?.canceled ?? [], "canceled");
70
+ for (const goal of subGoals) {
71
+ if (goal.status !== "pending" && goal.status !== "in_progress")
72
+ continue;
73
+ if ((lastRoundResult.evidence?.criteriaMet ?? []).some((criterion) => jaccardSimilarity(criterion, goal.description) >= policy.subgoal_auto_complete_threshold)) {
74
+ goal.status = "done";
75
+ goal.status_changed_at_round = round;
76
+ goal.completed_at_round = round;
77
+ }
78
+ }
79
+ }
80
+ const rank = (status) => ({ in_progress: 0, pending: 1, blocked: 2, done: 3, canceled: 4 }[status]);
81
+ subGoals.sort((a, b) => {
82
+ const byStatus = rank(a.status) - rank(b.status);
83
+ if (byStatus !== 0)
84
+ return byStatus;
85
+ if (a.status === "pending")
86
+ return (currentRound - a.declared_at_round) - (currentRound - b.declared_at_round);
87
+ if (a.status === "done")
88
+ return (b.completed_at_round ?? 0) - (a.completed_at_round ?? 0);
89
+ return a.declared_at_round - b.declared_at_round;
90
+ });
91
+ return subGoals;
92
+ }
93
+ //# sourceMappingURL=compiler-subgoals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler-subgoals.js","sourceRoot":"","sources":["../src/compiler-subgoals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /** Stable text normalization shared by every persisted cognitive ID. */
2
+ export declare function normalizeIdText(text: string): string;
3
+ /** Preserve the historical hash lengths by making the length explicit. */
4
+ export declare function deriveTextHash(text: string, length?: number): string;
5
+ export declare function deriveItemId(text: string): string;
6
+ export declare function deriveSubGoalId(text: string): string;
7
+ export declare function deriveConstraintId(text: string): string;
8
+ export declare function deriveCriterionId(text: string): string;
9
+ export declare function deriveGateId(text: string): string;
10
+ export declare function deriveTodoId(text: string): string;
11
+ export declare function isStableItemId(value: string): boolean;
12
+ //# sourceMappingURL=derive-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive-id.d.ts","sourceRoot":"","sources":["../src/derive-id.ts"],"names":[],"mappings":"AAEA,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,MAAM,CAEhE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAErD"}
@@ -0,0 +1,31 @@
1
+ import { createHash } from "node:crypto";
2
+ /** Stable text normalization shared by every persisted cognitive ID. */
3
+ export function normalizeIdText(text) {
4
+ return text.trim().replace(/\s+/g, " ").toLowerCase();
5
+ }
6
+ /** Preserve the historical hash lengths by making the length explicit. */
7
+ export function deriveTextHash(text, length = 12) {
8
+ return createHash("sha256").update(normalizeIdText(text)).digest("hex").slice(0, length);
9
+ }
10
+ export function deriveItemId(text) {
11
+ return deriveTextHash(text, 8);
12
+ }
13
+ export function deriveSubGoalId(text) {
14
+ return `sg-${deriveTextHash(text, 8)}`;
15
+ }
16
+ export function deriveConstraintId(text) {
17
+ return `c-${deriveTextHash(text, 8)}`;
18
+ }
19
+ export function deriveCriterionId(text) {
20
+ return `cr-${deriveTextHash(text, 8)}`;
21
+ }
22
+ export function deriveGateId(text) {
23
+ return `gate-${deriveTextHash(text, 12)}`;
24
+ }
25
+ export function deriveTodoId(text) {
26
+ return `todo-${deriveTextHash(text, 8)}`;
27
+ }
28
+ export function isStableItemId(value) {
29
+ return /^(?:c|cr|sg)-[a-f0-9]{8}$/i.test(value);
30
+ }
31
+ //# sourceMappingURL=derive-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive-id.js","sourceRoot":"","sources":["../src/derive-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,wEAAwE;AACxE,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AACxD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,MAAM,GAAG,EAAE;IACtD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,KAAK,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,QAAQ,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,QAAQ,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC"}
@@ -5,7 +5,7 @@
5
5
  * can be added without touching the verification pipeline.
6
6
  *
7
7
  * Built-in provider: GitEvidenceProvider — git file state capture with
8
- * parallel async execution (v2.0.1) and a synchronous fallback.
8
+ * parallel async execution.
9
9
  */
10
10
  import type { CommandEvidencePolicy } from "./policy.js";
11
11
  /** A snapshot of evidence captured by a single provider. */
@@ -19,6 +19,12 @@ export interface ProviderSnapshot {
19
19
  files: string[];
20
20
  /** Provider-specific structured data. */
21
21
  data: Record<string, unknown>;
22
+ /**
23
+ * Explicitly declares that this provider can verify claims. Providers that
24
+ * only report observations must leave this unset; their snapshots are
25
+ * never promoted to runtime-verified evidence.
26
+ */
27
+ claimCapable?: boolean;
22
28
  }
23
29
  /** Interface for evidence capture providers.
24
30
  *
@@ -39,6 +45,11 @@ export interface EvidenceProvider {
39
45
  * (e.g. git not installed, no test config found). */
40
46
  capture(context?: EvidenceCaptureContext): EvidenceCaptureResult;
41
47
  }
48
+ /** Raised when the synchronous collector is asked to run an async provider. */
49
+ export declare class AsyncEvidenceProviderError extends Error {
50
+ readonly code: "async_provider_requires_collect_async";
51
+ constructor(provider: string);
52
+ }
42
53
  export interface EvidenceCollectOptions {
43
54
  timeoutMs?: number;
44
55
  loopId?: string;
@@ -52,7 +63,7 @@ export declare function unregisterEvidenceProvider(name: string): boolean;
52
63
  *
53
64
  * Usage:
54
65
  * const collector = new EvidenceCollector([new GitEvidenceProvider()]);
55
- * const snapshots = collector.collect();
66
+ * const snapshots = await collector.collectAsync();
56
67
  * // snapshots = [{ provider: "git", files: [...], data: {...} }]
57
68
  */
58
69
  export declare class EvidenceCollector {
@@ -63,9 +74,13 @@ export declare class EvidenceCollector {
63
74
  static fromProviderNames(providerNames: string[]): EvidenceCollector;
64
75
  /** Build built-ins and explicitly configured command providers. */
65
76
  static fromPolicy(): EvidenceCollector;
66
- /** Run all providers and return non-null snapshots.
67
- * Providers that return null (e.g. git not available) are silently
68
- * skipped — the caller handles missing evidence. */
77
+ /** Run synchronous providers and return their non-null snapshots.
78
+ *
79
+ * The built-in Git provider is asynchronous. Callers that may include
80
+ * asynchronous providers must use collectAsync(); silently treating an
81
+ * async provider as unavailable would turn a caller limitation into a
82
+ * misleading evidence result.
83
+ */
69
84
  collect(options?: EvidenceCollectOptions): ProviderSnapshot[];
70
85
  /** Capture all providers concurrently with per-provider timeout isolation. */
71
86
  collectAsync(options?: EvidenceCollectOptions): Promise<ProviderSnapshot[]>;
@@ -116,25 +131,12 @@ export interface GitFileState {
116
131
  * On a normal repo (~200ms/command): ~200ms vs ~600ms sequential.
117
132
  * On Windows with antivirus (~4s/command): ~4s vs ~12s sequential. */
118
133
  export declare function captureGitFileStateAsync(signal?: AbortSignal, timeoutMs?: number): Promise<GitFileState | null>;
119
- /** v1.17 (sync): Capture git file state using sequential execFileSync.
120
- *
121
- * @deprecated Use captureGitFileStateAsync() for the primary path.
122
- * This sync fallback exists for legacy callers that cannot be made async
123
- * (e.g. reconstructSession during startup). Uses execFileSync — shell-free,
124
- * unlike the old execSync-based implementation. */
125
- export declare function captureGitFileState(): GitFileState | null;
126
- /** Captures git file state (tracked, staged, untracked) via the async
127
- * captureGitFileStateAsync() when a context is provided, falling back
128
- * to the synchronous captureGitFileState() for legacy callers. */
134
+ /** Captures git file state (tracked, staged, untracked) via the async provider. */
129
135
  export declare class GitEvidenceProvider implements EvidenceProvider {
130
136
  readonly name = "git";
131
- capture(context?: EvidenceCaptureContext): ProviderSnapshot | null | Promise<ProviderSnapshot | null>;
137
+ capture(context?: EvidenceCaptureContext): Promise<ProviderSnapshot | null>;
132
138
  }
133
- /** Extract merged file list from evidence snapshots for backward compat
134
- * with runtimeFilesChanged (string[] | null).
135
- *
136
- * Looks for the "git" provider first; falls back to merging all
137
- * providers' files arrays (deduplicated). */
139
+ /** Extract the merged file list from provider snapshots for read-only views. */
138
140
  export declare function extractFilesFromSnapshots(snapshots: ProviderSnapshot[]): string[] | null;
139
141
  /** Return provider snapshots narrowed to evidence produced during this round.
140
142
  * The full provider payload remains available in data, while files contains
@@ -1 +1 @@
1
- {"version":3,"file":"evidence-provider.d.ts","sourceRoot":"","sources":["../src/evidence-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evidence-provider.d.ts","sourceRoot":"","sources":["../src/evidence-provider.ts"],"names":[],"mappings":"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"}