@runeya/runeya 2.0.107 → 2.0.109

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 (353) hide show
  1. package/agent/index.js.map +1 -1
  2. package/agent-manager-APY7SZ75.js +9 -0
  3. package/{chat-O7ZXCCKV.js → chat-L42DO6ND.js} +7 -7
  4. package/{chunk-QRMG6GMX.js → chunk-6T7R2JZR.js} +24 -1
  5. package/{chunk-QRMG6GMX.js.map → chunk-6T7R2JZR.js.map} +1 -1
  6. package/{chunk-ZDHLWTHW.js → chunk-77UQ2UKW.js} +3 -3
  7. package/{chunk-JNI4CXJ7.js → chunk-HJZPLRNL.js} +111 -68
  8. package/chunk-HJZPLRNL.js.map +1 -0
  9. package/{chunk-ELI2TELD.js → chunk-OGCEFBSS.js} +3 -3
  10. package/{chunk-TE57T5GO.js → chunk-OSKZYKSN.js} +7 -7
  11. package/{chunk-J3NAI636.js → chunk-ZFELQG4B.js} +12 -16
  12. package/chunk-ZFELQG4B.js.map +1 -0
  13. package/{companion-NZU7FNID.js → companion-7EFYZNCO.js} +5 -5
  14. package/{desktop-launcher-N7WRF3LC.js → desktop-launcher-Q6J2LSVP.js} +2 -2
  15. package/index.js +4 -4
  16. package/package.json +1 -1
  17. package/settings-manager-MQBUCUIO.js +9 -0
  18. package/{src-MILB2SQA.js → src-SH5RPUNH.js} +187 -28
  19. package/src-SH5RPUNH.js.map +1 -0
  20. package/{vault-resolver-V7KH4FTC.js → vault-resolver-57Q2DVOR.js} +4 -4
  21. package/web/assets/AgentScalarChatInterface.vue-qaU3nHHm.js +13 -0
  22. package/web/assets/AgentTerminalPage-Bg4pvmQC.js +1 -0
  23. package/web/assets/AiChatPage-Bj_UMaA8.js +1 -0
  24. package/web/assets/{AppLayout-DK0hjOjl.css → AppLayout-6LmWDDMH.css} +1 -1
  25. package/web/assets/AppLayout-CCY6mnwP.js +1 -0
  26. package/web/assets/AuditPage-Cp6yZONE.js +1 -0
  27. package/web/assets/CloudAccountPage-BSxAXLF7.js +1 -0
  28. package/web/assets/CloudAccountPage-CfMY69pk.css +1 -0
  29. package/web/assets/CloudAccountPage-DTzGJFGT.js +1 -0
  30. package/web/assets/CloudMessagingPage-B1cPSVn3.js +2 -0
  31. package/web/assets/CloudMessagingPage-BRwxGiH2.css +1 -0
  32. package/web/assets/DashboardPage-DTegXvtf.css +1 -0
  33. package/web/assets/DashboardPage-DaG08KC3.js +164 -0
  34. package/web/assets/DirectoryPickerDialog-DRZg3i24.js +1 -0
  35. package/web/assets/{EditorIcon-DAVCsZGN.js → EditorIcon-CUl1IPtA.js} +2 -2
  36. package/web/assets/EnvironmentForm-C2IKkQwL.js +108 -0
  37. package/web/assets/EnvironmentFormPage-XxSXk54d.js +1 -0
  38. package/web/assets/EnvironmentListPage-CNJCuT_t.js +1 -0
  39. package/web/assets/KanbanBoardPage-CDJ9tEGG.js +4 -0
  40. package/web/assets/KanbanBoardPage-CoTX8nB6.css +1 -0
  41. package/web/assets/KanbanListPage-BSm19l6D.js +1 -0
  42. package/web/assets/LaunchProjectPage-1zl3ZGiA.js +1 -0
  43. package/web/assets/LaunchServicesPage-C7Y-scEf.js +1 -0
  44. package/web/assets/LogViewer-CTDxuo3U.js +3 -0
  45. package/web/assets/OrgKeyPrompt-_ASAKfDv.js +1 -0
  46. package/web/assets/{ProcessControls-BnlYc5oo.js → ProcessControls-ahxc7B1z.js} +1 -1
  47. package/web/assets/ProcessDetailPage-CSWHQP1r.js +1 -0
  48. package/web/assets/{ProcessMetrics-3iA0I20o.js → ProcessMetrics-B_nBUqkV.js} +2 -2
  49. package/web/assets/{RandomJobTestPage-BO3b4l7T.js → RandomJobTestPage-ChumhCVE.js} +1 -1
  50. package/web/assets/ScenarioEditorPage-BA0-Th_S.js +14 -0
  51. package/web/assets/SendToChatDialog-BTqvASzi.js +1 -0
  52. package/web/assets/ServiceControlsBar-B6fc6BtP.js +1 -0
  53. package/web/assets/ServiceDetailPage-BWki4F8y.js +2 -0
  54. package/web/assets/ServiceFormPage-A_tMtPha.js +1 -0
  55. package/web/assets/SettingsPage-CYrhRc9t.js +2063 -0
  56. package/web/assets/UnlockPage-CMPppHPb.js +1 -0
  57. package/web/assets/{VariablesTable-DNNf7eCt.css → VariablesTable-BZb7hcBh.css} +1 -1
  58. package/web/assets/VariablesTable-D3HwVHm7.js +1 -0
  59. package/web/assets/VaultMigrationPage-CAkYThy0.js +1 -0
  60. package/web/assets/VersionBadge-JMYsYI__.js +1 -0
  61. package/web/assets/WikiPage-DMQsnN55.js +1 -0
  62. package/web/assets/WikiView-DT1brFpI.js +1 -0
  63. package/web/assets/add-scalar-classes-DqlxobXk.js +387 -0
  64. package/web/assets/{autocomplete-CsyixLlY.js → autocomplete-DW0fiLh0.js} +3 -3
  65. package/web/assets/{basic-shape-diamond.svg-BbOA3Gz6.js → basic-shape-diamond.svg-CSlrccn0.js} +1 -1
  66. package/web/assets/{basic-shape-hexagon.svg-DdJgnvDo.js → basic-shape-hexagon.svg-D546ruDT.js} +1 -1
  67. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-Bg3fLGGT.js → basic-shape-primary-circle-ellipse-round.svg-C1wzRQtf.js} +1 -1
  68. package/web/assets/{basic-shape-primary-square-rectangle.svg-CESoq0fN.js → basic-shape-primary-square-rectangle.svg-CWGZhIsr.js} +1 -1
  69. package/web/assets/{basic-shape-shield.svg-ElM9Zp2x.js → basic-shape-shield.svg-NhM_gs9v.js} +1 -1
  70. package/web/assets/{browser-CwiIrBV5.js → browser-CgZhj2lb.js} +1 -1
  71. package/web/assets/{browser-MtZH8oRn.js → browser-D3zm8rqv.js} +1 -1
  72. package/web/assets/{card-D8i3Wb9E.js → card-B7q35Vau.js} +2 -2
  73. package/web/assets/{checkbox-DfhW4jIw.js → checkbox-D53PfEW8.js} +3 -3
  74. package/web/assets/{chip-jxWVyF6O.js → chip-DIIyqeB6.js} +2 -2
  75. package/web/assets/client-DH-rHV-I.js +24 -0
  76. package/web/assets/cloud-chat.store-wcKYueBH.js +1 -0
  77. package/web/assets/cloud-client-BvZabjfE.js +1 -0
  78. package/web/assets/cloud-session-68W_giD8.js +2 -0
  79. package/web/assets/cloud-session-Cr1sJAeh.js +1 -0
  80. package/web/assets/column-CipMB2ts.js +907 -0
  81. package/web/assets/{computer-device-desktop-monitor.svg-DJbi1v8s.js → computer-device-desktop-monitor.svg-CU1TH87U.js} +1 -1
  82. package/web/assets/{computer-device-desktop.svg-DJtxrGiU.js → computer-device-desktop.svg-GjG-mCjt.js} +1 -1
  83. package/web/assets/{computer-device-laptop.svg-BxPl4SOy.js → computer-device-laptop.svg-bOXxoV3N.js} +1 -1
  84. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-DZyVWDjs.js → computer-device-mobile-phone-android-samsung-back.svg-BKAQtXBw.js} +1 -1
  85. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-CY2rayd7.js → computer-device-mobile-phone-android-samsung.svg-DuEgqDs0.js} +1 -1
  86. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-wB3dvTWI.js → computer-device-mobile-phone-iphone-x-back.svg-47gd3jF9.js} +1 -1
  87. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-DlRKY5sj.js → computer-device-mobile-phone-iphone-x.svg-CjTyt_7H.js} +1 -1
  88. package/web/assets/{computer-device-mobile-tablet-touch.svg-DfslXQQZ.js → computer-device-mobile-tablet-touch.svg-DhUxcqM-.js} +1 -1
  89. package/web/assets/{computer-device-mobile-tablet.svg-CcURGna7.js → computer-device-mobile-tablet.svg-CrDFKzVZ.js} +1 -1
  90. package/web/assets/{computer-device-network-ethernet-cat6.svg-Dp-TzO2e.js → computer-device-network-ethernet-cat6.svg-Camx7ESr.js} +1 -1
  91. package/web/assets/{computer-device-network-lan-www.svg-BPpSMigg.js → computer-device-network-lan-www.svg-BCTngCj3.js} +1 -1
  92. package/web/assets/{computer-device-network-wifi-connection.svg-CYQyIbfa.js → computer-device-network-wifi-connection.svg-gr2ZwIyG.js} +1 -1
  93. package/web/assets/{computer-device-network-wifi-router.svg-DSAd7WFk.js → computer-device-network-wifi-router.svg-BTTVOR89.js} +1 -1
  94. package/web/assets/{cssMode-COezfEv9.js → cssMode-6O-nyPw0.js} +1 -1
  95. package/web/assets/{divider-DUL-UFyL.js → divider-CvjX700b.js} +2 -2
  96. package/web/assets/{docx-preview-BF14ztI2.js → docx-preview-WFENW7jt.js} +1 -1
  97. package/web/assets/{ecology-science-erlenmeyer-flask.svg-ETcpyMYz.js → ecology-science-erlenmeyer-flask.svg-vxfYRuIi.js} +1 -1
  98. package/web/assets/{fieldset-CSn4dPXR.js → fieldset-BqupPuqR.js} +2 -2
  99. package/web/assets/{freemarker2-CqLlcxHC.js → freemarker2-Ci9lamz_.js} +1 -1
  100. package/web/assets/{handlebars-Cp1TiX9f.js → handlebars-D3EPIxYN.js} +1 -1
  101. package/web/assets/{html-BzArqvCu.js → html-DL-vDMyX.js} +1 -1
  102. package/web/assets/{htmlMode-CIRVb85i.js → htmlMode-C2w5defM.js} +1 -1
  103. package/web/assets/{image-flash-lightning.svg-CSTusJ5t.js → image-flash-lightning.svg-HRrh8pka.js} +1 -1
  104. package/web/assets/{image-picture-flower.svg-Cg9aaOhh.js → image-picture-flower.svg-C079ghaG.js} +1 -1
  105. package/web/assets/{index-Q9nkGIct.js → index-Cm1wg36J.js} +6 -6
  106. package/web/assets/{interface-alert-exclamation-diamond.svg-JL4lYLy1.js → interface-alert-exclamation-diamond.svg-Bcc8Weh5.js} +1 -1
  107. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-kvz8dLNC.js → interface-alert-exclamation-triangle-warning.svg-Bh98-iij.js} +1 -1
  108. package/web/assets/{interface-alert-information-circle.svg-DRqP_pYe.js → interface-alert-information-circle.svg-SoWkrsZO.js} +1 -1
  109. package/web/assets/{interface-award-crown.svg-CX4w4INE.js → interface-award-crown.svg-CgbNBSQL.js} +1 -1
  110. package/web/assets/{interface-bookmark.svg-Bx06-XmV.js → interface-bookmark-tag.svg-DtlpNX0d.js} +1 -1
  111. package/web/assets/{interface-bookmark-tag.svg-D5LiJMAo.js → interface-bookmark.svg-CXJKp9-6.js} +1 -1
  112. package/web/assets/{interface-calendar-date-one.svg-D28mjrW2.js → interface-calendar-date-one.svg-Ba_ke387.js} +1 -1
  113. package/web/assets/{interface-content-book-open-pages.svg-DvkccrQv.js → interface-content-book-open-pages.svg-DPUEnf2K.js} +1 -1
  114. package/web/assets/{interface-content-book-page.svg-Co_Rf29J.js → interface-content-book-page.svg-dsCMof_u.js} +1 -1
  115. package/web/assets/{interface-content-file.svg-CLqtAgLt.js → interface-content-file.svg-CsPPGADI.js} +1 -1
  116. package/web/assets/{interface-content-folder.svg-C9dHyqkp.js → interface-content-folder.svg-BTc1SZRb.js} +1 -1
  117. package/web/assets/interface-content-folder.svg-WIfxYmSH.js +1 -0
  118. package/web/assets/{interface-copy-clipboard.svg-DmF1P-Po.js → interface-copy-clipboard.svg-C0dUHWMR.js} +1 -1
  119. package/web/assets/{interface-edit-attachment.svg-BD_k5qE4.js → interface-edit-attachment.svg-DkC6-wuV.js} +1 -1
  120. package/web/assets/{interface-edit-binocular.svg-BzKsCrsk.js → interface-edit-binocular.svg-C4XPxcBj.js} +1 -1
  121. package/web/assets/{interface-edit-magic-wand.svg-CJkxoH8r.js → interface-edit-magic-wand.svg-BSWsgFZj.js} +1 -1
  122. package/web/assets/{interface-edit-tool-paint-roller.svg-CgXiF7qe.js → interface-edit-tool-paint-roller.svg-bUo5fKn1.js} +1 -1
  123. package/web/assets/{interface-edit-tool-pencil.svg-CeWHirTd.js → interface-edit-tool-pencil.svg-BOwTG4ej.js} +1 -1
  124. package/web/assets/{interface-favorite-award.svg-B9Vd9Hf6.js → interface-favorite-award.svg-BxBrHBnL.js} +1 -1
  125. package/web/assets/{interface-favorite-flag.svg-BRp3aMEx.js → interface-favorite-flag.svg-CyqfpD6l.js} +1 -1
  126. package/web/assets/{interface-favorite-heart.svg-B2zeO1q2.js → interface-favorite-heart.svg-COpeCJ2V.js} +1 -1
  127. package/web/assets/{interface-favorite-star.svg-vkH4UOle.js → interface-favorite-star.svg-C-NeEbqH.js} +1 -1
  128. package/web/assets/{interface-favorite-stars-sparkles.svg-CPTglDfo.js → interface-favorite-stars-sparkles.svg-Dl4L3va4.js} +1 -1
  129. package/web/assets/{interface-hierarchy-flowchart.svg-D_WG90fj.js → interface-hierarchy-flowchart.svg-QDCEhPT4.js} +1 -1
  130. package/web/assets/{interface-home-house.svg-BUYqjZPI.js → interface-home-house.svg-BxJXntjc.js} +1 -1
  131. package/web/assets/{interface-hyperlink.svg-DU6gyhSU.js → interface-hyperlink.svg-BTxw0q4O.js} +1 -1
  132. package/web/assets/{interface-lighting-brightness.svg-BMX-UMmG.js → interface-lighting-brightness.svg-CNUnsUrn.js} +1 -1
  133. package/web/assets/{interface-lock-closed.svg-fm6gJnaL.js → interface-lock-closed.svg-BgURW8Cd.js} +1 -1
  134. package/web/assets/{interface-lock-open-unlock.svg-D0IkCqrd.js → interface-lock-open-unlock.svg-DJVvMx6T.js} +1 -1
  135. package/web/assets/{interface-login-key.svg-BjXwMM_4.js → interface-login-key.svg-DKU1ANGA.js} +1 -1
  136. package/web/assets/{interface-search.svg-Ce8_4eqn.js → interface-search.svg-DWd7U6M4.js} +1 -1
  137. package/web/assets/{interface-setting-cog.svg-BCQ9oWrI.js → interface-setting-cog.svg-Cv1liH-N.js} +1 -1
  138. package/web/assets/{interface-share-megaphone-bullhorn.svg-IraxN-RR.js → interface-share-megaphone-bullhorn.svg-DiGwsYbN.js} +1 -1
  139. package/web/assets/{interface-share-rocket.svg-NzwY-7pd.js → interface-share-rocket.svg-BD9Kr2Tb.js} +1 -1
  140. package/web/assets/{interface-share-satellite.svg-CN8f5zE5.js → interface-share-satellite.svg-ioA9f-1F.js} +1 -1
  141. package/web/assets/{interface-share-space-ship.svg-BMm5tIIq.js → interface-share-space-ship.svg-g0JuuD8T.js} +1 -1
  142. package/web/assets/{interface-share.svg-5RMe9Dry.js → interface-share.svg-Vcds0wQD.js} +1 -1
  143. package/web/assets/{interface-signal-square.svg-C-RuIJu1.js → interface-signal-square.svg-F9RmwOj2.js} +1 -1
  144. package/web/assets/{interface-time-clock-circle.svg-B3CNKtVN.js → interface-time-clock-circle.svg-VH9h0rJO.js} +1 -1
  145. package/web/assets/{interface-time-hour-glass.svg-o3F09IxK.js → interface-time-hour-glass.svg-Brg8fk3D.js} +1 -1
  146. package/web/assets/{interface-users-multiple.svg-Cmqji5Ln.js → interface-users-multiple.svg-C3dClqT0.js} +1 -1
  147. package/web/assets/{interface-weather-moon.svg-CGM-ZS56.js → interface-weather-moon.svg-C3vbc--A.js} +1 -1
  148. package/web/assets/{javascript-qSezXPr1.js → javascript-7DyMJQOL.js} +1 -1
  149. package/web/assets/{jsonMode-BvjmRSYr.js → jsonMode-BSNjflOp.js} +1 -1
  150. package/web/assets/{liquid-CH1qgG2G.js → liquid-3gNUTU6Z.js} +1 -1
  151. package/web/assets/{lspLanguageFeatures-CtBsCddT.js → lspLanguageFeatures-DNW-cjCh.js} +3 -3
  152. package/web/assets/{mail-chat-bubble-square.svg-DvStF3KW.js → mail-chat-bubble-square.svg-H-59s7eK.js} +1 -1
  153. package/web/assets/{mail-send-email-paper-airplane.svg-CwTkfLk9.js → mail-send-email-paper-airplane.svg-BvNADULx.js} +1 -1
  154. package/web/assets/{mail-send-envelope.svg-Dkh_5t2W.js → mail-send-envelope.svg-BK0wDcVf.js} +1 -1
  155. package/web/assets/{mdx-BqogtCJ-.js → mdx-B8qSZaPu.js} +1 -1
  156. package/web/assets/{minus-B2dZQvCq.js → minus-BHL1pXRJ.js} +2 -2
  157. package/web/assets/modal-C9--SUJG.js +5 -0
  158. package/web/assets/modal-C_DXoFdI.js +1 -0
  159. package/web/assets/{money-cashier-receipt.svg-zKWFfD0k.js → money-cashier-receipt.svg-BF4sG5JK.js} +1 -1
  160. package/web/assets/{money-currency-dollar-pay.svg-D5lfefuk.js → money-currency-dollar-pay.svg-Cs1ZjXPc.js} +1 -1
  161. package/web/assets/{money-graph-arrow-increase.svg-Bd2mW0uZ.js → money-graph-arrow-increase.svg-oTmFMKdo.js} +1 -1
  162. package/web/assets/{money-graph-bar-chart-increase.svg-DegjdGbk.js → money-graph-bar-chart-increase.svg-DpxzHhkO.js} +1 -1
  163. package/web/assets/multiselect-DEd1a7qa.js +251 -0
  164. package/web/assets/{nature-ecology-leaf.svg-BbmZ_3cd.js → nature-ecology-leaf.svg-CRRVoplk.js} +1 -1
  165. package/web/assets/{password-D1YX3MCu.js → password-B33cxUy5.js} +4 -4
  166. package/web/assets/{phone-telephone.svg-B6UL6Fhu.js → phone-telephone.svg-CYZpfd7d.js} +1 -1
  167. package/web/assets/{plus-BmifHgiX.js → plus-3dK18ius.js} +6 -6
  168. package/web/assets/process.store-BP2Yx0AK.js +1 -0
  169. package/web/assets/{programming-bug.svg-Dhr7h5Lm.js → programming-bug.svg-Bblmkarj.js} +1 -1
  170. package/web/assets/{programming-cloud.svg-DIse9DrB.js → programming-cloud.svg-DIOGUGeq.js} +1 -1
  171. package/web/assets/{programming-computer-database-server.svg-BlKvXZnN.js → programming-computer-database-server.svg-BqysJvkY.js} +1 -1
  172. package/web/assets/{programming-computer-database.svg-Du4GGdek.js → programming-computer-database.svg-BDU_3Gvh.js} +1 -1
  173. package/web/assets/{programming-module-four-layout.svg-TcO3xW7h.js → programming-module-four-layout.svg-CS1CpcqV.js} +1 -1
  174. package/web/assets/{programming-module-three.svg-6UNuJszx.js → programming-module-three.svg-Dg7IA-LD.js} +1 -1
  175. package/web/assets/{programming-module.svg-BFkOw80L.js → programming-module.svg-BpyHS8dA.js} +1 -1
  176. package/web/assets/{programming-script-code.svg-CPNpYr6l.js → programming-script-code.svg-C7cvlhiY.js} +1 -1
  177. package/web/assets/project-launch.store-DTqJyGiE.js +1 -0
  178. package/web/assets/project.store-BYavTjQR.js +1 -0
  179. package/web/assets/{python-W_UHovJ1.js → python-BUceWa2n.js} +1 -1
  180. package/web/assets/{razor-BQiPtbwG.js → razor-D5DfJBZK.js} +1 -1
  181. package/web/assets/router-Da2qrUmJ.js +1 -0
  182. package/web/assets/settings-scope-DNgjXrG7.js +1 -0
  183. package/web/assets/{settings.store-DqnPoZDR.js → settings.store-YVk5HeIJ.js} +1 -1
  184. package/web/assets/{shopping-cart.svg-Bux9YEU6.js → shopping-cart.svg-CD7AmRRj.js} +1 -1
  185. package/web/assets/{shopping-gift-present.svg-_h-yzC6c.js → shopping-gift-present.svg-BrDshW56.js} +1 -1
  186. package/web/assets/{shopping-shipping-box-parcel-package.svg-BdhGUAKV.js → shopping-shipping-box-parcel-package.svg-DTQKQ4lh.js} +1 -1
  187. package/web/assets/src-4WNjC7ZT.js +572 -0
  188. package/web/assets/{src-BL1Lafqz.js → src-BhnteF94.js} +33 -33
  189. package/web/assets/src-Bsnnsed7.js +1 -0
  190. package/web/assets/src-Dq9wfPM5.css +1 -0
  191. package/web/assets/tabpanel-2aAgCtis.js +150 -0
  192. package/web/assets/{tag-new-circle.svg-CPl83AFc.js → tag-new-circle.svg-D7E7WEcq.js} +1 -1
  193. package/web/assets/theme-Vor3l0vc.js +1 -0
  194. package/web/assets/{toggleswitch-CqZ2j960.js → toggleswitch-Dr6MF0VL.js} +2 -2
  195. package/web/assets/{travel-map-earth-globe.svg-mdZXLqAH.js → travel-map-earth-globe.svg-CjflVjBB.js} +1 -1
  196. package/web/assets/trpc-DebjUoP4.js +1 -0
  197. package/web/assets/{tsMode-BTrmDRFt.js → tsMode-FsuSDXuj.js} +5 -5
  198. package/web/assets/{typescript-B5jdwmxa.js → typescript-DgH1p2T8.js} +1 -1
  199. package/web/assets/useAiChatDrawer-C6ovLKaw.js +1 -0
  200. package/web/assets/useCloudOrg-DJ4hR2Ta.js +1 -0
  201. package/web/assets/useProjectCatalog-CPeVWCNl.js +1 -0
  202. package/web/assets/useProjectCloudOrg-BCMidyRD.js +1 -0
  203. package/web/assets/{xml-vcJlRCph.js → xml-fu6eSvQE.js} +1 -1
  204. package/web/assets/{yaml-CfcdnZ_c.js → yaml-GHvnVG3H.js} +1 -1
  205. package/web/index.html +1 -1
  206. package/agent-manager-2RWV2SXZ.js +0 -9
  207. package/chunk-J3NAI636.js.map +0 -1
  208. package/chunk-JNI4CXJ7.js.map +0 -1
  209. package/settings-manager-Q4PZ3UD5.js +0 -9
  210. package/src-MILB2SQA.js.map +0 -1
  211. package/web/assets/AgentScalarChatInterface.vue-CvSuHoWx.js +0 -13
  212. package/web/assets/AgentTerminalPage-DM7AvnyQ.js +0 -1
  213. package/web/assets/AiChatPage-DuXpncYG.js +0 -1
  214. package/web/assets/AppLayout-DimGQa7G.js +0 -1
  215. package/web/assets/AuditPage-B_0kBq_9.js +0 -1
  216. package/web/assets/CloudAccountPage-BJK2BN44.js +0 -1
  217. package/web/assets/CloudAccountPage-Bxa_0f6m.css +0 -1
  218. package/web/assets/CloudAccountPage-HGWX4TH4.js +0 -1
  219. package/web/assets/CloudMessagingPage-CWv16kIi.js +0 -2
  220. package/web/assets/CloudMessagingPage-Dl7hHYeb.css +0 -1
  221. package/web/assets/DashboardPage-CspSBpVO.css +0 -1
  222. package/web/assets/DashboardPage-D7uW5Gte.js +0 -164
  223. package/web/assets/DirectoryPickerDialog-FsJTp3yS.js +0 -1
  224. package/web/assets/EnvironmentForm-DNUk-CLn.js +0 -108
  225. package/web/assets/EnvironmentFormPage-AeYFkQiH.js +0 -1
  226. package/web/assets/EnvironmentListPage-zo_QJeYZ.js +0 -1
  227. package/web/assets/KanbanBoardPage-CXSqV6Qh.js +0 -4
  228. package/web/assets/KanbanBoardPage-hU10A0U8.css +0 -1
  229. package/web/assets/KanbanListPage-DZBXXH0r.js +0 -1
  230. package/web/assets/LaunchProjectPage-D_Ivnho3.js +0 -1
  231. package/web/assets/LaunchServicesPage-BTXi6jNU.js +0 -1
  232. package/web/assets/LogViewer-Bqe-albM.js +0 -3
  233. package/web/assets/OrgKeyPrompt-D05OEwQM.js +0 -1
  234. package/web/assets/ProcessDetailPage-CsbqvXk8.js +0 -1
  235. package/web/assets/ScenarioEditorPage-CHX44wHI.js +0 -14
  236. package/web/assets/SendToChatDialog-8ToadFnr.js +0 -1
  237. package/web/assets/ServiceControlsBar-OVSGVoGc.js +0 -1
  238. package/web/assets/ServiceDetailPage-DpqDQl76.js +0 -2
  239. package/web/assets/ServiceFormPage-COlkaDyA.js +0 -1
  240. package/web/assets/SettingsPage-YOKL8o_O.js +0 -2063
  241. package/web/assets/UnlockPage-B75f6TuX.js +0 -1
  242. package/web/assets/VariablesTable-siiUpJXY.js +0 -1
  243. package/web/assets/VaultMigrationPage-DcYkoGTq.js +0 -1
  244. package/web/assets/VersionBadge-BH9S4OPH.js +0 -1
  245. package/web/assets/WikiPage-CxBVPs9x.js +0 -1
  246. package/web/assets/WikiView-DnQhoJpH.js +0 -1
  247. package/web/assets/add-scalar-classes-B2maka72.js +0 -387
  248. package/web/assets/client-BgGTZAbs.js +0 -24
  249. package/web/assets/cloud-chat.store-DnjVk4Ss.js +0 -1
  250. package/web/assets/cloud-client-CJH_Ql5a.js +0 -1
  251. package/web/assets/cloud-session-DWaO5I68.js +0 -2
  252. package/web/assets/column-DucGv9T0.js +0 -907
  253. package/web/assets/interface-content-folder.svg-kYcgQcTJ.js +0 -1
  254. package/web/assets/modal-B6NeZlOc.js +0 -1
  255. package/web/assets/modal-BkbDSZxh.js +0 -5
  256. package/web/assets/multiselect-DeUaJiPX.js +0 -251
  257. package/web/assets/process.store-BucXc8GP.js +0 -1
  258. package/web/assets/project-launch.store-Xo3pwupQ.js +0 -1
  259. package/web/assets/project.store-Bdp-Dw-w.js +0 -1
  260. package/web/assets/router-DZShz0-l.js +0 -1
  261. package/web/assets/settings-scope-vqQX-GF1.js +0 -1
  262. package/web/assets/src-BsHOvodv.js +0 -1
  263. package/web/assets/src-cvMrX61Z.js +0 -572
  264. package/web/assets/src-dpFgucNZ.css +0 -1
  265. package/web/assets/tabpanel-B7UUtaKJ.js +0 -150
  266. package/web/assets/theme-CuU9r36Y.js +0 -1
  267. package/web/assets/trpc-i_kC7f4I.js +0 -1
  268. package/web/assets/useAiChatDrawer-ChqgY66m.js +0 -1
  269. package/web/assets/useCloudOrg-Dq8l_9Ry.js +0 -1
  270. package/web/assets/useProjectCatalog-BE9Yy2SC.js +0 -1
  271. package/web/assets/useProjectCloudOrg-DAj0XB8D.js +0 -1
  272. /package/{agent-manager-2RWV2SXZ.js.map → agent-manager-APY7SZ75.js.map} +0 -0
  273. /package/{chat-O7ZXCCKV.js.map → chat-L42DO6ND.js.map} +0 -0
  274. /package/{chunk-ZDHLWTHW.js.map → chunk-77UQ2UKW.js.map} +0 -0
  275. /package/{chunk-ELI2TELD.js.map → chunk-OGCEFBSS.js.map} +0 -0
  276. /package/{chunk-TE57T5GO.js.map → chunk-OSKZYKSN.js.map} +0 -0
  277. /package/{companion-NZU7FNID.js.map → companion-7EFYZNCO.js.map} +0 -0
  278. /package/{desktop-launcher-N7WRF3LC.js.map → desktop-launcher-Q6J2LSVP.js.map} +0 -0
  279. /package/{settings-manager-Q4PZ3UD5.js.map → settings-manager-MQBUCUIO.js.map} +0 -0
  280. /package/{vault-resolver-V7KH4FTC.js.map → vault-resolver-57Q2DVOR.js.map} +0 -0
  281. /package/web/assets/{abap-cDlgWO6H.js → abap-B8g_2xYy.js} +0 -0
  282. /package/web/assets/{apex-DxzSGotK.js → apex-Bm8w4T5A.js} +0 -0
  283. /package/web/assets/{azcli-CUNfZLtQ.js → azcli-BqdUW6F8.js} +0 -0
  284. /package/web/assets/{bat-C-oKGifY.js → bat-Bngf0lQU.js} +0 -0
  285. /package/web/assets/{bicep-C4xTl9QV.js → bicep-DzO554JS.js} +0 -0
  286. /package/web/assets/{browser-CE5P0iHW.js → browser-BJX5ZrVN.js} +0 -0
  287. /package/web/assets/{cameligo-COpO1ZvP.js → cameligo-Bcy3ohdb.js} +0 -0
  288. /package/web/assets/{clojure-D8gp5eAN.js → clojure-CZbiqkDV.js} +0 -0
  289. /package/web/assets/{coffee-De9HMN-q.js → coffee-CDuhyV-7.js} +0 -0
  290. /package/web/assets/{cpp-C4pJyeKy.js → cpp-BklV8f4x.js} +0 -0
  291. /package/web/assets/{csharp-B4wLqqiU.js → csharp-BelR_XiC.js} +0 -0
  292. /package/web/assets/{csp-Do0Gg4qE.js → csp-DUjeBS2K.js} +0 -0
  293. /package/web/assets/{css-BLq1nXK0.js → css-CvbYbEko.js} +0 -0
  294. /package/web/assets/{cypher-CDQzi0TV.js → cypher-Dwrbk-SP.js} +0 -0
  295. /package/web/assets/{dart-bTPYn7bY.js → dart-BW1E5h9O.js} +0 -0
  296. /package/web/assets/{dockerfile-yM7ZnQpo.js → dockerfile-B41ilpF9.js} +0 -0
  297. /package/web/assets/{ecl-BgTpp_c4.js → ecl-BZE6Vxna.js} +0 -0
  298. /package/web/assets/{elixir-DO7wJ1ib.js → elixir-CtYg0bLh.js} +0 -0
  299. /package/web/assets/{flow9-B2Ko_py3.js → flow9-Sgvy48_I.js} +0 -0
  300. /package/web/assets/{fsharp-DNdx3wKW.js → fsharp-BzAfXfKg.js} +0 -0
  301. /package/web/assets/{go-D7LajbkE.js → go-D7oonABu.js} +0 -0
  302. /package/web/assets/{graphql-BCQSwUPo.js → graphql-BEN-qkl0.js} +0 -0
  303. /package/web/assets/{hcl-DR3uNUXT.js → hcl-CE0OhwCq.js} +0 -0
  304. /package/web/assets/{ini-zkzQPitL.js → ini-CCLtcvjA.js} +0 -0
  305. /package/web/assets/{java-YFwuCa4S.js → java-Bao8w_gp.js} +0 -0
  306. /package/web/assets/{julia-WWwv4jLR.js → julia-Dr0hFYrl.js} +0 -0
  307. /package/web/assets/{kotlin-FwlJkapy.js → kotlin-Cbfu8lcM.js} +0 -0
  308. /package/web/assets/{less-CyhHW1nH.js → less-BU4gEpXr.js} +0 -0
  309. /package/web/assets/{lexon-BScN_v1c.js → lexon-GpBGGdTS.js} +0 -0
  310. /package/web/assets/{lua-eWb9GpZJ.js → lua-DIPKk37y.js} +0 -0
  311. /package/web/assets/{m3-C4NDU793.js → m3-CSOypKGf.js} +0 -0
  312. /package/web/assets/{markdown-DWWpXAtL.js → markdown-VDqAgkyM.js} +0 -0
  313. /package/web/assets/{mips-BpJKGw00.js → mips-BJWI6dX7.js} +0 -0
  314. /package/web/assets/{msdax-BiuvyZwP.js → msdax-BLpuE5Dc.js} +0 -0
  315. /package/web/assets/{mysql-DJW9Aa9q.js → mysql-ZsxiEUoY.js} +0 -0
  316. /package/web/assets/{objective-c-YouNnWOW.js → objective-c-DcQa1iPc.js} +0 -0
  317. /package/web/assets/{pascal-jQsRnBre.js → pascal-u-hmXdyn.js} +0 -0
  318. /package/web/assets/{pascaligo-DZI84_dt.js → pascaligo-DqbP-1C6.js} +0 -0
  319. /package/web/assets/{perl-D9TKt-s6.js → perl-CUeQpRkH.js} +0 -0
  320. /package/web/assets/{pgsql-DXgI6ehC.js → pgsql-CQ7FhAFN.js} +0 -0
  321. /package/web/assets/{php-Cgqd4wfW.js → php-BEf_fu3E.js} +0 -0
  322. /package/web/assets/{pla-DRDkvVUU.js → pla-CXNNbT0w.js} +0 -0
  323. /package/web/assets/{postiats-BOLeCCau.js → postiats-CIXLZwPb.js} +0 -0
  324. /package/web/assets/{powerquery-DCDtPNBU.js → powerquery-DnGPASFA.js} +0 -0
  325. /package/web/assets/{powershell-WnZ4e5ia.js → powershell-1Y1kqIZS.js} +0 -0
  326. /package/web/assets/{protobuf-C9Dg-C9o.js → protobuf-Cfo9haoG.js} +0 -0
  327. /package/web/assets/{pug-Dr8RhWun.js → pug-BujEZqmy.js} +0 -0
  328. /package/web/assets/{qsharp-DukGWvWZ.js → qsharp-BL9AqNGD.js} +0 -0
  329. /package/web/assets/{r-BC41pTgC.js → r-D0dhpGOM.js} +0 -0
  330. /package/web/assets/{redis-D-gYIUku.js → redis-BMLwD7W9.js} +0 -0
  331. /package/web/assets/{redshift-r0XbF8XS.js → redshift-CkHh73og.js} +0 -0
  332. /package/web/assets/{restructuredtext-DsJDS7Eu.js → restructuredtext-DZ-LF65W.js} +0 -0
  333. /package/web/assets/{ruby-JPrm3ODz.js → ruby-UzPHTzc9.js} +0 -0
  334. /package/web/assets/{rust-C8IjEXni.js → rust-ja9NGnXZ.js} +0 -0
  335. /package/web/assets/{sb-D8vNiFl9.js → sb-BNdOJbMY.js} +0 -0
  336. /package/web/assets/{scala-DThahuqf.js → scala-LlhkyN6l.js} +0 -0
  337. /package/web/assets/{scheme-CvEQUYYf.js → scheme-BAj99YIn.js} +0 -0
  338. /package/web/assets/{scss-C6obpl8K.js → scss-chS-xxB3.js} +0 -0
  339. /package/web/assets/{shared-sse-Bpqv2-GI.js → shared-sse-_VzlL_VX.js} +0 -0
  340. /package/web/assets/{shell-BnVmd31t.js → shell-CcH7eYIc.js} +0 -0
  341. /package/web/assets/{solidity-Bo6zEybc.js → solidity-cVvnqX-K.js} +0 -0
  342. /package/web/assets/{sophia-DuB3Px8n.js → sophia-BBT-EdFw.js} +0 -0
  343. /package/web/assets/{sparql-CW9HqMW2.js → sparql-DGEqOrB6.js} +0 -0
  344. /package/web/assets/{sql-CPCPCQON.js → sql-CcTErTxM.js} +0 -0
  345. /package/web/assets/{st-AxC3n-1-.js → st-Bjw-B4mN.js} +0 -0
  346. /package/web/assets/{swift-CgZOS_MZ.js → swift-Bid-7bBd.js} +0 -0
  347. /package/web/assets/{systemverilog-DYR-yx39.js → systemverilog-CXju7Nd-.js} +0 -0
  348. /package/web/assets/{tcl-4hAvWv0d.js → tcl-D-Dw7JFz.js} +0 -0
  349. /package/web/assets/{twig-Cf_07aFW.js → twig-BIPbzEWT.js} +0 -0
  350. /package/web/assets/{typespec-2tXj8s11.js → typespec-UJSutGCV.js} +0 -0
  351. /package/web/assets/{vb-DLpM4f4s.js → vb-oyG_LJw0.js} +0 -0
  352. /package/web/assets/{w3c-keyname-CIiluUot.js → w3c-keyname-DtJs0qQm.js} +0 -0
  353. /package/web/assets/{wgsl-BcECae_z.js → wgsl-DXZ6ljB6.js} +0 -0
