@simonepri/refined-antigravity-acp 1.3.1 → 1.4.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.
@@ -12,18 +12,28 @@
12
12
  import { type AcpFix } from "../../core/types.js";
13
13
  export declare const STEP_TYPE_USER = 14;
14
14
  export declare const STEP_TYPE_AGENT = 15;
15
+ export declare const STEP_TYPE_ERROR = 17;
15
16
  export declare const STEP_TYPE_CHECKPOINT = 23;
16
17
  export declare const CHECKPOINT_STATUS_IN_PROGRESS = 2;
17
18
  export declare const CHECKPOINT_STATUS_ABORTED = 5;
18
19
  export declare const DONE_CH_PANIC_MARKER = "could not find doneCh for checkpoint";
19
20
  export declare function getConversationDbPath(sessionId: string): string;
21
+ export declare function extractExecutorMetadataStepIdx(data: Uint8Array): number | null;
22
+ export declare function extractGenMetadataStepIndices(data: Uint8Array): {
23
+ stepIdx: number | null;
24
+ earliestIdx: number | null;
25
+ };
20
26
  /**
21
27
  * Automatically repairs orphaned in-progress steps (status=2), including checkpoints
22
28
  * (step_type=23) and action/tool steps (step_type=21), left behind by cancelled, aborted,
23
29
  * or interrupted Antigravity turns. Setting status=5 (aborted) prevents Antigravity
24
30
  * from crashing on resumption or next prompt with "could not find doneCh for checkpoint".
25
31
  *
26
- * Returns the number of repaired steps.
32
+ * Also prunes orphaned or out-of-bounds `executor_metadata` and `gen_metadata` entries
33
+ * whose step indices exceed the maximum valid step in `steps`, preventing fatal Go executor
34
+ * panics ("earliest step index is out of bounds: X vs Y").
35
+ *
36
+ * Returns the number of repaired steps and metadata records.
27
37
  */
28
38
  export declare function repairOrphanedCheckpoints(sessionId: string, customDbPath?: string): number;
29
39
  export declare const orphanedCheckpointsFix: AcpFix;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fixes/orphaned-checkpoints/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EAGL,KAAK,MAAM,EAEZ,MAAM,qBAAqB,CAAC;AAG7B,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,eAAO,MAAM,oBAAoB,yCAAyC,CAAC;AAE3E,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAmC1F;AAED,eAAO,MAAM,sBAAsB,EAAE,MAcpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,QAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fixes/orphaned-checkpoints/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EAGL,KAAK,MAAM,EAEZ,MAAM,qBAAqB,CAAC;AAI7B,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,eAAO,MAAM,oBAAoB,yCAAyC,CAAC;AAE3E,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAsB9E;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,UAAU,GAAG;IAC/D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAuBA;AA8DD;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAsC1F;AAED,eAAO,MAAM,sBAAsB,EAAE,MAiBpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,QAAyB,CAAC"}
@@ -15,8 +15,10 @@ import { join } from "node:path";
15
15
  import { DatabaseSync } from "node:sqlite";
16
16
  import { ACP_METHODS, } from "../../core/types.js";
17
17
  import { extractSessionId } from "../../core/session-cache.js";
18
+ import { decodeVarint, getField } from "../../lib/protobuf.js";
18
19
  export const STEP_TYPE_USER = 14;
19
20
  export const STEP_TYPE_AGENT = 15;
21
+ export const STEP_TYPE_ERROR = 17;
20
22
  export const STEP_TYPE_CHECKPOINT = 23;
21
23
  export const CHECKPOINT_STATUS_IN_PROGRESS = 2;
22
24
  export const CHECKPOINT_STATUS_ABORTED = 5;
@@ -25,13 +27,120 @@ export function getConversationDbPath(sessionId) {
25
27
  const geminiHome = process.env.GEMINI_HOME || join(homedir(), ".gemini");
26
28
  return join(geminiHome, "antigravity-acp", "conversations", `${sessionId}.db`);
27
29
  }
