@runeya/runeya 2.0.106 → 2.0.108

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 (350) hide show
  1. package/agent-manager-EI7SXPN5.js +9 -0
  2. package/{chat-N6XONNVG.js → chat-WMT34BXJ.js} +6 -6
  3. package/{chunk-YQISK6BL.js → chunk-4SJCPFGK.js} +401 -72
  4. package/chunk-4SJCPFGK.js.map +1 -0
  5. package/{chunk-5GYBAMHV.js → chunk-D2PF2FYU.js} +2 -2
  6. package/{chunk-CQCCVPTX.js → chunk-DS66SEYH.js} +29 -7
  7. package/chunk-DS66SEYH.js.map +1 -0
  8. package/{chunk-NPORVPEO.js → chunk-RIITTBK3.js} +2 -2
  9. package/{chunk-LTLOVQJQ.js → chunk-ZFELQG4B.js} +49 -3
  10. package/chunk-ZFELQG4B.js.map +1 -0
  11. package/{companion-7AFRBUQI.js → companion-EPINTIC7.js} +4 -4
  12. package/index.js +3 -3
  13. package/package.json +1 -1
  14. package/settings-manager-YSH7ZCLP.js +9 -0
  15. package/{src-US4EBM64.js → src-LONZKLMU.js} +174 -42
  16. package/src-LONZKLMU.js.map +1 -0
  17. package/{vault-resolver-JR7TCITD.js → vault-resolver-57Q2DVOR.js} +8 -2
  18. package/web/assets/AgentScalarChatInterface.vue-CElmj8LJ.js +13 -0
  19. package/web/assets/AgentTerminalPage-hk46uwat.js +1 -0
  20. package/web/assets/AiChatPage-wCWG0TXA.js +1 -0
  21. package/web/assets/{AppLayout-EhZfYcsl.css → AppLayout-6LmWDDMH.css} +1 -1
  22. package/web/assets/AppLayout-CHxGU2pw.js +1 -0
  23. package/web/assets/AuditPage-CSRVCGZi.js +1 -0
  24. package/web/assets/CloudAccountPage-CfMY69pk.css +1 -0
  25. package/web/assets/CloudAccountPage-DjQdxy2v.js +1 -0
  26. package/web/assets/CloudAccountPage-UnmpE1jD.js +1 -0
  27. package/web/assets/CloudMessagingPage-BRwxGiH2.css +1 -0
  28. package/web/assets/CloudMessagingPage-jh1AWzKj.js +2 -0
  29. package/web/assets/DashboardPage-CiihNr9b.js +164 -0
  30. package/web/assets/DirectoryPickerDialog-Dy1zyHux.js +1 -0
  31. package/web/assets/{EditorIcon-BWhMJTSH.js → EditorIcon-DvX4OCO1.js} +2 -2
  32. package/web/assets/EnvironmentForm-D2JDn5Zc.js +108 -0
  33. package/web/assets/EnvironmentFormPage-BPDo_AMy.js +1 -0
  34. package/web/assets/EnvironmentListPage-BFT6nMkR.js +1 -0
  35. package/web/assets/KanbanBoardPage-6vbnqxkk.js +4 -0
  36. package/web/assets/KanbanBoardPage-CoTX8nB6.css +1 -0
  37. package/web/assets/KanbanListPage-BBLCnzN8.js +1 -0
  38. package/web/assets/LaunchProjectPage-BHLH3peH.css +1 -0
  39. package/web/assets/LaunchProjectPage-Cznkvcvm.js +1 -0
  40. package/web/assets/LaunchServicesPage-DwkYQefD.js +1 -0
  41. package/web/assets/LogViewer-x7JfZfN8.js +3 -0
  42. package/web/assets/OrgKeyPrompt-DPWfDcID.js +1 -0
  43. package/web/assets/{ProcessControls-B6blcC2b.js → ProcessControls-DPOmEvIy.js} +1 -1
  44. package/web/assets/ProcessDetailPage-BDsM9dnQ.js +1 -0
  45. package/web/assets/{ProcessMetrics-luXa72sd.js → ProcessMetrics-C2YI8_M5.js} +2 -2
  46. package/web/assets/{RandomJobTestPage-uuy7by63.js → RandomJobTestPage-DGA72-VM.js} +1 -1
  47. package/web/assets/ScenarioEditorPage-B4zEfHEz.js +14 -0
  48. package/web/assets/SendToChatDialog-8RfesH1F.js +1 -0
  49. package/web/assets/ServiceControlsBar-DLHgd13V.js +1 -0
  50. package/web/assets/ServiceDetailPage-na_wgdlZ.js +2 -0
  51. package/web/assets/ServiceFormPage-Cn_FPvKf.js +1 -0
  52. package/web/assets/{SettingsPage-CrzdGJlG.css → SettingsPage-B7yKfXK2.css} +1 -1
  53. package/web/assets/SettingsPage-QBOlzawK.js +2063 -0
  54. package/web/assets/UnlockPage-A75PjxBe.js +1 -0
  55. package/web/assets/VariablesTable-D8Oh3-1C.js +1 -0
  56. package/web/assets/VaultMigrationPage-DA9H-AhS.js +1 -0
  57. package/web/assets/VersionBadge-DNDzBQcJ.js +1 -0
  58. package/web/assets/WikiPage-DdY1dy8w.js +1 -0
  59. package/web/assets/WikiView-Td2Ice0P.js +1 -0
  60. package/web/assets/add-scalar-classes-D0W5Egzt.js +387 -0
  61. package/web/assets/{autocomplete-COj-K1Nc.js → autocomplete-DXp2_8rJ.js} +3 -3
  62. package/web/assets/{basic-shape-diamond.svg-Dw9kJc3l.js → basic-shape-diamond.svg-CUsdhYKG.js} +1 -1
  63. package/web/assets/{basic-shape-hexagon.svg-DeTUNvAm.js → basic-shape-hexagon.svg-BPfS9EDA.js} +1 -1
  64. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-CZe21n5k.js → basic-shape-primary-circle-ellipse-round.svg-C0Y2bkJl.js} +1 -1
  65. package/web/assets/{basic-shape-primary-square-rectangle.svg-DIvBb7uH.js → basic-shape-primary-square-rectangle.svg-1LwihH2B.js} +1 -1
  66. package/web/assets/{basic-shape-shield.svg-D2Ttq4yx.js → basic-shape-shield.svg-DGe2vG6Z.js} +1 -1
  67. package/web/assets/{browser-BtPtEa-Z.js → browser-CQu9nsVO.js} +1 -1
  68. package/web/assets/{browser-8qE0e05E.js → browser-QoavDMKL.js} +1 -1
  69. package/web/assets/{card-pbrPkbmk.js → card-zbAp8JZP.js} +2 -2
  70. package/web/assets/{checkbox-g16PaQaN.js → checkbox-BKV4svPN.js} +3 -3
  71. package/web/assets/{chip-B1jaR69s.js → chip-DA83o4Kg.js} +2 -2
  72. package/web/assets/client-Cb_xJW-8.js +24 -0
  73. package/web/assets/cloud-chat.store-BA5nPaX6.js +1 -0
  74. package/web/assets/cloud-client-C_MUljS_.js +1 -0
  75. package/web/assets/cloud-session-BRyDsLxd.js +1 -0
  76. package/web/assets/cloud-session-DqTwnX4d.js +2 -0
  77. package/web/assets/column-BVUPaQkA.js +907 -0
  78. package/web/assets/{computer-device-desktop-monitor.svg-BpU1vmqL.js → computer-device-desktop-monitor.svg-CAldNRkh.js} +1 -1
  79. package/web/assets/{computer-device-desktop.svg-CofWATKj.js → computer-device-desktop.svg-DwVKMGyS.js} +1 -1
  80. package/web/assets/{computer-device-laptop.svg-Bk0WdntU.js → computer-device-laptop.svg-fyjI7tSV.js} +1 -1
  81. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-4jDLeTUE.js → computer-device-mobile-phone-android-samsung-back.svg-CNHunNo4.js} +1 -1
  82. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-BtDfk53W.js → computer-device-mobile-phone-android-samsung.svg-WhhpuflD.js} +1 -1
  83. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-mrfLt2LS.js → computer-device-mobile-phone-iphone-x-back.svg-RveI1E1x.js} +1 -1
  84. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-D3hLzA-f.js → computer-device-mobile-phone-iphone-x.svg-Cyjp0aan.js} +1 -1
  85. package/web/assets/{computer-device-mobile-tablet-touch.svg-URFOvX2G.js → computer-device-mobile-tablet-touch.svg-u88Qx92m.js} +1 -1
  86. package/web/assets/{computer-device-mobile-tablet.svg-CIdkHAYo.js → computer-device-mobile-tablet.svg-Dzdz4e4O.js} +1 -1
  87. package/web/assets/{computer-device-network-ethernet-cat6.svg-BEC9unNd.js → computer-device-network-ethernet-cat6.svg-BW1j1BkJ.js} +1 -1
  88. package/web/assets/{computer-device-network-lan-www.svg-C_WEyWn-.js → computer-device-network-lan-www.svg-CxNGv37e.js} +1 -1
  89. package/web/assets/{computer-device-network-wifi-connection.svg-D2xhIyf7.js → computer-device-network-wifi-connection.svg-Ck3nAZv3.js} +1 -1
  90. package/web/assets/{computer-device-network-wifi-router.svg-DwIQxKAQ.js → computer-device-network-wifi-router.svg-gWXKoMXh.js} +1 -1
  91. package/web/assets/{cssMode-YcxdUWNT.js → cssMode-D8Jyxeqc.js} +1 -1
  92. package/web/assets/{divider-C95jkWZ7.js → divider-D-Mvqkj1.js} +2 -2
  93. package/web/assets/{docx-preview-B1K7Js_Q.js → docx-preview-DxSIfBtK.js} +1 -1
  94. package/web/assets/{ecology-science-erlenmeyer-flask.svg-DOmkHECy.js → ecology-science-erlenmeyer-flask.svg-psfHQe5z.js} +1 -1
  95. package/web/assets/{fieldset-DEPqiZWe.js → fieldset-oHSSpvVY.js} +2 -2
  96. package/web/assets/{freemarker2-Bzhvjbz4.js → freemarker2-DlJBY4WY.js} +1 -1
  97. package/web/assets/{handlebars-CymxzXg4.js → handlebars-DTEXdr2O.js} +1 -1
  98. package/web/assets/{html-CouVDmTR.js → html-eYBbc2Bx.js} +1 -1
  99. package/web/assets/{htmlMode-Be-vsCic.js → htmlMode-B4O_yjGK.js} +1 -1
  100. package/web/assets/{image-flash-lightning.svg-CTaPLIBa.js → image-flash-lightning.svg-r_oTLRoo.js} +1 -1
  101. package/web/assets/{image-picture-flower.svg-BkIdyuJf.js → image-picture-flower.svg-8nv9asUS.js} +1 -1
  102. package/web/assets/{index-DkeyMLje.js → index-B9x3uCZ9.js} +6 -6
  103. package/web/assets/{interface-alert-exclamation-diamond.svg-LE6wXJfb.js → interface-alert-exclamation-diamond.svg-A5K0l-78.js} +1 -1
  104. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-DnJUBUVG.js → interface-alert-exclamation-triangle-warning.svg-Dq66i82G.js} +1 -1
  105. package/web/assets/{interface-alert-information-circle.svg-BBESAf3A.js → interface-alert-information-circle.svg-B4ROZIk0.js} +1 -1
  106. package/web/assets/{interface-award-crown.svg-A9FnpbJ_.js → interface-award-crown.svg-DRnv1a4n.js} +1 -1
  107. package/web/assets/{interface-bookmark.svg-BMCuN1KQ.js → interface-bookmark-tag.svg-Dwwi4iOX.js} +1 -1
  108. package/web/assets/{interface-bookmark-tag.svg-CONBx7yi.js → interface-bookmark.svg-CopCSuT2.js} +1 -1
  109. package/web/assets/{interface-calendar-date-one.svg-BsHBSc-o.js → interface-calendar-date-one.svg-BxkYYC67.js} +1 -1
  110. package/web/assets/{interface-content-book-open-pages.svg-BsndNDne.js → interface-content-book-open-pages.svg-BJozsCHP.js} +1 -1
  111. package/web/assets/{interface-content-book-page.svg-D9O4ldas.js → interface-content-book-page.svg-CbWXY0Yb.js} +1 -1
  112. package/web/assets/{interface-content-file.svg-3hZDtYrB.js → interface-content-file.svg-Ck3RuXRm.js} +1 -1
  113. package/web/assets/{interface-content-folder.svg-D2PGz4rg.js → interface-content-folder.svg-LK0HJ4yQ.js} +1 -1
  114. package/web/assets/interface-content-folder.svg-pxt6DqMZ.js +1 -0
  115. package/web/assets/{interface-copy-clipboard.svg-DDENzgQo.js → interface-copy-clipboard.svg-vkTPN1aA.js} +1 -1
  116. package/web/assets/{interface-edit-attachment.svg-D2cQZV5Q.js → interface-edit-attachment.svg-CjCh5Lb1.js} +1 -1
  117. package/web/assets/{interface-edit-binocular.svg-DrIFa0gk.js → interface-edit-binocular.svg-Dos2P4t_.js} +1 -1
  118. package/web/assets/{interface-edit-magic-wand.svg-AnGByEQd.js → interface-edit-magic-wand.svg-fxAohPEI.js} +1 -1
  119. package/web/assets/{interface-edit-tool-paint-roller.svg-KNrFMeco.js → interface-edit-tool-paint-roller.svg-JLIYavUO.js} +1 -1
  120. package/web/assets/{interface-edit-tool-pencil.svg-DF9u9WDQ.js → interface-edit-tool-pencil.svg-Tkm527sw.js} +1 -1
  121. package/web/assets/{interface-favorite-award.svg-mkb9vXWE.js → interface-favorite-award.svg-O-HQC6xP.js} +1 -1
  122. package/web/assets/{interface-favorite-flag.svg-BDIYdX-W.js → interface-favorite-flag.svg-DWSuqI-W.js} +1 -1
  123. package/web/assets/{interface-favorite-heart.svg-DtIvO6z9.js → interface-favorite-heart.svg-3md2synz.js} +1 -1
  124. package/web/assets/{interface-favorite-star.svg-CEv2Io1P.js → interface-favorite-star.svg-MnNO7Wk6.js} +1 -1
  125. package/web/assets/{interface-favorite-stars-sparkles.svg-D0SoJbJE.js → interface-favorite-stars-sparkles.svg-WKCS18Oo.js} +1 -1
  126. package/web/assets/{interface-hierarchy-flowchart.svg-B-kMOZH8.js → interface-hierarchy-flowchart.svg-KnHJ7War.js} +1 -1
  127. package/web/assets/{interface-home-house.svg-FOYUzOig.js → interface-home-house.svg-2bdYCM0o.js} +1 -1
  128. package/web/assets/{interface-hyperlink.svg-BaPGYtZM.js → interface-hyperlink.svg-dTQQRFwy.js} +1 -1
  129. package/web/assets/{interface-lighting-brightness.svg-ddMiifOe.js → interface-lighting-brightness.svg-CwI2OM6O.js} +1 -1
  130. package/web/assets/{interface-lock-closed.svg-WGGCrOPW.js → interface-lock-closed.svg-BcnsrWQP.js} +1 -1
  131. package/web/assets/{interface-lock-open-unlock.svg-BHdzRkd9.js → interface-lock-open-unlock.svg-Du_CfbnO.js} +1 -1
  132. package/web/assets/{interface-login-key.svg-C-CaH8gN.js → interface-login-key.svg-C3Hh7Lxb.js} +1 -1
  133. package/web/assets/{interface-search.svg-BWvztnST.js → interface-search.svg-DRez-w7-.js} +1 -1
  134. package/web/assets/{interface-setting-cog.svg-BiiP7i7e.js → interface-setting-cog.svg-BbO7fWvj.js} +1 -1
  135. package/web/assets/{interface-share-megaphone-bullhorn.svg-BaNwYllj.js → interface-share-megaphone-bullhorn.svg-BbNIqS3V.js} +1 -1
  136. package/web/assets/{interface-share-rocket.svg-DpVzHxi1.js → interface-share-rocket.svg-NYzb39WL.js} +1 -1
  137. package/web/assets/{interface-share-satellite.svg-DVMadDln.js → interface-share-satellite.svg-BVbcZIy6.js} +1 -1
  138. package/web/assets/{interface-share-space-ship.svg-B1a7LlLT.js → interface-share-space-ship.svg-BFY5IO9d.js} +1 -1
  139. package/web/assets/{interface-share.svg-BknNtx4U.js → interface-share.svg-BTd9ID7k.js} +1 -1
  140. package/web/assets/{interface-signal-square.svg-DTf1mlii.js → interface-signal-square.svg-MjEdhTXk.js} +1 -1
  141. package/web/assets/{interface-time-clock-circle.svg-DT6LHPex.js → interface-time-clock-circle.svg-ChSylXjE.js} +1 -1
  142. package/web/assets/{interface-time-hour-glass.svg-CNCTqw_R.js → interface-time-hour-glass.svg-BZQl9M_C.js} +1 -1
  143. package/web/assets/{interface-users-multiple.svg-DuMlS4pH.js → interface-users-multiple.svg-BmvFtDD2.js} +1 -1
  144. package/web/assets/{interface-weather-moon.svg-BfOraF6E.js → interface-weather-moon.svg-CU_uP2aE.js} +1 -1
  145. package/web/assets/{javascript-CSbYcb4a.js → javascript-CzJXS_Bo.js} +1 -1
  146. package/web/assets/{jsonMode-BfABTJ_P.js → jsonMode-ClLnazHL.js} +1 -1
  147. package/web/assets/{liquid-D8zk2iFJ.js → liquid-k8yO1VdQ.js} +1 -1
  148. package/web/assets/{lspLanguageFeatures-CDjcX5cq.js → lspLanguageFeatures-BdUk3xiz.js} +3 -3
  149. package/web/assets/{mail-chat-bubble-square.svg-B57LhJ7L.js → mail-chat-bubble-square.svg-UruTYt7K.js} +1 -1
  150. package/web/assets/{mail-send-email-paper-airplane.svg-Zh4WfmfD.js → mail-send-email-paper-airplane.svg-CQ8gOMxm.js} +1 -1
  151. package/web/assets/{mail-send-envelope.svg-B3JTaotd.js → mail-send-envelope.svg-B8XF7xYz.js} +1 -1
  152. package/web/assets/{mdx-Rt1S5V6O.js → mdx-Dpg5Mbqd.js} +1 -1
  153. package/web/assets/{minus-h_LYd9EK.js → minus-CM-56m8R.js} +2 -2
  154. package/web/assets/modal-DD3RK2dR.js +5 -0
  155. package/web/assets/modal-DXywOsPE.js +1 -0
  156. package/web/assets/{money-cashier-receipt.svg-BYcjjmII.js → money-cashier-receipt.svg-BGvvrVYh.js} +1 -1
  157. package/web/assets/{money-currency-dollar-pay.svg-D_eoPfYw.js → money-currency-dollar-pay.svg-oPVgaUnC.js} +1 -1
  158. package/web/assets/{money-graph-arrow-increase.svg-BVafbTUR.js → money-graph-arrow-increase.svg-DbW43WXz.js} +1 -1
  159. package/web/assets/{money-graph-bar-chart-increase.svg-DFCnoSVq.js → money-graph-bar-chart-increase.svg-BecdDdvJ.js} +1 -1
  160. package/web/assets/multiselect-Bk3EZIJC.js +251 -0
  161. package/web/assets/{nature-ecology-leaf.svg-DI19KkR3.js → nature-ecology-leaf.svg-CZxwEqo2.js} +1 -1
  162. package/web/assets/{password-BQyr-83Q.js → password-CJ4ckRGW.js} +4 -4
  163. package/web/assets/{phone-telephone.svg-si7GWPbw.js → phone-telephone.svg-U4WTbEXR.js} +1 -1
  164. package/web/assets/{plus-yTeMgVZF.js → plus-DvnsNNSA.js} +6 -6
  165. package/web/assets/process.store-utLBiVI8.js +1 -0
  166. package/web/assets/{programming-bug.svg-C8_FsRk_.js → programming-bug.svg-D-ueh13g.js} +1 -1
  167. package/web/assets/{programming-cloud.svg-Djjnh8pM.js → programming-cloud.svg-DW3eNYjS.js} +1 -1
  168. package/web/assets/{programming-computer-database-server.svg-Cw72ZkUG.js → programming-computer-database-server.svg-bBeXwbmi.js} +1 -1
  169. package/web/assets/{programming-computer-database.svg-C0Z7_RVR.js → programming-computer-database.svg-DP1oJ-Xb.js} +1 -1
  170. package/web/assets/{programming-module-four-layout.svg-BvERcUAT.js → programming-module-four-layout.svg-BCRfiu3A.js} +1 -1
  171. package/web/assets/{programming-module-three.svg-BkoUon6u.js → programming-module-three.svg-Cb8y-suF.js} +1 -1
  172. package/web/assets/{programming-module.svg-CK1yw5W-.js → programming-module.svg-CCF23Kn-.js} +1 -1
  173. package/web/assets/{programming-script-code.svg-BhU73hpj.js → programming-script-code.svg-D7zugBoU.js} +1 -1
  174. package/web/assets/project-launch.store-D0bLcuPZ.js +1 -0
  175. package/web/assets/project.store-BcKEFAKW.js +1 -0
  176. package/web/assets/{python-CSf8HAN9.js → python-C2Xee937.js} +1 -1
  177. package/web/assets/{razor-BKjp9q-U.js → razor-DP11amFn.js} +1 -1
  178. package/web/assets/router-BhS8cxIJ.js +1 -0
  179. package/web/assets/settings-scope-KsJCT82K.js +1 -0
  180. package/web/assets/{settings.store-BBoXO9_c.js → settings.store-FxdXT3wT.js} +1 -1
  181. package/web/assets/{shopping-cart.svg-CgRtQ4k-.js → shopping-cart.svg-DWikcMT4.js} +1 -1
  182. package/web/assets/{shopping-gift-present.svg-XdAdBUaO.js → shopping-gift-present.svg-4RQmBLlg.js} +1 -1
  183. package/web/assets/{shopping-shipping-box-parcel-package.svg-BaFPv3xL.js → shopping-shipping-box-parcel-package.svg-D1lBxinA.js} +1 -1
  184. package/web/assets/src-BQn5mgNu.js +1 -0
  185. package/web/assets/src-Dq9wfPM5.css +1 -0
  186. package/web/assets/{src-DeCIcklm.js → src-Dwvd5kd0.js} +33 -33
  187. package/web/assets/src-vE4VZ3D3.js +572 -0
  188. package/web/assets/tabpanel-ep3FBKze.js +150 -0
  189. package/web/assets/{tag-new-circle.svg-BwxdYwp4.js → tag-new-circle.svg-C1MFrgC6.js} +1 -1
  190. package/web/assets/theme-DAUZuThi.js +1 -0
  191. package/web/assets/{toggleswitch-DKXm3drm.js → toggleswitch-6H_VuZ4L.js} +2 -2
  192. package/web/assets/{travel-map-earth-globe.svg-B3QIUens.js → travel-map-earth-globe.svg-tCJZglOg.js} +1 -1
  193. package/web/assets/trpc-DZ27KTOo.js +1 -0
  194. package/web/assets/{tsMode-KbYg0Qfw.js → tsMode-9MCfBuVI.js} +5 -5
  195. package/web/assets/{typescript-UzU12abv.js → typescript-BPNkI37D.js} +1 -1
  196. package/web/assets/useAiChatDrawer-tSsNrRPY.js +1 -0
  197. package/web/assets/useCloudOrg-kMh7h7gI.js +1 -0
  198. package/web/assets/useProjectCatalog-BkL5z9lS.js +1 -0
  199. package/web/assets/useProjectCloudOrg-qr_xZto1.js +1 -0
  200. package/web/assets/{xml-CkgxvNFc.js → xml-CsWY9129.js} +1 -1
  201. package/web/assets/{yaml-Cjr4aAq9.js → yaml-CUnJQoDT.js} +1 -1
  202. package/web/index.html +1 -1
  203. package/agent-manager-4XJUIZKL.js +0 -9
  204. package/chunk-CQCCVPTX.js.map +0 -1
  205. package/chunk-LTLOVQJQ.js.map +0 -1
  206. package/chunk-YQISK6BL.js.map +0 -1
  207. package/settings-manager-Y4GNAXOH.js +0 -9
  208. package/src-US4EBM64.js.map +0 -1
  209. package/web/assets/AgentScalarChatInterface.vue-BXv2YF_7.js +0 -13
  210. package/web/assets/AgentTerminalPage-HbM44kg8.js +0 -1
  211. package/web/assets/AiChatPage-BTsALiaV.js +0 -1
  212. package/web/assets/AppLayout-DJ1dZUtQ.js +0 -1
  213. package/web/assets/AuditPage-CF53LMHt.js +0 -1
  214. package/web/assets/CloudAccountPage-BttYjaR8.js +0 -1
  215. package/web/assets/CloudAccountPage-Dou70Ljn.js +0 -1
  216. package/web/assets/CloudAccountPage-g6lFVpsX.css +0 -1
  217. package/web/assets/CloudMessagingPage-D15sTToL.js +0 -2
  218. package/web/assets/CloudMessagingPage-Dl7hHYeb.css +0 -1
  219. package/web/assets/DashboardPage-inYgcB3J.js +0 -164
  220. package/web/assets/DirectoryPickerDialog-DDWbon2r.js +0 -1
  221. package/web/assets/EnvironmentForm-DG_9AXml.js +0 -108
  222. package/web/assets/EnvironmentFormPage-DYmI2BfZ.js +0 -1
  223. package/web/assets/EnvironmentListPage-D2l91HzS.js +0 -1
  224. package/web/assets/KanbanBoardPage-BOVq3zOt.css +0 -1
  225. package/web/assets/KanbanBoardPage-BPH1ywhH.js +0 -4
  226. package/web/assets/KanbanListPage-Bj9-EbPv.js +0 -1
  227. package/web/assets/LaunchProjectPage-CHpVVYBa.css +0 -1
  228. package/web/assets/LaunchProjectPage-ObKhBvlS.js +0 -1
  229. package/web/assets/LaunchServicesPage-CAdAAyfG.js +0 -1
  230. package/web/assets/LogViewer-QRpqcjXC.js +0 -3
  231. package/web/assets/OrgKeyPrompt-uMjz7Y5A.js +0 -1
  232. package/web/assets/ProcessDetailPage-Bi5vk4ah.js +0 -1
  233. package/web/assets/ScenarioEditorPage-oyhLaoVE.js +0 -14
  234. package/web/assets/SendToChatDialog-BnZEu35Q.js +0 -1
  235. package/web/assets/ServiceControlsBar-Dp3r57J4.js +0 -1
  236. package/web/assets/ServiceDetailPage-DBm79vOL.js +0 -2
  237. package/web/assets/ServiceFormPage-BGWjKCUH.js +0 -1
  238. package/web/assets/SettingsPage-BIVmZT7t.js +0 -2063
  239. package/web/assets/UnlockPage-DYRFhdrT.js +0 -1
  240. package/web/assets/VariablesTable-Cbc_RlnE.js +0 -1
  241. package/web/assets/VaultMigrationPage-GlJyIJAw.js +0 -1
  242. package/web/assets/VersionBadge-CSX89ryT.js +0 -1
  243. package/web/assets/WikiPage-DAPhZkpS.js +0 -1
  244. package/web/assets/WikiView-DyU4eNEh.js +0 -1
  245. package/web/assets/add-scalar-classes-CxpzHvBM.js +0 -387
  246. package/web/assets/client-DZg134cQ.js +0 -24
  247. package/web/assets/cloud-chat.store-D899jVQ4.js +0 -1
  248. package/web/assets/cloud-session-DSjPbs8C.js +0 -1
  249. package/web/assets/column-Pmg7Ma5f.js +0 -907
  250. package/web/assets/interface-content-folder.svg-GTysMuP_.js +0 -1
  251. package/web/assets/modal--Ilf4bg_.js +0 -5
  252. package/web/assets/modal-Wk0CWaUJ.js +0 -1
  253. package/web/assets/multiselect-DlGWFLJR.js +0 -251
  254. package/web/assets/process.store-CvrK-4rR.js +0 -1
  255. package/web/assets/project-launch.store-D5cyKKyw.js +0 -1
  256. package/web/assets/project.store-OwPRdjA0.js +0 -1
  257. package/web/assets/router-DuWVvMLT.js +0 -1
  258. package/web/assets/settings-scope-D7NFCXjg.js +0 -1
  259. package/web/assets/src-CRQ32_Qg.js +0 -1
  260. package/web/assets/src-S24lFUYb.js +0 -572
  261. package/web/assets/src-dpFgucNZ.css +0 -1
  262. package/web/assets/tabpanel-DbMhKzgJ.js +0 -150
  263. package/web/assets/theme-pRVEu5SJ.js +0 -1
  264. package/web/assets/trpc-Cf_8kWCl.js +0 -1
  265. package/web/assets/useAiChatDrawer-DCVhP5N0.js +0 -1
  266. package/web/assets/useCloudOrg-CXvwb5Fo.js +0 -1
  267. package/web/assets/useProjectCatalog-Bth_aDP4.js +0 -1
  268. package/web/assets/useProjectCloudOrg-MUCjKP3P.js +0 -1
  269. /package/{agent-manager-4XJUIZKL.js.map → agent-manager-EI7SXPN5.js.map} +0 -0
  270. /package/{chat-N6XONNVG.js.map → chat-WMT34BXJ.js.map} +0 -0
  271. /package/{chunk-5GYBAMHV.js.map → chunk-D2PF2FYU.js.map} +0 -0
  272. /package/{chunk-NPORVPEO.js.map → chunk-RIITTBK3.js.map} +0 -0
  273. /package/{companion-7AFRBUQI.js.map → companion-EPINTIC7.js.map} +0 -0
  274. /package/{settings-manager-Y4GNAXOH.js.map → settings-manager-YSH7ZCLP.js.map} +0 -0
  275. /package/{vault-resolver-JR7TCITD.js.map → vault-resolver-57Q2DVOR.js.map} +0 -0
  276. /package/web/assets/{abap-DIWaXxy4.js → abap-B8g_2xYy.js} +0 -0
  277. /package/web/assets/{apex-D4-KnjW_.js → apex-Bm8w4T5A.js} +0 -0
  278. /package/web/assets/{azcli-IfDsRCLo.js → azcli-BqdUW6F8.js} +0 -0
  279. /package/web/assets/{bat-DWkIEnW3.js → bat-Bngf0lQU.js} +0 -0
  280. /package/web/assets/{bicep-CsOqEKmZ.js → bicep-DzO554JS.js} +0 -0
  281. /package/web/assets/{browser-BRPZK8RN.js → browser-BJX5ZrVN.js} +0 -0
  282. /package/web/assets/{cameligo-CVJihesZ.js → cameligo-Bcy3ohdb.js} +0 -0
  283. /package/web/assets/{clojure-CPXjbAsV.js → clojure-CZbiqkDV.js} +0 -0
  284. /package/web/assets/{coffee-Dk6AGUBs.js → coffee-CDuhyV-7.js} +0 -0
  285. /package/web/assets/{cpp-D8TcNCkN.js → cpp-BklV8f4x.js} +0 -0
  286. /package/web/assets/{csharp-B_ijQZWm.js → csharp-BelR_XiC.js} +0 -0
  287. /package/web/assets/{csp-CT_qVlF1.js → csp-DUjeBS2K.js} +0 -0
  288. /package/web/assets/{css-BNKulUcx.js → css-CvbYbEko.js} +0 -0
  289. /package/web/assets/{cypher-BZUAEEC-.js → cypher-Dwrbk-SP.js} +0 -0
  290. /package/web/assets/{dart-H8Ri9IID.js → dart-BW1E5h9O.js} +0 -0
  291. /package/web/assets/{dockerfile-BibtL7_E.js → dockerfile-B41ilpF9.js} +0 -0
  292. /package/web/assets/{ecl-Cq6OzwoI.js → ecl-BZE6Vxna.js} +0 -0
  293. /package/web/assets/{elixir-DEzZo1Bn.js → elixir-CtYg0bLh.js} +0 -0
  294. /package/web/assets/{flow9-CJjg7TJH.js → flow9-Sgvy48_I.js} +0 -0
  295. /package/web/assets/{fsharp-vGx-8LrK.js → fsharp-BzAfXfKg.js} +0 -0
  296. /package/web/assets/{go-CHEkyua-.js → go-D7oonABu.js} +0 -0
  297. /package/web/assets/{graphql--iPbFyYe.js → graphql-BEN-qkl0.js} +0 -0
  298. /package/web/assets/{hcl-C8EkclQS.js → hcl-CE0OhwCq.js} +0 -0
  299. /package/web/assets/{ini-DkuTJDAH.js → ini-CCLtcvjA.js} +0 -0
  300. /package/web/assets/{java-DzuDjs1c.js → java-Bao8w_gp.js} +0 -0
  301. /package/web/assets/{julia-BUS80tf_.js → julia-Dr0hFYrl.js} +0 -0
  302. /package/web/assets/{kotlin-s0eIc-h2.js → kotlin-Cbfu8lcM.js} +0 -0
  303. /package/web/assets/{less-o5f3n-o_.js → less-BU4gEpXr.js} +0 -0
  304. /package/web/assets/{lexon-AgKBNlrf.js → lexon-GpBGGdTS.js} +0 -0
  305. /package/web/assets/{lua-DUTvSobZ.js → lua-DIPKk37y.js} +0 -0
  306. /package/web/assets/{m3-DoULJRPc.js → m3-CSOypKGf.js} +0 -0
  307. /package/web/assets/{markdown-f9-EhcTi.js → markdown-VDqAgkyM.js} +0 -0
  308. /package/web/assets/{mips-aCd_43tp.js → mips-BJWI6dX7.js} +0 -0
  309. /package/web/assets/{msdax-cwHq3sFu.js → msdax-BLpuE5Dc.js} +0 -0
  310. /package/web/assets/{mysql-ITCpZRvB.js → mysql-ZsxiEUoY.js} +0 -0
  311. /package/web/assets/{objective-c-BjU-4cpP.js → objective-c-DcQa1iPc.js} +0 -0
  312. /package/web/assets/{pascal-Dmt8LI08.js → pascal-u-hmXdyn.js} +0 -0
  313. /package/web/assets/{pascaligo-DrXjRBef.js → pascaligo-DqbP-1C6.js} +0 -0
  314. /package/web/assets/{perl-BbJKyW-Z.js → perl-CUeQpRkH.js} +0 -0
  315. /package/web/assets/{pgsql-CLT36ygM.js → pgsql-CQ7FhAFN.js} +0 -0
  316. /package/web/assets/{php-BIcyBKEQ.js → php-BEf_fu3E.js} +0 -0
  317. /package/web/assets/{pla-sVewnHw1.js → pla-CXNNbT0w.js} +0 -0
  318. /package/web/assets/{postiats-D9DrURSm.js → postiats-CIXLZwPb.js} +0 -0
  319. /package/web/assets/{powerquery-BEjdKhpn.js → powerquery-DnGPASFA.js} +0 -0
  320. /package/web/assets/{powershell-BynZyJK1.js → powershell-1Y1kqIZS.js} +0 -0
  321. /package/web/assets/{process-DIamAPAU.js → process-Cf4Ob2V-.js} +0 -0
  322. /package/web/assets/{protobuf-BQ34Qnv5.js → protobuf-Cfo9haoG.js} +0 -0
  323. /package/web/assets/{pug--jmF9o7P.js → pug-BujEZqmy.js} +0 -0
  324. /package/web/assets/{qsharp-BDe4Axn9.js → qsharp-BL9AqNGD.js} +0 -0
  325. /package/web/assets/{r-DpjaSKX3.js → r-D0dhpGOM.js} +0 -0
  326. /package/web/assets/{redis-C_Q-xUDt.js → redis-BMLwD7W9.js} +0 -0
  327. /package/web/assets/{redshift-CHNShrpo.js → redshift-CkHh73og.js} +0 -0
  328. /package/web/assets/{restructuredtext-CVN0W1xR.js → restructuredtext-DZ-LF65W.js} +0 -0
  329. /package/web/assets/{ruby-CaKcv4f1.js → ruby-UzPHTzc9.js} +0 -0
  330. /package/web/assets/{rust-CbqMT_Ew.js → rust-ja9NGnXZ.js} +0 -0
  331. /package/web/assets/{sb-DIdUmAXV.js → sb-BNdOJbMY.js} +0 -0
  332. /package/web/assets/{scala-DVyALEcz.js → scala-LlhkyN6l.js} +0 -0
  333. /package/web/assets/{scheme-Cox4VpHa.js → scheme-BAj99YIn.js} +0 -0
  334. /package/web/assets/{scss-MW_l4ZY_.js → scss-chS-xxB3.js} +0 -0
  335. /package/web/assets/{shared-sse-BjXwPkLo.js → shared-sse-_VzlL_VX.js} +0 -0
  336. /package/web/assets/{shell-CP5qAt5e.js → shell-CcH7eYIc.js} +0 -0
  337. /package/web/assets/{solidity-1ctHOHIb.js → solidity-cVvnqX-K.js} +0 -0
  338. /package/web/assets/{sophia-DRAqvk2I.js → sophia-BBT-EdFw.js} +0 -0
  339. /package/web/assets/{sparql-8_9Nt5xp.js → sparql-DGEqOrB6.js} +0 -0
  340. /package/web/assets/{sql-owsrW4c3.js → sql-CcTErTxM.js} +0 -0
  341. /package/web/assets/{st-BDgXslxD.js → st-Bjw-B4mN.js} +0 -0
  342. /package/web/assets/{swift-TE6gFxno.js → swift-Bid-7bBd.js} +0 -0
  343. /package/web/assets/{systemverilog-DVGMenxt.js → systemverilog-CXju7Nd-.js} +0 -0
  344. /package/web/assets/{tcl-D6NP8_oR.js → tcl-D-Dw7JFz.js} +0 -0
  345. /package/web/assets/{twig-CVnYtCc5.js → twig-BIPbzEWT.js} +0 -0
  346. /package/web/assets/{typespec-BkD2qKRU.js → typespec-UJSutGCV.js} +0 -0
  347. /package/web/assets/{uuid-u4W9vzU3.js → uuid--pMuF47W.js} +0 -0
  348. /package/web/assets/{vb--Oo_cy-E.js → vb-oyG_LJw0.js} +0 -0
  349. /package/web/assets/{w3c-keyname-Dfw8VxXe.js → w3c-keyname-DtJs0qQm.js} +0 -0
  350. /package/web/assets/{wgsl-CrnkJFcw.js → wgsl-DXZ6ljB6.js} +0 -0
