@straiffi/archon 1.8.15 → 1.8.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/dist/client/assets/ActivityView-p8gBUxYN.js +1 -0
  2. package/dist/client/assets/GitHubActionsDialog-BRxGcSyq.js +1 -0
  3. package/dist/client/assets/VerificationDialog-B6l5TYOS.js +4 -0
  4. package/dist/client/assets/{arc-C83vRtlz.js → arc-D2Nn9xIj.js} +1 -1
  5. package/dist/client/assets/architecture-7EHR7CIX-C-4Cp4ml.js +1 -0
  6. package/dist/client/assets/{architectureDiagram-3BPJPVTR-Dx7MJofM.js → architectureDiagram-3BPJPVTR-DnuKO1RY.js} +1 -1
  7. package/dist/client/assets/{blockDiagram-GPEHLZMM-CSSJR8F_.js → blockDiagram-GPEHLZMM-CnQ7FwEp.js} +1 -1
  8. package/dist/client/assets/{c4Diagram-AAUBKEIU-C4F9969r.js → c4Diagram-AAUBKEIU-BF1hFXwp.js} +1 -1
  9. package/dist/client/assets/channel-TJtf4cBJ.js +1 -0
  10. package/dist/client/assets/{chunk-2J33WTMH-23HW6i-y.js → chunk-2J33WTMH-UvCFvkZO.js} +1 -1
  11. package/dist/client/assets/{chunk-3OPIFGDE-C3ZmRDMb.js → chunk-3OPIFGDE-z1l5nBD0.js} +1 -1
  12. package/dist/client/assets/{chunk-4BX2VUAB-C5pU9ApX.js → chunk-4BX2VUAB-CtLS8D71.js} +1 -1
  13. package/dist/client/assets/{chunk-4EGX6M5U-CAjWPjND.js → chunk-4EGX6M5U-Btnm0QNe.js} +1 -1
  14. package/dist/client/assets/{chunk-55IACEB6-DhO4-AG4.js → chunk-55IACEB6-74CcJaub.js} +1 -1
  15. package/dist/client/assets/{chunk-5DO6E6H7-BDKA-zHS.js → chunk-5DO6E6H7-WLZ8L4ko.js} +1 -1
  16. package/dist/client/assets/{chunk-5ZQYHXKU-B_-UQvCg.js → chunk-5ZQYHXKU-Bis0Pw2_.js} +1 -1
  17. package/dist/client/assets/{chunk-727SXJPM-5Dua6u1B.js → chunk-727SXJPM-B3gUO8rD.js} +1 -1
  18. package/dist/client/assets/{chunk-AQP2D5EJ-DcpcaFRO.js → chunk-AQP2D5EJ-hPBzrrh5.js} +1 -1
  19. package/dist/client/assets/{chunk-BR22UD5L-12D2GWh4.js → chunk-BR22UD5L-Cou5beGe.js} +1 -1
  20. package/dist/client/assets/{chunk-BSJP7CBP-DMi77e84.js → chunk-BSJP7CBP-DJ57XcV5.js} +1 -1
  21. package/dist/client/assets/{chunk-CSCIHK7Q-CLCpOw52.js → chunk-CSCIHK7Q-BfOng_VY.js} +2 -2
  22. package/dist/client/assets/{chunk-FHYWG6QK-BhSajKiB.js → chunk-FHYWG6QK-Ba10e2kj.js} +1 -1
  23. package/dist/client/assets/{chunk-FMBD7UC4-Drmlc0wM.js → chunk-FMBD7UC4-CEo2wZMx.js} +1 -1
  24. package/dist/client/assets/{chunk-KSCS5N6A-uOZFe2JI.js → chunk-KSCS5N6A-B2Jg7PW5.js} +1 -1
  25. package/dist/client/assets/{chunk-L5ZTLDWV-DNnzSNoX.js → chunk-L5ZTLDWV-CUYujZxt.js} +1 -1
  26. package/dist/client/assets/{chunk-LZXEDZCA-CSA3Xnoh.js → chunk-LZXEDZCA-CH_eV8jH.js} +2 -2
  27. package/dist/client/assets/{chunk-MPE355IW-Cw8YmjTC.js → chunk-MPE355IW-MqEt-J8G.js} +1 -1
  28. package/dist/client/assets/{chunk-MZUSXYTE-jvxRCZ7x.js → chunk-MZUSXYTE-DdNi9lhx.js} +1 -1
  29. package/dist/client/assets/{chunk-N66VUXT2-00i4y0yD.js → chunk-N66VUXT2-CjemTW4E.js} +1 -1
  30. package/dist/client/assets/{chunk-ND2GUHAM-BQR5rD7w.js → chunk-ND2GUHAM-BVF5evM9.js} +1 -1
  31. package/dist/client/assets/{chunk-NZK2D7GU-DyIwcQYQ.js → chunk-NZK2D7GU-WfG-2AOS.js} +1 -1
  32. package/dist/client/assets/{chunk-O5CBEL6O-DfW60w5V.js → chunk-O5CBEL6O-CSF9ozqy.js} +1 -1
  33. package/dist/client/assets/{chunk-PUPMXCY4-DfWourL7.js → chunk-PUPMXCY4-ZvwTw0To.js} +1 -1
  34. package/dist/client/assets/chunk-QZHKN3VN-LI_RZca2.js +1 -0
  35. package/dist/client/assets/{chunk-UIBZB4QT-v-a5ZfN6.js → chunk-UIBZB4QT-BTY9be9s.js} +1 -1
  36. package/dist/client/assets/{chunk-WCWK7LTN-CtYzhvvb.js → chunk-WCWK7LTN-Db1n3n3-.js} +1 -1
  37. package/dist/client/assets/chunk-WU5MYG2G-DoVpb2oe.js +1 -0
  38. package/dist/client/assets/{chunk-XPW4576I-CvnAuXH2.js → chunk-XPW4576I-DObFPxjB.js} +1 -1
  39. package/dist/client/assets/classDiagram-4FO5ZUOK-CnKIRKWC.js +1 -0
  40. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-5ZgjUwTv.js +1 -0
  41. package/dist/client/assets/{cose-bilkent-S5V4N54A-fchD-dH2.js → cose-bilkent-S5V4N54A-MlOPiG6P.js} +1 -1
  42. package/dist/client/assets/{dagre-BM42HDAG-Ba7Pz-ZI.js → dagre-BM42HDAG-rekDIYnC.js} +1 -1
  43. package/dist/client/assets/{dagre-DSrzm-Gq.js → dagre-BWNHuDdf.js} +1 -1
  44. package/dist/client/assets/{diagram-2AECGRRQ-BxYfgpZ6.js → diagram-2AECGRRQ-Z4mXdhW0.js} +1 -1
  45. package/dist/client/assets/{diagram-5GNKFQAL-Bc4-O-UJ.js → diagram-5GNKFQAL-DqeVe5Vc.js} +1 -1
  46. package/dist/client/assets/{diagram-KO2AKTUF-Ds1Lmrzm.js → diagram-KO2AKTUF-ijppTuNc.js} +1 -1
  47. package/dist/client/assets/{diagram-LMA3HP47-VFQabxKS.js → diagram-LMA3HP47-CDGLx0-N.js} +1 -1
  48. package/dist/client/assets/{diagram-OG6HWLK6-Baff59Zc.js → diagram-OG6HWLK6-DDlnjzF8.js} +1 -1
  49. package/dist/client/assets/{erDiagram-TEJ5UH35-Da5zHjOK.js → erDiagram-TEJ5UH35-V_axe9oz.js} +1 -1
  50. package/dist/client/assets/eventmodeling-FCH6USID-Dqb6QKoI.js +1 -0
  51. package/dist/client/assets/{flowDiagram-I6XJVG4X-pdGMAuog.js → flowDiagram-I6XJVG4X-GH5q79jg.js} +1 -1
  52. package/dist/client/assets/{ganttDiagram-6RSMTGT7-DjJGX0nm.js → ganttDiagram-6RSMTGT7-BMWVdLeQ.js} +1 -1
  53. package/dist/client/assets/gitGraph-WXDBUCRP-DYEsqh93.js +1 -0
  54. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-kErlwtcT.js → gitGraphDiagram-PVQCEYII-VrV8jMUg.js} +1 -1
  55. package/dist/client/assets/index-B7J4DYDu.js +275 -0
  56. package/dist/client/assets/index-CsZfTdMO.css +2 -0
  57. package/dist/client/assets/info-J43DQDTF-CfjXFZai.js +1 -0
  58. package/dist/client/assets/{infoDiagram-5YYISTIA-Bx78HhDi.js → infoDiagram-5YYISTIA-EGiVbp17.js} +1 -1
  59. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-BP0YQCMl.js → ishikawaDiagram-YF4QCWOH-Dw3CiXbm.js} +1 -1
  60. package/dist/client/assets/{journeyDiagram-JHISSGLW-DUgrCOuD.js → journeyDiagram-JHISSGLW-2S631RY5.js} +1 -1
  61. package/dist/client/assets/{kanban-definition-UN3LZRKU-K0Zc5_M8.js → kanban-definition-UN3LZRKU-pc9vzUtB.js} +1 -1
  62. package/dist/client/assets/{line-Dtg-krjk.js → line-BBMBmEjI.js} +1 -1
  63. package/dist/client/assets/{linear-BOwW57yX.js → linear-DT4rSZvy.js} +1 -1
  64. package/dist/client/assets/{mermaid-parser.core-Dw5BI77W.js → mermaid-parser.core-ClNeolx0.js} +2 -2
  65. package/dist/client/assets/{mermaid.core-BE-qlWNj.js → mermaid.core-Q4IJbm5V.js} +3 -3
  66. package/dist/client/assets/{mindmap-definition-RKZ34NQL-1Piz4H9I.js → mindmap-definition-RKZ34NQL-DUTZxR8H.js} +1 -1
  67. package/dist/client/assets/{ordinal-CZ33lFpK.js → ordinal-k--hYEme.js} +1 -1
  68. package/dist/client/assets/packet-YPE3B663-Dv0HkRHU.js +1 -0
  69. package/dist/client/assets/pie-LRSECV5Y-S5zPzZFN.js +1 -0
  70. package/dist/client/assets/{pieDiagram-4H26LBE5-zlWdJ7lL.js → pieDiagram-4H26LBE5-RW5hNtJq.js} +1 -1
  71. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-DRQY8Adp.js → quadrantDiagram-W4KKPZXB-CK60c7X9.js} +1 -1
  72. package/dist/client/assets/radar-GUYGQ44K-B7psLv22.js +1 -0
  73. package/dist/client/assets/{requirementDiagram-4Y6WPE33-B8_GJFxl.js → requirementDiagram-4Y6WPE33-Dz35FvcC.js} +1 -1
  74. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-BaI0Njo8.js → sankeyDiagram-5OEKKPKP-ByyluoXu.js} +1 -1
  75. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-DjqAXbRF.js → sequenceDiagram-3UESZ5HK-C-879UFe.js} +1 -1
  76. package/dist/client/assets/{stateDiagram-AJRCARHV-Ovr_3LeO.js → stateDiagram-AJRCARHV-B8neDlUu.js} +1 -1
  77. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-B4Mq8Abu.js +1 -0
  78. package/dist/client/assets/{timeline-definition-PNZ67QCA-DkczYKeZ.js → timeline-definition-PNZ67QCA-iAwrltn1.js} +1 -1
  79. package/dist/client/assets/treeView-BLDUP644-B8H0kT67.js +1 -0
  80. package/dist/client/assets/treemap-LRROVOQU-DPLhFHnh.js +1 -0
  81. package/dist/client/assets/{vennDiagram-CIIHVFJN-BZyo4ESi.js → vennDiagram-CIIHVFJN-DHN61m8d.js} +1 -1
  82. package/dist/client/assets/wardley-L42UT6IY-B5-Vb08V.js +1 -0
  83. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-BEISrECX.js → wardleyDiagram-YWT4CUSO-XDVo7Jy1.js} +1 -1
  84. package/dist/client/assets/{xychartDiagram-2RQKCTM6-CyNzGK7f.js → xychartDiagram-2RQKCTM6-Cb-HLpaN.js} +1 -1
  85. package/dist/client/index.html +2 -2
  86. package/dist/server/db.js +235 -0
  87. package/dist/server/db.js.map +1 -1
  88. package/dist/server/index.js +200 -45
  89. package/dist/server/index.js.map +1 -1
  90. package/dist/server/lib/agent.js +139 -90
  91. package/dist/server/lib/agent.js.map +1 -1
  92. package/dist/server/lib/agentProvider.js +1 -6
  93. package/dist/server/lib/agentProvider.js.map +1 -1
  94. package/dist/server/lib/buildExecutionEnvironment.js +517 -0
  95. package/dist/server/lib/buildExecutionEnvironment.js.map +1 -0
  96. package/dist/server/lib/buildOpenQuestionOperations.js +9 -3
  97. package/dist/server/lib/buildOpenQuestionOperations.js.map +1 -1
  98. package/dist/server/lib/checkAutoFix.js +1 -0
  99. package/dist/server/lib/checkAutoFix.js.map +1 -1
  100. package/dist/server/lib/checkRepairDispatch.js +3 -1
  101. package/dist/server/lib/checkRepairDispatch.js.map +1 -1
  102. package/dist/server/lib/dockerSandboxCredentials.js +62 -0
  103. package/dist/server/lib/dockerSandboxCredentials.js.map +1 -0
  104. package/dist/server/lib/dockerSandboxEnvironmentOperations.js +54 -0
  105. package/dist/server/lib/dockerSandboxEnvironmentOperations.js.map +1 -0
  106. package/dist/server/lib/dockerSandboxExecutionEnvironment.js +631 -0
  107. package/dist/server/lib/dockerSandboxExecutionEnvironment.js.map +1 -0
  108. package/dist/server/lib/dockerSandboxExecutionProvider.js +196 -0
  109. package/dist/server/lib/dockerSandboxExecutionProvider.js.map +1 -0
  110. package/dist/server/lib/dockerSandboxOpencodeSessionOperations.js +29 -0
  111. package/dist/server/lib/dockerSandboxOpencodeSessionOperations.js.map +1 -0
  112. package/dist/server/lib/dockerSandboxRuntimeController.js +187 -0
  113. package/dist/server/lib/dockerSandboxRuntimeController.js.map +1 -0
  114. package/dist/server/lib/executionEnvironment.js +22 -0
  115. package/dist/server/lib/executionEnvironment.js.map +1 -1
  116. package/dist/server/lib/executionEnvironmentContexts.js +144 -0
  117. package/dist/server/lib/executionEnvironmentContexts.js.map +1 -0
  118. package/dist/server/lib/executionEnvironmentLifecycle.js +63 -0
  119. package/dist/server/lib/executionEnvironmentLifecycle.js.map +1 -0
  120. package/dist/server/lib/executionEnvironmentReconciliation.js +782 -0
  121. package/dist/server/lib/executionEnvironmentReconciliation.js.map +1 -0
  122. package/dist/server/lib/executionEnvironmentRoutes.js +354 -0
  123. package/dist/server/lib/executionEnvironmentRoutes.js.map +1 -0
  124. package/dist/server/lib/executionEnvironmentValidation.js +486 -0
  125. package/dist/server/lib/executionEnvironmentValidation.js.map +1 -0
  126. package/dist/server/lib/executionEnvironmentValidationOperations.js +635 -0
  127. package/dist/server/lib/executionEnvironmentValidationOperations.js.map +1 -0
  128. package/dist/server/lib/executionEnvironments.js +726 -0
  129. package/dist/server/lib/executionEnvironments.js.map +1 -0
  130. package/dist/server/lib/executionReconciliation.js +77 -0
  131. package/dist/server/lib/executionReconciliation.js.map +1 -1
  132. package/dist/server/lib/executionRetry.js +3 -0
  133. package/dist/server/lib/executionRetry.js.map +1 -1
  134. package/dist/server/lib/executionRuns.js +1 -0
  135. package/dist/server/lib/executionRuns.js.map +1 -1
  136. package/dist/server/lib/executionTargets.js +107 -0
  137. package/dist/server/lib/executionTargets.js.map +1 -0
  138. package/dist/server/lib/executionTimeline.js +3 -0
  139. package/dist/server/lib/executionTimeline.js.map +1 -1
  140. package/dist/server/lib/hostExecutionEnvironment.js +47 -1
  141. package/dist/server/lib/hostExecutionEnvironment.js.map +1 -1
  142. package/dist/server/lib/mobileAccess.js +2 -2
  143. package/dist/server/lib/mobileAccess.js.map +1 -1
  144. package/dist/server/lib/models.js +11 -0
  145. package/dist/server/lib/models.js.map +1 -1
  146. package/dist/server/lib/opencodeErrors.js +31 -3
  147. package/dist/server/lib/opencodeErrors.js.map +1 -1
  148. package/dist/server/lib/opencodeSessionOperations.js +189 -9
  149. package/dist/server/lib/opencodeSessionOperations.js.map +1 -1
  150. package/dist/server/lib/opencodeTaskSessions.js +7 -12
  151. package/dist/server/lib/opencodeTaskSessions.js.map +1 -1
  152. package/dist/server/lib/postBuildChecks.js +2 -1
  153. package/dist/server/lib/postBuildChecks.js.map +1 -1
  154. package/dist/server/lib/projects.js +10 -0
  155. package/dist/server/lib/projects.js.map +1 -1
  156. package/dist/server/lib/specArtifact.js +1 -1
  157. package/dist/server/lib/specArtifact.js.map +1 -1
  158. package/dist/server/lib/specDraft.js +1 -5
  159. package/dist/server/lib/specDraft.js.map +1 -1
  160. package/dist/server/lib/specExport.js +1 -6
  161. package/dist/server/lib/specExport.js.map +1 -1
  162. package/dist/server/lib/specGraphFeature.js +3 -0
  163. package/dist/server/lib/specGraphFeature.js.map +1 -0
  164. package/dist/server/lib/specRepositoryEvidenceFormatting.js +2 -1
  165. package/dist/server/lib/specRepositoryEvidenceFormatting.js.map +1 -1
  166. package/dist/server/lib/specRepositoryImpact.js +4 -0
  167. package/dist/server/lib/specRepositoryImpact.js.map +1 -1
  168. package/dist/server/lib/specReviewContext.js +6 -20
  169. package/dist/server/lib/specReviewContext.js.map +1 -1
  170. package/dist/server/lib/specSnapshotEvidence.js +4 -0
  171. package/dist/server/lib/specSnapshotEvidence.js.map +1 -1
  172. package/dist/server/lib/specTicketMaterialization.js +4 -1
  173. package/dist/server/lib/specTicketMaterialization.js.map +1 -1
  174. package/dist/server/lib/ticketFollowUpOperations.js +8 -1
  175. package/dist/server/lib/ticketFollowUpOperations.js.map +1 -1
  176. package/dist/server/lib/ticketRunOperations.js +0 -3
  177. package/dist/server/lib/ticketRunOperations.js.map +1 -1
  178. package/dist/server/lib/types.js +1 -0
  179. package/dist/server/lib/types.js.map +1 -1
  180. package/dist/server/lib/workspaceIdentity.js +3 -0
  181. package/dist/server/lib/workspaceIdentity.js.map +1 -1
  182. package/dist/server/workers/build.js +114 -8
  183. package/dist/server/workers/build.js.map +1 -1
  184. package/dist/server/workers/followUp.js +118 -3
  185. package/dist/server/workers/followUp.js.map +1 -1
  186. package/dist/server/workers/plan.js +34 -22
  187. package/dist/server/workers/plan.js.map +1 -1
  188. package/dist/server/workers/review.js +14 -13
  189. package/dist/server/workers/review.js.map +1 -1
  190. package/dist/server/workers/specReview.js +0 -1
  191. package/dist/server/workers/specReview.js.map +1 -1
  192. package/dist/server/workers/specSession.js +46 -122
  193. package/dist/server/workers/specSession.js.map +1 -1
  194. package/package.json +1 -1
  195. package/dist/client/assets/ActivityView-DpY9GZez.js +0 -1
  196. package/dist/client/assets/GitHubActionsDialog-BCr-hjvp.js +0 -1
  197. package/dist/client/assets/RepositoryGraphDialog-_hm-x1Dx.js +0 -1
  198. package/dist/client/assets/VerificationDialog-CsjDzpE1.js +0 -4
  199. package/dist/client/assets/architecture-7EHR7CIX-Dm8H7N6Z.js +0 -1
  200. package/dist/client/assets/channel-DVkhJzgx.js +0 -1
  201. package/dist/client/assets/chunk-QZHKN3VN-CtbsU1Bj.js +0 -1
  202. package/dist/client/assets/chunk-WU5MYG2G-CzMMPYdi.js +0 -1
  203. package/dist/client/assets/classDiagram-4FO5ZUOK-6oZ93s5p.js +0 -1
  204. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-DYO_YnkU.js +0 -1
  205. package/dist/client/assets/eventmodeling-FCH6USID-BWhw0UJ8.js +0 -1
  206. package/dist/client/assets/gitGraph-WXDBUCRP-BSnxAa1J.js +0 -1
  207. package/dist/client/assets/index-CS4TzG41.css +0 -2
  208. package/dist/client/assets/index-D5TEfELZ.js +0 -275
  209. package/dist/client/assets/info-J43DQDTF-DcFwF1-h.js +0 -1
  210. package/dist/client/assets/packet-YPE3B663-1VZiO_9r.js +0 -1
  211. package/dist/client/assets/pie-LRSECV5Y-BX1-tQCu.js +0 -1
  212. package/dist/client/assets/radar-GUYGQ44K-B2HRrCR4.js +0 -1
  213. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-9pmeAorV.js +0 -1
  214. package/dist/client/assets/treeView-BLDUP644-CDfUVbUi.js +0 -1
  215. package/dist/client/assets/treemap-LRROVOQU-DUWqu8sK.js +0 -1
  216. package/dist/client/assets/wardley-L42UT6IY-BEFuPUCy.js +0 -1
  217. /package/dist/client/assets/{array-B2f2amhX.js → array-BNor45A1.js} +0 -0
  218. /package/dist/client/assets/{chunk-NNHCCRGN-DgKrp8T-.js → chunk-NNHCCRGN-CZB-V-Gv.js} +0 -0
  219. /package/dist/client/assets/{cytoscape.esm-BInZCgaJ.js → cytoscape.esm-B2lJcMSI.js} +0 -0
  220. /package/dist/client/assets/{defaultLocale-sPXJ5urm.js → defaultLocale-DPzUsThw.js} +0 -0
  221. /package/dist/client/assets/{dist-DfHDMDTt.js → dist-CERhmQhR.js} +0 -0
  222. /package/dist/client/assets/{graphlib-DacNv4Jd.js → graphlib-BHOW-eWz.js} +0 -0
  223. /package/dist/client/assets/{init-BVCnG1lj.js → init-C0L3woqb.js} +0 -0
  224. /package/dist/client/assets/{katex-BlkrXOwm.js → katex-CpjQsUQe.js} +0 -0
  225. /package/dist/client/assets/{path-Bw5AvBNC.js → path-sMK4d_s9.js} +0 -0
  226. /package/dist/client/assets/{rough.esm-DeLgKbOI.js → rough.esm-BoTisKeL.js} +0 -0
  227. /package/dist/client/assets/{src-CFGsdLiG.js → src-BRjoYtUW.js} +0 -0