30
+ export function extractExecutorMetadataStepIdx(data) {
31
+ let offset = 0;
32
+ while (offset < data.length) {
33
+ const [tag, nextOffset] = decodeVarint(data, offset);
34
+ const fieldNum = tag >> 3;
35
+ const wireType = tag & 7;
36
+ if (wireType === 0) {
37
+ const [v, after] = decodeVarint(data, nextOffset);
38
+ if (fieldNum === 3)
39
+ return v;
40
+ offset = after;
41
+ }
42
+ else if (wireType === 2) {
43
+ const [len, afterLen] = decodeVarint(data, nextOffset);
44
+ offset = afterLen + len;
45
+ }
46
+ else if (wireType === 1) {
47
+ offset = nextOffset + 8;
48
+ }
49
+ else if (wireType === 5) {
50
+ offset = nextOffset + 4;
51
+ }
52
+ else {
53
+ break;
54
+ }
55
+ }
56
+ return null;
57
+ }
58
+ export function extractGenMetadataStepIndices(data) {
59
+ let stepIdx = null;
60
+ let earliestIdx = null;
61
+ const f2 = getField(data, 2);
62
+ if (f2 && f2.length >= 2) {
63
+ const [v1] = decodeVarint(f2, 0);
64
+ stepIdx = v1;
65
+ }
66
+ const f1 = getField(data, 1);
67
+ if (f1) {
68
+ const f9 = getField(f1, 9);
69
+ if (f9 && f9.length >= 2) {
70
+ const [tag, off] = decodeVarint(f9, 0);
71
+ if (tag >> 3 === 1) {
72
+ const [val] = decodeVarint(f9, off);
73
+ earliestIdx = val;
74
+ }
75
+ }
76
+ }
77
+ return { stepIdx, earliestIdx };
78
+ }
79
+ function repairStepCheckpoints(db) {
80
+ const stmt = db.prepare(`
81
+ UPDATE steps
82
+ SET status = ${CHECKPOINT_STATUS_ABORTED},
83
+ step_payload = CASE
84
+ WHEN length(step_payload) >= 4 AND substr(step_payload, 3, 2) = x'2002'
85
+ THEN CAST(substr(step_payload, 1, 3) || x'05' || substr(step_payload, 5) AS BLOB)
86
+ ELSE step_payload
87
+ END
88
+ WHERE status = ${CHECKPOINT_STATUS_IN_PROGRESS} OR (length(step_payload) >= 4 AND substr(step_payload, 3, 2) = x'2002');
89
+ `);
90
+ return Number(stmt.run().changes);
91
+ }
92
+ function pruneExecutorMetadata(db, maxStepIdx) {
93
+ const hasTable = db
94
+ .prepare("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'executor_metadata'")
95
+ .get();
96
+ if (!hasTable)
97
+ return 0;
98
+ let pruned = 0;
99
+ const rows = db
100
+ .prepare("SELECT idx, data FROM executor_metadata ORDER BY idx DESC")
101
+ .all();
102
+ for (const row of rows) {
103
+ if (!row.data)
104
+ continue;
105
+ const step = extractExecutorMetadataStepIdx(row.data);
106
+ if (step !== null && step > maxStepIdx) {
107
+ db.prepare("DELETE FROM executor_metadata WHERE idx = ?").run(row.idx);
108
+ pruned++;
109
+ }
110
+ }
111
+ return pruned;
112
+ }
113
+ function pruneGenMetadata(db, maxStepIdx) {
114
+ const hasTable = db
115
+ .prepare("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'gen_metadata'")
116
+ .get();
117
+ if (!hasTable)
118
+ return 0;
119
+ let pruned = 0;
120
+ const rows = db.prepare("SELECT idx, data FROM gen_metadata ORDER BY idx DESC").all();
121
+ for (const row of rows) {
122
+ if (!row.data)
123
+ continue;
124
+ const { stepIdx, earliestIdx } = extractGenMetadataStepIndices(row.data);
125
+ if ((stepIdx !== null && stepIdx > maxStepIdx) ||
126
+ (earliestIdx !== null && earliestIdx > maxStepIdx)) {
127
+ db.prepare("DELETE FROM gen_metadata WHERE idx = ?").run(row.idx);
128
+ pruned++;
129
+ }
130
+ }
131
+ return pruned;
132
+ }
28
133
  /**
29
134
  * Automatically repairs orphaned in-progress steps (status=2), including checkpoints
30
135
  * (step_type=23) and action/tool steps (step_type=21), left behind by cancelled, aborted,
31
136
  * or interrupted Antigravity turns. Setting status=5 (aborted) prevents Antigravity
32
137
  * from crashing on resumption or next prompt with "could not find doneCh for checkpoint".
33
138
  *
34
- * Returns the number of repaired steps.
139
+ * Also prunes orphaned or out-of-bounds `executor_metadata` and `gen_metadata` entries
140
+ * whose step indices exceed the maximum valid step in `steps`, preventing fatal Go executor
141
+ * panics ("earliest step index is out of bounds: X vs Y").
142
+ *
143
+ * Returns the number of repaired steps and metadata records.
35
144
  */