@@ -11,6 +11,9 @@ import {
11
11
  NameSchema,
12
12
  OPENAI_COMPAT_BASE_URLS,
13
13
  OptionalProviderIdSchema,
14
+ accountForOrg,
15
+ accountForOrgOrThrow,
16
+ accountForOrgScope,
14
17
  apiKeyStore,
15
18
  appVersion,
16
19
  applyPersistedLanMode,
@@ -40,6 +43,7 @@ import {
40
43
  orgCloudUrl,
41
44
  protectedProcedure,
42
45
  publicProcedure,
46
+ readCloudIdentity,
43
47
  registerHttpServer,
44
48
  requireEnvAction,
45
49
  requireLoopbackOrToken,
@@ -56,9 +60,10 @@ import {
56
60
  serviceRouter,
57
61
  setLanMode,
58
62
  shutdownCodexAppServer,
63
+ soleAccountScope,
59
64
  startCliSession,
60
65
  vaultOfProject
61
- } from "./chunk-YQISK6BL.js";
66
+ } from "./chunk-4SJCPFGK.js";
62
67
  import {
63
68
  resolveCliInvocation,
64
69
  whichCommand
@@ -81,7 +86,7 @@ import {
81
86
  stopClaudeTranscriptWatcher,
82
87
  stopCodexTranscriptWatcher,
83
88
  verifyJwt
84
- } from "./chunk-CQCCVPTX.js";
89
+ } from "./chunk-DS66SEYH.js";
85
90
  import "./chunk-MD3VW4HQ.js";
86
91
  import {
87
92
  agentManager,
@@ -120,10 +125,10 @@ import {
120
125
  stableEncryptValue,
121
126
  traefikManager,
122
127
  unregisterInstance
123
- } from "./chunk-NPORVPEO.js";
128
+ } from "./chunk-RIITTBK3.js";
124
129
  import {
125
130
  settingsManager
126
- } from "./chunk-5GYBAMHV.js";
131
+ } from "./chunk-D2PF2FYU.js";
127
132
  import {
128
133
  AGENT_LONG_FETCH_TIMEOUT,
129
134
  AGENT_STOP_FETCH_TIMEOUT,
@@ -166,14 +171,16 @@ import {
166
171
  machineRoot,
167
172
  orgVaultRoot,
168
173
  projectVaultRoot,
174
+ readOrgAccounts,
169
175
  readOrgClouds,
170
176
  readOrgLogo,
171
177
  readOrgLogos,
172
178
  readOrgNames,
179
+ rememberOrgAccount,
173
180
  rememberOrgLogo,
174
181
  rememberOrgName,
175
182
  stampOrgCloud
176
- } from "./chunk-LTLOVQJQ.js";
183
+ } from "./chunk-ZFELQG4B.js";
177
184
 