@@ -12,6 +12,8 @@ import {
12
12
  OPENAI_COMPAT_BASE_URLS,
13
13
  OptionalProviderIdSchema,
14
14
  accountForOrg,
15
+ accountForOrgOrThrow,
16
+ accountForOrgScope,
15
17
  apiKeyStore,
16
18
  appVersion,
17
19
  applyPersistedLanMode,
@@ -58,9 +60,10 @@ import {
58
60
  serviceRouter,
59
61
  setLanMode,
60
62
  shutdownCodexAppServer,
63
+ soleAccountScope,
61
64
  startCliSession,
62
65
  vaultOfProject
63
- } from "./chunk-JNI4CXJ7.js";
66
+ } from "./chunk-HJZPLRNL.js";
64
67
  import {
65
68
  resolveCliInvocation,
66
69
  whichCommand
@@ -83,7 +86,7 @@ import {
83
86
  stopClaudeTranscriptWatcher,
84
87
  stopCodexTranscriptWatcher,
85
88
  verifyJwt
86
- } from "./chunk-TE57T5GO.js";
89
+ } from "./chunk-OSKZYKSN.js";
87
90
  import "./chunk-MD3VW4HQ.js";
88
91
  import {
89
92
  agentManager,
@@ -122,10 +125,10 @@ import {
122
125
  stableEncryptValue,
123
126
  traefikManager,
124
127
  unregisterInstance
125
- } from "./chunk-ELI2TELD.js";
128
+ } from "./chunk-OGCEFBSS.js";
126
129
  import {
127
130
  settingsManager
128
- } from "./chunk-ZDHLWTHW.js";
131
+ } from "./chunk-77UQ2UKW.js";
129
132
  import {
130
133
  AGENT_LONG_FETCH_TIMEOUT,
131
134
  AGENT_STOP_FETCH_TIMEOUT,
@@ -149,15 +152,17 @@ import {
149
152
  UpdateEnvironmentSchema,
150
153
  VariableOverrideSchema,
151
154
  VariableSchema,
155
+ ambiguousServiceSlugs,
156
+ crossServiceSlugsIn,
152
157
  deriveLauncherIdentity,
153
158
  getCollection,
154
159
  nativeParsers,
155
160
  primaryServiceLink,
156
161
  readEntity,
162
+ serviceSlug,
157
163
  writeEntity
158
- } from "./chunk-QRMG6GMX.js";
164
+ } from "./chunk-6T7R2JZR.js";
159
165
  import {
160
- adoptUnstampedOrgs,
161
166
  env,
162
167
  forgetOrgLogo,
163
168
  keyRoot,
@@ -174,10 +179,11 @@ import {
174
179
  readOrgLogo,
175
180
  readOrgLogos,
176
181
  readOrgNames,
182
+ rememberOrgAccount,
177
183
  rememberOrgLogo,
178
184
  rememberOrgName,
179
185
  stampOrgCloud
180
- } from "./chunk-J3NAI636.js";
186
+ } from "./chunk-ZFELQG4B.js";
181
187
 
