loopforge 1.12.0 → 2.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.
- package/README.md +172 -95
- package/dist/backends/interface.d.ts +3 -9
- package/dist/backends/interface.d.ts.map +1 -1
- package/dist/backends/interface.js +1 -5
- package/dist/backends/interface.js.map +1 -1
- package/dist/canonical-state.d.ts +53 -0
- package/dist/canonical-state.d.ts.map +1 -0
- package/dist/canonical-state.js +161 -0
- package/dist/canonical-state.js.map +1 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +227 -0
- package/dist/cli.js.map +1 -0
- package/dist/enforcement-gate.d.ts +44 -0
- package/dist/enforcement-gate.d.ts.map +1 -0
- package/dist/enforcement-gate.js +271 -0
- package/dist/enforcement-gate.js.map +1 -0
- package/dist/engine.d.ts +17 -7
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +158 -249
- package/dist/engine.js.map +1 -1
- package/dist/evidence-provider.d.ts +113 -0
- package/dist/evidence-provider.d.ts.map +1 -0
- package/dist/evidence-provider.js +419 -0
- package/dist/evidence-provider.js.map +1 -0
- package/dist/index.d.ts +19 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -10
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +15 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +49 -0
- package/dist/init.js.map +1 -0
- package/dist/interop.d.ts +30 -0
- package/dist/interop.d.ts.map +1 -0
- package/dist/interop.js +29 -0
- package/dist/interop.js.map +1 -0
- package/dist/loop-compiler.d.ts +14 -64
- package/dist/loop-compiler.d.ts.map +1 -1
- package/dist/loop-compiler.js +307 -2001
- package/dist/loop-compiler.js.map +1 -1
- package/dist/loop-store.d.ts +82 -0
- package/dist/loop-store.d.ts.map +1 -0
- package/dist/loop-store.js +332 -0
- package/dist/loop-store.js.map +1 -0
- package/dist/mcp/server.d.ts +9 -6
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +109 -73
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session.d.ts +84 -20
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +718 -316
- package/dist/mcp/session.js.map +1 -1
- package/dist/mcp/tools.d.ts +18 -268
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +225 -12
- package/dist/mcp/tools.js.map +1 -1
- package/dist/observability.d.ts +36 -16
- package/dist/observability.d.ts.map +1 -1
- package/dist/observability.js +82 -23
- package/dist/observability.js.map +1 -1
- package/dist/policy-metrics.d.ts +46 -0
- package/dist/policy-metrics.d.ts.map +1 -0
- package/dist/policy-metrics.js +146 -0
- package/dist/policy-metrics.js.map +1 -0
- package/dist/policy.d.ts +58 -75
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +122 -93
- package/dist/policy.js.map +1 -1
- package/dist/prompt-assembler.d.ts +30 -0
- package/dist/prompt-assembler.d.ts.map +1 -0
- package/dist/prompt-assembler.js +257 -0
- package/dist/prompt-assembler.js.map +1 -0
- package/dist/prompt-policy.d.ts +29 -0
- package/dist/prompt-policy.d.ts.map +1 -0
- package/dist/prompt-policy.js +51 -0
- package/dist/prompt-policy.js.map +1 -0
- package/dist/protocol.d.ts +117 -91
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +40 -36
- package/dist/protocol.js.map +1 -1
- package/dist/replay.d.ts.map +1 -1
- package/dist/replay.js +1 -27
- package/dist/replay.js.map +1 -1
- package/dist/round-coordinator.d.ts +90 -0
- package/dist/round-coordinator.d.ts.map +1 -0
- package/dist/round-coordinator.js +186 -0
- package/dist/round-coordinator.js.map +1 -0
- package/dist/round-driver.d.ts +53 -0
- package/dist/round-driver.d.ts.map +1 -0
- package/dist/round-driver.js +101 -0
- package/dist/round-driver.js.map +1 -0
- package/dist/round-transaction.d.ts +70 -0
- package/dist/round-transaction.d.ts.map +1 -0
- package/dist/round-transaction.js +290 -0
- package/dist/round-transaction.js.map +1 -0
- package/dist/runtime.d.ts +35 -17
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +357 -344
- package/dist/runtime.js.map +1 -1
- package/dist/storage.d.ts +38 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +201 -0
- package/dist/storage.js.map +1 -0
- package/dist/verification-gate.d.ts +39 -7
- package/dist/verification-gate.d.ts.map +1 -1
- package/dist/verification-gate.js +198 -9
- package/dist/verification-gate.js.map +1 -1
- package/loop_policy.json +26 -47
- package/package.json +13 -10
- package/skills/perception/SKILL.md +80 -249
- package/dist/backends/fs.d.ts +0 -36
- package/dist/backends/fs.d.ts.map +0 -1
- package/dist/backends/fs.js +0 -358
- package/dist/backends/fs.js.map +0 -1
- package/dist/builder.d.ts +0 -12
- package/dist/builder.d.ts.map +0 -1
- package/dist/builder.js +0 -259
- package/dist/builder.js.map +0 -1
- package/dist/mcp-server.d.ts +0 -12
- package/dist/mcp-server.d.ts.map +0 -1
- package/dist/mcp-server.js +0 -14
- package/dist/mcp-server.js.map +0 -1
- package/dist/memory-bridge.d.ts +0 -47
- package/dist/memory-bridge.d.ts.map +0 -1
- package/dist/memory-bridge.js +0 -290
- package/dist/memory-bridge.js.map +0 -1
- package/dist/tests/_helpers.d.ts +0 -25
- package/dist/tests/_helpers.d.ts.map +0 -1
- package/dist/tests/_helpers.js +0 -47
- package/dist/tests/_helpers.js.map +0 -1
- package/dist/tests/builder.test.d.ts +0 -2
- package/dist/tests/builder.test.d.ts.map +0 -1
- package/dist/tests/builder.test.js +0 -110
- package/dist/tests/builder.test.js.map +0 -1
- package/dist/tests/engine.test.d.ts +0 -2
- package/dist/tests/engine.test.d.ts.map +0 -1
- package/dist/tests/engine.test.js +0 -371
- package/dist/tests/engine.test.js.map +0 -1
- package/dist/tests/generate-schema.test.d.ts +0 -8
- package/dist/tests/generate-schema.test.d.ts.map +0 -1
- package/dist/tests/generate-schema.test.js +0 -199
- package/dist/tests/generate-schema.test.js.map +0 -1
- package/dist/tests/loop-compiler.test.d.ts +0 -2
- package/dist/tests/loop-compiler.test.d.ts.map +0 -1
- package/dist/tests/loop-compiler.test.js +0 -1051
- package/dist/tests/loop-compiler.test.js.map +0 -1
- package/dist/tests/mcp.test.d.ts +0 -7
- package/dist/tests/mcp.test.d.ts.map +0 -1
- package/dist/tests/mcp.test.js +0 -485
- package/dist/tests/mcp.test.js.map +0 -1
- package/dist/tests/memory-bridge.test.d.ts +0 -8
- package/dist/tests/memory-bridge.test.d.ts.map +0 -1
- package/dist/tests/memory-bridge.test.js +0 -383
- package/dist/tests/memory-bridge.test.js.map +0 -1
- package/dist/tests/policy.test.d.ts +0 -2
- package/dist/tests/policy.test.d.ts.map +0 -1
- package/dist/tests/policy.test.js +0 -49
- package/dist/tests/policy.test.js.map +0 -1
- package/dist/tests/protocol.test.d.ts +0 -2
- package/dist/tests/protocol.test.d.ts.map +0 -1
- package/dist/tests/protocol.test.js +0 -73
- package/dist/tests/protocol.test.js.map +0 -1
- package/dist/tests/replay.test.d.ts +0 -2
- package/dist/tests/replay.test.d.ts.map +0 -1
- package/dist/tests/replay.test.js +0 -222
- package/dist/tests/replay.test.js.map +0 -1
- package/dist/tests/runtime.test.d.ts +0 -7
- package/dist/tests/runtime.test.d.ts.map +0 -1
- package/dist/tests/runtime.test.js +0 -323
- package/dist/tests/runtime.test.js.map +0 -1
- package/dist/tests/verification-gate.test.d.ts +0 -2
- package/dist/tests/verification-gate.test.d.ts.map +0 -1
- package/dist/tests/verification-gate.test.js +0 -407
- package/dist/tests/verification-gate.test.js.map +0 -1
- package/skills/prompt-techniques/SKILL.md +0 -52
- package/skills/prompt-techniques/references/chain-of-thought.md +0 -207
- package/skills/prompt-techniques/references/few-shot.md +0 -174
- package/skills/prompt-techniques/references/least-to-most.md +0 -182
- package/skills/prompt-techniques/references/step-back.md +0 -160
- package/skills/prompt-techniques/references/tree-of-thought.md +0 -191
- package/skills/prompt-techniques/references/zero-shot.md +0 -97
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
/** Schema-versioned round transaction shared by Runtime and MCP.
|
|
2
|
+
*
|
|
3
|
+
* A logical round has one deterministic roundId. Rejected attempts keep the
|
|
4
|
+
* same identity and before snapshot; only accepted decisions are committed to
|
|
5
|
+
* feedback storage. The committed feedback embeds the decision so replay after
|
|
6
|
+
* a process crash is idempotent.
|
|
7
|
+
*/
|
|
8
|
+
import { diffSnapshotCollections, extractFilesFromSnapshots, } from "./evidence-provider.js";
|
|
9
|
+
import { RoundCoordinator, } from "./round-coordinator.js";
|
|
10
|
+
import { logEvent, startSpan } from "./observability.js";
|
|
11
|
+
import { policyMetrics } from "./policy-metrics.js";
|
|
12
|
+
import { VaultRoundCommitStore } from "./storage.js";
|
|
13
|
+
export const ROUND_TRANSACTION_SCHEMA_VERSION = 1;
|
|
14
|
+
export function makeRoundId(loopId, round) {
|
|
15
|
+
if (!Number.isInteger(round) || round < 1) {
|
|
16
|
+
throw new Error(`Invalid round number: ${round}`);
|
|
17
|
+
}
|
|
18
|
+
return `loop:${loopId}:round:${round}`;
|
|
19
|
+
}
|
|
20
|
+
export function prepareRoundTransaction(loopId, round, beforeEvidence, promptArtifact) {
|
|
21
|
+
const now = Date.now();
|
|
22
|
+
return {
|
|
23
|
+
schemaVersion: ROUND_TRANSACTION_SCHEMA_VERSION,
|
|
24
|
+
roundId: makeRoundId(loopId, round),
|
|
25
|
+
loopId,
|
|
26
|
+
round,
|
|
27
|
+
attempt: 1,
|
|
28
|
+
phase: promptArtifact ? "prompted" : "prepared",
|
|
29
|
+
beforeEvidence,
|
|
30
|
+
createdAt: now,
|
|
31
|
+
updatedAt: now,
|
|
32
|
+
promptArtifact,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/** Attach the next prompt attempt to a rejected logical round without changing
|
|
36
|
+
* its identity or evidence baseline. Evaluation fields belong to the previous
|
|
37
|
+
* attempt and are cleared before the Agent receives the retry prompt. */
|
|
38
|
+
export function prepareRejectedAttempt(rejected, promptArtifact) {
|
|
39
|
+
if (rejected.phase !== "rejected") {
|
|
40
|
+
throw new Error(`Cannot retry transaction in phase ${rejected.phase}`);
|
|
41
|
+
}
|
|
42
|
+
if (promptArtifact.roundId !== rejected.roundId) {
|
|
43
|
+
throw new Error(`Retry prompt identity mismatch: ${promptArtifact.roundId} !== ${rejected.roundId}`);
|
|
44
|
+
}
|
|
45
|
+
if (promptArtifact.attempt !== rejected.attempt + 1) {
|
|
46
|
+
throw new Error(`Retry prompt attempt mismatch: ${promptArtifact.attempt} !== ${rejected.attempt + 1}`);
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
...rejected,
|
|
50
|
+
attempt: promptArtifact.attempt,
|
|
51
|
+
phase: "prompted",
|
|
52
|
+
afterEvidence: undefined,
|
|
53
|
+
roundEvidence: undefined,
|
|
54
|
+
evaluation: undefined,
|
|
55
|
+
result: undefined,
|
|
56
|
+
promptArtifact,
|
|
57
|
+
updatedAt: Date.now(),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function isRecord(value) {
|
|
61
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
62
|
+
}
|
|
63
|
+
function isProcessResult(value) {
|
|
64
|
+
if (!isRecord(value))
|
|
65
|
+
return false;
|
|
66
|
+
return ["continue", "stop", "reject", "terminate"].includes(String(value.action)) && Array.isArray(value.verificationFlags);
|
|
67
|
+
}
|
|
68
|
+
function parseProviderSnapshots(value) {
|
|
69
|
+
if (!Array.isArray(value))
|
|
70
|
+
return null;
|
|
71
|
+
const snapshots = [];
|
|
72
|
+
for (const item of value) {
|
|
73
|
+
if (!isRecord(item))
|
|
74
|
+
return null;
|
|
75
|
+
if (typeof item.provider !== "string" ||
|
|
76
|
+
typeof item.timestamp !== "number" ||
|
|
77
|
+
!Array.isArray(item.files) ||
|
|
78
|
+
!item.files.every((file) => typeof file === "string") ||
|
|
79
|
+
!isRecord(item.data))
|
|
80
|
+
return null;
|
|
81
|
+
snapshots.push(item);
|
|
82
|
+
}
|
|
83
|
+
return snapshots;
|
|
84
|
+
}
|
|
85
|
+
/** Parse a persisted snapshot without trusting arbitrary vault data. */
|
|
86
|
+
export function parseRoundTransactionSnapshot(value) {
|
|
87
|
+
if (!isRecord(value))
|
|
88
|
+
return null;
|
|
89
|
+
if (value.schemaVersion !== ROUND_TRANSACTION_SCHEMA_VERSION)
|
|
90
|
+
return null;
|
|
91
|
+
if (typeof value.roundId !== "string" || typeof value.loopId !== "string") {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
if (!Number.isInteger(value.round) || value.round < 1)
|
|
95
|
+
return null;
|
|
96
|
+
if (!Number.isInteger(value.attempt) || value.attempt < 1)
|
|
97
|
+
return null;
|
|
98
|
+
if (!["prepared", "prompted", "evaluated", "rejected", "committed", "terminated"]
|
|
99
|
+
.includes(String(value.phase)))
|
|
100
|
+
return null;
|
|
101
|
+
const beforeEvidence = parseProviderSnapshots(value.beforeEvidence);
|
|
102
|
+
if (!beforeEvidence)
|
|
103
|
+
return null;
|
|
104
|
+
const afterEvidence = value.afterEvidence === undefined
|
|
105
|
+
? undefined
|
|
106
|
+
: parseProviderSnapshots(value.afterEvidence);
|
|
107
|
+
if (value.afterEvidence !== undefined && !afterEvidence)
|
|
108
|
+
return null;
|
|
109
|
+
const roundEvidence = value.roundEvidence === undefined
|
|
110
|
+
? undefined
|
|
111
|
+
: parseProviderSnapshots(value.roundEvidence);
|
|
112
|
+
if (value.roundEvidence !== undefined && !roundEvidence)
|
|
113
|
+
return null;
|
|
114
|
+
if (value.result !== undefined && !isProcessResult(value.result))
|
|
115
|
+
return null;
|
|
116
|
+
if (value.promptArtifact !== undefined) {
|
|
117
|
+
if (!isRecord(value.promptArtifact))
|
|
118
|
+
return null;
|
|
119
|
+
const artifact = value.promptArtifact;
|
|
120
|
+
if (artifact.schemaVersion !== 1 ||
|
|
121
|
+
typeof artifact.roundId !== "string" ||
|
|
122
|
+
typeof artifact.renderedPrompt !== "string" ||
|
|
123
|
+
typeof artifact.promptHash !== "string" ||
|
|
124
|
+
typeof artifact.stateHash !== "string" ||
|
|
125
|
+
!["l0", "l1", "l2"].includes(String(artifact.level)))
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
const snapshot = {
|
|
129
|
+
...value,
|
|
130
|
+
beforeEvidence,
|
|
131
|
+
afterEvidence,
|
|
132
|
+
roundEvidence,
|
|
133
|
+
};
|
|
134
|
+
if (snapshot.roundId !== makeRoundId(snapshot.loopId, snapshot.round)) {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
return snapshot;
|
|
138
|
+
}
|
|
139
|
+
export class RoundTransactionCoordinator {
|
|
140
|
+
engine;
|
|
141
|
+
backend;
|
|
142
|
+
commitStore;
|
|
143
|
+
constructor(engine, backend, commitStore) {
|
|
144
|
+
this.engine = engine;
|
|
145
|
+
this.backend = backend ?? engine.getBackend();
|
|
146
|
+
this.commitStore = commitStore ?? new VaultRoundCommitStore(this.backend);
|
|
147
|
+
}
|
|
148
|
+
process(input) {
|
|
149
|
+
const { snapshot } = input;
|
|
150
|
+
const span = startSpan("round.transaction", {
|
|
151
|
+
loopId: snapshot.loopId,
|
|
152
|
+
round: snapshot.round,
|
|
153
|
+
roundId: snapshot.roundId,
|
|
154
|
+
attempt: snapshot.attempt,
|
|
155
|
+
});
|
|
156
|
+
const finish = (outcome) => {
|
|
157
|
+
policyMetrics.recordRound(snapshot.loopId, outcome.result, outcome.replayed);
|
|
158
|
+
span.end("ok", {
|
|
159
|
+
action: outcome.result.action,
|
|
160
|
+
replayed: outcome.replayed,
|
|
161
|
+
phase: outcome.snapshot.phase,
|
|
162
|
+
});
|
|
163
|
+
return outcome;
|
|
164
|
+
};
|
|
165
|
+
try {
|
|
166
|
+
const expectedRoundId = makeRoundId(snapshot.loopId, snapshot.round);
|
|
167
|
+
if (snapshot.roundId !== expectedRoundId) {
|
|
168
|
+
throw new Error(`Round snapshot identity mismatch: ${snapshot.roundId} !== ${expectedRoundId}`);
|
|
169
|
+
}
|
|
170
|
+
const committed = this.readCommitted(snapshot);
|
|
171
|
+
if (committed) {
|
|
172
|
+
logEvent("round_transaction_replay", {
|
|
173
|
+
loopId: snapshot.loopId,
|
|
174
|
+
round: snapshot.round,
|
|
175
|
+
roundId: snapshot.roundId,
|
|
176
|
+
});
|
|
177
|
+
return finish(committed);
|
|
178
|
+
}
|
|
179
|
+
const attempt = snapshot.phase === "rejected"
|
|
180
|
+
? snapshot.attempt + 1
|
|
181
|
+
: snapshot.attempt;
|
|
182
|
+
const roundEvidence = diffSnapshotCollections(snapshot.beforeEvidence, input.actualEvidence);
|
|
183
|
+
const coordinator = new RoundCoordinator(this.backend);
|
|
184
|
+
const result = coordinator.processRound({
|
|
185
|
+
loopId: snapshot.loopId,
|
|
186
|
+
task: input.task,
|
|
187
|
+
currentRound: snapshot.round,
|
|
188
|
+
maxRounds: input.maxRounds,
|
|
189
|
+
selfEval: input.selfEval,
|
|
190
|
+
extractionSucceeded: input.extractionSucceeded,
|
|
191
|
+
lastSelfEval: input.lastSelfEval,
|
|
192
|
+
consecutiveRejections: input.consecutiveRejections,
|
|
193
|
+
runtimeFilesChanged: extractFilesFromSnapshots(roundEvidence),
|
|
194
|
+
evidenceSnapshots: roundEvidence,
|
|
195
|
+
successTrajectory: input.successTrajectory,
|
|
196
|
+
});
|
|
197
|
+
const evaluated = {
|
|
198
|
+
...snapshot,
|
|
199
|
+
attempt,
|
|
200
|
+
phase: "evaluated",
|
|
201
|
+
afterEvidence: input.actualEvidence,
|
|
202
|
+
roundEvidence,
|
|
203
|
+
evaluation: input.selfEval,
|
|
204
|
+
result,
|
|
205
|
+
updatedAt: Date.now(),
|
|
206
|
+
};
|
|
207
|
+
if (result.action === "reject" || result.action === "terminate") {
|
|
208
|
+
const terminalPhase = result.action === "reject" ? "rejected" : "terminated";
|
|
209
|
+
return finish({
|
|
210
|
+
snapshot: { ...evaluated, phase: terminalPhase, updatedAt: Date.now() },
|
|
211
|
+
result,
|
|
212
|
+
replayed: false,
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
const committedSnapshot = {
|
|
216
|
+
...evaluated,
|
|
217
|
+
phase: "committed",
|
|
218
|
+
updatedAt: Date.now(),
|
|
219
|
+
};
|
|
220
|
+
const metadata = {
|
|
221
|
+
schema_version: ROUND_TRANSACTION_SCHEMA_VERSION,
|
|
222
|
+
round_id: snapshot.roundId,
|
|
223
|
+
snapshot: committedSnapshot,
|
|
224
|
+
result,
|
|
225
|
+
};
|
|
226
|
+
this.engine.autoFeedback(input.selfEval, snapshot.loopId, snapshot.round, input.task, metadata);
|
|
227
|
+
const persisted = this.readCommitted(committedSnapshot);
|
|
228
|
+
if (!persisted) {
|
|
229
|
+
throw new Error(`Round transaction commit failed: ${snapshot.roundId}`);
|
|
230
|
+
}
|
|
231
|
+
logEvent("round_transaction_commit", {
|
|
232
|
+
loopId: snapshot.loopId,
|
|
233
|
+
round: snapshot.round,
|
|
234
|
+
roundId: snapshot.roundId,
|
|
235
|
+
action: result.action,
|
|
236
|
+
});
|
|
237
|
+
return finish({ snapshot: committedSnapshot, result, replayed: false });
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
span.end("error", { error: String(error) });
|
|
241
|
+
throw error;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/** Recover an already committed decision without evaluating or writing. */
|
|
245
|
+
recover(snapshot) {
|
|
246
|
+
const span = startSpan("round.transaction.recover", {
|
|
247
|
+
loopId: snapshot.loopId,
|
|
248
|
+
round: snapshot.round,
|
|
249
|
+
roundId: snapshot.roundId,
|
|
250
|
+
});
|
|
251
|
+
try {
|
|
252
|
+
const outcome = this.readCommitted(snapshot);
|
|
253
|
+
if (outcome) {
|
|
254
|
+
policyMetrics.recordRound(snapshot.loopId, outcome.result, true);
|
|
255
|
+
}
|
|
256
|
+
span.end("ok", { recovered: outcome !== null });
|
|
257
|
+
return outcome;
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
span.end("error", { error: String(error) });
|
|
261
|
+
throw error;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
readCommitted(expected) {
|
|
265
|
+
const taskId = `loop:${expected.loopId}:r${expected.round}:feedback`;
|
|
266
|
+
const entries = this.commitStore.find(expected.loopId, expected.round);
|
|
267
|
+
for (const entry of entries) {
|
|
268
|
+
if (entry.task_id !== taskId)
|
|
269
|
+
continue;
|
|
270
|
+
const outcome = this.outcomeFromEntry(entry, expected.roundId);
|
|
271
|
+
if (outcome)
|
|
272
|
+
return outcome;
|
|
273
|
+
}
|
|
274
|
+
return null;
|
|
275
|
+
}
|
|
276
|
+
outcomeFromEntry(entry, expectedRoundId) {
|
|
277
|
+
const lineage = isRecord(entry.loop_lineage) ? entry.loop_lineage : null;
|
|
278
|
+
const transaction = lineage && isRecord(lineage.round_transaction)
|
|
279
|
+
? lineage.round_transaction
|
|
280
|
+
: null;
|
|
281
|
+
if (!transaction || transaction.round_id !== expectedRoundId)
|
|
282
|
+
return null;
|
|
283
|
+
const snapshot = parseRoundTransactionSnapshot(transaction.snapshot);
|
|
284
|
+
const result = transaction.result;
|
|
285
|
+
if (!snapshot || !isProcessResult(result))
|
|
286
|
+
return null;
|
|
287
|
+
return { snapshot, result, replayed: true };
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
//# sourceMappingURL=round-transaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"round-transaction.js","sourceRoot":"","sources":["../src/round-transaction.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ import { RuntimeStatus, type RuntimeConfig, type RunResult } from "./protocol.js
|
|
|
17
17
|
export declare class LoopRuntime extends EventEmitter {
|
|
18
18
|
private config;
|
|
19
19
|
private engine;
|
|
20
|
+
private roundDriver;
|
|
20
21
|
private _status;
|
|
21
22
|
private currentRound;
|
|
22
23
|
private successTrajectory;
|
|
@@ -25,37 +26,54 @@ export declare class LoopRuntime extends EventEmitter {
|
|
|
25
26
|
private sigtermHandler;
|
|
26
27
|
private lastSelfEval;
|
|
27
28
|
private pendingVerificationFlags;
|
|
28
|
-
private
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
private
|
|
32
|
-
private
|
|
29
|
+
private consecutiveRejections;
|
|
30
|
+
/** Which enforcement check triggered the last rejection.
|
|
31
|
+
* Only same-check rejections accumulate; a different check resets the counter. */
|
|
32
|
+
private lastRejectionCheck;
|
|
33
|
+
private pendingRejectionNotice;
|
|
34
|
+
private roundSnapshot;
|
|
35
|
+
private pauseTimestamp;
|
|
36
|
+
private pauseRequested;
|
|
37
|
+
private driverPromise;
|
|
33
38
|
private pendingExternalContext;
|
|
34
39
|
private roundStartTime;
|
|
35
40
|
private lastProgressTime;
|
|
36
41
|
private activeCtx;
|
|
42
|
+
private activeAbortController;
|
|
37
43
|
private timedOut;
|
|
38
44
|
constructor(rawConfig: RuntimeConfig);
|
|
39
45
|
get status(): RuntimeStatus;
|
|
40
46
|
getCurrentRound(): number;
|
|
41
47
|
getSuccessTrajectory(): boolean[];
|
|
42
|
-
/** Derive the current progress estimate from the last self evaluation.
|
|
43
|
-
* Returns -1 if no progress data is available. */
|
|
44
|
-
private getCurrentProgress;
|
|
45
|
-
/** Determine whether memory should be injected this round based on
|
|
46
|
-
* tier-based allowed phases, progress thresholds, and round spacing. */
|
|
47
|
-
private shouldInjectMemory;
|
|
48
|
-
/** Build the accumulated context for constructing a targeted memory query. */
|
|
49
|
-
private buildAccumulatedContext;
|
|
50
|
-
/** Deduplicate external context against previously injected contexts.
|
|
51
|
-
* Returns empty string if the new context is too similar to any prior. */
|
|
52
|
-
private dedupAndStoreContext;
|
|
53
48
|
/** Start the loop. Returns when the loop terminates (task complete,
|
|
54
|
-
* circuit breaker, max rounds, stalled, or manual stop).
|
|
49
|
+
* circuit breaker, max rounds, stalled, paused, or manual stop).
|
|
50
|
+
* Can only be called from IDLE state. */
|
|
55
51
|
start(): Promise<RunResult>;
|
|
52
|
+
/** Start the one allowed loop driver and clear its ownership on exit. */
|
|
53
|
+
private launchDriver;
|
|
54
|
+
/** Internal loop driver. Called by both start() (isResume=false) and
|
|
55
|
+
* resume() (isResume=true). When resuming, skips the currentRound=1
|
|
56
|
+
* reset — the loop picks up exactly where it left off. */
|
|
57
|
+
private _continue;
|
|
58
|
+
/** Execute one round with a hard driver deadline. The AbortSignal lets a
|
|
59
|
+
* cooperative executor stop early; the race guarantees the runtime itself
|
|
60
|
+
* still resolves when an executor ignores cancellation. */
|
|
61
|
+
private executeWithDeadline;
|
|
62
|
+
private triggerTimeout;
|
|
63
|
+
private triggerStall;
|
|
56
64
|
/** Stop the loop gracefully. Safe to call from any thread/timer. */
|
|
57
65
|
stop(): void;
|
|
66
|
+
/** Pause the loop gracefully. Completes the current round, then suspends.
|
|
67
|
+
* Safe to call from signal handlers or callbacks.
|
|
68
|
+
* Only has effect when the loop is RUNNING. */
|
|
69
|
+
pause(): void;
|
|
70
|
+
/** Resume a paused loop. Re-enters the main loop from currentRound.
|
|
71
|
+
* The loop continues exactly where it was suspended. */
|
|
72
|
+
resume(): Promise<RunResult>;
|
|
58
73
|
private buildCompileRequest;
|
|
74
|
+
/** Adapt the typed compiler request to the engine envelope once for both
|
|
75
|
+
* normal rounds and enforcement retry attempts. */
|
|
76
|
+
private buildEngineCompileRequest;
|
|
59
77
|
private startHeartbeat;
|
|
60
78
|
private heartbeatTick;
|
|
61
79
|
private stopHeartbeat;
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO3C,OAAO,EAEL,aAAa,EAab,KAAK,aAAa,EAClB,KAAK,SAAS,EAMf,MAAM,eAAe,CAAC;AAmFvB,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,iBAAiB,CAAiB;IAC1C,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,cAAc,CAA6B;IAGnD,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,wBAAwB,CAA0B;IAG1D,OAAO,CAAC,qBAAqB,CAAK;IAClC;uFACmF;IACnF,OAAO,CAAC,kBAAkB,CAAM;IAChC,OAAO,CAAC,sBAAsB,CAAM;IACpC,OAAO,CAAC,aAAa,CAAyC;IAG9D,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAmC;IAGxD,OAAO,CAAC,sBAAsB,CAAM;IAGpC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,qBAAqB,CAAgC;IAC7D,OAAO,CAAC,QAAQ,CAAS;gBAEb,SAAS,EAAE,aAAa;IAOpC,IAAI,MAAM,IAAI,aAAa,CAE1B;IAED,eAAe,IAAI,MAAM;IAIzB,oBAAoB,IAAI,OAAO,EAAE;IAMjC;;8CAE0C;IACpC,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC;IAWjC,yEAAyE;IACzE,OAAO,CAAC,YAAY;IAepB;;+DAE2D;YAC7C,SAAS;IA2UvB;;gEAE4D;YAC9C,mBAAmB;IA0BjC,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,YAAY;IAYpB,oEAAoE;IACpE,IAAI,IAAI,IAAI;IAiBZ;;oDAEgD;IAChD,KAAK,IAAI,IAAI;IAQb;6DACyD;IACnD,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;IAuBlC,OAAO,CAAC,mBAAmB;IAoD3B;uDACmD;IACnD,OAAO,CAAC,yBAAyB;IA0BjC,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,aAAa;IAiDrB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,sBAAsB;IAgC9B,OAAO,CAAC,wBAAwB;CAUjC;AAMD;;;;;;;;;GASG;AACH,wBAAsB,GAAG,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAGtE"}
|