@runeya/runeya 2.0.138 → 2.0.139

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 (397) hide show
  1. package/agent/index.js +12 -0
  2. package/agent/index.js.map +1 -1
  3. package/agent-manager-NAGIMH2T.js +11 -0
  4. package/chat-Q2UMYXQL.js +21 -0
  5. package/{chunk-ZFELQG4B.js → chunk-EV3TBM7E.js} +78 -5
  6. package/chunk-EV3TBM7E.js.map +1 -0
  7. package/{chunk-C6LIGJFX.js → chunk-GLIU3J47.js} +354 -128
  8. package/chunk-GLIU3J47.js.map +1 -0
  9. package/{chunk-BDQOBEZ3.js → chunk-GOMF7NWS.js} +2 -2
  10. package/{desktop-launcher-3COY6F6H.js → chunk-GWQV5KKU.js} +193 -13
  11. package/chunk-GWQV5KKU.js.map +1 -0
  12. package/{chunk-5EMEJNVU.js → chunk-LE6XQ3OV.js} +13 -1
  13. package/chunk-LE6XQ3OV.js.map +1 -0
  14. package/{chunk-ALWA4K5L.js → chunk-MSICJEZD.js} +4 -4
  15. package/{chunk-GUIONCNA.js → chunk-WNCXZ6E7.js} +164 -124
  16. package/chunk-WNCXZ6E7.js.map +1 -0
  17. package/{chunk-I7JHF5FE.js → chunk-XHGJHYDC.js} +4 -4
  18. package/chunk-YSYLL57J.js +87 -0
  19. package/chunk-YSYLL57J.js.map +1 -0
  20. package/{companion-JYLQKSFO.js → companion-MGX62L4T.js} +8 -6
  21. package/desktop-installer-page-OJTOKP7V.js +598 -0
  22. package/desktop-installer-page-OJTOKP7V.js.map +1 -0
  23. package/desktop-launcher-HKXP4LRI.js +43 -0
  24. package/desktop-wizard-XIDDAG7L.js +15 -0
  25. package/index.js +29 -20
  26. package/index.js.map +1 -1
  27. package/mcp-server/index.js +49 -1
  28. package/mcp-server/index.js.map +1 -1
  29. package/package.json +1 -1
  30. package/settings-manager-BBNCDDQJ.js +10 -0
  31. package/settings-manager-BBNCDDQJ.js.map +1 -0
  32. package/{src-42DMJB3D.js → src-KWLVQD36.js} +191 -90
  33. package/src-KWLVQD36.js.map +1 -0
  34. package/{vault-resolver-57Q2DVOR.js → vault-resolver-B5P2OUI5.js} +20 -2
  35. package/vault-resolver-B5P2OUI5.js.map +1 -0
  36. package/web/assets/AgentScalarChatInterface.vue-CqGVVIo8.js +13 -0
  37. package/web/assets/AgentTerminalPage-mVD1jsWC.js +1 -0
  38. package/web/assets/AiChatPage-J-JAXhoT.js +1 -0
  39. package/web/assets/AppLayout-6eKmu_TP.css +1 -0
  40. package/web/assets/AppLayout-CsUnvWA0.js +1 -0
  41. package/web/assets/AuditPage-gzMJbY4c.js +1 -0
  42. package/web/assets/CloudAccountPage-CIUmdyoI.js +1 -0
  43. package/web/assets/CloudAccountPage-Cm1ibhZY.js +1 -0
  44. package/web/assets/CloudAccountPage-eoNciq1Q.css +1 -0
  45. package/web/assets/CloudMessagingPage-EV4MwYrk.js +2 -0
  46. package/web/assets/DashboardPage-CrMccWRA.js +1 -0
  47. package/web/assets/DirectoryPickerDialog-Cnr4SkLc.js +1 -0
  48. package/web/assets/DirectoryPickerDialog-D1lQ83i5.css +1 -0
  49. package/web/assets/{EditorIcon-DXYoMZnL.js → EditorIcon-Dlr9ami0.js} +2 -2
  50. package/web/assets/{EnvironmentForm-D3pZuxVn.js → EnvironmentForm-NiG4dzT9.js} +2 -2
  51. package/web/assets/EnvironmentFormPage-TJzOWwS7.js +1 -0
  52. package/web/assets/EnvironmentListPage-oR335kl1.js +1 -0
  53. package/web/assets/KanbanBoardPage-Cta-iCIL.css +1 -0
  54. package/web/assets/KanbanBoardPage-Dol6K6rI.js +4 -0
  55. package/web/assets/KanbanListPage-C2yhMB2L.js +1 -0
  56. package/web/assets/{KanbanListPage-DxJFx6A6.css → KanbanListPage-CEJ9Vluh.css} +1 -1
  57. package/web/assets/LaunchProjectPage-BGIRMKdM.js +1 -0
  58. package/web/assets/LaunchProjectPage-CU2iF25_.css +1 -0
  59. package/web/assets/LaunchServicesPage-9aAno4Gc.css +1 -0
  60. package/web/assets/LaunchServicesPage-DqIG8ZDk.js +1 -0
  61. package/web/assets/LaunchShell-C7RrqA4k.js +1 -0
  62. package/web/assets/LaunchShell-CGtjrl6_.css +1 -0
  63. package/web/assets/LogViewer-BWtCyqa4.js +3 -0
  64. package/web/assets/OrgKeyPrompt-B343sYVi.css +1 -0
  65. package/web/assets/OrgKeyPrompt-IjlZPHOI.js +1 -0
  66. package/web/assets/OrgLogo-B0TayK5W.js +1 -0
  67. package/web/assets/ProcessControls-Bw28Duzs.js +1 -0
  68. package/web/assets/ProcessDetailPage-CVYQJ4aI.js +1 -0
  69. package/web/assets/{ProcessMetrics-CdQc_8Z0.js → ProcessMetrics-D0HzDnGO.js} +3 -3
  70. package/web/assets/ProjectCreateDialog-CLFPf8ds.js +1 -0
  71. package/web/assets/ProjectCreateDialog-UEIYMerY.css +1 -0
  72. package/web/assets/ProjectLocationGate-D68jdBcV.js +1 -0
  73. package/web/assets/ProjectPublishDialog-CDpS6xcQ.css +1 -0
  74. package/web/assets/ProjectPublishDialog-Cvvjeuyq.js +1 -0
  75. package/web/assets/RandomJobTestPage-CuUJfwwb.js +2 -0
  76. package/web/assets/ScenarioEditorPage-Ckq6XNl2.js +14 -0
  77. package/web/assets/SendToChatDialog-4a4_2amD.js +1 -0
  78. package/web/assets/ServiceControlsBar-OC7cDCM7.js +1 -0
  79. package/web/assets/ServiceDetailPage-BMlS1q4i.js +2 -0
  80. package/web/assets/ServiceFormPage-CozmJNy1.js +1 -0
  81. package/web/assets/{SettingsPage-DA7lVKfg.css → SettingsPage-CF548HPl.css} +1 -1
  82. package/web/assets/SettingsPage-CkJQwWCW.js +2063 -0
  83. package/web/assets/UnlockPage-94m6Ap-H.js +1 -0
  84. package/web/assets/VaultMigrationPage-Bj6KgIUi.js +1 -0
  85. package/web/assets/VersionBadge-DjTAz-tn.js +1 -0
  86. package/web/assets/WikiPage-n_vxXevo.js +1 -0
  87. package/web/assets/WikiView-lxEITfCa.js +1 -0
  88. package/web/assets/add-scalar-classes-lFkCrmFv.js +387 -0
  89. package/web/assets/{autocomplete-DobAPPYJ.js → autocomplete-bClqtFV-.js} +3 -3
  90. package/web/assets/{basic-shape-diamond.svg-FbeAPLc-.js → basic-shape-diamond.svg-DFdUK3gN.js} +1 -1
  91. package/web/assets/{basic-shape-hexagon.svg-CtwcdpTe.js → basic-shape-hexagon.svg-BKiT9xxU.js} +1 -1
  92. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-DsSs3S2_.js → basic-shape-primary-circle-ellipse-round.svg-tmXcRxRQ.js} +1 -1
  93. package/web/assets/{basic-shape-primary-square-rectangle.svg-CNe1RNx8.js → basic-shape-primary-square-rectangle.svg-C9duFSNc.js} +1 -1
  94. package/web/assets/{basic-shape-shield.svg-DwZMLfah.js → basic-shape-shield.svg-CLzO94DF.js} +1 -1
  95. package/web/assets/{browser-Dz1gvldT.js → browser-BEDlGGfe.js} +1 -1
  96. package/web/assets/{browser-DsZ9HxVm.js → browser-CivlztYP.js} +1 -1
  97. package/web/assets/card-wcTFC8yG.js +32 -0
  98. package/web/assets/{checkbox-DPknldTJ.js → checkbox-TtO_mmrY.js} +2 -2
  99. package/web/assets/{chevronup-D2Lr2GiV.js → chevronup-Cd93cHVj.js} +4 -4
  100. package/web/assets/{chip-Caiakd-N.js → chip-omKmLLWH.js} +2 -2
  101. package/web/assets/client-BKIls6aD.js +24 -0
  102. package/web/assets/cloud-chat.store-Bskr_EXO.js +1 -0
  103. package/web/assets/cloud-client-rcfqjfUK.js +1 -0
  104. package/web/assets/cloud-session-CycNU7YV.js +1 -0
  105. package/web/assets/cloud-session-DiaAeCJI.js +2 -0
  106. package/web/assets/column-DgtEciO-.js +763 -0
  107. package/web/assets/composables-Ce8WccBy.js +1 -0
  108. package/web/assets/{computer-device-desktop-monitor.svg-CwiGN14T.js → computer-device-desktop-monitor.svg-D3YaocxY.js} +1 -1
  109. package/web/assets/{computer-device-desktop.svg-BC2VdXDZ.js → computer-device-desktop.svg-lnn_cyCx.js} +1 -1
  110. package/web/assets/{computer-device-laptop.svg-BOp8AKN6.js → computer-device-laptop.svg-9f5_Ipnq.js} +1 -1
  111. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-CmbpPX1u.js → computer-device-mobile-phone-android-samsung-back.svg-DxHwZI5u.js} +1 -1
  112. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-_WGKWVtZ.js → computer-device-mobile-phone-android-samsung.svg-CnYqoXt4.js} +1 -1
  113. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-DmLh97KG.js → computer-device-mobile-phone-iphone-x-back.svg-D8JfsF_0.js} +1 -1
  114. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-C7-5mdyV.js → computer-device-mobile-phone-iphone-x.svg-CUbRWc7v.js} +1 -1
  115. package/web/assets/{computer-device-mobile-tablet-touch.svg-DiUaSnhU.js → computer-device-mobile-tablet-touch.svg-CBX2kbI1.js} +1 -1
  116. package/web/assets/{computer-device-mobile-tablet.svg-B6nfbYm_.js → computer-device-mobile-tablet.svg-CIn05KEg.js} +1 -1
  117. package/web/assets/{computer-device-network-ethernet-cat6.svg-DwtVKy79.js → computer-device-network-ethernet-cat6.svg-Dj0GRqXd.js} +1 -1
  118. package/web/assets/{computer-device-network-lan-www.svg-vQKfG3Xz.js → computer-device-network-lan-www.svg-D-G7js6t.js} +1 -1
  119. package/web/assets/{computer-device-network-wifi-connection.svg-DhHaOUge.js → computer-device-network-wifi-connection.svg-JnvMwBMA.js} +1 -1
  120. package/web/assets/{computer-device-network-wifi-router.svg-1dQS4k4J.js → computer-device-network-wifi-router.svg--XxSrk_J.js} +1 -1
  121. package/web/assets/{cssMode-CdQL22W5.js → cssMode-C3gHbz_w.js} +1 -1
  122. package/web/assets/{divider-DhYR4BAO.js → divider-eMI33mv1.js} +2 -2
  123. package/web/assets/{docx-preview-D-jP_CCs.js → docx-preview-CTkzTOcl.js} +1 -1
  124. package/web/assets/{ecology-science-erlenmeyer-flask.svg-D76wQVA2.js → ecology-science-erlenmeyer-flask.svg-DrHKX7bH.js} +1 -1
  125. package/web/assets/{fieldset-BtOjs_Hh.js → fieldset-CiIJH8Xe.js} +2 -2
  126. package/web/assets/{freemarker2-BADW9vhy.js → freemarker2-DWxB7Wcd.js} +1 -1
  127. package/web/assets/{handlebars-CwWQD_C8.js → handlebars-CWUdFsNH.js} +1 -1
  128. package/web/assets/{html-y87CEbe3.js → html-DhvF7iHg.js} +1 -1
  129. package/web/assets/{htmlMode-CVagtvVh.js → htmlMode-CIuDa6YW.js} +1 -1
  130. package/web/assets/{image-flash-lightning.svg-OvpKi3a3.js → image-flash-lightning.svg-qFK_1eYx.js} +1 -1
  131. package/web/assets/{image-picture-flower.svg-DLOePozT.js → image-picture-flower.svg-qAmkHnOu.js} +1 -1
  132. package/web/assets/{index-CcIrffU_.js → index-CzSAFmCu.js} +363 -363
  133. package/web/assets/index-D0IPNhsg.css +1 -0
  134. package/web/assets/{interface-alert-exclamation-diamond.svg-4Vk7SoQ1.js → interface-alert-exclamation-diamond.svg-Dugh0ymo.js} +1 -1
  135. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-BLAvc4am.js → interface-alert-exclamation-triangle-warning.svg-8neoRFVP.js} +1 -1
  136. package/web/assets/{interface-alert-information-circle.svg-CaAXpDAI.js → interface-alert-information-circle.svg-DM9S7DBv.js} +1 -1
  137. package/web/assets/{interface-award-crown.svg-CW7XG0wx.js → interface-award-crown.svg--68HCcUG.js} +1 -1
  138. package/web/assets/{interface-bookmark.svg-BpLEuOv2.js → interface-bookmark-tag.svg-BESGrlZw.js} +1 -1
  139. package/web/assets/{interface-bookmark-tag.svg-DPWVVeZU.js → interface-bookmark.svg-CVadIwuA.js} +1 -1
  140. package/web/assets/{interface-calendar-date-one.svg-DbBgvI4W.js → interface-calendar-date-one.svg-D9XP9Dv_.js} +1 -1
  141. package/web/assets/{interface-content-book-open-pages.svg-BbsuvPZM.js → interface-content-book-open-pages.svg-DMI3yFmk.js} +1 -1
  142. package/web/assets/{interface-content-book-page.svg-DbRPz1j8.js → interface-content-book-page.svg-BPxSHq3g.js} +1 -1
  143. package/web/assets/{interface-content-file.svg-OJPKABxS.js → interface-content-file.svg-D0Mbjb8x.js} +1 -1
  144. package/web/assets/interface-content-folder.svg-D3wbwhAD.js +1 -0
  145. package/web/assets/{interface-content-folder.svg-3D_5OE_-.js → interface-content-folder.svg-EUO1l7Mn.js} +1 -1
  146. package/web/assets/{interface-copy-clipboard.svg-DqthVh9J.js → interface-copy-clipboard.svg-DI-wp72J.js} +1 -1
  147. package/web/assets/{interface-edit-attachment.svg-BAPCnZ0B.js → interface-edit-attachment.svg-CrWbaWn_.js} +1 -1
  148. package/web/assets/{interface-edit-binocular.svg-BoV39ouF.js → interface-edit-binocular.svg-BzUDq1Il.js} +1 -1
  149. package/web/assets/{interface-edit-magic-wand.svg-Cz36nKVn.js → interface-edit-magic-wand.svg-DaAdEL5x.js} +1 -1
  150. package/web/assets/{interface-edit-tool-paint-roller.svg-DZUQotD5.js → interface-edit-tool-paint-roller.svg-C972BXSM.js} +1 -1
  151. package/web/assets/{interface-edit-tool-pencil.svg-DBf1Y9Tj.js → interface-edit-tool-pencil.svg-47QCYH9f.js} +1 -1
  152. package/web/assets/{interface-favorite-award.svg-B93sRjxf.js → interface-favorite-award.svg-DROP-rzN.js} +1 -1
  153. package/web/assets/{interface-favorite-flag.svg-DKHuT11J.js → interface-favorite-flag.svg-B1gpMdkg.js} +1 -1
  154. package/web/assets/{interface-favorite-heart.svg-Bw5FZQ7d.js → interface-favorite-heart.svg-Dc0MMGJl.js} +1 -1
  155. package/web/assets/{interface-favorite-star.svg-CgLbct_b.js → interface-favorite-star.svg-D6A5KWft.js} +1 -1
  156. package/web/assets/{interface-favorite-stars-sparkles.svg-B7cYS4ef.js → interface-favorite-stars-sparkles.svg-CpEr4y41.js} +1 -1
  157. package/web/assets/{interface-hierarchy-flowchart.svg-zwuaRdWq.js → interface-hierarchy-flowchart.svg-DjvgRFcZ.js} +1 -1
  158. package/web/assets/{interface-home-house.svg-B85yMFCe.js → interface-home-house.svg-BMmVKlSc.js} +1 -1
  159. package/web/assets/{interface-hyperlink.svg-US6b-Svn.js → interface-hyperlink.svg-BewFXeyZ.js} +1 -1
  160. package/web/assets/{interface-lighting-brightness.svg-mZWkhb7f.js → interface-lighting-brightness.svg-B74_Fwt9.js} +1 -1
  161. package/web/assets/{interface-lock-closed.svg-9oHuNwuY.js → interface-lock-closed.svg-B_kTyHSd.js} +1 -1
  162. package/web/assets/{interface-lock-open-unlock.svg-DBetdJny.js → interface-lock-open-unlock.svg-BpmOnQWL.js} +1 -1
  163. package/web/assets/{interface-login-key.svg-BZnZTYd1.js → interface-login-key.svg-CjYpI4bh.js} +1 -1
  164. package/web/assets/{interface-search.svg-CMXAOoam.js → interface-search.svg-FJmFWdB4.js} +1 -1
  165. package/web/assets/{interface-setting-cog.svg-CKckatt7.js → interface-setting-cog.svg-CfzSne-G.js} +1 -1
  166. package/web/assets/{interface-share-megaphone-bullhorn.svg-DH7kVqN-.js → interface-share-megaphone-bullhorn.svg-CIIzDsMB.js} +1 -1
  167. package/web/assets/{interface-share-rocket.svg-BNXcMugi.js → interface-share-rocket.svg-DqTBI7lO.js} +1 -1
  168. package/web/assets/{interface-share-satellite.svg-Bb8t607w.js → interface-share-satellite.svg-nJfwIxpE.js} +1 -1
  169. package/web/assets/{interface-share-space-ship.svg-Dk4rbLtF.js → interface-share-space-ship.svg-hSmFC9Bt.js} +1 -1
  170. package/web/assets/{interface-share.svg-CtX8dq5i.js → interface-share.svg-DW5W5LS6.js} +1 -1
  171. package/web/assets/{interface-signal-square.svg-DmUIlYTd.js → interface-signal-square.svg-CxjWE1n9.js} +1 -1
  172. package/web/assets/{interface-time-clock-circle.svg-D2ZNaXT3.js → interface-time-clock-circle.svg-OliTsm3U.js} +1 -1
  173. package/web/assets/{interface-time-hour-glass.svg-Ddo-8hHe.js → interface-time-hour-glass.svg-Cq5G77ft.js} +1 -1
  174. package/web/assets/{interface-users-multiple.svg-Jh7S0sT4.js → interface-users-multiple.svg-BZxMlLou.js} +1 -1
  175. package/web/assets/{interface-weather-moon.svg-DbdQFgL2.js → interface-weather-moon.svg-lFXrwEyz.js} +1 -1
  176. package/web/assets/{javascript-BVGFyXBk.js → javascript-BVZ1omk1.js} +1 -1
  177. package/web/assets/{jsonMode-vnFlxYl9.js → jsonMode-CiBARvaV.js} +2 -2
  178. package/web/assets/{liquid-DieKMEvN.js → liquid-CUYREU3G.js} +1 -1
  179. package/web/assets/{lspLanguageFeatures-DoeI-8Y7.js → lspLanguageFeatures-BCfkeNgB.js} +3 -3
  180. package/web/assets/{mail-chat-bubble-square.svg-CApdU2ea.js → mail-chat-bubble-square.svg-DbOh-u2f.js} +1 -1
  181. package/web/assets/{mail-send-email-paper-airplane.svg-jjZ0KB32.js → mail-send-email-paper-airplane.svg-Ci3654Ap.js} +1 -1
  182. package/web/assets/{mail-send-envelope.svg-B6Tsoh-8.js → mail-send-envelope.svg-BUCSUoVb.js} +1 -1
  183. package/web/assets/{mdx-BCkszXid.js → mdx-GNBOgT3C.js} +1 -1
  184. package/web/assets/{minus-DfLQX3s2.js → minus-qBqqwoxz.js} +2 -2
  185. package/web/assets/modal-CsKPvO45.js +5 -0
  186. package/web/assets/modal-E9FRG--u.js +1 -0
  187. package/web/assets/{money-cashier-receipt.svg-DM-I8Snr.js → money-cashier-receipt.svg-qOZhZZs2.js} +1 -1
  188. package/web/assets/{money-currency-dollar-pay.svg-CkDRewrV.js → money-currency-dollar-pay.svg-WYlopKIm.js} +1 -1
  189. package/web/assets/{money-graph-arrow-increase.svg-BT4KLHWz.js → money-graph-arrow-increase.svg-DAcyYWIw.js} +1 -1
  190. package/web/assets/{money-graph-bar-chart-increase.svg-EvyIJ3Uu.js → money-graph-bar-chart-increase.svg-Bcjxz1Kd.js} +1 -1
  191. package/web/assets/multiselect-DiGSzibm.js +251 -0
  192. package/web/assets/{nature-ecology-leaf.svg-uZBwXdg9.js → nature-ecology-leaf.svg-d0AKmyxH.js} +1 -1
  193. package/web/assets/{password-D1R5w1qL.js → password-BwMjgK0Q.js} +4 -4
  194. package/web/assets/{phone-telephone.svg-BSvOskIB.js → phone-telephone.svg-BzKK2wbN.js} +1 -1
  195. package/web/assets/{plus-CNGSRnxy.js → plus-D6Rlmwbp.js} +6 -6
  196. package/web/assets/process.store-I5VZVT0x.js +1 -0
  197. package/web/assets/{programming-bug.svg-CLnGs4K-.js → programming-bug.svg-BtSROvd5.js} +1 -1
  198. package/web/assets/{programming-cloud.svg-CxBovXBR.js → programming-cloud.svg-YDPFJdYt.js} +1 -1
  199. package/web/assets/{programming-computer-database-server.svg-C1JmOyio.js → programming-computer-database-server.svg-C_7cgE9Q.js} +1 -1
  200. package/web/assets/{programming-computer-database.svg-BRjyOzP4.js → programming-computer-database.svg-CLw76mik.js} +1 -1
  201. package/web/assets/{programming-module-four-layout.svg-Blwzw6Qz.js → programming-module-four-layout.svg-BsoC5ySI.js} +1 -1
  202. package/web/assets/{programming-module-three.svg-6bkrmWsU.js → programming-module-three.svg-CThoMoAk.js} +1 -1
  203. package/web/assets/{programming-module.svg-CBS9xKxX.js → programming-module.svg-BQ1YjjAj.js} +1 -1
  204. package/web/assets/{programming-script-code.svg-BVhyoAD3.js → programming-script-code.svg-BKT_wilO.js} +1 -1
  205. package/web/assets/project-launch.store-CBnJKGQe.js +1 -0
  206. package/web/assets/project.store-JIcOcKSg.js +1 -0
  207. package/web/assets/{python-CiPYtj_d.js → python-BXwGt-Ip.js} +1 -1
  208. package/web/assets/{radiobutton--KWBHcDP.js → radiobutton-D20sH1UN.js} +3 -3
  209. package/web/assets/{razor-CSoWGP30.js → razor-RXambmP2.js} +1 -1
  210. package/web/assets/router-BXj_oCbf.js +1 -0
  211. package/web/assets/{selectbutton-C0NL5n4w.js → selectbutton-rLcf19Xf.js} +4 -4
  212. package/web/assets/settings-scope-Cy_9OGE1.js +1 -0
  213. package/web/assets/settings.store-DrKeFdgW.js +1 -0
  214. package/web/assets/{shopping-cart.svg-C-8NG_Po.js → shopping-cart.svg-EjTn3XQF.js} +1 -1
  215. package/web/assets/{shopping-gift-present.svg-Bp6q5VzJ.js → shopping-gift-present.svg-AQNlzazh.js} +1 -1
  216. package/web/assets/{shopping-shipping-box-parcel-package.svg-DeWaEIwm.js → shopping-shipping-box-parcel-package.svg-VB9n6UNi.js} +1 -1
  217. package/web/assets/src-ByEHJyfr.js +1 -0
  218. package/web/assets/{src-BHR3l7pa.js → src-CUwD1xPP.js} +35 -35
  219. package/web/assets/src-C_auNJtg.css +1 -0
  220. package/web/assets/{tag-new-circle.svg-CTljXsqE.js → tag-new-circle.svg-BllOd5JW.js} +1 -1
  221. package/web/assets/theme-DuAHBQRP.js +1 -0
  222. package/web/assets/{toggleswitch-d41l5g27.js → toggleswitch-C-88_GnB.js} +2 -2
  223. package/web/assets/{travel-map-earth-globe.svg-BUkcntCp.js → travel-map-earth-globe.svg-ChLDmmU9.js} +1 -1
  224. package/web/assets/trpc-BoKwANhj.js +1 -0
  225. package/web/assets/{tsMode-B2c-rCAa.js → tsMode-CIN3QIw8.js} +6 -6
  226. package/web/assets/{typescript-CmW4u_GQ.js → typescript-wXu_7Eym.js} +1 -1
  227. package/web/assets/useAiChatDrawer-Bs1Gxhn2.js +1 -0
  228. package/web/assets/{useCloudOrg-E4l-99WA.js → useCloudOrg-0AZ58M3V.js} +1 -1
  229. package/web/assets/useEnvVarAutocomplete-BXC_JUF7.js +102 -0
  230. package/web/assets/{useEnvVarAutocomplete-DsxEF6Ya.css → useEnvVarAutocomplete-dxAmKsn7.css} +1 -1
  231. package/web/assets/useProjectCloudOrg-UIfVePy9.js +1 -0
  232. package/web/assets/useServiceUrlHost-BXbIxPaT.js +1 -0
  233. package/web/assets/{xml-BxMqu3hT.js → xml-FTYGqn2R.js} +1 -1
  234. package/web/assets/{yaml-Djx7E3R1.js → yaml-DQEEK2dU.js} +1 -1
  235. package/web/index.html +2 -2
  236. package/agent-manager-2AZVCQRI.js +0 -11
  237. package/chat-SWYI4ENT.js +0 -21
  238. package/chunk-5EMEJNVU.js.map +0 -1
  239. package/chunk-C6LIGJFX.js.map +0 -1
  240. package/chunk-GUIONCNA.js.map +0 -1
  241. package/chunk-ZFELQG4B.js.map +0 -1
  242. package/desktop-launcher-3COY6F6H.js.map +0 -1
  243. package/desktop-wizard-4CYANX2O.js +0 -209
  244. package/desktop-wizard-4CYANX2O.js.map +0 -1
  245. package/settings-manager-J4QBIU3T.js +0 -10
  246. package/src-42DMJB3D.js.map +0 -1
  247. package/web/assets/AgentScalarChatInterface.vue-BGGkpyp3.js +0 -13
  248. package/web/assets/AgentTerminalPage-B8gLray2.js +0 -1
  249. package/web/assets/AiChatPage-BKITsyMx.js +0 -1
  250. package/web/assets/AppLayout-B72S4nTi.css +0 -1
  251. package/web/assets/AppLayout-BYw7v2sp.js +0 -1
  252. package/web/assets/AuditPage-nHTwzyia.js +0 -1
  253. package/web/assets/CloudAccountPage-DYOvfMjD.css +0 -1
  254. package/web/assets/CloudAccountPage-DuaZz2j4.js +0 -1
  255. package/web/assets/CloudAccountPage-XHxI-ixD.js +0 -1
  256. package/web/assets/CloudMessagingPage-B2N5K-Xs.js +0 -2
  257. package/web/assets/DashboardPage-VoWJeWh_.js +0 -1
  258. package/web/assets/DirectoryPickerDialog-B5SuJOhv.js +0 -1
  259. package/web/assets/DirectoryPickerDialog-Ctp1lYoS.css +0 -1
  260. package/web/assets/EnvironmentFormPage-BIXbPTN5.js +0 -1
  261. package/web/assets/EnvironmentListPage-CHa-Ni3w.js +0 -1
  262. package/web/assets/KanbanBoardPage-B46zbE2H.css +0 -1
  263. package/web/assets/KanbanBoardPage-BFTNpm8P.js +0 -4
  264. package/web/assets/KanbanListPage-CYuIrKXH.js +0 -1
  265. package/web/assets/LaunchProjectPage-9hhGBdOh.css +0 -1
  266. package/web/assets/LaunchProjectPage-jy-R3Fiw.js +0 -1
  267. package/web/assets/LaunchServicesPage-BMtm_8yP.css +0 -1
  268. package/web/assets/LaunchServicesPage-DX7nyo36.js +0 -1
  269. package/web/assets/LaunchShell-BHfseuPM.js +0 -1
  270. package/web/assets/LaunchShell-HenrOlHV.css +0 -1
  271. package/web/assets/LogViewer-C-pHXudR.js +0 -3
  272. package/web/assets/OrgKeyPrompt-CrHXZdKL.css +0 -1
  273. package/web/assets/OrgKeyPrompt-OPnK5oPm.js +0 -1
  274. package/web/assets/OrgLogo-Cxa49Tl3.js +0 -1
  275. package/web/assets/ProcessControls-DXDyR6XX.js +0 -1
  276. package/web/assets/ProcessDetailPage-DNKTwgPW.js +0 -1
  277. package/web/assets/RandomJobTestPage-BE8HkgSb.js +0 -2
  278. package/web/assets/ScenarioEditorPage-Coo6ExzZ.js +0 -14
  279. package/web/assets/SendToChatDialog-ClXerpCU.js +0 -1
  280. package/web/assets/ServiceControlsBar-C7HrPjQI.js +0 -1
  281. package/web/assets/ServiceDetailPage-Cxuy0Yix.js +0 -2
  282. package/web/assets/ServiceFormPage-CCOu1h8v.js +0 -1
  283. package/web/assets/SettingsPage-Dt1ViDQe.js +0 -2063
  284. package/web/assets/UnlockPage-C5iEOAKH.js +0 -1
  285. package/web/assets/VaultMigrationPage-CwRWvFY7.js +0 -1
  286. package/web/assets/VersionBadge-Bqb72GXf.js +0 -1
  287. package/web/assets/WikiPage-Bl1jDKKp.js +0 -1
  288. package/web/assets/WikiView-58u6vU3q.js +0 -1
  289. package/web/assets/add-scalar-classes-CT5KQbzH.js +0 -387
  290. package/web/assets/card-46tM5yU0.js +0 -32
  291. package/web/assets/client-KL5c1Dog.js +0 -24
  292. package/web/assets/cloud-chat.store-Belo5SKd.js +0 -1
  293. package/web/assets/cloud-client-Cqa2Udt8.js +0 -1
  294. package/web/assets/cloud-session-56bUtkSL.js +0 -2
  295. package/web/assets/cloud-session-Dqm0C6H5.js +0 -1
  296. package/web/assets/column-DQ53_qc6.js +0 -763
  297. package/web/assets/composables-CHyZa9ag.js +0 -1
  298. package/web/assets/index-CKOtBNaZ.css +0 -1
  299. package/web/assets/interface-content-folder.svg-8mYqkDao.js +0 -1
  300. package/web/assets/modal-CCco27Sn.js +0 -5
  301. package/web/assets/modal-D4J85_wC.js +0 -1
  302. package/web/assets/multiselect-BmjidXlj.js +0 -251
  303. package/web/assets/process.store-p1LqnpY2.js +0 -1
  304. package/web/assets/project-launch.store-BBYtCcv8.js +0 -1
  305. package/web/assets/project.store-D_2v7amt.js +0 -1
  306. package/web/assets/router-CRKT3825.js +0 -1
  307. package/web/assets/settings-scope-DblmUa3N.js +0 -1
  308. package/web/assets/settings.store-DKTQyerJ.js +0 -1
  309. package/web/assets/src-BN5gTC76.css +0 -1
  310. package/web/assets/src-BRLkogf3.js +0 -1
  311. package/web/assets/theme-BZzt_Sgl.js +0 -1
  312. package/web/assets/trpc-Db0Atu8A.js +0 -1
  313. package/web/assets/useAiChatDrawer-0QJJVXul.js +0 -1
  314. package/web/assets/useEnvVarAutocomplete-BDqUWoGr.js +0 -102
  315. package/web/assets/useProjectCatalog-Cxt-hL1H.js +0 -1
  316. package/web/assets/useProjectCloudOrg-CwLTQLIO.js +0 -1
  317. package/web/assets/useServiceUrlHost-VIA3uP5-.js +0 -1
  318. /package/{agent-manager-2AZVCQRI.js.map → agent-manager-NAGIMH2T.js.map} +0 -0
  319. /package/{chat-SWYI4ENT.js.map → chat-Q2UMYXQL.js.map} +0 -0
  320. /package/{chunk-BDQOBEZ3.js.map → chunk-GOMF7NWS.js.map} +0 -0
  321. /package/{chunk-ALWA4K5L.js.map → chunk-MSICJEZD.js.map} +0 -0
  322. /package/{chunk-I7JHF5FE.js.map → chunk-XHGJHYDC.js.map} +0 -0
  323. /package/{companion-JYLQKSFO.js.map → companion-MGX62L4T.js.map} +0 -0
  324. /package/{settings-manager-J4QBIU3T.js.map → desktop-launcher-HKXP4LRI.js.map} +0 -0
  325. /package/{vault-resolver-57Q2DVOR.js.map → desktop-wizard-XIDDAG7L.js.map} +0 -0
  326. /package/web/assets/{abap-BwLGULgU.js → abap-CRsXUZTC.js} +0 -0
  327. /package/web/assets/{apex-BmwhxS2n.js → apex-CN6ZSzwM.js} +0 -0
  328. /package/web/assets/{azcli-7RvE_Zal.js → azcli-ULFzG1xV.js} +0 -0
  329. /package/web/assets/{bat-DRPmS6Na.js → bat-BVH8lwB4.js} +0 -0
  330. /package/web/assets/{bicep-BwfkS7ZV.js → bicep-B8jMqZ8i.js} +0 -0
  331. /package/web/assets/{browser-D3d3061H.js → browser-xa0YgePN.js} +0 -0
  332. /package/web/assets/{cameligo-BJ_mdC8E.js → cameligo-DuuRwBiE.js} +0 -0
  333. /package/web/assets/{clojure-CQKq7DWt.js → clojure-DUpiEmPZ.js} +0 -0
  334. /package/web/assets/{coffee-DJRj2iwd.js → coffee-BO4ou798.js} +0 -0
  335. /package/web/assets/{cpp-BC1yJTUW.js → cpp-CHOtY2DW.js} +0 -0
  336. /package/web/assets/{csharp-D6U2fAAT.js → csharp-D3t5O1XD.js} +0 -0
  337. /package/web/assets/{csp-B2Ue_UmV.js → csp-CJpJWgPE.js} +0 -0
  338. /package/web/assets/{css-CEzlcbMY.js → css-CAeYpQS5.js} +0 -0
  339. /package/web/assets/{cypher-D5Sg38Yj.js → cypher-D9-TC6ep.js} +0 -0
  340. /package/web/assets/{dart-BhjKRv6v.js → dart-CYoMdUUD.js} +0 -0
  341. /package/web/assets/{dockerfile-BnivEbtE.js → dockerfile-B2ffS5e2.js} +0 -0
  342. /package/web/assets/{ecl-TS1StLK1.js → ecl-BL_MLv5o.js} +0 -0
  343. /package/web/assets/{elixir-BX9ta6DO.js → elixir-DTTK5HpM.js} +0 -0
  344. /package/web/assets/{flow9-CoOB42ee.js → flow9-CnqIliGA.js} +0 -0
  345. /package/web/assets/{fsharp-DmQslDFn.js → fsharp-BtsygJkw.js} +0 -0
  346. /package/web/assets/{go-BbEGGooY.js → go-DksUoC0w.js} +0 -0
  347. /package/web/assets/{graphql-E24y5sn9.js → graphql-DCtJGb0Q.js} +0 -0
  348. /package/web/assets/{hcl-pBZphP8G.js → hcl-Vm6MaTNZ.js} +0 -0
  349. /package/web/assets/{ini-BSbRgr25.js → ini-DdyyiZLB.js} +0 -0
  350. /package/web/assets/{java-D8KvzsMp.js → java-D9tw0Sq3.js} +0 -0
  351. /package/web/assets/{julia-BDRytf15.js → julia-DsaDhMSi.js} +0 -0
  352. /package/web/assets/{kotlin-CNcQo-uP.js → kotlin-eMyqSg05.js} +0 -0
  353. /package/web/assets/{less-0HRV-2Rz.js → less-BTExquT2.js} +0 -0
  354. /package/web/assets/{lexon-DdJG3_pW.js → lexon-Btiu1CPR.js} +0 -0
  355. /package/web/assets/{lua-Blq8Mukj.js → lua-uIHSqSt_.js} +0 -0
  356. /package/web/assets/{m3-CXbmzr9W.js → m3-DtY-QwwW.js} +0 -0
  357. /package/web/assets/{markdown-DFIISzT8.js → markdown-DalwAnMR.js} +0 -0
  358. /package/web/assets/{mips-C2XSYglv.js → mips-BocGRfi2.js} +0 -0
  359. /package/web/assets/{msdax-D3Jl6oAY.js → msdax-CQFbyz50.js} +0 -0
  360. /package/web/assets/{mysql-mCqxt_Co.js → mysql-BM8uo0J8.js} +0 -0
  361. /package/web/assets/{objective-c-CUKLr4E9.js → objective-c-H3c5-SZb.js} +0 -0
  362. /package/web/assets/{pascal-BpqDI6Ur.js → pascal-BgiV8eY7.js} +0 -0
  363. /package/web/assets/{pascaligo-BVchPyL4.js → pascaligo-DT9ZcxD2.js} +0 -0
  364. /package/web/assets/{perl-Dgc9v23P.js → perl-B0U4-W-w.js} +0 -0
  365. /package/web/assets/{pgsql-Dk9IX1G_.js → pgsql-B6kZRXs9.js} +0 -0
  366. /package/web/assets/{php-XeFLn3yL.js → php-DG9vCwQM.js} +0 -0
  367. /package/web/assets/{pla-DQMfrdXZ.js → pla-B4Y4wk5I.js} +0 -0
  368. /package/web/assets/{postiats-DiKrdL3K.js → postiats-C_eWfeAP.js} +0 -0
  369. /package/web/assets/{powerquery-Cj9Q91Zv.js → powerquery-DfX2HFDF.js} +0 -0
  370. /package/web/assets/{powershell-DxLElnzU.js → powershell-Bxsmga8Z.js} +0 -0
  371. /package/web/assets/{protobuf-7vT2HdZD.js → protobuf-BjgmCR9H.js} +0 -0
  372. /package/web/assets/{pug-oi96TUbQ.js → pug-ryXuxA3i.js} +0 -0
  373. /package/web/assets/{qsharp-DNr9IwS2.js → qsharp-91Kv1jwy.js} +0 -0
  374. /package/web/assets/{r-C-REi_Zk.js → r-j6OkO-Lp.js} +0 -0
  375. /package/web/assets/{redis-BvOCrLoN.js → redis-B2Usw_gW.js} +0 -0
  376. /package/web/assets/{redshift-jNEw-REz.js → redshift-Bl5n-UlH.js} +0 -0
  377. /package/web/assets/{restructuredtext-B9ET-x7N.js → restructuredtext-IIWeXmeu.js} +0 -0
  378. /package/web/assets/{ruby-BIEBiJDZ.js → ruby-DQH1R4pC.js} +0 -0
  379. /package/web/assets/{rust-BnoIVewm.js → rust-BJi0001n.js} +0 -0
  380. /package/web/assets/{sb-Bwvy9clh.js → sb-C34JQX0H.js} +0 -0
  381. /package/web/assets/{scala-DPv5zS47.js → scala-BqHjuqsC.js} +0 -0
  382. /package/web/assets/{scheme-BQqNVxf_.js → scheme-DIfjDH23.js} +0 -0
  383. /package/web/assets/{scss-Ck1AFDEz.js → scss-MxgEDdb7.js} +0 -0
  384. /package/web/assets/{shell-C4IYs9Z7.js → shell-D_SMEq6l.js} +0 -0
  385. /package/web/assets/{solidity-D3bS77xq.js → solidity-CyBHDO6p.js} +0 -0
  386. /package/web/assets/{sophia-BSTVfueD.js → sophia-8_L-7Xrk.js} +0 -0
  387. /package/web/assets/{sparql-BGcXD7s2.js → sparql-CXxyP-1c.js} +0 -0
  388. /package/web/assets/{sql-CIsSgyam.js → sql-DNd4NFJw.js} +0 -0
  389. /package/web/assets/{st-dV1d_AXx.js → st-DPFJcK-4.js} +0 -0
  390. /package/web/assets/{swift-CK8gXWQn.js → swift-DE_LJ5Ub.js} +0 -0
  391. /package/web/assets/{systemverilog-B9tHBIJU.js → systemverilog-IgPgwLQ7.js} +0 -0
  392. /package/web/assets/{tcl-BgRT60RV.js → tcl-Cr-fmmH0.js} +0 -0
  393. /package/web/assets/{twig-CGkLO4Nl.js → twig-Dd_ODPfV.js} +0 -0
  394. /package/web/assets/{typespec-DMP9WuzC.js → typespec-CeK8X8vB.js} +0 -0
  395. /package/web/assets/{uuid-H0yY5A03.js → uuid-6HQMUkhT.js} +0 -0
  396. /package/web/assets/{vb-DfSbhl3d.js → vb-CyLVxxH6.js} +0 -0
  397. /package/web/assets/{wgsl-CaJmoLY5.js → wgsl-CmRFGM3r.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  settingsManager
3
- } from "./chunk-I7JHF5FE.js";
3
+ } from "./chunk-XHGJHYDC.js";
4
4
  import {
5
5
  COMPANION_SIGNATURE,
6
6
  activeSessionRegistry,
@@ -23,14 +23,16 @@ import {
23
23
  noteSpawnConversation,
24
24
  observePtyChunk,
25
25
  onCompanionThinkingChanged,
26
- projectPathStore,
27
26
  projectStore,
28
27
  readClaudeTranscript,
29
28
  resetRelaunches,
29
+ resolveAgentCwd,
30
+ resolveConversationCwd,
31
+ resolveWorkspaceCwd,
30
32
  runCompanionNow,
31
33
  syncConversationFromClaudeTranscript,
32
34
  verifyJwt
33
- } from "./chunk-C6LIGJFX.js";
35
+ } from "./chunk-GLIU3J47.js";
34
36
  import {
35
37
  StoreDiskCoordinator,
36
38
  agentManager,
@@ -49,7 +51,7 @@ import {
49
51
  recordLocalRemoval,
50
52
  refsOfProjectId,
51
53
  serviceStore
52
- } from "./chunk-ALWA4K5L.js";
54
+ } from "./chunk-MSICJEZD.js";
53
55
  import {
54
56
  atomicWriteJsonSecure,
55
57
  atomicWriteSecure,
@@ -60,7 +62,7 @@ import {
60
62
  renameWithRetry,
61
63
  resolveConversationRunDir,
62
64
  wasRead
63
- } from "./chunk-BDQOBEZ3.js";
65
+ } from "./chunk-GOMF7NWS.js";
64
66
  import {
65
67
  AGENT_STOP_FETCH_TIMEOUT,
66
68
  ApiKeysFileSchema,
@@ -90,19 +92,18 @@ import {
90
92
  serviceUrlValues,
91
93
  urlHostFor,
92
94
  withDeprecatedAliases
93
- } from "./chunk-5EMEJNVU.js";
95
+ } from "./chunk-LE6XQ3OV.js";
94
96
  import {
95
97
  allVaultRoots,
96
98
  env,
97
99
  keyedFilePath,
98
100
  legacyMachineFilePath,
99
101
  listOrgVaults,
100
- localVaultRoot,
101
102
  machineFilePath,
102
103
  machineRoot,
103
104
  orgVaultRoot,
104
105
  vaultIdOfRoot
105
- } from "./chunk-ZFELQG4B.js";
106
+ } from "./chunk-EV3TBM7E.js";
106
107
  import {
107
108
  isCliAvailable,
108
109
  resolveCliInvocation
@@ -583,68 +584,9 @@ var ShortString200Schema = z2.string().max(200);
583
584
  var DescriptionSchema = z2.string().max(2e3);
584
585
  var OptionalProviderIdSchema = Id128Schema.optional();
585
586
 
586
- // ../server/src/services/workspace-cwd.ts
587
- import { isAbsolute, join as join3, dirname } from "path";
588
- async function projectRoot(ref) {
589
- const project = await projectStore.get(ref);
590
- if (!project?.orgId) return null;
591
- return projectPathStore.get(project);
592
- }
593
- async function resolveWorkspaceCwd(target) {
594
- const launchDir = localVaultRootParent();
595
- if (target.serviceId) {
596
- const service = await serviceStore.get(target.serviceId);
597
- if (service) {
598
- const raw = (target.override ?? service.cwd ?? "").trim();
599
- const projects = await projectStore.list();
600
- const owner = projects.find((p) => p.serviceIds.includes(service.id));
601
- const root = owner ? await projectRoot(owner) : null;
602
- return root ? anchor(root, raw) : raw || ".";
603
- }
604
- }
605
- if (target.projectId) {
606
- const root = await projectRoot({ id: target.projectId, orgId: target.orgId });
607
- const raw = (target.override ?? "").trim();
608
- return root ? anchor(root, raw) : raw || launchDir;
609
- }
610
- return anchor(launchDir, (target.override ?? "").trim());
611
- }
612
- function anchor(base, raw) {
613
- if (!raw || raw === ".") return base;
614
- if (raw.startsWith("~") || raw.startsWith("$") || isAbsolute(raw)) return raw;
615
- return join3(base, raw);
616
- }
617
- function localVaultRootParent() {
618
- return dirname(localVaultRoot());
619
- }
620
- async function resolveAgentCwd(target) {
621
- if (target.serviceId) {
622
- const service = await serviceStore.get(target.serviceId);
623
- if (service) {
624
- const projects = await projectStore.list();
625
- const owner = projects.find((p) => p.serviceIds.includes(service.id));
626
- const root = owner ? await projectRoot(owner) : null;
627
- if (!root) return void 0;
628
- return anchor(root, (target.override ?? service.cwd ?? "").trim());
629
- }
630
- }
631
- if (target.projectId) {
632
- const root = await projectRoot({ id: target.projectId, orgId: target.orgId });
633
- if (!root) return void 0;
634
- return anchor(root, (target.override ?? "").trim());
635
- }
636
- return void 0;
637
- }
638
- async function resolveConversationCwd(conversationId) {
639
- const conv = await conversationStore.get(conversationId);
640
- const ref = conv ? await conversationStore.projectRefOf(conv) : null;
641
- if (!ref) return resolveAgentCwd({});
642
- return resolveAgentCwd({ projectId: ref.id, orgId: ref.orgId });
643
- }
644
-
645
587
  // ../server/src/services/environment-overrides-store.ts
646
588
  import { readFile as readFile2, writeFile, mkdir, chmod } from "fs/promises";
647
- import { dirname as dirname2, join as join4 } from "path";
589
+ import { dirname, join as join3 } from "path";
648
590
  var FILENAME = "environment-overrides.json";
649
591
  var EnvironmentOverridesStore = class {
650
592
  data = {};
@@ -688,7 +630,7 @@ var EnvironmentOverridesStore = class {
688
630
  async rootFor(variableId) {
689
631
  const root = await environmentStore.rootOfVariable(variableId);
690
632
  if (root) return root;
691
- return this.roots.get(variableId) ?? dirname2(await keyedFilePath(FILENAME));
633
+ return this.roots.get(variableId) ?? dirname(await keyedFilePath(FILENAME));
692
634
  }
693
635
  /** Where earlier versions kept them: read once, rewritten to their vaults. */
694
636
  getLegacyFilePath() {
@@ -700,7 +642,7 @@ var EnvironmentOverridesStore = class {
700
642
  return [
701
643
  this.getLegacyFilePath(),
702
644
  await keyedFilePath(FILENAME),
703
- ...roots.map((root) => join4(root, FILENAME))
645
+ ...roots.map((root) => join3(root, FILENAME))
704
646
  ];
705
647
  }
706
648
  /**
@@ -754,11 +696,11 @@ var EnvironmentOverridesStore = class {
754
696
  parsed,
755
697
  "environment-overrides",
756
698
  (variableId) => unreadableSecrets.add(variableId),
757
- vaultIdOfRoot(dirname2(path))
699
+ vaultIdOfRoot(dirname(path))
758
700
  );
759
701
  for (const [id, override] of Object.entries(decrypted)) {
760
702
  data[id] = { value: override.value };
761
- roots.set(id, dirname2(path));
703
+ roots.set(id, dirname(path));
762
704
  }
763
705
  }
764
706
  return { data, diskEncryptedSlots, roots, unreadableSecrets };
@@ -794,7 +736,7 @@ var EnvironmentOverridesStore = class {
794
736
  extractEncryptedVariableSlots(encrypted)
795
737
  );
796
738
  await mkdir(root, { recursive: true });
797
- const path = join4(root, FILENAME);
739
+ const path = join3(root, FILENAME);
798
740
  const tmpPath = path + ".tmp";
799
741
  await writeFile(tmpPath, JSON.stringify(encrypted, null, 2), "utf-8");
800
742
  await renameWithRetry(tmpPath, path);
@@ -1696,10 +1638,12 @@ var RUNEYA_CAPABILITIES = [
1696
1638
  method: "POST",
1697
1639
  params: [
1698
1640
  { name: "attachmentId", description: "The attachment ID, as listed on the card", required: true },
1699
- { name: "organizationId", description: "Which organization the attachment belongs to. Optional: needed only when the account belongs to several and the error message asks for it.", required: false }
1641
+ { name: "boardId", description: "The board the attachment comes from. Pass it whenever you know it: on a machine linked to several cloud accounts, it is what says which one holds the file.", required: false },
1642
+ { name: "organizationId", description: "Which organization the attachment belongs to. Optional: needed only when neither the board id is known nor the machine has a single account.", required: false }
1700
1643
  ],
1701
1644
  buildInput: (p) => ({
1702
1645
  attachmentId: p.attachmentId,
1646
+ ...p.boardId ? { boardId: p.boardId } : {},
1703
1647
  ...p.organizationId ? { orgId: p.organizationId } : {}
1704
1648
  })
1705
1649
  },
@@ -1796,6 +1740,40 @@ var RUNEYA_CAPABILITIES = [
1796
1740
  ...p.parentBoardId ? { parentBoardId: p.parentBoardId } : {}
1797
1741
  })
1798
1742
  },
1743
+ {
1744
+ name: "kanban_place_card",
1745
+ description: "Place an existing kanban card on another board of the same organization, without copying it \u2014 a reference. The card stays on its origin board; the target board gives it a column of its own. Editing, commenting, archiving or deleting the card from either board acts on the same card; moving it on the target board only moves the reference. Use it to show an issue from an issue list on a team kanban, for instance.",
1746
+ route: "kanban.placeCard",
1747
+ method: "POST",
1748
+ params: [
1749
+ { name: "boardId", description: "The board to place the card on (not its own board)", required: true },
1750
+ { name: "cardId", description: "The card to place", required: true },
1751
+ { name: "column", description: "The column on that board: its ID or its title", required: true }
1752
+ ],
1753
+ buildInput: (p) => ({ boardId: p.boardId, cardId: p.cardId, column: p.column })
1754
+ },
1755
+ {
1756
+ name: "kanban_remove_card_placement",
1757
+ description: "Remove a card from a board where it was placed as a reference. The card itself is untouched and stays on its origin board.",
1758
+ route: "kanban.unplaceCard",
1759
+ method: "POST",
1760
+ params: [
1761
+ { name: "boardId", description: "The board the reference is on", required: true },
1762
+ { name: "cardId", description: "The card to remove from that board", required: true }
1763
+ ],
1764
+ buildInput: (p) => ({ boardId: p.boardId, cardId: p.cardId })
1765
+ },
1766
+ {
1767
+ name: "kanban_get_card_placements",
1768
+ description: "List where a kanban card is: its origin board (home: true), then every board it is placed on as a reference, with the column on each. kanban_get_board flags a referenced card with an `origin` field naming its origin board.",
1769
+ route: "kanban.getCardPlacements",
1770
+ method: "GET",
1771
+ params: [
1772
+ { name: "boardId", description: "Any board the card is on", required: true },
1773
+ { name: "cardId", description: "The card", required: true }
1774
+ ],
1775
+ buildInput: (p) => ({ boardId: p.boardId, cardId: p.cardId })
1776
+ },
1799
1777
  {
1800
1778
  name: "kanban_add_card",
1801
1779
  description: "Add a new card to a kanban column.",
@@ -2374,16 +2352,16 @@ async function runCapability(cap, baseUrl, params, authToken, fetchImpl = fetch)
2374
2352
  }
2375
2353
 
2376
2354
  // ../../packages/ai-capabilities/src/project-anchor.ts
2377
- function applyProjectAnchor(cap, params, anchor2) {
2378
- if (!anchor2.projectId) return params;
2355
+ function applyProjectAnchor(cap, params, anchor) {
2356
+ if (!anchor.projectId) return params;
2379
2357
  const accepts = (name) => cap.params.some((p) => p.name === name);
2380
2358
  if (!accepts("projectId") || params["projectId"]) return params;
2381
2359
  return {
2382
2360
  ...params,
2383
- projectId: anchor2.projectId,
2361
+ projectId: anchor.projectId,
2384
2362
  // L'organisation n'accompagne le projet que si la capability la comprend :
2385
2363
  // ailleurs, ce serait un champ de trop, refusé par le schéma de la route.
2386
- ...anchor2.orgId && accepts("orgId") && !params["orgId"] ? { orgId: anchor2.orgId } : {}
2364
+ ...anchor.orgId && accepts("orgId") && !params["orgId"] ? { orgId: anchor.orgId } : {}
2387
2365
  };
2388
2366
  }
2389
2367
 
@@ -2572,7 +2550,7 @@ function normalizeToolName(raw) {
2572
2550
  const match = KNOWN_TOOL_NAMES.find((t2) => raw.startsWith(t2));
2573
2551
  return match ?? raw;
2574
2552
  }
2575
- async function executeTool(rawName, input, apiKey, authToken, anchor2 = {}) {
2553
+ async function executeTool(rawName, input, apiKey, authToken, anchor = {}) {
2576
2554
  const name = normalizeToolName(rawName);
2577
2555
  const cap = RUNEYA_CAPABILITIES.find((c) => c.name === name);
2578
2556
  if (!cap) throw new Error(`Unknown tool: ${name}`);
@@ -2590,7 +2568,7 @@ async function executeTool(rawName, input, apiKey, authToken, anchor2 = {}) {
2590
2568
  throw new Error(`No '${action}' permission for service ${serviceId}`);
2591
2569
  }
2592
2570
  }
2593
- const params = applyProjectAnchor(cap, toRawParams(input, cap), anchor2);
2571
+ const params = applyProjectAnchor(cap, toRawParams(input, cap), anchor);
2594
2572
  const baseUrl = `http://localhost:${env.PORT}`;
2595
2573
  return runCapability(cap, baseUrl, params, authToken);
2596
2574
  }
@@ -2889,7 +2867,7 @@ function buildServerBuiltins(input) {
2889
2867
  }
2890
2868
 
2891
2869
  // ../server/src/trpc/routers/service.ts
2892
- import { isAbsolute as isAbsolute2 } from "path";
2870
+ import { isAbsolute } from "path";
2893
2871
 
2894
2872
  // ../server/src/services/attach-service.ts
2895
2873
  async function attachServiceToProject(target, serviceId) {
@@ -2942,7 +2920,7 @@ async function resolveServiceVariables(service, opts = {}) {
2942
2920
  const project = projects.find((p) => p.serviceIds.includes(service.id));
2943
2921
  let resolvedService = service;
2944
2922
  const anchored = await resolveWorkspaceCwd({ serviceId: service.id });
2945
- if (anchored !== (service.cwd ?? "").trim() && isAbsolute2(anchored)) {
2923
+ if (anchored !== (service.cwd ?? "").trim() && isAbsolute(anchored)) {
2946
2924
  resolvedService = { ...resolvedService, resolvedCwd: anchored };
2947
2925
  }
2948
2926
  try {
@@ -3475,7 +3453,7 @@ var scenarioStore = new ScenarioStore();
3475
3453
 
3476
3454
  // ../server/src/services/scenario-run-store.ts
3477
3455
  import { mkdir as mkdir3, rm, readFile as readFile4 } from "fs/promises";
3478
- import { join as join5 } from "path";
3456
+ import { join as join4 } from "path";
3479
3457
  function sanitizeSlug(value) {
3480
3458
  return value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 60) || "member";
3481
3459
  }
@@ -3516,8 +3494,8 @@ var ScenarioRunStore = class _ScenarioRunStore {
3516
3494
  "- Use read-only references from linked upstream files as context.",
3517
3495
  ""
3518
3496
  ].join("\n");
3519
- await atomicWriteSecure(join5(dir, "README.md"), overview);
3520
- await atomicWriteSecure(join5(dir, "USER_REQUEST.md"), `# User request
3497
+ await atomicWriteSecure(join4(dir, "README.md"), overview);
3498
+ await atomicWriteSecure(join4(dir, "USER_REQUEST.md"), `# User request
3521
3499
 
3522
3500
  ${userInput.trim() || "(empty)"}
3523
3501
  `);
@@ -3543,7 +3521,7 @@ ${userInput.trim() || "(empty)"}
3543
3521
  "- Waiting for assignment.",
3544
3522
  ""
3545
3523
  ].join("\n");
3546
- await atomicWriteSecure(join5(dir, fileName), content);
3524
+ await atomicWriteSecure(join4(dir, fileName), content);
3547
3525
  }
3548
3526
  }
3549
3527
  async deleteRunDir(conversationId) {
@@ -3611,18 +3589,18 @@ ${userInput.trim() || "(empty)"}
3611
3589
  ...Object.keys(runState.nodeAgentIds).length > 0 ? { nodeAgentIds: { ...runState.nodeAgentIds } } : {},
3612
3590
  ...Object.keys(runState.waitingInputs).length > 0 ? { waitingInputs: { ...runState.waitingInputs } } : {}
3613
3591
  };
3614
- await atomicWriteJsonSecure(join5(dir, "run-state.json"), data);
3592
+ await atomicWriteJsonSecure(join4(dir, "run-state.json"), data);
3615
3593
  } catch {
3616
3594
  }
3617
3595
  }
3618
3596
  async loadPersistedRunState(conversationId) {
3619
3597
  const dir = this.getRunDir(conversationId);
3620
- return readJsonFileSafe(join5(dir, "run-state.json"));
3598
+ return readJsonFileSafe(join4(dir, "run-state.json"));
3621
3599
  }
3622
3600
  async readUserRequest(conversationId) {
3623
3601
  try {
3624
3602
  const dir = this.getRunDir(conversationId);
3625
- const content = await readFile4(join5(dir, "USER_REQUEST.md"), "utf-8");
3603
+ const content = await readFile4(join4(dir, "USER_REQUEST.md"), "utf-8");
3626
3604
  return content.replace(/^#\s*User request\s*\n+/, "").trim() || null;
3627
3605
  } catch {
3628
3606
  return null;
@@ -3631,7 +3609,7 @@ ${userInput.trim() || "(empty)"}
3631
3609
  async readReadme(conversationId) {
3632
3610
  try {
3633
3611
  const dir = this.getRunDir(conversationId);
3634
- return await readFile4(join5(dir, "README.md"), "utf-8");
3612
+ return await readFile4(join4(dir, "README.md"), "utf-8");
3635
3613
  } catch {
3636
3614
  return null;
3637
3615
  }
@@ -3640,14 +3618,14 @@ ${userInput.trim() || "(empty)"}
3640
3618
  const dir = this.getRunDir(conversationId);
3641
3619
  await mkdir3(dir, { recursive: true });
3642
3620
  await atomicWriteJsonSecure(
3643
- join5(dir, _ScenarioRunStore.SCENARIO_SNAPSHOT_FILE),
3621
+ join4(dir, _ScenarioRunStore.SCENARIO_SNAPSHOT_FILE),
3644
3622
  scenario,
3645
3623
  true
3646
3624
  );
3647
3625
  }
3648
3626
  async loadScenarioSnapshot(conversationId) {
3649
3627
  const dir = this.getRunDir(conversationId);
3650
- return readJsonFileSafe(join5(dir, _ScenarioRunStore.SCENARIO_SNAPSHOT_FILE));
3628
+ return readJsonFileSafe(join4(dir, _ScenarioRunStore.SCENARIO_SNAPSHOT_FILE));
3651
3629
  }
3652
3630
  };
3653
3631
  var scenarioRunStore = new ScenarioRunStore();
@@ -3704,7 +3682,7 @@ async function vaultOfProject(projectId) {
3704
3682
  import { randomUUID as randomUUID3 } from "crypto";
3705
3683
  import { mkdir as mkdir4, writeFile as writeFile2, readFile as readFile5, unlink as unlink2, readdir as readdir3 } from "fs/promises";
3706
3684
  import { existsSync as existsSync2 } from "fs";
3707
- import { join as join6, extname, resolve, sep } from "path";
3685
+ import { join as join5, extname, resolve, sep } from "path";
3708
3686
  var ALLOWED_MIME_TYPES = /* @__PURE__ */ new Set([
3709
3687
  "image/png",
3710
3688
  "image/jpeg",
@@ -3741,7 +3719,7 @@ var ImageStorageService = class {
3741
3719
  const imageId = randomUUID3();
3742
3720
  const safeExt = ext.replace(/[^a-z.]/g, "");
3743
3721
  const fileName = `${imageId}${safeExt}`;
3744
- const filePath = join6(this.dir, fileName);
3722
+ const filePath = join5(this.dir, fileName);
3745
3723
  const resolvedPath = resolve(filePath);
3746
3724
  const resolvedDir = resolve(this.dir);
3747
3725
  if (resolvedPath !== resolvedDir && !resolvedPath.startsWith(resolvedDir + sep)) {
@@ -3767,7 +3745,7 @@ var ImageStorageService = class {
3767
3745
  const files = await readdir3(this.dir);
3768
3746
  const metaFile = files.find((f) => f.startsWith(imageId) && f.endsWith(".meta.json"));
3769
3747
  if (!metaFile) return null;
3770
- const raw = JSON.parse(await readFile5(join6(this.dir, metaFile), "utf-8"));
3748
+ const raw = JSON.parse(await readFile5(join5(this.dir, metaFile), "utf-8"));
3771
3749
  if (expectedContextId !== void 0 && raw.contextId !== expectedContextId) return null;
3772
3750
  if (!existsSync2(raw.filePath)) return null;
3773
3751
  return { filePath: raw.filePath, mimeType: raw.mimeType, contextId: raw.contextId };
@@ -3793,7 +3771,7 @@ var ImageStorageService = class {
3793
3771
  await Promise.all(
3794
3772
  files.filter((f) => f.endsWith(".meta.json")).map(async (file) => {
3795
3773
  try {
3796
- const raw = JSON.parse(await readFile5(join6(this.dir, file), "utf-8"));
3774
+ const raw = JSON.parse(await readFile5(join5(this.dir, file), "utf-8"));
3797
3775
  if (raw.contextId === contextId) {
3798
3776
  await unlink2(raw.filePath).catch(() => {
3799
3777
  });
@@ -3823,7 +3801,7 @@ var ImageStorageService = class {
3823
3801
  for (const file of files) {
3824
3802
  if (!file.endsWith(".meta.json")) continue;
3825
3803
  try {
3826
- const raw = JSON.parse(await readFile5(join6(this.dir, file), "utf-8"));
3804
+ const raw = JSON.parse(await readFile5(join5(this.dir, file), "utf-8"));
3827
3805
  if (now - raw.createdAt > ttlMs) expired.push(raw);
3828
3806
  } catch {
3829
3807
  }
@@ -3893,7 +3871,7 @@ import { TRPCError as TRPCError3 } from "@trpc/server";
3893
3871
 
3894
3872
  // ../server/src/services/cloud-session-store.ts
3895
3873
  import { readFile as readFile6, writeFile as writeFile3, mkdir as mkdir5, chmod as chmod2, unlink as unlink3 } from "fs/promises";
3896
- import { dirname as dirname3 } from "path";
3874
+ import { dirname as dirname2 } from "path";
3897
3875
  import { randomBytes as randomBytes2, createHash, timingSafeEqual as timingSafeEqual2 } from "crypto";
3898
3876
  var FILENAME2 = "cloud-session.json";
3899
3877
  var STATE_TTL_MS = 5 * 60 * 1e3;
@@ -4000,7 +3978,7 @@ var CloudSessionStore = class {
4000
3978
  }
4001
3979
  async save() {
4002
3980
  const filePath = await this.getFilePath();
4003
- await mkdir5(dirname3(filePath), { recursive: true });
3981
+ await mkdir5(dirname2(filePath), { recursive: true });
4004
3982
  const payload = { version: 2, accounts: this.accounts };
4005
3983
  const tmpPath = filePath + ".tmp";
4006
3984
  await writeFile3(tmpPath, JSON.stringify(payload, null, 2), "utf-8");
@@ -4142,7 +4120,7 @@ var cloudSessionStore = new CloudSessionStore();
4142
4120
  // ../server/src/services/lan-mode.ts
4143
4121
  import { networkInterfaces } from "os";
4144
4122
  import { readFile as readFile7, writeFile as writeFile4, mkdir as mkdir6 } from "fs/promises";
4145
- import { join as join7 } from "path";
4123
+ import { join as join6 } from "path";
4146
4124
  import { z as z7 } from "zod";
4147
4125
  var LOOPBACK2 = "127.0.0.1";
4148
4126
  var ANY = "0.0.0.0";
@@ -4155,7 +4133,7 @@ function instanceKey() {
4155
4133
  return env.DATA_DIR;
4156
4134
  }
4157
4135
  function networkFilePath() {
4158
- return join7(machineRoot(), NETWORK_FILE);
4136
+ return join6(machineRoot(), NETWORK_FILE);
4159
4137
  }
4160
4138
  async function readFileState() {
4161
4139
  try {
@@ -4273,12 +4251,12 @@ function getCloudApiUrl() {
4273
4251
  return (env.CLOUD_URL ?? DEFAULT_CLOUD_API_URL).replace(/\/+$/, "");
4274
4252
  }
4275
4253
  async function orgCloudUrl(orgId) {
4276
- const { readOrgClouds } = await import("./vault-resolver-57Q2DVOR.js");
4254
+ const { readOrgClouds } = await import("./vault-resolver-B5P2OUI5.js");
4277
4255
  const clouds = await readOrgClouds();
4278
4256
  return (clouds[orgId] ?? getCloudApiUrl()).replace(/\/+$/, "");
4279
4257
  }
4280
4258
  async function accountForOrg(orgId) {
4281
- const { readOrgAccounts, readOrgClouds } = await import("./vault-resolver-57Q2DVOR.js");
4259
+ const { readOrgAccounts, readOrgClouds } = await import("./vault-resolver-B5P2OUI5.js");
4282
4260
  const [stampedAccounts, stampedClouds, accounts] = await Promise.all([
4283
4261
  readOrgAccounts(),
4284
4262
  readOrgClouds(),
@@ -4293,6 +4271,19 @@ async function accountForOrg(orgId) {
4293
4271
  function getCloudAppUrl() {
4294
4272
  return (env.CLOUD_APP_URL ?? DEFAULT_CLOUD_APP_URL).replace(/\/+$/, "");
4295
4273
  }
4274
+ function cloudAppUrlFor(viewerOrigin) {
4275
+ const base = getCloudAppUrl();
4276
+ try {
4277
+ const app = new URL(base);
4278
+ const viewer = new URL(viewerOrigin);
4279
+ const loopback = (h) => h === "localhost" || h === "127.0.0.1" || h === "[::1]";
4280
+ if (!loopback(app.hostname) || loopback(viewer.hostname)) return base;
4281
+ app.hostname = viewer.hostname;
4282
+ return app.toString().replace(/\/+$/, "");
4283
+ } catch {
4284
+ return base;
4285
+ }
4286
+ }
4296
4287
  var CloudAmbiguousAccountError = class extends Error {
4297
4288
  code = "CLOUD_AMBIGUOUS_ACCOUNT";
4298
4289
  constructor() {
@@ -4445,7 +4436,7 @@ var cloudAuthRouter = router({
4445
4436
  });
4446
4437
  }
4447
4438
  const state = cloudSessionStore.createState(input.returnTo);
4448
- const url = `${getCloudAppUrl()}/link-local?callback=${encodeURIComponent(callback)}&state=${encodeURIComponent(state)}`;
4439
+ const url = `${cloudAppUrlFor(input.returnTo)}/link-local?callback=${encodeURIComponent(callback)}&state=${encodeURIComponent(state)}`;
4449
4440
  return { url };
4450
4441
  }),
4451
4442
  /**
@@ -4482,7 +4473,7 @@ var cloudAuthRouter = router({
4482
4473
  * du projet ouvert, sous quel compte il se synchronise.
4483
4474
  */
4484
4475
  accounts: protectedProcedure.query(async () => {
4485
- const { readOrgAccounts } = await import("./vault-resolver-57Q2DVOR.js");
4476
+ const { readOrgAccounts } = await import("./vault-resolver-B5P2OUI5.js");
4486
4477
  return { accounts: await cloudSessionStore.list(), orgAccounts: await readOrgAccounts() };
4487
4478
  }),
4488
4479
  /** The cloud session (user + org), fetched with the stored token. */
@@ -4500,7 +4491,7 @@ var cloudAuthRouter = router({
4500
4491
  const identity = await readCloudIdentity(account.cloudUrl, await cloudSessionStore.getToken(accountId) ?? "");
4501
4492
  if (identity) {
4502
4493
  const settled = await cloudSessionStore.describe(accountId, identity);
4503
- const { renameOrgAccount } = await import("./vault-resolver-57Q2DVOR.js");
4494
+ const { renameOrgAccount } = await import("./vault-resolver-B5P2OUI5.js");
4504
4495
  await renameOrgAccount(accountId, settled);
4505
4496
  }
4506
4497
  }
@@ -4841,6 +4832,17 @@ var KanbanStore = class {
4841
4832
  });
4842
4833
  return res.ok;
4843
4834
  }
4835
+ /**
4836
+ * Le compte cloud qui porte un tableau donné.
4837
+ *
4838
+ * Exposé pour les appels qui ne passent pas par ce magasin — le
4839
+ * téléchargement d'une pièce jointe tire les octets par `cloudFetch` — mais
4840
+ * qui relèvent du même tableau, et doivent donc en emprunter le compte au
4841
+ * lieu d'exiger un poste à compte unique.
4842
+ */
4843
+ accountForBoard(boardId) {
4844
+ return accountOfBoard(boardId);
4845
+ }
4844
4846
  /**
4845
4847
  * Les membres de l'organisation — sans quoi assigner reviendrait à deviner
4846
4848
  * un identifiant.
@@ -4927,6 +4929,33 @@ var KanbanStore = class {
4927
4929
  });
4928
4930
  return res.ok;
4929
4931
  }
4932
+ /**
4933
+ * Les références : la même carte posée sur un autre tableau. La carte reste
4934
+ * chez elle ; `boardId` est le tableau où on la pose, ou d'où on la retire.
4935
+ */
4936
+ async cardPlacements(boardId, cardId) {
4937
+ const res = await callCloud(
4938
+ `/kanban/card-placement/list?boardId=${encodeURIComponent(boardId)}&cardId=${encodeURIComponent(cardId)}`,
4939
+ await scopeOfBoard(boardId)
4940
+ );
4941
+ return res.data?.placements ?? [];
4942
+ }
4943
+ async placeCard(boardId, cardId, column) {
4944
+ const res = await callCloud("/kanban/card-placement/add", {
4945
+ method: "POST",
4946
+ body: { boardId, cardId, column },
4947
+ ...await scopeOfBoard(boardId)
4948
+ });
4949
+ return { ok: res.ok, reason: res.reason };
4950
+ }
4951
+ async unplaceCard(boardId, cardId) {
4952
+ const res = await callCloud("/kanban/card-placement/remove", {
4953
+ method: "POST",
4954
+ body: { boardId, cardId },
4955
+ ...await scopeOfBoard(boardId)
4956
+ });
4957
+ return res.ok;
4958
+ }
4930
4959
  async create(input) {
4931
4960
  const organizationId = await resolveOrganizationId();
4932
4961
  if (!organizationId) return null;
@@ -5099,7 +5128,7 @@ function generateKanbanSystemPrompt(board, cardId, history, links) {
5099
5128
  lines.push(`- \`${f.id}\` \u2014 ${f.name} (${f.contentType}, ${formatSize(f.size)})`);
5100
5129
  }
5101
5130
  lines.push("");
5102
- lines.push("> Ces fichiers ne sont **pas** dans ce prompt. Appelle `kanban_download_attachment(attachmentId)` pour en r\xE9cup\xE9rer un sur le disque, puis ouvre le chemin renvoy\xE9 avec tes outils de lecture de fichiers.");
5131
+ lines.push(`> Ces fichiers ne sont **pas** dans ce prompt. Appelle \`kanban_download_attachment(attachmentId, boardId: "${board.id}")\` pour en r\xE9cup\xE9rer un sur le disque, puis ouvre le chemin renvoy\xE9 avec tes outils de lecture de fichiers. Le \`boardId\` dit sous quel compte cloud le demander : passe-le toujours.`);
5103
5132
  lines.push("");
5104
5133
  }
5105
5134
  }
@@ -5127,9 +5156,10 @@ function generateKanbanSystemPrompt(board, cardId, history, links) {
5127
5156
  lines.push("- `kanban_move_card(boardId, cardId, targetColumn)` \u2014 D\xE9placer la carte vers une autre colonne");
5128
5157
  lines.push("- `kanban_add_comment(boardId, cardId, comment)` \u2014 Ajouter un commentaire sur la carte");
5129
5158
  lines.push("- `kanban_get_card_comments(boardId, cardId)` \u2014 **Relire** le fil de commentaires \xE0 jour");
5130
- lines.push("- `kanban_download_attachment(attachmentId)` \u2014 T\xE9l\xE9charger une pi\xE8ce jointe et obtenir son chemin local");
5159
+ lines.push("- `kanban_download_attachment(attachmentId, boardId)` \u2014 T\xE9l\xE9charger une pi\xE8ce jointe et obtenir son chemin local");
5131
5160
  lines.push("- `kanban_get_card_links(boardId)` \u2014 Lire la filiation des cartes du tableau (parent \u2194 sous-cartes)");
5132
5161
  lines.push("- `kanban_set_card_parent(boardId, cardId, parentCardId?)` \u2014 Rattacher une carte \xE0 une carte parente, ou l'en d\xE9tacher");
5162
+ lines.push("- `kanban_place_card(boardId, cardId, column)` \u2014 Poser une carte existante sur un autre tableau, sans la copier (r\xE9f\xE9rence)");
5133
5163
  lines.push("- `kanban_get_card_conversations(boardId, cardId)` \u2014 Lire les conversations de support (Intercom\u2026) li\xE9es \xE0 la carte \u2014 elles ne sont pas dans les commentaires");
5134
5164
  lines.push("- `kanban_search_conversations(boardId, query)` puis `kanban_link_conversation(boardId, cardId, connectionId, externalId)` \u2014 Trouver une conversation de support et la lier \xE0 la carte (lecture seule chez le fournisseur)");
5135
5165
  lines.push("");
@@ -5273,6 +5303,10 @@ function tailTranscript(opts) {
5273
5303
  let pendingBuf = "";
5274
5304
  let reading = false;
5275
5305
  let queuedRead = false;
5306
+ let markReady;
5307
+ const ready = new Promise((resolve2) => {
5308
+ markReady = resolve2;
5309
+ });
5276
5310
  const cleanup = async () => {
5277
5311
  stopped = true;
5278
5312
  if (watcher) {
@@ -5342,6 +5376,7 @@ function tailTranscript(opts) {
5342
5376
  if (startAtEnd) {
5343
5377
  offset = (await fh.stat()).size;
5344
5378
  }
5379
+ markReady();
5345
5380
  await readMore();
5346
5381
  if (stopped) return;
5347
5382
  watcher = watch(path, { persistent: false }, () => {
@@ -5364,19 +5399,21 @@ function tailTranscript(opts) {
5364
5399
  } finally {
5365
5400
  signal.removeEventListener("abort", onAbort);
5366
5401
  await cleanup();
5402
+ markReady();
5367
5403
  }
5368
5404
  })();
5369
5405
  return {
5370
5406
  stop: () => {
5371
5407
  void cleanup();
5372
5408
  },
5373
- whenDone
5409
+ whenDone,
5410
+ ready
5374
5411
  };
5375
5412
  }
5376
5413
 
5377
5414
  // ../server/src/services/ai-runners/claude-pty-runner.ts
5378
5415
  async function getAgentManager() {
5379
- const { agentManager: agentManager2 } = await import("./agent-manager-2AZVCQRI.js");
5416
+ const { agentManager: agentManager2 } = await import("./agent-manager-NAGIMH2T.js");
5380
5417
  return agentManager2;
5381
5418
  }
5382
5419
  function buildPtyArgs(params, sessionId, opts) {
@@ -6070,7 +6107,7 @@ async function shutdownCodexAppServer() {
6070
6107
  }
6071
6108
  }
6072
6109
  async function getAgentManager2() {
6073
- const { agentManager: agentManager2 } = await import("./agent-manager-2AZVCQRI.js");
6110
+ const { agentManager: agentManager2 } = await import("./agent-manager-NAGIMH2T.js");
6074
6111
  return agentManager2;
6075
6112
  }
6076
6113
  function parseRuneyaCurlCommand(command) {
@@ -6535,7 +6572,7 @@ ${runeya_ai_vars}` : "";
6535
6572
 
6536
6573
  ${context}${envSection}`;
6537
6574
  }
6538
- async function* runAnthropic(client, model, system, initialMessages, apiKey, authToken, signal, anchor2 = {}) {
6575
+ async function* runAnthropic(client, model, system, initialMessages, apiKey, authToken, signal, anchor = {}) {
6539
6576
  const messages = [...initialMessages];
6540
6577
  const MAX_TOOL_ROUNDS = 10;
6541
6578
  for (let round = 0; round < MAX_TOOL_ROUNDS; round++) {
@@ -6592,7 +6629,7 @@ async function* runAnthropic(client, model, system, initialMessages, apiKey, aut
6592
6629
  let result;
6593
6630
  let isError = false;
6594
6631
  try {
6595
- result = await executeTool(block.name, block.input, apiKey, authToken, anchor2);
6632
+ result = await executeTool(block.name, block.input, apiKey, authToken, anchor);
6596
6633
  } catch (err) {
6597
6634
  result = err.message;
6598
6635
  isError = true;
@@ -6609,7 +6646,7 @@ async function* runAnthropic(client, model, system, initialMessages, apiKey, aut
6609
6646
  }
6610
6647
  yield { type: "done", text: "" };
6611
6648
  }
6612
- async function* runOpenAI(client, model, initialMessages, apiKey, authToken, signal, anchor2 = {}) {
6649
+ async function* runOpenAI(client, model, initialMessages, apiKey, authToken, signal, anchor = {}) {
6613
6650
  const messages = [...initialMessages];
6614
6651
  const MAX_TOOL_ROUNDS = 10;
6615
6652
  for (let round = 0; round < MAX_TOOL_ROUNDS; round++) {
@@ -6660,7 +6697,7 @@ async function* runOpenAI(client, model, initialMessages, apiKey, authToken, sig
6660
6697
  let result;
6661
6698
  let isError = false;
6662
6699
  try {
6663
- result = await executeTool(tc.name, input, apiKey, authToken, anchor2);
6700
+ result = await executeTool(tc.name, input, apiKey, authToken, anchor);
6664
6701
  } catch (err) {
6665
6702
  result = err.message;
6666
6703
  isError = true;
@@ -7014,7 +7051,9 @@ var chatRouter = router({
7014
7051
  // The project the conversation is about: only the caller knows which
7015
7052
  // one it is looking at.
7016
7053
  projectId: Id128Schema.optional(),
7017
- orgId: z9.string().max(128).nullable().optional()
7054
+ orgId: z9.string().max(128).nullable().optional(),
7055
+ // L'agent où la conversation travaille. Absent = agent par défaut.
7056
+ agentId: Id128Schema.optional()
7018
7057
  })).mutation(async ({ input }) => {
7019
7058
  let scenario = null;
7020
7059
  if (input.scenarioId) {
@@ -7026,6 +7065,10 @@ var chatRouter = router({
7026
7065
  }
7027
7066
  const machineSettings = await settingsManager.getSettings();
7028
7067
  const companionByDefault = machineSettings.companion?.enabledByDefault ?? false;
7068
+ const extra = {
7069
+ ...input.agentId ? { agentId: input.agentId } : {},
7070
+ ...companionByDefault ? { companionEnabled: true } : {}
7071
+ };
7029
7072
  const conv = await conversationStore.create(
7030
7073
  input.title,
7031
7074
  input.isCli ?? false,
@@ -7037,7 +7080,7 @@ var chatRouter = router({
7037
7080
  input.providerId,
7038
7081
  input.projectId,
7039
7082
  input.orgId,
7040
- companionByDefault ? { companionEnabled: true } : void 0
7083
+ Object.keys(extra).length > 0 ? extra : void 0
7041
7084
  );
7042
7085
  if (scenario) {
7043
7086
  await scenarioRunStore.initializeConversationWorkspace(
@@ -7525,7 +7568,7 @@ ${input.prompt}` : input.prompt;
7525
7568
  }
7526
7569
  const conv = await conversationStore.get(input.conversationId);
7527
7570
  const convRef = conv ? await conversationStore.projectRefOf(conv) : null;
7528
- const anchor2 = { projectId: convRef?.id, orgId: convRef?.orgId ?? void 0 };
7571
+ const anchor = { projectId: convRef?.id, orgId: convRef?.orgId ?? void 0 };
7529
7572
  const active = await getActiveProvider(conv?.providerId, convRef?.orgId ?? void 0);
7530
7573
  if (!active) {
7531
7574
  throw new TRPCError4({
@@ -7574,7 +7617,7 @@ ${input.prompt}` : input.prompt;
7574
7617
  }
7575
7618
  return { role: m.role, content: m.content };
7576
7619
  });
7577
- gen = runAnthropic(client, model, system, msgs, apiKey, authToken, apiSignal, anchor2);
7620
+ gen = runAnthropic(client, model, system, msgs, apiKey, authToken, apiSignal, anchor);
7578
7621
  } else if (provider.provider in OPENAI_COMPAT_BASE_URLS) {
7579
7622
  const baseURL = OPENAI_COMPAT_BASE_URLS[provider.provider];
7580
7623
  const client = new OpenAI2({ apiKey: plaintextKey || "ollama", baseURL });
@@ -7593,7 +7636,7 @@ ${input.prompt}` : input.prompt;
7593
7636
  return { role: m.role, content: m.content };
7594
7637
  })
7595
7638
  ];
7596
- gen = runOpenAI(client, model, msgs, apiKey, authToken, apiSignal, anchor2);
7639
+ gen = runOpenAI(client, model, msgs, apiKey, authToken, apiSignal, anchor);
7597
7640
  } else {
7598
7641
  activeSessionRegistry.pushEvent(input.conversationId, { type: "error", message: `Provider "${provider.provider}" is not supported.` });
7599
7642
  activeSessionRegistry.pushEvent(input.conversationId, { type: "done", text: "" });
@@ -8061,9 +8104,6 @@ export {
8061
8104
  isShareable,
8062
8105
  logParserStore,
8063
8106
  buildServerBuiltins,
8064
- resolveWorkspaceCwd,
8065
- resolveAgentCwd,
8066
- resolveConversationCwd,
8067
8107
  resolveEffectiveAgentId,
8068
8108
  resolveServiceVariables,
8069
8109
  serviceRouter,
@@ -8102,4 +8142,4 @@ export {
8102
8142
  startCliSession,
8103
8143
  chatRouter
8104
8144
  };
8105
- //# sourceMappingURL=chunk-GUIONCNA.js.map
8145
+ //# sourceMappingURL=chunk-WNCXZ6E7.js.map