@runeya/runeya 2.0.77 → 2.0.79

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 (332) hide show
  1. package/agent/index.js +56 -3
  2. package/agent/index.js.map +1 -1
  3. package/agent-manager-KM7SFKVR.js +7 -0
  4. package/{chunk-WDM637TW.js → chunk-T3TDCZUY.js} +57 -4
  5. package/chunk-T3TDCZUY.js.map +1 -0
  6. package/index.js +1 -1
  7. package/mcp-server/index.js +85 -2
  8. package/mcp-server/index.js.map +1 -1
  9. package/package.json +1 -1
  10. package/{src-WON4SLMI.js → src-6PAM4JRF.js} +249 -75
  11. package/src-6PAM4JRF.js.map +1 -0
  12. package/web/assets/{AgentScalarChatInterface.vue-BKtO8e-V.js → AgentScalarChatInterface.vue-Cjx4rHX2.js} +3 -3
  13. package/web/assets/AgentTerminalPage-EZkJENnM.js +1 -0
  14. package/web/assets/AiChatPage-bW3RWF13.js +1 -0
  15. package/web/assets/AppLayout-61eh74HD.js +1 -0
  16. package/web/assets/{AppLayout-Dvr7plrF.css → AppLayout-DNaAILBs.css} +1 -1
  17. package/web/assets/AuditPage-IEQ-7llQ.js +1 -0
  18. package/web/assets/CloudAccountPage-DxS1F0vT.js +1 -0
  19. package/web/assets/CloudAccountPage-UjgYp_cm.js +1 -0
  20. package/web/assets/CloudMessagingPage-DyPt88Nh.js +2 -0
  21. package/web/assets/DashboardPage-s40sRkjs.js +1 -0
  22. package/web/assets/DirectoryPickerDialog-Czkp1Q7J.js +1 -0
  23. package/web/assets/{EditorIcon-BY3-sVPA.js → EditorIcon-EQ5sr6h1.js} +2 -2
  24. package/web/assets/EnvironmentForm-BDvSKtV3.js +108 -0
  25. package/web/assets/EnvironmentFormPage-BIiHAeAe.js +1 -0
  26. package/web/assets/EnvironmentListPage-D7YCKAry.js +1 -0
  27. package/web/assets/KanbanBoardPage-BSVcjsFH.js +4 -0
  28. package/web/assets/KanbanBoardPage-DKdXK4Qx.css +1 -0
  29. package/web/assets/KanbanListPage-Ckorylra.js +1 -0
  30. package/web/assets/LaunchProjectPage-BuDrO-dr.js +1 -0
  31. package/web/assets/LaunchProjectPage-CCtlg5Kz.css +1 -0
  32. package/web/assets/LaunchServicesPage-NtGLfvlv.js +1 -0
  33. package/web/assets/LaunchServicesPage-PMkfsl54.css +1 -0
  34. package/web/assets/LogViewer-0gHkNfoF.js +3 -0
  35. package/web/assets/OrgKeyPrompt-ChdmIeDS.js +1 -0
  36. package/web/assets/{ProcessControls-CSZGFSpk.js → ProcessControls-DtYIwxFh.js} +1 -1
  37. package/web/assets/ProcessDetailPage-C4CBtxzN.js +1 -0
  38. package/web/assets/{ProcessMetrics-CbaSXK63.js → ProcessMetrics-CBxoD3mq.js} +2 -2
  39. package/web/assets/ProjectDetailPage-Ch3w5gaP.js +1 -0
  40. package/web/assets/ProjectListPage-DxVckdPq.js +1 -0
  41. package/web/assets/RandomJobTestPage-BOnJfdfV.js +2 -0
  42. package/web/assets/ScenarioEditorPage-SXqdd0-1.js +14 -0
  43. package/web/assets/SendToChatDialog-N2AU0GS0.js +1 -0
  44. package/web/assets/ServiceControlsBar-CkF9T-Cl.js +1 -0
  45. package/web/assets/ServiceDetailPage-CvqE9h6I.js +2 -0
  46. package/web/assets/ServiceFormPage-CshXzwrR.js +1 -0
  47. package/web/assets/SettingsPage-BI7yykWy.js +2063 -0
  48. package/web/assets/UnlockPage-CpysPhlT.css +1 -0
  49. package/web/assets/UnlockPage-rUr_VIJo.js +1 -0
  50. package/web/assets/VariablesTable-uemjJh3C.js +1 -0
  51. package/web/assets/VaultMigrationPage-CIngneiY.css +1 -0
  52. package/web/assets/VaultMigrationPage-DFZfLyT2.js +1 -0
  53. package/web/assets/VersionBadge-BiRPinCw.js +1 -0
  54. package/web/assets/WikiPage-Cu4-7u2f.js +1 -0
  55. package/web/assets/WikiView-BY7QtPKf.js +1 -0
  56. package/web/assets/add-scalar-classes-BvRx5gFW.js +387 -0
  57. package/web/assets/auth-errors-BIRt7ulx.js +1 -0
  58. package/web/assets/autocomplete-Dx4-R-Qa.js +308 -0
  59. package/web/assets/{basic-shape-diamond.svg-e2mztVJl.js → basic-shape-diamond.svg-D9HQNu6x.js} +1 -1
  60. package/web/assets/{basic-shape-hexagon.svg-BabvvzO8.js → basic-shape-hexagon.svg-BLkvD1jK.js} +1 -1
  61. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-qX_EIwRC.js → basic-shape-primary-circle-ellipse-round.svg-Bsfgrw0z.js} +1 -1
  62. package/web/assets/{basic-shape-primary-square-rectangle.svg-BC_lPlNz.js → basic-shape-primary-square-rectangle.svg-Cl_SRAdr.js} +1 -1
  63. package/web/assets/{basic-shape-shield.svg-Cs-Q1jtG.js → basic-shape-shield.svg-Br_5PIve.js} +1 -1
  64. package/web/assets/{browser-TQOmEABX.js → browser-BuzduiU6.js} +1 -1
  65. package/web/assets/{browser-Dny5CSfR.js → browser-DuenoSNG.js} +1 -1
  66. package/web/assets/card-CxqAMieZ.js +32 -0
  67. package/web/assets/{checkbox-DPfaZ5M_.js → checkbox-DR0TgZHz.js} +3 -3
  68. package/web/assets/{chip-DsGV0_Iw.js → chip-Beh-yjqy.js} +2 -2
  69. package/web/assets/{client-DVldvprj.js → client-BpBAdgho.js} +1 -1
  70. package/web/assets/cloud-chat.store-DF1OJFcw.js +1 -0
  71. package/web/assets/cloud-session-2NC0j9sm.js +1 -0
  72. package/web/assets/column-NdoVyBai.js +907 -0
  73. package/web/assets/{computer-device-desktop-monitor.svg-CmAS9W1F.js → computer-device-desktop-monitor.svg-C7xIBZiz.js} +1 -1
  74. package/web/assets/{computer-device-desktop.svg-ByQvPTu0.js → computer-device-desktop.svg-m15jSfTu.js} +1 -1
  75. package/web/assets/{computer-device-laptop.svg-Be3DJfJS.js → computer-device-laptop.svg-DuGGRxCr.js} +1 -1
  76. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-Bg4HriyB.js → computer-device-mobile-phone-android-samsung-back.svg-tNcHABvV.js} +1 -1
  77. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-Cbs1ZC8K.js → computer-device-mobile-phone-android-samsung.svg-DqomXsCT.js} +1 -1
  78. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-SrmNqd-k.js → computer-device-mobile-phone-iphone-x-back.svg-BQYLAqvU.js} +1 -1
  79. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-CRbRsx9O.js → computer-device-mobile-phone-iphone-x.svg-BTqfvYmE.js} +1 -1
  80. package/web/assets/{computer-device-mobile-tablet-touch.svg-CYxQ_G-f.js → computer-device-mobile-tablet-touch.svg-BWwfMvTI.js} +1 -1
  81. package/web/assets/{computer-device-mobile-tablet.svg-8Y2qx2nG.js → computer-device-mobile-tablet.svg-9-cDdNh0.js} +1 -1
  82. package/web/assets/{computer-device-network-ethernet-cat6.svg-DuMVeY9S.js → computer-device-network-ethernet-cat6.svg-dec4c9f7.js} +1 -1
  83. package/web/assets/{computer-device-network-lan-www.svg-CMl88oMx.js → computer-device-network-lan-www.svg-CfxdVlX6.js} +1 -1
  84. package/web/assets/{computer-device-network-wifi-connection.svg-BLKrhbzD.js → computer-device-network-wifi-connection.svg-Aq3c3kpj.js} +1 -1
  85. package/web/assets/{computer-device-network-wifi-router.svg-DegDkOS9.js → computer-device-network-wifi-router.svg-D30KniBG.js} +1 -1
  86. package/web/assets/{cssMode-BXMOCv71.js → cssMode-Bx7OM1AF.js} +1 -1
  87. package/web/assets/{divider-C9G7_D2G.js → divider-e8srWIpS.js} +2 -2
  88. package/web/assets/{docx-preview-DavEWOCt.js → docx-preview-trPKCLuS.js} +1 -1
  89. package/web/assets/{ecology-science-erlenmeyer-flask.svg-DmbDAbFP.js → ecology-science-erlenmeyer-flask.svg-CRh6aGQD.js} +1 -1
  90. package/web/assets/{fieldset-oJKjCI7s.js → fieldset-0TLkhgk1.js} +2 -2
  91. package/web/assets/{freemarker2-B8tfMW3C.js → freemarker2-CjlsJILS.js} +1 -1
  92. package/web/assets/{handlebars-CePhsdSW.js → handlebars-hKjqU20X.js} +1 -1
  93. package/web/assets/{html-571VCOQ9.js → html-1lRHqbTC.js} +1 -1
  94. package/web/assets/{htmlMode-CVxsAwkf.js → htmlMode-KrX4AuJb.js} +1 -1
  95. package/web/assets/{image-flash-lightning.svg-AnW8MOVQ.js → image-flash-lightning.svg-awIm9H7j.js} +1 -1
  96. package/web/assets/{image-picture-flower.svg-FiFJUYlQ.js → image-picture-flower.svg-0ej02v71.js} +1 -1
  97. package/web/assets/{index-BGhTRiUv.js → index-CyTp_MK4.js} +673 -358
  98. package/web/assets/index-Cz0azMVO.css +1 -0
  99. package/web/assets/{interface-alert-exclamation-diamond.svg-oGZV7xVw.js → interface-alert-exclamation-diamond.svg-CghieGSb.js} +1 -1
  100. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-DAVdspM_.js → interface-alert-exclamation-triangle-warning.svg-CwlouhWg.js} +1 -1
  101. package/web/assets/{interface-alert-information-circle.svg-D18QJNgs.js → interface-alert-information-circle.svg-CFjDz1cs.js} +1 -1
  102. package/web/assets/{interface-award-crown.svg-CA1wQid9.js → interface-award-crown.svg-CC_YNTlQ.js} +1 -1
  103. package/web/assets/{interface-bookmark.svg-C9irM7Rx.js → interface-bookmark-tag.svg-DzKVQx1D.js} +1 -1
  104. package/web/assets/{interface-bookmark-tag.svg-B7cb2okO.js → interface-bookmark.svg-BoMtyTYl.js} +1 -1
  105. package/web/assets/{interface-calendar-date-one.svg-DE5gBV6v.js → interface-calendar-date-one.svg-DwPLZLNp.js} +1 -1
  106. package/web/assets/{interface-content-book-open-pages.svg-BFz7YanP.js → interface-content-book-open-pages.svg-BRNhpR0b.js} +1 -1
  107. package/web/assets/{interface-content-book-page.svg-XsbyPJwv.js → interface-content-book-page.svg-D6f84ENa.js} +1 -1
  108. package/web/assets/{interface-content-file.svg-D6q2wWLi.js → interface-content-file.svg-BxSwWskY.js} +1 -1
  109. package/web/assets/{interface-content-folder.svg-CHkU4LKW.js → interface-content-folder.svg-D9vDlA-7.js} +1 -1
  110. package/web/assets/interface-content-folder.svg-DA-TRWg5.js +1 -0
  111. package/web/assets/{interface-copy-clipboard.svg-DBtOk_bA.js → interface-copy-clipboard.svg-CLWuiWQR.js} +1 -1
  112. package/web/assets/{interface-edit-attachment.svg-Dz3-OOve.js → interface-edit-attachment.svg-DkE6Zp16.js} +1 -1
  113. package/web/assets/{interface-edit-binocular.svg-ByBP8ehM.js → interface-edit-binocular.svg-CsnS4sfu.js} +1 -1
  114. package/web/assets/{interface-edit-magic-wand.svg-DfcOCpiG.js → interface-edit-magic-wand.svg-D7fNjVU0.js} +1 -1
  115. package/web/assets/{interface-edit-tool-paint-roller.svg-CRGZNjWp.js → interface-edit-tool-paint-roller.svg-BNGqMsSE.js} +1 -1
  116. package/web/assets/{interface-edit-tool-pencil.svg-zsOWLIqc.js → interface-edit-tool-pencil.svg-DGj85i4b.js} +1 -1
  117. package/web/assets/{interface-favorite-award.svg-DLVKZn5N.js → interface-favorite-award.svg-DYJQG2z5.js} +1 -1
  118. package/web/assets/{interface-favorite-flag.svg-C5YPye-o.js → interface-favorite-flag.svg-z_VpsLBz.js} +1 -1
  119. package/web/assets/{interface-favorite-heart.svg-XX875VH2.js → interface-favorite-heart.svg-C-RVoQp_.js} +1 -1
  120. package/web/assets/{interface-favorite-star.svg-CwodnhEd.js → interface-favorite-star.svg-D1XyCk_H.js} +1 -1
  121. package/web/assets/{interface-favorite-stars-sparkles.svg-CaHoULcK.js → interface-favorite-stars-sparkles.svg-CpbpNxr4.js} +1 -1
  122. package/web/assets/{interface-hierarchy-flowchart.svg-Dw0Hiig6.js → interface-hierarchy-flowchart.svg-DhRkNwJk.js} +1 -1
  123. package/web/assets/{interface-home-house.svg-Dr6ONbPr.js → interface-home-house.svg-CIKaitr0.js} +1 -1
  124. package/web/assets/{interface-hyperlink.svg-DPlIj_h5.js → interface-hyperlink.svg-CPv8WDpv.js} +1 -1
  125. package/web/assets/{interface-lighting-brightness.svg-lTDIWcG1.js → interface-lighting-brightness.svg-Ds9dNkBb.js} +1 -1
  126. package/web/assets/{interface-lock-closed.svg-DbLIOlp2.js → interface-lock-closed.svg-CH0keiMQ.js} +1 -1
  127. package/web/assets/{interface-lock-open-unlock.svg-AtzqURqy.js → interface-lock-open-unlock.svg-sM2ipMSY.js} +1 -1
  128. package/web/assets/{interface-login-key.svg-m-Fs6HY3.js → interface-login-key.svg-w20Bufjr.js} +1 -1
  129. package/web/assets/{interface-search.svg-DFUBMy6X.js → interface-search.svg-CG8DZ4bz.js} +1 -1
  130. package/web/assets/{interface-setting-cog.svg-DZ0_Nd7i.js → interface-setting-cog.svg-DvY1eW4l.js} +1 -1
  131. package/web/assets/{interface-share-megaphone-bullhorn.svg-YrYkQDPm.js → interface-share-megaphone-bullhorn.svg-BL0sxQKM.js} +1 -1
  132. package/web/assets/{interface-share-rocket.svg-DRDHefw2.js → interface-share-rocket.svg-BbDtgcMw.js} +1 -1
  133. package/web/assets/{interface-share-satellite.svg-CVNiRXqB.js → interface-share-satellite.svg-hj8wdj8n.js} +1 -1
  134. package/web/assets/{interface-share-space-ship.svg-CpgNADXr.js → interface-share-space-ship.svg-DwezJA6M.js} +1 -1
  135. package/web/assets/{interface-share.svg-Djd0yOl3.js → interface-share.svg-BDakrqyS.js} +1 -1
  136. package/web/assets/{interface-signal-square.svg-zPFYxRs3.js → interface-signal-square.svg-Bd85bHcQ.js} +1 -1
  137. package/web/assets/{interface-time-clock-circle.svg-D0MsoIC_.js → interface-time-clock-circle.svg-BFPYG2_y.js} +1 -1
  138. package/web/assets/{interface-time-hour-glass.svg-CfqSkT16.js → interface-time-hour-glass.svg-XEEhGJNc.js} +1 -1
  139. package/web/assets/{interface-users-multiple.svg-C_Tspx5q.js → interface-users-multiple.svg-DlDS4pFQ.js} +1 -1
  140. package/web/assets/{interface-weather-moon.svg-ChEcMLSN.js → interface-weather-moon.svg-qamRI73e.js} +1 -1
  141. package/web/assets/{javascript-pUCsYoU8.js → javascript-BMcm76Iy.js} +1 -1
  142. package/web/assets/{jsonMode-C0uzq8yR.js → jsonMode-CFeh3q-t.js} +2 -2
  143. package/web/assets/{liquid-C5Ev6uFa.js → liquid-BbZ7m_Gg.js} +1 -1
  144. package/web/assets/{lspLanguageFeatures-DYaT_fqo.js → lspLanguageFeatures-D6fqdMqo.js} +3 -3
  145. package/web/assets/{mail-chat-bubble-square.svg-CuZEWYk3.js → mail-chat-bubble-square.svg-lTDk1-cI.js} +1 -1
  146. package/web/assets/{mail-send-email-paper-airplane.svg-CENY8qyv.js → mail-send-email-paper-airplane.svg-DHTPOPNN.js} +1 -1
  147. package/web/assets/{mail-send-envelope.svg-B0p8Ko-e.js → mail-send-envelope.svg-DrKev7cA.js} +1 -1
  148. package/web/assets/{mdx-DKUSX-0M.js → mdx-BFTLCqIq.js} +1 -1
  149. package/web/assets/{minus-Cn4do0vQ.js → minus-BQIxFtXx.js} +2 -2
  150. package/web/assets/modal-CRtjbIPi.js +1 -0
  151. package/web/assets/modal-CU4p0zoB.js +5 -0
  152. package/web/assets/{money-cashier-receipt.svg-D6MTv6ic.js → money-cashier-receipt.svg-DrMInbv1.js} +1 -1
  153. package/web/assets/{money-currency-dollar-pay.svg-C0CT_Umg.js → money-currency-dollar-pay.svg-D3qWQTD7.js} +1 -1
  154. package/web/assets/{money-graph-arrow-increase.svg-B1pQ-RCg.js → money-graph-arrow-increase.svg-BNMlMSSu.js} +1 -1
  155. package/web/assets/{money-graph-bar-chart-increase.svg-Df0BEyR6.js → money-graph-bar-chart-increase.svg-C4ZbxWQ0.js} +1 -1
  156. package/web/assets/multiselect-b0l1ZyGV.js +251 -0
  157. package/web/assets/{nature-ecology-leaf.svg-B7IiKgr5.js → nature-ecology-leaf.svg-Bc4U3t3c.js} +1 -1
  158. package/web/assets/{password-UNoAlO0Z.js → password-zUKcXhNa.js} +4 -4
  159. package/web/assets/{phone-telephone.svg-CULSkJvU.js → phone-telephone.svg-Op0vC0uZ.js} +1 -1
  160. package/web/assets/{plus-CCNhU8WS.js → plus-NzhFUR3J.js} +6 -6
  161. package/web/assets/process.store-DaN2Fpm8.js +1 -0
  162. package/web/assets/{programming-bug.svg-BkAWg-zz.js → programming-bug.svg-BPBc7yJC.js} +1 -1
  163. package/web/assets/{programming-cloud.svg-CElVVYxR.js → programming-cloud.svg-Cj4iIxN0.js} +1 -1
  164. package/web/assets/{programming-computer-database-server.svg-DTOugM3g.js → programming-computer-database-server.svg-B6JDyOUE.js} +1 -1
  165. package/web/assets/{programming-computer-database.svg-BEtc2j2j.js → programming-computer-database.svg-MXlEDVjR.js} +1 -1
  166. package/web/assets/{programming-module-four-layout.svg-CfMkXMQV.js → programming-module-four-layout.svg-CTOezzR9.js} +1 -1
  167. package/web/assets/{programming-module-three.svg-BEGzxEbd.js → programming-module-three.svg-Ds0SxfuW.js} +1 -1
  168. package/web/assets/{programming-module.svg-WcMyqgA5.js → programming-module.svg-dtxYxE76.js} +1 -1
  169. package/web/assets/{programming-script-code.svg-BlKU_DbS.js → programming-script-code.svg-BfE32sHE.js} +1 -1
  170. package/web/assets/{python-CX7nl3fS.js → python-DdxzkbZ6.js} +1 -1
  171. package/web/assets/{razor-1qMzYaOc.js → razor-BaPQKfzN.js} +1 -1
  172. package/web/assets/router-BzZYIGu6.js +1 -0
  173. package/web/assets/settings-scope-BCvTkdxE.js +1 -0
  174. package/web/assets/settings.store-ChTd1UeA.js +1 -0
  175. package/web/assets/{shopping-cart.svg-DVuGrIwZ.js → shopping-cart.svg-B0oB45_X.js} +1 -1
  176. package/web/assets/{shopping-gift-present.svg-D6-559VB.js → shopping-gift-present.svg-Dg_UKNrW.js} +1 -1
  177. package/web/assets/{shopping-shipping-box-parcel-package.svg-BCqjCO2V.js → shopping-shipping-box-parcel-package.svg-DsoPC6GT.js} +1 -1
  178. package/web/assets/{src-DXup2ujI.js → src-BCGduELr.js} +26 -26
  179. package/web/assets/{src-Bhd-KJy_.css → src-BsM0Obsp.css} +1 -1
  180. package/web/assets/src-_iQSlqGE.js +1 -0
  181. package/web/assets/{tabpanel-c1kswNhr.js → tabpanel-BH5ZsTUr.js} +3 -3
  182. package/web/assets/{tag-new-circle.svg-DJekwjr2.js → tag-new-circle.svg-Bt8lUfCb.js} +1 -1
  183. package/web/assets/{toggleswitch-CyIjsk3N.js → toggleswitch-C5kmCEN7.js} +2 -2
  184. package/web/assets/{travel-map-earth-globe.svg-CgYzLmEQ.js → travel-map-earth-globe.svg-vJ1Kg6FY.js} +1 -1
  185. package/web/assets/trpc-EkL9tT-u.js +1 -0
  186. package/web/assets/{tsMode-Dwc3vyi8.js → tsMode-BsBJyGKK.js} +6 -6
  187. package/web/assets/{typescript-B4Szu53E.js → typescript-eGcJYUd4.js} +1 -1
  188. package/web/assets/useAiChatDrawer-DWlbD-_B.js +1 -0
  189. package/web/assets/useCloudOrg-BUsAdgoq.js +572 -0
  190. package/web/assets/useCloudOrg-Drl2_37-.css +1 -0
  191. package/web/assets/{useProjectCatalog-Chvnlk7w.js → useProjectCatalog-FfB9tOOm.js} +1 -1
  192. package/web/assets/{xml-Cmwfj5No.js → xml-DKM3cWQE.js} +1 -1
  193. package/web/assets/{yaml-BwAEhb0d.js → yaml-D0z-VNdc.js} +1 -1
  194. package/web/index.html +2 -2
  195. package/agent-manager-JUVAVUIQ.js +0 -7
  196. package/chunk-WDM637TW.js.map +0 -1
  197. package/src-WON4SLMI.js.map +0 -1
  198. package/web/assets/AgentTerminalPage-2fGeLuFz.js +0 -1
  199. package/web/assets/AiChatPage-su8lBLuu.js +0 -1
  200. package/web/assets/AppLayout-CVBdnnXe.js +0 -1
  201. package/web/assets/AuditPage-ggADH3yd.js +0 -1
  202. package/web/assets/CloudAccountPage-DeF7HGaQ.js +0 -1
  203. package/web/assets/CloudAccountPage-eLXfNifH.js +0 -1
  204. package/web/assets/CloudMessagingPage-B_5g7iun.js +0 -2
  205. package/web/assets/DashboardPage-Cl-oihCh.js +0 -1
  206. package/web/assets/DirectoryPickerDialog-BmC5PT-P.js +0 -1
  207. package/web/assets/EnvironmentForm-BvSPE7Fj.js +0 -108
  208. package/web/assets/EnvironmentFormPage-CjLt1Yvf.js +0 -1
  209. package/web/assets/EnvironmentListPage-BX-pV6r7.js +0 -1
  210. package/web/assets/KanbanBoardPage-2muX0OfU.js +0 -4
  211. package/web/assets/KanbanBoardPage-CCl8dmwn.css +0 -1
  212. package/web/assets/KanbanListPage-Bd55W-g7.js +0 -1
  213. package/web/assets/LaunchProjectPage-BrmWhutG.css +0 -1
  214. package/web/assets/LaunchProjectPage-T_i4rXCK.js +0 -1
  215. package/web/assets/LaunchServicesPage-BTOQlL77.js +0 -1
  216. package/web/assets/LaunchServicesPage-CMxUWoNQ.css +0 -1
  217. package/web/assets/LogViewer-CuFkYXkA.js +0 -3
  218. package/web/assets/OrgKeyPrompt-D-cJKqc2.js +0 -1
  219. package/web/assets/ProcessDetailPage-B2cRaSa8.js +0 -1
  220. package/web/assets/ProjectDetailPage-CU5MwlKB.js +0 -1
  221. package/web/assets/ProjectListPage-CxPnsbfh.js +0 -1
  222. package/web/assets/RandomJobTestPage-CYvyOioJ.js +0 -2
  223. package/web/assets/ScenarioEditorPage-BZtO-_y9.js +0 -14
  224. package/web/assets/SendToChatDialog-Da6SFoej.js +0 -1
  225. package/web/assets/ServiceControlsBar-DBUmRI7E.js +0 -1
  226. package/web/assets/ServiceDetailPage-C0OzNuXc.js +0 -2
  227. package/web/assets/ServiceFormPage-BMmeE5tj.js +0 -1
  228. package/web/assets/SettingsPage-Cns9aESc.js +0 -2063
  229. package/web/assets/UnlockPage-BPW506si.js +0 -1
  230. package/web/assets/UnlockPage-BkqsC0ML.css +0 -1
  231. package/web/assets/VariablesTable-CRWySand.js +0 -1
  232. package/web/assets/VaultMigrationPage-B20L2W_w.css +0 -1
  233. package/web/assets/VaultMigrationPage-B6ZfLdDp.js +0 -1
  234. package/web/assets/VersionBadge-BySMTsnj.js +0 -1
  235. package/web/assets/WikiPage-CASqiu3r.js +0 -1
  236. package/web/assets/WikiView-DmspOj63.js +0 -1
  237. package/web/assets/add-scalar-classes-BDawSOVN.js +0 -387
  238. package/web/assets/auth-errors-D_n5Naj5.js +0 -1
  239. package/web/assets/autocomplete-BxToX__C.js +0 -308
  240. package/web/assets/card-C3_Lhxh1.js +0 -32
  241. package/web/assets/cloud-chat.store-HRiNlTnA.js +0 -1
  242. package/web/assets/cloud-session-byVQfdAX.js +0 -1
  243. package/web/assets/column-0QpSlAL6.js +0 -907
  244. package/web/assets/index-B___lI4D.css +0 -1
  245. package/web/assets/interface-content-folder.svg-Dnf4fgjM.js +0 -1
  246. package/web/assets/message-BfLHvehS.js +0 -316
  247. package/web/assets/modal-CveVDU3j.js +0 -5
  248. package/web/assets/modal-DxPwpeSc.js +0 -1
  249. package/web/assets/multiselect-CJ4zRD9O.js +0 -251
  250. package/web/assets/process.store-xpYTF7jB.js +0 -1
  251. package/web/assets/router-BGicJbXI.js +0 -1
  252. package/web/assets/settings-scope-S5iFQlQN.js +0 -1
  253. package/web/assets/settings.store-D0HZbmo_.js +0 -1
  254. package/web/assets/src-wtcksrJO.js +0 -1
  255. package/web/assets/trpc-BFxMUfYl.js +0 -1
  256. package/web/assets/useAiChatDrawer-BJrQ-k2R.js +0 -1
  257. package/web/assets/useCloudOrg-Basge1Jc.js +0 -97
  258. package/web/assets/useCloudOrg-CJNAt-cW.css +0 -1
  259. /package/{agent-manager-JUVAVUIQ.js.map → agent-manager-KM7SFKVR.js.map} +0 -0
  260. /package/web/assets/{abap-BvxTqXT2.js → abap-Q7FyqTce.js} +0 -0
  261. /package/web/assets/{apex-CIPCCkBr.js → apex-DBNDq2a_.js} +0 -0
  262. /package/web/assets/{azcli-Rs0NIwkA.js → azcli-BHW8ozYN.js} +0 -0
  263. /package/web/assets/{bat-BxAhM6gR.js → bat-BL-_3Nfo.js} +0 -0
  264. /package/web/assets/{bicep-oV_ehPcG.js → bicep-DR2vgumW.js} +0 -0
  265. /package/web/assets/{browser-DNbnH79q.js → browser-BOSK4iqQ.js} +0 -0
  266. /package/web/assets/{cameligo-CJLaUyQs.js → cameligo-BCjoEAZU.js} +0 -0
  267. /package/web/assets/{clojure-CjvMureh.js → clojure-zw1Irdul.js} +0 -0
  268. /package/web/assets/{coffee-motWC5XQ.js → coffee-BdEjkiiW.js} +0 -0
  269. /package/web/assets/{cpp-DiWIfYNM.js → cpp-DKUlBIAG.js} +0 -0
  270. /package/web/assets/{csharp-GBlGBeai.js → csharp-BsNC4zVq.js} +0 -0
  271. /package/web/assets/{csp-tSyK5eO1.js → csp-X4Chv5_9.js} +0 -0
  272. /package/web/assets/{css-BkFK9HG_.js → css-Dh0Dlycs.js} +0 -0
  273. /package/web/assets/{cypher-Bcp8PXr2.js → cypher-BL_DRjGX.js} +0 -0
  274. /package/web/assets/{dart-uz9Rxe0M.js → dart-DaM4j487.js} +0 -0
  275. /package/web/assets/{dockerfile-iJizx3Zp.js → dockerfile-Df5WJXAt.js} +0 -0
  276. /package/web/assets/{ecl-BalaS36Z.js → ecl-BjUo3uTs.js} +0 -0
  277. /package/web/assets/{elixir-D6CLrLGy.js → elixir-DrLHYSxt.js} +0 -0
  278. /package/web/assets/{flow9-CFt3-vVY.js → flow9-DKiuX7rg.js} +0 -0
  279. /package/web/assets/{fsharp-DGa7raxa.js → fsharp-CAN78557.js} +0 -0
  280. /package/web/assets/{go-wlqInk4z.js → go-DGjr9vA5.js} +0 -0
  281. /package/web/assets/{graphql-CP1guigM.js → graphql-CcoU3Cj2.js} +0 -0
  282. /package/web/assets/{hcl-CK0UkKD0.js → hcl-udfyCcTm.js} +0 -0
  283. /package/web/assets/{ini-Ch56nrUj.js → ini-BVbXatjh.js} +0 -0
  284. /package/web/assets/{java-C9_WIayl.js → java-Drpmh61g.js} +0 -0
  285. /package/web/assets/{julia-Can2_mhR.js → julia-asFGk-ZV.js} +0 -0
  286. /package/web/assets/{kotlin-DUvGf_BX.js → kotlin-HmkKz1TT.js} +0 -0
  287. /package/web/assets/{less-DoTbG-rc.js → less-C5i2m2Dn.js} +0 -0
  288. /package/web/assets/{lexon-BFMO2_kL.js → lexon-B3Xh2kL6.js} +0 -0
  289. /package/web/assets/{lua-CC-QtBo7.js → lua-DnOtgOOu.js} +0 -0
  290. /package/web/assets/{m3-C51MyH5Q.js → m3-Brj4HNKq.js} +0 -0
  291. /package/web/assets/{markdown-CDwLHhgZ.js → markdown-C3-4Ntpz.js} +0 -0
  292. /package/web/assets/{mips-YuxZtPGU.js → mips-vFQKPHzn.js} +0 -0
  293. /package/web/assets/{msdax-CJjWhmte.js → msdax-D5MYLS2R.js} +0 -0
  294. /package/web/assets/{mysql-B1riwLaD.js → mysql-CRQHhUON.js} +0 -0
  295. /package/web/assets/{objective-c-drXT-gmc.js → objective-c-8cZEp0HR.js} +0 -0
  296. /package/web/assets/{pascal-KUYgrN-Z.js → pascal-BPn_2jro.js} +0 -0
  297. /package/web/assets/{pascaligo-DQmQJP-r.js → pascaligo-L7QnU_8B.js} +0 -0
  298. /package/web/assets/{perl-09XLBmCS.js → perl-B9zSPnp3.js} +0 -0
  299. /package/web/assets/{pgsql-BFj9IFFu.js → pgsql-DiRJukCJ.js} +0 -0
  300. /package/web/assets/{php-UnC5BqwY.js → php-Dv4g8Lhr.js} +0 -0
  301. /package/web/assets/{pla-BFuYrPHG.js → pla-CKAoz6vp.js} +0 -0
  302. /package/web/assets/{postiats-n4ft3jnO.js → postiats-B_PYgUTS.js} +0 -0
  303. /package/web/assets/{powerquery-D-s-oFSc.js → powerquery-CAagSyo-.js} +0 -0
  304. /package/web/assets/{powershell-CTboTf93.js → powershell-Cj9BzLhS.js} +0 -0
  305. /package/web/assets/{protobuf-Dt62GuJP.js → protobuf-DTRY4FFo.js} +0 -0
  306. /package/web/assets/{pug-CEFWkUzw.js → pug-qADGmCS8.js} +0 -0
  307. /package/web/assets/{qsharp-B0DUmgPZ.js → qsharp-xkZT0ZOm.js} +0 -0
  308. /package/web/assets/{r-BVnF0c4T.js → r-C7wfNC2Z.js} +0 -0
  309. /package/web/assets/{redis-DLl3KQXi.js → redis-BoccK80D.js} +0 -0
  310. /package/web/assets/{redshift-cif1I7h1.js → redshift-EL8PjTts.js} +0 -0
  311. /package/web/assets/{restructuredtext-PNfql36m.js → restructuredtext-CA6rgR7C.js} +0 -0
  312. /package/web/assets/{ruby-j3jxDjUN.js → ruby-BymrInur.js} +0 -0
  313. /package/web/assets/{rust-BaIO-mAt.js → rust-BTbPL-fg.js} +0 -0
  314. /package/web/assets/{sb-D8XNVNUQ.js → sb-BTkOICcb.js} +0 -0
  315. /package/web/assets/{scala-DiK9Ps90.js → scala-CzaUHeQF.js} +0 -0
  316. /package/web/assets/{scheme-DPKqXHmF.js → scheme-DZe2DRuY.js} +0 -0
  317. /package/web/assets/{scss-DpMwfP2H.js → scss-D5oFt9cg.js} +0 -0
  318. /package/web/assets/{shell-Dw9mKVg2.js → shell-DCkIF5jZ.js} +0 -0
  319. /package/web/assets/{solidity-DTxo-7fe.js → solidity-CfOO4gXi.js} +0 -0
  320. /package/web/assets/{sophia-BjA3Q87y.js → sophia-0-sROOHR.js} +0 -0
  321. /package/web/assets/{sparql-q1EpMUqb.js → sparql-Dzzr9hol.js} +0 -0
  322. /package/web/assets/{sql-CjcQ4wIr.js → sql-DbXHiHh_.js} +0 -0
  323. /package/web/assets/{st-AuOpxVl7.js → st-DEaYV8xH.js} +0 -0
  324. /package/web/assets/{swift-BUWnv6f7.js → swift-BQItveav.js} +0 -0
  325. /package/web/assets/{systemverilog-FhXn-3OZ.js → systemverilog-nE6YfGlx.js} +0 -0
  326. /package/web/assets/{tcl-B0lqcTtS.js → tcl-Do7Q0SM0.js} +0 -0
  327. /package/web/assets/{twig-B0OeGPVa.js → twig-B2CLZN2j.js} +0 -0
  328. /package/web/assets/{typespec-Bmh6VX11.js → typespec-r9R1AgVi.js} +0 -0
  329. /package/web/assets/{uuid-FpfcaBnR.js → uuid-Q0SWZmaT.js} +0 -0
  330. /package/web/assets/{vb-bmgX6veu.js → vb-DGnD02qr.js} +0 -0
  331. /package/web/assets/{w3c-keyname-2TLn3EjF.js → w3c-keyname-9KQ-4XZl.js} +0 -0
  332. /package/web/assets/{wgsl-FflLnFqI.js → wgsl-C2fD4koY.js} +0 -0
