agent-gear 1.1.5 → 1.1.7

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.
@@ -10,29 +10,159 @@ function toMcpServers(servers) {
10
10
  env: s.env ?? [],
11
11
  }));
12
12
  }
13
+ // Sanitized, token-free summary of the MCP servers about to be sent to the
14
+ // agent, so launch failures are diagnosable from local logs alone.
15
+ function describeMcpServersForLog(servers) {
16
+ if (servers.length === 0)
17
+ return 'none';
18
+ return servers.map((s) => {
19
+ if ('url' in s) {
20
+ const headerNames = (s.headers ?? []).map((h) => h.name).join('+');
21
+ return `${s.name}(type=${s.type ?? 'http'}, url=${s.url}${headerNames ? `, headers=${headerNames}` : ''})`;
22
+ }
23
+ return `${s.name}(type=stdio, cmd=${s.command})`;
24
+ }).join(' ');
25
+ }
26
+ function toMcpEndpointServers(mcpEndpoint) {
27
+ // Fail loudly with a diagnosable message instead of a raw TypeError when the
28
+ // upstream payload drifts from the contract (serverNames is required).
29
+ if (!Array.isArray(mcpEndpoint.serverNames) || mcpEndpoint.serverNames.length === 0) {
30
+ throw new Error(`Invalid mcpEndpoint payload: "serverNames" must be a non-empty array ` +
31
+ `(received: ${JSON.stringify(mcpEndpoint.serverNames)}, url: ${mcpEndpoint.url})`);
32
+ }
33
+ const headers = [{ name: 'Authorization', value: `Bearer ${mcpEndpoint.token}` }];
34
+ // Each assembled server gets its own URL so the entry point can route
35
+ // standard MCP clients (which never send a serverName param) correctly.
36
+ return mcpEndpoint.serverNames.map((name) => ({
37
+ type: 'http',
38
+ name,
39
+ url: `${mcpEndpoint.url}/${encodeURIComponent(name)}`,
40
+ headers,
41
+ }));
42
+ }
43
+ export function extractConfigOptions(configOptions) {
44
+ if (!configOptions)
45
+ return [];
46
+ return configOptions.map((opt) => {
47
+ const base = {
48
+ id: opt.id,
49
+ name: opt.name,
50
+ description: opt.description ?? null,
51
+ category: opt.category ?? null,
52
+ };
53
+ if (opt.type === 'boolean') {
54
+ return {
55
+ ...base,
56
+ type: 'boolean',
57
+ currentValue: String(opt.currentValue),
58
+ options: [],
59
+ };
60
+ }
61
+ const options = Array.isArray(opt.options)
62
+ ? opt.options.flatMap((o) => 'group' in o
63
+ ? o.options.map((inner) => ({ value: inner.value, name: `${o.name}/${inner.name}` }))
64
+ : [{ value: o.value, name: o.name }])
65
+ : [];
66
+ return {
67
+ ...base,
68
+ type: 'select',
69
+ currentValue: opt.currentValue,
70
+ options,
71
+ };
72
+ });
73
+ }
74
+ function findConfigByCategory(configOptions, category) {
75
+ return configOptions.find((o) => o.category === category) ?? null;
76
+ }
77
+ function extractConfigModes(configOptions) {
78
+ const opt = findConfigByCategory(configOptions, 'mode');
79
+ if (!opt || opt.type !== 'select')
80
+ return null;
81
+ return {
82
+ modes: opt.options.map((o) => ({ id: o.value, name: o.name ?? o.value })),
83
+ currentModeId: opt.currentValue,
84
+ };
85
+ }
86
+ function extractConfigModels(configOptions) {
87
+ const opt = findConfigByCategory(configOptions, 'model');
88
+ if (!opt || opt.type !== 'select')
89
+ return null;
90
+ const availableModels = opt.options.map((o) => ({ id: o.value, name: o.name ?? o.value }));
91
+ const currentModelId = opt.currentValue;
92
+ const current = availableModels.find((m) => m.id === currentModelId) ?? null;
93
+ return { availableModels, currentModelId, currentModel: current };
94
+ }
95
+ function toAuthMethods(authMethods) {
96
+ if (!authMethods || authMethods.length === 0)
97
+ return [];
98
+ return authMethods.map((m) => {
99
+ if ('type' in m) {
100
+ const kind = m.type === 'env_var' ? 'env_var' : m.type === 'terminal' ? 'terminal' : 'agent';
101
+ return {
102
+ id: m.id,
103
+ kind,
104
+ description: m.description ?? null,
105
+ url: m.url ?? null,
106
+ };
107
+ }
108
+ // AuthMethodAgent 无 type 字段(SDK 1.3.0),是默认认证方式
109
+ return { id: m.id, kind: 'agent', description: null, url: null };
110
+ });
111
+ }
13
112
  export class AcpSessionBridge extends EventEmitter {
14
113
  spawner;
15
114
  socket;
16
115
  sessionId;
17
116
  cwd;
117
+ additionalDirectories;
18
118
  mcpServers;
119
+ mcpEndpoint;
19
120
  connection = null;
20
121
  acpSessionId = null;
21
122
  activePrompt = null;
22
123
  inputQueue = [];
23
124
  textChunkBuffer = '';
125
+ textChunkMessageId;
24
126
  textChunkTimer = null;
25
127
  initializing = false;
26
128
  stopped = false;
27
129
  pendingPermissions = new Map();
130
+ pendingElicitations = new Map();
131
+ // Capability snapshot from initialize / session/new / resume
132
+ configOptions = [];
133
+ promptCapabilities = null;
134
+ agentInfo = null;
135
+ authMethods = [];
136
+ supportsAdditionalDirectories = false;
137
+ agentProtocolVersion = null;
138
+ agentMcpCapabilities = null;
28
139
  constructor(socket, options, spawner) {
29
140
  super();
30
141
  this.socket = socket;
31
142
  this.sessionId = options.sessionId;
32
143
  this.cwd = options.cwd;
144
+ this.additionalDirectories = options.additionalDirectories ?? [];
33
145
  this.mcpServers = options.mcpServers;
146
+ this.mcpEndpoint = options.mcpEndpoint;
34
147
  this.spawner = spawner ?? new AcpSpawner({ sessionId: options.sessionId, cwd: options.cwd });
35
148
  }
149
+ resolveMcpServers() {
150
+ if (this.mcpEndpoint) {
151
+ return toMcpEndpointServers(this.mcpEndpoint);
152
+ }
153
+ return toMcpServers(this.mcpServers);
154
+ }
155
+ // Log the MCP configuration that is about to be handed to the agent via
156
+ // session/new (or session/resume), and warn when the agent did not
157
+ // advertise the required MCP transport capability in initialize.
158
+ logMcpServersForSession(method, servers) {
159
+ console.log(`[ACP bridge] session ${this.sessionId}: passing MCP servers via ${method}: ${describeMcpServersForLog(servers)}`);
160
+ const httpServers = servers.filter((s) => 'url' in s && s.type === 'http');
161
+ if (httpServers.length > 0 && this.agentMcpCapabilities && this.agentMcpCapabilities.http === false) {
162
+ console.warn(`[ACP bridge] session ${this.sessionId}: agent did not advertise mcpCapabilities.http ` +
163
+ `but ${httpServers.length} http MCP server(s) are being passed: ${httpServers.map((s) => s.name).join(', ')}`);
164
+ }
165
+ }
36
166
  async start() {
37
167
  if (this.initializing)
38
168
  return;
@@ -40,21 +170,16 @@ export class AcpSessionBridge extends EventEmitter {
40
170
  this.spawner.start();
41
171
  try {
42
172
  await this.initConnection();
173
+ const mcpServers = this.resolveMcpServers();
174
+ this.logMcpServersForSession('session/new', mcpServers);
43
175
  const result = await this.connection.newSession({
44
176
  cwd: this.cwd,
45
- mcpServers: toMcpServers(this.mcpServers),
177
+ mcpServers,
178
+ additionalDirectories: this.additionalDirectories.length > 0 ? this.additionalDirectories : undefined,
46
179
  });
47
180
  this.acpSessionId = result.sessionId;
48
181
  this.initializing = false;
49
- this.emit('acp:initialized', {
50
- sessionId: this.sessionId,
51
- acpSessionId: this.acpSessionId,
52
- modes: this.extractModes(result.modes),
53
- currentModeId: result.modes?.currentModeId ?? null,
54
- currentModel: this.extractCurrentModel(result.models),
55
- availableModels: this.extractAvailableModels(result.models),
56
- currentModelId: result.models?.currentModelId ?? null,
57
- });
182
+ this.emit('acp:initialized', this.buildInitializedPayload(result));
58
183
  this.flushInputQueue();
59
184
  }
60
185
  catch (error) {
@@ -69,21 +194,17 @@ export class AcpSessionBridge extends EventEmitter {
69
194
  this.spawner.start();
70
195
  try {
71
196
  await this.initConnection();
197
+ const mcpServers = this.resolveMcpServers();
198
+ this.logMcpServersForSession('session/resume', mcpServers);
72
199
  const result = await this.connection.resumeSession({
73
200
  sessionId: externalSessionId,
74
201
  cwd: this.cwd,
202
+ mcpServers,
203
+ additionalDirectories: this.additionalDirectories.length > 0 ? this.additionalDirectories : undefined,
75
204
  });
76
205
  this.acpSessionId = externalSessionId;
77
206
  this.initializing = false;
78
- this.emit('acp:initialized', {
79
- sessionId: this.sessionId,
80
- acpSessionId: this.acpSessionId,
81
- modes: this.extractModes(result.modes),
82
- currentModeId: result.modes?.currentModeId ?? null,
83
- currentModel: this.extractCurrentModel(result.models),
84
- availableModels: this.extractAvailableModels(result.models),
85
- currentModelId: result.models?.currentModelId ?? null,
86
- });
207
+ this.emit('acp:initialized', this.buildInitializedPayload(result));
87
208
  }
88
209
  catch (error) {
89
210
  // resumeSession may fail if agent doesn't support session.resume
@@ -91,19 +212,12 @@ export class AcpSessionBridge extends EventEmitter {
91
212
  try {
92
213
  const result = await this.connection.newSession({
93
214
  cwd: this.cwd,
94
- mcpServers: toMcpServers(this.mcpServers),
215
+ mcpServers: this.resolveMcpServers(),
216
+ additionalDirectories: this.additionalDirectories.length > 0 ? this.additionalDirectories : undefined,
95
217
  });
96
218
  this.acpSessionId = result.sessionId;
97
219
  this.initializing = false;
98
- this.emit('acp:initialized', {
99
- sessionId: this.sessionId,
100
- acpSessionId: this.acpSessionId,
101
- modes: this.extractModes(result.modes),
102
- currentModeId: result.modes?.currentModeId ?? null,
103
- currentModel: this.extractCurrentModel(result.models),
104
- availableModels: this.extractAvailableModels(result.models),
105
- currentModelId: result.models?.currentModelId ?? null,
106
- });
220
+ this.emit('acp:initialized', this.buildInitializedPayload(result));
107
221
  }
108
222
  catch (fallbackError) {
109
223
  this.initializing = false;
@@ -132,6 +246,16 @@ export class AcpSessionBridge extends EventEmitter {
132
246
  async setMode(modeId) {
133
247
  if (!this.connection || !this.acpSessionId)
134
248
  return;
249
+ const modeConfig = findConfigByCategory(this.configOptions, 'mode');
250
+ if (modeConfig) {
251
+ // 配置项通道:Agent 提供 configOptions 时以配置项为准
252
+ await this.connection.setSessionConfigOption({
253
+ sessionId: this.acpSessionId,
254
+ configId: modeConfig.id,
255
+ value: modeId,
256
+ });
257
+ return;
258
+ }
135
259
  await this.connection.setSessionMode({
136
260
  sessionId: this.acpSessionId,
137
261
  modeId,
@@ -140,10 +264,61 @@ export class AcpSessionBridge extends EventEmitter {
140
264
  async setModel(modelId) {
141
265
  if (!this.connection || !this.acpSessionId)
142
266
  return;
143
- await this.connection.unstable_setSessionModel({
267
+ const modelConfig = findConfigByCategory(this.configOptions, 'model');
268
+ if (modelConfig) {
269
+ await this.connection.setSessionConfigOption({
270
+ sessionId: this.acpSessionId,
271
+ configId: modelConfig.id,
272
+ value: modelId,
273
+ });
274
+ return;
275
+ }
276
+ // SDK 1.x 已移除 unstable_setSessionModel:无 configOptions 的旧 Agent 无法走配置项通道。
277
+ // 模型切换暂不支持,由上层提示(不保留 unstable 调用)。
278
+ throw new Error('Model switching is not supported: agent does not expose a model config option');
279
+ }
280
+ async setConfigOption(configId, value) {
281
+ if (!this.connection || !this.acpSessionId) {
282
+ throw new Error('ACP bridge is not initialized');
283
+ }
284
+ const response = await this.connection.setSessionConfigOption({
144
285
  sessionId: this.acpSessionId,
145
- modelId,
286
+ configId,
287
+ ...(typeof value === 'boolean' ? { value, type: 'boolean' } : { value }),
146
288
  });
289
+ if (response.configOptions) {
290
+ // SDK 1.3.0:set_config_option 响应携带全量快照,与 config_option_update 通知同源
291
+ this.configOptions = extractConfigOptions(response.configOptions);
292
+ this.socket.emit('acp:config-options', {
293
+ sessionId: this.sessionId,
294
+ configOptions: this.configOptions,
295
+ });
296
+ }
297
+ return response;
298
+ }
299
+ async authenticate(methodId) {
300
+ if (!this.connection) {
301
+ throw new Error('ACP bridge is not initialized');
302
+ }
303
+ await this.connection.authenticate({ methodId });
304
+ }
305
+ async logout() {
306
+ if (!this.connection) {
307
+ throw new Error('ACP bridge is not initialized');
308
+ }
309
+ await this.connection.logout({});
310
+ }
311
+ async deleteSession() {
312
+ if (!this.connection || !this.acpSessionId) {
313
+ throw new Error('ACP bridge is not initialized');
314
+ }
315
+ await this.connection.deleteSession({ sessionId: this.acpSessionId });
316
+ }
317
+ getConfigOptions() {
318
+ return this.configOptions;
319
+ }
320
+ getSupportsAdditionalDirectories() {
321
+ return this.supportsAdditionalDirectories;
147
322
  }
148
323
  sendInput(message) {
149
324
  if (this.activePrompt) {
@@ -155,9 +330,14 @@ export class AcpSessionBridge extends EventEmitter {
155
330
  async processPrompt(message) {
156
331
  if (!this.connection || !this.acpSessionId || this.stopped)
157
332
  return;
333
+ const prompt = [];
334
+ for (const attachment of message.attachments ?? []) {
335
+ prompt.push(attachment);
336
+ }
337
+ prompt.push({ type: 'text', text: message.content });
158
338
  this.activePrompt = this.connection.prompt({
159
339
  sessionId: this.acpSessionId,
160
- prompt: [{ type: 'text', text: message.content }],
340
+ prompt,
161
341
  });
162
342
  this.socket.emit('acp:prompt:start', { sessionId: this.sessionId });
163
343
  let stopReason = 'end_turn';
@@ -186,53 +366,126 @@ export class AcpSessionBridge extends EventEmitter {
186
366
  const output = this.spawner.stdout;
187
367
  const stream = acp.ndJsonStream(input, output);
188
368
  this.connection = new acp.ClientSideConnection(() => this, stream);
189
- await this.connection.initialize({
369
+ const result = await this.connection.initialize({
190
370
  protocolVersion: ACP_PROTOCOL_VERSION,
191
- clientCapabilities: {},
371
+ clientCapabilities: {
372
+ session: {
373
+ configOptions: { boolean: {} },
374
+ },
375
+ elicitation: { form: {}, url: {} },
376
+ },
192
377
  clientInfo: {
193
378
  name: 'agent-gear',
194
- version: '1.0.0',
379
+ version: '1.1.5',
195
380
  },
196
381
  });
382
+ this.agentProtocolVersion = result.protocolVersion ?? null;
383
+ if (result.protocolVersion != null && result.protocolVersion !== ACP_PROTOCOL_VERSION) {
384
+ // 版本不兼容:不断连,由上层提示用户
385
+ this.socket.emit('acp:protocol-version-mismatch', {
386
+ sessionId: this.sessionId,
387
+ expectedVersion: ACP_PROTOCOL_VERSION,
388
+ agentVersion: result.protocolVersion,
389
+ });
390
+ }
391
+ this.promptCapabilities = result.agentCapabilities?.promptCapabilities
392
+ ? {
393
+ image: result.agentCapabilities.promptCapabilities.image ?? false,
394
+ audio: result.agentCapabilities.promptCapabilities.audio ?? false,
395
+ embeddedContext: result.agentCapabilities.promptCapabilities.embeddedContext ?? false,
396
+ }
397
+ : null;
398
+ this.agentInfo = result.agentInfo
399
+ ? { name: result.agentInfo.name, version: result.agentInfo.version ?? null }
400
+ : null;
401
+ this.authMethods = toAuthMethods(result.authMethods);
402
+ this.agentMcpCapabilities = result.agentCapabilities?.mcpCapabilities ?? null;
403
+ console.log(`[ACP bridge] session ${this.sessionId}: agent capabilities: ` +
404
+ `protocolVersion=${result.protocolVersion ?? 'n/a'} mcp=${JSON.stringify(this.agentMcpCapabilities)} ` +
405
+ `agent=${this.agentInfo ? `${this.agentInfo.name}@${this.agentInfo.version ?? 'n/a'}` : 'n/a'}`);
406
+ this.supportsAdditionalDirectories =
407
+ result.agentCapabilities?.sessionCapabilities?.additionalDirectories !== undefined &&
408
+ result.agentCapabilities?.sessionCapabilities?.additionalDirectories !== null;
409
+ if (this.authMethods.length > 0) {
410
+ this.socket.emit('acp:auth:required', {
411
+ sessionId: this.sessionId,
412
+ authMethods: this.authMethods,
413
+ });
414
+ }
415
+ }
416
+ buildInitializedPayload(result) {
417
+ const configOptions = extractConfigOptions(result.configOptions);
418
+ this.configOptions = configOptions.length > 0 ? configOptions : this.configOptions;
419
+ // 协议要求:响应含 configOptions 时以其为准(忽略 modes)
420
+ const configModes = extractConfigModes(this.configOptions);
421
+ const configModels = extractConfigModels(this.configOptions);
422
+ let modes = [];
423
+ let currentModeId = null;
424
+ if (configModes) {
425
+ modes = configModes.modes;
426
+ currentModeId = configModes.currentModeId;
427
+ }
428
+ else if (result.modes?.availableModes) {
429
+ modes = result.modes.availableModes.map((m) => ({
430
+ id: m.id,
431
+ name: m.name,
432
+ description: m.description ?? undefined,
433
+ }));
434
+ currentModeId = result.modes.currentModeId ?? null;
435
+ }
436
+ let currentModel = null;
437
+ let availableModels = [];
438
+ let currentModelId = null;
439
+ if (configModels) {
440
+ availableModels = configModels.availableModels;
441
+ currentModelId = configModels.currentModelId;
442
+ currentModel = configModels.currentModel;
443
+ }
444
+ return {
445
+ sessionId: this.sessionId,
446
+ acpSessionId: this.acpSessionId,
447
+ modes,
448
+ currentModeId,
449
+ currentModel,
450
+ availableModels,
451
+ currentModelId,
452
+ configOptions: this.configOptions,
453
+ promptCapabilities: this.promptCapabilities,
454
+ agentInfo: this.agentInfo,
455
+ authMethods: this.authMethods,
456
+ supportsAdditionalDirectories: this.supportsAdditionalDirectories,
457
+ protocolVersion: this.agentProtocolVersion,
458
+ };
197
459
  }
198
460
  flushInputQueue() {
199
461
  while (this.inputQueue.length > 0) {
200
462
  this.processPrompt(this.inputQueue.shift());
201
463
  }
202
464
  }
203
- extractModes(modes) {
204
- if (!modes?.availableModes)
205
- return [];
206
- return modes.availableModes.map((m) => ({
207
- id: m.id,
208
- name: m.name,
209
- description: m.description ?? undefined,
210
- }));
211
- }
212
- extractCurrentModel(models) {
213
- if (!models?.availableModels || !models.currentModelId)
214
- return null;
215
- const found = models.availableModels.find((m) => m.modelId === models.currentModelId);
216
- if (!found)
217
- return null;
218
- return { id: found.modelId, name: found.name };
219
- }
220
- extractAvailableModels(models) {
221
- if (!models?.availableModels)
222
- return [];
223
- return models.availableModels.map((m) => ({
224
- id: m.modelId,
225
- name: m.name,
226
- }));
227
- }
228
465
  // ── acp.Client implementation ──
229
466
  async sessionUpdate(params) {
230
467
  const update = params.update;
231
468
  switch (update.sessionUpdate) {
232
469
  case 'agent_message_chunk':
233
470
  if (update.content.type === 'text') {
471
+ if (this.textChunkBuffer && this.textChunkMessageId !== update.messageId) {
472
+ // messageId 边界:不同消息立即 flush
473
+ this.flushTextBuffer();
474
+ }
234
475
  this.textChunkBuffer += update.content.text;
235
- this.scheduleTextFlush();
476
+ this.textChunkMessageId = update.messageId;
477
+ if (update.messageId) {
478
+ // 有 messageId 时跳过 50ms debounce 猜测,按 ID 边界 flush
479
+ this.flushTextBuffer();
480
+ }
481
+ else {
482
+ this.scheduleTextFlush();
483
+ }
484
+ }
485
+ else {
486
+ // 非 text chunk(image/audio/resource)原样透传
487
+ this.flushTextBuffer();
488
+ this.sendUpdate(update);
236
489
  }
237
490
  break;
238
491
  case 'tool_call':
@@ -242,6 +495,14 @@ export class AcpSessionBridge extends EventEmitter {
242
495
  this.flushTextBuffer();
243
496
  this.sendUpdate(update);
244
497
  break;
498
+ case 'config_option_update':
499
+ this.flushTextBuffer();
500
+ this.configOptions = extractConfigOptions(update.configOptions);
501
+ this.socket.emit('acp:config-options', {
502
+ sessionId: this.sessionId,
503
+ configOptions: this.configOptions,
504
+ });
505
+ break;
245
506
  case 'user_message_chunk':
246
507
  break;
247
508
  default:
@@ -277,6 +538,64 @@ export class AcpSessionBridge extends EventEmitter {
277
538
  this.pendingPermissions.delete(requestId);
278
539
  pending.resolve({ outcome });
279
540
  }
541
+ async unstable_createElicitation(params) {
542
+ // custom/未知模式不支持:立即取消,避免挂起 Agent
543
+ if (!acp.CreateElicitationRequest.isForm(params) && !acp.CreateElicitationRequest.isUrl(params)) {
544
+ return { action: 'cancel' };
545
+ }
546
+ const requestId = `elic_${Date.now()}_${Math.random().toString(36).slice(2)}`;
547
+ const toolCallId = 'toolCallId' in params ? params.toolCallId : undefined;
548
+ return new Promise((resolve) => {
549
+ const timeout = setTimeout(() => {
550
+ this.pendingElicitations.delete(requestId);
551
+ resolve({ action: 'cancel' });
552
+ }, 65_000);
553
+ this.pendingElicitations.set(requestId, { resolve, timeout });
554
+ if (acp.CreateElicitationRequest.isForm(params)) {
555
+ this.socket.emit('acp:elicitation', {
556
+ requestId,
557
+ sessionId: this.sessionId,
558
+ mode: 'form',
559
+ message: params.message,
560
+ ...(toolCallId != null ? { toolCallId } : {}),
561
+ requestedSchema: params.requestedSchema,
562
+ });
563
+ }
564
+ else {
565
+ this.socket.emit('acp:elicitation', {
566
+ requestId,
567
+ sessionId: this.sessionId,
568
+ mode: 'url',
569
+ message: params.message,
570
+ ...(toolCallId != null ? { toolCallId } : {}),
571
+ elicitationId: params.elicitationId,
572
+ url: params.url,
573
+ });
574
+ }
575
+ this.emit('elicitation:sent', requestId);
576
+ });
577
+ }
578
+ handleElicitationResponse(requestId, action, content) {
579
+ const pending = this.pendingElicitations.get(requestId);
580
+ if (!pending) {
581
+ console.warn(`Elicitation request ${requestId} not found`);
582
+ return;
583
+ }
584
+ clearTimeout(pending.timeout);
585
+ this.pendingElicitations.delete(requestId);
586
+ pending.resolve({
587
+ action,
588
+ ...(action === 'accept' && content
589
+ ? { content: content }
590
+ : {}),
591
+ });
592
+ }
593
+ async unstable_completeElicitation(params) {
594
+ this.socket.emit('acp:elicitation:complete', {
595
+ sessionId: this.sessionId,
596
+ elicitationId: params.elicitationId,
597
+ });
598
+ }
280
599
  // ── text buffering ──
281
600
  scheduleTextFlush() {
282
601
  if (this.textChunkTimer)
@@ -292,8 +611,10 @@ export class AcpSessionBridge extends EventEmitter {
292
611
  this.sendUpdate({
293
612
  sessionUpdate: 'agent_message_chunk',
294
613
  content: { type: 'text', text: this.textChunkBuffer },
614
+ ...(this.textChunkMessageId ? { messageId: this.textChunkMessageId } : {}),
295
615
  });
296
616
  this.textChunkBuffer = '';
617
+ this.textChunkMessageId = undefined;
297
618
  }
298
619
  }
299
620
  // ── socket forwarding ──
@@ -304,13 +625,16 @@ export class AcpSessionBridge extends EventEmitter {
304
625
  });
305
626
  }
306
627
  emitStopped(reason, exitCode) {
628
+ console.log(`[ACP bridge] session ${this.sessionId} stopped: reason=${reason} exitCode=${exitCode ?? 'n/a'}`);
307
629
  this.stopped = true;
308
630
  this.socket.emit('acp:stopped', { sessionId: this.sessionId, reason, exitCode });
309
631
  this.emit('acp:stopped', { sessionId: this.sessionId, reason, exitCode });
310
632
  }
311
633
  handleError(error) {
312
- this.stopped = true;
313
634
  const msg = error instanceof Error ? error.message : String(error);
635
+ const stack = error instanceof Error ? error.stack : undefined;
636
+ console.error(`[ACP bridge] session ${this.sessionId} failed: ${msg}${stack ? `\n${stack}` : ''}`);
637
+ this.stopped = true;
314
638
  this.socket.emit('acp:stopped', {
315
639
  sessionId: this.sessionId,
316
640
  reason: 'error',
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/acp/bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/acp/bridge.ts"],"names":[],"mappings":"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"}