182
188
  // ../server/src/create-server.ts
183
189
  import express from "express";
@@ -764,6 +770,54 @@ async function sealUnopenedOrgVaults() {
764
770
  return sealed;
765
771
  }
766
772
 
773
+ // ../server/src/services/service-graph.ts
774
+ function addKey(buckets, from, target, key) {
775
+ const id = `${from}\0${target}`;
776
+ const bucket = buckets.get(id) ?? { from, target, keys: /* @__PURE__ */ new Set() };
777
+ bucket.keys.add(key);
778
+ buckets.set(id, bucket);
779
+ }
780
+ function buildServiceGraph(input) {
781
+ const ambiguous = ambiguousServiceSlugs(input.services.map((s) => s.name));
782
+ const nodes = input.services.map((service) => {
783
+ const slug = serviceSlug(service.name);
784
+ return {
785
+ id: service.id,
786
+ name: service.name,
787
+ slug,
788
+ ambiguousSlug: ambiguous.has(slug)
789
+ };
790
+ });
791
+ const bySlug = /* @__PURE__ */ new Map();
792
+ for (const node of nodes) {
793
+ if (node.slug && !node.ambiguousSlug) bySlug.set(node.slug, node.id);
794
+ }
795
+ const edgeBuckets = /* @__PURE__ */ new Map();
796
+ const danglingBuckets = /* @__PURE__ */ new Map();
797
+ for (const service of input.services) {
798
+ const env2 = input.envByServiceId[service.id] ?? {};
799
+ for (const [key, value] of Object.entries(env2)) {
800
+ for (const slug of crossServiceSlugsIn(value)) {
801
+ const target = bySlug.get(slug);
802
+ if (target === service.id) continue;
803
+ if (target) addKey(edgeBuckets, service.id, target, key);
804
+ else addKey(danglingBuckets, service.id, slug, key);
805
+ }
806
+ }
807
+ }
808
+ const edges = [...edgeBuckets.values()].map((b) => ({
809
+ from: b.from,
810
+ to: b.target,
811
+ keys: [...b.keys].sort()
812
+ }));
813
+ const dangling = [...danglingBuckets.values()].map((b) => ({
814
+ from: b.from,
815
+ slug: b.target,
816
+ keys: [...b.keys].sort()
817
+ }));
818
+ return { nodes, edges, dangling };
819
+ }
820
+
767
821
  // ../server/src/trpc/routers/project.ts
