@kern0x1b/penstock-cli 26.11.0 → 26.11.2

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 (302) hide show
  1. package/THIRD-PARTY-NOTICES.md +16 -16
  2. package/dist/chunk-account-BaYNvO18.js +1 -0
  3. package/dist/{chunk-agentLaunch-D21uPuMr.js → chunk-agentLaunch-BnrpVME4.js} +1 -1
  4. package/dist/chunk-agentServe-BeOh1rjE.js +10 -0
  5. package/dist/chunk-agents-CZJoU2u2.js +1 -0
  6. package/dist/chunk-agentsMigrate-DnrqoXNz.js +2 -0
  7. package/dist/{chunk-analyze-BG-rlggA.js → chunk-analyze-ClE2LBCj.js} +1 -1
  8. package/dist/chunk-analyze-DgQqzEgb.js +1 -0
  9. package/dist/{chunk-analyzeFlow-2cYPgjh-.js → chunk-analyzeFlow-F2ZFmJhv.js} +1 -1
  10. package/dist/chunk-apiTemplates-Cl_z63FA.js +1 -0
  11. package/dist/{chunk-bot-DlhStBoG.js → chunk-bot-C2k8yaXA.js} +5 -5
  12. package/dist/chunk-cmmnFindings-DKpYqUZN.js +1 -0
  13. package/dist/{chunk-codeFactSet-LxSnQy8K.js → chunk-codeFactSet-DiAYqvbb.js} +1 -1
  14. package/dist/{chunk-codeIndex-N1gnP_sW.js → chunk-codeIndex-vStNh6Bm.js} +1 -1
  15. package/dist/chunk-codeLinks-BVpn4_Sr.js +1 -0
  16. package/dist/chunk-codeLinks-BrGduhsm.js +1 -0
  17. package/dist/chunk-command-8s6m3ZUw.js +5 -0
  18. package/dist/chunk-command-aMxPQdiV.js +1 -0
  19. package/dist/chunk-command-vH1_y5F0.js +1 -0
  20. package/dist/chunk-commands-B8YVT41b.js +5 -0
  21. package/dist/{chunk-commands-DcjlDt7B.js → chunk-commands-CJCSznbv.js} +1 -1
  22. package/dist/chunk-compose-BUJTvoFX.js +4 -0
  23. package/dist/chunk-connections-Drr67X9U.js +1 -0
  24. package/dist/chunk-connectors-DcMqy0u8.js +1 -0
  25. package/dist/chunk-convert-Ce1MZmsE.js +3 -0
  26. package/dist/chunk-convert-FkMnlxyi.js +1 -0
  27. package/dist/chunk-deploy-BHg8pB9x.js +1 -0
  28. package/dist/chunk-deploy-DZgCTgaY.js +6 -0
  29. package/dist/{chunk-diagrams-BukAOL0g.js → chunk-diagrams-CtGMGTa8.js} +1 -1
  30. package/dist/chunk-diff-9hjavV6V.js +1 -0
  31. package/dist/chunk-diff-Dp3fUALc.js +1 -0
  32. package/dist/chunk-dispatch-o-eqJb9Y.js +7 -0
  33. package/dist/chunk-dmnTests-BOxutoRs.js +1 -0
  34. package/dist/{chunk-dmnTests-ChwX1YVo.js → chunk-dmnTests-BzNA-u2k.js} +1 -1
  35. package/dist/{chunk-docs-D7yEDpa4.js → chunk-docs-B3C3pZpY.js} +17 -17
  36. package/dist/chunk-doctor-CRxbsAm7.js +1 -0
  37. package/dist/{chunk-editPreview-CC2vwhIW.js → chunk-editPreview-DCUnMkTU.js} +1 -1
  38. package/dist/chunk-evidence-ny_2ltVe.js +23 -0
  39. package/dist/{chunk-examples-0HkF-frb.js → chunk-examples-BG0lGXcZ.js} +9 -9
  40. package/dist/chunk-export-Blwjf23H.js +1 -0
  41. package/dist/chunk-export-kt3sBTZu.js +20 -0
  42. package/dist/{chunk-facts-DSVaURw5.js → chunk-facts-Dl5lLriU.js} +1 -1
  43. package/dist/chunk-failure-BRyRvObj.js +1 -0
  44. package/dist/{chunk-file-BswMa3FN.js → chunk-file-1YhfNmPn.js} +1 -1
  45. package/dist/chunk-import-Dh3az4BC.js +6 -0
  46. package/dist/chunk-importCommand-Dhikkmo0.js +1 -0
  47. package/dist/chunk-incident-LJe2-ohi.js +1 -0
  48. package/dist/chunk-init-D34Q4YA8.js +227 -0
  49. package/dist/chunk-lint-CnEhoYRB.js +1 -0
  50. package/dist/{chunk-lsp-7vA_mIt1.js → chunk-lsp-BzeJkpmf.js} +1 -1
  51. package/dist/chunk-main-BZF-ErAx.js +1 -0
  52. package/dist/chunk-mcp-B_B9bet5.js +95 -0
  53. package/dist/{chunk-mcpLaunch-LyfmIF_Z.js → chunk-mcpLaunch-BS709697.js} +1 -1
  54. package/dist/chunk-migrate-DVfXC-iJ.js +1 -0
  55. package/dist/chunk-migrate-DwWg0k5_.js +16 -0
  56. package/dist/{chunk-migrateApply-CzOkgKhB.js → chunk-migrateApply-e8O9oZXP.js} +3 -3
  57. package/dist/chunk-migrateVerify-oIBf-PM3.js +1 -0
  58. package/dist/{chunk-model-f8AzYUK7.js → chunk-model-BulEKnY1.js} +2 -2
  59. package/dist/{chunk-parse-B-uKGDy-.js → chunk-parse-DiOcpdOU.js} +1 -1
  60. package/dist/{chunk-penstockCli-CKMvaZ0O.js → chunk-penstockCli-C41P_G7i.js} +1 -1
  61. package/dist/chunk-policy-BVb7c7G_.js +1 -0
  62. package/dist/chunk-policyGate-BOgKsqLq.js +2 -0
  63. package/dist/chunk-pr-1jKcTNnP.js +1 -0
  64. package/dist/{chunk-project-DBYOlYRi.js → chunk-project-COaBZhMt.js} +1 -1
  65. package/dist/chunk-project-lO_6DX8G.js +1 -0
  66. package/dist/chunk-promotion-CTMPjXjZ.js +2 -0
  67. package/dist/chunk-promotion-DDLrgBqZ.js +1 -0
  68. package/dist/{chunk-promotion-DchO6xoC.js → chunk-promotion-NeRj4uTP.js} +1 -1
  69. package/dist/chunk-receipt-C4NqnSkH.js +1 -0
  70. package/dist/chunk-receiptDeps-B7MehyHT.js +1 -0
  71. package/dist/chunk-receiptGate-BZCKCMTV.js +1 -0
  72. package/dist/chunk-receiptGate-DRcw327y.js +1 -0
  73. package/dist/{chunk-receiptSnapshot-B6ruXw8z.js → chunk-receiptSnapshot-CHSk3_4N.js} +1 -1
  74. package/dist/{chunk-receiptStore-Cy-L0H1u.js → chunk-receiptStore-DhROtI2h.js} +1 -1
  75. package/dist/chunk-refactor-CO3qyIEv.js +17 -0
  76. package/dist/chunk-refactor-CWeCOl7w.js +1 -0
  77. package/dist/{chunk-render-Ci5d6mg4.js → chunk-render-DZd5hScS.js} +1 -1
  78. package/dist/chunk-report-w7YZwhyg.js +1 -0
  79. package/dist/chunk-review-DYMgFDSy.js +1 -0
  80. package/dist/chunk-say-CP1IyOSv.js +1 -0
  81. package/dist/{chunk-security-VgKwtohm.js → chunk-security-pgip-kdY.js} +2 -2
  82. package/dist/chunk-serve-CKt2rO05.js +10 -0
  83. package/dist/{chunk-share-CBV2FuKq.js → chunk-share-rsL0itIM.js} +18 -18
  84. package/dist/chunk-stages-B2sBBxUc.js +3 -0
  85. package/dist/chunk-systemError-O3vQ8hLb.js +1 -0
  86. package/dist/chunk-systemError-n2E6isvg.js +1 -0
  87. package/dist/chunk-taskTest-DWoME1mY.js +2 -0
  88. package/dist/chunk-taskTest-JErgWO6t.js +1 -0
  89. package/dist/{chunk-templateDiagnostics-BwH7RNkz.js → chunk-templateDiagnostics-6txfKwas.js} +2 -2
  90. package/dist/chunk-templates-Y3xfCO_3.js +1 -0
  91. package/dist/chunk-testCases-BwimUfDC.js +4 -0
  92. package/dist/chunk-testCases-DO2Rkyvd.js +1 -0
  93. package/dist/chunk-tests-Cy325OGw.js +1 -0
  94. package/dist/chunk-tests-DNkORsqB.js +23 -0
  95. package/dist/{chunk-trust-DXcsUJaK.js → chunk-trust-DSX-k3by.js} +1 -1
  96. package/dist/{chunk-trust-DubjEjlN.js → chunk-trust-Di4EYPah.js} +1 -1
  97. package/dist/{chunk-variableChecks-KnECGMR3.js → chunk-variableChecks-CBDpmI4d.js} +1 -1
  98. package/dist/{chunk-workerVariables-CajAcbwl.js → chunk-workerVariables-CNnCRijJ.js} +1 -1
  99. package/dist/{chunk-workerVariables-DIDoUpHF.js → chunk-workerVariables-CulLc3YH.js} +1 -1
  100. package/dist/chunk-wrapper-CGYED7G2.js +1 -0
  101. package/dist/chunk-wrapper-CK7Xtes6.js +3 -0
  102. package/dist/grammars/web-tree-sitter.wasm +0 -0
  103. package/dist/penstock.js +1 -1
  104. package/dist/web/assets/{AgentSettings-Cn5Vcph3.js → AgentSettings-D24jOuht.js} +1 -1
  105. package/dist/web/assets/{AgentsDialog-C6WqzlxZ.js → AgentsDialog-BMWv3Gyk.js} +1 -1
  106. package/dist/web/assets/{AgentsDialog-dpbwVSxk.js → AgentsDialog-DbY2O6O5.js} +1 -1
  107. package/dist/web/assets/{AgentsTab-C34OhVkw.js → AgentsTab-D6LbK6sG.js} +2 -2
  108. package/dist/web/assets/{BpmnCanvas-yur9daZa.js → BpmnCanvas-BcQRQ2Br.js} +27 -27
  109. package/dist/web/assets/BpmnDocument-Ce5F4K1e.js +27 -0
  110. package/dist/web/assets/CmmnDocument-C_UlPowC.js +17 -0
  111. package/dist/web/assets/{ConflictDialog-Bb5kduaR.js → ConflictDialog-DfFp8F7n.js} +1 -1
  112. package/dist/web/assets/{ConnectionsDialog-qtF7yDFw.js → ConnectionsDialog-BaYtHD5h.js} +1 -1
  113. package/dist/web/assets/{DiffDocument-LHOif5Ac.js → DiffDocument-BOPdBEN3.js} +1 -1
  114. package/dist/web/assets/{DmnDocument-0f5uS67x.css → DmnDocument-DZ9u2uk2.css} +1 -1
  115. package/dist/web/assets/DmnDocument-vtnARy7Q.js +41 -0
  116. package/dist/web/assets/{DriftDialog-Chl6BX6k.js → DriftDialog-dIbCbSK2.js} +1 -1
  117. package/dist/web/assets/FormDocument-B0q8DF9v.css +1 -0
  118. package/dist/web/assets/FormDocument-DHBUBUzO.js +32 -0
  119. package/dist/web/assets/FormStepView-CbHb32_8.js +1 -0
  120. package/dist/web/assets/{GraphAwareLayoutService-wsos3yPD.js → GraphAwareLayoutService-C5N8K9dm.js} +1 -1
  121. package/dist/web/assets/{MigrationDialog-CBJU7Oe3.js → MigrationDialog-DA3Vrzgw.js} +1 -1
  122. package/dist/web/assets/{NewFileDialog-B7075LWG.js → NewFileDialog-Dev41oA1.js} +1 -1
  123. package/dist/web/assets/PolicyDialog-qR19Csji.js +1 -0
  124. package/dist/web/assets/{QuickOpen-DJQrI7Od.js → QuickOpen-ps-rMjiS.js} +1 -1
  125. package/dist/web/assets/ScriptPane-BQLMNYzc.js +2 -0
  126. package/dist/web/assets/{ScriptRunDialog-BwE4cXnp.js → ScriptRunDialog-YivjHB6j.js} +1 -1
  127. package/dist/web/assets/{SettingsDialog-c307wPsg.js → SettingsDialog-DI0vZ6Ay.js} +1 -1
  128. package/dist/web/assets/ShortcutsDialog-DLXnv4Vm.js +1 -0
  129. package/dist/web/assets/SourceDocument-Cj8cGsoS.js +1 -0
  130. package/dist/web/assets/TemplateDocument-BRyFsofH.js +7 -0
  131. package/dist/web/assets/TextDocument-DB2hEuMA.js +1 -0
  132. package/dist/web/assets/{UnreadableFileLayer-CUP_30X8.js → UnreadableFileLayer-CRW3MM7w.js} +1 -1
  133. package/dist/web/assets/{UploadDialog-CaVBOxUL.js → UploadDialog-D-X6GG98.js} +1 -1
  134. package/dist/web/assets/Viewer-BcpDlvg_.js +4 -0
  135. package/dist/web/assets/apply-Nsj6ek02.js +1 -0
  136. package/dist/web/assets/{bpmnTheme-CZ7xp4R5.js → bpmnTheme-pKgl9Mrn.js} +2 -2
  137. package/dist/web/assets/{data-ZauKnQ2Z.js → data-CdiToGOq.js} +2 -2
  138. package/dist/web/assets/{data-Da5Nxzev.js → data-wU6sw6RY.js} +1 -1
  139. package/dist/web/assets/{dialog-DSLu1Bbo.js → dialog-BDJ5dDiU.js} +1 -1
  140. package/dist/web/assets/{diff-C4hitkRR.js → diff-BhYqTg4l.js} +1 -1
  141. package/dist/web/assets/dist-27z6Phtg.js +23 -0
  142. package/dist/web/assets/{dist-CofBTWz1.js → dist-B7TL-7R3.js} +4 -4
  143. package/dist/web/assets/dist-BEpeEbIu.js +1 -0
  144. package/dist/web/assets/{dist-CYCbBoYQ.js → dist-BTf7NfeQ.js} +1 -1
  145. package/dist/web/assets/{dist-CJKVV2_S.js → dist-BqGv7f4M.js} +10 -10
  146. package/dist/web/assets/dist-C-q1IWjr.js +6 -0
  147. package/dist/web/assets/{dist-Blylfrak.js → dist-CJx_2eBF.js} +2 -2
  148. package/dist/web/assets/dist-COUY_jv5.js +1 -0
  149. package/dist/web/assets/{dist-DpDu6Wz_.js → dist-CWjAtsKe.js} +1 -1
  150. package/dist/web/assets/{dist-gb3IfUZi.js → dist-Cv8_A_95.js} +2 -2
  151. package/dist/web/assets/dist-DDE6BjgI.js +5 -0
  152. package/dist/web/assets/{dist-7VC_hKpw.js → dist-DDNYYQtV.js} +1 -1
  153. package/dist/web/assets/dist-DW-S9iZN.js +1 -0
  154. package/dist/web/assets/dist-OnU5n5o1.js +1 -0
  155. package/dist/web/assets/dmn-Cgoh6wXm.js +3 -0
  156. package/dist/web/assets/{documentBridge-1Eg7H9yI.js → documentBridge-CHw4XsZH.js} +3 -3
  157. package/dist/web/assets/{documents-LG-7CTrn.js → documents-CEtohzAC.js} +1 -1
  158. package/dist/web/assets/duplicate-D_ic-m62.js +342 -0
  159. package/dist/web/assets/{engines-DhO6OW1S.js → engines-lyEvb0pH.js} +1 -1
  160. package/dist/web/assets/{executable-BTarDLry.js → executable--4381_Lf.js} +1 -1
  161. package/dist/web/assets/{file-CIeVSOHy.js → file-BbVBUuIH.js} +1 -1
  162. package/dist/web/assets/formChecks-CSClH9sH.js +1 -0
  163. package/dist/web/assets/frontend-uXAWaalt.js +1 -0
  164. package/dist/web/assets/{httpHost-DBSjdVth.js → httpHost-C973OTRe.js} +1 -1
  165. package/dist/web/assets/{index.es-pigASDxC.js → index.es-CMvq8Bhe.js} +3 -3
  166. package/dist/web/assets/index.es-GbdJvMnO.js +78 -0
  167. package/dist/web/assets/{index.esm-CTLpq4ik.js → index.esm-Ba6q0zSu.js} +1 -1
  168. package/dist/web/assets/{intelligence-_1C71hkQ.js → intelligence-DNqJNmdB.js} +3 -3
  169. package/dist/web/assets/{jspdf.es.min-PgZzOmkT.js → jspdf.es.min-C0L4zezU.js} +6 -6
  170. package/dist/web/assets/{kind-X3_nabTt.js → kind-DDHnk6dW.js} +1 -1
  171. package/dist/web/assets/{lib-BmLAen_d.js → lib-DrkEMJ65.js} +1 -1
  172. package/dist/web/assets/{list-DovB9lWV.js → list-TmXvCwja.js} +1 -1
  173. package/dist/web/assets/{migrationHost-BcguK4K5.js → migrationHost-DCWBb3L6.js} +1 -1
  174. package/dist/web/assets/moddle-f0Q4Guwd.js +1 -0
  175. package/dist/web/assets/{model--Bj28IOj.js → model-afHgSxJs.js} +1 -1
  176. package/dist/web/assets/{nudges-UF9_cBuO.js → nudges-DPG3WpyV.js} +1 -1
  177. package/dist/web/assets/{open-C9Kt9JLw.js → open-Vkx72dYx.js} +1 -1
  178. package/dist/web/assets/platform-G53Cenyw.js +2 -0
  179. package/dist/web/assets/{preload-helper-VRuDKI9K.js → preload-helper-DExCAR_V.js} +1 -1
  180. package/dist/web/assets/{run-BZgz1U9U.js → run-BMfRBe5O.js} +1 -1
  181. package/dist/web/assets/samples-BL3jA_Vd.js +1 -0
  182. package/dist/web/assets/{say-WvEHqIbO.js → say-BkdZMivA.js} +1 -1
  183. package/dist/web/assets/{say-ChFGKK2E.js → say-C7KqKcFr.js} +1 -1
  184. package/dist/web/assets/{sections-N6WYk7b8.js → sections-LJKSRDTS.js} +1 -1
  185. package/dist/web/assets/sharedReader-BsXfiBT8.js +1 -0
  186. package/dist/web/assets/{source-frame-DcptKpVq.js → source-frame-DC4W0A5-.js} +2 -2
  187. package/dist/web/assets/{syntax-DW10Wzg4.js → syntax-00Hk6Xv7.js} +4 -4
  188. package/dist/web/assets/{template-CMl68jPp.js → template-BQP7ZXdK.js} +1 -1
  189. package/dist/web/assets/testCaseRuns-liAhWMg7.js +1 -0
  190. package/dist/web/assets/{trace-DLziNpe2.js → trace-DXQU2N_l.js} +1 -1
  191. package/dist/web/assets/{translator-DLDFsUlE.js → translator-BLCeE6UY.js} +1 -1
  192. package/dist/web/assets/ui-BLtm3Y1J.js +1 -0
  193. package/dist/web/assets/{useTrace-UYBskc2k.js → useTrace-dZdQ805W.js} +1 -1
  194. package/dist/web/assets/web-C4k0NLZ9.js +982 -0
  195. package/dist/web/assets/web-CnDpD6qy.css +1 -0
  196. package/dist/web/assets/{workerVariables-DURgyUbG.js → workerVariables-O6VqwDzr.js} +1 -1
  197. package/dist/web/assets/xml-DIWt4von.js +1 -0
  198. package/dist/web/index.html +39 -40
  199. package/package.json +5 -5
  200. package/dist/chunk-account-CpZu-RTg.js +0 -1
  201. package/dist/chunk-agentServe-BYRtgGGD.js +0 -10
  202. package/dist/chunk-agents-B9oxdPTA.js +0 -1
  203. package/dist/chunk-agentsMigrate-BV8TeRXq.js +0 -2
  204. package/dist/chunk-analyze-pgzR-Cx-.js +0 -1
  205. package/dist/chunk-apiTemplates-cU7C8vap.js +0 -1
  206. package/dist/chunk-cmmnFindings-S2TGSnEp.js +0 -1
  207. package/dist/chunk-codeLinks-C8N6e8k3.js +0 -1
  208. package/dist/chunk-codeLinks-o0a8tBGk.js +0 -1
  209. package/dist/chunk-command-Bqlbgo-2.js +0 -1
  210. package/dist/chunk-command-DT84ioJb.js +0 -5
  211. package/dist/chunk-command-DrGP2kg8.js +0 -1
  212. package/dist/chunk-commands-B4PoZbpX.js +0 -5
  213. package/dist/chunk-compose-CWKKVtN5.js +0 -4
  214. package/dist/chunk-connections-DQpKbIGD.js +0 -1
  215. package/dist/chunk-connectors-PtAvE91B.js +0 -1
  216. package/dist/chunk-convert-CpgtOlZk.js +0 -1
  217. package/dist/chunk-convert-HbFpg8ab.js +0 -3
  218. package/dist/chunk-deploy-l4MdFfn8.js +0 -6
  219. package/dist/chunk-deploy-qRaaKGZb.js +0 -1
  220. package/dist/chunk-diff-BhTFlCE3.js +0 -1
  221. package/dist/chunk-diff-kBF83vzM.js +0 -1
  222. package/dist/chunk-dispatch-BnO-QhMh.js +0 -7
  223. package/dist/chunk-dmnTests-0x_yUH6S.js +0 -1
  224. package/dist/chunk-doctor-BuHK1dTm.js +0 -1
  225. package/dist/chunk-evidence-oLw_C6j8.js +0 -23
  226. package/dist/chunk-export-cIFHDXug.js +0 -1
  227. package/dist/chunk-export-jBVxtmCH.js +0 -20
  228. package/dist/chunk-failure-D5brrYW2.js +0 -1
  229. package/dist/chunk-import-BBOe-5RZ.js +0 -6
  230. package/dist/chunk-importCommand-DRjYoljA.js +0 -1
  231. package/dist/chunk-incident-BK1h37CD.js +0 -1
  232. package/dist/chunk-init-_OALJuKm.js +0 -227
  233. package/dist/chunk-lint-7KJFxyCN.js +0 -1
  234. package/dist/chunk-main-Cw2JXCil.js +0 -1
  235. package/dist/chunk-mcp-K63bhqnF.js +0 -95
  236. package/dist/chunk-migrate-BMwBV5sc.js +0 -16
  237. package/dist/chunk-migrate-CxfVmKt0.js +0 -1
  238. package/dist/chunk-migrateVerify-DSEXSpfR.js +0 -1
  239. package/dist/chunk-policy-BX0Ftdws.js +0 -1
  240. package/dist/chunk-policyGate-dmcufnwB.js +0 -2
  241. package/dist/chunk-pr-ByrGcfam.js +0 -1
  242. package/dist/chunk-project-DA3KnAZH.js +0 -1
  243. package/dist/chunk-promotion-Boedyq43.js +0 -1
  244. package/dist/chunk-promotion-D8Ti-vxp.js +0 -2
  245. package/dist/chunk-receipt-CusJaqNn.js +0 -1
  246. package/dist/chunk-receiptDeps-oVbX156d.js +0 -1
  247. package/dist/chunk-receiptGate-DrGChj7i.js +0 -1
  248. package/dist/chunk-receiptGate-xldHKMyJ.js +0 -1
  249. package/dist/chunk-refactor-B1W_MGTp.js +0 -1
  250. package/dist/chunk-refactor-BJXxEtVs.js +0 -17
  251. package/dist/chunk-report-D9pM09Nu.js +0 -1
  252. package/dist/chunk-review-UcqS5AAi.js +0 -1
  253. package/dist/chunk-say-CYb4HeJD.js +0 -1
  254. package/dist/chunk-serve-Dmqen1yd.js +0 -10
  255. package/dist/chunk-stages-BTQJrAMF.js +0 -3
  256. package/dist/chunk-systemError-BYrMzp2o.js +0 -1
  257. package/dist/chunk-systemError-CXvnhNPK.js +0 -1
  258. package/dist/chunk-taskTest-9gMsx0zu.js +0 -2
  259. package/dist/chunk-taskTest-BjXYpG5p.js +0 -1
  260. package/dist/chunk-templates-D3ouIwHD.js +0 -1
  261. package/dist/chunk-testCases-9jwT_Y7z.js +0 -4
  262. package/dist/chunk-testCases-BcpBPg9L.js +0 -1
  263. package/dist/chunk-tests-CEEXnWOp.js +0 -23
  264. package/dist/chunk-tests-CRVosdWp.js +0 -1
  265. package/dist/chunk-wrapper-B2WnOIoB.js +0 -3
  266. package/dist/chunk-wrapper-DiKCKZti.js +0 -1
  267. package/dist/web/assets/BpmnDocument-C247Rqim.js +0 -27
  268. package/dist/web/assets/CmmnDocument-Dj48bsUd.js +0 -17
  269. package/dist/web/assets/DmnDocument-Cb9Zi9fS.js +0 -41
  270. package/dist/web/assets/FormDocument-DoZaxWd-.js +0 -32
  271. package/dist/web/assets/FormDocument-URLcKn84.css +0 -1
  272. package/dist/web/assets/FormStepView-D8MFcpeI.js +0 -1
  273. package/dist/web/assets/PolicyDialog-CGdglmDn.js +0 -1
  274. package/dist/web/assets/ScriptPane-T6M5f6fc.js +0 -2
  275. package/dist/web/assets/ShortcutsDialog-BAoL9EHu.js +0 -1
  276. package/dist/web/assets/SourceDocument-C9KIzBA5.js +0 -1
  277. package/dist/web/assets/TemplateDocument-CNt2turg.js +0 -7
  278. package/dist/web/assets/TextDocument-CtkHoEqN.js +0 -1
  279. package/dist/web/assets/Viewer-DZske1C5.js +0 -4
  280. package/dist/web/assets/apply-nnKP9HIM.js +0 -1
  281. package/dist/web/assets/dist--PmHUHDp.js +0 -1
  282. package/dist/web/assets/dist-BoPrKCf2.js +0 -5
  283. package/dist/web/assets/dist-C1m02xAO.js +0 -1
  284. package/dist/web/assets/dist-CLqJMzT-.js +0 -1
  285. package/dist/web/assets/dist-D3jqq0XS.js +0 -1
  286. package/dist/web/assets/dist-DA-9F0U9.js +0 -1
  287. package/dist/web/assets/dist-DojzF5q2.js +0 -6
  288. package/dist/web/assets/dist-yvjzrXXf.js +0 -23
  289. package/dist/web/assets/dmn-DwdcYXGr.js +0 -3
  290. package/dist/web/assets/duplicate-D-ilQqKz.js +0 -342
  291. package/dist/web/assets/formChecks-CGox1z7R.js +0 -1
  292. package/dist/web/assets/frontend-Qq5hBH0U.js +0 -1
  293. package/dist/web/assets/index.es-CcNNw3VB.js +0 -78
  294. package/dist/web/assets/moddle-DJxj0oEU.js +0 -1
  295. package/dist/web/assets/platform-BLPhsye9.js +0 -2
  296. package/dist/web/assets/samples-oeXBsJ9Y.js +0 -1
  297. package/dist/web/assets/sharedReader-Bopy7Uk9.js +0 -1
  298. package/dist/web/assets/testCaseRuns-B_XdqGFh.js +0 -1
  299. package/dist/web/assets/ui-BTKMbWYG.js +0 -1
  300. package/dist/web/assets/web-FzNBw1kZ.css +0 -1
  301. package/dist/web/assets/web-jPMZVwbQ.js +0 -982
  302. package/dist/web/assets/xml-DTgZ-B-l.js +0 -1
