@runeya/runeya 2.0.130 → 2.0.132

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 (246) hide show
  1. package/agent/index.js +247 -177
  2. package/agent/index.js.map +1 -1
  3. package/agent-manager-J75NZ6MN.js +11 -0
  4. package/{chat-6ETYBINN.js → chat-ICUWJZEX.js} +7 -7
  5. package/{chunk-TTJNHZ6U.js → chunk-24UJRQRM.js} +2 -2
  6. package/{chunk-J2L6VONF.js → chunk-3HGTIUGB.js} +13 -53
  7. package/chunk-3HGTIUGB.js.map +1 -0
  8. package/{chunk-B7MABGQN.js → chunk-4RMM2OUU.js} +29 -2
  9. package/chunk-4RMM2OUU.js.map +1 -0
  10. package/{chunk-K2KSZRSI.js → chunk-PVLDFBL6.js} +6 -6
  11. package/{chunk-RDE3X3J4.js → chunk-RLLUJCPQ.js} +96 -13
  12. package/chunk-RLLUJCPQ.js.map +1 -0
  13. package/{chunk-7GBSCYXU.js → chunk-WN36W5OW.js} +81 -14
  14. package/chunk-WN36W5OW.js.map +1 -0
  15. package/{companion-SH4HLD6G.js → companion-IYK2652T.js} +5 -4
  16. package/{desktop-launcher-7UZF7PFH.js → desktop-launcher-GHCALSOS.js} +2 -2
  17. package/index.js +5 -5
  18. package/mcp-server/index.js +134 -28
  19. package/mcp-server/index.js.map +1 -1
  20. package/{node-ILM6MV56.js → node-JU7A5NDT.js} +6 -2
  21. package/package.json +1 -1
  22. package/{settings-manager-XD6U4QN3.js → settings-manager-3G5RHW3X.js} +3 -3
  23. package/{src-BNWVTXCY.js → src-FS7Y4DA7.js} +43 -15
  24. package/src-FS7Y4DA7.js.map +1 -0
  25. package/web/assets/{AgentScalarChatInterface.vue-ojzSMuCC.js → AgentScalarChatInterface.vue-CImJBBKk.js} +1 -1
  26. package/web/assets/{AgentTerminalPage-Cf-ymD9E.js → AgentTerminalPage-iRrYZG3N.js} +1 -1
  27. package/web/assets/AiChatPage-DWAuKlmg.js +1 -0
  28. package/web/assets/{AppLayout-YtDku8pN.js → AppLayout-CkZbU0SI.js} +1 -1
  29. package/web/assets/{AuditPage-DCVZLRz4.js → AuditPage-C-yVNrOi.js} +1 -1
  30. package/web/assets/{CloudAccountPage-BOqt_ByJ.js → CloudAccountPage-7XqPLVAS.js} +1 -1
  31. package/web/assets/CloudAccountPage-Cxo7nX-K.js +1 -0
  32. package/web/assets/{CloudMessagingPage-BtlnnNf8.js → CloudMessagingPage-CZBpneaV.js} +1 -1
  33. package/web/assets/{DashboardPage-BOxdzarH.js → DashboardPage-CBZZyVwY.js} +1 -1
  34. package/web/assets/{DirectoryPickerDialog-B4MzYK-Y.js → DirectoryPickerDialog-1MThX25G.js} +1 -1
  35. package/web/assets/{EditorIcon-DAx2QpZA.js → EditorIcon-BVisg2uv.js} +1 -1
  36. package/web/assets/{EnvironmentForm-Cgcc_56Z.js → EnvironmentForm-C82fYWhW.js} +1 -1
  37. package/web/assets/{EnvironmentFormPage-n7m6dJUn.js → EnvironmentFormPage-BVOpMMJ7.js} +1 -1
  38. package/web/assets/{EnvironmentListPage-DS6s6UQk.js → EnvironmentListPage-CPRmFtVH.js} +1 -1
  39. package/web/assets/KanbanBoardPage-BmJwTFE8.css +1 -0
  40. package/web/assets/KanbanBoardPage-pzBPUjj2.js +4 -0
  41. package/web/assets/KanbanListPage-Cy0eP5v1.js +1 -0
  42. package/web/assets/KanbanListPage-pCWYPwBv.css +1 -0
  43. package/web/assets/{LaunchProjectPage-BFOzRnGw.js → LaunchProjectPage-Bn_wU_QT.js} +1 -1
  44. package/web/assets/{LaunchServicesPage-D7FmbH2H.js → LaunchServicesPage-BuxokNH7.js} +1 -1
  45. package/web/assets/{LogViewer-BbbpNT7v.js → LogViewer-DFPxgP8T.js} +1 -1
  46. package/web/assets/{OrgKeyPrompt-BGlTQGBE.js → OrgKeyPrompt-B8qmru6I.js} +1 -1
  47. package/web/assets/{OrgLogo-DfRefdu8.js → OrgLogo-9eOcBM3O.js} +1 -1
  48. package/web/assets/{ProcessControls-ByXJUYXz.js → ProcessControls-BA9IDUMF.js} +1 -1
  49. package/web/assets/{ProcessDetailPage-6q8wgWEP.js → ProcessDetailPage-CnOdgJXS.js} +1 -1
  50. package/web/assets/{ProcessMetrics-o6TQkXTa.js → ProcessMetrics-fFZhpyqE.js} +1 -1
  51. package/web/assets/{RandomJobTestPage-DuCKCB_n.js → RandomJobTestPage-Cw5KA5rW.js} +1 -1
  52. package/web/assets/{ScenarioEditorPage-ZCVivzeZ.js → ScenarioEditorPage-DY9Sfei7.js} +1 -1
  53. package/web/assets/{SendToChatDialog-CFd1Bubz.js → SendToChatDialog-DLR7jXBG.js} +1 -1
  54. package/web/assets/{ServiceControlsBar-B-3OrP1t.js → ServiceControlsBar-szGNMHjF.js} +1 -1
  55. package/web/assets/{ServiceDetailPage-Bm53GpUX.js → ServiceDetailPage-BXZ2tvHn.js} +1 -1
  56. package/web/assets/{ServiceFormPage-B5_95jOM.js → ServiceFormPage-B6oUWP9J.js} +1 -1
  57. package/web/assets/{SettingsPage-7Thq96Wn.js → SettingsPage-95JC2bIP.js} +4 -4
  58. package/web/assets/{UnlockPage-BXbKs3QZ.js → UnlockPage-P4gYB5LT.js} +1 -1
  59. package/web/assets/{VaultMigrationPage-h6NgaEOh.js → VaultMigrationPage-CQH54K0y.js} +1 -1
  60. package/web/assets/{VersionBadge-Bh8iLmG8.js → VersionBadge-D-Zv0XzJ.js} +1 -1
  61. package/web/assets/WikiPage-DzFvtMxw.js +1 -0
  62. package/web/assets/{WikiView-B905tAss.js → WikiView-BLoRr_y4.js} +1 -1
  63. package/web/assets/{add-scalar-classes-DW5rrkrl.js → add-scalar-classes-Bpf67R_k.js} +3 -3
  64. package/web/assets/{autocomplete-DxjWjky0.js → autocomplete-B4ASWozR.js} +1 -1
  65. package/web/assets/{basic-shape-diamond.svg-JSaiJ46F.js → basic-shape-diamond.svg-D96ayS7-.js} +1 -1
  66. package/web/assets/{basic-shape-hexagon.svg-D1-hJiCH.js → basic-shape-hexagon.svg-lBCgoQIf.js} +1 -1
  67. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-J6Ksp8Xz.js → basic-shape-primary-circle-ellipse-round.svg-BEzXT_e-.js} +1 -1
  68. package/web/assets/{basic-shape-primary-square-rectangle.svg-BR-QAok8.js → basic-shape-primary-square-rectangle.svg-Bkzr23_8.js} +1 -1
  69. package/web/assets/{basic-shape-shield.svg-CmwxzzxD.js → basic-shape-shield.svg-C3H6eT_i.js} +1 -1
  70. package/web/assets/{browser-Dj-lNKWY.js → browser-C1dU95Eq.js} +1 -1
  71. package/web/assets/{browser-7cY4kFlm.js → browser-JZPiFr6p.js} +1 -1
  72. package/web/assets/{card-DAI9OTkc.js → card-Carw-Smf.js} +1 -1
  73. package/web/assets/{checkbox-Ct1yef0N.js → checkbox-SY6iZYJT.js} +1 -1
  74. package/web/assets/{chip-B9m8EUV4.js → chip-jKPsBaDG.js} +1 -1
  75. package/web/assets/{client-DULNwlfi.js → client-CrX3je4X.js} +1 -1
  76. package/web/assets/{cloud-chat.store-BufYJj6k.js → cloud-chat.store-Cv-pkXPK.js} +1 -1
  77. package/web/assets/cloud-client-D01e8Pib.js +1 -0
  78. package/web/assets/{cloud-session-DZ1APEU5.js → cloud-session-CY8qNDWs.js} +2 -2
  79. package/web/assets/cloud-session-DHJ2Dn0_.js +1 -0
  80. package/web/assets/{column-D9bX7M3H.js → column-Du74odg_.js} +1 -1
  81. package/web/assets/composables-CAPumxhl.js +1 -0
  82. package/web/assets/{computer-device-desktop-monitor.svg-kHhZDrn4.js → computer-device-desktop-monitor.svg-CKfHZCAn.js} +1 -1
  83. package/web/assets/{computer-device-desktop.svg-CJqmzT8S.js → computer-device-desktop.svg-FokfiMmI.js} +1 -1
  84. package/web/assets/{computer-device-laptop.svg-DVR2dE1I.js → computer-device-laptop.svg-u5TTufiX.js} +1 -1
  85. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-CEgkg7iO.js → computer-device-mobile-phone-android-samsung-back.svg-D-4JYDXb.js} +1 -1
  86. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-BNd9H2xb.js → computer-device-mobile-phone-android-samsung.svg-CZGGF9sY.js} +1 -1
  87. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-C34x7LFE.js → computer-device-mobile-phone-iphone-x-back.svg-DA78gxI_.js} +1 -1
  88. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-58jbIuoG.js → computer-device-mobile-phone-iphone-x.svg-B4MANHvY.js} +1 -1
  89. package/web/assets/{computer-device-mobile-tablet-touch.svg-Do-wo3C-.js → computer-device-mobile-tablet-touch.svg-C8TQMpJm.js} +1 -1
  90. package/web/assets/{computer-device-mobile-tablet.svg-k9649lm5.js → computer-device-mobile-tablet.svg-BwWJUi6h.js} +1 -1
  91. package/web/assets/{computer-device-network-ethernet-cat6.svg-CHhUrJbo.js → computer-device-network-ethernet-cat6.svg-BbuOLgRf.js} +1 -1
  92. package/web/assets/{computer-device-network-lan-www.svg-CtPwhVZ6.js → computer-device-network-lan-www.svg-Bus_xZ3r.js} +1 -1
  93. package/web/assets/{computer-device-network-wifi-connection.svg-kx5mccFk.js → computer-device-network-wifi-connection.svg-D93e73Wq.js} +1 -1
  94. package/web/assets/{computer-device-network-wifi-router.svg-sZs7A8Cr.js → computer-device-network-wifi-router.svg-6qPxKjkZ.js} +1 -1
  95. package/web/assets/{cssMode-B6unnb3U.js → cssMode-BA6ryPYU.js} +1 -1
  96. package/web/assets/{divider-BnMFAEx6.js → divider-Nf1cI936.js} +1 -1
  97. package/web/assets/{docx-preview-HgFKCX0F.js → docx-preview-Beq_uoGc.js} +1 -1
  98. package/web/assets/{ecology-science-erlenmeyer-flask.svg-DOKj5_k1.js → ecology-science-erlenmeyer-flask.svg-D60hNAZ7.js} +1 -1
  99. package/web/assets/{fieldset-DZnEgPOU.js → fieldset-BO8ymcQg.js} +1 -1
  100. package/web/assets/{freemarker2-Bv0s6UQe.js → freemarker2-u4uWoBOZ.js} +1 -1
  101. package/web/assets/{handlebars-BTsC4Lqd.js → handlebars-Crco_whq.js} +1 -1
  102. package/web/assets/{html-BARKi29y.js → html-krzCI2Gx.js} +1 -1
  103. package/web/assets/{htmlMode-fK2j6Ha8.js → htmlMode-C9vDwT8E.js} +1 -1
  104. package/web/assets/{image-flash-lightning.svg-CTaB0hJv.js → image-flash-lightning.svg-B4xlEwgS.js} +1 -1
  105. package/web/assets/{image-picture-flower.svg-M6Q_XtAy.js → image-picture-flower.svg-DXs_C4Eb.js} +1 -1
  106. package/web/assets/{index-DKmDGo1r.js → index-0Vd4ITAj.js} +198 -198
  107. package/web/assets/{interface-alert-exclamation-diamond.svg-DPTfDSD9.js → interface-alert-exclamation-diamond.svg-CQmiBFHu.js} +1 -1
  108. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-AWUdZifI.js → interface-alert-exclamation-triangle-warning.svg-Ddp3S5kR.js} +1 -1
  109. package/web/assets/{interface-alert-information-circle.svg-BtYZm3zK.js → interface-alert-information-circle.svg-CXZRx_eH.js} +1 -1
  110. package/web/assets/{interface-award-crown.svg-DXu8zQAy.js → interface-award-crown.svg-BLjchqiv.js} +1 -1
  111. package/web/assets/{interface-bookmark.svg-BVozfFi5.js → interface-bookmark-tag.svg-DykA4zk6.js} +1 -1
  112. package/web/assets/{interface-bookmark-tag.svg-DEcpMXap.js → interface-bookmark.svg-BZXXPgVb.js} +1 -1
  113. package/web/assets/{interface-calendar-date-one.svg-B3qaR9M3.js → interface-calendar-date-one.svg-DY5zquNe.js} +1 -1
  114. package/web/assets/{interface-content-book-open-pages.svg-DKEf3Z55.js → interface-content-book-open-pages.svg-BkhdueSK.js} +1 -1
  115. package/web/assets/{interface-content-book-page.svg-D6molfdo.js → interface-content-book-page.svg-Do2xq5cr.js} +1 -1
  116. package/web/assets/{interface-content-file.svg-CA0q-5Sl.js → interface-content-file.svg-D-T9Y5v-.js} +1 -1
  117. package/web/assets/{interface-content-folder.svg-BztjfhZi.js → interface-content-folder.svg-C7Xt4Hhi.js} +1 -1
  118. package/web/assets/interface-content-folder.svg-D8Pl9Ud7.js +1 -0
  119. package/web/assets/{interface-copy-clipboard.svg-2_fmAnNV.js → interface-copy-clipboard.svg-CNChmFeI.js} +1 -1
  120. package/web/assets/{interface-edit-attachment.svg-Cb_upeaG.js → interface-edit-attachment.svg-BPFnKeJn.js} +1 -1
  121. package/web/assets/{interface-edit-binocular.svg-CCEAT7W8.js → interface-edit-binocular.svg-B15WWlwm.js} +1 -1
  122. package/web/assets/{interface-edit-magic-wand.svg-BeJ11Pji.js → interface-edit-magic-wand.svg-BOlpxpIl.js} +1 -1
  123. package/web/assets/{interface-edit-tool-paint-roller.svg-BGiy8YPn.js → interface-edit-tool-paint-roller.svg-BAYfPrFg.js} +1 -1
  124. package/web/assets/{interface-edit-tool-pencil.svg-BOMoeGAt.js → interface-edit-tool-pencil.svg-BM5bmeTs.js} +1 -1
  125. package/web/assets/{interface-favorite-award.svg-qHoFebiY.js → interface-favorite-award.svg-C2y2AP20.js} +1 -1
  126. package/web/assets/{interface-favorite-flag.svg-D9gpkTJz.js → interface-favorite-flag.svg-XykDhXhn.js} +1 -1
  127. package/web/assets/{interface-favorite-heart.svg-COMUv1Uh.js → interface-favorite-heart.svg-CZPb5io9.js} +1 -1
  128. package/web/assets/{interface-favorite-star.svg-BsK5YVEB.js → interface-favorite-star.svg-DpNTOpjf.js} +1 -1
  129. package/web/assets/{interface-favorite-stars-sparkles.svg-DevgE082.js → interface-favorite-stars-sparkles.svg-7cCHSGs4.js} +1 -1
  130. package/web/assets/{interface-hierarchy-flowchart.svg-C1dfAizc.js → interface-hierarchy-flowchart.svg-BjDJwof2.js} +1 -1
  131. package/web/assets/{interface-home-house.svg-LAWGxZwm.js → interface-home-house.svg-PIM3QWnr.js} +1 -1
  132. package/web/assets/{interface-hyperlink.svg-DKfSIKhS.js → interface-hyperlink.svg-DGiT9LRd.js} +1 -1
  133. package/web/assets/{interface-lighting-brightness.svg-CvWZXBko.js → interface-lighting-brightness.svg-MFs_QAAQ.js} +1 -1
  134. package/web/assets/{interface-lock-closed.svg-DUT5D0je.js → interface-lock-closed.svg-CjFqOV9n.js} +1 -1
  135. package/web/assets/{interface-lock-open-unlock.svg-Cw8kzQQh.js → interface-lock-open-unlock.svg-DTgPXrba.js} +1 -1
  136. package/web/assets/{interface-login-key.svg-Bkp-rHPU.js → interface-login-key.svg-8cDLtR8c.js} +1 -1
  137. package/web/assets/{interface-search.svg-hG5ogu9p.js → interface-search.svg-SJaqfmP-.js} +1 -1
  138. package/web/assets/{interface-setting-cog.svg-BcPVq1LR.js → interface-setting-cog.svg-CYAoV6-k.js} +1 -1
  139. package/web/assets/{interface-share-megaphone-bullhorn.svg-M4niyPv3.js → interface-share-megaphone-bullhorn.svg-C6C8KuHc.js} +1 -1
  140. package/web/assets/{interface-share-rocket.svg-BcPOpoTR.js → interface-share-rocket.svg-BgqOKppb.js} +1 -1
  141. package/web/assets/{interface-share-satellite.svg-x1KDlm6g.js → interface-share-satellite.svg-BhfjDwyA.js} +1 -1
  142. package/web/assets/{interface-share-space-ship.svg-BfNSdNDO.js → interface-share-space-ship.svg-BUapB87z.js} +1 -1
  143. package/web/assets/{interface-share.svg-C97BmuMY.js → interface-share.svg-CwPC5e-3.js} +1 -1
  144. package/web/assets/{interface-signal-square.svg-DWd44JJH.js → interface-signal-square.svg-BvC7799s.js} +1 -1
  145. package/web/assets/{interface-time-clock-circle.svg-DlY-_Hwt.js → interface-time-clock-circle.svg-DYKRANoG.js} +1 -1
  146. package/web/assets/{interface-time-hour-glass.svg-C2a691O4.js → interface-time-hour-glass.svg-AYkRiFe-.js} +1 -1
  147. package/web/assets/{interface-users-multiple.svg-gNDhDRlp.js → interface-users-multiple.svg-BXFBhgsj.js} +1 -1
  148. package/web/assets/{interface-weather-moon.svg-D7eISmrq.js → interface-weather-moon.svg-ZozvgB_v.js} +1 -1
  149. package/web/assets/{javascript-8VolDNmb.js → javascript-CTdiuLav.js} +1 -1
  150. package/web/assets/{jsonMode-D6awqTaJ.js → jsonMode-CLF3YN6s.js} +1 -1
  151. package/web/assets/{liquid-TTMHEa9a.js → liquid-CUugxlF_.js} +1 -1
  152. package/web/assets/{lspLanguageFeatures-UVF6GLcv.js → lspLanguageFeatures-yWNYHr_2.js} +1 -1
  153. package/web/assets/{mail-chat-bubble-square.svg-DjreUXqw.js → mail-chat-bubble-square.svg-BG2z_u4M.js} +1 -1
  154. package/web/assets/{mail-send-email-paper-airplane.svg-BcyYVqIq.js → mail-send-email-paper-airplane.svg-CUQDu7ep.js} +1 -1
  155. package/web/assets/{mail-send-envelope.svg-BGg0186G.js → mail-send-envelope.svg-pk8Xd68w.js} +1 -1
  156. package/web/assets/{mdx-CoSOx_u6.js → mdx-BE-R90za.js} +1 -1
  157. package/web/assets/{minus-DKbcHNVU.js → minus-DXcyjEvM.js} +1 -1
  158. package/web/assets/modal-DDtmE9ls.js +1 -0
  159. package/web/assets/{modal-DziAnw0E.js → modal-DEXm8R-m.js} +1 -1
  160. package/web/assets/{money-cashier-receipt.svg-xin2Q2jV.js → money-cashier-receipt.svg-CN9CzrqX.js} +1 -1
  161. package/web/assets/{money-currency-dollar-pay.svg-CuVghNG0.js → money-currency-dollar-pay.svg-BUjSCFrb.js} +1 -1
  162. package/web/assets/{money-graph-arrow-increase.svg-CW-ESaRb.js → money-graph-arrow-increase.svg-B_90Bmbk.js} +1 -1
  163. package/web/assets/{money-graph-bar-chart-increase.svg-Ds63Ij9u.js → money-graph-bar-chart-increase.svg-DEHprvsR.js} +1 -1
  164. package/web/assets/{multiselect-EBj2jpFx.js → multiselect-DHN-4dF5.js} +1 -1
  165. package/web/assets/{nature-ecology-leaf.svg-CROyMuJ6.js → nature-ecology-leaf.svg-VzV83bka.js} +1 -1
  166. package/web/assets/{password-M6cvez26.js → password-Cn-GHrdR.js} +1 -1
  167. package/web/assets/{phone-telephone.svg-ldFh2DtT.js → phone-telephone.svg-B7K0iTF5.js} +1 -1
  168. package/web/assets/{plus-B-HO9RRD.js → plus-BavJPboa.js} +1 -1
  169. package/web/assets/process.store-BHtXNXJN.js +1 -0
  170. package/web/assets/{programming-bug.svg-Bi-5bVtZ.js → programming-bug.svg-BQArvDEk.js} +1 -1
  171. package/web/assets/{programming-cloud.svg-BfsVdIyf.js → programming-cloud.svg-Diup3d6q.js} +1 -1
  172. package/web/assets/{programming-computer-database-server.svg-CGxQu1SC.js → programming-computer-database-server.svg-Cry9WzIl.js} +1 -1
  173. package/web/assets/{programming-computer-database.svg-B5TrOmSA.js → programming-computer-database.svg-B2DIP4pU.js} +1 -1
  174. package/web/assets/{programming-module-four-layout.svg-CX306feB.js → programming-module-four-layout.svg-BGnmF15h.js} +1 -1
  175. package/web/assets/{programming-module-three.svg-fIUP0jIs.js → programming-module-three.svg-Dlx8NKbv.js} +1 -1
  176. package/web/assets/{programming-module.svg-BaFMsOL8.js → programming-module.svg-1TSwsWTr.js} +1 -1
  177. package/web/assets/{programming-script-code.svg-asPax4Jv.js → programming-script-code.svg-DpNHCOrR.js} +1 -1
  178. package/web/assets/project-launch.store-MjBfxlB3.js +1 -0
  179. package/web/assets/project.store-4LkhN_Kf.js +1 -0
  180. package/web/assets/{python-B2HQyLbu.js → python-BfgnQ0Q-.js} +1 -1
  181. package/web/assets/{radiobutton-E9JzQOQ_.js → radiobutton-1vkC7CQy.js} +1 -1
  182. package/web/assets/{razor-chfLPaZ5.js → razor-a5t1Ro53.js} +1 -1
  183. package/web/assets/router-D2CFZuT6.js +1 -0
  184. package/web/assets/{selectbutton-BSfIGLAd.js → selectbutton-DSr_ExzW.js} +1 -1
  185. package/web/assets/settings-scope-Bfve93ym.js +1 -0
  186. package/web/assets/{settings.store-DdANKt-l.js → settings.store-BBQfvtZb.js} +1 -1
  187. package/web/assets/shared-sse-DiiJHjvL.js +1 -0
  188. package/web/assets/{shopping-cart.svg-CE-hccE4.js → shopping-cart.svg-16zfxHII.js} +1 -1
  189. package/web/assets/{shopping-gift-present.svg-DcDsxpbS.js → shopping-gift-present.svg-DEDgwlxd.js} +1 -1
  190. package/web/assets/{shopping-shipping-box-parcel-package.svg-B-Hce7Vg.js → shopping-shipping-box-parcel-package.svg-CBOsBi-s.js} +1 -1
  191. package/web/assets/{src-CDO5h8Fg.js → src-B_TK9M1Z.js} +1 -1
  192. package/web/assets/src-DXLPQX5t.css +1 -0
  193. package/web/assets/{src-BCom7Av8.js → src-wb0MqCTT.js} +29 -29
  194. package/web/assets/{tabpanel-opi-GyXj.js → tabpanel-CqAq0gJE.js} +1 -1
  195. package/web/assets/{tag-new-circle.svg-CAAIvApW.js → tag-new-circle.svg-DN5XPkdR.js} +1 -1
  196. package/web/assets/theme-BRinmkRN.js +1 -0
  197. package/web/assets/{toggleswitch-CXZN5FrU.js → toggleswitch-Cr9zROI7.js} +1 -1
  198. package/web/assets/{travel-map-earth-globe.svg-_I9aKmKu.js → travel-map-earth-globe.svg-CN8908SS.js} +1 -1
  199. package/web/assets/trpc-CGXr2as5.js +1 -0
  200. package/web/assets/{tsMode-Cis8_e0R.js → tsMode-D8tqTb6Z.js} +1 -1
  201. package/web/assets/{typescript-DwoucjlL.js → typescript-C2tUdKLU.js} +1 -1
  202. package/web/assets/useAiChatDrawer-1cmqYfrd.js +1 -0
  203. package/web/assets/{useCloudOrg-DSETGvJK.js → useCloudOrg-C1-UCQOV.js} +1 -1
  204. package/web/assets/{useEnvVarAutocomplete-SpekLSMv.js → useEnvVarAutocomplete-5sTKensF.js} +1 -1
  205. package/web/assets/{useProjectCatalog-DDZXnSWD.js → useProjectCatalog-Dj4rYNAZ.js} +1 -1
  206. package/web/assets/{useProjectCloudOrg-Dg9jETJH.js → useProjectCloudOrg-B1KHG4Co.js} +1 -1
  207. package/web/assets/{useServiceUrlHost-BhfsTBGb.js → useServiceUrlHost-CDiftJ5-.js} +1 -1
  208. package/web/assets/{xml-D6t1pRy0.js → xml-09bhQ5hy.js} +1 -1
  209. package/web/assets/{yaml-DAzbEAMy.js → yaml-DE2l2UeT.js} +1 -1
  210. package/web/index.html +1 -1
  211. package/agent-manager-GFRVUJSI.js +0 -10
  212. package/chunk-7GBSCYXU.js.map +0 -1
  213. package/chunk-B7MABGQN.js.map +0 -1
  214. package/chunk-J2L6VONF.js.map +0 -1
  215. package/chunk-RDE3X3J4.js.map +0 -1
  216. package/src-BNWVTXCY.js.map +0 -1
  217. package/web/assets/AiChatPage-COFvhaB5.js +0 -1
  218. package/web/assets/CloudAccountPage-ClH4A4t9.js +0 -1
  219. package/web/assets/KanbanBoardPage-6I4n9kDT.css +0 -1
  220. package/web/assets/KanbanBoardPage-DOvBivfv.js +0 -4
  221. package/web/assets/KanbanListPage-D3xdMHNk.js +0 -1
  222. package/web/assets/KanbanListPage-DgHde06E.css +0 -1
  223. package/web/assets/WikiPage-BZVFtjfs.js +0 -1
  224. package/web/assets/cloud-client-DH0epluZ.js +0 -1
  225. package/web/assets/cloud-session-BBqRYcsm.js +0 -1
  226. package/web/assets/composables-DtqhVWR-.js +0 -1
  227. package/web/assets/interface-content-folder.svg-DcL7Y965.js +0 -1
  228. package/web/assets/modal-C44iufem.js +0 -1
  229. package/web/assets/process.store-BLYbO6Uf.js +0 -1
  230. package/web/assets/project-launch.store-cRctADnj.js +0 -1
  231. package/web/assets/project.store-BIHP84Mj.js +0 -1
  232. package/web/assets/router-CgLDvz4F.js +0 -1
  233. package/web/assets/settings-scope-E-kRs7p5.js +0 -1
  234. package/web/assets/shared-sse-DUHeXaFO.js +0 -1
  235. package/web/assets/src-DkRsN6ug.css +0 -1
  236. package/web/assets/theme-7Rf1Y25Z.js +0 -1
  237. package/web/assets/trpc-D26KI2Tc.js +0 -1
  238. package/web/assets/useAiChatDrawer-DMkDsZjG.js +0 -1
  239. /package/{agent-manager-GFRVUJSI.js.map → agent-manager-J75NZ6MN.js.map} +0 -0
  240. /package/{chat-6ETYBINN.js.map → chat-ICUWJZEX.js.map} +0 -0
  241. /package/{chunk-TTJNHZ6U.js.map → chunk-24UJRQRM.js.map} +0 -0
  242. /package/{chunk-K2KSZRSI.js.map → chunk-PVLDFBL6.js.map} +0 -0
  243. /package/{companion-SH4HLD6G.js.map → companion-IYK2652T.js.map} +0 -0
  244. /package/{desktop-launcher-7UZF7PFH.js.map → desktop-launcher-GHCALSOS.js.map} +0 -0
  245. /package/{node-ILM6MV56.js.map → node-JU7A5NDT.js.map} +0 -0
  246. /package/{settings-manager-XD6U4QN3.js.map → settings-manager-3G5RHW3X.js.map} +0 -0
