factory-factory 0.4.6 → 0.4.8

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 (1386) hide show
  1. package/README.md +13 -1
  2. package/dist/client/assets/Archive.es-CGY-HOtI.js +1 -0
  3. package/dist/client/assets/ArrowLeft.es-BkuVunBb.js +1 -0
  4. package/dist/client/assets/abnfDiagram-VCTEODGH-B2jWIJ_F.js +1 -0
  5. package/dist/client/assets/admin-page-DSQHBVdP.js +1 -0
  6. package/dist/client/assets/alert-PePzkOCj.js +1 -0
  7. package/dist/client/assets/alert-dialog-BgqiS2Mp.js +1 -0
  8. package/dist/client/assets/arc-Pry-7G1_.js +1 -0
  9. package/dist/client/assets/architecture-7GRP2DOG-iqZodW6v.js +1 -0
  10. package/dist/client/assets/architectureDiagram-5GKGNRK7-CV8YjPRr.js +36 -0
  11. package/dist/client/assets/array-BifhSqXX.js +1 -0
  12. package/dist/client/assets/badge-BESbZ2wy.js +1 -0
  13. package/dist/client/assets/blockDiagram-I7D4REHJ-BdQWAITV.js +129 -0
  14. package/dist/client/assets/c4Diagram-7LVT6UL2-Dp1ETdzU.js +38 -0
  15. package/dist/client/assets/channel-CuF41sy9.js +1 -0
  16. package/dist/client/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  17. package/dist/client/assets/chunk-4HAMMTFA-BXRLulFZ.js +62 -0
  18. package/dist/client/assets/{chunk-5VM5RSS4-Ca82Rzl0.js → chunk-5VM5RSS4-ZNzvKenW.js} +2 -2
  19. package/dist/client/assets/chunk-75Z2AOVW-FUHgKXYa.js +2 -0
  20. package/dist/client/assets/chunk-DU6HZSFF-nxkO_ute.js +127 -0
  21. package/dist/client/assets/chunk-F27PBJKO-Dal8QxK3.js +1 -0
  22. package/dist/client/assets/chunk-FOHPRMQF-CoA4358r.js +161 -0
  23. package/dist/client/assets/chunk-GMAD6QVW-B_VbYl2S.js +72 -0
  24. package/dist/client/assets/chunk-GVQU2GXP-DobNOfAy.js +1 -0
  25. package/dist/client/assets/chunk-IMKFNOWR-D_P1eTAa.js +231 -0
  26. package/dist/client/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  27. package/dist/client/assets/chunk-L3NEJ4N5-CZpV3_Q0.js +1 -0
  28. package/dist/client/assets/chunk-OSK3NFVY-e3uqzkQq.js +10 -0
  29. package/dist/client/assets/chunk-P2QGCYS3-B1FUAlmg.js +1 -0
  30. package/dist/client/assets/chunk-POPQ4Y6H-BKVSxG-w.js +1 -0
  31. package/dist/client/assets/chunk-PWAF6VOD-DQe8ztwz.js +1 -0
  32. package/dist/client/assets/chunk-SHT3W25Y-D8Ie2IK_.js +168 -0
  33. package/dist/client/assets/chunk-SVP7TREG-_l4ZFWYL.js +88 -0
  34. package/dist/client/assets/chunk-TICWLB2K-BfcOBlR4.js +206 -0
  35. package/dist/client/assets/chunk-XXDRQBXY-DqAYeljN.js +1 -0
  36. package/dist/client/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  37. package/dist/client/assets/ci-status-ChifTKM1.js +1 -0
  38. package/dist/client/assets/classDiagram-ZZMXUADV-CSnIdOhD.js +1 -0
  39. package/dist/client/assets/classDiagram-v2-VYDZK3BY-CSnIdOhD.js +1 -0
  40. package/dist/client/assets/components-CYsyoHP0.js +1 -0
  41. package/dist/client/assets/confirm-dialog-BAfboPjS.js +1 -0
  42. package/dist/client/assets/core-DW1Rn28Z.js +1 -0
  43. package/dist/client/assets/cose-bilkent-JH36ORCC-BbJNf1Rj.js +1 -0
  44. package/dist/client/assets/cynefin-OW5HDTMX-B7JP5WcM.js +1 -0
  45. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-B5jcLvUi.js +62 -0
  46. package/dist/client/assets/cytoscape.esm-B-1iW2ft.js +321 -0
  47. package/dist/client/assets/dagre-C-rnJpZF.js +1 -0
  48. package/dist/client/assets/dagre-GXQ25YYZ-CFkt7lun.js +4 -0
  49. package/dist/client/assets/data-import-button-D-ZWnQAg.js +6 -0
  50. package/dist/client/assets/defaultLocale-BFoDCU3G.js +1 -0
  51. package/dist/client/assets/detail-C1zBkWd-.js +1 -0
  52. package/dist/client/assets/diagram-S7CK7UJ4-DpT9R2w0.js +30 -0
  53. package/dist/client/assets/diagram-UQ7AKVKN-DAy1Fpaf.js +41 -0
  54. package/dist/client/assets/diagram-VSXAHHWV-Co-NFSf3.js +3 -0
  55. package/dist/client/assets/diagram-VX7I27RA-CaIWof2e.js +24 -0
  56. package/dist/client/assets/diagram-Z3DM3KII-BpcVyNtl.js +24 -0
  57. package/dist/client/assets/diff-highlight.worker-C-7SSG_d.js +55 -0
  58. package/dist/client/assets/dist-BiFeezwN.js +1 -0
  59. package/dist/client/assets/dist-Dtgf0TOg.js +41 -0
  60. package/dist/client/assets/dist-v5Q1xZ2K.js +1 -0
  61. package/dist/client/assets/ebnfDiagram-PWID7BFC-CS26Rt0p.js +1 -0
  62. package/dist/client/assets/en-US-SlQiGO_s.js +1 -0
  63. package/dist/client/assets/erDiagram-RLTQ6QDP-DsdFXV4-.js +99 -0
  64. package/dist/client/assets/eventmodeling-NTZA5JFV-C4d4RnR4.js +1 -0
  65. package/dist/client/assets/factory-config-scripts-BoDNVi6q.js +1 -0
  66. package/dist/client/assets/flowDiagram-HODETNUW-Df-T-03y.js +1 -0
  67. package/dist/client/assets/formatters-D_bnXRun.js +1 -0
  68. package/dist/client/assets/ganttDiagram-EL5Y4UJY-D_b7Bn-J.js +292 -0
  69. package/dist/client/assets/gitGraph-4MIJSDKK-De5ASUSY.js +1 -0
  70. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BHMJvUNJ.js +106 -0
  71. package/dist/client/assets/graphlib-DS17s2tU.js +1 -0
  72. package/dist/client/assets/home-DjDt91tt.js +1 -0
  73. package/dist/client/assets/hooks-BTcY6K1q.js +1 -0
  74. package/dist/client/assets/index-CpFffknJ.css +2 -0
  75. package/dist/client/assets/index-D34fUfAP.js +10 -0
  76. package/dist/client/assets/info-A6RAGUB7-DNiM6MW6.js +1 -0
  77. package/dist/client/assets/infoDiagram-27XIBGKW-4g58w-zo.js +2 -0
  78. package/dist/client/assets/init-C-OQMol4.js +1 -0
  79. package/dist/client/assets/ishikawaDiagram-5VMMS53U-DO7_eJ6Q.js +70 -0
  80. package/dist/client/assets/journeyDiagram-3NMN7TZE-6CJtdIGo.js +139 -0
  81. package/dist/client/assets/jsx-runtime-DE3RlOCf.js +1 -0
  82. package/dist/client/assets/kanban-definition-UXKFOSKX-D211MzXr.js +89 -0
  83. package/dist/client/assets/katex-ZlcWpGUi.js +257 -0
  84. package/dist/client/assets/label-CI3jpwv-.js +1 -0
  85. package/dist/client/assets/lib-DyBYhPHb.js +1 -0
  86. package/dist/client/assets/line-DotOMT4o.js +1 -0
  87. package/dist/client/assets/linear-SzVmGSw4.js +1 -0
  88. package/dist/client/assets/list-DozL_ZP-.js +184 -0
  89. package/dist/client/assets/list-bUzF8ozJ.js +1 -0
  90. package/dist/client/assets/logs-CjKXHkrB.js +1 -0
  91. package/dist/client/assets/mermaid-diagram-CESNj6Ju.js +44 -0
  92. package/dist/client/assets/mermaid-parser.core-DK0kgowR.js +7 -0
  93. package/dist/client/assets/mindmap-definition-YA3MSWOX-DF5ewLZ5.js +96 -0
  94. package/dist/client/assets/mobile-baseline-B0PakiKB.js +10 -0
  95. package/dist/client/assets/new-C3e5S62x.js +1 -0
  96. package/dist/client/assets/new-CCDeoRvw.js +1 -0
  97. package/dist/client/assets/ordinal-BDEzSJ7C.js +1 -0
  98. package/dist/client/assets/packet-AYTQ26CC-C4EHUAzU.js +1 -0
  99. package/dist/client/assets/page-header-BCpV1oUO.js +1 -0
  100. package/dist/client/assets/path-fybaL0A-.js +1 -0
  101. package/dist/client/assets/pegDiagram-XKGWAZYB-_WrA16pJ.js +1 -0
  102. package/dist/client/assets/pie-WAS4IAKB-BkSTK6KM.js +1 -0
  103. package/dist/client/assets/pieDiagram-E7YTZNPT-CUR0mgrL.js +39 -0
  104. package/dist/client/assets/popover-D-6mugCQ.js +1 -0
  105. package/dist/client/assets/pr-inbox-item-vOH1gfSf.js +2 -0
  106. package/dist/client/assets/preload-helper-Czpn1I53.js +1 -0
  107. package/dist/client/assets/project-repo-form-DjzRbY9O.js +1 -0
  108. package/dist/client/assets/provider-cli-warning-LYUDO_5Y.js +1 -0
  109. package/dist/client/assets/quadrantDiagram-AXDQQJYC-QXmh8FnA.js +7 -0
  110. package/dist/client/assets/radar-RG4KPBEZ-ymOfNW7I.js +1 -0
  111. package/dist/client/assets/radio-group-CcAx51bT.js +1 -0
  112. package/dist/client/assets/railroad-74A4TZTK-CwWB40du.js +1 -0
  113. package/dist/client/assets/railroad-abnf-HS5TGJTU-DGUx-UBP.js +1 -0
  114. package/dist/client/assets/railroad-ebnf-LZEXJU2U-isA18bJo.js +1 -0
  115. package/dist/client/assets/railroad-peg-WCYAUIDC-Qz11I2dz.js +1 -0
  116. package/dist/client/assets/railroadDiagram-O6MQD6OU-O7DCuidl.js +1 -0
  117. package/dist/client/assets/redirect-CNaRFL8d.js +1 -0
  118. package/dist/client/assets/requirementDiagram-BXWQKSXE-BajIi2rw.js +84 -0
  119. package/dist/client/assets/reviews-B04-ADI9.js +1 -0
  120. package/dist/client/assets/rolldown-runtime-hePW80VL.js +1 -0
  121. package/dist/client/assets/rough.esm-Dy-Kn_BL.js +1 -0
  122. package/dist/client/assets/sankeyDiagram-P5KCCOFB-CnR7slVB.js +40 -0
  123. package/dist/client/assets/select-BgEObL9n.js +1 -0
  124. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-BUxl34n_.js +162 -0
  125. package/dist/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -0
  126. package/dist/client/assets/spinner-ASaPCL5c.js +1 -0
  127. package/dist/client/assets/src-B6xuSHsQ.js +1 -0
  128. package/dist/client/assets/startup-script-form-c7w0nnHp.js +1 -0
  129. package/dist/client/assets/stateDiagram-D77RDMKH-aFuhfmKp.js +1 -0
  130. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-C3HBCmSp.js +1 -0
  131. package/dist/client/assets/swimlanes-42K2YHIH-BccYx63r.js +1 -0
  132. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DXqJPUvi.js +8 -0
  133. package/dist/client/assets/table-wIG3osPW.js +1 -0
  134. package/dist/client/assets/tabs-Cn3M4k-N.js +1 -0
  135. package/dist/client/assets/terminal-instance-7W1Sdy6P.js +16 -0
  136. package/dist/client/assets/terminal-instance-BrP-ENHg.css +1 -0
  137. package/dist/client/assets/textarea-BVHmIkCM.js +1 -0
  138. package/dist/client/assets/timeline-definition-24CTP7MA-CM_waoCp.js +120 -0
  139. package/dist/client/assets/tooltip-DCH0jP98.js +1 -0
  140. package/dist/client/assets/treeView-Q6P3EWNA-CkV-8YWk.js +1 -0
  141. package/dist/client/assets/treemap-WGGIJYW6-L1FedAzz.js +1 -0
  142. package/dist/client/assets/trpc-X4t2_jd5.js +1 -0
  143. package/dist/client/assets/use-auto-scroll-QQMmbsX-.js +1 -0
  144. package/dist/client/assets/use-download-server-log-Bag_Et_8.js +1 -0
  145. package/dist/client/assets/use-project-header-navigation-BXqLQ4G_.js +1 -0
  146. package/dist/client/assets/use-websocket-channel-DW9rsEG5.js +4 -0
  147. package/dist/client/assets/use-websocket-transport-BT1hhmkl.js +50 -0
  148. package/dist/client/assets/vbnet-CrqJJ08J.js +57 -0
  149. package/dist/client/assets/vennDiagram-4TSXK5OY-Djoofmfi.js +34 -0
  150. package/dist/client/assets/voice-vad-ChMQMgBS.js +1 -0
  151. package/dist/client/assets/wardley-WFR3VGLG-BU-g6L7U.js +1 -0
  152. package/dist/client/assets/wardleyDiagram-VM6X3IG4-DZNgTneT.js +78 -0
  153. package/dist/client/assets/workspace-CsQCO4D_.js +18 -0
  154. package/dist/client/assets/xychartDiagram-S5SC5T6Z-WTubjsZj.js +7 -0
  155. package/dist/client/index.html +29 -2
  156. package/dist/prisma/generated/client.js.map +1 -1
  157. package/dist/prisma/generated/enums.d.ts +86 -86
  158. package/dist/prisma/generated/enums.d.ts.map +1 -1
  159. package/dist/prisma/generated/internal/class.js +3 -3
  160. package/dist/prisma/generated/internal/class.js.map +1 -1
  161. package/dist/prisma/generated/internal/prismaNamespace.d.ts +206 -206
  162. package/dist/prisma/generated/internal/prismaNamespace.d.ts.map +1 -1
  163. package/dist/prisma/generated/internal/prismaNamespace.js +2 -2
  164. package/dist/prisma/generated/internal/prismaNamespace.js.map +1 -1
  165. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts +204 -204
  166. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts.map +1 -1
  167. package/dist/scripts/check-fk-indexes.js.map +1 -1
  168. package/dist/scripts/check-no-direct-process-env.d.mts +1 -1
  169. package/dist/scripts/check-no-direct-process-env.d.mts.map +1 -1
  170. package/dist/scripts/check-no-direct-process-env.mjs.map +1 -1
  171. package/dist/src/backend/app-context.d.ts +2 -2
  172. package/dist/src/backend/app-context.d.ts.map +1 -1
  173. package/dist/src/backend/app-context.js +4 -4
  174. package/dist/src/backend/app-context.js.map +1 -1
  175. package/dist/src/backend/app-context.test.js +6 -1
  176. package/dist/src/backend/app-context.test.js.map +1 -1
  177. package/dist/src/backend/clients/git.client.d.ts +0 -8
  178. package/dist/src/backend/clients/git.client.d.ts.map +1 -1
  179. package/dist/src/backend/clients/git.client.js +2 -72
  180. package/dist/src/backend/clients/git.client.js.map +1 -1
  181. package/dist/src/backend/clients/git.client.test.js +2 -178
  182. package/dist/src/backend/clients/git.client.test.js.map +1 -1
  183. package/dist/src/backend/constants/http.d.ts.map +1 -1
  184. package/dist/src/backend/constants/websocket.d.ts.map +1 -1
  185. package/dist/src/backend/interceptors/auto-branch-rename.d.ts +1 -1
  186. package/dist/src/backend/interceptors/auto-branch-rename.d.ts.map +1 -1
  187. package/dist/src/backend/interceptors/auto-branch-rename.js +3 -3
  188. package/dist/src/backend/interceptors/branch-naming.interceptor.js +4 -4
  189. package/dist/src/backend/interceptors/branch-naming.interceptor.test.js +17 -19
  190. package/dist/src/backend/interceptors/branch-naming.interceptor.test.js.map +1 -1
  191. package/dist/src/backend/interceptors/branch-rename.utils.d.ts +1 -1
  192. package/dist/src/backend/interceptors/branch-rename.utils.js +1 -1
  193. package/dist/src/backend/interceptors/conversation-rename.interceptor.js +6 -6
  194. package/dist/src/backend/interceptors/conversation-rename.interceptor.test.js +7 -7
  195. package/dist/src/backend/interceptors/conversation-rename.interceptor.test.js.map +1 -1
  196. package/dist/src/backend/interceptors/pr-detection.interceptor.js +3 -3
  197. package/dist/src/backend/interceptors/registry.d.ts.map +1 -1
  198. package/dist/src/backend/interceptors/registry.js +1 -1
  199. package/dist/src/backend/lib/application-error.d.ts.map +1 -1
  200. package/dist/src/backend/lib/application-error.js.map +1 -1
  201. package/dist/src/backend/lib/atomic-file.js.map +1 -1
  202. package/dist/src/backend/lib/constants.d.ts.map +1 -1
  203. package/dist/src/backend/lib/env.js.map +1 -1
  204. package/dist/src/backend/lib/file-helpers.d.ts +0 -1
  205. package/dist/src/backend/lib/file-helpers.d.ts.map +1 -1
  206. package/dist/src/backend/lib/file-helpers.js +0 -27
  207. package/dist/src/backend/lib/file-helpers.js.map +1 -1
  208. package/dist/src/backend/lib/file-lock-mutex.d.ts.map +1 -1
  209. package/dist/src/backend/lib/file-lock-mutex.js +1 -1
  210. package/dist/src/backend/lib/file-lock-mutex.js.map +1 -1
  211. package/dist/src/backend/lib/file-preview.d.ts +6 -0
  212. package/dist/src/backend/lib/file-preview.d.ts.map +1 -0
  213. package/dist/src/backend/lib/file-preview.js +34 -0
  214. package/dist/src/backend/lib/file-preview.js.map +1 -0
  215. package/dist/src/backend/lib/git-status-parser.test.js +1 -1
  216. package/dist/src/backend/lib/request-trust.js.map +1 -1
  217. package/dist/src/backend/lib/shell.d.ts +0 -4
  218. package/dist/src/backend/lib/shell.d.ts.map +1 -1
  219. package/dist/src/backend/lib/shell.js +0 -25
  220. package/dist/src/backend/lib/shell.js.map +1 -1
  221. package/dist/src/backend/lib/topic-broadcaster.d.ts.map +1 -1
  222. package/dist/src/backend/lib/topic-broadcaster.js.map +1 -1
  223. package/dist/src/backend/lib/topic-broadcaster.test.js +1 -1
  224. package/dist/src/backend/lib/websocket-send.js +1 -1
  225. package/dist/src/backend/lib/websocket-send.test.js +1 -1
  226. package/dist/src/backend/lib/websocket-send.test.js.map +1 -1
  227. package/dist/src/backend/lib/workspace-derived-state.test.js.map +1 -1
  228. package/dist/src/backend/middleware/cors.middleware.d.ts +1 -1
  229. package/dist/src/backend/middleware/cors.middleware.d.ts.map +1 -1
  230. package/dist/src/backend/middleware/cors.middleware.js +1 -1
  231. package/dist/src/backend/middleware/middleware.test.js.map +1 -1
  232. package/dist/src/backend/middleware/request-logger.middleware.d.ts +1 -1
  233. package/dist/src/backend/middleware/request-logger.middleware.d.ts.map +1 -1
  234. package/dist/src/backend/migrate.js.map +1 -1
  235. package/dist/src/backend/orchestration/cli-health.service.d.ts +1 -1
  236. package/dist/src/backend/orchestration/cli-health.service.d.ts.map +1 -1
  237. package/dist/src/backend/orchestration/cli-health.service.js +4 -4
  238. package/dist/src/backend/orchestration/data-backup.service.d.ts.map +1 -1
  239. package/dist/src/backend/orchestration/data-backup.service.js +2 -2
  240. package/dist/src/backend/orchestration/data-backup.service.test.js +1 -1
  241. package/dist/src/backend/orchestration/domain-bridges.orchestrator.d.ts +9 -9
  242. package/dist/src/backend/orchestration/domain-bridges.orchestrator.js +2 -2
  243. package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.js +9 -9
  244. package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.js.map +1 -1
  245. package/dist/src/backend/orchestration/event-coalescer.integration.test.js +1 -1
  246. package/dist/src/backend/orchestration/event-collector-lifecycle.integration.test.js +6 -6
  247. package/dist/src/backend/orchestration/event-collector.orchestrator.d.ts +11 -11
  248. package/dist/src/backend/orchestration/event-collector.orchestrator.d.ts.map +1 -1
  249. package/dist/src/backend/orchestration/event-collector.orchestrator.js +23 -133
  250. package/dist/src/backend/orchestration/event-collector.orchestrator.js.map +1 -1
  251. package/dist/src/backend/orchestration/event-collector.orchestrator.test.js +39 -121
  252. package/dist/src/backend/orchestration/event-collector.orchestrator.test.js.map +1 -1
  253. package/dist/src/backend/orchestration/health.service.d.ts.map +1 -1
  254. package/dist/src/backend/orchestration/health.service.js +1 -1
  255. package/dist/src/backend/orchestration/linear-config.helper.js +2 -2
  256. package/dist/src/backend/orchestration/ratchet-projection.worker.d.ts +24 -0
  257. package/dist/src/backend/orchestration/ratchet-projection.worker.d.ts.map +1 -0
  258. package/dist/src/backend/orchestration/ratchet-projection.worker.js +128 -0
  259. package/dist/src/backend/orchestration/ratchet-projection.worker.js.map +1 -0
  260. package/dist/src/backend/orchestration/ratchet-projection.worker.test.d.ts +2 -0
  261. package/dist/src/backend/orchestration/ratchet-projection.worker.test.d.ts.map +1 -0
  262. package/dist/src/backend/orchestration/ratchet-projection.worker.test.js +174 -0
  263. package/dist/src/backend/orchestration/ratchet-projection.worker.test.js.map +1 -0
  264. package/dist/src/backend/orchestration/reconciliation.service.d.ts.map +1 -1
  265. package/dist/src/backend/orchestration/reconciliation.service.js +5 -5
  266. package/dist/src/backend/orchestration/reconciliation.service.test.js +2 -2
  267. package/dist/src/backend/orchestration/scheduler.service.d.ts.map +1 -1
  268. package/dist/src/backend/orchestration/scheduler.service.js +7 -7
  269. package/dist/src/backend/orchestration/scheduler.service.test.js +1 -1
  270. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.d.ts +7 -6
  271. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.d.ts.map +1 -1
  272. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.js +108 -80
  273. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.js.map +1 -1
  274. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.test.js +6 -6
  275. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.test.js.map +1 -1
  276. package/dist/src/backend/orchestration/snapshot-reconciliation.streaming.test.d.ts +2 -0
  277. package/dist/src/backend/orchestration/snapshot-reconciliation.streaming.test.d.ts.map +1 -0
  278. package/dist/src/backend/orchestration/snapshot-reconciliation.streaming.test.js +206 -0
  279. package/dist/src/backend/orchestration/snapshot-reconciliation.streaming.test.js.map +1 -0
  280. package/dist/src/backend/orchestration/types.d.ts +1 -1
  281. package/dist/src/backend/orchestration/workspace-archive.orchestrator.d.ts +4 -4
  282. package/dist/src/backend/orchestration/workspace-archive.orchestrator.js +3 -3
  283. package/dist/src/backend/orchestration/workspace-archive.orchestrator.js.map +1 -1
  284. package/dist/src/backend/orchestration/workspace-archive.orchestrator.test.js +2 -2
  285. package/dist/src/backend/orchestration/workspace-archive.orchestrator.test.js.map +1 -1
  286. package/dist/src/backend/orchestration/workspace-children.orchestrator.js +5 -5
  287. package/dist/src/backend/orchestration/workspace-children.orchestrator.test.js +2 -2
  288. package/dist/src/backend/orchestration/workspace-init-github-username-cache.d.ts.map +1 -1
  289. package/dist/src/backend/orchestration/workspace-init-github-username-cache.js +1 -1
  290. package/dist/src/backend/orchestration/workspace-init-github-username-cache.js.map +1 -1
  291. package/dist/src/backend/orchestration/workspace-init-issue-prompts.d.ts +1 -1
  292. package/dist/src/backend/orchestration/workspace-init-issue-prompts.js +3 -3
  293. package/dist/src/backend/orchestration/workspace-init-issue-prompts.test.js +3 -3
  294. package/dist/src/backend/orchestration/workspace-init-issue-prompts.test.js.map +1 -1
  295. package/dist/src/backend/orchestration/workspace-init-script-pipeline.d.ts +1 -1
  296. package/dist/src/backend/orchestration/workspace-init-script-pipeline.js +3 -3
  297. package/dist/src/backend/orchestration/workspace-init.orchestrator.js +9 -9
  298. package/dist/src/backend/orchestration/workspace-init.orchestrator.test.js +5 -5
  299. package/dist/src/backend/orchestration/workspace-notification-delivery.orchestrator.js +2 -2
  300. package/dist/src/backend/prompts/markdown-loader.d.ts.map +1 -1
  301. package/dist/src/backend/prompts/quick-actions.js +1 -1
  302. package/dist/src/backend/prompts/quick-actions.js.map +1 -1
  303. package/dist/src/backend/prompts/ratchet-dispatch.js +1 -1
  304. package/dist/src/backend/prompts/ratchet-dispatch.js.map +1 -1
  305. package/dist/src/backend/prompts/workflows.js +1 -1
  306. package/dist/src/backend/prompts/workflows.js.map +1 -1
  307. package/dist/src/backend/routers/health.router.d.ts +1 -1
  308. package/dist/src/backend/routers/health.router.js +2 -2
  309. package/dist/src/backend/routers/websocket/chat-connection-registry.d.ts +1 -1
  310. package/dist/src/backend/routers/websocket/chat-connection-registry.d.ts.map +1 -1
  311. package/dist/src/backend/routers/websocket/chat-connection-registry.js +3 -3
  312. package/dist/src/backend/routers/websocket/chat-connection-registry.test.js +2 -2
  313. package/dist/src/backend/routers/websocket/chat-connection-registry.test.js.map +1 -1
  314. package/dist/src/backend/routers/websocket/chat.handler.d.ts +2 -2
  315. package/dist/src/backend/routers/websocket/chat.handler.d.ts.map +1 -1
  316. package/dist/src/backend/routers/websocket/chat.handler.js +4 -20
  317. package/dist/src/backend/routers/websocket/chat.handler.js.map +1 -1
  318. package/dist/src/backend/routers/websocket/chat.handler.test.js +4 -10
  319. package/dist/src/backend/routers/websocket/chat.handler.test.js.map +1 -1
  320. package/dist/src/backend/routers/websocket/context-injection.test.js +8 -8
  321. package/dist/src/backend/routers/websocket/context-injection.test.js.map +1 -1
  322. package/dist/src/backend/routers/websocket/log-stream-dev.handler.test.js +2 -2
  323. package/dist/src/backend/routers/websocket/log-stream-post-run.handler.test.js +1 -1
  324. package/dist/src/backend/routers/websocket/log-stream.handler.d.ts +2 -2
  325. package/dist/src/backend/routers/websocket/log-stream.handler.js +1 -1
  326. package/dist/src/backend/routers/websocket/message-utils.js +1 -1
  327. package/dist/src/backend/routers/websocket/message-utils.test.js +1 -1
  328. package/dist/src/backend/routers/websocket/push-channel.handler.d.ts +2 -2
  329. package/dist/src/backend/routers/websocket/push-channel.handler.js +1 -1
  330. package/dist/src/backend/routers/websocket/setup-terminal.handler.d.ts +1 -1
  331. package/dist/src/backend/routers/websocket/setup-terminal.handler.js +4 -4
  332. package/dist/src/backend/routers/websocket/setup-terminal.handler.js.map +1 -1
  333. package/dist/src/backend/routers/websocket/setup-terminal.handler.test.js +2 -2
  334. package/dist/src/backend/routers/websocket/snapshots.handler.d.ts +2 -2
  335. package/dist/src/backend/routers/websocket/snapshots.handler.d.ts.map +1 -1
  336. package/dist/src/backend/routers/websocket/snapshots.handler.js +5 -5
  337. package/dist/src/backend/routers/websocket/snapshots.handler.js.map +1 -1
  338. package/dist/src/backend/routers/websocket/snapshots.handler.test.js +6 -6
  339. package/dist/src/backend/routers/websocket/snapshots.handler.test.js.map +1 -1
  340. package/dist/src/backend/routers/websocket/terminal.handler.d.ts +2 -2
  341. package/dist/src/backend/routers/websocket/terminal.handler.js +5 -5
  342. package/dist/src/backend/routers/websocket/terminal.handler.test.js +4 -4
  343. package/dist/src/backend/routers/websocket/terminal.handler.test.js.map +1 -1
  344. package/dist/src/backend/routers/websocket/upgrade-utils.d.ts +1 -1
  345. package/dist/src/backend/routers/websocket/upgrade-utils.js +2 -2
  346. package/dist/src/backend/routers/websocket/upgrade-utils.test.js.map +1 -1
  347. package/dist/src/backend/routers/websocket/voice-soft-stop.handler.d.ts +1 -1
  348. package/dist/src/backend/routers/websocket/voice.handler.d.ts +1 -1
  349. package/dist/src/backend/routers/websocket/voice.handler.js +1 -1
  350. package/dist/src/backend/routers/websocket/websocket.integration.test.js +4 -8
  351. package/dist/src/backend/routers/websocket/websocket.integration.test.js.map +1 -1
  352. package/dist/src/backend/server.d.ts.map +1 -1
  353. package/dist/src/backend/server.js +2 -2
  354. package/dist/src/backend/server.js.map +1 -1
  355. package/dist/src/backend/server.upgrade.test.js +10 -4
  356. package/dist/src/backend/server.upgrade.test.js.map +1 -1
  357. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.d.ts +1 -1
  358. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.d.ts.map +1 -1
  359. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.js.map +1 -1
  360. package/dist/src/backend/services/auto-iteration/service/git-ops.js +1 -1
  361. package/dist/src/backend/services/auto-iteration/service/index.js +1 -1
  362. package/dist/src/backend/services/auto-iteration/service/insights.service.d.ts.map +1 -1
  363. package/dist/src/backend/services/auto-iteration/service/logbook.service.d.ts.map +1 -1
  364. package/dist/src/backend/services/check-service-accessor-boundaries.test.js +10 -14
  365. package/dist/src/backend/services/check-service-accessor-boundaries.test.js.map +1 -1
  366. package/dist/src/backend/services/check-single-writer.test.js +9 -12
  367. package/dist/src/backend/services/check-single-writer.test.js.map +1 -1
  368. package/dist/src/backend/services/config.service.d.ts.map +1 -1
  369. package/dist/src/backend/services/config.service.js +1 -1
  370. package/dist/src/backend/services/constants.d.ts +1 -0
  371. package/dist/src/backend/services/constants.d.ts.map +1 -1
  372. package/dist/src/backend/services/constants.js +1 -0
  373. package/dist/src/backend/services/constants.js.map +1 -1
  374. package/dist/src/backend/services/crypto.service.d.ts.map +1 -1
  375. package/dist/src/backend/services/decision-log/resources/decision-log.accessor.d.ts +0 -2
  376. package/dist/src/backend/services/decision-log/resources/decision-log.accessor.d.ts.map +1 -1
  377. package/dist/src/backend/services/decision-log/resources/decision-log.accessor.js +1 -7
  378. package/dist/src/backend/services/decision-log/resources/decision-log.accessor.js.map +1 -1
  379. package/dist/src/backend/services/decision-log/service/decision-log-domain-exports.test.js +1 -1
  380. package/dist/src/backend/services/decision-log/service/decision-log.service.d.ts.map +1 -1
  381. package/dist/src/backend/services/decision-log/service/decision-log.service.js +1 -1
  382. package/dist/src/backend/services/env-schemas.d.ts +53 -53
  383. package/dist/src/backend/services/github/service/github-cli/constants.d.ts.map +1 -1
  384. package/dist/src/backend/services/github/service/github-cli/errors.js +2 -2
  385. package/dist/src/backend/services/github/service/github-cli/schemas.d.ts +13 -36
  386. package/dist/src/backend/services/github/service/github-cli/schemas.d.ts.map +1 -1
  387. package/dist/src/backend/services/github/service/github-cli/schemas.js +0 -18
  388. package/dist/src/backend/services/github/service/github-cli/schemas.js.map +1 -1
  389. package/dist/src/backend/services/github/service/github-cli/utils.js +1 -1
  390. package/dist/src/backend/services/github/service/github-cli-review-pagination.test.d.ts +2 -0
  391. package/dist/src/backend/services/github/service/github-cli-review-pagination.test.d.ts.map +1 -0
  392. package/dist/src/backend/services/github/service/github-cli-review-pagination.test.js +58 -0
  393. package/dist/src/backend/services/github/service/github-cli-review-pagination.test.js.map +1 -0
  394. package/dist/src/backend/services/github/service/github-cli.service.d.ts +0 -2
  395. package/dist/src/backend/services/github/service/github-cli.service.d.ts.map +1 -1
  396. package/dist/src/backend/services/github/service/github-cli.service.js +4 -41
  397. package/dist/src/backend/services/github/service/github-cli.service.js.map +1 -1
  398. package/dist/src/backend/services/github/service/github-cli.service.test.js +3 -13
  399. package/dist/src/backend/services/github/service/github-cli.service.test.js.map +1 -1
  400. package/dist/src/backend/services/github/service/pr-fetch-coordinator.d.ts.map +1 -1
  401. package/dist/src/backend/services/github/service/pr-fetch-coordinator.js +1 -1
  402. package/dist/src/backend/services/github/service/pr-snapshot.service.d.ts +2 -2
  403. package/dist/src/backend/services/github/service/pr-snapshot.service.d.ts.map +1 -1
  404. package/dist/src/backend/services/github/service/pr-snapshot.service.js +2 -2
  405. package/dist/src/backend/services/github/service/pr-snapshot.service.js.map +1 -1
  406. package/dist/src/backend/services/job-runner.service.d.ts.map +1 -1
  407. package/dist/src/backend/services/job-runner.service.js +1 -1
  408. package/dist/src/backend/services/job-runner.service.js.map +1 -1
  409. package/dist/src/backend/services/linear/service/linear-client.service.d.ts.map +1 -1
  410. package/dist/src/backend/services/linear/service/linear-client.service.js +1 -1
  411. package/dist/src/backend/services/linear/service/linear-client.transport.test.d.ts +2 -0
  412. package/dist/src/backend/services/linear/service/linear-client.transport.test.d.ts.map +1 -0
  413. package/dist/src/backend/services/linear/service/linear-client.transport.test.js +64 -0
  414. package/dist/src/backend/services/linear/service/linear-client.transport.test.js.map +1 -0
  415. package/dist/src/backend/services/linear/service/linear-state-sync.service.d.ts.map +1 -1
  416. package/dist/src/backend/services/linear/service/linear-state-sync.service.js +1 -1
  417. package/dist/src/backend/services/logger.service.d.ts.map +1 -1
  418. package/dist/src/backend/services/logger.service.js +1 -1
  419. package/dist/src/backend/services/notification.service.d.ts.map +1 -1
  420. package/dist/src/backend/services/notification.service.js +2 -2
  421. package/dist/src/backend/services/notification.service.js.map +1 -1
  422. package/dist/src/backend/services/periodic-task/index.js +1 -1
  423. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.js +1 -1
  424. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.js.map +1 -1
  425. package/dist/src/backend/services/periodic-task/service/periodic-task.service.d.ts +23 -23
  426. package/dist/src/backend/services/periodic-task/service/periodic-task.service.d.ts.map +1 -1
  427. package/dist/src/backend/services/periodic-task/service/periodic-task.service.js +4 -4
  428. package/dist/src/backend/services/periodic-task/service/periodic-task.service.js.map +1 -1
  429. package/dist/src/backend/services/periodic-task/service/periodic-task.service.test.js.map +1 -1
  430. package/dist/src/backend/services/port.service.test.js +1 -3
  431. package/dist/src/backend/services/port.service.test.js.map +1 -1
  432. package/dist/src/backend/services/ratchet/service/fixer-session.service.d.ts.map +1 -1
  433. package/dist/src/backend/services/ratchet/service/fixer-session.service.js +3 -3
  434. package/dist/src/backend/services/ratchet/service/fixer-session.service.test.js +2 -2
  435. package/dist/src/backend/services/ratchet/service/provider-selection.js +1 -1
  436. package/dist/src/backend/services/ratchet/service/ratchet-active-session.helpers.js +1 -1
  437. package/dist/src/backend/services/ratchet/service/ratchet-decision-logging.helpers.d.ts +1 -1
  438. package/dist/src/backend/services/ratchet/service/ratchet-decision-logging.helpers.js +1 -1
  439. package/dist/src/backend/services/ratchet/service/ratchet-fixer-dispatch.helpers.js +5 -5
  440. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.d.ts +1 -1
  441. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.d.ts.map +1 -1
  442. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.js +2 -2
  443. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.test.js.map +1 -1
  444. package/dist/src/backend/services/ratchet/service/ratchet-provider-resolver.service.d.ts.map +1 -1
  445. package/dist/src/backend/services/ratchet/service/ratchet-provider-resolver.service.js +2 -2
  446. package/dist/src/backend/services/ratchet/service/ratchet-provider-resolver.service.test.js +2 -2
  447. package/dist/src/backend/services/ratchet/service/ratchet-workspace-check-coordinator.d.ts.map +1 -1
  448. package/dist/src/backend/services/ratchet/service/ratchet-workspace-check-coordinator.js.map +1 -1
  449. package/dist/src/backend/services/ratchet/service/ratchet.service.d.ts +3 -3
  450. package/dist/src/backend/services/ratchet/service/ratchet.service.d.ts.map +1 -1
  451. package/dist/src/backend/services/ratchet/service/ratchet.service.js +7 -7
  452. package/dist/src/backend/services/ratchet/service/ratchet.service.js.map +1 -1
  453. package/dist/src/backend/services/ratchet/service/ratchet.service.test.js +3 -3
  454. package/dist/src/backend/services/ratchet/service/ratchet.types.d.ts +1 -1
  455. package/dist/src/backend/services/rate-limit-backoff.d.ts.map +1 -1
  456. package/dist/src/backend/services/rate-limit-backoff.js +1 -1
  457. package/dist/src/backend/services/rate-limiter.service.d.ts.map +1 -1
  458. package/dist/src/backend/services/rate-limiter.service.js.map +1 -1
  459. package/dist/src/backend/services/registry.d.ts +24 -24
  460. package/dist/src/backend/services/registry.d.ts.map +1 -1
  461. package/dist/src/backend/services/resources.integration.test.js +1 -1
  462. package/dist/src/backend/services/resources.integration.test.js.map +1 -1
  463. package/dist/src/backend/services/run-script/service/factory-config.service.d.ts.map +1 -1
  464. package/dist/src/backend/services/run-script/service/factory-config.service.js.map +1 -1
  465. package/dist/src/backend/services/run-script/service/port-allocation.service.d.ts.map +1 -1
  466. package/dist/src/backend/services/run-script/service/port-allocation.service.js.map +1 -1
  467. package/dist/src/backend/services/run-script/service/run-script-config-persistence.service.d.ts.map +1 -1
  468. package/dist/src/backend/services/run-script/service/run-script-config-persistence.service.js +2 -2
  469. package/dist/src/backend/services/run-script/service/run-script-output-buffer.d.ts.map +1 -1
  470. package/dist/src/backend/services/run-script/service/run-script-output-buffer.js.map +1 -1
  471. package/dist/src/backend/services/run-script/service/run-script-process-utils.d.ts +1 -1
  472. package/dist/src/backend/services/run-script/service/run-script-process-utils.js +1 -1
  473. package/dist/src/backend/services/run-script/service/run-script-proxy.service.d.ts.map +1 -1
  474. package/dist/src/backend/services/run-script/service/run-script-proxy.service.js +2 -2
  475. package/dist/src/backend/services/run-script/service/run-script-proxy.service.test.js +1 -1
  476. package/dist/src/backend/services/run-script/service/run-script-proxy.service.test.js.map +1 -1
  477. package/dist/src/backend/services/run-script/service/run-script-state-machine.service.d.ts +2 -2
  478. package/dist/src/backend/services/run-script/service/run-script-state-machine.service.d.ts.map +1 -1
  479. package/dist/src/backend/services/run-script/service/run-script-state-machine.service.js +2 -2
  480. package/dist/src/backend/services/run-script/service/run-script-state-machine.service.js.map +1 -1
  481. package/dist/src/backend/services/run-script/service/run-script.service.d.ts.map +1 -1
  482. package/dist/src/backend/services/run-script/service/run-script.service.js +3 -3
  483. package/dist/src/backend/services/run-script/service/run-script.service.js.map +1 -1
  484. package/dist/src/backend/services/run-script/service/run-script.service.test.js.map +1 -1
  485. package/dist/src/backend/services/run-script/service/startup-script.integration.test.d.ts +2 -0
  486. package/dist/src/backend/services/run-script/service/startup-script.integration.test.d.ts.map +1 -0
  487. package/dist/src/backend/services/run-script/service/startup-script.integration.test.js +63 -0
  488. package/dist/src/backend/services/run-script/service/startup-script.integration.test.js.map +1 -0
  489. package/dist/src/backend/services/run-script/service/startup-script.service.d.ts.map +1 -1
  490. package/dist/src/backend/services/run-script/service/startup-script.service.js +38 -14
  491. package/dist/src/backend/services/run-script/service/startup-script.service.js.map +1 -1
  492. package/dist/src/backend/services/run-script/service/startup-script.service.test.js +52 -2
  493. package/dist/src/backend/services/run-script/service/startup-script.service.test.js.map +1 -1
  494. package/dist/src/backend/services/server-instance.service.d.ts +1 -1
  495. package/dist/src/backend/services/server-instance.service.d.ts.map +1 -1
  496. package/dist/src/backend/services/session/resources/agent-session.accessor.d.ts +0 -1
  497. package/dist/src/backend/services/session/resources/agent-session.accessor.d.ts.map +1 -1
  498. package/dist/src/backend/services/session/resources/agent-session.accessor.js +2 -10
  499. package/dist/src/backend/services/session/resources/agent-session.accessor.js.map +1 -1
  500. package/dist/src/backend/services/session/resources/agent-session.accessor.test.js +0 -10
  501. package/dist/src/backend/services/session/resources/agent-session.accessor.test.js.map +1 -1
  502. package/dist/src/backend/services/session/resources/closed-session.accessor.d.ts.map +1 -1
  503. package/dist/src/backend/services/session/resources/closed-session.accessor.js +1 -1
  504. package/dist/src/backend/services/session/resources/session-lifecycle-event.accessor.d.ts.map +1 -1
  505. package/dist/src/backend/services/session/resources/session-lifecycle-event.accessor.js +1 -1
  506. package/dist/src/backend/services/session/resources/session-lifecycle-event.accessor.test.js +1 -1
  507. package/dist/src/backend/services/session/service/acp/acp-client-factory.d.ts +33 -0
  508. package/dist/src/backend/services/session/service/acp/acp-client-factory.d.ts.map +1 -0
  509. package/dist/src/backend/services/session/service/acp/acp-client-factory.js +275 -0
  510. package/dist/src/backend/services/session/service/acp/acp-client-factory.js.map +1 -0
  511. package/dist/src/backend/services/session/service/acp/acp-client-factory.test.d.ts +2 -0
  512. package/dist/src/backend/services/session/service/acp/acp-client-factory.test.d.ts.map +1 -0
  513. package/dist/src/backend/services/session/service/acp/acp-client-factory.test.js +449 -0
  514. package/dist/src/backend/services/session/service/acp/acp-client-factory.test.js.map +1 -0
  515. package/dist/src/backend/services/session/service/acp/acp-client-handler.d.ts.map +1 -1
  516. package/dist/src/backend/services/session/service/acp/acp-client-handler.js +18 -1
  517. package/dist/src/backend/services/session/service/acp/acp-client-handler.js.map +1 -1
  518. package/dist/src/backend/services/session/service/acp/acp-client-handler.test.js +171 -0
  519. package/dist/src/backend/services/session/service/acp/acp-client-handler.test.js.map +1 -1
  520. package/dist/src/backend/services/session/service/acp/acp-permission-bridge.d.ts +2 -1
  521. package/dist/src/backend/services/session/service/acp/acp-permission-bridge.d.ts.map +1 -1
  522. package/dist/src/backend/services/session/service/acp/acp-permission-bridge.js +15 -5
  523. package/dist/src/backend/services/session/service/acp/acp-permission-bridge.js.map +1 -1
  524. package/dist/src/backend/services/session/service/acp/acp-permission-bridge.test.js +12 -10
  525. package/dist/src/backend/services/session/service/acp/acp-permission-bridge.test.js.map +1 -1
  526. package/dist/src/backend/services/session/service/acp/acp-process-handle.d.ts +3 -0
  527. package/dist/src/backend/services/session/service/acp/acp-process-handle.d.ts.map +1 -1
  528. package/dist/src/backend/services/session/service/acp/acp-process-handle.js +2 -0
  529. package/dist/src/backend/services/session/service/acp/acp-process-handle.js.map +1 -1
  530. package/dist/src/backend/services/session/service/acp/acp-process-handle.test.js +17 -0
  531. package/dist/src/backend/services/session/service/acp/acp-process-handle.test.js.map +1 -1
  532. package/dist/src/backend/services/session/service/acp/acp-prompt-controller.d.ts +17 -0
  533. package/dist/src/backend/services/session/service/acp/acp-prompt-controller.d.ts.map +1 -0
  534. package/dist/src/backend/services/session/service/acp/acp-prompt-controller.js +97 -0
  535. package/dist/src/backend/services/session/service/acp/acp-prompt-controller.js.map +1 -0
  536. package/dist/src/backend/services/session/service/acp/acp-prompt-controller.test.d.ts +2 -0
  537. package/dist/src/backend/services/session/service/acp/acp-prompt-controller.test.d.ts.map +1 -0
  538. package/dist/src/backend/services/session/service/acp/acp-prompt-controller.test.js +193 -0
  539. package/dist/src/backend/services/session/service/acp/acp-prompt-controller.test.js.map +1 -0
  540. package/dist/src/backend/services/session/service/acp/acp-runtime-config-controller.d.ts +8 -0
  541. package/dist/src/backend/services/session/service/acp/acp-runtime-config-controller.d.ts.map +1 -0
  542. package/dist/src/backend/services/session/service/acp/acp-runtime-config-controller.js +53 -0
  543. package/dist/src/backend/services/session/service/acp/acp-runtime-config-controller.js.map +1 -0
  544. package/dist/src/backend/services/session/service/acp/acp-runtime-config-controller.test.d.ts +2 -0
  545. package/dist/src/backend/services/session/service/acp/acp-runtime-config-controller.test.d.ts.map +1 -0
  546. package/dist/src/backend/services/session/service/acp/acp-runtime-config-controller.test.js +157 -0
  547. package/dist/src/backend/services/session/service/acp/acp-runtime-config-controller.test.js.map +1 -0
  548. package/dist/src/backend/services/session/service/acp/acp-runtime-contracts.d.ts +25 -0
  549. package/dist/src/backend/services/session/service/acp/acp-runtime-contracts.d.ts.map +1 -0
  550. package/dist/src/backend/services/session/service/acp/acp-runtime-contracts.js +2 -0
  551. package/dist/src/backend/services/session/service/acp/acp-runtime-contracts.js.map +1 -0
  552. package/dist/src/backend/services/session/service/acp/acp-runtime-error-handler.d.ts +5 -0
  553. package/dist/src/backend/services/session/service/acp/acp-runtime-error-handler.d.ts.map +1 -0
  554. package/dist/src/backend/services/session/service/acp/acp-runtime-error-handler.js +34 -0
  555. package/dist/src/backend/services/session/service/acp/acp-runtime-error-handler.js.map +1 -0
  556. package/dist/src/backend/services/session/service/acp/acp-runtime-errors.d.ts +20 -0
  557. package/dist/src/backend/services/session/service/acp/acp-runtime-errors.d.ts.map +1 -0
  558. package/dist/src/backend/services/session/service/acp/acp-runtime-errors.js +68 -0
  559. package/dist/src/backend/services/session/service/acp/acp-runtime-errors.js.map +1 -0
  560. package/dist/src/backend/services/session/service/acp/acp-runtime-errors.test.d.ts +2 -0
  561. package/dist/src/backend/services/session/service/acp/acp-runtime-errors.test.d.ts.map +1 -0
  562. package/dist/src/backend/services/session/service/acp/acp-runtime-errors.test.js +17 -0
  563. package/dist/src/backend/services/session/service/acp/acp-runtime-errors.test.js.map +1 -0
  564. package/dist/src/backend/services/session/service/acp/acp-runtime-events.d.ts +28 -1
  565. package/dist/src/backend/services/session/service/acp/acp-runtime-events.d.ts.map +1 -1
  566. package/dist/src/backend/services/session/service/acp/acp-runtime-exit-handler.d.ts +5 -0
  567. package/dist/src/backend/services/session/service/acp/acp-runtime-exit-handler.d.ts.map +1 -0
  568. package/dist/src/backend/services/session/service/acp/acp-runtime-exit-handler.js +30 -0
  569. package/dist/src/backend/services/session/service/acp/acp-runtime-exit-handler.js.map +1 -0
  570. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.browsing.test.d.ts +2 -0
  571. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.browsing.test.d.ts.map +1 -0
  572. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.browsing.test.js +310 -0
  573. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.browsing.test.js.map +1 -0
  574. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.config.test.d.ts +2 -0
  575. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.config.test.d.ts.map +1 -0
  576. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.config.test.js +148 -0
  577. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.config.test.js.map +1 -0
  578. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.creation.test.d.ts +2 -0
  579. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.creation.test.d.ts.map +1 -0
  580. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.creation.test.js +401 -0
  581. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.creation.test.js.map +1 -0
  582. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.d.ts +18 -68
  583. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.d.ts.map +1 -1
  584. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.facade.test.d.ts +2 -0
  585. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.facade.test.d.ts.map +1 -0
  586. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.facade.test.js +59 -0
  587. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.facade.test.js.map +1 -0
  588. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.js +65 -993
  589. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.js.map +1 -1
  590. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.manual.integration.test.js +2 -2
  591. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.manual.integration.test.js.map +1 -1
  592. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.prompt.test.d.ts +2 -0
  593. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.prompt.test.d.ts.map +1 -0
  594. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.prompt.test.js +185 -0
  595. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.prompt.test.js.map +1 -0
  596. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.task-status.test.d.ts +2 -0
  597. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.task-status.test.d.ts.map +1 -0
  598. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.task-status.test.js +57 -0
  599. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.task-status.test.js.map +1 -0
  600. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.termination.test.d.ts +2 -0
  601. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.termination.test.d.ts.map +1 -0
  602. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.termination.test.js +391 -0
  603. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.termination.test.js.map +1 -0
  604. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-harness.d.ts +26 -0
  605. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-harness.d.ts.map +1 -0
  606. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-harness.js +92 -0
  607. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-harness.js.map +1 -0
  608. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-helpers.d.ts +59 -0
  609. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-helpers.d.ts.map +1 -0
  610. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-helpers.js +142 -0
  611. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-helpers.js.map +1 -0
  612. package/dist/src/backend/services/session/service/acp/acp-runtime-quiescence.d.ts +21 -0
  613. package/dist/src/backend/services/session/service/acp/acp-runtime-quiescence.d.ts.map +1 -0
  614. package/dist/src/backend/services/session/service/acp/acp-runtime-quiescence.js +112 -0
  615. package/dist/src/backend/services/session/service/acp/acp-runtime-quiescence.js.map +1 -0
  616. package/dist/src/backend/services/session/service/acp/acp-runtime-quiescence.test.d.ts +2 -0
  617. package/dist/src/backend/services/session/service/acp/acp-runtime-quiescence.test.d.ts.map +1 -0
  618. package/dist/src/backend/services/session/service/acp/acp-runtime-quiescence.test.js +142 -0
  619. package/dist/src/backend/services/session/service/acp/acp-runtime-quiescence.test.js.map +1 -0
  620. package/dist/src/backend/services/session/service/acp/acp-runtime-spawn.js +1 -1
  621. package/dist/src/backend/services/session/service/acp/acp-runtime-spawn.js.map +1 -1
  622. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.creation.test.d.ts +2 -0
  623. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.creation.test.d.ts.map +1 -0
  624. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.creation.test.js +331 -0
  625. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.creation.test.js.map +1 -0
  626. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.d.ts +85 -0
  627. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.d.ts.map +1 -0
  628. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.js +634 -0
  629. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.js.map +1 -0
  630. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.status.test.d.ts +2 -0
  631. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.status.test.d.ts.map +1 -0
  632. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.status.test.js +99 -0
  633. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.status.test.js.map +1 -0
  634. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.termination.test.d.ts +2 -0
  635. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.termination.test.d.ts.map +1 -0
  636. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.termination.test.js +517 -0
  637. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.termination.test.js.map +1 -0
  638. package/dist/src/backend/services/session/service/acp/acp-session-config-options.d.ts +10 -2
  639. package/dist/src/backend/services/session/service/acp/acp-session-config-options.d.ts.map +1 -1
  640. package/dist/src/backend/services/session/service/acp/acp-session-config-options.js +7 -4
  641. package/dist/src/backend/services/session/service/acp/acp-session-config-options.js.map +1 -1
  642. package/dist/src/backend/services/session/service/acp/acp-session-config-options.test.js +20 -2
  643. package/dist/src/backend/services/session/service/acp/acp-session-config-options.test.js.map +1 -1
  644. package/dist/src/backend/services/session/service/acp/acp-session-negotiation.integration.test.js +24 -2
  645. package/dist/src/backend/services/session/service/acp/acp-session-negotiation.integration.test.js.map +1 -1
  646. package/dist/src/backend/services/session/service/acp/acp-subagent-browser.d.ts +9 -0
  647. package/dist/src/backend/services/session/service/acp/acp-subagent-browser.d.ts.map +1 -0
  648. package/dist/src/backend/services/session/service/acp/acp-subagent-browser.js +96 -0
  649. package/dist/src/backend/services/session/service/acp/acp-subagent-browser.js.map +1 -0
  650. package/dist/src/backend/services/session/service/acp/acp-subagent-browser.test.d.ts +2 -0
  651. package/dist/src/backend/services/session/service/acp/acp-subagent-browser.test.d.ts.map +1 -0
  652. package/dist/src/backend/services/session/service/acp/acp-subagent-browser.test.js +171 -0
  653. package/dist/src/backend/services/session/service/acp/acp-subagent-browser.test.js.map +1 -0
  654. package/dist/src/backend/services/session/service/acp/child-workspace-mcp-server.js.map +1 -1
  655. package/dist/src/backend/services/session/service/acp/child-workspace-mcp-server.test.js.map +1 -1
  656. package/dist/src/backend/services/session/service/acp/claude-model-catalog-loader.js +1 -1
  657. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.d.ts +1 -1
  658. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.d.ts.map +1 -1
  659. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.js +4 -0
  660. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.js.map +1 -1
  661. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.test.d.ts +2 -0
  662. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.test.d.ts.map +1 -0
  663. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.test.js +8 -0
  664. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.test.js.map +1 -0
  665. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.d.ts +1 -1
  666. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.d.ts.map +1 -1
  667. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.js +39 -36
  668. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.js.map +1 -1
  669. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.notification-ordering.test.d.ts +2 -0
  670. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.notification-ordering.test.d.ts.map +1 -0
  671. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.notification-ordering.test.js +353 -0
  672. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.notification-ordering.test.js.map +1 -0
  673. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.test.js +34 -16
  674. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.test.js.map +1 -1
  675. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.d.ts +7 -0
  676. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.d.ts.map +1 -0
  677. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.js +98 -0
  678. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.js.map +1 -0
  679. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.test.d.ts +2 -0
  680. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.test.d.ts.map +1 -0
  681. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.test.js +148 -0
  682. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.test.js.map +1 -0
  683. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-rpc-client.d.ts.map +1 -1
  684. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.d.ts.map +1 -1
  685. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.js.map +1 -1
  686. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.test.js.map +1 -1
  687. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-mapper.test.js +10 -0
  688. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-mapper.test.js.map +1 -1
  689. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.d.ts +80 -8
  690. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.d.ts.map +1 -1
  691. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.js +46 -1
  692. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.js.map +1 -1
  693. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.test.js +36 -0
  694. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.test.js.map +1 -1
  695. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/command-metadata.js.map +1 -1
  696. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.d.ts.map +1 -1
  697. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.js +1 -3
  698. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.js.map +1 -1
  699. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.test.d.ts +2 -0
  700. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.test.d.ts.map +1 -0
  701. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.test.js +31 -0
  702. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.test.js.map +1 -0
  703. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/session-state-container.d.ts.map +1 -1
  704. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/shape-drift-reporter.d.ts.map +1 -1
  705. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.cancellation.test.d.ts +2 -0
  706. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.cancellation.test.d.ts.map +1 -0
  707. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.cancellation.test.js +181 -0
  708. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.cancellation.test.js.map +1 -0
  709. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.d.ts +15 -1
  710. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.d.ts.map +1 -1
  711. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.js +197 -29
  712. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.js.map +1 -1
  713. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.test.js +348 -19
  714. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.test.js.map +1 -1
  715. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/task-status-protocol.d.ts +8 -0
  716. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/task-status-protocol.d.ts.map +1 -0
  717. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/task-status-protocol.js +9 -0
  718. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/task-status-protocol.js.map +1 -0
  719. package/dist/src/backend/services/session/service/acp/codex-cli-import-resolution.integration.test.js.map +1 -1
  720. package/dist/src/backend/services/session/service/acp/index.d.ts +2 -2
  721. package/dist/src/backend/services/session/service/acp/index.d.ts.map +1 -1
  722. package/dist/src/backend/services/session/service/acp/index.js +1 -0
  723. package/dist/src/backend/services/session/service/acp/index.js.map +1 -1
  724. package/dist/src/backend/services/session/service/chat/chat-event-forwarder.service.d.ts +1 -1
  725. package/dist/src/backend/services/session/service/chat/chat-event-forwarder.service.d.ts.map +1 -1
  726. package/dist/src/backend/services/session/service/chat/chat-event-forwarder.service.js +6 -6
  727. package/dist/src/backend/services/session/service/chat/chat-event-forwarder.service.test.js.map +1 -1
  728. package/dist/src/backend/services/session/service/chat/chat-message-handlers/attachment-processing.d.ts.map +1 -1
  729. package/dist/src/backend/services/session/service/chat/chat-message-handlers/attachment-processing.js +1 -1
  730. package/dist/src/backend/services/session/service/chat/chat-message-handlers/attachment-processing.test.js +1 -1
  731. package/dist/src/backend/services/session/service/chat/chat-message-handlers/attachment-processing.test.js.map +1 -1
  732. package/dist/src/backend/services/session/service/chat/chat-message-handlers/attachment-utils.test.js.map +1 -1
  733. package/dist/src/backend/services/session/service/chat/chat-message-handlers/constants.js +1 -1
  734. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.d.ts +1 -1
  735. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.d.ts.map +1 -1
  736. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.js +16 -8
  737. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.js.map +1 -1
  738. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.recovery.test.d.ts +2 -0
  739. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.recovery.test.d.ts.map +1 -0
  740. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.recovery.test.js +195 -0
  741. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.recovery.test.js.map +1 -0
  742. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.test.js +2 -27
  743. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.test.js.map +1 -1
  744. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/permission-response.handler.d.ts +1 -1
  745. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/permission-response.handler.js +2 -2
  746. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/queue-message.handler.d.ts +1 -1
  747. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/queue-message.handler.js +3 -3
  748. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/queue-message.handler.test.js +0 -6
  749. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/queue-message.handler.test.js.map +1 -1
  750. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/remove-queued-message.handler.d.ts +1 -1
  751. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/remove-queued-message.handler.js +3 -3
  752. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/resume-queued-messages.handler.d.ts +1 -1
  753. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-config-option.handler.d.ts +1 -1
  754. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-config-option.handler.js +4 -4
  755. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-config-option.handler.js.map +1 -1
  756. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-config-option.handler.test.js +1 -1
  757. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-config-option.handler.test.js.map +1 -1
  758. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-model.handler.d.ts +1 -1
  759. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-model.handler.js +2 -2
  760. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-thinking-budget.handler.d.ts +1 -1
  761. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-thinking-budget.handler.js +3 -3
  762. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-thinking-budget.handler.js.map +1 -1
  763. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-thinking-budget.handler.test.js +1 -1
  764. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-thinking-budget.handler.test.js.map +1 -1
  765. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.d.ts +4 -2
  766. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.d.ts.map +1 -1
  767. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.js +5 -10
  768. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.js.map +1 -1
  769. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.test.js +10 -15
  770. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.test.js.map +1 -1
  771. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/stop.handler.d.ts +1 -1
  772. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/stop.handler.js +2 -2
  773. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/stop.handler.js.map +1 -1
  774. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/stop.handler.test.js +1 -3
  775. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/stop.handler.test.js.map +1 -1
  776. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/user-input.handler.d.ts +1 -1
  777. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/user-input.handler.js +1 -1
  778. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/utils.js +1 -1
  779. package/dist/src/backend/services/session/service/chat/chat-message-handlers/registry.d.ts.map +1 -1
  780. package/dist/src/backend/services/session/service/chat/chat-message-handlers/registry.js +3 -2
  781. package/dist/src/backend/services/session/service/chat/chat-message-handlers/registry.js.map +1 -1
  782. package/dist/src/backend/services/session/service/chat/chat-message-handlers/types.d.ts +24 -8
  783. package/dist/src/backend/services/session/service/chat/chat-message-handlers/types.d.ts.map +1 -1
  784. package/dist/src/backend/services/session/service/chat/chat-message-handlers/utils.d.ts +3 -3
  785. package/dist/src/backend/services/session/service/chat/chat-message-handlers/utils.d.ts.map +1 -1
  786. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.d.ts +15 -16
  787. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.d.ts.map +1 -1
  788. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.js +62 -120
  789. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.js.map +1 -1
  790. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.test.js +51 -220
  791. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.test.js.map +1 -1
  792. package/dist/src/backend/services/session/service/data/codex-session-history-loader.service.d.ts.map +1 -1
  793. package/dist/src/backend/services/session/service/data/codex-session-history-loader.service.js +2 -2
  794. package/dist/src/backend/services/session/service/data/session-data.service.d.ts +5 -7
  795. package/dist/src/backend/services/session/service/data/session-data.service.d.ts.map +1 -1
  796. package/dist/src/backend/services/session/service/data/session-data.service.js +2 -8
  797. package/dist/src/backend/services/session/service/data/session-data.service.js.map +1 -1
  798. package/dist/src/backend/services/session/service/data/session-data.service.test.js +1 -7
  799. package/dist/src/backend/services/session/service/data/session-data.service.test.js.map +1 -1
  800. package/dist/src/backend/services/session/service/data/session-history-loader.service.d.ts.map +1 -1
  801. package/dist/src/backend/services/session/service/data/session-history-loader.service.js +3 -3
  802. package/dist/src/backend/services/session/service/data/session-history-loader.service.test.js +1 -1
  803. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.d.ts.map +1 -1
  804. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.js +4 -4
  805. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.test.js +2 -2
  806. package/dist/src/backend/services/session/service/index.d.ts +6 -6
  807. package/dist/src/backend/services/session/service/index.d.ts.map +1 -1
  808. package/dist/src/backend/services/session/service/index.js +4 -3
  809. package/dist/src/backend/services/session/service/index.js.map +1 -1
  810. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.d.ts +47 -0
  811. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.d.ts.map +1 -0
  812. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.js +59 -0
  813. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.js.map +1 -0
  814. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.test.d.ts +2 -0
  815. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.test.d.ts.map +1 -0
  816. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.test.js +82 -0
  817. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.test.js.map +1 -0
  818. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.d.ts +2 -2
  819. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.d.ts.map +1 -1
  820. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.js +16 -7
  821. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.js.map +1 -1
  822. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.slash-commands.test.js.map +1 -1
  823. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.subagents.test.js +47 -0
  824. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.subagents.test.js.map +1 -1
  825. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.text-streaming.test.js +2 -6
  826. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.text-streaming.test.js.map +1 -1
  827. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.tool-timeout.test.js +1 -1
  828. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.tool-timeout.test.js.map +1 -1
  829. package/dist/src/backend/services/session/service/lifecycle/closed-session-persistence.service.d.ts.map +1 -1
  830. package/dist/src/backend/services/session/service/lifecycle/closed-session-persistence.service.js +3 -3
  831. package/dist/src/backend/services/session/service/lifecycle/closed-session-persistence.service.test.js +2 -2
  832. package/dist/src/backend/services/session/service/lifecycle/codex-model-catalog.service.d.ts +13 -0
  833. package/dist/src/backend/services/session/service/lifecycle/codex-model-catalog.service.d.ts.map +1 -0
  834. package/dist/src/backend/services/session/service/lifecycle/codex-model-catalog.service.js +25 -0
  835. package/dist/src/backend/services/session/service/lifecycle/codex-model-catalog.service.js.map +1 -0
  836. package/dist/src/backend/services/session/service/lifecycle/codex-model-catalog.service.test.d.ts +2 -0
  837. package/dist/src/backend/services/session/service/lifecycle/codex-model-catalog.service.test.d.ts.map +1 -0
  838. package/dist/src/backend/services/session/service/lifecycle/codex-model-catalog.service.test.js +111 -0
  839. package/dist/src/backend/services/session/service/lifecycle/codex-model-catalog.service.test.js.map +1 -0
  840. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.d.ts.map +1 -1
  841. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.js +3 -0
  842. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.js.map +1 -1
  843. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.test.d.ts +2 -0
  844. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.test.d.ts.map +1 -0
  845. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.test.js +8 -0
  846. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.test.js.map +1 -0
  847. package/dist/src/backend/services/session/service/lifecycle/session-context.service.d.ts +33 -0
  848. package/dist/src/backend/services/session/service/lifecycle/session-context.service.d.ts.map +1 -0
  849. package/dist/src/backend/services/session/service/lifecycle/session-context.service.js +120 -0
  850. package/dist/src/backend/services/session/service/lifecycle/session-context.service.js.map +1 -0
  851. package/dist/src/backend/services/session/service/lifecycle/session-context.service.test.d.ts +2 -0
  852. package/dist/src/backend/services/session/service/lifecycle/session-context.service.test.d.ts.map +1 -0
  853. package/dist/src/backend/services/session/service/lifecycle/session-context.service.test.js +174 -0
  854. package/dist/src/backend/services/session/service/lifecycle/session-context.service.test.js.map +1 -0
  855. package/dist/src/backend/services/session/service/lifecycle/session-core-services.d.ts +25 -0
  856. package/dist/src/backend/services/session/service/lifecycle/session-core-services.d.ts.map +1 -0
  857. package/dist/src/backend/services/session/service/lifecycle/session-core-services.js +155 -0
  858. package/dist/src/backend/services/session/service/lifecycle/session-core-services.js.map +1 -0
  859. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-event.service.d.ts +2 -2
  860. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-event.service.d.ts.map +1 -1
  861. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-event.service.js +2 -2
  862. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-event.service.js.map +1 -1
  863. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-event.service.test.js +2 -2
  864. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.d.ts +5 -0
  865. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.d.ts.map +1 -0
  866. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.js +38 -0
  867. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.js.map +1 -0
  868. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.test.d.ts +2 -0
  869. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.test.d.ts.map +1 -0
  870. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.test.js +47 -0
  871. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.test.js.map +1 -0
  872. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-gate.d.ts +35 -0
  873. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-gate.d.ts.map +1 -0
  874. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-gate.js +120 -0
  875. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-gate.js.map +1 -0
  876. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-gate.test.d.ts +2 -0
  877. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-gate.test.d.ts.map +1 -0
  878. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-gate.test.js +192 -0
  879. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-gate.test.js.map +1 -0
  880. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.test-helpers.d.ts +115 -0
  881. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.test-helpers.d.ts.map +1 -0
  882. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.test-helpers.js +434 -0
  883. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.test-helpers.js.map +1 -0
  884. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.types.d.ts +13 -0
  885. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.types.d.ts.map +1 -0
  886. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.types.js +2 -0
  887. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.types.js.map +1 -0
  888. package/dist/src/backend/services/session/service/lifecycle/session-notification-delivery.service.d.ts +81 -0
  889. package/dist/src/backend/services/session/service/lifecycle/session-notification-delivery.service.d.ts.map +1 -0
  890. package/dist/src/backend/services/session/service/lifecycle/session-notification-delivery.service.js +242 -0
  891. package/dist/src/backend/services/session/service/lifecycle/session-notification-delivery.service.js.map +1 -0
  892. package/dist/src/backend/services/session/service/lifecycle/session-notification-delivery.service.test.d.ts +2 -0
  893. package/dist/src/backend/services/session/service/lifecycle/session-notification-delivery.service.test.d.ts.map +1 -0
  894. package/dist/src/backend/services/session/service/lifecycle/session-notification-delivery.service.test.js +528 -0
  895. package/dist/src/backend/services/session/service/lifecycle/session-notification-delivery.service.test.js.map +1 -0
  896. package/dist/src/backend/services/session/service/lifecycle/session-pr-discovery.service.d.ts +2 -2
  897. package/dist/src/backend/services/session/service/lifecycle/session-pr-discovery.service.test.js +1 -1
  898. package/dist/src/backend/services/session/service/lifecycle/session-provider-history-hydrator.js +6 -6
  899. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.d.ts +38 -0
  900. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.d.ts.map +1 -0
  901. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.js +189 -0
  902. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.js.map +1 -0
  903. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.test.d.ts +2 -0
  904. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.test.d.ts.map +1 -0
  905. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.test.js +282 -0
  906. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.test.js.map +1 -0
  907. package/dist/src/backend/services/session/service/lifecycle/session-services.composition.test.d.ts +2 -0
  908. package/dist/src/backend/services/session/service/lifecycle/session-services.composition.test.d.ts.map +1 -0
  909. package/dist/src/backend/services/session/service/lifecycle/session-services.composition.test.js +105 -0
  910. package/dist/src/backend/services/session/service/lifecycle/session-services.composition.test.js.map +1 -0
  911. package/dist/src/backend/services/session/service/lifecycle/session-services.d.ts +5 -17
  912. package/dist/src/backend/services/session/service/lifecycle/session-services.d.ts.map +1 -1
  913. package/dist/src/backend/services/session/service/lifecycle/session-services.js +14 -87
  914. package/dist/src/backend/services/session/service/lifecycle/session-services.js.map +1 -1
  915. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.d.ts +64 -0
  916. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.d.ts.map +1 -0
  917. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.js +351 -0
  918. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.js.map +1 -0
  919. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.test.d.ts +2 -0
  920. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.test.d.ts.map +1 -0
  921. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.test.js +702 -0
  922. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.test.js.map +1 -0
  923. package/dist/src/backend/services/session/service/lifecycle/session-termination.coordinator.d.ts +54 -0
  924. package/dist/src/backend/services/session/service/lifecycle/session-termination.coordinator.d.ts.map +1 -0
  925. package/dist/src/backend/services/session/service/lifecycle/session-termination.coordinator.js +265 -0
  926. package/dist/src/backend/services/session/service/lifecycle/session-termination.coordinator.js.map +1 -0
  927. package/dist/src/backend/services/session/service/lifecycle/session-termination.coordinator.test.d.ts +2 -0
  928. package/dist/src/backend/services/session/service/lifecycle/session-termination.coordinator.test.d.ts.map +1 -0
  929. package/dist/src/backend/services/session/service/lifecycle/session-termination.coordinator.test.js +514 -0
  930. package/dist/src/backend/services/session/service/lifecycle/session-termination.coordinator.test.js.map +1 -0
  931. package/dist/src/backend/services/session/service/lifecycle/session-workflow-finalizer.d.ts +62 -0
  932. package/dist/src/backend/services/session/service/lifecycle/session-workflow-finalizer.d.ts.map +1 -0
  933. package/dist/src/backend/services/session/service/lifecycle/session-workflow-finalizer.js +175 -0
  934. package/dist/src/backend/services/session/service/lifecycle/session-workflow-finalizer.js.map +1 -0
  935. package/dist/src/backend/services/session/service/lifecycle/session-workflow-finalizer.test.d.ts +2 -0
  936. package/dist/src/backend/services/session/service/lifecycle/session-workflow-finalizer.test.d.ts.map +1 -0
  937. package/dist/src/backend/services/session/service/lifecycle/session-workflow-finalizer.test.js +294 -0
  938. package/dist/src/backend/services/session/service/lifecycle/session-workflow-finalizer.test.js.map +1 -0
  939. package/dist/src/backend/services/session/service/lifecycle/session.config-validation.test.d.ts +2 -0
  940. package/dist/src/backend/services/session/service/lifecycle/session.config-validation.test.d.ts.map +1 -0
  941. package/dist/src/backend/services/session/service/lifecycle/session.config-validation.test.js +92 -0
  942. package/dist/src/backend/services/session/service/lifecycle/session.config-validation.test.js.map +1 -0
  943. package/dist/src/backend/services/session/service/lifecycle/session.config.service.cached-options.test.d.ts +2 -0
  944. package/dist/src/backend/services/session/service/lifecycle/session.config.service.cached-options.test.d.ts.map +1 -0
  945. package/dist/src/backend/services/session/service/lifecycle/session.config.service.cached-options.test.js +41 -0
  946. package/dist/src/backend/services/session/service/lifecycle/session.config.service.cached-options.test.js.map +1 -0
  947. package/dist/src/backend/services/session/service/lifecycle/session.config.service.d.ts +6 -7
  948. package/dist/src/backend/services/session/service/lifecycle/session.config.service.d.ts.map +1 -1
  949. package/dist/src/backend/services/session/service/lifecycle/session.config.service.js +23 -79
  950. package/dist/src/backend/services/session/service/lifecycle/session.config.service.js.map +1 -1
  951. package/dist/src/backend/services/session/service/lifecycle/session.config.service.test.js +10 -12
  952. package/dist/src/backend/services/session/service/lifecycle/session.config.service.test.js.map +1 -1
  953. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.facade.test.d.ts +2 -0
  954. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.facade.test.d.ts.map +1 -0
  955. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.facade.test.js +431 -0
  956. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.facade.test.js.map +1 -0
  957. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.d.ts +28 -120
  958. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.d.ts.map +1 -1
  959. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.js +47 -1168
  960. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.js.map +1 -1
  961. package/dist/src/backend/services/session/service/lifecycle/session.permission.service.d.ts +2 -2
  962. package/dist/src/backend/services/session/service/lifecycle/session.permission.service.d.ts.map +1 -1
  963. package/dist/src/backend/services/session/service/lifecycle/session.permission.service.js +6 -3
  964. package/dist/src/backend/services/session/service/lifecycle/session.permission.service.js.map +1 -1
  965. package/dist/src/backend/services/session/service/lifecycle/session.permission.service.test.js +21 -0
  966. package/dist/src/backend/services/session/service/lifecycle/session.permission.service.test.js.map +1 -1
  967. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.d.ts.map +1 -1
  968. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.js +2 -2
  969. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.js.map +1 -1
  970. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.test.js +2 -2
  971. package/dist/src/backend/services/session/service/lifecycle/session.prompt-turn-completion.service.d.ts.map +1 -1
  972. package/dist/src/backend/services/session/service/lifecycle/session.prompt-turn-completion.service.js +1 -1
  973. package/dist/src/backend/services/session/service/lifecycle/session.prompt.service.test.js +13 -8
  974. package/dist/src/backend/services/session/service/lifecycle/session.prompt.service.test.js.map +1 -1
  975. package/dist/src/backend/services/session/service/lifecycle/session.repository.d.ts +1 -1
  976. package/dist/src/backend/services/session/service/lifecycle/session.repository.d.ts.map +1 -1
  977. package/dist/src/backend/services/session/service/lifecycle/session.repository.js +2 -2
  978. package/dist/src/backend/services/session/service/lifecycle/session.repository.js.map +1 -1
  979. package/dist/src/backend/services/session/service/lifecycle/session.retry.service.d.ts.map +1 -1
  980. package/dist/src/backend/services/session/service/lifecycle/session.retry.service.js +1 -1
  981. package/dist/src/backend/services/session/service/lifecycle/session.service.d.ts +6 -9
  982. package/dist/src/backend/services/session/service/lifecycle/session.service.d.ts.map +1 -1
  983. package/dist/src/backend/services/session/service/lifecycle/session.service.js +11 -14
  984. package/dist/src/backend/services/session/service/lifecycle/session.service.js.map +1 -1
  985. package/dist/src/backend/services/session/service/lifecycle/session.service.test.js +71 -55
  986. package/dist/src/backend/services/session/service/lifecycle/session.service.test.js.map +1 -1
  987. package/dist/src/backend/services/session/service/logging/acp-trace-logger.service.d.ts.map +1 -1
  988. package/dist/src/backend/services/session/service/logging/acp-trace-logger.service.js +2 -2
  989. package/dist/src/backend/services/session/service/logging/acp-trace-logger.service.test.js +1 -1
  990. package/dist/src/backend/services/session/service/logging/session-file-logger.service.d.ts.map +1 -1
  991. package/dist/src/backend/services/session/service/logging/session-file-logger.service.js +2 -2
  992. package/dist/src/backend/services/session/service/logging/session-file-logger.service.js.map +1 -1
  993. package/dist/src/backend/services/session/service/session-domain.service.d.ts.map +1 -1
  994. package/dist/src/backend/services/session/service/session-domain.service.js +1 -1
  995. package/dist/src/backend/services/session/service/session-domain.service.test.js +2 -2
  996. package/dist/src/backend/services/session/service/session-event-bus.d.ts.map +1 -1
  997. package/dist/src/backend/services/session/service/store/session-lifecycle-transcript.d.ts +1 -1
  998. package/dist/src/backend/services/session/service/store/session-publisher.d.ts.map +1 -1
  999. package/dist/src/backend/services/session/service/store/session-publisher.js +2 -2
  1000. package/dist/src/backend/services/session/service/store/session-queue.js +1 -1
  1001. package/dist/src/backend/services/session/service/store/session-queue.test.js +1 -1
  1002. package/dist/src/backend/services/session/service/store/session-runtime-machine.d.ts.map +1 -1
  1003. package/dist/src/backend/services/session/service/store/session-runtime-machine.js.map +1 -1
  1004. package/dist/src/backend/services/session/service/store/session-store-registry.d.ts.map +1 -1
  1005. package/dist/src/backend/services/session/service/store/session-tool-call-recovery.d.ts +3 -0
  1006. package/dist/src/backend/services/session/service/store/session-tool-call-recovery.d.ts.map +1 -0
  1007. package/dist/src/backend/services/session/service/store/session-tool-call-recovery.js +94 -0
  1008. package/dist/src/backend/services/session/service/store/session-tool-call-recovery.js.map +1 -0
  1009. package/dist/src/backend/services/session/service/store/session-tool-call-recovery.test.d.ts +2 -0
  1010. package/dist/src/backend/services/session/service/store/session-tool-call-recovery.test.d.ts.map +1 -0
  1011. package/dist/src/backend/services/session/service/store/session-tool-call-recovery.test.js +92 -0
  1012. package/dist/src/backend/services/session/service/store/session-tool-call-recovery.test.js.map +1 -0
  1013. package/dist/src/backend/services/session/service/store/session-transcript.js +2 -2
  1014. package/dist/src/backend/services/session/service/store/session-transcript.js.map +1 -1
  1015. package/dist/src/backend/services/session/service/store/slash-command-cache.service.d.ts.map +1 -1
  1016. package/dist/src/backend/services/session/service/store/slash-command-cache.service.js +2 -2
  1017. package/dist/src/backend/services/session/service/store/slash-command-cache.service.test.js +1 -1
  1018. package/dist/src/backend/services/session/service/store/slash-command-disk-scanner.js.map +1 -1
  1019. package/dist/src/backend/services/session/service/voice/voice-narration.service.d.ts.map +1 -1
  1020. package/dist/src/backend/services/session/service/voice/voice-narration.service.js +6 -6
  1021. package/dist/src/backend/services/session/service/voice/voice-narration.service.js.map +1 -1
  1022. package/dist/src/backend/services/session/service/voice/voice-narration.service.test.js +1 -1
  1023. package/dist/src/backend/services/session/service/voice/voice-narration.service.test.js.map +1 -1
  1024. package/dist/src/backend/services/settings/resources/data-backup.accessor.d.ts.map +1 -1
  1025. package/dist/src/backend/services/settings/resources/data-backup.accessor.js +1 -1
  1026. package/dist/src/backend/services/settings/resources/health.accessor.d.ts.map +1 -1
  1027. package/dist/src/backend/services/settings/resources/health.accessor.js +1 -1
  1028. package/dist/src/backend/services/settings/resources/user-settings.accessor.d.ts.map +1 -1
  1029. package/dist/src/backend/services/settings/resources/user-settings.accessor.js +2 -2
  1030. package/dist/src/backend/services/settings/service/health.service.d.ts.map +1 -1
  1031. package/dist/src/backend/services/settings/service/health.service.js +1 -1
  1032. package/dist/src/backend/services/settings/service/settings-domain-exports.test.js +1 -1
  1033. package/dist/src/backend/services/settings/service/user-settings.service.d.ts.map +1 -1
  1034. package/dist/src/backend/services/settings/service/user-settings.service.js +1 -1
  1035. package/dist/src/backend/services/terminal/resources/terminal-session.accessor.d.ts.map +1 -1
  1036. package/dist/src/backend/services/terminal/resources/terminal-session.accessor.js +1 -1
  1037. package/dist/src/backend/services/terminal/service/terminal-session.service.d.ts +7 -7
  1038. package/dist/src/backend/services/terminal/service/terminal-session.service.d.ts.map +1 -1
  1039. package/dist/src/backend/services/terminal/service/terminal-session.service.js +2 -2
  1040. package/dist/src/backend/services/terminal/service/terminal-session.service.test.js +1 -1
  1041. package/dist/src/backend/services/terminal/service/terminal.service.d.ts.map +1 -1
  1042. package/dist/src/backend/services/terminal/service/terminal.service.js +2 -2
  1043. package/dist/src/backend/services/terminal/service/terminal.service.js.map +1 -1
  1044. package/dist/src/backend/services/workspace/resources/project.accessor.d.ts +3 -4
  1045. package/dist/src/backend/services/workspace/resources/project.accessor.d.ts.map +1 -1
  1046. package/dist/src/backend/services/workspace/resources/project.accessor.js +2 -15
  1047. package/dist/src/backend/services/workspace/resources/project.accessor.js.map +1 -1
  1048. package/dist/src/backend/services/workspace/resources/workspace-auto-iteration.accessor.d.ts.map +1 -1
  1049. package/dist/src/backend/services/workspace/resources/workspace-auto-iteration.accessor.js +1 -1
  1050. package/dist/src/backend/services/workspace/resources/workspace-notification.accessor.d.ts.map +1 -1
  1051. package/dist/src/backend/services/workspace/resources/workspace-notification.accessor.js +1 -1
  1052. package/dist/src/backend/services/workspace/resources/workspace-pr.accessor.d.ts +1 -1
  1053. package/dist/src/backend/services/workspace/resources/workspace-pr.accessor.d.ts.map +1 -1
  1054. package/dist/src/backend/services/workspace/resources/workspace-pr.accessor.js +1 -1
  1055. package/dist/src/backend/services/workspace/resources/workspace-ratchet.accessor.d.ts.map +1 -1
  1056. package/dist/src/backend/services/workspace/resources/workspace-ratchet.accessor.js +2 -2
  1057. package/dist/src/backend/services/workspace/resources/workspace-ratchet.accessor.test.js.map +1 -1
  1058. package/dist/src/backend/services/workspace/resources/workspace-run-script.accessor.d.ts.map +1 -1
  1059. package/dist/src/backend/services/workspace/resources/workspace-run-script.accessor.js +1 -1
  1060. package/dist/src/backend/services/workspace/resources/workspace.accessor.d.ts +5 -6
  1061. package/dist/src/backend/services/workspace/resources/workspace.accessor.d.ts.map +1 -1
  1062. package/dist/src/backend/services/workspace/resources/workspace.accessor.js +5 -15
  1063. package/dist/src/backend/services/workspace/resources/workspace.accessor.js.map +1 -1
  1064. package/dist/src/backend/services/workspace/resources/workspace.accessor.test.js +3 -8
  1065. package/dist/src/backend/services/workspace/resources/workspace.accessor.test.js.map +1 -1
  1066. package/dist/src/backend/services/workspace/service/index.d.ts +9 -10
  1067. package/dist/src/backend/services/workspace/service/index.d.ts.map +1 -1
  1068. package/dist/src/backend/services/workspace/service/index.js +5 -5
  1069. package/dist/src/backend/services/workspace/service/index.js.map +1 -1
  1070. package/dist/src/backend/services/workspace/service/lifecycle/activity.service.d.ts +1 -0
  1071. package/dist/src/backend/services/workspace/service/lifecycle/activity.service.d.ts.map +1 -1
  1072. package/dist/src/backend/services/workspace/service/lifecycle/activity.service.js +24 -9
  1073. package/dist/src/backend/services/workspace/service/lifecycle/activity.service.js.map +1 -1
  1074. package/dist/src/backend/services/workspace/service/lifecycle/activity.service.test.js +140 -2
  1075. package/dist/src/backend/services/workspace/service/lifecycle/activity.service.test.js.map +1 -1
  1076. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.d.ts +3 -3
  1077. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.d.ts.map +1 -1
  1078. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.js +6 -6
  1079. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.js.map +1 -1
  1080. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.test.js +6 -6
  1081. package/dist/src/backend/services/workspace/service/lifecycle/data.service.d.ts +119 -119
  1082. package/dist/src/backend/services/workspace/service/lifecycle/data.service.d.ts.map +1 -1
  1083. package/dist/src/backend/services/workspace/service/lifecycle/data.service.js +3 -3
  1084. package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.d.ts +1 -1
  1085. package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.d.ts.map +1 -1
  1086. package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.js +2 -2
  1087. package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.js.map +1 -1
  1088. package/dist/src/backend/services/workspace/service/lifecycle/workspace-auto-iteration.service.d.ts +2 -2
  1089. package/dist/src/backend/services/workspace/service/lifecycle/workspace-auto-iteration.service.d.ts.map +1 -1
  1090. package/dist/src/backend/services/workspace/service/lifecycle/workspace-auto-iteration.service.js +1 -1
  1091. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.d.ts +5 -5
  1092. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.d.ts.map +1 -1
  1093. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.js +2 -2
  1094. package/dist/src/backend/services/workspace/service/lifecycle/workspace-ratchet.service.d.ts +2 -2
  1095. package/dist/src/backend/services/workspace/service/lifecycle/workspace-ratchet.service.d.ts.map +1 -1
  1096. package/dist/src/backend/services/workspace/service/lifecycle/workspace-ratchet.service.js +1 -1
  1097. package/dist/src/backend/services/workspace/service/lifecycle/workspace-relationships.service.d.ts +76 -76
  1098. package/dist/src/backend/services/workspace/service/lifecycle/workspace-relationships.service.d.ts.map +1 -1
  1099. package/dist/src/backend/services/workspace/service/lifecycle/workspace-relationships.service.js +1 -1
  1100. package/dist/src/backend/services/workspace/service/lifecycle/workspace-run-script.service.d.ts +2 -2
  1101. package/dist/src/backend/services/workspace/service/lifecycle/workspace-run-script.service.d.ts.map +1 -1
  1102. package/dist/src/backend/services/workspace/service/lifecycle/workspace-run-script.service.js +1 -1
  1103. package/dist/src/backend/services/workspace/service/lifecycle/workspace-state-capabilities.test.js +2 -2
  1104. package/dist/src/backend/services/workspace/service/pr-discovery-schedule.js.map +1 -1
  1105. package/dist/src/backend/services/workspace/service/query/project-management.service.d.ts +16 -16
  1106. package/dist/src/backend/services/workspace/service/query/project-management.service.d.ts.map +1 -1
  1107. package/dist/src/backend/services/workspace/service/query/project-management.service.js +1 -1
  1108. package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.d.ts +118 -118
  1109. package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.d.ts.map +1 -1
  1110. package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.js +2 -2
  1111. package/dist/src/backend/services/workspace/service/query/workspace-notification.service.d.ts +12 -12
  1112. package/dist/src/backend/services/workspace/service/query/workspace-notification.service.d.ts.map +1 -1
  1113. package/dist/src/backend/services/workspace/service/query/workspace-notification.service.js +1 -1
  1114. package/dist/src/backend/services/workspace/service/query/workspace-notification.service.test.js +1 -1
  1115. package/dist/src/backend/services/workspace/service/query/workspace-query.service.d.ts +7 -7
  1116. package/dist/src/backend/services/workspace/service/query/workspace-query.service.d.ts.map +1 -1
  1117. package/dist/src/backend/services/workspace/service/query/workspace-query.service.js +10 -10
  1118. package/dist/src/backend/services/workspace/service/query/workspace-query.service.test.js +2 -2
  1119. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.d.ts +2 -2
  1120. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.d.ts.map +1 -1
  1121. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.js +8 -5
  1122. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.js.map +1 -1
  1123. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.test.js +5 -5
  1124. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.test.js.map +1 -1
  1125. package/dist/src/backend/services/workspace/service/workspace-domain-exports.test.js +1 -7
  1126. package/dist/src/backend/services/workspace/service/workspace-domain-exports.test.js.map +1 -1
  1127. package/dist/src/backend/services/workspace/service/worktree/git-clone.service.d.ts.map +1 -1
  1128. package/dist/src/backend/services/workspace/service/worktree/git-clone.service.js +4 -4
  1129. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.d.ts +1 -1
  1130. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.d.ts.map +1 -1
  1131. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.js +18 -6
  1132. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.js.map +1 -1
  1133. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.test.js +35 -2
  1134. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.test.js.map +1 -1
  1135. package/dist/src/backend/services/workspace/service/worktree/git-ops.symlink.integration.test.d.ts +2 -0
  1136. package/dist/src/backend/services/workspace/service/worktree/git-ops.symlink.integration.test.d.ts.map +1 -0
  1137. package/dist/src/backend/services/workspace/service/worktree/git-ops.symlink.integration.test.js +47 -0
  1138. package/dist/src/backend/services/workspace/service/worktree/git-ops.symlink.integration.test.js.map +1 -0
  1139. package/dist/src/backend/services/workspace/service/worktree/worktree-init.test.js +1 -1
  1140. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.d.ts +1 -1
  1141. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.d.ts.map +1 -1
  1142. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.js +3 -3
  1143. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.js.map +1 -1
  1144. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.test.js +2 -2
  1145. package/dist/src/backend/services/workspace-depth-triggers.integration.test.js +1 -1
  1146. package/dist/src/backend/services/workspace-git-state.service.d.ts +8 -2
  1147. package/dist/src/backend/services/workspace-git-state.service.d.ts.map +1 -1
  1148. package/dist/src/backend/services/workspace-git-state.service.js +110 -8
  1149. package/dist/src/backend/services/workspace-git-state.service.js.map +1 -1
  1150. package/dist/src/backend/services/workspace-git-state.service.test.js +99 -3
  1151. package/dist/src/backend/services/workspace-git-state.service.test.js.map +1 -1
  1152. package/dist/src/backend/testing/check-prisma-generated-drift-script.test.js.map +1 -1
  1153. package/dist/src/backend/testing/check-prisma-versions-script.test.js.map +1 -1
  1154. package/dist/src/backend/testing/integration-db.js +1 -1
  1155. package/dist/src/backend/testing/npm-publish-workflow.test.d.ts +2 -0
  1156. package/dist/src/backend/testing/npm-publish-workflow.test.d.ts.map +1 -0
  1157. package/dist/src/backend/testing/npm-publish-workflow.test.js +217 -0
  1158. package/dist/src/backend/testing/npm-publish-workflow.test.js.map +1 -0
  1159. package/dist/src/backend/trpc/admin.trpc.d.ts +41 -41
  1160. package/dist/src/backend/trpc/admin.trpc.d.ts.map +1 -1
  1161. package/dist/src/backend/trpc/application-error-mapper.d.ts +1 -1
  1162. package/dist/src/backend/trpc/application-error-mapper.test.js +2 -2
  1163. package/dist/src/backend/trpc/application-error-mapper.test.js.map +1 -1
  1164. package/dist/src/backend/trpc/auto-iteration.trpc.d.ts +4 -4
  1165. package/dist/src/backend/trpc/closed-sessions.trpc.d.ts +9 -9
  1166. package/dist/src/backend/trpc/context-dependencies.test.js +9 -9
  1167. package/dist/src/backend/trpc/decision-log.trpc.d.ts +12 -12
  1168. package/dist/src/backend/trpc/github.trpc.d.ts +7 -7
  1169. package/dist/src/backend/trpc/github.trpc.js +1 -1
  1170. package/dist/src/backend/trpc/index.d.ts +565 -581
  1171. package/dist/src/backend/trpc/index.d.ts.map +1 -1
  1172. package/dist/src/backend/trpc/linear.trpc.d.ts +3 -3
  1173. package/dist/src/backend/trpc/model-catalog.integration.test.d.ts +2 -0
  1174. package/dist/src/backend/trpc/model-catalog.integration.test.d.ts.map +1 -0
  1175. package/dist/src/backend/trpc/model-catalog.integration.test.js +91 -0
  1176. package/dist/src/backend/trpc/model-catalog.integration.test.js.map +1 -0
  1177. package/dist/src/backend/trpc/periodic-task.trpc.d.ts +26 -26
  1178. package/dist/src/backend/trpc/pr-review.router.test.js +1 -12
  1179. package/dist/src/backend/trpc/pr-review.router.test.js.map +1 -1
  1180. package/dist/src/backend/trpc/pr-review.trpc.d.ts +4 -20
  1181. package/dist/src/backend/trpc/pr-review.trpc.d.ts.map +1 -1
  1182. package/dist/src/backend/trpc/pr-review.trpc.js +0 -14
  1183. package/dist/src/backend/trpc/pr-review.trpc.js.map +1 -1
  1184. package/dist/src/backend/trpc/project.router.test.js.map +1 -1
  1185. package/dist/src/backend/trpc/project.trpc.d.ts +68 -68
  1186. package/dist/src/backend/trpc/project.trpc.d.ts.map +1 -1
  1187. package/dist/src/backend/trpc/project.trpc.js +3 -3
  1188. package/dist/src/backend/trpc/session.router.test.js +13 -37
  1189. package/dist/src/backend/trpc/session.router.test.js.map +1 -1
  1190. package/dist/src/backend/trpc/session.trpc.d.ts +174 -174
  1191. package/dist/src/backend/trpc/session.trpc.js +2 -2
  1192. package/dist/src/backend/trpc/trpc.d.ts +5 -5
  1193. package/dist/src/backend/trpc/trpc.d.ts.map +1 -1
  1194. package/dist/src/backend/trpc/trpc.js +2 -2
  1195. package/dist/src/backend/trpc/trpc.test.js +1 -1
  1196. package/dist/src/backend/trpc/user-settings.router.test.js +11 -9
  1197. package/dist/src/backend/trpc/user-settings.router.test.js.map +1 -1
  1198. package/dist/src/backend/trpc/user-settings.trpc.d.ts +19 -19
  1199. package/dist/src/backend/trpc/user-settings.trpc.js +4 -4
  1200. package/dist/src/backend/trpc/user-settings.trpc.js.map +1 -1
  1201. package/dist/src/backend/trpc/voice.trpc.d.ts +3 -3
  1202. package/dist/src/backend/trpc/workspace/children.trpc.d.ts +7 -7
  1203. package/dist/src/backend/trpc/workspace/children.trpc.js +4 -4
  1204. package/dist/src/backend/trpc/workspace/composition.test.js +1 -1
  1205. package/dist/src/backend/trpc/workspace/composition.test.js.map +1 -1
  1206. package/dist/src/backend/trpc/workspace/files.preview.router.test.d.ts +2 -0
  1207. package/dist/src/backend/trpc/workspace/files.preview.router.test.d.ts.map +1 -0
  1208. package/dist/src/backend/trpc/workspace/files.preview.router.test.js +196 -0
  1209. package/dist/src/backend/trpc/workspace/files.preview.router.test.js.map +1 -0
  1210. package/dist/src/backend/trpc/workspace/files.trpc.d.ts +5 -5
  1211. package/dist/src/backend/trpc/workspace/files.trpc.d.ts.map +1 -1
  1212. package/dist/src/backend/trpc/workspace/files.trpc.js +9 -23
  1213. package/dist/src/backend/trpc/workspace/files.trpc.js.map +1 -1
  1214. package/dist/src/backend/trpc/workspace/git.router.test.js +72 -1
  1215. package/dist/src/backend/trpc/workspace/git.router.test.js.map +1 -1
  1216. package/dist/src/backend/trpc/workspace/git.trpc.d.ts +7 -7
  1217. package/dist/src/backend/trpc/workspace/git.trpc.d.ts.map +1 -1
  1218. package/dist/src/backend/trpc/workspace/git.trpc.js +34 -15
  1219. package/dist/src/backend/trpc/workspace/git.trpc.js.map +1 -1
  1220. package/dist/src/backend/trpc/workspace/ide.trpc.d.ts +4 -4
  1221. package/dist/src/backend/trpc/workspace/ide.trpc.js +2 -2
  1222. package/dist/src/backend/trpc/workspace/init.trpc.d.ts +42 -42
  1223. package/dist/src/backend/trpc/workspace/init.trpc.js +3 -3
  1224. package/dist/src/backend/trpc/workspace/run-script.trpc.d.ts +4 -4
  1225. package/dist/src/backend/trpc/workspace/run-script.trpc.js +1 -1
  1226. package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts +71 -71
  1227. package/dist/src/backend/trpc/workspace.router.test.js +42 -3
  1228. package/dist/src/backend/trpc/workspace.router.test.js.map +1 -1
  1229. package/dist/src/backend/trpc/workspace.trpc.d.ts +342 -342
  1230. package/dist/src/backend/trpc/workspace.trpc.d.ts.map +1 -1
  1231. package/dist/src/backend/trpc/workspace.trpc.js +18 -7
  1232. package/dist/src/backend/trpc/workspace.trpc.js.map +1 -1
  1233. package/dist/src/cli/database-path.js.map +1 -1
  1234. package/dist/src/cli/index.js.map +1 -1
  1235. package/dist/src/cli/proxy.d.ts.map +1 -1
  1236. package/dist/src/cli/proxy.js.map +1 -1
  1237. package/dist/src/cli/runtime-utils.js.map +1 -1
  1238. package/dist/src/cli/runtime-utils.test.js +1 -3
  1239. package/dist/src/cli/runtime-utils.test.js.map +1 -1
  1240. package/dist/src/cli/serve-env.js.map +1 -1
  1241. package/dist/src/cli/serve-env.test.js +1 -5
  1242. package/dist/src/cli/serve-env.test.js.map +1 -1
  1243. package/dist/src/lib/chat-protocol.d.ts +72 -0
  1244. package/dist/src/lib/chat-protocol.d.ts.map +1 -0
  1245. package/dist/src/lib/chat-protocol.js +514 -0
  1246. package/dist/src/lib/chat-protocol.js.map +1 -0
  1247. package/dist/src/shared/acp-protocol/index.d.ts +1 -1
  1248. package/dist/src/shared/acp-protocol/index.js +1 -1
  1249. package/dist/src/shared/acp-protocol/protocol/guards.js +1 -1
  1250. package/dist/src/shared/acp-protocol/protocol/guards.js.map +1 -1
  1251. package/dist/src/shared/acp-protocol/protocol/index.d.ts +1 -1
  1252. package/dist/src/shared/acp-protocol/protocol/messages.d.ts +2 -2
  1253. package/dist/src/shared/acp-protocol/protocol/websocket.d.ts +7 -7
  1254. package/dist/src/shared/acp-protocol/protocol/websocket.d.ts.map +1 -1
  1255. package/dist/src/shared/acp-protocol/session-update-translator.d.ts.map +1 -1
  1256. package/dist/src/shared/acp-protocol/session-update-translator.js.map +1 -1
  1257. package/dist/src/shared/acp-protocol/subagents.d.ts +92 -92
  1258. package/dist/src/shared/core/enums.d.ts +84 -84
  1259. package/dist/src/shared/core/enums.d.ts.map +1 -1
  1260. package/dist/src/shared/core/workspace-sidebar-status.d.ts +2 -2
  1261. package/dist/src/shared/core/workspace-sidebar-status.d.ts.map +1 -1
  1262. package/dist/src/shared/kanban-column-projection.d.ts +2 -2
  1263. package/dist/src/shared/kanban-column-projection.js +1 -1
  1264. package/dist/src/shared/pending-request-types.d.ts +1 -1
  1265. package/dist/src/shared/pending-request-types.d.ts.map +1 -1
  1266. package/dist/src/shared/proxy-utils.d.ts +1 -1
  1267. package/dist/src/shared/proxy-utils.d.ts.map +1 -1
  1268. package/dist/src/shared/schemas/auto-iteration.schema.d.ts +10 -10
  1269. package/dist/src/shared/schemas/export-data.schema.d.ts +51 -51
  1270. package/dist/src/shared/schemas/export-data.schema.d.ts.map +1 -1
  1271. package/dist/src/shared/schemas/export-data.schema.js +4 -4
  1272. package/dist/src/shared/schemas/export-data.schema.js.map +1 -1
  1273. package/dist/src/shared/session-runtime.d.ts +4 -4
  1274. package/dist/src/shared/session-runtime.d.ts.map +1 -1
  1275. package/dist/src/shared/websocket/chat-message.schema.d.ts +2 -2
  1276. package/dist/src/shared/workspace-flow-state.d.ts +2 -2
  1277. package/dist/src/shared/workspace-flow-state.d.ts.map +1 -1
  1278. package/dist/src/shared/workspace-sidebar-status.d.ts +1 -1
  1279. package/dist/src/shared/workspace-sidebar-status.js +1 -1
  1280. package/dist/src/shared/workspace-snapshot.d.ts +433 -427
  1281. package/dist/src/shared/workspace-snapshot.d.ts.map +1 -1
  1282. package/dist/src/shared/workspace-snapshot.js +6 -4
  1283. package/dist/src/shared/workspace-snapshot.js.map +1 -1
  1284. package/dist/src/shared/workspace-status-reason.d.ts +5 -5
  1285. package/dist/src/shared/workspace-status-reason.d.ts.map +1 -1
  1286. package/dist/src/test-utils/application-graph.d.ts +3 -3
  1287. package/dist/src/test-utils/application-graph.d.ts.map +1 -1
  1288. package/dist/src/test-utils/application-graph.js +4 -3
  1289. package/dist/src/test-utils/application-graph.js.map +1 -1
  1290. package/dist/tsconfig.backend.tsbuildinfo +1 -1
  1291. package/package.json +59 -70
  1292. package/scripts/postinstall.mjs +6 -2
  1293. package/dist/client/assets/abnfDiagram-N423BO3Z-BcUuFtOj.js +0 -1
  1294. package/dist/client/assets/arc-Cp8_E6ha.js +0 -1
  1295. package/dist/client/assets/architectureDiagram-T3A2C74G-C3_2J0tC.js +0 -36
  1296. package/dist/client/assets/blockDiagram-VBNYF7ZC-Dy0jc6lP.js +0 -132
  1297. package/dist/client/assets/c4Diagram-5PPSVZJV-97TkD6w-.js +0 -10
  1298. package/dist/client/assets/channel-DLBBfejH.js +0 -1
  1299. package/dist/client/assets/chunk-2GRJ4B5K-Dc0I7ume.js +0 -1
  1300. package/dist/client/assets/chunk-2Q5K7J3B-DbFPWZwu.js +0 -1
  1301. package/dist/client/assets/chunk-5RXB4S5H-Dci_7ZDD.js +0 -231
  1302. package/dist/client/assets/chunk-6Q2QTUOP-Be2f5Q2t.js +0 -88
  1303. package/dist/client/assets/chunk-GF5L2VYU-C4VRs6xS.js +0 -206
  1304. package/dist/client/assets/chunk-JWPE2WC7-DVlW0c7f.js +0 -1
  1305. package/dist/client/assets/chunk-KBJHAD2P-BKRpW89b.js +0 -1
  1306. package/dist/client/assets/chunk-RYQCIY6F-BwMw9oh9.js +0 -1
  1307. package/dist/client/assets/chunk-XXDRQBXY-py-FQquv.js +0 -1
  1308. package/dist/client/assets/classDiagram-JCYQIIEL-Ds5wVQR3.js +0 -1
  1309. package/dist/client/assets/classDiagram-v2-OCEON4UE-Ds5wVQR3.js +0 -1
  1310. package/dist/client/assets/cose-bilkent-JH36ORCC-BMCtQCZ8.js +0 -1
  1311. package/dist/client/assets/cynefin-VYW2F7L2-BTHAy6wD.js +0 -166
  1312. package/dist/client/assets/cynefinDiagram-MW4NZA55-pQCQD0Ih.js +0 -62
  1313. package/dist/client/assets/cytoscape.esm-D3_iZ_3b.js +0 -321
  1314. package/dist/client/assets/dagre-VZM6K2ZE-CZcoEFVf.js +0 -4
  1315. package/dist/client/assets/defaultLocale-DX6XiGOO.js +0 -1
  1316. package/dist/client/assets/diagram-7IWD3JNH-DgQv_208.js +0 -30
  1317. package/dist/client/assets/diagram-B4RE2ZJO-DoFotcsB.js +0 -3
  1318. package/dist/client/assets/diagram-LBJQPF4R-C5zkL1ml.js +0 -24
  1319. package/dist/client/assets/diagram-Q27KOJAE-ERKqnoHP.js +0 -24
  1320. package/dist/client/assets/diagram-UB23O5K3-Dyt6sy3Z.js +0 -41
  1321. package/dist/client/assets/ebnfDiagram-BXEA7PRR-DqsFEAw2.js +0 -1
  1322. package/dist/client/assets/erDiagram-JOGREHBK-Dn8Aqkgn.js +0 -85
  1323. package/dist/client/assets/flowDiagram-UKHOOZJN-DcArGyH-.js +0 -156
  1324. package/dist/client/assets/ganttDiagram-PKOTCBZU-BuHaeolc.js +0 -292
  1325. package/dist/client/assets/gitGraphDiagram-DS77QQ5N-iKWWNsQK.js +0 -106
  1326. package/dist/client/assets/graph-DOmOIIwC.js +0 -1
  1327. package/dist/client/assets/index-CVVo6xHd.css +0 -1
  1328. package/dist/client/assets/index-DY0TryY7.js +0 -695
  1329. package/dist/client/assets/infoDiagram-6WML65LV-C7IulVvo.js +0 -2
  1330. package/dist/client/assets/init-Gi6I4Gst.js +0 -1
  1331. package/dist/client/assets/ishikawaDiagram-WSZJBQD7-DW4cB_Nk.js +0 -70
  1332. package/dist/client/assets/journeyDiagram-NVQOT4AX-Nzsiy4H7.js +0 -139
  1333. package/dist/client/assets/kanban-definition-27J2QSJJ-BUsK9dj9.js +0 -89
  1334. package/dist/client/assets/katex-HP8lGamR.js +0 -257
  1335. package/dist/client/assets/layout-D-LzfAck.js +0 -1
  1336. package/dist/client/assets/linear-CyoW-usj.js +0 -1
  1337. package/dist/client/assets/map-DxJ2ADlA.js +0 -1
  1338. package/dist/client/assets/mindmap-definition-FAOFIHXS-Bd9cSJjQ.js +0 -96
  1339. package/dist/client/assets/mobile-baseline-K78aE4nt.js +0 -10
  1340. package/dist/client/assets/ordinal-Cboi1Yqb.js +0 -1
  1341. package/dist/client/assets/pegDiagram-VL7TDLO6-BrmAKdiE.js +0 -1
  1342. package/dist/client/assets/pieDiagram-7S7Q4E2Y-Ce0k6LI1.js +0 -39
  1343. package/dist/client/assets/quadrantDiagram-CIZ2JOQS-_9HxOOGa.js +0 -7
  1344. package/dist/client/assets/railroadDiagram-AXF67PYL-ChdF1CBw.js +0 -1
  1345. package/dist/client/assets/requirementDiagram-LRYGKXZP-Bm2gdYTE.js +0 -84
  1346. package/dist/client/assets/sankeyDiagram-W5VNT64P-Kf7zUiC-.js +0 -40
  1347. package/dist/client/assets/sequenceDiagram-SI44F4Z6-DyPqsgh1.js +0 -162
  1348. package/dist/client/assets/sizeCapture-X5ZJPWSS-Cgn8Hxr2.js +0 -1
  1349. package/dist/client/assets/stateDiagram-OKZ733FA-CJxSzxmg.js +0 -1
  1350. package/dist/client/assets/stateDiagram-v2-UEYNNEHI-BwUaUW2J.js +0 -1
  1351. package/dist/client/assets/swimlanes-SLNWSIFB-Ckb_izEZ.js +0 -2
  1352. package/dist/client/assets/swimlanesDiagram-ULZ7WXOC-D87lLmuW.js +0 -8
  1353. package/dist/client/assets/terminal-instance-DDGTF8rc.css +0 -1
  1354. package/dist/client/assets/terminal-instance-DWySt2_t.js +0 -16
  1355. package/dist/client/assets/timeline-definition-Z64GVDOM-BWx_NLrK.js +0 -120
  1356. package/dist/client/assets/vennDiagram-T6HMQDX7-BgN2-lO-.js +0 -34
  1357. package/dist/client/assets/wardleyDiagram-T6FBY63Y-C9iwoeki.js +0 -78
  1358. package/dist/client/assets/xychartDiagram-ELKLHX3M-B3AYy5ZN.js +0 -7
  1359. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test.d.ts +0 -2
  1360. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test.d.ts.map +0 -1
  1361. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test.js +0 -1736
  1362. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test.js.map +0 -1
  1363. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.test.d.ts +0 -2
  1364. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.test.d.ts.map +0 -1
  1365. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.test.js +0 -1520
  1366. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.test.js.map +0 -1
  1367. package/dist/src/backend/services/session/service/runtime/index.d.ts +0 -5
  1368. package/dist/src/backend/services/session/service/runtime/index.d.ts.map +0 -1
  1369. package/dist/src/backend/services/session/service/runtime/index.js +0 -2
  1370. package/dist/src/backend/services/session/service/runtime/index.js.map +0 -1
  1371. package/dist/src/backend/services/session/service/runtime/provider-runtime-manager.d.ts +0 -21
  1372. package/dist/src/backend/services/session/service/runtime/provider-runtime-manager.d.ts.map +0 -1
  1373. package/dist/src/backend/services/session/service/runtime/provider-runtime-manager.js +0 -2
  1374. package/dist/src/backend/services/session/service/runtime/provider-runtime-manager.js.map +0 -1
  1375. package/dist/src/backend/services/session/service/store/file-lock.service.d.ts +0 -97
  1376. package/dist/src/backend/services/session/service/store/file-lock.service.d.ts.map +0 -1
  1377. package/dist/src/backend/services/session/service/store/file-lock.service.js +0 -429
  1378. package/dist/src/backend/services/session/service/store/file-lock.service.js.map +0 -1
  1379. package/dist/src/backend/services/session/service/store/file-lock.service.test.d.ts +0 -2
  1380. package/dist/src/backend/services/session/service/store/file-lock.service.test.d.ts.map +0 -1
  1381. package/dist/src/backend/services/session/service/store/file-lock.service.test.js +0 -672
  1382. package/dist/src/backend/services/session/service/store/file-lock.service.test.js.map +0 -1
  1383. package/dist/src/shared/workspace-words.d.ts +0 -5
  1384. package/dist/src/shared/workspace-words.d.ts.map +0 -1
  1385. package/dist/src/shared/workspace-words.js +0 -146
  1386. package/dist/src/shared/workspace-words.js.map +0 -1