@@ -0,0 +1,95 @@
1
+ import{s as e,t}from"./chunk-analyze-DgQqzEgb.js";import{n}from"./chunk-codeLinks-BrGduhsm.js";import{a as r,c as i,d as a,f as o,l as s,m as c,r as l,s as u,u as d}from"./chunk-penstockCli-C41P_G7i.js";import{n as f,t as p}from"./chunk-diagrams-CtGMGTa8.js";import{t as m}from"./chunk-list-XuNpvC6j.js";import{r as h}from"./chunk-translator-DNm9zRpP.js";import{t as ee}from"./chunk-project-COaBZhMt.js";import{c as te}from"./chunk-variableChecks-CBDpmI4d.js";import{d as ne,r as re}from"./chunk-model-BulEKnY1.js";import{a as ie,i as ae,n as oe,o as se,r as ce,s as le,t as ue}from"./chunk-dmnTests-BzNA-u2k.js";import{t as de}from"./chunk-sections-Co5ovFf4.js";import{r as g}from"./chunk-commands-B8YVT41b.js";import{a as fe,r as _,t as v}from"./chunk-context-rCJvBM9p.js";import{n as pe}from"./chunk-apiTemplates-BOGIiYej.js";import{n as me}from"./chunk-template-Bh7oqbPl.js";import{t as he}from"./chunk-apiTemplatesPath-vIrQ4ODR.js";import{a as y,r as ge,t as _e}from"./chunk-features-C6o8of19.js";import{n as ve,r as ye}from"./chunk-command-vH1_y5F0.js";import{r as be,s as xe,u as Se}from"./chunk-editPreview-DCUnMkTU.js";import{r as b}from"./chunk-types-mxHL9XQt.js";import{u as x}from"./chunk-codeFactSet-DiAYqvbb.js";import{a as Ce,o as we,r as Te,t as Ee}from"./chunk-import-Dh3az4BC.js";import{n as De}from"./chunk-version-CdS8_QQd.js";import{n as Oe,t as ke}from"./chunk-project-lO_6DX8G.js";import{t as Ae}from"./chunk-atomicWrite-C6J1gDtO.js";import{c as je}from"./chunk-engine-CxgdJ2wO.js";import{r as S}from"./chunk-xml-rMelkRIV.js";import{c as Me}from"./chunk-moddle-D3Ym38EZ.js";import{r as C}from"./chunk-migrate-DwWg0k5_.js";import{n as Ne}from"./chunk-taskTest-DWoME1mY.js";import{l as Pe}from"./chunk-testCases-BwimUfDC.js";import{t as Fe}from"./chunk-diff-Dp3fUALc.js";import{t as Ie}from"./chunk-drawing-MbILUK8j.js";import{n as Le}from"./chunk-export-kt3sBTZu.js";import{a as Re,f as ze,p as Be}from"./chunk-git-57LoLvY3.js";import{t as Ve}from"./chunk-report-BxZNhZ_G.js";import{n as He}from"./chunk-say-CP1IyOSv.js";import{u as Ue}from"./chunk-license-BG88gpDZ.js";import{n as We}from"./chunk-aiVerify-DPNBNhx4.js";import{a as Ge,o as Ke,r as qe}from"./chunk-receiptStore-DhROtI2h.js";import{i as Je,n as Ye,r as Xe,t as Ze}from"./chunk-receiptSnapshot-CHSk3_4N.js";import{a as Qe}from"./chunk-build-BsqW8Yp8.js";import{t as $e}from"./chunk-receiptDeps-B7MehyHT.js";import{t as et}from"./chunk-systemError-n2E6isvg.js";import{s as tt}from"./chunk-failure-BRyRvObj.js";import{_ as w,v as T}from"./chunk-load-rfn3E0t5.js";import{d as nt,i as rt,r as it,s as at,u as ot,y as E}from"./chunk-refactor-CO3qyIEv.js";import D from"node:path";import{tmpdir as O}from"node:os";import{closeSync as st,existsSync as ct,fsyncSync as lt,linkSync as ut,lstatSync as dt,mkdirSync as ft,mkdtempSync as pt,openSync as mt,readFileSync as k,readdirSync as ht,realpathSync as A,renameSync as gt,rmSync as j,statSync as M,unlinkSync as _t,writeFileSync as N}from"node:fs";import{randomBytes as vt}from"node:crypto";import{createInterface as yt}from"node:readline";import{fileURLToPath as bt,pathToFileURL as xt}from"node:url";function P(e,t){return[e.slice(0,t),Math.max(0,e.length-t)]}function St(e){return{name:e.name,where:e.where,...e.sample?{sample:e.sample}:{}}}function Ct(e,t){let n=/* @__PURE__ */ new Map;for(let t of e)for(let e of t.model.workers){let t=`${e.kind}:${e.value}`,r=n.get(t);n.set(t,{kind:e.kind,value:e.value,elements:(r?.elements??0)+1})}let r=[...new Set(e.flatMap(e=>e.model.processes.map(e=>e.id)))].sort(),i=e.flatMap(e=>e.model.decisions.map(e=>({id:e.id,outputs:[...e.outputs]}))).sort((e,t)=>e.id<t.id?-1:1),[a,o]=P([...n.values()].sort((e,t)=>e.value<t.value?-1:1),t),[s,c]=P(r,t),[l,u]=P(i,t);return{jobTypes:a,processes:s,decisions:l,omitted:{jobTypes:o,processes:c,decisions:u}}}async function wt(e,t,n,r={}){let i=r.limit??50,a=[.../* @__PURE__ */ new Set([...p(e,[`process`,`decision`]),t])],o=await new ee().build(a.map(e=>({path:e,text:k(e,`utf8`)})),null,{focus:t}),s=o.diagrams.find(e=>e.path===t),c=s?.model.elements.find(e=>e.id===n);if(!s||!c){let e=(s?.model.elements??[]).map(e=>e.id);throw Error(h(`app.cli.mcp.noElement`,{file:t,id:n,ids:e.length>0?m(e.slice(0,i)):h(`app.cli.mcp.nothing`)}))}let l=te({model:{variables:[...s.variables]},order:s.order,types:[]},n,{wholeProcess:!0}),u=s.elementNames,d=s.variables.filter(e=>e.elementId===n);return{element:{id:c.id,type:c.type,...c.name?{name:c.name}:{}},process:c.processId??s.model.processes[0]?.id??null,inScope:l.variables.map(e=>({name:e.name,type:e.type,certainty:e.certainty,local:e.writers.every(e=>e.elementId===n),writtenBy:e.writers.map(e=>({element:e.elementId,...u.get(e.elementId)?{name:u.get(e.elementId)}:{},where:e.where}))})),startVariablesUnknown:l.startVariablesUnknown,reads:d.filter(e=>!e.writes).map(St),writes:d.filter(e=>e.writes).map(St),jobTypes:s.model.workers.filter(e=>e.elementId===n).map(e=>({kind:e.kind,value:e.value})),project:Ct(o.diagrams,i)}}const F=[`element`,`variable`,`message`,`decision`,`process`,`form-field`];function I(e,t){let n=null;for(let r of t){if(!r)continue;let t=r.toLowerCase(),i=t===e?0:t.startsWith(e)?1:t.includes(e)?2:null;i!==null&&(n===null||i<n)&&(n=i)}return n}async function Tt(e,t,n={}){let r=t.trim().toLowerCase(),i=new Set(n.kinds??F),a=Math.max(1,n.limit??50),o=[],s=[],c=(e,t)=>{e!==null&&i.has(t.kind)&&o.push({rank:e,hit:t})};for(let t of p(e,[`process`,`decision`,`form`])){let e;try{e=await re(t,k(t,`utf8`))}catch{s.push(t);continue}for(let n of e.processes)c(I(r,[n.id,n.name]),{kind:`process`,id:n.id,...n.name?{name:n.name}:{},file:t});for(let n of e.elements)c(I(r,[n.id,n.name]),{kind:`element`,id:n.id,...n.name?{name:n.name}:{},type:n.type,file:t,...n.processId?{process:n.processId}:{}});for(let n of e.messages)c(I(r,[n.id,n.name]),{kind:`message`,id:n.id,...n.name?{name:n.name}:{},file:t});for(let n of e.decisions)c(I(r,[n.id,n.name,...n.outputs]),{kind:`decision`,id:n.id,...n.name?{name:n.name}:{},file:t,outputs:n.outputs});let n=/* @__PURE__ */ new Map;for(let t of e.variables){let e=n.get(t.name)??{writtenBy:/* @__PURE__ */ new Set,readBy:/* @__PURE__ */ new Set};(t.writes?e.writtenBy:e.readBy).add(t.elementId),n.set(t.name,e)}for(let[e,i]of n)c(I(r,[e]),{kind:`variable`,id:e,file:t,writtenBy:[...i.writtenBy].sort(),readBy:[...i.readBy].sort()});for(let n of e.formKeys)c(I(r,[n]),{kind:`form-field`,id:n,file:t})}o.sort((e,t)=>e.rank-t.rank||(e.hit.file<t.hit.file?-1:+(e.hit.file>t.hit.file))||(e.hit.id<t.hit.id?-1:+(e.hit.id>t.hit.id)));let l=o.slice(0,a).map(e=>e.hit);return{query:t,total:o.length,shown:l.length,hits:l,unreadable:s}}const Et=e=>(e??``).replace(/^#/,``),L=e=>e&&e.trim()?e.trim():null;function Dt(e){let t=(e,t)=>(e??[]).map(e=>Et(t(e)?.href)).filter(e=>e!==``);return{decisions:t(e.informationRequirement,e=>e.requiredDecision),inputData:t(e.informationRequirement,e=>e.requiredInput),knowledge:t(e.knowledgeRequirement,e=>e.requiredKnowledge),sources:t(e.authorityRequirement,e=>e.requiredAuthority??e.requiredDecision??e.requiredInput)}}async function Ot(e){let t=await ne(e),n=t.rootElement,r=new Map((await le(t.xml)).map(e=>[e.decisionId,e])),i=n.drgElement??[],a=i.filter(e=>e.$type===`dmn:Decision`&&e.id).map(e=>{let t=r.get(e.id),n=e.decisionLogic,i=n?.$type===`dmn:DecisionTable`?`decisionTable`:n?.$type===`dmn:LiteralExpression`?`literalExpression`:`other`;return{id:e.id,name:L(e.name)??e.id,logic:i,...t?{hitPolicy:t.hitPolicy,...t.aggregation?{aggregation:t.aggregation}:{}}:{},inputs:t?.inputs??[],outputs:t?.outputs??[],rules:t?.rules??[],...i===`literalExpression`&&L(n?.text)?{expression:L(n?.text)}:{},requires:Dt(e)}}),o=e=>i.filter(t=>t.$type===e&&t.id).map(e=>({id:e.id,name:L(e.name)??e.id}));return{kind:`decision`,id:L(n.id),name:L(n.name),decisions:a,inputData:o(`dmn:InputData`),knowledge:o(`dmn:BusinessKnowledgeModel`)}}function kt(e){let t=JSON.parse(e),n=[],r=(e,t,i)=>{if(!(i>200))for(let a of e){if(typeof a!=`object`||!a||Array.isArray(a))continue;let e=typeof a.type==`string`?a.type:`unknown`,o=L(a.label)??L(a.text),s=Array.isArray(a.values)?a.values.filter(e=>typeof e==`object`&&!!e):[];if(n.push({id:L(a.id),type:e,key:L(a.key),label:o,group:t,required:a.validate?.required===!0,options:s.map(e=>typeof e.value==`string`?e.value:JSON.stringify(e.value)),isInput:de.has(e)}),Array.isArray(a.components)){let n=L(a.path)??L(a.key)??o??e;r(a.components,[...t,n],i+1)}}};return r(Array.isArray(t?.components)?t.components:[],[],0),{kind:`form`,id:typeof t?.id==`string`?t.id:null,type:typeof t?.type==`string`?t.type:null,components:n}}async function At(e){let t=k(e,`utf8`);return/\.dmn$/i.test(e)?Ot(t):kt(t)}async function jt(e,t){let n=[];for(let r of p(e,[`process`]))try{let e=await re(r,k(r,`utf8`));for(let i of t(e))n.push({file:r,element:i})}catch{continue}return n}async function Mt(e,t,n){let r=await At(t);if(r.kind===`decision`){let i=r.decisions.find(e=>e.id===n);if(!i)throw Error(Nt(t,n,r.decisions.map(e=>e.id)));return{element:{id:i.id,type:`decision`,name:i.name},decision:i,requiredBy:r.decisions.filter(e=>e.requires.decisions.includes(i.id)).map(e=>e.id),usedBy:await jt(e,e=>e.decisionUses.filter(e=>e.decisionId===i.id).map(e=>e.elementId))}}let i=r.components.find(e=>e.id===n||e.key===n);if(!i)throw Error(Nt(t,n,r.components.map(e=>e.key??e.id??``).filter(e=>e!==``)));let a=r.id;return{element:{id:i.key??i.id??n,type:i.type,...i.label?{name:i.label}:{}},component:i,requiredBy:[],usedBy:a===null?[]:await jt(e,e=>e.formUses.filter(e=>e.formId===a).map(e=>e.elementId))}}function Nt(e,t,n){return h(`app.cli.mcp.noElement`,{file:e,id:t,ids:n.length>0?m(n.slice(0,50)):h(`app.cli.mcp.nothing`)})}function R(e){let t=je(e);return t===`camunda-7`||t===`operaton`||t===`cib-seven`?t:Lt(e)?`camunda-7`:`camunda-8`}function z(e,t){let n=e.replace(/\.[^.]+$/,``).replace(/[^A-Za-z0-9_.-]+/g,`_`).replace(/^[^A-Za-z_]+/,``);return n?`${t}_${n}`:`${t}_1`}function B(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}function Pt(e,t){let n=a(e),r=z(t,`Process`);return`<?xml version="1.0" encoding="UTF-8"?>
2
+ <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" ${n.namespaces} xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" modeler:executionPlatform="${n.name}" modeler:executionPlatformVersion="${n.version}">
3
+ <bpmn:process id="${r}" name="${B(t.replace(/\.[^.]+$/,``))}" isExecutable="true"${u(e).process}>
4
+ <bpmn:startEvent id="StartEvent_1" />
5
+ </bpmn:process>
6
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
7
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="${r}">
8
+ <bpmndi:BPMNShape id="StartEvent_1_di" bpmnElement="StartEvent_1">
9
+ <dc:Bounds x="182" y="102" width="36" height="36" />
10
+ </bpmndi:BPMNShape>
11
+ </bpmndi:BPMNPlane>
12
+ </bpmndi:BPMNDiagram>
13
+ </bpmn:definitions>
14
+ `}function Ft(e,t){let n=a(e),r=z(t,`Decision`),i=B(t.replace(/\.[^.]+$/,``)),o=c(e);return`<?xml version="1.0" encoding="UTF-8"?>
15
+ <definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/" xmlns:dmndi="https://www.omg.org/spec/DMN/20191111/DMNDI/" xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/"${o.namespace} xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1" name="${i}" namespace="${s(e)}" modeler:executionPlatform="${n.name}" modeler:executionPlatformVersion="${n.version}">
16
+ <decision id="${r}" name="${i}"${o.attribute}>
17
+ <decisionTable id="DecisionTable_1">
18
+ <input id="Input_1">
19
+ <inputExpression id="InputExpression_1" typeRef="string">
20
+ <text></text>
21
+ </inputExpression>
22
+ </input>
23
+ <output id="Output_1" typeRef="string" />
24
+ </decisionTable>
25
+ </decision>
26
+ <dmndi:DMNDI>
27
+ <dmndi:DMNDiagram id="DMNDiagram_1">
28
+ <dmndi:DMNShape id="DMNShape_1" dmnElementRef="${r}">
29
+ <dc:Bounds height="80" width="180" x="160" y="100" />
30
+ </dmndi:DMNShape>
31
+ </dmndi:DMNDiagram>
32
+ </dmndi:DMNDI>
33
+ </definitions>
34
+ `}function It(e,t){let n=a(e);return`${JSON.stringify({components:[],type:`default`,id:z(t,`Form`),executionPlatform:n.name,executionPlatformVersion:n.version,schemaVersion:18},null,2)}\n`}function Lt(e){let t=je(e);return t===`flowable`||t===`activiti`?t:null}function Rt(e,t){let n=z(t,`Process`);return`<?xml version="1.0" encoding="UTF-8"?>
35
+ <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:${e}="${Me[e]}" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn">
36
+ <bpmn:process id="${n}" name="${B(t.replace(/\.[^.]+$/,``))}" isExecutable="true">
37
+ <bpmn:startEvent id="StartEvent_1" />
38
+ </bpmn:process>
39
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
40
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="${n}">
41
+ <bpmndi:BPMNShape id="StartEvent_1_di" bpmnElement="StartEvent_1">
42
+ <dc:Bounds x="182" y="102" width="36" height="36" />
43
+ </bpmndi:BPMNShape>
44
+ </bpmndi:BPMNPlane>
45
+ </bpmndi:BPMNDiagram>
46
+ </bpmn:definitions>
47
+ `}function V(e,t,n,a){let s=Lt(n);if(s&&e===`bpmn`)return t===`example`?r(s):Rt(s,a);let c=R(n);return t===`example`?e===`bpmn`?o(c):e===`dmn`?i(c):d(c):e===`bpmn`?Pt(c,a):e===`dmn`?Ft(c,a):It(c,a)}var H=class extends Error{};const zt=[`UNIQUE`,`FIRST`,`PRIORITY`,`ANY`,`COLLECT`,`RULE ORDER`,`OUTPUT ORDER`],Bt=[`string`,`number`,`boolean`,`integer`,`long`,`double`,`date`,`time`,`dateTime`],Vt=[`textfield`,`textarea`,`number`,`checkbox`,`checklist`,`radio`,`select`,`taglist`,`datetime`],Ht=[`checklist`,`radio`,`select`,`taglist`],Ut=/^[A-Za-z_][\w.-]*$/;function U(e,t){throw new H(h(`app.cli.create.shouldBe`,{where:e,what:t}))}function W(e,t,n){if(typeof e!=`object`||!e||Array.isArray(e))return U(t,h(`app.cli.create.anObject`));for(let r of Object.keys(e))if(!n.includes(r))throw new H(h(`app.cli.create.unknownKey`,{where:t,key:r,allowed:n.join(`, `)}));return e}function G(e,t,n){return e===void 0&&!n?[]:!Array.isArray(e)||n&&e.length===0?U(t,h(`app.cli.create.aList`)):e}function K(e,t,n=!0){if(e!==void 0||n)return typeof e!=`string`||n&&e.trim()===``?U(t,h(`app.cli.create.someText`)):e}function q(e,t,n,r=!1){if(e!==void 0||r)return typeof e!=`string`||!n.includes(e)?U(t,h(`app.cli.create.oneOf`,{list:n.join(`, `)})):e}function Wt(e,t,n){let r=G(e,t,!0);return r.length===n?r.map((e,n)=>K(e,`${t}[${n}]`,!1)??``):U(t,h(`app.cli.create.entries`,{count:n}))}function Gt(e,t,n,r){let i=W(n,`spec`,[`hitPolicy`,`inputs`,`outputs`,`rules`]),a=q(i.hitPolicy,`spec.hitPolicy`,zt),o=G(i.inputs,`spec.inputs`,!0).map((e,t)=>{let n=`spec.inputs[${t}]`,r=W(e,n,[`label`,`expression`,`typeRef`]);return{label:K(r.label,`${n}.label`,!1),expression:K(r.expression,`${n}.expression`),typeRef:q(r.typeRef,`${n}.typeRef`,Bt)??`string`}}),s=G(i.outputs,`spec.outputs`,!0).map((e,t)=>{let n=`spec.outputs[${t}]`,r=W(e,n,[`name`,`label`,`typeRef`]);return{name:K(r.name,`${n}.name`),label:K(r.label,`${n}.label`,!1),typeRef:q(r.typeRef,`${n}.typeRef`,Bt)??`string`}}),c=G(i.rules,`spec.rules`,!1).map((e,t)=>{let n=`spec.rules[${t}]`,r=W(e,n,[`when`,`then`,`description`]);return{when:Wt(r.when,`${n}.when`,o.length),then:Wt(r.then,`${n}.then`,s.length),description:K(r.description,`${n}.description`,!1)}}),l=(e,t)=>t?` ${e}="${B(t)}"`:``,u=` <decisionTable id="DecisionTable_1"${a&&a!==`UNIQUE`?` hitPolicy="${a}"`:``}>
48
+ ${o.map((e,t)=>` <input id="Input_${t+1}"${l(`label`,e.label)}>
49
+ <inputExpression id="InputExpression_${t+1}" typeRef="${e.typeRef}">
50
+ <text>${S(e.expression)}</text>
51
+ </inputExpression>
52
+ </input>`).join(`
53
+ `)}
54
+ ${s.map((e,t)=>` <output id="Output_${t+1}"${l(`label`,e.label)} name="${B(e.name)}" typeRef="${e.typeRef}" />`).join(`
55
+ `)}
56
+ ${c.map((e,t)=>` <rule id="Rule_${t+1}">${e.description?`\n <description>${S(e.description)}</description>`:``}
57
+ ${e.when.map((e,n)=>` <inputEntry id="InputEntry_${t+1}_${n+1}">\n <text>${S(e)}</text>\n </inputEntry>`).join(`
58
+ `)}
59
+ ${e.then.map((e,n)=>` <outputEntry id="OutputEntry_${t+1}_${n+1}">\n <text>${S(e)}</text>\n </outputEntry>`).join(`
60
+ `)}
61
+ </rule>`).join(`
62
+ `)}
63
+ </decisionTable>`.replace(/\n\n+/g,`
64
+ `),d=Ft(e,t),f=d.indexOf(` <decisionTable`),p=d.indexOf(`</decisionTable>`)+16,m=r?.trim()?`\n <description>${S(r.trim())}</description>`:``,h=d.slice(0,f)+u+d.slice(p);return m?h.replace(/(<decision [^>]*>)/,`$1${m}`):h}function Kt(e,t,n){let r=W(n,`spec`,[`fields`]),i=/* @__PURE__ */ new Set,a=G(r.fields,`spec.fields`,!0).map((e,t)=>{let n=`spec.fields[${t}]`,r=W(e,n,[`type`,`key`,`label`,`text`,`options`,`required`]),a=q(r.type,`${n}.type`,[...Vt,`text`,`button`],!0),o=`Field_${t+1}`;if(a===`text`)return{type:a,id:o,text:K(r.text,`${n}.text`)};if(a===`button`)return{type:a,id:o,label:K(r.label,`${n}.label`),action:`submit`};let s=K(r.key,`${n}.key`);if(!Ut.test(s))return U(`${n}.key`,h(`app.cli.create.aName`));if(i.has(s))return U(`${n}.key`,h(`app.cli.create.unique`,{key:s}));i.add(s);let c={type:a,id:o,key:s,label:K(r.label,`${n}.label`,!1)??s};if(Ht.includes(a))c.values=G(r.options,`${n}.options`,!0).map((e,t)=>{let r=W(e,`${n}.options[${t}]`,[`label`,`value`]);return{label:K(r.label,`${n}.options[${t}].label`),value:K(r.value,`${n}.options[${t}].value`)}});else if(r.options!==void 0)return U(`${n}.options`,h(`app.cli.create.onlyChoices`));if(r.required!==void 0){if(typeof r.required!=`boolean`)return U(`${n}.required`,h(`app.cli.create.trueOrFalse`));r.required&&(c.validate={required:!0})}return c}),o=JSON.parse(It(e,t));return`${JSON.stringify({...o,components:a},null,2)}\n`}async function qt(e,t,n){let r,i,a;if(t===null){if(!Be(n))throw Error(h(`app.cli.mcp.badRevision`,{ref:n}));let t=Re(D.dirname(e),n,`./${D.basename(e)}`);if(t===null)throw Error(h(`app.cli.mcp.noCommittedVersion`,{file:e,ref:n}));r=t,i=e,a={before:`${n}:${_(e)}`,after:_(e)}}else r=e,i=t,a={before:_(e),after:_(t)};try{let e=await Fe(r,i,!0);if(!e.ok||!e.summary)throw Error(e.lines.join(`
65
+ `));let t=t=>e.summary.entries.filter(e=>e.change===t).map(({id:e,type:t,name:n})=>({id:e,type:t,...n?{name:n}:{}})),n=t(`added`),o=t(`removed`),s=t(`changed`),c=e.summary.movedIds;return{...a,identical:n.length+o.length+s.length+c.length===0,added:n,removed:o,changed:s,moved:c}}finally{ze()}}async function Jt(e,t){let{measureDiagram:n}=await import(`./chunk-diagram-jfVu0sT3.js`),r=pt(D.join(O(),`penstock-layout-`));try{let i=D.join(r,`laid-out.bpmn`),a=k(e,`utf8`),o=await n(e,{outPath:i}),s=k(i,`utf8`),c=s!==a,l=c?await Fe(e,i,!0):null,u=l?.summary?.movedIds??[],d=(l?.summary?.entries??[]).map(({change:e,id:t,type:n})=>({change:e,id:t,type:n})),f=!1;if(c&&!t){if(k(e,`utf8`)!==a)throw Error(`${h(`app.cli.edit.changedWhileEditing`)} ${h(`app.cli.nothingWritten`)}`);Ae(e,s),f=!0}return{file:e,dryRun:t,wrote:f,summary:h(c?f?`app.output.reflowedLayout`:`app.cli.mcp.wouldReflow`:`app.output.noChange`),moved:u,structuralChanges:d,defectsAfter:o.defects.map(e=>`${e.kind}: ${e.detail}`)}}finally{j(r,{recursive:!0,force:!0})}}async function Yt(e,t){let n=[],r=await Pe(e,{teamcity:!1,generate:!1,junit:!1,write:e=>n.push(e),confirm:void 0,stepTimeoutMs:t===void 0?void 0:t*1e3}),i=[...n,...r.lines].join(`
66
+ `).trim();if(!r.ok)throw Error(i);return i}async function Xt(e,t){let n=[],r=t.hold?{kind:`hold`}:t.error===void 0?{kind:`complete`,variables:t.complete}:{kind:`error`,errorCode:t.error},i=await Ne(e,{element:t.element,variables:t.variables,mode:r,process:t.process,write:e=>n.push(e),confirm:void 0,stepTimeoutMs:t.timeoutSeconds===void 0?void 0:t.timeoutSeconds*1e3}),a=[...n,...i.lines].join(`
67
+ `).trim();if(!i.ok)throw Error(a);return a}async function Zt(e,t,n,r){if(t!==`svg`&&t!==`png`)throw Error(h(`app.cli.export.unknownFormat`,{format:String(t)}));if(n!==null){let r=pt(D.join(O(),`penstock-export-`));try{let i=await Le([e],t,r);if(!i.ok)throw Error(i.lines.join(`
68
+ `));ft(n,{recursive:!0});for(let e of ht(r)){let t=D.join(n,`.${e}.${vt(6).toString(`hex`)}.tmp`);N(t,k(D.join(r,e)),{flag:`wx`}),gt(t,D.join(n,e))}return{text:i.lines.map(e=>e.replaceAll(r,n)).join(`
69
+ `)}}finally{j(r,{recursive:!0,force:!0})}}if(t===`svg`){let{svg:t,skipped:n}=await Ie(k(e,`utf8`));if(t.length>r)throw Error(h(`app.cli.mcp.imageTooLarge`,{size:t.length}));return{text:[t,...n.map(e=>h(`app.cli.export.notDrawn`,{element:e}))].join(`
70
+ `)}}let i=pt(D.join(O(),`penstock-image-`));try{let t=await Le([e],`png`,i);if(!t.ok)throw Error(t.lines.join(`
71
+ `));let n=k(D.join(i,`${Oe(e)}.png`)).toString(`base64`);return{text:h(`app.cli.mcp.pngReturned`,{file:_(e)}),image:{data:n,mimeType:`image/png`}}}finally{j(i,{recursive:!0,force:!0})}}async function Qt(e,t,n){let r=await C(`analyze`,e,{format:`json`,failOn:`error`,baseline:!1,updateBaseline:!1,dryRun:!1,verbose:n,target:t}),i=r.lines.join(`
72
+ `);if(r.refused===!0||!i.startsWith(`{`)){if(r.ok)return i;throw Error(i)}return i}async function $t(e,t){let n=await C(`apply`,e,{format:`json`,failOn:`error`,baseline:!1,updateBaseline:!1,dryRun:!t.write,verbose:!1,target:t.target,workers:t.workers,write:t.write,...t.only?{only:t.only}:{},...t.exclude?{exclude:t.exclude}:{}}),r=n.lines.join(`
73
+ `);if(r.startsWith(`{`)||n.ok)return r;throw Error(r)}async function en(e,t){let n=(await(await import(`./chunk-connections-Drr67X9U.js`)).connectionsCommand(e,{environment:t.environment,against:t.against,format:`json`})).lines.join(`
74
+ `);if(n.startsWith(`{`))return n;throw Error(n)}async function tn(e,t){let n=(await(await import(`./chunk-promotion-CTMPjXjZ.js`)).driftCommand(e,{environment:t.environment,against:t.against,format:`json`})).lines.join(`
75
+ `),r=JSON.parse(n);if(r.report===null)throw Error(r.refused.join(`
76
+ `));return n}async function nn(e){let t=(await(await import(`./chunk-agents-CZJoU2u2.js`)).agentsCommand([e],{write:!1,format:`json`})).lines.join(`
77
+ `);if(t.startsWith(`{`))return t;throw Error(t)}async function rn(e,t){let n=await C(`agents`,e,{format:`json`,failOn:`error`,baseline:!1,updateBaseline:!1,dryRun:!t,verbose:!1,write:t}),r=n.lines.join(`
78
+ `);if(r.startsWith(`{`)||n.ok)return r;throw Error(r)}async function an(e,t){let n=(await(await import(`./chunk-incident-LJe2-ohi.js`)).incidentCommand([`scenario`,t.key,e],{write:t.write,run:t.run,format:`json`,inject:{confine:t.confine}})).lines.join(`
79
+ `);if(n.startsWith(`{`))return n;throw Error(n)}async function on(e,t){let n=await(await import(`./chunk-apiTemplates-Cl_z63FA.js`)).apiTemplatesCommand(e,{out:t.out,write:t.write,format:`json`,secretPrefix:t.secretPrefix}),r=n.lines.join(`
80
+ `);if(n.ok)return r;throw Error(r)}const sn=/\.(bpmn|dmn|form)$/i;function cn(e){if(typeof e!=`object`||!e||Array.isArray(e))throw new H(h(`app.cli.create.shouldBe`,{where:`spec`,what:h(`app.cli.create.anObject`)}));let t=e;for(let e of Object.keys(t))if(e!==`steps`&&e!==`operations`)throw new H(h(`app.cli.create.unknownKey`,{where:`spec`,key:e,allowed:`steps, operations`}));if(t.steps===void 0==(t.operations===void 0))throw new H(h(`app.cli.create.oneOfStepsOperations`));if(t.operations!==void 0)return Array.isArray(t.operations)?t.operations:[t.operations];if(!Array.isArray(t.steps)||t.steps.length===0)throw new H(h(`app.cli.create.shouldBe`,{where:`spec.steps`,what:h(`app.cli.create.aList`)}));let n=`StartEvent_1`;return t.steps.map((e,t)=>{let r=`spec.steps[${t}]`;if(typeof e!=`object`||!e||Array.isArray(e))throw new H(h(`app.cli.create.shouldBe`,{where:r,what:h(`app.cli.create.anObject`)}));let i=e;for(let e of Object.keys(i))if(![`element`,`name`,`event`,`id`,`properties`].includes(e))throw new H(h(`app.cli.create.unknownKey`,{where:r,key:e,allowed:`element, name, event, id, properties`}));if(typeof i.element!=`string`||!Object.hasOwn(xe,i.element))throw new H(h(`app.cli.create.shouldBe`,{where:`${r}.element`,what:h(`app.cli.create.oneOf`,{list:Object.keys(xe).join(`, `)})}));let a=typeof i.id==`string`&&i.id!==``?i.id:`Step_${t+1}`,o={op:`add`,element:i.element,after:n,id:a,...i.name===void 0?{}:{name:i.name},...i.event===void 0?{}:{event:i.event},...i.properties===void 0?{}:{properties:i.properties}};return n=a,o})}function ln(e){return D.join(D.dirname(e),`.${D.basename(e)}.${vt(6).toString(`hex`)}.pending${D.extname(e)}`)}async function un(e,t,n){if(!sn.test(e))throw Error(h(`app.cli.create.badExtension`,{file:e}));let r=f(e);if(r===null)throw Error(h(`app.cli.create.badExtension`,{file:e}));if(dn(e))throw Error(h(`app.cli.create.exists`,{file:e}));ft(D.dirname(e),{recursive:!0});let i=A(D.dirname(e));n(i);let a=D.join(i,D.basename(e));if(dn(a))throw Error(h(`app.cli.create.exists`,{file:a}));let o=t.name?.trim()||D.basename(a).replace(/\.[^.]+$/,``),s=fe(v(a).values.engine)??null,c=ln(a),l;try{if(r===`process`){let e=V(`bpmn`,`empty`,s,o);if(t.spec===void 0&&!t.description)l=e;else{let n=t.spec===void 0?[]:cn(t.spec),r=/<bpmn:process id="([^"]+)"/.exec(e)?.[1];t.description?.trim()&&r&&n.push({op:`set`,id:r,properties:{documentation:t.description.trim()}}),N(c,e,{flag:`wx`});let i=await be(c,n);if(j(c,{force:!0}),!i.ok)throw Error(i.message);l=i.after}}else if(r===`decision`)l=t.spec===void 0&&!t.description?V(`dmn`,`empty`,s,o):Gt(R(s),o,t.spec??{inputs:[{expression:`input`}],outputs:[{name:`output`}]},t.description);else{if(t.description)throw Error(h(`app.cli.create.noDescriptionForForms`));l=t.spec===void 0?V(`form`,`empty`,s,o):Kt(R(s),o,t.spec)}}catch(e){throw j(c,{force:!0}),e instanceof H?Error(`${e.message} ${h(`app.cli.nothingWritten`)}`):e}try{let e=mt(c,`wx`,420);try{N(e,l),lt(e)}finally{st(e)}let t=(await g([c],{format:`json`,baseline:!1,updateBaseline:!1,sections:[`drawing`,`flow`]})).reported.filter(e=>e.severity===`error`);if(t.length>0)throw Error(`${t.map(e=>`${e.rule}: ${e.message}`).join(`
81
+ `)}\n${h(`app.cli.nothingWritten`)}`);let i=(await g([c],{format:`json`,baseline:!1,updateBaseline:!1})).reported.map(({rule:e,severity:t,message:n})=>({rule:e,severity:t,message:n}));n(A(D.dirname(a)));try{ut(c,a)}catch(e){throw e.code===`EEXIST`?Error(h(`app.cli.create.exists`,{file:a})):e}return{file:a,kind:r,wrote:!0,findings:i}}finally{try{_t(c)}catch{j(c,{force:!0})}}}function dn(e){try{return dt(e),!0}catch{return!1}}async function fn(e,t){let n=await C(`verify`,e,{format:`json`,failOn:`error`,baseline:!1,updateBaseline:!1,dryRun:!1,verbose:!1,target:t.target,scenarios:t.scenarios,originalProfile:t.originalProfile,convertedProfile:t.convertedProfile,runUnreviewed:!1}),r=n.lines.join(`
82
+ `);if(n.refused===!0)throw Error(r);return r}function pn(e){if(typeof e!=`object`||!e||Array.isArray(e))return{problem:h(`app.cli.mcp.mustBeObject`,{tool:`test_dmn`,name:`case`})};let t=ae(JSON.stringify({schema:ie,cases:[e]}));return`problems`in t?{problem:He(t.problems)}:{testCase:t.file.cases[0]}}async function mn(e,t){let n=null;if(t.testCase!==void 0){let r=ce(e[0],t.testCase);if(`problem`in r)throw Error(r.problem);n=r.path}let r=[];for(let n of e)r.push(await oe(n,{licensed:t.licensed}));return JSON.stringify({...Ve(r,e=>e),...n===null?{}:{saved:n}},null,2)}function hn(e){return ue(e)}var gn=class{loops=/* @__PURE__ */ new Map;begin(e,t){let n=Ye({files:t.files,folders:t.folders},t.root),r=[...n.files,...n.folders].sort().join(`\0`),i=this.loops.get(r);if(i!==void 0)for(let[e,t]of i.baseline)n.texts.set(e,t);return{snapshot:n,tool:e,layout:t.layout===!0,scenarios:t.scenarios===!0,key:r}}async finish(e){let{changes:t,incomplete:n}=Ze(e.snapshot);if(t.length===0&&!this.loops.has(e.key))return null;let r=e.snapshot.root,i=We(v(r).values),a=_e(await Ue()),o=this.loops.get(e.key),s=o?.attempts??[],c;try{c=await Ke(t,{root:r,source:`mcp`,tool:e.tool,maxAttempts:i.attempts,attempts:s,layoutApplied:e.layout,incomplete:n,scenarios:e.scenarios},$e())}catch(e){if(e instanceof Ge)return null;throw e}let l=Xe(c,s,{repair:a});l.receipt.attempts[l.receipt.attempts.length-1].newErrors>0?this.loops.set(e.key,{attempts:l.receipt.attempts,baseline:o?.baseline??new Map(e.snapshot.texts)}):this.loops.delete(e.key);let u=l.receipt,d=a&&i.keepReceipts&&!l.handBack?qe(r,u):null;return{receipt:a?u:Qe(u),repair:l.handBack?Je(u):null,stored:d}}};const _n=[`2025-06-18`,`2025-03-26`,`2024-11-05`],vn=5e3,yn=1e5,J=[`process`,`decision`,`form`];function bn(e){return e.feature?h(`app.cli.mcp.partOf`,{description:h(e.description),gives:ge(e.feature)}):h(e.description)}var Y=class extends Error{};function X(e,t=yn){return e.length<=t?e:`${e.slice(0,t)}\n${h(`app.cli.mcp.truncated`,{shown:t,total:e.length})}`}function xn(e,t){let n=e.inputSchema.properties??{},r=Object.keys(n),i=Object.keys(t).filter(e=>!r.includes(e));if(i.length===0)return null;let a=r.length>0?m(r):h(`app.cli.mcp.nothing`);return h(`app.cli.mcp.takesNot`,{tool:e.name,list:a,extra:m(i)})}function Sn(e,t){let n=(e.inputSchema.required??[]).filter(e=>t[e]===void 0);return n.length===0?[]:[h(`app.cli.mcp.needs`,{tool:e.name,list:m(n)})]}function Cn(e,t){let n,r=new Promise(e=>{n=setTimeout(e,t)});return Promise.race([e,r]).finally(()=>clearTimeout(n))}function wn(e){let t=e.startsWith(`file://`)?bt(e):e;return T(t)}function Tn(e){if(ke(e)||ct(D.join(e,`.git`)))return!0;try{return p(e).length>0}catch{return!1}}function En(e){let t;try{t=A(e)}catch{throw new Y(h(`app.cli.mcp.noDirectory`,{target:e}))}if(!M(t).isDirectory())throw new Y(h(`app.cli.mcp.notADirectory`,{target:e}));return t}function Z(e,t){if(e!==void 0){if(typeof e!=`string`||!D.isAbsolute(e.trim()))throw new Y(h(`app.cli.mcp.projectMustBeAbsolute`));let n=En(e.trim());if(t!==null&&!w(n,t))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:e}));if(!Tn(n))throw new Y(h(`app.cli.mcp.notAPenstockProject`,{target:e}));return[n]}if(t===null)throw new Y(h(`app.cli.mcp.projectNotGiven`));return t}function Q(e,t,n=[`process`]){if(typeof e!=`string`||!D.isAbsolute(e.trim()))throw new Y(h(`app.cli.mcp.fileMustBeAbsolute`));let r;try{r=A(e.trim())}catch{throw new Y(h(`app.cli.mcp.noFile`,{file:e}))}let i=f(r);if(!M(r).isFile()||i===null||!n.includes(i))throw new Y(h(n.length===1?`app.cli.mcp.notABpmnDiagram`:`app.cli.mcp.notADiagram`,{file:e}));if(t!==null&&!w(r,t))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:e}));return r}function Dn(e,t){let n=t===null?null:t.map(T).find(t=>e.startsWith(t+D.sep))??null,r=D.dirname(e);for(;;){if(ke(r)||ct(D.join(r,`.git`)))return r;let t=D.dirname(r);if(t===r||r===n)return D.dirname(e);r=t}}function On(e){if(e!==void 0){if(!Array.isArray(e)||e.length===0||e.some(e=>!F.includes(e)))throw new Y(h(`app.cli.mcp.mustBeOneOf`,{tool:`search_elements`,name:`kinds`,list:F.join(`, `)}));return e}}function kn(e,t,n){if(e!==void 0){if(typeof e!=`number`||!Number.isInteger(e)||e<1)throw new Y(h(`app.cli.mcp.mustBePositive`,{tool:t,name:n}));return e}}function $(e,t){let n=[];for(let r of Z(e,t)){let e=v(r).root;if(t!==null&&!w(e,t))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:e}));n.push({folders:[e],root:e})}return n}function An(e){if(!e.scope)return e;let t=e.inputSchema;return{...e,inputSchema:{...e.inputSchema,properties:{...t.properties,scenarios:{type:`boolean`,description:h(`app.cli.mcp.param.scenarios`)}}}}}async function jn(e,t,n,r){for(let n of[`apply`,`acknowledge`,`force`])if(t[n]!==void 0&&typeof t[n]!=`boolean`)throw new Y(h(`app.cli.mcp.mustBeTrueOrFalse`,{tool:e,name:n}));if(t.planId!==void 0&&typeof t.planId!=`string`)throw new Y(h(`app.cli.mcp.mustBeText`,{tool:e,name:`planId`}));if(t.apply===!0&&(typeof t.planId!=`string`||t.planId===``))throw new Y(h(`app.refactor.mcp.needsPlanId`,{tool:e}));let[i]=Z(t.project,n()),a=n(),o=v(i).root;if(a!==null&&!w(o,a))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:o}));let s;try{s=await r(o,{apply:t.apply===!0,force:t.force===!0,acknowledge:t.acknowledge===!0,planId:typeof t.planId==`string`?t.planId:void 0})}catch(e){throw new Y(e instanceof Error?e.message:String(e))}if(t.apply===!0&&!s.applied)throw new Y((s.mode===`rename`?ot(s):it(s)).join(`
83
+ `));return JSON.stringify(s,null,2)}function Mn(r){let i={type:`string`,description:h(`app.cli.mcp.param.file`)},a={type:`string`,description:h(`app.cli.mcp.param.anyFile`)},o={type:`string`,description:h(`app.cli.mcp.param.project`)};return[{name:`list_diagrams`,description:`${h(`app.cli.mcp.tool.listDiagrams`)} ${h(`app.cli.mcp.tool.listDiagramsMore`)}`,inputSchema:{type:`object`,additionalProperties:!1,properties:{project:o}},feature:null,call:async e=>{let t=r(),n=Z(e.project,t).flatMap(e=>p(e,J)),i=Array.from(new Set(n)).sort().map(e=>({file:e,kind:f(e)}));return JSON.stringify(i,null,2)}},{name:`show_diagram`,description:`${h(`app.cli.mcp.tool.showDiagram`)} ${h(`app.cli.mcp.tool.showDiagramMore`)}`,inputSchema:{type:`object`,additionalProperties:!1,required:[`file`],properties:{file:a}},feature:null,call:async e=>{let t=Q(e.file,r(),J);try{return f(t)===`process`?JSON.stringify({kind:`process`,...await ye(t)},null,2):JSON.stringify(await At(t),null,2)}catch(e){throw new Y(tt(t,e))}}},{name:`element_context`,description:`${h(`app.cli.mcp.tool.elementContext`)} ${h(`app.cli.mcp.tool.elementContextMore`)}`,inputSchema:{type:`object`,additionalProperties:!1,required:[`file`,`element`],properties:{file:a,element:{type:`string`,description:h(`app.cli.mcp.param.element`)}}},feature:null,call:async e=>{let t=Q(e.file,r(),J);if(typeof e.element!=`string`||e.element.trim()===``)throw new Y(h(`app.cli.mcp.needs`,{tool:`element_context`,list:`element`}));try{let n=Dn(t,r());return f(t)===`process`?JSON.stringify(await wt(n,t,e.element.trim()),null,2):JSON.stringify(await Mt(n,t,e.element.trim()),null,2)}catch(e){throw new Y(e instanceof Error?e.message:String(e))}}},{name:`check_diagram`,description:`${h(`app.cli.mcp.tool.checkDiagram`)} ${h(`app.cli.mcp.tool.checkDiagramMore`)}`,inputSchema:{type:`object`,additionalProperties:!1,required:[`file`],properties:{file:a}},feature:null,call:async e=>{let t=Q(e.file,r(),J),n=await g([t],{format:`json`,baseline:!1,updateBaseline:!1}),i=n.reported;return f(t)===`decision`&&n.flowSkipped?JSON.stringify({findings:i,notice:h(`app.output.flowAnalysisLeftOut`)},null,2):i.length===0?`[]`:JSON.stringify(i,null,2)}},{name:`analyze_flow`,description:h(`app.cli.mcp.tool.analyzeFlow`),inputSchema:{type:`object`,additionalProperties:!1,required:[`file`],properties:{file:i}},feature:`flow-analysis`,call:async e=>JSON.stringify((await t(Q(e.file,r()))).problems,null,2)},{name:`list_scenarios`,description:h(`app.cli.mcp.tool.listScenarios`),inputSchema:{type:`object`,additionalProperties:!1,required:[`file`],properties:{file:i}},feature:`paths`,call:async t=>JSON.stringify(await e(Q(t.file,r())),null,2)},{name:`check_code_links`,description:h(`app.cli.mcp.tool.checkCodeLinks`),inputSchema:{type:`object`,additionalProperties:!1,properties:{project:o}},feature:`code-links`,call:async e=>{let t=r(),i=Z(e.project,t),a=[];for(let e of i){let t=p(e),r=await n(e,t,`json`);if(r.lines[0]){let e=JSON.parse(r.lines[0]);Array.isArray(e)&&a.push(...e)}}return JSON.stringify(a,null,2)}},{name:`edit_diagram`,description:h(`app.cli.mcp.tool.editDiagram`),inputSchema:{type:`object`,additionalProperties:!1,required:[`file`,`operations`],properties:{file:i,operations:Se(),dryRun:{type:`boolean`,description:h(`app.cli.mcp.param.dryRun`)}}},feature:`edit`,scope:e=>{if(e.dryRun===!0)return null;let t=Q(e.file,r());return[{files:[t],root:v(t).root}]},call:async e=>{if(e.dryRun!==void 0&&typeof e.dryRun!=`boolean`)throw new Y(h(`app.cli.mcp.mustBeTrueOrFalse`,{tool:`edit_diagram`,name:`dryRun`}));let t=Q(e.file,r()),n=await ve(t,e.operations,{dryRun:e.dryRun===!0});if(!n.ok)throw new Y(n.lines.join(`
84
+ `));return n.lines.join(`
85
+ `)}},{name:`search_elements`,description:h(`app.cli.mcp.tool.searchElements`),inputSchema:{type:`object`,additionalProperties:!1,required:[`query`],properties:{query:{type:`string`,description:h(`app.cli.mcp.param.query`)},project:o,kinds:{type:`array`,items:{type:`string`,enum:[...F]},description:h(`app.cli.mcp.param.kinds`)},limit:{type:`integer`,minimum:1,description:h(`app.cli.mcp.param.limit`)}}},feature:null,call:async e=>{if(typeof e.query!=`string`||e.query.trim()===``)throw new Y(h(`app.cli.mcp.needs`,{tool:`search_elements`,list:`query`}));let t=On(e.kinds),n=kn(e.limit,`search_elements`,`limit`),i=Z(e.project,r()),a=await Promise.all(i.map(r=>Tt(r,e.query,{kinds:t,limit:n}))),o=/* @__PURE__ */ new Set,s=a.flatMap(e=>e.hits).filter(e=>{let t=`${e.kind}|${e.file}|${e.id}`;return!o.has(t)&&(o.add(t),!0)}),c=a.reduce((e,t)=>e+t.total,0),l=s.slice(0,n??s.length);return JSON.stringify({query:e.query,total:c,shown:l.length,hits:l,unreadable:a.flatMap(e=>e.unreadable)},null,2)}},{name:`diff_diagrams`,description:h(`app.cli.mcp.tool.diffDiagrams`),inputSchema:{type:`object`,additionalProperties:!1,required:[`file`],properties:{file:a,other:{type:`string`,description:h(`app.cli.mcp.param.other`)},ref:{type:`string`,description:h(`app.cli.mcp.param.ref`)}}},feature:null,call:async e=>{if(e.other!==void 0&&e.ref!==void 0)throw new Y(h(`app.cli.mcp.onlyOneOf`,{tool:`diff_diagrams`,first:`other`,second:`ref`}));if(e.ref!==void 0&&typeof e.ref!=`string`)throw new Y(h(`app.cli.mcp.needs`,{tool:`diff_diagrams`,list:`ref`}));let t=Q(e.file,r(),J),n=e.other===void 0?null:Q(e.other,r(),J);return JSON.stringify(await qt(t,n,typeof e.ref==`string`?e.ref:`HEAD`),null,2)}},{name:`export_image`,description:h(`app.cli.mcp.tool.exportImage`),inputSchema:{type:`object`,additionalProperties:!1,required:[`file`],properties:{file:i,format:{type:`string`,enum:[`svg`,`png`],description:h(`app.cli.mcp.param.format`)},out:{type:`string`,description:h(`app.cli.mcp.param.out`)}}},feature:null,call:async e=>{let t=Q(e.file,r()),n=e.format===void 0?`svg`:e.format;if(n!==`svg`&&n!==`png`)throw new Y(h(`app.cli.mcp.mustBeOneOf`,{tool:`export_image`,name:`format`,list:`svg, png`}));let i=null;if(e.out!==void 0){if(typeof e.out!=`string`||!D.isAbsolute(e.out.trim()))throw new Y(h(`app.cli.mcp.outMustBeAbsolute`));i=T(e.out.trim());let t=r();if(t!==null&&!w(i,t))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:e.out}))}let a=await Zt(t,n,i,yn),o=[{type:`text`,text:X(a.text)}];return a.image&&o.push({type:`image`,...a.image}),{content:o}}},{name:`layout_diagram`,description:h(`app.cli.mcp.tool.layoutDiagram`),inputSchema:{type:`object`,additionalProperties:!1,required:[`file`],properties:{file:i,dryRun:{type:`boolean`,description:h(`app.cli.mcp.param.dryRun`)}}},feature:`auto-layout`,scope:e=>{if(e.dryRun===!0)return null;let t=Q(e.file,r());return[{files:[t],root:v(t).root,layout:!0}]},call:async e=>{if(e.dryRun!==void 0&&typeof e.dryRun!=`boolean`)throw new Y(h(`app.cli.mcp.mustBeTrueOrFalse`,{tool:`layout_diagram`,name:`dryRun`}));let t=Q(e.file,r());try{return JSON.stringify(await Jt(t,e.dryRun===!0),null,2)}catch(e){throw new Y(tt(t,e))}}},{name:`run_scenarios`,description:h(`app.cli.mcp.tool.runScenarios`),inputSchema:{type:`object`,additionalProperties:!1,properties:{file:i,project:o,timeout:{type:`integer`,minimum:1,description:h(`app.cli.mcp.param.timeout`)}}},feature:`test-runs`,call:async e=>{if(e.file!==void 0&&e.project!==void 0)throw new Y(h(`app.cli.mcp.onlyOneOf`,{tool:`run_scenarios`,first:`file`,second:`project`}));let t=kn(e.timeout,`run_scenarios`,`timeout`);return Yt(e.file===void 0?Z(e.project,r()):[Q(e.file,r())],t)}},{name:`test_task`,description:h(`app.cli.mcp.tool.testTask`),inputSchema:{type:`object`,additionalProperties:!1,required:[`file`,`element`],properties:{file:i,element:{type:`string`,description:h(`app.cli.mcp.param.element`)},variables:{type:`object`,description:h(`app.cli.mcp.param.variables`)},complete:{type:`object`,description:h(`app.cli.mcp.param.complete`)},error:{type:`string`,description:h(`app.cli.mcp.param.error`)},hold:{type:`boolean`,description:h(`app.cli.mcp.param.hold`)},process:{type:`string`,description:h(`app.cli.mcp.param.process`)},timeout:{type:`integer`,minimum:1,description:h(`app.cli.mcp.param.timeout`)}}},feature:`test-runs`,call:async e=>{if(typeof e.element!=`string`||e.element.trim()===``)throw new Y(h(`app.cli.mcp.mustBeText`,{tool:`test_task`,name:`element`}));for(let t of[`variables`,`complete`]){let n=e[t];if(n!==void 0&&(typeof n!=`object`||!n||Array.isArray(n)))throw new Y(h(`app.cli.mcp.mustBeObject`,{tool:`test_task`,name:t}))}if(e.error!==void 0&&typeof e.error!=`string`)throw new Y(h(`app.cli.mcp.mustBeText`,{tool:`test_task`,name:`error`}));if(e.process!==void 0&&typeof e.process!=`string`)throw new Y(h(`app.cli.mcp.mustBeText`,{tool:`test_task`,name:`process`}));if(e.hold!==void 0&&typeof e.hold!=`boolean`)throw new Y(h(`app.cli.mcp.mustBeTrueOrFalse`,{tool:`test_task`,name:`hold`}));if([e.complete!==void 0,e.error!==void 0,e.hold===!0].filter(Boolean).length>1)throw new Y(h(`app.output.taskTest.oneMode`));let t=kn(e.timeout,`test_task`,`timeout`);return Xt(Q(e.file,r()),{element:e.element.trim(),variables:e.variables,complete:e.complete,error:e.error,hold:e.hold===!0,process:e.process,timeoutSeconds:t})}},{name:`migrate_analyze`,description:h(`app.cli.mcp.tool.migrateAnalyze`),inputSchema:{type:`object`,additionalProperties:!1,properties:{file:a,project:o,target:{type:`string`,enum:[...b],description:h(`app.cli.mcp.param.target`)},verbose:{type:`boolean`,description:h(`app.cli.mcp.param.verbose`)}}},feature:null,call:async e=>{if(e.file!==void 0&&e.project!==void 0)throw new Y(h(`app.cli.mcp.onlyOneOf`,{tool:`migrate_analyze`,first:`file`,second:`project`}));if(e.verbose!==void 0&&typeof e.verbose!=`boolean`)throw new Y(h(`app.cli.mcp.mustBeTrueOrFalse`,{tool:`migrate_analyze`,name:`verbose`}));if(e.target!==void 0&&(typeof e.target!=`string`||!b.includes(e.target)))throw new Y(h(`app.cli.mcp.mustBeOneOf`,{tool:`migrate_analyze`,name:`target`,list:b.join(`, `)}));let t=e.file===void 0?Z(e.project,r()):[Q(e.file,r(),J)],n=r(),i=v(t[0]).root;if(n!==null&&!w(i,n))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:i}));try{return await Qt(t,e.target,e.verbose===!0)}catch(e){throw new Y(e instanceof Error?e.message:String(e))}}},{name:`migrate_apply`,description:h(`app.cli.mcp.tool.migrateApply`),inputSchema:{type:`object`,additionalProperties:!1,properties:{project:o,target:{type:`string`,enum:[...b],description:h(`app.cli.mcp.param.target`)},workers:{type:`string`,enum:[...x],description:h(`app.cli.mcp.param.workers`)},write:{type:`boolean`,description:h(`app.cli.mcp.param.write`)},only:{type:`array`,items:{type:`string`},description:h(`app.cli.mcp.param.migrateOnly`)},exclude:{type:`array`,items:{type:`string`},description:h(`app.cli.mcp.param.migrateExclude`)}}},feature:`migration`,scope:e=>e.write===!0?$(e.project,r()):null,call:async e=>{if(e.write!==void 0&&typeof e.write!=`boolean`)throw new Y(h(`app.cli.mcp.mustBeTrueOrFalse`,{tool:`migrate_apply`,name:`write`}));if(e.target!==void 0&&(typeof e.target!=`string`||!b.includes(e.target)))throw new Y(h(`app.cli.mcp.mustBeOneOf`,{tool:`migrate_apply`,name:`target`,list:b.join(`, `)}));if(e.workers!==void 0&&(typeof e.workers!=`string`||!x.includes(e.workers)))throw new Y(h(`app.cli.mcp.mustBeOneOf`,{tool:`migrate_apply`,name:`workers`,list:x.join(`, `)}));for(let t of[`only`,`exclude`]){let n=e[t];if(n!==void 0&&(!Array.isArray(n)||n.length>2e4||!n.every(e=>typeof e==`string`&&e.length>0&&e.length<=1024)))throw new Y(h(`app.cli.mcp.mustBeTextList`,{tool:`migrate_apply`,name:t}))}let t=Z(e.project,r()),n=r(),i=v(t[0]).root;if(n!==null&&!w(i,n))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:i}));try{return await $t(t,{target:e.target,workers:e.workers,write:e.write===!0,...e.only===void 0?{}:{only:e.only},...e.exclude===void 0?{}:{exclude:e.exclude}})}catch(e){throw new Y(e instanceof Error?e.message:String(e))}}},{name:`migrate_verify`,description:h(`app.cli.mcp.tool.migrateVerify`),inputSchema:{type:`object`,additionalProperties:!1,required:[`convertedProfile`],properties:{project:o,target:{type:`string`,enum:[...b],description:h(`app.cli.mcp.param.target`)},scenarios:{type:`string`,description:h(`app.cli.mcp.param.verifyScenarios`)},originalProfile:{type:`string`,description:h(`app.cli.mcp.param.verifyOriginalProfile`)},convertedProfile:{type:`string`,description:h(`app.cli.mcp.param.verifyConvertedProfile`)}}},feature:`migration-proof`,scope:()=>null,call:async e=>{if(e.target!==void 0&&(typeof e.target!=`string`||!b.includes(e.target)))throw new Y(h(`app.cli.mcp.mustBeOneOf`,{tool:`migrate_verify`,name:`target`,list:b.join(`, `)}));for(let t of[`scenarios`,`originalProfile`,`convertedProfile`])if(e[t]!==void 0&&(typeof e[t]!=`string`||e[t].trim()===``||e[t].length>512))throw new Y(h(`app.cli.mcp.mustBeText`,{tool:`migrate_verify`,name:t}));if(typeof e.convertedProfile!=`string`)throw new Y(h(`app.cli.mcp.mustBeText`,{tool:`migrate_verify`,name:`convertedProfile`}));let t=Z(e.project,r()),n=r(),i=v(t[0]).root;if(n!==null&&!w(i,n))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:i}));try{return await fn(t,{target:e.target,scenarios:e.scenarios,originalProfile:e.originalProfile,convertedProfile:e.convertedProfile})}catch(e){throw new Y(e instanceof Error?e.message:String(e))}}},{name:`test_dmn`,description:h(`app.cli.mcp.tool.testDmn`),inputSchema:{type:`object`,additionalProperties:!1,properties:{file:a,project:o,case:{type:`object`,description:h(`app.cli.mcp.param.dmnCase`)}}},feature:null,scope:e=>{if(e.case===void 0||e.file===void 0)return null;let t=Q(e.file,r(),[`decision`]);return[{files:[se(t)],root:v(t).root}]},call:async e=>{if(e.file!==void 0&&e.project!==void 0)throw new Y(h(`app.cli.mcp.onlyOneOf`,{tool:`test_dmn`,first:`file`,second:`project`}));let t;if(e.case!==void 0){if(e.file===void 0)throw new Y(h(`app.cli.mcp.needs`,{tool:`test_dmn`,list:`file`}));let n=await y(`dmn-tests`);if(n)throw new Y(n.lines.join(`
86
+ `));let r=pn(e.case);if(`problem`in r)throw new Y(`test_dmn: case ${r.problem}`);t=r.testCase}let n=r(),i;if(e.file!==void 0)i=[Q(e.file,n,[`decision`])];else if(i=hn(Z(e.project,n)),i.length===0)throw new Y(h(`app.cli.dmnTests.noFiles`,{targets:String(e.project??n?.join(`, `)??``)}));try{return await mn(i,{licensed:_e(await Ue()),testCase:t})}catch(e){throw new Y(e instanceof Error?e.message:String(e))}}},{name:`connections`,description:h(`app.cli.mcp.tool.connections`),inputSchema:{type:`object`,additionalProperties:!1,properties:{project:o,environment:{type:`string`,description:h(`app.cli.mcp.param.environment`)},against:{type:`string`,description:h(`app.cli.mcp.param.against`)}}},feature:null,call:async e=>{for(let t of[`environment`,`against`])if(e[t]!==void 0&&(typeof e[t]!=`string`||e[t].trim()===``))throw new Y(h(`app.cli.mcp.mustBeText`,{tool:`connections`,name:t}));if(e.against!==void 0){let e=await y(`connections-environments`);if(e)throw new Y(e.lines.join(`
87
+ `))}let t=Z(e.project,r()),n=r(),i=[];for(let r of t){let t=v(r).root;if(n!==null&&!w(t,n))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:t}));try{i.push(JSON.parse(await en(t,{environment:e.environment,against:e.against})))}catch(e){throw new Y(e instanceof Error?e.message:String(e))}}return JSON.stringify(i.length===1?i[0]:i,null,2)}},{name:`drift`,description:h(`app.cli.mcp.tool.drift`),inputSchema:{type:`object`,additionalProperties:!1,properties:{project:o,environment:{type:`string`,description:h(`app.cli.mcp.param.driftEnvironment`)},against:{type:`string`,description:h(`app.cli.mcp.param.driftAgainst`)}}},feature:null,call:async e=>{for(let t of[`environment`,`against`])if(e[t]!==void 0&&(typeof e[t]!=`string`||e[t].trim()===``))throw new Y(h(`app.cli.mcp.mustBeText`,{tool:`drift`,name:t}));if(e.against!==void 0){let e=await y(`promotion`);if(e)throw new Y(e.lines.join(`
88
+ `))}let t=Z(e.project,r()),n=r(),i=[];for(let r of t){let t=v(r).root;if(n!==null&&!w(t,n))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:t}));try{i.push(JSON.parse(await tn(t,{environment:e.environment,against:e.against})))}catch(e){throw new Y(e instanceof Error?e.message:String(e))}}return JSON.stringify(i.length===1?i[0]:i,null,2)}},{name:`evidence_build`,description:h(`app.cli.mcp.tool.evidenceBuild`),inputSchema:{type:`object`,additionalProperties:!1,properties:{project:o,out:{type:`string`,description:h(`app.cli.mcp.param.evidenceOut`)},since:{type:`string`,description:h(`app.cli.mcp.param.evidenceSince`)},format:{type:`string`,enum:[`zip`,`dir`],description:h(`app.cli.mcp.param.evidenceFormat`)},force:{type:`boolean`,description:h(`app.cli.mcp.param.evidenceForce`)}}},feature:`audit-evidence`,call:async e=>{for(let t of[`out`,`since`])if(e[t]!==void 0&&(typeof e[t]!=`string`||e[t].trim()===``))throw new Y(h(`app.cli.mcp.mustBeText`,{tool:`evidence_build`,name:t}));if(e.format!==void 0&&e.format!==`zip`&&e.format!==`dir`)throw new Y(h(`app.cli.mcp.mustBeOneOf`,{tool:`evidence_build`,name:`format`,list:`zip, dir`}));if(e.force!==void 0&&typeof e.force!=`boolean`)throw new Y(h(`app.cli.mcp.mustBeTrueOrFalse`,{tool:`evidence_build`,name:`force`}));let[t]=Z(e.project,r()),n=r(),i=v(t).root;if(n!==null&&!w(i,n))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:i}));let a=typeof e.out==`string`?D.resolve(i,e.out.trim()):void 0;if(a!==void 0&&!w(a,[i]))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:a}));let{evidenceBuild:o}=await import(`./chunk-evidence-ny_2ltVe.js`),s=await o({root:i,out:a,format:e.format===`dir`?`dir`:`zip`,since:e.since,force:e.force===!0,json:!0,confined:!0});if(!s.ok)throw new Y(s.lines.join(`
89
+ `));return s.lines.join(`
90
+ `)}},{name:`refactor_rename`,description:h(`app.cli.mcp.tool.refactorRename`),inputSchema:{type:`object`,additionalProperties:!1,properties:{project:o,kind:{type:`string`,enum:[...E],description:h(`app.cli.mcp.param.refactorKind`)},from:{type:`string`,description:h(`app.cli.mcp.param.refactorFrom`)},to:{type:`string`,description:h(`app.cli.mcp.param.refactorTo`)},apply:{type:`boolean`,description:h(`app.cli.mcp.param.refactorApply`)},planId:{type:`string`,description:h(`app.cli.mcp.param.refactorPlanId`)},acknowledge:{type:`boolean`,description:h(`app.cli.mcp.param.refactorAcknowledge`)},force:{type:`boolean`,description:h(`app.cli.mcp.param.refactorForce`)}},required:[`kind`,`from`,`to`]},feature:null,scope:e=>e.apply===!0?$(e.project,r()):null,call:async e=>jn(`refactor_rename`,e,r,async(t,n)=>{for(let t of[`kind`,`from`,`to`])if(typeof e[t]!=`string`)throw new Y(h(`app.cli.mcp.mustBeText`,{tool:`refactor_rename`,name:t}));if(!E.includes(e.kind))throw new Y(h(`app.cli.mcp.mustBeOneOf`,{tool:`refactor_rename`,name:`kind`,list:E.join(`, `)}));return nt(t,[{kind:e.kind,from:e.from,to:e.to}],n)})},{name:`refactor_bulk`,description:h(`app.cli.mcp.tool.refactorBulk`),inputSchema:{type:`object`,additionalProperties:!1,properties:{project:o,mapping:{type:`string`,description:h(`app.cli.mcp.param.refactorMapping`)},apply:{type:`boolean`,description:h(`app.cli.mcp.param.refactorApply`)},planId:{type:`string`,description:h(`app.cli.mcp.param.refactorPlanId`)},acknowledge:{type:`boolean`,description:h(`app.cli.mcp.param.refactorAcknowledge`)},force:{type:`boolean`,description:h(`app.cli.mcp.param.refactorForce`)}},required:[`mapping`]},feature:`refactor-bulk`,scope:e=>e.apply===!0?$(e.project,r()):null,call:async e=>jn(`refactor_bulk`,e,r,async(t,n)=>{if(typeof e.mapping!=`string`||e.mapping.trim()===``)throw new Y(h(`app.cli.mcp.mustBeText`,{tool:`refactor_bulk`,name:`mapping`}));return nt(t,at(D.resolve(t,e.mapping.trim()),t),n)})},{name:`refactor_extract`,description:h(`app.cli.mcp.tool.refactorExtract`),inputSchema:{type:`object`,additionalProperties:!1,properties:{project:o,file:{type:`string`,description:h(`app.cli.mcp.param.refactorFile`)},elements:{type:`array`,items:{type:`string`},description:h(`app.cli.mcp.param.refactorElements`)},processId:{type:`string`,description:h(`app.cli.mcp.param.refactorProcessId`)},name:{type:`string`,description:h(`app.cli.mcp.param.refactorName`)},apply:{type:`boolean`,description:h(`app.cli.mcp.param.refactorApply`)},planId:{type:`string`,description:h(`app.cli.mcp.param.refactorPlanId`)},force:{type:`boolean`,description:h(`app.cli.mcp.param.refactorForce`)}},required:[`file`,`elements`,`processId`]},feature:`refactor-bulk`,scope:e=>e.apply===!0?$(e.project,r()):null,call:async e=>jn(`refactor_extract`,e,r,async(t,n)=>{for(let t of[`file`,`processId`])if(typeof e[t]!=`string`||e[t].trim()===``)throw new Y(h(`app.cli.mcp.mustBeText`,{tool:`refactor_extract`,name:t}));if(!Array.isArray(e.elements)||e.elements.length===0||e.elements.some(e=>typeof e!=`string`||e.trim()===``))throw new Y(h(`app.cli.mcp.mustBeText`,{tool:`refactor_extract`,name:`elements`}));if(e.name!==void 0&&typeof e.name!=`string`)throw new Y(h(`app.cli.mcp.mustBeText`,{tool:`refactor_extract`,name:`name`}));let r=D.resolve(t,e.file.trim());if(!w(r,[t]))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:r}));let i=D.relative(t,r).split(D.sep).join(`/`);return rt(t,i,{elements:e.elements.map(e=>e.trim()),processId:e.processId.trim(),...typeof e.name==`string`?{name:e.name}:{}},n)})},{name:`agents`,description:h(`app.cli.mcp.tool.agents`),inputSchema:{type:`object`,additionalProperties:!1,properties:{project:o}},feature:null,call:async e=>{let t=Z(e.project,r()),n=r(),i=[];for(let e of t){let t=v(e).root;if(n!==null&&!w(t,n))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:t}));try{i.push(JSON.parse(await nn(t)))}catch(e){throw new Y(e instanceof Error?e.message:String(e))}}return JSON.stringify(i.length===1?i[0]:i,null,2)}},{name:`migrate_agents`,description:h(`app.cli.mcp.tool.migrateAgents`),inputSchema:{type:`object`,additionalProperties:!1,properties:{project:o,write:{type:`boolean`,description:h(`app.cli.mcp.param.write`)}}},feature:null,scope:e=>e.write===!0?$(e.project,r()):null,call:async e=>{if(e.write!==void 0&&typeof e.write!=`boolean`)throw new Y(h(`app.cli.mcp.mustBeTrueOrFalse`,{tool:`migrate_agents`,name:`write`}));if(e.write===!0){let e=await y(`agent-tools`);if(e)throw new Y(e.lines.join(`
91
+ `))}let t=Z(e.project,r()),n=r(),i=v(t[0]).root;if(n!==null&&!w(i,n))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:i}));try{return await rn(t,e.write===!0)}catch(e){throw new Y(e instanceof Error?e.message:String(e))}}},{name:`incident_to_scenario`,description:h(`app.cli.mcp.tool.incidentToScenario`),inputSchema:{type:`object`,additionalProperties:!1,required:[`key`],properties:{project:o,key:{type:`string`,description:h(`app.cli.mcp.param.incidentKey`)},write:{type:`boolean`,description:h(`app.cli.mcp.param.incidentWrite`)},run:{type:`boolean`,description:h(`app.cli.mcp.param.incidentRun`)}}},feature:null,scope:e=>e.write===!0?$(e.project,r()):null,call:async e=>{if(typeof e.key!=`string`||e.key.trim()===``)throw new Y(h(`app.cli.mcp.mustBeText`,{tool:`incident_to_scenario`,name:`key`}));for(let t of[`write`,`run`])if(e[t]!==void 0&&typeof e[t]!=`boolean`)throw new Y(h(`app.cli.mcp.mustBeTrueOrFalse`,{tool:`incident_to_scenario`,name:t}));if(e.write===!0||e.run===!0){let e=await y(`incident-scenario`);if(e)throw new Y(e.lines.join(`
92
+ `))}let t=r(),n=Z(e.project,t);if(n.length!==1)throw new Y(h(`app.cli.mcp.oneProject`,{tool:`incident_to_scenario`}));let i=v(n[0]).root,a=e=>{if(t!==null&&!w(e,t))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:e}))};a(i);try{return await an(i,{key:e.key.trim(),write:e.write===!0,run:e.run===!0,confine:a})}catch(e){throw new Y(e instanceof Error?e.message:String(e))}}},{name:`generate_templates`,description:h(`app.cli.mcp.tool.generateTemplates`),inputSchema:{type:`object`,additionalProperties:!1,required:[`spec`],properties:{spec:{type:`string`,description:h(`app.cli.mcp.param.apiSpec`)},out:{type:`string`,description:h(`app.cli.mcp.param.templatesOut`)},write:{type:`boolean`,description:h(`app.cli.mcp.param.write`)},secretPrefix:{type:`string`,description:h(`app.cli.mcp.param.secretPrefix`)}}},feature:`api-templates`,scope:e=>{if(e.write!==!0||typeof e.spec!=`string`||!D.isAbsolute(e.spec.trim()))return null;let t=r(),n;try{n=A(e.spec.trim())}catch{return null}if(t!==null&&!w(n,t))return null;let i=v(n).root,a=typeof e.out==`string`&&D.isAbsolute(e.out.trim())?T(e.out.trim()):D.join(i,me);return t!==null&&!w(a,t)?null:[{folders:[a],root:i}]},call:async e=>{if(typeof e.spec!=`string`||!D.isAbsolute(e.spec.trim()))throw new Y(h(`app.cli.mcp.fileMustBeAbsolute`));if(e.write!==void 0&&typeof e.write!=`boolean`)throw new Y(h(`app.cli.mcp.mustBeTrueOrFalse`,{tool:`generate_templates`,name:`write`}));if(e.out!==void 0&&(typeof e.out!=`string`||!D.isAbsolute(e.out.trim())))throw new Y(h(`app.cli.mcp.fileMustBeAbsolute`));if(e.secretPrefix!==void 0&&(typeof e.secretPrefix!=`string`||!pe(e.secretPrefix)))throw new Y(h(`app.cli.templates.api.badSecretPrefix`,{value:String(e.secretPrefix)}));let t=r(),n;try{n=A(e.spec.trim())}catch{throw new Y(h(`app.cli.mcp.noFile`,{file:e.spec}))}if(!he(n)||!M(n).isFile())throw new Y(h(`app.cli.templates.api.notAFile`,{path:e.spec}));if(t!==null&&!w(n,t))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:e.spec}));let i=e.out===void 0?void 0:T(e.out.trim()),a=i??D.join(v(n).root,`.camunda/element-templates`);if(t!==null&&!w(a,t))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:a}));try{return await on(n,{out:i??a,write:e.write===!0,secretPrefix:e.secretPrefix})}catch(e){throw new Y(e instanceof Error?e.message:String(e))}}},{name:`create_diagram`,description:h(`app.cli.mcp.tool.createDiagram`),inputSchema:{type:`object`,additionalProperties:!1,required:[`file`],properties:{file:{type:`string`,description:h(`app.cli.mcp.param.newFile`)},name:{type:`string`,description:h(`app.cli.mcp.param.diagramName`)},description:{type:`string`,description:h(`app.cli.mcp.param.diagramDescription`)},spec:{type:`object`,description:h(`app.cli.mcp.param.spec`)}}},feature:`edit`,scope:e=>{if(typeof e.file!=`string`||!D.isAbsolute(e.file.trim()))return null;let t=T(e.file.trim()),n=r();return n!==null&&!w(t,n)?null:[{files:[t],root:v(D.dirname(t)).root}]},call:async e=>{if(typeof e.file!=`string`||!D.isAbsolute(e.file.trim()))throw new Y(h(`app.cli.mcp.fileMustBeAbsolute`));for(let t of[`name`,`description`])if(e[t]!==void 0&&typeof e[t]!=`string`)throw new Y(h(`app.cli.mcp.mustBeText`,{tool:`create_diagram`,name:t}));if(e.spec!==void 0&&(typeof e.spec!=`object`||e.spec===null||Array.isArray(e.spec)))throw new Y(h(`app.cli.mcp.mustBeObject`,{tool:`create_diagram`,name:`spec`}));let t=r(),n=n=>{if(t!==null&&!w(n,t))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:String(e.file)}))},i=T(e.file.trim());n(i);try{return JSON.stringify(await un(i,{name:e.name,description:e.description,spec:e.spec},n),null,2)}catch(e){throw e instanceof Y?e:new Y(e instanceof Error?e.message:String(e))}}},{name:`import_diagram`,description:h(`app.cli.mcp.tool.importDiagram`),inputSchema:{type:`object`,additionalProperties:!1,required:[`file`],properties:{file:{type:`string`,description:h(`app.cli.mcp.param.importFile`)},from:{type:`string`,enum:[`modeler`,`signavio`,`bizagi`,`flowable`],description:h(`app.cli.mcp.param.importFrom`)},to:{type:`string`,enum:[`camunda7`,`camunda8`],description:h(`app.cli.mcp.param.importTo`)},write:{type:`boolean`,description:h(`app.cli.mcp.param.importWrite`)},out:{type:`string`,description:h(`app.cli.mcp.param.importOut`)},force:{type:`boolean`,description:h(`app.cli.mcp.param.importForce`)}}},feature:null,call:async e=>{if(typeof e.file!=`string`||!D.isAbsolute(e.file.trim()))throw new Y(h(`app.cli.mcp.fileMustBeAbsolute`));if(e.from!==void 0&&(typeof e.from!=`string`||!Te(e.from)))throw new Y(h(`app.cli.mcp.mustBeOneOf`,{tool:`import_diagram`,name:`from`,list:Ee.join(`, `)}));if(e.to!==void 0&&(typeof e.to!=`string`||!we(e.to)))throw new Y(h(`app.cli.mcp.mustBeOneOf`,{tool:`import_diagram`,name:`to`,list:Ce.join(`, `)}));for(let t of[`write`,`force`])if(e[t]!==void 0&&typeof e[t]!=`boolean`)throw new Y(h(`app.cli.mcp.mustBeTrueOrFalse`,{tool:`import_diagram`,name:t}));if(e.out!==void 0&&(typeof e.out!=`string`||e.out.trim()===``))throw new Y(h(`app.cli.mcp.mustBeText`,{tool:`import_diagram`,name:`out`}));let t;try{t=A(e.file.trim())}catch{throw new Y(h(`app.cli.mcp.noFile`,{file:e.file}))}let n=r();if(n!==null&&!w(t,n))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:e.file}));let i=M(t).isDirectory(),a=i?v(t).root:Dn(t,n);if(n!==null&&!w(a,n))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:a}));let o=e.write===!0,s=typeof e.out==`string`?D.resolve(a,e.out.trim()):void 0;if(o&&s!==void 0&&!w(s,[a]))throw new Y(h(`app.cli.mcp.outsideRoots`,{target:s}));let{importCommand:c}=await import(`./chunk-importCommand-Dhikkmo0.js`),l=await c(t,o?s:void 0,{force:e.force===!0,json:!0,from:e.from,to:e.to,report:!o&&!i,confinedTo:a,modelerData:null});if(!l.ok)throw new Y(l.lines.map(e=>{try{return JSON.parse(e).message??e}catch{return e}}).join(`
93
+ `));return l.lines.join(`
94
+ `)}}].map(An)}const Nn={process:`application/xml`,decision:`application/xml`,form:`application/json`},Pn=[{name:`review_diagram`,description:`app.cli.mcp.prompt.reviewDiagram.description`,text:`app.cli.mcp.prompt.reviewDiagram.text`},{name:`explain_process`,description:`app.cli.mcp.prompt.explainProcess.description`,text:`app.cli.mcp.prompt.explainProcess.text`}];function Fn(e){return e===null?[]:Array.from(new Set(e.flatMap(e=>Tn(e)?p(e,J):[]))).sort().map(t=>{let n=f(t),r=e.map(T).find(e=>t.startsWith(e+D.sep));return{uri:xt(t).href,name:r?D.relative(r,t):D.basename(t),mimeType:Nn[n],description:n}})}function In(e,t){if(typeof e!=`string`||!e.startsWith(`file://`))throw new Y(h(`app.cli.mcp.fileMustBeAbsolute`));let n=Q(bt(e),t,J);return{contents:[{uri:e,mimeType:Nn[f(n)],text:X(k(n,`utf8`))}]}}function Ln(e,t,n){let r=Pn.find(t=>t.name===e);if(!r)throw new Y(h(`app.cli.mcp.unknownPrompt`,{name:String(e)}));let i=Q(t?.file,n,J);return{description:h(r.description),messages:[{role:`user`,content:{type:`text`,text:h(r.text,{file:i})}}]}}var Rn=class{hasRootsCapability=!1;clientRoots=null;rootsPromise=null;nextRequestId=1;pendingRequests=/* @__PURE__ */ new Map;writeOutput;toolList;project;receipts=new gn;constructor(e,t=null){this.writeOutput=e,this.project=t===null?null:[t],this.toolList=Mn(()=>this.project??(this.hasRootsCapability?this.clientRoots??[]:null))}requestRoots(){let e=`roots-${this.nextRequestId++}`,t=new Promise(t=>{this.pendingRequests.set(e,t)}).then(e=>{let t=e.result?.roots;this.clientRoots=Array.isArray(t)?t.map(e=>typeof e?.uri==`string`?wn(e.uri):null).filter(e=>e!==null):[]});return this.writeOutput({jsonrpc:`2.0`,id:e,method:`roots/list`,params:{}}),t}onResponse(e){if(e.id!==void 0&&e.id!==null){let t=this.pendingRequests.get(e.id);t&&(this.pendingRequests.delete(e.id),t(e))}}async onMessage(e){let t=await this.handle(e);t&&e.id!==void 0&&e.id!==null&&this.writeOutput(t)}async handle(e){let t=t=>({jsonrpc:`2.0`,id:e.id,result:t}),n=(t,n)=>({jsonrpc:`2.0`,id:e.id,error:{code:t,message:n}}),r=e.id===void 0||e.id===null;switch(e.method){case`initialize`:{let n=String(e.params?.protocolVersion??``);return(e.params?.capabilities??{}).roots&&(this.hasRootsCapability=!0,this.rootsPromise=this.requestRoots()),t({protocolVersion:_n.includes(n)?n:_n[0],capabilities:{tools:{listChanged:!1},resources:{listChanged:!1,subscribe:!1},prompts:{listChanged:!1}},serverInfo:{name:`penstock`,version:De()??`development`},instructions:h(`app.cli.mcp.instructions`)})}case`notifications/initialized`:return null;case`notifications/roots/list_changed`:return this.rootsPromise=this.requestRoots(),null;case`ping`:return t({});case`tools/list`:return t({tools:this.toolList.map(e=>({name:e.name,description:bn(e),inputSchema:e.inputSchema}))});case`resources/list`:case`resources/read`:case`prompts/list`:case`prompts/get`:{this.hasRootsCapability&&this.rootsPromise&&await Cn(this.rootsPromise,vn);let r=this.project??(this.hasRootsCapability?this.clientRoots??[]:null);try{return e.method===`prompts/list`?t({prompts:Pn.map(e=>({name:e.name,description:h(e.description),arguments:[{name:`file`,description:h(`app.cli.mcp.param.anyFile`),required:!0}]}))}):e.method===`prompts/get`?t(Ln(e.params?.name,e.params?.arguments,r)):e.method===`resources/list`?t({resources:Fn(r)}):t(In(e.params?.uri,r))}catch(e){return n(-32602,e instanceof Error?e.message:String(e))}}case`tools/call`:{this.hasRootsCapability&&this.rootsPromise&&await Cn(this.rootsPromise,vn);let r=String(e.params?.name??``),i=this.toolList.find(e=>e.name===r);if(!i)return n(-32602,h(`app.cli.mcp.unknownTool`,{name:r}));let a=e.params?.arguments??{},o=xn(i,a)??Sn(i,a)[0];if(o)return t({content:[{type:`text`,text:o}],isError:!0});if(this.hasRootsCapability&&this.clientRoots===null&&this.project===null)return t({content:[{type:`text`,text:h(`app.cli.mcp.rootsNotSaid`)}],isError:!0});if(i.feature){let e=await y(i.feature);if(e)return t({content:[{type:`text`,text:e.lines.join(`
95
+ `)}],isError:!0})}try{let e=i.scope?i.scope(a):null,n=e==null?[]:e.map(e=>this.receipts.begin(i.name,{...e,scenarios:a.scenarios===!0})),r=await i.call(a),o=typeof r==`string`?[{type:`text`,text:X(r)}]:[...r.content],s=[];for(let e of n){let t=await this.receipts.finish(e);t!==null&&s.push(t)}if(s.length===0)return t({content:o,isError:!1});let c=s.map(e=>e.receipt),l={receipt:c.length===1?c[0]:c};o.push({type:`text`,text:X(JSON.stringify(l,null,2))});for(let e of s)e.repair!==null&&o.push({type:`text`,text:e.repair});return t({content:o,isError:!1,structuredContent:l})}catch(e){return t({content:[{type:`text`,text:et(e)??(e instanceof Error?e.message:String(e))}],isError:!0})}}default:return r?null:n(-32601,h(`app.cli.mcp.methodNotFound`,{method:String(e.method)}))}}};function zn(e,t,n,r){return e.then(()=>t(n)).catch(e=>{n.id!==void 0&&n.id!==null&&r({jsonrpc:`2.0`,id:n.id??null,error:{code:-32603,message:e instanceof Error?e.message:String(e)}})})}async function Bn(e=null){let t=yt({input:process.stdin}),n=e=>process.stdout.write(`${JSON.stringify(e)}\n`),r=new Rn(n,e===null?null:T(D.resolve(e))),i=Promise.resolve();return t.on(`line`,e=>{if(!e.trim())return;let t;try{t=JSON.parse(e)}catch{n({jsonrpc:`2.0`,id:null,error:{code:-32700,message:h(`app.cli.mcp.parseError`)}});return}!t||typeof t!=`object`||Array.isArray(t)?n({jsonrpc:`2.0`,id:null,error:{code:-32600,message:h(`app.cli.mcp.notARequest`)}}):t.method===void 0&&t.id!==void 0&&t.id!==null?r.onResponse(t):i=zn(i,e=>r.onMessage(e),t,n)}),await new Promise(e=>t.on(`close`,()=>e())),await i,0}function Vn(e=De()){let t=l(e);return JSON.stringify({mcpServers:{penstock:t===null?{command:`penstock`,args:[`mcp`]}:{command:`npx`,args:[`--yes`,t,`mcp`]}}},null,2)}export{Bn as mcpCommand,Vn as mcpConfig};
@@ -587,6 +587,6 @@ l-1330 0 0 -25z"
587
587
  `,vtcode:`<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
588
588
  <path d="M0.5 5.5L2.5 8 0.5 10.5" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
589
589
  <text x="3.2" y="11.5" font-family="'SF Mono', 'Fira Code', 'Consolas', monospace" font-size="10" font-weight="600" letter-spacing="-0.5" fill="currentColor">VT</text>
590
- </svg>`}},N=class extends Error{key;constructor(e,t){super(t),this.key=e}};const rt=65536;function P(e){return s.join(e,`agents`)}function it(e){return e.length===0||e.length>rt||!/^\s*(<\?xml[^>]*\?>\s*)?(<!--[\s\S]*?-->\s*)*<svg[\s>]/i.test(e)?!1:!/<script|<foreignObject|<iframe|<object|<embed|<!ENTITY|<!DOCTYPE|\son[a-z]+\s*=|javascript:|url\(\s*["']?(?:https?:|\/\/)|(?:xlink:)?href\s*=\s*["']?(?!#)/i.test(e)}function at(e){return it(e)?`data:image/svg+xml;base64,${Buffer.from(e,`utf8`).toString(`base64`)}`:null}async function ot(e,t){let n=Number(e.headers.get(`content-length`)??`0`);if(Number.isFinite(n)&&n>t)throw new N(`app.agents.reason.tooLarge`,`${n}`);let r=e.body?.getReader();if(!r)return/* @__PURE__ */ new Uint8Array;let i=[],a=0;try{for(;;){let{done:e,value:n}=await r.read();if(e)break;if(a+=n.byteLength,a>t)throw new N(`app.agents.reason.tooLarge`,`${a}`);i.push(n)}}finally{r.cancel().catch(()=>void 0)}return Buffer.concat(i)}async function st(e,t,n,r,i){let a=AbortSignal.timeout(r),o=i?AbortSignal.any([i,a]):a,s;try{s=await e(t,{signal:o})}catch(e){throw i?.aborted?e:a.aborted?new N(`app.agents.reason.timeout`,t):new N(`app.agents.reason.offline`,e instanceof Error?e.message:String(e))}if(!s.ok)throw new N(`app.agents.reason.http`,`${s.status}`);if(s.url&&!s.url.startsWith(`https:`)&&t.startsWith(`https:`))throw new N(`app.agents.reason.offline`,s.url);try{return Buffer.from(await ot(s,n)).toString(`utf8`)}catch(e){throw e instanceof N||i?.aborted?e:a.aborted?new N(`app.agents.reason.timeout`,t):new N(`app.agents.reason.offline`,e instanceof Error?e.message:String(e))}}async function ct(e,t,n,r){let i=await st(e,t,2097152,n,r),a=j(i);if(a===null)throw new N(`app.agents.reason.badList`,``);let o={},s=a.agents.filter(e=>e.icon!==null),c=0;return await Promise.all(Array.from({length:Math.min(6,s.length)},async()=>{for(;c<s.length;){let t=s[c];c+=1;try{let i=await st(e,t.icon,rt,n,r);it(i)&&(o[t.registryId]=i)}catch(e){if(r?.aborted)throw e}}})),{body:i,icons:o}}const F=nt;function lt(){return{registry:j(JSON.stringify(F.registry))??{agents:[]},icons:F.icons}}var ut=class{home;fetcher;url;now;requestMs;totalMs;memo=null;refreshing=null;constructor(e,t={}){this.home=e,this.fetcher=t.fetcher??((e,t)=>fetch(e,t)),this.url=t.url??`https://cdn.agentclientprotocol.com/registry/v1/latest/registry.json`,this.now=t.now??Date.now,this.requestMs=t.requestMs??1e4,this.totalMs=t.totalMs??4e4}get file(){return s.join(P(this.home),`registry.json`)}get iconFolder(){return s.join(P(this.home),`icons`)}read(){let e=`snapshot`;try{let t=y(this.file);e=`${t.mtimeMs}:${t.size}`}catch{}if(this.memo?.stamp===e)return this.memo.view;let t=e===`snapshot`?this.fromSnapshot():this.fromCache()??this.fromSnapshot();return this.memo={stamp:t.source===`cache`?e:`snapshot`,view:t},t}stale(){let e=this.read();if(e.source!==`cache`||e.updated===null)return!0;let t=Date.parse(e.updated);return!Number.isFinite(t)||this.now()-t>864e5||t>this.now()+864e5}refresh(e){return this.refreshing??=this.fetchAndKeep(e).finally(()=>{this.refreshing=null}),this.refreshing}async fetchAndKeep(e){let t=AbortSignal.timeout(this.totalMs),n=e?AbortSignal.any([e,t]):t,r;try{r=await ct(this.fetcher,this.url,this.requestMs,n)}catch(n){throw n instanceof N?n:t.aborted&&!e?.aborted?new N(`app.agents.reason.timeout`,this.url):n}return this.keep(r),this.memo=null,this.read()}keep(t){try{p(this.iconFolder,{recursive:!0});let n=new Set(Object.keys(t.icons).filter(M).map(e=>`${e}.svg`));for(let e of g(this.iconFolder))e.endsWith(`.svg`)&&!n.has(e)&&v(s.join(this.iconFolder,e),{force:!0});for(let[n,r]of Object.entries(t.icons))M(n)&&e(s.join(this.iconFolder,`${n}.svg`),r);e(this.file,`${JSON.stringify({fetched:new Date(this.now()).toISOString(),registry:JSON.parse(t.body)})}\n`)}catch(e){throw new N(`app.agents.reason.notKept`,e instanceof Error?e.message:String(e))}}fromSnapshot(){let{registry:e,icons:t}=lt(),n={};for(let[e,r]of Object.entries(t)){let t=at(r);t!==null&&(n[e]=t)}return{registry:e,icons:n,updated:F.fetched,source:`snapshot`}}fromCache(){let e;try{e=JSON.parse(h(this.file,`utf8`))}catch{return null}let t=j(JSON.stringify(e?.registry));if(t===null||typeof e.fetched!=`string`)return null;let n=lt(),r={};for(let e of t.agents){let t;if(M(e.registryId))try{t=h(s.join(this.iconFolder,`${e.registryId}.svg`),`utf8`)}catch{}let i=at(t??n.icons[e.registryId]??``);i!==null&&(r[e.registryId]=i)}return{registry:t,icons:r,updated:e.fetched,source:`cache`}}};function dt(e){try{return y(e).isFile()?(process.platform!==`win32`&&c(e,u.X_OK),!0):!1}catch{return!1}}function ft(e){return process.platform===`win32`?[``,...(e.PATHEXT??`.EXE;.CMD;.BAT;.COM`).split(`;`).filter(e=>e!==``)]:[``]}function I(e,t,n){if(e.trim()===``||e.includes(`\0`))return null;let r=ft(t);if(/[\\/]/.test(e)){let t=s.resolve(n,e);return r.map(e=>`${t}${e}`).find(dt)??null}let i=(t.PATH??t.Path??``).split(s.delimiter).filter(e=>e!==``);for(let t of i)for(let n of r){let r=s.join(t,`${e}${n}`);if(dt(r))return r}return null}var L=class extends Error{key;params;constructor(e,t=``,n={}){super(t),this.key=e,this.params=n}};const pt=838860800,mt=/^[\w@./=+-]+$/,R=/* @__PURE__ */ new Set;let ht=!1;function gt(e){R.add(e),!ht&&(ht=!0,process.once(`exit`,()=>{for(let e of R)try{v(e,{recursive:!0,force:!0})}catch{}}))}function z(e,t){return s.join(P(e),M(t)?t:`x-${b(`sha1`).update(t).digest(`hex`).slice(0,16)}`)}function B(e,t){return s.join(z(e,t),`installed.json`)}function _t(e,t){let n;try{n=JSON.parse(h(B(e,t),`utf8`))}catch{return null}if(!n||n.kind!==`binary`&&n.kind!==`npx`&&n.kind!==`uvx`||typeof n.version!=`string`||!Array.isArray(n.args)||n.args.some(e=>typeof e!=`string`))return null;if(n.kind===`binary`){if(typeof n.command!=`string`||!s.isAbsolute(n.command)||!n.command.startsWith(z(e,t)+s.sep))return null;try{if(!y(n.command).isFile())return null}catch{return null}}else if(typeof n.package!=`string`)return null;return{...n,env:n.env&&typeof n.env==`object`?n.env:{}}}function vt(e,t,n){let r=qe(),i=r===null?void 0:e.binary[r];if(i!==void 0&&i.sha256!==null)return{kind:`binary`,entry:i,platform:r};let a=e.npx===null?null:I(`npx`,t,n);if(e.npx!==null&&a!==null)return{kind:`npx`,distribution:e.npx,runner:a};let o=e.uvx===null?null:I(`uvx`,t,n);return e.uvx!==null&&o!==null?{kind:`uvx`,distribution:e.uvx,runner:o}:e.npx===null?e.uvx===null?i===void 0?{kind:`blocked`,reason:`platform`}:{kind:`blocked`,reason:`checksum`}:{kind:`blocked`,reason:`uv`}:{kind:`blocked`,reason:`node`}}function yt(e,t){return{args:e===`npx`?[`-y`,t.package,...t.args]:[t.package,...t.args],env:t.env}}function bt(e){return e.split(`
590
+ </svg>`}},N=class extends Error{key;constructor(e,t){super(t),this.key=e}};const rt=65536;function P(e){return s.join(e,`agents`)}function it(e){return e.length===0||e.length>rt||!/^\s*(<\?xml[^>]*\?>\s*)?(<!--[\s\S]*?-->\s*)*<svg[\s>]/i.test(e)?!1:!/<script|<foreignObject|<iframe|<object|<embed|<!ENTITY|<!DOCTYPE|\son[a-z]+\s*=|javascript:|url\(\s*["']?(?:https?:|\/\/)|(?:xlink:)?href\s*=\s*["']?(?!#)/i.test(e)}function at(e){return it(e)?`data:image/svg+xml;base64,${Buffer.from(e,`utf8`).toString(`base64`)}`:null}async function ot(e,t){let n=Number(e.headers.get(`content-length`)??`0`);if(Number.isFinite(n)&&n>t)throw new N(`app.agents.reason.tooLarge`,`${n}`);let r=e.body?.getReader();if(!r)return/* @__PURE__ */ new Uint8Array;let i=[],a=0;try{for(;;){let{done:e,value:n}=await r.read();if(e)break;if(a+=n.byteLength,a>t)throw new N(`app.agents.reason.tooLarge`,`${a}`);i.push(n)}}finally{r.cancel().catch(()=>void 0)}return Buffer.concat(i)}async function st(e,t,n,r,i){let a=AbortSignal.timeout(r),o=i?AbortSignal.any([i,a]):a,s;try{s=await e(t,{signal:o})}catch(e){throw i?.aborted?e:a.aborted?new N(`app.agents.reason.timeout`,t):new N(`app.agents.reason.offline`,e instanceof Error?e.message:String(e))}if(!s.ok)throw new N(`app.agents.reason.http`,`${s.status}`);if(s.url&&!s.url.startsWith(`https:`)&&t.startsWith(`https:`))throw new N(`app.agents.reason.offline`,s.url);try{return Buffer.from(await ot(s,n)).toString(`utf8`)}catch(e){throw e instanceof N||i?.aborted?e:a.aborted?new N(`app.agents.reason.timeout`,t):new N(`app.agents.reason.offline`,e instanceof Error?e.message:String(e))}}async function ct(e,t,n,r){let i=await st(e,t,2097152,n,r),a=j(i);if(a===null)throw new N(`app.agents.reason.badList`,``);let o={},s=a.agents.filter(e=>e.icon!==null),c=0;return await Promise.all(Array.from({length:Math.min(6,s.length)},async()=>{for(;c<s.length;){let t=s[c];c+=1;try{let i=await st(e,t.icon,rt,n,r);it(i)&&(o[t.registryId]=i)}catch(e){if(r?.aborted)throw e}}})),{body:i,icons:o}}const F=nt;function lt(){return{registry:j(JSON.stringify(F.registry))??{agents:[]},icons:F.icons}}var ut=class{home;fetcher;url;now;requestMs;totalMs;memo=null;refreshing=null;constructor(e,t={}){this.home=e,this.fetcher=t.fetcher??((e,t)=>fetch(e,t)),this.url=t.url??`https://cdn.agentclientprotocol.com/registry/v1/latest/registry.json`,this.now=t.now??Date.now,this.requestMs=t.requestMs??1e4,this.totalMs=t.totalMs??4e4}get file(){return s.join(P(this.home),`registry.json`)}get iconFolder(){return s.join(P(this.home),`icons`)}read(){let e=`snapshot`;try{let t=y(this.file);e=`${t.mtimeMs}:${t.size}`}catch{}if(this.memo?.stamp===e)return this.memo.view;let t=e===`snapshot`?this.fromSnapshot():this.fromCache()??this.fromSnapshot();return this.memo={stamp:t.source===`cache`?e:`snapshot`,view:t},t}stale(){let e=this.read();if(e.source!==`cache`||e.updated===null)return!0;let t=Date.parse(e.updated);return!Number.isFinite(t)||this.now()-t>864e5||t>this.now()+864e5}refresh(e){return this.refreshing??=this.fetchAndKeep(e).finally(()=>{this.refreshing=null}),this.refreshing}async fetchAndKeep(e){let t=AbortSignal.timeout(this.totalMs),n=e?AbortSignal.any([e,t]):t,r;try{r=await ct(this.fetcher,this.url,this.requestMs,n)}catch(n){throw n instanceof N?n:t.aborted&&!e?.aborted?new N(`app.agents.reason.timeout`,this.url):n}return this.keep(r),this.memo=null,this.read()}keep(t){try{p(this.iconFolder,{recursive:!0});let n=new Set(Object.keys(t.icons).filter(M).map(e=>`${e}.svg`));for(let e of g(this.iconFolder))e.endsWith(`.svg`)&&!n.has(e)&&v(s.join(this.iconFolder,e),{force:!0});for(let[n,r]of Object.entries(t.icons))M(n)&&e(s.join(this.iconFolder,`${n}.svg`),r);e(this.file,`${JSON.stringify({fetched:new Date(this.now()).toISOString(),registry:JSON.parse(t.body)})}\n`)}catch(e){throw new N(`app.agents.reason.notKept`,e instanceof Error?e.message:String(e))}}fromSnapshot(){let{registry:e,icons:t}=lt(),n={};for(let[e,r]of Object.entries(t)){let t=at(r);t!==null&&(n[e]=t)}return{registry:e,icons:n,updated:F.fetched,source:`snapshot`}}fromCache(){let e;try{e=JSON.parse(h(this.file,`utf8`))}catch{return null}let t=j(JSON.stringify(e?.registry));if(t===null||typeof e.fetched!=`string`)return null;let n=lt(),r={};for(let e of t.agents){let t;if(M(e.registryId))try{t=h(s.join(this.iconFolder,`${e.registryId}.svg`),`utf8`)}catch{}let i=at(t??n.icons[e.registryId]??``);i!==null&&(r[e.registryId]=i)}return{registry:t,icons:r,updated:e.fetched,source:`cache`}}};function dt(e){try{return y(e).isFile()?(process.platform!==`win32`&&c(e,u.X_OK),!0):!1}catch{return!1}}function ft(e){return process.platform===`win32`?[``,...(e.PATHEXT??`.EXE;.CMD;.BAT;.COM`).split(`;`).filter(e=>e!==``)]:[``]}function I(e,t,n){if(e.trim()===``||e.includes(`\0`))return null;let r=ft(t);if(/[\\/]/.test(e)){let t=s.resolve(n,e);return r.map(e=>`${t}${e}`).find(dt)??null}let i=(t.PATH??t.Path??``).split(s.delimiter).filter(e=>e!==``);for(let t of i)for(let n of r){let r=s.join(t,`${e}${n}`);if(dt(r))return r}return null}var L=class extends Error{key;params;constructor(e,t=``,n={}){super(t),this.key=e,this.params=n}};const pt=838860800,mt=/^[\w@./=+-]+$/,R=/* @__PURE__ */ new Set;let ht=!1;function gt(e){R.add(e),ht||(ht=!0,process.once(`exit`,()=>{for(let e of R)try{v(e,{recursive:!0,force:!0})}catch{}}))}function z(e,t){return s.join(P(e),M(t)?t:`x-${b(`sha1`).update(t).digest(`hex`).slice(0,16)}`)}function B(e,t){return s.join(z(e,t),`installed.json`)}function _t(e,t){let n;try{n=JSON.parse(h(B(e,t),`utf8`))}catch{return null}if(!n||n.kind!==`binary`&&n.kind!==`npx`&&n.kind!==`uvx`||typeof n.version!=`string`||!Array.isArray(n.args)||n.args.some(e=>typeof e!=`string`))return null;if(n.kind===`binary`){if(typeof n.command!=`string`||!s.isAbsolute(n.command)||!n.command.startsWith(z(e,t)+s.sep))return null;try{if(!y(n.command).isFile())return null}catch{return null}}else if(typeof n.package!=`string`)return null;return{...n,env:n.env&&typeof n.env==`object`?n.env:{}}}function vt(e,t,n){let r=qe(),i=r===null?void 0:e.binary[r];if(i!==void 0&&i.sha256!==null)return{kind:`binary`,entry:i,platform:r};let a=e.npx===null?null:I(`npx`,t,n);if(e.npx!==null&&a!==null)return{kind:`npx`,distribution:e.npx,runner:a};let o=e.uvx===null?null:I(`uvx`,t,n);return e.uvx!==null&&o!==null?{kind:`uvx`,distribution:e.uvx,runner:o}:e.npx===null?e.uvx===null?i===void 0?{kind:`blocked`,reason:`platform`}:{kind:`blocked`,reason:`checksum`}:{kind:`blocked`,reason:`uv`}:{kind:`blocked`,reason:`node`}}function yt(e,t){return{args:e===`npx`?[`-y`,t.package,...t.args]:[t.package,...t.args],env:t.env}}function bt(e){return e.split(`
591
591
  `).map(e=>e.trim()).filter(e=>e!==``).slice(-3).join(` `).slice(-300)}function xt(e,t,n,r){let i=AbortSignal.timeout(3e5),o=AbortSignal.any([r,i]),s=I(`npm`,e,t);if(s===null)return Promise.reject(new L(`app.agents.reason.noNode`));if(n.some(e=>!mt.test(e)))return Promise.reject(new L(`app.agents.reason.npmFailed`,n.join(` `)));let c;try{c=Se({command:s,args:n})}catch{return Promise.reject(new L(`app.agents.reason.npmFailed`,n.join(` `)))}return new Promise((n,s)=>{let l=ne(c.command,c.args,{cwd:t,env:e,stdio:[`ignore`,`ignore`,`pipe`],windowsHide:!0,windowsVerbatimArguments:c.verbatim,signal:o}),u=``;l.stderr.on(`data`,e=>{u=(u+e.toString(`utf8`)).slice(-1e3)}),l.once(`error`,e=>s(i.aborted?new L(`app.agents.reason.timeout`):r.aborted?new L(`app.agents.reason.cancelled`):new L(`app.agents.reason.npmFailed`,a(e.message)))),l.once(`exit`,e=>e===0?n():s(new L(`app.agents.reason.npmFailed`,a(bt(u)))))})}async function St(e,t,n,r,i,a,o){let s=null,c=new AbortController,l=AbortSignal.any([i,c.signal]),u=()=>{s&&clearTimeout(s),s=setTimeout(()=>c.abort(),a)};u();let d=null;try{let a;try{a=await e(t,{signal:l})}catch(e){throw i.aborted?new L(`app.agents.reason.cancelled`):new L(c.signal.aborted?`app.agents.reason.timeout`:`app.agents.reason.offline`,e instanceof Error?e.message:String(e))}if(!a.ok||!a.body)throw new L(`app.agents.reason.http`,`${a.status}`);if(a.url&&t.startsWith(`https:`)&&!a.url.startsWith(`https:`))throw new L(`app.agents.reason.offline`,a.url);let s=Number(a.headers.get(`content-length`)??`0`);if(Number.isFinite(s)&&s>pt)throw new L(`app.agents.reason.archiveTooLarge`);d=await C(n,`w`,384);let f=b(`sha256`),p=a.body.getReader(),m=0;try{for(;;){let{done:e,value:t}=await p.read();if(e)break;if(u(),m+=t.byteLength,m>pt)throw new L(`app.agents.reason.archiveTooLarge`);f.update(t),await d.write(t),o(s>0?Math.min(99,Math.floor(m/s*100)):null)}}catch(e){throw e instanceof L?e:i.aborted?new L(`app.agents.reason.cancelled`):new L(c.signal.aborted?`app.agents.reason.timeout`:`app.agents.reason.offline`,e instanceof Error?e.message:String(e))}finally{p.cancel().catch(()=>void 0)}if(f.digest(`hex`)!==r.toLowerCase())throw new L(`app.agents.reason.checksum`)}finally{s&&clearTimeout(s),await d?.close().catch(()=>void 0)}}async function Ct(e){let t;try{t=g(e)}catch{return}for(let n of t){if(!n.startsWith(`.partial-`))continue;let t=s.join(e,n);try{Date.now()-(await fe(t)).mtimeMs>36e5&&await T(t,{recursive:!0,force:!0})}catch{}}}async function wt(e,t,n,r,i){let a=z(e.home,t.id);await S(a,{recursive:!0}),await Ct(a);let o=s.join(a,`.partial-${x(6).toString(`hex`)}`);await S(o,{recursive:!0}),gt(o);try{let c=s.join(o,`download`);await St(e.fetcher,n.archive,c,n.sha256,r,e.idleMs??3e4,i);let l=s.join(o,`files`),u=s.basename(n.cmd.replace(/\\/g,`/`));try{await Le(c,l,u,void 0,r)}catch(e){throw r.aborted?new L(`app.agents.reason.cancelled`):e instanceof D?new L(e.key,e.message):e}await T(c,{force:!0});let d=O(l,n.cmd);if(d===null)throw new L(`app.agents.reason.unsafeArchive`,n.cmd);let p;try{p=await fe(d)}catch{throw new L(`app.agents.reason.noProgram`,n.cmd)}if(!p.isFile())throw new L(`app.agents.reason.noProgram`,n.cmd);if(process.platform!==`win32`&&await oe(d,493),r.aborted)throw new L(`app.agents.reason.cancelled`);let m=s.join(a,t.version),h=s.join(a,`.old-${x(4).toString(`hex`)}`);f(m)&&await de(m,h);try{await de(l,m)}catch(e){throw f(h)&&await de(h,m).catch(()=>void 0),e}await T(h,{recursive:!0,force:!0});let _={kind:`binary`,version:t.version,package:null,command:s.join(m,s.relative(l,d)),args:n.args,env:n.env,at:(/* @__PURE__ */ new Date()).toISOString()};try{await pe(B(e.home,t.id),`${JSON.stringify(_,null,2)}\n`)}catch(e){throw await T(m,{recursive:!0,force:!0}),e}for(let e of g(a)){if(e===t.version||e===`installed.json`||e===`options.json`||e.startsWith(`.partial-`))continue;let n=s.join(a,e);try{y(n).isDirectory()&&await T(n,{recursive:!0,force:!0})}catch{}}return _}finally{await T(o,{recursive:!0,force:!0}),R.delete(o)}}async function Tt(t,n,r,i,a){r===`npx`&&await xt(t.env,t.folder,[`cache`,`add`,i.package],a);let o=z(t.home,n.id);await S(o,{recursive:!0});let s={kind:r,version:n.version,package:i.package,command:null,args:yt(r,i).args,env:i.env,at:(/* @__PURE__ */ new Date()).toISOString()};return e(B(t.home,n.id),`${JSON.stringify(s,null,2)}\n`),s}var Et=class{host;jobs=/* @__PURE__ */ new Map;constructor(e){this.host=e}job(e){return this.jobs.get(e)?.job??null}busy(){return[...this.jobs.values()].some(e=>e.job.state===`running`)}start(e){let t=this.jobs.get(e.id);if(t?.job.state===`running`)return t.job;let n={kind:`install`,state:`running`,percent:null,error:null},r=new AbortController,i=setTimeout(()=>r.abort(),12e5);i.unref();let a=this.install(e,r.signal,n).then(()=>{this.jobs.delete(e.id)}).catch(e=>{n.state=`failed`,n.percent=null,n.error=e instanceof L?{key:e.key,params:e.params,detail:e.message}:{key:`app.agents.reason.installFailed`,params:{},detail:e instanceof Error?e.message:String(e)}}).finally(()=>clearTimeout(i));return this.jobs.set(e.id,{job:n,abort:r,done:a}),n}async uninstall(e){if(this.jobs.get(e)?.job.state===`running`)throw new L(`app.agents.reason.busy`);this.jobs.delete(e);let t=z(this.host.home,e),n=[];try{n=g(t)}catch{return}for(let e of n)e!==`options.json`&&await T(s.join(t,e),{recursive:!0,force:!0})}dismiss(e){this.jobs.get(e)?.job.state===`failed`&&this.jobs.delete(e)}cancel(e){this.jobs.get(e)?.abort.abort()}async settled(e){await this.jobs.get(e)?.done}dispose(){for(let e of this.jobs.values())e.abort.abort()}async install(e,t,n){let r=vt(e,this.host.env,this.host.folder);if(r.kind===`blocked`)throw new L(`app.agents.blocked.${r.reason}`);r.kind===`binary`?await wt(this.host,e,r.entry,t,e=>{n.percent=e}):await Tt(this.host,e,r.kind,r.distribution,t)}};const V=[{id:`claude`,name:`Claude Code`,install:`npm install -g @agentclientprotocol/claude-agent-acp`,terminal:{binary:`claude`,install:`npm install -g @anthropic-ai/claude-code`},launches:[{command:`claude-agent-acp`,args:[]},{command:`claude-code-acp`,args:[]}]},{id:`codex`,name:`Codex`,install:`npm install -g @agentclientprotocol/codex-acp`,terminal:{binary:`codex`,install:`npm install -g @openai/codex`},launches:[{command:`codex-acp`,args:[]}]},{id:`gemini`,name:`Gemini CLI`,install:`npm install -g @google/gemini-cli`,terminal:{binary:`gemini`,install:`npm install -g @google/gemini-cli`},launches:[{command:`gemini`,args:[`--experimental-acp`]}]},{id:`opencode`,name:`OpenCode`,install:`npm install -g opencode-ai`,terminal:{binary:`opencode`,install:`npm install -g opencode-ai`},launches:[{command:`opencode`,args:[`acp`]}]}];function Dt(){return V.map(e=>({id:e.id,name:e.name,binary:e.terminal.binary,install:e.terminal.install}))}function Ot(e){let t=new Set(V.map(e=>e.id));return H(e).filter(e=>!t.has(e.id)).map(e=>({id:e.id,name:e.name,command:e.command,args:e.args??[],env:e.env??{}}))}const kt=/* @__PURE__ */ new Map;function At(e){let t=kt.get(e);return t||(t=new ut(e),kt.set(e,t)),t}function H(e){try{return new n(e).read().agents??[]}catch{return[]}}function jt(e){let t=H(e),n=At(e).read(),r=new Map(t.map(e=>[e.id,e])),i=[],a=/* @__PURE__ */ new Set;for(let e of n.registry.agents){let t=V.find(t=>t.id===e.id)??null,o=r.get(e.id)??null;i.push({id:e.id,name:o?.name??t?.name??e.name,source:o?`custom`:t?`preset`:`registry`,registry:o?null:e,preset:o?null:t,custom:o,icon:n.icons[e.registryId]??null}),a.add(e.id)}for(let e of V){if(a.has(e.id))continue;let t=r.get(e.id)??null;i.push({id:e.id,name:t?.name??e.name,source:t?`custom`:`preset`,registry:null,preset:t?null:e,custom:t,icon:null}),a.add(e.id)}for(let e of t)a.has(e.id)||i.push({id:e.id,name:e.name,source:`custom`,registry:null,preset:null,custom:e,icon:null});return i}function Mt(e,t,n){if(e.preset){for(let r of e.preset.launches){let i=I(r.command,t,n);if(i)return{id:e.id,name:e.name,command:i,args:r.args,env:{}}}return null}let r=qe(),i=e.registry&&r?e.registry.binary[r]:void 0;if(!i||!e.registry)return null;let a=s.basename(i.cmd.replace(/\\/g,`/`));if(a===``||a.startsWith(`.`))return null;let o=I(a,t,n);return o?{id:e.id,name:e.name,command:o,args:i.args,env:i.env}:null}function Nt(e,t,n,r){if(e.custom)return null;let i=_t(n,e.id);if(!i)return null;if(i.kind===`binary`)return i.command?{id:e.id,name:e.name,command:i.command,args:i.args,env:i.env}:null;let a=I(i.kind,t,r);if(!a)return null;let o=i.kind===`npx`?e.registry?.npx:e.registry?.uvx;if(o&&o.package===i.package){let t=yt(i.kind,o);return{id:e.id,name:e.name,command:a,args:t.args,env:t.env}}return{id:e.id,name:e.name,command:a,args:i.args,env:i.env}}function Pt(e,t,n,r){if(e.custom){let n=I(e.custom.command,t,r);return n?{id:e.id,name:e.custom.name,command:n,args:e.custom.args??[],env:e.custom.env??{}}:null}return Nt(e,t,n,r)??Mt(e,t,r)}function Ft(e,t,n,r){return e.custom?I(e.custom.command,t,r)===null?null:`custom`:Nt(e,t,n,r)?_t(n,e.id)?.kind===`binary`?`download`:`package`:Mt(e,t,r)===null?null:`path`}function It(e){try{return new n(e).enabledAgents()}catch{return null}}function Lt(e){let t=H(e).map(e=>e.id);return[.../* @__PURE__ */ new Set([...V.map(e=>e.id),...t])]}function Rt(e){return It(e)??Lt(e)}function zt(e,t,n){let r=new Set(Rt(t)),i=Bt(t),a=jt(t).filter(e=>r.has(e.id)),o=new Map(Rt(t).map((e,t)=>[e,t]));return a.sort((e,t)=>e.id===i?-1:t.id===i?1:(o.get(e.id)??0)-(o.get(t.id)??0)),a.map(r=>({id:r.id,name:r.name,available:Pt(r,e,t,n)!==null,source:r.source,install:r.source===`preset`?r.preset?.install??null:null,icon:r.icon}))}function Bt(e){try{return new n(e).text(`agentSelected`)}catch{return null}}function Vt(e,t){try{new n(e).setText(`agentSelected`,t)}catch{}}function Ht(e,t){try{return new n(e).agentChoice(t)}catch{return{}}}function Ut(e,t,r,i){try{new n(e).rememberAgentChoice(t,r,i)}catch{}}function Wt(e,t){let n=e.filter(e=>e.available),r=Bt(t);return n.find(e=>e.id===r)?.id??n[0]?.id??null}function Gt(e,t){return H(t).some(t=>t.id===e)?null:V.find(t=>t.id===e)?.install??null}function Kt(e,t,n,r){let i=jt(n).find(t=>t.id===e);return i?Pt(i,t,n,r):null}function qt(e,t){let n={};for(let[t,r]of Object.entries(e))r!==void 0&&!t.startsWith(`PENSTOCK_`)&&(n[t]=r);return{...n,...t}}const Jt=`app.agent.exited`,Yt=`app.agent.installFailed`,Xt=`app.agent.npmMissing`,Zt=`app.agent.unpublished`,Qt=`app.agent.serviceExited`,$t=`app.agent.serviceNotStarted`,en=/\bnpm (?:error|ERR!)|\b(?:ETARGET|E404|ENOTFOUND|EAI_AGAIN|ECONNREFUSED|ETIMEDOUT)\b/i,tn=/\bETARGET\b|\bE404\b|No matching version found/i,nn=/\bneeds Node\.js\b|\bnot recognized as an internal or external command\b|\b(?:npm|npx|node): (?:command )?not found\b|\bcommand not found: (?:npm|npx|node)\b/i,rn=/* @__PURE__ */ new Set([Jt,Yt,Xt,Zt,Qt,$t]);function an(e){return en.test(e)?Yt:Jt}function on(e){return tn.test(e)?Zt:nn.test(e)?Xt:en.test(e)?Yt:Qt}function sn(e){return e!==0}function U(e){switch(e.kind){case`timeout`:return{key:`app.agent.timeout`,detail:``};case`spawn`:return{key:e.code===`ENOENT`?Xt:$t,detail:i(e.message)};case`exited`:{let n=e.code===null?`signal ${e.signal??`unknown`}`:t(`app.agent.exitCode`,{code:e.code}),r=i(e.tail);return{key:on(e.tail),detail:r===``?n:`${n}: ${r}`}}}}function cn(e){return rn.has(e)}function ln(e){return cn(e.key)?t(e.key):t(e.key,{detail:e.detail})}const un=[`model`,`thought_level`],dn=[`model`,`thought_level`,`model_config`,`mode`];function W(e,t=400){return typeof e==`string`&&e!==``?e.slice(0,t):null}function fn(e,t){if(typeof e!=`object`||!e)return null;let n=e,r=W(n.value,200);return r===null?null:{id:r,name:W(n.name)??r,description:W(n.description),group:t}}function pn(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(typeof n!=`object`||!n)continue;let e=n;if(Array.isArray(e.options)){let n=W(e.name)??W(e.group);for(let r of e.options){let e=fn(r,n);e&&t.push(e)}}else{let e=fn(n,null);e&&t.push(e)}if(t.length>=300)break}return t.slice(0,300)}function mn(e,n){let r=[];if(Array.isArray(e))for(let t of e){if(typeof t!=`object`||!t||t.type!==`select`)continue;let e=W(t.id,200),n=W(t.currentValue,200),i=pn(t.options);if(e!==null&&n!==null&&i.length!==0&&(r.push({id:e,name:W(t.name)??e,description:W(t.description),category:W(t.category,60)??`other`,current:n,values:i,legacy:!1}),r.length>=12))break}if(r.length===0&&n&&Array.isArray(n.availableModes)){let e=n.availableModes.map(e=>fn({value:e.id,name:e.name,description:e.description},null)).filter(e=>e!==null),i=W(n.currentModeId,200);e.length>0&&i!==null&&r.push({id:`mode`,name:t(`app.agent.modeName`),description:null,category:`mode`,current:i,values:e,legacy:!0})}return hn(r)}function hn(e){let t=e=>{let t=dn.indexOf(e.category);return t<0?dn.length:t};return e.map((e,t)=>({option:e,index:t})).sort((e,n)=>t(e.option)-t(n.option)||e.index-n.index).map(e=>e.option)}function gn(e){return{id:e.id,name:e.name,description:e.description,category:e.category,current:e.current,values:e.values}}function _n(e,t){return e.values.some(e=>e.id===t)}function vn(e){if(typeof e!=`object`||!e)return null;let t=e,n=W(t.id,200);return n===null?null:{id:n,name:W(t.name)??n,description:W(t.description),group:W(t.group)}}function yn(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(typeof n!=`object`||!n)continue;let e=n,r=W(e.id,200),i=W(e.current,200),a=Array.isArray(e.values)?e.values.slice(0,300).map(vn).filter(e=>e!==null):[];if(r!==null&&i!==null&&a.length!==0&&(t.push({id:r,name:W(e.name)??r,description:W(e.description),category:W(e.category,60)??`other`,current:i,values:a,legacy:e.legacy===!0}),t.length>=12))break}return t}const G=2e4,bn=`plan`,xn={pending:`pending`,in_progress:`running`,completed:`done`,failed:`failed`},Sn={allow_once:`allow`,allow_always:`allowAlways`,reject_once:`reject`,reject_always:`rejectAlways`};function Cn(e){if(e==null)return e;if(typeof e==`string`)return e.length>G?e.slice(0,G):e;let t;try{t=JSON.stringify(e)}catch{return}if(t!==void 0)return t.length>G?t.slice(0,G):e}function wn(e,t){let n=[];for(let r of e??[])r.type===`diff`&&n.push({path:t(r.path),oldText:r.oldText??null,newText:r.newText});return n}function Tn(e){let t=[];for(let n of e??[])n.type===`content`&&n.content.type===`text`&&t.push(n.content.text);return t.length>0?t.join(`
592
592
  `):void 0}function En(e,t){return(e??[]).map(e=>({path:t(e.path),line:e.line??null}))}function Dn(e,t){return[.../* @__PURE__ */ new Set([...e.map(e=>e.path),...t.map(e=>e.path)])]}function On(e,t,n){let r=`content`in e?e.content:void 0,i=r?wn(r,n):t?.diffs??[],a=e.locations?En(e.locations,n):t?.locations??[],o={...t?.raw};if(e.rawInput!==void 0&&(o.input=Cn(e.rawInput)),e.rawOutput!==void 0)o.output=Cn(e.rawOutput);else if(r&&o.output===void 0){let e=Tn(r);e!==void 0&&(o.output=Cn(e))}let s={id:e.toolCallId,title:e.title??t?.title??e.toolCallId,kind:e.kind??t?.kind??`other`,status:e.status?xn[e.status]:t?.status??`pending`,diffs:i,paths:Dn(i,a),locations:a};return(o.input!==void 0||o.output!==void 0)&&(s.raw=o),s}function kn(e,t,n,r,i){return{id:e,tool:On(t,r,i),options:n.map(e=>({id:e.optionId,label:e.name,kind:Sn[e.kind]}))}}function An(e){return t=>t.kind!==`tool`||t.tool.status!==`running`&&t.tool.status!==`pending`?t:{...t,tool:{...t.tool,status:e}}}function jn(e){return e===`completed`?`done`:e===`in_progress`?`running`:`pending`}var Mn=class{entries=[];open=null;counter=0;list(){return this.entries}clear(){this.entries=[],this.open=null}restore(e,t=`stopped`){this.entries=e.slice(-400).map(An(t)),this.open=null;for(let e of this.entries){let t=Number(e.id.split(`:`)[1]);e.kind!==`tool`&&e.kind!==`plan`&&e.kind!==`receipt`&&Number.isInteger(t)&&t>this.counter&&(this.counter=t)}}stopRunning(){let e=[];for(let t of this.entries)t.kind===`tool`&&(t.tool.status===`running`||t.tool.status===`pending`)&&(t.tool={...t.tool,status:`stopped`},e.push(t.tool));return e}failRunning(){let e=[];for(let t of this.entries)t.kind===`tool`&&(t.tool.status===`running`||t.tool.status===`pending`)&&(t.tool={...t.tool,status:`failed`},e.push(t.tool));return e}find(e){return this.entries.find(t=>t.id===e)}tool(e){let t=this.find(`tool:${e}`);return t?.kind===`tool`?t.tool:void 0}message(e,t,n){let r=this.open;if(r&&r.kind===e&&r.messageId===n){let n=this.find(r.id);if(n&&n.kind===e)return n.text+=t,n}this.counter+=1;let i={kind:e,id:`${e}:${this.counter}`,text:t};return this.open={kind:e,id:i.id,messageId:n},this.add(i)}upsertTool(e){this.open=null;let t=`tool:${e.id}`,n=this.find(t);return n&&n.kind===`tool`?(n.tool=e,n):this.add({kind:`tool`,id:t,tool:e})}plan(e){this.open=null;let t=e.map(e=>({text:e.content,status:jn(e.status)})),n=this.find(bn);return n&&n.kind===`plan`?(n.items=t,n):this.add({kind:`plan`,id:bn,items:t})}receipt(e,t){this.open=null;let n=this.find(e);return n&&n.kind===`receipt`?(n.receipt=t,n):this.add({kind:`receipt`,id:e,receipt:t})}notice(e){return this.open=null,this.counter+=1,this.add({kind:`notice`,id:`notice:${this.counter}`,text:e})}closeMessage(){this.open=null}add(e){return this.entries.push(e),this.entries.length>400&&this.entries.splice(0,this.entries.length-400),e}};function Nn(e){let t=e.split(/\r?\n/).map(e=>e.trim()).find(e=>e!==``)??``,n=Array.from(t);return n.length>80?n.slice(0,80).join(``).trimEnd():t}function Pn(e){return e.kind===`tool`?{kind:`tool`,id:e.id,tool:e.tool}:e.kind===`plan`?{kind:`plan`,id:e.id,items:e.items}:e.kind===`receipt`?{kind:`receipt`,id:e.id,receipt:e.receipt}:{kind:e.kind,id:e.id,text:e.text}}var Fn=class e{id;title;agentId;sessionId;updated;transcript=new Mn;queue=[];questions=[];turn=null;turns=0;connecting=!1;checking=!1;checkStopped=!1;loop=null;failure=null;process=null;fenced=!1;grants=/* @__PURE__ */ new Map;rawInputs=/* @__PURE__ */ new Map;files=[];briefed=null;options=[];wanted=/* @__PURE__ */ new Map;configured=Promise.resolve();constructor(e,t,n,r=null,i=null,a=[]){this.id=e,this.files=a,this.agentId=t,this.updated=n,this.title=r,this.sessionId=i}static from(t){let n=new e(t.id,t.agentId,t.updated,t.title,t.sessionId,t.files);return n.transcript.restore(t.entries,t.running?`failed`:`stopped`),n.options=t.options,n.queue=t.queue.map(e=>({...e})),t.running&&(n.failure={key:`app.agent.serverGone`,detail:``}),n}shownOptions(){return this.options.map(e=>{let t=this.wanted.get(e.id);return gn(t!==void 0&&e.values.some(e=>e.id===t)?{...e,current:t}:e)})}addFile(e){if(e===``||e.startsWith(`..`)||e.startsWith(`/`)||/^[A-Za-z]:[\\/]/.test(e)||e.includes(`\0`)||this.files.at(-1)===e)return!1;let t=this.files.indexOf(e);return t>=0&&this.files.splice(t,1),this.files.push(e),this.files.length>200&&this.files.splice(0,this.files.length-200),!0}get state(){return this.turn?this.questions.length>0?`waiting`:this.connecting?`connecting`:`working`:this.checking?`working`:this.failure?`failed`:`idle`}get worth(){return this.transcript.list().length>0||this.title!==null}stored(){return{id:this.id,title:this.title,agentId:this.agentId,sessionId:this.sessionId,updated:this.updated,entries:this.transcript.list(),files:this.files,options:this.options,running:this.turn!==null,queue:this.queue.map(e=>({...e}))}}step(){let e=this.transcript.list().find(e=>e.kind===`plan`);if(!e||e.kind!==`plan`||e.items.length===0)return null;let n=e.items.length,r=e.items.findIndex(e=>e.status===`running`),i=r>=0?r:e.items.findIndex(e=>e.status===`pending`);return t(`app.agent.stepOf`,{step:Math.min(n,(i>=0?i:n-1)+1),total:n})}detail(){switch(this.state){case`waiting`:return t(`app.agent.waitingForYou`);case`working`:return this.checking&&this.turn===null?t(`app.receipt.checking`):this.step();case`failed`:return this.failure?ln(this.failure):null;default:return null}}dto(){return{id:this.id,title:this.title??t(`app.agent.newChat`),state:this.state,agentId:this.agentId,updated:new Date(this.updated).toISOString(),detail:this.detail(),files:[...this.files]}}describe(){return{chat:this.dto(),entries:this.transcript.list().map(Pn),queue:this.queue.map(e=>({id:e.id,text:e.text})),permission:this.questions[0]?.permission??null,error:this.failure,options:this.shownOptions()}}};const In=/^[\w-]{1,64}$/,Ln=8388608;function Rn(e){return b(`sha256`).update(e).digest(`hex`).slice(0,16)}function K(e){return In.test(e)}function zn(e){if(typeof e!=`object`||!e)return null;let t=e;if(typeof t.id!=`string`||typeof t.kind!=`string`)return null;if(t.kind===`user`||t.kind===`agent`||t.kind===`thought`||t.kind===`notice`)return typeof t.text==`string`?{kind:t.kind,id:t.id,text:t.text}:null;if(t.kind===`tool`&&t.tool!==null&&typeof t.tool==`object`)return{kind:`tool`,id:t.id,tool:t.tool};if(t.kind===`plan`&&Array.isArray(t.items))return{kind:`plan`,id:t.id,items:t.items};if(t.kind===`receipt`&&t.receipt!==null&&typeof t.receipt==`object`){let e=o(JSON.stringify(t.receipt));return`receipt`in e?{kind:`receipt`,id:t.id,receipt:e.receipt}:null}return null}function Bn(e){if(typeof e!=`object`||!e)return null;let t=e;return typeof t.id!=`string`||t.id===``||typeof t.text!=`string`||t.text===``?null:{id:t.id,text:t.text,context:typeof t.context==`string`?t.context:null}}function Vn(e){if(typeof e!=`object`||!e)return null;let t=e;if(typeof t.id!=`string`||!K(t.id)||typeof t.agentId!=`string`)return null;let n=typeof t.updated==`number`&&t.updated>=0&&t.updated<=864e13?t.updated:0,r=Array.isArray(t.entries)?t.entries.map(zn).filter(e=>e!==null):[];return{id:t.id,title:typeof t.title==`string`&&t.title!==``?t.title:null,agentId:t.agentId,sessionId:typeof t.sessionId==`string`&&t.sessionId!==``?t.sessionId:null,updated:n,entries:r,files:Array.isArray(t.files)?t.files.filter(e=>typeof e==`string`&&e!==``).slice(-200):[],options:yn(t.options),running:t.running===!0,queue:Array.isArray(t.queue)?t.queue.map(Bn).filter(e=>e!==null).slice(0,20):[]}}function Hn(e){if(e.kind!==`tool`)return e;let{raw:t,...n}=e.tool;return{...e,tool:{...n,diffs:[]}}}function Un(e){return e.map(Hn)}function Wn(e,t){let n=Ln-Buffer.byteLength(JSON.stringify({...e,entries:[]}))-1,r=[];for(let e=t.length-1;e>=0;--e){let i=Buffer.byteLength(JSON.stringify(t[e]))+1;if(i>n)break;n-=i,r.unshift(t[e])}return r}var Gn=class{directory;constructor(e,t){this.directory=s.join(e,`chats`,Rn(t))}fileOf(e){return s.join(this.directory,`${e}.json`)}ids(){try{return g(this.directory).filter(e=>e.endsWith(`.json`)).map(e=>s.basename(e,`.json`))}catch{return[]}}read(e){if(!K(e))throw Error(`not a chat`);let t=this.fileOf(e),n=y(t);if(n.size>Ln)throw Error(`too large`);let r=Vn(JSON.parse(h(t,`utf8`)));if(!r||r.id!==e)throw Error(`not a chat`);return r.updated>0?r:{...r,updated:n.mtimeMs}}sweep(){let e;try{e=g(this.directory)}catch{return}for(let t of e){if(!t.endsWith(`.tmp`))continue;let e=s.join(this.directory,t),n=y(e,{throwIfNoEntry:!1})?.mtimeMs??Date.now();Date.now()-n>6e4&&v(e,{force:!0})}}load(){this.sweep();let e=[];for(let n of this.ids())try{e.push(this.read(n))}catch(e){console.warn(t(`app.agent.log.skipped`,{file:this.fileOf(n),reason:e instanceof Error?e.message:String(e)}))}return e}save(t){if(!K(t.id))return t;p(this.directory,{recursive:!0});let n={...t,entries:Wn(t,Un(t.entries))};return e(this.fileOf(t.id),`${JSON.stringify(n)}\n`,384),n}remove(e){K(e)&&v(this.fileOf(e),{force:!0})}},q=class extends Error{status;failure;constructor(e,t,n=null){super(t),this.status=e,this.failure=n}};function Kn(e,n,r){return new q(e,t(n,r))}function J(e,t){return new q(e,ln(t),t)}const Y={apiVersion:2,directory:`agent-hub`,graceMs:5e3,quietMs:6e5,beatMs:3e4,startMs:9e4,lockStaleMs:12e4,probeMs:3e3,pollMs:50,ping:{method:`GET`,path:`/hub/ping`},retire:{method:`POST`,path:`/hub/retire`},shutdown:{method:`POST`,path:`/hub/shutdown`},leaveMs:5e3};var X=class extends Error{};const qn=/^[\w-]{8,256}$/;function Z(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function Q(e){return new Promise(t=>setTimeout(t,e))}function Jn(e){try{return _.native(e)}catch{return s.resolve(e)}}function Yn(e,t){return s.join(e,Y.directory,`${Rn(Jn(t))}.json`)}function Xn(e){return e.replace(/\.json$/,`.lock`)}function Zn(e){return e.replace(/\.json$/,`.log`)}function Qn(e){try{return JSON.parse(e)}catch{return null}}function $n(e){if(typeof e!=`object`||!e)return null;let t=e;return typeof t.pid!=`number`||!Number.isInteger(t.pid)||t.pid<=0||typeof t.port!=`number`||!Number.isInteger(t.port)||t.port<=0||t.port>65535||typeof t.token!=`string`||!qn.test(t.token)||typeof t.apiVersion!=`number`||typeof t.cliVersion!=`string`||typeof t.startedAt!=`string`?null:{pid:t.pid,port:t.port,token:t.token,apiVersion:t.apiVersion,cliVersion:t.cliVersion,startedAt:t.startedAt}}function $(e){try{return $n(JSON.parse(h(e,`utf8`)))}catch{return null}}function er(t,n){p(s.dirname(t),{recursive:!0,mode:448}),e(t,`${JSON.stringify(n)}\n`,384)}function tr(e,t){let n=$(e);n&&n.pid===t.pid&&n.token===t.token&&v(e,{force:!0})}function nr(e,t){return ie(`sha256`,e).update(t).digest(`hex`)}const rr=/(^|\s)agent\s+serve(\s|$)/;function ir(e){return e?.cause?.code===`ECONNREFUSED`}function ar(e,t,n){if(typeof e!=`object`||!e)return null;let r=e;if(r.pid!==t.pid||typeof r.apiVersion!=`number`||typeof r.compatible!=`boolean`||typeof r.proof!=`string`)return null;let i=Buffer.from(nr(t.token,n)),a=Buffer.from(r.proof);return a.length!==i.length||!ae(a,i)?null:{pid:r.pid,apiVersion:r.apiVersion,compatible:r.compatible,proof:r.proof}}function or(e){if(process.platform===`win32`)return`unknown`;try{let t=te(`ps`,[`-o`,`command=`,`-p`,String(e)],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]});return rr.test(t)?`penstock`:`other`}catch{return`unknown`}}async function sr(e,t){if(!Z(e.pid))return{kind:`gone`};let n=x(16).toString(`hex`),r;try{r=await fetch(`http://127.0.0.1:${e.port}${Y.ping.path}?apiVersion=${t}&nonce=${n}`,{signal:AbortSignal.timeout(Y.probeMs)})}catch(e){return ir(e)?{kind:`gone`}:{kind:`silent`}}if(!r.ok)return{kind:`silent`};let i;try{i=await r.json()}catch{return{kind:`silent`}}let a=ar(i,e,n);return a?{kind:`up`,identity:a}:{kind:`silent`}}async function cr(e,t){let n=$(Yn(e,t));if(!n)return null;let r=await sr(n,Y.apiVersion);return r.kind===`up`||r.kind===`silent`&&or(n.pid)===`penstock`?n:null}async function lr(e){await fetch(`http://127.0.0.1:${e.port}${Y.retire.path}`,{method:`POST`,headers:{Authorization:`Bearer ${e.token}`},signal:AbortSignal.timeout(Y.probeMs)}).catch(()=>void 0)}async function ur(e,n,r){if(n.compatible)return{pid:e.pid,port:e.port,token:e.token};throw n.apiVersion<r?(await lr(e),new q(409,t(`app.agent.retiring`))):new q(409,t(`app.agent.updateNeeded`))}async function dr(e,t,n){let r=performance.now()+n;for(;;){let n=await sr(e,t);if(n.kind===`gone`)return null;if(n.kind===`up`)return ur(e,n.identity,t);if(performance.now()>=r){if(or(e.pid)===`other`)return null;throw J(503,U({kind:`timeout`}))}await Q(Y.pollMs)}}function fr(e){let t=`${e}.${process.pid}.${x(4).toString(`hex`)}.stale`;try{ee(e,t)}catch{return!1}let n=y(t,{throwIfNoEntry:!1})?.mtimeMs??0;if(Date.now()-n<=Y.lockStaleMs){try{ee(t,e)}catch{v(t,{recursive:!0,force:!0})}return!1}return v(t,{recursive:!0,force:!0}),!0}async function pr(e,t,n){let r=performance.now()+t+Y.lockStaleMs;for(p(s.dirname(e),{recursive:!0,mode:448});;){try{p(e);break}catch(e){if(e.code!==`EEXIST`)throw e}if(!fr(e)){if(performance.now()>=r)throw J(503,U({kind:`timeout`}));await Q(Y.pollMs)}}try{return await n()}finally{v(e,{recursive:!0,force:!0})}}function mr(e,n){try{return Se(e,n.platform)}catch(e){throw e instanceof E?new q(500,t(`app.agent.unsafe`)):e}}function hr(e,t,n,r){let i=mr(t,n);p(s.dirname(e),{recursive:!0,mode:448});let a=m(Zn(e),`w`,384);try{let e=ne(i.command,i.args,{detached:!0,stdio:[`ignore`,a,a],env:{...n.env??process.env,...t.env,PENSTOCK_HOME:n.home},windowsHide:!0,windowsVerbatimArguments:i.verbatim});return e.on(`error`,e=>{r.error=e}),e.on(`exit`,(e,t)=>{r.exit={code:e,signal:t}}),e.unref(),e.pid}finally{l(a)}}function gr(e,t=`SIGTERM`){if(process.platform===`win32`)re(`taskkill`,[`/T`,`/F`,`/PID`,String(e)],{windowsHide:!0,stdio:`ignore`});else try{process.kill(-e,t)}catch{try{process.kill(e,t)}catch{return}}}async function _r(e){await fetch(`http://127.0.0.1:${e.port}${Y.shutdown.path}`,{method:Y.shutdown.method,headers:{Authorization:`Bearer ${e.token}`},signal:AbortSignal.timeout(Y.probeMs)}).catch(()=>void 0)}async function vr(e,t){if(t===void 0)return;let n=$(e);if(!n||n.pid!==t){gr(t);return}await _r(n);let r=performance.now()+Y.leaveMs;for(;Z(t)&&performance.now()<r;)await Q(Y.pollMs);Z(t)&&gr(t)}function yr(e){try{return h(Zn(e),`utf8`).slice(-2e3)}catch{return``}}function br(e,t){return e.error?U({kind:`spawn`,code:e.error.code,message:e.error.message}):e.exit&&sn(e.exit.code)?U({kind:`exited`,code:e.exit.code,signal:e.exit.signal,tail:yr(t)}):null}async function xr(e,t,n,r){let i={error:null,exit:null},a=hr(e,t,n,i),o=performance.now()+(n.startMs??Y.startMs);for(;;){let t=$(e);if(t){let e=await sr(t,r);if(e.kind===`up`&&e.identity.compatible)return{pid:t.pid,port:t.port,token:t.token}}let n=br(i,e);if(n)throw J(500,n);if(performance.now()>=o)throw await vr(e,a),J(504,U({kind:`timeout`}));await Q(Y.pollMs)}}async function Sr(e,t,n,r){let i=null;for(let a of t)try{return await xr(e,a,n,r)}catch(e){if(!(e instanceof q)||e.failure?.key!==`app.agent.unpublished`)throw e;i=e.failure}throw i===null?Kn(500,`app.agent.notFound`):J(500,i)}function Cr(e,t){return t!==null&&e.pid===t.pid&&e.port===t.port&&e.token===t.token}async function wr(e,t,n,r){let i=Yn(n.home,e),a=n.startMs??Y.startMs,o=$(i);if(o){let e=await dr(o,r,a);if(e)return e}return pr(Xn(i),a,async()=>{let s=$(i);if(s&&!Cr(s,o)){let e=await dr(s,r,a);if(e)return e}return v(i,{force:!0}),Sr(i,t(e),n,r)})}function Tr(e,t){if(t===void 0)return e;let n=new URLSearchParams(t).toString();return n===``?e:`${e}?${n}`}function Er(e,n){let r=Qn(e);return typeof r?.message==`string`&&r.message!==``?r.message:t(`app.agent.failed`,{detail:String(n)})}function Dr(e,n){let r=Qn(e);return new q(n,typeof r?.message==`string`&&r.message!==``?r.message:t(`app.agent.failed`,{detail:String(n)}),typeof r?.key==`string`&&typeof r?.detail==`string`?{key:r.key,detail:r.detail}:null)}async function Or(e,t,n,r,i){let a={Authorization:`Bearer ${e.token}`},o=r==null?void 0:JSON.stringify(r);o!==void 0&&(a[`Content-Type`]=`application/json`);let s,c;try{let r=await fetch(`http://127.0.0.1:${e.port}${n}`,{method:t,headers:a,body:o,signal:i});s=r.status,c=await r.text()}catch(e){throw i?.aborted?e:new X(e instanceof Error?e.message:String(e))}if(s===401)throw new X(Er(c,s));if(s<200||s>=300)throw Dr(c,s);if(s!==204&&c!==``)return JSON.parse(c)}var kr=class{folder;spawnOf;options;version;link=null;attaching=null;beater=null;closed=!1;constructor(e,t,n){this.folder=e,this.spawnOf=t,this.options=n,this.version=n.apiVersion??Y.apiVersion}get attached(){return this.link!==null}connect(){return this.link?Promise.resolve(this.link):(this.attaching??=wr(this.folder,this.spawnOf,this.options,this.version).then(e=>(this.closed||(this.link=e,this.beat()),e)).finally(()=>{this.attaching=null}),this.attaching)}async request(e,n,r,i={}){let a=Tr(n,i.query);try{return await this.send(e,a,r,i.signal)}catch(n){if(!(n instanceof X))throw n;if(e!==`GET`)throw new q(503,t(`app.agent.hubLost`));return this.send(e,a,r,i.signal)}}close(){this.closed=!0,this.stopBeat(),this.link=null}async send(e,t,n,r){let i=await this.connect();try{return await Or(i,e,t,n,r)}catch(e){throw e instanceof X&&this.link===i&&this.forget(),e}}forget(){this.link=null,this.stopBeat()}beat(){this.beater||(this.beater=setInterval(()=>this.beatOnce(),this.options.beatMs??Y.beatMs),this.beater.unref())}beatOnce(){let e=this.link;e?Or(e,Y.ping.method,`${Y.ping.path}?apiVersion=${this.version}`,void 0).catch(t=>{t instanceof X&&this.link===e&&this.forget()}):this.stopBeat()}stopBeat(){this.beater&&clearInterval(this.beater),this.beater=null}};const Ar=/^--(inspect|debug)/;function jr(...e){let t=process.argv[1];if(!t)return null;let n={command:process.execPath,args:[...process.execArgv.filter(e=>!Ar.test(e)),t,...e]};return process.versions.electron&&(n.env={ELECTRON_RUN_AS_NODE:`1`}),n}function Mr(){return jr(`mcp`)}export{Ot as A,Ut as B,_n as C,an as D,hn as E,jt as F,z as G,Bt as H,Pt as I,I as J,_t as K,Kt as L,Rt as M,Gt as N,zt as O,Ft as P,Se as Q,At as R,gn as S,yn as T,Dt as U,Ht as V,Et as W,tt as X,N as Y,E as Z,Pn as _,Yn as a,On as b,Z as c,er as d,q as f,Fn as g,Gn as h,kr as i,Wt as j,qt as k,tr as l,J as m,Mr as n,nr as o,Kn as p,vt as q,Y as r,cr as s,jr as t,gr as u,Nn as v,mn as w,un as x,kn as y,Vt as z};
@@ -0,0 +1 @@
1
+ export{r as migrateCommand}from"./chunk-migrate-DwWg0k5_.js";
@@ -0,0 +1,16 @@
1
+ import{r as e,t}from"./chunk-translator-DNm9zRpP.js";import{h as n}from"./chunk-codeScan-C09My9xv.js";import{i as r}from"./chunk-xml-rMelkRIV.js";import{r as i}from"./chunk-types-mxHL9XQt.js";import{c as a,r as o,u as s}from"./chunk-codeFactSet-DiAYqvbb.js";import{a as c,n as l,r as u,t as d}from"./chunk-convert-Ce1MZmsE.js";import{c as f,i as p,n as m,o as h,s as g,t as _}from"./chunk-migrateApply-e8O9oZXP.js";import{_ as ee,g as v,v as y}from"./chunk-commands-B8YVT41b.js";import{c as b}from"./chunk-codeLinks-BrGduhsm.js";import{a as x,i as S,r as C,t as w}from"./chunk-context-rCJvBM9p.js";import{_ as T,o as E,t as D}from"./chunk-load-rfn3E0t5.js";import{t as te}from"./chunk-diagrams-CtGMGTa8.js";import{n as ne,r as re}from"./chunk-report-w7YZwhyg.js";import{t as O}from"./chunk-table-BOiaGWwY.js";import{t as k}from"./chunk-plural-Dn-7ulHf.js";import{n as A}from"./chunk-status-CmYxwOCn.js";import{s as j,t as ie}from"./chunk-features-C6o8of19.js";import{u as ae}from"./chunk-license-BG88gpDZ.js";import{a as M,c as oe,i as se,l as ce,r as le}from"./chunk-selection-DG43DJ2G.js";import{a as ue}from"./chunk-safeWrite-RgLbdyzl.js";import N from"node:path";import{existsSync as de,lstatSync as fe,mkdirSync as P,readFileSync as F,realpathSync as pe,statSync as me,writeFileSync as I}from"node:fs";const L=[`ready`,`converts`,`needs-work`,`blocked`],R={ready:`ready`,converts:`converts`,"needs-work":`needsWork`,blocked:`blocked`};function z(t){return e(`app.migration.report.status.${R[t]}`)}function B(t){return e(`app.migration.report.meaning.${R[t]}`)}const V=[`workers`,`expressions`,`scripts`,`listeners`,`forms`,`calledProcesses`,`decisions`];function H(t){return e(`app.migration.report.effort.${t}`)}const U={error:0,warning:1,info:2};function he(t){return t.name??t.root.split(/[\\/]/).filter(Boolean).pop()??e(`app.migration.report.theProject`)}function W(t){return e(`app.migration.report.heading`,{name:he(t)})}function ge(t,n){return e(n?`app.migration.report.targetDated`:`app.migration.report.target`,{target:t,on:n?e(`app.migration.report.onDate`,{date:n}):``})}function _e(t){return e(`app.migration.report.fileCount`,{count:t})}function ve(t){return e(`app.migration.report.automatic`,{count:t})}function ye(t){let n=[...t.findings].sort((e,t)=>U[e.severity]-U[t.severity]);return{sections:[{title:e(`app.migration.report.needsWork`),findings:n.filter(e=>e.conversion===`manual`)},{title:e(`app.migration.report.reviewAfter`),findings:n.filter(e=>e.conversion===`review`)}].filter(e=>e.findings.length>0),automatic:t.findings.filter(e=>e.conversion===`automatic`).length}}function be(t,r){return t.source?`${n(r,t.source.path)}:${t.source.line}`:e(`app.migration.report.notInProject`)}function G(e){return e.replace(/\|/g,`\\|`).replace(/[\r\n]+/g,` `)}function xe(e){let t=G(e);return t.includes("`")?`\`\` ${t} \`\``:`\`${t}\``}function Se(t,r){let i=[`# ${W(r)}`,``];return i.push(`${ge(t.target,r.date)}`,``),t.source?(i.push(`## ${e(`app.migration.report.scope`)}`,``,`| ${e(`app.migration.report.columnStatus`)} | ${e(`app.migration.report.columnFiles`)} | ${e(`app.migration.report.columnMeaning`)} |`,`|---|---|---|`),L.forEach(e=>i.push(`| ${z(e)} | ${t.totals[e]} | ${B(e)} |`)),i.push(``,`## ${e(`app.migration.report.costs`)}`,``),V.forEach(e=>i.push(`- ${H(e)}: ${t.effort[e]}`)),i.push(``),t.blockers.length>0&&(i.push(`## ${e(`app.migration.report.blockers`)}`,``,e(`app.migration.report.blockersHint`),``),t.blockers.forEach(({path:t,finding:a})=>i.push(`- **${a.title}** ${e(`app.migration.report.blockerWhere`,{where:a.where,path:n(r.root,t),action:a.action})}`)),i.push(``)),i.push(`## ${e(`app.migration.report.files`)}`,``,`| ${e(`app.migration.report.columnFile`)} | ${e(`app.migration.report.columnStatus`)} | ${e(`app.migration.report.columnNeedsWork`)} | ${e(`app.migration.report.columnReview`)} | ${e(`app.migration.report.columnConverts`)} |`,`|---|---|---|---|---|`),t.files.forEach(e=>i.push(`| ${G(n(r.root,e.path))} | ${z(e.status)} | ${e.counts.manual} | ${e.counts.review} | ${e.counts.automatic} |`)),i.push(``),t.files.filter(e=>e.status!==`ready`).forEach(t=>{let{sections:a,automatic:o}=ye(t);i.push(`### ${G(n(r.root,t.path))}`,``),a.forEach(t=>{i.push(`**${t.title}**`,``),t.findings.forEach(t=>i.push(`- ${e(`app.migration.report.finding`,{where:t.where,title:t.title,action:t.action})}`)),i.push(``)}),o>0&&i.push(ve(o),``)}),t.code.length>0&&(i.push(`## ${e(`app.migration.report.code`)}`,``,e(`app.migration.report.codeHint`),``),i.push(`| ${e(`app.migration.report.columnValue`)} | ${e(`app.migration.report.columnWhere`)} | ${e(`app.migration.report.columnBecomes`)} | ${e(`app.migration.report.columnNotes`)} |`,`|---|---|---|---|`),t.code.forEach(e=>i.push(`| ${xe(e.value)} | ${G(be(e,r.root))} | ${G(e.becomes)} | ${G(e.notes.join(` `))} |`)),i.push(``)),t.apis.length>0&&(i.push(`## ${e(`app.migration.report.apis`)}`,``,e(`app.migration.report.apisHint`),``),t.apis.forEach(t=>i.push(`- ${e(`app.migration.report.apiImports`,{api:t.api,imports:t.imports,files:_e(t.files)})}`)),i.push(``)),t.dataMigration&&(i.push(`## ${e(`app.migration.report.dataMigration`)}`,``,`${t.dataMigration.detail} ${t.dataMigration.action}`,``),t.dataMigration.link&&i.push(e(`app.migration.report.dataMigrator`,{link:t.dataMigration.link}),``)),`${i.join(`
2
+ `)}`):(i.push(e(`app.migration.report.nothingToMigrate`),``),`${i.join(`
3
+ `)}\n`)}function Ce(i,a){let o=r,s=[`<!doctype html>`,`<html lang="${t()}">`,`<head>`,`<meta charset="utf-8">`,`<title>${o(W(a))}</title>`,`<style>
4
+ :root { color-scheme: light dark; --bg: #f7f8fa; --surface: #fff; --fg: #1e1f22; --muted: #6c707e; --border: #ebecf0; --accent: #3574f0; --error: #db5860; --warn: #c77d0a; --ok: #368746; }
5
+ @media (prefers-color-scheme: dark) { :root { --bg: #1e1f22; --surface: #2b2d30; --fg: #dfe1e5; --muted: #9da0a8; --border: #393b40; --accent: #548af7; --error: #f75464; --warn: #e5a13b; --ok: #57965c; } }
6
+ body { margin: 0; padding: 24px; background: var(--bg); color: var(--fg); font: 13px/1.5 ui-monospace, "JetBrains Mono", Menlo, Consolas, monospace; }
7
+ main { max-width: 960px; margin: 0 auto; }
8
+ h1 { font-size: 20px; margin: 0 0 4px; } h2 { font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em; color: var(--muted); margin: 24px 0 8px; } h3 { font-size: 13px; margin: 16px 0 4px; }
9
+ p, li { margin: 4px 0; } .muted { color: var(--muted); }
10
+ table { width: 100%; border-collapse: collapse; background: var(--surface); border-radius: 8px; } th { text-align: left; font-size: 11px; color: var(--muted); border-bottom: 1px solid var(--border); } th, td { padding: 8px 12px; vertical-align: top; }
11
+ .ready { color: var(--ok); } .converts { color: var(--accent); } .needs-work { color: var(--warn); } .blocked { color: var(--error); font-weight: bold; }
12
+ code { background: var(--surface); padding: 0 4px; border-radius: 4px; }
13
+ </style>`,`</head>`,`<body>`,`<main>`,`<h1>${o(W(a))}</h1>`,`<p class="muted">${o(ge(i.target,a.date))}</p>`];return i.source?(s.push(`<h2>${o(e(`app.migration.report.scope`))}</h2>`,`<table>`,`<tr><th>${o(e(`app.migration.report.columnStatus`))}</th><th>${o(e(`app.migration.report.columnFiles`))}</th><th>${o(e(`app.migration.report.columnMeaning`))}</th></tr>`),L.forEach(e=>s.push(`<tr><td class="${e}">${o(z(e))}</td><td>${i.totals[e]}</td><td class="muted">${o(B(e))}</td></tr>`)),s.push(`</table>`,`<h2>${o(e(`app.migration.report.costs`))}</h2>`,`<ul>`),V.forEach(e=>s.push(`<li>${o(H(e))}: <strong>${i.effort[e]}</strong></li>`)),s.push(`</ul>`),i.blockers.length>0&&(s.push(`<h2>${o(e(`app.migration.report.blockers`))}</h2>`,`<p>${o(e(`app.migration.report.blockersHint`))}</p>`,`<ul>`),i.blockers.forEach(({path:t,finding:r})=>s.push(`<li class="blocked">${o(r.title)} <span class="muted">${o(e(`app.migration.report.blockerWhere`,{where:r.where,path:n(a.root,t),action:r.action}))}</span></li>`)),s.push(`</ul>`)),s.push(`<h2>${o(e(`app.migration.report.files`))}</h2>`,`<table>`,`<tr><th>${o(e(`app.migration.report.columnFile`))}</th><th>${o(e(`app.migration.report.columnStatus`))}</th><th>${o(e(`app.migration.report.columnNeedsWork`))}</th><th>${o(e(`app.migration.report.columnReview`))}</th><th>${o(e(`app.migration.report.columnConverts`))}</th></tr>`),i.files.forEach(e=>s.push(`<tr><td>${o(n(a.root,e.path))}</td><td class="${e.status}">${o(z(e.status))}</td><td>${e.counts.manual}</td><td>${e.counts.review}</td><td>${e.counts.automatic}</td></tr>`)),s.push(`</table>`),i.files.filter(e=>e.status!==`ready`).forEach(t=>{let{sections:r,automatic:i}=ye(t);s.push(`<h3>${o(n(a.root,t.path))}</h3>`),r.forEach(t=>{s.push(`<p><strong>${t.title}</strong></p>`,`<ul>`),t.findings.forEach(t=>s.push(`<li>${o(e(`app.migration.report.findingWhere`,{where:t.where,title:t.title}))} <span class="muted">${o(t.action)}</span></li>`)),s.push(`</ul>`)}),i>0&&s.push(`<p class="muted">${o(ve(i))}</p>`)}),i.code.length>0&&(s.push(`<h2>${o(e(`app.migration.report.code`))}</h2>`,`<p>${o(e(`app.migration.report.codeHint`))}</p>`),s.push(`<table>`,`<tr><th>${o(e(`app.migration.report.columnValue`))}</th><th>${o(e(`app.migration.report.columnWhere`))}</th><th>${o(e(`app.migration.report.columnBecomes`))}</th><th>${o(e(`app.migration.report.columnNotes`))}</th></tr>`),i.code.forEach(e=>s.push(`<tr><td><code>${o(e.value)}</code></td><td>${o(be(e,a.root))}</td><td>${o(e.becomes)}</td><td class="muted">${o(e.notes.join(` `))}</td></tr>`)),s.push(`</table>`)),i.apis.length>0&&(s.push(`<h2>${o(e(`app.migration.report.apis`))}</h2>`,`<p>${o(e(`app.migration.report.apisHint`))}</p>`,`<ul>`),i.apis.forEach(t=>s.push(`<li>${o(e(`app.migration.report.apiImports`,{api:t.api,imports:t.imports,files:_e(t.files)}))}</li>`)),s.push(`</ul>`)),i.dataMigration&&(s.push(`<h2>${o(e(`app.migration.report.dataMigration`))}</h2>`,`<p>${o(i.dataMigration.detail)} ${o(i.dataMigration.action)}</p>`),i.dataMigration.link&&s.push(`<p class="muted">${o(e(`app.migration.report.dataMigrator`,{link:i.dataMigration.link}))}</p>`)),s.push(`</main>`,`</body>`,`</html>`),`${s.join(`
14
+ `)}\n`):(s.push(`<p>${o(e(`app.migration.report.nothingToMigrate`))}</p>`,`</main>`,`</body>`,`</html>`),`${s.join(`
15
+ `)}\n`)}function K(e){return e.replace(/[\\/]+$/,``)}function we(e,t){let n=K(e);return`${t?n:l(n)}/camunda-8`}function q(e,t,n){let r=K(e),i=n.startsWith(`${r}/`)||n.startsWith(`${r}\\`)?n.slice(r.length+1):n.split(/[\\/]/).pop()??n;return`${K(t)}/${i.replace(/\\/g,`/`)}`}function Te(e){return/^[A-Za-z0-9_][A-Za-z0-9_.-]*$/.test(e)&&!/^(null|true|false|yes|no|on|off|y|n|~)$/i.test(e)&&!/^[0-9.eE+-]+$/.test(e)?e:JSON.stringify(e)}function Ee(e,t){return[[`name`,e?.name?JSON.stringify(e.name):void 0],[`source`,e?.source?JSON.stringify(e.source):void 0],[`tenantId`,e?.tenantId?JSON.stringify(e.tenantId):void 0],[`changedOnly`,e?.changedOnly]].filter(([,e])=>e!==void 0).map(([e,n])=>`${t}${e}: ${n}`)}function De(e){let t=Ee(e.deployment,` `),n=[`# yaml-language-server: $schema=https://raw.githubusercontent.com/kern0x1b/penstock-release/main/docs/schema/penstock.schema.json`,`# The Camunda 8 version of a Camunda 7 folder, written by penstock migrate. Commit it.`,`# Files here open and are checked as Camunda 8; the folder they came from is untouched.`,``,`engine: camunda-8`,``];t.length>0?n.push(`deployment:`,...t):n.push(`# deployment:`,`# url: http://localhost:8080/v2`),t.length>0&&n.push(` # url: http://localhost:8080/v2`);let r=e.profiles??[];if(r.length>0){n.push(``,`profiles:`);for(let e of r){let t=Ee(e.deployment,` `);t.length===0?n.push(` ${Te(e.name)}: {}`):n.push(` ${Te(e.name)}:`,` deployment:`,...t)}}return`${n.join(`
16
+ `)}\n`}function Oe(e){return N.join(e,...le.split(`/`))}function ke(t){let n=Oe(t),r;try{r=fe(n)}catch{return{selection:null}}if(r.isSymbolicLink()||!r.isFile()||!T(n,[t]))return{problem:e(`app.migration.selection.unsafeFile`)};if(r.size>1048576)return{problem:e(`app.migration.selection.tooBig`)};let i=oe(F(n,`utf8`));return i===null?{problem:e(`app.migration.selection.unreadable`)}:{selection:i}}function Ae(t,n){let r=[...n.only,...n.exclude];if(r.length>2e4||r.some(e=>e.length===0||e.length>1024))throw Error(e(`app.migration.selection.tooBig`));let i=Oe(t);return ue([{path:i,content:ce(n)}],t,{replace:!0}),i}const je=[`analyze`,`convert`,`report`,`apply`,`agents`,`plan`,`verify`],Me={ready:`app.cli.migrate.ready`,converts:`app.cli.migrate.converts`,"needs-work":`app.cli.migrate.needsWork`,blocked:`app.cli.migrate.blocked`};function J(t){return e(Me[t])}const Y={rule:`migration/file-unreadable`,severity:`error`};function Ne(e,t){return t.findings.map(t=>({file:e,rule:t.rule,message:`${t.where}: ${t.title}. ${t.action}`,severity:t.severity===`info`?`note`:t.severity,...t.link?{docs:t.link}:{}}))}function X(e){let t={manual:0,review:1,automatic:2},n={error:0,warning:1,info:2};return[...e].sort((e,r)=>t[e.conversion]-t[r.conversion]||n[e.severity]-n[r.severity])}async function Z(e,t){let n=[...new Set(e.flatMap(e=>te(e,[`process`,`decision`,`form`])))].sort(),r=n.map(e=>({path:e,text:F(e,`utf8`)}));return{files:n,texts:r,forms:u(r),root:w(e[0]).root,target:t}}function Pe(t){return t.target&&!i.includes(t.target)?{ok:!1,lines:[e(`app.cli.migrate.unknownTarget`,{target:t.target,versions:i.join(`, `)})]}:null}async function Fe(t,n){let r=n.target??`8.8`,{texts:i,forms:s,root:l}=await Z(t,r),u=[],d=[];for(let t of i){let n=await c(t.path,t.text,{target:r,forms:s});n?.ok&&n.source&&u.push({file:t.path,result:n}),n&&!n.ok&&d.push({file:t.path,failure:n.failure??e(`app.cli.migrate.unreadable`)})}let f=b(l).map(e=>({path:e,text:F(e,`utf8`)})),p=await a({files:i,...ze(await o(i,f)),target:r}),m=[...u.flatMap(({file:e,result:t})=>Ne(e,t)),...d.map(({file:e,failure:t})=>({file:e,...Y,message:t}))],h=n.verbose?m:m.filter(e=>e.severity!==`note`);if(n.updateBaseline){let t=y(l,h,v);return{ok:!0,lines:[e(`app.cli.migrate.baselineWritten`,{file:C(t),findings:k(h.length,`app.cli.migrate.count.finding`)})]}}let g=n.baseline?ee(l,h,v):null,_=g?g.fresh:h,x=_.some(e=>e.severity===`error`||n.failOn===`warning`&&e.severity===`warning`);if(n.format===`sarif`)return{ok:!x,refused:!1,lines:[re(_,`migrate`)]};if(n.format===`github`)return{ok:!x,refused:!1,lines:ne(_)};if(n.format===`json`){let e=new Map(p.files.map(e=>[e.path,e]));return{ok:!x,refused:!1,lines:[JSON.stringify({target:r,files:[...u.map(({file:t,result:n})=>({file:C(t),status:e.get(t)?.status,findings:n.findings})),...d.map(({file:e,failure:t})=>({file:C(e),status:`blocked`,findings:[{...Y,message:t}]}))],effort:p.effort,blockers:p.blockers.map(e=>({file:C(e.path),rule:e.finding.rule,title:e.finding.title}))},null,2)]}}if(u.length===0&&d.length===0)return{ok:!0,lines:[e(`app.cli.migrate.nothingToMigrate`)]};let S=[],w=new Set(_),T=p.files.map(t=>{let n=t.counts;return{status:J(t.status),file:C(t.path),todo:n.manual>0?e(`app.cli.migrate.toDo`,{count:n.manual}):``,check:n.review>0?e(`app.cli.migrate.toCheck`,{count:n.review}):``,convert:n.automatic>0?e(`app.cli.migrate.convert`,{count:n.automatic}):``}});T.push(...d.map(({file:e})=>({status:J(`blocked`),file:C(e),todo:``,check:``,convert:``})));let E=O(T,{columns:[{name:`status`,header:e(`app.cli.header.status`),minWidth:10},{name:`file`,header:e(`app.cli.header.file`),minWidth:24},{name:`todo`,header:e(`app.cli.migrate.headerTodo`),minWidth:10},{name:`check`,header:e(`app.cli.migrate.headerToCheck`),minWidth:12},{name:`convert`,header:e(`app.cli.migrate.headerConvert`),minWidth:10}]});S.push(...E,``);for(let t of p.files){let r=X(t.findings).filter(e=>n.verbose||e.severity!==`info`).filter(e=>g===null||[...w].some(n=>n.file===t.path&&n.rule===e.rule&&n.message.startsWith(`${e.where}: `)));if(r.length>0){S.push(`${J(t.status).padEnd(11)} ${C(t.path)}`);for(let e of r.slice(0,40))S.push(` ${e.severity.padEnd(7)} ${e.rule}: ${e.where}: ${e.title}. ${e.action}`);r.length>40&&S.push(` ${e(`app.cli.migrate.andMore`,{count:r.length-40})}`)}}for(let{file:e,failure:t}of d)S.push(`${J(`blocked`).padEnd(11)} ${C(e)}`,` ${Y.severity.padEnd(7)} ${Y.rule}: ${t}`);let D=p.totals;return S.push(``,e(`app.cli.migrate.totals`,{files:k(p.files.length+d.length,`app.cli.migrate.count.file`),target:r,ready:D.ready,converts:D.converts,needsWork:D[`needs-work`],blocked:D.blocked+d.length})),V.filter(e=>p.effort[e]>0).forEach(e=>S.push(`${H(e)}: ${p.effort[e]}`)),g&&S.push(g.fresh.length>0?e(`app.cli.migrate.newAndAccepted`,{fresh:g.fresh.length,known:g.known.length}):e(`app.cli.migrate.nothingNew`,{known:g.known.length})),S.push(``,e(`app.cli.migrate.instancesStay`)),{ok:!x,refused:!1,lines:S}}function Q(e){return{name:x(e.name),source:x(e.source),tenantId:x(e.tenantId),changedOnly:typeof e.changedOnly==`boolean`?e.changedOnly:void 0}}function Ie(e){let{merged:t}=w(e);return{deployment:Q(S(t.deployment)),profiles:Object.entries(S(t.profiles)).map(([e,t])=>({name:e,deployment:Q(S(S(t).deployment))}))}}function Le(e){let t=N.resolve(e);return me(t).isDirectory()?t:N.dirname(t)}async function Re(t,n){let r=n.target??`8.8`,{texts:i,forms:a}=await Z(t,r),o=Le(t[0]),s=N.resolve(n.out??we(o,E(o)===o)),c=[],l=!1,u=0,f=0;for(let t of i){let i=await d(t.path,t.text,{target:r,forms:a});if(!i)continue;if(!i.ok){l=!0,c.push(...O([{action:A(`fail`),target:`${C(t.path)}: ${i.failure??e(`app.cli.migrate.unreadable`)}`,details:``}],{columns:[{name:`action`,header:e(`app.cli.header.action`),minWidth:13},{name:`target`,header:e(`app.cli.header.target`)},{name:`details`,header:e(`app.cli.header.details`)}],headers:!1}));continue}if(!i.changed){i.source||(f+=1);continue}u+=1;let p=q(o,s,t.path);if(n.dryRun){let n=[{action:e(`app.cli.migrate.wouldConvert`),target:`${C(t.path)} -> ${C(p)}`,details:e(`app.cli.migrate.leftOpen`,{changes:k(i.changes.length,`app.cli.migrate.count.change`),open:i.open.length})}];c.push(...O(n,{columns:[{name:`action`,header:e(`app.cli.header.action`),minWidth:13},{name:`target`,header:e(`app.cli.header.target`)},{name:`details`,header:e(`app.cli.header.details`)}],headers:!1})),i.changes.forEach(e=>c.push(` ${e.where}: ${e.before} -> ${e.after}`)),i.files.forEach(t=>c.push(` ${e(`app.cli.migrate.wouldWrite`,{file:C(q(o,s,t.path)),reason:t.reason})}`)),i.open.length>0&&(c.push(` ${e(`app.cli.migrate.staysOpen`)}`),X(i.open).forEach(e=>c.push(` ${e.where}: ${e.title}. ${e.action}`)));continue}P(N.dirname(p),{recursive:!0}),I(p,i.text);let m=[{action:e(`app.cli.migrate.converted`),target:`${C(t.path)} -> ${C(p)}`,details:e(`app.cli.migrate.leftOpen`,{changes:k(i.changes.length,`app.cli.migrate.count.change`),open:i.open.length})}];c.push(...O(m,{columns:[{name:`action`,header:e(`app.cli.header.action`),minWidth:13},{name:`target`,header:e(`app.cli.header.target`)},{name:`details`,header:e(`app.cli.header.details`)}],headers:!1}));for(let t of i.files){let n=q(o,s,t.path);P(N.dirname(n),{recursive:!0});try{I(n,t.content,{flag:`wx`}),c.push(...O([{action:A(`wrote`),target:C(n),details:t.reason}],{columns:[{name:`action`,header:e(`app.cli.header.action`),minWidth:13},{name:`target`,header:e(`app.cli.header.target`)},{name:`details`,header:e(`app.cli.header.details`)}],headers:!1}))}catch{c.push(...O([{action:A(`kept`),target:e(`app.cli.migrate.alreadyThere`,{file:C(n)}),details:``}],{columns:[{name:`action`,header:e(`app.cli.header.action`),minWidth:13},{name:`target`,header:e(`app.cli.header.target`)},{name:`details`,header:e(`app.cli.header.details`)}],headers:!1}))}}X(i.open).slice(0,40).forEach(t=>c.push(` ${e(`app.cli.migrate.left`,{where:t.where,title:t.title,action:t.action})}`))}if(u===0&&!l){let t=f>0?e(`app.cli.migrate.notCamunda7`,{files:k(f,`app.cli.migrate.count.file`),count:f}):e(`app.cli.migrate.noneFound`);return{ok:!0,lines:[e(`app.cli.migrate.nothingToConvert`,{reason:t})]}}if(n.dryRun&&c.push(``,e(`app.cli.migrate.dryRunFolder`,{folder:C(s)})),!n.dryRun&&u>0){let n=N.join(s,D[0]);D.some(e=>de(N.join(s,e)))?c.push(``,e(`app.cli.migrate.configKept`,{file:C(n)})):(I(n,De(Ie(t[0]))),c.push(``,e(`app.cli.migrate.configWritten`,{file:C(n)}))),c.push(``,e(`app.cli.migrate.camunda7Untouched`))}return{ok:!l,refused:!1,lines:c}}const ze=({index:e,facts:t})=>({index:e,classes:t.classes,camunda7Imports:t.camunda7Imports});async function Be(t,n){let r=n.target??`8.8`,{texts:i,root:s}=await Z(t,r),c=b(s).map(e=>({path:e,text:F(e,`utf8`)})),l=await a({files:i,...ze(await o(i,c)),target:r}),u=n.out??process.cwd();P(u,{recursive:!0});let d={root:s,name:N.basename(s),date:(/* @__PURE__ */ new Date()).toISOString().slice(0,10)},f=N.join(u,`migration-report.md`),p=N.join(u,`migration-report.html`);return I(f,Se(l,d)),I(p,Ce(l,d)),{ok:!0,lines:[e(`app.cli.wrote`,{file:C(f)}),e(`app.cli.wrote`,{file:C(p)})]}}function Ve(t){return t.workers===void 0?`spring`:s.includes(t.workers)?t.workers:{ok:!1,lines:[e(`app.cli.migrate.apply.unknownWorkers`,{value:t.workers,values:s.join(`, `)})]}}const He={symlink:`app.migration.apply.reason.symlink`,outside:`app.migration.apply.reason.outside`};function Ue(t,n){let r={...n.only===void 0?{}:{only:n.only},...n.exclude===void 0?{}:{exclude:n.exclude}};if(!n.saved)return r;let i=ke(pe(w(t[0]).root));if(`problem`in i)return{ok:!1,lines:[i.problem]};if(i.selection===null)return{ok:!1,lines:[e(`app.cli.migrate.plan.noSavedSelection`)]};let a=M(i.selection);return{...a?.only?{only:[...a.only]}:{},...a?.exclude?{exclude:[...a.exclude]}:{},...r}}async function We(t,n){let r=Ue(t,n);if(`lines`in r)return r;let i;try{i=await p(t,{target:n.target??`8.8`,workers:`spring`,verify:!1,...r})}catch(e){if(e instanceof m)return{ok:!1,lines:[e.message]};throw e}let{plan:a}=i,o=M({version:1,only:r.only??[],exclude:r.exclude??[]}),s=e=>!a.rejected.includes(e.id),c=se(a.items,s);n.saveSelection&&Ae(i.root,{only:r.only??[],exclude:r.exclude??[]});let l=a.items.map(e=>({id:e.id,kind:e.kind,path:e.path,element:e.elementId,where:e.where,risk:e.risk,reasons:e.reasons,changes:e.changes,accepted:s(e)}));if(n.format===`json`)return{ok:!0,lines:[JSON.stringify({target:n.target??`8.8`,items:l,accepted:c.accepted,rejected:c.rejected,effortMinutes:c.minutes,byRisk:c.byRisk,...o?{selection:{only:r.only??[],exclude:r.exclude??[]}}:{},saved:n.saveSelection===!0},null,2)]};if(l.length===0)return{ok:!0,lines:[e(`app.cli.migrate.apply.nothing`)]};let u=O(l.map(t=>({mark:t.accepted?`[x]`:`[ ]`,id:t.id,risk:e(`app.migration.risk.${t.risk}`),reason:t.reasons[0]??``})),{columns:[{name:`mark`,header:``,minWidth:3},{name:`id`,header:e(`app.cli.migrate.plan.columnId`),minWidth:24},{name:`risk`,header:e(`app.cli.migrate.plan.columnRisk`),minWidth:12},{name:`reason`,header:e(`app.cli.migrate.plan.columnReason`)}]});return u.push(``,e(`app.cli.migrate.plan.summary`,{accepted:c.accepted,total:a.items.length,hours:(c.minutes/60).toFixed(1)})),n.saveSelection&&u.push(e(`app.cli.migrate.plan.saved`)),{ok:!0,lines:u}}async function $(t,n,r){let i=n.target??`8.8`,a=Ve(n);if(typeof a!=`string`)return a;let o=r??await ae(),s=ie(o);if(n.write&&!s)return{ok:!1,lines:j(o,`migration`)};let c=Ue(t,n);if(`lines`in c)return c;let l;try{l=await p(t,{target:i,workers:a,previewLimit:s?null:3,...c})}catch(e){if(e instanceof m)return{ok:!1,lines:[e.message]};throw e}let{plan:u,verification:d}=l,ee=l.root,v=u.edits.filter(e=>e.before!==e.after),y=f(u),b=y.filter(e=>e.finding.conversion===`manual`).length,x=y.filter(e=>e.finding.conversion===`review`).length,S=u.unreadable.length>0||(d?.errors??0)>0||n.failOn===`warning`&&(d?.warnings??0)>0,C=e=>N.relative(ee,e),w={target:i,write:n.write===!0,rewritten:v.map(e=>C(e.path)),created:u.creates.map(e=>C(e.path)),kept:u.kept.map(e=>C(e.path)),skipped:l.skipped.map(e=>({file:C(e.path),reason:e.reason})),unreadable:u.unreadable.map(e=>({file:C(e.path),failure:e.failure})),elementsConverted:g(u),changes:u.items.length,rejected:u.rejected,needsPerson:b,toCheck:x,workers:u.workerRows.map(e=>({jobType:e.jobType,file:e.file?C(e.file):null,reads:e.reads,writes:e.writes})),verification:d&&{errors:d.errors,warnings:d.warnings,findings:d.findings.map(e=>({...e,file:C(e.file)}))}},T=v.length===0&&u.creates.length===0,E=null;if(n.write&&!T)try{E=h(l)}catch(t){if(t instanceof _){let n=t.files.map(t=>`${C(t.path)}: ${e(`app.migration.apply.reason.${t.reason}`)}`);return{ok:!1,lines:[e(`app.cli.migrate.apply.refused`),...n.map(e=>` ${e}`)]}}throw t}if(n.format===`json`)return{ok:!S,lines:[JSON.stringify({...w,diff:n.write?void 0:l.preview.diff,truncated:l.preview.truncated||void 0},null,2)]};if(T&&u.unreadable.length===0)return{ok:!0,lines:[e(`app.cli.migrate.apply.nothing`)]};let D=[];return n.write?E&&(E.rewritten.forEach(e=>D.push(`${A(`wrote`)}\t${C(e)}`)),E.created.forEach(e=>D.push(`${A(`wrote`)}\t${C(e)}`))):(D.push(e(`app.cli.migrate.apply.dryRun`),``),l.preview.diff&&D.push(l.preview.diff,``),l.preview.truncated?D.push(e(`app.cli.migrate.apply.freePreview`,{shown:l.preview.elementsShown,total:l.preview.elementsTotal}),...j(o,`migration`),``):u.creates.forEach(t=>D.push(`${e(`app.cli.migrate.apply.wouldCreate`,{file:C(t.path)})}: ${t.reason}`))),l.skipped.forEach(t=>D.push(e(`app.cli.migrate.apply.skipped`,{file:C(t.path),reason:e(He[t.reason])}))),u.unreadable.forEach(e=>D.push(`${A(`fail`)}\t${C(e.path)}: ${e.failure}`)),D.push(``,e(n.write?`app.cli.migrate.apply.summaryWritten`:`app.cli.migrate.apply.summaryDry`,{rewritten:v.length,created:u.creates.length,converted:w.elementsConverted,manual:b,review:x})),d&&(D.push(d.findings.length===0?e(`app.cli.migrate.apply.verifyClean`):e(`app.cli.migrate.apply.verifyFound`,{errors:d.errors,warnings:d.warnings})),d.findings.slice(0,40).forEach(e=>D.push(` ${e.severity.padEnd(7)} ${C(e.file)}: ${e.rule}: ${e.message}`))),D.push(n.write?e(`app.cli.migrate.apply.reportWritten`):e(`app.cli.migrate.apply.runWrite`)),{ok:!S,lines:D}}async function Ge(e,t,n){let r=Pe(n);if(r)return r;switch(e){case`convert`:return Re(t,n);case`report`:return Be(t,n);case`apply`:return $(t,n);case`plan`:return We(t,n);case`verify`:return(await import(`./chunk-migrateVerify-oIBf-PM3.js`)).verifyCommand(t,n);case`agents`:return(await import(`./chunk-agentsMigrate-DnrqoXNz.js`)).migrateAgentsCommand(t,{write:n.write===!0,format:n.format});default:return Fe(t,n)}}export{We as i,$ as n,Ge as r,je as t};
@@ -1,8 +1,8 @@
1
- import{r as e}from"./chunk-translator-DNm9zRpP.js";import{b as t}from"./chunk-engine-CxgdJ2wO.js";import{h as n}from"./chunk-codeScan-C09My9xv.js";import{c as r,d as i,r as a}from"./chunk-codeFactSet-LxSnQy8K.js";import{a as o,i as s,r as c}from"./chunk-convert-HbFpg8ab.js";import{o as l,s as u,u as d}from"./chunk-selection-DG43DJ2G.js";import{t as f}from"./chunk-load-rfn3E0t5.js";import{t as p}from"./chunk-context-rCJvBM9p.js";import{r as m}from"./chunk-commands-B4PoZbpX.js";import{t as h}from"./chunk-diagrams-BukAOL0g.js";import{c as g}from"./chunk-codeLinks-C8N6e8k3.js";import{n as _,o as v,r as y}from"./chunk-safeWrite-RgLbdyzl.js";import b from"node:path";import{tmpdir as x}from"node:os";import{linkSync as S,lstatSync as C,mkdirSync as w,mkdtempSync as T,readFileSync as E,realpathSync as D,renameSync as O,rmSync as k,unlinkSync as ee,writeFileSync as A}from"node:fs";import{createHash as te}from"node:crypto";function j(e){if(e===``)return[];let t=e.split(`
1
+ import{r as e}from"./chunk-translator-DNm9zRpP.js";import{b as t}from"./chunk-engine-CxgdJ2wO.js";import{h as n}from"./chunk-codeScan-C09My9xv.js";import{c as r,d as i,r as a}from"./chunk-codeFactSet-DiAYqvbb.js";import{a as o,i as s,r as c}from"./chunk-convert-Ce1MZmsE.js";import{o as l,s as u,u as d}from"./chunk-selection-DG43DJ2G.js";import{c as f}from"./chunk-codeLinks-BrGduhsm.js";import{r as p}from"./chunk-commands-B8YVT41b.js";import{t as m}from"./chunk-context-rCJvBM9p.js";import{t as h}from"./chunk-diagrams-CtGMGTa8.js";import{t as g}from"./chunk-load-rfn3E0t5.js";import{n as _,o as v,r as y}from"./chunk-safeWrite-RgLbdyzl.js";import b from"node:path";import{tmpdir as x}from"node:os";import{linkSync as S,lstatSync as C,mkdirSync as w,mkdtempSync as T,readFileSync as E,realpathSync as D,renameSync as O,rmSync as k,unlinkSync as ee,writeFileSync as A}from"node:fs";import{createHash as te}from"node:crypto";function j(e){if(e===``)return[];let t=e.split(`
2
2
  `);return t[t.length-1]===``&&t.pop(),t}function ne(e,t){let n=e.length,r=t.length,i=Math.min(n+r,4e3),a=i+1,o=new Int32Array(2*i+3),s=[],c=-1;for(let l=0;l<=i&&c<0;l+=1){s.push(o.slice());for(let i=-l;i<=l;i+=2){let s=i===-l||i!==l&&o[a+i-1]<o[a+i+1]?o[a+i+1]:o[a+i-1]+1,u=s-i;for(;s<n&&u<r&&e[s]===t[u];)s+=1,u+=1;if(o[a+i]=s,s>=n&&u>=r){c=l;break}}}if(c<0)return[...e.map(e=>({kind:`-`,text:e})),...t.map(e=>({kind:`+`,text:e}))];let l=[],u=n,d=r;for(let n=c;n>0;--n){let r=s[n],i=u-d,o=i===-n||i!==n&&r[a+i-1]<r[a+i+1],c=o?i+1:i-1,f=r[a+c],p=f-c;for(;u>f&&d>p;)--u,--d,l.push({kind:` `,text:e[u]});o?(--d,l.push({kind:`+`,text:t[d]})):(--u,l.push({kind:`-`,text:e[u]}))}for(;u>0&&d>0;)--u,--d,l.push({kind:` `,text:e[u]});return l.reverse()}function M(e,t,n=3){let r=ne(j(e),j(t)),i=r.flatMap((e,t)=>e.kind===` `?[]:[t]);if(i.length===0)return[];let a=[];for(let e of i){let t=a[a.length-1];t&&e-t[1]<=2*n+1?t[1]=e:a.push([e,e])}let o=[],s=[],c=1,l=1;for(let e of r)o.push(c),s.push(l),e.kind!==`+`&&(c+=1),e.kind!==`-`&&(l+=1);return a.map(([e,t])=>{let i=Math.max(0,e-n),a=Math.min(r.length-1,t+n),c=r.slice(i,a+1),l=c.filter(e=>e.kind!==`+`).length,u=c.filter(e=>e.kind!==`-`).length;return{oldStart:l===0?o[i]-1:o[i],oldLines:l,newStart:u===0?s[i]-1:s[i],newLines:u,lines:c}})}function N(e,t,n){if(n.length===0)return``;let r=n.flatMap(e=>[`@@ -${e.oldStart},${e.oldLines} +${e.newStart},${e.newLines} @@`,...e.lines.map(e=>`${e.kind}${e.text}`)]);return[`--- ${e}`,`+++ ${t}`,...r].join(`
3
3
  `)}function P(e,t){let n=j(t);return n.length===0?`--- /dev/null\n+++ ${e}`:[`--- /dev/null`,`+++ ${e}`,`@@ -0,0 +1,${n.length} @@`,...n.map(e=>`+${e}`)].join(`
4
4
  `)}const F=/* @__PURE__ */ new Set([`expression-manual`,`input-output-manual`,`script-condition`,`script-task`,`script-resource`,`input-output-script`]),I=/^(engine:[ \t]*)(["']?)([A-Za-z0-9._-]+)\2([ \t]*(?:#.*)?)$/m;function re(n){if(!n)return null;let r=I.exec(n.text);if(!r||t(r[3])?.family!==`camunda-7`)return null;let i=n.text.replace(I,`$1camunda-8$4`);return{path:n.path,kind:`config`,before:n.text,after:i,changes:[{elementId:``,where:`penstock.yaml`,before:`engine: ${r[3]}`,after:`engine: camunda-8`,plain:e(`app.migration.apply.configChange`)}],open:[]}}function ie(e){let t=Math.max(e.lastIndexOf(`/`),e.lastIndexOf(`\\`));return t<0?``:e.slice(0,t)}function L(e,t,n,r){return`${(e.source&&(n===`spring`||n===`java`)?ie(e.source.path):``)||`${r.replace(/[\\/]+$/,``)}/workers`}/${t}`}async function ae(t){let a=t.target??`8.8`,d=t.workers??`spring`,f=c(t.files),p=[],m=[],h=[],g=[],_=[],v=/* @__PURE__ */ new Set,y=/* @__PURE__ */ new Set,b=!1,x=!1,S=e=>n(t.root,e).split(`\\`).join(`/`),C=e=>{_.push(e);let n=l(e,t.selection);return n&&v.add(e.id),!n},w=(r,i,a,o)=>n(t.root,r)===r||/(^|\/)\.\.(\/|$)/.test(n(t.root,r))?(h.push({path:r,reason:e(`app.migration.apply.outsideProject`)}),!1):y.has(r)||t.read(r)!==null?(h.push({path:r,reason:e(`app.migration.apply.alreadyThere`)}),!1):o!==`report`&&!C({id:`+${S(r)}`,kind:`create`,path:S(r),fileKind:o===`worker`?`worker`:`form`,elementId:null,where:S(r),risk:`automatic`,changes:[],reasons:[a]})?!1:(y.add(r),m.push({path:r,content:i,reason:a,kind:o}),!0);for(let n of t.files){let t=await o(n.path,n.text,{target:a,forms:f});if(!t)continue;if(!t.ok){g.push({path:n.path,failure:t.failure??e(`app.cli.migrate.unreadable`)});continue}if(!t.source)continue;b=!0;let r=u(S(n.path),t,n.text);t.text!==n.text&&(x=!0);let i=r.filter(e=>!C(e)),c=t;if(i.length>0){if(r.length>0&&i.length===r.length||t.kind!==`bpmn`)continue;let e=new Set(i.flatMap(e=>e.elementId?[e.elementId]:[])),s=await o(n.path,n.text,{target:a,forms:f,skip:e});if(!s||!s.ok)continue;c=s}c.text===n.text?c.open.length>0&&p.push({path:n.path,kind:c.kind,before:n.text,after:n.text,changes:c.changes,open:c.open}):p.push({path:n.path,kind:c.kind,before:n.text,after:c.text,changes:c.changes,open:c.open});for(let e of c.extraFiles)w(s(n.path,e.name),e.content,e.reason,`form`)}let T=await r({...t,target:a}),E=/* @__PURE__ */ new Map,D=/* @__PURE__ */ new Map;for(let r of T.code){if(!r.skeleton)continue;let o=r.source?t.classes.find(e=>e.path===r.source?.path&&e.className===r.source.className)??null:null,s=r.usedBy.map(e=>`${n(t.root,e.path)}#${e.elementId}`),c=E.get(r.jobType);if(c){c.usedBy.push(...s);continue}let l=i(r,o,d,a),u=L(r,l.fileName,d,t.root);D.has(u)&&(l=i(r,null,d,a),u=L(r,l.fileName,d,t.root));let f=!D.has(u)&&w(u,l.content,e(`app.migration.apply.workerReason`,{jobType:r.jobType}),`worker`);f&&D.set(u,r.jobType),E.set(r.jobType,{jobType:r.jobType,becomes:r.becomes,file:f?u:null,reads:r.reads,writes:r.writes,usedBy:s,notes:r.notes})}let O=x?re(t.config):null;if(O){let e={id:S(O.path),kind:`config`,path:S(O.path),fileKind:`config`,elementId:null,where:`penstock.yaml`,risk:`changed`,changes:O.changes.map(({before:e,after:t,plain:n})=>({before:e,after:t,...n?{plain:n}:{}})),reasons:O.changes.map(e=>e.plain??``).filter(e=>e!==``)};_.push(e),v.size>0||l(e,t.selection)?v.add(e.id):p.length>0&&p.push(O)}return{target:a,root:t.root,workers:d,edits:p,creates:m,kept:h,unreadable:g,workerRows:[...E.values()],project:T,source:b,items:_,rejected:[...v].sort()}}function R(e){return e.edits.some(e=>e.before!==e.after)||e.creates.length>0}function z(e){return R(e)}function B(e){return e.replace(/\|/g,`\\|`).replace(/\r?\n/g,` `)}function V(e){return e.length===0?``:e.map(e=>`\`${e}\``).join(`, `)}function H(e){return e.edits.filter(e=>e.kind!==`config`&&e.kind!==`report`).reduce((e,t)=>e+t.changes.length,0)}function U(e){return e.edits.filter(e=>e.kind!==`config`&&e.kind!==`report`).flatMap(e=>e.open.map(t=>({path:e.path,finding:t})))}function W(e){return e.rule.replace(/^migration\//,``)}function G(t,r){let i=e=>n(t.root,e),a=U(t),o=a.filter(e=>e.finding.conversion===`manual`),s=a.filter(e=>e.finding.conversion===`review`),c=[`<!-- penstock migrate apply -->`,`# ${e(`app.migration.apply.title`)}`,``,e(`app.migration.apply.intro`,{target:t.target}),``,`## ${e(`app.migration.apply.summaryHeading`)}`,``,`- ${e(`app.migration.apply.summaryFiles`,{rewritten:t.edits.filter(e=>e.before!==e.after).length,created:t.creates.length})}`,`- ${e(`app.migration.apply.summaryElements`,{converted:H(t),manual:o.length,review:s.length})}`,``,`## ${e(`app.migration.apply.filesHeading`)}`,``,`| ${e(`app.migration.apply.colFile`)} | ${e(`app.migration.apply.colChanged`)} | ${e(`app.migration.apply.colPerson`)} | ${e(`app.migration.apply.colCheck`)} |`,`| --- | --- | --- | --- |`,...t.edits.filter(e=>e.kind!==`report`).map(e=>`| \`${B(i(e.path))}\` | ${e.changes.length} | ${e.open.filter(e=>e.conversion===`manual`).length} | ${e.open.filter(e=>e.conversion===`review`).length} |`),``,`## ${e(`app.migration.apply.changesHeading`)}`];for(let e of t.edits.filter(e=>e.kind!==`report`&&e.changes.length>0)){c.push(``,`### \`${i(e.path)}\``,``);for(let t of e.changes){let e=t.elementId?` (\`${t.elementId}\`)`:``;c.push(`- **${B(t.where)}**${e}: \`${B(t.before)}\` -> \`${B(t.after)}\``)}}c.push(``,`## ${e(`app.migration.apply.personHeading`)}`),a.length===0&&c.push(``,e(`app.migration.apply.personNone`));for(let n of t.edits.filter(e=>e.kind!==`report`&&e.open.length>0)){c.push(``,`### \`${i(n.path)}\``,``);for(let t of[...n.open].sort((e,t)=>e.conversion===t.conversion?0:e.conversion===`manual`?-1:1)){let n=t.elements[0]?` (\`${t.elements[0]}\`)`:``,r=t.conversion===`manual`?e(`app.migration.apply.kindManual`):e(`app.migration.apply.kindReview`);c.push(`- [${r}] **${B(t.where)}**${n} \`${t.rule}\`: ${B(t.title)}. ${B(t.action)}`)}}let l=a.filter(e=>F.has(W(e.finding)));c.push(``,`## ${e(`app.migration.apply.refusedHeading`)}`,``),l.length===0&&c.push(e(`app.migration.apply.refusedNone`));for(let{path:e,finding:t}of l)c.push(`- \`${i(e)}\`, **${B(t.where)}**${t.elements[0]?` (\`${t.elements[0]}\`)`:``}: ${B(t.title)}. ${B(t.detail)}`);if(c.push(``,`## ${e(`app.migration.apply.workersHeading`)}`,``),t.workerRows.length===0)c.push(e(`app.migration.apply.workersNone`));else{c.push(e(`app.migration.apply.workersIntro`),``,`| ${e(`app.migration.apply.colJobType`)} | ${e(`app.migration.apply.colWorkerFile`)} | ${e(`app.migration.apply.colReads`)} | ${e(`app.migration.apply.colWrites`)} | ${e(`app.migration.apply.colUsedBy`)} |`,`| --- | --- | --- | --- | --- |`,...t.workerRows.map(t=>`| \`${B(t.jobType)}\` | ${t.file?`\`${B(i(t.file))}\``:e(`app.migration.apply.noSkeleton`)} | ${V(t.reads)} | ${V(t.writes)} | ${V(t.usedBy)} |`));for(let e of t.workerRows.filter(e=>e.notes.length>0))c.push(``,`- \`${e.jobType}\`: ${e.notes.join(` `)}`)}(t.creates.length>0||t.kept.length>0)&&(c.push(``,`## ${e(`app.migration.apply.createdHeading`)}`,``),t.creates.filter(e=>e.kind!==`report`).forEach(e=>c.push(`- \`${i(e.path)}\`: ${B(e.reason)}`)),t.kept.forEach(e=>c.push(`- \`${i(e.path)}\`: ${e.reason}`))),t.unreadable.length>0&&(c.push(``,`## ${e(`app.migration.apply.unreadableHeading`)}`,``),t.unreadable.forEach(e=>c.push(`- \`${i(e.path)}\`: ${B(e.failure)}`))),c.push(``,`## ${e(`app.migration.apply.checkHeading`)}`,``),r?r.findings.length===0?c.push(e(`app.migration.apply.checkClean`)):(c.push(e(`app.migration.apply.checkFound`,{errors:r.errors,warnings:r.warnings}),``),r.findings.slice(0,200).forEach(e=>c.push(`- ${e.severity} \`${i(e.file)}\` \`${e.rule}\`: ${B(e.message)}`))):c.push(e(`app.migration.apply.checkNotRun`));let u=t.workers===`node`?`@camunda8/sdk`:t.workers===`python`?`pyzeebe`:t.workers===`java`?`io.camunda:camunda-client-java`:`io.camunda:spring-boot-starter-camunda-sdk`;return c.push(``,`## ${e(`app.migration.apply.afterHeading`)}`,``,...t.workerRows.some(e=>e.file)?[`- ${e(`app.migration.apply.afterDependencies`,{dependency:u})}`]:[],`- ${e(`app.migration.apply.afterDelegates`)}`,`- ${e(`app.migration.apply.afterInstances`)}`,``),`${c.join(`
5
5
  `)}`}function K(t,n,r){if(!R(t))return t;let i=G(t,n),a=t.root.replace(/[\\/]+$/,``),o=`${a}/MIGRATION.md`,s=r(o);if(s===null)return{...t,creates:[...t.creates,{path:o,content:i,reason:e(`app.migration.apply.reportReason`),kind:`report`}]};if(s.startsWith(`<!-- penstock migrate apply -->`))return s===i?t:{...t,edits:[...t.edits,{path:o,kind:`report`,before:s,after:i,changes:[],open:[]}]};let c=`${a}/MIGRATION.penstock.md`,l=r(c);return l===null?{...t,creates:[...t.creates,{path:c,content:i,reason:e(`app.migration.apply.reportReason`),kind:`report`}]}:l===i||!l.startsWith(`<!-- penstock migrate apply -->`)?t:{...t,edits:[...t.edits,{path:c,kind:`report`,before:l,after:i,changes:[],open:[]}]}}function q(e,t,n){for(let r=Math.min(t,e.length-1);r>=0;--r)for(let t of e[r].matchAll(/\bid="([^"]+)"/g))if(n.has(t[1]))return t[1];return null}function oe(e,t,n){let r=/* @__PURE__ */ new Set;for(let t of e.lines)for(let e of t.text.matchAll(/\bid="([^"]+)"/g))n.has(e[1])&&r.add(e[1]);let i=q(t.split(`
6
6
  `),e.oldStart-1,n);return r.size===0&&i&&r.add(i),r}function se(e,t,n,r,i){let a=[];for(let o of e.lines){let e=[...o.text.matchAll(/\bid="([^"]+)"/g)].map(e=>e[1]).filter(e=>n.has(e)).map(e=>`${t.path}#${e}`).filter(e=>!r.has(e));if(o.kind!==` `&&r.size+e.length>i)break;o.kind!==` `&&e.forEach(e=>r.add(e)),a.push(o)}for(;a.length>0&&a[a.length-1].kind===` `;)a.pop();if(!a.some(e=>e.kind!==` `))return null;let o=a.filter(e=>e.kind!==`+`).length,s=a.filter(e=>e.kind!==`-`).length;return{oldStart:e.oldStart,oldLines:o,newStart:e.newStart,newLines:s,lines:a}}function ce(e,t){let r=[],i=/* @__PURE__ */ new Set,a=/* @__PURE__ */ new Set;for(let o of e.edits){if(o.before===o.after)continue;let s=new Set(o.changes.map(e=>e.elementId).filter(e=>e!==``));s.forEach(e=>a.add(`${o.path}#${e}`));let c=n(e.root,o.path),l=M(o.before,o.after),u=[];for(let e of l){let n=[...oe(e,o.before,s)].map(e=>`${o.path}#${e}`);if(t!==null){let r=n.filter(e=>!i.has(e));if(n.length===0&&i.size>=t)continue;if(i.size+r.length>t){let n=se(e,o,s,i,t);n&&u.push(n);continue}r.forEach(e=>i.add(e))}else n.forEach(e=>i.add(e));u.push(e)}u.length>0&&r.push(N(`a/${c}`,`b/${c}`,u))}if(t===null)for(let t of e.creates)r.push(P(`b/${n(e.root,t.path)}`,t.content).replace(/^--- \/dev\/null/,`--- /dev/null`));return{diff:r.join(`
7
- `),elementsShown:i.size,elementsTotal:a.size,truncated:t!==null&&i.size<a.size}}var J=class extends Error{unknown;reason;constructor(t,n=[]){super(e(`app.migration.selection.refused.${t}`,{ids:n.slice(0,20).join(`, `),count:n.length})),this.reason=t,this.unknown=n}};function le(e){if(e.only===void 0&&e.exclude===void 0)return;let t=[e.only??[],e.exclude??[]];if(e.only!==void 0&&e.only.length===0)throw new J(`empty`);if(t.some(e=>e.length>2e4))throw new J(`too-many`);if(t.some(e=>e.some(e=>e.length===0||e.length>1024)))throw new J(`too-long`);return{...e.only===void 0?{}:{only:new Set(e.only)},...e.exclude!==void 0&&e.exclude.length>0?{exclude:new Set(e.exclude)}:{}}}var Y=class extends Error{files;constructor(t){super(e(`app.migration.apply.refused`,{files:t.map(t=>`${t.path}: ${e(`app.migration.apply.reason.${t.reason}`)}`).join(`, `)})),this.files=t}};const X=e=>te(`sha256`).update(e).digest(`hex`);function Z(e,t,n){try{return C(e).isSymbolicLink()?(n.push({path:e,reason:`symlink`}),null):_(t,D(e))?E(e,`utf8`):(n.push({path:e,reason:`outside`}),null)}catch{return null}}function Q(e){try{return C(e).isSymbolicLink()?``:E(e,`utf8`)}catch{return null}}async function $(e){return m(e,{format:`json`,baseline:!1,updateBaseline:!1,sections:[`drawing`,`rules`,`flow`]})}async function ue(e,t,n,r){let i=T(b.join(x(),`penstock-apply-`));try{let a=/* @__PURE__ */ new Map,o=(e,t)=>{let r=b.resolve(i,b.relative(n,b.resolve(e)));return _(i,r)&&(w(b.dirname(r),{recursive:!0}),A(r,t),a.set(r,e)),r},s=new Map(e.edits.map(e=>[e.path,e.after])),c=/* @__PURE__ */ new Set([...e.edits.filter(e=>e.kind!==`config`&&e.kind!==`report`).map(e=>e.path),...e.creates.filter(e=>e.kind===`form`).map(e=>e.path)]);for(let e of t)o(e.path,s.get(e.path)??e.text);for(let t of e.creates.filter(e=>e.kind===`form`))o(t.path,t.content);let l=e.edits.find(e=>e.kind===`config`);A(b.join(i,r?b.basename(r.path):f[0]),l?.after??r?.text??`engine: camunda-8
8
- `);let u=Q(b.join(n,`.bpmnlintrc`));u&&A(b.join(i,`.bpmnlintrc`),u);let d=[...a.entries()].filter(([,e])=>c.has(e)).map(([e])=>e).sort();if(d.length===0)return{findings:[],errors:0,warnings:0};let p=(await $(d)).findings.filter(e=>e.severity!==`note`).map(e=>({file:a.get(e.file)??e.file,rule:e.rule,severity:e.severity,message:e.message.replaceAll(i,n)}));return{findings:p,errors:p.filter(e=>e.severity===`error`).length,warnings:p.filter(e=>e.severity===`warning`).length}}finally{k(i,{recursive:!0,force:!0})}}async function de(e,t={}){let n=le(t),r=t.target??`8.8`,i=p(e[0]),o=D(i.root),s=[],c=[...new Set(e.flatMap(e=>h(e,[`process`,`decision`,`form`])))].sort(),l=[];for(let e of c){let t=Z(e,o,s);t!==null&&l.push({path:b.join(o,b.relative(i.root,e)),text:t})}let u=[];for(let e of g(i.root)){let t=Z(e,o,[]);t!==null&&u.push({path:b.join(o,b.relative(i.root,e)),text:t})}let m=f.find(e=>Q(b.join(o,e))!==null),_=m?{path:b.join(o,m),text:Z(b.join(o,m),o,s)??``}:null,{index:v,facts:y}=await a(l,u),x=e=>Q(e),S=await ae({files:l,classes:y.classes,camunda7Imports:y.camunda7Imports,index:v,target:r,root:o,workers:t.workers,config:_&&_.text?_:null,read:x,selection:n});if(n){let e=d(S.items,n);if(e.length>0)throw new J(`unknown`,e)}let C=t.verify===!1||!z(S)?null:await ue(S,l,o,_),w=K(S,C,x),T=[...l.map(e=>({path:e.path,hash:X(e.text)})),..._?[{path:_.path,hash:X(_.text)}]:[]],E=w.edits.find(e=>e.kind===`report`);return E&&T.push({path:E.path,hash:X(E.before)}),{plan:w,verification:C,preview:ce(w,t.previewLimit??null),skipped:s,snapshots:T,root:o}}function fe(e){let{plan:t,snapshots:n,root:r}=e,i=t.edits.filter(e=>e.before!==e.after),a=t.creates,o=[],s=new Map(n.map(e=>[e.path,e.hash])),c=/* @__PURE__ */ new Map;for(let e of i)try{let t=C(e.path);t.isSymbolicLink()?o.push({path:e.path,reason:`symlink`}):_(r,D(e.path))?X(E(e.path,`utf8`))===s.get(e.path)?c.set(e.path,t.mode&4095):o.push({path:e.path,reason:`changed`}):o.push({path:e.path,reason:`outside`})}catch{o.push({path:e.path,reason:`vanished`})}for(let e of a)y(e.path,r)?Q(e.path)!==null&&o.push({path:e.path,reason:`appeared`}):o.push({path:e.path,reason:`outside`});if(o.length>0)throw new Y(o);let l=/* @__PURE__ */ new Map,u=[],d=[],f=[];try{for(let e of a){let t=w(b.dirname(e.path),{recursive:!0});t&&u.push(t),l.set(e.path,v(e.path,e.content,void 0))}for(let e of i)l.set(e.path,v(e.path,e.after,c.get(e.path)));for(let e of a)S(l.get(e.path),e.path),d.push(e.path),ee(l.get(e.path)),l.delete(e.path);for(let e of i)f.push({path:e.path,before:e.before,mode:c.get(e.path)}),O(l.get(e.path),e.path),l.delete(e.path)}catch(e){for(let e of l.values())k(e,{force:!0});for(let e of f.reverse()){let t=v(e.path,e.before,e.mode);O(t,e.path)}for(let e of d)k(e,{force:!0});for(let e of u)k(e,{recursive:!0,force:!0});throw e}return{rewritten:i.map(e=>e.path),created:a.map(e=>e.path)}}export{Z as a,U as c,de as i,J as n,fe as o,X as r,H as s,Y as t};
7
+ `),elementsShown:i.size,elementsTotal:a.size,truncated:t!==null&&i.size<a.size}}var J=class extends Error{unknown;reason;constructor(t,n=[]){super(e(`app.migration.selection.refused.${t}`,{ids:n.slice(0,20).join(`, `),count:n.length})),this.reason=t,this.unknown=n}};function le(e){if(e.only===void 0&&e.exclude===void 0)return;let t=[e.only??[],e.exclude??[]];if(e.only!==void 0&&e.only.length===0)throw new J(`empty`);if(t.some(e=>e.length>2e4))throw new J(`too-many`);if(t.some(e=>e.some(e=>e.length===0||e.length>1024)))throw new J(`too-long`);return{...e.only===void 0?{}:{only:new Set(e.only)},...e.exclude!==void 0&&e.exclude.length>0?{exclude:new Set(e.exclude)}:{}}}var Y=class extends Error{files;constructor(t){super(e(`app.migration.apply.refused`,{files:t.map(t=>`${t.path}: ${e(`app.migration.apply.reason.${t.reason}`)}`).join(`, `)})),this.files=t}};const X=e=>te(`sha256`).update(e).digest(`hex`);function Z(e,t,n){try{return C(e).isSymbolicLink()?(n.push({path:e,reason:`symlink`}),null):_(t,D(e))?E(e,`utf8`):(n.push({path:e,reason:`outside`}),null)}catch{return null}}function Q(e){try{return C(e).isSymbolicLink()?``:E(e,`utf8`)}catch{return null}}async function $(e){return p(e,{format:`json`,baseline:!1,updateBaseline:!1,sections:[`drawing`,`rules`,`flow`]})}async function ue(e,t,n,r){let i=T(b.join(x(),`penstock-apply-`));try{let a=/* @__PURE__ */ new Map,o=(e,t)=>{let r=b.resolve(i,b.relative(n,b.resolve(e)));return _(i,r)&&(w(b.dirname(r),{recursive:!0}),A(r,t),a.set(r,e)),r},s=new Map(e.edits.map(e=>[e.path,e.after])),c=/* @__PURE__ */ new Set([...e.edits.filter(e=>e.kind!==`config`&&e.kind!==`report`).map(e=>e.path),...e.creates.filter(e=>e.kind===`form`).map(e=>e.path)]);for(let e of t)o(e.path,s.get(e.path)??e.text);for(let t of e.creates.filter(e=>e.kind===`form`))o(t.path,t.content);let l=e.edits.find(e=>e.kind===`config`);A(b.join(i,r?b.basename(r.path):g[0]),l?.after??r?.text??`engine: camunda-8
8
+ `);let u=Q(b.join(n,`.bpmnlintrc`));u&&A(b.join(i,`.bpmnlintrc`),u);let d=[...a.entries()].filter(([,e])=>c.has(e)).map(([e])=>e).sort();if(d.length===0)return{findings:[],errors:0,warnings:0};let f=(await $(d)).findings.filter(e=>e.severity!==`note`).map(e=>({file:a.get(e.file)??e.file,rule:e.rule,severity:e.severity,message:e.message.replaceAll(i,n)}));return{findings:f,errors:f.filter(e=>e.severity===`error`).length,warnings:f.filter(e=>e.severity===`warning`).length}}finally{k(i,{recursive:!0,force:!0})}}async function de(e,t={}){let n=le(t),r=t.target??`8.8`,i=m(e[0]),o=D(i.root),s=[],c=[...new Set(e.flatMap(e=>h(e,[`process`,`decision`,`form`])))].sort(),l=[];for(let e of c){let t=Z(e,o,s);t!==null&&l.push({path:b.join(o,b.relative(i.root,e)),text:t})}let u=[];for(let e of f(i.root)){let t=Z(e,o,[]);t!==null&&u.push({path:b.join(o,b.relative(i.root,e)),text:t})}let p=g.find(e=>Q(b.join(o,e))!==null),_=p?{path:b.join(o,p),text:Z(b.join(o,p),o,s)??``}:null,{index:v,facts:y}=await a(l,u),x=e=>Q(e),S=await ae({files:l,classes:y.classes,camunda7Imports:y.camunda7Imports,index:v,target:r,root:o,workers:t.workers,config:_&&_.text?_:null,read:x,selection:n});if(n){let e=d(S.items,n);if(e.length>0)throw new J(`unknown`,e)}let C=t.verify===!1||!z(S)?null:await ue(S,l,o,_),w=K(S,C,x),T=[...l.map(e=>({path:e.path,hash:X(e.text)})),..._?[{path:_.path,hash:X(_.text)}]:[]],E=w.edits.find(e=>e.kind===`report`);return E&&T.push({path:E.path,hash:X(E.before)}),{plan:w,verification:C,preview:ce(w,t.previewLimit??null),skipped:s,snapshots:T,root:o}}function fe(e){let{plan:t,snapshots:n,root:r}=e,i=t.edits.filter(e=>e.before!==e.after),a=t.creates,o=[],s=new Map(n.map(e=>[e.path,e.hash])),c=/* @__PURE__ */ new Map;for(let e of i)try{let t=C(e.path);t.isSymbolicLink()?o.push({path:e.path,reason:`symlink`}):_(r,D(e.path))?X(E(e.path,`utf8`))===s.get(e.path)?c.set(e.path,t.mode&4095):o.push({path:e.path,reason:`changed`}):o.push({path:e.path,reason:`outside`})}catch{o.push({path:e.path,reason:`vanished`})}for(let e of a)y(e.path,r)?Q(e.path)!==null&&o.push({path:e.path,reason:`appeared`}):o.push({path:e.path,reason:`outside`});if(o.length>0)throw new Y(o);let l=/* @__PURE__ */ new Map,u=[],d=[],f=[];try{for(let e of a){let t=w(b.dirname(e.path),{recursive:!0});t&&u.push(t),l.set(e.path,v(e.path,e.content,void 0))}for(let e of i)l.set(e.path,v(e.path,e.after,c.get(e.path)));for(let e of a)S(l.get(e.path),e.path),d.push(e.path),ee(l.get(e.path)),l.delete(e.path);for(let e of i)f.push({path:e.path,before:e.before,mode:c.get(e.path)}),O(l.get(e.path),e.path),l.delete(e.path)}catch(e){for(let e of l.values())k(e,{force:!0});for(let e of f.reverse()){let t=v(e.path,e.before,e.mode);O(t,e.path)}for(let e of d)k(e,{force:!0});for(let e of u)k(e,{recursive:!0,force:!0});throw e}return{rewritten:i.map(e=>e.path),created:a.map(e=>e.path)}}export{Z as a,U as c,de as i,J as n,fe as o,X as r,H as s,Y as t};
@@ -0,0 +1 @@
1
+ import{s as e,t}from"./chunk-features-C6o8of19.js";import{u as n}from"./chunk-license-BG88gpDZ.js";import{r}from"./chunk-translator-DNm9zRpP.js";import{h as i,m as a}from"./chunk-engine-CxgdJ2wO.js";import{t as o}from"./chunk-executable-q_b3dHgQ.js";import{h as s}from"./chunk-codeScan-C09My9xv.js";import{r as c,t as l}from"./chunk-redact-Bz1nB1gq.js";import{o as u,u as d}from"./chunk-file-1YhfNmPn.js";import{h as f,l as p,p as m,r as h}from"./chunk-deploy-DZgCTgaY.js";import{a as g,i as _,r as v}from"./chunk-convert-Ce1MZmsE.js";import{s as y}from"./chunk-selection-DG43DJ2G.js";import{a as b}from"./chunk-moddle-D3Ym38EZ.js";import{_ as x,a as S,d as C,f as w,h as ee}from"./chunk-testCases-BwimUfDC.js";import{t as te}from"./chunk-context-rCJvBM9p.js";import{t as T}from"./chunk-diagrams-CtGMGTa8.js";import{_ as ne,s as E}from"./chunk-load-rfn3E0t5.js";import D from"node:path";import{lstatSync as re,readFileSync as O,realpathSync as k}from"node:fs";function A(e,t,n=[]){return{verdict:`not-comparable`,reason:t,orderNote:!1,touches:n,original:e.original.observation,converted:e.converted.observation,mapped:n}}function j(e,t){if(e.length!==t.length)return!1;let n=/* @__PURE__ */ new Map;for(let t of e)n.set(t,(n.get(t)??0)+1);for(let e of t){let t=n.get(e);if(t===void 0||t===0)return!1;n.set(e,t-1)}return!0}function M(e,t){let n=Math.min(e.length,t.length);for(let r=0;r<n;r+=1)if(e[r]!==t[r])return r;return e.length===t.length?-1:n}function N(e){let{original:t,converted:n}=e;if(t.observation===null||n.observation===null)return A(e,{code:`unreadable-trace`,detail:(t.observation===null?t:n).message});let r=[];for(let n of t.observation.elements){let t=e.idMap.has(n)?e.idMap.get(n):n;if(t==null)return A(e,{code:`element-removed`,element:n},r);r.push(t)}let i=[...new Set(r)];for(let n of new Set(t.observation.elements)){let t=e.items.get(n);if(t?.risk===`left`)return A(e,{code:`left-as-is`,element:n,detail:t.reasons[0]},i);if(t?.risk===`person`)return A(e,{code:`needs-person`,element:n,detail:t.reasons[0]},i);if(e.delegates.has(n)&&!e.answered.has(n))return A(e,{code:`delegate-unavailable`,element:n},i)}let a=t.observation,o=n.observation,s=(e,t,n)=>({verdict:e,...t?{divergence:t}:{},orderNote:n,touches:i,original:a,converted:o,mapped:r}),c=!1,l=M(r,o.elements);if(l>=0){if(e.parallel&&j(r,o.elements))c=!0;else return s(`differs`,{kind:`element`,index:l,original:r[l]??null,converted:o.elements[l]??null},!1)}if(t.outcome!==n.outcome)return s(`differs`,{kind:`outcome`,original:t.outcome,converted:n.outcome,message:n.outcome===`failed`?n.message:t.message},c);if(a.state!==o.state)return s(`differs`,{kind:`state`,original:a.state,converted:o.state},c);let u=a.incidents.map(t=>e.idMap.has(t)?e.idMap.get(t)??t:t).sort();if(u.join(`\0`)!==o.incidents.join(`\0`))return s(`differs`,{kind:`incident`,original:u,converted:o.incidents},c);let d=/* @__PURE__ */ new Set([...a.hidden,...o.hidden]),f=[.../* @__PURE__ */ new Set([...Object.keys(a.variables),...Object.keys(o.variables)])].filter(e=>!d.has(e)).sort();for(let e of f){let t=e in a.variables,n=e in o.variables;if(!t||!n||!ee(a.variables[e],o.variables[e]))return s(`differs`,{kind:`variable`,name:e,original:a.variables[e],converted:o.variables[e],missing:t?n?null:`converted`:`original`},c)}return s(`equivalent`,void 0,c)}const P=/* @__PURE__ */ new Set([`nrOfInstances`,`nrOfCompletedInstances`,`nrOfActiveInstances`,`loopCounter`,`numberOfInstances`,`numberOfCompletedInstances`,`numberOfActiveInstances`]),ie=/multi.?instance.?body/i;function F(e){let t=Date.parse(e.replace(/([+-]\d\d)(\d\d)$/,`$1:$2`));return Number.isNaN(t)?0:t}function ae(e){if(e.steps.length>5e3)return null;let t=e.steps.map((e,t)=>({step:e,index:t})).filter(({step:e})=>!ie.test(e.elementType)&&!e.elementId.endsWith(`#multiInstanceBody`)).sort((e,t)=>F(e.step.startedAt)-F(t.step.startedAt)||e.index-t.index).map(({step:e})=>e),n=/* @__PURE__ */ new Map;for(let e of t)for(let t of[...e.in,...e.out,...e.changed])if(!P.has(t.name)){if(!n.has(t.name)&&n.size>=500)return null;n.set(t.name,t.value)}let r=c(Object.fromEntries(n)),i=Object.create(null),a=new Set(r.names);for(let e of Object.keys(r.values).sort())a.has(e)||(i[e]=r.values[e]);return{elements:t.map(e=>e.elementId),state:e.state,variables:i,hidden:[...a].sort(),incidents:[...new Set(e.incidents.map(e=>e.elementId))].sort()}}function I(e){return e.totals.differs>0?1:e.totals.notComparable>0||e.scenarios.length===0?2:0}function L(e){return{equivalent:e.filter(e=>e.verdict===`equivalent`).length,differs:e.filter(e=>e.verdict===`differs`).length,notComparable:e.filter(e=>e.verdict===`not-comparable`).length}}function R(e){return{file:e.file,diagram:e.diagram,name:e.testCase.name}}function z(e,t){return{...R(e),verdict:`not-comparable`,reason:t,orderNote:!1,touches:[],original:null,converted:null}}async function B(e,t,n,r,i,a){try{let o=await w(e.testCase,{engine:t.engine,resources:n,runId:r,builds:t.builds,key:t.key,session:i,signal:a.signal,stepTimeoutMs:a.stepTimeoutMs,pollMs:a.pollMs,settleReads:a.settleReads});if(a.signal?.aborted)return{code:`cancelled`};let s=o.result.trace;return{observation:s===null?null:ae(s),outcome:o.result.outcome,...o.result.message?{message:l(o.result.message)}:{}}}catch(e){return{code:`run-failed`,detail:l(e instanceof Error?e.message:String(e))}}}async function V(e,t){let n=t.limit??null,r=n===null?e:e.slice(0,n),i=C(),a=C(),o=[];for(let e of r){let n;if(t.signal?.aborted)n=z(e,{code:`cancelled`});else if(e.problem)n=z(e,e.problem);else{let r=await B(e,t.original,e.originalResources,`${t.runId}-a`,i,t),o=`code`in r?r:await B(e,t.converted,e.convertedResources,`${t.runId}-b`,a,t);if(`code`in r)n=z(e,r);else if(`code`in o)n=z(e,o);else{let t=N({original:r,converted:o,idMap:e.idMap,items:e.items,delegates:e.delegates,answered:e.answered,parallel:e.parallel});n={...R(e),verdict:t.verdict,...t.reason?{reason:t.reason}:{},...t.divergence?{divergence:t.divergence}:{},orderNote:t.orderNote,touches:t.touches,original:t.original,converted:t.converted}}}o.push(n),t.progress?.(n)}return{scenarios:o,totals:L(o),total:e.length,limited:r.length<e.length}}function H(e){return r(`app.migration.proof.verdict.${e===`not-comparable`?`notComparable`:e}`)}function U(e){return r(`app.migration.proof.reason.${e.code}`,{element:e.element??``,detail:e.detail??``})}function W(e){if(e===void 0)return r(`app.migration.proof.noValue`);let t;try{t=JSON.stringify(e)??String(e)}catch{t=String(e)}return t.length>200?`${t.slice(0,200)}...`:t}function G(e){if(e===null)return r(`app.migration.proof.noTrace`);let t=e.elements.slice(0,60).join(` > `);return e.elements.length>60?`${t} > ...`:t}function K(e){switch(e.kind){case`element`:return r(`app.migration.proof.divergence.element`,{index:e.index+1,original:e.original??r(`app.migration.proof.theEnd`),converted:e.converted??r(`app.migration.proof.theEnd`)});case`outcome`:return r(`app.migration.proof.divergence.outcome`,{original:e.original,converted:e.converted,message:e.message??``});case`state`:return r(`app.migration.proof.divergence.state`,{original:e.original,converted:e.converted});case`incident`:return r(`app.migration.proof.divergence.incident`,{original:e.original.join(`, `)||r(`app.migration.proof.none`),converted:e.converted.join(`, `)||r(`app.migration.proof.none`)});case`variable`:return r(`app.migration.proof.divergence.variable`,{name:e.name,original:W(e.original),converted:W(e.converted)})}}function q(e){return r(`app.migration.proof.totals`,{equivalent:e.equivalent,differs:e.differs,notComparable:e.notComparable})}function J(e,t){let n=[`${H(e.verdict).padEnd(14)} ${e.file} › ${e.name}`];return e.reason&&n.push(` ${U(e.reason)}`),e.divergence&&n.push(` ${K(e.divergence)}`),e.orderNote&&n.push(` ${r(`app.migration.proof.orderNote`)}`),t&&e.verdict===`differs`&&(n.push(` ${r(`app.migration.proof.originalTrace`)}: ${G(e.original)}`),n.push(` ${r(`app.migration.proof.convertedTrace`)}: ${G(e.converted)}`)),n}function oe(e){return{file:e.file,diagram:e.diagram,name:e.name,verdict:e.verdict,...e.reason?{reason:{code:e.reason.code,...e.reason.element?{element:e.reason.element}:{},text:U(e.reason)}}:{},...e.divergence?{divergence:e.divergence,divergenceText:K(e.divergence)}:{},orderNote:e.orderNote,touches:e.touches,original:e.original,converted:e.converted}}function Y(e){let t=/* @__PURE__ */ new Set,n=!1,r=e=>{for(let i of e??[]){if(n)return;typeof i.id==`string`&&t.add(i.id),t.size>2e4&&(n=!0),r(i.flowElements)}};for(let n of e?.rootElements??[])n.$type===`bpmn:Process`&&(typeof n.id==`string`&&t.add(n.id),r(n.flowElements));return n?null:t}async function se(e,t){let[n,r]=await Promise.all([b(e),b(t)]);if(!n||!r)return null;let i=Y(n),a=Y(r);return i===null||a===null?null:new Map([...i].sort().map(e=>[e,a.has(e)?e:null]))}function ce(e){try{return e?new URL(e).host:``}catch{return``}}function X(e,t,n){let o=r(`app.migration.proof.side.${e}`);return t===null?[r(`app.migration.proof.refusal.noEngine`,{side:o,profile:n??r(`app.migration.proof.defaultProfile`)})]:(e===`original`?a(t.name):i(t.name))?t.forTests?[]:[r(`app.migration.proof.refusal.notForTests`,{side:o,where:ce(t.url)||t.name})]:[r(`app.migration.proof.refusal.wrongFamily.${e}`,{engine:t.name})]}function le(e,t){let n=0,r=0,i=-1,a=0;for(;r<t.length;)if(n<e.length&&(e[n]===`?`||e[n]===t[r]))n+=1,r+=1;else if(n<e.length&&e[n]===`*`)i=n,a=r,n+=1;else if(i>=0)n=i+1,a+=1,r=a;else return!1;for(;n<e.length&&e[n]===`*`;)n+=1;return n===e.length}function ue(e,t){if(e.length===0||e.length>256||t.length>4096)return!1;let n=e.replace(/\\/g,`/`).split(`/`).filter(e=>e!==``&&e!==`.`),r=t.replace(/\\/g,`/`).split(`/`).filter(e=>e!==``&&e!==`.`),i=Array.from({length:n.length+1},()=>Array(r.length+1).fill(!1));i[0][0]=!0;for(let e=0;e<=n.length;e+=1)for(let t=0;t<=r.length;t+=1)i[e][t]&&e!==n.length&&(n[e]===`**`?(i[e+1][t]=!0,t<r.length&&(i[e][t+1]=!0)):t<r.length&&le(n[e],r[t])&&(i[e+1][t+1]=!0));return i[n.length][r.length]}const de=/\.bpmn(\.xml|20\.xml)?$/i,fe=/<(?:[\w-]+:)?(?:parallelGateway|inclusiveGateway|eventBasedGateway|complexGateway)\b|multiInstanceLoopCharacteristics|triggeredByEvent="true"/;function pe(e){let t=new Set(Object.keys(e[`x-penstock`]?.behaviours??{}));for(let n of e.instructions){if(n.type!==`COMPLETE_JOB`&&n.type!==`THROW_BPMN_ERROR_FROM_JOB`)continue;let e=n.jobSelector?.elementId;typeof e==`string`&&t.add(e)}return t}function Z(e){return e.map(e=>({path:e.path,read:async()=>e.text}))}function me(e){return`${e.slice(0,20).map(e=>e.element===``?r(`app.migration.proof.unreadableFile`):`${e.element} (${e.kind})`).join(`, `)}${e.length>20?`, +${e.length-20}`:``}`}function Q(e,t){return s(e,t).split(`\\`).join(`/`)}async function he(e){let t=e.target??`8.8`,n=e.root,i=e.files,a=v(i),s=[],c=/* @__PURE__ */ new Map,p=/* @__PURE__ */ new Map,m=[],h=[],b=0;for(let e of i){let r=await g(e.path,e.text,{target:t,forms:a});if(!r||!r.ok){r&&h.push({kind:`other`,element:``}),s.push(e);continue}if(!r.source){s.push(e);continue}b+=1,s.push({path:e.path,text:r.text});for(let t of r.extraFiles)s.push({path:_(e.path,t.name),text:t.content});let i=Q(n,e.path),l=y(i,r,e.text);m.push(...l),c.set(e.path,new Map(l.flatMap(e=>e.elementId?[[e.elementId,e]]:[]))),p.set(e.path,{all:new Set(r.delegates.filter(e=>e.kind!==`topic`).map(e=>e.elementId)),task:new Set(r.delegates.filter(e=>e.kind!==`topic`&&e.role===`task`).map(e=>e.elementId))}),r.kind===`bpmn`?h.push(...await o(e.text,r.text)):r.text!==e.text&&h.push({kind:`other`,element:i})}if(b===0)return{refused:[r(`app.migration.proof.refusal.nothing`)]};if(h.length>0&&e.runUnreviewed!==!0)return{refused:[r(`app.migration.proof.refusal.executable`,{count:h.length,list:me(h)}),r(`app.migration.proof.refusal.executableHint`)],added:h};let x=[];for(let t of i.filter(e=>de.test(e.path))){let n=d(t.path);if(x.some(e=>e.cases===n))continue;let r=e.caseFile(n);r!==null&&x.push({cases:n,diagram:t.path,text:r})}let S=x.filter(t=>e.scenarios===void 0||ue(e.scenarios,Q(n,t.cases))).slice(0,500),C=[];for(let e of S){let t=Q(n,e.cases),a=Q(n,e.diagram),o=e=>({file:t,diagram:a,testCase:{name:t,instructions:[]},originalResources:[],convertedResources:[],idMap:/* @__PURE__ */ new Map,items:/* @__PURE__ */ new Map,delegates:/* @__PURE__ */ new Set,answered:/* @__PURE__ */ new Set,parallel:!1,problem:e});if(e.text===null||e.text.length>2097152){C.push(o({code:`unreadable-case`,detail:r(`app.migration.proof.caseFileUnreadable`)}));continue}let d=u(e.text);if(d.file===null){C.push(o({code:`unreadable-case`,detail:l(d.problems.join(`; `))}));continue}let m=i.find(t=>t.path===e.diagram),h=s.find(t=>t.path===e.diagram);if(!m||!h||!p.has(e.diagram)){C.push(o({code:`no-converted`}));continue}let g=await se(m.text,h.text);if(g===null){C.push(o({code:`unreadable-trace`,detail:r(`app.migration.proof.idMapUnreadable`)}));continue}let _=await f({path:m.path,content:m.text},Z(i)),v=await f({path:h.path,content:h.text},Z(s)),y=p.get(e.diagram)??{all:/* @__PURE__ */ new Set,task:/* @__PURE__ */ new Set};for(let n of d.file.testCases){if(C.length>=2e3)break;let r=new Set([...pe(n)].filter(e=>y.task.has(e)));C.push({file:t,diagram:a,testCase:n,originalResources:_,convertedResources:v,idMap:g,items:c.get(e.diagram)??/* @__PURE__ */ new Map,delegates:y.all,answered:r,parallel:fe.test(m.text)})}}return{cases:C,added:h,items:m}}function ge(e,t,n){let r={...process.env,...t?{PENSTOCK_PROFILE:t}:{}},i=E(n,r),a=m(i.values);return a?{engine:x(p(a),h(a),a.tenantId??null),name:a.engine,url:a.url,forTests:a.forTests,profile:t??null}:null}function $(e,t,n){try{let r=re(e);return r.isSymbolicLink()||!r.isFile()||r.size>8388608||!ne(e,[t])?(n.push(D.relative(t,e)),null):O(e,`utf8`)}catch{return null}}async function _e(e,t={}){let n=e.target??`8.8`,i=te(e.targets[0]),a=k(i.root),o=t.resolve??ge,s=o(`original`,e.originalProfile,a),c=e.convertedProfile===void 0?null:o(`converted`,e.convertedProfile,a),l=[...X(`original`,s,e.originalProfile),...e.convertedProfile===void 0?[r(`app.migration.proof.refusal.needConverted`)]:X(`converted`,c,e.convertedProfile)];if(s&&c&&s.url!==null&&s.url===c.url&&l.push(r(`app.migration.proof.refusal.sameEngine`)),l.length>0||s===null||c===null)return{refused:l};let u=[],d=[...new Set(e.targets.flatMap(e=>T(e,[`process`,`decision`,`form`])))].sort(),f=[];for(let e of d){let t=$(e,a,u);t!==null&&f.push({path:D.resolve(e),text:t})}let p=await he({root:a,files:f,target:n,scenarios:e.scenarios,runUnreviewed:e.runUnreviewed,caseFile:e=>$(D.resolve(e),a,u)});if(`refused`in p)return p;let{cases:m,added:h,items:g}=p,_=e=>{let n=e.url??e.name;return{engine:e.engine,key:n,builds:(t.builds??S)(n)}};return{report:await V(m,{runId:e.runId??`proof-${Date.now().toString(36)}`,original:_(s),converted:_(c),limit:e.limit,signal:e.signal,stepTimeoutMs:e.stepTimeoutMs,pollMs:e.pollMs,settleReads:e.settleReads,...t.timing}),root:a,original:{name:s.name,profile:s.profile},converted:{name:c.name,profile:c.profile},added:h,unreviewedRun:h.length>0,skipped:u,items:g}}function ve(e){return{original:e.original,converted:e.converted,totals:e.report.totals,total:e.report.total,limited:e.report.limited,unreviewedRun:e.unreviewedRun,added:e.added,skipped:e.skipped,exit:I(e.report),scenarios:e.report.scenarios.map(oe)}}async function ye(i,a,o,s){let c=o??await n(),l=t(c),u=await _e({targets:i,scenarios:a.scenarios,target:a.target??`8.8`,runUnreviewed:a.runUnreviewed===!0,originalProfile:a.originalProfile,convertedProfile:a.convertedProfile,limit:l?null:3},s);if(`refused`in u)return a.format===`json`?{ok:!1,refused:!0,code:2,lines:[JSON.stringify({refused:u.refused,exit:2},null,2)]}:{ok:!1,refused:!0,code:2,lines:[r(`app.migration.proof.refused`),...u.refused.map(e=>` ${e}`)]};let d=I(u.report);if(a.format===`json`)return{ok:d===0,refused:!1,code:d,lines:[JSON.stringify({...ve(u),preview:!l&&u.report.limited},null,2)]};let f=[];u.unreviewedRun&&f.push(r(`app.migration.proof.ranUnreviewed`,{count:u.added.length}),``),u.report.scenarios.length===0&&f.push(r(`app.migration.proof.noScenarios`));for(let e of u.report.scenarios)f.push(...J(e,!0));return f.push(``,q(u.report.totals)),u.report.limited&&!l&&f.push(``,r(`app.migration.proof.freePreview`,{shown:u.report.scenarios.length,total:u.report.total}),...e(c,`migration-proof`)),u.skipped.forEach(e=>f.push(r(`app.migration.proof.skippedFile`,{file:e}))),{ok:d===0,refused:!1,code:d,lines:f}}export{ye as verifyCommand};