@@ -142,6 +142,31 @@ async function isCliAvailable(cli, timeoutMs = 5e3) {
142
142
  });
143
143
  }
144
144
 
145
+ // ../../packages/shared/src/node/aes-gcm.ts
146
+ import { randomBytes, createCipheriv, createDecipheriv } from "crypto";
147
+ var ALGORITHM = "aes-256-gcm";
148
+ function encryptValueWith(key, plaintext) {
149
+ const iv = randomBytes(16);
150
+ const cipher = createCipheriv(ALGORITHM, key, iv);
151
+ let enc = cipher.update(plaintext, "utf-8", "hex");
152
+ enc += cipher.final("hex");
153
+ const authTag = cipher.getAuthTag().toString("hex");
154
+ return `${iv.toString("hex")}:${authTag}:${enc}`;
155
+ }
156
+ function decryptValueWith(key, encrypted) {
157
+ const parts = encrypted.split(":");
158
+ if (parts.length !== 3) throw new Error("Invalid encrypted value format \u2014 expected iv:authTag:ciphertext");
159
+ const [ivHex, authTagHex, ciphertext] = parts;
160
+ if (!/^[0-9a-f]+$/i.test(ivHex) || !/^[0-9a-f]+$/i.test(authTagHex) || ciphertext !== "" && !/^[0-9a-f]+$/i.test(ciphertext)) {
161
+ throw new Error("Invalid hex in encrypted value \u2014 possible data corruption");
162
+ }
163
+ const decipher = createDecipheriv(ALGORITHM, key, Buffer.from(ivHex, "hex"), { authTagLength: 16 });
164
+ decipher.setAuthTag(Buffer.from(authTagHex, "hex"));
165
+ let dec = decipher.update(ciphertext, "hex", "utf-8");
166
+ dec += decipher.final("utf-8");
167
+ return dec;
168
+ }
169
+
145
170
  export {
146
171
  ensureNodeBinOnPath,
147
172
  appendToPath,
@@ -150,6 +175,8 @@ export {
150
175
  stampConsole,
151
176
  resolveCliInvocation,
152
177
  whichCommand,
153
- isCliAvailable
178
+ isCliAvailable,
179
+ encryptValueWith,
180
+ decryptValueWith
154
181
  };
155
- //# sourceMappingURL=chunk-B7MABGQN.js.map
182
+ //# sourceMappingURL=chunk-4RMM2OUU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../packages/shared/src/node/node-path.ts","../../../packages/shared/src/node/user-path.ts","../../../packages/shared/src/node/log-timestamps.ts","../../../packages/shared/src/node/cli-invocation.ts","../../../packages/shared/src/node/aes-gcm.ts"],"sourcesContent":["import { dirname, delimiter } from 'node:path';\n\n/**\n * Garantit que le répertoire du binaire Node est dans le `PATH` des services.\n *\n * Un raccourci de bureau n'hérite pas du `PATH` d'un shell de connexion : il\n * reçoit celui de la session graphique, où les gestionnaires de version (n, nvm,\n * fnm, volta, brew) ne figurent pas. Node, lui, est lancé par chemin absolu et\n * démarre très bien — mais `npm`, `npx`, `yarn` et `corepack`, qui vivent à côté\n * de lui, deviennent introuvables. Un service échoue alors sur un message qui ne\n * dit rien de sa cause : « cannot find package manager binary ».\n *\n * Le répertoire est ajouté en QUEUE : ce que la machine a déjà choisi de mettre\n * devant garde la main, et un `PATH` déjà complet ne change pas.\n */\nexport function ensureNodeBinOnPath(environment: NodeJS.ProcessEnv = process.env): void {\n appendToPath(dirname(process.execPath), environment);\n}\n\n/**\n * Ajoute un répertoire en queue du `PATH`, sans doublon ni séparateur vide.\n */\nexport function appendToPath(dir: string, environment: NodeJS.ProcessEnv = process.env): void {\n if (!dir) return;\n const current = environment['PATH'] ?? '';\n const entries = current.split(delimiter).filter(Boolean);\n if (entries.includes(dir)) return;\n environment['PATH'] = entries.length > 0 ? `${current}${delimiter}${dir}` : dir;\n}\n","import { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\nimport { homedir } from 'node:os';\nimport { existsSync, statSync } from 'node:fs';\nimport { join, delimiter } from 'node:path';\nimport { appendToPath } from './node-path.js';\n\nconst execFileAsync = promisify(execFile);\n\n/**\n * Marqueur : un `.zshrc` interactif écrit volontiers sur stdout (bannières,\n * gestionnaires de version, `motd`). Sans balise, on ne sait pas quelle ligne\n * est le `PATH`.\n */\nconst MARKER = '__RUNEYA_PATH__';\n\n/** Le profil de l'utilisateur peut être long à charger — mais pas éternel. */\nconst SHELL_TIMEOUT_MS = 3000;\n\n/**\n * Emplacements où un CLI utilisateur s'installe sans passer par le système.\n * Filet de sécurité quand le shell de connexion n'a rien donné : on ne devine\n * pas les gestionnaires de version (chemins versionnés), seulement le banal.\n */\nfunction commonUserBins(home: string): string[] {\n return [\n join(home, '.local', 'bin'),\n join(home, 'bin'),\n join(home, '.npm-global', 'bin'),\n join(home, '.bun', 'bin'),\n join(home, '.cargo', 'bin'),\n '/opt/homebrew/bin',\n '/usr/local/bin',\n ];\n}\n\n/**\n * Demande son `PATH` au shell de connexion de l'utilisateur.\n *\n * Un raccourci de bureau reçoit le `PATH` de la session graphique, pas celui du\n * shell : `~/.local/bin`, nvm, fnm, volta, mise, asdf… n'y figurent pas. Le CLI\n * installé par l'utilisateur devient alors introuvable, et l'agent le déclare\n * simplement « non disponible ».\n *\n * Renvoie `null` en cas d'échec (Windows, pas de `SHELL`, timeout, profil qui\n * plante) : l'absence de réponse ne doit jamais empêcher l'agent de démarrer.\n */\nexport async function readLoginShellPath(): Promise<string | null> {\n if (process.platform === 'win32') return null;\n\n const shell = process.env['SHELL'];\n if (!shell || !existsSync(shell)) return null;\n\n try {\n // `-l -i` : le `PATH` d'un utilisateur vit aussi bien dans le profil de\n // connexion que dans le fichier interactif (`.zshrc`, `.bashrc`).\n // `shell: false` : le shell EST le programme lancé, pas l'interpréteur.\n const { stdout } = await execFileAsync(shell, ['-l', '-i', '-c', `echo \"${MARKER}$PATH\"`], {\n timeout: SHELL_TIMEOUT_MS,\n shell: false,\n encoding: 'utf8',\n maxBuffer: 1024 * 1024,\n env: { ...process.env, TERM: 'dumb' },\n });\n\n const line = stdout.split('\\n').find(l => l.includes(MARKER));\n if (!line) return null;\n\n const value = line.slice(line.indexOf(MARKER) + MARKER.length).trim();\n return value.length > 0 ? value : null;\n } catch {\n return null;\n }\n}\n\n/**\n * Complète le `PATH` de l'agent avec ce que le shell de connexion connaît, puis\n * avec les emplacements utilisateur usuels qui existent réellement sur disque.\n *\n * Tout est ajouté EN QUEUE, comme pour Node : ce que la machine a déjà mis\n * devant garde la main, et un `PATH` déjà complet ne change pas.\n */\nexport async function ensureUserBinsOnPath(\n environment: NodeJS.ProcessEnv = process.env,\n home: string = homedir(),\n): Promise<void> {\n const shellPath = await readLoginShellPath();\n if (shellPath) {\n for (const entry of shellPath.split(delimiter).filter(Boolean)) {\n appendToPath(entry, environment);\n }\n }\n\n for (const dir of commonUserBins(home)) {\n if (isDirectory(dir)) appendToPath(dir, environment);\n }\n}\n\nfunction isDirectory(path: string): boolean {\n try {\n return statSync(path).isDirectory();\n } catch {\n return false;\n }\n}\n","/**\n * Horodate ce que le process écrit sur la console, en temps écoulé depuis son\n * démarrage.\n *\n * Les 300 et quelques appels à `console.log` du serveur, de l'agent et du CLI\n * n'ont pas à être réécrits : on enveloppe `console` une fois, au démarrage, et\n * tout ce qui passe par lui est daté — jusqu'aux bibliothèques tierces.\n *\n * Le delta plutôt que l'heure : ces journaux servent surtout à comprendre ce qui\n * prend du temps au sein d'un même lancement, et « +1.204s » se lit sans\n * soustraction mentale. L'heure absolue reste disponible dans le journal\n * d'audit, qui, lui, sert à recouper avec le cloud.\n */\n\n/**\n * Une ligne qui ne dit rien à dater : une ligne vide, ou un morceau d'encadré.\n *\n * La bannière de démarrage est dessinée ligne à ligne ; un horodatage devant\n * chacune casse l'alignement des colonnes et n'apprend rien — elles sont toutes\n * écrites dans la même milliseconde.\n */\nfunction isDecorative(args: unknown[]): boolean {\n if (args.length === 0) return true;\n const first = args[0];\n if (typeof first !== 'string') return false;\n const trimmed = first.trim();\n return trimmed === '' || /^[┌│└├┬┴┼─┐┘┤]/.test(trimmed);\n}\n\nconst LEVELS = ['log', 'info', 'warn', 'error', 'debug'] as const;\n\n/** Le temps écoulé, cadré pour que les lignes s'alignent en colonne. */\nfunction formatElapsed(startedAt: number, now: number): string {\n const seconds = (now - startedAt) / 1000;\n return `+${seconds.toFixed(3)}s`.padStart(10);\n}\n\n/**\n * Enveloppe `console`. Rend une fonction qui remet l'original en place — les\n * tests en ont besoin, et un mode dont la sortie est lue par un script aussi.\n *\n * Appelé deux fois, le second appel ne fait rien : sans cette garde, deux\n * horodatages se cumuleraient sur chaque ligne.\n */\nexport function stampConsole(startedAt: number = Date.now()): () => void {\n const target = console as unknown as Record<string, unknown> & { __runeyaStamped?: boolean };\n if (target.__runeyaStamped) return () => {};\n target.__runeyaStamped = true;\n\n const originals = LEVELS.map((level) => {\n const original = console[level].bind(console);\n console[level] = (...args: unknown[]) => (\n isDecorative(args)\n ? original(...args)\n : original(formatElapsed(startedAt, Date.now()), ...args)\n );\n return [level, original] as const;\n });\n\n return () => {\n for (const [level, original] of originals) console[level] = original;\n target.__runeyaStamped = false;\n };\n}\n","import { execFile, execFileSync } from 'node:child_process';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { dirname, resolve as resolvePath } from 'node:path';\n\nexport interface CliInvocation {\n command: string;\n args: string[];\n}\n\n/**\n * Comment lancer un CLI global (`claude`, `codex`) sur la plateforme courante.\n *\n * Windows : un CLI installé globalement par npm n'est pas un `.exe` mais un\n * shim `claude.cmd`. Ni `child_process.spawn(..., { shell: false })` ni\n * `pty.spawn()` ne savent le lancer — node-pty échoue sur « File not found:\n * claude ». Passer par `cmd.exe /c` fonctionnerait mais abîme les arguments\n * (le prompt système contient guillemets, retours à la ligne et `%`), donc on\n * résout le point d'entrée JS visé par le shim et on le lance avec le `node`\n * courant.\n *\n * Sur POSIX la commande est rendue telle quelle : rien ne change pour Linux\n * ni macOS.\n */\nexport function resolveCliInvocation(cli: string, args: string[] = []): CliInvocation {\n if (process.platform !== 'win32') return { command: cli, args };\n if (/\\.exe$/i.test(cli)) return { command: cli, args };\n\n // 1. Localiser le shim sur le PATH (sauf si un chemin explicite est donné).\n let shim = cli;\n if (!cli.includes('\\\\') && !cli.includes('/')) {\n let found: string[] = [];\n try {\n // Borné : un `where` qui ne rend pas la main figerait le process appelant,\n // puisque la résolution est synchrone.\n found = execFileSync('where', [cli], { encoding: 'utf-8', timeout: 5_000, windowsHide: true })\n .split(/\\r?\\n/).map((l) => l.trim()).filter(Boolean);\n } catch { /* absent du PATH — laisser le spawn échouer avec son propre message */ }\n const exe = found.find((f) => /\\.exe$/i.test(f));\n if (exe) return { command: exe, args };\n shim = found.find((f) => /\\.cmd$/i.test(f)) ?? found[0] ?? cli;\n }\n if (/\\.exe$/i.test(shim)) return { command: shim, args };\n\n // 2. Extraire le point d'entrée `.js` du shim npm et le lancer avec node.\n if (/\\.cmd$/i.test(shim) && existsSync(shim)) {\n try {\n const content = readFileSync(shim, 'utf-8');\n // Les shims npm écrivent « %~dp0\\...\\cli.js » ; certains outils écrivent\n // « %~dp0%\\...\\cli.js ». Les deux formes mènent au même point d'entrée.\n const m = content.match(/%~?dp0%?\\\\?([^\"\\s]+\\.js)/i);\n if (m?.[1]) {\n const entry = resolvePath(dirname(shim), m[1].replace(/^\\\\+/, ''));\n if (existsSync(entry)) return { command: process.execPath, args: [entry, ...args] };\n }\n } catch { /* on retombe sur l'interpréteur de commandes */ }\n }\n\n // 3. Dernier recours : confier à l'interpréteur de commandes.\n const comspec = process.env['ComSpec'] || process.env['COMSPEC'] || 'cmd.exe';\n return { command: comspec, args: ['/d', '/s', '/c', shim, ...args] };\n}\n\n/**\n * La commande qui dit où vit un exécutable, selon la plateforme.\n *\n * `which` n'existe pas sur Windows ; une détection qui l'appelle y répond\n * toujours « absent », quel que soit l'outil installé.\n */\nexport function whichCommand(): string {\n return process.platform === 'win32' ? 'where' : 'which';\n}\n\n/**\n * `<cli> --version` répond-il ?\n *\n * Le même contrôle vivait côté serveur et côté agent, et les deux lançaient\n * `execFile('claude', …, { shell: false })` : sur Windows, un shim `.cmd` n'est\n * pas lançable ainsi, et la détection répondait « absent » pour un CLI\n * parfaitement installé — l'interface désactivait alors le runner.\n */\nexport async function isCliAvailable(cli: string, timeoutMs = 5_000): Promise<boolean> {\n const { command, args } = resolveCliInvocation(cli, ['--version']);\n return new Promise((resolve) => {\n execFile(command, args, { timeout: timeoutMs, windowsHide: true }, (err) => resolve(!err));\n });\n}\n","import { randomBytes, createCipheriv, createDecipheriv } from 'node:crypto';\n\nconst ALGORITHM = 'aes-256-gcm';\n\n/**\n * Encrypt under a caller-supplied key.\n *\n * The no-key forms in the server read the process keyring, which is the right default\n * everywhere except migration: converting a vault means holding two keys at\n * once, and neither of them is \"the\" current one.\n */\nexport function encryptValueWith(key: Buffer, plaintext: string): string {\n const iv = randomBytes(16);\n const cipher = createCipheriv(ALGORITHM, key, iv);\n let enc = cipher.update(plaintext, 'utf-8', 'hex');\n enc += cipher.final('hex');\n const authTag = cipher.getAuthTag().toString('hex');\n return `${iv.toString('hex')}:${authTag}:${enc}`;\n}\n\n/** Decrypt under a caller-supplied key. Throws when the key does not open it. */\nexport function decryptValueWith(key: Buffer, encrypted: string): string {\n const parts = encrypted.split(':');\n if (parts.length !== 3) throw new Error('Invalid encrypted value format — expected iv:authTag:ciphertext');\n const [ivHex, authTagHex, ciphertext] = parts;\n if (!/^[0-9a-f]+$/i.test(ivHex) || !/^[0-9a-f]+$/i.test(authTagHex) || (ciphertext !== '' && !/^[0-9a-f]+$/i.test(ciphertext))) {\n throw new Error('Invalid hex in encrypted value — possible data corruption');\n }\n const decipher = createDecipheriv(ALGORITHM, key, Buffer.from(ivHex, 'hex'), { authTagLength: 16 });\n decipher.setAuthTag(Buffer.from(authTagHex, 'hex'));\n let dec = decipher.update(ciphertext, 'hex', 'utf-8');\n dec += decipher.final('utf-8');\n return dec;\n}\n"],"mappings":"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","names":["delimiter","delimiter","execFile","existsSync","dirname"]}
@@ -23,7 +23,7 @@ import {
23
23
  serviceStore,
24
24
  setProjectServices,
25
25
  setProjectVault
26
- } from "./chunk-J2L6VONF.js";
26
+ } from "./chunk-3HGTIUGB.js";
27
27
  import {
28
28
  atomicWriteSecure,
29
29
  fingerprintFiles,
@@ -36,7 +36,7 @@ import {
36
36
  COMPANION_RELAY_OPEN,
37
37
  ProjectSchema,
38
38
  extractCompanionRelay
39
- } from "./chunk-7GBSCYXU.js";
39
+ } from "./chunk-WN36W5OW.js";
40
40
  import {
41
41
  allVaultRoots,
42
42
  ensureLocalVault,
@@ -2037,7 +2037,7 @@ async function runCompanionForTurn(conversationId) {
2037
2037
  if (!hasNew) {
2038
2038
  return skip(conversationId, "nothingNew", `rien de neuf \xE0 relire (${messageCount} messages)`);
2039
2039
  }
2040
- const { startCliSession } = await import("./chat-6ETYBINN.js");
2040
+ const { startCliSession } = await import("./chat-ICUWJZEX.js");
2041
2041
  const companionConv = await ensureCompanionConversation(conv);
2042
2042
  const isFirstTurn = (companionConv.messages?.length ?? 0) === 0;
2043
2043
  const exchange = formatExchange(conv.messages, from);
@@ -2152,7 +2152,7 @@ async function deliverToMainConversation(conv, message) {
2152
2152
  async function attemptDelivery(conv, message) {
2153
2153
  if (await writeToLivePty(conv.id, message)) return "pty";
2154
2154
  try {
2155
- const { startCliSession } = await import("./chat-6ETYBINN.js");
2155
+ const { startCliSession } = await import("./chat-ICUWJZEX.js");
2156
2156
  await startCliSession(conv.runner, conv.id, message, { jwt: await signJwt() });
2157
2157
  return "headless";
2158
2158
  } catch (err) {
@@ -2175,7 +2175,7 @@ async function writeToLivePty(conversationId, message) {
2175
2175
  }
2176
2176
  async function companionSettings() {
2177
2177
  try {
2178
- const { settingsManager } = await import("./settings-manager-XD6U4QN3.js");
2178
+ const { settingsManager } = await import("./settings-manager-3G5RHW3X.js");
2179
2179
  const settings = await settingsManager.getSettings();
2180
2180
  return settings.companion ?? { enabledByDefault: false };
2181
2181
  } catch {
@@ -2317,4 +2317,4 @@ export {
2317
2317
  runCompanionNow,
2318
2318
  initCompanion
2319
2319
  };
2320
- //# sourceMappingURL=chunk-K2KSZRSI.js.map
2320
+ //# sourceMappingURL=chunk-PVLDFBL6.js.map
@@ -1,7 +1,6 @@
1
1
  import {
2
- isCliAvailable,
3
- resolveCliInvocation
4
- } from "./chunk-B7MABGQN.js";
2
+ settingsManager
3
+ } from "./chunk-24UJRQRM.js";
5
4
  import {
6
5
  COMPANION_SIGNATURE,
7
6
  activeSessionRegistry,
@@ -31,7 +30,7 @@ import {
31
30
  runCompanionNow,
32
31
  syncConversationFromClaudeTranscript,
33
32
  verifyJwt
34
- } from "./chunk-K2KSZRSI.js";
33
+ } from "./chunk-PVLDFBL6.js";
35
34
  import {
36
35
  StoreDiskCoordinator,
37
36
  agentManager,
@@ -50,10 +49,7 @@ import {
50
49
  recordLocalRemoval,
51
50
  refsOfProjectId,
52
51
  serviceStore
53
- } from "./chunk-J2L6VONF.js";
54
- import {
55
- settingsManager
56
- } from "./chunk-TTJNHZ6U.js";
52
+ } from "./chunk-3HGTIUGB.js";
57
53
  import {
58
54
  atomicWriteJsonSecure,
59
55
  atomicWriteSecure,
@@ -94,7 +90,7 @@ import {
94
90
  serviceUrlValues,
95
91
  urlHostFor,
96
92
  withDeprecatedAliases
97
- } from "./chunk-7GBSCYXU.js";
93
+ } from "./chunk-WN36W5OW.js";
98
94
  import {
99
95
  allVaultRoots,
100
96
  env,
@@ -107,6 +103,10 @@ import {
107
103
  orgVaultRoot,
108
104
  vaultIdOfRoot
109
105
  } from "./chunk-ZFELQG4B.js";
106
+ import {
107
+ isCliAvailable,
108
+ resolveCliInvocation
109
+ } from "./chunk-4RMM2OUU.js";
110
110
 
111
111
  // ../server/src/trpc/routers/chat.ts
112
112
  import { z as z9 } from "zod";
@@ -1686,6 +1686,47 @@ var RUNEYA_CAPABILITIES = [
1686
1686
  ],
1687
1687
  buildInput: (p) => ({ boardId: p.boardId, cardId: p.cardId, comment: p.comment })
1688
1688
  },
1689
+ {
1690
+ name: "kanban_get_card_conversations",
1691
+ description: "Read the customer support conversations (Intercom\u2026) linked to one kanban card: for each, its title, provider, state (open/resolved), link, the opening message and the thread of messages (author name, customer or team, internal note or not, date, text, attached files \u2014 fetch their bytes with kanban_download_attachment), plus the other cards following the same conversation. These messages are NOT comments of the card \u2014 read them here.",
1692
+ route: "kanban.getCardConversations",
1693
+ method: "GET",
1694
+ params: [
1695
+ { name: "boardId", description: "The kanban board ID", required: true },
1696
+ { name: "cardId", description: "The card ID whose conversations to read", required: true },
1697
+ { name: "limit", description: "How many of the most recent messages to return per conversation (1-500). Default: 100.", required: false }
1698
+ ],
1699
+ buildInput: (p) => ({
1700
+ boardId: p.boardId,
1701
+ cardId: p.cardId,
1702
+ ...p.limit ? { limit: Number(p.limit) } : {}
1703
+ }),
1704
+ usageHint: `"regarde la conversation Intercom de la carte" / "qu'a dit le client" \u2192 kanban_get_card_conversations(boardId, cardId).`
1705
+ },
1706
+ {
1707
+ name: "kanban_search_conversations",
1708
+ description: "Search customer support conversations (Intercom\u2026) at the providers connected to the board's organization, by words of the conversation title, or by conversation number or URL. Read-only at the provider. Each result gives connectionId and externalId (needed to link it), title, state, a preview and the cards already following it.",
1709
+ route: "kanban.searchConversations",
1710
+ method: "GET",
1711
+ params: [
1712
+ { name: "boardId", description: "Any kanban board ID of the organization to search in", required: true },
1713
+ { name: "query", description: "Words of the conversation title, a conversation number, or a conversation URL", required: true }
1714
+ ],
1715
+ buildInput: (p) => ({ boardId: p.boardId, query: p.query })
1716
+ },
1717
+ {
1718
+ name: "kanban_link_conversation",
1719
+ description: "Link a customer support conversation found with kanban_search_conversations to a kanban card. Its whole thread is imported and new messages keep arriving on the card. A conversation can be linked to several cards. Nothing is written at the provider.",
1720
+ route: "kanban.linkConversation",
1721
+ method: "POST",
1722
+ params: [
1723
+ { name: "boardId", description: "The kanban board ID of the card", required: true },
1724
+ { name: "cardId", description: "The card to link the conversation to", required: true },
1725
+ { name: "connectionId", description: "The connectionId of the search result", required: true },
1726
+ { name: "externalId", description: "The externalId of the search result", required: true }
1727
+ ],
1728
+ buildInput: (p) => ({ boardId: p.boardId, cardId: p.cardId, connectionId: p.connectionId, externalId: p.externalId })
1729
+ },
1689
1730
  {
1690
1731
  name: "kanban_get_card_links",
1691
1732
  description: "Read the filiation of a board: which card depends on which. Returns one entry per link (child card \u2194 parent card), plus the title, board, column, assignees and comment count of any linked card living on another board. Use it when a card context says it has a parent or sub-cards and you need their ids to read them.",
@@ -4682,7 +4723,19 @@ async function soleAccountScope() {
4682
4723
  throw new TRPCError3({ code: "PRECONDITION_FAILED", message: err.message });
4683
4724
  }
4684
4725
  }
4685
- var PROXY_PREFIXES = ["/organization/", "/project/", "/chat/", "/kanban/", "/user/prefs"];
4726
+ var PROXY_PREFIXES = [
4727
+ "/organization/",
4728
+ "/project/",
4729
+ "/chat/",
4730
+ "/kanban/",
4731
+ "/user/prefs",
4732
+ // Les conversations de support vues depuis une carte (lire, chercher, lier,
4733
+ // synchroniser, délier). Pas la gestion des intégrations (`/integration/create`,
4734
+ // `/integration/list`… — secrets et URL de webhook) : elle reste sur le cloud.
4735
+ "/integration/available",
4736
+ "/integration/card/",
4737
+ "/integration/conversations/search"
4738
+ ];
4686
4739
  function isAllowedProxyPath(path) {
4687
4740
  if (!path.startsWith("/") || path.includes("..")) return false;
4688
4741
  const [pathname] = path.split("?");
@@ -5002,6 +5055,34 @@ var KanbanStore = class {
5002
5055
  );
5003
5056
  return res.data?.history ?? [];
5004
5057
  }
5058
+ /**
5059
+ * Les conversations de support (Intercom…) suivies par une carte, avec leur
5060
+ * fil. Lecture obligatoire : un refus ne doit pas passer pour « aucune ».
5061
+ */
5062
+ async cardConversations(boardId, cardId) {
5063
+ const res = must(await callCloud(
5064
+ `/integration/card/conversations?boardId=${encodeURIComponent(boardId)}&cardId=${encodeURIComponent(cardId)}`,
5065
+ await scopeOfBoard(boardId)
5066
+ ));
5067
+ return res.conversations;
5068
+ }
5069
+ /** Chercher une conversation chez les fournisseurs de l'organisation du tableau (lecture seule). */
5070
+ async searchConversations(boardId, query) {
5071
+ const res = must(await callCloud(
5072
+ `/integration/conversations/search?boardId=${encodeURIComponent(boardId)}&query=${encodeURIComponent(query)}`,
5073
+ await scopeOfBoard(boardId)
5074
+ ));
5075
+ return res.results;
5076
+ }
5077
+ /** Lier une conversation à une carte ; rend les conversations désormais suivies. */
5078
+ async linkConversation(input) {
5079
+ const res = must(await callCloud("/integration/card/link", {
5080
+ method: "POST",
5081
+ body: input,
5082
+ ...await scopeOfBoard(input.boardId)
5083
+ }));
5084
+ return res.conversations;
5085
+ }
5005
5086
  /**
5006
5087
  * Commenter une carte, sans réécrire le tableau.
5007
5088
  *
@@ -5361,6 +5442,8 @@ function generateKanbanSystemPrompt(board, cardId, history, links) {
5361
5442
  lines.push("- `kanban_download_attachment(attachmentId)` \u2014 T\xE9l\xE9charger une pi\xE8ce jointe et obtenir son chemin local");
5362
5443
  lines.push("- `kanban_get_card_links(boardId)` \u2014 Lire la filiation des cartes du tableau (parent \u2194 sous-cartes)");
5363
5444
  lines.push("- `kanban_set_card_parent(boardId, cardId, parentCardId?)` \u2014 Rattacher une carte \xE0 une carte parente, ou l'en d\xE9tacher");
5445
+ 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");
5446
+ 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)");
5364
5447
  lines.push("");
5365
5448
  lines.push("### OBLIGATOIRE \u2014 D\xE9cision Kanban");
5366
5449
  lines.push("");
@@ -5605,7 +5688,7 @@ function tailTranscript(opts) {
5605
5688
 
5606
5689
  // ../server/src/services/ai-runners/claude-pty-runner.ts
5607
5690
  async function getAgentManager() {
5608
- const { agentManager: agentManager2 } = await import("./agent-manager-GFRVUJSI.js");
5691
+ const { agentManager: agentManager2 } = await import("./agent-manager-J75NZ6MN.js");
5609
5692
  return agentManager2;
5610
5693
  }
5611
5694
  function buildPtyArgs(params, sessionId, opts) {
@@ -6297,7 +6380,7 @@ async function shutdownCodexAppServer() {
6297
6380
  }
6298
6381
  }
6299
6382
  async function getAgentManager2() {
6300
- const { agentManager: agentManager2 } = await import("./agent-manager-GFRVUJSI.js");
6383
+ const { agentManager: agentManager2 } = await import("./agent-manager-J75NZ6MN.js");
6301
6384
  return agentManager2;
6302
6385
  }
6303
6386
  function parseRuneyaCurlCommand(command) {
@@ -8343,4 +8426,4 @@ export {
8343
8426
  startCliSession,
8344
8427
  chatRouter
8345
8428
  };
8346
- //# sourceMappingURL=chunk-RDE3X3J4.js.map
8429
+ //# sourceMappingURL=chunk-RLLUJCPQ.js.map