@cotal-ai/connector-core 0.18.0 → 0.19.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 (46) hide show
  1. package/dist/agent.d.ts.map +1 -1
  2. package/dist/agent.js +12 -2
  3. package/dist/agent.js.map +1 -1
  4. package/dist/agui-holder.d.ts +89 -0
  5. package/dist/agui-holder.d.ts.map +1 -0
  6. package/dist/agui-holder.js +135 -0
  7. package/dist/agui-holder.js.map +1 -0
  8. package/dist/agui-render.d.ts +100 -0
  9. package/dist/agui-render.d.ts.map +1 -0
  10. package/dist/agui-render.js +283 -0
  11. package/dist/agui-render.js.map +1 -0
  12. package/dist/agui-wal-path.d.ts +103 -0
  13. package/dist/agui-wal-path.d.ts.map +1 -0
  14. package/dist/agui-wal-path.js +324 -0
  15. package/dist/agui-wal-path.js.map +1 -0
  16. package/dist/agui.d.ts +727 -0
  17. package/dist/agui.d.ts.map +1 -0
  18. package/dist/agui.js +1114 -0
  19. package/dist/agui.js.map +1 -0
  20. package/dist/docs-bundle.generated.d.ts.map +1 -1
  21. package/dist/docs-bundle.generated.js +16 -9
  22. package/dist/docs-bundle.generated.js.map +1 -1
  23. package/dist/durable-source.d.ts +127 -0
  24. package/dist/durable-source.d.ts.map +1 -0
  25. package/dist/durable-source.js +219 -0
  26. package/dist/durable-source.js.map +1 -0
  27. package/dist/event-wal.d.ts +265 -0
  28. package/dist/event-wal.d.ts.map +1 -0
  29. package/dist/event-wal.js +698 -0
  30. package/dist/event-wal.js.map +1 -0
  31. package/dist/index.d.ts +5 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +5 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/launch.d.ts +78 -2
  36. package/dist/launch.d.ts.map +1 -1
  37. package/dist/launch.js +120 -0
  38. package/dist/launch.js.map +1 -1
  39. package/dist/tool-specs.d.ts +40 -2
  40. package/dist/tool-specs.d.ts.map +1 -1
  41. package/dist/tool-specs.js +51 -1
  42. package/dist/tool-specs.js.map +1 -1
  43. package/dist/tools.d.ts.map +1 -1
  44. package/dist/tools.js +5 -6
  45. package/dist/tools.js.map +1 -1
  46. package/package.json +8 -2