@@ -1,1736 +0,0 @@
1
- import { EventEmitter } from 'node:events';
2
- import { tmpdir } from 'node:os';
3
- import { PassThrough } from 'node:stream';
4
- import { beforeEach, describe, expect, it, vi } from 'vitest';
5
- const { mockSpawn, mockInitialize, mockLoadSession, mockNewSession, mockPrompt, mockCancel, mockSetSessionConfigOption, mockSetSessionMode, mockSetSessionModel, mockExtMethod, mockNdJsonStream, } = vi.hoisted(() => ({
6
- mockSpawn: vi.fn(),
7
- mockInitialize: vi.fn(),
8
- mockLoadSession: vi.fn(),
9
- mockNewSession: vi.fn(),
10
- mockPrompt: vi.fn(),
11
- mockCancel: vi.fn(),
12
- mockSetSessionConfigOption: vi.fn(),
13
- mockSetSessionMode: vi.fn(),
14
- mockSetSessionModel: vi.fn(),
15
- mockExtMethod: vi.fn(),
16
- mockNdJsonStream: vi
17
- .fn()
18
- .mockReturnValue({ writable: {}, readable: { pipeThrough: () => ({}) } }),
19
- }));
20
- vi.mock('node:child_process', () => ({
21
- spawn: (...args) => mockSpawn(...args),
22
- }));
23
- vi.mock('@agentclientprotocol/sdk', () => {
24
- class MockCSC {
25
- toClient;
26
- initialize = mockInitialize;
27
- loadSession = mockLoadSession;
28
- newSession = mockNewSession;
29
- prompt = mockPrompt;
30
- cancel = mockCancel;
31
- setSessionConfigOption = mockSetSessionConfigOption;
32
- setSessionMode = mockSetSessionMode;
33
- unstable_setSessionModel = mockSetSessionModel;
34
- extMethod = mockExtMethod;
35
- constructor(toClient, _stream) {
36
- this.toClient = toClient;
37
- }
38
- }
39
- return {
40
- ClientSideConnection: MockCSC,
41
- ndJsonStream: (...args) => mockNdJsonStream(...args),
42
- PROTOCOL_VERSION: 1,
43
- };
44
- });
45
- vi.mock('@/backend/services/logger.service', () => ({
46
- createLogger: () => ({
47
- info: vi.fn(),
48
- debug: vi.fn(),
49
- warn: vi.fn(),
50
- error: vi.fn(),
51
- }),
52
- getCurrentProcessEnv: () => ({ ...process.env }),
53
- }));
54
- import { SUBAGENTS_CAPABILITY_META_KEY, SUBAGENTS_LIST_METHOD, SUBAGENTS_READ_METHOD, } from '../../../../../shared/acp-protocol/subagents.js';
55
- import { AcpClientHandler } from './acp-client-handler.js';
56
- import { AcpRuntimeManager, PromptTimeoutError } from './acp-runtime-manager.js';
57
- describe('PromptTimeoutError', () => {
58
- it('retains the caller-specified timeout for durable classification', () => {
59
- const error = new PromptTimeoutError('session-1', 300_000);
60
- expect(error.timeoutMs).toBe(300_000);
61
- });
62
- });
63
- function createMockChildProcess() {
64
- const child = new EventEmitter();
65
- child.pid = 12_345;
66
- child.exitCode = null;
67
- child.signalCode = null;
68
- child.killed = false;
69
- child.kill = vi.fn((signal) => {
70
- if (signal) {
71
- child.killed = true;
72
- }
73
- if (signal === 'SIGKILL') {
74
- child.exitCode = 137;
75
- child.emit('exit', 137, 'SIGKILL');
76
- }
77
- return true;
78
- });
79
- child.stdout = new PassThrough();
80
- child.stderr = new PassThrough();
81
- child.stdin = new PassThrough();
82
- return child;
83
- }
84
- function exitChildAfterSigterm(child) {
85
- child.kill = vi.fn((signal) => {
86
- if (signal === 'SIGTERM') {
87
- queueMicrotask(() => {
88
- child.signalCode = 'SIGTERM';
89
- child.emit('exit', null, 'SIGTERM');
90
- });
91
- }
92
- return true;
93
- });
94
- }
95
- function defaultOptions() {
96
- return {
97
- provider: 'CLAUDE',
98
- workingDir: '/tmp/workspace',
99
- sessionId: 'test-session-1',
100
- };
101
- }
102
- function codexOptions() {
103
- return {
104
- provider: 'CODEX',
105
- workingDir: '/tmp/workspace',
106
- sessionId: 'test-session-1',
107
- };
108
- }
109
- function defaultHandlers() {
110
- return {
111
- onSessionId: vi.fn().mockResolvedValue(undefined),
112
- onExit: vi.fn().mockResolvedValue(undefined),
113
- onError: vi.fn(),
114
- onAcpEvent: vi.fn(),
115
- };
116
- }
117
- function defaultContext() {
118
- return { workspaceId: 'w1', workingDir: '/tmp/workspace' };
119
- }
120
- function defaultConfigOptions() {
121
- return [
122
- {
123
- id: 'model',
124
- name: 'Model',
125
- type: 'select',
126
- category: 'model',
127
- currentValue: 'sonnet',
128
- options: [
129
- { value: 'sonnet', name: 'Sonnet' },
130
- { value: 'opus', name: 'Opus' },
131
- ],
132
- },
133
- {
134
- id: 'mode',
135
- name: 'Mode',
136
- type: 'select',
137
- category: 'mode',
138
- currentValue: 'default',
139
- options: [
140
- { value: 'default', name: 'Default' },
141
- { value: 'plan', name: 'Plan' },
142
- ],
143
- },
144
- ];
145
- }
146
- function setupSuccessfulSpawn(agentCapabilities = { loadSession: {} }) {
147
- const child = createMockChildProcess();
148
- mockSpawn.mockReturnValue(child);
149
- mockInitialize.mockResolvedValue({
150
- protocolVersion: 1,
151
- agentCapabilities,
152
- agentInfo: { name: 'claude-agent-acp' },
153
- });
154
- mockNewSession.mockResolvedValue({
155
- sessionId: 'provider-session-123',
156
- configOptions: defaultConfigOptions(),
157
- });
158
- mockLoadSession.mockResolvedValue({
159
- configOptions: defaultConfigOptions(),
160
- });
161
- mockSetSessionConfigOption.mockResolvedValue({
162
- configOptions: defaultConfigOptions(),
163
- });
164
- mockSetSessionMode.mockResolvedValue({});
165
- mockSetSessionModel.mockResolvedValue({});
166
- return child;
167
- }
168
- function subagentBrowseCapabilities() {
169
- return {
170
- loadSession: {},
171
- _meta: {
172
- [SUBAGENTS_CAPABILITY_META_KEY]: {
173
- version: 1,
174
- list: true,
175
- read: true,
176
- notifications: true,
177
- },
178
- },
179
- };
180
- }
181
- function createDeferred() {
182
- let resolvePromise;
183
- let rejectPromise;
184
- const promise = new Promise((resolve, reject) => {
185
- resolvePromise = resolve;
186
- rejectPromise = reject;
187
- });
188
- return { promise, resolve: resolvePromise, reject: rejectPromise };
189
- }
190
- describe('AcpRuntimeManager', () => {
191
- let manager;
192
- beforeEach(() => {
193
- manager = new AcpRuntimeManager();
194
- });
195
- describe('getOrCreateClient', () => {
196
- it('rejects before spawn when workingDir is empty', async () => {
197
- await expect(manager.getOrCreateClient('session-empty-cwd', { ...defaultOptions(), workingDir: '' }, defaultHandlers(), defaultContext())).rejects.toThrow('ACP working directory is required before spawning adapter process');
198
- expect(mockSpawn).not.toHaveBeenCalled();
199
- });
200
- it('rejects before spawn when workingDir is whitespace only', async () => {
201
- await expect(manager.getOrCreateClient('session-whitespace-cwd', { ...defaultOptions(), workingDir: ' ' }, defaultHandlers(), defaultContext())).rejects.toThrow('ACP working directory is required before spawning adapter process');
202
- expect(mockSpawn).not.toHaveBeenCalled();
203
- });
204
- it('spawns subprocess with detached:false, wires streams, initializes, creates session, returns handle', async () => {
205
- setupSuccessfulSpawn();
206
- const handle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
207
- expect(mockSpawn).toHaveBeenCalledTimes(1);
208
- const spawnArgs = mockSpawn.mock.calls[0];
209
- expect(spawnArgs[1]).toEqual([]);
210
- expect(spawnArgs[2]).toMatchObject({
211
- cwd: '/tmp/workspace',
212
- stdio: ['pipe', 'pipe', 'pipe'],
213
- detached: false,
214
- });
215
- expect(mockInitialize).toHaveBeenCalledTimes(1);
216
- expect(mockInitialize).toHaveBeenCalledWith(expect.objectContaining({
217
- protocolVersion: 1,
218
- clientCapabilities: {},
219
- clientInfo: expect.objectContaining({
220
- name: 'factory-factory',
221
- }),
222
- }));
223
- expect(mockNewSession).toHaveBeenCalledTimes(1);
224
- expect(mockNewSession).toHaveBeenCalledWith(expect.objectContaining({
225
- cwd: '/tmp/workspace',
226
- mcpServers: [],
227
- }));
228
- expect(handle.providerSessionId).toBe('provider-session-123');
229
- expect(handle.agentCapabilities).toEqual({ loadSession: {} });
230
- expect(handle.isPromptInFlight).toBe(false);
231
- expect(handle.isRunning()).toBe(true);
232
- expect(handle.getPid()).toBe(12_345);
233
- });
234
- it('spawns CODEX provider using internal CLI adapter command', async () => {
235
- setupSuccessfulSpawn();
236
- await manager.getOrCreateClient('session-1', codexOptions(), defaultHandlers(), defaultContext());
237
- expect(mockSpawn).toHaveBeenCalledTimes(1);
238
- const spawnArgs = mockSpawn.mock.calls[0];
239
- expect(spawnArgs[1]).toContain('internal');
240
- expect(spawnArgs[1]).toContain('codex-app-server-acp');
241
- expect(spawnArgs[1].some((arg) => arg.endsWith('src/cli/index.ts') || arg.endsWith('dist/src/cli/index.js'))).toBe(true);
242
- expect(typeof spawnArgs[0]).toBe('string');
243
- expect(spawnArgs[0].length).toBeGreaterThan(0);
244
- expect(spawnArgs[2].env?.DOTENV_CONFIG_QUIET).toBe('true');
245
- if (spawnArgs[0].endsWith('tsx') ||
246
- spawnArgs[0].endsWith('tsx.cmd')) {
247
- expect(spawnArgs[1]).toContain('--tsconfig');
248
- expect(spawnArgs[1].some((arg) => arg.endsWith('tsconfig.json'))).toBe(true);
249
- }
250
- expect(spawnArgs[2]).toMatchObject({
251
- cwd: '/tmp/workspace',
252
- stdio: ['pipe', 'pipe', 'pipe'],
253
- detached: false,
254
- });
255
- });
256
- it('resolves CODEX internal adapter from module location when cwd is outside repo', async () => {
257
- setupSuccessfulSpawn();
258
- const originalCwd = process.cwd();
259
- process.chdir(tmpdir());
260
- try {
261
- await manager.getOrCreateClient('session-1', codexOptions(), defaultHandlers(), defaultContext());
262
- }
263
- finally {
264
- process.chdir(originalCwd);
265
- }
266
- expect(mockSpawn).toHaveBeenCalledTimes(1);
267
- const spawnArgs = mockSpawn.mock.calls[0];
268
- const command = spawnArgs[0];
269
- const args = spawnArgs[1];
270
- expect(command.length).toBeGreaterThan(0);
271
- expect(args).toContain('internal');
272
- expect(args).toContain('codex-app-server-acp');
273
- if (command.endsWith('tsx') || command.endsWith('tsx.cmd')) {
274
- expect(args).toContain('--tsconfig');
275
- expect(args.some((arg) => arg.endsWith('tsconfig.json'))).toBe(true);
276
- }
277
- expect(args.some((arg) => arg.endsWith('src/cli/index.ts') || arg.endsWith('dist/src/cli/index.js'))).toBe(true);
278
- });
279
- it('rejects cleanly when ACP binary spawn fails (ENOENT)', async () => {
280
- const child = createMockChildProcess();
281
- mockSpawn.mockReturnValue(child);
282
- mockInitialize.mockImplementation(() => new Promise(() => {
283
- }));
284
- vi.useFakeTimers();
285
- try {
286
- const handlers = defaultHandlers();
287
- const createResult = manager
288
- .getOrCreateClient('session-1', defaultOptions(), handlers, defaultContext())
289
- .then((handle) => ({ handle }), (error) => ({ error }));
290
- let creationSettled = false;
291
- void createResult.then(() => {
292
- creationSettled = true;
293
- });
294
- await vi.advanceTimersByTimeAsync(0);
295
- expect(mockSpawn).toHaveBeenCalledTimes(1);
296
- const spawnError = Object.assign(new Error('spawn claude-agent-acp ENOENT'), {
297
- code: 'ENOENT',
298
- });
299
- child.emit('error', spawnError);
300
- await vi.advanceTimersByTimeAsync(0);
301
- expect(child.kill).toHaveBeenCalledWith('SIGTERM');
302
- child.emit('close', -2, null);
303
- await vi.advanceTimersByTimeAsync(0);
304
- expect(creationSettled).toBe(true);
305
- await expect(createResult).resolves.toMatchObject({
306
- error: {
307
- message: expect.stringMatching(/Failed to spawn ACP adapter ".*": spawn claude-agent-acp ENOENT/),
308
- },
309
- });
310
- expect(child.kill).not.toHaveBeenCalledWith('SIGKILL');
311
- expect(handlers.onError).toHaveBeenCalledWith('session-1', expect.any(Error));
312
- }
313
- finally {
314
- await vi.advanceTimersByTimeAsync(5000);
315
- vi.useRealTimers();
316
- }
317
- });
318
- it('allows the subprocess to exit during the SIGTERM grace period after initialization fails', async () => {
319
- const child = createMockChildProcess();
320
- exitChildAfterSigterm(child);
321
- mockSpawn.mockReturnValue(child);
322
- mockInitialize.mockRejectedValue(new Error('handshake failed'));
323
- await expect(manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext())).rejects.toThrow('handshake failed');
324
- expect(child.kill).toHaveBeenCalledTimes(1);
325
- expect(child.kill).toHaveBeenCalledWith('SIGTERM');
326
- expect(child.kill).not.toHaveBeenCalledWith('SIGKILL');
327
- expect(mockNewSession).not.toHaveBeenCalled();
328
- });
329
- it('does not signal a subprocess that already terminated from a signal', async () => {
330
- const child = createMockChildProcess();
331
- child.signalCode = 'SIGTERM';
332
- mockSpawn.mockReturnValue(child);
333
- mockInitialize.mockRejectedValue(new Error('handshake failed'));
334
- vi.useFakeTimers();
335
- try {
336
- const creationPromise = manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
337
- const creationRejection = creationPromise.catch((error) => error);
338
- await vi.advanceTimersByTimeAsync(5000);
339
- await expect(creationRejection).resolves.toMatchObject({ message: 'handshake failed' });
340
- expect(child.kill).not.toHaveBeenCalled();
341
- }
342
- finally {
343
- vi.useRealTimers();
344
- }
345
- });
346
- it('escalates failed initialization cleanup to SIGKILL after the grace period', async () => {
347
- const child = createMockChildProcess();
348
- mockSpawn.mockReturnValue(child);
349
- mockInitialize.mockRejectedValue(new Error('handshake failed'));
350
- vi.useFakeTimers();
351
- try {
352
- const creationPromise = manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
353
- const creationRejection = creationPromise.catch((error) => error);
354
- await vi.advanceTimersByTimeAsync(0);
355
- expect(child.kill).toHaveBeenCalledWith('SIGTERM');
356
- expect(child.kill).not.toHaveBeenCalledWith('SIGKILL');
357
- await vi.advanceTimersByTimeAsync(4999);
358
- expect(child.kill).not.toHaveBeenCalledWith('SIGKILL');
359
- await vi.advanceTimersByTimeAsync(1);
360
- await expect(creationRejection).resolves.toMatchObject({ message: 'handshake failed' });
361
- expect(child.kill).toHaveBeenCalledWith('SIGKILL');
362
- }
363
- finally {
364
- vi.useRealTimers();
365
- }
366
- });
367
- it('times out when ACP initialize handshake never resolves', async () => {
368
- manager.setAcpStartupTimeoutMs(20);
369
- const child = createMockChildProcess();
370
- exitChildAfterSigterm(child);
371
- mockSpawn.mockReturnValue(child);
372
- mockInitialize.mockImplementation(() => new Promise(() => {
373
- }));
374
- await expect(manager.getOrCreateClient('session-timeout-init', defaultOptions(), defaultHandlers(), defaultContext())).rejects.toThrow('ACP initialize handshake timed out');
375
- expect(child.kill).toHaveBeenCalledWith('SIGTERM');
376
- expect(child.kill).not.toHaveBeenCalledWith('SIGKILL');
377
- });
378
- it('times out when ACP session creation never resolves', async () => {
379
- manager.setAcpStartupTimeoutMs(20);
380
- const child = createMockChildProcess();
381
- exitChildAfterSigterm(child);
382
- mockSpawn.mockReturnValue(child);
383
- mockInitialize.mockResolvedValue({
384
- protocolVersion: 1,
385
- agentCapabilities: { loadSession: {} },
386
- agentInfo: { name: 'claude-agent-acp' },
387
- });
388
- mockNewSession.mockImplementation(() => new Promise(() => {
389
- }));
390
- await expect(manager.getOrCreateClient('session-timeout-new-session', defaultOptions(), defaultHandlers(), defaultContext())).rejects.toThrow('ACP session creation timed out');
391
- expect(child.kill).toHaveBeenCalledWith('SIGTERM');
392
- expect(child.kill).not.toHaveBeenCalledWith('SIGKILL');
393
- });
394
- it('returns existing handle if session already exists and is running', async () => {
395
- setupSuccessfulSpawn();
396
- const handle1 = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
397
- const handle2 = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
398
- expect(handle1).toBe(handle2);
399
- expect(mockSpawn).toHaveBeenCalledTimes(1);
400
- });
401
- it('deduplicates concurrent creation for same sessionId', async () => {
402
- const child = createMockChildProcess();
403
- mockSpawn.mockReturnValue(child);
404
- let resolveInit;
405
- mockInitialize.mockReturnValue(new Promise((resolve) => {
406
- resolveInit = resolve;
407
- }));
408
- mockNewSession.mockResolvedValue({
409
- sessionId: 'provider-session-123',
410
- configOptions: defaultConfigOptions(),
411
- });
412
- const first = manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
413
- const second = manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
414
- await new Promise((r) => setTimeout(r, 10));
415
- resolveInit({
416
- protocolVersion: 1,
417
- agentCapabilities: {},
418
- agentInfo: { name: 'test' },
419
- });
420
- const [h1, h2] = await Promise.all([first, second]);
421
- expect(h1).toBe(h2);
422
- expect(mockSpawn).toHaveBeenCalledTimes(1);
423
- });
424
- it('calls onSessionId handler with provider session ID', async () => {
425
- setupSuccessfulSpawn();
426
- const handlers = defaultHandlers();
427
- await manager.getOrCreateClient('session-1', defaultOptions(), handlers, defaultContext());
428
- expect(handlers.onSessionId).toHaveBeenCalledWith('session-1', 'provider-session-123');
429
- });
430
- it('calls onClientCreated callback when set', async () => {
431
- setupSuccessfulSpawn();
432
- const callback = vi.fn();
433
- manager.setOnClientCreated(callback);
434
- const handle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
435
- expect(callback).toHaveBeenCalledWith('session-1', handle, defaultContext());
436
- });
437
- it('stores config options returned by ACP newSession', async () => {
438
- setupSuccessfulSpawn();
439
- const expectedConfigOptions = [
440
- {
441
- id: 'model',
442
- name: 'Model',
443
- type: 'select',
444
- category: 'model',
445
- currentValue: 'sonnet',
446
- options: [
447
- { value: 'sonnet', name: 'Sonnet' },
448
- { value: 'opus', name: 'Opus' },
449
- ],
450
- },
451
- {
452
- id: 'mode',
453
- name: 'Mode',
454
- type: 'select',
455
- category: 'mode',
456
- currentValue: 'default',
457
- options: [
458
- { value: 'default', name: 'Default' },
459
- { value: 'plan', name: 'Plan' },
460
- ],
461
- },
462
- ];
463
- mockNewSession.mockResolvedValueOnce({
464
- sessionId: 'provider-session-123',
465
- configOptions: expectedConfigOptions,
466
- });
467
- const handle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
468
- expect(handle.configOptions).toEqual(expectedConfigOptions);
469
- });
470
- it('fails fast when ACP newSession omits configOptions', async () => {
471
- const child = setupSuccessfulSpawn();
472
- exitChildAfterSigterm(child);
473
- mockNewSession.mockResolvedValueOnce({
474
- sessionId: 'provider-session-123',
475
- });
476
- await expect(manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext())).rejects.toThrow('did not include required configOptions');
477
- });
478
- it('derives required config options from models/modes when newSession omits configOptions', async () => {
479
- setupSuccessfulSpawn();
480
- mockNewSession.mockResolvedValueOnce({
481
- sessionId: 'provider-session-123',
482
- models: {
483
- availableModels: [
484
- { modelId: 'claude-opus-4-6', name: 'Claude Opus 4.6' },
485
- { modelId: 'claude-sonnet-4-5', name: 'Claude Sonnet 4.5' },
486
- ],
487
- currentModelId: 'claude-opus-4-6',
488
- },
489
- modes: {
490
- availableModes: [
491
- { id: 'default', name: 'Default' },
492
- { id: 'plan', name: 'Plan' },
493
- ],
494
- currentModeId: 'default',
495
- },
496
- });
497
- const handle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
498
- const modelOption = handle.configOptions.find((option) => option.category === 'model');
499
- const modeOption = handle.configOptions.find((option) => option.category === 'mode');
500
- expect(modelOption).toMatchObject({
501
- id: 'model',
502
- currentValue: 'claude-opus-4-6',
503
- });
504
- expect(modelOption?.options).toEqual(expect.arrayContaining([
505
- expect.objectContaining({ value: 'claude-opus-4-6', name: 'Claude Opus 4.6' }),
506
- expect.objectContaining({ value: 'claude-sonnet-4-5', name: 'Claude Sonnet 4.5' }),
507
- ]));
508
- expect(modeOption).toMatchObject({
509
- id: 'mode',
510
- currentValue: 'default',
511
- });
512
- expect(modeOption?.options).toEqual(expect.arrayContaining([
513
- expect.objectContaining({ value: 'default', name: 'Default' }),
514
- expect.objectContaining({ value: 'plan', name: 'Plan' }),
515
- ]));
516
- });
517
- it('fails fast when ACP newSession omits required model/mode categories', async () => {
518
- const child = setupSuccessfulSpawn();
519
- exitChildAfterSigterm(child);
520
- mockNewSession.mockResolvedValueOnce({
521
- sessionId: 'provider-session-123',
522
- configOptions: [
523
- {
524
- id: 'reasoning_effort',
525
- name: 'Reasoning Effort',
526
- type: 'select',
527
- category: 'thought_level',
528
- currentValue: 'medium',
529
- options: [{ value: 'medium', name: 'Medium' }],
530
- },
531
- ],
532
- });
533
- await expect(manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext())).rejects.toThrow('missing required config option categories: model, mode');
534
- });
535
- it('uses model family name for Claude default model labels in configOptions', async () => {
536
- setupSuccessfulSpawn();
537
- mockNewSession.mockResolvedValueOnce({
538
- sessionId: 'provider-session-123',
539
- configOptions: [
540
- {
541
- id: 'model',
542
- name: 'Model',
543
- type: 'select',
544
- category: 'model',
545
- currentValue: 'default',
546
- options: [
547
- {
548
- value: 'default',
549
- name: 'Default (recommended)',
550
- description: 'Opus 4.6 · best for complex tasks',
551
- },
552
- { value: 'sonnet', name: 'Sonnet 4.5' },
553
- ],
554
- },
555
- {
556
- id: 'mode',
557
- name: 'Mode',
558
- type: 'select',
559
- category: 'mode',
560
- currentValue: 'default',
561
- options: [
562
- { value: 'default', name: 'Default' },
563
- { value: 'plan', name: 'Plan' },
564
- ],
565
- },
566
- ],
567
- });
568
- const handle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
569
- const modelOption = handle.configOptions.find((option) => option.id === 'model');
570
- const defaultEntry = modelOption?.options.find((option) => 'value' in option && option.value === 'default');
571
- expect(defaultEntry).toMatchObject({ value: 'default', name: 'Default — Opus 4.6' });
572
- });
573
- });
574
- describe('sub-agent browsing extensions', () => {
575
- it('classifies a browse-only client before provider restoration completes', async () => {
576
- const child = setupSuccessfulSpawn({ ...subagentBrowseCapabilities(), loadSession: true });
577
- const initialization = createDeferred();
578
- mockInitialize.mockReturnValueOnce(initialization.promise);
579
- const creation = manager.getOrCreateClient('db-session-1', {
580
- ...codexOptions(),
581
- purpose: 'browse',
582
- resumeProviderSessionId: 'provider-session-existing',
583
- }, defaultHandlers(), defaultContext());
584
- await vi.waitFor(() => {
585
- expect(mockSpawn).toHaveBeenCalled();
586
- });
587
- expect(manager.isBrowseOnlySession('db-session-1')).toBe(true);
588
- initialization.resolve({
589
- protocolVersion: 1,
590
- agentCapabilities: { ...subagentBrowseCapabilities(), loadSession: true },
591
- agentInfo: { name: 'codex-app-server-acp' },
592
- });
593
- await creation;
594
- expect(manager.isBrowseOnlySession('db-session-1')).toBe(true);
595
- exitChildAfterSigterm(child);
596
- await manager.stopClient('db-session-1');
597
- });
598
- it('keeps a browse-only restored client stopped until active startup promotes it', async () => {
599
- setupSuccessfulSpawn({ ...subagentBrowseCapabilities(), loadSession: true });
600
- mockExtMethod.mockResolvedValueOnce({ subagents: [], nextCursor: null });
601
- const browseHandle = await manager.getOrCreateClient('db-session-1', {
602
- ...codexOptions(),
603
- purpose: 'browse',
604
- resumeProviderSessionId: 'provider-session-existing',
605
- }, defaultHandlers(), defaultContext());
606
- await expect(manager.listSubagents('db-session-1', { cursor: null, limit: 50 })).resolves.toEqual({ subagents: [], nextCursor: null });
607
- expect(manager.getClient('db-session-1')).toBeUndefined();
608
- expect(manager.isSessionRunning('db-session-1')).toBe(false);
609
- const activeHandle = await manager.getOrCreateClient('db-session-1', { ...codexOptions(), purpose: 'active' }, defaultHandlers(), defaultContext());
610
- expect(activeHandle).toBe(browseHandle);
611
- expect(manager.getClient('db-session-1')).toBe(browseHandle);
612
- expect(manager.isSessionRunning('db-session-1')).toBe(true);
613
- expect(mockSpawn).toHaveBeenCalledTimes(1);
614
- });
615
- it('does not replace a missing browse-only provider session with a new session', async () => {
616
- const child = setupSuccessfulSpawn({ ...subagentBrowseCapabilities(), loadSession: true });
617
- exitChildAfterSigterm(child);
618
- mockLoadSession.mockRejectedValueOnce(new Error('stored provider session missing'));
619
- await expect(manager.getOrCreateClient('db-session-1', {
620
- ...codexOptions(),
621
- purpose: 'browse',
622
- resumeProviderSessionId: 'provider-session-missing',
623
- }, defaultHandlers(), defaultContext())).rejects.toMatchObject({
624
- name: 'AcpBrowseSessionUnavailableError',
625
- cause: { message: 'stored provider session missing' },
626
- });
627
- expect(mockNewSession).not.toHaveBeenCalled();
628
- });
629
- it('preserves browse-only state when an older process finishes exit handling', async () => {
630
- const firstChild = setupSuccessfulSpawn();
631
- const exitHandling = createDeferred();
632
- const firstHandlers = {
633
- ...defaultHandlers(),
634
- onExit: vi.fn(() => exitHandling.promise),
635
- };
636
- await manager.getOrCreateClient('db-session-1', defaultOptions(), firstHandlers, defaultContext());
637
- firstChild.exitCode = 1;
638
- firstChild.emit('exit', 1, null);
639
- await vi.waitFor(() => {
640
- expect(firstHandlers.onExit).toHaveBeenCalledWith('db-session-1', 1);
641
- });
642
- const replacementChild = setupSuccessfulSpawn({
643
- ...subagentBrowseCapabilities(),
644
- loadSession: true,
645
- });
646
- const replacementHandle = await manager.getOrCreateClient('db-session-1', {
647
- ...codexOptions(),
648
- purpose: 'browse',
649
- resumeProviderSessionId: 'provider-session-existing',
650
- }, defaultHandlers(), defaultContext());
651
- exitHandling.resolve();
652
- await new Promise((resolve) => setTimeout(resolve, 0));
653
- expect(manager.getBrowseClient('db-session-1')).toBe(replacementHandle);
654
- expect(manager.isBrowseOnlySession('db-session-1')).toBe(true);
655
- expect(manager.getClient('db-session-1')).toBeUndefined();
656
- exitChildAfterSigterm(replacementChild);
657
- await manager.stopClient('db-session-1');
658
- });
659
- it('classifies a provider without loadSession as unsupported for browse restoration', async () => {
660
- const child = setupSuccessfulSpawn(subagentBrowseCapabilities());
661
- exitChildAfterSigterm(child);
662
- await expect(manager.getOrCreateClient('db-session-1', {
663
- ...codexOptions(),
664
- purpose: 'browse',
665
- resumeProviderSessionId: 'provider-session-existing',
666
- }, defaultHandlers(), defaultContext())).rejects.toMatchObject({ name: 'AcpBrowseSessionUnavailableError' });
667
- expect(mockNewSession).not.toHaveBeenCalled();
668
- });
669
- it('returns the negotiated capability only for a live handle', async () => {
670
- expect(manager.getSubagentBrowseCapability('session-1')).toBeNull();
671
- const child = setupSuccessfulSpawn(subagentBrowseCapabilities());
672
- await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
673
- expect(manager.getSubagentBrowseCapability('session-1')).toEqual({
674
- version: 1,
675
- list: true,
676
- read: true,
677
- notifications: true,
678
- });
679
- child.killed = true;
680
- expect(manager.getSubagentBrowseCapability('session-1')).toBeNull();
681
- });
682
- it('lists sub-agents with the provider session ID and unchanged cursor', async () => {
683
- setupSuccessfulSpawn(subagentBrowseCapabilities());
684
- mockExtMethod.mockResolvedValueOnce({ subagents: [], nextCursor: null });
685
- await manager.getOrCreateClient('db-session-1', defaultOptions(), defaultHandlers(), defaultContext());
686
- const result = await manager.listSubagents('db-session-1', {
687
- cursor: 'list-cursor-7',
688
- limit: 50,
689
- });
690
- expect(result).toEqual({ subagents: [], nextCursor: null });
691
- expect(mockExtMethod).toHaveBeenCalledWith(SUBAGENTS_LIST_METHOD, {
692
- sessionId: 'provider-session-123',
693
- cursor: 'list-cursor-7',
694
- limit: 50,
695
- });
696
- });
697
- it('reads a transcript with the provider session ID and unchanged cursor', async () => {
698
- setupSuccessfulSpawn(subagentBrowseCapabilities());
699
- mockExtMethod.mockResolvedValueOnce({
700
- projectionBoundary: 'turn',
701
- updates: [],
702
- nextCursor: 'read-cursor-9',
703
- });
704
- await manager.getOrCreateClient('db-session-1', defaultOptions(), defaultHandlers(), defaultContext());
705
- const result = await manager.readSubagentTranscript('db-session-1', {
706
- subagentId: 'child-1',
707
- cursor: 'read-cursor-8',
708
- limit: 10,
709
- });
710
- expect(result).toEqual({
711
- projectionBoundary: 'turn',
712
- updates: [],
713
- nextCursor: 'read-cursor-9',
714
- });
715
- expect(mockExtMethod).toHaveBeenCalledWith(SUBAGENTS_READ_METHOD, {
716
- sessionId: 'provider-session-123',
717
- subagentId: 'child-1',
718
- cursor: 'read-cursor-8',
719
- limit: 10,
720
- });
721
- });
722
- it('rejects malformed extension inputs before calling the provider', async () => {
723
- setupSuccessfulSpawn(subagentBrowseCapabilities());
724
- await manager.getOrCreateClient('db-session-1', defaultOptions(), defaultHandlers(), defaultContext());
725
- await expect(manager.listSubagents('db-session-1', { cursor: null, limit: 101 })).rejects.toThrow();
726
- expect(mockExtMethod).not.toHaveBeenCalled();
727
- });
728
- it('normalizes malformed list and transcript responses as provider precondition errors', async () => {
729
- setupSuccessfulSpawn(subagentBrowseCapabilities());
730
- await manager.getOrCreateClient('db-session-1', defaultOptions(), defaultHandlers(), defaultContext());
731
- mockExtMethod.mockResolvedValueOnce({ subagents: 'invalid', nextCursor: null });
732
- await expect(manager.listSubagents('db-session-1', { cursor: null, limit: 50 })).rejects.toMatchObject({
733
- name: 'AcpSubagentBrowseError',
734
- code: 'PRECONDITION_FAILED',
735
- message: 'Sub-agent list is unavailable because the provider returned an invalid response.',
736
- });
737
- mockExtMethod.mockResolvedValueOnce({
738
- projectionBoundary: 'turn',
739
- updates: [{ sessionUpdate: 'unknown' }],
740
- nextCursor: null,
741
- });
742
- await expect(manager.readSubagentTranscript('db-session-1', {
743
- subagentId: 'child-1',
744
- cursor: null,
745
- limit: 10,
746
- })).rejects.toMatchObject({
747
- name: 'AcpSubagentBrowseError',
748
- code: 'PRECONDITION_FAILED',
749
- message: 'Sub-agent transcript is unavailable because the provider returned an invalid response.',
750
- });
751
- });
752
- it('normalizes provider extension errors into safe application errors', async () => {
753
- setupSuccessfulSpawn(subagentBrowseCapabilities());
754
- await manager.getOrCreateClient('db-session-1', defaultOptions(), defaultHandlers(), defaultContext());
755
- mockExtMethod.mockRejectedValueOnce({
756
- code: -32_602,
757
- message: 'Invalid params: secret provider detail',
758
- data: { cursor: 'invalid' },
759
- });
760
- await expect(manager.readSubagentTranscript('db-session-1', {
761
- subagentId: 'child-1',
762
- cursor: 'invalid',
763
- limit: 10,
764
- })).rejects.toMatchObject({
765
- name: 'AcpSubagentBrowseError',
766
- code: 'INVALID_INPUT',
767
- message: 'Invalid sub-agent transcript request.',
768
- });
769
- mockExtMethod.mockRejectedValueOnce({
770
- code: -32_002,
771
- message: 'Resource not found: secret provider thread',
772
- });
773
- await expect(manager.readSubagentTranscript('db-session-1', {
774
- subagentId: 'foreign-child',
775
- cursor: null,
776
- limit: 10,
777
- })).rejects.toMatchObject({
778
- name: 'AcpSubagentBrowseError',
779
- code: 'NOT_FOUND',
780
- message: 'Sub-agent transcript not found for this session.',
781
- });
782
- mockExtMethod.mockRejectedValueOnce({
783
- code: -32_603,
784
- message: 'Internal error: mismatched provider thread IDs',
785
- });
786
- await expect(manager.readSubagentTranscript('db-session-1', {
787
- subagentId: 'child-1',
788
- cursor: null,
789
- limit: 10,
790
- })).rejects.toMatchObject({
791
- name: 'AcpSubagentBrowseError',
792
- code: 'PRECONDITION_FAILED',
793
- message: 'Sub-agent transcript is unavailable because the provider returned an invalid response.',
794
- });
795
- });
796
- it('preserves JSON-RPC codes carried by Error subclasses', async () => {
797
- setupSuccessfulSpawn(subagentBrowseCapabilities());
798
- await manager.getOrCreateClient('db-session-1', defaultOptions(), defaultHandlers(), defaultContext());
799
- const providerError = Object.assign(new Error('Resource not found: provider thread'), {
800
- code: -32_002,
801
- data: { threadId: 'missing-child' },
802
- });
803
- mockExtMethod.mockRejectedValueOnce(providerError);
804
- await expect(manager.readSubagentTranscript('db-session-1', {
805
- subagentId: 'missing-child',
806
- cursor: null,
807
- limit: 10,
808
- })).rejects.toMatchObject({
809
- name: 'AcpSubagentBrowseError',
810
- code: 'NOT_FOUND',
811
- message: 'Sub-agent transcript not found for this session.',
812
- });
813
- });
814
- it('rejects extension requests without a live handle or negotiated capability', async () => {
815
- await expect(manager.listSubagents('missing-session', { cursor: null, limit: 50 })).rejects.toMatchObject({
816
- name: 'AcpSubagentBrowseError',
817
- code: 'PRECONDITION_FAILED',
818
- message: 'Sub-agent browsing requires a running parent session.',
819
- });
820
- setupSuccessfulSpawn();
821
- await manager.getOrCreateClient('db-session-1', defaultOptions(), defaultHandlers(), defaultContext());
822
- await expect(manager.readSubagentTranscript('db-session-1', {
823
- subagentId: 'child-1',
824
- cursor: null,
825
- limit: 10,
826
- })).rejects.toMatchObject({
827
- name: 'AcpSubagentBrowseError',
828
- code: 'PRECONDITION_FAILED',
829
- message: 'Sub-agent browsing is unavailable for this session.',
830
- });
831
- expect(mockExtMethod).not.toHaveBeenCalled();
832
- });
833
- });
834
- describe('stopClient', () => {
835
- it('keeps creation lock bookkeeping when stop is already in progress', async () => {
836
- const child = setupSuccessfulSpawn();
837
- await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
838
- const internalManager = manager;
839
- internalManager.creationLocks.set('session-1', vi.fn());
840
- internalManager.lockRefCounts.set('session-1', 3);
841
- child.kill = vi.fn(() => {
842
- setTimeout(() => {
843
- child.exitCode = 0;
844
- child.emit('exit', 0, null);
845
- }, 10);
846
- return true;
847
- });
848
- const stopPromise = manager.stopClient('session-1');
849
- await vi.waitFor(() => {
850
- expect(manager.isStopInProgress('session-1')).toBe(true);
851
- });
852
- await manager.stopClient('session-1');
853
- expect(internalManager.creationLocks.has('session-1')).toBe(true);
854
- expect(internalManager.lockRefCounts.has('session-1')).toBe(true);
855
- await stopPromise;
856
- });
857
- it('sends SIGTERM, waits grace period, cleans up references', async () => {
858
- const child = setupSuccessfulSpawn();
859
- await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
860
- child.kill = vi.fn(() => {
861
- child.exitCode = 0;
862
- child.emit('exit', 0, null);
863
- return true;
864
- });
865
- await manager.stopClient('session-1');
866
- expect(child.kill).toHaveBeenCalledWith('SIGTERM');
867
- expect(manager.getClient('session-1')).toBeUndefined();
868
- });
869
- it('clears the SIGTERM grace-period timeout when the child exits quickly', async () => {
870
- const child = setupSuccessfulSpawn();
871
- await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
872
- child.kill = vi.fn(() => {
873
- child.exitCode = 0;
874
- child.emit('exit', 0, null);
875
- return true;
876
- });
877
- vi.useFakeTimers();
878
- try {
879
- await manager.stopClient('session-1');
880
- expect(child.kill).toHaveBeenCalledWith('SIGTERM');
881
- expect(vi.getTimerCount()).toBe(0);
882
- }
883
- finally {
884
- vi.useRealTimers();
885
- }
886
- });
887
- it('escalates to SIGKILL after timeout', async () => {
888
- const child = setupSuccessfulSpawn();
889
- await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
890
- const killCalls = [];
891
- child.kill = vi.fn((signal) => {
892
- killCalls.push(signal ?? 'default');
893
- if (signal === 'SIGKILL') {
894
- child.killed = true;
895
- child.exitCode = 137;
896
- child.emit('exit', 137, 'SIGKILL');
897
- }
898
- return true;
899
- });
900
- vi.useFakeTimers();
901
- const stopPromise = manager.stopClient('session-1');
902
- await vi.advanceTimersByTimeAsync(5100);
903
- await stopPromise;
904
- expect(killCalls).toContain('SIGTERM');
905
- expect(killCalls).toContain('SIGKILL');
906
- expect(manager.getClient('session-1')).toBeUndefined();
907
- vi.useRealTimers();
908
- });
909
- it('cancels prompt if isPromptInFlight before SIGTERM', async () => {
910
- const child = setupSuccessfulSpawn();
911
- const handle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
912
- handle.isPromptInFlight = true;
913
- mockCancel.mockResolvedValue(undefined);
914
- child.kill = vi.fn(() => {
915
- child.exitCode = 0;
916
- child.emit('exit', 0, null);
917
- return true;
918
- });
919
- await manager.stopClient('session-1');
920
- expect(mockCancel).toHaveBeenCalledWith({
921
- sessionId: 'provider-session-123',
922
- });
923
- expect(child.kill).toHaveBeenCalledWith('SIGTERM');
924
- });
925
- it('waits for an existing stop when called concurrently', async () => {
926
- const child = setupSuccessfulSpawn();
927
- await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
928
- child.kill = vi.fn(() => true);
929
- const firstStop = manager.stopClient('session-1');
930
- await vi.waitFor(() => {
931
- expect(manager.isStopInProgress('session-1')).toBe(true);
932
- });
933
- let secondStopSettled = false;
934
- const secondStop = manager.stopClient('session-1').then(() => {
935
- secondStopSettled = true;
936
- });
937
- await Promise.resolve();
938
- expect(secondStopSettled).toBe(false);
939
- child.exitCode = 0;
940
- child.emit('exit', 0, null);
941
- await Promise.all([firstStop, secondStop]);
942
- expect(secondStopSettled).toBe(true);
943
- expect(child.kill).toHaveBeenCalledTimes(1);
944
- expect(child.kill).toHaveBeenCalledWith('SIGTERM');
945
- });
946
- it('aborts in-flight client creation and cleans up the spawned subprocess', async () => {
947
- const child = createMockChildProcess();
948
- exitChildAfterSigterm(child);
949
- mockSpawn.mockReturnValue(child);
950
- mockInitialize.mockImplementation(() => new Promise(() => {
951
- }));
952
- const createPromise = manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
953
- const createRejection = createPromise.catch((error) => error);
954
- await vi.waitFor(() => {
955
- expect(mockSpawn).toHaveBeenCalledTimes(1);
956
- expect(manager.getPendingClient('session-1')).toBeDefined();
957
- });
958
- await manager.stopClient('session-1');
959
- await expect(createRejection).resolves.toMatchObject({
960
- message: expect.stringContaining('ACP session stop requested'),
961
- });
962
- expect(child.kill).toHaveBeenCalledWith('SIGTERM');
963
- expect(child.kill).not.toHaveBeenCalledWith('SIGKILL');
964
- expect(manager.isStopInProgress('session-1')).toBe(false);
965
- expect(manager.getClient('session-1')).toBeUndefined();
966
- expect(manager.getPendingClient('session-1')).toBeUndefined();
967
- });
968
- it('skips exit handler when stop is in progress', async () => {
969
- const child = setupSuccessfulSpawn();
970
- const handlers = defaultHandlers();
971
- await manager.getOrCreateClient('session-1', defaultOptions(), handlers, defaultContext());
972
- handlers.onExit.mockClear();
973
- child.kill = vi.fn(() => {
974
- child.exitCode = 0;
975
- child.emit('exit', 0, null);
976
- return true;
977
- });
978
- await manager.stopClient('session-1');
979
- expect(handlers.onExit).not.toHaveBeenCalled();
980
- });
981
- it('skips exit handler when a stopped process exits after stop timeout', async () => {
982
- const child = setupSuccessfulSpawn();
983
- const handlers = defaultHandlers();
984
- await manager.getOrCreateClient('session-1', defaultOptions(), handlers, defaultContext());
985
- child.kill = vi.fn((signal) => {
986
- if (signal) {
987
- child.killed = true;
988
- }
989
- return true;
990
- });
991
- vi.useFakeTimers();
992
- const stopPromise = manager.stopClient('session-1');
993
- await vi.advanceTimersByTimeAsync(5100);
994
- await stopPromise;
995
- vi.useRealTimers();
996
- expect(child.kill).toHaveBeenCalledWith('SIGTERM');
997
- expect(child.kill).toHaveBeenCalledWith('SIGKILL');
998
- expect(manager.isStopInProgress('session-1')).toBe(false);
999
- handlers.onExit.mockClear();
1000
- child.exitCode = 137;
1001
- child.emit('exit', 137, 'SIGKILL');
1002
- await new Promise((resolve) => setTimeout(resolve, 0));
1003
- expect(handlers.onExit).not.toHaveBeenCalled();
1004
- });
1005
- it('does not let a late stopped-process exit affect a replacement client', async () => {
1006
- const firstChild = setupSuccessfulSpawn();
1007
- const firstHandlers = defaultHandlers();
1008
- await manager.getOrCreateClient('session-1', defaultOptions(), firstHandlers, defaultContext());
1009
- firstChild.kill = vi.fn((signal) => {
1010
- if (signal) {
1011
- firstChild.killed = true;
1012
- }
1013
- return true;
1014
- });
1015
- vi.useFakeTimers();
1016
- const stopPromise = manager.stopClient('session-1');
1017
- await vi.advanceTimersByTimeAsync(5100);
1018
- await stopPromise;
1019
- vi.useRealTimers();
1020
- const secondChild = createMockChildProcess();
1021
- const secondHandlers = defaultHandlers();
1022
- mockSpawn.mockReturnValueOnce(secondChild);
1023
- const restartedHandle = await manager.getOrCreateClient('session-1', defaultOptions(), secondHandlers, defaultContext());
1024
- firstHandlers.onExit.mockClear();
1025
- firstChild.exitCode = 137;
1026
- firstChild.emit('exit', 137, 'SIGKILL');
1027
- await new Promise((resolve) => setTimeout(resolve, 0));
1028
- expect(firstHandlers.onExit).not.toHaveBeenCalled();
1029
- expect(manager.getClient('session-1')).toBe(restartedHandle);
1030
- });
1031
- it('does not call onExit for stale SIGKILL exit after stop completes and session restarts', async () => {
1032
- const firstChild = setupSuccessfulSpawn();
1033
- const handlers = defaultHandlers();
1034
- await manager.getOrCreateClient('session-1', defaultOptions(), handlers, defaultContext());
1035
- firstChild.kill = vi.fn((signal) => {
1036
- if (signal) {
1037
- firstChild.killed = true;
1038
- }
1039
- if (signal === 'SIGKILL') {
1040
- firstChild.exitCode = 137;
1041
- }
1042
- return true;
1043
- });
1044
- vi.useFakeTimers();
1045
- const stopPromise = manager.stopClient('session-1');
1046
- await vi.advanceTimersByTimeAsync(5100);
1047
- await stopPromise;
1048
- vi.useRealTimers();
1049
- const secondChild = createMockChildProcess();
1050
- mockSpawn.mockReturnValueOnce(secondChild);
1051
- const newHandle = await manager.getOrCreateClient('session-1', defaultOptions(), handlers, defaultContext());
1052
- expect(newHandle.child).toBe(secondChild);
1053
- handlers.onExit.mockClear();
1054
- firstChild.emit('exit', 137, 'SIGKILL');
1055
- await new Promise((resolve) => setTimeout(resolve, 0));
1056
- expect(handlers.onExit).not.toHaveBeenCalled();
1057
- expect(manager.getClient('session-1')).toBe(newHandle);
1058
- });
1059
- it('rejects client creation while a stop is in progress', async () => {
1060
- const firstChild = setupSuccessfulSpawn();
1061
- await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1062
- firstChild.kill = vi.fn((signal) => {
1063
- if (signal) {
1064
- firstChild.killed = true;
1065
- }
1066
- return true;
1067
- });
1068
- const stopPromise = manager.stopClient('session-1');
1069
- await vi.waitFor(() => {
1070
- expect(firstChild.kill).toHaveBeenCalledWith('SIGTERM');
1071
- });
1072
- const secondChild = createMockChildProcess();
1073
- exitChildAfterSigterm(secondChild);
1074
- mockSpawn.mockReturnValueOnce(secondChild);
1075
- await expect(manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext())).rejects.toThrow('ACP session stop requested');
1076
- expect(secondChild.kill).toHaveBeenCalledWith('SIGTERM');
1077
- expect(secondChild.kill).not.toHaveBeenCalledWith('SIGKILL');
1078
- firstChild.exitCode = 0;
1079
- firstChild.emit('exit', 0, null);
1080
- await stopPromise;
1081
- expect(manager.getClient('session-1')).toBeUndefined();
1082
- });
1083
- it('wires child error handlers before aborting creation during stop', async () => {
1084
- const firstChild = setupSuccessfulSpawn();
1085
- await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1086
- firstChild.kill = vi.fn((signal) => {
1087
- if (signal) {
1088
- firstChild.killed = true;
1089
- }
1090
- return true;
1091
- });
1092
- const stopPromise = manager.stopClient('session-1');
1093
- await vi.waitFor(() => {
1094
- expect(firstChild.kill).toHaveBeenCalledWith('SIGTERM');
1095
- });
1096
- const secondChild = createMockChildProcess();
1097
- secondChild.kill = vi.fn((signal) => {
1098
- if (signal === 'SIGTERM') {
1099
- secondChild.emit('error', new Error('cleanup child error'));
1100
- queueMicrotask(() => {
1101
- secondChild.exitCode = 0;
1102
- secondChild.emit('exit', 0, null);
1103
- });
1104
- }
1105
- return true;
1106
- });
1107
- mockSpawn.mockReturnValueOnce(secondChild);
1108
- const handlers = defaultHandlers();
1109
- await expect(manager.getOrCreateClient('session-1', defaultOptions(), handlers, defaultContext())).rejects.toThrow('ACP session stop requested');
1110
- expect(secondChild.kill).toHaveBeenCalledWith('SIGTERM');
1111
- expect(secondChild.kill).not.toHaveBeenCalledWith('SIGKILL');
1112
- await vi.waitFor(() => {
1113
- expect(handlers.onError).toHaveBeenCalledWith('session-1', expect.any(Error));
1114
- });
1115
- firstChild.exitCode = 0;
1116
- firstChild.emit('exit', 0, null);
1117
- await stopPromise;
1118
- });
1119
- it('clears creation lock bookkeeping when stop rejects a concurrent create', async () => {
1120
- const firstChild = setupSuccessfulSpawn();
1121
- await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1122
- firstChild.kill = vi.fn((signal) => {
1123
- if (signal) {
1124
- firstChild.killed = true;
1125
- }
1126
- return true;
1127
- });
1128
- const stopPromise = manager.stopClient('session-1');
1129
- await vi.waitFor(() => {
1130
- expect(firstChild.kill).toHaveBeenCalledWith('SIGTERM');
1131
- });
1132
- const secondChild = createMockChildProcess();
1133
- exitChildAfterSigterm(secondChild);
1134
- mockSpawn.mockReturnValueOnce(secondChild);
1135
- await expect(manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext())).rejects.toThrow('ACP session stop requested');
1136
- const internalManager = manager;
1137
- expect(internalManager.creationLocks.has('session-1')).toBe(false);
1138
- expect(internalManager.lockRefCounts.has('session-1')).toBe(false);
1139
- firstChild.exitCode = 0;
1140
- firstChild.emit('exit', 0, null);
1141
- await stopPromise;
1142
- });
1143
- });
1144
- describe('stopAllClients', () => {
1145
- it('atomically closes admission and reports active and pending session ids', async () => {
1146
- const activeChild = setupSuccessfulSpawn();
1147
- await manager.getOrCreateClient('session-active', defaultOptions(), defaultHandlers(), defaultContext());
1148
- const pendingChild = createMockChildProcess();
1149
- exitChildAfterSigterm(pendingChild);
1150
- mockSpawn.mockReturnValueOnce(pendingChild);
1151
- mockInitialize.mockImplementationOnce(() => new Promise(() => {
1152
- }));
1153
- const pendingCreation = manager
1154
- .getOrCreateClient('session-pending', { ...defaultOptions(), sessionId: 'session-pending' }, defaultHandlers(), defaultContext())
1155
- .catch((error) => error);
1156
- await vi.waitFor(() => {
1157
- expect(manager.getPendingClient('session-pending')).toBeDefined();
1158
- });
1159
- const shutdownSessionIds = manager.beginShutdown();
1160
- expect(new Set(shutdownSessionIds)).toEqual(new Set(['session-active', 'session-pending']));
1161
- await expect(manager.getOrCreateClient('session-too-late', { ...defaultOptions(), sessionId: 'session-too-late' }, defaultHandlers(), defaultContext())).rejects.toThrow('ACP runtime manager is shutting down');
1162
- activeChild.kill = vi.fn(() => {
1163
- activeChild.exitCode = 0;
1164
- activeChild.emit('exit', 0, null);
1165
- return true;
1166
- });
1167
- await manager.stopAllClients(50);
1168
- await expect(pendingCreation).resolves.toMatchObject({
1169
- message: expect.stringContaining('ACP runtime manager is shutting down'),
1170
- });
1171
- });
1172
- it('clears per-client shutdown timeouts when clients stop quickly', async () => {
1173
- const firstChild = setupSuccessfulSpawn();
1174
- await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1175
- const secondChild = createMockChildProcess();
1176
- mockSpawn.mockReturnValueOnce(secondChild);
1177
- await manager.getOrCreateClient('session-2', { ...defaultOptions(), sessionId: 'session-2' }, defaultHandlers(), defaultContext());
1178
- firstChild.kill = vi.fn(() => {
1179
- firstChild.exitCode = 0;
1180
- firstChild.emit('exit', 0, null);
1181
- return true;
1182
- });
1183
- secondChild.kill = vi.fn(() => {
1184
- secondChild.exitCode = 0;
1185
- secondChild.emit('exit', 0, null);
1186
- return true;
1187
- });
1188
- vi.useFakeTimers();
1189
- try {
1190
- await manager.stopAllClients(10_000);
1191
- expect(firstChild.kill).toHaveBeenCalledWith('SIGTERM');
1192
- expect(secondChild.kill).toHaveBeenCalledWith('SIGTERM');
1193
- expect(vi.getTimerCount()).toBe(0);
1194
- expect([...manager.getAllClients()]).toEqual([]);
1195
- }
1196
- finally {
1197
- vi.useRealTimers();
1198
- }
1199
- });
1200
- it('rejects new client creation after shutdown begins', async () => {
1201
- await manager.stopAllClients();
1202
- await expect(manager.getOrCreateClient('session-after-shutdown', defaultOptions(), defaultHandlers(), defaultContext())).rejects.toThrow('ACP runtime manager is shutting down');
1203
- expect(mockSpawn).not.toHaveBeenCalled();
1204
- });
1205
- it('aborts in-flight client creation and cleans up the spawned subprocess', async () => {
1206
- const child = createMockChildProcess();
1207
- exitChildAfterSigterm(child);
1208
- mockSpawn.mockReturnValue(child);
1209
- mockInitialize.mockImplementation(() => new Promise(() => {
1210
- }));
1211
- const createPromise = manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1212
- const createRejection = createPromise.catch((error) => error);
1213
- await vi.waitFor(() => {
1214
- expect(mockSpawn).toHaveBeenCalledTimes(1);
1215
- });
1216
- await manager.stopAllClients(50);
1217
- await expect(createRejection).resolves.toMatchObject({
1218
- message: expect.stringContaining('ACP runtime manager is shutting down'),
1219
- });
1220
- expect(child.kill).toHaveBeenCalledWith('SIGTERM');
1221
- expect(child.kill).not.toHaveBeenCalledWith('SIGKILL');
1222
- expect(manager.getClient('session-1')).toBeUndefined();
1223
- expect(manager.getPendingClient('session-1')).toBeUndefined();
1224
- });
1225
- it('rejects queued creation requests after an in-flight creation is aborted', async () => {
1226
- const child = createMockChildProcess();
1227
- exitChildAfterSigterm(child);
1228
- mockSpawn.mockReturnValue(child);
1229
- mockInitialize.mockImplementation(() => new Promise(() => {
1230
- }));
1231
- const firstCreate = manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1232
- const firstRejection = firstCreate.catch((error) => error);
1233
- await vi.waitFor(() => {
1234
- expect(mockSpawn).toHaveBeenCalledTimes(1);
1235
- });
1236
- const secondCreate = manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1237
- const secondRejection = secondCreate.catch((error) => error);
1238
- await manager.stopAllClients(50);
1239
- await expect(firstRejection).resolves.toMatchObject({
1240
- message: expect.stringContaining('ACP runtime manager is shutting down'),
1241
- });
1242
- await expect(secondRejection).resolves.toMatchObject({
1243
- message: expect.stringContaining('ACP runtime manager is shutting down'),
1244
- });
1245
- expect(mockSpawn).toHaveBeenCalledTimes(1);
1246
- expect(manager.getClient('session-1')).toBeUndefined();
1247
- });
1248
- });
1249
- describe('sendPrompt', () => {
1250
- it('sets isPromptInFlight, calls connection.prompt, clears flag on resolve', async () => {
1251
- setupSuccessfulSpawn();
1252
- mockPrompt.mockResolvedValue({ stopReason: 'end_turn' });
1253
- const handle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1254
- expect(handle.isPromptInFlight).toBe(false);
1255
- const result = await manager.sendPrompt('session-1', [{ type: 'text', text: 'Hello world' }]);
1256
- expect(mockPrompt).toHaveBeenCalledWith({
1257
- sessionId: 'provider-session-123',
1258
- prompt: [{ type: 'text', text: 'Hello world' }],
1259
- });
1260
- expect(result.stopReason).toBe('end_turn');
1261
- expect(handle.isPromptInFlight).toBe(false);
1262
- });
1263
- it('clears isPromptInFlight on error', async () => {
1264
- setupSuccessfulSpawn();
1265
- mockPrompt.mockRejectedValue(new Error('prompt failed'));
1266
- const handle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1267
- await expect(manager.sendPrompt('session-1', [{ type: 'text', text: 'Hello' }])).rejects.toThrow('prompt failed');
1268
- expect(handle.isPromptInFlight).toBe(false);
1269
- });
1270
- it('keeps prompt marked in flight while cancelling after prompt timeout', async () => {
1271
- setupSuccessfulSpawn();
1272
- mockPrompt.mockReturnValue(new Promise(() => undefined));
1273
- mockCancel.mockResolvedValue(undefined);
1274
- const handle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1275
- vi.useFakeTimers();
1276
- try {
1277
- const promptPromise = manager.sendPrompt('session-1', [{ type: 'text', text: 'Hello' }], 100);
1278
- const promptRejection = promptPromise.catch((error) => error);
1279
- await vi.advanceTimersByTimeAsync(100);
1280
- await expect(promptRejection).resolves.toBeInstanceOf(PromptTimeoutError);
1281
- expect(mockCancel).toHaveBeenCalledWith({
1282
- sessionId: 'provider-session-123',
1283
- });
1284
- expect(handle.isPromptInFlight).toBe(false);
1285
- }
1286
- finally {
1287
- vi.useRealTimers();
1288
- }
1289
- });
1290
- it('stops the client when prompt timeout cancellation hangs', async () => {
1291
- const child = setupSuccessfulSpawn();
1292
- mockPrompt.mockReturnValue(new Promise(() => undefined));
1293
- mockCancel.mockReturnValue(new Promise(() => undefined));
1294
- const handle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1295
- child.kill = vi.fn((signal) => {
1296
- if (signal === 'SIGTERM') {
1297
- child.killed = true;
1298
- child.exitCode = 0;
1299
- child.emit('exit', 0, null);
1300
- }
1301
- return true;
1302
- });
1303
- vi.useFakeTimers();
1304
- try {
1305
- const promptPromise = manager.sendPrompt('session-1', [{ type: 'text', text: 'Hello' }], 100);
1306
- const promptRejection = promptPromise.catch((error) => error);
1307
- await vi.advanceTimersByTimeAsync(100);
1308
- expect(mockCancel).toHaveBeenCalledTimes(1);
1309
- await vi.advanceTimersByTimeAsync(5000);
1310
- await expect(promptRejection).resolves.toBeInstanceOf(PromptTimeoutError);
1311
- expect(child.kill).toHaveBeenCalledWith('SIGTERM');
1312
- expect(manager.getClient('session-1')).toBeUndefined();
1313
- expect(handle.isPromptInFlight).toBe(false);
1314
- }
1315
- finally {
1316
- vi.useRealTimers();
1317
- }
1318
- });
1319
- it('does not clear or stop a replacement session when timeout cancel hangs', async () => {
1320
- setupSuccessfulSpawn();
1321
- mockPrompt.mockReturnValue(new Promise(() => undefined));
1322
- mockCancel.mockReturnValue(new Promise(() => undefined));
1323
- const firstHandle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1324
- vi.useFakeTimers();
1325
- try {
1326
- const stalePrompt = manager.sendPrompt('session-1', [{ type: 'text', text: 'old prompt' }], 100);
1327
- const staleRejection = stalePrompt.catch((error) => error);
1328
- await vi.advanceTimersByTimeAsync(100);
1329
- expect(mockCancel).toHaveBeenCalledTimes(1);
1330
- const internalManager = manager;
1331
- internalManager.sessions.delete('session-1');
1332
- const replacementChild = setupSuccessfulSpawn();
1333
- const replacementHandle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1334
- replacementHandle.isPromptInFlight = true;
1335
- await vi.advanceTimersByTimeAsync(5000);
1336
- await expect(staleRejection).resolves.toBeInstanceOf(PromptTimeoutError);
1337
- expect(replacementHandle.isPromptInFlight).toBe(true);
1338
- expect(replacementChild.kill).not.toHaveBeenCalled();
1339
- expect(manager.getClient('session-1')).toBe(replacementHandle);
1340
- expect(firstHandle.isPromptInFlight).toBe(false);
1341
- }
1342
- finally {
1343
- vi.useRealTimers();
1344
- }
1345
- });
1346
- it('does not cancel a replacement session when an old prompt timeout fires', async () => {
1347
- const firstChild = setupSuccessfulSpawn();
1348
- mockPrompt.mockReturnValueOnce(new Promise(() => undefined));
1349
- mockCancel.mockResolvedValue(undefined);
1350
- const firstHandle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1351
- firstChild.kill = vi.fn((signal) => {
1352
- if (signal === 'SIGTERM') {
1353
- firstChild.killed = true;
1354
- firstChild.exitCode = 0;
1355
- firstChild.emit('exit', 0, null);
1356
- }
1357
- return true;
1358
- });
1359
- vi.useFakeTimers();
1360
- try {
1361
- const stalePrompt = manager.sendPrompt('session-1', [{ type: 'text', text: 'old prompt' }], 100);
1362
- const staleRejection = stalePrompt.catch((error) => error);
1363
- await manager.stopClient('session-1');
1364
- expect(manager.getClient('session-1')).toBeUndefined();
1365
- const replacementPrompt = createDeferred();
1366
- setupSuccessfulSpawn();
1367
- mockPrompt.mockReturnValueOnce(replacementPrompt.promise);
1368
- const replacementHandle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1369
- const replacementSend = manager.sendPrompt('session-1', [
1370
- { type: 'text', text: 'new prompt' },
1371
- ]);
1372
- await Promise.resolve();
1373
- expect(replacementHandle.isPromptInFlight).toBe(true);
1374
- const cancelCallsBeforeStaleTimeout = mockCancel.mock.calls.length;
1375
- await vi.advanceTimersByTimeAsync(100);
1376
- await expect(staleRejection).resolves.toBeInstanceOf(PromptTimeoutError);
1377
- expect(mockCancel).toHaveBeenCalledTimes(cancelCallsBeforeStaleTimeout);
1378
- expect(replacementHandle.isPromptInFlight).toBe(true);
1379
- expect(firstHandle.isPromptInFlight).toBe(false);
1380
- replacementPrompt.resolve({ stopReason: 'end_turn' });
1381
- await expect(replacementSend).resolves.toEqual({ stopReason: 'end_turn' });
1382
- expect(replacementHandle.isPromptInFlight).toBe(false);
1383
- }
1384
- finally {
1385
- vi.useRealTimers();
1386
- }
1387
- });
1388
- it('throws if no session found', async () => {
1389
- await expect(manager.sendPrompt('nonexistent', [{ type: 'text', text: 'Hello' }])).rejects.toThrow('No ACP session found');
1390
- });
1391
- });
1392
- describe('cancelPrompt', () => {
1393
- it('calls connection.cancel when prompt is in flight', async () => {
1394
- setupSuccessfulSpawn();
1395
- mockCancel.mockResolvedValue(undefined);
1396
- const handle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1397
- handle.isPromptInFlight = true;
1398
- const cancelled = await manager.cancelPrompt('session-1');
1399
- expect(mockCancel).toHaveBeenCalledWith({
1400
- sessionId: 'provider-session-123',
1401
- });
1402
- expect(cancelled).toBe(true);
1403
- });
1404
- it('does nothing when no prompt is in flight', async () => {
1405
- setupSuccessfulSpawn();
1406
- await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1407
- const cancelled = await manager.cancelPrompt('session-1');
1408
- expect(mockCancel).not.toHaveBeenCalled();
1409
- expect(cancelled).toBe(false);
1410
- });
1411
- it('does nothing for nonexistent session', async () => {
1412
- const cancelled = await manager.cancelPrompt('nonexistent');
1413
- expect(mockCancel).not.toHaveBeenCalled();
1414
- expect(cancelled).toBe(false);
1415
- });
1416
- });
1417
- describe('setConfigOption', () => {
1418
- it('updates cached config options from setSessionConfigOption response', async () => {
1419
- setupSuccessfulSpawn();
1420
- mockSetSessionConfigOption.mockResolvedValueOnce({
1421
- configOptions: [
1422
- {
1423
- id: 'model',
1424
- name: 'Model',
1425
- type: 'select',
1426
- category: 'model',
1427
- currentValue: 'opus',
1428
- options: [
1429
- { value: 'default', name: 'Default (recommended)', description: 'Opus 4.6 · best' },
1430
- { value: 'opus', name: 'Opus' },
1431
- ],
1432
- },
1433
- {
1434
- id: 'mode',
1435
- name: 'Mode',
1436
- type: 'select',
1437
- category: 'mode',
1438
- currentValue: 'plan',
1439
- options: [
1440
- { value: 'default', name: 'Default' },
1441
- { value: 'plan', name: 'Plan' },
1442
- ],
1443
- },
1444
- ],
1445
- });
1446
- const handle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1447
- await manager.setConfigOption('session-1', 'mode', 'plan');
1448
- const defaultModelOption = handle.configOptions
1449
- .find((option) => option.id === 'model')
1450
- ?.options.find((option) => 'value' in option && option.value === 'default');
1451
- expect(defaultModelOption).toMatchObject({
1452
- value: 'default',
1453
- name: 'Default — Opus 4.6',
1454
- });
1455
- expect(handle.configOptions.find((option) => option.id === 'mode')?.currentValue).toBe('plan');
1456
- });
1457
- it('throws when setSessionConfigOption call fails', async () => {
1458
- setupSuccessfulSpawn();
1459
- mockSetSessionConfigOption.mockRejectedValueOnce(new Error('Method not found'));
1460
- await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1461
- await expect(manager.setConfigOption('session-1', 'model', 'opus')).rejects.toThrow('Method not found');
1462
- });
1463
- it('fails fast when setSessionConfigOption response omits required categories', async () => {
1464
- setupSuccessfulSpawn();
1465
- mockSetSessionConfigOption.mockResolvedValueOnce({
1466
- configOptions: [
1467
- {
1468
- id: 'reasoning_effort',
1469
- name: 'Reasoning Effort',
1470
- type: 'select',
1471
- category: 'thought_level',
1472
- currentValue: 'medium',
1473
- options: [{ value: 'medium', name: 'Medium' }],
1474
- },
1475
- ],
1476
- });
1477
- await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1478
- await expect(manager.setConfigOption('session-1', 'mode', 'plan')).rejects.toThrow('missing required config option categories: model, mode');
1479
- });
1480
- });
1481
- describe('setSessionMode', () => {
1482
- it('calls ACP setSessionMode and updates cached mode currentValue', async () => {
1483
- setupSuccessfulSpawn();
1484
- const handle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1485
- await manager.setSessionMode('session-1', 'plan');
1486
- expect(mockSetSessionMode).toHaveBeenCalledWith({
1487
- sessionId: 'provider-session-123',
1488
- modeId: 'plan',
1489
- });
1490
- expect(handle.configOptions.find((option) => option.id === 'mode')?.currentValue).toBe('plan');
1491
- });
1492
- it('throws when setSessionMode call fails', async () => {
1493
- setupSuccessfulSpawn();
1494
- mockSetSessionMode.mockRejectedValueOnce(new Error('Invalid mode'));
1495
- await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1496
- await expect(manager.setSessionMode('session-1', 'acceptEdits')).rejects.toThrow('Invalid mode');
1497
- });
1498
- });
1499
- describe('setSessionModel', () => {
1500
- it('uses unstable_setSessionModel for CLAUDE and updates cached model currentValue', async () => {
1501
- setupSuccessfulSpawn();
1502
- const handle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1503
- await manager.setSessionModel('session-1', 'opus');
1504
- expect(mockSetSessionModel).toHaveBeenCalledWith({
1505
- sessionId: 'provider-session-123',
1506
- modelId: 'opus',
1507
- });
1508
- expect(mockSetSessionConfigOption).not.toHaveBeenCalled();
1509
- expect(handle.configOptions.find((option) => option.id === 'model')?.currentValue).toBe('opus');
1510
- });
1511
- it('falls back to setSessionConfigOption when unstable_setSessionModel is unavailable', async () => {
1512
- setupSuccessfulSpawn();
1513
- mockSetSessionModel.mockRejectedValueOnce({ code: -32_601, message: 'Method not found' });
1514
- mockSetSessionConfigOption.mockResolvedValueOnce({
1515
- configOptions: [
1516
- {
1517
- id: 'model',
1518
- name: 'Model',
1519
- type: 'select',
1520
- category: 'model',
1521
- currentValue: 'opus',
1522
- options: [
1523
- { value: 'sonnet', name: 'Sonnet' },
1524
- { value: 'opus', name: 'Opus' },
1525
- ],
1526
- },
1527
- {
1528
- id: 'mode',
1529
- name: 'Mode',
1530
- type: 'select',
1531
- category: 'mode',
1532
- currentValue: 'default',
1533
- options: [{ value: 'default', name: 'Default' }],
1534
- },
1535
- ],
1536
- });
1537
- const handle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1538
- await manager.setSessionModel('session-1', 'opus');
1539
- expect(mockSetSessionModel).toHaveBeenCalledWith({
1540
- sessionId: 'provider-session-123',
1541
- modelId: 'opus',
1542
- });
1543
- expect(mockSetSessionConfigOption).toHaveBeenCalledWith({
1544
- sessionId: 'provider-session-123',
1545
- configId: 'model',
1546
- value: 'opus',
1547
- });
1548
- expect(handle.configOptions.find((option) => option.id === 'model')?.currentValue).toBe('opus');
1549
- });
1550
- it('uses setSessionConfigOption path for CODEX model updates', async () => {
1551
- setupSuccessfulSpawn();
1552
- await manager.getOrCreateClient('session-1', { ...defaultOptions(), provider: 'CODEX' }, defaultHandlers(), defaultContext());
1553
- await manager.setSessionModel('session-1', 'gpt-5.2-codex');
1554
- expect(mockSetSessionModel).not.toHaveBeenCalled();
1555
- expect(mockSetSessionConfigOption).toHaveBeenCalledWith({
1556
- sessionId: 'provider-session-123',
1557
- configId: 'model',
1558
- value: 'gpt-5.2-codex',
1559
- });
1560
- });
1561
- });
1562
- describe('session status methods', () => {
1563
- it('isSessionRunning returns true for active session', async () => {
1564
- setupSuccessfulSpawn();
1565
- await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1566
- expect(manager.isSessionRunning('session-1')).toBe(true);
1567
- expect(manager.isSessionRunning('nonexistent')).toBe(false);
1568
- });
1569
- it('isSessionWorking returns true when prompt is in flight', async () => {
1570
- setupSuccessfulSpawn();
1571
- const handle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1572
- expect(manager.isSessionWorking('session-1')).toBe(false);
1573
- handle.isPromptInFlight = true;
1574
- expect(manager.isSessionWorking('session-1')).toBe(true);
1575
- });
1576
- it('isAnySessionWorking checks multiple sessions', async () => {
1577
- setupSuccessfulSpawn();
1578
- const handle = await manager.getOrCreateClient('session-1', defaultOptions(), defaultHandlers(), defaultContext());
1579
- expect(manager.isAnySessionWorking(['session-1', 'session-2'])).toBe(false);
1580
- handle.isPromptInFlight = true;
1581
- expect(manager.isAnySessionWorking(['session-1', 'session-2'])).toBe(true);
1582
- });
1583
- });
1584
- });
1585
- describe('AcpClientHandler', () => {
1586
- it('AcpEventCallback is a discriminated ACP runtime event union', () => {
1587
- const onEvent = (_sessionId, event) => {
1588
- if (event.type === 'acp_session_update') {
1589
- expect(event.update.sessionUpdate).toBe('agent_message_chunk');
1590
- return;
1591
- }
1592
- if (event.type === 'acp_permission_request') {
1593
- expect(event.params.toolCall.toolCallId).toBe('tc-1');
1594
- return;
1595
- }
1596
- expect(event.subagentId).toBe('child-1');
1597
- expect(event.change).toBe('updated');
1598
- };
1599
- onEvent('test-session', {
1600
- type: 'acp_session_update',
1601
- update: {
1602
- sessionUpdate: 'agent_message_chunk',
1603
- content: { type: 'text', text: 'Hello' },
1604
- },
1605
- });
1606
- onEvent('test-session', {
1607
- type: 'acp_permission_request',
1608
- requestId: 'req-1',
1609
- params: {
1610
- sessionId: 'provider-session-1',
1611
- toolCall: { toolCallId: 'tc-1', title: 'Write file' },
1612
- options: [{ optionId: 'allow-1', kind: 'allow_once', name: 'Allow once' }],
1613
- },
1614
- });
1615
- onEvent('test-session', {
1616
- type: 'acp_subagents_changed',
1617
- subagentId: 'child-1',
1618
- change: 'updated',
1619
- });
1620
- });
1621
- it('sessionUpdate emits logs through onLog callback', async () => {
1622
- const onEvent = vi.fn();
1623
- const onLog = vi.fn();
1624
- const handler = new AcpClientHandler('test-session', onEvent, undefined, onLog);
1625
- await handler.sessionUpdate({
1626
- sessionId: 'provider-session-1',
1627
- update: {
1628
- sessionUpdate: 'agent_message_chunk',
1629
- content: { type: 'text', text: 'Hello' },
1630
- },
1631
- });
1632
- expect(onLog).toHaveBeenCalledWith('test-session', {
1633
- eventType: 'acp_session_update',
1634
- sessionUpdate: 'agent_message_chunk',
1635
- data: expect.objectContaining({ sessionUpdate: 'agent_message_chunk' }),
1636
- });
1637
- });
1638
- it('sessionUpdate forwards all events as acp_session_update wrapper', async () => {
1639
- const onEvent = vi.fn();
1640
- const handler = new AcpClientHandler('test-session', onEvent);
1641
- await handler.sessionUpdate({
1642
- sessionId: 'provider-session-1',
1643
- update: {
1644
- sessionUpdate: 'agent_message_chunk',
1645
- content: { type: 'text', text: 'Hello' },
1646
- },
1647
- });
1648
- expect(onEvent).toHaveBeenCalledWith('test-session', {
1649
- type: 'acp_session_update',
1650
- update: {
1651
- sessionUpdate: 'agent_message_chunk',
1652
- content: { type: 'text', text: 'Hello' },
1653
- },
1654
- });
1655
- });
1656
- it('sessionUpdate forwards tool_call events as acp_session_update wrapper', async () => {
1657
- const onEvent = vi.fn();
1658
- const handler = new AcpClientHandler('test-session', onEvent);
1659
- await handler.sessionUpdate({
1660
- sessionId: 'provider-session-1',
1661
- update: {
1662
- sessionUpdate: 'tool_call',
1663
- toolCallId: 'tc-1',
1664
- title: 'Read file',
1665
- kind: 'read',
1666
- status: 'in_progress',
1667
- },
1668
- });
1669
- expect(onEvent).toHaveBeenCalledWith('test-session', {
1670
- type: 'acp_session_update',
1671
- update: {
1672
- sessionUpdate: 'tool_call',
1673
- toolCallId: 'tc-1',
1674
- title: 'Read file',
1675
- kind: 'read',
1676
- status: 'in_progress',
1677
- },
1678
- });
1679
- });
1680
- it('sessionUpdate forwards all event types including previously deferred ones', async () => {
1681
- const onEvent = vi.fn();
1682
- const handler = new AcpClientHandler('test-session', onEvent);
1683
- await handler.sessionUpdate({
1684
- sessionId: 'provider-session-1',
1685
- update: {
1686
- sessionUpdate: 'agent_thought_chunk',
1687
- content: { type: 'text', text: 'thinking...' },
1688
- },
1689
- });
1690
- expect(onEvent).toHaveBeenCalledWith('test-session', {
1691
- type: 'acp_session_update',
1692
- update: {
1693
- sessionUpdate: 'agent_thought_chunk',
1694
- content: { type: 'text', text: 'thinking...' },
1695
- },
1696
- });
1697
- });
1698
- it('requestPermission fails closed by default when no bridge exists', async () => {
1699
- const onEvent = vi.fn();
1700
- const handler = new AcpClientHandler('test-session', onEvent);
1701
- const result = await handler.requestPermission({
1702
- sessionId: 'provider-session-1',
1703
- toolCall: { toolCallId: 'tc-1', title: 'Write file' },
1704
- options: [
1705
- { optionId: 'reject-1', kind: 'reject_once', name: 'Deny' },
1706
- { optionId: 'allow-1', kind: 'allow_always', name: 'Allow Always' },
1707
- { optionId: 'allow-2', kind: 'allow_once', name: 'Allow Once' },
1708
- ],
1709
- });
1710
- expect(result).toEqual({
1711
- outcome: {
1712
- outcome: 'selected',
1713
- optionId: 'reject-1',
1714
- },
1715
- });
1716
- });
1717
- it('requestPermission selects a reject option when no bridge exists', async () => {
1718
- const onEvent = vi.fn();
1719
- const handler = new AcpClientHandler('test-session', onEvent);
1720
- const result = await handler.requestPermission({
1721
- sessionId: 'provider-session-1',
1722
- toolCall: { toolCallId: 'tc-1', title: 'Write file' },
1723
- options: [
1724
- { optionId: 'reject-1', kind: 'reject_once', name: 'Deny' },
1725
- { optionId: 'reject-2', kind: 'reject_always', name: 'Deny Always' },
1726
- ],
1727
- });
1728
- expect(result).toEqual({
1729
- outcome: {
1730
- outcome: 'selected',
1731
- optionId: 'reject-1',
1732
- },
1733
- });
1734
- });
1735
- });
1736
- //# sourceMappingURL=acp-runtime-manager.test.js.map