agent-tower 0.6.0-beta.14 → 0.6.0-beta.16

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 (142) hide show
  1. package/dist/runtime/__tests__/acp-driver-lifecycle.test.js +232 -6
  2. package/dist/runtime/__tests__/acp-driver-lifecycle.test.js.map +1 -1
  3. package/dist/runtime/__tests__/codex-runtime-resolution.test.d.ts +2 -0
  4. package/dist/runtime/__tests__/codex-runtime-resolution.test.d.ts.map +1 -0
  5. package/dist/runtime/__tests__/codex-runtime-resolution.test.js +107 -0
  6. package/dist/runtime/__tests__/codex-runtime-resolution.test.js.map +1 -0
  7. package/dist/runtime/__tests__/runtime-coordinator.test.js +205 -7
  8. package/dist/runtime/__tests__/runtime-coordinator.test.js.map +1 -1
  9. package/dist/runtime/acp/acp-driver.d.ts.map +1 -1
  10. package/dist/runtime/acp/acp-driver.js +188 -61
  11. package/dist/runtime/acp/acp-driver.js.map +1 -1
  12. package/dist/runtime/acp/agents/codex.js +15 -12
  13. package/dist/runtime/acp/agents/codex.js.map +1 -1
  14. package/dist/runtime/contracts.d.ts +12 -0
  15. package/dist/runtime/contracts.d.ts.map +1 -1
  16. package/dist/runtime/runtime-coordinator.d.ts +22 -1
  17. package/dist/runtime/runtime-coordinator.d.ts.map +1 -1
  18. package/dist/runtime/runtime-coordinator.js +214 -26
  19. package/dist/runtime/runtime-coordinator.js.map +1 -1
  20. package/dist/services/__tests__/session-manager.lifecycle.test.js +578 -68
  21. package/dist/services/__tests__/session-manager.lifecycle.test.js.map +1 -1
  22. package/dist/services/__tests__/session-manager.team-run.test.js +2 -1
  23. package/dist/services/__tests__/session-manager.team-run.test.js.map +1 -1
  24. package/dist/services/session-manager.d.ts +14 -8
  25. package/dist/services/session-manager.d.ts.map +1 -1
  26. package/dist/services/session-manager.js +359 -176
  27. package/dist/services/session-manager.js.map +1 -1
  28. package/dist/web/assets/{AgentDemoPage-aLGw8pYk.js → AgentDemoPage-04hKRdNk.js} +1 -1
  29. package/dist/web/assets/{AgentEnvironmentSettingsPage-BYcH_wMz.js → AgentEnvironmentSettingsPage-TnYB_gn_.js} +1 -1
  30. package/dist/web/assets/{AgentLogo-Dyqxcj5s.js → AgentLogo-BQ4AhPCM.js} +1 -1
  31. package/dist/web/assets/ConversationPage-GSAFcHuX.js +3 -0
  32. package/dist/web/assets/CreateTaskInput-DSl73Wwc.js +1 -0
  33. package/dist/web/assets/{DemoPage-m92AArTk.js → DemoPage-BKlcChAw.js} +1 -1
  34. package/dist/web/assets/{GeneralSettingsPage-P5HcwCXo.js → GeneralSettingsPage-sVFvK9Oe.js} +1 -1
  35. package/dist/web/assets/{Icons-BFOphLw-.js → Icons-DGahMuvC.js} +1 -1
  36. package/dist/web/assets/{LoadingPreviewPage-CfT4FIyb.js → LoadingPreviewPage-CZ2N3qZc.js} +1 -1
  37. package/dist/web/assets/{McpSettingsPage-BI_b78L_.js → McpSettingsPage-KZFzkxCs.js} +1 -1
  38. package/dist/web/assets/{MemberAvatar-1UlgMZMM.js → MemberAvatar-5bEbGww5.js} +1 -1
  39. package/dist/web/assets/{NotificationSettingsPage-CQCyq9QZ.js → NotificationSettingsPage-hVClKCOc.js} +1 -1
  40. package/dist/web/assets/{ProfileSettingsPage-ojhJXLWb.js → ProfileSettingsPage-BICdSvU4.js} +1 -1
  41. package/dist/web/assets/{ProjectKanbanPage-DK3rZJzY.js → ProjectKanbanPage-D62MacD4.js} +27 -27
  42. package/dist/web/assets/{ProjectSettingsPage-MGB631ia.js → ProjectSettingsPage-aMerK2A7.js} +1 -1
  43. package/dist/web/assets/{ProviderSettingsPage-CMZvEWMa.js → ProviderSettingsPage-Djd3iQfB.js} +1 -1
  44. package/dist/web/assets/{SettingsMasterDetail-9CnCBuNZ.js → SettingsMasterDetail-Czojx5vD.js} +1 -1
  45. package/dist/web/assets/{TeamSettingsPage-BUXKd5UF.js → TeamSettingsPage-B3-4MXXx.js} +1 -1
  46. package/dist/web/assets/{arc-2leUEhVa.js → arc-DzPiJSKL.js} +1 -1
  47. package/dist/web/assets/{architectureDiagram-3BPJPVTR-CDgYR44L.js → architectureDiagram-3BPJPVTR-EhKxHp4t.js} +1 -1
  48. package/dist/web/assets/{arrow-left-Jn-v17JF.js → arrow-left-2dTz1a0q.js} +1 -1
  49. package/dist/web/assets/{blockDiagram-GPEHLZMM-CzfIh31g.js → blockDiagram-GPEHLZMM-BHcWmA7M.js} +1 -1
  50. package/dist/web/assets/{c4Diagram-AAUBKEIU-BzzBXKEF.js → c4Diagram-AAUBKEIU-D59zNlIS.js} +1 -1
  51. package/dist/web/assets/channel-BpGJqMDu.js +1 -0
  52. package/dist/web/assets/check-CYQXIceH.js +1 -0
  53. package/dist/web/assets/{chevron-down-CpKODb7Y.js → chevron-down-BTGC8Sed.js} +1 -1
  54. package/dist/web/assets/{chevron-right-CBoUSXVq.js → chevron-right-BEw6jjbJ.js} +1 -1
  55. package/dist/web/assets/{chevron-up-KZ1hsL8y.js → chevron-up-D_Hmx6ug.js} +1 -1
  56. package/dist/web/assets/{chunk-2J33WTMH-GJE6LCGS.js → chunk-2J33WTMH-nk1Ieiq7.js} +1 -1
  57. package/dist/web/assets/{chunk-4BX2VUAB-Bw_ITp1Q.js → chunk-4BX2VUAB-xl3tQkpA.js} +1 -1
  58. package/dist/web/assets/{chunk-55IACEB6-DQ-XuWbD.js → chunk-55IACEB6-Bj12k-M-.js} +1 -1
  59. package/dist/web/assets/{chunk-727SXJPM-BgL49Dtw.js → chunk-727SXJPM-DeL4hVho.js} +1 -1
  60. package/dist/web/assets/{chunk-AQP2D5EJ-dRTVohoy.js → chunk-AQP2D5EJ-xyt_hZ7N.js} +1 -1
  61. package/dist/web/assets/{chunk-FMBD7UC4-BZtRjoH7.js → chunk-FMBD7UC4-DMpougEb.js} +1 -1
  62. package/dist/web/assets/{chunk-ND2GUHAM-CN3wND6y.js → chunk-ND2GUHAM-D2qjylxW.js} +1 -1
  63. package/dist/web/assets/{chunk-QZHKN3VN-CMwbobMj.js → chunk-QZHKN3VN-BjCtAePb.js} +1 -1
  64. package/dist/web/assets/{circle-alert-kELlE07n.js → circle-alert-BGbIBYEs.js} +1 -1
  65. package/dist/web/assets/classDiagram-4FO5ZUOK-M-OAZSzx.js +1 -0
  66. package/dist/web/assets/classDiagram-v2-Q7XG4LA2-M-OAZSzx.js +1 -0
  67. package/dist/web/assets/{code-block-OCS4YCEC-B1YC7dLa.js → code-block-OCS4YCEC-DnfSnuHM.js} +1 -1
  68. package/dist/web/assets/{confirm-dialog-DDWlvtJs.js → confirm-dialog-C8rPqdFE.js} +1 -1
  69. package/dist/web/assets/{cose-bilkent-S5V4N54A-C6xD7kmY.js → cose-bilkent-S5V4N54A-DD3H-OxN.js} +1 -1
  70. package/dist/web/assets/{cssMode-lB5vNGvS.js → cssMode-DR6Jf3-g.js} +1 -1
  71. package/dist/web/assets/{dagre-BM42HDAG-BqTCYMO6.js → dagre-BM42HDAG-Bw6aZrG9.js} +1 -1
  72. package/dist/web/assets/{diagram-2AECGRRQ-BsMq3s5l.js → diagram-2AECGRRQ-Bm8oLz0N.js} +1 -1
  73. package/dist/web/assets/{diagram-5GNKFQAL-l4izpv7Z.js → diagram-5GNKFQAL-CL9Xaz3k.js} +1 -1
  74. package/dist/web/assets/{diagram-KO2AKTUF-uWDq6Yzo.js → diagram-KO2AKTUF-KbdYV5XJ.js} +1 -1
  75. package/dist/web/assets/{diagram-LMA3HP47-Dbd4fnFa.js → diagram-LMA3HP47-CYo7CoGp.js} +1 -1
  76. package/dist/web/assets/{diagram-OG6HWLK6-BC-27mkr.js → diagram-OG6HWLK6-CFPSh1Sm.js} +1 -1
  77. package/dist/web/assets/{erDiagram-TEJ5UH35-DrCP0Xt8.js → erDiagram-TEJ5UH35-Dh9qfvJz.js} +1 -1
  78. package/dist/web/assets/{flowDiagram-I6XJVG4X-BqNsQuUr.js → flowDiagram-I6XJVG4X-8EMyvj0V.js} +1 -1
  79. package/dist/web/assets/{folder-picker-CBVEWiuS.js → folder-picker-iHGLWmJF.js} +1 -1
  80. package/dist/web/assets/{freemarker2-Bos_2jdw.js → freemarker2-Dhyh-DXo.js} +1 -1
  81. package/dist/web/assets/{ganttDiagram-6RSMTGT7-CZOrG-5M.js → ganttDiagram-6RSMTGT7-BE5FBwwf.js} +1 -1
  82. package/dist/web/assets/{gitGraphDiagram-PVQCEYII-Dp3i5ehs.js → gitGraphDiagram-PVQCEYII-Dx2x_Y6A.js} +1 -1
  83. package/dist/web/assets/{handlebars-C7Elz3nH.js → handlebars-BB4WaAAq.js} +1 -1
  84. package/dist/web/assets/{html-EvsHOk5n.js → html-BluMUCI1.js} +1 -1
  85. package/dist/web/assets/{htmlMode-CTlhNZgJ.js → htmlMode-Dk0meNHs.js} +1 -1
  86. package/dist/web/assets/{index-hPp73HMS.js → index-9oo7US_J.js} +4 -4
  87. package/dist/web/assets/{index-BGajgi5H.js → index-B0gHfTIK.js} +3 -3
  88. package/dist/web/assets/{infoDiagram-5YYISTIA-C6NnR_Zb.js → infoDiagram-5YYISTIA-0BPLGHMf.js} +1 -1
  89. package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-C1SOf-Ko.js → ishikawaDiagram-YF4QCWOH-BnoV5etH.js} +1 -1
  90. package/dist/web/assets/javascript-Cwz9LBET.js +1 -0
  91. package/dist/web/assets/{journeyDiagram-JHISSGLW--GKMSbPz.js → journeyDiagram-JHISSGLW-D8_dQMoV.js} +1 -1
  92. package/dist/web/assets/{jsonMode-Bbh3Gbb8.js → jsonMode-DWAIY3Zm.js} +1 -1
  93. package/dist/web/assets/{kanban-definition-UN3LZRKU-Car5iy0R.js → kanban-definition-UN3LZRKU-CcP-UBWq.js} +1 -1
  94. package/dist/web/assets/{layers-WOwm63Fo.js → layers-B4Hb2k1E.js} +1 -1
  95. package/dist/web/assets/{linear-ChUj9SvT.js → linear-CFeIj_93.js} +1 -1
  96. package/dist/web/assets/{liquid-BXFWITFq.js → liquid-DszhNRew.js} +1 -1
  97. package/dist/web/assets/{lspLanguageFeatures-DQ2CrOBI.js → lspLanguageFeatures-DyajWL04.js} +1 -1
  98. package/dist/web/assets/{mdx-vHLpslzI.js → mdx-D3Dg3IU3.js} +1 -1
  99. package/dist/web/assets/{mermaid-NOHMQCX5-CzwPLFrI.js → mermaid-NOHMQCX5-De7jApSL.js} +4 -4
  100. package/dist/web/assets/{message-square-DgdFa1Kc.js → message-square-Dly_bein.js} +1 -1
  101. package/dist/web/assets/{mindmap-definition-RKZ34NQL-CfzbnHY_.js → mindmap-definition-RKZ34NQL-BBl0Q2SW.js} +1 -1
  102. package/dist/web/assets/{modal-QnCJhV9P.js → modal-CyT9BpRm.js} +1 -1
  103. package/dist/web/assets/{monaco-CbFQByO7.js → monaco-DBlH7Gvr.js} +3 -3
  104. package/dist/web/assets/{pencil-CNVU3zfM.js → pencil-BLlfV3fH.js} +1 -1
  105. package/dist/web/assets/{pieDiagram-4H26LBE5-CDqYJneU.js → pieDiagram-4H26LBE5-BVrsUXUt.js} +1 -1
  106. package/dist/web/assets/{python-BhFSY_J2.js → python-C1GF9JX6.js} +1 -1
  107. package/dist/web/assets/{quadrantDiagram-W4KKPZXB-B6ChDIx2.js → quadrantDiagram-W4KKPZXB-Brnd7Z-x.js} +1 -1
  108. package/dist/web/assets/{razor-Cx_DrE-V.js → razor-CNwR1Ppb.js} +1 -1
  109. package/dist/web/assets/{requirementDiagram-4Y6WPE33-DefLT9NZ.js → requirementDiagram-4Y6WPE33-BEL5JUv5.js} +1 -1
  110. package/dist/web/assets/{sankeyDiagram-5OEKKPKP-CQHnovPz.js → sankeyDiagram-5OEKKPKP-Dg3pq8MF.js} +1 -1
  111. package/dist/web/assets/{select-CmbeAAVh.js → select-BQuOHpgx.js} +1 -1
  112. package/dist/web/assets/{sequenceDiagram-3UESZ5HK-DZuaKm7C.js → sequenceDiagram-3UESZ5HK-DvXxqwal.js} +1 -1
  113. package/dist/web/assets/{server-BUivqMYo.js → server-DmNZ4TcQ.js} +1 -1
  114. package/dist/web/assets/{stateDiagram-AJRCARHV-DvxpChEC.js → stateDiagram-AJRCARHV-BSXeM4wR.js} +1 -1
  115. package/dist/web/assets/stateDiagram-v2-BHNVJYJU-Cjr-lS2a.js +1 -0
  116. package/dist/web/assets/{switch-CiOyM13e.js → switch-BDzVWx67.js} +1 -1
  117. package/dist/web/assets/{textarea-D4HkYa3u.js → textarea-D4CrProF.js} +1 -1
  118. package/dist/web/assets/{timeline-definition-PNZ67QCA-BRu-tS-p.js → timeline-definition-PNZ67QCA-3rH0QWp7.js} +1 -1
  119. package/dist/web/assets/{trash-2-DPxBnxJM.js → trash-2-DHu1aC-u.js} +1 -1
  120. package/dist/web/assets/{tsMode-CHcZwUmC.js → tsMode-Z5KzKNgl.js} +1 -1
  121. package/dist/web/assets/{typescript-CvtjMxoq.js → typescript-Cg8IFK7o.js} +1 -1
  122. package/dist/web/assets/{upload-YmLtnZsU.js → upload-DQPwfdPh.js} +1 -1
  123. package/dist/web/assets/{use-profiles-OJAwfc90.js → use-profiles-DI5-xqHU.js} +1 -1
  124. package/dist/web/assets/{use-projects-iob5C7Xk.js → use-projects-Cs0-FMed.js} +1 -1
  125. package/dist/web/assets/{use-providers-Cj9S9_2q.js → use-providers-BoVFTPYO.js} +1 -1
  126. package/dist/web/assets/{useNormalizedLogs-BhN4AN4f.js → useNormalizedLogs-DhoOmBJo.js} +1 -1
  127. package/dist/web/assets/{vennDiagram-CIIHVFJN-CtZ_3Ld0.js → vennDiagram-CIIHVFJN-DAjUhsg9.js} +1 -1
  128. package/dist/web/assets/{wardley-L42UT6IY-h9yfTmIn.js → wardley-L42UT6IY-Db8PSpCZ.js} +1 -1
  129. package/dist/web/assets/{wardleyDiagram-YWT4CUSO-CWXtZtix.js → wardleyDiagram-YWT4CUSO-DfXfIOXM.js} +1 -1
  130. package/dist/web/assets/{xml-DhyGRwiG.js → xml-UOLWFxtD.js} +1 -1
  131. package/dist/web/assets/{xychartDiagram-2RQKCTM6-BLuWVWlL.js → xychartDiagram-2RQKCTM6-C41mtVgh.js} +1 -1
  132. package/dist/web/assets/{yaml-Cpi6SvoR.js → yaml-CeY5SySy.js} +1 -1
  133. package/dist/web/index.html +1 -1
  134. package/package.json +2 -2
  135. package/dist/web/assets/ConversationPage-BBnK1qA_.js +0 -3
  136. package/dist/web/assets/CreateTaskInput-B11wGhDW.js +0 -1
  137. package/dist/web/assets/channel-XuYe6lH7.js +0 -1
  138. package/dist/web/assets/check-FwR4dMNY.js +0 -1
  139. package/dist/web/assets/classDiagram-4FO5ZUOK-DWSNJHiT.js +0 -1
  140. package/dist/web/assets/classDiagram-v2-Q7XG4LA2-DWSNJHiT.js +0 -1
  141. package/dist/web/assets/javascript-Desq1P0G.js +0 -1
  142. package/dist/web/assets/stateDiagram-v2-BHNVJYJU-BbrRYMxK.js +0 -1