@@ -1 +1 @@
1
- {"version":3,"file":"docs-bundle.generated.js","sourceRoot":"","sources":["../src/docs-bundle.generated.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docs-bundle.generated.js","sourceRoot":"","sources":["../src/docs-bundle.generated.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * The DURABLE SOURCE read.
3
+ *
4
+ * **The in-process bus is a WAKE SIGNAL, never the data path.** Every harness Cotal connects to
5
+ * already persists an ordered, timestamped record of what the agent did: Claude Code writes a
6
+ * session JSONL, Codex writes a rollout JSONL, OpenCode persists to its own store behind
7
+ * `session.messages()`. A connector that instead reads the harness's in-memory event bus loses
8
+ * everything observed since the last publish the moment the process dies — silently, and with no
9
+ * gap visible to any consumer, because nothing was ever published to leave a hole in.
10
+ *
11
+ * So the contract is: the bus tells us *that* something changed; this reads *what* changed, from
12
+ * the source of record, resuming at a cursor that survives a crash.
13
+ *
14
+ * The cursor is OPAQUE to the caller and defined by each source. A file source uses a byte offset;
15
+ * a store-backed source uses whatever ordering key its own API exposes. The caller persists it and
16
+ * hands it back — it never parses it.
17
+ */
18
+ /**
19
+ * One record, WITH THE CURSOR THAT RESUMES AFTER IT — not just the value.
20
+ *
21
+ * **The per-record cursor is not a convenience; without it one-unit-one-frame is unimplementable.**
22
+ * The emitter may turn one read into several frames, and each frame must be its own durable
23
+ * pending/publish/ack cycle *with its own `sourceCursor`*. A read that offers only a single
24
+ * end-of-batch cursor gives a frame covering records 0..i exactly one legal cursor value to store:
25
+ * the one that says every record in the batch was consumed. Fold that frame, crash, and the frontier
26
+ * has advanced past records the later frames were carrying — with no `seq` gap and nothing for a
27
+ * consumer to notice. That is the silent loss this whole plane exists to make impossible, reached
28
+ * through the resume path rather than the publish one.
29
+ *
30
+ * The alternative, one read being indivisibly one frame, is worse: a restart's read returns
31
+ * everything appended since the cursor, so "a single unit that cannot fit FAILS LOUD"
32
+ * would fire on ordinary catch-up traffic.
33
+ */
34
+ export interface SourceRecord<T> {
35
+ value: T;
36
+ /** Pass to the next {@link DurableSource.read} to resume immediately after this record. */
37
+ cursor: string;
38
+ }
39
+ /** One read: the records that became available, and the cursor to resume from AFTER them. */
40
+ export interface SourceRead<T> {
41
+ records: SourceRecord<T>[];
42
+ /**
43
+ * Pass to the next {@link DurableSource.read}. Advances ONLY past fully-consumed records.
44
+ *
45
+ * Equal to the last record's cursor when the read is non-empty — an implementation MUST keep
46
+ * those two agreeing, and {@link JsonlFileSource} asserts it rather than assuming it.
47
+ * It is still carried separately because an EMPTY read has a cursor and no last record: a fresh
48
+ * adopt and a no-new-data poll both need one, and the cursor-only advance is defined on it.
49
+ */
50
+ cursor: string;
51
+ }
52
+ /** An append-only record of what a session did, re-readable after a crash. */
53
+ export interface DurableSource<T> {
54
+ /** For diagnostics and for naming which adapter produced a frame. */
55
+ readonly kind: string;
56
+ /**
57
+ * Read forward from `cursor` (or from the current end when it is `undefined` — a fresh adopt
58
+ * must not rebroadcast a session's entire history).
59
+ *
60
+ * MUST NOT return a partially-written record, and MUST NOT advance the cursor past one.
61
+ */
62
+ read(cursor: string | undefined): Promise<SourceRead<T>>;
63
+ }
64
+ /**
65
+ * A durable source over an append-only JSONL file — the shape both the Claude session transcript
66
+ * and the Codex rollout log take.
67
+ *
68
+ * **The partial-line rule is the whole point of this class.** The writer is a separate process
69
+ * appending concurrently, so a read can land mid-line. Parsing that yields either a throw or, far
70
+ * worse, a truncated object that looks valid. So: only content up to the LAST newline is consumed,
71
+ * and the cursor advances only that far. A trailing fragment is left for the next read, when the
72
+ * writer has finished it.
73
+ *
74
+ * Unparseable COMPLETE lines are a different case and are NOT skipped silently — they surface, so a
75
+ * format change is loud rather than a quiet hole in the record.
76
+ */
77
+ export declare class JsonlFileSource<T = unknown> implements DurableSource<T> {
78
+ private readonly path;
79
+ readonly kind = "jsonl-file";
80
+ constructor(path: string);
81
+ /**
82
+ * A cursor is `<dev>:<ino>:<offset>` — canonical, and BOUND TO THE FILE'S IDENTITY.
83
+ *
84
+ * The offset alone is not enough: a source replaced by an unrelated file of the same size or
85
+ * larger reads as an ordinary append, and the reader resumes at a byte offset inside a document
86
+ * it has never seen. Carrying `dev`/`ino` makes replacement DETECTABLE, which is the only thing
87
+ * that lets it fail loud instead of returning fabricated records.
88
+ *
89
+ * Parsed strictly: `Number()` coerces `" "` to 0 — replaying all history — and accepts `"1e0"`,
90
+ * `"01"`, `"+1"`. A cursor is persisted state handed back to us later, so a non-canonical one
91
+ * means something upstream is wrong, not something to guess at.
92
+ */
93
+ private static parseCursor;
94
+ /**
95
+ * A seal over **the last 512 bytes before the cursor** — a BOUNDED form of the invariant a
96
+ * resumable offset wants: *the bytes immediately before my cursor are still the bytes that were
97
+ * there when I stopped.*
98
+ *
99
+ * **THE BOUND IS PART OF THE GUARANTEE AND IS STATED HERE BECAUSE IT IS NOT THE WHOLE PREFIX.**
100
+ * A rewrite confined to bytes EARLIER than `offset - 512` that preserves the sealed window, the
101
+ * inode and the size is **not detected** — reproduced independently by three reviewers, including
102
+ * with an ordinary same-length in-place PII scrub of earlier transcript lines. That is a real
103
+ * limitation with known edges: a scrub via temp-file+rename changes the inode and IS caught; one
104
+ * that changes length trips the offset/identity path and IS caught; one touching the sealed window
105
+ * IS caught. Only same-inode, same-size, in-place, wholly-outside-the-window escapes.
106
+ *
107
+ * What that costs is bounded and worth naming precisely: the emit path stays correct, because the
108
+ * cursor never moves backwards and forward records are read from bytes the rewrite did not touch.
109
+ * What is lost is the ability to detect that already-consumed on-disk history drifted after we
110
+ * read it. If whole-prefix integrity is ever required, this span must cover it — or the cursor has
111
+ * to carry a rolling hash instead of a window.
112
+ *
113
+ * `dev`/`ino` catch unlink-and-recreate, but **not an in-place rewrite** (`writeFileSync` with no
114
+ * unlink keeps the inode), and that case resumes at a byte offset inside a different document and
115
+ * emits fragments of it as records (`fmae-rev-eng`, CONFIRMED). Size cannot catch it either when
116
+ * the replacement is larger.
117
+ *
118
+ * Note what this deliberately does NOT flag: a rewrite that reproduces the same preceding bytes.
119
+ * There the consumed prefix is genuinely unchanged, so resuming is correct — the seal states an
120
+ * invariant rather than guessing at intent.
121
+ */
122
+ private static sealAt;
123
+ /** Offset just past the last COMPLETE line at or before `limit` — a safe boundary to resume at. */
124
+ private static lastCompleteBoundary;
125
+ read(cursor: string | undefined): Promise<SourceRead<T>>;
126
+ }
127
+ //# sourceMappingURL=durable-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"durable-source.d.ts","sourceRoot":"","sources":["../src/durable-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,KAAK,EAAE,CAAC,CAAC;IACT,2FAA2F;IAC3F,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,6FAA6F;AAC7F,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B;;;;;;;OAOG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,8EAA8E;AAC9E,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1D;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,eAAe,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IAGvD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,QAAQ,CAAC,IAAI,gBAAgB;gBAEA,IAAI,EAAE,MAAM;IAEzC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAQ1B;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;mBACkB,MAAM;IAO3B,mGAAmG;mBAC9E,oBAAoB;IAgBnC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;CAwH/D"}
@@ -0,0 +1,219 @@
1
+ /**
2
+ * The DURABLE SOURCE read.
3
+ *
4
+ * **The in-process bus is a WAKE SIGNAL, never the data path.** Every harness Cotal connects to
5
+ * already persists an ordered, timestamped record of what the agent did: Claude Code writes a
6
+ * session JSONL, Codex writes a rollout JSONL, OpenCode persists to its own store behind
7
+ * `session.messages()`. A connector that instead reads the harness's in-memory event bus loses
8
+ * everything observed since the last publish the moment the process dies — silently, and with no
9
+ * gap visible to any consumer, because nothing was ever published to leave a hole in.
10
+ *
11
+ * So the contract is: the bus tells us *that* something changed; this reads *what* changed, from
12
+ * the source of record, resuming at a cursor that survives a crash.
13
+ *
14
+ * The cursor is OPAQUE to the caller and defined by each source. A file source uses a byte offset;
15
+ * a store-backed source uses whatever ordering key its own API exposes. The caller persists it and
16
+ * hands it back — it never parses it.
17
+ */
18
+ import { createHash } from "node:crypto";
19
+ import { constants } from "node:fs";
20
+ import { open } from "node:fs/promises";
21
+ /**
22
+ * A durable source over an append-only JSONL file — the shape both the Claude session transcript
23
+ * and the Codex rollout log take.
24
+ *
25
+ * **The partial-line rule is the whole point of this class.** The writer is a separate process
26
+ * appending concurrently, so a read can land mid-line. Parsing that yields either a throw or, far
27
+ * worse, a truncated object that looks valid. So: only content up to the LAST newline is consumed,
28
+ * and the cursor advances only that far. A trailing fragment is left for the next read, when the
29
+ * writer has finished it.
30
+ *
31
+ * Unparseable COMPLETE lines are a different case and are NOT skipped silently — they surface, so a
32
+ * format change is loud rather than a quiet hole in the record.
33
+ */
34
+ export class JsonlFileSource {
35
+ path;
36
+ kind = "jsonl-file";
37
+ constructor(path) {
38
+ this.path = path;
39
+ }
40
+ /**
41
+ * A cursor is `<dev>:<ino>:<offset>` — canonical, and BOUND TO THE FILE'S IDENTITY.
42
+ *
43
+ * The offset alone is not enough: a source replaced by an unrelated file of the same size or
44
+ * larger reads as an ordinary append, and the reader resumes at a byte offset inside a document
45
+ * it has never seen. Carrying `dev`/`ino` makes replacement DETECTABLE, which is the only thing
46
+ * that lets it fail loud instead of returning fabricated records.
47
+ *
48
+ * Parsed strictly: `Number()` coerces `" "` to 0 — replaying all history — and accepts `"1e0"`,
49
+ * `"01"`, `"+1"`. A cursor is persisted state handed back to us later, so a non-canonical one
50
+ * means something upstream is wrong, not something to guess at.
51
+ */
52
+ static parseCursor(cursor) {
53
+ const m = /^(\d+):(\d+):(0|[1-9]\d*):([0-9a-f]{16})$/.exec(cursor);
54
+ if (!m)
55
+ throw new Error(`JsonlFileSource: malformed cursor ${JSON.stringify(cursor)} (want <dev>:<ino>:<offset>:<seal>)`);
56
+ const offset = Number(m[3]);
57
+ if (!Number.isSafeInteger(offset))
58
+ throw new Error(`JsonlFileSource: cursor offset out of range in ${JSON.stringify(cursor)}`);
59
+ return { dev: m[1], ino: m[2], offset, seal: m[4] };
60
+ }
61
+ /**
62
+ * A seal over **the last 512 bytes before the cursor** — a BOUNDED form of the invariant a
63
+ * resumable offset wants: *the bytes immediately before my cursor are still the bytes that were
64
+ * there when I stopped.*
65
+ *
66
+ * **THE BOUND IS PART OF THE GUARANTEE AND IS STATED HERE BECAUSE IT IS NOT THE WHOLE PREFIX.**
67
+ * A rewrite confined to bytes EARLIER than `offset - 512` that preserves the sealed window, the
68
+ * inode and the size is **not detected** — reproduced independently by three reviewers, including
69
+ * with an ordinary same-length in-place PII scrub of earlier transcript lines. That is a real
70
+ * limitation with known edges: a scrub via temp-file+rename changes the inode and IS caught; one
71
+ * that changes length trips the offset/identity path and IS caught; one touching the sealed window
72
+ * IS caught. Only same-inode, same-size, in-place, wholly-outside-the-window escapes.
73
+ *
74
+ * What that costs is bounded and worth naming precisely: the emit path stays correct, because the
75
+ * cursor never moves backwards and forward records are read from bytes the rewrite did not touch.
76
+ * What is lost is the ability to detect that already-consumed on-disk history drifted after we
77
+ * read it. If whole-prefix integrity is ever required, this span must cover it — or the cursor has
78
+ * to carry a rolling hash instead of a window.
79
+ *
80
+ * `dev`/`ino` catch unlink-and-recreate, but **not an in-place rewrite** (`writeFileSync` with no
81
+ * unlink keeps the inode), and that case resumes at a byte offset inside a different document and
82
+ * emits fragments of it as records (`fmae-rev-eng`, CONFIRMED). Size cannot catch it either when
83
+ * the replacement is larger.
84
+ *
85
+ * Note what this deliberately does NOT flag: a rewrite that reproduces the same preceding bytes.
86
+ * There the consumed prefix is genuinely unchanged, so resuming is correct — the seal states an
87
+ * invariant rather than guessing at intent.
88
+ */
89
+ static async sealAt(fh, offset) {
90
+ const span = Math.min(offset, 512); // the WINDOW, not the whole prefix — see the bound above
91
+ const buf = Buffer.allocUnsafe(span);
92
+ if (span > 0)
93
+ await fh.read(buf, 0, span, offset - span);
94
+ return createHash("sha256").update(buf.subarray(0, span)).digest("hex").slice(0, 16);
95
+ }
96
+ /** Offset just past the last COMPLETE line at or before `limit` — a safe boundary to resume at. */
97
+ static async lastCompleteBoundary(fh, limit) {
98
+ if (limit === 0)
99
+ return 0;
100
+ const window = 64 * 1024;
101
+ let searched = 0;
102
+ while (searched < limit) {
103
+ const len = Math.min(window, limit - searched);
104
+ const at = limit - searched - len;
105
+ const buf = Buffer.allocUnsafe(len);
106
+ const { bytesRead } = await fh.read(buf, 0, len, at);
107
+ const idx = buf.subarray(0, bytesRead).lastIndexOf(0x0a);
108
+ if (idx !== -1)
109
+ return at + idx + 1;
110
+ searched += len;
111
+ }
112
+ return 0; // no newline anywhere: nothing in the file is a complete record yet
113
+ }
114
+ async read(cursor) {
115
+ // O_NOFOLLOW: a symlinked source is REFUSED, not followed.
116
+ //
117
+ // No seam feeds this class a caller-controlled path today — each connector supplies its own
118
+ // harness-native session file — so this is a fence built before the thing it fences exists.
119
+ // That is deliberate and it is the cheap moment: once a caller-supplied path seam does exist,
120
+ // adding this stops being a fix and becomes a compatibility argument with whoever is already
121
+ // relying on the old behaviour. The same rule the maintenance reader already applies to its
122
+ // resume document (`O_RDONLY | O_NOFOLLOW`), for the same reason.
123
+ const fh = await open(this.path, constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0));
124
+ try {
125
+ const st = await fh.stat();
126
+ const size = st.size;
127
+ const dev = String(st.dev), ino = String(st.ino);
128
+ const here = async (offset) => `${dev}:${ino}:${offset}:${await JsonlFileSource.sealAt(fh, offset)}`;
129
+ // A fresh adopt starts at the last COMPLETE record boundary, NEVER at the physical end.
130
+ // Adopting mid-line makes the next read parse only the SUFFIX of a record the writer was
131
+ // still appending: adopt at byte 1 of `{"i":1`, let the writer finish `2}\n`, and the source
132
+ // emits `2}` while the real record is `{"i":12}`. That is the truncated-record corruption the
133
+ // partial-line rule exists to prevent, reached through the adopt path instead of the read one.
134
+ if (cursor === undefined)
135
+ return { records: [], cursor: await here(await JsonlFileSource.lastCompleteBoundary(fh, size)) };
136
+ const from = JsonlFileSource.parseCursor(cursor);
137
+ // Replacement is DETECTED by identity, not inferred from size — a replacement that is the
138
+ // same size or larger looks exactly like an append, and resuming at the old offset emits
139
+ // fragments of a document this reader has never seen. Re-adopting silently loses records and
140
+ // restarting resends them, so neither is guessed here: the caller decides.
141
+ if (from.dev !== dev || from.ino !== ino)
142
+ throw new Error(`JsonlFileSource: ${this.path} is not the file this cursor came from ` +
143
+ `(cursor ${from.dev}:${from.ino}, now ${dev}:${ino}) — it was replaced or rotated`);
144
+ if (from.offset > size)
145
+ throw new Error(`JsonlFileSource: cursor offset ${from.offset} is past end ${size} for ${this.path} — the file was truncated`);
146
+ // The last 512 bytes of the consumed prefix must still be the bytes we consumed. dev/ino catch
147
+ // unlink-and-recreate; this catches an IN-PLACE rewrite, which keeps the inode and which size
148
+ // cannot see when the replacement is larger. It is a WINDOW, not the whole prefix: a rewrite
149
+ // confined to bytes before `offset - 512` passes here. See `sealAt` for the bound and its edges.
150
+ const seal = await JsonlFileSource.sealAt(fh, from.offset);
151
+ if (seal !== from.seal)
152
+ throw new Error(`JsonlFileSource: the bytes before offset ${from.offset} in ${this.path} have changed ` +
153
+ `(seal ${from.seal} -> ${seal}) — the file was rewritten in place, not appended to`);
154
+ if (from.offset === size)
155
+ return { records: [], cursor: await here(from.offset) };
156
+ const len = size - from.offset;
157
+ const buf = Buffer.allocUnsafe(len);
158
+ const { bytesRead } = await fh.read(buf, 0, len, from.offset);
159
+ const chunk = buf.subarray(0, bytesRead);
160
+ // Consume only up to the last newline; anything after it is a line still being written.
161
+ const lastNl = chunk.lastIndexOf(0x0a);
162
+ if (lastNl === -1)
163
+ return { records: [], cursor: await here(from.offset) };
164
+ // FATAL decode. `Buffer.toString("utf8")` substitutes U+FFFD for invalid bytes, so a
165
+ // malformed byte inside an otherwise valid JSON string survives `JSON.parse` as CHANGED DATA
166
+ // and would publish as if it were what the agent did. Silently rewriting a record is the same
167
+ // class of harm as consuming a truncated one.
168
+ let complete;
169
+ try {
170
+ complete = new TextDecoder("utf-8", { fatal: true }).decode(chunk.subarray(0, lastNl));
171
+ }
172
+ catch (e) {
173
+ throw new Error(`JsonlFileSource: invalid UTF-8 at offset ~${from.offset} in ${this.path}: ${e.message}`);
174
+ }
175
+ // PER-RECORD CURSORS, AND THE ARITHMETIC IS IN BYTES BECAUSE THE FILE IS.
176
+ //
177
+ // `complete` is a decoded STRING; the cursor is a BYTE offset. A record containing any
178
+ // non-ASCII character makes `line.length` smaller than the bytes it occupies, so walking the
179
+ // split with character lengths silently mis-places the cursor of every record after the first
180
+ // multi-byte one — and the resume then lands mid-record, which is precisely the truncated-read
181
+ // corruption the partial-line rule exists to prevent. The decode above was FATAL, so `line`
182
+ // re-encodes to exactly the bytes it came from; `Buffer.byteLength` is that re-encoding.
183
+ //
184
+ // A blank line is not a record but it IS bytes, so it advances the offset like any other.
185
+ const records = [];
186
+ let at = from.offset;
187
+ for (const line of complete.split("\n")) {
188
+ at += Buffer.byteLength(line, "utf8") + 1; // + the newline that terminated it
189
+ if (line.trim() === "")
190
+ continue; // blank separators are not records
191
+ let value;
192
+ try {
193
+ value = JSON.parse(line);
194
+ }
195
+ catch (e) {
196
+ throw new Error(`JsonlFileSource: unparseable complete line at offset ~${from.offset} in ${this.path}: ${e.message}`);
197
+ }
198
+ // One seal per record, computed by the SAME function the batch cursor uses. It is a 512-byte
199
+ // read each, which is the honest cost of not having a second sealing path here — and two
200
+ // places that both compute a cursor would drift exactly the way two places that both compute
201
+ // a size do.
202
+ records.push({ value, cursor: await here(at) });
203
+ }
204
+ const end = from.offset + lastNl + 1;
205
+ // The walk must land exactly on the batch boundary. It is arithmetic over the same bytes, so
206
+ // a disagreement means one of the two is wrong about what was consumed — and the dangerous
207
+ // direction is silent: a short walk hands back a cursor that re-reads records, a long one
208
+ // hands back a cursor that skips them. Cheap to check, and it is checked in the code that
209
+ // RUNS rather than asserted in a comment.
210
+ if (at !== end)
211
+ throw new Error(`JsonlFileSource: internal cursor walk ended at ${at} but the batch ends at ${end} in ${this.path}`);
212
+ return { records, cursor: await here(end) };
213
+ }
214
+ finally {
215
+ await fh.close();
216
+ }
217
+ }
218
+ }
219
+ //# sourceMappingURL=durable-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"durable-source.js","sourceRoot":"","sources":["../src/durable-source.ts"],"names":[],"mappings":"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"}