loopforge 2.11.0 → 3.2.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.
- package/README.md +4 -4
- package/dist/audit.d.ts +50 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +158 -0
- package/dist/audit.js.map +1 -0
- package/dist/canonical-state.d.ts +21 -9
- package/dist/canonical-state.d.ts.map +1 -1
- package/dist/canonical-state.js +34 -16
- package/dist/canonical-state.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +16 -6
- package/dist/cli.js.map +1 -1
- package/dist/cognitive-governance.d.ts +40 -0
- package/dist/cognitive-governance.d.ts.map +1 -0
- package/dist/cognitive-governance.js +126 -0
- package/dist/cognitive-governance.js.map +1 -0
- package/dist/enforcement-gate.d.ts +8 -3
- package/dist/enforcement-gate.d.ts.map +1 -1
- package/dist/enforcement-gate.js +419 -92
- package/dist/enforcement-gate.js.map +1 -1
- package/dist/engine.d.ts +47 -7
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +303 -60
- package/dist/engine.js.map +1 -1
- package/dist/evidence-claims.d.ts +50 -0
- package/dist/evidence-claims.d.ts.map +1 -0
- package/dist/evidence-claims.js +134 -0
- package/dist/evidence-claims.js.map +1 -0
- package/dist/generate-schema.js +6 -1
- package/dist/generate-schema.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/loop-compiler.d.ts +41 -3
- package/dist/loop-compiler.d.ts.map +1 -1
- package/dist/loop-compiler.js +310 -38
- package/dist/loop-compiler.js.map +1 -1
- package/dist/loop-projection.d.ts +26 -0
- package/dist/loop-projection.d.ts.map +1 -0
- package/dist/loop-projection.js +142 -0
- package/dist/loop-projection.js.map +1 -0
- package/dist/loop-store.d.ts +91 -41
- package/dist/loop-store.d.ts.map +1 -1
- package/dist/loop-store.js +243 -173
- package/dist/loop-store.js.map +1 -1
- package/dist/mcp/round-lifecycle.d.ts +216 -0
- package/dist/mcp/round-lifecycle.d.ts.map +1 -0
- package/dist/mcp/round-lifecycle.js +926 -0
- package/dist/mcp/round-lifecycle.js.map +1 -0
- package/dist/mcp/server.d.ts +3 -2
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +65 -9
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session.d.ts +47 -139
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +284 -784
- package/dist/mcp/session.js.map +1 -1
- package/dist/mcp/tools.d.ts +23 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +270 -79
- package/dist/mcp/tools.js.map +1 -1
- package/dist/policy-metrics.d.ts +11 -0
- package/dist/policy-metrics.d.ts.map +1 -1
- package/dist/policy-metrics.js +118 -21
- package/dist/policy-metrics.js.map +1 -1
- package/dist/policy.d.ts +26 -1
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +13 -2
- package/dist/policy.js.map +1 -1
- package/dist/prompt-assembler.d.ts +34 -1
- package/dist/prompt-assembler.d.ts.map +1 -1
- package/dist/prompt-assembler.js +320 -42
- package/dist/prompt-assembler.js.map +1 -1
- package/dist/protocol.d.ts +169 -1
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +39 -0
- package/dist/protocol.js.map +1 -1
- package/dist/replay.d.ts +5 -5
- package/dist/replay.d.ts.map +1 -1
- package/dist/replay.js +9 -8
- package/dist/replay.js.map +1 -1
- package/dist/round-coordinator.d.ts +6 -3
- package/dist/round-coordinator.d.ts.map +1 -1
- package/dist/round-coordinator.js +38 -19
- package/dist/round-coordinator.js.map +1 -1
- package/dist/round-driver.d.ts +9 -4
- package/dist/round-driver.d.ts.map +1 -1
- package/dist/round-driver.js +15 -7
- package/dist/round-driver.js.map +1 -1
- package/dist/round-transaction.d.ts +7 -3
- package/dist/round-transaction.d.ts.map +1 -1
- package/dist/round-transaction.js +93 -88
- package/dist/round-transaction.js.map +1 -1
- package/dist/self-eval.d.ts +31 -1
- package/dist/self-eval.d.ts.map +1 -1
- package/dist/self-eval.js +115 -12
- package/dist/self-eval.js.map +1 -1
- package/dist/storage.d.ts +3 -4
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +5 -4
- package/dist/storage.js.map +1 -1
- package/dist/token-utils.d.ts +20 -7
- package/dist/token-utils.d.ts.map +1 -1
- package/dist/token-utils.js +68 -9
- package/dist/token-utils.js.map +1 -1
- package/dist/verification-gate.d.ts +54 -2
- package/dist/verification-gate.d.ts.map +1 -1
- package/dist/verification-gate.js +433 -25
- package/dist/verification-gate.js.map +1 -1
- package/loop_policy.json +35 -8
- package/package.json +3 -2
- package/skills/perception/SKILL.md +24 -6
- package/dist/backends/interface.d.ts +0 -39
- package/dist/backends/interface.d.ts.map +0 -1
- package/dist/backends/interface.js +0 -6
- package/dist/backends/interface.js.map +0 -1
package/dist/loop-store.js
CHANGED
|
@@ -14,6 +14,109 @@ import { parseRoundTransactionSnapshot } from "./round-transaction.js";
|
|
|
14
14
|
import { validateLoopId } from "./policy.js";
|
|
15
15
|
import { isRecord } from "./token-utils.js";
|
|
16
16
|
export const LOOP_STORE_SCHEMA_VERSION = 1;
|
|
17
|
+
const SEVERITY_MAP = {
|
|
18
|
+
sequence_gap: "recoverable",
|
|
19
|
+
sequence_duplicate: "recoverable",
|
|
20
|
+
invalid_json: "corrupted",
|
|
21
|
+
invalid_format: "corrupted",
|
|
22
|
+
sequence_cross_loop: "corrupted",
|
|
23
|
+
sequence_invalid: "corrupted",
|
|
24
|
+
};
|
|
25
|
+
/** v2.12: Typed corruption error carrying a severity class. Callers may
|
|
26
|
+
* recover from `recoverable` errors (record and continue) but must surface
|
|
27
|
+
* `corrupted` errors — the runtime never silently repairs storage. */
|
|
28
|
+
export class StorageCorruptionError extends Error {
|
|
29
|
+
code = "storage_corruption";
|
|
30
|
+
kind;
|
|
31
|
+
severity;
|
|
32
|
+
constructor(kind, message) {
|
|
33
|
+
super(message);
|
|
34
|
+
this.name = "StorageCorruptionError";
|
|
35
|
+
this.kind = kind;
|
|
36
|
+
this.severity = SEVERITY_MAP[kind];
|
|
37
|
+
}
|
|
38
|
+
get recoverable() {
|
|
39
|
+
return this.severity === "recoverable";
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/** Zero-dependency synchronous sleep (Atomics.wait on a shared slot). */
|
|
43
|
+
function sleepSync(ms) {
|
|
44
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
|
|
45
|
+
}
|
|
46
|
+
/** Filter a loop's flat entry view with the legacy VaultBackend query
|
|
47
|
+
* options. Derived read-only view over the single durable truth (typed
|
|
48
|
+
* session/round documents) — never a separate write path. Feedback
|
|
49
|
+
* entries are excluded by default, mirroring the historical
|
|
50
|
+
* queryEntries({ feedbackOnly }) semantics. */
|
|
51
|
+
export function queryLoopEntries(store, loopId, opts) {
|
|
52
|
+
return store.listEntries(loopId, { sinceRound: opts?.sinceRound }).filter((entry) => {
|
|
53
|
+
const taskId = String(entry.task_id ?? "");
|
|
54
|
+
if (opts?.feedbackOnly && !taskId.endsWith(":feedback"))
|
|
55
|
+
return false;
|
|
56
|
+
if (!opts?.feedbackOnly && taskId.endsWith(":feedback"))
|
|
57
|
+
return false;
|
|
58
|
+
if (opts?.prefix) {
|
|
59
|
+
if (!taskId.startsWith(opts.prefix))
|
|
60
|
+
return false;
|
|
61
|
+
// Guard against ambiguous prefix matches: "loop:x:r1" must not
|
|
62
|
+
// match "loop:x:r10" or "loop:x:r11". Only check when the prefix
|
|
63
|
+
// itself ends with a digit (indicating a specific round number).
|
|
64
|
+
// Prefixes ending in non-digits (e.g. "loop:x:r") match any round
|
|
65
|
+
// and should NOT be filtered.
|
|
66
|
+
const lastChar = opts.prefix[opts.prefix.length - 1];
|
|
67
|
+
if (lastChar !== undefined && /^\d$/.test(lastChar)) {
|
|
68
|
+
const after = taskId[opts.prefix.length];
|
|
69
|
+
if (after !== undefined && /^\d$/.test(after))
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return true;
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/** v2.12: Ordered round sequence for a loop. Throws StorageCorruptionError
|
|
77
|
+
* on gaps (recoverable) or mixed-format corruption; returns [] for loops
|
|
78
|
+
* with no rounds. Consumed by audit (sequenceComplete) and resume. */
|
|
79
|
+
export function eventSequence(store, loopId) {
|
|
80
|
+
checkRoundSequence(store, loopId);
|
|
81
|
+
return store.listRoundSequences(loopId).map((doc) => doc.round);
|
|
82
|
+
}
|
|
83
|
+
/** v2.12: Validate that a loop's round documents form a contiguous sequence
|
|
84
|
+
* from 1 to max. Legacy loops (no sequence stamps at all) are exempt.
|
|
85
|
+
* Mixed stamping is allowed only monotonically: rounds below the first
|
|
86
|
+
* stamped round are treated as legacy; once stamping begins it must not
|
|
87
|
+
* stop. Throws StorageCorruptionError on violation. */
|
|
88
|
+
export function checkRoundSequence(store, loopId) {
|
|
89
|
+
const docs = store.listRoundSequences(loopId);
|
|
90
|
+
const stamped = docs.filter((doc) => doc.sequence !== undefined);
|
|
91
|
+
if (stamped.length === 0)
|
|
92
|
+
return { complete: true, legacy: true };
|
|
93
|
+
const firstStamped = Math.min(...stamped.map((doc) => doc.round));
|
|
94
|
+
// Any round at or after the first stamped round must itself be stamped.
|
|
95
|
+
for (const doc of docs) {
|
|
96
|
+
if (doc.round >= firstStamped && doc.sequence === undefined) {
|
|
97
|
+
throw new StorageCorruptionError("sequence_invalid", `Loop ${loopId}: round ${doc.round} is missing its sequence stamp ` +
|
|
98
|
+
`while round ${firstStamped} is stamped (mixed format)`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const stampedRounds = stamped.map((doc) => doc.round);
|
|
102
|
+
const max = Math.max(...stampedRounds);
|
|
103
|
+
const present = new Set(docs.filter((doc) => doc.round >= firstStamped).map((doc) => doc.round));
|
|
104
|
+
for (let round = firstStamped; round <= max; round++) {
|
|
105
|
+
if (!present.has(round)) {
|
|
106
|
+
throw new StorageCorruptionError("sequence_gap", `Loop ${loopId}: round sequence gap at ${round} (max ${max})`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// v2.14: rounds below the first stamped round are exempt ONLY for loops
|
|
110
|
+
// without a runtime session document — migration imports may legitimately
|
|
111
|
+
// start at any round, but migration never writes session documents.
|
|
112
|
+
// A stamped loop WITH a session always began at round 1 (write-time
|
|
113
|
+
// continuity), so missing rounds 1..N-1 mean deletion, not import.
|
|
114
|
+
if (firstStamped > 1 && store.readSession(loopId)) {
|
|
115
|
+
throw new StorageCorruptionError("sequence_gap", `Loop ${loopId}: rounds 1..${firstStamped - 1} are missing ` +
|
|
116
|
+
`(first stamped round is ${firstStamped})`);
|
|
117
|
+
}
|
|
118
|
+
return { complete: true, legacy: false };
|
|
119
|
+
}
|
|
17
120
|
function loopIdFromEntry(entry) {
|
|
18
121
|
if (typeof entry.loop_id === "string" && entry.loop_id)
|
|
19
122
|
return entry.loop_id;
|
|
@@ -66,24 +169,35 @@ export class FileLoopStore {
|
|
|
66
169
|
}
|
|
67
170
|
catch {
|
|
68
171
|
let stale = false;
|
|
172
|
+
let age = 0;
|
|
69
173
|
try {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
// processes. Treat as stale when the lock is old regardless.
|
|
79
|
-
const code = error.code;
|
|
80
|
-
stale = code === "ESRCH"
|
|
81
|
-
|| (code === "EPERM" && age > 10_000); // Windows safety: EPERM + old lock → stale
|
|
82
|
-
}
|
|
83
|
-
}
|
|
174
|
+
age = Date.now() - statSync(lockPath).mtimeMs;
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
age = 0;
|
|
178
|
+
}
|
|
179
|
+
let owner = null;
|
|
180
|
+
try {
|
|
181
|
+
owner = JSON.parse(readFileSync(ownerPath, "utf8"));
|
|
84
182
|
}
|
|
85
183
|
catch {
|
|
86
|
-
|
|
184
|
+
// v2.14: a crash between mkdir(lock) and write(owner.json) leaves
|
|
185
|
+
// a lock directory without an owner. That window is microseconds,
|
|
186
|
+
// so after a short grace the lock is provably stale — previously
|
|
187
|
+
// this state caused a permanent lock until manual deletion.
|
|
188
|
+
stale = age > 500;
|
|
189
|
+
}
|
|
190
|
+
if (!stale && owner && age > 5000 && typeof owner.pid === "number") {
|
|
191
|
+
try {
|
|
192
|
+
process.kill(owner.pid, 0);
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
// On Windows, EPERM may be returned for dead cross-user
|
|
196
|
+
// processes. Treat as stale when the lock is old regardless.
|
|
197
|
+
const code = error.code;
|
|
198
|
+
stale = code === "ESRCH"
|
|
199
|
+
|| (code === "EPERM" && age > 10_000); // Windows safety: EPERM + old lock → stale
|
|
200
|
+
}
|
|
87
201
|
}
|
|
88
202
|
if (stale) {
|
|
89
203
|
try {
|
|
@@ -116,9 +230,17 @@ export class FileLoopStore {
|
|
|
116
230
|
return [];
|
|
117
231
|
const result = [];
|
|
118
232
|
for (const name of readdirSync(loops)) {
|
|
119
|
-
const
|
|
233
|
+
const dir = join(loops, name);
|
|
234
|
+
const metadata = this.readJson(join(dir, "metadata.json"));
|
|
120
235
|
if (isRecord(metadata) && typeof metadata.loopId === "string") {
|
|
121
236
|
result.push(metadata.loopId);
|
|
237
|
+
continue;
|
|
238
|
+
}
|
|
239
|
+
// v2.14: orphaned loop dirs (sessions written before metadata
|
|
240
|
+
// stamping) recover their loopId from the session document itself.
|
|
241
|
+
const session = this.readJson(join(dir, "session.json"));
|
|
242
|
+
if (isRecord(session) && typeof session.loopId === "string") {
|
|
243
|
+
result.push(session.loopId);
|
|
122
244
|
}
|
|
123
245
|
}
|
|
124
246
|
return result.sort();
|
|
@@ -126,23 +248,48 @@ export class FileLoopStore {
|
|
|
126
248
|
readSession(loopId) {
|
|
127
249
|
validateLoopId(loopId);
|
|
128
250
|
const value = this.readJson(join(this.loopDir(loopId), "session.json"));
|
|
129
|
-
|
|
130
|
-
|
|
251
|
+
// readJson returns null only for a missing file; an existing document
|
|
252
|
+
// with an unexpected shape is structural corruption, never silently
|
|
253
|
+
// treated as "missing" (which would let a later write overwrite it).
|
|
254
|
+
if (value === null)
|
|
131
255
|
return null;
|
|
256
|
+
if (!isRecord(value) || value.schemaVersion !== LOOP_STORE_SCHEMA_VERSION ||
|
|
257
|
+
value.loopId !== loopId || !isRecord(value.entry)) {
|
|
258
|
+
throw new StorageCorruptionError("invalid_format", `Loop ${loopId}: session.json has an unexpected document shape`);
|
|
259
|
+
}
|
|
132
260
|
return value;
|
|
133
261
|
}
|
|
134
262
|
writeSession(loopId, document) {
|
|
135
263
|
validateLoopId(loopId);
|
|
136
|
-
this.
|
|
264
|
+
const dir = this.loopDir(loopId);
|
|
265
|
+
// v2.14: stamp metadata alongside the session document — a session with
|
|
266
|
+
// no committed rounds yet (created, then crashed before round 1) must
|
|
267
|
+
// still be discoverable via listLoopIds / auto-resume.
|
|
268
|
+
this.atomicWrite(join(dir, "metadata.json"), {
|
|
269
|
+
schemaVersion: LOOP_STORE_SCHEMA_VERSION,
|
|
270
|
+
loopId,
|
|
271
|
+
});
|
|
272
|
+
this.atomicWrite(join(dir, "session.json"), document);
|
|
137
273
|
}
|
|
138
274
|
readRound(loopId, round) {
|
|
139
275
|
validateLoopId(loopId);
|
|
140
276
|
if (!Number.isInteger(round) || round < 1)
|
|
141
277
|
return null;
|
|
142
278
|
const value = this.readJson(join(this.loopDir(loopId), "rounds", `${round}.json`));
|
|
143
|
-
|
|
144
|
-
|
|
279
|
+
// readJson returns null only for a missing file; an existing document
|
|
280
|
+
// with an unexpected shape is structural corruption — surfacing it
|
|
281
|
+
// (rather than returning null) prevents silent overwrite by writeEntry.
|
|
282
|
+
if (value === null)
|
|
145
283
|
return null;
|
|
284
|
+
if (!isRecord(value) || value.schemaVersion !== LOOP_STORE_SCHEMA_VERSION ||
|
|
285
|
+
value.loopId !== loopId || value.round !== round) {
|
|
286
|
+
throw new StorageCorruptionError("invalid_format", `Loop ${loopId}: round ${round} document has an unexpected shape`);
|
|
287
|
+
}
|
|
288
|
+
// v2.12: a stamped document whose stamp disagrees with its filename is
|
|
289
|
+
// structural corruption, never silently repaired.
|
|
290
|
+
if (typeof value.sequence === "number" && value.sequence !== round) {
|
|
291
|
+
throw new StorageCorruptionError("sequence_invalid", `Loop ${loopId}: round ${round} document carries sequence ${value.sequence}`);
|
|
292
|
+
}
|
|
146
293
|
const events = Array.isArray(value.events)
|
|
147
294
|
? value.events.filter(isRecord)
|
|
148
295
|
: [];
|
|
@@ -151,6 +298,7 @@ export class FileLoopStore {
|
|
|
151
298
|
schemaVersion: LOOP_STORE_SCHEMA_VERSION,
|
|
152
299
|
loopId,
|
|
153
300
|
round,
|
|
301
|
+
sequence: typeof value.sequence === "number" ? value.sequence : undefined,
|
|
154
302
|
updatedAt: typeof value.updatedAt === "string" ? value.updatedAt : "",
|
|
155
303
|
lineage: isRecord(value.lineage) ? value.lineage : undefined,
|
|
156
304
|
feedback: isRecord(value.feedback) ? value.feedback : undefined,
|
|
@@ -159,7 +307,25 @@ export class FileLoopStore {
|
|
|
159
307
|
events,
|
|
160
308
|
};
|
|
161
309
|
}
|
|
162
|
-
|
|
310
|
+
listRoundSequences(loopId) {
|
|
311
|
+
validateLoopId(loopId);
|
|
312
|
+
const roundsDir = join(this.loopDir(loopId), "rounds");
|
|
313
|
+
if (!existsSync(roundsDir))
|
|
314
|
+
return [];
|
|
315
|
+
const result = [];
|
|
316
|
+
for (const file of readdirSync(roundsDir).filter((name) => /^\d+\.json$/.test(name))) {
|
|
317
|
+
const round = Number(file.slice(0, -5));
|
|
318
|
+
const value = this.readJson(join(roundsDir, file));
|
|
319
|
+
if (!isRecord(value) || value.loopId !== loopId || value.round !== round)
|
|
320
|
+
continue;
|
|
321
|
+
result.push({
|
|
322
|
+
round,
|
|
323
|
+
sequence: typeof value.sequence === "number" ? value.sequence : undefined,
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
return result.sort((a, b) => a.round - b.round);
|
|
327
|
+
}
|
|
328
|
+
listEntries(loopId, opts) {
|
|
163
329
|
const ids = loopId ? [loopId] : this.listLoopIds();
|
|
164
330
|
const result = [];
|
|
165
331
|
for (const id of ids) {
|
|
@@ -169,19 +335,28 @@ export class FileLoopStore {
|
|
|
169
335
|
const roundsDir = join(this.loopDir(id), "rounds");
|
|
170
336
|
if (!existsSync(roundsDir))
|
|
171
337
|
continue;
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
338
|
+
// Numeric sort — readdirSync order is filesystem-dependent and must
|
|
339
|
+
// not leak into the flat entry view (rounds 1, 10, 2 … would be).
|
|
340
|
+
for (const file of readdirSync(roundsDir)
|
|
341
|
+
.filter((name) => /^\d+\.json$/.test(name))
|
|
342
|
+
.sort((a, b) => Number(a.slice(0, -5)) - Number(b.slice(0, -5)))) {
|
|
343
|
+
const round = Number(file.slice(0, -5));
|
|
344
|
+
// v3.0.1: incremental reads skip older round documents entirely —
|
|
345
|
+
// this is what bounds per-compile I/O in long loops.
|
|
346
|
+
if (opts?.sinceRound !== undefined && round < opts.sinceRound)
|
|
175
347
|
continue;
|
|
176
|
-
|
|
348
|
+
const doc = this.readRound(id, round);
|
|
349
|
+
if (!doc)
|
|
350
|
+
continue;
|
|
351
|
+
if (doc.lineage) {
|
|
177
352
|
result.push({
|
|
178
|
-
...
|
|
179
|
-
full_prompt:
|
|
353
|
+
...doc.lineage,
|
|
354
|
+
full_prompt: doc.promptArtifact?.renderedPrompt ?? doc.lineage.full_prompt,
|
|
180
355
|
});
|
|
181
356
|
}
|
|
182
|
-
if (
|
|
183
|
-
result.push(
|
|
184
|
-
result.push(...
|
|
357
|
+
if (doc.feedback)
|
|
358
|
+
result.push(doc.feedback);
|
|
359
|
+
result.push(...doc.events);
|
|
185
360
|
}
|
|
186
361
|
}
|
|
187
362
|
return result;
|
|
@@ -196,12 +371,6 @@ export class FileLoopStore {
|
|
|
196
371
|
return entries.length;
|
|
197
372
|
});
|
|
198
373
|
}
|
|
199
|
-
replaceEntries(entries) {
|
|
200
|
-
this.withLock(() => {
|
|
201
|
-
for (const entry of entries)
|
|
202
|
-
this.writeEntry(entry);
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
374
|
migrateLegacyVault(path = ".promptcraft/prompt_vault.json") {
|
|
206
375
|
const source = resolve(path);
|
|
207
376
|
const marker = join(this.root, "migrations", "promptcraft-v1.json");
|
|
@@ -221,7 +390,7 @@ export class FileLoopStore {
|
|
|
221
390
|
skipped++;
|
|
222
391
|
continue;
|
|
223
392
|
}
|
|
224
|
-
this.writeEntry(entry);
|
|
393
|
+
this.writeEntry(entry, { allowGap: true });
|
|
225
394
|
imported++;
|
|
226
395
|
}
|
|
227
396
|
this.atomicWrite(marker, {
|
|
@@ -234,7 +403,7 @@ export class FileLoopStore {
|
|
|
234
403
|
});
|
|
235
404
|
return { source, imported, skipped, alreadyMigrated: false };
|
|
236
405
|
}
|
|
237
|
-
writeEntry(entry) {
|
|
406
|
+
writeEntry(entry, opts) {
|
|
238
407
|
const loopId = loopIdFromEntry(entry);
|
|
239
408
|
if (!loopId)
|
|
240
409
|
throw new Error("LoopStore only accepts loop-scoped entries");
|
|
@@ -257,13 +426,25 @@ export class FileLoopStore {
|
|
|
257
426
|
const round = roundFromEntry(entry);
|
|
258
427
|
if (!round)
|
|
259
428
|
throw new Error(`Loop entry has no round: ${entry.task_id ?? "unknown"}`);
|
|
429
|
+
// v2.12: monotonic write-time check — a stamped loop may not skip its
|
|
430
|
+
// predecessor. Legacy imports (allowGap) bypass this; the load-time
|
|
431
|
+
// scan in checkRoundSequence remains the backstop.
|
|
432
|
+
if (!opts?.allowGap && round > 1) {
|
|
433
|
+
const previous = this.readRound(loopId, round - 1);
|
|
434
|
+
if (!previous && this.listRoundSequences(loopId).some((doc) => doc.sequence !== undefined)) {
|
|
435
|
+
throw new StorageCorruptionError("sequence_gap", `Loop ${loopId}: cannot write round ${round}; round ${round - 1} is missing`);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
260
438
|
const current = this.readRound(loopId, round) ?? {
|
|
261
439
|
schemaVersion: LOOP_STORE_SCHEMA_VERSION,
|
|
262
440
|
loopId,
|
|
263
441
|
round,
|
|
442
|
+
sequence: round,
|
|
264
443
|
updatedAt: now,
|
|
265
444
|
events: [],
|
|
266
445
|
};
|
|
446
|
+
if (current.sequence === undefined)
|
|
447
|
+
current.sequence = round;
|
|
267
448
|
const taskId = String(entry.task_id ?? "");
|
|
268
449
|
if (taskId.endsWith(":feedback"))
|
|
269
450
|
current.feedback = entry;
|
|
@@ -290,151 +471,40 @@ export class FileLoopStore {
|
|
|
290
471
|
const hash = createHash("sha256").update(loopId).digest("hex");
|
|
291
472
|
return join(this.root, "loops", hash);
|
|
292
473
|
}
|
|
474
|
+
/** Read a JSON document, distinguishing missing from corrupt.
|
|
475
|
+
* ENOENT → null (missing); parse failure → StorageCorruptionError
|
|
476
|
+
* (corrupted) — the runtime never silently repairs storage. */
|
|
293
477
|
readJson(path) {
|
|
294
478
|
try {
|
|
295
479
|
return JSON.parse(readFileSync(path, "utf8"));
|
|
296
480
|
}
|
|
297
|
-
catch {
|
|
298
|
-
|
|
481
|
+
catch (error) {
|
|
482
|
+
if (error.code === "ENOENT")
|
|
483
|
+
return null;
|
|
484
|
+
throw new StorageCorruptionError("invalid_json", `Corrupt JSON at ${path}: ${error.message}`);
|
|
299
485
|
}
|
|
300
486
|
}
|
|
301
487
|
atomicWrite(path, value) {
|
|
302
488
|
mkdirSync(dirname(path), { recursive: true });
|
|
303
|
-
const
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
}
|
|
308
|
-
/** @deprecated Use LoopStore directly.
|
|
309
|
-
*
|
|
310
|
-
* Compatibility adapter so modules that still accept VaultBackend can
|
|
311
|
-
* operate on a LoopStore. Persistent truth is the typed per-loop
|
|
312
|
-
* documents; no Markdown lineage is written. */
|
|
313
|
-
export class LoopStoreBackend {
|
|
314
|
-
store;
|
|
315
|
-
constructor(store = new FileLoopStore()) {
|
|
316
|
-
this.store = store;
|
|
317
|
-
}
|
|
318
|
-
withLock(fn) { return this.store.withLock(fn); }
|
|
319
|
-
queryEntries(opts) {
|
|
320
|
-
return this.store.listEntries().filter((entry) => {
|
|
321
|
-
const taskId = String(entry.task_id ?? "");
|
|
322
|
-
if (opts?.feedbackOnly && !taskId.endsWith(":feedback"))
|
|
323
|
-
return false;
|
|
324
|
-
if (!opts?.feedbackOnly && taskId.endsWith(":feedback"))
|
|
325
|
-
return false;
|
|
326
|
-
if (opts?.prefix && !taskId.startsWith(opts.prefix))
|
|
327
|
-
return false;
|
|
328
|
-
if (opts?.taskIdPattern && !taskId.includes(opts.taskIdPattern))
|
|
329
|
-
return false;
|
|
330
|
-
return true;
|
|
331
|
-
});
|
|
332
|
-
}
|
|
333
|
-
appendEntry(entry) { this.store.appendEntry(entry); }
|
|
334
|
-
appendEntries(entries) { return this.store.appendEntries(entries); }
|
|
335
|
-
}
|
|
336
|
-
/** Adapter that wraps a VaultBackend as a LoopStore for backward compat.
|
|
337
|
-
*
|
|
338
|
-
* SessionManager uses this when a VaultBackend is provided directly so
|
|
339
|
-
* VaultSessionStateStore can operate on typed session documents while
|
|
340
|
-
* the underlying storage remains VaultBackend entries. */
|
|
341
|
-
export class VaultBackendLoopStore {
|
|
342
|
-
backend;
|
|
343
|
-
constructor(backend) {
|
|
344
|
-
this.backend = backend;
|
|
345
|
-
}
|
|
346
|
-
withLock(fn) {
|
|
347
|
-
return typeof this.backend.withLock === "function"
|
|
348
|
-
? this.backend.withLock(fn)
|
|
349
|
-
: fn();
|
|
350
|
-
}
|
|
351
|
-
listLoopIds() {
|
|
352
|
-
return [...new Set(this.backend.queryEntries()
|
|
353
|
-
.filter((e) => typeof e.loop_id === "string")
|
|
354
|
-
.map((e) => e.loop_id))].sort();
|
|
355
|
-
}
|
|
356
|
-
listEntries(loopId) {
|
|
357
|
-
if (loopId)
|
|
358
|
-
return this.backend.queryEntries({ prefix: `loop:${loopId}` });
|
|
359
|
-
return this.backend.queryEntries();
|
|
360
|
-
}
|
|
361
|
-
appendEntry(entry) { this.backend.appendEntry(entry); }
|
|
362
|
-
appendEntries(entries) { return this.backend.appendEntries(entries); }
|
|
363
|
-
replaceEntries(_entries) {
|
|
364
|
-
throw new Error("VaultBackendLoopStore.replaceEntries is not supported. " +
|
|
365
|
-
"Use LoopStore (FileLoopStore) directly for bulk replace operations.");
|
|
366
|
-
}
|
|
367
|
-
readSession(loopId) {
|
|
368
|
-
const entry = this.backend.queryEntries({ prefix: `loop:${loopId}:session` })
|
|
369
|
-
.find((e) => e.task_type === "session_state" && e.loop_id === loopId);
|
|
370
|
-
if (!entry)
|
|
371
|
-
return null;
|
|
372
|
-
return {
|
|
373
|
-
schemaVersion: LOOP_STORE_SCHEMA_VERSION,
|
|
374
|
-
loopId,
|
|
375
|
-
updatedAt: typeof entry.timestamp === "string"
|
|
376
|
-
? entry.timestamp
|
|
377
|
-
: new Date().toISOString(),
|
|
378
|
-
entry,
|
|
489
|
+
const writeOnce = () => {
|
|
490
|
+
const temporary = `${path}.tmp.${randomUUID().slice(0, 8)}`;
|
|
491
|
+
writeFileSync(temporary, JSON.stringify(value, null, 2), "utf8");
|
|
492
|
+
renameSync(temporary, path);
|
|
379
493
|
};
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
entry.task_type = "session_state";
|
|
385
|
-
entry.loop_id = loopId;
|
|
386
|
-
entry.task_id = `loop:${loopId}:session`;
|
|
387
|
-
// Session state lives in the vault entries list. The backend may
|
|
388
|
-
// provide readVault/writeVault as optional compat methods; if not,
|
|
389
|
-
// we fall back to appendEntry (which may create duplicates, but
|
|
390
|
-
// VaultSessionStateStore.load returns the first match).
|
|
391
|
-
const be = this.backend;
|
|
392
|
-
if (typeof be.readVault === "function" &&
|
|
393
|
-
typeof be.writeVault === "function") {
|
|
394
|
-
// Call via .call(be) so methods that reference `this` (e.g.
|
|
395
|
-
// MemoryBackend.readVault) keep their receiver.
|
|
396
|
-
const data = be.readVault.call(be);
|
|
397
|
-
const entries = Array.isArray(data.entries)
|
|
398
|
-
? data.entries
|
|
399
|
-
: [];
|
|
400
|
-
const filtered = entries.filter((item) => !(item.task_type === "session_state" && item.loop_id === loopId));
|
|
401
|
-
be.writeVault.call(be, { entries: [...filtered, entry] });
|
|
402
|
-
return;
|
|
494
|
+
// v2.12: transient I/O failures (Windows rename EPERM/EACCES) are
|
|
495
|
+
// retried once after a short backoff; a second failure bubbles.
|
|
496
|
+
try {
|
|
497
|
+
writeOnce();
|
|
403
498
|
}
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
// FileLoopStore.readRound so callers get consistent round documents
|
|
413
|
-
// regardless of backend.
|
|
414
|
-
const lineage = entries.find((e) => e.task_type === "loop_lineage" || e.task_id === `loop:${loopId}:r${round}`);
|
|
415
|
-
const feedback = entries.find((e) => String(e.task_id ?? "").endsWith(":feedback"));
|
|
416
|
-
const events = entries.filter((e) => e !== lineage && e !== feedback);
|
|
417
|
-
let transaction;
|
|
418
|
-
const transactionRaw = feedback?.loop_lineage?.round_transaction ??
|
|
419
|
-
lineage?.loop_lineage?.round_transaction;
|
|
420
|
-
const transactionParsed = parseRoundTransactionSnapshot(isRecord(transactionRaw) ? transactionRaw.snapshot : undefined);
|
|
421
|
-
if (transactionParsed) {
|
|
422
|
-
transaction = transactionParsed;
|
|
499
|
+
catch (first) {
|
|
500
|
+
sleepSync(500);
|
|
501
|
+
try {
|
|
502
|
+
writeOnce();
|
|
503
|
+
}
|
|
504
|
+
catch (second) {
|
|
505
|
+
throw second;
|
|
506
|
+
}
|
|
423
507
|
}
|
|
424
|
-
return {
|
|
425
|
-
schemaVersion: LOOP_STORE_SCHEMA_VERSION,
|
|
426
|
-
loopId,
|
|
427
|
-
round,
|
|
428
|
-
updatedAt: entries[0].timestamp ?? new Date().toISOString(),
|
|
429
|
-
lineage: lineage,
|
|
430
|
-
feedback: feedback,
|
|
431
|
-
transaction,
|
|
432
|
-
promptArtifact: transaction?.promptArtifact,
|
|
433
|
-
events,
|
|
434
|
-
};
|
|
435
|
-
}
|
|
436
|
-
migrateLegacyVault(_path) {
|
|
437
|
-
return { source: _path ?? "vault", imported: 0, skipped: 0, alreadyMigrated: true };
|
|
438
508
|
}
|
|
439
509
|
}
|
|
440
510
|
//# sourceMappingURL=loop-store.js.map
|
package/dist/loop-store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop-store.js","sourceRoot":"","sources":["../src/loop-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loop-store.js","sourceRoot":"","sources":["../src/loop-store.ts"],"names":[],"mappings":"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"}
|