loopforge 2.0.0 → 2.6.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 (111) hide show
  1. package/README.md +7 -5
  2. package/dist/backends/interface.d.ts +4 -3
  3. package/dist/backends/interface.d.ts.map +1 -1
  4. package/dist/backends/interface.js +4 -1
  5. package/dist/backends/interface.js.map +1 -1
  6. package/dist/canonical-state.d.ts +23 -2
  7. package/dist/canonical-state.d.ts.map +1 -1
  8. package/dist/canonical-state.js +90 -6
  9. package/dist/canonical-state.js.map +1 -1
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +6 -2
  12. package/dist/cli.js.map +1 -1
  13. package/dist/enforcement-gate.d.ts +1 -1
  14. package/dist/enforcement-gate.d.ts.map +1 -1
  15. package/dist/enforcement-gate.js +86 -7
  16. package/dist/enforcement-gate.js.map +1 -1
  17. package/dist/engine.d.ts +3 -33
  18. package/dist/engine.d.ts.map +1 -1
  19. package/dist/engine.js +127 -343
  20. package/dist/engine.js.map +1 -1
  21. package/dist/evidence-provider.d.ts +38 -5
  22. package/dist/evidence-provider.d.ts.map +1 -1
  23. package/dist/evidence-provider.js +132 -46
  24. package/dist/evidence-provider.js.map +1 -1
  25. package/dist/index.d.ts +10 -12
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +6 -9
  28. package/dist/index.js.map +1 -1
  29. package/dist/interop.d.ts +5 -0
  30. package/dist/interop.d.ts.map +1 -1
  31. package/dist/interop.js +5 -0
  32. package/dist/interop.js.map +1 -1
  33. package/dist/loop-compiler.d.ts.map +1 -1
  34. package/dist/loop-compiler.js +515 -50
  35. package/dist/loop-compiler.js.map +1 -1
  36. package/dist/loop-extras-parser.d.ts +82 -0
  37. package/dist/loop-extras-parser.d.ts.map +1 -0
  38. package/dist/loop-extras-parser.js +217 -0
  39. package/dist/loop-extras-parser.js.map +1 -0
  40. package/dist/loop-store.d.ts +26 -4
  41. package/dist/loop-store.d.ts.map +1 -1
  42. package/dist/loop-store.js +118 -8
  43. package/dist/loop-store.js.map +1 -1
  44. package/dist/mcp/server.js +1 -1
  45. package/dist/mcp/session.d.ts +29 -6
  46. package/dist/mcp/session.d.ts.map +1 -1
  47. package/dist/mcp/session.js +187 -161
  48. package/dist/mcp/session.js.map +1 -1
  49. package/dist/mcp/tools.d.ts.map +1 -1
  50. package/dist/mcp/tools.js +33 -5
  51. package/dist/mcp/tools.js.map +1 -1
  52. package/dist/observability.d.ts +5 -36
  53. package/dist/observability.d.ts.map +1 -1
  54. package/dist/observability.js +9 -79
  55. package/dist/observability.js.map +1 -1
  56. package/dist/policy-metrics.d.ts +1 -0
  57. package/dist/policy-metrics.d.ts.map +1 -1
  58. package/dist/policy-metrics.js +2 -0
  59. package/dist/policy-metrics.js.map +1 -1
  60. package/dist/policy.d.ts +58 -8
  61. package/dist/policy.d.ts.map +1 -1
  62. package/dist/policy.js +25 -12
  63. package/dist/policy.js.map +1 -1
  64. package/dist/prompt-assembler.d.ts.map +1 -1
  65. package/dist/prompt-assembler.js +129 -4
  66. package/dist/prompt-assembler.js.map +1 -1
  67. package/dist/protocol.d.ts +118 -87
  68. package/dist/protocol.d.ts.map +1 -1
  69. package/dist/protocol.js +40 -30
  70. package/dist/protocol.js.map +1 -1
  71. package/dist/replay.d.ts +0 -1
  72. package/dist/replay.d.ts.map +1 -1
  73. package/dist/replay.js +1 -87
  74. package/dist/replay.js.map +1 -1
  75. package/dist/round-coordinator.d.ts +4 -6
  76. package/dist/round-coordinator.d.ts.map +1 -1
  77. package/dist/round-coordinator.js +75 -80
  78. package/dist/round-coordinator.js.map +1 -1
  79. package/dist/round-driver.d.ts +1 -0
  80. package/dist/round-driver.d.ts.map +1 -1
  81. package/dist/round-driver.js +2 -0
  82. package/dist/round-driver.js.map +1 -1
  83. package/dist/round-transaction.d.ts.map +1 -1
  84. package/dist/round-transaction.js +2 -22
  85. package/dist/round-transaction.js.map +1 -1
  86. package/dist/run.d.ts +51 -0
  87. package/dist/run.d.ts.map +1 -0
  88. package/dist/run.js +200 -0
  89. package/dist/run.js.map +1 -0
  90. package/dist/self-eval.d.ts +23 -0
  91. package/dist/self-eval.d.ts.map +1 -0
  92. package/dist/self-eval.js +151 -0
  93. package/dist/self-eval.js.map +1 -0
  94. package/dist/storage.d.ts +3 -2
  95. package/dist/storage.d.ts.map +1 -1
  96. package/dist/storage.js +70 -68
  97. package/dist/storage.js.map +1 -1
  98. package/dist/token-utils.d.ts +22 -0
  99. package/dist/token-utils.d.ts.map +1 -0
  100. package/dist/token-utils.js +46 -0
  101. package/dist/token-utils.js.map +1 -0
  102. package/dist/verification-gate.d.ts +17 -23
  103. package/dist/verification-gate.d.ts.map +1 -1
  104. package/dist/verification-gate.js +241 -135
  105. package/dist/verification-gate.js.map +1 -1
  106. package/loop_policy.json +21 -12
  107. package/package.json +2 -2
  108. package/dist/runtime.d.ts +0 -94
  109. package/dist/runtime.d.ts.map +0 -1
  110. package/dist/runtime.js +0 -718
  111. package/dist/runtime.js.map +0 -1