768
822
  async function assertReadable(orgId) {
769
823
  if (!orgId) return;
@@ -1018,6 +1072,55 @@ var projectRouter = router({
1018
1072
  setCurrentProject(input ? { id: input.id, orgId: input.orgId } : null);
1019
1073
  return { ok: true };
1020
1074
  }),
1075
+ /**
1076
+ * Le graphe des dépendances du projet : qui a besoin de qui.
1077
+ *
1078
+ * Les arêtes ne sont pas déclarées, elles se lisent — une variable de A qui
1079
+ * cite `{{services.<slug-de-B>.PORT}}` EST la dépendance, celle-là même que
1080
+ * l'interpolation résout au déploiement. Rien à tenir à jour à côté, donc
1081
+ * rien qui puisse mentir.
1082
+ *
1083
+ * Seules les CLÉS des variables sortent d'ici. Les valeurs résolues portent
1084
+ * des secrets déchiffrés : elles servent à détecter la référence, et
1085
+ * s'arrêtent là.
1086
+ */
1087
+ graph: protectedProcedure.input(z4.object({
1088
+ id: z4.string().min(1).max(128),
1089
+ orgId: z4.string().max(128).nullable().optional()
1090
+ })).query(async ({ ctx, input }) => {
1091
+ const project = await projectStore.get(input);
1092
+ if (!project) {
1093
+ throw new TRPCError2({ code: "NOT_FOUND", message: `Project ${input.id} not found` });
1094
+ }
1095
+ await assertReadable(project.orgId);
1096
+ const allowed = getAllowedServiceIds(ctx);
1097
+ const services = (await Promise.all(project.serviceIds.map((sid) => serviceStore.get(sid)))).filter((s) => s !== null);
1098
+ const envByServiceId = {};
1099
+ if (project.activeEnvironmentId) {
1100
+ const activeEnvironmentId = project.activeEnvironmentId;
1101
+ await Promise.all(services.map(async (service) => {
1102
+ try {
1103
+ const resolved = await environmentResolver.resolveForService({
1104
+ serviceId: service.id,
1105
+ activeEnvironmentId
1106
+ });
1107
+ envByServiceId[service.id] = resolved.env;
1108
+ } catch (err) {
1109
+ console.error("[project-router] Failed to resolve variables for graph, service", service.id + ":", err.message);
1110
+ }
1111
+ }));
1112
+ }
1113
+ const graph = buildServiceGraph({
1114
+ services: services.map((s) => ({ id: s.id, name: s.name })),
1115
+ envByServiceId
1116
+ });
1117
+ if (allowed === null) return graph;
1118
+ return {
1119
+ nodes: graph.nodes.filter((n) => allowed.has(n.id)),
1120
+ edges: graph.edges.filter((e) => allowed.has(e.from) && allowed.has(e.to)),
1121
+ dangling: graph.dangling.filter((d) => allowed.has(d.from))
1122
+ };
1123
+ }),
1021
1124
  localPaths: protectedProcedure.query(async () => {
1022
1125
  return projectPathStore.all();
1023
1126
  }),
@@ -5812,8 +5915,9 @@ var kanbanRouter = router({
5812
5915
  downloadAttachment: protectedProcedure.input(z19.object({
5813
5916
  attachmentId: z19.string().max(128),
5814
5917
  // La pièce jointe appartient à une organisation : la nommer dit sous quel
5815
- // compte la demander. Omise, c'est le compte unique du poste la
5816
- // situation d'avant le multicompte.
5918
+ // compte la demander. C'est le SEUL appel qui tolère de ne pas l'avoir
5919
+ // un agent n'a qu'un identifiant de fichier — et il échoue alors en le
5920
+ // disant dès que ce poste a plusieurs comptes.
5817
5921
  orgId: z19.string().max(128).optional()
5818
5922
  })).mutation(async ({ input }) => {
5819
5923
  const id = input.attachmentId;
@@ -5822,7 +5926,7 @@ var kanbanRouter = router({
5822
5926
  }
5823
5927
  const res = await cloudFetch2(`/api/kanban/file/${id}`, {
5824
5928
  timeoutMs: 12e4,
5825
- ...input.orgId ? { orgId: input.orgId } : {}
5929
+ accountId: input.orgId ? await accountForOrgScope(input.orgId) : await soleAccountScope()
5826
5930
  });
5827
5931
  if (res.status === 404) {
5828
5932
  throw new TRPCError16({ code: "NOT_FOUND", message: `Attachment ${id} not found` });
@@ -6320,7 +6424,7 @@ async function reconcileOrgCanary(orgId) {
6320
6424
  const res = await cloudFetch("/api/auth/organization/canary", {
6321
6425
  method: "POST",
6322
6426
  body: { organizationId: orgId, canary: local },
6323
- orgId
6427
+ accountId: await accountForOrgOrThrow(orgId)
6324
6428
  });
6325
6429
  if (!res.ok) {
6326
6430
  throw new CanaryUnavailableError("Could not reach the organization on the cloud.");
@@ -7456,6 +7560,8 @@ var cloudSyncRouter = router({
7456
7560
  cloudUrl: input.cloudUrl,
7457
7561
  ...await accountScope(input.orgId)
7458
7562
  });
7563
+ } else if (input.accountId) {
7564
+ await stampOrgCloud(input.orgId, input.cloudUrl, void 0, input.accountId);
7459
7565
  }
7460
7566
  try {
7461
7567
  const pulled = await cloudSyncBridge.followProject(input.orgId, input.projectId);
@@ -7508,6 +7614,8 @@ var cloudSyncRouter = router({
7508
7614
  cloudUrl: input.cloudUrl,
7509
7615
  ...await accountScope(input.orgId)
7510
7616
  });
7617
+ } else if (input.accountId) {
7618
+ await stampOrgCloud(input.orgId, input.cloudUrl, void 0, input.accountId);
7511
7619
  }
7512
7620
  await projectStore.moveToOrg(input.projectId, input.orgId);
7513
7621
  await projectPathStore.relocate(
@@ -7539,7 +7647,7 @@ var cloudSyncRouter = router({
7539
7647
  })).query(async ({ input }) => {
7540
7648
  const res = await cloudFetch2(
7541
7649
  `/api/auth/organization/canary?organizationId=${encodeURIComponent(input.orgId)}`,
7542
- { method: "GET", orgId: input.orgId }
7650
+ { method: "GET", accountId: await accountForOrgScope(input.orgId) }
7543
7651
  );
7544
7652
  if (!res.ok) {
7545
7653
  throw new TRPCError19({ code: "BAD_GATEWAY", message: await cloudMessage(res) || `CANARY_READ_FAILED (${res.status})` });
@@ -7562,7 +7670,7 @@ var cloudSyncRouter = router({
7562
7670
  if (!key) return { status: "unknown" };
7563
7671
  const res = await cloudFetch2(
7564
7672
  `/api/auth/organization/canary?organizationId=${encodeURIComponent(input.orgId)}`,
7565
- { method: "GET", orgId: input.orgId }
7673
+ { method: "GET", accountId: await accountForOrgScope(input.orgId) }
7566
7674
  );
7567
7675
  if (!res.ok) return { status: "unknown" };
7568
7676
  const { canary } = await res.json();
@@ -7617,7 +7725,7 @@ var cloudSyncRouter = router({
7617
7725
  const res = await cloudFetch2("/api/auth/organization/canary/reset", {
7618
7726
  method: "POST",
7619
7727
  body: { organizationId: input.orgId, canary },
7620
- orgId: input.orgId
7728
+ accountId: await accountForOrgScope(input.orgId)
7621
7729
  });
7622
7730
  if (!res.ok) {
7623
7731
  const detail = await cloudMessage(res);
@@ -7665,7 +7773,9 @@ var cloudSyncRouter = router({
7665
7773
  res = await cloudFetch2("/api/auth/project/delete", {
7666
7774
  method: "POST",
7667
7775
  body: { organizationId: input.orgId, projectId: input.projectId },
7668
- orgId: input.orgId
7776
+ // Dans le `try` : ne rien avoir à quoi rattacher l'organisation doit
7777
+ // ressortir comme CLOUD_NOT_LINKED, pas comme une erreur interne.
7778
+ accountId: await accountForOrgScope(input.orgId)
7669
7779
  });
7670
7780
  } catch (err) {
7671
7781
  if (err instanceof TRPCError19 && err.code === "PRECONDITION_FAILED") {
@@ -7702,6 +7812,35 @@ var cloudSyncRouter = router({
7702
7812
  * afficher. Le nom est donc recopié dans le tampon du coffre au passage, là
7703
7813
  * où il est déjà lu au démarrage suivant.
7704
7814
  */
7815
+ /**
7816
+ * Retenir à quel compte appartient chaque organisation.
7817
+ *
7818
+ * Poussé par l'interface avec ce que le cloud vient de répondre : une
7819
+ * organisation appartient au compte qui la LISTE. Le poste ne peut pas le
7820
+ * déduire — il l'a tenté, et il a rangé sous un compte les organisations
7821
+ * d'un autre. Même forme que `rememberOrgNames`, et pour la même raison :
7822
+ * ce que seul le cloud sait, on le recopie quand il le dit.
7823
+ */
7824
+ rememberOrgAccounts: protectedProcedure.input(z23.object({
7825
+ orgs: z23.array(z23.object({
7826
+ orgId: z23.string().min(1).max(128),
7827
+ accountId: z23.string().min(1).max(64)
7828
+ })).max(200)
7829
+ })).mutation(async ({ input }) => {
7830
+ const candidates = /* @__PURE__ */ new Map();
7831
+ for (const { orgId, accountId } of input.orgs) {
7832
+ candidates.set(orgId, [...candidates.get(orgId) ?? [], accountId]);
7833
+ }
7834
+ const current2 = await readOrgAccounts();
7835
+ let remembered = 0;
7836
+ for (const [orgId, accountIds] of candidates) {
7837
+ const kept = current2[orgId];
7838
+ if (kept && accountIds.includes(kept)) continue;
7839
+ await rememberOrgAccount(orgId, accountIds[0]);
7840
+ remembered++;
7841
+ }
7842
+ return { remembered };
7843
+ }),
7705
7844
  rememberOrgNames: protectedProcedure.input(z23.object({
7706
7845
  orgs: z23.array(z23.object({
7707
7846
  orgId: z23.string().min(1).max(128),
@@ -9626,13 +9765,6 @@ async function createLocalServer() {
9626
9765
  res.status(502).send("The cloud did not say who this session belongs to.");
9627
9766
  return;
9628
9767
  }
9629
- const before = await cloudSessionStore.list();
9630
- if (before.length === 1 && before[0].userId !== identity.userId) {
9631
- const adopted = await adoptUnstampedOrgs(before[0].id);
9632
- if (adopted.length > 0) {
9633
- console.log(`[cloud] ${adopted.length} organisation(s) rattach\xE9e(s) au compte ${before[0].email || before[0].id}`);
9634
- }
9635
- }
9636
9768
  await cloudSessionStore.add(getCloudApiUrl(), sessionToken, identity);
9637
9769
  void cloudSyncBridge.resumeAll();
9638
9770
  res.redirect(`${returnTo}?cloud=linked`);
@@ -9660,7 +9792,7 @@ async function createLocalServer() {
9660
9792
  res.status(401).end();
9661
9793
  return;
9662
9794
  }
9663
- const streamBase = await cloudSessionStore.getCloudUrl(accountId) ?? getCloudApiUrl();
9795
+ const streamBase = await orgCloudUrl(organizationId);
9664
9796
  const upstreamAbort = new AbortController();
9665
9797
  req.on("close", () => upstreamAbort.abort());
9666
9798
  try {
@@ -9720,7 +9852,7 @@ async function createLocalServer() {
9720
9852
  res.status(401).end();
9721
9853
  return;
9722
9854
  }
9723
- const streamBase = await cloudSessionStore.getCloudUrl(accountId) ?? getCloudApiUrl();
9855
+ const streamBase = await orgCloudUrl(organizationId);
9724
9856
  const upstreamQuery = new URLSearchParams({ organizationId });
9725
9857
  if (typeof req.query["name"] === "string") upstreamQuery.set("name", req.query["name"]);
9726
9858
  try {
@@ -9761,7 +9893,7 @@ async function createLocalServer() {
9761
9893
  }
9762
9894
  try {
9763
9895
  const upstream = await fetch(
9764
- `${(await cloudSessionStore.getCloudUrl(fileAccountId ?? void 0) ?? getCloudApiUrl()).replace(/\/+$/, "")}/api/kanban/file/${encodeURIComponent(req.params.id)}`,
9896
+ `${fileOrgId ? await orgCloudUrl(fileOrgId) : await cloudSessionStore.getCloudUrl(fileAccountId ?? void 0) ?? getCloudApiUrl()}/api/kanban/file/${encodeURIComponent(req.params.id)}`,
9765
9897
  {
9766
9898
  method: "DELETE",
9767
9899
  headers: { Authorization: `Bearer ${token}`, [APP_VERSION_HEADER]: appVersion },
@@ -9790,7 +9922,7 @@ async function createLocalServer() {
9790
9922
  }
9791
9923
  try {
9792
9924
  const upstream = await fetch(
9793
- `${(await cloudSessionStore.getCloudUrl(fileAccountId ?? void 0) ?? getCloudApiUrl()).replace(/\/+$/, "")}/api/kanban/file/${encodeURIComponent(req.params.id)}`,
9925
+ `${fileOrgId ? await orgCloudUrl(fileOrgId) : await cloudSessionStore.getCloudUrl(fileAccountId ?? void 0) ?? getCloudApiUrl()}/api/kanban/file/${encodeURIComponent(req.params.id)}`,
9794
9926
  {
9795
9927
  headers: { Authorization: `Bearer ${token}`, [APP_VERSION_HEADER]: appVersion },
9796
9928
  signal: AbortSignal.timeout(3e5)
@@ -9810,6 +9942,33 @@ async function createLocalServer() {
9810
9942
  res.status(502).end();
9811
9943
  }
9812
9944
  });
9945
+ app.get("/api/cloud/avatar/:userId", async (req, res) => {
9946
+ const userId = req.params.userId;
9947
+ if (!/^[A-Za-z0-9._-]{1,128}$/.test(userId)) {
9948
+ res.status(400).end();
9949
+ return;
9950
+ }
9951
+ const orgId = typeof req.query["organizationId"] === "string" ? req.query["organizationId"] : "";
9952
+ const accountId = typeof req.query["accountId"] === "string" ? req.query["accountId"] : "";
9953
+ try {
9954
+ const base = orgId ? await orgCloudUrl(orgId) : await cloudSessionStore.getCloudUrl(accountId || void 0) ?? getCloudApiUrl();
9955
+ const upstream = await fetch(`${base}/api/avatar/${encodeURIComponent(userId)}`, {
9956
+ headers: { [APP_VERSION_HEADER]: appVersion },
9957
+ signal: AbortSignal.timeout(15e3)
9958
+ });
9959
+ if (!upstream.ok) {
9960
+ res.status(upstream.status).end();
9961
+ return;
9962
+ }
9963
+ res.set("Content-Type", upstream.headers.get("content-type") ?? "application/octet-stream");
9964
+ res.set("X-Content-Type-Options", "nosniff");
9965
+ res.set("Content-Security-Policy", "default-src 'none'; sandbox");
9966
+ res.set("Cache-Control", "public, max-age=300");
9967
+ res.send(Buffer.from(await upstream.arrayBuffer()));
9968
+ } catch {
9969
+ res.status(502).end();
9970
+ }
9971
+ });
9813
9972
  proxyCloudStream("/api/cloud/chat/stream", "/api/chat/stream");
9814
9973
  proxyCloudStream("/api/cloud/kanban/stream", "/api/kanban/stream");
9815
9974
  app.post("/api/unlock", authLimiter, csrfMiddleware, express.json({ limit: "10kb" }), async (req, res) => {
@@ -10190,7 +10349,7 @@ async function createLocalServer() {
10190
10349
  ]);
10191
10350
  console.log("[server] Shutdown complete");
10192
10351
  };
10193
- const { initCompanion } = await import("./companion-NZU7FNID.js");
10352
+ const { initCompanion } = await import("./companion-7EFYZNCO.js");
10194
10353
  initCompanion();
10195
10354
  return { app, server, wss, shutdown };
10196
10355
  }
@@ -10637,4 +10796,4 @@ export {
10637
10796
  startProcess,
10638
10797
  stopProcess
10639
10798
  };
10640
- //# sourceMappingURL=src-MILB2SQA.js.map
10799
+ //# sourceMappingURL=src-SH5RPUNH.js.map