@@ -22,6 +22,10 @@ const acpState = vi.hoisted(() => ({
22
22
  supportsResume: true,
23
23
  notificationHandler: undefined,
24
24
  permissionHandler: undefined,
25
+ notificationHandlers: [],
26
+ permissionHandlers: [],
27
+ loadRequestGate: undefined,
28
+ loadRequestEntered: undefined,
25
29
  prompt: undefined,
26
30
  request: undefined,
27
31
  notify: undefined,
@@ -29,6 +33,7 @@ const acpState = vi.hoisted(() => ({
29
33
  processStarts: 0,
30
34
  processStops: 0,
31
35
  processStopErrors: [],
36
+ processStopGate: undefined,
32
37
  initializeError: undefined,
33
38
  }));
34
39
  const providerState = vi.hoisted(() => ({
@@ -74,6 +79,8 @@ vi.mock('@agentclientprotocol/sdk', () => {
74
79
  };
75
80
  }
76
81
  if (method === methods.agent.session.load) {
82
+ acpState.loadRequestEntered?.();
83
+ await acpState.loadRequestGate;
77
84
  for (const params of acpState.loadUpdates) {
78
85
  await acpState.notificationHandler?.({ params });
79
86
  }
@@ -91,21 +98,24 @@ vi.mock('@agentclientprotocol/sdk', () => {
91
98
  }
92
99
  });
93
100
  acpState.close = vi.fn();
94
- const connection = {
95
- agent: { request: acpState.request, notify: acpState.notify },
96
- close: acpState.close,
97
- closed: new Promise(() => undefined),
98
- };
99
101
  const app = {
100
102
  onNotification: vi.fn((_method, handler) => {
101
103
  acpState.notificationHandler = handler;
104
+ if (handler)
105
+ acpState.notificationHandlers.push(handler);
102
106
  return app;
103
107
  }),
104
108
  onRequest: vi.fn((_method, handler) => {
105
109
  acpState.permissionHandler = handler;
110
+ if (handler)
111
+ acpState.permissionHandlers.push(handler);
106
112
  return app;
107
113
  }),
108
- connect: vi.fn(() => connection),
114
+ connect: vi.fn(() => ({
115
+ agent: { request: acpState.request, notify: acpState.notify },
116
+ close: acpState.close,
117
+ closed: new Promise(() => undefined),
118
+ })),
109
119
  };
110
120
  return {
111
121
  PROTOCOL_VERSION: 1,
@@ -123,6 +133,7 @@ vi.mock('../acp/process-manager.js', () => ({
123
133
  onExit() { }
124
134
  async stop() {
125
135
  acpState.processStops += 1;
136
+ await acpState.processStopGate;
126
137
  const error = acpState.processStopErrors.shift();
127
138
  if (error)
128
139
  throw error;
@@ -153,10 +164,15 @@ beforeEach(() => {
153
164
  acpState.supportsResume = true;
154
165
  acpState.notificationHandler = undefined;
155
166
  acpState.permissionHandler = undefined;
167
+ acpState.notificationHandlers.length = 0;
168
+ acpState.permissionHandlers.length = 0;
169
+ acpState.loadRequestGate = undefined;
170
+ acpState.loadRequestEntered = undefined;
156
171
  acpState.prompt = deferred();
157
172
  acpState.processStarts = 0;
158
173
  acpState.processStops = 0;
159
174
  acpState.processStopErrors = [];
175
+ acpState.processStopGate = undefined;
160
176
  acpState.initializeError = undefined;
161
177
  providerState.provider = null;
162
178
  });
@@ -281,6 +297,39 @@ describe('AcpRuntimeDriver lifecycle', () => {
281
297
  await turn.completion;
282
298
  await session.close();
283
299
  });
300
+ it('does not send a prompt when admission is cancelled in the ready-session microtask window', async () => {
301
+ const { sink, input } = setup();
302
+ const session = await new AcpRuntimeDriver().open(input, sink);
303
+ const first = await session.runTurn({
304
+ turnId: 'turn-ready',
305
+ prompt: 'prepare the reusable session',
306
+ msgStore: new MsgStore(),
307
+ resumeExternalSessionId: 'external-1',
308
+ }, sink);
309
+ acpState.prompt?.resolve({ stopReason: 'end_turn' });
310
+ await first.completion;
311
+ const promptCallsBefore = vi.mocked(acpState.request).mock.calls
312
+ .filter(([method]) => method === 'session/prompt').length;
313
+ const streamCallsBefore = vi.mocked(sink.stream).mock.calls.length;
314
+ const controller = new AbortController();
315
+ queueMicrotask(() => controller.abort(new AgentRuntimeError('runtime_admission_cancelled', 'prompt', 'disposal won before prompt', true)));
316
+ const nextStore = new MsgStore();
317
+ await expect(session.runTurn({
318
+ turnId: 'turn-aborted-before-prompt',
319
+ prompt: 'must never be sent',
320
+ msgStore: nextStore,
321
+ resumeExternalSessionId: 'external-1',
322
+ admissionSignal: controller.signal,
323
+ }, sink)).rejects.toMatchObject({
324
+ code: 'runtime_admission_cancelled',
325
+ retryable: true,
326
+ });
327
+ expect(vi.mocked(acpState.request).mock.calls
328
+ .filter(([method]) => method === 'session/prompt')).toHaveLength(promptCallsBefore);
329
+ expect(vi.mocked(sink.stream).mock.calls).toHaveLength(streamCallsBefore);
330
+ expect(nextStore.getSnapshot().entries).toEqual([]);
331
+ await session.close();
332
+ });
284
333
  it('does not stop a real workspace service when the ACP driver is disposed', async () => {
285
334
  const backgroundManager = new WorkspaceBackgroundProcessManager({
286
335
  resolveCommand: async () => process.execPath,
@@ -308,8 +357,132 @@ describe('AcpRuntimeDriver lifecycle', () => {
308
357
  const session = await new AcpRuntimeDriver().open(input, sink);
309
358
  acpState.processStopErrors.push(new Error('tree still alive'));
310
359
  await expect(session.close()).rejects.toThrow('tree still alive');
360
+ expect(vi.mocked(sink.process).mock.calls.filter(([event]) => (event.type === 'tree_cleanup_completed'))).toHaveLength(0);
311
361
  await expect(session.close()).resolves.toBeUndefined();
312
362
  expect(acpState.processStops).toBe(2);
363
+ expect(vi.mocked(sink.process).mock.calls.filter(([event]) => (event.type === 'tree_cleanup_completed'))).toHaveLength(1);
364
+ });
365
+ it('confirms cleanup evidence for every successfully reset ACP transport generation', async () => {
366
+ const { sink, input } = setup();
367
+ const session = await new AcpRuntimeDriver().open(input, sink);
368
+ const firstRuntimeInstanceId = session.runtimeInstanceId;
369
+ await session.resetTransport();
370
+ await session.connect(sink, 2);
371
+ const secondRuntimeInstanceId = session.runtimeInstanceId;
372
+ await session.close();
373
+ const cleanupEvents = vi.mocked(sink.process).mock.calls
374
+ .map(([event]) => event)
375
+ .filter((event) => event.type === 'tree_cleanup_completed');
376
+ expect(cleanupEvents).toEqual([
377
+ {
378
+ type: 'tree_cleanup_completed',
379
+ runtimeInstanceId: firstRuntimeInstanceId,
380
+ launchClaimNumber: 1,
381
+ },
382
+ {
383
+ type: 'tree_cleanup_completed',
384
+ runtimeInstanceId: secondRuntimeInstanceId,
385
+ launchClaimNumber: 2,
386
+ },
387
+ ]);
388
+ });
389
+ it('drops stale transport updates and permissions after a new generation is active', async () => {
390
+ const { sink, input } = setup();
391
+ const session = await new AcpRuntimeDriver().open(input, sink);
392
+ const firstNotification = acpState.notificationHandlers[0];
393
+ const firstPermission = acpState.permissionHandlers[0];
394
+ const first = await session.runTurn({
395
+ turnId: 'turn-old-generation',
396
+ prompt: 'first generation',
397
+ msgStore: new MsgStore(),
398
+ resumeExternalSessionId: 'external-1',
399
+ }, sink);
400
+ acpState.prompt?.resolve({ stopReason: 'end_turn' });
401
+ await first.completion;
402
+ await session.resetTransport();
403
+ await session.connect(sink, 2);
404
+ const currentNotification = acpState.notificationHandlers[1];
405
+ const currentPermission = acpState.permissionHandlers[1];
406
+ acpState.prompt = deferred();
407
+ const currentStore = new MsgStore();
408
+ const loadEntered = deferred();
409
+ const releaseLoad = deferred();
410
+ acpState.loadRequestEntered = () => loadEntered.resolve();
411
+ acpState.loadRequestGate = releaseLoad.promise;
412
+ const currentStart = session.runTurn({
413
+ turnId: 'turn-current-generation',
414
+ prompt: 'second generation',
415
+ msgStore: currentStore,
416
+ resumeExternalSessionId: 'external-1',
417
+ }, sink);
418
+ await loadEntered.promise;
419
+ const streamCallsBeforeStaleHandlers = vi.mocked(sink.stream).mock.calls.length;
420
+ await firstNotification({
421
+ params: {
422
+ sessionId: 'external-1',
423
+ update: {
424
+ sessionUpdate: 'agent_message_chunk',
425
+ messageId: 'stale-message',
426
+ content: { type: 'text', text: 'stale transport output' },
427
+ },
428
+ },
429
+ });
430
+ await expect(firstPermission({
431
+ params: {
432
+ sessionId: 'external-1',
433
+ options: [{ optionId: 'stale-allow', name: 'Allow', kind: 'allow_once' }],
434
+ toolCall: { toolCallId: 'stale-tool', title: 'Stale tool', kind: 'execute' },
435
+ },
436
+ signal: new AbortController().signal,
437
+ })).resolves.toEqual({ outcome: { outcome: 'cancelled' } });
438
+ expect(vi.mocked(sink.stream).mock.calls).toHaveLength(streamCallsBeforeStaleHandlers);
439
+ expect(currentStore.getSnapshot().entries).toEqual([]);
440
+ releaseLoad.resolve();
441
+ const current = await currentStart;
442
+ expect(currentStore.getSnapshot().entries).toEqual([]);
443
+ await currentNotification({
444
+ params: {
445
+ sessionId: 'external-1',
446
+ update: {
447
+ sessionUpdate: 'agent_message_chunk',
448
+ messageId: 'current-message',
449
+ content: { type: 'text', text: 'current transport output' },
450
+ },
451
+ },
452
+ });
453
+ const permissionAbort = new AbortController();
454
+ const currentPermissionResponse = currentPermission({
455
+ params: {
456
+ sessionId: 'external-1',
457
+ options: [{ optionId: 'current-allow', name: 'Allow', kind: 'allow_once' }],
458
+ toolCall: { toolCallId: 'current-tool', title: 'Current tool', kind: 'execute' },
459
+ },
460
+ signal: permissionAbort.signal,
461
+ });
462
+ expect(currentStore.getSnapshot().entries.map((entry) => entry.content)).toEqual([
463
+ 'current transport output',
464
+ ]);
465
+ expect(vi.mocked(sink.stream).mock.calls.map(([event]) => event.type))
466
+ .toContain('permission_requested');
467
+ permissionAbort.abort();
468
+ await expect(currentPermissionResponse).resolves.toEqual({ outcome: { outcome: 'cancelled' } });
469
+ acpState.prompt.resolve({ stopReason: 'end_turn' });
470
+ await current.completion;
471
+ await session.close();
472
+ });
473
+ it('retains a stopped transport until its cleanup evidence can be persisted', async () => {
474
+ const { sink, input } = setup();
475
+ let cleanupAttempts = 0;
476
+ vi.mocked(sink.process).mockImplementation(async (event) => {
477
+ if (event.type === 'tree_cleanup_completed' && cleanupAttempts++ === 0) {
478
+ throw new Error('cleanup evidence unavailable');
479
+ }
480
+ });
481
+ const session = await new AcpRuntimeDriver().open(input, sink);
482
+ await expect(session.close()).rejects.toThrow('cleanup evidence unavailable');
483
+ await expect(session.close()).resolves.toBeUndefined();
484
+ expect(acpState.processStops).toBe(2);
485
+ expect(vi.mocked(sink.process).mock.calls.filter(([event]) => (event.type === 'tree_cleanup_completed'))).toHaveLength(2);
313
486
  });
314
487
  it('retries auxiliary launch cleanup during a normal DriverSession close', async () => {
315
488
  const cleanup = vi.fn()
@@ -367,6 +540,59 @@ describe('AcpRuntimeDriver lifecycle', () => {
367
540
  definitionSpy.mockRestore();
368
541
  }
369
542
  });
543
+ it('does not spawn a reconnect after close begins while transport reset is pending', async () => {
544
+ const { sink, input } = setup();
545
+ const session = await new AcpRuntimeDriver().open(input, sink);
546
+ const resetRelease = deferred();
547
+ acpState.processStopGate = resetRelease.promise;
548
+ const reset = session.resetTransport();
549
+ await vi.waitFor(() => expect(acpState.processStops).toBe(1));
550
+ const reconnect = session.connect(sink, 2);
551
+ const closing = session.close();
552
+ resetRelease.resolve();
553
+ await reset;
554
+ await closing;
555
+ await expect(reconnect).rejects.toMatchObject({ code: 'connection_closed' });
556
+ expect(acpState.processStarts).toBe(1);
557
+ expect(acpState.processStops).toBe(1);
558
+ });
559
+ it('cleans a late resolveLaunch result without spawning after close', async () => {
560
+ const resolveLaunchEntered = deferred();
561
+ const resolveLaunchRelease = deferred();
562
+ const cleanup = vi.fn(async () => undefined);
563
+ const definition = acpRegistry.getAcpAgentDefinition(AgentType.CODEX);
564
+ let launchCount = 0;
565
+ const definitionSpy = vi.spyOn(acpRegistry, 'getAcpAgentDefinition').mockReturnValue({
566
+ ...definition,
567
+ resolveLaunch: async (launchInput, profile) => {
568
+ launchCount += 1;
569
+ if (launchCount === 2) {
570
+ resolveLaunchEntered.resolve();
571
+ await resolveLaunchRelease.promise;
572
+ }
573
+ const launch = await definition.resolveLaunch(launchInput, profile);
574
+ return { ...launch, cleanup };
575
+ },
576
+ });
577
+ const { sink, input } = setup();
578
+ try {
579
+ const session = await new AcpRuntimeDriver().open(input, sink);
580
+ await session.resetTransport();
581
+ expect(acpState.processStarts).toBe(1);
582
+ const reconnect = session.connect(sink, 2);
583
+ await resolveLaunchEntered.promise;
584
+ await session.close();
585
+ resolveLaunchRelease.resolve();
586
+ await expect(reconnect).rejects.toMatchObject({ code: 'connection_closed' });
587
+ expect(acpState.processStarts).toBe(1);
588
+ expect(acpState.processStops).toBe(1);
589
+ expect(cleanup).toHaveBeenCalledTimes(2);
590
+ }
591
+ finally {
592
+ resolveLaunchRelease.resolve();
593
+ definitionSpy.mockRestore();
594
+ }
595
+ });
370
596
  it('reconciles session/load history with one entries patch', async () => {
371
597
  const { sink, input } = setup();
372
598
  const stableMessageId = `acp-message-${Buffer.from('message-1').toString('base64url')}`;
@@ -1 +1 @@
1
- {"version":3,"file":"acp-driver-lifecycle.test.js","sourceRoot":"","sources":["../../../src/runtime/__tests__/acp-driver-lifecycle.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acp-driver-lifecycle.test.js","sourceRoot":"","sources":["../../../src/runtime/__tests__/acp-driver-lifecycle.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=codex-runtime-resolution.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-runtime-resolution.test.d.ts","sourceRoot":"","sources":["../../../src/runtime/__tests__/codex-runtime-resolution.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,107 @@
1
+ import path from 'node:path';
2
+ import { AgentType, RuntimeType } from '@agent-tower/shared';
3
+ import { beforeEach, describe, expect, it, vi } from 'vitest';
4
+ import { ExecutionEnv } from '../../executors/execution-env.js';
5
+ import { which } from '../../utils/index.js';
6
+ import { codexAcpAgentDefinition } from '../acp/agents/codex.js';
7
+ import { resolveBundledCodexEntrypoint } from '../acp/agents/executable-resolution.js';
8
+ vi.mock('../../utils/index.js', () => ({ which: vi.fn() }));
9
+ vi.mock('../acp/agents/executable-resolution.js', () => ({
10
+ resolveBundledCodexEntrypoint: vi.fn(),
11
+ }));
12
+ const systemDirectory = path.join(path.parse(process.cwd()).root, 'system tools', 'bin');
13
+ const systemCodex = path.join(systemDirectory, process.platform === 'win32' ? 'codex.cmd' : 'codex');
14
+ const bundledCodex = path.join(process.cwd(), 'node_modules', '@openai', 'codex', 'bin', 'codex.js');
15
+ function setup(environment = {}) {
16
+ const provider = {
17
+ id: 'codex-system-first',
18
+ name: 'Codex ACP',
19
+ agentType: AgentType.CODEX,
20
+ runtimeType: RuntimeType.ACP,
21
+ env: { PATH: systemDirectory, ...environment },
22
+ config: {},
23
+ isDefault: false,
24
+ };
25
+ const profile = codexAcpAgentDefinition.projectProvider(provider, provider.env);
26
+ const input = {
27
+ towerSessionId: 'codex-system-first',
28
+ agentType: AgentType.CODEX,
29
+ runtimeType: RuntimeType.ACP,
30
+ variant: 'DEFAULT',
31
+ workingDir: process.cwd(),
32
+ env: ExecutionEnv.default(process.cwd()),
33
+ };
34
+ return { provider, profile, input };
35
+ }
36
+ beforeEach(() => {
37
+ vi.resetAllMocks();
38
+ vi.mocked(which).mockResolvedValue(null);
39
+ vi.mocked(resolveBundledCodexEntrypoint).mockReturnValue(bundledCodex);
40
+ });
41
+ describe('Codex ACP runtime resolution', () => {
42
+ it('automatically prefers system Codex without requiring configuration', async () => {
43
+ vi.mocked(which).mockResolvedValue(systemCodex);
44
+ const { provider, profile, input } = setup();
45
+ const launch = await codexAcpAgentDefinition.resolveLaunch(input, profile);
46
+ expect(launch.command).toBe(process.execPath);
47
+ expect(launch.env.CODEX_PATH).toBe(systemCodex);
48
+ expect(launch.env.DISABLE_MCP_CONFIG_FILTERING).toBe('true');
49
+ expect(launch.env.ELECTRON_RUN_AS_NODE).toBe('1');
50
+ expect(await codexAcpAgentDefinition.checkAvailability(provider)).toEqual({ type: 'INSTALLATION_FOUND' });
51
+ expect(which).toHaveBeenCalledWith('codex', { env: expect.objectContaining({ PATH: systemDirectory }) });
52
+ expect(resolveBundledCodexEntrypoint).not.toHaveBeenCalled();
53
+ expect(profile.environment).not.toHaveProperty('CODEX_PATH');
54
+ });
55
+ it('uses bundled Codex when no system installation is found', async () => {
56
+ const { provider, profile, input } = setup();
57
+ const launch = await codexAcpAgentDefinition.resolveLaunch(input, profile);
58
+ expect(launch.env).not.toHaveProperty('CODEX_PATH');
59
+ expect(resolveBundledCodexEntrypoint).toHaveBeenCalledOnce();
60
+ expect(await codexAcpAgentDefinition.checkAvailability(provider)).toEqual({ type: 'INSTALLATION_FOUND' });
61
+ });
62
+ it.each([systemCodex, null])('replaces inherited CODEX_PATH with the automatically selected runtime: %s', async (detectedCodex) => {
63
+ vi.mocked(which).mockResolvedValue(detectedCodex);
64
+ const { profile, input } = setup({ CODEX_PATH: process.execPath });
65
+ const launch = await codexAcpAgentDefinition.resolveLaunch(input, profile);
66
+ expect(launch.env.CODEX_PATH).toBe(detectedCodex ?? undefined);
67
+ expect(profile.environment.CODEX_PATH).toBe(process.execPath);
68
+ });
69
+ it('still launches system Codex when the bundled runtime is unavailable', async () => {
70
+ vi.mocked(which).mockResolvedValue(systemCodex);
71
+ vi.mocked(resolveBundledCodexEntrypoint).mockReturnValue(undefined);
72
+ const { provider, profile, input } = setup();
73
+ const launch = await codexAcpAgentDefinition.resolveLaunch(input, profile);
74
+ expect(launch.env.CODEX_PATH).toBe(systemCodex);
75
+ expect(await codexAcpAgentDefinition.checkAvailability(provider)).toEqual({ type: 'INSTALLATION_FOUND' });
76
+ expect(resolveBundledCodexEntrypoint).not.toHaveBeenCalled();
77
+ });
78
+ it('fails consistently when neither runtime is available', async () => {
79
+ vi.mocked(resolveBundledCodexEntrypoint).mockReturnValue(undefined);
80
+ const { provider, profile, input } = setup();
81
+ await expect(codexAcpAgentDefinition.resolveLaunch(input, profile)).rejects.toMatchObject({
82
+ code: 'missing_codex',
83
+ stage: 'dependency_check',
84
+ });
85
+ expect(await codexAcpAgentDefinition.checkAvailability(provider)).toMatchObject({ type: 'NOT_FOUND' });
86
+ });
87
+ it.each(['PATH', 'Path'])('excludes project package bins and relative paths from %s lookup without changing the agent environment', async (pathKey) => {
88
+ const environment = {
89
+ [pathKey]: [
90
+ path.join(process.cwd(), 'node_modules', '.bin'),
91
+ path.join(process.cwd(), 'node_modules', '.pnpm', 'node_modules', '.bin'),
92
+ '.',
93
+ '',
94
+ 'relative-bin',
95
+ systemDirectory,
96
+ ].join(path.delimiter),
97
+ };
98
+ const { profile, input } = setup();
99
+ profile.environment = environment;
100
+ vi.mocked(which).mockResolvedValue(systemCodex);
101
+ const launch = await codexAcpAgentDefinition.resolveLaunch(input, profile);
102
+ expect(which).toHaveBeenCalledWith('codex', { env: { [pathKey]: systemDirectory } });
103
+ expect(launch.env[pathKey]).toBe(environment[pathKey]);
104
+ expect(profile.environment).toEqual(environment);
105
+ });
106
+ });
107
+ //# sourceMappingURL=codex-runtime-resolution.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-runtime-resolution.test.js","sourceRoot":"","sources":["../../../src/runtime/__tests__/codex-runtime-resolution.test.ts"],"names":[],"mappings":"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"}