178
185
  // ../server/src/create-server.ts
179
186
  import express from "express";
@@ -1638,6 +1645,10 @@ var setupRouter = router({
1638
1645
  const names = await readOrgNames();
1639
1646
  const clouds = await readOrgClouds();
1640
1647
  const currentCloud = getCloudApiUrl();
1648
+ const ownCloudUrls = /* @__PURE__ */ new Set([
1649
+ currentCloud,
1650
+ ...(await cloudSessionStore.list()).map((a) => a.cloudUrl.replace(/\/+$/, ""))
1651
+ ]);
1641
1652
  const [unreadableConversations, unreadableSecrets] = await Promise.all([
1642
1653
  conversationStore.unreadableByVault(),
1643
1654
  environmentStore.unreadableByVault()
@@ -1650,7 +1661,7 @@ var setupRouter = router({
1650
1661
  orgs: await Promise.all(orgs.map(async (orgId) => {
1651
1662
  const name = names[orgId] ?? null;
1652
1663
  const cloudUrl = clouds[orgId] ?? currentCloud;
1653
- const foreign = cloudUrl !== currentCloud;
1664
+ const foreign = !ownCloudUrls.has(cloudUrl.replace(/\/+$/, ""));
1654
1665
  const unreadable = {
1655
1666
  apiKeys: await apiKeyStore.unreadableCount(orgId),
1656
1667
  conversations: unreadableConversations.get(orgId) ?? 0,
@@ -5801,12 +5812,22 @@ var kanbanRouter = router({
5801
5812
  * agent can open it with its own file tools. The bytes never go through the
5802
5813
  * prompt: the card context lists the attachments, this returns a path.
5803
5814
  */
5804
- downloadAttachment: protectedProcedure.input(z19.object({ attachmentId: z19.string().max(128) })).mutation(async ({ input }) => {
5815
+ downloadAttachment: protectedProcedure.input(z19.object({
5816
+ attachmentId: z19.string().max(128),
5817
+ // La pièce jointe appartient à une organisation : la nommer dit sous quel
5818
+ // compte la demander. C'est le SEUL appel qui tolère de ne pas l'avoir —
5819
+ // un agent n'a qu'un identifiant de fichier — et il échoue alors en le
5820
+ // disant dès que ce poste a plusieurs comptes.
5821
+ orgId: z19.string().max(128).optional()
5822
+ })).mutation(async ({ input }) => {
5805
5823
  const id = input.attachmentId;
5806
5824
  if (!ATTACHMENT_ID_REGEX.test(id)) {
5807
5825
  throw new TRPCError16({ code: "BAD_REQUEST", message: "Invalid attachment id" });
5808
5826
  }
5809
- const res = await cloudFetch2(`/api/kanban/file/${id}`, { timeoutMs: 12e4 });
5827
+ const res = await cloudFetch2(`/api/kanban/file/${id}`, {
5828
+ timeoutMs: 12e4,
5829
+ accountId: input.orgId ? await accountForOrgScope(input.orgId) : await soleAccountScope()
5830
+ });
5810
5831
  if (res.status === 404) {
5811
5832
  throw new TRPCError16({ code: "NOT_FOUND", message: `Attachment ${id} not found` });
5812
5833
  }
@@ -6244,16 +6265,29 @@ async function isMaterialized(root) {
6244
6265
  return access(join9(root, "project.json")).then(() => true, () => false);
6245
6266
  }
6246
6267
  async function orgsToSync() {
6247
- const cloudUrl = getCloudApiUrl();
6248
- const stamps = await readOrgClouds();
6249
- const orgIds = /* @__PURE__ */ new Set();
6268
+ const [stamps, stampedAccounts, accounts] = await Promise.all([
6269
+ readOrgClouds(),
6270
+ readOrgAccounts(),
6271
+ cloudSessionStore.list()
6272
+ ]);
6273
+ const known = /* @__PURE__ */ new Set([
6274
+ getCloudApiUrl(),
6275
+ ...accounts.map((a) => a.cloudUrl.replace(/\/+$/, ""))
6276
+ ]);
6277
+ const fallback = accounts.length <= 1 ? accounts[0]?.cloudUrl.replace(/\/+$/, "") ?? getCloudApiUrl() : null;
6278
+ const targets = /* @__PURE__ */ new Map();
6250
6279
  for (const vault of await listCloudVaults()) {
6251
- if (orgIds.has(vault.orgId)) continue;
6252
- const stamped = stamps[vault.orgId];
6253
- if (stamped && stamped.replace(/\/+$/, "") !== cloudUrl) continue;
6254
- if (await isMaterialized(vault.root)) orgIds.add(vault.orgId);
6280
+ if (targets.has(vault.orgId)) continue;
6281
+ const stamped = stamps[vault.orgId]?.replace(/\/+$/, "");
6282
+ if (stamped ? !known.has(stamped) : fallback === null) continue;
6283
+ const cloudUrl = stamped ?? fallback;
6284
+ if (!cloudUrl) continue;
6285
+ const accountId = stampedAccounts[vault.orgId] ?? (accounts.length === 1 ? accounts[0].id : void 0);
6286
+ if (await isMaterialized(vault.root)) {
6287
+ targets.set(vault.orgId, { orgId: vault.orgId, cloudUrl, ...accountId ? { accountId } : {} });
6288
+ }
6255
6289
  }
6256
- return Array.from(orgIds, (orgId) => ({ orgId, cloudUrl }));
6290
+ return Array.from(targets.values());
6257
6291
  }
6258
6292
 
6259
6293
  // ../server/src/services/org-canary.ts
@@ -6289,7 +6323,8 @@ async function reconcileOrgCanary(orgId) {
6289
6323
  if (!local) throw new CanaryUnavailableError("This machine has no key canary yet.");
6290
6324
  const res = await cloudFetch("/api/auth/organization/canary", {
6291
6325
  method: "POST",
6292
- body: { organizationId: orgId, canary: local }
6326
+ body: { organizationId: orgId, canary: local },
6327
+ accountId: await accountForOrgOrThrow(orgId)
6293
6328
  });
6294
6329
  if (!res.ok) {
6295
6330
  throw new CanaryUnavailableError("Could not reach the organization on the cloud.");
@@ -6514,7 +6549,7 @@ var OrgSyncConnection = class {
6514
6549
  * treat as terminal exactly like a rejection from the cloud.
6515
6550
  */
6516
6551
  async authHeader() {
6517
- const token = await cloudSessionStore.getToken();
6552
+ const token = await cloudSessionStore.getToken(this.link.accountId);
6518
6553
  if (!token) throw new SyncAuthError(401);
6519
6554
  return `Bearer ${token}`;
6520
6555
  }
@@ -7362,6 +7397,10 @@ async function cloudMessage(res) {
7362
7397
  return "";
7363
7398
  }
7364
7399
  }
7400
+ async function accountScope(orgId) {
7401
+ const accountId = await accountForOrg(orgId);
7402
+ return accountId ? { accountId } : {};
7403
+ }
7365
7404
  async function assertOrgReadable(orgId) {
7366
7405
  try {
7367
7406
  await assertOrgVaultReadable(orgId);
@@ -7404,15 +7443,25 @@ var cloudSyncRouter = router({
7404
7443
  z23.object({
7405
7444
  orgId: z23.string().min(1).max(128),
7406
7445
  cloudUrl: z23.string().url().max(2048),
7407
- projectId: z23.string().min(1).max(128)
7446
+ projectId: z23.string().min(1).max(128),
7447
+ // Le compte sous lequel cette organisation a été listée. Tamponné avec
7448
+ // elle : c'est ce qui permettra à tout appel ultérieur de retrouver le
7449
+ // bon token sans qu'on ait à le lui redire.
7450
+ accountId: z23.string().max(64).optional()
7408
7451
  })
7409
7452
  ).mutation(async ({ input }) => {
7410
7453
  await assertOrgReadable(input.orgId);
7411
7454
  const connected = cloudSyncBridge.states().some((s) => s.orgId === input.orgId);
7412
7455
  if (!connected) {
7413
7456
  await assertOrgKey(input.orgId);
7414
- await stampOrgCloud(input.orgId, input.cloudUrl);
7415
- await cloudSyncBridge.connect({ orgId: input.orgId, cloudUrl: input.cloudUrl });
7457
+ await stampOrgCloud(input.orgId, input.cloudUrl, void 0, input.accountId);
7458
+ await cloudSyncBridge.connect({
7459
+ orgId: input.orgId,
7460
+ cloudUrl: input.cloudUrl,
7461
+ ...await accountScope(input.orgId)
7462
+ });
7463
+ } else if (input.accountId) {
7464
+ await stampOrgCloud(input.orgId, input.cloudUrl, void 0, input.accountId);
7416
7465
  }
7417
7466
  try {
7418
7467
  const pulled = await cloudSyncBridge.followProject(input.orgId, input.projectId);
@@ -7441,7 +7490,11 @@ var cloudSyncRouter = router({
7441
7490
  z23.object({
7442
7491
  orgId: z23.string().min(1).max(128),
7443
7492
  cloudUrl: z23.string().url().max(2048),
7444
- projectId: z23.string().min(1).max(128)
7493
+ projectId: z23.string().min(1).max(128),
7494
+ // Le compte sous lequel cette organisation a été listée. Tamponné avec
7495
+ // elle : c'est ce qui permettra à tout appel ultérieur de retrouver le
7496
+ // bon token sans qu'on ait à le lui redire.
7497
+ accountId: z23.string().max(64).optional()
7445
7498
  })
7446
7499
  ).mutation(async ({ input }) => {
7447
7500
  const local = await projectStore.get({ id: input.projectId, orgId: null });
@@ -7455,8 +7508,14 @@ var cloudSyncRouter = router({
7455
7508
  const connected = cloudSyncBridge.states().some((s) => s.orgId === input.orgId);
7456
7509
  if (!connected) {
7457
7510
  await assertOrgKey(input.orgId);
7458
- await stampOrgCloud(input.orgId, input.cloudUrl);
7459
- await cloudSyncBridge.connect({ orgId: input.orgId, cloudUrl: input.cloudUrl });
7511
+ await stampOrgCloud(input.orgId, input.cloudUrl, void 0, input.accountId);
7512
+ await cloudSyncBridge.connect({
7513
+ orgId: input.orgId,
7514
+ cloudUrl: input.cloudUrl,
7515
+ ...await accountScope(input.orgId)
7516
+ });
7517
+ } else if (input.accountId) {
7518
+ await stampOrgCloud(input.orgId, input.cloudUrl, void 0, input.accountId);
7460
7519
  }
7461
7520
  await projectStore.moveToOrg(input.projectId, input.orgId);
7462
7521
  await projectPathStore.relocate(
@@ -7488,7 +7547,7 @@ var cloudSyncRouter = router({
7488
7547
  })).query(async ({ input }) => {
7489
7548
  const res = await cloudFetch2(
7490
7549
  `/api/auth/organization/canary?organizationId=${encodeURIComponent(input.orgId)}`,
7491
- { method: "GET" }
7550
+ { method: "GET", accountId: await accountForOrgScope(input.orgId) }
7492
7551
  );
7493
7552
  if (!res.ok) {
7494
7553
  throw new TRPCError19({ code: "BAD_GATEWAY", message: await cloudMessage(res) || `CANARY_READ_FAILED (${res.status})` });
@@ -7511,7 +7570,7 @@ var cloudSyncRouter = router({
7511
7570
  if (!key) return { status: "unknown" };
7512
7571
  const res = await cloudFetch2(
7513
7572
  `/api/auth/organization/canary?organizationId=${encodeURIComponent(input.orgId)}`,
7514
- { method: "GET" }
7573
+ { method: "GET", accountId: await accountForOrgScope(input.orgId) }
7515
7574
  );
7516
7575
  if (!res.ok) return { status: "unknown" };
7517
7576
  const { canary } = await res.json();
@@ -7565,7 +7624,8 @@ var cloudSyncRouter = router({
7565
7624
  }
7566
7625
  const res = await cloudFetch2("/api/auth/organization/canary/reset", {
7567
7626
  method: "POST",
7568
- body: { organizationId: input.orgId, canary }
7627
+ body: { organizationId: input.orgId, canary },
7628
+ accountId: await accountForOrgScope(input.orgId)
7569
7629
  });
7570
7630
  if (!res.ok) {
7571
7631
  const detail = await cloudMessage(res);
@@ -7575,7 +7635,7 @@ var cloudSyncRouter = router({
7575
7635
  });
7576
7636
  }
7577
7637
  const cloudUrl = (await orgsToSync()).find((l) => l.orgId === input.orgId)?.cloudUrl ?? getCloudApiUrl();
7578
- await cloudSyncBridge.connect({ orgId: input.orgId, cloudUrl });
7638
+ await cloudSyncBridge.connect({ orgId: input.orgId, cloudUrl, ...await accountScope(input.orgId) });
7579
7639
  return { state: syncState(input.orgId) };
7580
7640
  }),
7581
7641
  /**
@@ -7612,7 +7672,10 @@ var cloudSyncRouter = router({
7612
7672
  try {
7613
7673
  res = await cloudFetch2("/api/auth/project/delete", {
7614
7674
  method: "POST",
7615
- body: { organizationId: input.orgId, projectId: input.projectId }
7675
+ body: { organizationId: input.orgId, projectId: input.projectId },
7676
+ // Dans le `try` : ne rien avoir à quoi rattacher l'organisation doit
7677
+ // ressortir comme CLOUD_NOT_LINKED, pas comme une erreur interne.
7678
+ accountId: await accountForOrgScope(input.orgId)
7616
7679
  });
7617
7680
  } catch (err) {
7618
7681
  if (err instanceof TRPCError19 && err.code === "PRECONDITION_FAILED") {
@@ -7649,6 +7712,35 @@ var cloudSyncRouter = router({
7649
7712
  * afficher. Le nom est donc recopié dans le tampon du coffre au passage, là
7650
7713
  * où il est déjà lu au démarrage suivant.
7651
7714
  */
7715
+ /**
7716
+ * Retenir à quel compte appartient chaque organisation.
7717
+ *
7718
+ * Poussé par l'interface avec ce que le cloud vient de répondre : une
7719
+ * organisation appartient au compte qui la LISTE. Le poste ne peut pas le
7720
+ * déduire — il l'a tenté, et il a rangé sous un compte les organisations
7721
+ * d'un autre. Même forme que `rememberOrgNames`, et pour la même raison :
7722
+ * ce que seul le cloud sait, on le recopie quand il le dit.
7723
+ */
7724
+ rememberOrgAccounts: protectedProcedure.input(z23.object({
7725
+ orgs: z23.array(z23.object({
7726
+ orgId: z23.string().min(1).max(128),
7727
+ accountId: z23.string().min(1).max(64)
7728
+ })).max(200)
7729
+ })).mutation(async ({ input }) => {
7730
+ const candidates = /* @__PURE__ */ new Map();
7731
+ for (const { orgId, accountId } of input.orgs) {
7732
+ candidates.set(orgId, [...candidates.get(orgId) ?? [], accountId]);
7733
+ }
7734
+ const current2 = await readOrgAccounts();
7735
+ let remembered = 0;
7736
+ for (const [orgId, accountIds] of candidates) {
7737
+ const kept = current2[orgId];
7738
+ if (kept && accountIds.includes(kept)) continue;
7739
+ await rememberOrgAccount(orgId, accountIds[0]);
7740
+ remembered++;
7741
+ }
7742
+ return { remembered };
7743
+ }),
7652
7744
  rememberOrgNames: protectedProcedure.input(z23.object({
7653
7745
  orgs: z23.array(z23.object({
7654
7746
  orgId: z23.string().min(1).max(128),
@@ -9568,7 +9660,12 @@ async function createLocalServer() {
9568
9660
  res.status(502).send("The cloud did not return a session token.");
9569
9661
  return;
9570
9662
  }
9571
- await cloudSessionStore.set(getCloudApiUrl(), sessionToken);
9663
+ const identity = await readCloudIdentity(getCloudApiUrl(), sessionToken);
9664
+ if (!identity) {
9665
+ res.status(502).send("The cloud did not say who this session belongs to.");
9666
+ return;
9667
+ }
9668
+ await cloudSessionStore.add(getCloudApiUrl(), sessionToken, identity);
9572
9669
  void cloudSyncBridge.resumeAll();
9573
9670
  res.redirect(`${returnTo}?cloud=linked`);
9574
9671
  } catch {
@@ -9589,16 +9686,18 @@ async function createLocalServer() {
9589
9686
  res.status(400).end();
9590
9687
  return;
9591
9688
  }
9592
- const token = await cloudSessionStore.getToken();
9593
- if (!token) {
9689
+ const accountId = await accountForOrg(organizationId);
9690
+ const token = accountId ? await cloudSessionStore.getToken(accountId) : null;
9691
+ if (!accountId || !token) {
9594
9692
  res.status(401).end();
9595
9693
  return;
9596
9694
  }
9695
+ const streamBase = await orgCloudUrl(organizationId);
9597
9696
  const upstreamAbort = new AbortController();
9598
9697
  req.on("close", () => upstreamAbort.abort());
9599
9698
  try {
9600
9699
  const upstream = await fetch(
9601
- `${getCloudApiUrl()}${upstreamPath}?organizationId=${encodeURIComponent(organizationId)}`,
9700
+ `${streamBase.replace(/\/+$/, "")}${upstreamPath}?organizationId=${encodeURIComponent(organizationId)}`,
9602
9701
  {
9603
9702
  headers: {
9604
9703
  Authorization: `Bearer ${token}`,
@@ -9647,16 +9746,18 @@ async function createLocalServer() {
9647
9746
  res.status(400).end();
9648
9747
  return;
9649
9748
  }
9650
- const token = await cloudSessionStore.getToken();
9651
- if (!token) {
9749
+ const accountId = await accountForOrg(organizationId);
9750
+ const token = accountId ? await cloudSessionStore.getToken(accountId) : null;
9751
+ if (!accountId || !token) {
9652
9752
  res.status(401).end();
9653
9753
  return;
9654
9754
  }
9755
+ const streamBase = await orgCloudUrl(organizationId);
9655
9756
  const upstreamQuery = new URLSearchParams({ organizationId });
9656
9757
  if (typeof req.query["name"] === "string") upstreamQuery.set("name", req.query["name"]);
9657
9758
  try {
9658
9759
  const upstream = await fetch(
9659
- `${getCloudApiUrl()}/api/kanban/image?${upstreamQuery.toString()}`,
9760
+ `${streamBase.replace(/\/+$/, "")}/api/kanban/image?${upstreamQuery.toString()}`,
9660
9761
  {
9661
9762
  method: "POST",
9662
9763
  headers: {
@@ -9683,14 +9784,16 @@ async function createLocalServer() {
9683
9784
  res.status(401).end();
9684
9785
  return;
9685
9786
  }
9686
- const token = await cloudSessionStore.getToken();
9787
+ const fileOrgId = typeof req.query["organizationId"] === "string" ? req.query["organizationId"] : "";
9788
+ const fileAccountId = fileOrgId ? await accountForOrg(fileOrgId) : null;
9789
+ const token = await cloudSessionStore.getToken(fileAccountId ?? void 0);
9687
9790
  if (!token) {
9688
9791
  res.status(401).end();
9689
9792
  return;
9690
9793
  }
9691
9794
  try {
9692
9795
  const upstream = await fetch(
9693
- `${getCloudApiUrl()}/api/kanban/file/${encodeURIComponent(req.params.id)}`,
9796
+ `${fileOrgId ? await orgCloudUrl(fileOrgId) : await cloudSessionStore.getCloudUrl(fileAccountId ?? void 0) ?? getCloudApiUrl()}/api/kanban/file/${encodeURIComponent(req.params.id)}`,
9694
9797
  {
9695
9798
  method: "DELETE",
9696
9799
  headers: { Authorization: `Bearer ${token}`, [APP_VERSION_HEADER]: appVersion },
@@ -9710,14 +9813,16 @@ async function createLocalServer() {
9710
9813
  res.status(401).end();
9711
9814
  return;
9712
9815
  }
9713
- const token = await cloudSessionStore.getToken();
9816
+ const fileOrgId = typeof req.query["organizationId"] === "string" ? req.query["organizationId"] : "";
9817
+ const fileAccountId = fileOrgId ? await accountForOrg(fileOrgId) : null;
9818
+ const token = await cloudSessionStore.getToken(fileAccountId ?? void 0);
9714
9819
  if (!token) {
9715
9820
  res.status(401).end();
9716
9821
  return;
9717
9822
  }
9718
9823
  try {
9719
9824
  const upstream = await fetch(
9720
- `${getCloudApiUrl()}/api/kanban/file/${encodeURIComponent(req.params.id)}`,
9825
+ `${fileOrgId ? await orgCloudUrl(fileOrgId) : await cloudSessionStore.getCloudUrl(fileAccountId ?? void 0) ?? getCloudApiUrl()}/api/kanban/file/${encodeURIComponent(req.params.id)}`,
9721
9826
  {
9722
9827
  headers: { Authorization: `Bearer ${token}`, [APP_VERSION_HEADER]: appVersion },
9723
9828
  signal: AbortSignal.timeout(3e5)
@@ -9737,6 +9842,33 @@ async function createLocalServer() {
9737
9842
  res.status(502).end();
9738
9843
  }
9739
9844
  });
9845
+ app.get("/api/cloud/avatar/:userId", async (req, res) => {
9846
+ const userId = req.params.userId;
9847
+ if (!/^[A-Za-z0-9._-]{1,128}$/.test(userId)) {
9848
+ res.status(400).end();
9849
+ return;
9850
+ }
9851
+ const orgId = typeof req.query["organizationId"] === "string" ? req.query["organizationId"] : "";
9852
+ const accountId = typeof req.query["accountId"] === "string" ? req.query["accountId"] : "";
9853
+ try {
9854
+ const base = orgId ? await orgCloudUrl(orgId) : await cloudSessionStore.getCloudUrl(accountId || void 0) ?? getCloudApiUrl();
9855
+ const upstream = await fetch(`${base}/api/avatar/${encodeURIComponent(userId)}`, {
9856
+ headers: { [APP_VERSION_HEADER]: appVersion },
9857
+ signal: AbortSignal.timeout(15e3)
9858
+ });
9859
+ if (!upstream.ok) {
9860
+ res.status(upstream.status).end();
9861
+ return;
9862
+ }
9863
+ res.set("Content-Type", upstream.headers.get("content-type") ?? "application/octet-stream");
9864
+ res.set("X-Content-Type-Options", "nosniff");
9865
+ res.set("Content-Security-Policy", "default-src 'none'; sandbox");
9866
+ res.set("Cache-Control", "public, max-age=300");
9867
+ res.send(Buffer.from(await upstream.arrayBuffer()));
9868
+ } catch {
9869
+ res.status(502).end();
9870
+ }
9871
+ });
9740
9872
  proxyCloudStream("/api/cloud/chat/stream", "/api/chat/stream");
9741
9873
  proxyCloudStream("/api/cloud/kanban/stream", "/api/kanban/stream");
9742
9874
  app.post("/api/unlock", authLimiter, csrfMiddleware, express.json({ limit: "10kb" }), async (req, res) => {
@@ -10117,7 +10249,7 @@ async function createLocalServer() {
10117
10249
  ]);
10118
10250
  console.log("[server] Shutdown complete");
10119
10251
  };
10120
- const { initCompanion } = await import("./companion-7AFRBUQI.js");
10252
+ const { initCompanion } = await import("./companion-EPINTIC7.js");
10121
10253
  initCompanion();
10122
10254
  return { app, server, wss, shutdown };
10123
10255
  }
@@ -10564,4 +10696,4 @@ export {
10564
10696
  startProcess,
10565
10697
  stopProcess
10566
10698
  };
10567
- //# sourceMappingURL=src-US4EBM64.js.map
10699
+ //# sourceMappingURL=src-LONZKLMU.js.map