ds-harness-remote 0.4.26 → 0.5.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 (165) hide show
  1. package/README.md +6 -6
  2. package/dist/acp/adapter.d.ts +19 -0
  3. package/dist/acp/adapter.d.ts.map +1 -0
  4. package/dist/acp/adapter.js +14 -0
  5. package/dist/acp/adapter.js.map +1 -0
  6. package/dist/acp/adapters/antigravity/executor.d.ts +20 -0
  7. package/dist/acp/adapters/antigravity/executor.d.ts.map +1 -0
  8. package/dist/acp/adapters/antigravity/executor.js +99 -0
  9. package/dist/acp/adapters/antigravity/executor.js.map +1 -0
  10. package/dist/acp/adapters/antigravity/image-store.d.ts +9 -0
  11. package/dist/acp/adapters/antigravity/image-store.d.ts.map +1 -0
  12. package/dist/acp/adapters/antigravity/image-store.js +116 -0
  13. package/dist/acp/adapters/antigravity/image-store.js.map +1 -0
  14. package/dist/acp/adapters/antigravity/index.d.ts +5 -0
  15. package/dist/acp/adapters/antigravity/index.d.ts.map +1 -0
  16. package/dist/acp/adapters/antigravity/index.js +5 -0
  17. package/dist/acp/adapters/antigravity/index.js.map +1 -0
  18. package/dist/acp/adapters/antigravity/models.d.ts +35 -0
  19. package/dist/acp/adapters/antigravity/models.d.ts.map +1 -0
  20. package/dist/acp/adapters/antigravity/models.js +59 -0
  21. package/dist/acp/adapters/antigravity/models.js.map +1 -0
  22. package/dist/acp/adapters/antigravity/service.d.ts +35 -0
  23. package/dist/acp/adapters/antigravity/service.d.ts.map +1 -0
  24. package/dist/acp/adapters/antigravity/service.js +67 -0
  25. package/dist/acp/adapters/antigravity/service.js.map +1 -0
  26. package/dist/acp/adapters/antigravity/transcript-loader.d.ts +21 -0
  27. package/dist/acp/adapters/antigravity/transcript-loader.d.ts.map +1 -0
  28. package/dist/acp/adapters/antigravity/transcript-loader.js +356 -0
  29. package/dist/acp/adapters/antigravity/transcript-loader.js.map +1 -0
  30. package/dist/acp/adapters/antigravity/transcript-watcher.d.ts +28 -0
  31. package/dist/acp/adapters/antigravity/transcript-watcher.d.ts.map +1 -0
  32. package/dist/acp/adapters/antigravity/transcript-watcher.js +157 -0
  33. package/dist/acp/adapters/antigravity/transcript-watcher.js.map +1 -0
  34. package/dist/acp/adapters/antigravity/types.d.ts +56 -0
  35. package/dist/acp/adapters/antigravity/types.d.ts.map +1 -0
  36. package/dist/acp/adapters/antigravity/types.js +2 -0
  37. package/dist/acp/adapters/antigravity/types.js.map +1 -0
  38. package/dist/acp/adapters/antigravity-process.d.ts +69 -0
  39. package/dist/acp/adapters/antigravity-process.d.ts.map +1 -0
  40. package/dist/acp/adapters/antigravity-process.js +566 -0
  41. package/dist/acp/adapters/antigravity-process.js.map +1 -0
  42. package/dist/acp/adapters/antigravity.d.ts +8 -0
  43. package/dist/acp/adapters/antigravity.d.ts.map +1 -0
  44. package/dist/acp/adapters/antigravity.js +9 -0
  45. package/dist/acp/adapters/antigravity.js.map +1 -0
  46. package/dist/acp/adapters/cursor-process.d.ts +75 -0
  47. package/dist/acp/adapters/cursor-process.d.ts.map +1 -0
  48. package/dist/acp/adapters/cursor-process.js +273 -0
  49. package/dist/acp/adapters/cursor-process.js.map +1 -0
  50. package/dist/acp/adapters/cursor.d.ts +8 -0
  51. package/dist/acp/adapters/cursor.d.ts.map +1 -0
  52. package/dist/acp/adapters/cursor.js +8 -0
  53. package/dist/acp/adapters/cursor.js.map +1 -0
  54. package/dist/acp/gateway.d.ts +108 -0
  55. package/dist/acp/gateway.d.ts.map +1 -0
  56. package/dist/acp/gateway.js +1040 -0
  57. package/dist/acp/gateway.js.map +1 -0
  58. package/dist/acp/image-content.d.ts +19 -0
  59. package/dist/acp/image-content.d.ts.map +1 -0
  60. package/dist/acp/image-content.js +76 -0
  61. package/dist/acp/image-content.js.map +1 -0
  62. package/dist/acp/method-policy.d.ts +239 -0
  63. package/dist/acp/method-policy.d.ts.map +1 -0
  64. package/dist/acp/method-policy.js +102 -0
  65. package/dist/acp/method-policy.js.map +1 -0
  66. package/dist/acp/peer-bridge.d.ts +59 -0
  67. package/dist/acp/peer-bridge.d.ts.map +1 -0
  68. package/dist/acp/peer-bridge.js +367 -0
  69. package/dist/acp/peer-bridge.js.map +1 -0
  70. package/dist/acp/virtual-harness.d.ts +181 -0
  71. package/dist/acp/virtual-harness.d.ts.map +1 -0
  72. package/dist/acp/virtual-harness.js +1556 -0
  73. package/dist/acp/virtual-harness.js.map +1 -0
  74. package/dist/acp/workspace-tools.d.ts +13 -0
  75. package/dist/acp/workspace-tools.d.ts.map +1 -0
  76. package/dist/acp/workspace-tools.js +46 -0
  77. package/dist/acp/workspace-tools.js.map +1 -0
  78. package/dist/acp.d.ts.map +1 -1
  79. package/dist/acp.js +1 -0
  80. package/dist/acp.js.map +1 -1
  81. package/dist/api-proxy-switch.d.ts +2 -0
  82. package/dist/api-proxy-switch.d.ts.map +1 -1
  83. package/dist/api-proxy-switch.js +9 -0
  84. package/dist/api-proxy-switch.js.map +1 -1
  85. package/dist/cli.d.ts.map +1 -1
  86. package/dist/cli.js +4 -3
  87. package/dist/cli.js.map +1 -1
  88. package/dist/client-runtime.d.ts +25 -1
  89. package/dist/client-runtime.d.ts.map +1 -1
  90. package/dist/client-runtime.js +222 -8
  91. package/dist/client-runtime.js.map +1 -1
  92. package/dist/client.github.js +327 -190
  93. package/dist/client.js +327 -190
  94. package/dist/client.js.map +1 -1
  95. package/dist/codex/domain.d.ts +4 -1
  96. package/dist/codex/domain.d.ts.map +1 -1
  97. package/dist/codex/domain.js +54 -4
  98. package/dist/codex/domain.js.map +1 -1
  99. package/dist/codex/virtual-harness.d.ts.map +1 -1
  100. package/dist/codex/virtual-harness.js +3 -0
  101. package/dist/codex/virtual-harness.js.map +1 -1
  102. package/dist/codex-workspace-bridge.d.ts +7 -105
  103. package/dist/codex-workspace-bridge.d.ts.map +1 -1
  104. package/dist/codex-workspace-bridge.js +10 -498
  105. package/dist/codex-workspace-bridge.js.map +1 -1
  106. package/dist/config.d.ts +28 -10
  107. package/dist/config.d.ts.map +1 -1
  108. package/dist/config.js +49 -5
  109. package/dist/config.js.map +1 -1
  110. package/dist/connection-controller.d.ts.map +1 -1
  111. package/dist/connection-controller.js +7 -4
  112. package/dist/connection-controller.js.map +1 -1
  113. package/dist/control-runtime.d.ts +1 -0
  114. package/dist/control-runtime.d.ts.map +1 -1
  115. package/dist/control-runtime.js +65 -10
  116. package/dist/control-runtime.js.map +1 -1
  117. package/dist/harness-version.d.ts.map +1 -1
  118. package/dist/harness-version.js +16 -3
  119. package/dist/harness-version.js.map +1 -1
  120. package/dist/index.d.ts +4 -0
  121. package/dist/index.d.ts.map +1 -1
  122. package/dist/index.js +13197 -8204
  123. package/dist/index.js.map +4 -4
  124. package/dist/loopback-host.d.ts +2 -2
  125. package/dist/loopback-host.d.ts.map +1 -1
  126. package/dist/loopback-host.js +41 -16
  127. package/dist/loopback-host.js.map +1 -1
  128. package/dist/remote-typert-gateway.d.ts.map +1 -1
  129. package/dist/remote-typert-gateway.js +7 -4
  130. package/dist/remote-typert-gateway.js.map +1 -1
  131. package/dist/rpc-router.d.ts +6 -5
  132. package/dist/rpc-router.d.ts.map +1 -1
  133. package/dist/rpc-router.js +49 -18
  134. package/dist/rpc-router.js.map +1 -1
  135. package/dist/server-api.d.ts +2 -0
  136. package/dist/server-api.d.ts.map +1 -1
  137. package/dist/server-api.js +5 -0
  138. package/dist/server-api.js.map +1 -1
  139. package/dist/server-connection.d.ts.map +1 -1
  140. package/dist/server-connection.js +15 -0
  141. package/dist/server-connection.js.map +1 -1
  142. package/dist/service.d.ts +30 -1
  143. package/dist/service.d.ts.map +1 -1
  144. package/dist/service.js +114 -12
  145. package/dist/service.js.map +1 -1
  146. package/dist/session-format-compat.d.ts +1 -0
  147. package/dist/session-format-compat.d.ts.map +1 -1
  148. package/dist/session-format-compat.js +14 -0
  149. package/dist/session-format-compat.js.map +1 -1
  150. package/dist/tui-command.js +2 -0
  151. package/dist/tui-command.js.map +1 -1
  152. package/dist/typert-gateway-switch.d.ts +2 -0
  153. package/dist/typert-gateway-switch.d.ts.map +1 -1
  154. package/dist/typert-gateway-switch.js +16 -0
  155. package/dist/typert-gateway-switch.js.map +1 -1
  156. package/dist/version.d.ts +1 -1
  157. package/dist/version.d.ts.map +1 -1
  158. package/dist/version.js +1 -1
  159. package/dist/version.js.map +1 -1
  160. package/dist/workspace-bridge.d.ts +117 -0
  161. package/dist/workspace-bridge.d.ts.map +1 -0
  162. package/dist/workspace-bridge.js +512 -0
  163. package/dist/workspace-bridge.js.map +1 -0
  164. package/dsh-plugin.json +1 -1
  165. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-loader.d.ts","sourceRoot":"","sources":["../../../../src/acp/adapters/antigravity/transcript-loader.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAA;QACZ,GAAG,EAAE,MAAM,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,OAAO,CAAA;QACb,SAAS,CAAC,EAAE,QAAQ,CAAA;KACrB,CAAA;CACF;AAED,wBAAgB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAQpD;AAED,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,MAAyD,GACjE,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAqHjC;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAiCD,wBAAsB,6BAA6B,CACjD,MAAM,GAAE,MAA6E,EACrF,OAAO,GAAE,MAAyD,GACjE,OAAO,CAAC,MAAM,EAAE,CAAC,CA8CnB;AA0BD,wBAAsB,2BAA2B,CAC/C,aAAa,EAAE,MAAM,EACrB,KAAK,GAAE,MAAW,EAClB,OAAO,GAAE,MAAyD,EAClE,MAAM,GAAE,MAA6E,GACpF,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAkF9B"}
