factory-factory 0.4.9 → 0.4.11

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 (2029) hide show
  1. package/README.md +18 -14
  2. package/dist/client/assets/Archive.es-BE-C3QlQ.js +1 -0
  3. package/dist/client/assets/ArrowDown.es-4I45mlTH.js +1 -0
  4. package/dist/client/assets/ArrowLeft.es-DN5jQwPJ.js +1 -0
  5. package/dist/client/assets/CaretLeft.es-9DxLcb6_.js +1 -0
  6. package/dist/client/assets/CheckCircle.es-DXonq-sZ.js +1 -0
  7. package/dist/client/assets/FileCode.es-DR_LOoWF.js +1 -0
  8. package/dist/client/assets/GitBranch.es-mG-NJT2D.js +38 -0
  9. package/dist/client/assets/Microphone.es-Dxzgml4h.js +1 -0
  10. package/dist/client/assets/Plus.es-BWjwMswT.js +1 -0
  11. package/dist/client/assets/Warning.es-IZ9KCqrC.js +1 -0
  12. package/dist/client/assets/abnfDiagram-WEYOIA3C-DVEiY1ie.js +1 -0
  13. package/dist/client/assets/admin-page-D7lZMWat.js +1 -0
  14. package/dist/client/assets/alert-B2Dogz3x.js +1 -0
  15. package/dist/client/assets/appearance-C0wAeEbK.js +1 -0
  16. package/dist/client/assets/appearance-DUV_jbpk.js +1 -0
  17. package/dist/client/assets/arc-DgcGdgmL.js +1 -0
  18. package/dist/client/assets/architecture-WOLXFQ4H-D8_bqkQ5.js +1 -0
  19. package/dist/client/assets/architectureDiagram-ZHVYKT53-DK1iJQs8.js +36 -0
  20. package/dist/client/assets/badge-otjWVZmT.js +1 -0
  21. package/dist/client/assets/blockDiagram-RJAE7QA3-BrArLTPu.js +140 -0
  22. package/dist/client/assets/c4Diagram-XDPPPE54-D8IsOgad.js +38 -0
  23. package/dist/client/assets/channel-BTLnaWNu.js +1 -0
  24. package/dist/client/assets/chunk-2E7WHVMD-2-65BeVg.js +88 -0
  25. package/dist/client/assets/chunk-4EMNKR2T-BrjAojhc.js +1 -0
  26. package/dist/client/assets/chunk-55XCU76K-CW553Dnn.js +1 -0
  27. package/dist/client/assets/chunk-7S6XSTFO-CFBOM1Lj.js +2 -0
  28. package/dist/client/assets/chunk-AQDTSKZB-6rQWSZYM.js +72 -0
  29. package/dist/client/assets/chunk-DSNLSHJZ-CUGqfRgF.js +129 -0
  30. package/dist/client/assets/chunk-DUW6YSOI-Dgx8z5s3.js +1 -0
  31. package/dist/client/assets/chunk-HAGFOTED-Ck2rJx94.js +62 -0
  32. package/dist/client/assets/chunk-HNE4Q36P-Bbv56IAo.js +1 -0
  33. package/dist/client/assets/chunk-J5ZVWO5B-oDCd-gWO.js +1 -0
  34. package/dist/client/assets/chunk-NGNAAXSQ-DqoPQk1a.js +136 -0
  35. package/dist/client/assets/chunk-NQOKRVIF-C0DH8BgT.js +213 -0
  36. package/dist/client/assets/chunk-UHW7PFBP-CyPOv_kz.js +1 -0
  37. package/dist/client/assets/chunk-VQ5W62QI-CTVLuqLY.js +1 -0
  38. package/dist/client/assets/chunk-WQQL4CDK-BJt_wgBJ.js +10 -0
  39. package/dist/client/assets/chunk-XXDRQBXY-BvKO0v-W.js +1 -0
  40. package/dist/client/assets/chunk-YZO67HFG-DbxSk-ct.js +1 -0
  41. package/dist/client/assets/chunk-ZAUX2LTX-CVjhoX0K.js +1 -0
  42. package/dist/client/assets/chunk-ZCHMQSOR-BMffM2ys.js +2 -0
  43. package/dist/client/assets/classDiagram-v2-4MYWR3UA-BkEgkiR0.js +217 -0
  44. package/dist/client/assets/components-p5I0A6Vd.js +1 -0
  45. package/dist/client/assets/confirm-dialog-DhOUf6MK.js +1 -0
  46. package/dist/client/assets/cose-bilkent-JH36ORCC-COXSdE6a.js +1 -0
  47. package/dist/client/assets/cynefin-EF2NZ3EQ-rxH1tEn5.js +1 -0
  48. package/dist/client/assets/cynefinDiagram-WF24UDRP-CAVj5u85.js +62 -0
  49. package/dist/client/assets/cytoscape.esm-Yq6u8L66.js +321 -0
  50. package/dist/client/assets/dagre-NK4GIZVX-Dht732Rd.js +4 -0
  51. package/dist/client/assets/data-import-button-DJYdu7Eb.js +6 -0
  52. package/dist/client/assets/detail-5iYq6r8r.js +1 -0
  53. package/dist/client/assets/diagram-CBK3MWTC-9mCqagmF.js +24 -0
  54. package/dist/client/assets/diagram-I5XIIV2D-BcCCh8oH.js +24 -0
  55. package/dist/client/assets/diagram-ODIL2UCW-BzeAmH9A.js +30 -0
  56. package/dist/client/assets/diagram-PFBEJUXE-D59aoLTm.js +3 -0
  57. package/dist/client/assets/diagram-RJA3I4VV-B7BaY0Ni.js +41 -0
  58. package/dist/client/assets/diagram-TYUNFSNR-CedzMphh.js +200 -0
  59. package/dist/client/assets/diff-highlight.worker-C1Klarob.js +124 -0
  60. package/dist/client/assets/diff-viewer-BYwKQ2p9.js +1 -0
  61. package/dist/client/assets/dist-1TKc18Bj.js +1 -0
  62. package/dist/client/assets/dist-73BCHs_0.js +41 -0
  63. package/dist/client/assets/dist-B_J_HbC0.js +1 -0
  64. package/dist/client/assets/dist-Cxtf14PY.js +1 -0
  65. package/dist/client/assets/dist-D8Wfxh48.js +1 -0
  66. package/dist/client/assets/ebnfDiagram-V4P3TTPT-C4-3Ub50.js +1 -0
  67. package/dist/client/assets/elk-QONTBCTQ-oNnVvW-r.js +27 -0
  68. package/dist/client/assets/en-US-D47MEQ2P.js +1 -0
  69. package/dist/client/assets/erDiagram-KYQIGQAA-Cg853NMH.js +99 -0
  70. package/dist/client/assets/eventmodeling-K75KTNOO-DHQo3qm_.js +1 -0
  71. package/dist/client/assets/factory-config-scripts-vPMzLtkM.js +1 -0
  72. package/dist/client/assets/file-viewer-DVd46AFa.css +1 -0
  73. package/dist/client/assets/file-viewer-c_SCdIkJ.js +6 -0
  74. package/dist/client/assets/flowDiagram-IUGLLWBU-DqHx31a9.js +1 -0
  75. package/dist/client/assets/ganttDiagram-R7GPNTJY-DKzE8bVz.js +292 -0
  76. package/dist/client/assets/gitGraph-VSP46ZUC-rAFoVncH.js +1 -0
  77. package/dist/client/assets/gitGraphDiagram-PDYL7XHY-C1uuBdCy.js +106 -0
  78. package/dist/client/assets/home-chNeaYGH.js +1 -0
  79. package/dist/client/assets/hooks-BUzAAw4j.js +1 -0
  80. package/dist/client/assets/index-ChVJBrR6.css +2 -0
  81. package/dist/client/assets/index-WEPhGzO4.js +10 -0
  82. package/dist/client/assets/info-OHQRW6UA-gLd3etLY.js +1 -0
  83. package/dist/client/assets/infoDiagram-MVDRKAX5-DGRB_CjG.js +2 -0
  84. package/dist/client/assets/input-CEdVqLrs.js +1 -0
  85. package/dist/client/assets/ishikawaDiagram-HPEHV2GE-BxVUtvw6.js +70 -0
  86. package/dist/client/assets/journeyDiagram-BOSHW7O7-C6wB5m3H.js +139 -0
  87. package/dist/client/assets/jsx-runtime-D1cyW64m.js +1 -0
  88. package/dist/client/assets/kanban-column-projection-BU6FRtAn.js +1 -0
  89. package/dist/client/assets/kanban-definition-FNSA4HC5-Bn5vEICj.js +89 -0
  90. package/dist/client/assets/katex-CqLmZ2j0.js +257 -0
  91. package/dist/client/assets/label-B9QTA9_a.js +1 -0
  92. package/dist/client/assets/lib-BSQ3Lw06.js +1 -0
  93. package/dist/client/assets/line-BbL9OV4X.js +1 -0
  94. package/dist/client/assets/linear-BUnzfXgk.js +1 -0
  95. package/dist/client/assets/list-BMxVZIFW.js +1 -0
  96. package/dist/client/assets/list-BVGKUBT-.js +30 -0
  97. package/dist/client/assets/logs-CR0XV-h_.js +1 -0
  98. package/dist/client/assets/markdown-BoT1wClA.js +32 -0
  99. package/dist/client/assets/mermaid-diagram-Bfra6L_Q.js +44 -0
  100. package/dist/client/assets/mermaid-parser.core-cMhM95A-.js +7 -0
  101. package/dist/client/assets/mindmap-definition-6OY57UG3-BAAg07RN.js +98 -0
  102. package/dist/client/assets/mobile-baseline-Dfn8816-.js +10 -0
  103. package/dist/client/assets/new-CwGEOm_r.js +1 -0
  104. package/dist/client/assets/new-DhJS4n1v.js +1 -0
  105. package/dist/client/assets/packet-JDAUHWVQ-QS8JM89I.js +1 -0
  106. package/dist/client/assets/page-header-hwXw08Vy.js +1 -0
  107. package/dist/client/assets/pegDiagram-ECIUJNBX-BfHNXHz7.js +1 -0
  108. package/dist/client/assets/pie-XZMESJXO-CmwD9NEw.js +1 -0
  109. package/dist/client/assets/pieDiagram-GNMPY74T-reb72QD2.js +39 -0
  110. package/dist/client/assets/pr-inbox-item-CE0t_DNT.js +4 -0
  111. package/dist/client/assets/preload-helper-BLdHbfdN.js +1 -0
  112. package/dist/client/assets/project-repo-form-CrHt3I4k.js +1 -0
  113. package/dist/client/assets/quadrantDiagram-D57K4MC3-CWx7vew-.js +7 -0
  114. package/dist/client/assets/radar-ABXABTNO-DvCNdtQs.js +1 -0
  115. package/dist/client/assets/radio-group-C43J47HT.js +1 -0
  116. package/dist/client/assets/railroad-I3PHUGI6-bGESLDGJ.js +1 -0
  117. package/dist/client/assets/railroad-abnf-LNEFI6M7-CCmkN-sh.js +1 -0
  118. package/dist/client/assets/railroad-ebnf-DWYD2UWJ-CX1IEXFW.js +1 -0
  119. package/dist/client/assets/railroad-peg-JR7BVNR7-c0faYJjC.js +1 -0
  120. package/dist/client/assets/railroadDiagram-Y72NRBL7-Din1EVGd.js +1 -0
  121. package/dist/client/assets/redirect-DTpIUCRQ.js +1 -0
  122. package/dist/client/assets/requirementDiagram-EQYSW5RA-jBsqqIzq.js +84 -0
  123. package/dist/client/assets/reviews-B3PkJukE.js +1 -0
  124. package/dist/client/assets/rolldown-runtime-Dd_uD5pT.js +1 -0
  125. package/dist/client/assets/sankeyDiagram-SY24JHO5-CPFBcT81.js +40 -0
  126. package/dist/client/assets/schemas-BP-Iz5w3.js +55 -0
  127. package/dist/client/assets/select-KX1N4UhM.js +1 -0
  128. package/dist/client/assets/sequenceDiagram-BLEHNHQU-D73V4VuD.js +169 -0
  129. package/dist/client/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -0
  130. package/dist/client/assets/src-oBChb5qS.js +1 -0
  131. package/dist/client/assets/startup-script-form-DKZhwUVZ.js +1 -0
  132. package/dist/client/assets/stateDiagram-v2-A6IESKWZ-BkzWbLnl.js +291 -0
  133. package/dist/client/assets/styles-DoMUeUYO.js +4 -0
  134. package/dist/client/assets/swimlanes-B3ENRKFQ-Ce1aOeOr.js +1 -0
  135. package/dist/client/assets/swimlanesDiagram-AYQRV4AK-BpG-n3st.js +8 -0
  136. package/dist/client/assets/table-BenFunE4.js +1 -0
  137. package/dist/client/assets/tabs-u7304FGl.js +1 -0
  138. package/dist/client/assets/terminal-instance-95FxBwBb.js +16 -0
  139. package/dist/client/assets/textarea-ArqTtMgi.js +1 -0
  140. package/dist/client/assets/timeline-definition-JXYKGLGB-DF76e3wb.js +120 -0
  141. package/dist/client/assets/treeView-D4JQ5SDB-CJdcCvRA.js +1 -0
  142. package/dist/client/assets/treemap-SAJKECNS-DTBzxZDt.js +1 -0
  143. package/dist/client/assets/trpc-BMFFcCw2.js +2 -0
  144. package/dist/client/assets/use-download-server-log-CJjvMsx_.js +1 -0
  145. package/dist/client/assets/use-mobile-CtHsbvqp.js +1 -0
  146. package/dist/client/assets/use-persistent-scroll-BHuL8Pd-.js +1 -0
  147. package/dist/client/assets/use-project-header-navigation-DADIEa7B.js +1 -0
  148. package/dist/client/assets/use-websocket-transport-D4bs6Hno.js +1 -0
  149. package/dist/client/assets/usecaseDiagram-WPOLBNNX-DCQLhHhn.js +328 -0
  150. package/dist/client/assets/vennDiagram-Q3Y3IDCW-fnuOYsgr.js +34 -0
  151. package/dist/client/assets/wardley-7MLQ67FV-DV836ODM.js +1 -0
  152. package/dist/client/assets/wardleyDiagram-IVAIDKWA-BjTSHNYC.js +78 -0
  153. package/dist/client/assets/workspace-Bue-amA4.js +12 -0
  154. package/dist/client/assets/workspace-sidebar-status-DiNClksZ.js +4 -0
  155. package/dist/client/assets/xychartDiagram-4URNHDU4-Dx451vki.js +7 -0
  156. package/dist/client/index.html +70 -30
  157. package/dist/prisma/generated/browser.d.ts +4 -1
  158. package/dist/prisma/generated/browser.d.ts.map +1 -1
  159. package/dist/prisma/generated/client.d.ts +5 -2
  160. package/dist/prisma/generated/client.d.ts.map +1 -1
  161. package/dist/prisma/generated/commonInputTypes.d.ts +38 -29
  162. package/dist/prisma/generated/commonInputTypes.d.ts.map +1 -1
  163. package/dist/prisma/generated/internal/class.d.ts +11 -2
  164. package/dist/prisma/generated/internal/class.d.ts.map +1 -1
  165. package/dist/prisma/generated/internal/class.js +7 -7
  166. package/dist/prisma/generated/internal/class.js.map +1 -1
  167. package/dist/prisma/generated/internal/prismaNamespace.d.ts +331 -51
  168. package/dist/prisma/generated/internal/prismaNamespace.d.ts.map +1 -1
  169. package/dist/prisma/generated/internal/prismaNamespace.js +68 -16
  170. package/dist/prisma/generated/internal/prismaNamespace.js.map +1 -1
  171. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts +78 -22
  172. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts.map +1 -1
  173. package/dist/prisma/generated/internal/prismaNamespaceBrowser.js +66 -14
  174. package/dist/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  175. package/dist/prisma/generated/models/AgentSession.d.ts +292 -2
  176. package/dist/prisma/generated/models/AgentSession.d.ts.map +1 -1
  177. package/dist/prisma/generated/models/ClosedSession.d.ts +1 -1
  178. package/dist/prisma/generated/models/DecisionLog.d.ts +1 -1
  179. package/dist/prisma/generated/models/PeriodicTask.d.ts +1 -1
  180. package/dist/prisma/generated/models/PeriodicTaskExecution.d.ts +1 -1
  181. package/dist/prisma/generated/models/Project.d.ts +1 -1
  182. package/dist/prisma/generated/models/SessionLifecycleEvent.d.ts +1 -1
  183. package/dist/prisma/generated/models/TerminalSession.d.ts +1 -1
  184. package/dist/prisma/generated/models/UserSettings.d.ts +316 -30
  185. package/dist/prisma/generated/models/UserSettings.d.ts.map +1 -1
  186. package/dist/prisma/generated/models/Workspace.d.ts +716 -263
  187. package/dist/prisma/generated/models/Workspace.d.ts.map +1 -1
  188. package/dist/prisma/generated/models/WorkspaceAutoIteration.d.ts +1 -1
  189. package/dist/prisma/generated/models/WorkspaceNotification.d.ts +1 -1
  190. package/dist/prisma/generated/models/WorkspacePR.d.ts +763 -156
  191. package/dist/prisma/generated/models/WorkspacePR.d.ts.map +1 -1
  192. package/dist/prisma/generated/models/WorkspacePRDedicatedSession.d.ts +469 -0
  193. package/dist/prisma/generated/models/WorkspacePRDedicatedSession.d.ts.map +1 -0
  194. package/dist/prisma/generated/models/WorkspacePRDedicatedSession.js +2 -0
  195. package/dist/prisma/generated/models/WorkspacePRDedicatedSession.js.map +1 -0
  196. package/dist/prisma/generated/models/WorkspacePRDiscovery.d.ts +493 -0
  197. package/dist/prisma/generated/models/WorkspacePRDiscovery.d.ts.map +1 -0
  198. package/dist/prisma/generated/models/WorkspacePRDiscovery.js +2 -0
  199. package/dist/prisma/generated/models/WorkspacePRDiscovery.js.map +1 -0
  200. package/dist/prisma/generated/models/WorkspacePREvent.d.ts +1180 -0
  201. package/dist/prisma/generated/models/WorkspacePREvent.d.ts.map +1 -0
  202. package/dist/prisma/generated/models/WorkspacePREvent.js +2 -0
  203. package/dist/prisma/generated/models/WorkspacePREvent.js.map +1 -0
  204. package/dist/prisma/generated/models/WorkspacePRMonitoring.d.ts +809 -0
  205. package/dist/prisma/generated/models/WorkspacePRMonitoring.d.ts.map +1 -0
  206. package/dist/prisma/generated/models/WorkspacePRMonitoring.js +2 -0
  207. package/dist/prisma/generated/models/WorkspacePRMonitoring.js.map +1 -0
  208. package/dist/prisma/generated/models/WorkspaceRunScript.d.ts +1 -1
  209. package/dist/prisma/generated/models.d.ts +4 -1
  210. package/dist/prisma/generated/models.d.ts.map +1 -1
  211. package/dist/prompts/adversarial-review/dispatch.md +93 -0
  212. package/dist/scripts/check-no-direct-process-env.d.mts.map +1 -1
  213. package/dist/scripts/check-no-direct-process-env.mjs +0 -2
  214. package/dist/scripts/check-no-direct-process-env.mjs.map +1 -1
  215. package/dist/src/backend/app-context.d.ts +9 -4
  216. package/dist/src/backend/app-context.d.ts.map +1 -1
  217. package/dist/src/backend/app-context.js +15 -9
  218. package/dist/src/backend/app-context.js.map +1 -1
  219. package/dist/src/backend/app-context.test.js +0 -1
  220. package/dist/src/backend/app-context.test.js.map +1 -1
  221. package/dist/src/backend/index.js +2 -10
  222. package/dist/src/backend/index.js.map +1 -1
  223. package/dist/src/backend/interceptors/branch-naming.interceptor.test.js +1 -1
  224. package/dist/src/backend/interceptors/branch-naming.interceptor.test.js.map +1 -1
  225. package/dist/src/backend/lib/codex-cli-command.d.ts +5 -0
  226. package/dist/src/backend/lib/codex-cli-command.d.ts.map +1 -0
  227. package/dist/src/backend/lib/codex-cli-command.js +10 -0
  228. package/dist/src/backend/lib/codex-cli-command.js.map +1 -0
  229. package/dist/src/backend/lib/request-trust.d.ts +1 -1
  230. package/dist/src/backend/lib/request-trust.d.ts.map +1 -1
  231. package/dist/src/backend/lib/request-trust.js +4 -1
  232. package/dist/src/backend/lib/request-trust.js.map +1 -1
  233. package/dist/src/backend/lib/request-trust.test.js +4 -0
  234. package/dist/src/backend/lib/request-trust.test.js.map +1 -1
  235. package/dist/src/backend/lib/workspace-derived-state.d.ts +5 -3
  236. package/dist/src/backend/lib/workspace-derived-state.d.ts.map +1 -1
  237. package/dist/src/backend/lib/workspace-derived-state.js +2 -7
  238. package/dist/src/backend/lib/workspace-derived-state.js.map +1 -1
  239. package/dist/src/backend/lib/workspace-derived-state.test.js +6 -21
  240. package/dist/src/backend/lib/workspace-derived-state.test.js.map +1 -1
  241. package/dist/src/backend/middleware/cors.middleware.d.ts.map +1 -1
  242. package/dist/src/backend/middleware/cors.middleware.js +3 -2
  243. package/dist/src/backend/middleware/cors.middleware.js.map +1 -1
  244. package/dist/src/backend/middleware/middleware.test.js +12 -0
  245. package/dist/src/backend/middleware/middleware.test.js.map +1 -1
  246. package/dist/src/backend/multiple-workspace-prs.migration.test.d.ts +2 -0
  247. package/dist/src/backend/multiple-workspace-prs.migration.test.d.ts.map +1 -0
  248. package/dist/src/backend/multiple-workspace-prs.migration.test.js +88 -0
  249. package/dist/src/backend/multiple-workspace-prs.migration.test.js.map +1 -0
  250. package/dist/src/backend/orchestration/adversarial-review-diff-line-index.d.ts +9 -0
  251. package/dist/src/backend/orchestration/adversarial-review-diff-line-index.d.ts.map +1 -0
  252. package/dist/src/backend/orchestration/adversarial-review-diff-line-index.js +87 -0
  253. package/dist/src/backend/orchestration/adversarial-review-diff-line-index.js.map +1 -0
  254. package/dist/src/backend/orchestration/adversarial-review-diff-line-index.test.d.ts +2 -0
  255. package/dist/src/backend/orchestration/adversarial-review-diff-line-index.test.d.ts.map +1 -0
  256. package/dist/src/backend/orchestration/adversarial-review-diff-line-index.test.js +91 -0
  257. package/dist/src/backend/orchestration/adversarial-review-diff-line-index.test.js.map +1 -0
  258. package/dist/src/backend/orchestration/adversarial-review-fallback.test.d.ts +2 -0
  259. package/dist/src/backend/orchestration/adversarial-review-fallback.test.d.ts.map +1 -0
  260. package/dist/src/backend/orchestration/adversarial-review-fallback.test.js +179 -0
  261. package/dist/src/backend/orchestration/adversarial-review-fallback.test.js.map +1 -0
  262. package/dist/src/backend/orchestration/adversarial-review.orchestrator.d.ts +15 -0
  263. package/dist/src/backend/orchestration/adversarial-review.orchestrator.d.ts.map +1 -0
  264. package/dist/src/backend/orchestration/adversarial-review.orchestrator.js +264 -0
  265. package/dist/src/backend/orchestration/adversarial-review.orchestrator.js.map +1 -0
  266. package/dist/src/backend/orchestration/adversarial-review.orchestrator.test.d.ts +2 -0
  267. package/dist/src/backend/orchestration/adversarial-review.orchestrator.test.d.ts.map +1 -0
  268. package/dist/src/backend/orchestration/adversarial-review.orchestrator.test.js +215 -0
  269. package/dist/src/backend/orchestration/adversarial-review.orchestrator.test.js.map +1 -0
  270. package/dist/src/backend/orchestration/cli-health.service.d.ts +0 -1
  271. package/dist/src/backend/orchestration/cli-health.service.d.ts.map +1 -1
  272. package/dist/src/backend/orchestration/cli-health.service.js +17 -22
  273. package/dist/src/backend/orchestration/cli-health.service.js.map +1 -1
  274. package/dist/src/backend/orchestration/cli-health.service.test.js +42 -41
  275. package/dist/src/backend/orchestration/cli-health.service.test.js.map +1 -1
  276. package/dist/src/backend/orchestration/data-backup-pr-events.d.ts +417 -0
  277. package/dist/src/backend/orchestration/data-backup-pr-events.d.ts.map +1 -0
  278. package/dist/src/backend/orchestration/data-backup-pr-events.js +77 -0
  279. package/dist/src/backend/orchestration/data-backup-pr-events.js.map +1 -0
  280. package/dist/src/backend/orchestration/data-backup.service.d.ts.map +1 -1
  281. package/dist/src/backend/orchestration/data-backup.service.js +125 -67
  282. package/dist/src/backend/orchestration/data-backup.service.js.map +1 -1
  283. package/dist/src/backend/orchestration/data-backup.service.test.js +124 -40
  284. package/dist/src/backend/orchestration/data-backup.service.test.js.map +1 -1
  285. package/dist/src/backend/orchestration/domain-bridges.orchestrator.d.ts +4 -5
  286. package/dist/src/backend/orchestration/domain-bridges.orchestrator.d.ts.map +1 -1
  287. package/dist/src/backend/orchestration/domain-bridges.orchestrator.js +35 -54
  288. package/dist/src/backend/orchestration/domain-bridges.orchestrator.js.map +1 -1
  289. package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.js +50 -116
  290. package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.js.map +1 -1
  291. package/dist/src/backend/orchestration/event-coalescer.integration.test.js +23 -5
  292. package/dist/src/backend/orchestration/event-coalescer.integration.test.js.map +1 -1
  293. package/dist/src/backend/orchestration/event-collector-pr-opened.test.d.ts +2 -0
  294. package/dist/src/backend/orchestration/event-collector-pr-opened.test.d.ts.map +1 -0
  295. package/dist/src/backend/orchestration/event-collector-pr-opened.test.js +65 -0
  296. package/dist/src/backend/orchestration/event-collector-pr-opened.test.js.map +1 -0
  297. package/dist/src/backend/orchestration/event-collector.idle-refresh.test.js +1 -0
  298. package/dist/src/backend/orchestration/event-collector.idle-refresh.test.js.map +1 -1
  299. package/dist/src/backend/orchestration/event-collector.linear.test.js +251 -15
  300. package/dist/src/backend/orchestration/event-collector.linear.test.js.map +1 -1
  301. package/dist/src/backend/orchestration/event-collector.orchestrator.d.ts +3 -0
  302. package/dist/src/backend/orchestration/event-collector.orchestrator.d.ts.map +1 -1
  303. package/dist/src/backend/orchestration/event-collector.orchestrator.js +121 -42
  304. package/dist/src/backend/orchestration/event-collector.orchestrator.js.map +1 -1
  305. package/dist/src/backend/orchestration/event-collector.orchestrator.test.js +27 -35
  306. package/dist/src/backend/orchestration/event-collector.orchestrator.test.js.map +1 -1
  307. package/dist/src/backend/orchestration/multiple-pr-attachment.integration.test.d.ts +2 -0
  308. package/dist/src/backend/orchestration/multiple-pr-attachment.integration.test.d.ts.map +1 -0
  309. package/dist/src/backend/orchestration/multiple-pr-attachment.integration.test.js +97 -0
  310. package/dist/src/backend/orchestration/multiple-pr-attachment.integration.test.js.map +1 -0
  311. package/dist/src/backend/orchestration/multiple-pr-backup.integration.test.d.ts +2 -0
  312. package/dist/src/backend/orchestration/multiple-pr-backup.integration.test.d.ts.map +1 -0
  313. package/dist/src/backend/orchestration/multiple-pr-backup.integration.test.js +532 -0
  314. package/dist/src/backend/orchestration/multiple-pr-backup.integration.test.js.map +1 -0
  315. package/dist/src/backend/orchestration/pr-attachment.integration.test.d.ts +2 -0
  316. package/dist/src/backend/orchestration/pr-attachment.integration.test.d.ts.map +1 -0
  317. package/dist/src/backend/orchestration/pr-attachment.integration.test.js +118 -0
  318. package/dist/src/backend/orchestration/pr-attachment.integration.test.js.map +1 -0
  319. package/dist/src/backend/orchestration/pr-dedicated-session.orchestrator.d.ts +9 -0
  320. package/dist/src/backend/orchestration/pr-dedicated-session.orchestrator.d.ts.map +1 -0
  321. package/dist/src/backend/orchestration/pr-dedicated-session.orchestrator.js +165 -0
  322. package/dist/src/backend/orchestration/pr-dedicated-session.orchestrator.js.map +1 -0
  323. package/dist/src/backend/orchestration/pr-dedicated-session.orchestrator.test.d.ts +2 -0
  324. package/dist/src/backend/orchestration/pr-dedicated-session.orchestrator.test.d.ts.map +1 -0
  325. package/dist/src/backend/orchestration/pr-dedicated-session.orchestrator.test.js +278 -0
  326. package/dist/src/backend/orchestration/pr-dedicated-session.orchestrator.test.js.map +1 -0
  327. package/dist/src/backend/orchestration/pr-delivery-dependencies.d.ts +5 -0
  328. package/dist/src/backend/orchestration/pr-delivery-dependencies.d.ts.map +1 -0
  329. package/dist/src/backend/orchestration/pr-delivery-dependencies.js +45 -0
  330. package/dist/src/backend/orchestration/pr-delivery-dependencies.js.map +1 -0
  331. package/dist/src/backend/orchestration/pr-delivery-readiness.d.ts +3 -0
  332. package/dist/src/backend/orchestration/pr-delivery-readiness.d.ts.map +1 -0
  333. package/dist/src/backend/orchestration/pr-delivery-readiness.js +21 -0
  334. package/dist/src/backend/orchestration/pr-delivery-readiness.js.map +1 -0
  335. package/dist/src/backend/orchestration/pr-delivery-readiness.test.d.ts +2 -0
  336. package/dist/src/backend/orchestration/pr-delivery-readiness.test.d.ts.map +1 -0
  337. package/dist/src/backend/orchestration/pr-delivery-readiness.test.js +34 -0
  338. package/dist/src/backend/orchestration/pr-delivery-readiness.test.js.map +1 -0
  339. package/dist/src/backend/orchestration/pr-delivery-recipient.d.ts +14 -0
  340. package/dist/src/backend/orchestration/pr-delivery-recipient.d.ts.map +1 -0
  341. package/dist/src/backend/orchestration/pr-delivery-recipient.js +15 -0
  342. package/dist/src/backend/orchestration/pr-delivery-recipient.js.map +1 -0
  343. package/dist/src/backend/orchestration/pr-delivery-recovery.d.ts +3 -0
  344. package/dist/src/backend/orchestration/pr-delivery-recovery.d.ts.map +1 -0
  345. package/dist/src/backend/orchestration/pr-delivery-recovery.js +68 -0
  346. package/dist/src/backend/orchestration/pr-delivery-recovery.js.map +1 -0
  347. package/dist/src/backend/orchestration/pr-event-delivery-port.d.ts +5 -0
  348. package/dist/src/backend/orchestration/pr-event-delivery-port.d.ts.map +1 -0
  349. package/dist/src/backend/orchestration/pr-event-delivery-port.js +101 -0
  350. package/dist/src/backend/orchestration/pr-event-delivery-port.js.map +1 -0
  351. package/dist/src/backend/orchestration/pr-event-delivery.orchestrator.d.ts +10 -0
  352. package/dist/src/backend/orchestration/pr-event-delivery.orchestrator.d.ts.map +1 -0
  353. package/dist/src/backend/orchestration/pr-event-delivery.orchestrator.js +235 -0
  354. package/dist/src/backend/orchestration/pr-event-delivery.orchestrator.js.map +1 -0
  355. package/dist/src/backend/orchestration/pr-event-delivery.orchestrator.test.d.ts +2 -0
  356. package/dist/src/backend/orchestration/pr-event-delivery.orchestrator.test.d.ts.map +1 -0
  357. package/dist/src/backend/orchestration/pr-event-delivery.orchestrator.test.js +524 -0
  358. package/dist/src/backend/orchestration/pr-event-delivery.orchestrator.test.js.map +1 -0
  359. package/dist/src/backend/orchestration/pr-event-flow.integration.test.d.ts +2 -0
  360. package/dist/src/backend/orchestration/pr-event-flow.integration.test.d.ts.map +1 -0
  361. package/dist/src/backend/orchestration/pr-event-flow.integration.test.js +299 -0
  362. package/dist/src/backend/orchestration/pr-event-flow.integration.test.js.map +1 -0
  363. package/dist/src/backend/orchestration/pr-event-projection.d.ts +17 -0
  364. package/dist/src/backend/orchestration/pr-event-projection.d.ts.map +1 -0
  365. package/dist/src/backend/orchestration/pr-event-projection.js +107 -0
  366. package/dist/src/backend/orchestration/pr-event-projection.js.map +1 -0
  367. package/dist/src/backend/orchestration/pr-event-projection.test.d.ts +2 -0
  368. package/dist/src/backend/orchestration/pr-event-projection.test.d.ts.map +1 -0
  369. package/dist/src/backend/orchestration/pr-event-projection.test.js +61 -0
  370. package/dist/src/backend/orchestration/pr-event-projection.test.js.map +1 -0
  371. package/dist/src/backend/orchestration/pr-monitoring-backup.integration.test.d.ts +2 -0
  372. package/dist/src/backend/orchestration/pr-monitoring-backup.integration.test.d.ts.map +1 -0
  373. package/dist/src/backend/orchestration/pr-monitoring-backup.integration.test.js +115 -0
  374. package/dist/src/backend/orchestration/pr-monitoring-backup.integration.test.js.map +1 -0
  375. package/dist/src/backend/orchestration/pr-monitoring-cutover.orchestrator.d.ts +6 -0
  376. package/dist/src/backend/orchestration/pr-monitoring-cutover.orchestrator.d.ts.map +1 -0
  377. package/dist/src/backend/orchestration/pr-monitoring-cutover.orchestrator.js +102 -0
  378. package/dist/src/backend/orchestration/pr-monitoring-cutover.orchestrator.js.map +1 -0
  379. package/dist/src/backend/orchestration/pr-monitoring-cutover.orchestrator.test.d.ts +2 -0
  380. package/dist/src/backend/orchestration/pr-monitoring-cutover.orchestrator.test.d.ts.map +1 -0
  381. package/dist/src/backend/orchestration/pr-monitoring-cutover.orchestrator.test.js +91 -0
  382. package/dist/src/backend/orchestration/pr-monitoring-cutover.orchestrator.test.js.map +1 -0
  383. package/dist/src/backend/orchestration/pr-monitoring-dependencies.d.ts +24 -0
  384. package/dist/src/backend/orchestration/pr-monitoring-dependencies.d.ts.map +1 -0
  385. package/dist/src/backend/orchestration/pr-monitoring-dependencies.js +51 -0
  386. package/dist/src/backend/orchestration/pr-monitoring-dependencies.js.map +1 -0
  387. package/dist/src/backend/orchestration/pr-monitoring-ports.d.ts +46 -0
  388. package/dist/src/backend/orchestration/pr-monitoring-ports.d.ts.map +1 -0
  389. package/dist/src/backend/orchestration/pr-monitoring-ports.js +2 -0
  390. package/dist/src/backend/orchestration/pr-monitoring-ports.js.map +1 -0
  391. package/dist/src/backend/orchestration/pr-monitoring.orchestrator.d.ts +24 -0
  392. package/dist/src/backend/orchestration/pr-monitoring.orchestrator.d.ts.map +1 -0
  393. package/dist/src/backend/orchestration/pr-monitoring.orchestrator.js +76 -0
  394. package/dist/src/backend/orchestration/pr-monitoring.orchestrator.js.map +1 -0
  395. package/dist/src/backend/orchestration/pr-monitoring.orchestrator.test.d.ts +2 -0
  396. package/dist/src/backend/orchestration/pr-monitoring.orchestrator.test.d.ts.map +1 -0
  397. package/dist/src/backend/orchestration/pr-monitoring.orchestrator.test.js +196 -0
  398. package/dist/src/backend/orchestration/pr-monitoring.orchestrator.test.js.map +1 -0
  399. package/dist/src/backend/orchestration/pr-observation.orchestrator.d.ts +6 -0
  400. package/dist/src/backend/orchestration/pr-observation.orchestrator.d.ts.map +1 -0
  401. package/dist/src/backend/orchestration/pr-observation.orchestrator.js +75 -0
  402. package/dist/src/backend/orchestration/pr-observation.orchestrator.js.map +1 -0
  403. package/dist/src/backend/orchestration/pr-observation.orchestrator.test.d.ts +2 -0
  404. package/dist/src/backend/orchestration/pr-observation.orchestrator.test.d.ts.map +1 -0
  405. package/dist/src/backend/orchestration/pr-observation.orchestrator.test.js +58 -0
  406. package/dist/src/backend/orchestration/pr-observation.orchestrator.test.js.map +1 -0
  407. package/dist/src/backend/orchestration/ratchet-projection.worker.d.ts +3 -1
  408. package/dist/src/backend/orchestration/ratchet-projection.worker.d.ts.map +1 -1
  409. package/dist/src/backend/orchestration/ratchet-projection.worker.js +13 -5
  410. package/dist/src/backend/orchestration/ratchet-projection.worker.js.map +1 -1
  411. package/dist/src/backend/orchestration/ratchet-projection.worker.test.js +39 -13
  412. package/dist/src/backend/orchestration/ratchet-projection.worker.test.js.map +1 -1
  413. package/dist/src/backend/orchestration/reconciliation.service.test.js +7 -1
  414. package/dist/src/backend/orchestration/reconciliation.service.test.js.map +1 -1
  415. package/dist/src/backend/orchestration/scheduler.service.d.ts.map +1 -1
  416. package/dist/src/backend/orchestration/scheduler.service.js +19 -19
  417. package/dist/src/backend/orchestration/scheduler.service.js.map +1 -1
  418. package/dist/src/backend/orchestration/scheduler.service.test.js +67 -44
  419. package/dist/src/backend/orchestration/scheduler.service.test.js.map +1 -1
  420. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.d.ts.map +1 -1
  421. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.js +17 -15
  422. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.js.map +1 -1
  423. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.test.js +34 -31
  424. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.test.js.map +1 -1
  425. package/dist/src/backend/orchestration/snapshot-reconciliation.streaming.test.js +7 -3
  426. package/dist/src/backend/orchestration/snapshot-reconciliation.streaming.test.js.map +1 -1
  427. package/dist/src/backend/orchestration/snapshot-reconciliation.test-helpers.d.ts.map +1 -1
  428. package/dist/src/backend/orchestration/snapshot-reconciliation.test-helpers.js +16 -7
  429. package/dist/src/backend/orchestration/snapshot-reconciliation.test-helpers.js.map +1 -1
  430. package/dist/src/backend/orchestration/workspace-archive.orchestrator.d.ts +1 -2
  431. package/dist/src/backend/orchestration/workspace-archive.orchestrator.d.ts.map +1 -1
  432. package/dist/src/backend/orchestration/workspace-archive.orchestrator.js +3 -2
  433. package/dist/src/backend/orchestration/workspace-archive.orchestrator.js.map +1 -1
  434. package/dist/src/backend/orchestration/workspace-archive.orchestrator.test.js +2 -0
  435. package/dist/src/backend/orchestration/workspace-archive.orchestrator.test.js.map +1 -1
  436. package/dist/src/backend/orchestration/workspace-children.orchestrator.d.ts.map +1 -1
  437. package/dist/src/backend/orchestration/workspace-children.orchestrator.js.map +1 -1
  438. package/dist/src/backend/orchestration/workspace-init-pr-binding.test.d.ts +2 -0
  439. package/dist/src/backend/orchestration/workspace-init-pr-binding.test.d.ts.map +1 -0
  440. package/dist/src/backend/orchestration/workspace-init-pr-binding.test.js +97 -0
  441. package/dist/src/backend/orchestration/workspace-init-pr-binding.test.js.map +1 -0
  442. package/dist/src/backend/orchestration/workspace-init-script-pipeline.d.ts +0 -2
  443. package/dist/src/backend/orchestration/workspace-init-script-pipeline.d.ts.map +1 -1
  444. package/dist/src/backend/orchestration/workspace-init-script-pipeline.js +2 -4
  445. package/dist/src/backend/orchestration/workspace-init-script-pipeline.js.map +1 -1
  446. package/dist/src/backend/orchestration/workspace-init.orchestrator.d.ts.map +1 -1
  447. package/dist/src/backend/orchestration/workspace-init.orchestrator.js +20 -4
  448. package/dist/src/backend/orchestration/workspace-init.orchestrator.js.map +1 -1
  449. package/dist/src/backend/orchestration/workspace-init.orchestrator.test.d.ts +1 -1
  450. package/dist/src/backend/orchestration/workspace-init.orchestrator.test.d.ts.map +1 -1
  451. package/dist/src/backend/orchestration/workspace-init.orchestrator.test.js +4 -163
  452. package/dist/src/backend/orchestration/workspace-init.orchestrator.test.js.map +1 -1
  453. package/dist/src/backend/orchestration/workspace-init.test-harness.d.ts +187 -0
  454. package/dist/src/backend/orchestration/workspace-init.test-harness.d.ts.map +1 -0
  455. package/dist/src/backend/orchestration/workspace-init.test-harness.js +170 -0
  456. package/dist/src/backend/orchestration/workspace-init.test-harness.js.map +1 -0
  457. package/dist/src/backend/orchestration/workspace-notification-delivery.orchestrator.test.js.map +1 -1
  458. package/dist/src/backend/orchestration/workspace-runtime-cleanup-notification.test.js +1 -0
  459. package/dist/src/backend/orchestration/workspace-runtime-cleanup-notification.test.js.map +1 -1
  460. package/dist/src/backend/pr-delivery-modes.migration.test.d.ts +2 -0
  461. package/dist/src/backend/pr-delivery-modes.migration.test.d.ts.map +1 -0
  462. package/dist/src/backend/pr-delivery-modes.migration.test.js +58 -0
  463. package/dist/src/backend/pr-delivery-modes.migration.test.js.map +1 -0
  464. package/dist/src/backend/pr-event-ledger.migration.test.d.ts +2 -0
  465. package/dist/src/backend/pr-event-ledger.migration.test.d.ts.map +1 -0
  466. package/dist/src/backend/pr-event-ledger.migration.test.js +119 -0
  467. package/dist/src/backend/pr-event-ledger.migration.test.js.map +1 -0
  468. package/dist/src/backend/prompts/adversarial-review-dispatch.d.ts +10 -0
  469. package/dist/src/backend/prompts/adversarial-review-dispatch.d.ts.map +1 -0
  470. package/dist/src/backend/prompts/adversarial-review-dispatch.js +60 -0
  471. package/dist/src/backend/prompts/adversarial-review-dispatch.js.map +1 -0
  472. package/dist/src/backend/prompts/adversarial-review-dispatch.test.d.ts +2 -0
  473. package/dist/src/backend/prompts/adversarial-review-dispatch.test.d.ts.map +1 -0
  474. package/dist/src/backend/prompts/adversarial-review-dispatch.test.js +119 -0
  475. package/dist/src/backend/prompts/adversarial-review-dispatch.test.js.map +1 -0
  476. package/dist/src/backend/prompts/adversarial-review-findings.schema.d.ts +36 -0
  477. package/dist/src/backend/prompts/adversarial-review-findings.schema.d.ts.map +1 -0
  478. package/dist/src/backend/prompts/adversarial-review-findings.schema.js +34 -0
  479. package/dist/src/backend/prompts/adversarial-review-findings.schema.js.map +1 -0
  480. package/dist/src/backend/prompts/adversarial-review-findings.schema.test.d.ts +2 -0
  481. package/dist/src/backend/prompts/adversarial-review-findings.schema.test.d.ts.map +1 -0
  482. package/dist/src/backend/prompts/adversarial-review-findings.schema.test.js +99 -0
  483. package/dist/src/backend/prompts/adversarial-review-findings.schema.test.js.map +1 -0
  484. package/dist/src/backend/prompts/pr-event.d.ts +17 -0
  485. package/dist/src/backend/prompts/pr-event.d.ts.map +1 -0
  486. package/dist/src/backend/prompts/pr-event.js +85 -0
  487. package/dist/src/backend/prompts/pr-event.js.map +1 -0
  488. package/dist/src/backend/prompts/pr-event.test.d.ts +2 -0
  489. package/dist/src/backend/prompts/pr-event.test.d.ts.map +1 -0
  490. package/dist/src/backend/prompts/pr-event.test.js +150 -0
  491. package/dist/src/backend/prompts/pr-event.test.js.map +1 -0
  492. package/dist/src/backend/routers/websocket/chat.handler.d.ts.map +1 -1
  493. package/dist/src/backend/routers/websocket/chat.handler.js +6 -1
  494. package/dist/src/backend/routers/websocket/chat.handler.js.map +1 -1
  495. package/dist/src/backend/routers/websocket/chat.handler.test.js +40 -1
  496. package/dist/src/backend/routers/websocket/chat.handler.test.js.map +1 -1
  497. package/dist/src/backend/routers/websocket/index.d.ts +2 -2
  498. package/dist/src/backend/routers/websocket/index.d.ts.map +1 -1
  499. package/dist/src/backend/routers/websocket/index.js +2 -2
  500. package/dist/src/backend/routers/websocket/index.js.map +1 -1
  501. package/dist/src/backend/routers/websocket/snapshots.handler.d.ts.map +1 -1
  502. package/dist/src/backend/routers/websocket/snapshots.handler.js.map +1 -1
  503. package/dist/src/backend/routers/websocket/upgrade-utils.d.ts.map +1 -1
  504. package/dist/src/backend/routers/websocket/upgrade-utils.js +5 -2
  505. package/dist/src/backend/routers/websocket/upgrade-utils.js.map +1 -1
  506. package/dist/src/backend/routers/websocket/upgrade-utils.test.js +33 -2
  507. package/dist/src/backend/routers/websocket/upgrade-utils.test.js.map +1 -1
  508. package/dist/src/backend/routers/websocket/websocket.integration.test.js +1 -1
  509. package/dist/src/backend/routers/websocket/websocket.integration.test.js.map +1 -1
  510. package/dist/src/backend/schemas/tool-inputs.schema.d.ts +4 -0
  511. package/dist/src/backend/schemas/tool-inputs.schema.d.ts.map +1 -1
  512. package/dist/src/backend/schemas/tool-inputs.schema.js +2 -0
  513. package/dist/src/backend/schemas/tool-inputs.schema.js.map +1 -1
  514. package/dist/src/backend/schemas/websocket/index.d.ts +1 -1
  515. package/dist/src/backend/schemas/websocket/index.d.ts.map +1 -1
  516. package/dist/src/backend/schemas/websocket/index.js +1 -1
  517. package/dist/src/backend/schemas/websocket/index.js.map +1 -1
  518. package/dist/src/backend/server.js +1 -1
  519. package/dist/src/backend/server.js.map +1 -1
  520. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.d.ts.map +1 -1
  521. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.js.map +1 -1
  522. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.test.js +69 -1
  523. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.test.js.map +1 -1
  524. package/dist/src/backend/services/auto-iteration/service/git-ops.d.ts.map +1 -1
  525. package/dist/src/backend/services/auto-iteration/service/git-ops.integration.test.js +88 -1
  526. package/dist/src/backend/services/auto-iteration/service/git-ops.integration.test.js.map +1 -1
  527. package/dist/src/backend/services/auto-iteration/service/git-ops.js +11 -25
  528. package/dist/src/backend/services/auto-iteration/service/git-ops.js.map +1 -1
  529. package/dist/src/backend/services/check-single-writer.test.js +51 -50
  530. package/dist/src/backend/services/check-single-writer.test.js.map +1 -1
  531. package/dist/src/backend/services/config.service.d.ts +1 -14
  532. package/dist/src/backend/services/config.service.d.ts.map +1 -1
  533. package/dist/src/backend/services/config.service.js +7 -38
  534. package/dist/src/backend/services/config.service.js.map +1 -1
  535. package/dist/src/backend/services/config.service.test.js +7 -13
  536. package/dist/src/backend/services/config.service.test.js.map +1 -1
  537. package/dist/src/backend/services/decision-log/resources/decision-log.accessor.d.ts +0 -9
  538. package/dist/src/backend/services/decision-log/resources/decision-log.accessor.d.ts.map +1 -1
  539. package/dist/src/backend/services/decision-log/resources/decision-log.accessor.js +0 -46
  540. package/dist/src/backend/services/decision-log/resources/decision-log.accessor.js.map +1 -1
  541. package/dist/src/backend/services/decision-log/service/decision-log.service.d.ts +0 -2
  542. package/dist/src/backend/services/decision-log/service/decision-log.service.d.ts.map +1 -1
  543. package/dist/src/backend/services/decision-log/service/decision-log.service.js +0 -6
  544. package/dist/src/backend/services/decision-log/service/decision-log.service.js.map +1 -1
  545. package/dist/src/backend/services/decision-log/service/decision-log.service.test.js +0 -12
  546. package/dist/src/backend/services/decision-log/service/decision-log.service.test.js.map +1 -1
  547. package/dist/src/backend/services/env-schemas.d.ts +1 -6
  548. package/dist/src/backend/services/env-schemas.d.ts.map +1 -1
  549. package/dist/src/backend/services/env-schemas.js +1 -3
  550. package/dist/src/backend/services/env-schemas.js.map +1 -1
  551. package/dist/src/backend/services/env-schemas.test.js +0 -2
  552. package/dist/src/backend/services/env-schemas.test.js.map +1 -1
  553. package/dist/src/backend/services/github/service/bridges.d.ts +24 -0
  554. package/dist/src/backend/services/github/service/bridges.d.ts.map +1 -1
  555. package/dist/src/backend/services/github/service/github-cli/auth-check.d.ts +7 -0
  556. package/dist/src/backend/services/github/service/github-cli/auth-check.d.ts.map +1 -0
  557. package/dist/src/backend/services/github/service/github-cli/auth-check.js +24 -0
  558. package/dist/src/backend/services/github/service/github-cli/auth-check.js.map +1 -0
  559. package/dist/src/backend/services/github/service/github-cli/auth-check.test.d.ts +2 -0
  560. package/dist/src/backend/services/github/service/github-cli/auth-check.test.d.ts.map +1 -0
  561. package/dist/src/backend/services/github/service/github-cli/auth-check.test.js +125 -0
  562. package/dist/src/backend/services/github/service/github-cli/auth-check.test.js.map +1 -0
  563. package/dist/src/backend/services/github/service/github-cli/code-review.d.ts +27 -0
  564. package/dist/src/backend/services/github/service/github-cli/code-review.d.ts.map +1 -0
  565. package/dist/src/backend/services/github/service/github-cli/code-review.js +144 -0
  566. package/dist/src/backend/services/github/service/github-cli/code-review.js.map +1 -0
  567. package/dist/src/backend/services/github/service/github-cli/code-review.test.d.ts +2 -0
  568. package/dist/src/backend/services/github/service/github-cli/code-review.test.d.ts.map +1 -0
  569. package/dist/src/backend/services/github/service/github-cli/code-review.test.js +80 -0
  570. package/dist/src/backend/services/github/service/github-cli/code-review.test.js.map +1 -0
  571. package/dist/src/backend/services/github/service/github-cli/constants.d.ts +3 -0
  572. package/dist/src/backend/services/github/service/github-cli/constants.d.ts.map +1 -1
  573. package/dist/src/backend/services/github/service/github-cli/constants.js +4 -0
  574. package/dist/src/backend/services/github/service/github-cli/constants.js.map +1 -1
  575. package/dist/src/backend/services/github/service/github-cli/mappers.d.ts +4 -2
  576. package/dist/src/backend/services/github/service/github-cli/mappers.d.ts.map +1 -1
  577. package/dist/src/backend/services/github/service/github-cli/mappers.js +14 -8
  578. package/dist/src/backend/services/github/service/github-cli/mappers.js.map +1 -1
  579. package/dist/src/backend/services/github/service/github-cli/mappers.test.d.ts +2 -0
  580. package/dist/src/backend/services/github/service/github-cli/mappers.test.d.ts.map +1 -0
  581. package/dist/src/backend/services/github/service/github-cli/mappers.test.js +76 -0
  582. package/dist/src/backend/services/github/service/github-cli/mappers.test.js.map +1 -0
  583. package/dist/src/backend/services/github/service/github-cli/resolved-review-comments.d.ts +7 -0
  584. package/dist/src/backend/services/github/service/github-cli/resolved-review-comments.d.ts.map +1 -0
  585. package/dist/src/backend/services/github/service/github-cli/resolved-review-comments.js +21 -0
  586. package/dist/src/backend/services/github/service/github-cli/resolved-review-comments.js.map +1 -0
  587. package/dist/src/backend/services/github/service/github-cli/reviews.d.ts +7 -0
  588. package/dist/src/backend/services/github/service/github-cli/reviews.d.ts.map +1 -0
  589. package/dist/src/backend/services/github/service/github-cli/reviews.js +24 -0
  590. package/dist/src/backend/services/github/service/github-cli/reviews.js.map +1 -0
  591. package/dist/src/backend/services/github/service/github-cli/reviews.test.d.ts +2 -0
  592. package/dist/src/backend/services/github/service/github-cli/reviews.test.d.ts.map +1 -0
  593. package/dist/src/backend/services/github/service/github-cli/reviews.test.js +98 -0
  594. package/dist/src/backend/services/github/service/github-cli/reviews.test.js.map +1 -0
  595. package/dist/src/backend/services/github/service/github-cli/schemas.d.ts +18 -11
  596. package/dist/src/backend/services/github/service/github-cli/schemas.d.ts.map +1 -1
  597. package/dist/src/backend/services/github/service/github-cli/schemas.js +17 -11
  598. package/dist/src/backend/services/github/service/github-cli/schemas.js.map +1 -1
  599. package/dist/src/backend/services/github/service/github-cli/types.d.ts +5 -0
  600. package/dist/src/backend/services/github/service/github-cli/types.d.ts.map +1 -1
  601. package/dist/src/backend/services/github/service/github-cli-full-details-buffer.test.d.ts +2 -0
  602. package/dist/src/backend/services/github/service/github-cli-full-details-buffer.test.d.ts.map +1 -0
  603. package/dist/src/backend/services/github/service/github-cli-full-details-buffer.test.js +130 -0
  604. package/dist/src/backend/services/github/service/github-cli-full-details-buffer.test.js.map +1 -0
  605. package/dist/src/backend/services/github/service/github-cli-pr-details.test.d.ts +2 -0
  606. package/dist/src/backend/services/github/service/github-cli-pr-details.test.d.ts.map +1 -0
  607. package/dist/src/backend/services/github/service/github-cli-pr-details.test.js +150 -0
  608. package/dist/src/backend/services/github/service/github-cli-pr-details.test.js.map +1 -0
  609. package/dist/src/backend/services/github/service/github-cli-review-authors.test.d.ts +2 -0
  610. package/dist/src/backend/services/github/service/github-cli-review-authors.test.d.ts.map +1 -0
  611. package/dist/src/backend/services/github/service/github-cli-review-authors.test.js +57 -0
  612. package/dist/src/backend/services/github/service/github-cli-review-authors.test.js.map +1 -0
  613. package/dist/src/backend/services/github/service/github-cli.service.d.ts +5 -2
  614. package/dist/src/backend/services/github/service/github-cli.service.d.ts.map +1 -1
  615. package/dist/src/backend/services/github/service/github-cli.service.js +29 -37
  616. package/dist/src/backend/services/github/service/github-cli.service.js.map +1 -1
  617. package/dist/src/backend/services/github/service/github-cli.service.test.js +24 -116
  618. package/dist/src/backend/services/github/service/github-cli.service.test.js.map +1 -1
  619. package/dist/src/backend/services/github/service/index.d.ts +5 -1
  620. package/dist/src/backend/services/github/service/index.d.ts.map +1 -1
  621. package/dist/src/backend/services/github/service/index.js +5 -1
  622. package/dist/src/backend/services/github/service/index.js.map +1 -1
  623. package/dist/src/backend/services/github/service/pr-actionable-review.d.ts +48 -0
  624. package/dist/src/backend/services/github/service/pr-actionable-review.d.ts.map +1 -0
  625. package/dist/src/backend/services/github/service/pr-actionable-review.js +144 -0
  626. package/dist/src/backend/services/github/service/pr-actionable-review.js.map +1 -0
  627. package/dist/src/backend/services/github/service/pr-actionable-review.test.d.ts +2 -0
  628. package/dist/src/backend/services/github/service/pr-actionable-review.test.d.ts.map +1 -0
  629. package/dist/src/backend/services/github/service/pr-actionable-review.test.js +377 -0
  630. package/dist/src/backend/services/github/service/pr-actionable-review.test.js.map +1 -0
  631. package/dist/src/backend/services/github/service/pr-fetch-coordinator.d.ts +5 -1
  632. package/dist/src/backend/services/github/service/pr-fetch-coordinator.d.ts.map +1 -1
  633. package/dist/src/backend/services/github/service/pr-fetch-coordinator.js +21 -3
  634. package/dist/src/backend/services/github/service/pr-fetch-coordinator.js.map +1 -1
  635. package/dist/src/backend/services/github/service/pr-observation.service.d.ts +19 -0
  636. package/dist/src/backend/services/github/service/pr-observation.service.d.ts.map +1 -0
  637. package/dist/src/backend/services/github/service/pr-observation.service.js +146 -0
  638. package/dist/src/backend/services/github/service/pr-observation.service.js.map +1 -0
  639. package/dist/src/backend/services/github/service/pr-observation.service.test.d.ts +2 -0
  640. package/dist/src/backend/services/github/service/pr-observation.service.test.d.ts.map +1 -0
  641. package/dist/src/backend/services/github/service/pr-observation.service.test.js +229 -0
  642. package/dist/src/backend/services/github/service/pr-observation.service.test.js.map +1 -0
  643. package/dist/src/backend/services/github/service/pr-snapshot-collection.service.test.d.ts +2 -0
  644. package/dist/src/backend/services/github/service/pr-snapshot-collection.service.test.d.ts.map +1 -0
  645. package/dist/src/backend/services/github/service/pr-snapshot-collection.service.test.js +291 -0
  646. package/dist/src/backend/services/github/service/pr-snapshot-collection.service.test.js.map +1 -0
  647. package/dist/src/backend/services/github/service/pr-snapshot.service.d.ts +35 -15
  648. package/dist/src/backend/services/github/service/pr-snapshot.service.d.ts.map +1 -1
  649. package/dist/src/backend/services/github/service/pr-snapshot.service.js +176 -195
  650. package/dist/src/backend/services/github/service/pr-snapshot.service.js.map +1 -1
  651. package/dist/src/backend/services/github/service/pr-snapshot.service.test.js +133 -632
  652. package/dist/src/backend/services/github/service/pr-snapshot.service.test.js.map +1 -1
  653. package/dist/src/backend/services/logger.service.d.ts +0 -4
  654. package/dist/src/backend/services/logger.service.d.ts.map +1 -1
  655. package/dist/src/backend/services/logger.service.js +0 -31
  656. package/dist/src/backend/services/logger.service.js.map +1 -1
  657. package/dist/src/backend/services/logger.service.test.js +0 -30
  658. package/dist/src/backend/services/logger.service.test.js.map +1 -1
  659. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.d.ts +1 -7
  660. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.d.ts.map +1 -1
  661. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.js +0 -21
  662. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.js.map +1 -1
  663. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.test.js +45 -38
  664. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.test.js.map +1 -1
  665. package/dist/src/backend/services/ratchet/service/index.d.ts +0 -3
  666. package/dist/src/backend/services/ratchet/service/index.d.ts.map +1 -1
  667. package/dist/src/backend/services/ratchet/service/index.js +0 -1
  668. package/dist/src/backend/services/ratchet/service/index.js.map +1 -1
  669. package/dist/src/backend/services/ratchet/service/ratchet-observation-watcher.test.d.ts +2 -0
  670. package/dist/src/backend/services/ratchet/service/ratchet-observation-watcher.test.d.ts.map +1 -0
  671. package/dist/src/backend/services/ratchet/service/ratchet-observation-watcher.test.js +179 -0
  672. package/dist/src/backend/services/ratchet/service/ratchet-observation-watcher.test.js.map +1 -0
  673. package/dist/src/backend/services/ratchet/service/ratchet.service.d.ts +80 -54
  674. package/dist/src/backend/services/ratchet/service/ratchet.service.d.ts.map +1 -1
  675. package/dist/src/backend/services/ratchet/service/ratchet.service.js +156 -547
  676. package/dist/src/backend/services/ratchet/service/ratchet.service.js.map +1 -1
  677. package/dist/src/backend/services/rate-limit-backoff.test.js.map +1 -1
  678. package/dist/src/backend/services/registry.d.ts +3 -3
  679. package/dist/src/backend/services/registry.d.ts.map +1 -1
  680. package/dist/src/backend/services/registry.js +13 -3
  681. package/dist/src/backend/services/registry.js.map +1 -1
  682. package/dist/src/backend/services/resources.integration.test.js +27 -262
  683. package/dist/src/backend/services/resources.integration.test.js.map +1 -1
  684. package/dist/src/backend/services/run-script/service/run-script.service.d.ts.map +1 -1
  685. package/dist/src/backend/services/run-script/service/run-script.service.js +12 -18
  686. package/dist/src/backend/services/run-script/service/run-script.service.js.map +1 -1
  687. package/dist/src/backend/services/run-script/service/run-script.service.test.js +14 -12
  688. package/dist/src/backend/services/run-script/service/run-script.service.test.js.map +1 -1
  689. package/dist/src/backend/services/run-script/service/startup-script.service.d.ts.map +1 -1
  690. package/dist/src/backend/services/run-script/service/startup-script.service.js.map +1 -1
  691. package/dist/src/backend/services/session/resources/agent-session.accessor.d.ts +13 -21
  692. package/dist/src/backend/services/session/resources/agent-session.accessor.d.ts.map +1 -1
  693. package/dist/src/backend/services/session/resources/agent-session.accessor.js +31 -59
  694. package/dist/src/backend/services/session/resources/agent-session.accessor.js.map +1 -1
  695. package/dist/src/backend/services/session/resources/agent-session.accessor.test.js +16 -3
  696. package/dist/src/backend/services/session/resources/agent-session.accessor.test.js.map +1 -1
  697. package/dist/src/backend/services/session/resources/closed-session.accessor.d.ts +1 -0
  698. package/dist/src/backend/services/session/resources/closed-session.accessor.d.ts.map +1 -1
  699. package/dist/src/backend/services/session/resources/closed-session.accessor.js +7 -0
  700. package/dist/src/backend/services/session/resources/closed-session.accessor.js.map +1 -1
  701. package/dist/src/backend/services/session/resources/pr-dedicated-session.accessor.d.ts +28 -0
  702. package/dist/src/backend/services/session/resources/pr-dedicated-session.accessor.d.ts.map +1 -0
  703. package/dist/src/backend/services/session/resources/pr-dedicated-session.accessor.js +131 -0
  704. package/dist/src/backend/services/session/resources/pr-dedicated-session.accessor.js.map +1 -0
  705. package/dist/src/backend/services/session/resources/pr-dedicated-session.accessor.test.d.ts +2 -0
  706. package/dist/src/backend/services/session/resources/pr-dedicated-session.accessor.test.d.ts.map +1 -0
  707. package/dist/src/backend/services/session/resources/pr-dedicated-session.accessor.test.js +217 -0
  708. package/dist/src/backend/services/session/resources/pr-dedicated-session.accessor.test.js.map +1 -0
  709. package/dist/src/backend/services/session/resources/provider-identity-rollover.integration.test.d.ts +2 -0
  710. package/dist/src/backend/services/session/resources/provider-identity-rollover.integration.test.d.ts.map +1 -0
  711. package/dist/src/backend/services/session/resources/provider-identity-rollover.integration.test.js +153 -0
  712. package/dist/src/backend/services/session/resources/provider-identity-rollover.integration.test.js.map +1 -0
  713. package/dist/src/backend/services/session/resources/session-lifecycle-event.accessor.d.ts +1 -1
  714. package/dist/src/backend/services/session/resources/session-lifecycle-event.accessor.d.ts.map +1 -1
  715. package/dist/src/backend/services/session/resources/session-lifecycle-event.accessor.js.map +1 -1
  716. package/dist/src/backend/services/session/service/acp/acp-client-factory.d.ts +1 -2
  717. package/dist/src/backend/services/session/service/acp/acp-client-factory.d.ts.map +1 -1
  718. package/dist/src/backend/services/session/service/acp/acp-client-factory.js +60 -29
  719. package/dist/src/backend/services/session/service/acp/acp-client-factory.js.map +1 -1
  720. package/dist/src/backend/services/session/service/acp/acp-client-factory.test.js +101 -19
  721. package/dist/src/backend/services/session/service/acp/acp-client-factory.test.js.map +1 -1
  722. package/dist/src/backend/services/session/service/acp/acp-client-handler.d.ts +5 -4
  723. package/dist/src/backend/services/session/service/acp/acp-client-handler.d.ts.map +1 -1
  724. package/dist/src/backend/services/session/service/acp/acp-client-handler.js +58 -100
  725. package/dist/src/backend/services/session/service/acp/acp-client-handler.js.map +1 -1
  726. package/dist/src/backend/services/session/service/acp/acp-client-handler.test.js +59 -195
  727. package/dist/src/backend/services/session/service/acp/acp-client-handler.test.js.map +1 -1
  728. package/dist/src/backend/services/session/service/acp/acp-configured-handle.d.ts +4 -0
  729. package/dist/src/backend/services/session/service/acp/acp-configured-handle.d.ts.map +1 -0
  730. package/dist/src/backend/services/session/service/acp/acp-configured-handle.js +14 -0
  731. package/dist/src/backend/services/session/service/acp/acp-configured-handle.js.map +1 -0
  732. package/dist/src/backend/services/session/service/acp/acp-elicitation-form.d.ts +8 -0
  733. package/dist/src/backend/services/session/service/acp/acp-elicitation-form.d.ts.map +1 -0
  734. package/dist/src/backend/services/session/service/acp/acp-elicitation-form.js +288 -0
  735. package/dist/src/backend/services/session/service/acp/acp-elicitation-form.js.map +1 -0
  736. package/dist/src/backend/services/session/service/acp/acp-elicitation.d.ts +3 -0
  737. package/dist/src/backend/services/session/service/acp/acp-elicitation.d.ts.map +1 -0
  738. package/dist/src/backend/services/session/service/acp/acp-elicitation.js +100 -0
  739. package/dist/src/backend/services/session/service/acp/acp-elicitation.js.map +1 -0
  740. package/dist/src/backend/services/session/service/acp/acp-elicitation.test.d.ts +2 -0
  741. package/dist/src/backend/services/session/service/acp/acp-elicitation.test.d.ts.map +1 -0
  742. package/dist/src/backend/services/session/service/acp/acp-elicitation.test.js +308 -0
  743. package/dist/src/backend/services/session/service/acp/acp-elicitation.test.js.map +1 -0
  744. package/dist/src/backend/services/session/service/acp/acp-native-session-tracker.d.ts +45 -0
  745. package/dist/src/backend/services/session/service/acp/acp-native-session-tracker.d.ts.map +1 -0
  746. package/dist/src/backend/services/session/service/acp/acp-native-session-tracker.js +346 -0
  747. package/dist/src/backend/services/session/service/acp/acp-native-session-tracker.js.map +1 -0
  748. package/dist/src/backend/services/session/service/acp/acp-native-session-tracker.test.d.ts +2 -0
  749. package/dist/src/backend/services/session/service/acp/acp-native-session-tracker.test.d.ts.map +1 -0
  750. package/dist/src/backend/services/session/service/acp/acp-native-session-tracker.test.js +404 -0
  751. package/dist/src/backend/services/session/service/acp/acp-native-session-tracker.test.js.map +1 -0
  752. package/dist/src/backend/services/session/service/acp/acp-permission-bridge.d.ts +3 -1
  753. package/dist/src/backend/services/session/service/acp/acp-permission-bridge.d.ts.map +1 -1
  754. package/dist/src/backend/services/session/service/acp/acp-permission-bridge.js +11 -2
  755. package/dist/src/backend/services/session/service/acp/acp-permission-bridge.js.map +1 -1
  756. package/dist/src/backend/services/session/service/acp/acp-permission-bridge.test.js +10 -0
  757. package/dist/src/backend/services/session/service/acp/acp-permission-bridge.test.js.map +1 -1
  758. package/dist/src/backend/services/session/service/acp/acp-process-handle.d.ts +18 -2
  759. package/dist/src/backend/services/session/service/acp/acp-process-handle.d.ts.map +1 -1
  760. package/dist/src/backend/services/session/service/acp/acp-process-handle.js +31 -1
  761. package/dist/src/backend/services/session/service/acp/acp-process-handle.js.map +1 -1
  762. package/dist/src/backend/services/session/service/acp/acp-process-handle.test.js +22 -3
  763. package/dist/src/backend/services/session/service/acp/acp-process-handle.test.js.map +1 -1
  764. package/dist/src/backend/services/session/service/acp/acp-prompt-controller.js +2 -2
  765. package/dist/src/backend/services/session/service/acp/acp-prompt-controller.js.map +1 -1
  766. package/dist/src/backend/services/session/service/acp/acp-prompt-controller.test.js +17 -0
  767. package/dist/src/backend/services/session/service/acp/acp-prompt-controller.test.js.map +1 -1
  768. package/dist/src/backend/services/session/service/acp/acp-prompt-readiness.d.ts +13 -0
  769. package/dist/src/backend/services/session/service/acp/acp-prompt-readiness.d.ts.map +1 -0
  770. package/dist/src/backend/services/session/service/acp/acp-prompt-readiness.js +48 -0
  771. package/dist/src/backend/services/session/service/acp/acp-prompt-readiness.js.map +1 -0
  772. package/dist/src/backend/services/session/service/acp/acp-runtime-config-controller.js +2 -2
  773. package/dist/src/backend/services/session/service/acp/acp-runtime-config-controller.js.map +1 -1
  774. package/dist/src/backend/services/session/service/acp/acp-runtime-error-handler.d.ts.map +1 -1
  775. package/dist/src/backend/services/session/service/acp/acp-runtime-error-handler.js +4 -1
  776. package/dist/src/backend/services/session/service/acp/acp-runtime-error-handler.js.map +1 -1
  777. package/dist/src/backend/services/session/service/acp/acp-runtime-events.d.ts +16 -0
  778. package/dist/src/backend/services/session/service/acp/acp-runtime-events.d.ts.map +1 -1
  779. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.creation.test.js +25 -24
  780. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.creation.test.js.map +1 -1
  781. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.d.ts +0 -1
  782. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.d.ts.map +1 -1
  783. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.js +10 -1
  784. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.js.map +1 -1
  785. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.manual.integration.test.js +21 -3
  786. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.manual.integration.test.js.map +1 -1
  787. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.readiness.test.d.ts +2 -0
  788. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.readiness.test.d.ts.map +1 -0
  789. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.readiness.test.js +208 -0
  790. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.readiness.test.js.map +1 -0
  791. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-harness.d.ts +3 -3
  792. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-harness.d.ts.map +1 -1
  793. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-harness.js.map +1 -1
  794. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-helpers.d.ts +3 -2
  795. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-helpers.d.ts.map +1 -1
  796. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-helpers.js +1 -0
  797. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-helpers.js.map +1 -1
  798. package/dist/src/backend/services/session/service/acp/acp-runtime-spawn.d.ts +3 -1
  799. package/dist/src/backend/services/session/service/acp/acp-runtime-spawn.d.ts.map +1 -1
  800. package/dist/src/backend/services/session/service/acp/acp-runtime-spawn.js +41 -86
  801. package/dist/src/backend/services/session/service/acp/acp-runtime-spawn.js.map +1 -1
  802. package/dist/src/backend/services/session/service/acp/acp-runtime-spawn.test.d.ts +2 -0
  803. package/dist/src/backend/services/session/service/acp/acp-runtime-spawn.test.d.ts.map +1 -0
  804. package/dist/src/backend/services/session/service/acp/acp-runtime-spawn.test.js +32 -0
  805. package/dist/src/backend/services/session/service/acp/acp-runtime-spawn.test.js.map +1 -0
  806. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.creation.test.js +220 -0
  807. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.creation.test.js.map +1 -1
  808. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.d.ts +1 -0
  809. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.d.ts.map +1 -1
  810. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.js +105 -23
  811. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.js.map +1 -1
  812. package/dist/src/backend/services/session/service/acp/acp-session-config-options.js +1 -1
  813. package/dist/src/backend/services/session/service/acp/acp-session-config-options.js.map +1 -1
  814. package/dist/src/backend/services/session/service/acp/acp-session-config-options.test.js +12 -0
  815. package/dist/src/backend/services/session/service/acp/acp-session-config-options.test.js.map +1 -1
  816. package/dist/src/backend/services/session/service/acp/acp-session-creation-outcome.d.ts +10 -0
  817. package/dist/src/backend/services/session/service/acp/acp-session-creation-outcome.d.ts.map +1 -0
  818. package/dist/src/backend/services/session/service/acp/acp-session-creation-outcome.js +2 -0
  819. package/dist/src/backend/services/session/service/acp/acp-session-creation-outcome.js.map +1 -0
  820. package/dist/src/backend/services/session/service/acp/acp-session-identity.d.ts +4 -0
  821. package/dist/src/backend/services/session/service/acp/acp-session-identity.d.ts.map +1 -0
  822. package/dist/src/backend/services/session/service/acp/acp-session-identity.js +9 -0
  823. package/dist/src/backend/services/session/service/acp/acp-session-identity.js.map +1 -0
  824. package/dist/src/backend/services/session/service/acp/acp-session-identity.test.d.ts +2 -0
  825. package/dist/src/backend/services/session/service/acp/acp-session-identity.test.d.ts.map +1 -0
  826. package/dist/src/backend/services/session/service/acp/acp-session-identity.test.js +8 -0
  827. package/dist/src/backend/services/session/service/acp/acp-session-identity.test.js.map +1 -0
  828. package/dist/src/backend/services/session/service/acp/acp-stream-normalizer.d.ts +2 -1
  829. package/dist/src/backend/services/session/service/acp/acp-stream-normalizer.d.ts.map +1 -1
  830. package/dist/src/backend/services/session/service/acp/acp-stream-normalizer.js +14 -8
  831. package/dist/src/backend/services/session/service/acp/acp-stream-normalizer.js.map +1 -1
  832. package/dist/src/backend/services/session/service/acp/acp-subagent-browser.d.ts.map +1 -1
  833. package/dist/src/backend/services/session/service/acp/acp-subagent-browser.js +8 -2
  834. package/dist/src/backend/services/session/service/acp/acp-subagent-browser.js.map +1 -1
  835. package/dist/src/backend/services/session/service/acp/acp-subagent-browser.test.js +72 -0
  836. package/dist/src/backend/services/session/service/acp/acp-subagent-browser.test.js.map +1 -1
  837. package/dist/src/backend/services/session/service/acp/acp-task-status-protocol.d.ts +8 -0
  838. package/dist/src/backend/services/session/service/acp/acp-task-status-protocol.d.ts.map +1 -0
  839. package/dist/src/backend/services/session/service/acp/acp-task-status-protocol.js +9 -0
  840. package/dist/src/backend/services/session/service/acp/acp-task-status-protocol.js.map +1 -0
  841. package/dist/src/backend/services/session/service/acp/claude-model-catalog-loader.d.ts.map +1 -1
  842. package/dist/src/backend/services/session/service/acp/claude-model-catalog-loader.js +1 -38
  843. package/dist/src/backend/services/session/service/acp/claude-model-catalog-loader.js.map +1 -1
  844. package/dist/src/backend/services/session/service/acp/codex-model-catalog-loader.d.ts +20 -0
  845. package/dist/src/backend/services/session/service/acp/codex-model-catalog-loader.d.ts.map +1 -0
  846. package/dist/src/backend/services/session/service/acp/codex-model-catalog-loader.js +150 -0
  847. package/dist/src/backend/services/session/service/acp/codex-model-catalog-loader.js.map +1 -0
  848. package/dist/src/backend/services/session/service/acp/codex-model-catalog-loader.test.d.ts +2 -0
  849. package/dist/src/backend/services/session/service/acp/codex-model-catalog-loader.test.d.ts.map +1 -0
  850. package/dist/src/backend/services/session/service/acp/codex-model-catalog-loader.test.js +141 -0
  851. package/dist/src/backend/services/session/service/acp/codex-model-catalog-loader.test.js.map +1 -0
  852. package/dist/src/backend/services/session/service/acp/index.d.ts +5 -4
  853. package/dist/src/backend/services/session/service/acp/index.d.ts.map +1 -1
  854. package/dist/src/backend/services/session/service/acp/index.js +4 -3
  855. package/dist/src/backend/services/session/service/acp/index.js.map +1 -1
  856. package/dist/src/backend/services/session/service/acp/types.d.ts +2 -0
  857. package/dist/src/backend/services/session/service/acp/types.d.ts.map +1 -1
  858. package/dist/src/backend/services/session/service/acp/upstream-codex.integration.test.d.ts +2 -0
  859. package/dist/src/backend/services/session/service/acp/upstream-codex.integration.test.d.ts.map +1 -0
  860. package/dist/src/backend/services/session/service/acp/upstream-codex.integration.test.js +94 -0
  861. package/dist/src/backend/services/session/service/acp/upstream-codex.integration.test.js.map +1 -0
  862. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.recovery.test.js +1 -0
  863. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.recovery.test.js.map +1 -1
  864. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.test.js +1 -0
  865. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.test.js.map +1 -1
  866. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/permission-response.handler.d.ts.map +1 -1
  867. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/permission-response.handler.js +1 -3
  868. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/permission-response.handler.js.map +1 -1
  869. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/permission-response.handler.test.js +2 -2
  870. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/permission-response.handler.test.js.map +1 -1
  871. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/queue-message.handler.d.ts.map +1 -1
  872. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/queue-message.handler.js +11 -1
  873. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/queue-message.handler.js.map +1 -1
  874. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/queue-message.handler.test.js +25 -0
  875. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/queue-message.handler.test.js.map +1 -1
  876. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/remove-queued-message.handler.d.ts.map +1 -1
  877. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/remove-queued-message.handler.js +7 -0
  878. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/remove-queued-message.handler.js.map +1 -1
  879. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/resume-queued-messages.handler.d.ts.map +1 -1
  880. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/resume-queued-messages.handler.js +6 -0
  881. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/resume-queued-messages.handler.js.map +1 -1
  882. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/resume-queued-messages.handler.test.d.ts +2 -0
  883. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/resume-queued-messages.handler.test.d.ts.map +1 -0
  884. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/resume-queued-messages.handler.test.js +52 -0
  885. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/resume-queued-messages.handler.test.js.map +1 -0
  886. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.d.ts.map +1 -1
  887. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.js +5 -0
  888. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.js.map +1 -1
  889. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.test.js +62 -0
  890. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.test.js.map +1 -1
  891. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/user-input.handler.d.ts.map +1 -1
  892. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/user-input.handler.js +5 -0
  893. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/user-input.handler.js.map +1 -1
  894. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/user-input.handler.test.js +46 -2
  895. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/user-input.handler.test.js.map +1 -1
  896. package/dist/src/backend/services/session/service/chat/chat-message-handlers/types.d.ts +8 -0
  897. package/dist/src/backend/services/session/service/chat/chat-message-handlers/types.d.ts.map +1 -1
  898. package/dist/src/backend/services/session/service/chat/chat-message-handlers.pr-events.test.d.ts +2 -0
  899. package/dist/src/backend/services/session/service/chat/chat-message-handlers.pr-events.test.d.ts.map +1 -0
  900. package/dist/src/backend/services/session/service/chat/chat-message-handlers.pr-events.test.js +389 -0
  901. package/dist/src/backend/services/session/service/chat/chat-message-handlers.pr-events.test.js.map +1 -0
  902. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.d.ts +3 -0
  903. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.d.ts.map +1 -1
  904. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.js +105 -15
  905. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.js.map +1 -1
  906. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.test.js +1 -0
  907. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.test.js.map +1 -1
  908. package/dist/src/backend/services/session/service/data/codex-session-history-loader.messages.test.d.ts +2 -0
  909. package/dist/src/backend/services/session/service/data/codex-session-history-loader.messages.test.d.ts.map +1 -0
  910. package/dist/src/backend/services/session/service/data/codex-session-history-loader.messages.test.js +198 -0
  911. package/dist/src/backend/services/session/service/data/codex-session-history-loader.messages.test.js.map +1 -0
  912. package/dist/src/backend/services/session/service/data/codex-session-history-loader.service.d.ts.map +1 -1
  913. package/dist/src/backend/services/session/service/data/codex-session-history-loader.service.js +81 -9
  914. package/dist/src/backend/services/session/service/data/codex-session-history-loader.service.js.map +1 -1
  915. package/dist/src/backend/services/session/service/data/session-data.dedicated.test.d.ts +2 -0
  916. package/dist/src/backend/services/session/service/data/session-data.dedicated.test.d.ts.map +1 -0
  917. package/dist/src/backend/services/session/service/data/session-data.dedicated.test.js +66 -0
  918. package/dist/src/backend/services/session/service/data/session-data.dedicated.test.js.map +1 -0
  919. package/dist/src/backend/services/session/service/data/session-data.service.d.ts +10 -10
  920. package/dist/src/backend/services/session/service/data/session-data.service.d.ts.map +1 -1
  921. package/dist/src/backend/services/session/service/data/session-data.service.js +33 -5
  922. package/dist/src/backend/services/session/service/data/session-data.service.js.map +1 -1
  923. package/dist/src/backend/services/session/service/data/session-data.service.test.js +19 -31
  924. package/dist/src/backend/services/session/service/data/session-data.service.test.js.map +1 -1
  925. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.d.ts.map +1 -1
  926. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.js.map +1 -1
  927. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.test.js +11 -2
  928. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.test.js.map +1 -1
  929. package/dist/src/backend/services/session/service/index.d.ts +7 -3
  930. package/dist/src/backend/services/session/service/index.d.ts.map +1 -1
  931. package/dist/src/backend/services/session/service/index.js +6 -2
  932. package/dist/src/backend/services/session/service/index.js.map +1 -1
  933. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.d.ts.map +1 -1
  934. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.js +63 -1
  935. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.js.map +1 -1
  936. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.test.js +54 -0
  937. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.test.js.map +1 -1
  938. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.d.ts +2 -0
  939. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.d.ts.map +1 -1
  940. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.js +8 -2
  941. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.js.map +1 -1
  942. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.slash-commands.test.js +1 -0
  943. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.slash-commands.test.js.map +1 -1
  944. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.text-streaming.test.js +1 -0
  945. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.text-streaming.test.js.map +1 -1
  946. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.tool-timeout.test.js +1 -0
  947. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.tool-timeout.test.js.map +1 -1
  948. package/dist/src/backend/services/session/service/lifecycle/adversarial-review-startup.test.d.ts +2 -0
  949. package/dist/src/backend/services/session/service/lifecycle/adversarial-review-startup.test.d.ts.map +1 -0
  950. package/dist/src/backend/services/session/service/lifecycle/adversarial-review-startup.test.js +419 -0
  951. package/dist/src/backend/services/session/service/lifecycle/adversarial-review-startup.test.js.map +1 -0
  952. package/dist/src/backend/services/session/service/lifecycle/claude-model-catalog.service.d.ts +7 -0
  953. package/dist/src/backend/services/session/service/lifecycle/claude-model-catalog.service.d.ts.map +1 -0
  954. package/dist/src/backend/services/session/service/lifecycle/claude-model-catalog.service.js +4 -0
  955. package/dist/src/backend/services/session/service/lifecycle/claude-model-catalog.service.js.map +1 -0
  956. package/dist/src/backend/services/session/service/lifecycle/claude-model-catalog.service.test.d.ts +2 -0
  957. package/dist/src/backend/services/session/service/lifecycle/claude-model-catalog.service.test.d.ts.map +1 -0
  958. package/dist/src/backend/services/session/service/lifecycle/claude-model-catalog.service.test.js +56 -0
  959. package/dist/src/backend/services/session/service/lifecycle/claude-model-catalog.service.test.js.map +1 -0
  960. package/dist/src/backend/services/session/service/lifecycle/closed-session-persistence.service.d.ts +3 -1
  961. package/dist/src/backend/services/session/service/lifecycle/closed-session-persistence.service.d.ts.map +1 -1
  962. package/dist/src/backend/services/session/service/lifecycle/closed-session-persistence.service.js +2 -1
  963. package/dist/src/backend/services/session/service/lifecycle/closed-session-persistence.service.js.map +1 -1
  964. package/dist/src/backend/services/session/service/lifecycle/closed-session-persistence.service.test.js +5 -0
  965. package/dist/src/backend/services/session/service/lifecycle/closed-session-persistence.service.test.js.map +1 -1
  966. package/dist/src/backend/services/session/service/lifecycle/codex-model-catalog.service.d.ts +2 -8
  967. package/dist/src/backend/services/session/service/lifecycle/codex-model-catalog.service.d.ts.map +1 -1
  968. package/dist/src/backend/services/session/service/lifecycle/codex-model-catalog.service.js +2 -23
  969. package/dist/src/backend/services/session/service/lifecycle/codex-model-catalog.service.js.map +1 -1
  970. package/dist/src/backend/services/session/service/lifecycle/model-catalog-cache.d.ts +10 -0
  971. package/dist/src/backend/services/session/service/lifecycle/model-catalog-cache.d.ts.map +1 -0
  972. package/dist/src/backend/services/session/service/lifecycle/model-catalog-cache.js +25 -0
  973. package/dist/src/backend/services/session/service/lifecycle/model-catalog-cache.js.map +1 -0
  974. package/dist/src/backend/services/session/service/lifecycle/session-background-delivery.service.d.ts +57 -0
  975. package/dist/src/backend/services/session/service/lifecycle/session-background-delivery.service.d.ts.map +1 -0
  976. package/dist/src/backend/services/session/service/lifecycle/session-background-delivery.service.js +133 -0
  977. package/dist/src/backend/services/session/service/lifecycle/session-background-delivery.service.js.map +1 -0
  978. package/dist/src/backend/services/session/service/lifecycle/session-background-delivery.service.test.d.ts +2 -0
  979. package/dist/src/backend/services/session/service/lifecycle/session-background-delivery.service.test.d.ts.map +1 -0
  980. package/dist/src/backend/services/session/service/lifecycle/session-background-delivery.service.test.js +224 -0
  981. package/dist/src/backend/services/session/service/lifecycle/session-background-delivery.service.test.js.map +1 -0
  982. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.d.ts.map +1 -1
  983. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.js +3 -1
  984. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.js.map +1 -1
  985. package/dist/src/backend/services/session/service/lifecycle/session-context.service.d.ts +2 -1
  986. package/dist/src/backend/services/session/service/lifecycle/session-context.service.d.ts.map +1 -1
  987. package/dist/src/backend/services/session/service/lifecycle/session-context.service.js +2 -2
  988. package/dist/src/backend/services/session/service/lifecycle/session-context.service.js.map +1 -1
  989. package/dist/src/backend/services/session/service/lifecycle/session-context.service.test.js +10 -3
  990. package/dist/src/backend/services/session/service/lifecycle/session-context.service.test.js.map +1 -1
  991. package/dist/src/backend/services/session/service/lifecycle/session-core-services.d.ts +5 -3
  992. package/dist/src/backend/services/session/service/lifecycle/session-core-services.d.ts.map +1 -1
  993. package/dist/src/backend/services/session/service/lifecycle/session-core-services.js +20 -8
  994. package/dist/src/backend/services/session/service/lifecycle/session-core-services.js.map +1 -1
  995. package/dist/src/backend/services/session/service/lifecycle/session-legacy-runtime-exit.test.d.ts +2 -0
  996. package/dist/src/backend/services/session/service/lifecycle/session-legacy-runtime-exit.test.d.ts.map +1 -0
  997. package/dist/src/backend/services/session/service/lifecycle/session-legacy-runtime-exit.test.js +227 -0
  998. package/dist/src/backend/services/session/service/lifecycle/session-legacy-runtime-exit.test.js.map +1 -0
  999. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.d.ts.map +1 -1
  1000. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.js +3 -3
  1001. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.js.map +1 -1
  1002. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.test.js +12 -2
  1003. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.test.js.map +1 -1
  1004. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-gate.test.js.map +1 -1
  1005. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.test-helpers.d.ts +7 -5
  1006. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.test-helpers.d.ts.map +1 -1
  1007. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.test-helpers.js +34 -5
  1008. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.test-helpers.js.map +1 -1
  1009. package/dist/src/backend/services/session/service/lifecycle/session-notification-delivery.service.d.ts +1 -1
  1010. package/dist/src/backend/services/session/service/lifecycle/session-notification-delivery.service.d.ts.map +1 -1
  1011. package/dist/src/backend/services/session/service/lifecycle/session-notification-delivery.service.js +3 -3
  1012. package/dist/src/backend/services/session/service/lifecycle/session-notification-delivery.service.js.map +1 -1
  1013. package/dist/src/backend/services/session/service/lifecycle/session-notification-delivery.service.test.js +10 -0
  1014. package/dist/src/backend/services/session/service/lifecycle/session-notification-delivery.service.test.js.map +1 -1
  1015. package/dist/src/backend/services/session/service/lifecycle/session-permission-policy.d.ts +7 -0
  1016. package/dist/src/backend/services/session/service/lifecycle/session-permission-policy.d.ts.map +1 -0
  1017. package/dist/src/backend/services/session/service/lifecycle/session-permission-policy.js +53 -0
  1018. package/dist/src/backend/services/session/service/lifecycle/session-permission-policy.js.map +1 -0
  1019. package/dist/src/backend/services/session/service/lifecycle/session-permission-policy.test.d.ts +2 -0
  1020. package/dist/src/backend/services/session/service/lifecycle/session-permission-policy.test.d.ts.map +1 -0
  1021. package/dist/src/backend/services/session/service/lifecycle/session-permission-policy.test.js +85 -0
  1022. package/dist/src/backend/services/session/service/lifecycle/session-permission-policy.test.js.map +1 -0
  1023. package/dist/src/backend/services/session/service/lifecycle/session-pr-receipt.d.ts +2 -0
  1024. package/dist/src/backend/services/session/service/lifecycle/session-pr-receipt.d.ts.map +1 -0
  1025. package/dist/src/backend/services/session/service/lifecycle/session-pr-receipt.js +115 -0
  1026. package/dist/src/backend/services/session/service/lifecycle/session-pr-receipt.js.map +1 -0
  1027. package/dist/src/backend/services/session/service/lifecycle/session-pr-receipt.test.d.ts +2 -0
  1028. package/dist/src/backend/services/session/service/lifecycle/session-pr-receipt.test.d.ts.map +1 -0
  1029. package/dist/src/backend/services/session/service/lifecycle/session-pr-receipt.test.js +137 -0
  1030. package/dist/src/backend/services/session/service/lifecycle/session-pr-receipt.test.js.map +1 -0
  1031. package/dist/src/backend/services/session/service/lifecycle/session-pr-resume-config.d.ts +4 -0
  1032. package/dist/src/backend/services/session/service/lifecycle/session-pr-resume-config.d.ts.map +1 -0
  1033. package/dist/src/backend/services/session/service/lifecycle/session-pr-resume-config.js +51 -0
  1034. package/dist/src/backend/services/session/service/lifecycle/session-pr-resume-config.js.map +1 -0
  1035. package/dist/src/backend/services/session/service/lifecycle/session-pr-resume-config.test.d.ts +2 -0
  1036. package/dist/src/backend/services/session/service/lifecycle/session-pr-resume-config.test.d.ts.map +1 -0
  1037. package/dist/src/backend/services/session/service/lifecycle/session-pr-resume-config.test.js +113 -0
  1038. package/dist/src/backend/services/session/service/lifecycle/session-pr-resume-config.test.js.map +1 -0
  1039. package/dist/src/backend/services/session/service/lifecycle/session-provider-history-hydrator.d.ts.map +1 -1
  1040. package/dist/src/backend/services/session/service/lifecycle/session-provider-history-hydrator.js +10 -1
  1041. package/dist/src/backend/services/session/service/lifecycle/session-provider-history-hydrator.js.map +1 -1
  1042. package/dist/src/backend/services/session/service/lifecycle/session-provider-history-hydrator.test.d.ts +2 -0
  1043. package/dist/src/backend/services/session/service/lifecycle/session-provider-history-hydrator.test.d.ts.map +1 -0
  1044. package/dist/src/backend/services/session/service/lifecycle/session-provider-history-hydrator.test.js +191 -0
  1045. package/dist/src/backend/services/session/service/lifecycle/session-provider-history-hydrator.test.js.map +1 -0
  1046. package/dist/src/backend/services/session/service/lifecycle/session-provider-identity.service.d.ts +16 -0
  1047. package/dist/src/backend/services/session/service/lifecycle/session-provider-identity.service.d.ts.map +1 -0
  1048. package/dist/src/backend/services/session/service/lifecycle/session-provider-identity.service.js +86 -0
  1049. package/dist/src/backend/services/session/service/lifecycle/session-provider-identity.service.js.map +1 -0
  1050. package/dist/src/backend/services/session/service/lifecycle/session-provider-identity.service.test.d.ts +2 -0
  1051. package/dist/src/backend/services/session/service/lifecycle/session-provider-identity.service.test.d.ts.map +1 -0
  1052. package/dist/src/backend/services/session/service/lifecycle/session-provider-identity.service.test.js +166 -0
  1053. package/dist/src/backend/services/session/service/lifecycle/session-provider-identity.service.test.js.map +1 -0
  1054. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.d.ts +5 -3
  1055. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.d.ts.map +1 -1
  1056. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.js +18 -2
  1057. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.js.map +1 -1
  1058. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.test.js +48 -1
  1059. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.test.js.map +1 -1
  1060. package/dist/src/backend/services/session/service/lifecycle/session-saved-native-modes.d.ts +6 -0
  1061. package/dist/src/backend/services/session/service/lifecycle/session-saved-native-modes.d.ts.map +1 -0
  1062. package/dist/src/backend/services/session/service/lifecycle/session-saved-native-modes.js +82 -0
  1063. package/dist/src/backend/services/session/service/lifecycle/session-saved-native-modes.js.map +1 -0
  1064. package/dist/src/backend/services/session/service/lifecycle/session-services.composition.test.js +4 -2
  1065. package/dist/src/backend/services/session/service/lifecycle/session-services.composition.test.js.map +1 -1
  1066. package/dist/src/backend/services/session/service/lifecycle/session-services.d.ts +2 -2
  1067. package/dist/src/backend/services/session/service/lifecycle/session-services.d.ts.map +1 -1
  1068. package/dist/src/backend/services/session/service/lifecycle/session-services.js +3 -2
  1069. package/dist/src/backend/services/session/service/lifecycle/session-services.js.map +1 -1
  1070. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.d.ts +21 -6
  1071. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.d.ts.map +1 -1
  1072. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.js +303 -84
  1073. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.js.map +1 -1
  1074. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.test.js +21 -12
  1075. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.test.js.map +1 -1
  1076. package/dist/src/backend/services/session/service/lifecycle/session-startup.guards.test.d.ts +2 -0
  1077. package/dist/src/backend/services/session/service/lifecycle/session-startup.guards.test.d.ts.map +1 -0
  1078. package/dist/src/backend/services/session/service/lifecycle/session-startup.guards.test.js +193 -0
  1079. package/dist/src/backend/services/session/service/lifecycle/session-startup.guards.test.js.map +1 -0
  1080. package/dist/src/backend/services/session/service/lifecycle/session-startup.pr-events.test.d.ts +2 -0
  1081. package/dist/src/backend/services/session/service/lifecycle/session-startup.pr-events.test.d.ts.map +1 -0
  1082. package/dist/src/backend/services/session/service/lifecycle/session-startup.pr-events.test.js +279 -0
  1083. package/dist/src/backend/services/session/service/lifecycle/session-startup.pr-events.test.js.map +1 -0
  1084. package/dist/src/backend/services/session/service/lifecycle/session-startup.saved-access.test.d.ts +2 -0
  1085. package/dist/src/backend/services/session/service/lifecycle/session-startup.saved-access.test.d.ts.map +1 -0
  1086. package/dist/src/backend/services/session/service/lifecycle/session-startup.saved-access.test.js +77 -0
  1087. package/dist/src/backend/services/session/service/lifecycle/session-startup.saved-access.test.js.map +1 -0
  1088. package/dist/src/backend/services/session/service/lifecycle/session-termination.coordinator.d.ts +5 -4
  1089. package/dist/src/backend/services/session/service/lifecycle/session-termination.coordinator.d.ts.map +1 -1
  1090. package/dist/src/backend/services/session/service/lifecycle/session-termination.coordinator.js +50 -11
  1091. package/dist/src/backend/services/session/service/lifecycle/session-termination.coordinator.js.map +1 -1
  1092. package/dist/src/backend/services/session/service/lifecycle/session-termination.coordinator.test.js +177 -8
  1093. package/dist/src/backend/services/session/service/lifecycle/session-termination.coordinator.test.js.map +1 -1
  1094. package/dist/src/backend/services/session/service/lifecycle/session-workflow-finalizer.d.ts +1 -1
  1095. package/dist/src/backend/services/session/service/lifecycle/session-workflow-finalizer.d.ts.map +1 -1
  1096. package/dist/src/backend/services/session/service/lifecycle/session-workflow-finalizer.js +5 -3
  1097. package/dist/src/backend/services/session/service/lifecycle/session-workflow-finalizer.js.map +1 -1
  1098. package/dist/src/backend/services/session/service/lifecycle/session-workflow-finalizer.test.js +21 -3
  1099. package/dist/src/backend/services/session/service/lifecycle/session-workflow-finalizer.test.js.map +1 -1
  1100. package/dist/src/backend/services/session/service/lifecycle/session-workflow-permissions.d.ts +3 -3
  1101. package/dist/src/backend/services/session/service/lifecycle/session-workflow-permissions.d.ts.map +1 -1
  1102. package/dist/src/backend/services/session/service/lifecycle/session-workflow-permissions.js +7 -4
  1103. package/dist/src/backend/services/session/service/lifecycle/session-workflow-permissions.js.map +1 -1
  1104. package/dist/src/backend/services/session/service/lifecycle/session-workflow-permissions.test.d.ts +2 -0
  1105. package/dist/src/backend/services/session/service/lifecycle/session-workflow-permissions.test.d.ts.map +1 -0
  1106. package/dist/src/backend/services/session/service/lifecycle/session-workflow-permissions.test.js +20 -0
  1107. package/dist/src/backend/services/session/service/lifecycle/session-workflow-permissions.test.js.map +1 -0
  1108. package/dist/src/backend/services/session/service/lifecycle/session.config-validation.test.js +2 -2
  1109. package/dist/src/backend/services/session/service/lifecycle/session.config-validation.test.js.map +1 -1
  1110. package/dist/src/backend/services/session/service/lifecycle/session.config.service.cached-options.test.js +31 -0
  1111. package/dist/src/backend/services/session/service/lifecycle/session.config.service.cached-options.test.js.map +1 -1
  1112. package/dist/src/backend/services/session/service/lifecycle/session.config.service.d.ts +7 -5
  1113. package/dist/src/backend/services/session/service/lifecycle/session.config.service.d.ts.map +1 -1
  1114. package/dist/src/backend/services/session/service/lifecycle/session.config.service.js +120 -143
  1115. package/dist/src/backend/services/session/service/lifecycle/session.config.service.js.map +1 -1
  1116. package/dist/src/backend/services/session/service/lifecycle/session.config.service.periodic-task.test.d.ts +2 -0
  1117. package/dist/src/backend/services/session/service/lifecycle/session.config.service.periodic-task.test.d.ts.map +1 -0
  1118. package/dist/src/backend/services/session/service/lifecycle/session.config.service.periodic-task.test.js +61 -0
  1119. package/dist/src/backend/services/session/service/lifecycle/session.config.service.periodic-task.test.js.map +1 -0
  1120. package/dist/src/backend/services/session/service/lifecycle/session.config.service.readiness.test.d.ts +2 -0
  1121. package/dist/src/backend/services/session/service/lifecycle/session.config.service.readiness.test.d.ts.map +1 -0
  1122. package/dist/src/backend/services/session/service/lifecycle/session.config.service.readiness.test.js +249 -0
  1123. package/dist/src/backend/services/session/service/lifecycle/session.config.service.readiness.test.js.map +1 -0
  1124. package/dist/src/backend/services/session/service/lifecycle/session.config.service.saved-access.test.d.ts +2 -0
  1125. package/dist/src/backend/services/session/service/lifecycle/session.config.service.saved-access.test.d.ts.map +1 -0
  1126. package/dist/src/backend/services/session/service/lifecycle/session.config.service.saved-access.test.js +313 -0
  1127. package/dist/src/backend/services/session/service/lifecycle/session.config.service.saved-access.test.js.map +1 -0
  1128. package/dist/src/backend/services/session/service/lifecycle/session.config.service.test.js +68 -82
  1129. package/dist/src/backend/services/session/service/lifecycle/session.config.service.test.js.map +1 -1
  1130. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.facade.test.js +2 -15
  1131. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.facade.test.js.map +1 -1
  1132. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.d.ts +1 -3
  1133. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.d.ts.map +1 -1
  1134. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.js +0 -4
  1135. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.js.map +1 -1
  1136. package/dist/src/backend/services/session/service/lifecycle/session.permission.question-classification.test.d.ts +2 -0
  1137. package/dist/src/backend/services/session/service/lifecycle/session.permission.question-classification.test.d.ts.map +1 -0
  1138. package/dist/src/backend/services/session/service/lifecycle/session.permission.question-classification.test.js +183 -0
  1139. package/dist/src/backend/services/session/service/lifecycle/session.permission.question-classification.test.js.map +1 -0
  1140. package/dist/src/backend/services/session/service/lifecycle/session.permission.service.d.ts +1 -2
  1141. package/dist/src/backend/services/session/service/lifecycle/session.permission.service.d.ts.map +1 -1
  1142. package/dist/src/backend/services/session/service/lifecycle/session.permission.service.js +27 -46
  1143. package/dist/src/backend/services/session/service/lifecycle/session.permission.service.js.map +1 -1
  1144. package/dist/src/backend/services/session/service/lifecycle/session.permission.service.test.js +64 -2
  1145. package/dist/src/backend/services/session/service/lifecycle/session.permission.service.test.js.map +1 -1
  1146. package/dist/src/backend/services/session/service/lifecycle/session.prompt.service.test.js +1 -1
  1147. package/dist/src/backend/services/session/service/lifecycle/session.prompt.service.test.js.map +1 -1
  1148. package/dist/src/backend/services/session/service/lifecycle/session.repository.d.ts +6 -2
  1149. package/dist/src/backend/services/session/service/lifecycle/session.repository.d.ts.map +1 -1
  1150. package/dist/src/backend/services/session/service/lifecycle/session.repository.js +61 -4
  1151. package/dist/src/backend/services/session/service/lifecycle/session.repository.js.map +1 -1
  1152. package/dist/src/backend/services/session/service/lifecycle/session.repository.test.js +98 -0
  1153. package/dist/src/backend/services/session/service/lifecycle/session.repository.test.js.map +1 -1
  1154. package/dist/src/backend/services/session/service/lifecycle/session.service.d.ts +1 -1
  1155. package/dist/src/backend/services/session/service/lifecycle/session.service.d.ts.map +1 -1
  1156. package/dist/src/backend/services/session/service/lifecycle/session.service.js.map +1 -1
  1157. package/dist/src/backend/services/session/service/lifecycle/session.service.test.js +26 -158
  1158. package/dist/src/backend/services/session/service/lifecycle/session.service.test.js.map +1 -1
  1159. package/dist/src/backend/services/session/service/session-domain.service.d.ts +7 -2
  1160. package/dist/src/backend/services/session/service/session-domain.service.d.ts.map +1 -1
  1161. package/dist/src/backend/services/session/service/session-domain.service.js +55 -15
  1162. package/dist/src/backend/services/session/service/session-domain.service.js.map +1 -1
  1163. package/dist/src/backend/services/session/service/session-domain.service.test.js +0 -7
  1164. package/dist/src/backend/services/session/service/session-domain.service.test.js.map +1 -1
  1165. package/dist/src/backend/services/session/service/session-resume-fence.d.ts +8 -0
  1166. package/dist/src/backend/services/session/service/session-resume-fence.d.ts.map +1 -0
  1167. package/dist/src/backend/services/session/service/session-resume-fence.js +19 -0
  1168. package/dist/src/backend/services/session/service/session-resume-fence.js.map +1 -0
  1169. package/dist/src/backend/services/session/service/store/session-queue.d.ts.map +1 -1
  1170. package/dist/src/backend/services/session/service/store/session-queue.js +7 -1
  1171. package/dist/src/backend/services/session/service/store/session-queue.js.map +1 -1
  1172. package/dist/src/backend/services/session/service/store/session-replay-builder.d.ts.map +1 -1
  1173. package/dist/src/backend/services/session/service/store/session-replay-builder.js +5 -3
  1174. package/dist/src/backend/services/session/service/store/session-replay-builder.js.map +1 -1
  1175. package/dist/src/backend/services/session/service/store/session-replay-builder.test.js +74 -0
  1176. package/dist/src/backend/services/session/service/store/session-replay-builder.test.js.map +1 -1
  1177. package/dist/src/backend/services/session/service/store/session-store-registry.d.ts +1 -0
  1178. package/dist/src/backend/services/session/service/store/session-store-registry.d.ts.map +1 -1
  1179. package/dist/src/backend/services/session/service/store/session-store-registry.js +3 -0
  1180. package/dist/src/backend/services/session/service/store/session-store-registry.js.map +1 -1
  1181. package/dist/src/backend/services/session/service/store/session-store.types.d.ts +3 -0
  1182. package/dist/src/backend/services/session/service/store/session-store.types.d.ts.map +1 -1
  1183. package/dist/src/backend/services/session/service/store/session-transcript.d.ts.map +1 -1
  1184. package/dist/src/backend/services/session/service/store/session-transcript.js +16 -0
  1185. package/dist/src/backend/services/session/service/store/session-transcript.js.map +1 -1
  1186. package/dist/src/backend/services/session/service/store/session-transcript.test.js +27 -0
  1187. package/dist/src/backend/services/session/service/store/session-transcript.test.js.map +1 -1
  1188. package/dist/src/backend/services/session/service/store/slash-command-cache.service.d.ts.map +1 -1
  1189. package/dist/src/backend/services/session/service/store/slash-command-cache.service.js.map +1 -1
  1190. package/dist/src/backend/services/session/service/voice/voice-narration.service.d.ts.map +1 -1
  1191. package/dist/src/backend/services/session/service/voice/voice-narration.service.js.map +1 -1
  1192. package/dist/src/backend/services/session/types.d.ts +15 -0
  1193. package/dist/src/backend/services/session/types.d.ts.map +1 -1
  1194. package/dist/src/backend/services/settings/resources/data-backup.accessor.d.ts +8 -2
  1195. package/dist/src/backend/services/settings/resources/data-backup.accessor.d.ts.map +1 -1
  1196. package/dist/src/backend/services/settings/resources/data-backup.accessor.js +8 -1
  1197. package/dist/src/backend/services/settings/resources/data-backup.accessor.js.map +1 -1
  1198. package/dist/src/backend/services/settings/resources/user-settings.accessor.d.ts +11 -1
  1199. package/dist/src/backend/services/settings/resources/user-settings.accessor.d.ts.map +1 -1
  1200. package/dist/src/backend/services/settings/resources/user-settings.accessor.js +48 -5
  1201. package/dist/src/backend/services/settings/resources/user-settings.accessor.js.map +1 -1
  1202. package/dist/src/backend/services/settings/resources/user-settings.accessor.test.js +31 -0
  1203. package/dist/src/backend/services/settings/resources/user-settings.accessor.test.js.map +1 -1
  1204. package/dist/src/backend/services/settings/service/index.d.ts +1 -0
  1205. package/dist/src/backend/services/settings/service/index.d.ts.map +1 -1
  1206. package/dist/src/backend/services/settings/service/index.js.map +1 -1
  1207. package/dist/src/backend/services/settings/service/user-settings.service.d.ts +11 -1
  1208. package/dist/src/backend/services/settings/service/user-settings.service.d.ts.map +1 -1
  1209. package/dist/src/backend/services/settings/service/user-settings.service.js.map +1 -1
  1210. package/dist/src/backend/services/terminal/resources/terminal-session.accessor.d.ts +1 -1
  1211. package/dist/src/backend/services/terminal/resources/terminal-session.accessor.d.ts.map +1 -1
  1212. package/dist/src/backend/services/terminal/resources/terminal-session.accessor.js.map +1 -1
  1213. package/dist/src/backend/services/terminal/service/terminal-session.service.d.ts +2 -3
  1214. package/dist/src/backend/services/terminal/service/terminal-session.service.d.ts.map +1 -1
  1215. package/dist/src/backend/services/terminal/service/terminal-session.service.js.map +1 -1
  1216. package/dist/src/backend/services/terminal/service/terminal.service.d.ts.map +1 -1
  1217. package/dist/src/backend/services/terminal/service/terminal.service.js +4 -1
  1218. package/dist/src/backend/services/terminal/service/terminal.service.js.map +1 -1
  1219. package/dist/src/backend/services/workspace/resources/project.accessor.d.ts +2 -2
  1220. package/dist/src/backend/services/workspace/resources/project.accessor.d.ts.map +1 -1
  1221. package/dist/src/backend/services/workspace/resources/project.accessor.js +1 -1
  1222. package/dist/src/backend/services/workspace/resources/project.accessor.js.map +1 -1
  1223. package/dist/src/backend/services/workspace/resources/workspace-auto-iteration.accessor.d.ts +1 -1
  1224. package/dist/src/backend/services/workspace/resources/workspace-auto-iteration.accessor.d.ts.map +1 -1
  1225. package/dist/src/backend/services/workspace/resources/workspace-auto-iteration.accessor.js.map +1 -1
  1226. package/dist/src/backend/services/workspace/resources/workspace-notification.accessor.d.ts.map +1 -1
  1227. package/dist/src/backend/services/workspace/resources/workspace-notification.accessor.js.map +1 -1
  1228. package/dist/src/backend/services/workspace/resources/workspace-pr-aggregate.accessor.d.ts +61 -0
  1229. package/dist/src/backend/services/workspace/resources/workspace-pr-aggregate.accessor.d.ts.map +1 -0
  1230. package/dist/src/backend/services/workspace/resources/workspace-pr-aggregate.accessor.js +35 -0
  1231. package/dist/src/backend/services/workspace/resources/workspace-pr-aggregate.accessor.js.map +1 -0
  1232. package/dist/src/backend/services/workspace/resources/workspace-pr-collection.accessor.integration.test.d.ts +2 -0
  1233. package/dist/src/backend/services/workspace/resources/workspace-pr-collection.accessor.integration.test.d.ts.map +1 -0
  1234. package/dist/src/backend/services/workspace/resources/workspace-pr-collection.accessor.integration.test.js +272 -0
  1235. package/dist/src/backend/services/workspace/resources/workspace-pr-collection.accessor.integration.test.js.map +1 -0
  1236. package/dist/src/backend/services/workspace/resources/workspace-pr-delivery-modes.accessor.integration.test.d.ts +2 -0
  1237. package/dist/src/backend/services/workspace/resources/workspace-pr-delivery-modes.accessor.integration.test.d.ts.map +1 -0
  1238. package/dist/src/backend/services/workspace/resources/workspace-pr-delivery-modes.accessor.integration.test.js +581 -0
  1239. package/dist/src/backend/services/workspace/resources/workspace-pr-delivery-modes.accessor.integration.test.js.map +1 -0
  1240. package/dist/src/backend/services/workspace/resources/workspace-pr-discovery.accessor.d.ts +73 -0
  1241. package/dist/src/backend/services/workspace/resources/workspace-pr-discovery.accessor.d.ts.map +1 -0
  1242. package/dist/src/backend/services/workspace/resources/workspace-pr-discovery.accessor.js +74 -0
  1243. package/dist/src/backend/services/workspace/resources/workspace-pr-discovery.accessor.js.map +1 -0
  1244. package/dist/src/backend/services/workspace/resources/workspace-pr-event-rollover.accessor.integration.test.d.ts +2 -0
  1245. package/dist/src/backend/services/workspace/resources/workspace-pr-event-rollover.accessor.integration.test.d.ts.map +1 -0
  1246. package/dist/src/backend/services/workspace/resources/workspace-pr-event-rollover.accessor.integration.test.js +176 -0
  1247. package/dist/src/backend/services/workspace/resources/workspace-pr-event-rollover.accessor.integration.test.js.map +1 -0
  1248. package/dist/src/backend/services/workspace/resources/workspace-pr-event.accessor.d.ts +75 -0
  1249. package/dist/src/backend/services/workspace/resources/workspace-pr-event.accessor.d.ts.map +1 -0
  1250. package/dist/src/backend/services/workspace/resources/workspace-pr-event.accessor.js +329 -0
  1251. package/dist/src/backend/services/workspace/resources/workspace-pr-event.accessor.js.map +1 -0
  1252. package/dist/src/backend/services/workspace/resources/workspace-pr-lifecycle.accessor.integration.test.d.ts +2 -0
  1253. package/dist/src/backend/services/workspace/resources/workspace-pr-lifecycle.accessor.integration.test.d.ts.map +1 -0
  1254. package/dist/src/backend/services/workspace/resources/workspace-pr-lifecycle.accessor.integration.test.js +437 -0
  1255. package/dist/src/backend/services/workspace/resources/workspace-pr-lifecycle.accessor.integration.test.js.map +1 -0
  1256. package/dist/src/backend/services/workspace/resources/workspace-pr-monitoring.accessor.d.ts +151 -0
  1257. package/dist/src/backend/services/workspace/resources/workspace-pr-monitoring.accessor.d.ts.map +1 -0
  1258. package/dist/src/backend/services/workspace/resources/workspace-pr-monitoring.accessor.integration.test.d.ts +2 -0
  1259. package/dist/src/backend/services/workspace/resources/workspace-pr-monitoring.accessor.integration.test.d.ts.map +1 -0
  1260. package/dist/src/backend/services/workspace/resources/workspace-pr-monitoring.accessor.integration.test.js +250 -0
  1261. package/dist/src/backend/services/workspace/resources/workspace-pr-monitoring.accessor.integration.test.js.map +1 -0
  1262. package/dist/src/backend/services/workspace/resources/workspace-pr-monitoring.accessor.js +275 -0
  1263. package/dist/src/backend/services/workspace/resources/workspace-pr-monitoring.accessor.js.map +1 -0
  1264. package/dist/src/backend/services/workspace/resources/workspace-pr.accessor.d.ts +204 -25
  1265. package/dist/src/backend/services/workspace/resources/workspace-pr.accessor.d.ts.map +1 -1
  1266. package/dist/src/backend/services/workspace/resources/workspace-pr.accessor.js +269 -164
  1267. package/dist/src/backend/services/workspace/resources/workspace-pr.accessor.js.map +1 -1
  1268. package/dist/src/backend/services/workspace/resources/workspace-pr.accessor.test.js +14 -339
  1269. package/dist/src/backend/services/workspace/resources/workspace-pr.accessor.test.js.map +1 -1
  1270. package/dist/src/backend/services/workspace/resources/workspace-ratchet.accessor.d.ts +52 -42
  1271. package/dist/src/backend/services/workspace/resources/workspace-ratchet.accessor.d.ts.map +1 -1
  1272. package/dist/src/backend/services/workspace/resources/workspace-ratchet.accessor.js +34 -176
  1273. package/dist/src/backend/services/workspace/resources/workspace-ratchet.accessor.js.map +1 -1
  1274. package/dist/src/backend/services/workspace/resources/workspace-ratchet.accessor.test.js +82 -334
  1275. package/dist/src/backend/services/workspace/resources/workspace-ratchet.accessor.test.js.map +1 -1
  1276. package/dist/src/backend/services/workspace/resources/workspace-run-script.accessor.d.ts +1 -1
  1277. package/dist/src/backend/services/workspace/resources/workspace-run-script.accessor.d.ts.map +1 -1
  1278. package/dist/src/backend/services/workspace/resources/workspace-run-script.accessor.js.map +1 -1
  1279. package/dist/src/backend/services/workspace/resources/workspace.accessor.d.ts +72 -36
  1280. package/dist/src/backend/services/workspace/resources/workspace.accessor.d.ts.map +1 -1
  1281. package/dist/src/backend/services/workspace/resources/workspace.accessor.js +86 -80
  1282. package/dist/src/backend/services/workspace/resources/workspace.accessor.js.map +1 -1
  1283. package/dist/src/backend/services/workspace/resources/workspace.accessor.test.js +76 -288
  1284. package/dist/src/backend/services/workspace/resources/workspace.accessor.test.js.map +1 -1
  1285. package/dist/src/backend/services/workspace/service/bridges.d.ts +2 -1
  1286. package/dist/src/backend/services/workspace/service/bridges.d.ts.map +1 -1
  1287. package/dist/src/backend/services/workspace/service/index.d.ts +4 -3
  1288. package/dist/src/backend/services/workspace/service/index.d.ts.map +1 -1
  1289. package/dist/src/backend/services/workspace/service/index.js +4 -3
  1290. package/dist/src/backend/services/workspace/service/index.js.map +1 -1
  1291. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.d.ts +1 -1
  1292. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.d.ts.map +1 -1
  1293. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.js.map +1 -1
  1294. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.test.js +33 -8
  1295. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.test.js.map +1 -1
  1296. package/dist/src/backend/services/workspace/service/lifecycle/data.service.d.ts +159 -77
  1297. package/dist/src/backend/services/workspace/service/lifecycle/data.service.d.ts.map +1 -1
  1298. package/dist/src/backend/services/workspace/service/lifecycle/data.service.js +4 -2
  1299. package/dist/src/backend/services/workspace/service/lifecycle/data.service.js.map +1 -1
  1300. package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.d.ts +1 -1
  1301. package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.d.ts.map +1 -1
  1302. package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.js.map +1 -1
  1303. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-monitoring.service.d.ts +174 -0
  1304. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-monitoring.service.d.ts.map +1 -0
  1305. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-monitoring.service.js +23 -0
  1306. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-monitoring.service.js.map +1 -0
  1307. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.d.ts +106 -2
  1308. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.d.ts.map +1 -1
  1309. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.integration.test.d.ts +2 -0
  1310. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.integration.test.d.ts.map +1 -0
  1311. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.integration.test.js +83 -0
  1312. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.integration.test.js.map +1 -0
  1313. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.js +24 -6
  1314. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.js.map +1 -1
  1315. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.test.js +2 -0
  1316. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.test.js.map +1 -1
  1317. package/dist/src/backend/services/workspace/service/lifecycle/workspace-relationships.service.d.ts +87 -52
  1318. package/dist/src/backend/services/workspace/service/lifecycle/workspace-relationships.service.d.ts.map +1 -1
  1319. package/dist/src/backend/services/workspace/service/lifecycle/workspace-run-script.service.d.ts +1 -1
  1320. package/dist/src/backend/services/workspace/service/lifecycle/workspace-run-script.service.d.ts.map +1 -1
  1321. package/dist/src/backend/services/workspace/service/lifecycle/workspace-run-script.service.js.map +1 -1
  1322. package/dist/src/backend/services/workspace/service/lifecycle/workspace-state-capabilities.test.js +0 -15
  1323. package/dist/src/backend/services/workspace/service/lifecycle/workspace-state-capabilities.test.js.map +1 -1
  1324. package/dist/src/backend/services/workspace/service/query/project-management.service.d.ts +6 -8
  1325. package/dist/src/backend/services/workspace/service/query/project-management.service.d.ts.map +1 -1
  1326. package/dist/src/backend/services/workspace/service/query/project-management.service.js.map +1 -1
  1327. package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.d.ts +232 -67
  1328. package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.d.ts.map +1 -1
  1329. package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.js +1 -1
  1330. package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.js.map +1 -1
  1331. package/dist/src/backend/services/workspace/service/query/workspace-notification.service.test.js.map +1 -1
  1332. package/dist/src/backend/services/workspace/service/query/workspace-query-git.service.test.d.ts +2 -0
  1333. package/dist/src/backend/services/workspace/service/query/workspace-query-git.service.test.d.ts.map +1 -0
  1334. package/dist/src/backend/services/workspace/service/query/workspace-query-git.service.test.js +51 -0
  1335. package/dist/src/backend/services/workspace/service/query/workspace-query-git.service.test.js.map +1 -0
  1336. package/dist/src/backend/services/workspace/service/query/workspace-query-pr-sync.test.d.ts +2 -0
  1337. package/dist/src/backend/services/workspace/service/query/workspace-query-pr-sync.test.d.ts.map +1 -0
  1338. package/dist/src/backend/services/workspace/service/query/workspace-query-pr-sync.test.js +128 -0
  1339. package/dist/src/backend/services/workspace/service/query/workspace-query-pr-sync.test.js.map +1 -0
  1340. package/dist/src/backend/services/workspace/service/query/workspace-query.service.d.ts +29 -3
  1341. package/dist/src/backend/services/workspace/service/query/workspace-query.service.d.ts.map +1 -1
  1342. package/dist/src/backend/services/workspace/service/query/workspace-query.service.js +42 -10
  1343. package/dist/src/backend/services/workspace/service/query/workspace-query.service.js.map +1 -1
  1344. package/dist/src/backend/services/workspace/service/query/workspace-query.service.test.js +92 -56
  1345. package/dist/src/backend/services/workspace/service/query/workspace-query.service.test.js.map +1 -1
  1346. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-pr-equality.test.d.ts +2 -0
  1347. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-pr-equality.test.d.ts.map +1 -0
  1348. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-pr-equality.test.js +41 -0
  1349. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-pr-equality.test.js.map +1 -0
  1350. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.pr-monitoring.test.d.ts +2 -0
  1351. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.pr-monitoring.test.d.ts.map +1 -0
  1352. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.pr-monitoring.test.js +80 -0
  1353. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.pr-monitoring.test.js.map +1 -0
  1354. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.prs.test.d.ts +2 -0
  1355. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.prs.test.d.ts.map +1 -0
  1356. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.prs.test.js +60 -0
  1357. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.prs.test.js.map +1 -0
  1358. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.d.ts +8 -4
  1359. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.d.ts.map +1 -1
  1360. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.js +27 -11
  1361. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.js.map +1 -1
  1362. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.test.js +24 -42
  1363. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.test.js.map +1 -1
  1364. package/dist/src/backend/services/workspace/service/state/flow-state.d.ts +1 -21
  1365. package/dist/src/backend/services/workspace/service/state/flow-state.d.ts.map +1 -1
  1366. package/dist/src/backend/services/workspace/service/state/flow-state.js +1 -107
  1367. package/dist/src/backend/services/workspace/service/state/flow-state.js.map +1 -1
  1368. package/dist/src/backend/services/workspace/service/state/pending-request-type.d.ts +1 -0
  1369. package/dist/src/backend/services/workspace/service/state/pending-request-type.d.ts.map +1 -1
  1370. package/dist/src/backend/services/workspace/service/state/pending-request-type.js +1 -1
  1371. package/dist/src/backend/services/workspace/service/state/pending-request-type.js.map +1 -1
  1372. package/dist/src/backend/services/workspace/service/state/pending-request-type.test.js +30 -2
  1373. package/dist/src/backend/services/workspace/service/state/pending-request-type.test.js.map +1 -1
  1374. package/dist/src/backend/services/workspace/service/workspace-domain-exports.test.js +2 -2
  1375. package/dist/src/backend/services/workspace/service/workspace-domain-exports.test.js.map +1 -1
  1376. package/dist/src/backend/services/workspace/service/worktree/git-clone.case-sensitivity.test.d.ts +2 -0
  1377. package/dist/src/backend/services/workspace/service/worktree/git-clone.case-sensitivity.test.d.ts.map +1 -0
  1378. package/dist/src/backend/services/workspace/service/worktree/git-clone.case-sensitivity.test.js +98 -0
  1379. package/dist/src/backend/services/workspace/service/worktree/git-clone.case-sensitivity.test.js.map +1 -0
  1380. package/dist/src/backend/services/workspace/service/worktree/git-clone.service.d.ts +16 -17
  1381. package/dist/src/backend/services/workspace/service/worktree/git-clone.service.d.ts.map +1 -1
  1382. package/dist/src/backend/services/workspace/service/worktree/git-clone.service.js +94 -45
  1383. package/dist/src/backend/services/workspace/service/worktree/git-clone.service.js.map +1 -1
  1384. package/dist/src/backend/services/workspace/service/worktree/git-clone.service.test.js +269 -0
  1385. package/dist/src/backend/services/workspace/service/worktree/git-clone.service.test.js.map +1 -1
  1386. package/dist/src/backend/services/workspace/service/worktree/orphaned-worktree-safety.d.ts +5 -0
  1387. package/dist/src/backend/services/workspace/service/worktree/orphaned-worktree-safety.d.ts.map +1 -0
  1388. package/dist/src/backend/services/workspace/service/worktree/orphaned-worktree-safety.js +58 -0
  1389. package/dist/src/backend/services/workspace/service/worktree/orphaned-worktree-safety.js.map +1 -0
  1390. package/dist/src/backend/services/workspace/service/worktree/orphaned-worktree-safety.test.d.ts +2 -0
  1391. package/dist/src/backend/services/workspace/service/worktree/orphaned-worktree-safety.test.d.ts.map +1 -0
  1392. package/dist/src/backend/services/workspace/service/worktree/orphaned-worktree-safety.test.js +221 -0
  1393. package/dist/src/backend/services/workspace/service/worktree/orphaned-worktree-safety.test.js.map +1 -0
  1394. package/dist/src/backend/services/workspace/service/worktree/orphaned-worktree.service.d.ts +22 -0
  1395. package/dist/src/backend/services/workspace/service/worktree/orphaned-worktree.service.d.ts.map +1 -0
  1396. package/dist/src/backend/services/workspace/service/worktree/orphaned-worktree.service.js +154 -0
  1397. package/dist/src/backend/services/workspace/service/worktree/orphaned-worktree.service.js.map +1 -0
  1398. package/dist/src/backend/services/workspace/service/worktree/orphaned-worktree.service.test.d.ts +2 -0
  1399. package/dist/src/backend/services/workspace/service/worktree/orphaned-worktree.service.test.d.ts.map +1 -0
  1400. package/dist/src/backend/services/workspace/service/worktree/orphaned-worktree.service.test.js +108 -0
  1401. package/dist/src/backend/services/workspace/service/worktree/orphaned-worktree.service.test.js.map +1 -0
  1402. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.test.js +1 -1
  1403. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.test.js.map +1 -1
  1404. package/dist/src/backend/services/workspace/types.d.ts +6 -1
  1405. package/dist/src/backend/services/workspace/types.d.ts.map +1 -1
  1406. package/dist/src/backend/services/workspace-depth-triggers.integration.test.js.map +1 -1
  1407. package/dist/src/backend/services/workspace-git-state.concurrency.test.d.ts +2 -0
  1408. package/dist/src/backend/services/workspace-git-state.concurrency.test.d.ts.map +1 -0
  1409. package/dist/src/backend/services/workspace-git-state.concurrency.test.js +262 -0
  1410. package/dist/src/backend/services/workspace-git-state.concurrency.test.js.map +1 -0
  1411. package/dist/src/backend/services/workspace-git-state.service.d.ts +1 -0
  1412. package/dist/src/backend/services/workspace-git-state.service.d.ts.map +1 -1
  1413. package/dist/src/backend/services/workspace-git-state.service.js +34 -25
  1414. package/dist/src/backend/services/workspace-git-state.service.js.map +1 -1
  1415. package/dist/src/backend/shutdown-signal-handlers.d.ts +16 -0
  1416. package/dist/src/backend/shutdown-signal-handlers.d.ts.map +1 -0
  1417. package/dist/src/backend/shutdown-signal-handlers.js +18 -0
  1418. package/dist/src/backend/shutdown-signal-handlers.js.map +1 -0
  1419. package/dist/src/backend/shutdown-signal-handlers.test.d.ts +2 -0
  1420. package/dist/src/backend/shutdown-signal-handlers.test.d.ts.map +1 -0
  1421. package/dist/src/backend/shutdown-signal-handlers.test.js +58 -0
  1422. package/dist/src/backend/shutdown-signal-handlers.test.js.map +1 -0
  1423. package/dist/src/backend/testing/check-lint-suppressions-script.test.d.ts +2 -0
  1424. package/dist/src/backend/testing/check-lint-suppressions-script.test.d.ts.map +1 -0
  1425. package/dist/src/backend/testing/check-lint-suppressions-script.test.js +120 -0
  1426. package/dist/src/backend/testing/check-lint-suppressions-script.test.js.map +1 -0
  1427. package/dist/src/backend/testing/dependency-security-patches.test.d.ts +2 -0
  1428. package/dist/src/backend/testing/dependency-security-patches.test.d.ts.map +1 -0
  1429. package/dist/src/backend/testing/dependency-security-patches.test.js +65 -0
  1430. package/dist/src/backend/testing/dependency-security-patches.test.js.map +1 -0
  1431. package/dist/src/backend/testing/fixtures/fake-codex-app-server.d.mts +3 -0
  1432. package/dist/src/backend/testing/fixtures/fake-codex-app-server.d.mts.map +1 -0
  1433. package/dist/src/backend/testing/fixtures/fake-codex-app-server.mjs +125 -0
  1434. package/dist/src/backend/testing/fixtures/fake-codex-app-server.mjs.map +1 -0
  1435. package/dist/src/backend/testing/integration-db.d.ts.map +1 -1
  1436. package/dist/src/backend/testing/integration-db.js +1 -1
  1437. package/dist/src/backend/testing/integration-db.js.map +1 -1
  1438. package/dist/src/backend/testing/lint-migration-parity.test.d.ts +2 -0
  1439. package/dist/src/backend/testing/lint-migration-parity.test.d.ts.map +1 -0
  1440. package/dist/src/backend/testing/lint-migration-parity.test.js +71 -0
  1441. package/dist/src/backend/testing/lint-migration-parity.test.js.map +1 -0
  1442. package/dist/src/backend/testing/npm-publish-workflow.test.js +4 -3
  1443. package/dist/src/backend/testing/npm-publish-workflow.test.js.map +1 -1
  1444. package/dist/src/backend/testing/oxlint-factory-rules.test.d.ts +2 -0
  1445. package/dist/src/backend/testing/oxlint-factory-rules.test.d.ts.map +1 -0
  1446. package/dist/src/backend/testing/oxlint-factory-rules.test.js +71 -0
  1447. package/dist/src/backend/testing/oxlint-factory-rules.test.js.map +1 -0
  1448. package/dist/src/backend/testing/pr-projection-fixture.d.ts +18 -0
  1449. package/dist/src/backend/testing/pr-projection-fixture.d.ts.map +1 -0
  1450. package/dist/src/backend/testing/pr-projection-fixture.js +11 -0
  1451. package/dist/src/backend/testing/pr-projection-fixture.js.map +1 -0
  1452. package/dist/src/backend/trpc/admin.router.test.js +31 -1
  1453. package/dist/src/backend/trpc/admin.router.test.js.map +1 -1
  1454. package/dist/src/backend/trpc/admin.trpc.d.ts +1962 -5
  1455. package/dist/src/backend/trpc/admin.trpc.d.ts.map +1 -1
  1456. package/dist/src/backend/trpc/admin.trpc.js +2 -0
  1457. package/dist/src/backend/trpc/admin.trpc.js.map +1 -1
  1458. package/dist/src/backend/trpc/adversarial-review.trpc.d.ts +26 -0
  1459. package/dist/src/backend/trpc/adversarial-review.trpc.d.ts.map +1 -0
  1460. package/dist/src/backend/trpc/adversarial-review.trpc.js +10 -0
  1461. package/dist/src/backend/trpc/adversarial-review.trpc.js.map +1 -0
  1462. package/dist/src/backend/trpc/github.router.test.js +0 -37
  1463. package/dist/src/backend/trpc/github.router.test.js.map +1 -1
  1464. package/dist/src/backend/trpc/github.trpc.d.ts +0 -29
  1465. package/dist/src/backend/trpc/github.trpc.d.ts.map +1 -1
  1466. package/dist/src/backend/trpc/github.trpc.js +0 -56
  1467. package/dist/src/backend/trpc/github.trpc.js.map +1 -1
  1468. package/dist/src/backend/trpc/index.d.ts +2219 -263
  1469. package/dist/src/backend/trpc/index.d.ts.map +1 -1
  1470. package/dist/src/backend/trpc/index.js +2 -0
  1471. package/dist/src/backend/trpc/index.js.map +1 -1
  1472. package/dist/src/backend/trpc/model-catalog.integration.test.js +1 -1
  1473. package/dist/src/backend/trpc/model-catalog.integration.test.js.map +1 -1
  1474. package/dist/src/backend/trpc/project.router.test.js +85 -10
  1475. package/dist/src/backend/trpc/project.router.test.js.map +1 -1
  1476. package/dist/src/backend/trpc/project.slash-command-precedence.test.d.ts +2 -0
  1477. package/dist/src/backend/trpc/project.slash-command-precedence.test.d.ts.map +1 -0
  1478. package/dist/src/backend/trpc/project.slash-command-precedence.test.js +69 -0
  1479. package/dist/src/backend/trpc/project.slash-command-precedence.test.js.map +1 -0
  1480. package/dist/src/backend/trpc/project.trpc.d.ts +13 -12
  1481. package/dist/src/backend/trpc/project.trpc.d.ts.map +1 -1
  1482. package/dist/src/backend/trpc/project.trpc.js +10 -7
  1483. package/dist/src/backend/trpc/project.trpc.js.map +1 -1
  1484. package/dist/src/backend/trpc/session.router.test.js +1 -1
  1485. package/dist/src/backend/trpc/session.router.test.js.map +1 -1
  1486. package/dist/src/backend/trpc/session.trpc.d.ts +2 -2
  1487. package/dist/src/backend/trpc/session.trpc.d.ts.map +1 -1
  1488. package/dist/src/backend/trpc/session.trpc.js +1 -1
  1489. package/dist/src/backend/trpc/session.trpc.js.map +1 -1
  1490. package/dist/src/backend/trpc/trpc.d.ts.map +1 -1
  1491. package/dist/src/backend/trpc/trpc.js +1 -1
  1492. package/dist/src/backend/trpc/trpc.js.map +1 -1
  1493. package/dist/src/backend/trpc/user-settings.router.test.js +66 -10
  1494. package/dist/src/backend/trpc/user-settings.router.test.js.map +1 -1
  1495. package/dist/src/backend/trpc/user-settings.trpc.d.ts +38 -8
  1496. package/dist/src/backend/trpc/user-settings.trpc.d.ts.map +1 -1
  1497. package/dist/src/backend/trpc/user-settings.trpc.js +19 -8
  1498. package/dist/src/backend/trpc/user-settings.trpc.js.map +1 -1
  1499. package/dist/src/backend/trpc/workspace/children.trpc.d.ts +23 -2
  1500. package/dist/src/backend/trpc/workspace/children.trpc.d.ts.map +1 -1
  1501. package/dist/src/backend/trpc/workspace/children.trpc.js +5 -1
  1502. package/dist/src/backend/trpc/workspace/children.trpc.js.map +1 -1
  1503. package/dist/src/backend/trpc/workspace/init.router.test.js +0 -2
  1504. package/dist/src/backend/trpc/workspace/init.router.test.js.map +1 -1
  1505. package/dist/src/backend/trpc/workspace/init.trpc.d.ts +40 -22
  1506. package/dist/src/backend/trpc/workspace/init.trpc.d.ts.map +1 -1
  1507. package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts +78 -43
  1508. package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts.map +1 -1
  1509. package/dist/src/backend/trpc/workspace-pr-actions.test.d.ts +2 -0
  1510. package/dist/src/backend/trpc/workspace-pr-actions.test.d.ts.map +1 -0
  1511. package/dist/src/backend/trpc/workspace-pr-actions.test.js +48 -0
  1512. package/dist/src/backend/trpc/workspace-pr-actions.test.js.map +1 -0
  1513. package/dist/src/backend/trpc/workspace.router.test.js +48 -6
  1514. package/dist/src/backend/trpc/workspace.router.test.js.map +1 -1
  1515. package/dist/src/backend/trpc/workspace.trpc.d.ts +292 -387
  1516. package/dist/src/backend/trpc/workspace.trpc.d.ts.map +1 -1
  1517. package/dist/src/backend/trpc/workspace.trpc.js +52 -38
  1518. package/dist/src/backend/trpc/workspace.trpc.js.map +1 -1
  1519. package/dist/src/cli/codex.d.ts +4 -0
  1520. package/dist/src/cli/codex.d.ts.map +1 -0
  1521. package/dist/src/cli/codex.js +50 -0
  1522. package/dist/src/cli/codex.js.map +1 -0
  1523. package/dist/src/cli/codex.test.d.ts +2 -0
  1524. package/dist/src/cli/codex.test.d.ts.map +1 -0
  1525. package/dist/src/cli/codex.test.js +64 -0
  1526. package/dist/src/cli/codex.test.js.map +1 -0
  1527. package/dist/src/cli/index.js +7 -10
  1528. package/dist/src/cli/index.js.map +1 -1
  1529. package/dist/src/shared/acp-protocol/protocol/interaction.d.ts +6 -0
  1530. package/dist/src/shared/acp-protocol/protocol/interaction.d.ts.map +1 -1
  1531. package/dist/src/shared/acp-protocol/protocol/messages.d.ts +1 -1
  1532. package/dist/src/shared/acp-protocol/protocol/messages.d.ts.map +1 -1
  1533. package/dist/src/shared/acp-protocol/protocol/messages.js +1 -0
  1534. package/dist/src/shared/acp-protocol/protocol/messages.js.map +1 -1
  1535. package/dist/src/shared/acp-protocol/protocol/queued.d.ts +5 -0
  1536. package/dist/src/shared/acp-protocol/protocol/queued.d.ts.map +1 -1
  1537. package/dist/src/shared/acp-protocol/protocol/websocket.d.ts +2 -0
  1538. package/dist/src/shared/acp-protocol/protocol/websocket.d.ts.map +1 -1
  1539. package/dist/src/shared/acp-protocol/protocol/websocket.js.map +1 -1
  1540. package/dist/src/shared/acp-protocol/question-input.d.ts +11 -0
  1541. package/dist/src/shared/acp-protocol/question-input.d.ts.map +1 -0
  1542. package/dist/src/shared/acp-protocol/question-input.js +40 -0
  1543. package/dist/src/shared/acp-protocol/question-input.js.map +1 -0
  1544. package/dist/src/shared/acp-protocol/question-validation.d.ts +31 -0
  1545. package/dist/src/shared/acp-protocol/question-validation.d.ts.map +1 -0
  1546. package/dist/src/shared/acp-protocol/question-validation.js +88 -0
  1547. package/dist/src/shared/acp-protocol/question-validation.js.map +1 -0
  1548. package/dist/src/shared/acp-protocol/session-update-translator.d.ts +5 -1
  1549. package/dist/src/shared/acp-protocol/session-update-translator.d.ts.map +1 -1
  1550. package/dist/src/shared/acp-protocol/session-update-translator.js +87 -12
  1551. package/dist/src/shared/acp-protocol/session-update-translator.js.map +1 -1
  1552. package/dist/src/shared/adversarial-review.d.ts +4 -0
  1553. package/dist/src/shared/adversarial-review.d.ts.map +1 -0
  1554. package/dist/src/shared/adversarial-review.js +6 -0
  1555. package/dist/src/shared/adversarial-review.js.map +1 -0
  1556. package/dist/src/shared/appearance.d.ts +69 -0
  1557. package/dist/src/shared/appearance.d.ts.map +1 -0
  1558. package/dist/src/shared/appearance.js +151 -0
  1559. package/dist/src/shared/appearance.js.map +1 -0
  1560. package/dist/src/shared/chat-capabilities.d.ts +0 -16
  1561. package/dist/src/shared/chat-capabilities.d.ts.map +1 -1
  1562. package/dist/src/shared/chat-capabilities.js +0 -113
  1563. package/dist/src/shared/chat-capabilities.js.map +1 -1
  1564. package/dist/src/shared/core/index.d.ts +1 -1
  1565. package/dist/src/shared/core/index.d.ts.map +1 -1
  1566. package/dist/src/shared/core/index.js +1 -1
  1567. package/dist/src/shared/core/index.js.map +1 -1
  1568. package/dist/src/shared/core/workspace-sidebar-status.d.ts +4 -1
  1569. package/dist/src/shared/core/workspace-sidebar-status.d.ts.map +1 -1
  1570. package/dist/src/shared/core/workspace-sidebar-status.js +1 -25
  1571. package/dist/src/shared/core/workspace-sidebar-status.js.map +1 -1
  1572. package/dist/src/shared/github-types.d.ts +4 -1
  1573. package/dist/src/shared/github-types.d.ts.map +1 -1
  1574. package/dist/src/shared/github-url.d.ts +6 -0
  1575. package/dist/src/shared/github-url.d.ts.map +1 -0
  1576. package/dist/src/shared/github-url.js +20 -0
  1577. package/dist/src/shared/github-url.js.map +1 -0
  1578. package/dist/src/shared/kanban-column-projection.d.ts.map +1 -1
  1579. package/dist/src/shared/kanban-column-projection.js +6 -1
  1580. package/dist/src/shared/kanban-column-projection.js.map +1 -1
  1581. package/dist/src/shared/pending-request-types.d.ts +3 -7
  1582. package/dist/src/shared/pending-request-types.d.ts.map +1 -1
  1583. package/dist/src/shared/pending-request-types.js +1 -14
  1584. package/dist/src/shared/pending-request-types.js.map +1 -1
  1585. package/dist/src/shared/pr-monitoring.d.ts +67 -0
  1586. package/dist/src/shared/pr-monitoring.d.ts.map +1 -0
  1587. package/dist/src/shared/pr-monitoring.js +159 -0
  1588. package/dist/src/shared/pr-monitoring.js.map +1 -0
  1589. package/dist/src/shared/pr-monitoring.test-helpers.d.ts +3 -0
  1590. package/dist/src/shared/pr-monitoring.test-helpers.d.ts.map +1 -0
  1591. package/dist/src/shared/pr-monitoring.test-helpers.js +29 -0
  1592. package/dist/src/shared/pr-monitoring.test-helpers.js.map +1 -0
  1593. package/dist/src/shared/schemas/export-data-pr-validation.d.ts +39 -0
  1594. package/dist/src/shared/schemas/export-data-pr-validation.d.ts.map +1 -0
  1595. package/dist/src/shared/schemas/export-data-pr-validation.js +67 -0
  1596. package/dist/src/shared/schemas/export-data-pr-validation.js.map +1 -0
  1597. package/dist/src/shared/schemas/export-data.schema.d.ts +4052 -9
  1598. package/dist/src/shared/schemas/export-data.schema.d.ts.map +1 -1
  1599. package/dist/src/shared/schemas/export-data.schema.js +195 -4
  1600. package/dist/src/shared/schemas/export-data.schema.js.map +1 -1
  1601. package/dist/src/shared/schemas/pr-event.schema.d.ts +898 -0
  1602. package/dist/src/shared/schemas/pr-event.schema.d.ts.map +1 -0
  1603. package/dist/src/shared/schemas/pr-event.schema.js +76 -0
  1604. package/dist/src/shared/schemas/pr-event.schema.js.map +1 -0
  1605. package/dist/src/shared/schemas/pr-monitoring-backup.schema.d.ts +531 -0
  1606. package/dist/src/shared/schemas/pr-monitoring-backup.schema.d.ts.map +1 -0
  1607. package/dist/src/shared/schemas/pr-monitoring-backup.schema.js +76 -0
  1608. package/dist/src/shared/schemas/pr-monitoring-backup.schema.js.map +1 -0
  1609. package/dist/src/shared/websocket/chat-message.schema.d.ts +1 -0
  1610. package/dist/src/shared/websocket/chat-message.schema.d.ts.map +1 -1
  1611. package/dist/src/shared/websocket/chat-message.schema.js +5 -1
  1612. package/dist/src/shared/websocket/chat-message.schema.js.map +1 -1
  1613. package/dist/src/shared/workspace-flow-state.d.ts +21 -0
  1614. package/dist/src/shared/workspace-flow-state.d.ts.map +1 -1
  1615. package/dist/src/shared/workspace-flow-state.js +116 -0
  1616. package/dist/src/shared/workspace-flow-state.js.map +1 -1
  1617. package/dist/src/shared/workspace-pr-summary.d.ts +35 -0
  1618. package/dist/src/shared/workspace-pr-summary.d.ts.map +1 -0
  1619. package/dist/src/shared/workspace-pr-summary.js +62 -0
  1620. package/dist/src/shared/workspace-pr-summary.js.map +1 -0
  1621. package/dist/src/shared/workspace-pr.d.ts +29 -0
  1622. package/dist/src/shared/workspace-pr.d.ts.map +1 -0
  1623. package/dist/src/shared/workspace-pr.js +16 -0
  1624. package/dist/src/shared/workspace-pr.js.map +1 -0
  1625. package/dist/src/shared/workspace-sidebar-status.d.ts +1 -1
  1626. package/dist/src/shared/workspace-sidebar-status.d.ts.map +1 -1
  1627. package/dist/src/shared/workspace-sidebar-status.js +1 -1
  1628. package/dist/src/shared/workspace-sidebar-status.js.map +1 -1
  1629. package/dist/src/shared/workspace-snapshot.d.ts +360 -35
  1630. package/dist/src/shared/workspace-snapshot.d.ts.map +1 -1
  1631. package/dist/src/shared/workspace-snapshot.js +22 -4
  1632. package/dist/src/shared/workspace-snapshot.js.map +1 -1
  1633. package/dist/src/shared/workspace-status-reason.d.ts +3 -1
  1634. package/dist/src/shared/workspace-status-reason.d.ts.map +1 -1
  1635. package/dist/src/shared/workspace-status-reason.js +29 -7
  1636. package/dist/src/shared/workspace-status-reason.js.map +1 -1
  1637. package/dist/src/test-utils/application-graph.d.ts +0 -6
  1638. package/dist/src/test-utils/application-graph.d.ts.map +1 -1
  1639. package/dist/src/test-utils/application-graph.js +23 -17
  1640. package/dist/src/test-utils/application-graph.js.map +1 -1
  1641. package/dist/tsconfig.backend.tsbuildinfo +1 -1
  1642. package/package.json +106 -89
  1643. package/prisma/migrations/20260916235822_add_adversarial_review_settings/migration.sql +42 -0
  1644. package/prisma/migrations/20261008120000_multiple_workspace_prs/migration.sql +49 -0
  1645. package/prisma/migrations/20261008130000_pr_event_ledger/migration.sql +43 -0
  1646. package/prisma/migrations/20261008140000_pr_monitoring_cutover/migration.sql +18 -0
  1647. package/prisma/migrations/20261008150000_pr_delivery_identity/migration.sql +3 -0
  1648. package/prisma/migrations/20261009120000_pr_delivery_modes/migration.sql +10 -0
  1649. package/prisma/migrations/20261011120000_add_appearance_settings/migration.sql +7 -0
  1650. package/prisma/schema.prisma +104 -96
  1651. package/prompts/adversarial-review/dispatch.md +93 -0
  1652. package/scripts/postinstall.mjs +62 -67
  1653. package/dist/client/assets/Archive.es-moH8rDRO.js +0 -1
  1654. package/dist/client/assets/ArrowLeft.es-CVl_zVBC.js +0 -1
  1655. package/dist/client/assets/abnfDiagram-VCTEODGH-DzuBdUSN.js +0 -1
  1656. package/dist/client/assets/admin-page-CAsPxzW9.js +0 -1
  1657. package/dist/client/assets/alert-2CAe526X.js +0 -1
  1658. package/dist/client/assets/alert-dialog-8vhMuR-k.js +0 -1
  1659. package/dist/client/assets/arc-Pry-7G1_.js +0 -1
  1660. package/dist/client/assets/architecture-7GRP2DOG-Bcwjoi8B.js +0 -1
  1661. package/dist/client/assets/architectureDiagram-5GKGNRK7-CeuoQvaW.js +0 -36
  1662. package/dist/client/assets/badge-CoDH1rER.js +0 -1
  1663. package/dist/client/assets/blockDiagram-I7D4REHJ-BY92gQgN.js +0 -129
  1664. package/dist/client/assets/c4Diagram-7LVT6UL2-D5TNBYXh.js +0 -38
  1665. package/dist/client/assets/channel-NEbtzeVB.js +0 -1
  1666. package/dist/client/assets/chunk-4HAMMTFA-DBbX-wzu.js +0 -62
  1667. package/dist/client/assets/chunk-75Z2AOVW-962-yyBD.js +0 -2
  1668. package/dist/client/assets/chunk-DU6HZSFF-CHHMX1CR.js +0 -127
  1669. package/dist/client/assets/chunk-F27PBJKO-BOnYAGjZ.js +0 -1
  1670. package/dist/client/assets/chunk-FOHPRMQF-CoA4358r.js +0 -161
  1671. package/dist/client/assets/chunk-GMAD6QVW-DQF31PdR.js +0 -72
  1672. package/dist/client/assets/chunk-GVQU2GXP-rruJzn36.js +0 -1
  1673. package/dist/client/assets/chunk-IMKFNOWR-GIKO0MCA.js +0 -231
  1674. package/dist/client/assets/chunk-L3NEJ4N5-USlKRxmU.js +0 -1
  1675. package/dist/client/assets/chunk-OSK3NFVY-DYQeYWNP.js +0 -10
  1676. package/dist/client/assets/chunk-P2QGCYS3-SDkZ9hQX.js +0 -1
  1677. package/dist/client/assets/chunk-POPQ4Y6H-bdnFdIMc.js +0 -1
  1678. package/dist/client/assets/chunk-PWAF6VOD-DuKrEmQw.js +0 -1
  1679. package/dist/client/assets/chunk-SHT3W25Y-BnWDS29f.js +0 -168
  1680. package/dist/client/assets/chunk-SVP7TREG-BqyZjR36.js +0 -88
  1681. package/dist/client/assets/chunk-TICWLB2K-ZCb3dlre.js +0 -206
  1682. package/dist/client/assets/chunk-XXDRQBXY-DqAYeljN.js +0 -1
  1683. package/dist/client/assets/ci-status-cs76P3se.js +0 -1
  1684. package/dist/client/assets/classDiagram-ZZMXUADV-zE_E4kYq.js +0 -1
  1685. package/dist/client/assets/classDiagram-v2-VYDZK3BY-zE_E4kYq.js +0 -1
  1686. package/dist/client/assets/components-CoS_rGt2.js +0 -1
  1687. package/dist/client/assets/confirm-dialog-CfvO9f42.js +0 -1
  1688. package/dist/client/assets/core-DW3tuXQ3.js +0 -1
  1689. package/dist/client/assets/cose-bilkent-JH36ORCC-BbJNf1Rj.js +0 -1
  1690. package/dist/client/assets/cynefin-OW5HDTMX-Ci2WypGa.js +0 -1
  1691. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CGea7wa2.js +0 -62
  1692. package/dist/client/assets/cytoscape.esm-B-1iW2ft.js +0 -321
  1693. package/dist/client/assets/dagre-C-rnJpZF.js +0 -1
  1694. package/dist/client/assets/dagre-GXQ25YYZ-CJcHs09G.js +0 -4
  1695. package/dist/client/assets/data-import-button-cvKmYZJe.js +0 -6
  1696. package/dist/client/assets/detail-C3U9ED1b.js +0 -1
  1697. package/dist/client/assets/diagram-S7CK7UJ4-Drsfjeco.js +0 -30
  1698. package/dist/client/assets/diagram-UQ7AKVKN-0SrBP_3E.js +0 -41
  1699. package/dist/client/assets/diagram-VSXAHHWV-DB2rqHgv.js +0 -3
  1700. package/dist/client/assets/diagram-VX7I27RA-B2y3VQbR.js +0 -24
  1701. package/dist/client/assets/diagram-Z3DM3KII-D63_zfy5.js +0 -24
  1702. package/dist/client/assets/diff-highlight.worker-FEJq0yPv.js +0 -60
  1703. package/dist/client/assets/dist-BO6Gz-vk.js +0 -1
  1704. package/dist/client/assets/dist-DGw3MClt.js +0 -41
  1705. package/dist/client/assets/dist-v5Q1xZ2K.js +0 -1
  1706. package/dist/client/assets/ebnfDiagram-PWID7BFC-8gEK-ifx.js +0 -1
  1707. package/dist/client/assets/en-US-C-x19js7.js +0 -1
  1708. package/dist/client/assets/erDiagram-RLTQ6QDP-B2CcHHg7.js +0 -99
  1709. package/dist/client/assets/eventmodeling-NTZA5JFV-DqUwwD9w.js +0 -1
  1710. package/dist/client/assets/factory-config-scripts-C2BfO5od.js +0 -1
  1711. package/dist/client/assets/flowDiagram-HODETNUW-DCZkaOsj.js +0 -1
  1712. package/dist/client/assets/ganttDiagram-EL5Y4UJY-B_Y3HJTL.js +0 -292
  1713. package/dist/client/assets/gitGraph-4MIJSDKK-DBd1UxTm.js +0 -1
  1714. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-CrdKibnu.js +0 -106
  1715. package/dist/client/assets/home-DRzNpm0E.js +0 -1
  1716. package/dist/client/assets/hooks-3rxtNHRh.js +0 -1
  1717. package/dist/client/assets/index-BJo4hZ8z.js +0 -10
  1718. package/dist/client/assets/index-CpFffknJ.css +0 -2
  1719. package/dist/client/assets/info-A6RAGUB7-CCMRmQ2H.js +0 -1
  1720. package/dist/client/assets/infoDiagram-27XIBGKW-DO-IhKUM.js +0 -2
  1721. package/dist/client/assets/ishikawaDiagram-5VMMS53U-KejlLQ1k.js +0 -70
  1722. package/dist/client/assets/journeyDiagram-3NMN7TZE-DemWKqD6.js +0 -139
  1723. package/dist/client/assets/jsx-runtime-BNakU3Ej.js +0 -1
  1724. package/dist/client/assets/kanban-definition-UXKFOSKX-uRffHAE9.js +0 -89
  1725. package/dist/client/assets/katex-ZlcWpGUi.js +0 -257
  1726. package/dist/client/assets/label-ANA2Lfpk.js +0 -1
  1727. package/dist/client/assets/lib-CHy_7XQu.js +0 -1
  1728. package/dist/client/assets/line-CfCBYCoS.js +0 -1
  1729. package/dist/client/assets/linear-SzVmGSw4.js +0 -1
  1730. package/dist/client/assets/list-C3P6JbyU.js +0 -30
  1731. package/dist/client/assets/list-oJCufmEX.js +0 -1
  1732. package/dist/client/assets/logs-zb2la033.js +0 -1
  1733. package/dist/client/assets/mermaid-diagram-kbWN558y.js +0 -44
  1734. package/dist/client/assets/mermaid-parser.core-CpkwJ-8U.js +0 -7
  1735. package/dist/client/assets/mindmap-definition-YA3MSWOX-DYYi_9Si.js +0 -96
  1736. package/dist/client/assets/mobile-baseline-BVS3GXLz.js +0 -10
  1737. package/dist/client/assets/new-BiEmR60A.js +0 -1
  1738. package/dist/client/assets/new-CcQm3ES8.js +0 -1
  1739. package/dist/client/assets/packet-AYTQ26CC-kvNXQn-j.js +0 -1
  1740. package/dist/client/assets/page-header-CpSh-j1O.js +0 -1
  1741. package/dist/client/assets/pegDiagram-XKGWAZYB-CMAngYAK.js +0 -1
  1742. package/dist/client/assets/pie-WAS4IAKB-DFNGAljQ.js +0 -1
  1743. package/dist/client/assets/pieDiagram-E7YTZNPT-XGRy7b5E.js +0 -39
  1744. package/dist/client/assets/popover-CIfFCO0U.js +0 -1
  1745. package/dist/client/assets/pr-inbox-item-D9UcI0SS.js +0 -2
  1746. package/dist/client/assets/preload-helper-BZ1Pz5am.js +0 -1
  1747. package/dist/client/assets/project-repo-form-Dc8ha6XP.js +0 -1
  1748. package/dist/client/assets/provider-cli-warning-CIAJ88Cy.js +0 -1
  1749. package/dist/client/assets/quadrantDiagram-AXDQQJYC-BFek-axl.js +0 -7
  1750. package/dist/client/assets/radar-RG4KPBEZ-k-UBw86I.js +0 -1
  1751. package/dist/client/assets/radio-group-BhmTXkIv.js +0 -1
  1752. package/dist/client/assets/railroad-74A4TZTK-B6DuT-HY.js +0 -1
  1753. package/dist/client/assets/railroad-abnf-HS5TGJTU-DF-z1cVb.js +0 -1
  1754. package/dist/client/assets/railroad-ebnf-LZEXJU2U-C6VgaalR.js +0 -1
  1755. package/dist/client/assets/railroad-peg-WCYAUIDC-DRMqhGU3.js +0 -1
  1756. package/dist/client/assets/railroadDiagram-O6MQD6OU-CBzDTFh9.js +0 -1
  1757. package/dist/client/assets/redirect-DexaYCz_.js +0 -1
  1758. package/dist/client/assets/requirementDiagram-BXWQKSXE-DSgpbBy3.js +0 -84
  1759. package/dist/client/assets/reviews-DDO7Pvrz.js +0 -1
  1760. package/dist/client/assets/rolldown-runtime-hePW80VL.js +0 -1
  1761. package/dist/client/assets/sankeyDiagram-P5KCCOFB-BOWaOPXp.js +0 -40
  1762. package/dist/client/assets/select-Cq3ddA2b.js +0 -1
  1763. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-9wHsZFGh.js +0 -162
  1764. package/dist/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +0 -1
  1765. package/dist/client/assets/spinner-BszfzCYe.js +0 -1
  1766. package/dist/client/assets/src-B6xuSHsQ.js +0 -1
  1767. package/dist/client/assets/startup-script-form-CHvwd1Nb.js +0 -1
  1768. package/dist/client/assets/stateDiagram-D77RDMKH-Blo9H6q_.js +0 -1
  1769. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-BzJ9AKXW.js +0 -1
  1770. package/dist/client/assets/swimlanes-42K2YHIH-DI0BHdWG.js +0 -1
  1771. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DSnxWZUW.js +0 -8
  1772. package/dist/client/assets/table-CUvMM0aA.js +0 -1
  1773. package/dist/client/assets/tabs-BBAQyvSA.js +0 -1
  1774. package/dist/client/assets/terminal-instance-BEqkmyvv.js +0 -16
  1775. package/dist/client/assets/textarea-DxWYClhS.js +0 -1
  1776. package/dist/client/assets/timeline-definition-24CTP7MA-C8fyxpVm.js +0 -120
  1777. package/dist/client/assets/tooltip-DXcY1U7y.js +0 -1
  1778. package/dist/client/assets/treeView-Q6P3EWNA-CzQAwJw-.js +0 -1
  1779. package/dist/client/assets/treemap-WGGIJYW6-zWRSK6WR.js +0 -1
  1780. package/dist/client/assets/trpc-CQO3zfei.js +0 -1
  1781. package/dist/client/assets/use-auto-scroll-DNohsNoz.js +0 -1
  1782. package/dist/client/assets/use-download-server-log-efKIcIwE.js +0 -1
  1783. package/dist/client/assets/use-project-header-navigation-D5yIIgnb.js +0 -1
  1784. package/dist/client/assets/use-websocket-channel-dNXOJZfW.js +0 -4
  1785. package/dist/client/assets/use-websocket-transport-BuYcrZTd.js +0 -55
  1786. package/dist/client/assets/vbnet-CwR9YcOY.js +0 -57
  1787. package/dist/client/assets/vennDiagram-4TSXK5OY-ffnMpD5u.js +0 -34
  1788. package/dist/client/assets/wardley-WFR3VGLG-acbsrLnl.js +0 -1
  1789. package/dist/client/assets/wardleyDiagram-VM6X3IG4-BtqGCwsu.js +0 -78
  1790. package/dist/client/assets/workspace-a6lf168c.js +0 -18
  1791. package/dist/client/assets/xychartDiagram-S5SC5T6Z-Bfy9xcWF.js +0 -7
  1792. package/dist/prisma/generated/models/WorkspaceRatchet.d.ts +0 -625
  1793. package/dist/prisma/generated/models/WorkspaceRatchet.d.ts.map +0 -1
  1794. package/dist/prisma/generated/models/WorkspaceRatchet.js +0 -2
  1795. package/dist/prisma/generated/models/WorkspaceRatchet.js.map +0 -1
  1796. package/dist/prompts/ratchet/dispatch.md +0 -19
  1797. package/dist/src/backend/prompts/ratchet-dispatch.d.ts +0 -14
  1798. package/dist/src/backend/prompts/ratchet-dispatch.d.ts.map +0 -1
  1799. package/dist/src/backend/prompts/ratchet-dispatch.js +0 -80
  1800. package/dist/src/backend/prompts/ratchet-dispatch.js.map +0 -1
  1801. package/dist/src/backend/prompts/ratchet-dispatch.test.d.ts +0 -2
  1802. package/dist/src/backend/prompts/ratchet-dispatch.test.d.ts.map +0 -1
  1803. package/dist/src/backend/prompts/ratchet-dispatch.test.js +0 -156
  1804. package/dist/src/backend/prompts/ratchet-dispatch.test.js.map +0 -1
  1805. package/dist/src/backend/services/ratchet/service/bridges.d.ts +0 -157
  1806. package/dist/src/backend/services/ratchet/service/bridges.d.ts.map +0 -1
  1807. package/dist/src/backend/services/ratchet/service/bridges.js +0 -2
  1808. package/dist/src/backend/services/ratchet/service/bridges.js.map +0 -1
  1809. package/dist/src/backend/services/ratchet/service/fixer-session.service.d.ts +0 -61
  1810. package/dist/src/backend/services/ratchet/service/fixer-session.service.d.ts.map +0 -1
  1811. package/dist/src/backend/services/ratchet/service/fixer-session.service.js +0 -234
  1812. package/dist/src/backend/services/ratchet/service/fixer-session.service.js.map +0 -1
  1813. package/dist/src/backend/services/ratchet/service/fixer-session.service.test.d.ts +0 -2
  1814. package/dist/src/backend/services/ratchet/service/fixer-session.service.test.d.ts.map +0 -1
  1815. package/dist/src/backend/services/ratchet/service/fixer-session.service.test.js +0 -336
  1816. package/dist/src/backend/services/ratchet/service/fixer-session.service.test.js.map +0 -1
  1817. package/dist/src/backend/services/ratchet/service/provider-selection.d.ts +0 -6
  1818. package/dist/src/backend/services/ratchet/service/provider-selection.d.ts.map +0 -1
  1819. package/dist/src/backend/services/ratchet/service/provider-selection.js +0 -6
  1820. package/dist/src/backend/services/ratchet/service/provider-selection.js.map +0 -1
  1821. package/dist/src/backend/services/ratchet/service/provider-selection.test.d.ts +0 -2
  1822. package/dist/src/backend/services/ratchet/service/provider-selection.test.d.ts.map +0 -1
  1823. package/dist/src/backend/services/ratchet/service/provider-selection.test.js +0 -23
  1824. package/dist/src/backend/services/ratchet/service/provider-selection.test.js.map +0 -1
  1825. package/dist/src/backend/services/ratchet/service/ratchet-active-session.helpers.d.ts +0 -13
  1826. package/dist/src/backend/services/ratchet/service/ratchet-active-session.helpers.d.ts.map +0 -1
  1827. package/dist/src/backend/services/ratchet/service/ratchet-active-session.helpers.js +0 -134
  1828. package/dist/src/backend/services/ratchet/service/ratchet-active-session.helpers.js.map +0 -1
  1829. package/dist/src/backend/services/ratchet/service/ratchet-decision-logging.helpers.d.ts +0 -61
  1830. package/dist/src/backend/services/ratchet/service/ratchet-decision-logging.helpers.d.ts.map +0 -1
  1831. package/dist/src/backend/services/ratchet/service/ratchet-decision-logging.helpers.js +0 -79
  1832. package/dist/src/backend/services/ratchet/service/ratchet-decision-logging.helpers.js.map +0 -1
  1833. package/dist/src/backend/services/ratchet/service/ratchet-domain-exports.test.d.ts +0 -2
  1834. package/dist/src/backend/services/ratchet/service/ratchet-domain-exports.test.d.ts.map +0 -1
  1835. package/dist/src/backend/services/ratchet/service/ratchet-domain-exports.test.js +0 -11
  1836. package/dist/src/backend/services/ratchet/service/ratchet-domain-exports.test.js.map +0 -1
  1837. package/dist/src/backend/services/ratchet/service/ratchet-fixer-dispatch.helpers.d.ts +0 -14
  1838. package/dist/src/backend/services/ratchet/service/ratchet-fixer-dispatch.helpers.d.ts.map +0 -1
  1839. package/dist/src/backend/services/ratchet/service/ratchet-fixer-dispatch.helpers.js +0 -226
  1840. package/dist/src/backend/services/ratchet/service/ratchet-fixer-dispatch.helpers.js.map +0 -1
  1841. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.d.ts +0 -103
  1842. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.d.ts.map +0 -1
  1843. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.js +0 -370
  1844. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.js.map +0 -1
  1845. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.test.d.ts +0 -2
  1846. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.test.d.ts.map +0 -1
  1847. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.test.js +0 -944
  1848. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.test.js.map +0 -1
  1849. package/dist/src/backend/services/ratchet/service/ratchet-provider-resolver.service.d.ts +0 -15
  1850. package/dist/src/backend/services/ratchet/service/ratchet-provider-resolver.service.d.ts.map +0 -1
  1851. package/dist/src/backend/services/ratchet/service/ratchet-provider-resolver.service.js +0 -18
  1852. package/dist/src/backend/services/ratchet/service/ratchet-provider-resolver.service.js.map +0 -1
  1853. package/dist/src/backend/services/ratchet/service/ratchet-provider-resolver.service.test.d.ts +0 -2
  1854. package/dist/src/backend/services/ratchet/service/ratchet-provider-resolver.service.test.d.ts.map +0 -1
  1855. package/dist/src/backend/services/ratchet/service/ratchet-provider-resolver.service.test.js +0 -76
  1856. package/dist/src/backend/services/ratchet/service/ratchet-provider-resolver.service.test.js.map +0 -1
  1857. package/dist/src/backend/services/ratchet/service/ratchet-workspace-check-coordinator.d.ts +0 -10
  1858. package/dist/src/backend/services/ratchet/service/ratchet-workspace-check-coordinator.d.ts.map +0 -1
  1859. package/dist/src/backend/services/ratchet/service/ratchet-workspace-check-coordinator.js +0 -62
  1860. package/dist/src/backend/services/ratchet/service/ratchet-workspace-check-coordinator.js.map +0 -1
  1861. package/dist/src/backend/services/ratchet/service/ratchet-workspace-check-coordinator.test.d.ts +0 -2
  1862. package/dist/src/backend/services/ratchet/service/ratchet-workspace-check-coordinator.test.d.ts.map +0 -1
  1863. package/dist/src/backend/services/ratchet/service/ratchet-workspace-check-coordinator.test.js +0 -116
  1864. package/dist/src/backend/services/ratchet/service/ratchet-workspace-check-coordinator.test.js.map +0 -1
  1865. package/dist/src/backend/services/ratchet/service/ratchet.service.test.d.ts +0 -2
  1866. package/dist/src/backend/services/ratchet/service/ratchet.service.test.d.ts.map +0 -1
  1867. package/dist/src/backend/services/ratchet/service/ratchet.service.test.js +0 -3485
  1868. package/dist/src/backend/services/ratchet/service/ratchet.service.test.js.map +0 -1
  1869. package/dist/src/backend/services/ratchet/service/ratchet.types.d.ts +0 -99
  1870. package/dist/src/backend/services/ratchet/service/ratchet.types.d.ts.map +0 -1
  1871. package/dist/src/backend/services/ratchet/service/ratchet.types.js +0 -2
  1872. package/dist/src/backend/services/ratchet/service/ratchet.types.js.map +0 -1
  1873. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/acp-adapter-utils.d.ts +0 -24
  1874. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/acp-adapter-utils.d.ts.map +0 -1
  1875. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/acp-adapter-utils.js +0 -79
  1876. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/acp-adapter-utils.js.map +0 -1
  1877. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/adapter-state.d.ts +0 -99
  1878. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/adapter-state.d.ts.map +0 -1
  1879. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/adapter-state.js +0 -2
  1880. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/adapter-state.js.map +0 -1
  1881. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.d.ts +0 -10
  1882. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.d.ts.map +0 -1
  1883. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.js +0 -166
  1884. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.js.map +0 -1
  1885. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.test.d.ts +0 -2
  1886. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.test.d.ts.map +0 -1
  1887. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.test.js +0 -8
  1888. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.test.js.map +0 -1
  1889. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.d.ts +0 -74
  1890. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.d.ts.map +0 -1
  1891. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.js +0 -734
  1892. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.js.map +0 -1
  1893. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.manual.integration.test.d.ts +0 -2
  1894. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.manual.integration.test.d.ts.map +0 -1
  1895. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.manual.integration.test.js +0 -261
  1896. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.manual.integration.test.js.map +0 -1
  1897. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.notification-ordering.test.d.ts +0 -2
  1898. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.notification-ordering.test.d.ts.map +0 -1
  1899. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.notification-ordering.test.js +0 -353
  1900. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.notification-ordering.test.js.map +0 -1
  1901. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.test.d.ts +0 -2
  1902. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.test.d.ts.map +0 -1
  1903. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.test.js +0 -2533
  1904. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.test.js.map +0 -1
  1905. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-model-catalog-loader.d.ts +0 -6
  1906. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-model-catalog-loader.d.ts.map +0 -1
  1907. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-model-catalog-loader.js +0 -27
  1908. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-model-catalog-loader.js.map +0 -1
  1909. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.d.ts +0 -7
  1910. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.d.ts.map +0 -1
  1911. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.js +0 -96
  1912. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.js.map +0 -1
  1913. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.test.d.ts +0 -2
  1914. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.test.d.ts.map +0 -1
  1915. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.test.js +0 -148
  1916. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.test.js.map +0 -1
  1917. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-rpc-client.d.ts +0 -70
  1918. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-rpc-client.d.ts.map +0 -1
  1919. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-rpc-client.js +0 -303
  1920. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-rpc-client.js.map +0 -1
  1921. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-rpc-client.test.d.ts +0 -2
  1922. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-rpc-client.test.d.ts.map +0 -1
  1923. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-rpc-client.test.js +0 -243
  1924. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-rpc-client.test.js.map +0 -1
  1925. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-schema-snapshot.test.d.ts +0 -2
  1926. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-schema-snapshot.test.d.ts.map +0 -1
  1927. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-schema-snapshot.test.js +0 -35
  1928. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-schema-snapshot.test.js.map +0 -1
  1929. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.d.ts +0 -38
  1930. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.d.ts.map +0 -1
  1931. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.js +0 -287
  1932. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.js.map +0 -1
  1933. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.test.d.ts +0 -2
  1934. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.test.d.ts.map +0 -1
  1935. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.test.js +0 -648
  1936. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.test.js.map +0 -1
  1937. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-mapper.d.ts +0 -12
  1938. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-mapper.d.ts.map +0 -1
  1939. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-mapper.js +0 -51
  1940. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-mapper.js.map +0 -1
  1941. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-mapper.test.d.ts +0 -2
  1942. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-mapper.test.d.ts.map +0 -1
  1943. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-mapper.test.js +0 -95
  1944. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-mapper.test.js.map +0 -1
  1945. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.d.ts +0 -541
  1946. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.d.ts.map +0 -1
  1947. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.js +0 -438
  1948. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.js.map +0 -1
  1949. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.test.d.ts +0 -2
  1950. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.test.d.ts.map +0 -1
  1951. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.test.js +0 -310
  1952. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.test.js.map +0 -1
  1953. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/command-metadata.d.ts +0 -16
  1954. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/command-metadata.d.ts.map +0 -1
  1955. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/command-metadata.js +0 -393
  1956. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/command-metadata.js.map +0 -1
  1957. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/command-metadata.test.d.ts +0 -2
  1958. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/command-metadata.test.d.ts.map +0 -1
  1959. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/command-metadata.test.js +0 -198
  1960. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/command-metadata.test.js.map +0 -1
  1961. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/index.d.ts +0 -3
  1962. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/index.d.ts.map +0 -1
  1963. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/index.js +0 -3
  1964. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/index.js.map +0 -1
  1965. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/plan-approval-handler.d.ts +0 -23
  1966. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/plan-approval-handler.d.ts.map +0 -1
  1967. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/plan-approval-handler.js +0 -191
  1968. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/plan-approval-handler.js.map +0 -1
  1969. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/protocol-permission-handler.d.ts +0 -19
  1970. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/protocol-permission-handler.d.ts.map +0 -1
  1971. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/protocol-permission-handler.js +0 -369
  1972. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/protocol-permission-handler.js.map +0 -1
  1973. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/protocol-permission-handler.test.d.ts +0 -2
  1974. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/protocol-permission-handler.test.d.ts.map +0 -1
  1975. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/protocol-permission-handler.test.js +0 -91
  1976. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/protocol-permission-handler.test.js.map +0 -1
  1977. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.d.ts +0 -16
  1978. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.d.ts.map +0 -1
  1979. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.js +0 -51
  1980. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.js.map +0 -1
  1981. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.test.d.ts +0 -2
  1982. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.test.d.ts.map +0 -1
  1983. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.test.js +0 -31
  1984. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.test.js.map +0 -1
  1985. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/session-config-resolver.d.ts +0 -20
  1986. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/session-config-resolver.d.ts.map +0 -1
  1987. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/session-config-resolver.js +0 -350
  1988. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/session-config-resolver.js.map +0 -1
  1989. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/session-config-resolver.test.d.ts +0 -2
  1990. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/session-config-resolver.test.d.ts.map +0 -1
  1991. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/session-config-resolver.test.js +0 -211
  1992. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/session-config-resolver.test.js.map +0 -1
  1993. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/session-negotiation.d.ts +0 -41
  1994. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/session-negotiation.d.ts.map +0 -1
  1995. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/session-negotiation.js +0 -137
  1996. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/session-negotiation.js.map +0 -1
  1997. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/session-state-container.d.ts +0 -25
  1998. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/session-state-container.d.ts.map +0 -1
  1999. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/session-state-container.js +0 -47
  2000. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/session-state-container.js.map +0 -1
  2001. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/shape-drift-reporter.d.ts +0 -8
  2002. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/shape-drift-reporter.d.ts.map +0 -1
  2003. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/shape-drift-reporter.js +0 -37
  2004. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/shape-drift-reporter.js.map +0 -1
  2005. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.cancellation.test.d.ts +0 -2
  2006. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.cancellation.test.d.ts.map +0 -1
  2007. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.cancellation.test.js +0 -181
  2008. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.cancellation.test.js.map +0 -1
  2009. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.d.ts +0 -75
  2010. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.d.ts.map +0 -1
  2011. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.js +0 -677
  2012. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.js.map +0 -1
  2013. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.test.d.ts +0 -2
  2014. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.test.d.ts.map +0 -1
  2015. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.test.js +0 -882
  2016. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.test.js.map +0 -1
  2017. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/task-status-protocol.d.ts +0 -8
  2018. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/task-status-protocol.d.ts.map +0 -1
  2019. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/task-status-protocol.js +0 -9
  2020. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/task-status-protocol.js.map +0 -1
  2021. package/dist/src/backend/services/session/service/acp/codex-cli-import-resolution.integration.test.d.ts +0 -2
  2022. package/dist/src/backend/services/session/service/acp/codex-cli-import-resolution.integration.test.d.ts.map +0 -1
  2023. package/dist/src/backend/services/session/service/acp/codex-cli-import-resolution.integration.test.js +0 -106
  2024. package/dist/src/backend/services/session/service/acp/codex-cli-import-resolution.integration.test.js.map +0 -1
  2025. package/dist/src/backend/services/workspace/service/lifecycle/workspace-ratchet.service.d.ts +0 -20
  2026. package/dist/src/backend/services/workspace/service/lifecycle/workspace-ratchet.service.d.ts.map +0 -1
  2027. package/dist/src/backend/services/workspace/service/lifecycle/workspace-ratchet.service.js +0 -35
  2028. package/dist/src/backend/services/workspace/service/lifecycle/workspace-ratchet.service.js.map +0 -1
  2029. package/prompts/ratchet/dispatch.md +0 -19
