@songsid/agend 2.1.12-beta.8 → 2.1.12-beta.9

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.
@@ -0,0 +1,148 @@
1
+ /**
2
+ * #1379: read a CLI transcript forward from a delivery's checkpoint, looking for that delivery's own marker, in looks
3
+ * that are bounded in bytes and in time — because the submission proof that uses it polls every 250 ms while holding
4
+ * the pane lock and the delivery lane:
5
+ * - one look reads at most TRANSCRIPT_PROOF_READ.chunkBytes past where the previous completed look stopped, and only
6
+ * complete lines are decoded, each held to maxLineBytes first (a longer one is skipped whole and proves nothing);
7
+ * - one look settles within lookBudgetMs. A read that has not finished by then is abandoned: its result, when it does
8
+ * come, is dropped whole (neither its bytes nor its verdict are applied), and while it is still outstanding the next
9
+ * look reports "pending" rather than starting a second read.
10
+ * Positive only: the verdict is this delivery's exact marker in a consumed or queued shape, or nothing.
11
+ */
12
+ import { open, stat } from "node:fs/promises";
13
+ import { transcriptDeltaDeliveryMarker } from "./delivery-reconciliation.js";
14
+ export const TRANSCRIPT_PROOF_READ = {
15
+ /** Bytes one look reads past the reader's position. */
16
+ chunkBytes: 256 * 1024,
17
+ /** A line longer than this (without its newline) is never decoded: skipped. */
18
+ maxLineBytes: 256 * 1024,
19
+ /** A look settles within this; a slower read is abandoned and its late result dropped. */
20
+ lookBudgetMs: 250,
21
+ };
22
+ export class TranscriptDeltaReader {
23
+ path;
24
+ backend;
25
+ deliveryId;
26
+ position;
27
+ carry = Buffer.alloc(0);
28
+ skippingLine = false;
29
+ inFlight = false;
30
+ constructor(path, offset, backend, deliveryId) {
31
+ this.path = path;
32
+ this.backend = backend;
33
+ this.deliveryId = deliveryId;
34
+ this.position = offset;
35
+ }
36
+ /** Where the next look reads from (tests). */
37
+ get readPosition() { return this.position; }
38
+ /** One bounded look. Never throws. */
39
+ async look() {
40
+ if (this.inFlight)
41
+ return "pending";
42
+ this.inFlight = true;
43
+ let abandoned = false;
44
+ let timer;
45
+ const read = this.readChunk().finally(() => { this.inFlight = false; });
46
+ const budget = new Promise(resolve => {
47
+ timer = setTimeout(() => resolve("timeout"), TRANSCRIPT_PROOF_READ.lookBudgetMs);
48
+ timer.unref?.();
49
+ });
50
+ try {
51
+ const got = await Promise.race([read, budget]);
52
+ if (got === "timeout") {
53
+ abandoned = true;
54
+ return "pending";
55
+ }
56
+ if (got === "unavailable")
57
+ return "unavailable";
58
+ if (got === null)
59
+ return "no-match";
60
+ this.position += got.length;
61
+ return this.scan(got) ?? "no-match";
62
+ }
63
+ catch {
64
+ return "unavailable";
65
+ }
66
+ finally {
67
+ if (timer)
68
+ clearTimeout(timer);
69
+ // An abandoned read's result is dropped whole when it lands: nothing above applied it.
70
+ if (abandoned)
71
+ read.catch(() => { });
72
+ }
73
+ }
74
+ /** The next chunk past the position (null: nothing new), without touching the reader's state. */
75
+ async readChunk() {
76
+ let size;
77
+ try {
78
+ size = (await stat(this.path)).size;
79
+ }
80
+ catch {
81
+ return "unavailable";
82
+ }
83
+ if (size < this.position)
84
+ return "unavailable"; // truncated or replaced below the checkpoint
85
+ if (size === this.position)
86
+ return null;
87
+ const length = Math.min(TRANSCRIPT_PROOF_READ.chunkBytes, size - this.position);
88
+ let fh;
89
+ try {
90
+ fh = await open(this.path, "r");
91
+ }
92
+ catch {
93
+ return "unavailable";
94
+ }
95
+ try {
96
+ const buffer = Buffer.alloc(length);
97
+ let read = 0;
98
+ while (read < length) {
99
+ const { bytesRead } = await fh.read(buffer, read, length - read, this.position + read);
100
+ if (bytesRead === 0)
101
+ break;
102
+ read += bytesRead;
103
+ }
104
+ return buffer.subarray(0, read);
105
+ }
106
+ catch {
107
+ return "unavailable";
108
+ }
109
+ finally {
110
+ await fh.close().catch(() => { });
111
+ }
112
+ }
113
+ /** The complete lines of this chunk (and the carried start of one), each within the cap, judged once. */
114
+ scan(chunk) {
115
+ let data = chunk;
116
+ if (this.skippingLine) {
117
+ const nl = data.indexOf(0x0a);
118
+ if (nl < 0)
119
+ return null;
120
+ data = data.subarray(nl + 1);
121
+ this.skippingLine = false;
122
+ }
123
+ const buffer = this.carry.length ? Buffer.concat([this.carry, data]) : data;
124
+ const lastNl = buffer.lastIndexOf(0x0a);
125
+ let found = null;
126
+ if (lastNl < 0) {
127
+ this.carry = buffer;
128
+ }
129
+ else {
130
+ this.carry = buffer.subarray(lastNl + 1);
131
+ const kept = [];
132
+ for (let start = 0; start <= lastNl;) {
133
+ const nl = buffer.indexOf(0x0a, start);
134
+ if (nl - start <= TRANSCRIPT_PROOF_READ.maxLineBytes)
135
+ kept.push(buffer.subarray(start, nl + 1));
136
+ start = nl + 1;
137
+ }
138
+ if (kept.length)
139
+ found = transcriptDeltaDeliveryMarker(Buffer.concat(kept).toString("utf8"), this.backend, this.deliveryId) ?? null;
140
+ }
141
+ if (this.carry.length > TRANSCRIPT_PROOF_READ.maxLineBytes) {
142
+ this.carry = Buffer.alloc(0);
143
+ this.skippingLine = true;
144
+ }
145
+ return found;
146
+ }
147
+ }
148
+ //# sourceMappingURL=transcript-delta-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-delta-reader.js","sourceRoot":"","sources":["../src/transcript-delta-reader.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@ export declare class TranscriptMonitor extends EventEmitter {
21
21
  private pollTimer;