@@ -110,7 +110,7 @@ import {
110
110
  wasRead,
111
111
  withDeprecatedAliases,
112
112
  writeEntity
113
- } from "./chunk-WDM637TW.js";
113
+ } from "./chunk-T3TDCZUY.js";
114
114
 
115
115
  // ../server/src/create-server.ts
116
116
  import express from "express";
@@ -5634,6 +5634,24 @@ import { promisify as promisify3 } from "util";
5634
5634
  import { fileURLToPath as fileURLToPath2 } from "url";
5635
5635
 
5636
5636
  // ../../packages/ai-capabilities/src/capabilities.ts
5637
+ function toList(raw) {
5638
+ if (!raw) return [];
5639
+ const text = raw.trim();
5640
+ if (text.startsWith("[")) {
5641
+ try {
5642
+ const parsed = JSON.parse(text);
5643
+ if (Array.isArray(parsed)) return parsed.map((v) => String(v).trim()).filter(Boolean);
5644
+ } catch {
5645
+ }
5646
+ }
5647
+ return text.split(",").map((v) => v.trim().replace(/^["'[]+|["'\]]+$/g, "")).filter(Boolean);
5648
+ }
5649
+ function clearable(raw, parse2, key) {
5650
+ if (raw === void 0) return {};
5651
+ const text = String(raw).trim();
5652
+ if (!text || text === "null") return { [key]: null };
5653
+ return { [key]: parse2(text) };
5654
+ }
5637
5655
  var RUNEYA_CAPABILITIES = [
5638
5656
  {
5639
5657
  name: "list_services",
@@ -5757,11 +5775,11 @@ var RUNEYA_CAPABILITIES = [
5757
5775
  },
5758
5776
  {
5759
5777
  name: "kanban_search_cards",
5760
- description: "Search kanban cards by free text, matched against their title and body (accent- and case-insensitive). Searches every board of the organization unless boardId narrows it down.",
5778
+ description: "Search kanban cards by free text, matched against their title, body and comments (accent- and case-insensitive). Archived cards are included. Searches every board of the organization unless boardId narrows it down.",
5761
5779
  route: "kanban.searchCards",
5762
5780
  method: "GET",
5763
5781
  params: [
5764
- { name: "query", description: "Text to look for in card titles and bodies", required: true },
5782
+ { name: "query", description: "Text to look for in card titles, bodies and comments", required: true },
5765
5783
  { name: "boardId", description: "Restrict the search to this board. Omit to search all boards.", required: false },
5766
5784
  { name: "limit", description: "Maximum number of cards to return (1-100). Default: 25.", required: false },
5767
5785
  { name: "organizationId", description: "Which organization to search. Optional: needed only when the account belongs to several and the error message asks for it.", required: false }
@@ -5847,6 +5865,71 @@ var RUNEYA_CAPABILITIES = [
5847
5865
  { name: "content", description: "Card content in markdown", required: false }
5848
5866
  ],
5849
5867
  buildInput: (p) => ({ boardId: p.boardId, column: p.column, title: p.title, content: p.content })
5868
+ },
5869
+ {
5870
+ name: "kanban_get_card",
5871
+ description: "Read one kanban card by id, including archived ones. Cheaper than fetching the whole board, and the only way to read a card that has been archived.",
5872
+ route: "kanban.getCard",
5873
+ method: "GET",
5874
+ params: [
5875
+ { name: "boardId", description: "The kanban board ID", required: true },
5876
+ { name: "cardId", description: "The card ID", required: true }
5877
+ ],
5878
+ buildInput: (p) => ({ boardId: p.boardId, cardId: p.cardId })
5879
+ },
5880
+ {
5881
+ name: "kanban_update_card",
5882
+ description: "Update an existing kanban card. Only the fields you pass are changed; passing null to priority, color or deadline clears it. Prefer this over creating a second card when something needs correcting.",
5883
+ route: "kanban.updateCard",
5884
+ method: "POST",
5885
+ params: [
5886
+ { name: "boardId", description: "The kanban board ID", required: true },
5887
+ { name: "cardId", description: "The card ID", required: true },
5888
+ { name: "title", description: "New title", required: false },
5889
+ { name: "content", description: "New card content, in markdown", required: false },
5890
+ { name: "priority", description: "Priority from 1 to 10, or null to clear it", required: false },
5891
+ { name: "color", description: "Card colour, or null to clear it", required: false },
5892
+ { name: "groups", description: "Labels, as a list of strings. Replaces the current ones.", required: false },
5893
+ { name: "deadline", description: "Due date as YYYY-MM-DD, or null to clear it", required: false },
5894
+ { name: "assignees", description: "User ids to assign, as a list. Replaces the current ones; use kanban_list_members to find the ids.", required: false }
5895
+ ],
5896
+ buildInput: (p) => ({
5897
+ boardId: p.boardId,
5898
+ cardId: p.cardId,
5899
+ ...p.title !== void 0 ? { title: p.title } : {},
5900
+ ...p.content !== void 0 ? { content: p.content } : {},
5901
+ // Tout arrive en chaîne : un modèle n'écrit pas des nombres, des listes
5902
+ // ni des `null` typés. `clearable` distingue « efface » de « ne touche
5903
+ // pas » — sans quoi vider une couleur serait impossible à exprimer, et
5904
+ // changer un titre risquerait de vider le reste.
5905
+ ...clearable(p.priority, (v) => Number(v), "priority"),
5906
+ ...clearable(p.color, (v) => v, "color"),
5907
+ ...clearable(p.deadline, (v) => v, "deadline"),
5908
+ ...p.groups !== void 0 ? { groups: toList(p.groups) } : {},
5909
+ ...p.assignees !== void 0 ? { assignees: toList(p.assignees) } : {}
5910
+ })
5911
+ },
5912
+ {
5913
+ name: "kanban_set_card_archived",
5914
+ description: "Archive a kanban card (it leaves the board but is not deleted) or bring it back. An unarchived card returns to the column it left.",
5915
+ route: "kanban.setCardArchived",
5916
+ method: "POST",
5917
+ params: [
5918
+ { name: "boardId", description: "The kanban board ID", required: true },
5919
+ { name: "cardId", description: "The card ID", required: true },
5920
+ { name: "archived", description: "true to archive, false to bring the card back", required: true }
5921
+ ],
5922
+ buildInput: (p) => ({ boardId: p.boardId, cardId: p.cardId, archived: p.archived === "true" })
5923
+ },
5924
+ {
5925
+ name: "kanban_list_members",
5926
+ description: "List the people of the organization who can be assigned to a card, with their ids. Needed before assigning anyone with kanban_update_card.",
5927
+ route: "kanban.listMembers",
5928
+ method: "GET",
5929
+ params: [
5930
+ { name: "organizationId", description: "Which organization. Optional: needed only when the account belongs to several and the error message asks for it.", required: false }
5931
+ ],
5932
+ buildInput: (p) => p.organizationId ? { organizationId: p.organizationId } : {}
5850
5933
  }
5851
5934
  ];
5852
5935
 
@@ -7594,9 +7677,6 @@ async function resolveImagesToBase64(images, contextId) {
7594
7677
  return results.filter((r) => r !== null);
7595
7678
  }
7596
7679
 
7597
- // ../server/src/services/kanban-commands.ts
7598
- import { randomUUID as randomUUID6 } from "crypto";
7599
-
7600
7680
  // ../server/src/trpc/routers/cloud-auth.ts
7601
7681
  import { z as z16 } from "zod";
7602
7682
  import { hostname } from "os";
@@ -7858,6 +7938,76 @@ var KanbanStore = class {
7858
7938
  });
7859
7939
  return { card: res.data?.card ?? null, unsupported: res.status === 404 };
7860
7940
  }
7941
+ /** Une carte, par son identifiant — archivée comprise. */
7942
+ async card(boardId, cardId) {
7943
+ const res = await callCloud(
7944
+ `/kanban/card/get?boardId=${encodeURIComponent(boardId)}&cardId=${encodeURIComponent(cardId)}`
7945
+ );
7946
+ return res.data ?? null;
7947
+ }
7948
+ /**
7949
+ * Modifier une carte.
7950
+ *
7951
+ * L'absence d'un champ ne le touche pas ; `null` l'efface. C'est le contrat du
7952
+ * cloud, et le distinguer ici évite qu'un agent vide une couleur en voulant
7953
+ * simplement changer un titre.
7954
+ */
7955
+ async updateCard(boardId, cardId, patch) {
7956
+ const res = await callCloud("/kanban/card/update", {
7957
+ method: "POST",
7958
+ body: { boardId, cardId, ...patch }
7959
+ });
7960
+ return res.data?.card ?? null;
7961
+ }
7962
+ /** Ranger une carte, ou la reprendre. */
7963
+ async setCardArchived(boardId, cardId, archived) {
7964
+ const res = await callCloud(`/kanban/card/${archived ? "archive" : "unarchive"}`, {
7965
+ method: "POST",
7966
+ body: { boardId, cardId }
7967
+ });
7968
+ return res.ok;
7969
+ }
7970
+ /**
7971
+ * Les membres de l'organisation — sans quoi assigner reviendrait à deviner
7972
+ * un identifiant.
7973
+ */
7974
+ async members(organizationId) {
7975
+ const orgId = await resolveOrganizationId(organizationId);
7976
+ const res = must(
7977
+ await callCloud(
7978
+ `/organization/get-full-organization?organizationId=${encodeURIComponent(orgId)}`
7979
+ )
7980
+ );
7981
+ return (res.members ?? []).map((m) => ({
7982
+ id: m.userId,
7983
+ name: m.user?.name?.trim() || m.user?.email || m.userId,
7984
+ email: m.user?.email ?? ""
7985
+ }));
7986
+ }
7987
+ /**
7988
+ * Chercher des cartes — dans le cloud, pas ici.
7989
+ *
7990
+ * Cette recherche téléchargeait autrefois **tous les tableaux** de
7991
+ * l'organisation, entiers, pour filtrer ensuite en mémoire sur le titre et le
7992
+ * corps. Elle coûtait donc le poids du kanban complet à chaque appel, ne
7993
+ * voyait pas les commentaires — ils ne voyagent plus avec le tableau — et
7994
+ * ignorait les cartes rangées, absentes des colonnes.
7995
+ *
7996
+ * Le cloud fait la même recherche que ses propres écrans : titre, corps et
7997
+ * commentaires, sans casse ni accents.
7998
+ */
7999
+ async searchCards(input) {
8000
+ const orgId = await resolveOrganizationId(input.organizationId);
8001
+ const query = new URLSearchParams({ organizationId: orgId, q: input.query });
8002
+ if (input.boardId) query.set("boardId", input.boardId);
8003
+ if (input.limit) query.set("limit", String(input.limit));
8004
+ const res = must(
8005
+ await callCloud(
8006
+ `/kanban/card/search?${query.toString()}`
8007
+ )
8008
+ );
8009
+ return { cards: res.cards ?? [], total: res.total ?? 0, truncated: Boolean(res.truncated) };
8010
+ }
7861
8011
  /** Déplacer une carte, sans réécrire le tableau. */
7862
8012
  async moveCard(boardId, cardId, toColumnId) {
7863
8013
  const res = await callCloud("/kanban/card/move", {
@@ -7986,27 +8136,9 @@ async function addCardOrFallback(board, columnTitle, cardTitle, cardContent) {
7986
8136
  markdown: cardContent
7987
8137
  });
7988
8138
  if (card) return;
7989
- if (!unsupported) {
7990
- console.warn(`[kanban-commands] add_card failed: column="${columnTitle}"`);
7991
- return;
7992
- }
7993
- console.warn("[kanban-commands] cloud sans /kanban/card/add \u2014 repli sur la sauvegarde du tableau");
7994
- const col = board.columns.find((c) => c.title.toLowerCase() === columnTitle.toLowerCase());
7995
- if (!col) return;
7996
- const now = (/* @__PURE__ */ new Date()).toISOString();
7997
- col.cards.push({
7998
- id: randomUUID6(),
7999
- title: cardTitle,
8000
- markdown: cardContent ?? "",
8001
- images: [],
8002
- attachments: [],
8003
- assignees: [],
8004
- order: col.cards.reduce((max, c) => Math.max(max, c.order + 1), 0),
8005
- history: [{ type: "created", timestamp: now, detail: `AI \u2014 In column "${col.title}"` }],
8006
- createdAt: now,
8007
- updatedAt: now
8008
- });
8009
- await kanbanStore.update({ id: board.id, columns: board.columns });
8139
+ console.warn(
8140
+ unsupported ? `[kanban-commands] cloud sans /kanban/card/add \u2014 carte \xAB ${cardTitle} \xBB non cr\xE9\xE9e` : `[kanban-commands] add_card failed: column="${columnTitle}"`
8141
+ );
8010
8142
  }
8011
8143
  function formatSize(bytes) {
8012
8144
  if (bytes < 1024) return `${bytes} o`;
@@ -8232,7 +8364,7 @@ Ne jamais omettre ce tag. Il doit \xEAtre la toute derni\xE8re ligne de ta r\xE9
8232
8364
  `.trim();
8233
8365
 
8234
8366
  // ../server/src/services/ai-runners/claude-pty-runner.ts
8235
- import { randomUUID as randomUUID7 } from "crypto";
8367
+ import { randomUUID as randomUUID6 } from "crypto";
8236
8368
 
8237
8369
  // ../server/src/services/ai-runners/claude-pty-tail.ts
8238
8370
  import { open } from "fs/promises";
@@ -8356,7 +8488,7 @@ function tailTranscript(opts) {
8356
8488
 
8357
8489
  // ../server/src/services/ai-runners/claude-pty-runner.ts
8358
8490
  async function getAgentManager() {
8359
- const { agentManager: agentManager2 } = await import("./agent-manager-JUVAVUIQ.js");
8491
+ const { agentManager: agentManager2 } = await import("./agent-manager-KM7SFKVR.js");
8360
8492
  return agentManager2;
8361
8493
  }
8362
8494
  function buildPtyArgs(params, sessionId, opts) {
@@ -8426,7 +8558,7 @@ function dispatchEntry(entry, state, cbs) {
8426
8558
  async function runClaudeViaPty(params) {
8427
8559
  const { agentId, signal, skipTokenInstructions } = params;
8428
8560
  if (!agentId) throw new Error("runClaudeViaPty requires an agentId");
8429
- const sessionId = params.sessionId && params.sessionId.length > 0 ? params.sessionId : randomUUID7();
8561
+ const sessionId = params.sessionId && params.sessionId.length > 0 ? params.sessionId : randomUUID6();
8430
8562
  const args = buildPtyArgs(params, sessionId, { excludeMcp: true });
8431
8563
  const agentMgr = await getAgentManager();
8432
8564
  const displayArgs = args.map((a) => {
@@ -9097,7 +9229,7 @@ async function shutdownCodexAppServer() {
9097
9229
  }
9098
9230
  }
9099
9231
  async function getAgentManager2() {
9100
- const { agentManager: agentManager2 } = await import("./agent-manager-JUVAVUIQ.js");
9232
+ const { agentManager: agentManager2 } = await import("./agent-manager-KM7SFKVR.js");
9101
9233
  return agentManager2;
9102
9234
  }
9103
9235
  function parseRuneyaCurlCommand(command) {
@@ -11202,7 +11334,7 @@ Rules:
11202
11334
  });
11203
11335
 
11204
11336
  // ../server/src/trpc/routers/scenario.ts
11205
- import { randomUUID as randomUUID9 } from "crypto";
11337
+ import { randomUUID as randomUUID8 } from "crypto";
11206
11338
  import { TRPCError as TRPCError16 } from "@trpc/server";
11207
11339
  import { z as z19 } from "zod";
11208
11340
 
@@ -11319,7 +11451,7 @@ async function* streamWithActiveProvider(opts) {
11319
11451
 
11320
11452
  // ../server/src/services/scenario-runner.ts
11321
11453
  import { mkdir as mkdir16 } from "fs/promises";
11322
- import { randomUUID as randomUUID8 } from "crypto";
11454
+ import { randomUUID as randomUUID7 } from "crypto";
11323
11455
  import { join as join19 } from "path";
11324
11456
 
11325
11457
  // ../server/src/services/scenario-presets.ts
@@ -11661,7 +11793,7 @@ function applyHireDirectivesFromOutput(manager, scenario, output) {
11661
11793
  }
11662
11794
  const hired = [];
11663
11795
  for (const payload of hireDirectives) {
11664
- const id = `hire-${randomUUID8().slice(0, 8)}`;
11796
+ const id = `hire-${randomUUID7().slice(0, 8)}`;
11665
11797
  const position = computeHirePosition(manager, scenario.nodes);
11666
11798
  ensureGroupCanContainNode(scenario, manager.groupId ?? null, position);
11667
11799
  const node = {
@@ -12829,7 +12961,7 @@ var scenarioRouter = router({
12829
12961
  })).mutation(({ input }) => {
12830
12962
  const now = Date.now();
12831
12963
  return createOrBadRequest(async () => scenarioStore.create({
12832
- id: randomUUID9(),
12964
+ id: randomUUID8(),
12833
12965
  name: input.name,
12834
12966
  icon: input.icon,
12835
12967
  description: input.description,
@@ -12981,7 +13113,7 @@ var scenarioRouter = router({
12981
13113
  });
12982
13114
 
12983
13115
  // ../server/src/trpc/routers/debug.ts
12984
- import { randomUUID as randomUUID10 } from "crypto";
13116
+ import { randomUUID as randomUUID9 } from "crypto";
12985
13117
  import { TRPCError as TRPCError17 } from "@trpc/server";
12986
13118
  import { z as z20 } from "zod";
12987
13119
  var MAX_BUFFER3 = 300;
@@ -13044,7 +13176,7 @@ var debugRouter = router({
13044
13176
  intervalMs: z20.number().int().min(100).max(5e3).optional(),
13045
13177
  maxTicks: z20.number().int().min(1).max(1e4).optional()
13046
13178
  }).optional()).mutation(({ input }) => {
13047
- const jobId = randomUUID10();
13179
+ const jobId = randomUUID9();
13048
13180
  const intervalMs = input?.intervalMs ?? 400;
13049
13181
  const maxTicks = input?.maxTicks ?? 500;
13050
13182
  const job = {
@@ -13264,7 +13396,7 @@ var diagnosticsRouter = router({
13264
13396
  import { z as z22 } from "zod";
13265
13397
 
13266
13398
  // ../server/src/services/kanban-queue.ts
13267
- import { randomUUID as randomUUID11 } from "crypto";
13399
+ import { randomUUID as randomUUID10 } from "crypto";
13268
13400
  import { EventEmitter as EventEmitter5 } from "events";
13269
13401
  var KanbanQueueService = class extends EventEmitter5 {
13270
13402
  items = [];
@@ -13292,7 +13424,7 @@ var KanbanQueueService = class extends EventEmitter5 {
13292
13424
  return { id: alreadyRunning.id, addedAt: alreadyRunning.startedAt, ...item };
13293
13425
  }
13294
13426
  const queueItem = {
13295
- id: randomUUID11(),
13427
+ id: randomUUID10(),
13296
13428
  ...item,
13297
13429
  addedAt: (/* @__PURE__ */ new Date()).toISOString()
13298
13430
  };
@@ -13539,11 +13671,6 @@ function summarizeCard(card, boardId, columnTitle) {
13539
13671
  updatedAt: card.updatedAt
13540
13672
  };
13541
13673
  }
13542
- function boardCards(board) {
13543
- return [...board.columns].sort((a, b) => a.order - b.order).flatMap(
13544
- (col) => [...col.cards].sort((a, b) => a.order - b.order).map((card) => summarizeCard(card, board.id, col.title))
13545
- );
13546
- }
13547
13674
  function boardCounts(board) {
13548
13675
  const summary = board;
13549
13676
  const columns = board.columns ?? [];
@@ -13553,9 +13680,6 @@ function boardCounts(board) {
13553
13680
  columns: columns.map((c) => c.title)
13554
13681
  };
13555
13682
  }
13556
- function normalize(value) {
13557
- return value.normalize("NFD").replace(new RegExp("\\p{Diacritic}", "gu"), "").toLowerCase();
13558
- }
13559
13683
  var ATTACHMENT_ID_REGEX = /^[A-Za-z0-9_-]{1,128}$/;
13560
13684
  function safeDecode(value) {
13561
13685
  try {
@@ -13685,13 +13809,7 @@ var kanbanRouter = router({
13685
13809
  limit: z23.number().int().min(1).max(100).optional(),
13686
13810
  organizationId: z23.string().max(128).optional()
13687
13811
  })).query(async ({ input }) => {
13688
- const needle = normalize(input.query);
13689
- const ids = input.boardId ? [input.boardId] : (await kanbanStore.list(false, input.organizationId)).boards.map((b) => b.id);
13690
- const boards = (await Promise.all(ids.map((id) => kanbanStore.get(id)))).filter((b) => b !== null);
13691
- const matches = boards.flatMap((board) => boardCards(board).map((card) => ({ board: board.name, ...card }))).filter(
13692
- (card) => normalize(String(card["title"] ?? "")).includes(needle) || normalize(String(card["markdown"] ?? "")).includes(needle)
13693
- );
13694
- return { total: matches.length, cards: matches.slice(0, input.limit ?? 25) };
13812
+ return kanbanStore.searchCards(input);
13695
13813
  }),
13696
13814
  /**
13697
13815
  * Le fil de commentaires d'une carte, relu à la demande.
@@ -13770,7 +13888,7 @@ var kanbanRouter = router({
13770
13888
  addComment: protectedProcedure.input(z23.object({
13771
13889
  boardId: z23.string().max(128),
13772
13890
  cardId: z23.string().max(128),
13773
- comment: z23.string().max(2e4)
13891
+ comment: z23.string().max(1e5)
13774
13892
  })).mutation(async ({ input }) => {
13775
13893
  await executeKanbanCommands(input.boardId, input.cardId, [
13776
13894
  { type: "add_comment", comment: input.comment }
@@ -13788,6 +13906,62 @@ var kanbanRouter = router({
13788
13906
  ]);
13789
13907
  return { ok: true };
13790
13908
  }),
13909
+ /**
13910
+ * Lire une carte, seule.
13911
+ *
13912
+ * `getBoard` rapatrie le tableau entier pour n'en regarder qu'une ; et il ne
13913
+ * porte pas les cartes rangées. Une carte s'adresse par son identifiant.
13914
+ */
13915
+ getCard: protectedProcedure.input(z23.object({ boardId: z23.string().max(128), cardId: z23.string().max(128) })).query(async ({ input }) => {
13916
+ const found = await kanbanStore.card(input.boardId, input.cardId);
13917
+ if (!found) throw new Error(`Carte ${input.cardId} introuvable sur le tableau ${input.boardId}.`);
13918
+ return { ...summarizeCard(found.card, input.boardId, ""), columnId: found.columnId };
13919
+ }),
13920
+ /**
13921
+ * Modifier une carte.
13922
+ *
13923
+ * Le manque le plus coûteux du kanban vu par un agent : sans lui, il ne
13924
+ * pouvait qu'ajouter. Face à une carte à corriger, il en créait une seconde.
13925
+ *
13926
+ * Un champ absent n'est pas touché ; `null` l'efface. La distinction compte —
13927
+ * changer un titre ne doit pas vider une couleur.
13928
+ */
13929
+ updateCard: protectedProcedure.input(z23.object({
13930
+ boardId: z23.string().max(128),
13931
+ cardId: z23.string().max(128),
13932
+ title: z23.string().min(1).max(512).optional(),
13933
+ content: z23.string().max(1e5).optional(),
13934
+ priority: z23.number().int().min(1).max(10).nullable().optional(),
13935
+ color: z23.string().max(32).nullable().optional(),
13936
+ groups: z23.array(z23.string().min(1).max(60)).max(30).optional(),
13937
+ deadline: z23.string().regex(/^\d{4}-\d{2}-\d{2}$/).nullable().optional(),
13938
+ assignees: z23.array(z23.string().max(128)).max(50).optional()
13939
+ })).mutation(async ({ input }) => {
13940
+ const { boardId, cardId, content, ...rest } = input;
13941
+ const patch = { ...rest };
13942
+ if (content !== void 0) patch.markdown = content;
13943
+ if (!Object.keys(patch).length) throw new Error("Rien \xE0 modifier : pr\xE9cisez au moins un champ.");
13944
+ const card = await kanbanStore.updateCard(boardId, cardId, patch);
13945
+ if (!card) throw new Error(`La carte ${cardId} n'a pas pu \xEAtre modifi\xE9e.`);
13946
+ return summarizeCard(card, boardId, "");
13947
+ }),
13948
+ /** Ranger une carte, ou la reprendre. */
13949
+ setCardArchived: protectedProcedure.input(z23.object({
13950
+ boardId: z23.string().max(128),
13951
+ cardId: z23.string().max(128),
13952
+ archived: z23.boolean()
13953
+ })).mutation(async ({ input }) => {
13954
+ const ok = await kanbanStore.setCardArchived(input.boardId, input.cardId, input.archived);
13955
+ if (!ok) throw new Error(`La carte ${input.cardId} n'a pas pu \xEAtre ${input.archived ? "archiv\xE9e" : "reprise"}.`);
13956
+ return { ok: true };
13957
+ }),
13958
+ /**
13959
+ * Qui peut se voir assigner une carte.
13960
+ *
13961
+ * Sans cette liste, assigner revient à deviner un identifiant — et l'agent
13962
+ * n'a aucun moyen de le trouver.
13963
+ */
13964
+ listMembers: protectedProcedure.input(z23.object({ organizationId: z23.string().max(128).optional() })).query(async ({ input }) => ({ members: await kanbanStore.members(input.organizationId) })),
13791
13965
  /**
13792
13966
  * Fetch one card attachment from the cloud and drop it on this machine, so an
13793
13967
  * agent can open it with its own file tools. The bytes never go through the
@@ -14294,7 +14468,7 @@ async function reconcileOrgCanary(orgId) {
14294
14468
  }
14295
14469
 
14296
14470
  // ../server/src/services/cloud-sync-bridge.ts
14297
- import { randomUUID as randomUUID12 } from "crypto";
14471
+ import { randomUUID as randomUUID11 } from "crypto";
14298
14472
  import { mkdir as mkdir20, rm as rm5 } from "fs/promises";
14299
14473
  import * as Y from "yjs";
14300
14474
 
@@ -14410,7 +14584,7 @@ var OrgSyncConnection = class {
14410
14584
  services = getCollection(this.doc, "services");
14411
14585
  environments = getCollection(this.doc, "environments");
14412
14586
  logParsers = getCollection(this.doc, PARSERS);
14413
- conn = randomUUID12();
14587
+ conn = randomUUID11();
14414
14588
  link;
14415
14589
  stopped = false;
14416
14590
  initializing = true;
@@ -15954,7 +16128,7 @@ async function migrateSettingsIntoVaults() {
15954
16128
  // ../server/src/migrations/migrate-from-legacy.ts
15955
16129
  import { createRequire as createRequire2 } from "module";
15956
16130
  import { randomBytes as randomBytes6, createCipheriv as createCipheriv3, createDecipheriv as createDecipheriv3 } from "crypto";
15957
- import { randomUUID as randomUUID13 } from "crypto";
16131
+ import { randomUUID as randomUUID12 } from "crypto";
15958
16132
  import {
15959
16133
  readFile as readFile21,
15960
16134
  writeFile as writeFile20,
@@ -16164,11 +16338,11 @@ async function runLegacyMigration(dataDir) {
16164
16338
  const data = await readEncrypted(join28(parsersDir, file));
16165
16339
  if (data?.id) legacyParsers.push(data);
16166
16340
  }
16167
- const projectMonoId = randomUUID13();
16341
+ const projectMonoId = randomUUID12();
16168
16342
  const envIdMap = {};
16169
16343
  const labelToKey = {};
16170
16344
  for (const [name, legacyEnv] of Object.entries(legacyEnvs)) {
16171
- envIdMap[name] = randomUUID13();
16345
+ envIdMap[name] = randomUUID12();
16172
16346
  if (legacyEnv?.label) labelToKey[legacyEnv.label] = name;
16173
16347
  }
16174
16348
  const runeEnvs = [];
@@ -16193,7 +16367,7 @@ async function runLegacyMigration(dataDir) {
16193
16367
  if (hasInvalidInterpolation(value)) continue;
16194
16368
  const cleaned = cleanVarKey(key);
16195
16369
  if (inheritedVars[cleaned] === value) continue;
16196
- const varId = randomUUID13();
16370
+ const varId = randomUUID12();
16197
16371
  variables[varId] = makeVariable(cleaned, value);
16198
16372
  varIdLookup.set(`${envIdMap[name]}:${cleaned}`, varId);
16199
16373
  }
@@ -16214,7 +16388,7 @@ async function runLegacyMigration(dataDir) {
16214
16388
  const serviceIdMap = {};
16215
16389
  const runeServices = [];
16216
16390
  for (const [name, legacy] of Object.entries(legacyServices)) {
16217
- const id = randomUUID13();
16391
+ const id = randomUUID12();
16218
16392
  serviceIdMap[name] = id;
16219
16393
  const rootPath = legacy.rootPath || "";
16220
16394
  const rootPathCwd = rootPath && rootPath !== "." ? rootPath : "";
@@ -16223,7 +16397,7 @@ async function runLegacyMigration(dataDir) {
16223
16397
  const parts = [cmd.spawnCmd, ...cmd.spawnArgs || []].filter(Boolean);
16224
16398
  if (!parts.length) continue;
16225
16399
  commands.push({
16226
- id: cmd.id || randomUUID13(),
16400
+ id: cmd.id || randomUUID12(),
16227
16401
  label: "Launch",
16228
16402
  command: parts.join(" "),
16229
16403
  cwd: cmd.spawnOptions?.cwd || "",
@@ -16284,7 +16458,7 @@ async function runLegacyMigration(dataDir) {
16284
16458
  const legacyBootstrapCmds = container.bootstrap?.commands || [];
16285
16459
  if (legacyBootstrapCmds.length > 0) {
16286
16460
  dockerConfig.bootstrapCommands = legacyBootstrapCmds.filter((bs) => bs.cmd || bs.entrypoint).map((bs, idx) => ({
16287
- id: bs.id || randomUUID13(),
16461
+ id: bs.id || randomUUID12(),
16288
16462
  label: bs.label || `Bootstrap ${idx + 1}`,
16289
16463
  command: bs.cmd || "",
16290
16464
  ...bs.entrypoint ? { entrypoint: bs.entrypoint } : {},
@@ -16332,7 +16506,7 @@ async function runLegacyMigration(dataDir) {
16332
16506
  cwd: serviceCwd,
16333
16507
  runner: dockerConfig ? "docker" : "native",
16334
16508
  shortcuts: (legacy.shortcuts || []).filter((s) => s.spawnCmd || s.label).map((s) => ({
16335
- id: s.id || randomUUID13(),
16509
+ id: s.id || randomUUID12(),
16336
16510
  label: s.label || s.spawnCmd || "",
16337
16511
  command: [s.spawnCmd, ...s.spawnArgs || []].filter(Boolean).join(" "),
16338
16512
  ...s.spawnOptions?.cwd ? { cwd: s.spawnOptions.cwd } : {}
@@ -16372,7 +16546,7 @@ async function runLegacyMigration(dataDir) {
16372
16546
  );
16373
16547
  if (!svcScopedEnv) {
16374
16548
  svcScopedEnv = {
16375
- id: randomUUID13(),
16549
+ id: randomUUID12(),
16376
16550
  projectId: projectMonoId,
16377
16551
  name: `${service?.name || name} (${globalEnv.name})`,
16378
16552
  scope: "service",
@@ -16396,7 +16570,7 @@ async function runLegacyMigration(dataDir) {
16396
16570
  const varPost = typeof varData === "object" ? String(varData.suffix ?? "") : "";
16397
16571
  if (!varKey || existingKeys.has(cleanVarKey(varKey))) continue;
16398
16572
  const cleaned = cleanVarKey(varKey);
16399
- const varId = randomUUID13();
16573
+ const varId = randomUUID12();
16400
16574
  svcScopedEnv.variables[varId] = makeVariable(cleaned, varValue, varPre, varPost);
16401
16575
  existingKeys.add(cleaned);
16402
16576
  }
@@ -16416,7 +16590,7 @@ async function runLegacyMigration(dataDir) {
16416
16590
  );
16417
16591
  if (!svcScopedEnv) {
16418
16592
  svcScopedEnv = {
16419
- id: randomUUID13(),
16593
+ id: randomUUID12(),
16420
16594
  projectId: projectMonoId,
16421
16595
  name: `${service?.name || serviceName} (${globalEnv.name})`,
16422
16596
  scope: "service",
@@ -16437,7 +16611,7 @@ async function runLegacyMigration(dataDir) {
16437
16611
  const baseEntry = Object.entries(svcScopedEnv.variables).find(([, v]) => v.key === cleaned);
16438
16612
  let varId = baseEntry?.[0];
16439
16613
  if (!varId) {
16440
- varId = randomUUID13();
16614
+ varId = randomUUID12();
16441
16615
  svcScopedEnv.variables[varId] = {
16442
16616
  key: cleaned,
16443
16617
  value: { value: "", pre: "", post: "", isSecret: false, injectIntoAi: false }
@@ -16467,13 +16641,13 @@ async function runLegacyMigration(dataDir) {
16467
16641
  flatOverrides[varId] = makeVariable(cleaned, value);
16468
16642
  }
16469
16643
  } else {
16470
- flatOverrides[randomUUID13()] = makeVariable(cleaned, value);
16644
+ flatOverrides[randomUUID12()] = makeVariable(cleaned, value);
16471
16645
  }
16472
16646
  } else {
16473
16647
  const cleaned = cleanVarKey(key);
16474
16648
  const existingVarId = Object.entries(env2.variables).find(([, v]) => v.key === cleaned)?.[0];
16475
16649
  if (!existingVarId) {
16476
- const varId = randomUUID13();
16650
+ const varId = randomUUID12();
16477
16651
  env2.variables[varId] = makeVariable(cleaned, value);
16478
16652
  varIdLookup.set(`${envId}:${cleaned}`, varId);
16479
16653
  }
@@ -16657,7 +16831,7 @@ async function runOverrideOnlyMigration(dataDir) {
16657
16831
  if (isSameAsBase(value, baseVar)) continue;
16658
16832
  flatOverrides[varId] = makeVariable(cleaned, value);
16659
16833
  } else {
16660
- flatOverrides[randomUUID13()] = makeVariable(cleaned, value);
16834
+ flatOverrides[randomUUID12()] = makeVariable(cleaned, value);
16661
16835
  }
16662
16836
  }
16663
16837
  }
@@ -16694,7 +16868,7 @@ async function runOverrideOnlyMigration(dataDir) {
16694
16868
  );
16695
16869
  if (!svcScopedEnv) {
16696
16870
  svcScopedEnv = {
16697
- id: randomUUID13(),
16871
+ id: randomUUID12(),
16698
16872
  projectId: globalEnv["projectId"],
16699
16873
  name: `${service?.["name"] || serviceName} (${globalEnv["name"]})`,
16700
16874
  scope: "service",
@@ -16716,7 +16890,7 @@ async function runOverrideOnlyMigration(dataDir) {
16716
16890
  const baseEntry = Object.entries(svcScopedEnv["variables"]).find(([, v]) => v.key === cleaned);
16717
16891
  let varId = baseEntry?.[0];
16718
16892
  if (!varId) {
16719
- varId = randomUUID13();
16893
+ varId = randomUUID12();
16720
16894
  svcScopedEnv["variables"][varId] = {
16721
16895
  key: cleaned,
16722
16896
  value: { value: "", pre: "", post: "", isSecret: false, injectIntoAi: false }
@@ -18033,4 +18207,4 @@ export {
18033
18207
  pullEnv,
18034
18208
  registerInstance
18035
18209
  };
18036
- //# sourceMappingURL=src-WON4SLMI.js.map
18210
+ //# sourceMappingURL=src-6PAM4JRF.js.map