@@ -1,2533 +0,0 @@
1
- import { describe, expect, it, vi } from 'vitest';
2
- import { SUBAGENT_TOOL_META_KEY, SUBAGENTS_CAPABILITY_META_KEY, SUBAGENTS_CHANGED_METHOD, SUBAGENTS_LIST_METHOD, SUBAGENTS_READ_METHOD, } from '../../../../../../shared/acp-protocol/subagents.js';
3
- import { CodexAppServerAcpAdapter } from './codex-app-server-acp-adapter.js';
4
- import { CodexRequestError } from './codex-rpc-client.js';
5
- function createMockConnection() {
6
- let resolveClosed = null;
7
- const closed = new Promise((resolve) => {
8
- resolveClosed = resolve;
9
- });
10
- return {
11
- connection: {
12
- closed,
13
- sessionUpdate: vi.fn(async () => undefined),
14
- extNotification: vi.fn(async () => undefined),
15
- requestPermission: vi.fn(() => {
16
- return Promise.resolve({
17
- outcome: { outcome: 'selected', optionId: 'allow_once' },
18
- });
19
- }),
20
- },
21
- resolveClosed: () => {
22
- resolveClosed?.();
23
- },
24
- };
25
- }
26
- function createMockCodexClient() {
27
- const mocks = {
28
- start: vi.fn(),
29
- stop: vi.fn(async () => undefined),
30
- request: vi.fn((method) => Promise.resolve(method === 'thread/goal/get' ? { goal: null } : undefined)),
31
- notify: vi.fn(),
32
- respondSuccess: vi.fn(),
33
- respondError: vi.fn(),
34
- };
35
- return {
36
- client: mocks,
37
- mocks,
38
- };
39
- }
40
- function getCodexRequestCalls(codex, method) {
41
- return codex.request.mock.calls.filter((call) => call[0] === method);
42
- }
43
- function sendCodexNotification(adapter, method, params) {
44
- return adapter.handleCodexNotification(method, params);
45
- }
46
- const DEFAULT_APPROVAL_POLICY = 'on-failure';
47
- const DEFAULT_ALLOWED_APPROVAL_POLICIES = [DEFAULT_APPROVAL_POLICY, 'on-request', 'never'];
48
- const DEFAULT_ALLOWED_SANDBOX_MODES = ['read-only', 'workspace-write', 'danger-full-access'];
49
- const DEFAULT_COLLABORATION_MODES = [
50
- { name: 'Default', mode: 'default' },
51
- { name: 'Plan', mode: 'plan' },
52
- ];
53
- async function initializeAdapterWithDefaultModel(adapter, codex, options) {
54
- codex.request.mockResolvedValueOnce({});
55
- codex.request.mockResolvedValueOnce({
56
- requirements: {
57
- allowedApprovalPolicies: DEFAULT_ALLOWED_APPROVAL_POLICIES,
58
- allowedSandboxModes: DEFAULT_ALLOWED_SANDBOX_MODES,
59
- },
60
- });
61
- codex.request.mockResolvedValueOnce({
62
- data: options?.collaborationModes ?? DEFAULT_COLLABORATION_MODES,
63
- nextCursor: null,
64
- });
65
- codex.request.mockResolvedValueOnce({
66
- data: [
67
- {
68
- id: 'gpt-5',
69
- displayName: 'GPT-5',
70
- description: 'Default model',
71
- defaultReasoningEffort: 'medium',
72
- supportedReasoningEfforts: [],
73
- inputModalities: ['text'],
74
- isDefault: true,
75
- },
76
- ],
77
- nextCursor: null,
78
- });
79
- await adapter.initialize({
80
- protocolVersion: 1,
81
- clientCapabilities: {},
82
- clientInfo: { name: 'test-client', version: '0.0.1' },
83
- });
84
- }
85
- describe('CodexAppServerAcpAdapter', () => {
86
- it('advertises the versioned sub-agent browse capability', async () => {
87
- const { connection } = createMockConnection();
88
- const { client: codexClient, mocks: codex } = createMockCodexClient();
89
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
90
- codex.request.mockResolvedValueOnce({});
91
- codex.request.mockResolvedValueOnce({ requirements: {} });
92
- codex.request.mockResolvedValueOnce({ data: DEFAULT_COLLABORATION_MODES, nextCursor: null });
93
- codex.request.mockResolvedValueOnce({
94
- data: [
95
- {
96
- id: 'gpt-5',
97
- displayName: 'GPT-5',
98
- description: 'Default model',
99
- isDefault: true,
100
- },
101
- ],
102
- nextCursor: null,
103
- });
104
- const result = await adapter.initialize({
105
- protocolVersion: 1,
106
- clientCapabilities: {},
107
- clientInfo: { name: 'test-client', version: '0.0.1' },
108
- });
109
- expect(result.agentCapabilities?._meta).toEqual({
110
- [SUBAGENTS_CAPABILITY_META_KEY]: {
111
- version: 1,
112
- list: true,
113
- read: true,
114
- notifications: true,
115
- },
116
- });
117
- });
118
- it('routes validated sub-agent extension methods and rejects unknown methods', async () => {
119
- const { connection } = createMockConnection();
120
- const { client: codexClient, mocks: codex } = createMockCodexClient();
121
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
122
- await initializeAdapterWithDefaultModel(adapter, codex);
123
- codex.request.mockResolvedValueOnce({
124
- thread: { id: 'parent-thread-1', cwd: '/tmp/workspace' },
125
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
126
- reasoningEffort: 'medium',
127
- });
128
- await adapter.newSession({ cwd: '/tmp/workspace', mcpServers: [] });
129
- codex.request.mockResolvedValueOnce({
130
- data: [
131
- {
132
- id: 'child-thread-1',
133
- parentThreadId: 'parent-thread-1',
134
- name: 'reviewer',
135
- preview: 'Review the change',
136
- createdAt: 1_786_089_600,
137
- updatedAt: 1_786_093_200,
138
- status: { type: 'active', activeFlags: [] },
139
- turns: [],
140
- },
141
- ],
142
- nextCursor: null,
143
- });
144
- await expect(adapter.extMethod(SUBAGENTS_LIST_METHOD, {
145
- sessionId: 'sess_parent-thread-1',
146
- cursor: null,
147
- limit: 50,
148
- })).resolves.toMatchObject({
149
- subagents: [{ id: 'child-thread-1', status: 'running' }],
150
- nextCursor: null,
151
- });
152
- await expect(adapter.extMethod('example.invalid/method', {})).rejects.toMatchObject({
153
- code: -32_601,
154
- });
155
- await expect(adapter.extMethod(SUBAGENTS_READ_METHOD, {
156
- sessionId: 'sess_parent-thread-1',
157
- subagentId: '',
158
- })).rejects.toMatchObject({ code: -32_602 });
159
- });
160
- it('invalidates one correlated child for terminal status changes and ignores unrelated threads', async () => {
161
- const { connection } = createMockConnection();
162
- const { client: codexClient, mocks: codex } = createMockCodexClient();
163
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
164
- await initializeAdapterWithDefaultModel(adapter, codex);
165
- codex.request.mockResolvedValueOnce({
166
- thread: { id: 'parent-thread-1', cwd: '/tmp/workspace' },
167
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
168
- reasoningEffort: 'medium',
169
- });
170
- await adapter.newSession({ cwd: '/tmp/workspace', mcpServers: [] });
171
- codex.request.mockResolvedValueOnce({
172
- data: [
173
- {
174
- id: 'child-thread-1',
175
- parentThreadId: 'parent-thread-1',
176
- name: 'reviewer',
177
- preview: 'Review the change',
178
- createdAt: 1_786_089_600,
179
- updatedAt: 1_786_093_200,
180
- status: { type: 'active', activeFlags: [] },
181
- turns: [],
182
- },
183
- ],
184
- nextCursor: null,
185
- });
186
- await adapter.extMethod(SUBAGENTS_LIST_METHOD, {
187
- sessionId: 'sess_parent-thread-1',
188
- cursor: null,
189
- limit: 50,
190
- });
191
- const handleCodexNotification = adapter.handleCodexNotification.bind(adapter);
192
- await handleCodexNotification('thread/status/changed', {
193
- threadId: 'child-thread-1',
194
- status: { type: 'idle' },
195
- });
196
- await handleCodexNotification('thread/status/changed', {
197
- threadId: 'unrelated-thread-1',
198
- status: { type: 'systemError' },
199
- });
200
- expect(connection.extNotification).toHaveBeenCalledTimes(1);
201
- expect(connection.extNotification).toHaveBeenCalledWith(SUBAGENTS_CHANGED_METHOD, {
202
- sessionId: 'sess_parent-thread-1',
203
- subagentId: 'child-thread-1',
204
- change: 'completed',
205
- });
206
- });
207
- it('throttles live transcript invalidations per remembered direct child', async () => {
208
- vi.useFakeTimers();
209
- vi.setSystemTime(new Date('2026-08-08T12:00:00.000Z'));
210
- try {
211
- const { connection } = createMockConnection();
212
- const { client: codexClient, mocks: codex } = createMockCodexClient();
213
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
214
- await initializeAdapterWithDefaultModel(adapter, codex);
215
- codex.request.mockResolvedValueOnce({
216
- thread: { id: 'parent-thread-1', cwd: '/tmp/workspace' },
217
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
218
- reasoningEffort: 'medium',
219
- });
220
- await adapter.newSession({ cwd: '/tmp/workspace', mcpServers: [] });
221
- codex.request.mockResolvedValueOnce({
222
- data: [
223
- {
224
- id: 'child-thread-1',
225
- parentThreadId: 'parent-thread-1',
226
- name: 'reviewer',
227
- preview: 'Review the change',
228
- status: { type: 'active', activeFlags: [] },
229
- turns: [],
230
- },
231
- ],
232
- nextCursor: null,
233
- });
234
- await adapter.extMethod(SUBAGENTS_LIST_METHOD, {
235
- sessionId: 'sess_parent-thread-1',
236
- cursor: null,
237
- limit: 50,
238
- });
239
- const handleCodexNotification = adapter.handleCodexNotification.bind(adapter);
240
- await handleCodexNotification('item/agentMessage/delta', {
241
- threadId: 'child-thread-1',
242
- turnId: 'child-turn-1',
243
- itemId: 'child-item-1',
244
- delta: 'first',
245
- });
246
- await handleCodexNotification('item/reasoning/summaryTextDelta', {
247
- threadId: 'child-thread-1',
248
- turnId: 'child-turn-1',
249
- itemId: 'child-item-2',
250
- delta: 'second',
251
- });
252
- await handleCodexNotification('item/agentMessage/delta', {
253
- threadId: 'unrelated-thread-1',
254
- turnId: 'foreign-turn-1',
255
- itemId: 'foreign-item-1',
256
- delta: 'ignore',
257
- });
258
- expect(connection.extNotification).toHaveBeenCalledTimes(1);
259
- expect(connection.extNotification).toHaveBeenLastCalledWith(SUBAGENTS_CHANGED_METHOD, {
260
- sessionId: 'sess_parent-thread-1',
261
- subagentId: 'child-thread-1',
262
- change: 'updated',
263
- });
264
- vi.advanceTimersByTime(1000);
265
- await handleCodexNotification('item/commandExecution/outputDelta', {
266
- threadId: 'child-thread-1',
267
- turnId: 'child-turn-1',
268
- itemId: 'child-item-3',
269
- delta: 'later',
270
- });
271
- expect(connection.extNotification).toHaveBeenCalledTimes(2);
272
- }
273
- finally {
274
- vi.useRealTimers();
275
- }
276
- });
277
- it('paginates model/list during initialize', async () => {
278
- const { connection } = createMockConnection();
279
- const { client: codexClient, mocks: codex } = createMockCodexClient();
280
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
281
- codex.request.mockResolvedValueOnce({});
282
- codex.request.mockResolvedValueOnce({
283
- requirements: {
284
- allowedApprovalPolicies: DEFAULT_ALLOWED_APPROVAL_POLICIES,
285
- allowedSandboxModes: DEFAULT_ALLOWED_SANDBOX_MODES,
286
- },
287
- });
288
- codex.request.mockResolvedValueOnce({
289
- data: DEFAULT_COLLABORATION_MODES,
290
- nextCursor: null,
291
- });
292
- codex.request.mockResolvedValueOnce({
293
- data: [
294
- {
295
- id: 'gpt-5-mini',
296
- displayName: 'GPT-5 Mini',
297
- description: 'Fast model',
298
- defaultReasoningEffort: 'low',
299
- supportedReasoningEfforts: [],
300
- inputModalities: ['text'],
301
- isDefault: false,
302
- },
303
- ],
304
- nextCursor: 'cursor-2',
305
- });
306
- codex.request.mockResolvedValueOnce({
307
- data: [
308
- {
309
- id: 'gpt-5',
310
- displayName: 'GPT-5',
311
- description: 'Default model',
312
- defaultReasoningEffort: 'medium',
313
- supportedReasoningEfforts: [],
314
- inputModalities: ['text'],
315
- isDefault: true,
316
- },
317
- ],
318
- nextCursor: null,
319
- });
320
- await adapter.initialize({
321
- protocolVersion: 1,
322
- clientCapabilities: {},
323
- clientInfo: { name: 'test-client', version: '0.0.1' },
324
- });
325
- expect(codex.start).toHaveBeenCalledTimes(1);
326
- expect(codex.request).toHaveBeenNthCalledWith(2, 'configRequirements/read', undefined);
327
- expect(codex.request).toHaveBeenNthCalledWith(3, 'collaborationMode/list', {});
328
- expect(codex.request).toHaveBeenNthCalledWith(4, 'model/list', expect.objectContaining({}));
329
- expect(codex.request).toHaveBeenNthCalledWith(5, 'model/list', { cursor: 'cursor-2' });
330
- });
331
- it('initializes when model/list omits reasoning-effort metadata', async () => {
332
- const { connection } = createMockConnection();
333
- const { client: codexClient, mocks: codex } = createMockCodexClient();
334
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
335
- codex.request.mockResolvedValueOnce({});
336
- codex.request.mockResolvedValueOnce({
337
- requirements: {
338
- allowedApprovalPolicies: DEFAULT_ALLOWED_APPROVAL_POLICIES,
339
- allowedSandboxModes: DEFAULT_ALLOWED_SANDBOX_MODES,
340
- },
341
- });
342
- codex.request.mockResolvedValueOnce({
343
- data: DEFAULT_COLLABORATION_MODES,
344
- nextCursor: null,
345
- });
346
- codex.request.mockResolvedValueOnce({
347
- data: [
348
- {
349
- id: 'legacy-local',
350
- displayName: 'Legacy Local',
351
- description: 'No reasoning support',
352
- isDefault: true,
353
- },
354
- {
355
- id: 'gpt-5-lite',
356
- displayName: 'GPT-5 Lite',
357
- description: 'Reasoning descriptions are optional',
358
- supportedReasoningEfforts: [{ reasoningEffort: 'low' }],
359
- inputModalities: ['text'],
360
- isDefault: false,
361
- },
362
- ],
363
- nextCursor: null,
364
- });
365
- await expect(adapter.initialize({
366
- protocolVersion: 1,
367
- clientCapabilities: {},
368
- clientInfo: { name: 'test-client', version: '0.0.1' },
369
- })).resolves.toBeDefined();
370
- expect(codex.request).toHaveBeenCalledWith('model/list', {});
371
- });
372
- it('assigns session ids as sess_<threadId> on newSession', async () => {
373
- const { connection } = createMockConnection();
374
- const { client: codexClient, mocks: codex } = createMockCodexClient();
375
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
376
- await initializeAdapterWithDefaultModel(adapter, codex);
377
- codex.request.mockResolvedValueOnce({
378
- thread: { id: 'thread_123', cwd: '/tmp/workspace' },
379
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
380
- reasoningEffort: 'medium',
381
- });
382
- const response = await adapter.newSession({
383
- cwd: '/tmp/workspace',
384
- mcpServers: [],
385
- });
386
- expect(response.sessionId).toBe('sess_thread_123');
387
- });
388
- it('writes provided MCP servers to Codex config and reloads on newSession', async () => {
389
- const { connection } = createMockConnection();
390
- const { client: codexClient, mocks: codex } = createMockCodexClient();
391
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
392
- await initializeAdapterWithDefaultModel(adapter, codex);
393
- codex.request.mockResolvedValueOnce({
394
- thread: { id: 'thread_with_mcp', cwd: '/tmp/workspace' },
395
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
396
- reasoningEffort: 'medium',
397
- });
398
- codex.request.mockResolvedValueOnce({});
399
- codex.request.mockResolvedValueOnce({});
400
- const mcpServers = [
401
- {
402
- name: 'local-tools',
403
- command: 'npx',
404
- args: ['-y', '@modelcontextprotocol/server-filesystem', '/tmp/workspace'],
405
- env: [{ name: 'NODE_ENV', value: 'test' }],
406
- },
407
- ];
408
- await adapter.newSession({
409
- cwd: '/tmp/workspace',
410
- mcpServers,
411
- });
412
- expect(getCodexRequestCalls(codex, 'config/value/write')).toEqual([
413
- [
414
- 'config/value/write',
415
- {
416
- keyPath: 'mcp_servers',
417
- mergeStrategy: 'replace',
418
- value: {
419
- 'local-tools': {
420
- enabled: true,
421
- command: 'npx',
422
- args: ['-y', '@modelcontextprotocol/server-filesystem', '/tmp/workspace'],
423
- env: { NODE_ENV: 'test' },
424
- },
425
- },
426
- },
427
- ],
428
- ]);
429
- expect(getCodexRequestCalls(codex, 'config/mcpServer/reload')).toEqual([
430
- ['config/mcpServer/reload', {}],
431
- ]);
432
- });
433
- it('deduplicates MCP server names when writing Codex config', async () => {
434
- const { connection } = createMockConnection();
435
- const { client: codexClient, mocks: codex } = createMockCodexClient();
436
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
437
- await initializeAdapterWithDefaultModel(adapter, codex);
438
- codex.request.mockResolvedValueOnce({
439
- thread: { id: 'thread_mcp_names', cwd: '/tmp/workspace' },
440
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
441
- reasoningEffort: 'medium',
442
- });
443
- codex.request.mockResolvedValueOnce({});
444
- codex.request.mockResolvedValueOnce({});
445
- const mcpServers = [
446
- { name: '', command: 'server-a', args: [], env: [] },
447
- { name: 'dup', command: 'server-b', args: [], env: [] },
448
- { name: 'dup', command: 'server-c', args: [], env: [] },
449
- ];
450
- await adapter.newSession({
451
- cwd: '/tmp/workspace',
452
- mcpServers,
453
- });
454
- const configWriteCalls = getCodexRequestCalls(codex, 'config/value/write');
455
- expect(configWriteCalls).toHaveLength(1);
456
- const firstWriteCall = configWriteCalls[0];
457
- if (!firstWriteCall) {
458
- throw new Error('expected config/value/write call');
459
- }
460
- expect(firstWriteCall[1]).toEqual({
461
- keyPath: 'mcp_servers',
462
- mergeStrategy: 'replace',
463
- value: {
464
- mcp_server_1: { enabled: true, command: 'server-a', args: [] },
465
- dup: { enabled: true, command: 'server-b', args: [] },
466
- dup_2: { enabled: true, command: 'server-c', args: [] },
467
- },
468
- });
469
- });
470
- it('does not keep a session when MCP config write fails during newSession', async () => {
471
- const { connection } = createMockConnection();
472
- const { client: codexClient, mocks: codex } = createMockCodexClient();
473
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
474
- await initializeAdapterWithDefaultModel(adapter, codex);
475
- codex.request.mockResolvedValueOnce({
476
- thread: { id: 'thread_mcp_error', cwd: '/tmp/workspace' },
477
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
478
- reasoningEffort: 'medium',
479
- });
480
- codex.request.mockRejectedValueOnce(new Error('failed to write codex config'));
481
- await expect(adapter.newSession({
482
- cwd: '/tmp/workspace',
483
- mcpServers: [{ name: 'broken', command: 'bad-server', args: [], env: [] }],
484
- })).rejects.toThrow('failed to write codex config');
485
- await expect(adapter.setSessionConfigOption({
486
- sessionId: 'sess_thread_mcp_error',
487
- configId: 'mode',
488
- value: 'code',
489
- })).rejects.toBeInstanceOf(Error);
490
- });
491
- it('keeps existing MCP server config when a subsequent session has no MCP servers', async () => {
492
- const { connection } = createMockConnection();
493
- const { client: codexClient, mocks: codex } = createMockCodexClient();
494
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
495
- await initializeAdapterWithDefaultModel(adapter, codex);
496
- codex.request.mockResolvedValueOnce({
497
- thread: { id: 'thread_with_mcp_then_clear', cwd: '/tmp/workspace' },
498
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
499
- reasoningEffort: 'medium',
500
- });
501
- codex.request.mockResolvedValueOnce({});
502
- codex.request.mockResolvedValueOnce({});
503
- codex.request.mockResolvedValueOnce({
504
- thread: { id: 'thread_without_mcp', cwd: '/tmp/workspace' },
505
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
506
- reasoningEffort: 'medium',
507
- });
508
- codex.request.mockResolvedValueOnce({});
509
- codex.request.mockResolvedValueOnce({});
510
- await adapter.newSession({
511
- cwd: '/tmp/workspace',
512
- mcpServers: [{ name: 'tools', command: 'server-a', args: [], env: [] }],
513
- });
514
- await adapter.newSession({
515
- cwd: '/tmp/workspace',
516
- mcpServers: [],
517
- });
518
- const configWriteCalls = getCodexRequestCalls(codex, 'config/value/write');
519
- expect(configWriteCalls).toHaveLength(1);
520
- expect(configWriteCalls[0]).toEqual([
521
- 'config/value/write',
522
- {
523
- keyPath: 'mcp_servers',
524
- mergeStrategy: 'replace',
525
- value: {
526
- tools: {
527
- enabled: true,
528
- command: 'server-a',
529
- args: [],
530
- },
531
- },
532
- },
533
- ]);
534
- });
535
- it('loadSession replays thread history from thread/read', async () => {
536
- const { connection } = createMockConnection();
537
- const { client: codexClient, mocks: codex } = createMockCodexClient();
538
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
539
- await initializeAdapterWithDefaultModel(adapter, codex);
540
- codex.request.mockResolvedValueOnce({
541
- thread: { id: 'thread_abc', cwd: '/tmp/workspace' },
542
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
543
- reasoningEffort: 'medium',
544
- });
545
- codex.request.mockResolvedValueOnce({
546
- thread: {
547
- id: 'thread_abc',
548
- turns: [
549
- {
550
- id: 'turn_1',
551
- items: [
552
- {
553
- type: 'userMessage',
554
- id: 'item_u1',
555
- content: [{ type: 'text', text: 'hello' }],
556
- },
557
- {
558
- type: 'agentMessage',
559
- id: 'item_a1',
560
- text: 'hi',
561
- },
562
- {
563
- type: 'commandExecution',
564
- id: 'item_c1',
565
- command: 'pwd',
566
- },
567
- {
568
- type: 'reasoning',
569
- id: 'item_r1',
570
- summary: [{ type: 'summary_text', text: '**Thinking through replay**' }],
571
- },
572
- ],
573
- },
574
- ],
575
- },
576
- });
577
- await adapter.loadSession({
578
- sessionId: 'sess_thread_abc',
579
- cwd: '/tmp/workspace',
580
- mcpServers: [],
581
- });
582
- const updates = connection.sessionUpdate.mock.calls.map((call) => call[0].update);
583
- expect(updates.some((update) => update.sessionUpdate === 'user_message_chunk')).toBe(true);
584
- expect(updates.some((update) => update.sessionUpdate === 'agent_message_chunk')).toBe(true);
585
- expect(updates.some((update) => update.sessionUpdate === 'agent_thought_chunk' &&
586
- update.content?.type === 'text' &&
587
- update.content.text === '**Thinking through replay**')).toBe(true);
588
- expect(updates.some((update) => update.sessionUpdate === 'tool_call' &&
589
- update.status === 'completed' &&
590
- update.toolCallId === 'item_c1')).toBe(true);
591
- });
592
- it('does not duplicate replayed tool and reasoning updates when matching live events arrive', async () => {
593
- const { connection } = createMockConnection();
594
- const { client: codexClient, mocks: codex } = createMockCodexClient();
595
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
596
- await initializeAdapterWithDefaultModel(adapter, codex);
597
- codex.request.mockResolvedValueOnce({
598
- thread: { id: 'thread_replay_dedupe', cwd: '/tmp/workspace' },
599
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
600
- reasoningEffort: 'medium',
601
- });
602
- codex.request.mockResolvedValueOnce({
603
- thread: {
604
- id: 'thread_replay_dedupe',
605
- turns: [
606
- {
607
- id: 'turn_replay_dedupe',
608
- items: [
609
- {
610
- type: 'commandExecution',
611
- id: 'item_replayed_command',
612
- command: 'cat README.md',
613
- },
614
- {
615
- type: 'reasoning',
616
- id: 'item_replayed_reasoning',
617
- summary: [{ type: 'summary_text', text: '**From replay**' }],
618
- },
619
- ],
620
- },
621
- ],
622
- },
623
- });
624
- await adapter.loadSession({
625
- sessionId: 'sess_thread_replay_dedupe',
626
- cwd: '/tmp/workspace',
627
- mcpServers: [],
628
- });
629
- connection.sessionUpdate.mockClear();
630
- await sendCodexNotification(adapter, 'item/started', {
631
- threadId: 'thread_replay_dedupe',
632
- turnId: 'turn_replay_dedupe',
633
- item: {
634
- type: 'commandExecution',
635
- id: 'item_replayed_command',
636
- status: 'inProgress',
637
- command: 'cat README.md',
638
- },
639
- });
640
- await adapter.handleCodexNotification('item/completed', {
641
- threadId: 'thread_replay_dedupe',
642
- turnId: 'turn_replay_dedupe',
643
- item: {
644
- type: 'commandExecution',
645
- id: 'item_replayed_command',
646
- status: 'completed',
647
- command: 'cat README.md',
648
- },
649
- });
650
- await sendCodexNotification(adapter, 'item/reasoning/summaryTextDelta', {
651
- threadId: 'thread_replay_dedupe',
652
- turnId: 'turn_replay_dedupe',
653
- itemId: 'item_replayed_reasoning',
654
- delta: '**From live**',
655
- });
656
- await sendCodexNotification(adapter, 'item/completed', {
657
- threadId: 'thread_replay_dedupe',
658
- turnId: 'turn_replay_dedupe',
659
- item: {
660
- type: 'reasoning',
661
- id: 'item_replayed_reasoning',
662
- status: 'completed',
663
- summary: [{ type: 'summary_text', text: '**From live**' }],
664
- },
665
- });
666
- expect(connection.sessionUpdate).not.toHaveBeenCalled();
667
- });
668
- it('prefers codex callId for tool call ids and enriches command metadata', async () => {
669
- const { connection } = createMockConnection();
670
- const { client: codexClient, mocks: codex } = createMockCodexClient();
671
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
672
- await initializeAdapterWithDefaultModel(adapter, codex);
673
- codex.request.mockResolvedValueOnce({
674
- thread: { id: 'thread_call_id', cwd: '/tmp/workspace' },
675
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
676
- reasoningEffort: 'medium',
677
- });
678
- await adapter.newSession({
679
- cwd: '/tmp/workspace',
680
- mcpServers: [],
681
- });
682
- await adapter.handleCodexNotification('item/started', {
683
- threadId: 'thread_call_id',
684
- turnId: 'turn_call_id',
685
- item: {
686
- type: 'commandExecution',
687
- id: 'item_call_id',
688
- callId: 'call_123',
689
- status: 'inProgress',
690
- command: 'cat README.md',
691
- },
692
- });
693
- await adapter.handleCodexNotification('item/completed', {
694
- threadId: 'thread_call_id',
695
- turnId: 'turn_call_id',
696
- item: {
697
- type: 'commandExecution',
698
- id: 'item_call_id',
699
- callId: 'call_123',
700
- status: 'completed',
701
- command: 'cat README.md',
702
- },
703
- });
704
- expect(connection.sessionUpdate.mock.calls).toEqual(expect.arrayContaining([
705
- [
706
- expect.objectContaining({
707
- update: expect.objectContaining({
708
- sessionUpdate: 'tool_call',
709
- toolCallId: 'call_123',
710
- title: 'Read README.md',
711
- kind: 'read',
712
- locations: [{ path: '/tmp/workspace/README.md' }],
713
- }),
714
- }),
715
- ],
716
- [
717
- expect.objectContaining({
718
- update: expect.objectContaining({
719
- sessionUpdate: 'tool_call_update',
720
- toolCallId: 'call_123',
721
- title: 'Read README.md',
722
- kind: 'read',
723
- }),
724
- }),
725
- ],
726
- ]));
727
- });
728
- it('synthesizes completion when command output hands off to a session id', async () => {
729
- const { connection } = createMockConnection();
730
- const { client: codexClient, mocks: codex } = createMockCodexClient();
731
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
732
- await initializeAdapterWithDefaultModel(adapter, codex);
733
- codex.request.mockResolvedValueOnce({
734
- thread: { id: 'thread_command_handoff', cwd: '/tmp/workspace' },
735
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
736
- reasoningEffort: 'medium',
737
- });
738
- await adapter.newSession({
739
- cwd: '/tmp/workspace',
740
- mcpServers: [],
741
- });
742
- await sendCodexNotification(adapter, 'item/started', {
743
- threadId: 'thread_command_handoff',
744
- turnId: 'turn_command_handoff',
745
- item: {
746
- type: 'commandExecution',
747
- id: 'item_command_handoff',
748
- callId: 'call_command_handoff',
749
- status: 'inProgress',
750
- command: 'git commit -m "test"',
751
- },
752
- });
753
- await sendCodexNotification(adapter, 'item/commandExecution/outputDelta', {
754
- threadId: 'thread_command_handoff',
755
- turnId: 'turn_command_handoff',
756
- itemId: 'item_command_handoff',
757
- delta: 'Process running with session ID 96081',
758
- });
759
- await sendCodexNotification(adapter, 'item/commandExecution/outputDelta', {
760
- threadId: 'thread_command_handoff',
761
- turnId: 'turn_command_handoff',
762
- itemId: 'item_command_handoff',
763
- delta: 'still running',
764
- });
765
- const completedItem = {
766
- type: 'commandExecution',
767
- id: 'item_command_handoff',
768
- status: 'completed',
769
- aggregatedOutput: 'Process exited with code 0',
770
- exitCode: 0,
771
- };
772
- for (let count = 0; count < 2; count += 1) {
773
- await sendCodexNotification(adapter, 'item/completed', {
774
- threadId: 'thread_command_handoff',
775
- turnId: 'turn_command_handoff',
776
- item: completedItem,
777
- });
778
- }
779
- const updates = connection.sessionUpdate.mock.calls.map((call) => call[0].update);
780
- const inProgressUpdates = updates.filter((update) => update.sessionUpdate === 'tool_call_update' &&
781
- update.toolCallId === 'call_command_handoff' &&
782
- update.status === 'in_progress');
783
- expect(inProgressUpdates).toHaveLength(1);
784
- const completedUpdates = updates.filter((update) => (update.sessionUpdate === 'tool_call' || update.sessionUpdate === 'tool_call_update') &&
785
- update.toolCallId === 'call_command_handoff' &&
786
- update.status === 'completed');
787
- expect(completedUpdates).toEqual([
788
- expect.objectContaining({
789
- sessionUpdate: 'tool_call_update',
790
- rawOutput: 'Process running with session ID 96081',
791
- }),
792
- ]);
793
- });
794
- it('does not synthesize completion for normal output that mentions session handoff text', async () => {
795
- const { connection } = createMockConnection();
796
- const { client: codexClient, mocks: codex } = createMockCodexClient();
797
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
798
- await initializeAdapterWithDefaultModel(adapter, codex);
799
- codex.request.mockResolvedValueOnce({
800
- thread: { id: 'thread_command_log_output', cwd: '/tmp/workspace' },
801
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
802
- reasoningEffort: 'medium',
803
- });
804
- await adapter.newSession({
805
- cwd: '/tmp/workspace',
806
- mcpServers: [],
807
- });
808
- await sendCodexNotification(adapter, 'item/started', {
809
- threadId: 'thread_command_log_output',
810
- turnId: 'turn_command_log_output',
811
- item: {
812
- type: 'commandExecution',
813
- id: 'item_command_log_output',
814
- callId: 'call_command_log_output',
815
- status: 'inProgress',
816
- command: 'bash script.sh',
817
- },
818
- });
819
- await sendCodexNotification(adapter, 'item/commandExecution/outputDelta', {
820
- threadId: 'thread_command_log_output',
821
- turnId: 'turn_command_log_output',
822
- itemId: 'item_command_log_output',
823
- delta: 'worker log: process running with session ID 96081 and waiting',
824
- });
825
- await sendCodexNotification(adapter, 'item/commandExecution/outputDelta', {
826
- threadId: 'thread_command_log_output',
827
- turnId: 'turn_command_log_output',
828
- itemId: 'item_command_log_output',
829
- delta: 'still running',
830
- });
831
- const updates = connection.sessionUpdate.mock.calls.map((call) => call[0].update);
832
- const completedUpdates = updates.filter((update) => update.sessionUpdate === 'tool_call_update' &&
833
- update.toolCallId === 'call_command_log_output' &&
834
- update.status === 'completed');
835
- expect(completedUpdates).toHaveLength(0);
836
- expect(updates).toEqual(expect.arrayContaining([
837
- expect.objectContaining({
838
- sessionUpdate: 'tool_call_update',
839
- toolCallId: 'call_command_log_output',
840
- status: 'in_progress',
841
- rawOutput: 'worker log: process running with session ID 96081 and waiting',
842
- }),
843
- expect.objectContaining({
844
- sessionUpdate: 'tool_call_update',
845
- toolCallId: 'call_command_log_output',
846
- status: 'in_progress',
847
- rawOutput: 'still running',
848
- }),
849
- ]));
850
- });
851
- it('avoids duplicate thought chunks when reasoning started item already contains summary text', async () => {
852
- const { connection } = createMockConnection();
853
- const { client: codexClient, mocks: codex } = createMockCodexClient();
854
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
855
- await initializeAdapterWithDefaultModel(adapter, codex);
856
- codex.request.mockResolvedValueOnce({
857
- thread: { id: 'thread_reasoning', cwd: '/tmp/workspace' },
858
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
859
- reasoningEffort: 'medium',
860
- });
861
- await adapter.newSession({
862
- cwd: '/tmp/workspace',
863
- mcpServers: [],
864
- });
865
- await adapter.handleCodexNotification('item/started', {
866
- threadId: 'thread_reasoning',
867
- turnId: 'turn_reasoning',
868
- item: {
869
- type: 'reasoning',
870
- id: 'item_reasoning',
871
- status: 'inProgress',
872
- summary: [{ type: 'summary_text', text: '**Analyzing approach**' }],
873
- },
874
- });
875
- await adapter.handleCodexNotification('item/reasoning/summaryTextDelta', {
876
- threadId: 'thread_reasoning',
877
- turnId: 'turn_reasoning',
878
- itemId: 'item_reasoning',
879
- delta: '**Analyzing approach**',
880
- });
881
- await adapter.handleCodexNotification('item/completed', {
882
- threadId: 'thread_reasoning',
883
- turnId: 'turn_reasoning',
884
- item: {
885
- type: 'reasoning',
886
- id: 'item_reasoning',
887
- status: 'completed',
888
- summary: [{ type: 'summary_text', text: '**Analyzing approach**' }],
889
- },
890
- });
891
- const updates = connection.sessionUpdate.mock.calls.map((call) => call[0].update);
892
- const thoughtChunks = updates.filter((update) => update.sessionUpdate === 'agent_thought_chunk');
893
- expect(thoughtChunks).toEqual([
894
- {
895
- sessionUpdate: 'agent_thought_chunk',
896
- content: { type: 'text', text: '**Analyzing approach**' },
897
- },
898
- ]);
899
- expect(updates.some((update) => update.sessionUpdate === 'tool_call' &&
900
- update.toolCallId === 'item_reasoning' &&
901
- update.kind === 'think' &&
902
- update.status === 'pending')).toBe(true);
903
- expect(updates.some((update) => update.sessionUpdate === 'tool_call_update' &&
904
- update.toolCallId === 'item_reasoning' &&
905
- update.status === 'in_progress')).toBe(true);
906
- expect(updates.some((update) => update.sessionUpdate === 'tool_call_update' &&
907
- update.toolCallId === 'item_reasoning' &&
908
- update.status === 'completed')).toBe(true);
909
- });
910
- it('writes provided MCP servers to Codex config and reloads on loadSession', async () => {
911
- const { connection } = createMockConnection();
912
- const { client: codexClient, mocks: codex } = createMockCodexClient();
913
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
914
- await initializeAdapterWithDefaultModel(adapter, codex);
915
- codex.request.mockResolvedValueOnce({
916
- thread: { id: 'thread_resume', cwd: '/tmp/workspace' },
917
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
918
- reasoningEffort: 'medium',
919
- });
920
- codex.request.mockResolvedValueOnce({});
921
- codex.request.mockResolvedValueOnce({});
922
- codex.request.mockResolvedValueOnce({
923
- thread: { id: 'thread_resume', turns: [] },
924
- });
925
- const mcpServers = [
926
- {
927
- type: 'http',
928
- name: 'remote-tools',
929
- url: 'https://mcp.example.com',
930
- headers: [{ name: 'Authorization', value: 'Bearer token' }],
931
- },
932
- ];
933
- await adapter.loadSession({
934
- sessionId: 'sess_thread_resume',
935
- cwd: '/tmp/workspace',
936
- mcpServers,
937
- });
938
- expect(getCodexRequestCalls(codex, 'config/value/write')).toEqual([
939
- [
940
- 'config/value/write',
941
- {
942
- keyPath: 'mcp_servers',
943
- mergeStrategy: 'replace',
944
- value: {
945
- 'remote-tools': {
946
- enabled: true,
947
- url: 'https://mcp.example.com',
948
- http_headers: {
949
- Authorization: 'Bearer token',
950
- },
951
- },
952
- },
953
- },
954
- ],
955
- ]);
956
- expect(getCodexRequestCalls(codex, 'config/mcpServer/reload')).toEqual([
957
- ['config/mcpServer/reload', {}],
958
- ]);
959
- });
960
- it.each(['turbo', true, false])('rejects invalid thought level value %s', async (value) => {
961
- const { connection } = createMockConnection();
962
- const { client: codexClient, mocks: codex } = createMockCodexClient();
963
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
964
- await initializeAdapterWithDefaultModel(adapter, codex);
965
- codex.request.mockResolvedValueOnce({
966
- thread: { id: 'thread_123', cwd: '/tmp/workspace' },
967
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
968
- reasoningEffort: 'medium',
969
- });
970
- const session = await adapter.newSession({
971
- cwd: '/tmp/workspace',
972
- mcpServers: [],
973
- });
974
- await expect(adapter.setSessionConfigOption({
975
- sessionId: session.sessionId,
976
- configId: 'reasoning_effort',
977
- ...(typeof value === 'boolean' ? { type: 'boolean', value } : { value }),
978
- })).rejects.toBeInstanceOf(Error);
979
- });
980
- it('falls back to default execution presets when config requirements are missing', async () => {
981
- const { connection } = createMockConnection();
982
- const { client: codexClient, mocks: codex } = createMockCodexClient();
983
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
984
- codex.request.mockResolvedValueOnce({});
985
- codex.request.mockResolvedValueOnce({
986
- requirements: null,
987
- });
988
- codex.request.mockResolvedValueOnce({
989
- data: DEFAULT_COLLABORATION_MODES,
990
- nextCursor: null,
991
- });
992
- codex.request.mockResolvedValueOnce({
993
- data: [
994
- {
995
- id: 'gpt-5',
996
- displayName: 'GPT-5',
997
- description: 'Default model',
998
- defaultReasoningEffort: 'medium',
999
- supportedReasoningEfforts: [],
1000
- inputModalities: ['text'],
1001
- isDefault: true,
1002
- },
1003
- ],
1004
- nextCursor: null,
1005
- });
1006
- await adapter.initialize({
1007
- protocolVersion: 1,
1008
- clientCapabilities: {},
1009
- clientInfo: { name: 'test-client', version: '0.0.1' },
1010
- });
1011
- codex.request.mockResolvedValueOnce({
1012
- thread: { id: 'thread_defaults', cwd: '/tmp/workspace' },
1013
- approvalPolicy: 'on-request',
1014
- sandbox: {
1015
- type: 'workspaceWrite',
1016
- writableRoots: ['/tmp/workspace'],
1017
- readOnlyAccess: { type: 'fullAccess' },
1018
- networkAccess: true,
1019
- excludeTmpdirEnvVar: false,
1020
- excludeSlashTmp: false,
1021
- },
1022
- reasoningEffort: 'medium',
1023
- });
1024
- const session = await adapter.newSession({
1025
- cwd: '/tmp/workspace',
1026
- mcpServers: [],
1027
- });
1028
- const executionModeOption = (session.configOptions ?? []).find((option) => option.id === 'execution_mode');
1029
- expect(executionModeOption?.type).toBe('select');
1030
- if (executionModeOption?.type !== 'select') {
1031
- throw new Error('expected execution_mode select option');
1032
- }
1033
- const presetValues = executionModeOption.options.flatMap((option) => 'value' in option ? [option.value] : []);
1034
- const presetEntries = executionModeOption.options.flatMap((option) => 'value' in option ? [option] : []);
1035
- expect(presetValues.length).toBeGreaterThan(1);
1036
- expect(presetValues).toContain(JSON.stringify(['never', 'danger-full-access']));
1037
- expect(presetValues).toContain(JSON.stringify(['on-failure', 'workspace-write']));
1038
- expect(presetEntries).toContainEqual(expect.objectContaining({
1039
- value: JSON.stringify(['never', 'danger-full-access']),
1040
- name: 'YOLO (Full Access)',
1041
- }));
1042
- expect(presetEntries).toContainEqual(expect.objectContaining({
1043
- value: JSON.stringify(['on-request', 'workspace-write']),
1044
- name: 'On Request (Workspace Write)',
1045
- }));
1046
- });
1047
- it('applies discovered execution mode and plan collaboration mode to turn/start', async () => {
1048
- const { connection } = createMockConnection();
1049
- const { client: codexClient, mocks: codex } = createMockCodexClient();
1050
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
1051
- await initializeAdapterWithDefaultModel(adapter, codex);
1052
- codex.request.mockResolvedValueOnce({
1053
- thread: { id: 'thread_modes', cwd: '/tmp/workspace' },
1054
- approvalPolicy: 'on-request',
1055
- sandbox: {
1056
- type: 'workspaceWrite',
1057
- writableRoots: ['/tmp/workspace'],
1058
- readOnlyAccess: { type: 'fullAccess' },
1059
- networkAccess: true,
1060
- excludeTmpdirEnvVar: false,
1061
- excludeSlashTmp: false,
1062
- },
1063
- reasoningEffort: 'medium',
1064
- });
1065
- const session = await adapter.newSession({
1066
- cwd: '/tmp/workspace',
1067
- mcpServers: [],
1068
- });
1069
- const executionModeOption = (session.configOptions ?? []).find((option) => option.id === 'execution_mode');
1070
- const yoloLikeOption = executionModeOption?.type === 'select'
1071
- ? executionModeOption.options.find((option) => 'value' in option &&
1072
- option.value.includes('never') &&
1073
- option.value.includes('danger-full-access'))
1074
- : null;
1075
- expect(yoloLikeOption).toBeDefined();
1076
- if (!yoloLikeOption) {
1077
- throw new Error('expected discovered execution mode option');
1078
- }
1079
- await adapter.setSessionMode({ sessionId: session.sessionId, modeId: 'plan' });
1080
- await adapter.setSessionConfigOption({
1081
- sessionId: session.sessionId,
1082
- configId: 'execution_mode',
1083
- value: yoloLikeOption.value,
1084
- });
1085
- codex.request.mockResolvedValueOnce({
1086
- turn: { id: 'turn_modes', status: 'completed' },
1087
- });
1088
- const promptResponse = await adapter.prompt({
1089
- sessionId: session.sessionId,
1090
- prompt: [{ type: 'text', text: 'hello' }],
1091
- });
1092
- expect(promptResponse.stopReason).toBe('end_turn');
1093
- expect(codex.request).toHaveBeenCalledWith('turn/start', expect.objectContaining({
1094
- threadId: 'thread_modes',
1095
- approvalPolicy: 'never',
1096
- sandboxPolicy: expect.objectContaining({ type: 'dangerFullAccess' }),
1097
- collaborationMode: expect.objectContaining({
1098
- mode: 'plan',
1099
- }),
1100
- }));
1101
- });
1102
- it('rejects empty prompt content and does not start a turn', async () => {
1103
- const { connection } = createMockConnection();
1104
- const { client: codexClient, mocks: codex } = createMockCodexClient();
1105
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
1106
- await initializeAdapterWithDefaultModel(adapter, codex);
1107
- codex.request.mockResolvedValueOnce({
1108
- thread: { id: 'thread_empty_prompt', cwd: '/tmp/workspace' },
1109
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
1110
- reasoningEffort: 'medium',
1111
- });
1112
- const session = await adapter.newSession({
1113
- cwd: '/tmp/workspace',
1114
- mcpServers: [],
1115
- });
1116
- await expect(adapter.prompt({
1117
- sessionId: session.sessionId,
1118
- prompt: [{ type: 'text', text: ' ' }],
1119
- })).rejects.toBeInstanceOf(Error);
1120
- expect(getCodexRequestCalls(codex, 'turn/start')).toHaveLength(0);
1121
- codex.request.mockResolvedValueOnce({
1122
- turn: { id: 'turn_after_empty_prompt', status: 'completed' },
1123
- });
1124
- await expect(adapter.prompt({
1125
- sessionId: session.sessionId,
1126
- prompt: [{ type: 'text', text: 'run now' }],
1127
- })).resolves.toEqual({ stopReason: 'end_turn' });
1128
- expect(getCodexRequestCalls(codex, 'turn/start')).toHaveLength(1);
1129
- });
1130
- it('requests ExitPlanMode approval after completed plan item in plan mode', async () => {
1131
- const { connection } = createMockConnection();
1132
- connection.requestPermission.mockResolvedValue({
1133
- outcome: { outcome: 'selected', optionId: 'default' },
1134
- });
1135
- const { client: codexClient, mocks: codex } = createMockCodexClient();
1136
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
1137
- await initializeAdapterWithDefaultModel(adapter, codex);
1138
- codex.request.mockResolvedValueOnce({
1139
- thread: { id: 'thread_plan_approval', cwd: '/tmp/workspace' },
1140
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
1141
- reasoningEffort: 'medium',
1142
- });
1143
- const session = await adapter.newSession({
1144
- cwd: '/tmp/workspace',
1145
- mcpServers: [],
1146
- });
1147
- await adapter.setSessionMode({ sessionId: session.sessionId, modeId: 'plan' });
1148
- await adapter.handleCodexNotification('item/started', {
1149
- threadId: 'thread_plan_approval',
1150
- turnId: 'turn_plan_approval',
1151
- item: {
1152
- type: 'plan',
1153
- id: 'item_plan_approval',
1154
- status: 'inProgress',
1155
- },
1156
- });
1157
- await adapter.handleCodexNotification('item/plan/delta', {
1158
- threadId: 'thread_plan_approval',
1159
- turnId: 'turn_plan_approval',
1160
- itemId: 'item_plan_approval',
1161
- delta: '## Proposed Plan\n1. Add adapter plan approval bridge',
1162
- });
1163
- await adapter.handleCodexNotification('item/completed', {
1164
- threadId: 'thread_plan_approval',
1165
- turnId: 'turn_plan_approval',
1166
- item: {
1167
- type: 'plan',
1168
- id: 'item_plan_approval',
1169
- status: 'completed',
1170
- },
1171
- });
1172
- expect(connection.requestPermission).toHaveBeenCalledWith(expect.objectContaining({
1173
- toolCall: expect.objectContaining({
1174
- title: 'ExitPlanMode',
1175
- kind: 'switch_mode',
1176
- }),
1177
- options: [
1178
- { optionId: 'default', name: 'Approve and switch to Default', kind: 'allow_once' },
1179
- { optionId: 'plan', name: 'Keep planning', kind: 'reject_once' },
1180
- ],
1181
- }));
1182
- expect(connection.sessionUpdate.mock.calls).toEqual(expect.arrayContaining([
1183
- [
1184
- expect.objectContaining({
1185
- update: expect.objectContaining({
1186
- sessionUpdate: 'tool_call',
1187
- title: 'ExitPlanMode',
1188
- kind: 'switch_mode',
1189
- status: 'pending',
1190
- rawInput: expect.objectContaining({
1191
- type: 'ExitPlanMode',
1192
- plan: expect.objectContaining({
1193
- type: 'text',
1194
- text: expect.stringContaining('## Proposed Plan'),
1195
- }),
1196
- }),
1197
- }),
1198
- }),
1199
- ],
1200
- [
1201
- expect.objectContaining({
1202
- update: expect.objectContaining({
1203
- sessionUpdate: 'config_option_update',
1204
- configOptions: expect.arrayContaining([
1205
- expect.objectContaining({
1206
- id: 'mode',
1207
- currentValue: 'default',
1208
- }),
1209
- ]),
1210
- }),
1211
- }),
1212
- ],
1213
- [
1214
- expect.objectContaining({
1215
- update: expect.objectContaining({
1216
- sessionUpdate: 'tool_call_update',
1217
- title: 'ExitPlanMode',
1218
- kind: 'switch_mode',
1219
- status: 'completed',
1220
- }),
1221
- }),
1222
- ],
1223
- ]));
1224
- });
1225
- it('requests ExitPlanMode approval after recovered completed plan item in plan mode', async () => {
1226
- const { connection } = createMockConnection();
1227
- connection.requestPermission.mockResolvedValue({
1228
- outcome: { outcome: 'selected', optionId: 'default' },
1229
- });
1230
- const { client: codexClient, mocks: codex } = createMockCodexClient();
1231
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
1232
- await initializeAdapterWithDefaultModel(adapter, codex);
1233
- codex.request.mockResolvedValueOnce({
1234
- thread: { id: 'thread_recovered_plan_approval', cwd: '/tmp/workspace' },
1235
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
1236
- reasoningEffort: 'medium',
1237
- });
1238
- const session = await adapter.newSession({
1239
- cwd: '/tmp/workspace',
1240
- mcpServers: [],
1241
- });
1242
- await adapter.setSessionMode({ sessionId: session.sessionId, modeId: 'plan' });
1243
- await adapter.handleCodexNotification('item/plan/delta', {
1244
- threadId: 'thread_recovered_plan_approval',
1245
- turnId: 'turn_recovered_plan_approval',
1246
- itemId: 'item_recovered_plan_approval',
1247
- delta: '## Recovered Plan\n1. Request approval after recovery',
1248
- });
1249
- await adapter.handleCodexNotification('item/completed', {
1250
- threadId: 'thread_recovered_plan_approval',
1251
- turnId: 'turn_recovered_plan_approval',
1252
- item: {
1253
- type: 'plan',
1254
- id: 'item_recovered_plan_approval',
1255
- status: 'completed',
1256
- },
1257
- });
1258
- expect(connection.requestPermission).toHaveBeenCalledWith(expect.objectContaining({
1259
- toolCall: expect.objectContaining({
1260
- title: 'ExitPlanMode',
1261
- kind: 'switch_mode',
1262
- }),
1263
- }));
1264
- expect(connection.sessionUpdate.mock.calls).toEqual(expect.arrayContaining([
1265
- [
1266
- expect.objectContaining({
1267
- update: expect.objectContaining({
1268
- sessionUpdate: 'tool_call',
1269
- title: 'plan',
1270
- kind: 'think',
1271
- status: 'completed',
1272
- }),
1273
- }),
1274
- ],
1275
- [
1276
- expect.objectContaining({
1277
- update: expect.objectContaining({
1278
- sessionUpdate: 'tool_call',
1279
- title: 'ExitPlanMode',
1280
- kind: 'switch_mode',
1281
- status: 'pending',
1282
- rawInput: expect.objectContaining({
1283
- type: 'ExitPlanMode',
1284
- plan: expect.objectContaining({
1285
- type: 'text',
1286
- text: expect.stringContaining('## Recovered Plan'),
1287
- }),
1288
- }),
1289
- }),
1290
- }),
1291
- ],
1292
- ]));
1293
- });
1294
- it('switches to the selected non-plan mode id when plan approval is accepted', async () => {
1295
- const { connection } = createMockConnection();
1296
- connection.requestPermission.mockResolvedValue({
1297
- outcome: { outcome: 'selected', optionId: 'code' },
1298
- });
1299
- const { client: codexClient, mocks: codex } = createMockCodexClient();
1300
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
1301
- await initializeAdapterWithDefaultModel(adapter, codex, {
1302
- collaborationModes: [
1303
- { name: 'Default', mode: 'default' },
1304
- { name: 'Code', mode: 'code' },
1305
- { name: 'Plan', mode: 'plan' },
1306
- ],
1307
- });
1308
- codex.request.mockResolvedValueOnce({
1309
- thread: { id: 'thread_plan_mode_switch', cwd: '/tmp/workspace' },
1310
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
1311
- reasoningEffort: 'medium',
1312
- });
1313
- const session = await adapter.newSession({
1314
- cwd: '/tmp/workspace',
1315
- mcpServers: [],
1316
- });
1317
- await adapter.setSessionMode({ sessionId: session.sessionId, modeId: 'plan' });
1318
- await adapter.handleCodexNotification('item/started', {
1319
- threadId: 'thread_plan_mode_switch',
1320
- turnId: 'turn_plan_mode_switch',
1321
- item: {
1322
- type: 'plan',
1323
- id: 'item_plan_mode_switch',
1324
- status: 'inProgress',
1325
- },
1326
- });
1327
- await adapter.handleCodexNotification('item/plan/delta', {
1328
- threadId: 'thread_plan_mode_switch',
1329
- turnId: 'turn_plan_mode_switch',
1330
- itemId: 'item_plan_mode_switch',
1331
- delta: '# Plan\n- implement this',
1332
- });
1333
- await adapter.handleCodexNotification('item/completed', {
1334
- threadId: 'thread_plan_mode_switch',
1335
- turnId: 'turn_plan_mode_switch',
1336
- item: {
1337
- type: 'plan',
1338
- id: 'item_plan_mode_switch',
1339
- status: 'completed',
1340
- },
1341
- });
1342
- expect(connection.requestPermission).toHaveBeenCalledWith(expect.objectContaining({
1343
- options: expect.arrayContaining([
1344
- expect.objectContaining({ optionId: 'default', kind: 'allow_once' }),
1345
- expect.objectContaining({ optionId: 'code', kind: 'allow_once' }),
1346
- expect.objectContaining({ optionId: 'plan', kind: 'reject_once' }),
1347
- ]),
1348
- }));
1349
- expect(connection.sessionUpdate.mock.calls).toEqual(expect.arrayContaining([
1350
- [
1351
- expect.objectContaining({
1352
- update: expect.objectContaining({
1353
- sessionUpdate: 'config_option_update',
1354
- configOptions: expect.arrayContaining([
1355
- expect.objectContaining({
1356
- id: 'mode',
1357
- currentValue: 'code',
1358
- }),
1359
- ]),
1360
- }),
1361
- }),
1362
- ],
1363
- ]));
1364
- });
1365
- it('holds prompt completion until plan approval resolves and exits plan mode', async () => {
1366
- let resolvePlanApproval = () => {
1367
- throw new Error('expected plan approval request callback');
1368
- };
1369
- const { connection } = createMockConnection();
1370
- connection.requestPermission.mockImplementation(() => new Promise((resolve) => {
1371
- resolvePlanApproval = resolve;
1372
- }));
1373
- const { client: codexClient, mocks: codex } = createMockCodexClient();
1374
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
1375
- await initializeAdapterWithDefaultModel(adapter, codex);
1376
- codex.request.mockResolvedValueOnce({
1377
- thread: { id: 'thread_plan_hold', cwd: '/tmp/workspace' },
1378
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
1379
- reasoningEffort: 'medium',
1380
- });
1381
- const session = await adapter.newSession({
1382
- cwd: '/tmp/workspace',
1383
- mcpServers: [],
1384
- });
1385
- await adapter.setSessionMode({ sessionId: session.sessionId, modeId: 'plan' });
1386
- codex.request.mockResolvedValueOnce({
1387
- turn: { id: 'turn_plan_hold', status: 'inProgress' },
1388
- });
1389
- const promptPromise = adapter.prompt({
1390
- sessionId: session.sessionId,
1391
- prompt: [{ type: 'text', text: 'continue' }],
1392
- });
1393
- await vi.waitFor(() => {
1394
- expect(codex.request).toHaveBeenCalledWith('turn/start', expect.objectContaining({
1395
- threadId: 'thread_plan_hold',
1396
- }));
1397
- });
1398
- await adapter.handleCodexNotification('item/started', {
1399
- threadId: 'thread_plan_hold',
1400
- turnId: 'turn_plan_hold',
1401
- item: {
1402
- type: 'plan',
1403
- id: 'item_plan_hold',
1404
- status: 'inProgress',
1405
- },
1406
- });
1407
- await adapter.handleCodexNotification('item/plan/delta', {
1408
- threadId: 'thread_plan_hold',
1409
- turnId: 'turn_plan_hold',
1410
- itemId: 'item_plan_hold',
1411
- delta: '# Plan\n- implement it',
1412
- });
1413
- const itemCompletedPromise = adapter.handleCodexNotification('item/completed', {
1414
- threadId: 'thread_plan_hold',
1415
- turnId: 'turn_plan_hold',
1416
- item: {
1417
- type: 'plan',
1418
- id: 'item_plan_hold',
1419
- status: 'completed',
1420
- },
1421
- });
1422
- await adapter.handleCodexNotification('turn/completed', {
1423
- threadId: 'thread_plan_hold',
1424
- turn: { id: 'turn_plan_hold', status: 'completed', error: null, items: [] },
1425
- });
1426
- let promptSettled = false;
1427
- void promptPromise.then(() => {
1428
- promptSettled = true;
1429
- });
1430
- await new Promise((resolve) => setTimeout(resolve, 0));
1431
- expect(promptSettled).toBe(false);
1432
- resolvePlanApproval({
1433
- outcome: { outcome: 'selected', optionId: 'default' },
1434
- });
1435
- await itemCompletedPromise;
1436
- await expect(promptPromise).resolves.toEqual({ stopReason: 'end_turn' });
1437
- codex.request.mockResolvedValueOnce({
1438
- turn: { id: 'turn_after_plan_hold', status: 'completed' },
1439
- });
1440
- const secondPrompt = await adapter.prompt({
1441
- sessionId: session.sessionId,
1442
- prompt: [{ type: 'text', text: 'implement now' }],
1443
- });
1444
- expect(secondPrompt.stopReason).toBe('end_turn');
1445
- const turnStartCalls = getCodexRequestCalls(codex, 'turn/start');
1446
- const secondTurnStart = turnStartCalls[1]?.[1];
1447
- expect(secondTurnStart).toBeDefined();
1448
- expect(secondTurnStart).toEqual(expect.objectContaining({
1449
- collaborationMode: expect.objectContaining({
1450
- mode: 'default',
1451
- }),
1452
- }));
1453
- });
1454
- it('marks synthetic ExitPlanMode approval as failed when user rejects', async () => {
1455
- const { connection } = createMockConnection();
1456
- connection.requestPermission.mockResolvedValue({
1457
- outcome: { outcome: 'selected', optionId: 'plan' },
1458
- });
1459
- const { client: codexClient, mocks: codex } = createMockCodexClient();
1460
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
1461
- await initializeAdapterWithDefaultModel(adapter, codex);
1462
- codex.request.mockResolvedValueOnce({
1463
- thread: { id: 'thread_plan_reject', cwd: '/tmp/workspace' },
1464
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
1465
- reasoningEffort: 'medium',
1466
- });
1467
- const session = await adapter.newSession({
1468
- cwd: '/tmp/workspace',
1469
- mcpServers: [],
1470
- });
1471
- await adapter.setSessionMode({ sessionId: session.sessionId, modeId: 'plan' });
1472
- await adapter.handleCodexNotification('item/started', {
1473
- threadId: 'thread_plan_reject',
1474
- turnId: 'turn_plan_reject',
1475
- item: {
1476
- type: 'plan',
1477
- id: 'item_plan_reject',
1478
- status: 'inProgress',
1479
- },
1480
- });
1481
- await adapter.handleCodexNotification('item/plan/delta', {
1482
- threadId: 'thread_plan_reject',
1483
- turnId: 'turn_plan_reject',
1484
- itemId: 'item_plan_reject',
1485
- delta: '# Plan\n- gather context',
1486
- });
1487
- await adapter.handleCodexNotification('item/completed', {
1488
- threadId: 'thread_plan_reject',
1489
- turnId: 'turn_plan_reject',
1490
- item: {
1491
- type: 'plan',
1492
- id: 'item_plan_reject',
1493
- status: 'completed',
1494
- },
1495
- });
1496
- expect(connection.sessionUpdate.mock.calls).toEqual(expect.arrayContaining([
1497
- [
1498
- expect.objectContaining({
1499
- update: expect.objectContaining({
1500
- sessionUpdate: 'tool_call_update',
1501
- title: 'ExitPlanMode',
1502
- kind: 'switch_mode',
1503
- status: 'failed',
1504
- rawOutput: 'Plan approval rejected',
1505
- }),
1506
- }),
1507
- ],
1508
- ]));
1509
- });
1510
- it('maps tool request_user_input selections into answer payloads', async () => {
1511
- const { connection } = createMockConnection();
1512
- connection.requestPermission.mockResolvedValue({
1513
- outcome: { outcome: 'selected', optionId: 'answer_1' },
1514
- });
1515
- const { client: codexClient, mocks: codex } = createMockCodexClient();
1516
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
1517
- await initializeAdapterWithDefaultModel(adapter, codex);
1518
- codex.request.mockResolvedValueOnce({
1519
- thread: { id: 'thread_perm', cwd: '/tmp/workspace' },
1520
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
1521
- reasoningEffort: 'medium',
1522
- });
1523
- await adapter.newSession({
1524
- cwd: '/tmp/workspace',
1525
- mcpServers: [],
1526
- });
1527
- await adapter.handleCodexServerRequest({
1528
- id: 17,
1529
- method: 'item/tool/requestUserInput',
1530
- params: {
1531
- threadId: 'thread_perm',
1532
- turnId: 'turn_perm',
1533
- itemId: 'item_perm',
1534
- questions: [
1535
- {
1536
- id: 'choice',
1537
- header: 'Pick one',
1538
- question: 'Select an option',
1539
- isOther: false,
1540
- isSecret: false,
1541
- options: [
1542
- { label: 'First', description: 'One' },
1543
- { label: 'Second', description: 'Two' },
1544
- ],
1545
- },
1546
- ],
1547
- },
1548
- });
1549
- expect(codex.respondSuccess).toHaveBeenCalledWith(17, {
1550
- answers: {
1551
- choice: { answers: ['Second'] },
1552
- },
1553
- });
1554
- expect(connection.requestPermission).toHaveBeenCalledWith(expect.objectContaining({
1555
- toolCall: expect.objectContaining({
1556
- title: 'item/tool/requestUserInput',
1557
- }),
1558
- }));
1559
- expect(connection.sessionUpdate.mock.calls).toEqual(expect.arrayContaining([
1560
- [
1561
- expect.objectContaining({
1562
- update: expect.objectContaining({
1563
- sessionUpdate: 'tool_call_update',
1564
- status: 'completed',
1565
- }),
1566
- }),
1567
- ],
1568
- ]));
1569
- });
1570
- it('maps multi-question request_user_input answers from ACP _meta payload', async () => {
1571
- const { connection } = createMockConnection();
1572
- connection.requestPermission.mockResolvedValue({
1573
- _meta: {
1574
- factoryFactory: {
1575
- toolUserInputAnswers: {
1576
- color: ['Blue'],
1577
- shell: ['zsh', 'fish'],
1578
- unknown: ['ignored'],
1579
- },
1580
- },
1581
- },
1582
- outcome: { outcome: 'selected', optionId: 'allow_once' },
1583
- });
1584
- const { client: codexClient, mocks: codex } = createMockCodexClient();
1585
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
1586
- await initializeAdapterWithDefaultModel(adapter, codex);
1587
- codex.request.mockResolvedValueOnce({
1588
- thread: { id: 'thread_multi_question', cwd: '/tmp/workspace' },
1589
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
1590
- reasoningEffort: 'medium',
1591
- });
1592
- await adapter.newSession({
1593
- cwd: '/tmp/workspace',
1594
- mcpServers: [],
1595
- });
1596
- await adapter.handleCodexServerRequest({
1597
- id: 19,
1598
- method: 'item/tool/requestUserInput',
1599
- params: {
1600
- threadId: 'thread_multi_question',
1601
- turnId: 'turn_multi_question',
1602
- itemId: 'item_multi_question',
1603
- questions: [
1604
- {
1605
- id: 'color',
1606
- header: 'Pick color',
1607
- question: 'Favorite color?',
1608
- isOther: false,
1609
- isSecret: false,
1610
- options: [{ label: 'Blue', description: 'cool' }],
1611
- },
1612
- {
1613
- id: 'shell',
1614
- header: 'Pick shells',
1615
- question: 'Preferred shells?',
1616
- isOther: true,
1617
- isSecret: false,
1618
- options: [
1619
- { label: 'zsh', description: 'default' },
1620
- { label: 'fish', description: 'friendly' },
1621
- ],
1622
- },
1623
- ],
1624
- },
1625
- });
1626
- expect(codex.respondSuccess).toHaveBeenCalledWith(19, {
1627
- answers: {
1628
- color: { answers: ['Blue'] },
1629
- shell: { answers: ['zsh', 'fish'] },
1630
- },
1631
- });
1632
- expect(connection.requestPermission).toHaveBeenCalledWith(expect.objectContaining({
1633
- options: [
1634
- { optionId: 'allow_once', name: 'Submit', kind: 'allow_once' },
1635
- { optionId: 'reject_once', name: 'Cancel', kind: 'reject_once' },
1636
- ],
1637
- }));
1638
- });
1639
- it('fails multi-question request_user_input when structured answers are missing', async () => {
1640
- const { connection } = createMockConnection();
1641
- connection.requestPermission.mockResolvedValue({
1642
- outcome: { outcome: 'selected', optionId: 'answer_1' },
1643
- });
1644
- const { client: codexClient, mocks: codex } = createMockCodexClient();
1645
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
1646
- await initializeAdapterWithDefaultModel(adapter, codex);
1647
- codex.request.mockResolvedValueOnce({
1648
- thread: { id: 'thread_multi_question_no_meta', cwd: '/tmp/workspace' },
1649
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
1650
- reasoningEffort: 'medium',
1651
- });
1652
- await adapter.newSession({
1653
- cwd: '/tmp/workspace',
1654
- mcpServers: [],
1655
- });
1656
- await adapter.handleCodexServerRequest({
1657
- id: 20,
1658
- method: 'item/tool/requestUserInput',
1659
- params: {
1660
- threadId: 'thread_multi_question_no_meta',
1661
- turnId: 'turn_multi_question_no_meta',
1662
- itemId: 'item_multi_question_no_meta',
1663
- questions: [
1664
- {
1665
- id: 'color',
1666
- header: 'Pick color',
1667
- question: 'Favorite color?',
1668
- isOther: false,
1669
- isSecret: false,
1670
- options: [{ label: 'Blue', description: 'cool' }],
1671
- },
1672
- {
1673
- id: 'shell',
1674
- header: 'Pick shells',
1675
- question: 'Preferred shells?',
1676
- isOther: true,
1677
- isSecret: false,
1678
- options: [
1679
- { label: 'zsh', description: 'default' },
1680
- { label: 'fish', description: 'friendly' },
1681
- ],
1682
- },
1683
- ],
1684
- },
1685
- });
1686
- expect(codex.respondError).toHaveBeenCalledWith(20, expect.objectContaining({
1687
- message: 'Failed to map requestUserInput answers',
1688
- }));
1689
- expect(connection.sessionUpdate.mock.calls).toEqual(expect.arrayContaining([
1690
- [
1691
- expect.objectContaining({
1692
- update: expect.objectContaining({
1693
- sessionUpdate: 'tool_call_update',
1694
- status: 'failed',
1695
- rawOutput: expect.objectContaining({
1696
- error: 'Missing structured answers for multi-question requestUserInput',
1697
- }),
1698
- }),
1699
- }),
1700
- ],
1701
- ]));
1702
- });
1703
- it('treats cancelled request_user_input permission outcomes as rejected', async () => {
1704
- const { connection } = createMockConnection();
1705
- connection.requestPermission.mockResolvedValue({
1706
- outcome: { outcome: 'cancelled' },
1707
- });
1708
- const { client: codexClient, mocks: codex } = createMockCodexClient();
1709
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
1710
- await initializeAdapterWithDefaultModel(adapter, codex);
1711
- codex.request.mockResolvedValueOnce({
1712
- thread: { id: 'thread_cancelled_input', cwd: '/tmp/workspace' },
1713
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
1714
- reasoningEffort: 'medium',
1715
- });
1716
- await adapter.newSession({
1717
- cwd: '/tmp/workspace',
1718
- mcpServers: [],
1719
- });
1720
- await adapter.handleCodexServerRequest({
1721
- id: 21,
1722
- method: 'item/tool/requestUserInput',
1723
- params: {
1724
- threadId: 'thread_cancelled_input',
1725
- turnId: 'turn_cancelled_input',
1726
- itemId: 'item_cancelled_input',
1727
- questions: [
1728
- {
1729
- id: 'choice',
1730
- header: 'Pick one',
1731
- question: 'Select an option',
1732
- isOther: false,
1733
- isSecret: false,
1734
- options: [
1735
- { label: 'First', description: 'One' },
1736
- { label: 'Second', description: 'Two' },
1737
- ],
1738
- },
1739
- ],
1740
- },
1741
- });
1742
- expect(codex.respondSuccess).toHaveBeenCalledWith(21, {
1743
- answers: {},
1744
- });
1745
- expect(connection.sessionUpdate.mock.calls).toEqual(expect.arrayContaining([
1746
- [
1747
- expect.objectContaining({
1748
- update: expect.objectContaining({
1749
- sessionUpdate: 'tool_call_update',
1750
- status: 'failed',
1751
- rawOutput: { outcome: 'rejected' },
1752
- }),
1753
- }),
1754
- ],
1755
- ]));
1756
- });
1757
- it('stops codex subprocess when ACP connection closes', async () => {
1758
- const { connection, resolveClosed } = createMockConnection();
1759
- const { client: codexClient, mocks: codex } = createMockCodexClient();
1760
- new CodexAppServerAcpAdapter(connection, codexClient);
1761
- resolveClosed();
1762
- await Promise.resolve();
1763
- await Promise.resolve();
1764
- expect(codex.stop).toHaveBeenCalledTimes(1);
1765
- });
1766
- it('does not access connection.closed synchronously during constructor', async () => {
1767
- let allowClosedRead = false;
1768
- const closedPromise = Promise.resolve();
1769
- const connection = {
1770
- get closed() {
1771
- if (!allowClosedRead) {
1772
- throw new Error('closed accessed too early');
1773
- }
1774
- return closedPromise;
1775
- },
1776
- sessionUpdate: vi.fn(async () => undefined),
1777
- requestPermission: vi.fn(() => Promise.resolve({
1778
- outcome: { outcome: 'selected', optionId: 'allow_once' },
1779
- })),
1780
- };
1781
- const { client: codexClient, mocks: codex } = createMockCodexClient();
1782
- expect(() => {
1783
- new CodexAppServerAcpAdapter(connection, codexClient);
1784
- }).not.toThrow();
1785
- allowClosedRead = true;
1786
- await Promise.resolve();
1787
- await Promise.resolve();
1788
- await new Promise((resolve) => setTimeout(resolve, 0));
1789
- expect(codex.stop).toHaveBeenCalledTimes(1);
1790
- });
1791
- it('retries closed watcher registration when closed getter is not ready', async () => {
1792
- let closedReadCount = 0;
1793
- let resolveClosed;
1794
- const closed = new Promise((resolve) => {
1795
- resolveClosed = () => resolve();
1796
- });
1797
- const connection = {
1798
- get closed() {
1799
- closedReadCount += 1;
1800
- if (closedReadCount === 1) {
1801
- throw new Error('closed not ready yet');
1802
- }
1803
- return closed;
1804
- },
1805
- sessionUpdate: vi.fn(async () => undefined),
1806
- requestPermission: vi.fn(() => Promise.resolve({
1807
- outcome: { outcome: 'selected', optionId: 'allow_once' },
1808
- })),
1809
- };
1810
- const { client: codexClient, mocks: codex } = createMockCodexClient();
1811
- new CodexAppServerAcpAdapter(connection, codexClient);
1812
- await Promise.resolve();
1813
- await new Promise((resolve) => setTimeout(resolve, 0));
1814
- resolveClosed?.();
1815
- await Promise.resolve();
1816
- await Promise.resolve();
1817
- expect(closedReadCount).toBeGreaterThanOrEqual(2);
1818
- expect(codex.stop).toHaveBeenCalledTimes(1);
1819
- });
1820
- it('stops retrying close watcher registration after retry limit', async () => {
1821
- vi.useFakeTimers();
1822
- const stderrSpy = vi.spyOn(process.stderr, 'write').mockReturnValue(true);
1823
- try {
1824
- const connection = {
1825
- get closed() {
1826
- throw new Error('closed never ready');
1827
- },
1828
- sessionUpdate: vi.fn(async () => undefined),
1829
- requestPermission: vi.fn(() => Promise.resolve({
1830
- outcome: { outcome: 'selected', optionId: 'allow_once' },
1831
- })),
1832
- };
1833
- const { client: codexClient, mocks: codex } = createMockCodexClient();
1834
- new CodexAppServerAcpAdapter(connection, codexClient);
1835
- await vi.runAllTimersAsync();
1836
- expect(stderrSpy).toHaveBeenCalledWith(expect.stringContaining('failed to attach close watcher after 50 attempts'));
1837
- expect(codex.stop).toHaveBeenCalledTimes(1);
1838
- }
1839
- finally {
1840
- stderrSpy.mockRestore();
1841
- vi.useRealTimers();
1842
- }
1843
- });
1844
- it('returns end_turn on overloaded turn/start and emits fallback message', async () => {
1845
- const { connection } = createMockConnection();
1846
- const { client: codexClient, mocks: codex } = createMockCodexClient();
1847
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
1848
- await initializeAdapterWithDefaultModel(adapter, codex);
1849
- codex.request.mockResolvedValueOnce({
1850
- thread: { id: 'thread_overload', cwd: '/tmp/workspace' },
1851
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
1852
- reasoningEffort: 'medium',
1853
- });
1854
- const session = await adapter.newSession({
1855
- cwd: '/tmp/workspace',
1856
- mcpServers: [],
1857
- });
1858
- codex.request.mockRejectedValueOnce(new CodexRequestError({
1859
- code: -32_001,
1860
- message: 'Server overloaded; retry later.',
1861
- }));
1862
- const response = await adapter.prompt({
1863
- sessionId: session.sessionId,
1864
- prompt: [{ type: 'text', text: 'hello' }],
1865
- });
1866
- expect(response.stopReason).toBe('end_turn');
1867
- expect(connection.sessionUpdate.mock.calls).toEqual(expect.arrayContaining([
1868
- [
1869
- expect.objectContaining({
1870
- update: expect.objectContaining({
1871
- sessionUpdate: 'agent_message_chunk',
1872
- }),
1873
- }),
1874
- ],
1875
- ]));
1876
- });
1877
- it('keeps an additive turn/start status live and reports shape drift', async () => {
1878
- const { connection } = createMockConnection();
1879
- const { client: codexClient, mocks: codex } = createMockCodexClient();
1880
- const shapeDriftWarn = vi.fn();
1881
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient, {
1882
- shapeDriftWarn,
1883
- });
1884
- await initializeAdapterWithDefaultModel(adapter, codex);
1885
- codex.request.mockResolvedValueOnce({
1886
- thread: { id: 'thread_future_status', cwd: '/tmp/workspace' },
1887
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
1888
- reasoningEffort: 'medium',
1889
- });
1890
- const session = await adapter.newSession({ cwd: '/tmp/workspace', mcpServers: [] });
1891
- codex.request.mockResolvedValueOnce({
1892
- turn: { id: 'turn_future_status', status: 'queuedByProvider' },
1893
- });
1894
- const promptPromise = adapter.prompt({
1895
- sessionId: session.sessionId,
1896
- prompt: [{ type: 'text', text: 'hello' }],
1897
- });
1898
- await vi.waitFor(() => {
1899
- expect(shapeDriftWarn).toHaveBeenCalledWith('Codex app-server shape drift detected', expect.objectContaining({
1900
- event: 'unknown_turn_status',
1901
- details: expect.stringContaining('queuedByProvider'),
1902
- }));
1903
- });
1904
- await adapter.handleCodexNotification('turn/completed', {
1905
- threadId: 'thread_future_status',
1906
- turn: { id: 'turn_future_status', status: 'completed', items: [] },
1907
- });
1908
- await expect(promptPromise).resolves.toEqual({ stopReason: 'end_turn' });
1909
- });
1910
- it('queues early cancel until turn id is known, then interrupts the turn', async () => {
1911
- const { connection } = createMockConnection();
1912
- const { client: codexClient, mocks: codex } = createMockCodexClient();
1913
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
1914
- await initializeAdapterWithDefaultModel(adapter, codex);
1915
- codex.request.mockResolvedValueOnce({
1916
- thread: { id: 'thread_early_cancel', cwd: '/tmp/workspace' },
1917
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
1918
- reasoningEffort: 'medium',
1919
- });
1920
- const session = await adapter.newSession({
1921
- cwd: '/tmp/workspace',
1922
- mcpServers: [],
1923
- });
1924
- let resolveTurnStart;
1925
- codex.request.mockImplementationOnce(async (method) => {
1926
- if (method !== 'turn/start') {
1927
- return { turn: { id: 'unexpected', status: 'inProgress' } };
1928
- }
1929
- return await new Promise((resolve) => {
1930
- resolveTurnStart = resolve;
1931
- });
1932
- });
1933
- const promptPromise = adapter.prompt({
1934
- sessionId: session.sessionId,
1935
- prompt: [{ type: 'text', text: 'hello' }],
1936
- });
1937
- await vi.waitFor(() => {
1938
- const activeTurn = adapter.sessions.get(session.sessionId)?.activeTurn;
1939
- expect(activeTurn?.turnId).toBe('__pending_turn__');
1940
- });
1941
- await adapter.cancel({ sessionId: session.sessionId });
1942
- expect(codex.request).not.toHaveBeenCalledWith('turn/interrupt', expect.objectContaining({
1943
- threadId: 'thread_early_cancel',
1944
- }));
1945
- resolveTurnStart?.({ turn: { id: 'turn_early_cancel', status: 'inProgress' } });
1946
- await vi.waitFor(() => {
1947
- expect(codex.request).toHaveBeenCalledWith('turn/interrupt', {
1948
- threadId: 'thread_early_cancel',
1949
- turnId: 'turn_early_cancel',
1950
- });
1951
- });
1952
- await adapter.handleCodexNotification('turn/completed', {
1953
- threadId: 'thread_early_cancel',
1954
- turn: { id: 'turn_early_cancel', status: 'interrupted', error: null, items: [] },
1955
- });
1956
- await expect(promptPromise).resolves.toEqual({ stopReason: 'cancelled' });
1957
- });
1958
- it('cancel interrupts active turn and resolves prompt with cancelled', async () => {
1959
- const { connection } = createMockConnection();
1960
- const { client: codexClient, mocks: codex } = createMockCodexClient();
1961
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
1962
- await initializeAdapterWithDefaultModel(adapter, codex);
1963
- codex.request.mockResolvedValueOnce({
1964
- thread: { id: 'thread_cancel', cwd: '/tmp/workspace' },
1965
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
1966
- reasoningEffort: 'medium',
1967
- });
1968
- const session = await adapter.newSession({
1969
- cwd: '/tmp/workspace',
1970
- mcpServers: [],
1971
- });
1972
- codex.request.mockResolvedValueOnce({
1973
- turn: { id: 'turn_cancel', status: 'inProgress' },
1974
- });
1975
- codex.request.mockResolvedValueOnce({});
1976
- const promptPromise = adapter.prompt({
1977
- sessionId: session.sessionId,
1978
- prompt: [{ type: 'text', text: 'hello' }],
1979
- });
1980
- await vi.waitFor(() => {
1981
- expect(codex.request).toHaveBeenCalledWith('turn/start', expect.objectContaining({ threadId: 'thread_cancel' }));
1982
- });
1983
- await vi.waitFor(() => {
1984
- const activeTurn = adapter.sessions.get(session.sessionId)?.activeTurn;
1985
- expect(activeTurn?.turnId).toBe('turn_cancel');
1986
- });
1987
- await adapter.cancel({ sessionId: session.sessionId });
1988
- expect(codex.request).toHaveBeenCalledWith('turn/interrupt', {
1989
- threadId: 'thread_cancel',
1990
- turnId: 'turn_cancel',
1991
- });
1992
- await adapter.handleCodexNotification('turn/completed', {
1993
- threadId: 'thread_cancel',
1994
- turn: { id: 'turn_cancel', status: 'interrupted', error: null, items: [] },
1995
- });
1996
- await expect(promptPromise).resolves.toEqual({ stopReason: 'cancelled' });
1997
- });
1998
- it('declines command approvals when permission is rejected', async () => {
1999
- const { connection } = createMockConnection();
2000
- connection.requestPermission.mockResolvedValue({
2001
- outcome: { outcome: 'selected', optionId: 'reject_once' },
2002
- });
2003
- const { client: codexClient, mocks: codex } = createMockCodexClient();
2004
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
2005
- await initializeAdapterWithDefaultModel(adapter, codex);
2006
- codex.request.mockResolvedValueOnce({
2007
- thread: { id: 'thread_decline', cwd: '/tmp/workspace' },
2008
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
2009
- reasoningEffort: 'medium',
2010
- });
2011
- await adapter.newSession({
2012
- cwd: '/tmp/workspace',
2013
- mcpServers: [],
2014
- });
2015
- await adapter.handleCodexServerRequest({
2016
- id: 18,
2017
- method: 'item/commandExecution/requestApproval',
2018
- params: {
2019
- threadId: 'thread_decline',
2020
- turnId: 'turn_decline',
2021
- itemId: 'item_decline',
2022
- command: 'rm -rf tmp',
2023
- },
2024
- });
2025
- expect(codex.respondSuccess).toHaveBeenCalledWith(18, { decision: 'decline' });
2026
- const sessionUpdateMock = connection.sessionUpdate;
2027
- const pendingPermissionUpdateIndex = sessionUpdateMock.mock.calls.findIndex((call) => call[0].update?.sessionUpdate === 'tool_call_update' && call[0].update?.status === 'pending');
2028
- expect(pendingPermissionUpdateIndex).toBeGreaterThanOrEqual(0);
2029
- const pendingPermissionInvocationOrder = sessionUpdateMock.mock.invocationCallOrder[pendingPermissionUpdateIndex];
2030
- const requestPermissionInvocationOrder = connection.requestPermission.mock.invocationCallOrder[0];
2031
- expect(pendingPermissionInvocationOrder).toBeDefined();
2032
- expect(requestPermissionInvocationOrder).toBeDefined();
2033
- expect(pendingPermissionInvocationOrder < requestPermissionInvocationOrder).toBe(true);
2034
- expect(connection.sessionUpdate.mock.calls).toEqual(expect.arrayContaining([
2035
- [
2036
- expect.objectContaining({
2037
- update: expect.objectContaining({
2038
- sessionUpdate: 'tool_call_update',
2039
- status: 'failed',
2040
- }),
2041
- }),
2042
- ],
2043
- ]));
2044
- });
2045
- it('scopes allow_always command approvals by command pattern and cwd', async () => {
2046
- const { connection } = createMockConnection();
2047
- connection.requestPermission.mockResolvedValueOnce({
2048
- outcome: { outcome: 'selected', optionId: 'allow_always' },
2049
- });
2050
- const { client: codexClient, mocks: codex } = createMockCodexClient();
2051
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
2052
- await initializeAdapterWithDefaultModel(adapter, codex);
2053
- codex.request.mockResolvedValueOnce({
2054
- thread: { id: 'thread_allow_always', cwd: '/tmp/workspace' },
2055
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
2056
- reasoningEffort: 'medium',
2057
- });
2058
- await adapter.newSession({
2059
- cwd: '/tmp/workspace',
2060
- mcpServers: [],
2061
- });
2062
- await adapter.handleCodexServerRequest({
2063
- id: 91,
2064
- method: 'item/commandExecution/requestApproval',
2065
- params: {
2066
- threadId: 'thread_allow_always',
2067
- turnId: 'turn_allow_always',
2068
- itemId: 'item_allow_always',
2069
- command: 'cat README.md',
2070
- cwd: '/tmp/workspace',
2071
- },
2072
- });
2073
- expect(connection.requestPermission).toHaveBeenCalledWith(expect.objectContaining({
2074
- toolCall: expect.objectContaining({
2075
- title: 'Read README.md',
2076
- kind: 'read',
2077
- }),
2078
- options: expect.arrayContaining([
2079
- expect.objectContaining({ optionId: 'allow_always', kind: 'allow_always' }),
2080
- expect.objectContaining({ optionId: 'allow_once', kind: 'allow_once' }),
2081
- expect.objectContaining({ optionId: 'reject_once', kind: 'reject_once' }),
2082
- ]),
2083
- }));
2084
- expect(codex.respondSuccess).toHaveBeenCalledWith(91, { decision: 'accept' });
2085
- connection.requestPermission.mockClear();
2086
- codex.respondSuccess.mockClear();
2087
- await adapter.handleCodexServerRequest({
2088
- id: 92,
2089
- method: 'item/commandExecution/requestApproval',
2090
- params: {
2091
- threadId: 'thread_allow_always',
2092
- turnId: 'turn_allow_always',
2093
- itemId: 'item_allow_always_2',
2094
- command: 'cat README.md',
2095
- cwd: '/tmp/workspace',
2096
- },
2097
- });
2098
- expect(connection.requestPermission).not.toHaveBeenCalled();
2099
- expect(codex.respondSuccess).toHaveBeenCalledWith(92, { decision: 'accept' });
2100
- codex.respondSuccess.mockClear();
2101
- await adapter.handleCodexServerRequest({
2102
- id: 93,
2103
- method: 'item/commandExecution/requestApproval',
2104
- params: {
2105
- threadId: 'thread_allow_always',
2106
- turnId: 'turn_allow_always',
2107
- itemId: 'item_allow_always_3',
2108
- command: 'ls src',
2109
- cwd: '/tmp/workspace',
2110
- },
2111
- });
2112
- expect(connection.requestPermission).toHaveBeenCalledTimes(1);
2113
- expect(codex.respondSuccess).toHaveBeenCalledWith(93, { decision: 'accept' });
2114
- connection.requestPermission.mockClear();
2115
- codex.respondSuccess.mockClear();
2116
- await adapter.handleCodexServerRequest({
2117
- id: 94,
2118
- method: 'item/commandExecution/requestApproval',
2119
- params: {
2120
- threadId: 'thread_allow_always',
2121
- turnId: 'turn_allow_always',
2122
- itemId: 'item_allow_always_4',
2123
- command: 'cat README.md',
2124
- cwd: '/tmp/other-workspace',
2125
- },
2126
- });
2127
- expect(connection.requestPermission).toHaveBeenCalledTimes(1);
2128
- expect(codex.respondSuccess).toHaveBeenCalledWith(94, { decision: 'accept' });
2129
- });
2130
- it('does not reuse allow_always scope when a chained command changes cwd', async () => {
2131
- const { connection } = createMockConnection();
2132
- connection.requestPermission.mockResolvedValueOnce({
2133
- outcome: { outcome: 'selected', optionId: 'allow_always' },
2134
- });
2135
- const { client: codexClient, mocks: codex } = createMockCodexClient();
2136
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
2137
- await initializeAdapterWithDefaultModel(adapter, codex);
2138
- codex.request.mockResolvedValueOnce({
2139
- thread: { id: 'thread_allow_always_cd_scope', cwd: '/tmp/workspace' },
2140
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
2141
- reasoningEffort: 'medium',
2142
- });
2143
- await adapter.newSession({
2144
- cwd: '/tmp/workspace',
2145
- mcpServers: [],
2146
- });
2147
- await adapter.handleCodexServerRequest({
2148
- id: 101,
2149
- method: 'item/commandExecution/requestApproval',
2150
- params: {
2151
- threadId: 'thread_allow_always_cd_scope',
2152
- turnId: 'turn_allow_always_cd_scope',
2153
- itemId: 'item_allow_always_cd_scope_1',
2154
- command: 'cd nested && cat README.md',
2155
- cwd: '/tmp/workspace',
2156
- },
2157
- });
2158
- expect(connection.requestPermission).toHaveBeenCalledTimes(1);
2159
- expect(codex.respondSuccess).toHaveBeenCalledWith(101, { decision: 'accept' });
2160
- connection.requestPermission.mockClear();
2161
- codex.respondSuccess.mockClear();
2162
- await adapter.handleCodexServerRequest({
2163
- id: 102,
2164
- method: 'item/commandExecution/requestApproval',
2165
- params: {
2166
- threadId: 'thread_allow_always_cd_scope',
2167
- turnId: 'turn_allow_always_cd_scope',
2168
- itemId: 'item_allow_always_cd_scope_2',
2169
- command: 'cat README.md',
2170
- cwd: '/tmp/workspace',
2171
- },
2172
- });
2173
- expect(connection.requestPermission).toHaveBeenCalledTimes(1);
2174
- expect(codex.respondSuccess).toHaveBeenCalledWith(102, { decision: 'accept' });
2175
- connection.requestPermission.mockClear();
2176
- codex.respondSuccess.mockClear();
2177
- await adapter.handleCodexServerRequest({
2178
- id: 103,
2179
- method: 'item/commandExecution/requestApproval',
2180
- params: {
2181
- threadId: 'thread_allow_always_cd_scope',
2182
- turnId: 'turn_allow_always_cd_scope',
2183
- itemId: 'item_allow_always_cd_scope_3',
2184
- command: 'cd nested && cat README.md',
2185
- cwd: '/tmp/workspace',
2186
- },
2187
- });
2188
- expect(connection.requestPermission).not.toHaveBeenCalled();
2189
- expect(codex.respondSuccess).toHaveBeenCalledWith(103, { decision: 'accept' });
2190
- });
2191
- it('reconciles turn/completed notifications that arrive before prompt attaches active turn', async () => {
2192
- const { connection } = createMockConnection();
2193
- const { client: codexClient, mocks: codex } = createMockCodexClient();
2194
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
2195
- await initializeAdapterWithDefaultModel(adapter, codex);
2196
- codex.request.mockResolvedValueOnce({
2197
- thread: { id: 'thread_race', cwd: '/tmp/workspace' },
2198
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
2199
- reasoningEffort: 'medium',
2200
- });
2201
- const session = await adapter.newSession({
2202
- cwd: '/tmp/workspace',
2203
- mcpServers: [],
2204
- });
2205
- codex.request.mockImplementationOnce(async (method) => {
2206
- if (method !== 'turn/start') {
2207
- return {};
2208
- }
2209
- await adapter.handleCodexNotification('turn/completed', {
2210
- threadId: 'thread_race',
2211
- turn: { id: 'turn_race', status: 'completed', error: null, items: [] },
2212
- });
2213
- return {
2214
- turn: { id: 'turn_race', status: 'inProgress' },
2215
- };
2216
- });
2217
- await expect(adapter.prompt({
2218
- sessionId: session.sessionId,
2219
- prompt: [{ type: 'text', text: 'hello' }],
2220
- })).resolves.toEqual({ stopReason: 'end_turn' });
2221
- });
2222
- it('settles active prompts when codex exits after turn/start returns', async () => {
2223
- const { connection } = createMockConnection();
2224
- const { client: codexClient, mocks: codex } = createMockCodexClient();
2225
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
2226
- await initializeAdapterWithDefaultModel(adapter, codex);
2227
- codex.request.mockResolvedValueOnce({
2228
- thread: { id: 'thread_exit', cwd: '/tmp/workspace' },
2229
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
2230
- reasoningEffort: 'medium',
2231
- });
2232
- const session = await adapter.newSession({
2233
- cwd: '/tmp/workspace',
2234
- mcpServers: [],
2235
- });
2236
- codex.request.mockResolvedValueOnce({
2237
- turn: { id: 'turn_exit', status: 'inProgress' },
2238
- });
2239
- const promptPromise = adapter.prompt({
2240
- sessionId: session.sessionId,
2241
- prompt: [{ type: 'text', text: 'hello' }],
2242
- });
2243
- await vi.waitFor(() => {
2244
- const adapterSession = adapter.sessions.get(session.sessionId);
2245
- expect(adapterSession?.activeTurn?.turnId).toBe('turn_exit');
2246
- });
2247
- adapter.handleCodexExit({
2248
- code: 1,
2249
- signal: null,
2250
- reason: 'codex app-server exited (code=1, signal=null)',
2251
- });
2252
- await expect(promptPromise).resolves.toEqual({ stopReason: 'end_turn' });
2253
- const adapterSession = adapter.sessions.get(session.sessionId);
2254
- expect(adapterSession?.activeTurn).toBeNull();
2255
- });
2256
- it('clears stale tool call state when a turn ends without item/completed events', async () => {
2257
- const { connection } = createMockConnection();
2258
- const { client: codexClient, mocks: codex } = createMockCodexClient();
2259
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
2260
- await initializeAdapterWithDefaultModel(adapter, codex);
2261
- codex.request.mockResolvedValueOnce({
2262
- thread: { id: 'thread_stale_tools', cwd: '/tmp/workspace' },
2263
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
2264
- reasoningEffort: 'medium',
2265
- });
2266
- const session = await adapter.newSession({
2267
- cwd: '/tmp/workspace',
2268
- mcpServers: [],
2269
- });
2270
- codex.request.mockResolvedValueOnce({
2271
- turn: { id: 'turn_stale_tools', status: 'inProgress' },
2272
- });
2273
- const promptPromise = adapter.prompt({
2274
- sessionId: session.sessionId,
2275
- prompt: [{ type: 'text', text: 'hello' }],
2276
- });
2277
- await vi.waitFor(() => {
2278
- expect(codex.request).toHaveBeenCalledWith('turn/start', expect.objectContaining({ threadId: 'thread_stale_tools' }));
2279
- });
2280
- await adapter.handleCodexNotification('item/started', {
2281
- threadId: 'thread_stale_tools',
2282
- turnId: 'turn_stale_tools',
2283
- item: {
2284
- type: 'commandExecution',
2285
- id: 'item_stale_tool',
2286
- status: 'inProgress',
2287
- command: 'echo hello',
2288
- },
2289
- });
2290
- const adapterSession = adapter.sessions.get(session.sessionId);
2291
- expect(adapterSession?.toolCallsByItemId.size).toBe(1);
2292
- await adapter.handleCodexNotification('turn/completed', {
2293
- threadId: 'thread_stale_tools',
2294
- turn: { id: 'turn_stale_tools', status: 'completed', error: null, items: [] },
2295
- });
2296
- await expect(promptPromise).resolves.toEqual({ stopReason: 'end_turn' });
2297
- expect(adapterSession?.activeTurn).toBeNull();
2298
- expect(adapterSession?.toolCallsByItemId.size).toBe(0);
2299
- });
2300
- it('responds with codex error payload when approval bridge throws', async () => {
2301
- const { connection } = createMockConnection();
2302
- connection.requestPermission.mockRejectedValueOnce(new Error('permission bridge unavailable'));
2303
- const { client: codexClient, mocks: codex } = createMockCodexClient();
2304
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
2305
- await initializeAdapterWithDefaultModel(adapter, codex);
2306
- codex.request.mockResolvedValueOnce({
2307
- thread: { id: 'thread_approval_error', cwd: '/tmp/workspace' },
2308
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
2309
- reasoningEffort: 'medium',
2310
- });
2311
- await adapter.newSession({
2312
- cwd: '/tmp/workspace',
2313
- mcpServers: [],
2314
- });
2315
- await expect(adapter.handleCodexServerRequest({
2316
- id: 32,
2317
- method: 'item/commandExecution/requestApproval',
2318
- params: {
2319
- threadId: 'thread_approval_error',
2320
- turnId: 'turn_approval_error',
2321
- itemId: 'item_approval_error',
2322
- command: 'echo test',
2323
- },
2324
- })).resolves.toBeUndefined();
2325
- expect(codex.respondError).toHaveBeenCalledWith(32, expect.objectContaining({
2326
- code: -32_600,
2327
- message: 'Failed to process codex approval request',
2328
- }));
2329
- });
2330
- it('serializes non-text prompt blocks before turn/start', async () => {
2331
- const { connection } = createMockConnection();
2332
- const { client: codexClient, mocks: codex } = createMockCodexClient();
2333
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
2334
- await initializeAdapterWithDefaultModel(adapter, codex);
2335
- codex.request.mockResolvedValueOnce({
2336
- thread: { id: 'thread_prompt_blocks', cwd: '/tmp/workspace' },
2337
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
2338
- reasoningEffort: 'medium',
2339
- });
2340
- const session = await adapter.newSession({
2341
- cwd: '/tmp/workspace',
2342
- mcpServers: [],
2343
- });
2344
- codex.request.mockResolvedValueOnce({
2345
- turn: { id: 'turn_prompt_blocks', status: 'completed' },
2346
- });
2347
- await adapter.prompt({
2348
- sessionId: session.sessionId,
2349
- prompt: [
2350
- { type: 'text', text: 'Start' },
2351
- { type: 'resource_link', uri: 'file:///tmp/readme.md', name: 'README' },
2352
- {
2353
- type: 'resource',
2354
- resource: { uri: 'file:///tmp/note.txt', mimeType: 'text/plain', text: 'resource text' },
2355
- },
2356
- {
2357
- type: 'resource',
2358
- resource: { uri: 'file:///tmp/blob.bin', blob: 'AAE=' },
2359
- },
2360
- { type: 'image', mimeType: 'image/png', data: 'abcd' },
2361
- { type: 'custom_block', value: 1 },
2362
- ],
2363
- });
2364
- const turnStartCall = getCodexRequestCalls(codex, 'turn/start').at(-1);
2365
- expect(turnStartCall).toBeDefined();
2366
- const input = (turnStartCall?.[1] ?? {}).input ?? [];
2367
- const serialized = input.map((entry) => entry.text).join('\n');
2368
- expect(serialized).toContain('[ACP_RESOURCE_LINK uri="file:///tmp/readme.md" name="README"]');
2369
- expect(serialized).toContain('[ACP_RESOURCE uri="file:///tmp/note.txt" mime="text/plain"]');
2370
- expect(serialized).toContain('[ACP_RESOURCE uri="file:///tmp/blob.bin" mime="unknown"]');
2371
- expect(serialized).toContain('[ACP_IMAGE mime="image/png" bytes=4]');
2372
- expect(serialized).toContain('{"type":"custom_block","value":1}');
2373
- });
2374
- it('handles plan approval when no non-plan collaboration mode is available', async () => {
2375
- const { connection } = createMockConnection();
2376
- const { client: codexClient, mocks: codex } = createMockCodexClient();
2377
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
2378
- await initializeAdapterWithDefaultModel(adapter, codex, {
2379
- collaborationModes: [{ name: 'Plan', mode: 'plan' }],
2380
- });
2381
- codex.request.mockResolvedValueOnce({
2382
- thread: { id: 'thread_plan_only', cwd: '/tmp/workspace' },
2383
- approvalPolicy: DEFAULT_APPROVAL_POLICY,
2384
- reasoningEffort: 'medium',
2385
- });
2386
- const created = await adapter.newSession({
2387
- cwd: '/tmp/workspace',
2388
- mcpServers: [],
2389
- });
2390
- const session = adapter.sessions.get(created.sessionId);
2391
- if (!session) {
2392
- throw new Error('expected session');
2393
- }
2394
- session.defaults.collaborationMode = 'plan';
2395
- await adapter.maybeRequestPlanApproval(session, {
2396
- type: 'plan',
2397
- id: 'item_plan_only',
2398
- plan: { markdown: '## Plan only mode' },
2399
- }, 'turn_plan_only', { toolCallId: 'item_plan_only', kind: 'think', title: 'plan', locations: [] });
2400
- const updates = connection.sessionUpdate.mock.calls.map((call) => call[0].update);
2401
- expect(updates.some((update) => update.sessionUpdate === 'tool_call_update' &&
2402
- update.status === 'failed' &&
2403
- String(update.rawOutput).includes('no non-plan collaboration mode'))).toBe(true);
2404
- expect(connection.requestPermission).not.toHaveBeenCalled();
2405
- });
2406
- it('merges MCP server configs across threads and namespaces conflicting entries', () => {
2407
- const { connection } = createMockConnection();
2408
- const { client: codexClient } = createMockCodexClient();
2409
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
2410
- const mcpByThread = adapter.mcpServersByThreadId;
2411
- mcpByThread.set('thread_a', {
2412
- shared: { enabled: true, command: 'server-a', args: [] },
2413
- collision: { enabled: true, command: 'server-collision-a', args: [] },
2414
- empty: undefined,
2415
- });
2416
- mcpByThread.set('thread_b', {
2417
- shared: { enabled: true, command: 'server-a', args: [] },
2418
- collision: { enabled: true, command: 'server-collision-b', args: [] },
2419
- });
2420
- const merged = adapter.buildMergedMcpServersConfig();
2421
- expect(merged).toEqual(expect.objectContaining({
2422
- shared: { enabled: true, command: 'server-a', args: [] },
2423
- collision: { enabled: true, command: 'server-collision-a', args: [] },
2424
- collision__thread_b: { enabled: true, command: 'server-collision-b', args: [] },
2425
- }));
2426
- expect(merged).not.toHaveProperty('empty');
2427
- });
2428
- it('restores previous thread MCP config when apply write fails', async () => {
2429
- const { connection } = createMockConnection();
2430
- const { client: codexClient } = createMockCodexClient();
2431
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
2432
- const mcpByThread = adapter.mcpServersByThreadId;
2433
- const previousConfig = { old: { enabled: true, command: 'old-server', args: [] } };
2434
- mcpByThread.set('thread_restore', previousConfig);
2435
- vi.spyOn(adapter, 'writeMergedMcpServersConfig').mockRejectedValueOnce(new Error('write failed'));
2436
- await expect(adapter.applyMcpServers('thread_restore', [
2437
- { name: 'new', command: 'new-server', args: [], env: [] },
2438
- ])).rejects.toThrow('write failed');
2439
- expect(mcpByThread.get('thread_restore')).toEqual(previousConfig);
2440
- });
2441
- it('builds tool call state for file, MCP, web search, Codex function calls, and unknown types', () => {
2442
- const { connection } = createMockConnection();
2443
- const { client: codexClient } = createMockCodexClient();
2444
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
2445
- const session = {
2446
- cwd: '/tmp/workspace',
2447
- };
2448
- const fileCall = adapter.buildToolCallState(session, {
2449
- type: 'fileChange',
2450
- id: 'item_file',
2451
- changes: [{ path: 'src/app.ts' }],
2452
- }, 'turn_file');
2453
- const mcpCall = adapter.buildToolCallState(session, {
2454
- type: 'mcpToolCall',
2455
- id: 'item_mcp',
2456
- server: 'docs',
2457
- tool: 'search',
2458
- }, 'turn_mcp');
2459
- const webCall = adapter.buildToolCallState(session, {
2460
- type: 'webSearch',
2461
- id: 'item_web',
2462
- }, 'turn_web');
2463
- const functionCall = adapter.buildToolCallState(session, {
2464
- type: 'function_call',
2465
- id: 'item_function',
2466
- name: 'exec_command',
2467
- call_id: 'call_function',
2468
- arguments: '{"cmd":"cat package.json","workdir":"/tmp/workspace"}',
2469
- }, 'turn_function');
2470
- const customToolCall = adapter.buildToolCallState(session, {
2471
- type: 'custom_tool_call',
2472
- id: 'item_custom',
2473
- name: 'apply_patch',
2474
- call_id: 'call_custom',
2475
- input: '*** Begin Patch\n*** End Patch\n',
2476
- }, 'turn_custom');
2477
- const functionCallOutput = adapter.buildToolCallState(session, {
2478
- type: 'function_call_output',
2479
- id: 'item_function_output',
2480
- call_id: 'call_function',
2481
- output: 'done',
2482
- }, 'turn_function_output');
2483
- const customToolCallOutput = adapter.buildToolCallState(session, {
2484
- type: 'custom_tool_call_output',
2485
- id: 'item_custom_output',
2486
- call_id: 'call_custom',
2487
- output: 'done',
2488
- }, 'turn_custom_output');
2489
- const unknown = adapter.buildToolCallState(session, {
2490
- type: 'unknown',
2491
- id: 'item_unknown',
2492
- }, 'turn_unknown');
2493
- expect(fileCall.title).toBe('fileChange');
2494
- expect(fileCall.locations).toEqual([{ path: 'src/app.ts' }]);
2495
- expect(mcpCall.title).toBe('mcpToolCall:docs/search');
2496
- expect(webCall.title).toBe('webSearch');
2497
- expect(functionCall.toolCallId).toBe('call_function');
2498
- expect(functionCall.title).toBe('Read package.json');
2499
- expect(functionCall.kind).toBe('read');
2500
- expect(customToolCall.toolCallId).toBe('call_custom');
2501
- expect(customToolCall.title).toBe('apply_patch');
2502
- expect(customToolCall.kind).toBe('execute');
2503
- expect(functionCallOutput).toBeNull();
2504
- expect(customToolCallOutput).toBeNull();
2505
- expect(unknown).toBeNull();
2506
- });
2507
- it('builds provider-neutral tool state for Codex sub-agent items', () => {
2508
- const { connection } = createMockConnection();
2509
- const { client: codexClient } = createMockCodexClient();
2510
- const adapter = new CodexAppServerAcpAdapter(connection, codexClient);
2511
- const toolState = adapter.buildToolCallState({ sessionId: 'parent-session', cwd: '/tmp/workspace' }, {
2512
- type: 'subAgentActivity',
2513
- id: 'item_subagent_1',
2514
- agentThreadId: 'child_1',
2515
- agentPath: 'review/security',
2516
- kind: 'started',
2517
- }, 'turn_1');
2518
- expect(toolState).toMatchObject({
2519
- toolCallId: 'item_subagent_1',
2520
- title: 'Start subagent security',
2521
- kind: 'other',
2522
- locations: [],
2523
- affectedSubagentIds: ['child_1'],
2524
- meta: {
2525
- [SUBAGENT_TOOL_META_KEY]: {
2526
- id: 'child_1',
2527
- parentSessionId: 'parent-session',
2528
- },
2529
- },
2530
- });
2531
- });
2532
- });
2533
- //# sourceMappingURL=codex-app-server-acp-adapter.test.js.map