@claudexor/event-log 3.1.2 → 3.3.7-rc.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/dist/index.d.ts +45 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +210 -22
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
import type { RunEvent, RunEventType } from "@claudexor/schema";
|
|
2
|
+
export type TerminalRunEventType = Extract<RunEventType, "run.completed" | "run.failed" | "run.blocked">;
|
|
3
|
+
export interface PreparedTerminalEvent {
|
|
4
|
+
type: TerminalRunEventType;
|
|
5
|
+
payload: Record<string, unknown>;
|
|
6
|
+
/**
|
|
7
|
+
* Publish the prepared receipt's canonical commit marker after the durable
|
|
8
|
+
* journal accepts the terminal, but before file-tail/live observers can see
|
|
9
|
+
* the per-run terminal event.
|
|
10
|
+
*/
|
|
11
|
+
commit?: () => void;
|
|
12
|
+
/**
|
|
13
|
+
* Undo preparation/commit side effects when no durable journal authority was
|
|
14
|
+
* established. The callback must be idempotent.
|
|
15
|
+
*/
|
|
16
|
+
rollback?: () => void;
|
|
17
|
+
}
|
|
2
18
|
/**
|
|
3
19
|
* Append-only JSONL event log for a single run. Terminal output and human
|
|
4
20
|
* summaries are projections; this file is the canonical event stream.
|
|
@@ -14,37 +30,41 @@ export declare class EventLog {
|
|
|
14
30
|
private readonly runId;
|
|
15
31
|
private readonly taskId;
|
|
16
32
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* event authority; failure must fail the run instead of silently creating
|
|
21
|
-
* a gap in restart replay.
|
|
33
|
+
* Durable in-process authority. Non-terminal events reach it after their
|
|
34
|
+
* per-run append; terminal events reach it first so crash recovery can
|
|
35
|
+
* reconstruct the canonical receipt and per-run tail from the journal.
|
|
22
36
|
*/
|
|
23
|
-
private readonly
|
|
37
|
+
private readonly onPersist?;
|
|
24
38
|
/**
|
|
25
39
|
* Thread this run is a turn of, when any. Stamped on every event so the
|
|
26
40
|
* global event multiplex can route live progress to a chat surface without
|
|
27
41
|
* a reverse job lookup.
|
|
28
42
|
*/
|
|
29
43
|
private readonly threadId?;
|
|
44
|
+
/** Best-effort live observer, invoked only after terminal finalization. */
|
|
45
|
+
private readonly onPublish?;
|
|
30
46
|
private nextSeq;
|
|
31
47
|
private deferTerminalEvents;
|
|
32
48
|
private deferredTerminal;
|
|
49
|
+
private terminalCommittedFlag;
|
|
50
|
+
private terminalCommitInProgress;
|
|
51
|
+
private terminalWriterPoisoned;
|
|
52
|
+
private beforeTerminal?;
|
|
33
53
|
constructor(path: string, runId: string, taskId: string,
|
|
34
54
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* event authority; failure must fail the run instead of silently creating
|
|
39
|
-
* a gap in restart replay.
|
|
55
|
+
* Durable in-process authority. Non-terminal events reach it after their
|
|
56
|
+
* per-run append; terminal events reach it first so crash recovery can
|
|
57
|
+
* reconstruct the canonical receipt and per-run tail from the journal.
|
|
40
58
|
*/
|
|
41
|
-
|
|
59
|
+
onPersist?: ((event: RunEvent) => void) | undefined,
|
|
42
60
|
/**
|
|
43
61
|
* Thread this run is a turn of, when any. Stamped on every event so the
|
|
44
62
|
* global event multiplex can route live progress to a chat surface without
|
|
45
63
|
* a reverse job lookup.
|
|
46
64
|
*/
|
|
47
|
-
threadId?: string | undefined
|
|
65
|
+
threadId?: string | undefined,
|
|
66
|
+
/** Best-effort live observer, invoked only after terminal finalization. */
|
|
67
|
+
onPublish?: ((event: RunEvent) => void) | undefined);
|
|
48
68
|
/**
|
|
49
69
|
* Unregister this log as the live writer for its path. Out-of-band
|
|
50
70
|
* appenders fall back to file-tail stamping afterwards, which is safe once
|
|
@@ -57,8 +77,20 @@ export declare class EventLog {
|
|
|
57
77
|
deferTerminal(): void;
|
|
58
78
|
clearDeferredTerminal(): void;
|
|
59
79
|
flushDeferredTerminal(): RunEvent | null;
|
|
80
|
+
/**
|
|
81
|
+
* Register the engine's once-only terminal preparation hook. It builds the
|
|
82
|
+
* canonical receipt in memory before the durable authority accepts the
|
|
83
|
+
* terminal; commit runs afterward and before file-tail/live observers.
|
|
84
|
+
*/
|
|
85
|
+
setBeforeTerminal(hook: (type: TerminalRunEventType, payload: Record<string, unknown>) => PreparedTerminalEvent | void): void;
|
|
86
|
+
/** Whether this writer has durably committed its exactly-once terminal. */
|
|
87
|
+
terminalCommitted(): boolean;
|
|
60
88
|
/** Append a typed run event. Validates against the schema before writing. */
|
|
61
89
|
emit(type: RunEventType, payload?: Record<string, unknown>): RunEvent;
|
|
90
|
+
private poisonAfterDurableCommit;
|
|
91
|
+
/** @internal Release a poisoned live owner once journal recovery repairs its tail. */
|
|
92
|
+
releaseRecoveredTerminalFence(): boolean;
|
|
93
|
+
private rollbackTerminal;
|
|
62
94
|
/** Read and parse all events (skipping malformed lines, which are surfaced separately). */
|
|
63
95
|
readAll(): {
|
|
64
96
|
events: RunEvent[];
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKhE,MAAM,MAAM,oBAAoB,GAAG,OAAO,CACxC,YAAY,EACZ,eAAe,GAAG,YAAY,GAAG,aAAa,CAC/C,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,qBAAa,QAAQ;IAajB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC3B;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1B,2EAA2E;IAC3E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IA5B7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,gBAAgB,CAAyE;IACjG,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,cAAc,CAAC,CAGW;IAElC,YACmB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM;IAC/B;;;;OAIG;IACc,SAAS,CAAC,GAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,aAAA;IACtD;;;;OAIG;IACc,QAAQ,CAAC,EAAE,MAAM,YAAA;IAClC,2EAA2E;IAC1D,SAAS,CAAC,GAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,aAAA,EAUvD;IAED;;;;OAIG;IACH,OAAO,IAAI,IAAI,CAEd;IAED;;mEAE+D;IAC/D,aAAa,IAAI,IAAI,CAEpB;IAED,qBAAqB,IAAI,IAAI,CAE5B;IAED,qBAAqB,IAAI,QAAQ,GAAG,IAAI,CAKvC;IAED;;;;OAIG;IACH,iBAAiB,CACf,IAAI,EAAE,CACJ,IAAI,EAAE,oBAAoB,EAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,qBAAqB,GAAG,IAAI,GAChC,IAAI,CAEN;IAED,2EAA2E;IAC3E,iBAAiB,IAAI,OAAO,CAE3B;IAED,6EAA6E;IAC7E,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,QAAQ,CA6GxE;IAED,OAAO,CAAC,wBAAwB;IAuBhC,sFAAsF;IACtF,6BAA6B,IAAI,OAAO,CAKvC;IAED,OAAO,CAAC,gBAAgB;IAmCxB,2FAA2F;IAC3F,OAAO,IAAI;QAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAenD;CACF;AAUD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACpC,QAAQ,CAiBV;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmBlD"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RunEvent as RunEventSchema } from "@claudexor/schema";
|
|
2
|
+
import { existsSync, statSync, truncateSync, unlinkSync } from "node:fs";
|
|
2
3
|
import { appendLine, nowIso, readTextSafe, redactSecrets } from "@claudexor/util";
|
|
3
4
|
/**
|
|
4
5
|
* Append-only JSONL event log for a single run. Terminal output and human
|
|
@@ -14,33 +15,45 @@ export class EventLog {
|
|
|
14
15
|
path;
|
|
15
16
|
runId;
|
|
16
17
|
taskId;
|
|
17
|
-
|
|
18
|
+
onPersist;
|
|
18
19
|
threadId;
|
|
20
|
+
onPublish;
|
|
19
21
|
nextSeq;
|
|
20
22
|
deferTerminalEvents = false;
|
|
21
23
|
deferredTerminal = null;
|
|
24
|
+
terminalCommittedFlag = false;
|
|
25
|
+
terminalCommitInProgress = false;
|
|
26
|
+
terminalWriterPoisoned = false;
|
|
27
|
+
beforeTerminal;
|
|
22
28
|
constructor(path, runId, taskId,
|
|
23
29
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* event authority; failure must fail the run instead of silently creating
|
|
28
|
-
* a gap in restart replay.
|
|
30
|
+
* Durable in-process authority. Non-terminal events reach it after their
|
|
31
|
+
* per-run append; terminal events reach it first so crash recovery can
|
|
32
|
+
* reconstruct the canonical receipt and per-run tail from the journal.
|
|
29
33
|
*/
|
|
30
|
-
|
|
34
|
+
onPersist,
|
|
31
35
|
/**
|
|
32
36
|
* Thread this run is a turn of, when any. Stamped on every event so the
|
|
33
37
|
* global event multiplex can route live progress to a chat surface without
|
|
34
38
|
* a reverse job lookup.
|
|
35
39
|
*/
|
|
36
|
-
threadId
|
|
40
|
+
threadId,
|
|
41
|
+
/** Best-effort live observer, invoked only after terminal finalization. */
|
|
42
|
+
onPublish) {
|
|
37
43
|
this.path = path;
|
|
38
44
|
this.runId = runId;
|
|
39
45
|
this.taskId = taskId;
|
|
40
|
-
this.
|
|
46
|
+
this.onPersist = onPersist;
|
|
41
47
|
this.threadId = threadId;
|
|
48
|
+
this.onPublish = onPublish;
|
|
42
49
|
this.nextSeq = lastSeqInFile(path) + 1;
|
|
43
|
-
|
|
50
|
+
this.terminalCommittedFlag = terminalEventInFile(path);
|
|
51
|
+
if (!this.terminalCommittedFlag) {
|
|
52
|
+
if (activeEventLogs.has(path)) {
|
|
53
|
+
throw new Error("an active EventLog already owns this event path");
|
|
54
|
+
}
|
|
55
|
+
activeEventLogs.set(path, this);
|
|
56
|
+
}
|
|
44
57
|
}
|
|
45
58
|
/**
|
|
46
59
|
* Unregister this log as the live writer for its path. Out-of-band
|
|
@@ -66,10 +79,32 @@ export class EventLog {
|
|
|
66
79
|
this.deferTerminalEvents = false;
|
|
67
80
|
return pending ? this.emit(pending.type, pending.payload) : null;
|
|
68
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Register the engine's once-only terminal preparation hook. It builds the
|
|
84
|
+
* canonical receipt in memory before the durable authority accepts the
|
|
85
|
+
* terminal; commit runs afterward and before file-tail/live observers.
|
|
86
|
+
*/
|
|
87
|
+
setBeforeTerminal(hook) {
|
|
88
|
+
this.beforeTerminal = hook;
|
|
89
|
+
}
|
|
90
|
+
/** Whether this writer has durably committed its exactly-once terminal. */
|
|
91
|
+
terminalCommitted() {
|
|
92
|
+
return this.terminalCommittedFlag;
|
|
93
|
+
}
|
|
69
94
|
/** Append a typed run event. Validates against the schema before writing. */
|
|
70
95
|
emit(type, payload = {}) {
|
|
71
|
-
if (this.
|
|
72
|
-
|
|
96
|
+
if (this.terminalCommittedFlag) {
|
|
97
|
+
throw new Error("run terminal event is already committed");
|
|
98
|
+
}
|
|
99
|
+
if (this.terminalWriterPoisoned) {
|
|
100
|
+
throw new Error("run terminal writer is poisoned after an incomplete rollback");
|
|
101
|
+
}
|
|
102
|
+
if (this.terminalCommitInProgress) {
|
|
103
|
+
throw new Error("run terminal event commit is already in progress");
|
|
104
|
+
}
|
|
105
|
+
const terminalType = type === "run.completed" || type === "run.failed" || type === "run.blocked" ? type : null;
|
|
106
|
+
const terminal = terminalType !== null;
|
|
107
|
+
if (this.deferTerminalEvents && terminal) {
|
|
73
108
|
if (this.deferredTerminal)
|
|
74
109
|
throw new Error("run terminal event was emitted more than once");
|
|
75
110
|
this.deferredTerminal = { type, payload };
|
|
@@ -83,8 +118,9 @@ export class EventLog {
|
|
|
83
118
|
payload: redactEventValue(payload),
|
|
84
119
|
});
|
|
85
120
|
}
|
|
86
|
-
|
|
87
|
-
|
|
121
|
+
let prepared = undefined;
|
|
122
|
+
let event = RunEventSchema.parse({
|
|
123
|
+
seq: this.nextSeq,
|
|
88
124
|
ts: nowIso(),
|
|
89
125
|
run_id: this.runId,
|
|
90
126
|
task_id: this.taskId,
|
|
@@ -92,16 +128,142 @@ export class EventLog {
|
|
|
92
128
|
type,
|
|
93
129
|
payload: redactEventValue(payload),
|
|
94
130
|
});
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
131
|
+
// Snapshot before terminal preparation: the hook may materialize sibling
|
|
132
|
+
// artifacts, but the event file rollback boundary is the pre-hook state.
|
|
133
|
+
const previousBytes = existsSync(this.path) ? statSync(this.path).size : null;
|
|
134
|
+
if (terminal) {
|
|
135
|
+
// Fence every re-entrant emit before the preparation hook, append, and
|
|
136
|
+
// durable sink form one terminal commit. The fence is released only by
|
|
137
|
+
// a complete rollback or after the terminal fully commits.
|
|
138
|
+
this.terminalCommitInProgress = true;
|
|
139
|
+
// Validate the exact redacted event before terminal preparation can
|
|
140
|
+
// materialize a receipt for it. Keep the hook registered until the event
|
|
141
|
+
// itself is durable so an append failure can retry the entire commit.
|
|
142
|
+
try {
|
|
143
|
+
prepared = this.beforeTerminal?.(terminalType, event.payload);
|
|
144
|
+
// Terminal preparation may canonicalize facts after consulting immutable
|
|
145
|
+
// artifacts. Commit the corresponding event type and payload as one
|
|
146
|
+
// validated unit so the receipt, durable event, and live publication
|
|
147
|
+
// cannot disagree.
|
|
148
|
+
event = RunEventSchema.parse(prepared
|
|
149
|
+
? {
|
|
150
|
+
...event,
|
|
151
|
+
type: prepared.type,
|
|
152
|
+
payload: redactEventValue(prepared.payload),
|
|
153
|
+
}
|
|
154
|
+
: event);
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
this.rollbackTerminal(previousBytes, prepared, error);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
if (terminal) {
|
|
161
|
+
let durableAuthorityCommitted = false;
|
|
162
|
+
try {
|
|
163
|
+
this.onPersist?.(event);
|
|
164
|
+
durableAuthorityCommitted = this.onPersist !== undefined;
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
this.rollbackTerminal(previousBytes, prepared, error);
|
|
168
|
+
}
|
|
169
|
+
try {
|
|
170
|
+
prepared?.commit?.();
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
if (durableAuthorityCommitted)
|
|
174
|
+
this.poisonAfterDurableCommit(error);
|
|
175
|
+
this.rollbackTerminal(previousBytes, prepared, error);
|
|
176
|
+
}
|
|
177
|
+
try {
|
|
178
|
+
appendLine(this.path, JSON.stringify(event));
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
if (durableAuthorityCommitted)
|
|
182
|
+
this.poisonAfterDurableCommit(error);
|
|
183
|
+
this.rollbackTerminal(previousBytes, prepared, error);
|
|
184
|
+
}
|
|
185
|
+
this.nextSeq += 1;
|
|
186
|
+
// The durable journal, canonical prepared receipt, and per-run event are
|
|
187
|
+
// now one committed terminal unit. Only now may observers see it.
|
|
188
|
+
this.terminalCommittedFlag = true;
|
|
189
|
+
this.terminalCommitInProgress = false;
|
|
190
|
+
this.beforeTerminal = undefined;
|
|
102
191
|
this.dispose();
|
|
192
|
+
try {
|
|
193
|
+
this.onPublish?.(event);
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
/* durable replay remains authoritative */
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
appendLine(this.path, JSON.stringify(event));
|
|
201
|
+
this.nextSeq += 1;
|
|
202
|
+
this.onPersist?.(event);
|
|
203
|
+
try {
|
|
204
|
+
this.onPublish?.(event);
|
|
205
|
+
}
|
|
206
|
+
catch {
|
|
207
|
+
/* best-effort live observer */
|
|
208
|
+
}
|
|
209
|
+
}
|
|
103
210
|
return event;
|
|
104
211
|
}
|
|
212
|
+
poisonAfterDurableCommit(originalError) {
|
|
213
|
+
this.terminalWriterPoisoned = true;
|
|
214
|
+
this.terminalCommitInProgress = false;
|
|
215
|
+
this.beforeTerminal = undefined;
|
|
216
|
+
// CommandStore repairs the per-run tail synchronously from the accepted
|
|
217
|
+
// journal terminal. Release the strong live-writer reference once that
|
|
218
|
+
// repair becomes visible; appendRunEvent also performs this check inline.
|
|
219
|
+
setImmediate(() => {
|
|
220
|
+
this.releaseRecoveredTerminalFence();
|
|
221
|
+
}).unref?.();
|
|
222
|
+
throw Object.assign(new AggregateError([originalError], "durable terminal authority committed but local finalization failed; restart required"), {
|
|
223
|
+
code: "terminal_recovery_required",
|
|
224
|
+
status: 503,
|
|
225
|
+
retryable: false,
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
/** @internal Release a poisoned live owner once journal recovery repairs its tail. */
|
|
229
|
+
releaseRecoveredTerminalFence() {
|
|
230
|
+
if (!this.terminalWriterPoisoned || !terminalEventInFile(this.path))
|
|
231
|
+
return false;
|
|
232
|
+
this.terminalCommittedFlag = true;
|
|
233
|
+
this.dispose();
|
|
234
|
+
return true;
|
|
235
|
+
}
|
|
236
|
+
rollbackTerminal(previousBytes, prepared, originalError) {
|
|
237
|
+
const rollbackErrors = [];
|
|
238
|
+
try {
|
|
239
|
+
if (previousBytes === null) {
|
|
240
|
+
if (existsSync(this.path))
|
|
241
|
+
unlinkSync(this.path);
|
|
242
|
+
}
|
|
243
|
+
else if (existsSync(this.path) && statSync(this.path).size !== previousBytes) {
|
|
244
|
+
truncateSync(this.path, previousBytes);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
catch (error) {
|
|
248
|
+
rollbackErrors.push(error);
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
prepared?.rollback?.();
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
rollbackErrors.push(error);
|
|
255
|
+
}
|
|
256
|
+
if (rollbackErrors.length > 0) {
|
|
257
|
+
// A partial rollback means neither retry nor an out-of-band append can
|
|
258
|
+
// safely infer the terminal boundary. Keep this live writer registered
|
|
259
|
+
// as an explicit poison fence until the owning process fails closed.
|
|
260
|
+
this.terminalWriterPoisoned = true;
|
|
261
|
+
this.terminalCommitInProgress = false;
|
|
262
|
+
throw new AggregateError([originalError, ...rollbackErrors], "terminal event commit failed and rollback was incomplete");
|
|
263
|
+
}
|
|
264
|
+
this.terminalCommitInProgress = false;
|
|
265
|
+
throw originalError;
|
|
266
|
+
}
|
|
105
267
|
/** Read and parse all events (skipping malformed lines, which are surfaced separately). */
|
|
106
268
|
readAll() {
|
|
107
269
|
const text = readTextSafe(this.path);
|
|
@@ -138,8 +300,12 @@ const activeEventLogs = new Map();
|
|
|
138
300
|
*/
|
|
139
301
|
export function appendRunEvent(path, runId, taskId, type, payload = {}) {
|
|
140
302
|
const live = activeEventLogs.get(path);
|
|
141
|
-
if (live)
|
|
303
|
+
if (live && !live.releaseRecoveredTerminalFence())
|
|
142
304
|
return live.emit(type, payload);
|
|
305
|
+
const terminal = type === "run.completed" || type === "run.failed" || type === "run.blocked";
|
|
306
|
+
if (terminal && terminalEventInFile(path)) {
|
|
307
|
+
throw new Error("run terminal event is already committed");
|
|
308
|
+
}
|
|
143
309
|
const event = RunEventSchema.parse({
|
|
144
310
|
seq: lastSeqInFile(path) + 1,
|
|
145
311
|
ts: nowIso(),
|
|
@@ -180,6 +346,28 @@ export function lastSeqInFile(path) {
|
|
|
180
346
|
}
|
|
181
347
|
return last;
|
|
182
348
|
}
|
|
349
|
+
function terminalEventInFile(path) {
|
|
350
|
+
const text = readTextSafe(path);
|
|
351
|
+
if (text === null)
|
|
352
|
+
return false;
|
|
353
|
+
for (const line of text.split("\n")) {
|
|
354
|
+
const trimmed = line.trim();
|
|
355
|
+
if (!trimmed)
|
|
356
|
+
continue;
|
|
357
|
+
try {
|
|
358
|
+
const event = RunEventSchema.parse(JSON.parse(trimmed));
|
|
359
|
+
if (event.type === "run.completed" ||
|
|
360
|
+
event.type === "run.failed" ||
|
|
361
|
+
event.type === "run.blocked") {
|
|
362
|
+
return true;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
catch {
|
|
366
|
+
/* malformed evidence cannot establish a terminal fence */
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
return false;
|
|
370
|
+
}
|
|
183
371
|
function redactEventValue(value) {
|
|
184
372
|
if (typeof value === "string")
|
|
185
373
|
return redactSecrets(value);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claudexor/event-log",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.7-rc.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Append-only JSONL run-event log (a projection-friendly evidence ledger).",
|
|
6
6
|
"type": "module",
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"dist"
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@claudexor/schema": "3.
|
|
20
|
-
"@claudexor/util": "3.
|
|
19
|
+
"@claudexor/schema": "3.3.7-rc.0",
|
|
20
|
+
"@claudexor/util": "3.3.7-rc.0"
|
|
21
21
|
},
|
|
22
22
|
"repository": {
|
|
23
23
|
"type": "git",
|