loopforge 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/backends/interface.d.ts +4 -3
  2. package/dist/backends/interface.d.ts.map +1 -1
  3. package/dist/backends/interface.js +4 -1
  4. package/dist/backends/interface.js.map +1 -1
  5. package/dist/cli.js +1 -1
  6. package/dist/cli.js.map +1 -1
  7. package/dist/engine.d.ts +2 -24
  8. package/dist/engine.d.ts.map +1 -1
  9. package/dist/engine.js +72 -238
  10. package/dist/engine.js.map +1 -1
  11. package/dist/evidence-provider.d.ts +38 -5
  12. package/dist/evidence-provider.d.ts.map +1 -1
  13. package/dist/evidence-provider.js +131 -38
  14. package/dist/evidence-provider.js.map +1 -1
  15. package/dist/index.d.ts +3 -5
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +1 -4
  18. package/dist/index.js.map +1 -1
  19. package/dist/interop.d.ts +5 -0
  20. package/dist/interop.d.ts.map +1 -1
  21. package/dist/interop.js +5 -0
  22. package/dist/interop.js.map +1 -1
  23. package/dist/loop-compiler.d.ts.map +1 -1
  24. package/dist/loop-compiler.js +4 -2
  25. package/dist/loop-compiler.js.map +1 -1
  26. package/dist/loop-extras-parser.d.ts +82 -0
  27. package/dist/loop-extras-parser.d.ts.map +1 -0
  28. package/dist/loop-extras-parser.js +217 -0
  29. package/dist/loop-extras-parser.js.map +1 -0
  30. package/dist/loop-store.d.ts +26 -4
  31. package/dist/loop-store.d.ts.map +1 -1
  32. package/dist/loop-store.js +96 -7
  33. package/dist/loop-store.js.map +1 -1
  34. package/dist/mcp/server.js +1 -1
  35. package/dist/mcp/session.d.ts +27 -2
  36. package/dist/mcp/session.d.ts.map +1 -1
  37. package/dist/mcp/session.js +166 -117
  38. package/dist/mcp/session.js.map +1 -1
  39. package/dist/mcp/tools.d.ts.map +1 -1
  40. package/dist/mcp/tools.js +1 -0
  41. package/dist/mcp/tools.js.map +1 -1
  42. package/dist/policy.d.ts +0 -8
  43. package/dist/policy.d.ts.map +1 -1
  44. package/dist/policy.js +1 -9
  45. package/dist/policy.js.map +1 -1
  46. package/dist/prompt-assembler.d.ts.map +1 -1
  47. package/dist/prompt-assembler.js +25 -4
  48. package/dist/prompt-assembler.js.map +1 -1
  49. package/dist/protocol.d.ts +2 -74
  50. package/dist/protocol.d.ts.map +1 -1
  51. package/dist/protocol.js +0 -26
  52. package/dist/protocol.js.map +1 -1
  53. package/dist/round-coordinator.d.ts +4 -4
  54. package/dist/round-coordinator.js +4 -4
  55. package/dist/self-eval.d.ts +26 -0
  56. package/dist/self-eval.d.ts.map +1 -0
  57. package/dist/self-eval.js +154 -0
  58. package/dist/self-eval.js.map +1 -0
  59. package/dist/storage.d.ts +3 -2
  60. package/dist/storage.d.ts.map +1 -1
  61. package/dist/storage.js +57 -65
  62. package/dist/storage.js.map +1 -1
  63. package/dist/verification-gate.d.ts +16 -18
  64. package/dist/verification-gate.d.ts.map +1 -1
  65. package/dist/verification-gate.js +149 -94
  66. package/dist/verification-gate.js.map +1 -1
  67. package/loop_policy.json +1 -9
  68. package/package.json +1 -1
  69. package/dist/runtime.d.ts +0 -94
  70. package/dist/runtime.d.ts.map +0 -1
  71. package/dist/runtime.js +0 -718
  72. package/dist/runtime.js.map +0 -1
package/dist/protocol.js CHANGED
@@ -195,32 +195,6 @@ export function makeSessionState(taskId) {
195
195
  feedback_buffer: [],
196
196
  };
197
197
  }