36
145
  export function repairOrphanedCheckpoints(sessionId, customDbPath) {
37
146
  const dbPath = customDbPath ?? getConversationDbPath(sessionId);
@@ -40,20 +149,21 @@ export function repairOrphanedCheckpoints(sessionId, customDbPath) {
40
149
  let db = null;
41
150
  try {
42
151
  db = new DatabaseSync(dbPath, { timeout: 2000 });
43
- const stmt = db.prepare(`
44
- UPDATE steps
45
- SET status = ${CHECKPOINT_STATUS_ABORTED},
46
- step_payload = CASE
47
- WHEN length(step_payload) >= 4 AND substr(step_payload, 3, 2) = x'2002'
48
- THEN CAST(substr(step_payload, 1, 3) || x'05' || substr(step_payload, 5) AS BLOB)
49
- ELSE step_payload
50
- END
51
- WHERE status = ${CHECKPOINT_STATUS_IN_PROGRESS} OR (length(step_payload) >= 4 AND substr(step_payload, 3, 2) = x'2002');
52
- `);
53
- const result = stmt.run();
54
- const repairedCount = Number(result.changes);
152
+ let repairedCount = repairStepCheckpoints(db);
153
+ const maxRow = db
154
+ .prepare(`SELECT max(idx) as m FROM steps WHERE step_type != ${STEP_TYPE_ERROR}`)
155
+ .get();
156
+ const maxStepIdx = maxRow?.m ?? null;
157
+ if (maxStepIdx !== null) {
158
+ const cleanErrorSteps = db
159
+ .prepare(`DELETE FROM steps WHERE idx > ? AND step_type = ${STEP_TYPE_ERROR}`)
160
+ .run(maxStepIdx);
161
+ repairedCount += Number(cleanErrorSteps.changes);
162
+ repairedCount += pruneExecutorMetadata(db, maxStepIdx);
163
+ repairedCount += pruneGenMetadata(db, maxStepIdx);
164
+ }
55
165
  if (repairedCount > 0) {
56
- console.error(`[refined-antigravity-acp] Repaired ${repairedCount} orphaned checkpoint/step(s) for session ${sessionId}`);
166
+ console.error(`[refined-antigravity-acp] Repaired ${repairedCount} orphaned checkpoint/step/metadata record(s) for session ${sessionId}`);
57
167
  }
58
168
  return repairedCount;
59
169
  }
@@ -69,7 +179,8 @@ export const orphanedCheckpointsFix = {
69
179
  name: "orphaned-checkpoints",
70
180
  description: "Repairs orphaned in-progress SQLite checkpoints to prevent fatal doneCh panics on resumption",
71
181
  onOutbound(msg, _context) {
72
- if ("method" in msg && msg.method === ACP_METHODS.SESSION_LOAD) {
182
+ if ("method" in msg &&
183
+ (msg.method === ACP_METHODS.SESSION_LOAD || msg.method === ACP_METHODS.SESSION_PROMPT)) {
73
184
  const sessionId = extractSessionId(msg);
74
185
  if (sessionId) {
75
186
  repairOrphanedCheckpoints(sessionId);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fixes/orphaned-checkpoints/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,WAAW,GAIZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEvC,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAE3C,MAAM,CAAC,MAAM,oBAAoB,GAAG,sCAAsC,CAAC;AAE3E,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,GAAG,SAAS,KAAK,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAAiB,EAAE,YAAqB;IAChF,MAAM,MAAM,GAAG,YAAY,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,CAAC;IAElC,IAAI,EAAE,GAAwB,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;qBAEP,yBAAyB;;;;;;uBAMvB,6BAA6B;KAC/C,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE7C,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CACX,sCAAsC,aAAa,4CAA4C,SAAS,EAAE,CAC3G,CAAC;QACJ,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CACX,sEAAsE,SAAS,GAAG,EAClF,GAAG,CACJ,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;YAAS,CAAC;QACT,EAAE,EAAE,KAAK,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAW;IAC5C,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EACT,8FAA8F;IAEhG,UAAU,CAAC,GAAqB,EAAE,QAAyB;QACzD,IAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC,YAAY,EAAE,CAAC;YAC/D,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,SAAS,EAAE,CAAC;gBACd,yBAAyB,CAAC,SAAS,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fixes/orphaned-checkpoints/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,WAAW,GAIZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEvC,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAE3C,MAAM,CAAC,MAAM,oBAAoB,GAAG,sCAAsC,CAAC;AAE3E,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,GAAG,SAAS,KAAK,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,IAAgB;IAC7D,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,CAAC;QAC1B,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;QACzB,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAClD,IAAI,QAAQ,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;YAC7B,MAAM,GAAG,KAAK,CAAC;QACjB,CAAC;aAAM,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACvD,MAAM,GAAG,QAAQ,GAAG,GAAG,CAAC;QAC1B,CAAC;aAAM,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,GAAG,UAAU,GAAG,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,GAAG,UAAU,GAAG,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,IAAgB;IAI5D,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,IAAI,WAAW,GAAkB,IAAI,CAAC;IAEtC,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7B,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACjC,OAAO,GAAG,EAAE,CAAC;IACf,CAAC;IAED,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7B,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3B,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACvC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnB,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACpC,WAAW,GAAG,GAAG,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,qBAAqB,CAAC,EAAgB;IAC7C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;mBAEP,yBAAyB;;;;;;qBAMvB,6BAA6B;GAC/C,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,qBAAqB,CAAC,EAAgB,EAAE,UAAkB;IACjE,MAAM,QAAQ,GAAG,EAAE;SAChB,OAAO,CAAC,oFAAoF,CAAC;SAC7F,GAAG,EAAE,CAAC;IACT,IAAI,CAAC,QAAQ;QAAE,OAAO,CAAC,CAAC;IAExB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CAAC,2DAA2D,CAAC;SACpE,GAAG,EAAqD,CAAC;IAC5D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,IAAI;YAAE,SAAS;QACxB,MAAM,IAAI,GAAG,8BAA8B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG,UAAU,EAAE,CAAC;YACvC,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvE,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAgB,EAAE,UAAkB;IAC5D,MAAM,QAAQ,GAAG,EAAE;SAChB,OAAO,CAAC,+EAA+E,CAAC;SACxF,GAAG,EAAE,CAAC;IACT,IAAI,CAAC,QAAQ;QAAE,OAAO,CAAC,CAAC;IAExB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,EAGjF,CAAC;IACH,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,IAAI;YAAE,SAAS;QACxB,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,6BAA6B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzE,IACE,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,GAAG,UAAU,CAAC;YAC1C,CAAC,WAAW,KAAK,IAAI,IAAI,WAAW,GAAG,UAAU,CAAC,EAClD,CAAC;YACD,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClE,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAAiB,EAAE,YAAqB;IAChF,MAAM,MAAM,GAAG,YAAY,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,CAAC;IAElC,IAAI,EAAE,GAAwB,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,IAAI,aAAa,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAE9C,MAAM,MAAM,GAAG,EAAE;aACd,OAAO,CAAC,sDAAsD,eAAe,EAAE,CAAC;aAChF,GAAG,EAAsC,CAAC;QAC7C,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC;QAErC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,eAAe,GAAG,EAAE;iBACvB,OAAO,CAAC,mDAAmD,eAAe,EAAE,CAAC;iBAC7E,GAAG,CAAC,UAAU,CAAC,CAAC;YACnB,aAAa,IAAI,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACjD,aAAa,IAAI,qBAAqB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;YACvD,aAAa,IAAI,gBAAgB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CACX,sCAAsC,aAAa,4DAA4D,SAAS,EAAE,CAC3H,CAAC;QACJ,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CACX,sEAAsE,SAAS,GAAG,EAClF,GAAG,CACJ,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;YAAS,CAAC;QACT,EAAE,EAAE,KAAK,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAW;IAC5C,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EACT,8FAA8F;IAEhG,UAAU,CAAC,GAAqB,EAAE,QAAyB;QACzD,IACE,QAAQ,IAAI,GAAG;YACf,CAAC,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC,YAAY,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC,cAAc,CAAC,EACtF,CAAC;YACD,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,SAAS,EAAE,CAAC;gBACd,yBAAyB,CAAC,SAAS,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,sBAAsB,CAAC"}
@@ -22,18 +22,43 @@ export interface PlanEntry {
22
22
  }
23
23
  export declare function createPlanUpdateMessage(sessionId: string, entries: PlanEntry[]): AcpStreamMessage;
24
24
  export interface SubagentInfo {
25
+ id?: string | undefined;
25
26
  role?: string | undefined;
26
27
  prompt?: string | undefined;
27
28
  typeName?: string | undefined;
29
+ conversationId?: string | undefined;
28
30
  }
31
+ export interface TrackedSubagentInfo extends SubagentInfo {
32
+ content: string;
33
+ status: "pending" | "in_progress" | "completed";
34
+ }
35
+ export interface SubagentStatusReport {
36
+ role?: string | undefined;
37
+ type?: string | undefined;
38
+ conversationId?: string | undefined;
39
+ state?: string | undefined;
40
+ }
41
+ export declare function isSubagentCompletedState(state?: string): boolean;
29
42
  export declare function parseSubagentsFromArgs(rawArgs: unknown): SubagentInfo[];
43
+ export declare function parseSubagentStatusReports(rawOutput: unknown): SubagentStatusReport[];
44
+ export declare function detectCompletedSubagentsInText(text: string, trackedSubagents: TrackedSubagentInfo[]): TrackedSubagentInfo[];
30
45
  export declare function formatSubagentContent(info: SubagentInfo): string;
46
+ export interface BackgroundTaskInfo {
47
+ desc: string;
48
+ taskId?: string | undefined;
49
+ }
50
+ export declare function detectLaunchedTasksInText(text: string): BackgroundTaskInfo[];
51
+ export declare function reconstructPlanFromSteps(steps: readonly unknown[]): PlanEntry[];
31
52
  export declare class BackgroundTasksTracker {
32
53
  private readonly sessions;
33
54
  private readonly promptIdToSessionId;
34
55
  private getOrCreate;
35
56
  getEntries(sessionId: string): readonly PlanEntry[];
57
+ hasActiveTasksOrSubagents(sessionId: string): boolean;
58
+ setPendingPlan(sessionId: string, entries: PlanEntry[]): void;
59
+ flushPendingPlan(sessionId: string): AcpStreamMessage | null;
36
60
  onPromptStart(sessionId: string, promptId?: string | number | undefined): void;
61
+ recordTaskId(sessionId: string, taskId: string, content: string): void;
37
62
  getSessionForPromptId(promptId: string | number): string | undefined;
38
63
  isWaitingForTasks(sessionId: string): boolean;
39
64
  setWaiting(sessionId: string, waiting: boolean): void;
@@ -41,6 +66,9 @@ export declare class BackgroundTasksTracker {
41
66
  getToolCommand(sessionId: string, toolCallId: string): string | undefined;
42
67
  deferPromptResponse(sessionId: string, response: AcpStreamMessage): void;
43
68
  recordSubagents(sessionId: string, subagents: SubagentInfo[], toolCallId?: string): PlanEntry[];
69
+ updateFromManageSubagents(sessionId: string, rawOutput: unknown): PlanEntry[] | null;
70
+ updateFromText(sessionId: string, text: string): PlanEntry[] | null;
71
+ updateFromManageTask(sessionId: string, rawOutput: unknown): PlanEntry[] | null;
44
72
  recordCustomTask(sessionId: string, content: string, priority?: "high" | "medium" | "low", toolCallId?: string): PlanEntry[];
45
73
  onWaitingForTasks(sessionId: string): AcpStreamMessage | null;
46
74
  onRunning(sessionId: string): AcpStreamMessage | null;
@@ -54,6 +82,8 @@ export declare class BackgroundTasksTracker {
54
82
  }
55
83
  export declare function inferToolName(name?: string | null, title?: string | null, rawInput?: unknown): string | null;
56
84
  export declare function formatScheduleTask(rawArgs: unknown): string;
85
+ export declare function extractBackgroundTaskInfo(rawOutput: unknown, _toolCallId?: string | undefined, storedCommand?: string | undefined): BackgroundTaskInfo | null;
86
+ export declare function extractBackgroundTaskDescription(rawOutput: unknown, toolCallId?: string | undefined, storedCommand?: string | undefined): string | null;
57
87
  export declare function createSilentBackgroundTasksFix(_options?: BackgroundTasksOptions | undefined): AcpFix & {
58
88
  tracker: BackgroundTasksTracker;
59
89
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fixes/silent-background-tasks/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fixes/silent-background-tasks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAKL,KAAK,MAAM,EACX,KAAK,gBAAgB,EAGrB,KAAK,aAAa,EAGnB,MAAM,qBAAqB,CAAC;AAU7B,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AACtD,eAAO,MAAM,aAAa,aAAa,CAAC;AACxC,eAAO,MAAM,4BAA4B,2CAA2C,CAAC;AAErF,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;CAC9D;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpC,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;CACjD;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAYjG;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;CACjD;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED,wBAAgB,wBAAwB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAIhE;AAkDD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,EAAE,CAGvE;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,OAAO,GAAG,oBAAoB,EAAE,CAyBrF;AAkED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,mBAAmB,EAAE,GACtC,mBAAmB,EAAE,CAoBvB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAahE;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAc5E;AA2BD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,EAAE,CAS/E;AAkHD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyC;IAClE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsC;IAE1E,OAAO,CAAC,WAAW;IAwBnB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,SAAS,EAAE;IAInD,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAUrD,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;IAI7D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAQ5D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI;IAiB9E,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAQtE,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IAIpE,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI7C,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAIrD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAI/E,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIzE,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAIxE,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE;IAuC/F,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,SAAS,EAAE,GAAG,IAAI;IAepF,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,IAAI;IAUnE,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,SAAS,EAAE,GAAG,IAAI;IAkB/E,gBAAgB,CACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,GAAG,QAAQ,GAAG,KAAgB,EAC9C,UAAU,CAAC,EAAE,MAAM,GAClB,SAAS,EAAE;IAgBd,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAqB7D,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAwBrD,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,GAAG,gBAAgB,GAAG,IAAI;IA8BvF,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG;QAC3B,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;QACjC,eAAe,EAAE,gBAAgB,GAAG,IAAI,CAAC;KAC1C;IAsBD,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAoBrD,OAAO,IAAI,IAAI;CAIhB;AA8BD,wBAAgB,aAAa,CAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EACpB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,QAAQ,CAAC,EAAE,OAAO,GACjB,MAAM,GAAG,IAAI,CAGf;AAgDD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAqB3D;AA2CD,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,OAAO,EAClB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,EAChC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,GACjC,kBAAkB,GAAG,IAAI,CAQ3B;AAED,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,OAAO,EAClB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,EAC/B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,GACjC,MAAM,GAAG,IAAI,CAEf;AAuSD,wBAAgB,8BAA8B,CAC5C,QAAQ,CAAC,EAAE,sBAAsB,GAAG,SAAS,GAC5C,MAAM,GAAG;IAAE,OAAO,EAAE,sBAAsB,CAAA;CAAE,CAkC9C;AAED,eAAO,MAAM,wBAAwB;aApCd,sBAAsB;CAoC2B,CAAC;AACzE,eAAO,MAAM,wBAAwB,uCAAiC,CAAC;AACvE,eAAO,MAAM,kBAAkB;aAtCR,sBAAsB;CAsCa,CAAC"}