22
22
  private offsetFile;
23
23
  private polling;
24
+ private generation;
24
25
  constructor(instanceDir: string, logger: Logger, source?: TranscriptSource | null);
25
26
  private loadOffset;
26
27
  private saveOffset;
@@ -32,6 +33,7 @@ export declare class TranscriptMonitor extends EventEmitter {
32
33
  private _doPoll;
33
34
  private processEntry;
34
35
  startPolling(intervalMs?: number): void;
36
+ initialize(): Promise<void>;
35
37
  stop(): void;
36
38
  setTranscriptPath(path: string): void;
37
39
  resetOffset(): void;
@@ -22,6 +22,7 @@ export class TranscriptMonitor extends EventEmitter {
22
22
  pollTimer = null;
23
23
  offsetFile;
24
24
  polling = false; // reentry guard for pollIncrement
25
+ generation = 0;
25
26
  constructor(instanceDir, logger, source = null) {
26
27
  super();
27
28
  this.instanceDir = instanceDir;
@@ -108,14 +109,26 @@ export class TranscriptMonitor extends EventEmitter {
108
109
  }
109
110
  }
110
111
  async pollSource() {
112
+ const generation = this.generation;
111
113
  try {
112
114
  const events = await this.source.poll();
113
- for (const use of events.toolUses)
115
+ if (generation !== this.generation)
116
+ return;
117
+ for (const use of events.toolUses) {
118
+ if (generation !== this.generation)
119
+ return;
114
120
  this.emit("tool_use", use.name, use.input);
115
- for (const result of events.toolResults)
121
+ }
122
+ for (const result of events.toolResults) {
123
+ if (generation !== this.generation)
124
+ return;
116
125
  this.emit("tool_result", result.name, undefined);
117
- for (const text of events.assistantTexts)
126
+ }
127
+ for (const text of events.assistantTexts) {
128
+ if (generation !== this.generation)
129
+ return;
118
130
  this.emit("assistant_text", text);
131
+ }
119
132
  }
120
133
  catch (err) {
121
134
  this.logger.debug({ err }, "TranscriptSource poll error");
@@ -196,7 +209,9 @@ export class TranscriptMonitor extends EventEmitter {
196
209
  return;
197
210
  this.pollTimer = setInterval(() => this.pollIncrement(), intervalMs);
198
211
  }
212
+ async initialize() { await this.source?.initialize?.(); }
199
213
  stop() {
214
+ this.generation++;
200
215
  if (this.pollTimer) {
201
216
  clearInterval(this.pollTimer);
202
217
  this.pollTimer = null;
@@ -213,6 +228,7 @@ export class TranscriptMonitor extends EventEmitter {
213
228
  this.transcriptPath = path;
214
229
  }
215
230
  resetOffset() {
231
+ this.generation++;
216
232
  this.byteOffset = 0;
217
233
  this.transcriptPath = null;
218
234
  this.source?.reset();
@@ -1 +1 @@
1
- {"version":3,"file":"transcript-monitor.js","sourceRoot":"","sources":["../src/transcript-monitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transcript-monitor.js","sourceRoot":"","sources":["../src/transcript-monitor.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import { type RolloutIndex } from "./rollout-index.js";
2
+ import { type KiroDbLane } from "./kiro-transcript-lane.js";
3
+ export { extractKiroAssistantStrings } from "./kiro-db-reader.js";
2
4
  export interface ToolUseEvent {
3
5
  name: string;
4
6
  input: unknown;
@@ -19,6 +21,8 @@ export interface TranscriptCheckpoint {
19
21
  export interface TranscriptSource {
20
22
  /** Read events that appeared since the previous call. Invoked serially. */
21
23
  poll(): Promise<TranscriptEvents>;
24
+ /** Asynchronous baseline barrier, awaited before startup becomes accepting. */
25
+ initialize?(): Promise<void>;
22
26
  /** Forget the current position; the next poll re-resolves and re-baselines. */
23
27
  reset(): void;
24
28
  /** Optional durable-delivery checkpoint taken immediately before pane paste. */
@@ -103,8 +107,6 @@ export type KiroConversationRead = {
103
107
  export declare function readKiroConversationStatus(dbPath: string, workingDirectory: string,
104
108
  /** False = metadata only (no value read, no JSON parse): the poll fast path. */
105
109
  includeHistory?: boolean): KiroConversationRead;
106
- /** Strings a kiro assistant turn can carry: plain response + tool-call text. */
107
- export declare function extractKiroAssistantStrings(entry: unknown): string[];
108
110
  /**
109
111
  * Follows the newest Kiro conversation whose cwd matches this instance.
110
112
  * Kiro 2.19 moved primary conversations to conversations_v2 in data.sqlite3;
@@ -114,57 +116,20 @@ export declare class KiroSessionSource implements TranscriptSource {
114
116
  private workingDirectory;
115
117
  private sessionsDir;
116
118
  private dbPath;
119
+ private lane;
117
120
  private currentFile;
118
121
  private byteOffset;
119
122
  private readonly createdAt;
120
- private dbConversationId;
121
- private dbHistoryCursor;
122
- private dbSignature;
123
- private dbToolNames;
124
- /**
125
- * One read-only handle for the life of the poll loop (#1048). Kiro's store
126
- * is one database for every conversation — ~1 GB on a lived-in machine —
127
- * and opening it per poll, for every kiro instance every 2 s, ran on the
128
- * fleet's event loop.
129
- */
130
- private db;
131
- /** The store file the handle was opened on; a replaced file is reopened. */
132
- private dbIno;
133
- private newestRowStmt;
134
- private historyStmt;
135
- private createdAtStmt;
136
- constructor(workingDirectory: string, sessionsDir?: string, now?: number, dbPath?: string);
123
+ private generation;
124
+ private cursor;
125
+ private lease;
126
+ private ready;
127
+ private needsBaseline;
128
+ constructor(workingDirectory: string, sessionsDir?: string, now?: number, dbPath?: string, lane?: KiroDbLane);
129
+ initialize(): Promise<void>;
137
130
  reset(): void;
138
- /** Resolved once per baseline: realpath is a syscall, and this runs every poll. */
139
- private dbKeys;
140
- private workingDirectoryKeys;
141
131
  close(): void;
142
- /** The shared handle, opened on first use; null while the store is absent. */
143
- private openDb;
144
- /**
145
- * The newest conversation for this workspace and its change signal. The
146
- * size is `octet_length`, which SQLite answers from the record header:
147
- * `length()` on TEXT counts characters, so it read every conversation in
148
- * full on every poll (#1048) — 56 ms a round across 13 real kiro
149
- * workspaces, against 0.05 ms for this. The size stays in the signature
150
- * because two saves inside one millisecond share an `updated_at`.
151
- * No `created_at` either: it is stored after `value`, so reading it walks
152
- * the whole conversation too (9 ms for one 18 MB row); `updated_at` comes
153
- * from the key index. `conversationCreatedAt()` reads it on a switch.
154
- */
155
- private newestDbRow;
156
- /** When a conversation began; read only when the poll switches to it. */
157
- private conversationCreatedAt;
158
- /** The whole history, read only when the signature says it changed. */
159
- private readDbHistory;
160
- /**
161
- * Kiro 2.19 moved primary conversations into data.sqlite3. Snapshot the
162
- * active row synchronously at monitor creation so its existing history is
163
- * never replayed as live tool progress.
164
- */
165
- private snapshotDbBaseline;
166
132
  private pollDb;
167
- private pollDbSync;
168
133
  /**
169
134
  * What each session's metadata said, keyed by file and valid for the mtime/size it was
170
135
  * read at (#1161): the fallback used to re-read and re-parse EVERY session's JSON on every