198
- // ── Runtime types (v1.2) ──────────────────────────────────────────────────────
199
- export var RuntimeStatus;
200
- (function (RuntimeStatus) {
201
- RuntimeStatus["IDLE"] = "idle";
202
- RuntimeStatus["RUNNING"] = "running";
203
- RuntimeStatus["STOPPED"] = "stopped";
204
- RuntimeStatus["STALLED"] = "stalled";
205
- /** v1.18: Loop is suspended — can be resumed from currentRound. */
206
- RuntimeStatus["PAUSED"] = "paused";
207
- })(RuntimeStatus || (RuntimeStatus = {}));
208
- /** Map StopReason (internal) → MemoryWriteback outcome (wire format).
209
- * Shared between runtime.ts and mcp/session.ts — single source of truth. */
210
- const LEGACY_STOP_REASON_OUTCOME_MAP = {
211
- completed: "completed",
212
- failed: "failed",
213
- blocked: "blocked",
214
- cancelled: "cancelled",
215
- circuit_breaker: "circuit_breaker",
216
- stalled: "stalled",
217
- max_rounds: "max_rounds",
218
- executor_failure: "failed",
219
- enforcement_terminated: "enforcement_terminated",
220
- paused: "paused",
221
- task_complete: "completed",
222
- stopped: "cancelled",
223
- };
224
198
  export function makeEnforcementResult(overrides = {}) {
225
199
  return {
226
200
  action: "accept",
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /** RoundCoordinator — Unified round-boundary state machine (v1.17).
2
2
  *
3
- * Encapsulates the shared round processing pipeline used by both
4
- * LoopRuntime (runtime.ts) and SessionManager (mcp/session.ts):
3
+ * Encapsulates the shared round processing pipeline used by
4
+ * SessionManager (mcp/session.ts):
5
5
  *
6
6
  * verify → enforce → stop decision
7
7
  *
@@ -77,8 +77,8 @@ export declare class RoundCoordinator {
77
77
  /** Process a single round's self-evaluation through the decision pipeline:
78
78
  * verify → enforce → stop decision.
79
79
  *
80
- * This is the single entry point called by both LoopRuntime and
81
- * SessionManager. The caller is responsible for:
80
+ * This is the single entry point called by SessionManager.
81
+ * The caller is responsible for:
82
82
  * - Compiling the next prompt (if action is "continue")
83
83
  * - Managing heartbeat / signal handlers (runtime only)
84
84
  * - Memory injection (both paths, before calling processRound)
@@ -1,7 +1,7 @@
1
1
  /** RoundCoordinator — Unified round-boundary state machine (v1.17).
2
2
  *
3
- * Encapsulates the shared round processing pipeline used by both
4
- * LoopRuntime (runtime.ts) and SessionManager (mcp/session.ts):
3
+ * Encapsulates the shared round processing pipeline used by
4
+ * SessionManager (mcp/session.ts):
5
5
  *
6
6
  * verify → enforce → stop decision
7
7
  *
@@ -30,8 +30,8 @@ export class RoundCoordinator {
30
30
  /** Process a single round's self-evaluation through the decision pipeline:
31
31
  * verify → enforce → stop decision.
32
32
  *
33
- * This is the single entry point called by both LoopRuntime and
34
- * SessionManager. The caller is responsible for:
33
+ * This is the single entry point called by SessionManager.
34
+ * The caller is responsible for:
35
35
  * - Compiling the next prompt (if action is "continue")
36
36
  * - Managing heartbeat / signal handlers (runtime only)
37
37
  * - Memory injection (both paths, before calling processRound)
@@ -0,0 +1,26 @@
1
+ /** Self-evaluation extraction and parsing — pure functions.
2
+ *
3
+ * These functions parse an Agent's raw output into a structured
4
+ * SelfEvaluation. They have no dependency on Engine state, file I/O,
5
+ * or external services. They are shared by both the MCP tool handler
6
+ * (which receives structured JSON directly) and the legacy invoke
7
+ * path (which regex-scans free-text Agent output).
8
+ */
9
+ import { type CriterionRevision, type ExecutionEvidence, type SelfEvaluation } from "./protocol.js";
10
+ /** Parse ExecutionEvidence from a raw JSON object. */
11
+ export declare function parseExecutionEvidence(raw: Record<string, unknown> | undefined | null): ExecutionEvidence | undefined;
12
+ /** Parse CriterionRevision[] from a raw JSON array. */
13
+ export declare function parseCriterionRevisions(raw: unknown): CriterionRevision[];
14
+ /** Parse WorkerResult[] from a raw JSON array. */
15
+ export declare function parseWorkerResults(raw: unknown): import("./protocol.js").WorkerResult[];
16
+ /** Extract a structured SelfEvaluation from agent output text.
17
+ * Returns null if no valid self-eval block is found.
18
+ * The agent is instructed to output JSON between the delimiters. */
19
+ export declare function extractSelfEvaluation(text: string): SelfEvaluation | null;
20
+ /** Build a SelfEvaluation from a parsed JSON object.
21
+ * Lenient parsing: missing optional fields get sensible defaults. */
22
+ export declare function buildSelfEvaluation(raw: Record<string, unknown>): SelfEvaluation;
23
+ /** Fallback heuristic when structured self-eval extraction fails.
24
+ * Scans agent output for completion and error signals. */
25
+ export declare function heuristicSelfEvaluation(text: string): SelfEvaluation | null;
26
+ //# sourceMappingURL=self-eval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-eval.d.ts","sourceRoot":"","sources":["../src/self-eval.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAIvB,sDAAsD;AACtD,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,GAC9C,iBAAiB,GAAG,SAAS,CAwB/B;AAED,uDAAuD;AACvD,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,GACX,iBAAiB,EAAE,CAWrB;AAED,kDAAkD;AAClD,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,GACX,OAAO,eAAe,EAAE,YAAY,EAAE,CAqBxC;AAID;;qEAEqE;AACrE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAczE;AAED;sEACsE;AACtE,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,cAAc,CA0ChB;AAED;2DAC2D;AAC3D,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAoB3E"}
@@ -0,0 +1,154 @@
1
+ /** Self-evaluation extraction and parsing — pure functions.
2
+ *
3
+ * These functions parse an Agent's raw output into a structured
4
+ * SelfEvaluation. They have no dependency on Engine state, file I/O,
5
+ * or external services. They are shared by both the MCP tool handler
6
+ * (which receives structured JSON directly) and the legacy invoke
7
+ * path (which regex-scans free-text Agent output).
8
+ */
9
+ import { makeExecutionEvidence, makeSelfEvaluation, SELF_EVAL_REGEX, } from "./protocol.js";
10
+ // ── Raw parsing helpers ───────────────────────────────────────────────────
11
+ /** Parse ExecutionEvidence from a raw JSON object. */
12
+ export function parseExecutionEvidence(raw) {
13
+ if (!raw || typeof raw !== "object")
14
+ return undefined;
15
+ const testResults = raw.test_results;
16
+ return makeExecutionEvidence({
17
+ files_changed: Array.isArray(raw.files_changed)
18
+ ? raw.files_changed.filter((v) => typeof v === "string")
19
+ : [],
20
+ test_results: testResults && typeof testResults.passed === "number"
21
+ ? {
22
+ passed: testResults.passed,
23
+ failed: testResults.failed ?? 0,
24
+ skipped: testResults.skipped ?? 0,
25
+ }
26
+ : null,
27
+ success_criteria_met: Array.isArray(raw.success_criteria_met)
28
+ ? raw.success_criteria_met.filter((v) => typeof v === "string")
29
+ : [],
30
+ success_criteria_remaining: Array.isArray(raw.success_criteria_remaining)
31
+ ? raw.success_criteria_remaining.filter((v) => typeof v === "string")
32
+ : [],
33
+ progress_estimate: typeof raw.progress_estimate === "number"
34
+ ? Math.max(0, Math.min(1, raw.progress_estimate))
35
+ : 0.0,
36
+ });
37
+ }
38
+ /** Parse CriterionRevision[] from a raw JSON array. */
39
+ export function parseCriterionRevisions(raw) {
40
+ if (!Array.isArray(raw))
41
+ return [];
42
+ return raw
43
+ .filter((v) => typeof v === "object" && v !== null &&
44
+ typeof v.old === "string" &&
45
+ typeof v.new === "string")
46
+ .map((v) => {
47
+ const r = v;
48
+ return { old: r.old, new: r.new };
49
+ });
50
+ }
51
+ /** Parse WorkerResult[] from a raw JSON array. */
52
+ export function parseWorkerResults(raw) {
53
+ if (!Array.isArray(raw))
54
+ return [];
55
+ return raw
56
+ .filter((v) => typeof v === "object" && v !== null &&
57
+ typeof v.agentId === "string" &&
58
+ typeof v.subTask === "string" &&
59
+ typeof v.resultSummary === "string")
60
+ .map((v) => {
61
+ const w = v;
62
+ return {
63
+ agentId: w.agentId,
64
+ subAgentType: typeof w.subAgentType === "string" ? w.subAgentType : "general-purpose",
65
+ subTask: w.subTask,
66
+ resultSummary: w.resultSummary,
67
+ success: typeof w.success === "boolean" ? w.success : false,
68
+ discoveredConstraints: Array.isArray(w.discoveredConstraints)
69
+ ? w.discoveredConstraints.filter((c) => typeof c === "string")
70
+ : [],
71
+ };
72
+ });
73
+ }
74
+ // ── Self-evaluation extraction ───────────────────────────────────────────
75
+ /** Extract a structured SelfEvaluation from agent output text.
76
+ * Returns null if no valid self-eval block is found.
77
+ * The agent is instructed to output JSON between the delimiters. */
78
+ export function extractSelfEvaluation(text) {
79
+ const match = text.match(SELF_EVAL_REGEX);
80
+ if (!match)
81
+ return null;
82
+ try {
83
+ const raw = JSON.parse(match[1]);
84
+ if (typeof raw.success !== "boolean")
85
+ return null;
86
+ if (typeof raw.output_summary !== "string")
87
+ return null;
88
+ if (!Array.isArray(raw.constraint_violations))
89
+ return null;
90
+ if (typeof raw.should_continue !== "boolean")
91
+ return null;
92
+ return buildSelfEvaluation(raw);
93
+ }
94
+ catch {
95
+ return null;
96
+ }
97
+ }
98
+ /** Build a SelfEvaluation from a parsed JSON object.
99
+ * Lenient parsing: missing optional fields get sensible defaults. */
100
+ export function buildSelfEvaluation(raw) {
101
+ const executionEvidence = parseExecutionEvidence(raw.execution_evidence);
102
+ const retractedConstraints = Array.isArray(raw.retracted_constraints)
103
+ ? raw.retracted_constraints.filter((v) => typeof v === "string")
104
+ : [];
105
+ const revisedCriteria = parseCriterionRevisions(raw.revised_success_criteria);
106
+ const wrongAssumptions = Array.isArray(raw.wrong_assumptions)
107
+ ? raw.wrong_assumptions.filter((v) => typeof v === "string")
108
+ : [];
109
+ const workerResults = parseWorkerResults(raw.worker_results);
110
+ return makeSelfEvaluation({
111
+ success: typeof raw.success === "boolean" ? raw.success : false,
112
+ output_summary: typeof raw.output_summary === "string" ? raw.output_summary : "",
113
+ constraint_violations: Array.isArray(raw.constraint_violations)
114
+ ? raw.constraint_violations.filter((v) => typeof v === "string")
115
+ : [],
116
+ should_continue: typeof raw.should_continue === "boolean" ? raw.should_continue : true,
117
+ discovered_constraints: Array.isArray(raw.discovered_constraints)
118
+ ? raw.discovered_constraints.filter((v) => typeof v === "string")
119
+ : [],
120
+ objective_refinement: typeof raw.objective_refinement === "string"
121
+ ? raw.objective_refinement
122
+ : "",
123
+ emerged_subtasks: Array.isArray(raw.emerged_subtasks)
124
+ ? raw.emerged_subtasks.filter((v) => typeof v === "string")
125
+ : [],
126
+ execution_evidence: executionEvidence,
127
+ retracted_constraints: retractedConstraints,
128
+ revised_success_criteria: revisedCriteria,
129
+ wrong_assumptions: wrongAssumptions,
130
+ worker_results: workerResults,
131
+ compression_checkpoint: typeof raw.compression_checkpoint === "boolean" ? raw.compression_checkpoint : false,
132
+ checkpoint_label: typeof raw.checkpoint_label === "string" ? raw.checkpoint_label : "",
133
+ next_action: typeof raw.next_action === "string" ? raw.next_action : undefined,
134
+ });
135
+ }
136
+ /** Fallback heuristic when structured self-eval extraction fails.
137
+ * Scans agent output for completion and error signals. */
138
+ export function heuristicSelfEvaluation(text) {
139
+ const lower = text.toLowerCase();
140
+ const hasError = /error|failed|exception|cannot|unable|失败|错误|异常/.test(lower);
141
+ const hasCompletion = /done|complete|finished|完成|成功/.test(lower);
142
+ const hasRemaining = /remaining|continue|still need|next|todo|剩余|继续|下一步/.test(lower);
143
+ const paragraphs = text.split(/\n\n+/).filter((p) => p.trim().length > 30);
144
+ const summary = paragraphs.length > 0
145
+ ? paragraphs[paragraphs.length - 1].trim().slice(0, 300)
146
+ : text.trim().slice(0, 300);
147
+ return makeSelfEvaluation({
148
+ success: !hasError && (hasCompletion || !hasRemaining),
149
+ output_summary: summary || "[heuristic fallback — could not parse structured self-eval]",
150
+ constraint_violations: [],
151
+ should_continue: hasRemaining && !hasError,
152
+ });
153
+ }
154
+ //# sourceMappingURL=self-eval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-eval.js","sourceRoot":"","sources":["../src/self-eval.ts"],"names":[],"mappings":"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"}
package/dist/storage.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  /** Persistence adapters for session state and committed round lookup. */
2
2
  import type { VaultBackend, VaultEntry } from "./backends/interface.js";
3
+ import type { LoopStore } from "./loop-store.js";
3
4
  export interface SessionStateStore {
4
5
  load(loopId: string): VaultEntry | undefined;
5
6
  list(): VaultEntry[];
@@ -20,8 +21,8 @@ export interface RoundCommitStore {
20
21
  find(loopId: string, round: number): VaultEntry[];
21
22
  }
22
23
  export declare class VaultSessionStateStore implements SessionStateStore {
23
- private readonly backend;
24
- constructor(backend: VaultBackend);
24
+ private readonly store;
25
+ constructor(store: LoopStore);
25
26
  load(loopId: string): VaultEntry | undefined;
26
27
  list(): VaultEntry[];
27
28
  save(entry: VaultEntry, options?: SessionSaveOptions): void;
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAexE,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7C,IAAI,IAAI,UAAU,EAAE,CAAC;IACrB,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC5D,YAAY,CAAC,CACX,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,GACX,UAAU,GAAG,SAAS,CAAC;IAC1B,UAAU,CAAC,CACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC;IACX,YAAY,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CACzD;AAED,MAAM,WAAW,kBAAkB;IACjC,yEAAyE;IACzE,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;CAIpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CAAC;CACnD;AAED,qBAAa,sBAAuB,YAAW,iBAAiB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY;IAElD,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAS5C,IAAI,IAAI,UAAU,EAAE;IAMpB,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,kBAAuB,GAAG,IAAI;IAqC/D,YAAY,CACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,GAAG,SAAa,GACf,UAAU,GAAG,SAAS;IAgDzB,UAAU,CACR,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,GAAG,SAAa,GACf,OAAO;IA8BV,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IA+BtD,OAAO,CAAC,OAAO;CAOhB;AAED,qBAAa,qBAAsB,YAAW,gBAAgB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY;IAElD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE;CAMlD"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAuB,MAAM,iBAAiB,CAAC;AAgBtE,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7C,IAAI,IAAI,UAAU,EAAE,CAAC;IACrB,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC5D,YAAY,CAAC,CACX,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,GACX,UAAU,GAAG,SAAS,CAAC;IAC1B,UAAU,CAAC,CACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC;IACX,YAAY,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CACzD;AAED,MAAM,WAAW,kBAAkB;IACjC,yEAAyE;IACzE,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;CAIpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CAAC;CACnD;AAED,qBAAa,sBAAuB,YAAW,iBAAiB;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,SAAS;IAE7C,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAK5C,IAAI,IAAI,UAAU,EAAE;IASpB,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,kBAAuB,GAAG,IAAI;IA2B/D,YAAY,CACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,GAAG,SAAa,GACf,UAAU,GAAG,SAAS;IA6CzB,UAAU,CACR,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,GAAG,SAAa,GACf,OAAO;IA4BV,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IA6BtD,OAAO,CAAC,OAAO;CAOhB;AAED,qBAAa,qBAAsB,YAAW,gBAAgB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY;IAElD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE;CAMlD"}
package/dist/storage.js CHANGED
@@ -1,4 +1,5 @@
1
1
  /** Persistence adapters for session state and committed round lookup. */
2
+ import { LOOP_STORE_SCHEMA_VERSION } from "./loop-store.js";
2
3
  function isLeaseOwnerAlive(ownerId) {
3
4
  const match = ownerId.match(/^(\d+):/);
4
5
  if (!match)
@@ -23,17 +24,22 @@ export class SessionLeaseConflictError extends Error {
23
24
  }
24
25
  }
25
26
  export class VaultSessionStateStore {
26
- backend;
27
- constructor(backend) {
28
- this.backend = backend;
27
+ store;
28
+ constructor(store) {
29
+ this.store = store;
29
30
  }
30
31
  load(loopId) {
31
- return this.backend.queryEntries({ prefix: `loop:${loopId}:session` }).find((entry) => entry.task_type === "session_state" &&
32
- entry.loop_id === loopId &&
33
- entry.task_id === `loop:${loopId}:session`);
32
+ const session = this.store.readSession(loopId);
33
+ return session?.entry;
34
34
  }
35
35
  list() {
36
- return this.backend.queryEntries().filter((entry) => entry.task_type === "session_state");
36
+ const result = [];
37
+ for (const loopId of this.store.listLoopIds()) {
38
+ const session = this.store.readSession(loopId);
39
+ if (session)
40
+ result.push(session.entry);
41
+ }
42
+ return result;
37
43
  }
38
44
  save(entry, options = {}) {
39
45
  const loopId = entry.loop_id;
@@ -41,13 +47,9 @@ export class VaultSessionStateStore {
41
47
  throw new Error("Session state entry requires loop_id");
42
48
  }
43
49
  const write = () => {
44
- const vault = this.backend.readVault();
45
- const entries = Array.isArray(vault.entries)
46
- ? vault.entries
47
- : [];
48
- const existing = entries.find((item) => item.task_type === "session_state" && item.loop_id === loopId);
50
+ const existing = this.store.readSession(loopId);
49
51
  if (existing && options.expectedLeaseOwner) {
50
- const lineage = this.lineage(existing);
52
+ const lineage = this.lineage(existing.entry);
51
53
  const owner = typeof lineage.lease_owner === "string"
52
54
  ? lineage.lease_owner
53
55
  : "";
@@ -55,30 +57,23 @@ export class VaultSessionStateStore {
55
57
  throw new SessionLeaseConflictError(loopId);
56
58
  }
57
59
  }
58
- vault.entries = [
59
- ...entries.filter((item) => !(item.task_type === "session_state" && item.loop_id === loopId)),
60
+ const doc = {
61
+ schemaVersion: LOOP_STORE_SCHEMA_VERSION,
62
+ loopId,
63
+ updatedAt: new Date().toISOString(),
60
64
  entry,
61
- ];
62
- this.backend.writeVault(vault);
65
+ };
66
+ this.store.writeSession(loopId, doc);
63
67
  };
64
- if (typeof this.backend.withLock === "function") {
65
- this.backend.withLock(write);
66
- }
67
- else {
68
- write();
69
- }
68
+ this.store.withLock(write);
70
69
  }
71
70
  acquireLease(loopId, ownerId, leaseMs, now = Date.now()) {
72
71
  let claimed;
73
72
  const write = () => {
74
- const vault = this.backend.readVault();
75
- const entries = Array.isArray(vault.entries)
76
- ? vault.entries
77
- : [];
78
- const index = entries.findIndex((entry) => entry.task_type === "session_state" && entry.loop_id === loopId);
79
- if (index < 0)
73
+ const session = this.store.readSession(loopId);
74
+ if (!session)
80
75
  return;
81
- const entry = entries[index];
76
+ const entry = session.entry;
82
77
  const lineage = this.lineage(entry);
83
78
  const owner = typeof lineage.lease_owner === "string"
84
79
  ? lineage.lease_owner
@@ -104,63 +99,58 @@ export class VaultSessionStateStore {
104
99
  lease_epoch: owner === ownerId ? previousEpoch : previousEpoch + 1,
105
100
  },
106
101
  };
107
- entries[index] = updated;
108
- vault.entries = entries;
109
- this.backend.writeVault(vault);
102
+ const doc = {
103
+ schemaVersion: LOOP_STORE_SCHEMA_VERSION,
104
+ loopId,
105
+ updatedAt: new Date(now).toISOString(),
106
+ entry: updated,
107
+ };
108
+ this.store.writeSession(loopId, doc);
110
109
  claimed = updated;
111
110
  };
112
- if (typeof this.backend.withLock === "function")
113
- this.backend.withLock(write);
114
- else
115
- write();
111
+ this.store.withLock(write);
116
112
  return claimed;
117
113
  }
118
114
  renewLease(loopId, ownerId, leaseMs, now = Date.now()) {
119
115
  let renewed = false;
120
116
  const write = () => {
121
- const vault = this.backend.readVault();
122
- const entries = Array.isArray(vault.entries)
123
- ? vault.entries
124
- : [];
125
- const index = entries.findIndex((entry) => entry.task_type === "session_state" && entry.loop_id === loopId);
126
- if (index < 0)
117
+ const session = this.store.readSession(loopId);
118
+ if (!session)
127
119
  return;
128
- const entry = entries[index];
120
+ const entry = session.entry;
129
121
  const lineage = this.lineage(entry);
130
122
  if (lineage.lease_owner !== ownerId)
131
123
  return;
132
- entries[index] = {
124
+ const updated = {
133
125
  ...entry,
134
126
  loop_lineage: {
135
127
  ...lineage,
136
128
  lease_expires_at: now + Math.max(1, leaseMs),
137
129
  },
138
130
  };
139
- vault.entries = entries;
140
- this.backend.writeVault(vault);
131
+ const doc = {
132
+ schemaVersion: LOOP_STORE_SCHEMA_VERSION,
133
+ loopId,
134
+ updatedAt: new Date(now).toISOString(),
135
+ entry: updated,
136
+ };
137
+ this.store.writeSession(loopId, doc);
141
138
  renewed = true;
142
139
  };
143
- if (typeof this.backend.withLock === "function")
144
- this.backend.withLock(write);
145
- else
146
- write();
140
+ this.store.withLock(write);
147
141
  return renewed;
148
142
  }
149
143
  releaseLease(loopId, ownerId) {
150
144
  let released = false;
151
145
  const write = () => {
152
- const vault = this.backend.readVault();
153
- const entries = Array.isArray(vault.entries)
154
- ? vault.entries
155
- : [];
156
- const index = entries.findIndex((entry) => entry.task_type === "session_state" && entry.loop_id === loopId);
157
- if (index < 0)
146
+ const session = this.store.readSession(loopId);
147
+ if (!session)
158
148
  return;
159
- const entry = entries[index];
149
+ const entry = session.entry;
160
150
  const lineage = this.lineage(entry);
161
151
  if (lineage.lease_owner !== ownerId)
162
152
  return;
163
- entries[index] = {
153
+ const updated = {
164
154
  ...entry,
165
155
  loop_lineage: {
166
156
  ...lineage,
@@ -168,14 +158,16 @@ export class VaultSessionStateStore {
168
158
  lease_expires_at: 0,
169
159
  },
170
160
  };
171
- vault.entries = entries;
172
- this.backend.writeVault(vault);
161
+ const doc = {
162
+ schemaVersion: LOOP_STORE_SCHEMA_VERSION,
163
+ loopId,
164
+ updatedAt: new Date().toISOString(),
165
+ entry: updated,
166
+ };
167
+ this.store.writeSession(loopId, doc);
173
168
  released = true;
174
169
  };
175
- if (typeof this.backend.withLock === "function")
176
- this.backend.withLock(write);
177
- else
178
- write();
170
+ this.store.withLock(write);
179
171
  return released;
180
172
  }
181
173
  lineage(entry) {
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
@@ -15,31 +15,29 @@
15
15
  import type { VaultEntry } from "./backends/interface.js";
16
16
  import type { ProviderSnapshot } from "./evidence-provider.js";
17
17
  import type { SelfEvaluation, VerificationResult } from "./protocol.js";
18
+ export { type GitFileState, captureGitFileState, captureGitModifiedFiles, } from "./evidence-provider.js";
18
19
  /** Extract the round number from a vault entry's loop_lineage.
19
20
  * Returns 0 if the entry has no lineage or no round field.
20
21
  * In practice, persistLoopLineage always writes round ≥ 1, so 0
21
22
  * unambiguously means "not a valid round entry" in this context.
22
23
  * Exported for reuse by enforcement-gate.ts. */
23
24
  export declare function entryRound(entry: VaultEntry): number;
24
- /** v1.17: Result of capturing git file state across all three categories. */
25
- export interface GitFileState {
26
- /** Tracked files modified but unstaged (git diff --name-only). */
27
- tracked: string[];
28
- /** Files in the staging area (git diff --cached --name-only). */
29
- staged: string[];
30
- /** Untracked files not yet known to git (git ls-files --others --exclude-standard). */
31
- untracked: string[];
25
+ interface ParsedTestCounts {
26
+ passed: number;
27
+ failed: number;
28
+ skipped: number;
29
+ total: number;
32
30
  }
33
- /** v1.17: Capture all git file state — modified, staged, and untracked.
34
- * Returns null if git is unavailable. Each list is sorted.
35
- * 5-second timeout per command prevents hanging on large repos. */
36
- export declare function captureGitFileState(): GitFileState | null;
37
- /** v1.16: Capture the current set of modified files according to git.
38
- * Returns a sorted array of relative file paths, or null if git is unavailable.
39
- * Delegates to `git diff --name-only` — no staging or committing.
40
- * 5-second timeout prevents hanging on large repos.
41
- * @deprecated v1.17 — Use captureGitFileState() for full staged/untracked coverage. */
42
- export declare function captureGitModifiedFiles(): string[] | null;
31
+ /** Best-effort parse of test counts from common test-runner output formats.
32
+ *
33
+ * Scans the last 2000 characters of stdout (where summary lines typically
34
+ * appear) and tries patterns in descending specificity order. Returns null
35
+ * when the output format is unrecognized, stdout is empty, or a confident
36
+ * parse cannot be made.
37
+ *
38
+ * Recognized formats: Jest verbose/compact, Mocha, pytest/unittest, Go test,
39
+ * and PHPUnit OK summaries. */
40
+ export declare function parseTestOutput(stdout: string): ParsedTestCounts | null;
43
41
  /** Verify a SelfEvaluation against the loop's cross-round lineage.
44
42
  *
45
43
  * @param selfEval The agent's self-evaluation for the current round.
@@ -1 +1 @@
1
- {"version":3,"file":"verification-gate.d.ts","sourceRoot":"","sources":["../src/verification-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAoB,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAO1F;;;;iDAIiD;AACjD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAGpD;AAUD,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IAC3B,kEAAkE;IAClE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iEAAiE;IACjE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,uFAAuF;IACvF,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;oEAEoE;AACpE,wBAAgB,mBAAmB,IAAI,YAAY,GAAG,IAAI,CAyBzD;AAED;;;;wFAIwF;AACxF,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,GAAG,IAAI,CAKzD;AAkVD;;;;;;;;;;;;;4EAa4E;AAC5E,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,UAAU,EAAE,EAC1B,YAAY,GAAE,cAAc,GAAG,IAAW,EAC1C,mBAAmB,GAAE,MAAM,EAAE,GAAG,IAAW,EAC3C,iBAAiB,GAAE,gBAAgB,EAAO,GACzC,kBAAkB,CA4CpB"}
1
+ {"version":3,"file":"verification-gate.d.ts","sourceRoot":"","sources":["../src/verification-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAoB,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAM1F,OAAO,EACL,KAAK,YAAY,EACjB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAMhC;;;;iDAIiD;AACjD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAGpD;AAqUD,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;gCAQgC;AAChC,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CA4DvE;AA6DD;;;;;;;;;;;;;4EAa4E;AAC5E,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,UAAU,EAAE,EAC1B,YAAY,GAAE,cAAc,GAAG,IAAW,EAC1C,mBAAmB,GAAE,MAAM,EAAE,GAAG,IAAW,EAC3C,iBAAiB,GAAE,gBAAgB,EAAO,GACzC,kBAAkB,CA8CpB"}