@@ -0,0 +1,356 @@
1
+ import { AGY_IMAGE_ROOT, stripAgyImageReferences, agyImageReferences, readAgyImage } from './image-store.js';
2
+ import { promises as fs } from 'node:fs';
3
+ import { MAX_AGENT_ACP_TRANSFER_BYTES } from '@dsh-remote/protocol';
4
+ import { isAbsolute, join, relative, resolve, sep } from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+ import { homedir } from 'node:os';
7
+ export function cleanUserPrompt(raw) {
8
+ if (!raw)
9
+ return '';
10
+ raw = stripAgyImageReferences(raw);
11
+ const match = raw.match(/<USER_REQUEST>([\s\S]*?)<\/USER_REQUEST>/);
12
+ if (match && match[1]) {
13
+ return match[1].trim();
14
+ }
15
+ return raw.trim();
16
+ }
17
+ export async function loadTranscriptEvents(conversationId, sessionId, baseDir = join(homedir(), '.gemini/antigravity-cli/brain')) {
18
+ let content = '';
19
+ try {
20
+ const filePath = await transcriptPath(baseDir, conversationId);
21
+ if (filePath === undefined || (await fs.stat(filePath)).size > MAX_AGENT_ACP_TRANSFER_BYTES)
22
+ return [];
23
+ content = await fs.readFile(filePath, 'utf-8');
24
+ }
25
+ catch {
26
+ return [];
27
+ }
28
+ const lines = content.split('\n');
29
+ const events = [];
30
+ let currentSeq = 0;
31
+ let currentTurn = 0;
32
+ let turnOpen = false;
33
+ const push = (type, data, time, surface = false) => {
34
+ events.push({
35
+ type: 'event',
36
+ event: {
37
+ type,
38
+ seq: currentSeq++,
39
+ time,
40
+ data,
41
+ ...(surface ? { surfaceOp: 'append' } : {}),
42
+ },
43
+ });
44
+ };
45
+ for (const line of lines) {
46
+ const trimmed = line.trim();
47
+ if (!trimmed)
48
+ continue;
49
+ let record;
50
+ try {
51
+ record = JSON.parse(trimmed);
52
+ }
53
+ catch {
54
+ continue;
55
+ }
56
+ const time = record.created_at ? new Date(record.created_at).getTime() : Date.now();
57
+ if (record.type === 'USER_INPUT') {
58
+ if (turnOpen) {
59
+ push('step/end', { turn: currentTurn, step: 1 }, time);
60
+ push('turn/end', { turn: currentTurn, reason: { kind: 'completed' } }, time);
61
+ turnOpen = false;
62
+ }
63
+ currentTurn += 1;
64
+ turnOpen = true;
65
+ push('turn/start', { turn: currentTurn }, time);
66
+ push('step/start', { turn: currentTurn, step: 1 }, time);
67
+ const text = cleanUserPrompt(record.content);
68
+ const images = (await Promise.all(agyImageReferences(record.content ?? '').map(path => readAgyImage(conversationId, path))))
69
+ .filter((image) => image !== undefined);
70
+ push('user/message', {
71
+ id: `user:${record.step_index}`,
72
+ role: 'user',
73
+ content: [...(text ? [{ type: 'text', text }] : []), ...images],
74
+ source: { kind: 'user' },
75
+ }, time, true);
76
+ }
77
+ else if (record.type === 'PLANNER_RESPONSE') {
78
+ if (!turnOpen) {
79
+ currentTurn += 1;
80
+ turnOpen = true;
81
+ push('turn/start', { turn: currentTurn }, time);
82
+ push('step/start', { turn: currentTurn, step: 1 }, time);
83
+ }
84
+ if (Array.isArray(record.tool_calls)) {
85
+ for (const call of record.tool_calls) {
86
+ const toolName = (typeof call.name === 'string' && call.name.length > 0) ? call.name : 'tool';
87
+ const callId = `${record.step_index}:${toolName}`;
88
+ push('tool/call', {
89
+ turn: currentTurn,
90
+ step: 1,
91
+ callId,
92
+ name: toolName,
93
+ arguments: typeof call.args === 'object' && call.args !== null ? JSON.stringify(call.args) : '{}',
94
+ toolCallId: callId,
95
+ toolName,
96
+ status: call.status === 'ERROR' ? 'failed' : 'finished',
97
+ }, time, false);
98
+ }
99
+ }
100
+ if (record.content && record.content.trim() !== '') {
101
+ const contentBlocks = [];
102
+ if (record.thinking && record.thinking.trim() !== '') {
103
+ contentBlocks.push({ type: 'reasoning', text: record.thinking.trim() });
104
+ }
105
+ contentBlocks.push({ type: 'text', text: record.content.trim() });
106
+ push('assistant/message', {
107
+ turn: currentTurn,
108
+ step: 1,
109
+ message: {
110
+ id: `${sessionId}:${record.step_index}`,
111
+ role: 'assistant',
112
+ content: contentBlocks,
113
+ },
114
+ // Harness trajectory timing expects every assistant message to carry
115
+ // an iterable stream, including messages restored from transcript.
116
+ stream: [],
117
+ }, time, true);
118
+ }
119
+ }
120
+ }
121
+ if (turnOpen) {
122
+ // Hydration must not extend a settled turn until the time of the read.
123
+ const settledAt = events.at(-1)?.event.time ?? Date.now();
124
+ push('step/end', { turn: currentTurn, step: 1 }, settledAt);
125
+ push('turn/end', { turn: currentTurn, reason: { kind: 'completed' } }, settledAt);
126
+ }
127
+ return events;
128
+ }
129
+ async function querySqliteJson(dbPath, sql, params = []) {
130
+ try {
131
+ const { DatabaseSync } = await import('node:sqlite');
132
+ const db = new DatabaseSync(dbPath, { readOnly: true });
133
+ try {
134
+ const stmt = db.prepare(sql);
135
+ const rows = stmt.all(...params);
136
+ return rows;
137
+ }
138
+ finally {
139
+ db.close();
140
+ }
141
+ }
142
+ catch {
143
+ // fallback to sqlite3 CLI
144
+ }
145
+ try {
146
+ const { execFile } = await import('node:child_process');
147
+ const { promisify } = await import('node:util');
148
+ const execFileAsync = promisify(execFile);
149
+ let formattedSql = sql;
150
+ for (const p of params) {
151
+ const val = typeof p === 'number' ? String(p) : `'${String(p).replace(/'/g, "''")}'`;
152
+ formattedSql = formattedSql.replace('?', val);
153
+ }
154
+ const { stdout } = await execFileAsync('sqlite3', [dbPath, '-json', formattedSql]);
155
+ return JSON.parse(stdout || '[]');
156
+ }
157
+ catch {
158
+ return [];
159
+ }
160
+ }
161
+ export async function discoverAntigravityWorkspaces(dbPath = join(homedir(), '.gemini/antigravity-cli/conversation_summaries.db'), baseDir = join(homedir(), '.gemini/antigravity-cli/brain')) {
162
+ try {
163
+ await fs.stat(dbPath);
164
+ }
165
+ catch {
166
+ return [];
167
+ }
168
+ const sql = "SELECT conversation_id, workspace_uris, step_count, title FROM conversation_summaries ORDER BY step_count DESC;";
169
+ const rows = await querySqliteJson(dbPath, sql);
170
+ const paths = new Set();
171
+ for (const row of rows) {
172
+ if (!row?.workspace_uris)
173
+ continue;
174
+ if (!(row.step_count && row.step_count > 0) && !row.title?.trim() && !await readTranscriptSummary(baseDir, row.conversation_id))
175
+ continue;
176
+ try {
177
+ const uris = JSON.parse(row.workspace_uris);
178
+ if (Array.isArray(uris)) {
179
+ for (const u of uris) {
180
+ if (typeof u === 'string' && u.startsWith('file://')) {
181
+ try {
182
+ const p = fileURLToPath(u);
183
+ const imageRelative = relative(AGY_IMAGE_ROOT, p);
184
+ const imageCache = imageRelative === '' || (!isAbsolute(imageRelative)
185
+ && imageRelative !== '..' && !imageRelative.startsWith(`..${sep}`));
186
+ if (!imageCache)
187
+ paths.add(p);
188
+ }
189
+ catch {
190
+ // ignore
191
+ }
192
+ }
193
+ }
194
+ }
195
+ }
196
+ catch {
197
+ // ignore
198
+ }
199
+ }
200
+ const verified = [];
201
+ for (const p of paths) {
202
+ try {
203
+ const s = await fs.stat(p);
204
+ if (s.isDirectory())
205
+ verified.push(p);
206
+ }
207
+ catch {
208
+ // ignore
209
+ }
210
+ }
211
+ return verified;
212
+ }
213
+ async function readTranscriptSummary(baseDir, conversationId) {
214
+ try {
215
+ const path = await transcriptPath(baseDir, conversationId);
216
+ if (path === undefined)
217
+ return undefined;
218
+ const stat = await fs.stat(path);
219
+ const handle = await fs.open(path, 'r');
220
+ try {
221
+ const buffer = Buffer.alloc(4096);
222
+ const { bytesRead } = await handle.read(buffer, 0, buffer.length, 0);
223
+ const firstLine = buffer.subarray(0, bytesRead).toString('utf-8').split('\n')[0];
224
+ if (!firstLine)
225
+ return undefined;
226
+ const record = JSON.parse(firstLine);
227
+ if (record.type !== 'USER_INPUT')
228
+ return undefined;
229
+ const title = cleanUserPrompt(record.content).split('\n')[0]?.trim().slice(0, 40) || (agyImageReferences(record.content ?? '').length > 0 ? 'Image' : undefined);
230
+ if (!title)
231
+ return undefined;
232
+ return { conversationId, title, createdAt: record.created_at ? new Date(record.created_at).getTime() : stat.mtimeMs, updatedAt: stat.mtimeMs };
233
+ }
234
+ finally {
235
+ await handle.close();
236
+ }
237
+ }
238
+ catch {
239
+ return undefined;
240
+ }
241
+ }
242
+ export async function discoverAntigravitySessions(workspacePath, limit = 30, baseDir = join(homedir(), '.gemini/antigravity-cli/brain'), dbPath = join(homedir(), '.gemini/antigravity-cli/conversation_summaries.db')) {
243
+ const requestedWorkspace = workspacePath.trim() === '' ? undefined : resolve(workspacePath);
244
+ // Database URIs provide workspace authority. Decode them before comparing so
245
+ // percent-encoded names, path separators, and similarly named projects stay distinct.
246
+ try {
247
+ await fs.stat(dbPath);
248
+ const rows = await querySqliteJson(dbPath, 'SELECT conversation_id, title, workspace_uris, step_count, last_modified_time FROM conversation_summaries ORDER BY last_modified_time DESC;');
249
+ const summaries = [];
250
+ for (const row of rows) {
251
+ if (requestedWorkspace !== undefined && !workspaceMatches(row.workspace_uris, requestedWorkspace))
252
+ continue;
253
+ const transcript = row.title?.trim() ? undefined : await readTranscriptSummary(baseDir, row.conversation_id);
254
+ if (!row.step_count && !row.title?.trim()) {
255
+ if (transcript !== undefined)
256
+ summaries.push(transcript);
257
+ continue;
258
+ }
259
+ const time = row.last_modified_time ? new Date(row.last_modified_time).getTime() : Date.now();
260
+ summaries.push({
261
+ conversationId: row.conversation_id,
262
+ title: row.title?.trim() || transcript?.title || 'Untitled Session',
263
+ createdAt: time,
264
+ updatedAt: time,
265
+ });
266
+ }
267
+ return summaries.sort((a, b) => b.updatedAt - a.updatedAt).slice(0, limit);
268
+ }
269
+ catch {
270
+ // Unscoped discovery may fall back to transcript scanning without a database.
271
+ }
272
+ // A transcript alone does not establish which project it belongs to.
273
+ if (requestedWorkspace !== undefined)
274
+ return [];
275
+ // 2. Fallback to filesystem scanning
276
+ let dirEntries;
277
+ try {
278
+ dirEntries = await fs.readdir(baseDir);
279
+ }
280
+ catch {
281
+ return [];
282
+ }
283
+ const results = [];
284
+ for (const entry of dirEntries) {
285
+ if (entry === 'tempmediaStorage' || !entry.includes('-'))
286
+ continue;
287
+ try {
288
+ const path = await transcriptPath(baseDir, entry);
289
+ if (path === undefined)
290
+ continue;
291
+ const s = await fs.stat(path);
292
+ const handle = await fs.open(path, 'r');
293
+ try {
294
+ const buf = Buffer.alloc(4096);
295
+ const { bytesRead } = await handle.read(buf, 0, 4096, 0);
296
+ const firstLine = buf.subarray(0, bytesRead).toString('utf-8').split('\n')[0];
297
+ if (firstLine) {
298
+ const parsed = JSON.parse(firstLine);
299
+ const rawPrompt = cleanUserPrompt(parsed.content);
300
+ const title = rawPrompt ? rawPrompt.split('\n')[0]?.trim().slice(0, 40) : undefined;
301
+ if (title) {
302
+ const createdAt = parsed.created_at ? new Date(parsed.created_at).getTime() : s.mtimeMs;
303
+ results.push({
304
+ conversationId: entry,
305
+ title,
306
+ createdAt,
307
+ updatedAt: s.mtimeMs,
308
+ });
309
+ }
310
+ }
311
+ }
312
+ finally {
313
+ await handle.close();
314
+ }
315
+ }
316
+ catch {
317
+ // ignore
318
+ }
319
+ }
320
+ results.sort((a, b) => b.updatedAt - a.updatedAt);
321
+ return results.slice(0, limit);
322
+ }
323
+ function workspaceMatches(rawUris, requestedWorkspace) {
324
+ if (rawUris === undefined)
325
+ return false;
326
+ try {
327
+ const uris = JSON.parse(rawUris);
328
+ return Array.isArray(uris) && uris.some(uri => {
329
+ if (typeof uri !== 'string')
330
+ return false;
331
+ try {
332
+ return resolve(fileURLToPath(uri)) === requestedWorkspace;
333
+ }
334
+ catch {
335
+ return false;
336
+ }
337
+ });
338
+ }
339
+ catch {
340
+ return false;
341
+ }
342
+ }
343
+ /** Remote conversation ids can select only a real transcript inside the AGY brain. */
344
+ async function transcriptPath(baseDir, conversationId) {
345
+ if (!/^[a-zA-Z0-9_-]{1,256}$/.test(conversationId))
346
+ return undefined;
347
+ try {
348
+ const root = await fs.realpath(baseDir);
349
+ const expected = join(root, conversationId, '.system_generated', 'logs', 'transcript.jsonl');
350
+ return await fs.realpath(expected) === expected ? expected : undefined;
351
+ }
352
+ catch {
353
+ return undefined;
354
+ }
355
+ }
356
+ //# sourceMappingURL=transcript-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-loader.js","sourceRoot":"","sources":["../../../../src/acp/adapters/antigravity/transcript-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import type { AntigravityEvents } from './types.js';
3
+ export declare class TranscriptWatcher extends EventEmitter {
4
+ readonly conversationId: string;
5
+ readonly baseDir: string;
6
+ private offset;
7
+ private lineRemainder;
8
+ private pollTimer?;
9
+ private closed;
10
+ private readonly transcriptPath;
11
+ private readonly transcriptFullPath;
12
+ constructor(conversationId: string, baseDir?: string);
13
+ on<U extends keyof AntigravityEvents>(event: U, listener: AntigravityEvents[U]): this;
14
+ emit<U extends keyof AntigravityEvents>(event: U, ...args: Parameters<AntigravityEvents[U]>): boolean;
15
+ /**
16
+ * 启动增量文件监听
17
+ */
18
+ start(intervalMs?: number): void;
19
+ stop(): void;
20
+ /**
21
+ * 立即触发一次读取(同步/主动检查)
22
+ */
23
+ flush(): Promise<void>;
24
+ private readNewLines;
25
+ private parseAndDispatch;
26
+ private enrichFromFullTranscript;
27
+ }
28
+ //# sourceMappingURL=transcript-watcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-watcher.d.ts","sourceRoot":"","sources":["../../../../src/acp/adapters/antigravity/transcript-watcher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,YAAY,CAAA;AAElE,qBAAa,iBAAkB,SAAQ,YAAY;IAS/C,QAAQ,CAAC,cAAc,EAAE,MAAM;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM;IAT1B,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,SAAS,CAAC,CAAgB;IAClC,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;gBAGhC,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,MAAyD;IAQpE,EAAE,CAAC,CAAC,SAAS,MAAM,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI;IAIrF,IAAI,CAAC,CAAC,SAAS,MAAM,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO;IAI9G;;OAEG;IACH,KAAK,CAAC,UAAU,SAAM,GAAG,IAAI;IAgB7B,IAAI,IAAI,IAAI;IAQZ;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAId,YAAY;YA+BZ,gBAAgB;YAiDhB,wBAAwB;CAiBvC"}
@@ -0,0 +1,157 @@
1
+ import { promises as fs } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { EventEmitter } from 'node:events';
4
+ import { homedir } from 'node:os';
5
+ export class TranscriptWatcher extends EventEmitter {
6
+ conversationId;
7
+ baseDir;
8
+ offset = 0;
9
+ lineRemainder = '';
10
+ pollTimer;
11
+ closed = false;
12
+ transcriptPath;
13
+ transcriptFullPath;
14
+ constructor(conversationId, baseDir = join(homedir(), '.gemini/antigravity-cli/brain')) {
15
+ super();
16
+ this.conversationId = conversationId;
17
+ this.baseDir = baseDir;
18
+ const brainDir = join(this.baseDir, conversationId, '.system_generated/logs');
19
+ this.transcriptPath = join(brainDir, 'transcript.jsonl');
20
+ this.transcriptFullPath = join(brainDir, 'transcript_full.jsonl');
21
+ }
22
+ on(event, listener) {
23
+ return super.on(event, listener);
24
+ }
25
+ emit(event, ...args) {
26
+ return super.emit(event, ...args);
27
+ }
28
+ /**
29
+ * 启动增量文件监听
30
+ */
31
+ start(intervalMs = 250) {
32
+ if (this.closed)
33
+ return;
34
+ const poll = async () => {
35
+ try {
36
+ await this.readNewLines();
37
+ }
38
+ catch {
39
+ // 文件可能尚未创建或临时锁占用,静默重试
40
+ }
41
+ if (!this.closed) {
42
+ this.pollTimer = setTimeout(poll, intervalMs);
43
+ this.pollTimer.unref?.();
44
+ }
45
+ };
46
+ void poll();
47
+ }
48
+ stop() {
49
+ this.closed = true;
50
+ if (this.pollTimer !== undefined) {
51
+ clearTimeout(this.pollTimer);
52
+ this.pollTimer = undefined;
53
+ }
54
+ }
55
+ /**
56
+ * 立即触发一次读取(同步/主动检查)
57
+ */
58
+ async flush() {
59
+ await this.readNewLines();
60
+ }
61
+ async readNewLines() {
62
+ let stat;
63
+ try {
64
+ stat = await fs.stat(this.transcriptPath);
65
+ }
66
+ catch {
67
+ return;
68
+ }
69
+ if (stat.size <= this.offset)
70
+ return;
71
+ const handle = await fs.open(this.transcriptPath, 'r');
72
+ try {
73
+ const bytesToRead = stat.size - this.offset;
74
+ const buffer = Buffer.alloc(bytesToRead);
75
+ const { bytesRead } = await handle.read(buffer, 0, bytesToRead, this.offset);
76
+ this.offset += bytesRead;
77
+ const text = this.lineRemainder + buffer.subarray(0, bytesRead).toString('utf-8');
78
+ const lines = text.split('\n');
79
+ this.lineRemainder = lines.pop() ?? '';
80
+ for (const line of lines) {
81
+ const trimmed = line.trim();
82
+ if (!trimmed)
83
+ continue;
84
+ await this.parseAndDispatch(trimmed);
85
+ }
86
+ }
87
+ finally {
88
+ await handle.close();
89
+ }
90
+ }
91
+ async parseAndDispatch(rawLine) {
92
+ let record;
93
+ try {
94
+ record = JSON.parse(rawLine);
95
+ }
96
+ catch {
97
+ return;
98
+ }
99
+ if (Array.isArray(record.truncated_fields) && record.truncated_fields.length > 0) {
100
+ record = await this.enrichFromFullTranscript(record);
101
+ }
102
+ this.emit('step', record);
103
+ if (record.type === 'PLANNER_RESPONSE') {
104
+ if (record.thinking && record.thinking.trim() !== '') {
105
+ this.emit('thinking', {
106
+ stepIndex: record.step_index,
107
+ thinking: record.thinking,
108
+ createdAt: record.created_at,
109
+ });
110
+ }
111
+ if (Array.isArray(record.tool_calls) && record.tool_calls.length > 0) {
112
+ this.emit('toolCall', {
113
+ stepIndex: record.step_index,
114
+ toolCalls: record.tool_calls,
115
+ createdAt: record.created_at,
116
+ });
117
+ }
118
+ if (record.content && record.content.trim() !== '') {
119
+ this.emit('message', {
120
+ stepIndex: record.step_index,
121
+ text: record.content,
122
+ createdAt: record.created_at,
123
+ });
124
+ }
125
+ }
126
+ else if (record.type === 'USER_INPUT' && record.content) {
127
+ this.emit('message', {
128
+ stepIndex: record.step_index,
129
+ text: record.content,
130
+ createdAt: record.created_at,
131
+ });
132
+ }
133
+ if (record.status === 'DONE' && record.type === 'PLANNER_RESPONSE') {
134
+ this.emit('complete', this.conversationId);
135
+ }
136
+ }
137
+ async enrichFromFullTranscript(record) {
138
+ try {
139
+ const content = await fs.readFile(this.transcriptFullPath, 'utf-8');
140
+ const lines = content.split('\n');
141
+ for (const line of lines) {
142
+ const trimmed = line.trim();
143
+ if (!trimmed)
144
+ continue;
145
+ const full = JSON.parse(trimmed);
146
+ if (full.step_index === record.step_index) {
147
+ return full;
148
+ }
149
+ }
150
+ }
151
+ catch {
152
+ // 容错降级
153
+ }
154
+ return record;
155
+ }
156
+ }
157
+ //# sourceMappingURL=transcript-watcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-watcher.js","sourceRoot":"","sources":["../../../../src/acp/adapters/antigravity/transcript-watcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ export type StepType = 'USER_INPUT' | 'PLANNER_RESPONSE' | 'SYSTEM';
2
+ export type StepStatus = 'RUNNING' | 'DONE' | 'ERROR';
3
+ export interface ToolCallPayload {
4
+ name: string;
5
+ args: Record<string, unknown>;
6
+ result?: unknown;
7
+ status?: 'CALLING' | 'EXECUTING' | 'SUCCESS' | 'ERROR';
8
+ }
9
+ export interface StepLogRecord {
10
+ step_index: number;
11
+ source?: 'USER_EXPLICIT' | 'MODEL' | 'SYSTEM';
12
+ type: StepType;
13
+ status: StepStatus;
14
+ created_at: string;
15
+ content?: string;
16
+ thinking?: string;
17
+ tool_calls?: ToolCallPayload[];
18
+ truncated_fields?: string[];
19
+ }
20
+ export interface ExecutionOptions {
21
+ /** 目标工作区或执行工作目录 */
22
+ cwd?: string;
23
+ /** 会话 ID,不传则启动新会话 */
24
+ conversationId?: string;
25
+ /** 是否续接最近一次会话 (-c) */
26
+ continueLast?: boolean;
27
+ /** 是否自动放行工具执行权限 (--dangerously-skip-permissions) */
28
+ skipPermissions?: boolean;
29
+ /** 单步执行超时时间 (毫秒) */
30
+ timeoutMs?: number;
31
+ /** 自定义 agy 二进制路径 */
32
+ binaryPath?: string;
33
+ /** 环境变量 */
34
+ env?: NodeJS.ProcessEnv;
35
+ }
36
+ export interface AntigravityEvents {
37
+ message: (step: {
38
+ stepIndex: number;
39
+ text: string;
40
+ createdAt: string;
41
+ }) => void;
42
+ thinking: (step: {
43
+ stepIndex: number;
44
+ thinking: string;
45
+ createdAt: string;
46
+ }) => void;
47
+ toolCall: (step: {
48
+ stepIndex: number;
49
+ toolCalls: ToolCallPayload[];
50
+ createdAt: string;
51
+ }) => void;
52
+ step: (record: StepLogRecord) => void;
53
+ error: (error: Error) => void;
54
+ complete: (conversationId: string) => void;
55
+ }
56
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/acp/adapters/antigravity/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,kBAAkB,GAAG,QAAQ,CAAA;AACnE,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAA;AAErD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAA;CACvD;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,GAAG,QAAQ,CAAA;IAC7C,IAAI,EAAE,QAAQ,CAAA;IACd,MAAM,EAAE,UAAU,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,eAAe,EAAE,CAAA;IAC9B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB;IACnB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,qBAAqB;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,sBAAsB;IACtB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,oDAAoD;IACpD,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,oBAAoB;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oBAAoB;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW;IACX,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAC/E,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACpF,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,eAAe,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAChG,IAAI,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAA;IACrC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAC7B,QAAQ,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAA;CAC3C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/acp/adapters/antigravity/types.ts"],"names":[],"mappings":""}