package/dist/run.js ADDED
@@ -0,0 +1,200 @@
1
+ /** Autonomous loop runner — Library API entry point (v2.6).
2
+ *
3
+ * Wires the engine, compiler, self-eval extraction, and feedback persistence
4
+ * into a single call that the host controls end-to-end. The agent never gets
5
+ * a chance to "skip" the loop — the host calls execute(), extracts the result,
6
+ * and feeds it back to LoopForge in the same tick.
7
+ */
8
+ import { LoopForgeEngine, extractSelfEvaluation } from "./engine.js";
9
+ import { Mode } from "./protocol.js";
10
+ import { FileLoopStore } from "./loop-store.js";
11
+ import { logEvent } from "./observability.js";
12
+ function makeRunResult(loopId, lastResponse, roundsCompleted, successTrajectory, lastEval, artifacts = []) {
13
+ if (!lastResponse?.response) {
14
+ return {
15
+ success: false,
16
+ stopReason: "executor_failure",
17
+ roundsCompleted,
18
+ successTrajectory,
19
+ loopId,
20
+ lastEvaluation: lastEval,
21
+ artifacts,
22
+ };
23
+ }
24
+ return {
25
+ success: lastEval?.success === true && lastEval?.should_continue === false,
26
+ stopReason: lastEval?.should_continue === false
27
+ ? (lastEval?.success ? "completed" : "failed")
28
+ : "max_rounds",
29
+ roundsCompleted,
30
+ successTrajectory,
31
+ loopId,
32
+ lastEvaluation: lastEval,
33
+ artifacts,
34
+ };
35
+ }
36
+ export async function run(input) {
37
+ const store = input.store ?? new FileLoopStore();
38
+ const engine = new LoopForgeEngine(store);
39
+ const loopId = `run-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
40
+ const maxRounds = input.maxRounds ?? 20;
41
+ const artifacts = [];
42
+ let round = 1;
43
+ let lastEval;
44
+ const successTrajectory = [];
45
+ const task = input.task.trim();
46
+ if (!task)
47
+ throw new Error("run: task must be non-empty");
48
+ while (round <= maxRounds) {
49
+ // Check for external abort
50
+ if (input.signal?.aborted) {
51
+ return makeRunResult(loopId, null, round - 1, successTrajectory, lastEval, artifacts);
52
+ }
53
+ // ── 1. Compile prompt ──────────────────────────────────────────────
54
+ const request = {
55
+ task,
56
+ mode: Mode.LOOP_COMPILE,
57
+ feedback: null,
58
+ skill_name: null,
59
+ task_id: null,
60
+ loop_id: loopId,
61
+ round,
62
+ max_rounds: maxRounds,
63
+ constraints_from_plan: input.constraintsFromPlan ?? [],
64
+ goal_id: loopId,
65
+ domain: "",
66
+ };
67
+ // External context injection
68
+ if (input.contextProvider) {
69
+ try {
70
+ const ctx = await input.contextProvider({
71
+ loopId,
72
+ round,
73
+ task,
74
+ domain: "",
75
+ lastEvaluation: lastEval,
76
+ });
77
+ if (ctx?.trim())
78
+ request.external_context = ctx.trim();
79
+ }
80
+ catch {
81
+ logEvent("context_provider_error", { loopId, round });
82
+ }
83
+ }
84
+ // Forward last round result
85
+ if (lastEval) {
86
+ request.last_round_result = {
87
+ round: round - 1,
88
+ success: lastEval.success,
89
+ output_summary: lastEval.output_summary,
90
+ constraint_violations: lastEval.constraint_violations,
91
+ manual_fixes_needed: "",
92
+ discovered_constraints: lastEval.discovered_constraints ?? [],
93
+ objective_refinement: lastEval.objective_refinement ?? "",
94
+ emerged_subtasks: lastEval.emerged_subtasks ?? [],
95
+ execution_evidence: lastEval.execution_evidence,
96
+ retracted_constraints: lastEval.retracted_constraints ?? [],
97
+ revised_success_criteria: lastEval.revised_success_criteria ?? [],
98
+ wrong_assumptions: lastEval.wrong_assumptions ?? [],
99
+ worker_results: lastEval.worker_results ?? [],
100
+ compression_checkpoint: lastEval.compression_checkpoint ?? false,
101
+ checkpoint_label: lastEval.checkpoint_label ?? "",
102
+ next_action: lastEval.next_action,
103
+ completed_subtasks: lastEval.completed_subtasks ?? [],
104
+ blocked_subtasks: lastEval.blocked_subtasks ?? [],
105
+ canceled_subtasks: lastEval.canceled_subtasks ?? [],
106
+ };
107
+ }
108
+ let response;
109
+ try {
110
+ response = engine.invokeLoopCompile(request);
111
+ }
112
+ catch (exc) {
113
+ logEvent("compile_error", { loopId, round, error: String(exc) });
114
+ return makeRunResult(loopId, null, round - 1, successTrajectory, lastEval, artifacts);
115
+ }
116
+ if (response.status !== "ok" || !response.response?.prompt) {
117
+ return makeRunResult(loopId, response, round - 1, successTrajectory, lastEval, artifacts);
118
+ }
119
+ const artifact = response.response.prompt_artifact;
120
+ if (artifact)
121
+ artifacts.push(artifact);
122
+ // ── 2. Execute agent ───────────────────────────────────────────────
123
+ let output;
124
+ try {
125
+ output = await input.execute(response.response.prompt, {
126
+ signal: input.signal ?? new AbortController().signal,
127
+ });
128
+ }
129
+ catch (exc) {
130
+ logEvent("execute_error", { loopId, round, error: String(exc) });
131
+ // Persist terminal state before returning
132
+ if (lastEval)
133
+ engine.autoFeedback(lastEval, loopId, round - 1, task);
134
+ void notifyTerminal(input.terminalSinks, {
135
+ loopId, task, success: false, stopReason: "executor_failure",
136
+ roundsCompleted: round - 1, successTrajectory, lastEvaluation: lastEval,
137
+ });
138
+ return {
139
+ success: false,
140
+ stopReason: "executor_failure",
141
+ roundsCompleted: round - 1,
142
+ successTrajectory,
143
+ loopId,
144
+ lastEvaluation: lastEval,
145
+ artifacts,
146
+ };
147
+ }
148
+ // ── 3. Extract self-evaluation ─────────────────────────────────────
149
+ const selfEval = extractSelfEvaluation(output);
150
+ if (!selfEval) {
151
+ logEvent("extraction_failed", { loopId, round });
152
+ return makeRunResult(loopId, response, round - 1, successTrajectory, lastEval, artifacts);
153
+ }
154
+ lastEval = selfEval;
155
+ successTrajectory.push(selfEval.success);
156
+ // ── 4. Persist feedback ────────────────────────────────────────────
157
+ engine.autoFeedback(selfEval, loopId, round, task);
158
+ // ── 5. Check stop ──────────────────────────────────────────────────
159
+ if (!selfEval.should_continue) {
160
+ const result = makeRunResult(loopId, response, round, successTrajectory, lastEval, artifacts);
161
+ void notifyTerminal(input.terminalSinks, {
162
+ loopId, task,
163
+ success: result.success,
164
+ stopReason: result.stopReason,
165
+ roundsCompleted: round,
166
+ successTrajectory,
167
+ lastEvaluation: lastEval,
168
+ });
169
+ return result;
170
+ }
171
+ round++;
172
+ }
173
+ const result = makeRunResult(loopId, null, round - 1, successTrajectory, lastEval, artifacts);
174
+ result.stopReason = "max_rounds";
175
+ void notifyTerminal(input.terminalSinks, {
176
+ loopId, task,
177
+ success: false,
178
+ stopReason: "max_rounds",
179
+ roundsCompleted: round - 1,
180
+ successTrajectory,
181
+ lastEvaluation: lastEval,
182
+ });
183
+ return result;
184
+ }
185
+ function notifyTerminal(sinks, event) {
186
+ if (!sinks?.length)
187
+ return;
188
+ for (const sink of sinks) {
189
+ try {
190
+ const pending = sink(event);
191
+ if (pending && typeof pending.then === "function") {
192
+ void pending.catch(() => undefined);
193
+ }
194
+ }
195
+ catch {
196
+ // Sink failures must never fail the loop.
197
+ }
198
+ }
199
+ }
200
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
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
+ //# 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,CAuDhB"}
@@ -0,0 +1,151 @@
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
+ completed_subtasks: Array.isArray(raw.completed_subtasks)
135
+ ? raw.completed_subtasks.filter((v) => typeof v === "string")
136
+ : [],
137
+ blocked_subtasks: Array.isArray(raw.blocked_subtasks)
138
+ ? raw.blocked_subtasks.filter((v) => typeof v === "string")
139
+ : [],
140
+ canceled_subtasks: Array.isArray(raw.canceled_subtasks)
141
+ ? raw.canceled_subtasks.filter((v) => typeof v === "string")
142
+ : [],
143
+ stop_reason: raw.stop_reason === "gave_up" || raw.stop_reason === "blocked" || raw.stop_reason === "needs_human_input"
144
+ ? raw.stop_reason
145
+ : undefined,
146
+ });
147
+ }
148
+ // v2.6: heuristicSelfEvaluation removed — if structured extraction fails,
149
+ // the round is stalled. The 20-line keyword heuristic was dead weight; an
150
+ // agent that can't produce a structured self-evaluation is genuinely stuck.
151
+ //# 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;AA0BtE,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"}