@@ -5,12 +5,7 @@ const runOneShotAgentOnce = (agentProvider, executionProvider, request) => {
5
5
  let handle;
6
6
  try {
7
7
  handle = executionProvider.execute({
8
- target: {
9
- kind: 'repository',
10
- id: request.cwd,
11
- workspacePath: request.cwd,
12
- revision: 'working-tree',
13
- },
8
+ target: request.target ?? null,
14
9
  command: invocation.command,
15
10
  args: invocation.args,
16
11
  cwd: request.cwd,
@@ -1 +1 @@
1
- {"version":3,"file":"agentProvider.js","sourceRoot":"","sources":["../../../server/lib/agentProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentProvider.js","sourceRoot":"","sources":["../../../server/lib/agentProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,517 @@
1
+ import db from '../db.js';
2
+ import { ExecutionEnvironmentFailure, } from './executionEnvironment.js';
3
+ import { QUALIFIED_DOCKER_SANDBOX_TEMPLATES, QUALIFIED_SBX_VERSION, } from './dockerSandboxExecutionEnvironment.js';
4
+ import { createDockerSandboxExecutionProvider } from './dockerSandboxExecutionProvider.js';
5
+ import { createDockerSandboxOpencodeSessionOperations } from './dockerSandboxOpencodeSessionOperations.js';
6
+ import { defaultDockerSandboxEnvironmentDependencies, dockerSandboxRunner, ensureDockerSandboxRuntimeReady, reconnectAndInspectDockerSandbox, resolveExpectedDockerSandboxIdentity, stopAndVerifyDockerSandbox, } from './dockerSandboxEnvironmentOperations.js';
7
+ import { ExecutionEnvironmentRouteError, currentExecutionEnvironmentValidationFingerprint, prepareAndValidateExecutionEnvironmentForTarget, validateExecutionEnvironmentForTarget, } from './executionEnvironmentValidationOperations.js';
8
+ import { acquireExecutionEnvironmentLease, captureExecutionEnvironmentPlacement, getExecutionEnvironment, getExecutionEnvironmentBindingForRun, listExecutionEnvironments, releaseExecutionEnvironmentLease, transitionExecutionEnvironment, } from './executionEnvironments.js';
9
+ import { hostExecutionEnvironment } from './hostExecutionEnvironment.js';
10
+ import { getModelProvider, normalizeModelId } from './models.js';
11
+ export class BuildExecutionEnvironmentFailure extends Error {
12
+ code;
13
+ remediation;
14
+ constructor(code, message, remediation, options = {}) {
15
+ super(message, options);
16
+ this.name = 'BuildExecutionEnvironmentFailure';
17
+ this.code = code;
18
+ this.remediation = remediation;
19
+ }
20
+ }
21
+ const describePreparationFailure = (error) => {
22
+ if (error instanceof ExecutionEnvironmentRouteError) {
23
+ return ` ${error.message} [${error.reason}]`;
24
+ }
25
+ return '';
26
+ };
27
+ const getLatestValidation = (projectId, environmentId, agent, provider) => db.prepare(`
28
+ SELECT run.status, run.domain_status, run.metadata_json
29
+ FROM execution_environment_run_bindings binding
30
+ JOIN execution_runs run ON run.id = binding.execution_run_id AND run.project_id = binding.project_id
31
+ WHERE binding.project_id = ? AND binding.environment_id = ?
32
+ AND binding.relationship = 'validation' AND run.kind = 'environment_validation'
33
+ AND json_extract(run.metadata_json, '$.agent') = ?
34
+ AND (
35
+ (? IS NULL AND json_extract(run.metadata_json, '$.provider') IS NULL AND json_extract(run.metadata_json, '$.model') IS NULL)
36
+ OR json_extract(run.metadata_json, '$.provider') = ?
37
+ OR (? IS NOT NULL AND json_extract(run.metadata_json, '$.provider') IS NULL AND json_extract(run.metadata_json, '$.model') LIKE ?)
38
+ OR (? = 'anthropic' AND json_extract(run.metadata_json, '$.provider') IS NULL AND json_extract(run.metadata_json, '$.model') IS NULL)
39
+ )
40
+ ORDER BY run.created_at DESC, run.id DESC
41
+ LIMIT 1
42
+ `).get(projectId, environmentId, agent, provider, provider, provider, provider ? `${provider}/%` : null, provider) ?? null;
43
+ const validationAgent = (row) => {
44
+ if (!row.metadata_json) {
45
+ return null;
46
+ }
47
+ try {
48
+ const metadata = JSON.parse(row.metadata_json);
49
+ return typeof metadata.agent === 'string' ? metadata.agent : null;
50
+ }
51
+ catch {
52
+ return null;
53
+ }
54
+ };
55
+ const validationModel = (row) => {
56
+ if (!row.metadata_json) {
57
+ return null;
58
+ }
59
+ try {
60
+ const metadata = JSON.parse(row.metadata_json);
61
+ return normalizeModelId(metadata.model) || null;
62
+ }
63
+ catch {
64
+ return null;
65
+ }
66
+ };
67
+ const validationProvider = (row) => {
68
+ if (!row.metadata_json) {
69
+ return null;
70
+ }
71
+ try {
72
+ const metadata = JSON.parse(row.metadata_json);
73
+ if (metadata.agent === 'claude') {
74
+ return 'anthropic';
75
+ }
76
+ return typeof metadata.provider === 'string' && metadata.provider.trim()
77
+ ? metadata.provider.trim().toLowerCase()
78
+ : getModelProvider(metadata.model) || null;
79
+ }
80
+ catch {
81
+ return null;
82
+ }
83
+ };
84
+ const findExecutionEnvironment = (project, agent, target, pinnedEnvironmentId, pinnedEnvironmentRevision, pinnedEnvironmentValidationFingerprint) => {
85
+ const fingerprint = currentExecutionEnvironmentValidationFingerprint(agent);
86
+ return listExecutionEnvironments(project.id).find(candidate => ((!pinnedEnvironmentId || candidate.id === pinnedEnvironmentId)
87
+ && (pinnedEnvironmentRevision === undefined || candidate.environment_revision === pinnedEnvironmentRevision)
88
+ && (pinnedEnvironmentValidationFingerprint === undefined
89
+ || candidate.environment_validation_fingerprint === pinnedEnvironmentValidationFingerprint)
90
+ &&
91
+ candidate.provider_kind === 'docker_sandbox'
92
+ && candidate.provider_version === QUALIFIED_SBX_VERSION
93
+ && candidate.target_kind === target.identity.kind
94
+ && candidate.target_key === target.identity.key
95
+ && candidate.target_workspace_path === target.workspacePath
96
+ && candidate.environment_validation_fingerprint === fingerprint
97
+ && candidate.template_identity === QUALIFIED_DOCKER_SANDBOX_TEMPLATES[agent]
98
+ && candidate.agent_identity === agent
99
+ && candidate.compatible_agents.length === 1
100
+ && candidate.compatible_agents[0] === agent
101
+ && ['ready', 'running', 'stopped'].includes(candidate.lifecycle_state))) ?? null;
102
+ };
103
+ const resolveValidatedEnvironment = (project, agent, target, model, pinnedEnvironmentId, pinnedEnvironmentRevision, pinnedEnvironmentValidationFingerprint) => {
104
+ const requestedModel = agent === 'opencode' ? normalizeModelId(model) : null;
105
+ const requestedProvider = agent === 'opencode' ? getModelProvider(requestedModel) : 'anthropic';
106
+ if (agent === 'opencode' && !requestedProvider) {
107
+ throw new BuildExecutionEnvironmentFailure('validation_provider_missing', 'OpenCode Build requires a model with a provider before a Docker Sandbox can be used.', 'Choose a provider-backed OpenCode model for this ticket, then retry Build.');
108
+ }
109
+ const environment = findExecutionEnvironment(project, agent, target, pinnedEnvironmentId, pinnedEnvironmentRevision, pinnedEnvironmentValidationFingerprint);
110
+ if (!environment) {
111
+ throw new BuildExecutionEnvironmentFailure('environment_missing', 'No validated Docker Sandbox matches this exact Build target and agent.', `Select this target and validate its ${agent} Docker Sandbox before starting Build.`);
112
+ }
113
+ const validation = getLatestValidation(project.id, environment.id, agent, requestedProvider);
114
+ if (!validation) {
115
+ throw new BuildExecutionEnvironmentFailure('validation_missing', 'The matching Docker Sandbox has no durable validation evidence.', `Validate the environment for ${agent} before starting Build.`);
116
+ }
117
+ if (agent === 'opencode' && validationModel(validation) !== requestedModel) {
118
+ throw new BuildExecutionEnvironmentFailure('validation_model_mismatch', 'The latest Docker Sandbox provider validation did not probe the selected OpenCode model.', 'Run provider validation for the selected model, then retry Build.');
119
+ }
120
+ if (validation.status !== 'completed' || validation.domain_status !== 'ready' || validationAgent(validation) !== agent || (requestedProvider && validationProvider(validation) !== requestedProvider)) {
121
+ throw new BuildExecutionEnvironmentFailure('validation_stale', 'The latest Docker Sandbox validation is failed, stale, or belongs to another agent.', `Revalidate the environment for ${agent} before starting Build.`);
122
+ }
123
+ return environment;
124
+ };
125
+ const shouldRetryValidation = (error) => (error instanceof BuildExecutionEnvironmentFailure
126
+ && ['validation_missing', 'validation_stale', 'validation_model_mismatch'].includes(error.code));
127
+ const validateBuildProvider = async (input) => {
128
+ const requestedProvider = input.agent === 'opencode' ? getModelProvider(input.model) : 'anthropic';
129
+ const validation = await validateExecutionEnvironmentForTarget({
130
+ projectId: input.project.id,
131
+ environmentId: input.environment.id,
132
+ agent: input.agent,
133
+ provider: requestedProvider,
134
+ model: input.agent === 'opencode' ? normalizeModelId(input.model) || null : null,
135
+ target: input.target,
136
+ initiatedBy: 'automation',
137
+ signal: input.signal,
138
+ }, {
139
+ adapter: input.dependencies.adapter,
140
+ runtimeController: input.dependencies.runtimeController,
141
+ runner: input.dependencies.runner,
142
+ });
143
+ if (!validation.validation.agent.ready) {
144
+ throw new BuildExecutionEnvironmentFailure('validation_stale', 'The Docker Sandbox could not validate the exact Build provider and target.', `Resolve ${input.agent} authentication and provider access, validate the exact target, then retry Build.`);
145
+ }
146
+ };
147
+ const createAuthority = (environment, agent) => ({
148
+ schema_version: 1,
149
+ provider: 'docker_sandbox',
150
+ provider_version: environment.provider_version,
151
+ environment_id: environment.id,
152
+ environment_revision: environment.environment_revision,
153
+ environment_validation_fingerprint: environment.environment_validation_fingerprint,
154
+ target: {
155
+ kind: environment.target_kind,
156
+ key: environment.target_key,
157
+ workspace_path: environment.target_workspace_path,
158
+ },
159
+ capabilities: environment.capabilities,
160
+ degradation_reasons: environment.workspace_mode === 'direct' ? ['direct_workspace_writable'] : [],
161
+ agent,
162
+ authentication_mode: 'validated_guest',
163
+ credential_delivery: 'sandbox_template',
164
+ });
165
+ const parsePlacement = (value) => {
166
+ if (!value) {
167
+ return null;
168
+ }
169
+ try {
170
+ const parsed = JSON.parse(value);
171
+ return parsed && typeof parsed === 'object' ? parsed : null;
172
+ }
173
+ catch {
174
+ return null;
175
+ }
176
+ };
177
+ export const resolvePinnedBuildExecutionEnvironment = (projectId, executionRunId) => {
178
+ const binding = getExecutionEnvironmentBindingForRun(projectId, executionRunId);
179
+ if (!binding?.authority_json) {
180
+ return null;
181
+ }
182
+ try {
183
+ const authority = JSON.parse(binding.authority_json);
184
+ const environment = getExecutionEnvironment(projectId, binding.environment_id);
185
+ if (!environment
186
+ || authority.environment_id !== environment.id
187
+ || authority.environment_revision !== binding.environment_revision
188
+ || authority.environment_validation_fingerprint !== binding.environment_validation_fingerprint) {
189
+ return null;
190
+ }
191
+ return { environment, authority };
192
+ }
193
+ catch {
194
+ return null;
195
+ }
196
+ };
197
+ const parseBuildLineage = (row) => {
198
+ if (!row) {
199
+ return null;
200
+ }
201
+ if (row.authority_json) {
202
+ try {
203
+ const authority = JSON.parse(row.authority_json);
204
+ if (!row.environment_id
205
+ || row.environment_revision === null
206
+ || !row.environment_validation_fingerprint
207
+ || authority.provider !== 'docker_sandbox'
208
+ || authority.environment_id !== row.environment_id
209
+ || authority.environment_revision !== row.environment_revision
210
+ || authority.environment_validation_fingerprint !== row.environment_validation_fingerprint) {
211
+ throw new Error('Build execution authority does not match its environment binding');
212
+ }
213
+ return {
214
+ executionRunId: row.id,
215
+ provider: 'docker_sandbox',
216
+ environmentId: row.environment_id,
217
+ environmentRevision: row.environment_revision,
218
+ environmentValidationFingerprint: row.environment_validation_fingerprint,
219
+ };
220
+ }
221
+ catch (error) {
222
+ throw new BuildExecutionEnvironmentFailure('environment_identity_invalid', 'The historical Build environment authority is invalid or incomplete.', 'Start an explicitly fresh continuation after validating the intended Build environment.', { cause: error });
223
+ }
224
+ }
225
+ try {
226
+ const metadata = row.metadata_json ? JSON.parse(row.metadata_json) : null;
227
+ if (metadata?.build_execution_provider === 'host') {
228
+ return {
229
+ executionRunId: row.id,
230
+ provider: 'host',
231
+ environmentId: null,
232
+ environmentRevision: null,
233
+ environmentValidationFingerprint: null,
234
+ };
235
+ }
236
+ if (metadata?.build_execution_provider === 'docker_sandbox') {
237
+ throw new Error('Historical Docker Sandbox execution has no durable environment binding');
238
+ }
239
+ throw new Error('Historical Build execution has no provider snapshot');
240
+ }
241
+ catch (error) {
242
+ throw new BuildExecutionEnvironmentFailure('environment_identity_invalid', 'The historical Build provider lineage is unavailable.', 'Start an explicitly fresh continuation to establish new provider lineage.', { cause: error });
243
+ }
244
+ };
245
+ const buildLineageSelect = `
246
+ SELECT run.id, run.metadata_json, binding.authority_json, binding.environment_id,
247
+ binding.environment_revision, binding.environment_validation_fingerprint
248
+ FROM execution_runs run
249
+ LEFT JOIN execution_environment_run_bindings binding
250
+ ON binding.execution_run_id = run.id
251
+ AND binding.project_id = run.project_id
252
+ AND binding.relationship = 'execution'
253
+ `;
254
+ export const resolveBuildLineageForRun = (projectId, executionRunId) => {
255
+ const row = db.prepare(`${buildLineageSelect}
256
+ WHERE run.project_id = ? AND run.id = ? AND run.kind IN ('build', 'build_follow_up')
257
+ LIMIT 1
258
+ `).get(projectId, executionRunId);
259
+ return parseBuildLineage(row);
260
+ };
261
+ export const resolveBuildLineage = (projectId, ticketId, currentRunId, sessionId) => {
262
+ const row = db.prepare(`${buildLineageSelect}
263
+ INNER JOIN agent_runs agent_run
264
+ ON agent_run.execution_run_id = run.id
265
+ AND agent_run.parent_type = 'ticket'
266
+ AND agent_run.parent_id = run.source_id
267
+ AND agent_run.role = 'main'
268
+ AND agent_run.session_id = ?
269
+ WHERE run.project_id = ? AND run.source_kind = 'ticket' AND run.source_id = ?
270
+ AND run.id <> ? AND run.kind IN ('build', 'build_follow_up')
271
+ ORDER BY run.created_at DESC, run.id DESC
272
+ LIMIT 1
273
+ `).get(sessionId, projectId, ticketId, currentRunId);
274
+ return parseBuildLineage(row);
275
+ };
276
+ export const resolveBuildLineageProvider = (projectId, ticketId, currentRunId, sessionId) => resolveBuildLineage(projectId, ticketId, currentRunId, sessionId)?.provider ?? null;
277
+ export const recordBuildExecutionProvider = (projectId, executionRunId, provider) => {
278
+ const updated = db.prepare(`
279
+ UPDATE execution_runs
280
+ SET metadata_json = json_set(COALESCE(metadata_json, '{}'), '$.build_execution_provider', ?),
281
+ updated_at = CURRENT_TIMESTAMP
282
+ WHERE id = ? AND project_id = ? AND kind IN ('build', 'build_follow_up')
283
+ `).run(provider, executionRunId, projectId);
284
+ if (updated.changes !== 1) {
285
+ throw new Error('Build execution provider lineage could not be recorded');
286
+ }
287
+ };
288
+ export const resolveBuildExecutionEnvironment = async (input) => {
289
+ if (input.project.build_execution_provider !== 'docker_sandbox') {
290
+ return { provider: hostExecutionEnvironment, environment: null, authority: null, release: async () => { } };
291
+ }
292
+ const dependencies = input.dependencies ?? defaultDockerSandboxEnvironmentDependencies;
293
+ let environment;
294
+ try {
295
+ environment = resolveValidatedEnvironment(input.project, input.agent, input.target, input.model ?? null, input.pinnedEnvironmentId, input.pinnedEnvironmentRevision, input.pinnedEnvironmentValidationFingerprint);
296
+ }
297
+ catch (error) {
298
+ if (error instanceof BuildExecutionEnvironmentFailure
299
+ && error.code === 'environment_missing'
300
+ && !input.pinnedEnvironmentId) {
301
+ const requestedProvider = input.agent === 'opencode' ? getModelProvider(input.model) : 'anthropic';
302
+ try {
303
+ await prepareAndValidateExecutionEnvironmentForTarget({
304
+ projectId: input.project.id,
305
+ agent: input.agent,
306
+ provider: requestedProvider,
307
+ model: input.agent === 'opencode' ? normalizeModelId(input.model) || null : null,
308
+ target: input.target,
309
+ initiatedBy: 'automation',
310
+ signal: input.signal,
311
+ }, {
312
+ adapter: dependencies.adapter,
313
+ runtimeController: dependencies.runtimeController,
314
+ runner: dependencies.runner,
315
+ });
316
+ }
317
+ catch (preparationError) {
318
+ throw new BuildExecutionEnvironmentFailure('validation_stale', `The exact ticket Build target could not be prepared for Docker Sandbox execution.${describePreparationFailure(preparationError)}`, 'Review the reported Docker Sandbox preparation failure, resolve it, then retry Build.', { cause: preparationError });
319
+ }
320
+ environment = resolveValidatedEnvironment(input.project, input.agent, input.target, input.model ?? null, input.pinnedEnvironmentId, input.pinnedEnvironmentRevision, input.pinnedEnvironmentValidationFingerprint);
321
+ }
322
+ else if (!shouldRetryValidation(error)) {
323
+ throw error;
324
+ }
325
+ else {
326
+ const candidate = findExecutionEnvironment(input.project, input.agent, input.target, input.pinnedEnvironmentId, input.pinnedEnvironmentRevision, input.pinnedEnvironmentValidationFingerprint);
327
+ if (!candidate) {
328
+ throw error;
329
+ }
330
+ try {
331
+ await validateBuildProvider({
332
+ project: input.project,
333
+ environment: candidate,
334
+ agent: input.agent,
335
+ model: input.model ?? null,
336
+ target: input.target,
337
+ signal: input.signal,
338
+ dependencies,
339
+ });
340
+ }
341
+ catch (validationError) {
342
+ if (validationError instanceof BuildExecutionEnvironmentFailure) {
343
+ throw validationError;
344
+ }
345
+ throw new BuildExecutionEnvironmentFailure('validation_stale', 'The Docker Sandbox provider preflight failed before Build could start.', `Resolve ${input.agent} authentication and provider access, then retry Build.`, { cause: validationError });
346
+ }
347
+ environment = resolveValidatedEnvironment(input.project, input.agent, input.target, input.model ?? null, input.pinnedEnvironmentId, input.pinnedEnvironmentRevision, input.pinnedEnvironmentValidationFingerprint);
348
+ }
349
+ }
350
+ const authority = createAuthority(environment, input.agent);
351
+ try {
352
+ acquireExecutionEnvironmentLease({
353
+ projectId: input.project.id,
354
+ environmentId: environment.id,
355
+ executionRunId: input.executionRunId,
356
+ authority,
357
+ });
358
+ }
359
+ catch (error) {
360
+ throw new BuildExecutionEnvironmentFailure('environment_leased', 'The selected Docker Sandbox is already leased by another run.', 'Wait for the active Build or reconciliation to release the environment.', { cause: error });
361
+ }
362
+ let released = false;
363
+ const release = async () => {
364
+ if (released) {
365
+ return;
366
+ }
367
+ let state;
368
+ try {
369
+ state = await stopAndVerifyDockerSandbox(environment, dependencies);
370
+ }
371
+ catch (error) {
372
+ transitionExecutionEnvironment({
373
+ projectId: input.project.id,
374
+ environmentId: environment.id,
375
+ state: 'unavailable',
376
+ eventType: 'environment_execution_termination_unverified',
377
+ failure: {
378
+ code: 'termination_unverified',
379
+ message: 'The exact Docker Sandbox termination could not be verified.',
380
+ },
381
+ metadata: { executionRunId: input.executionRunId },
382
+ });
383
+ throw error;
384
+ }
385
+ const binding = getExecutionEnvironmentBindingForRun(input.project.id, input.executionRunId);
386
+ const placement = parsePlacement(binding?.placement_json ?? null);
387
+ const cleanupCompletion = state === 'stopped'
388
+ ? {
389
+ state,
390
+ eventType: 'environment_execution_stopped',
391
+ metadata: { executionRunId: input.executionRunId },
392
+ }
393
+ : {
394
+ state,
395
+ eventType: 'environment_execution_sandbox_missing',
396
+ failure: {
397
+ code: 'sandbox_missing',
398
+ message: 'The exact Docker Sandbox was absent after execution termination.',
399
+ },
400
+ metadata: { executionRunId: input.executionRunId },
401
+ };
402
+ if (placement) {
403
+ releaseExecutionEnvironmentLease({
404
+ projectId: input.project.id,
405
+ environmentId: environment.id,
406
+ executionRunId: input.executionRunId,
407
+ proof: { kind: 'placement_terminated', inspection: { identity: placement, state } },
408
+ cleanupCompletion,
409
+ });
410
+ }
411
+ else {
412
+ releaseExecutionEnvironmentLease({
413
+ projectId: input.project.id,
414
+ environmentId: environment.id,
415
+ executionRunId: input.executionRunId,
416
+ proof: { kind: 'exact_sandbox_stopped', externalId: environment.external_id, state },
417
+ cleanupCompletion,
418
+ });
419
+ }
420
+ released = true;
421
+ };
422
+ input.onLeaseAcquired?.(release);
423
+ try {
424
+ await ensureDockerSandboxRuntimeReady(dependencies, input.signal);
425
+ await reconnectAndInspectDockerSandbox(environment, dependencies, input.signal);
426
+ }
427
+ catch (error) {
428
+ if (input.signal?.aborted) {
429
+ throw input.signal.reason instanceof Error
430
+ ? input.signal.reason
431
+ : new Error('Docker Sandbox Build preparation was cancelled');
432
+ }
433
+ transitionExecutionEnvironment({
434
+ projectId: input.project.id,
435
+ environmentId: environment.id,
436
+ state: 'unavailable',
437
+ eventType: 'environment_execution_unavailable',
438
+ failure: {
439
+ code: 'runtime_unavailable',
440
+ message: 'Docker Sandbox runtime readiness or exact identity inspection failed.',
441
+ },
442
+ metadata: { executionRunId: input.executionRunId },
443
+ });
444
+ throw new BuildExecutionEnvironmentFailure('runtime_unavailable', 'The required Docker Sandbox runtime or exact persisted sandbox is unavailable.', 'Restore Docker Sandbox readiness and retry; Archon will not fall back to host execution.', { cause: error });
445
+ }
446
+ const expected = resolveExpectedDockerSandboxIdentity(environment);
447
+ const baseProvider = await createDockerSandboxExecutionProvider({
448
+ adapter: dependencies.adapter,
449
+ signal: input.signal,
450
+ binding: {
451
+ environmentId: environment.id,
452
+ environmentRevision: environment.environment_revision,
453
+ executionRunId: input.executionRunId,
454
+ target: input.target,
455
+ sandbox: expected,
456
+ },
457
+ });
458
+ const provider = {
459
+ ...baseProvider,
460
+ sessionOperations: {
461
+ opencode: input.agent === 'opencode'
462
+ ? createDockerSandboxOpencodeSessionOperations({
463
+ runner: dependencies.runner ?? dockerSandboxRunner,
464
+ sandboxName: expected.name,
465
+ })
466
+ : null,
467
+ },
468
+ execute: request => {
469
+ const handle = baseProvider.execute(request);
470
+ const placementIdentity = (handle.placementIdentity ?? Promise.resolve(null)).then(async (placement) => {
471
+ if (!placement) {
472
+ return null;
473
+ }
474
+ try {
475
+ captureExecutionEnvironmentPlacement({
476
+ projectId: input.project.id,
477
+ environmentId: environment.id,
478
+ executionRunId: input.executionRunId,
479
+ placement,
480
+ });
481
+ transitionExecutionEnvironment({
482
+ projectId: input.project.id,
483
+ environmentId: environment.id,
484
+ state: 'running',
485
+ eventType: 'environment_execution_started',
486
+ metadata: { executionRunId: input.executionRunId },
487
+ });
488
+ return placement;
489
+ }
490
+ catch (error) {
491
+ try {
492
+ await handle.terminate?.();
493
+ }
494
+ catch (terminationError) {
495
+ transitionExecutionEnvironment({
496
+ projectId: input.project.id,
497
+ environmentId: environment.id,
498
+ state: 'unavailable',
499
+ eventType: 'environment_placement_persistence_termination_unverified',
500
+ failure: {
501
+ code: 'termination_unverified',
502
+ message: 'Placement evidence persistence failed and exact sandbox termination could not be verified.',
503
+ },
504
+ metadata: { executionRunId: input.executionRunId },
505
+ });
506
+ throw terminationError;
507
+ }
508
+ throw error;
509
+ }
510
+ });
511
+ const placementFailure = Promise.all([handle.placementFailure, placementIdentity]).then(([failure]) => failure, error => new ExecutionEnvironmentFailure('placement-failed', 'docker_sandbox', 'Docker Sandbox placement evidence could not be persisted; exact sandbox termination was attempted.', { cause: error }));
512
+ return { ...handle, placementIdentity, placementFailure };
513
+ },
514
+ };
515
+ return { provider, environment, authority, release };
516
+ };
517
+ //# sourceMappingURL=buildExecutionEnvironment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildExecutionEnvironment.js","sourceRoot":"","sources":["../../../server/lib/buildExecutionEnvironment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAA;AACzB,OAAO,EACL,2BAA2B,GAI5B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,kCAAkC,EAClC,qBAAqB,GACtB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAE,oCAAoC,EAAE,MAAM,qCAAqC,CAAA;AAC1F,OAAO,EAAE,4CAA4C,EAAE,MAAM,6CAA6C,CAAA;AAC1G,OAAO,EACL,2CAA2C,EAC3C,mBAAmB,EACnB,+BAA+B,EAC/B,gCAAgC,EAChC,oCAAoC,EACpC,0BAA0B,GAE3B,MAAM,yCAAyC,CAAA;AAChD,OAAO,EACL,8BAA8B,EAC9B,gDAAgD,EAChD,+CAA+C,EAC/C,qCAAqC,GACtC,MAAM,+CAA+C,CAAA;AAEtD,OAAO,EACL,gCAAgC,EAChC,oCAAoC,EACpC,uBAAuB,EACvB,oCAAoC,EACpC,yBAAyB,EACzB,gCAAgC,EAChC,8BAA8B,GAC/B,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAiBhE,MAAM,OAAO,gCAAiC,SAAQ,KAAK;IAChD,IAAI,CAAsC;IAC1C,WAAW,CAAQ;IAE5B,YAAY,IAA0C,EAAE,OAAe,EAAE,WAAmB,EAAE,UAAwB,EAAE;QACtH,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,kCAAkC,CAAA;QAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,CAAC;CACF;AAiBD,MAAM,0BAA0B,GAAG,CAAC,KAAc,EAAE,EAAE;IACpD,IAAI,KAAK,YAAY,8BAA8B,EAAE,CAAC;QACpD,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,MAAM,GAAG,CAAA;IAC9C,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAQD,MAAM,mBAAmB,GAAG,CAC1B,SAAiB,EACjB,aAAqB,EACrB,KAAgC,EAChC,QAAuB,EACE,EAAE,CAC3B,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;GAeV,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAClH,IAAI,IAAI,CAAA;AAET,MAAM,eAAe,GAAG,CAAC,GAAqB,EAAiB,EAAE;IAC/D,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAwB,CAAA;QACrE,OAAO,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,CAAC,GAAqB,EAAiB,EAAE;IAC/D,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAwB,CAAA;QACrE,OAAO,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAA;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CAAC,GAAqB,EAAiB,EAAE;IAClE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAA6D,CAAA;QAC1G,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,WAAW,CAAA;QACpB,CAAC;QACD,OAAO,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE;YACtE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;YACxC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAA;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,MAAM,wBAAwB,GAAG,CAC/B,OAAgB,EAChB,KAAgC,EAChC,MAAuB,EACvB,mBAA4B,EAC5B,yBAAkC,EAClC,sCAA+C,EAClB,EAAE;IAC/B,MAAM,WAAW,GAAG,gDAAgD,CAAC,KAAK,CAAC,CAAA;IAC3E,OAAO,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAC7D,CAAC,CAAC,mBAAmB,IAAI,SAAS,CAAC,EAAE,KAAK,mBAAmB,CAAC;WAC3D,CAAC,yBAAyB,KAAK,SAAS,IAAI,SAAS,CAAC,oBAAoB,KAAK,yBAAyB,CAAC;WACzG,CACD,sCAAsC,KAAK,SAAS;eACjD,SAAS,CAAC,kCAAkC,KAAK,sCAAsC,CAC3F;;YAED,SAAS,CAAC,aAAa,KAAK,gBAAgB;WACzC,SAAS,CAAC,gBAAgB,KAAK,qBAAqB;WACpD,SAAS,CAAC,WAAW,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI;WAC9C,SAAS,CAAC,UAAU,KAAK,MAAM,CAAC,QAAQ,CAAC,GAAG;WAC5C,SAAS,CAAC,qBAAqB,KAAK,MAAM,CAAC,aAAa;WACxD,SAAS,CAAC,kCAAkC,KAAK,WAAW;WAC5D,SAAS,CAAC,iBAAiB,KAAK,kCAAkC,CAAC,KAAK,CAAC;WACzE,SAAS,CAAC,cAAc,KAAK,KAAK;WAClC,SAAS,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC;WACxC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,KAAK;WACxC,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,CACvE,CAAC,IAAI,IAAI,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,2BAA2B,GAAG,CAClC,OAAgB,EAChB,KAAgC,EAChC,MAAuB,EACvB,KAAoB,EACpB,mBAA4B,EAC5B,yBAAkC,EAClC,sCAA+C,EAC/C,EAAE;IACF,MAAM,cAAc,GAAG,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC5E,MAAM,iBAAiB,GAAG,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;IAC/F,IAAI,KAAK,KAAK,UAAU,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/C,MAAM,IAAI,gCAAgC,CACxC,6BAA6B,EAC7B,sFAAsF,EACtF,4EAA4E,CAC7E,CAAA;IACH,CAAC;IACD,MAAM,WAAW,GAAG,wBAAwB,CAC1C,OAAO,EACP,KAAK,EACL,MAAM,EACN,mBAAmB,EACnB,yBAAyB,EACzB,sCAAsC,CACvC,CAAA;IACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,gCAAgC,CACxC,qBAAqB,EACrB,wEAAwE,EACxE,uCAAuC,KAAK,wCAAwC,CACrF,CAAA;IACH,CAAC;IACD,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAA;IAC5F,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,gCAAgC,CACxC,oBAAoB,EACpB,iEAAiE,EACjE,gCAAgC,KAAK,yBAAyB,CAC/D,CAAA;IACH,CAAC;IACD,IAAI,KAAK,KAAK,UAAU,IAAI,eAAe,CAAC,UAAU,CAAC,KAAK,cAAc,EAAE,CAAC;QAC3E,MAAM,IAAI,gCAAgC,CACxC,2BAA2B,EAC3B,0FAA0F,EAC1F,mEAAmE,CACpE,CAAA;IACH,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,WAAW,IAAI,UAAU,CAAC,aAAa,KAAK,OAAO,IAAI,eAAe,CAAC,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC,iBAAiB,IAAI,kBAAkB,CAAC,UAAU,CAAC,KAAK,iBAAiB,CAAC,EAAE,CAAC;QACtM,MAAM,IAAI,gCAAgC,CACxC,kBAAkB,EAClB,qFAAqF,EACrF,kCAAkC,KAAK,yBAAyB,CACjE,CAAA;IACH,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAED,MAAM,qBAAqB,GAAG,CAAC,KAAc,EAA6C,EAAE,CAAC,CAC3F,KAAK,YAAY,gCAAgC;OAC9C,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,2BAA2B,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAChG,CAAA;AAED,MAAM,qBAAqB,GAAG,KAAK,EACjC,KAQE,EACF,EAAE;IACF,MAAM,iBAAiB,GAAG,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;IAClG,MAAM,UAAU,GAAG,MAAM,qCAAqC,CAAC;QAC7D,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;QAC3B,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE;QACnC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,iBAAiB;QAC3B,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI;QAChF,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,WAAW,EAAE,YAAY;QACzB,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,EAAE;QACD,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,OAAO;QACnC,iBAAiB,EAAE,KAAK,CAAC,YAAY,CAAC,iBAAiB;QACvD,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM;KAClC,CAAC,CAAA;IACF,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,IAAI,gCAAgC,CACxC,kBAAkB,EAClB,4EAA4E,EAC5E,WAAW,KAAK,CAAC,KAAK,mFAAmF,CAC1G,CAAA;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,CACtB,WAAiC,EACjC,KAAgC,EACO,EAAE,CAAC,CAAC;IAC3C,cAAc,EAAE,CAAC;IACjB,QAAQ,EAAE,gBAAgB;IAC1B,gBAAgB,EAAE,WAAW,CAAC,gBAAgB;IAC9C,cAAc,EAAE,WAAW,CAAC,EAAE;IAC9B,oBAAoB,EAAE,WAAW,CAAC,oBAAoB;IACtD,kCAAkC,EAAE,WAAW,CAAC,kCAAkC;IAClF,MAAM,EAAE;QACN,IAAI,EAAE,WAAW,CAAC,WAAW;QAC7B,GAAG,EAAE,WAAW,CAAC,UAAU;QAC3B,cAAc,EAAE,WAAW,CAAC,qBAAqB;KAClD;IACD,YAAY,EAAE,WAAW,CAAC,YAAY;IACtC,mBAAmB,EAAE,WAAW,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,EAAE;IACjG,KAAK;IACL,mBAAmB,EAAE,iBAAiB;IACtC,mBAAmB,EAAE,kBAAkB;CACxC,CAAC,CAAA;AAEF,MAAM,cAAc,GAAG,CAAC,KAAoB,EAAqC,EAAE;IACjF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAA+B,CAAA;QAC9D,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sCAAsC,GAAG,CACpD,SAAiB,EACjB,cAAsB,EACoF,EAAE;IAC5G,MAAM,OAAO,GAAG,oCAAoC,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IAC/E,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAA0C,CAAA;QAC7F,MAAM,WAAW,GAAG,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;QAC9E,IACE,CAAC,WAAW;eACT,SAAS,CAAC,cAAc,KAAK,WAAW,CAAC,EAAE;eAC3C,SAAS,CAAC,oBAAoB,KAAK,OAAO,CAAC,oBAAoB;eAC/D,SAAS,CAAC,kCAAkC,KAAK,OAAO,CAAC,kCAAkC,EAC9F,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,CAAA;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAWD,MAAM,iBAAiB,GAAG,CAAC,GAAgC,EAAgC,EAAE;IAC3F,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAA0C,CAAA;YACzF,IACE,CAAC,GAAG,CAAC,cAAc;mBAChB,GAAG,CAAC,oBAAoB,KAAK,IAAI;mBACjC,CAAC,GAAG,CAAC,kCAAkC;mBACvC,SAAS,CAAC,QAAQ,KAAK,gBAAgB;mBACvC,SAAS,CAAC,cAAc,KAAK,GAAG,CAAC,cAAc;mBAC/C,SAAS,CAAC,oBAAoB,KAAK,GAAG,CAAC,oBAAoB;mBAC3D,SAAS,CAAC,kCAAkC,KAAK,GAAG,CAAC,kCAAkC,EAC1F,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;YACrF,CAAC;YACD,OAAO;gBACL,cAAc,EAAE,GAAG,CAAC,EAAE;gBACtB,QAAQ,EAAE,gBAAgB;gBAC1B,aAAa,EAAE,GAAG,CAAC,cAAc;gBACjC,mBAAmB,EAAE,GAAG,CAAC,oBAAoB;gBAC7C,gCAAgC,EAAE,GAAG,CAAC,kCAAkC;aACzE,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,gCAAgC,CACxC,8BAA8B,EAC9B,sEAAsE,EACtE,yFAAyF,EACzF,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAA;QACH,CAAC;IACH,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAA4B,CAAC,CAAC,CAAC,IAAI,CAAA;QACpG,IAAI,QAAQ,EAAE,wBAAwB,KAAK,MAAM,EAAE,CAAC;YAClD,OAAO;gBACL,cAAc,EAAE,GAAG,CAAC,EAAE;gBACtB,QAAQ,EAAE,MAAM;gBAChB,aAAa,EAAE,IAAI;gBACnB,mBAAmB,EAAE,IAAI;gBACzB,gCAAgC,EAAE,IAAI;aACvC,CAAA;QACH,CAAC;QACD,IAAI,QAAQ,EAAE,wBAAwB,KAAK,gBAAgB,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAA;QAC3F,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;IACxE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,gCAAgC,CACxC,8BAA8B,EAC9B,uDAAuD,EACvD,2EAA2E,EAC3E,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAA;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG;;;;;;;;CAQ1B,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,SAAiB,EAAE,cAAsB,EAAgC,EAAE;IACnH,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,kBAAkB;;;GAG3C,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,CAAgC,CAAA;IAChE,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAA;AAC/B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,SAAiB,EACjB,QAAgB,EAChB,YAAoB,EACpB,SAAiB,EACa,EAAE;IAChC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,kBAAkB;;;;;;;;;;;GAW3C,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAgC,CAAA;IACnF,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAA;AAC/B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,SAAiB,EACjB,QAAgB,EAChB,YAAoB,EACpB,SAAiB,EACjB,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,QAAQ,IAAI,IAAI,CAAA;AAExF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,SAAiB,EACjB,cAAsB,EACtB,QAAmC,EACnC,EAAE;IACF,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;GAK1B,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,CAAC,CAAA;IAC3C,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;IAC3E,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gCAAgC,GAAG,KAAK,EAAE,KAYrD,EAA8C,EAAE;IAChD,IAAI,KAAK,CAAC,OAAO,CAAC,wBAAwB,KAAK,gBAAgB,EAAE,CAAC;QAChE,OAAO,EAAE,QAAQ,EAAE,wBAAwB,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,EAAE,CAAA;IAC5G,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,2CAA2C,CAAA;IACtF,IAAI,WAAiC,CAAA;IACrC,IAAI,CAAC;QACH,WAAW,GAAG,2BAA2B,CACvC,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,KAAK,IAAI,IAAI,EACnB,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,yBAAyB,EAC/B,KAAK,CAAC,sCAAsC,CAC7C,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IACE,KAAK,YAAY,gCAAgC;eAC9C,KAAK,CAAC,IAAI,KAAK,qBAAqB;eACpC,CAAC,KAAK,CAAC,mBAAmB,EAC7B,CAAC;YACD,MAAM,iBAAiB,GAAG,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;YAClG,IAAI,CAAC;gBACH,MAAM,+CAA+C,CAAC;oBACpD,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;oBAC3B,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,QAAQ,EAAE,iBAAiB;oBAC3B,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI;oBAChF,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,WAAW,EAAE,YAAY;oBACzB,MAAM,EAAE,KAAK,CAAC,MAAM;iBACrB,EAAE;oBACD,OAAO,EAAE,YAAY,CAAC,OAAO;oBAC7B,iBAAiB,EAAE,YAAY,CAAC,iBAAiB;oBACjD,MAAM,EAAE,YAAY,CAAC,MAAM;iBAC5B,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,gBAAgB,EAAE,CAAC;gBAC1B,MAAM,IAAI,gCAAgC,CACxC,kBAAkB,EAClB,oFAAoF,0BAA0B,CAAC,gBAAgB,CAAC,EAAE,EAClI,uFAAuF,EACvF,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAC5B,CAAA;YACH,CAAC;YACD,WAAW,GAAG,2BAA2B,CACvC,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,KAAK,IAAI,IAAI,EACnB,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,yBAAyB,EAC/B,KAAK,CAAC,sCAAsC,CAC7C,CAAA;QACH,CAAC;aAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,MAAM,KAAK,CAAA;QACb,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,wBAAwB,CACxC,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,yBAAyB,EAC/B,KAAK,CAAC,sCAAsC,CAC7C,CAAA;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,KAAK,CAAA;YACb,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,qBAAqB,CAAC;oBAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,WAAW,EAAE,SAAS;oBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;oBAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,YAAY;iBACb,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,eAAe,EAAE,CAAC;gBACzB,IAAI,eAAe,YAAY,gCAAgC,EAAE,CAAC;oBAChE,MAAM,eAAe,CAAA;gBACvB,CAAC;gBACD,MAAM,IAAI,gCAAgC,CACxC,kBAAkB,EAClB,wEAAwE,EACxE,WAAW,KAAK,CAAC,KAAK,wDAAwD,EAC9E,EAAE,KAAK,EAAE,eAAe,EAAE,CAC3B,CAAA;YACH,CAAC;YACD,WAAW,GAAG,2BAA2B,CACvC,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,KAAK,IAAI,IAAI,EACnB,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,yBAAyB,EAC/B,KAAK,CAAC,sCAAsC,CAC7C,CAAA;QACH,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3D,IAAI,CAAC;QACH,gCAAgC,CAAC;YAC/B,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;YAC3B,aAAa,EAAE,WAAW,CAAC,EAAE;YAC7B,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,SAAS;SACV,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,gCAAgC,CACxC,oBAAoB,EACpB,+DAA+D,EAC/D,yEAAyE,EACzE,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAA;IACH,CAAC;IAED,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,IAAI,QAAQ,EAAE,CAAC;YACb,OAAM;QACR,CAAC;QACD,IAAI,KAA2B,CAAA;QAC/B,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,0BAA0B,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;QACrE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,8BAA8B,CAAC;gBAC7B,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;gBAC3B,aAAa,EAAE,WAAW,CAAC,EAAE;gBAC7B,KAAK,EAAE,aAAa;gBACpB,SAAS,EAAE,8CAA8C;gBACzD,OAAO,EAAE;oBACP,IAAI,EAAE,wBAAwB;oBAC9B,OAAO,EAAE,6DAA6D;iBACvE;gBACD,QAAQ,EAAE,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE;aACnD,CAAC,CAAA;YACF,MAAM,KAAK,CAAA;QACb,CAAC;QACD,MAAM,OAAO,GAAG,oCAAoC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;QAC5F,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,EAAE,cAAc,IAAI,IAAI,CAAC,CAAA;QACjE,MAAM,iBAAiB,GAAG,KAAK,KAAK,SAAS;YAC3C,CAAC,CAAC;gBACE,KAAK;gBACL,SAAS,EAAE,+BAA+B;gBAC1C,QAAQ,EAAE,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE;aAC1C;YACZ,CAAC,CAAC;gBACE,KAAK;gBACL,SAAS,EAAE,uCAAuC;gBAClD,OAAO,EAAE;oBACP,IAAI,EAAE,iBAAiB;oBACvB,OAAO,EAAE,kEAAkE;iBAC5E;gBACD,QAAQ,EAAE,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE;aAC1C,CAAA;QACd,IAAI,SAAS,EAAE,CAAC;YACd,gCAAgC,CAAC;gBAC/B,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;gBAC3B,aAAa,EAAE,WAAW,CAAC,EAAE;gBAC7B,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,KAAK,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;gBACnF,iBAAiB;aAClB,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,gCAAgC,CAAC;gBAC/B,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;gBAC3B,aAAa,EAAE,WAAW,CAAC,EAAE;gBAC7B,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,KAAK,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,WAAW,CAAC,WAAY,EAAE,KAAK,EAAE;gBACrF,iBAAiB;aAClB,CAAC,CAAA;QACJ,CAAC;QACD,QAAQ,GAAG,IAAI,CAAA;IACjB,CAAC,CAAA;IACD,KAAK,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAA;IAEhC,IAAI,CAAC;QACH,MAAM,+BAA+B,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QACjE,MAAM,gCAAgC,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACjF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YAC1B,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,YAAY,KAAK;gBACxC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM;gBACrB,CAAC,CAAC,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;QACjE,CAAC;QACD,8BAA8B,CAAC;YAC7B,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;YAC3B,aAAa,EAAE,WAAW,CAAC,EAAE;YAC7B,KAAK,EAAE,aAAa;YACpB,SAAS,EAAE,mCAAmC;YAC9C,OAAO,EAAE;gBACP,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE,uEAAuE;aACjF;YACD,QAAQ,EAAE,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE;SACnD,CAAC,CAAA;QACF,MAAM,IAAI,gCAAgC,CACxC,qBAAqB,EACrB,gFAAgF,EAChF,0FAA0F,EAC1F,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAA;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,oCAAoC,CAAC,WAAW,CAAC,CAAA;IAClE,MAAM,YAAY,GAAG,MAAM,oCAAoC,CAAC;QAC9D,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE;YACP,aAAa,EAAE,WAAW,CAAC,EAAE;YAC7B,mBAAmB,EAAE,WAAW,CAAC,oBAAoB;YACrD,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,QAAQ;SAClB;KACF,CAAC,CAAA;IACF,MAAM,QAAQ,GAAiC;QAC7C,GAAG,YAAY;QACf,iBAAiB,EAAE;YACjB,QAAQ,EAAE,KAAK,CAAC,KAAK,KAAK,UAAU;gBAClC,CAAC,CAAC,4CAA4C,CAAC;oBAC3C,MAAM,EAAE,YAAY,CAAC,MAAM,IAAI,mBAAmB;oBAClD,WAAW,EAAE,QAAQ,CAAC,IAAI;iBAC3B,CAAC;gBACJ,CAAC,CAAC,IAAI;SACT;QACD,OAAO,EAAE,OAAO,CAAC,EAAE;YACjB,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YAC5C,MAAM,iBAAiB,GAAG,CAAC,MAAM,CAAC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAC,SAAS,EAAC,EAAE;gBACnG,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,IAAI,CAAA;gBACb,CAAC;gBACD,IAAI,CAAC;oBACH,oCAAoC,CAAC;wBACnC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;wBAC3B,aAAa,EAAE,WAAW,CAAC,EAAE;wBAC7B,cAAc,EAAE,KAAK,CAAC,cAAc;wBACpC,SAAS;qBACV,CAAC,CAAA;oBACF,8BAA8B,CAAC;wBAC7B,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;wBAC3B,aAAa,EAAE,WAAW,CAAC,EAAE;wBAC7B,KAAK,EAAE,SAAS;wBAChB,SAAS,EAAE,+BAA+B;wBAC1C,QAAQ,EAAE,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE;qBACnD,CAAC,CAAA;oBACF,OAAO,SAAS,CAAA;gBAClB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC;wBACH,MAAM,MAAM,CAAC,SAAS,EAAE,EAAE,CAAA;oBAC5B,CAAC;oBAAC,OAAO,gBAAgB,EAAE,CAAC;wBAC1B,8BAA8B,CAAC;4BAC7B,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;4BAC3B,aAAa,EAAE,WAAW,CAAC,EAAE;4BAC7B,KAAK,EAAE,aAAa;4BACpB,SAAS,EAAE,0DAA0D;4BACrE,OAAO,EAAE;gCACP,IAAI,EAAE,wBAAwB;gCAC9B,OAAO,EAAE,4FAA4F;6BACtG;4BACD,QAAQ,EAAE,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE;yBACnD,CAAC,CAAA;wBACF,MAAM,gBAAgB,CAAA;oBACxB,CAAC;oBACD,MAAM,KAAK,CAAA;gBACb,CAAC;YACH,CAAC,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CACrF,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,EACtB,KAAK,CAAC,EAAE,CAAC,IAAI,2BAA2B,CACtC,kBAAkB,EAClB,gBAAgB,EAChB,oGAAoG,EACpG,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CACF,CAAA;YACD,OAAO,EAAE,GAAG,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAA;QAC3D,CAAC;KACF,CAAA;IAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AACtD,CAAC,CAAA"}
@@ -4,8 +4,9 @@ import { startFollowUp, isFollowUpRunning } from '../workers/followUp.js';
4
4
  import { createBuildOpenQuestionResolutionBatch, failBuildOpenQuestionBatch, formatBuildOpenQuestionAnswersPrompt, listAnsweredBuildOpenQuestionsForBatch, setBuildOpenQuestionBatchStatus, } from './buildOpenQuestions.js';
5
5
  import { withExecutionRunTransaction } from './executionRuns.js';
6
6
  import { getAutomationProgression, getWaitingOpenQuestionProgression, runAutomationProgression, waitAutomationProgression, } from './automationProgression.js';
7
+ import { getEffectiveProject } from './projects.js';
7
8
  import { createTicketMessage } from './ticketMessages.js';
8
- import { getTicket, listTickets, resolveTicketTool } from './tickets.js';
9
+ import { listTickets, resolveTicketTool } from './tickets.js';
9
10
  import { validateWorkflowContext } from './types.js';
10
11
  const resolveTargetTicket = (tickets) => {
11
12
  return [...tickets]
@@ -27,7 +28,7 @@ const restoreTicket = (ticket) => {
27
28
  `).run(ticket.agent_status, null, ticket.agent_log, ticket.streaming_response, ticket.updated_at, ticket.id, ticket.project_id);
28
29
  };
29
30
  export const acceptBuildOpenQuestionResolution = ({ projectId, bundleId, resolutions, broadcaster, }) => {
30
- const buildTickets = listTickets(projectId).filter(ticket => ticket.worktree_bundle_id === bundleId && ticket.state === 'build');
31
+ const buildTickets = listTickets(projectId, { detail: 'board' }).filter(ticket => ticket.worktree_bundle_id === bundleId && ticket.state === 'build');
31
32
  if (buildTickets.length === 0
32
33
  || buildTickets.some(ticket => ticket.agent_status !== 'done' && ticket.agent_status !== 'stopped')) {
33
34
  return { ok: false, status: 409, error: 'All build tickets in the bundle must be done or stopped before resolving questions' };
@@ -40,6 +41,10 @@ export const acceptBuildOpenQuestionResolution = ({ projectId, bundleId, resolut
40
41
  if (targetTicket && isFollowUpRunning(targetTicket)) {
41
42
  return { ok: false, status: 409, error: 'Build follow-up could not be started' };
42
43
  }
44
+ const project = targetTicket ? getEffectiveProject(targetTicket) : null;
45
+ if (targetTicket && !project) {
46
+ return { ok: false, status: 409, error: 'Build project no longer exists' };
47
+ }
43
48
  let accepted = null;
44
49
  try {
45
50
  accepted = withExecutionRunTransaction(transaction => {
@@ -105,6 +110,7 @@ export const acceptBuildOpenQuestionResolution = ({ projectId, bundleId, resolut
105
110
  ],
106
111
  metadata: {
107
112
  ...(workflowContext ?? {}),
113
+ build_execution_provider: project?.build_execution_provider ?? 'host',
108
114
  retry_tool: runConfig.tool,
109
115
  retry_model: runConfig.model,
110
116
  retry_variant: runConfig.variant,
@@ -224,7 +230,7 @@ export const acceptBuildOpenQuestionResolution = ({ projectId, bundleId, resolut
224
230
  }
225
231
  return { ok: false, status: reason === 'queue_failed' ? 503 : 409, error };
226
232
  }
227
- const refreshed = getTicket(targetTicket.id) ?? targetTicket;
233
+ const refreshed = listTickets(projectId, { detail: 'board' }).find(ticket => ticket.id === targetTicket.id) ?? targetTicket;
228
234
  broadcaster.emit('ticket:updated', refreshed);
229
235
  return {
230
236
  ok: true,