aws-runtime-bridge 1.7.50 → 1.8.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.
- package/dist/adapter/AcodeSdkAdapter.d.ts +30 -3
- package/dist/adapter/AcodeSdkAdapter.d.ts.map +1 -1
- package/dist/adapter/AcodeSdkAdapter.js +427 -105
- package/dist/adapter/AcodeSdkAdapter.test.js +1093 -86
- package/dist/adapter/ClaudeSdkAdapter.test.js +31 -8
- package/dist/adapter/CodexSdkAdapter.d.ts.map +1 -1
- package/dist/adapter/CodexSdkAdapter.js +2 -0
- package/dist/adapter/OpencodeSdkAdapter.d.ts.map +1 -1
- package/dist/adapter/OpencodeSdkAdapter.js +2 -0
- package/dist/adapter/SdkProviderSpi.d.ts.map +1 -1
- package/dist/adapter/adapter.test.js +2 -2
- package/dist/adapter/idle-poll-loop.d.ts +4 -4
- package/dist/adapter/idle-poll-loop.d.ts.map +1 -1
- package/dist/adapter/idle-poll-loop.js +3 -3
- package/dist/adapter/idle-poll-loop.test.js +15 -1
- package/dist/adapter/types.d.ts +25 -6
- package/dist/adapter/types.d.ts.map +1 -1
- package/dist/adapter/types.js +221 -110
- package/dist/adapter/types.test.js +10 -3
- package/dist/routes/instance.d.ts.map +1 -1
- package/dist/routes/instance.js +6 -7
- package/dist/routes/runtime-binding.js +2 -2
- package/dist/routes/terminal.d.ts +20 -5
- package/dist/routes/terminal.d.ts.map +1 -1
- package/dist/routes/terminal.js +420 -170
- package/dist/routes/terminal.test.js +380 -208
- package/dist/services/mcp-launch-binding-queue.d.ts +1 -0
- package/dist/services/mcp-launch-binding-queue.d.ts.map +1 -1
- package/dist/services/mcp-launch-binding-queue.js +8 -2
- package/dist/services/mcp-launch-binding-queue.test.js +47 -4
- package/dist/services/session-output.d.ts +10 -6
- package/dist/services/session-output.d.ts.map +1 -1
- package/dist/services/session-output.js +29 -14
- package/dist/services/session-output.test.js +93 -39
- package/package/acode/dist/built-in-file-tools.d.ts +1 -1
- package/package/acode/dist/built-in-file-tools.d.ts.map +1 -1
- package/package/acode/dist/built-in-file-tools.js +388 -50
- package/package/acode/dist/runtime.d.ts +11 -3
- package/package/acode/dist/runtime.d.ts.map +1 -1
- package/package/acode/dist/runtime.js +902 -190
- package/package/acode/dist/types.d.ts +18 -5
- package/package/acode/dist/types.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.js +3 -2
- package/package/aws-client-agent-mcp/dist/mcp-server.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.test.js +11 -9
- package/package/aws-client-agent-mcp/dist/mcp-server.test.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/runtime-launch-binding.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/runtime-launch-binding.js +1 -0
- package/package/aws-client-agent-mcp/dist/runtime-launch-binding.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/status-reporter.d.ts +2 -0
- package/package/aws-client-agent-mcp/dist/status-reporter.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/status-reporter.js +31 -3
- package/package/aws-client-agent-mcp/dist/status-reporter.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/types.d.ts +1 -1
- package/package/aws-client-agent-mcp/dist/types.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/types.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/websocket-client.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/websocket-client.js +2 -0
- package/package/aws-client-agent-mcp/dist/websocket-client.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/websocket-client.test.js +43 -0
- package/package/aws-client-agent-mcp/dist/websocket-client.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -152,8 +152,7 @@ describe('ClaudeSdkAdapter', () => {
|
|
|
152
152
|
fs.rmSync(commandDirectory, { recursive: true, force: true });
|
|
153
153
|
}
|
|
154
154
|
});
|
|
155
|
-
it('auto-wakes Claude when workflow idle commands include poll_message and my_task guidance', async () => {
|
|
156
|
-
vi.useFakeTimers();
|
|
155
|
+
it('auto-wakes Claude immediately when workflow idle commands include poll_message and my_task guidance', async () => {
|
|
157
156
|
const adapter = new ClaudeSdkAdapter();
|
|
158
157
|
const sentPrompts = [];
|
|
159
158
|
Reflect.set(adapter, 'sessions', new Map([
|
|
@@ -177,16 +176,11 @@ describe('ClaudeSdkAdapter', () => {
|
|
|
177
176
|
idleInputCommand: 'system: 请保持工作循环:持续调用 poll_message 阻塞等待新消息和流程线任务提醒;收到流程任务提醒后调用 my_task 查看已由后台静默抢占的任务详情并直接处理,完成后调用 submit_task_result 提交结果,然后继续 poll_message。',
|
|
178
177
|
nonInputCommand: '',
|
|
179
178
|
});
|
|
180
|
-
await vi.advanceTimersByTimeAsync(1499);
|
|
181
|
-
expect(sendIdlePrompt).not.toHaveBeenCalled();
|
|
182
|
-
expect(sentPrompts).toEqual([]);
|
|
183
|
-
await vi.advanceTimersByTimeAsync(1);
|
|
184
179
|
expect(sendIdlePrompt).toHaveBeenCalledTimes(1);
|
|
185
180
|
expect(sentPrompts).toEqual([POLL_PROMPT]);
|
|
186
181
|
expect(adapter.getSessionStatus('session-1')).toBe('waiting_input');
|
|
187
182
|
});
|
|
188
183
|
it('starts a blocking poll turn for poll_message-style idle commands', async () => {
|
|
189
|
-
vi.useFakeTimers();
|
|
190
184
|
const adapter = new ClaudeSdkAdapter();
|
|
191
185
|
const sentPrompts = [];
|
|
192
186
|
Reflect.set(adapter, 'sessions', new Map([
|
|
@@ -209,7 +203,36 @@ describe('ClaudeSdkAdapter', () => {
|
|
|
209
203
|
idleInputCommand: 'system: 请保持工作循环:持续调用 poll_message 阻塞等待新消息和流程线任务提醒;收到流程任务提醒后调用 my_task 查看已由后台静默抢占的任务详情并直接处理,完成后调用 submit_task_result 提交结果,然后继续 poll_message。',
|
|
210
204
|
nonInputCommand: '',
|
|
211
205
|
});
|
|
212
|
-
|
|
206
|
+
expect(sentPrompts).toEqual([POLL_PROMPT]);
|
|
207
|
+
expect(adapter.getSessionStatus('session-1')).toBe('waiting_input');
|
|
208
|
+
});
|
|
209
|
+
it('starts poll_message idle loop when idle commands are configured before startup reaches waiting_input', () => {
|
|
210
|
+
const adapter = new ClaudeSdkAdapter();
|
|
211
|
+
const sentPrompts = [];
|
|
212
|
+
Reflect.set(adapter, 'sessions', new Map([
|
|
213
|
+
[
|
|
214
|
+
'session-1',
|
|
215
|
+
{
|
|
216
|
+
sessionId: 'session-1',
|
|
217
|
+
status: 'starting',
|
|
218
|
+
messages: [],
|
|
219
|
+
createdAt: new Date().toISOString(),
|
|
220
|
+
totalUsage: { inputTokens: 0, outputTokens: 0 },
|
|
221
|
+
},
|
|
222
|
+
],
|
|
223
|
+
]));
|
|
224
|
+
vi.spyOn(adapter, 'sendIdlePrompt')
|
|
225
|
+
.mockImplementation((_sessionId, prompt) => {
|
|
226
|
+
sentPrompts.push(prompt);
|
|
227
|
+
});
|
|
228
|
+
adapter.setIdleCommands('session-1', {
|
|
229
|
+
idleInputCommand: 'system: 请保持工作循环:持续调用 poll_message 阻塞等待新消息和流程线任务提醒;收到流程任务提醒后调用 my_task 查看已由后台静默抢占的任务详情并直接处理,完成后调用 submit_task_result 提交结果,然后继续 poll_message。',
|
|
230
|
+
nonInputCommand: '',
|
|
231
|
+
});
|
|
232
|
+
expect(sentPrompts).toEqual([]);
|
|
233
|
+
const session = adapter.sessions.get('session-1');
|
|
234
|
+
session.status = 'waiting_input';
|
|
235
|
+
adapter.startIdleDetection('session-1');
|
|
213
236
|
expect(sentPrompts).toEqual([POLL_PROMPT]);
|
|
214
237
|
expect(adapter.getSessionStatus('session-1')).toBe('waiting_input');
|
|
215
238
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodexSdkAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/CodexSdkAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiB3C,OAAO,KAAK,EAEV,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EAEnB,aAAa,EAEd,MAAM,YAAY,CAAC;AA2RpB,qBAAa,eAAgB,SAAQ,YAAa,YAAW,mBAAmB;IAC9E,QAAQ,CAAC,UAAU,WAAW;IAC9B,QAAQ,CAAC,WAAW,WAAW;IAE/B,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,SAAS,CAAC,CAAiB;IAE7B,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmE5E,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC9D,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrE,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7F,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAanG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBlD,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,IAAI,CAAC;IA4BhB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAIzD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAItC,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK3D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI9D,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIrD,OAAO,IAAI,IAAI;IAOf;;;OAGG;YACW,OAAO;IA6BrB,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,kBAAkB;YAqCZ,OAAO;IAiCrB,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,gBAAgB;IA+ExB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,kBAAkB;IAuD1B,OAAO,CAAC,YAAY;IA2BpB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"CodexSdkAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/CodexSdkAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiB3C,OAAO,KAAK,EAEV,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EAEnB,aAAa,EAEd,MAAM,YAAY,CAAC;AA2RpB,qBAAa,eAAgB,SAAQ,YAAa,YAAW,mBAAmB;IAC9E,QAAQ,CAAC,UAAU,WAAW;IAC9B,QAAQ,CAAC,WAAW,WAAW;IAE/B,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,SAAS,CAAC,CAAiB;IAE7B,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmE5E,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC9D,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrE,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7F,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAanG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBlD,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,IAAI,CAAC;IA4BhB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAIzD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAItC,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK3D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI9D,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIrD,OAAO,IAAI,IAAI;IAOf;;;OAGG;YACW,OAAO;IA6BrB,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,kBAAkB;YAqCZ,OAAO;IAiCrB,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,gBAAgB;IA+ExB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,kBAAkB;IAuD1B,OAAO,CAAC,YAAY;IA2BpB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,kBAAkB;IA2C1B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,cAAc;YAcR,cAAc;IAyB5B,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,2BAA2B;CAOpC"}
|
|
@@ -735,6 +735,7 @@ export class CodexSdkAdapter extends EventEmitter {
|
|
|
735
735
|
isPollingCommand: (command) => this.isMessagePollingIdleCommand(command),
|
|
736
736
|
dispatchPollingPrompt: (command) => this.sendIdlePrompt(sessionId, command, { keepWaitingStatus: true }),
|
|
737
737
|
dispatchRegularIdleCommand: (command) => this.sendIdlePrompt(sessionId, command),
|
|
738
|
+
pollDelayMs: CODEX_IDLE_THRESHOLD_MS,
|
|
738
739
|
regularIdleDelayMs: CODEX_IDLE_THRESHOLD_MS,
|
|
739
740
|
});
|
|
740
741
|
}
|
|
@@ -748,6 +749,7 @@ export class CodexSdkAdapter extends EventEmitter {
|
|
|
748
749
|
isPollingCommand: (command) => this.isMessagePollingIdleCommand(command),
|
|
749
750
|
dispatchPollingPrompt: (command) => this.sendIdlePrompt(sessionId, command, { keepWaitingStatus: true }),
|
|
750
751
|
dispatchRegularIdleCommand: (command) => this.sendIdlePrompt(sessionId, command),
|
|
752
|
+
pollDelayMs: CODEX_IDLE_THRESHOLD_MS,
|
|
751
753
|
regularIdleDelayMs: CODEX_IDLE_THRESHOLD_MS,
|
|
752
754
|
});
|
|
753
755
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpencodeSdkAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/OpencodeSdkAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiB3C,OAAO,EAKL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAExB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AA4GpB,qBAAa,kBAAmB,SAAQ,YAAa,YAAW,mBAAmB;IACjF,QAAQ,CAAC,UAAU,cAAc;IACjC,QAAQ,CAAC,WAAW,cAAc;IAElC,OAAO,CAAC,QAAQ,CAA2C;IAC3D,OAAO,CAAC,SAAS,CAAC,CAAoB;IAEhC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+I5E,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CzG,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBnE,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7F,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAUnG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAclD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BxD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAIzD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAItC,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI3D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI9D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAOpD,OAAO,IAAI,IAAI;IAaf;;;OAGG;YACW,OAAO;YA2BP,aAAa;IAmB3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAahC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,YAAY;YAYN,UAAU;IAuBxB,OAAO,CAAC,mBAAmB;IA6H3B,OAAO,CAAC,gBAAgB;IAkHxB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"OpencodeSdkAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/OpencodeSdkAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiB3C,OAAO,EAKL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAExB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AA4GpB,qBAAa,kBAAmB,SAAQ,YAAa,YAAW,mBAAmB;IACjF,QAAQ,CAAC,UAAU,cAAc;IACjC,QAAQ,CAAC,WAAW,cAAc;IAElC,OAAO,CAAC,QAAQ,CAA2C;IAC3D,OAAO,CAAC,SAAS,CAAC,CAAoB;IAEhC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+I5E,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CzG,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBnE,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7F,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAUnG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAclD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BxD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAIzD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAItC,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI3D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI9D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAOpD,OAAO,IAAI,IAAI;IAaf;;;OAGG;YACW,OAAO;YA2BP,aAAa;IAmB3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAahC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,YAAY;YAYN,UAAU;IAuBxB,OAAO,CAAC,mBAAmB;IA6H3B,OAAO,CAAC,gBAAgB;IAkHxB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,kBAAkB;IAuC1B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,2BAA2B;CAOpC"}
|
|
@@ -702,6 +702,7 @@ export class OpencodeSdkAdapter extends EventEmitter {
|
|
|
702
702
|
isPollingCommand: (command) => this.isMessagePollingIdleCommand(command),
|
|
703
703
|
dispatchPollingPrompt: (command) => this.sendMessage(sessionId, this.toIdlePrompt(command), { keepWaitingStatus: true }),
|
|
704
704
|
dispatchRegularIdleCommand: (command) => this.sendMessage(sessionId, this.toIdlePrompt(command)),
|
|
705
|
+
pollDelayMs: 1500,
|
|
705
706
|
});
|
|
706
707
|
}
|
|
707
708
|
session.idlePollLoop.start();
|
|
@@ -714,6 +715,7 @@ export class OpencodeSdkAdapter extends EventEmitter {
|
|
|
714
715
|
isPollingCommand: (command) => this.isMessagePollingIdleCommand(command),
|
|
715
716
|
dispatchPollingPrompt: (command) => this.sendMessage(sessionId, this.toIdlePrompt(command), { keepWaitingStatus: true }),
|
|
716
717
|
dispatchRegularIdleCommand: (command) => this.sendMessage(sessionId, this.toIdlePrompt(command)),
|
|
718
|
+
pollDelayMs: 1500,
|
|
717
719
|
});
|
|
718
720
|
}
|
|
719
721
|
const timer = setInterval(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SdkProviderSpi.d.ts","sourceRoot":"","sources":["../../src/adapter/SdkProviderSpi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SdkProviderSpi.d.ts","sourceRoot":"","sources":["../../src/adapter/SdkProviderSpi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAK5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,mBAAmB,CAAC;CAC1C;AAED,eAAO,MAAM,wBAAwB,EAAE,qBAAqB,EAiC3D,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,qBAAqB,CAOnF;AAED,wBAAgB,6BAA6B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,eAAe,EACzB,iBAAiB,EAAE,CAAC,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,qBAAqB,KAAK,IAAI,GAC3F,IAAI,CASN"}
|
|
@@ -172,8 +172,8 @@ describe('Adapter Types', () => {
|
|
|
172
172
|
actionDetail: 'aws-mcp/send_group',
|
|
173
173
|
});
|
|
174
174
|
expect(getToolActionInfo('poll_message', {})).toEqual({
|
|
175
|
-
actionType: '
|
|
176
|
-
actionLabel: '
|
|
175
|
+
actionType: 'idle',
|
|
176
|
+
actionLabel: '监听消息',
|
|
177
177
|
actionDetail: 'aws-mcp/poll_message',
|
|
178
178
|
});
|
|
179
179
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* SDK 空闲轮询驱动器。
|
|
3
|
-
* 主流程:进入 waiting_input ->
|
|
3
|
+
* 主流程:进入 waiting_input -> 立即触发 poll 提示或延迟触发普通 idle 命令 -> 交给 adapter 启动模型 turn -> turn 完成后由 adapter 再次启动本驱动器。
|
|
4
4
|
*/
|
|
5
5
|
export interface IdlePollLoopOptions {
|
|
6
6
|
readonly getStatus: () => 'starting' | 'thinking' | 'tool_using' | 'waiting_input' | 'completed' | 'terminated' | 'error' | undefined;
|
|
@@ -8,18 +8,18 @@ export interface IdlePollLoopOptions {
|
|
|
8
8
|
readonly isPollingCommand: (command: string) => boolean;
|
|
9
9
|
readonly dispatchPollingPrompt: (command: string) => void | Promise<void>;
|
|
10
10
|
readonly dispatchRegularIdleCommand: (command: string) => void | Promise<void>;
|
|
11
|
-
readonly
|
|
11
|
+
readonly pollDelayMs?: number;
|
|
12
12
|
readonly regularIdleDelayMs?: number;
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
* 管理单个 SDK 会话的空闲自动命令。
|
|
16
|
-
* 具体逻辑:poll_message
|
|
16
|
+
* 具体逻辑:poll_message 类命令立即进入 MCP 阻塞等待;普通命令保留原有延迟触发语义。
|
|
17
17
|
*/
|
|
18
18
|
export declare class IdlePollLoop {
|
|
19
19
|
private readonly options;
|
|
20
20
|
private timer;
|
|
21
21
|
private running;
|
|
22
|
-
private readonly
|
|
22
|
+
private readonly pollDelayMs;
|
|
23
23
|
private readonly regularIdleDelayMs;
|
|
24
24
|
constructor(options: IdlePollLoopOptions);
|
|
25
25
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idle-poll-loop.d.ts","sourceRoot":"","sources":["../../src/adapter/idle-poll-loop.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,eAAe,GAAG,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC;IACtI,QAAQ,CAAC,UAAU,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACxD,QAAQ,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,QAAQ,CAAC,0BAA0B,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"idle-poll-loop.d.ts","sourceRoot":"","sources":["../../src/adapter/idle-poll-loop.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,eAAe,GAAG,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC;IACtI,QAAQ,CAAC,UAAU,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACxD,QAAQ,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,QAAQ,CAAC,0BAA0B,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAID;;;GAGG;AACH,qBAAa,YAAY;IAMX,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;gBAEf,OAAO,EAAE,mBAAmB;IAKzD;;;OAGG;IACH,KAAK,IAAI,IAAI;IAmBb;;;OAGG;IACH,IAAI,IAAI,IAAI;YAOE,IAAI;CAgBnB"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 管理单个 SDK 会话的空闲自动命令。
|
|
3
|
-
* 具体逻辑:poll_message
|
|
3
|
+
* 具体逻辑:poll_message 类命令立即进入 MCP 阻塞等待;普通命令保留原有延迟触发语义。
|
|
4
4
|
*/
|
|
5
5
|
export class IdlePollLoop {
|
|
6
6
|
constructor(options) {
|
|
7
7
|
this.options = options;
|
|
8
8
|
this.running = false;
|
|
9
|
-
this.
|
|
9
|
+
this.pollDelayMs = options.pollDelayMs ?? 0;
|
|
10
10
|
this.regularIdleDelayMs = options.regularIdleDelayMs ?? 1500;
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
@@ -19,7 +19,7 @@ export class IdlePollLoop {
|
|
|
19
19
|
if (!command || this.options.getStatus() !== 'waiting_input') {
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
22
|
-
const delay = this.options.isPollingCommand(command) ? this.
|
|
22
|
+
const delay = this.options.isPollingCommand(command) ? this.pollDelayMs : this.regularIdleDelayMs;
|
|
23
23
|
if (delay <= 0) {
|
|
24
24
|
void this.fire(command);
|
|
25
25
|
return;
|
|
@@ -4,7 +4,20 @@ afterEach(() => {
|
|
|
4
4
|
vi.useRealTimers();
|
|
5
5
|
});
|
|
6
6
|
describe('IdlePollLoop', () => {
|
|
7
|
-
it('dispatches poll commands
|
|
7
|
+
it('dispatches poll commands immediately when the session is waiting for input', async () => {
|
|
8
|
+
const dispatchPollingPrompt = vi.fn();
|
|
9
|
+
const loop = new IdlePollLoop({
|
|
10
|
+
getStatus: () => 'waiting_input',
|
|
11
|
+
getCommand: () => 'poll_message',
|
|
12
|
+
isPollingCommand: (command) => command.includes('poll_message'),
|
|
13
|
+
dispatchPollingPrompt,
|
|
14
|
+
dispatchRegularIdleCommand: vi.fn(),
|
|
15
|
+
});
|
|
16
|
+
loop.start();
|
|
17
|
+
expect(dispatchPollingPrompt).toHaveBeenCalledTimes(1);
|
|
18
|
+
expect(dispatchPollingPrompt).toHaveBeenCalledWith('poll_message');
|
|
19
|
+
});
|
|
20
|
+
it('supports an explicit poll command delay for compatibility', async () => {
|
|
8
21
|
vi.useFakeTimers();
|
|
9
22
|
const dispatchPollingPrompt = vi.fn();
|
|
10
23
|
const loop = new IdlePollLoop({
|
|
@@ -13,6 +26,7 @@ describe('IdlePollLoop', () => {
|
|
|
13
26
|
isPollingCommand: (command) => command.includes('poll_message'),
|
|
14
27
|
dispatchPollingPrompt,
|
|
15
28
|
dispatchRegularIdleCommand: vi.fn(),
|
|
29
|
+
pollDelayMs: 1500,
|
|
16
30
|
});
|
|
17
31
|
loop.start();
|
|
18
32
|
await vi.advanceTimersByTimeAsync(1499);
|
package/dist/adapter/types.d.ts
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
*
|
|
5
5
|
* 参考自 SpectrAI 项目的 adapter 设计,用于支持多种 AI Provider
|
|
6
6
|
*/
|
|
7
|
-
import { EventEmitter } from
|
|
8
|
-
export type SessionStatus =
|
|
9
|
-
export type ProviderEventType =
|
|
7
|
+
import { EventEmitter } from "node:events";
|
|
8
|
+
export type SessionStatus = "starting" | "thinking" | "tool_using" | "waiting_input" | "completed" | "terminated" | "error";
|
|
9
|
+
export type ProviderEventType = "ai_request" | "text_delta" | "thinking" | "tool_use_start" | "tool_use_end" | "permission_request" | "ask_user_question" | "exit_plan_mode" | "turn_complete" | "session_complete" | "error";
|
|
10
10
|
/**
|
|
11
11
|
* Agent 工具动作类型分类
|
|
12
12
|
* 用于细粒度显示 agent 当前正在执行的具体动作
|
|
13
13
|
*/
|
|
14
|
-
export type ToolActionType =
|
|
14
|
+
export type ToolActionType = "skill" | "mcp" | "idle" | "edit_file" | "write_file" | "read_file" | "bash" | "search" | "web" | "ai_request" | "lsp" | "notebook" | "other";
|
|
15
15
|
/**
|
|
16
16
|
* 工具动作信息
|
|
17
17
|
*/
|
|
@@ -46,6 +46,7 @@ export declare function isTransientClipboardPasteFilePath(text: string): boolean
|
|
|
46
46
|
* 递归脱敏工具展示参数,保留真实执行输入不变,仅用于日志/状态/时间线展示。
|
|
47
47
|
*/
|
|
48
48
|
export declare function redactTransientClipboardPastePathsInValue(value: unknown): unknown;
|
|
49
|
+
export declare function getCanonicalMcpDetail(rawToolName: string): string;
|
|
49
50
|
/**
|
|
50
51
|
* 根据工具名称获取动作类型信息
|
|
51
52
|
* @param toolName 工具名称
|
|
@@ -72,6 +73,20 @@ export interface ProviderEvent {
|
|
|
72
73
|
data: {
|
|
73
74
|
/** 文本内容(text_delta / thinking / error) */
|
|
74
75
|
text?: string;
|
|
76
|
+
/** AI 请求模型名称(ai_request) */
|
|
77
|
+
model?: string;
|
|
78
|
+
/** AI 请求 endpoint 摘要(ai_request,不含密钥) */
|
|
79
|
+
endpoint?: string;
|
|
80
|
+
/** AI 请求是否流式返回(ai_request) */
|
|
81
|
+
stream?: boolean;
|
|
82
|
+
/** AI 请求上下文消息数量(ai_request) */
|
|
83
|
+
messageCount?: number;
|
|
84
|
+
/** AI 请求可用工具数量(ai_request) */
|
|
85
|
+
toolCount?: number;
|
|
86
|
+
/** AI 请求最后一条用户消息预览(ai_request) */
|
|
87
|
+
lastUserMessagePreview?: string;
|
|
88
|
+
/** AI 请求体完整 JSON(ai_request,不含 header/API key) */
|
|
89
|
+
requestBody?: string;
|
|
75
90
|
/** 工具名称(tool_use_start / tool_use_end) */
|
|
76
91
|
toolName?: string;
|
|
77
92
|
/** 工具输入参数(tool_use_start / ask_user_question / exit_plan_mode) */
|
|
@@ -82,6 +97,10 @@ export interface ProviderEvent {
|
|
|
82
97
|
isError?: boolean;
|
|
83
98
|
/** Token 用量(turn_complete) */
|
|
84
99
|
usage?: RuntimeTokenUsage;
|
|
100
|
+
/** AI 响应体完整 JSON(turn_complete,不含请求 header/API key) */
|
|
101
|
+
responseBody?: string;
|
|
102
|
+
/** AI 响应结束原因(turn_complete) */
|
|
103
|
+
finishReason?: string;
|
|
85
104
|
/** 退出码(session_complete) */
|
|
86
105
|
exitCode?: number;
|
|
87
106
|
/** 权限请求描述(permission_request) */
|
|
@@ -118,7 +137,7 @@ export interface AdapterSessionConfig {
|
|
|
118
137
|
/** 初始 prompt(创建会话后自动发送) */
|
|
119
138
|
initialPrompt?: string;
|
|
120
139
|
/** 初始 prompt 是否显示为用户消息 */
|
|
121
|
-
initialPromptVisibility?:
|
|
140
|
+
initialPromptVisibility?: "visible" | "hidden";
|
|
122
141
|
/** 是否自动确认所有工具调用 */
|
|
123
142
|
autoAccept: boolean;
|
|
124
143
|
/** 系统提示注入 */
|
|
@@ -172,7 +191,7 @@ export interface AdapterSession {
|
|
|
172
191
|
export interface ConversationMessage {
|
|
173
192
|
id: string;
|
|
174
193
|
sessionId: string;
|
|
175
|
-
role:
|
|
194
|
+
role: "user" | "assistant" | "tool_use" | "tool_result";
|
|
176
195
|
content: string;
|
|
177
196
|
timestamp: string;
|
|
178
197
|
/** 工具名称(tool_use / tool_result) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapter/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,UAAU,GACV,YAAY,GACZ,eAAe,GACf,WAAW,GACX,YAAY,GACZ,OAAO,CAAC;AAIZ,MAAM,MAAM,iBAAiB,GACzB,YAAY,GACZ,UAAU,GACV,gBAAgB,GAChB,cAAc,GACd,oBAAoB,GACpB,mBAAmB,GACnB,gBAAgB,GAChB,eAAe,GACf,kBAAkB,GAClB,OAAO,CAAC;AAIZ;;;GAGG;AACH,MAAM,MAAM,cAAc,GACtB,OAAO,GACP,KAAK,GACL,MAAM,GACN,WAAW,GACX,YAAY,GACZ,WAAW,GACX,MAAM,GACN,QAAQ,GACR,KAAK,GACL,KAAK,GACL,UAAU,GACV,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,aAAa;IACb,UAAU,EAAE,cAAc,CAAC;IAC3B,iBAAiB;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapter/types.ts"],"names":[],"mappings":"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"}
|