@runeya/runeya 2.0.137 → 2.0.139
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agent/index.js +36 -10
- package/agent/index.js.map +1 -1
- package/agent-manager-NAGIMH2T.js +11 -0
- package/chat-Q2UMYXQL.js +21 -0
- package/{chunk-ZFELQG4B.js → chunk-EV3TBM7E.js} +78 -5
- package/chunk-EV3TBM7E.js.map +1 -0
- package/{chunk-FJLMXLMK.js → chunk-GLIU3J47.js} +354 -128
- package/chunk-GLIU3J47.js.map +1 -0
- package/{chunk-BDQOBEZ3.js → chunk-GOMF7NWS.js} +2 -2
- package/{desktop-launcher-3COY6F6H.js → chunk-GWQV5KKU.js} +193 -13
- package/chunk-GWQV5KKU.js.map +1 -0
- package/{chunk-5EMEJNVU.js → chunk-LE6XQ3OV.js} +13 -1
- package/chunk-LE6XQ3OV.js.map +1 -0
- package/{chunk-J4GLFY7G.js → chunk-MSICJEZD.js} +5 -5
- package/{chunk-NURPXHLB.js → chunk-OZBSOSAS.js} +26 -12
- package/chunk-OZBSOSAS.js.map +1 -0
- package/{chunk-P65BO7WZ.js → chunk-WNCXZ6E7.js} +165 -125
- package/chunk-WNCXZ6E7.js.map +1 -0
- package/{chunk-I7JHF5FE.js → chunk-XHGJHYDC.js} +4 -4
- package/chunk-YSYLL57J.js +87 -0
- package/chunk-YSYLL57J.js.map +1 -0
- package/{companion-Q67RAO3N.js → companion-MGX62L4T.js} +9 -7
- package/desktop-installer-page-OJTOKP7V.js +598 -0
- package/desktop-installer-page-OJTOKP7V.js.map +1 -0
- package/desktop-launcher-HKXP4LRI.js +43 -0
- package/desktop-wizard-XIDDAG7L.js +15 -0
- package/index.js +30 -21
- package/index.js.map +1 -1
- package/mcp-server/index.js +49 -1
- package/mcp-server/index.js.map +1 -1
- package/{node-4UUJN2WG.js → node-RN4URNZ5.js} +4 -4
- package/package.json +1 -1
- package/settings-manager-BBNCDDQJ.js +10 -0
- package/settings-manager-BBNCDDQJ.js.map +1 -0
- package/{src-7O3GCEIB.js → src-KWLVQD36.js} +193 -92
- package/src-KWLVQD36.js.map +1 -0
- package/{vault-resolver-57Q2DVOR.js → vault-resolver-B5P2OUI5.js} +20 -2
- package/vault-resolver-B5P2OUI5.js.map +1 -0
- package/web/assets/AgentScalarChatInterface.vue-CqGVVIo8.js +13 -0
- package/web/assets/AgentTerminalPage-mVD1jsWC.js +1 -0
- package/web/assets/AiChatPage-J-JAXhoT.js +1 -0
- package/web/assets/AppLayout-6eKmu_TP.css +1 -0
- package/web/assets/AppLayout-CsUnvWA0.js +1 -0
- package/web/assets/AuditPage-gzMJbY4c.js +1 -0
- package/web/assets/CloudAccountPage-CIUmdyoI.js +1 -0
- package/web/assets/CloudAccountPage-Cm1ibhZY.js +1 -0
- package/web/assets/CloudAccountPage-eoNciq1Q.css +1 -0
- package/web/assets/CloudMessagingPage-EV4MwYrk.js +2 -0
- package/web/assets/DashboardPage-CrMccWRA.js +1 -0
- package/web/assets/DirectoryPickerDialog-Cnr4SkLc.js +1 -0
- package/web/assets/DirectoryPickerDialog-D1lQ83i5.css +1 -0
- package/web/assets/{EditorIcon-DXYoMZnL.js → EditorIcon-Dlr9ami0.js} +2 -2
- package/web/assets/{EnvironmentForm-D3pZuxVn.js → EnvironmentForm-NiG4dzT9.js} +2 -2
- package/web/assets/EnvironmentFormPage-TJzOWwS7.js +1 -0
- package/web/assets/EnvironmentListPage-oR335kl1.js +1 -0
- package/web/assets/KanbanBoardPage-Cta-iCIL.css +1 -0
- package/web/assets/KanbanBoardPage-Dol6K6rI.js +4 -0
- package/web/assets/KanbanListPage-C2yhMB2L.js +1 -0
- package/web/assets/{KanbanListPage-DxJFx6A6.css → KanbanListPage-CEJ9Vluh.css} +1 -1
- package/web/assets/LaunchProjectPage-BGIRMKdM.js +1 -0
- package/web/assets/LaunchProjectPage-CU2iF25_.css +1 -0
- package/web/assets/LaunchServicesPage-9aAno4Gc.css +1 -0
- package/web/assets/LaunchServicesPage-DqIG8ZDk.js +1 -0
- package/web/assets/LaunchShell-C7RrqA4k.js +1 -0
- package/web/assets/LaunchShell-CGtjrl6_.css +1 -0
- package/web/assets/LogViewer-BWtCyqa4.js +3 -0
- package/web/assets/OrgKeyPrompt-B343sYVi.css +1 -0
- package/web/assets/OrgKeyPrompt-IjlZPHOI.js +1 -0
- package/web/assets/OrgLogo-B0TayK5W.js +1 -0
- package/web/assets/ProcessControls-Bw28Duzs.js +1 -0
- package/web/assets/ProcessDetailPage-CVYQJ4aI.js +1 -0
- package/web/assets/{ProcessMetrics-CdQc_8Z0.js → ProcessMetrics-D0HzDnGO.js} +3 -3
- package/web/assets/ProjectCreateDialog-CLFPf8ds.js +1 -0
- package/web/assets/ProjectCreateDialog-UEIYMerY.css +1 -0
- package/web/assets/ProjectLocationGate-D68jdBcV.js +1 -0
- package/web/assets/ProjectPublishDialog-CDpS6xcQ.css +1 -0
- package/web/assets/ProjectPublishDialog-Cvvjeuyq.js +1 -0
- package/web/assets/RandomJobTestPage-CuUJfwwb.js +2 -0
- package/web/assets/ScenarioEditorPage-Ckq6XNl2.js +14 -0
- package/web/assets/SendToChatDialog-4a4_2amD.js +1 -0
- package/web/assets/ServiceControlsBar-OC7cDCM7.js +1 -0
- package/web/assets/ServiceDetailPage-BMlS1q4i.js +2 -0
- package/web/assets/ServiceFormPage-CozmJNy1.js +1 -0
- package/web/assets/{SettingsPage-DA7lVKfg.css → SettingsPage-CF548HPl.css} +1 -1
- package/web/assets/SettingsPage-CkJQwWCW.js +2063 -0
- package/web/assets/UnlockPage-94m6Ap-H.js +1 -0
- package/web/assets/VaultMigrationPage-Bj6KgIUi.js +1 -0
- package/web/assets/VersionBadge-DjTAz-tn.js +1 -0
- package/web/assets/WikiPage-n_vxXevo.js +1 -0
- package/web/assets/WikiView-lxEITfCa.js +1 -0
- package/web/assets/add-scalar-classes-lFkCrmFv.js +387 -0
- package/web/assets/{autocomplete-DobAPPYJ.js → autocomplete-bClqtFV-.js} +3 -3
- package/web/assets/{basic-shape-diamond.svg-FbeAPLc-.js → basic-shape-diamond.svg-DFdUK3gN.js} +1 -1
- package/web/assets/{basic-shape-hexagon.svg-CtwcdpTe.js → basic-shape-hexagon.svg-BKiT9xxU.js} +1 -1
- package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-DsSs3S2_.js → basic-shape-primary-circle-ellipse-round.svg-tmXcRxRQ.js} +1 -1
- package/web/assets/{basic-shape-primary-square-rectangle.svg-CNe1RNx8.js → basic-shape-primary-square-rectangle.svg-C9duFSNc.js} +1 -1
- package/web/assets/{basic-shape-shield.svg-DwZMLfah.js → basic-shape-shield.svg-CLzO94DF.js} +1 -1
- package/web/assets/{browser-Dz1gvldT.js → browser-BEDlGGfe.js} +1 -1
- package/web/assets/{browser-DsZ9HxVm.js → browser-CivlztYP.js} +1 -1
- package/web/assets/card-wcTFC8yG.js +32 -0
- package/web/assets/{checkbox-DPknldTJ.js → checkbox-TtO_mmrY.js} +2 -2
- package/web/assets/{chevronup-D2Lr2GiV.js → chevronup-Cd93cHVj.js} +4 -4
- package/web/assets/{chip-Caiakd-N.js → chip-omKmLLWH.js} +2 -2
- package/web/assets/client-BKIls6aD.js +24 -0
- package/web/assets/cloud-chat.store-Bskr_EXO.js +1 -0
- package/web/assets/cloud-client-rcfqjfUK.js +1 -0
- package/web/assets/cloud-session-CycNU7YV.js +1 -0
- package/web/assets/cloud-session-DiaAeCJI.js +2 -0
- package/web/assets/column-DgtEciO-.js +763 -0
- package/web/assets/composables-Ce8WccBy.js +1 -0
- package/web/assets/{computer-device-desktop-monitor.svg-CwiGN14T.js → computer-device-desktop-monitor.svg-D3YaocxY.js} +1 -1
- package/web/assets/{computer-device-desktop.svg-BC2VdXDZ.js → computer-device-desktop.svg-lnn_cyCx.js} +1 -1
- package/web/assets/{computer-device-laptop.svg-BOp8AKN6.js → computer-device-laptop.svg-9f5_Ipnq.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-CmbpPX1u.js → computer-device-mobile-phone-android-samsung-back.svg-DxHwZI5u.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung.svg-_WGKWVtZ.js → computer-device-mobile-phone-android-samsung.svg-CnYqoXt4.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-DmLh97KG.js → computer-device-mobile-phone-iphone-x-back.svg-D8JfsF_0.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x.svg-C7-5mdyV.js → computer-device-mobile-phone-iphone-x.svg-CUbRWc7v.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet-touch.svg-DiUaSnhU.js → computer-device-mobile-tablet-touch.svg-CBX2kbI1.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet.svg-B6nfbYm_.js → computer-device-mobile-tablet.svg-CIn05KEg.js} +1 -1
- package/web/assets/{computer-device-network-ethernet-cat6.svg-DwtVKy79.js → computer-device-network-ethernet-cat6.svg-Dj0GRqXd.js} +1 -1
- package/web/assets/{computer-device-network-lan-www.svg-vQKfG3Xz.js → computer-device-network-lan-www.svg-D-G7js6t.js} +1 -1
- package/web/assets/{computer-device-network-wifi-connection.svg-DhHaOUge.js → computer-device-network-wifi-connection.svg-JnvMwBMA.js} +1 -1
- package/web/assets/{computer-device-network-wifi-router.svg-1dQS4k4J.js → computer-device-network-wifi-router.svg--XxSrk_J.js} +1 -1
- package/web/assets/{cssMode-CdQL22W5.js → cssMode-C3gHbz_w.js} +1 -1
- package/web/assets/{divider-DhYR4BAO.js → divider-eMI33mv1.js} +2 -2
- package/web/assets/{docx-preview-D-jP_CCs.js → docx-preview-CTkzTOcl.js} +1 -1
- package/web/assets/{ecology-science-erlenmeyer-flask.svg-D76wQVA2.js → ecology-science-erlenmeyer-flask.svg-DrHKX7bH.js} +1 -1
- package/web/assets/{fieldset-BtOjs_Hh.js → fieldset-CiIJH8Xe.js} +2 -2
- package/web/assets/{freemarker2-BADW9vhy.js → freemarker2-DWxB7Wcd.js} +1 -1
- package/web/assets/{handlebars-CwWQD_C8.js → handlebars-CWUdFsNH.js} +1 -1
- package/web/assets/{html-y87CEbe3.js → html-DhvF7iHg.js} +1 -1
- package/web/assets/{htmlMode-CVagtvVh.js → htmlMode-CIuDa6YW.js} +1 -1
- package/web/assets/{image-flash-lightning.svg-OvpKi3a3.js → image-flash-lightning.svg-qFK_1eYx.js} +1 -1
- package/web/assets/{image-picture-flower.svg-DLOePozT.js → image-picture-flower.svg-qAmkHnOu.js} +1 -1
- package/web/assets/{index-CcIrffU_.js → index-CzSAFmCu.js} +363 -363
- package/web/assets/index-D0IPNhsg.css +1 -0
- package/web/assets/{interface-alert-exclamation-diamond.svg-4Vk7SoQ1.js → interface-alert-exclamation-diamond.svg-Dugh0ymo.js} +1 -1
- package/web/assets/{interface-alert-exclamation-triangle-warning.svg-BLAvc4am.js → interface-alert-exclamation-triangle-warning.svg-8neoRFVP.js} +1 -1
- package/web/assets/{interface-alert-information-circle.svg-CaAXpDAI.js → interface-alert-information-circle.svg-DM9S7DBv.js} +1 -1
- package/web/assets/{interface-award-crown.svg-CW7XG0wx.js → interface-award-crown.svg--68HCcUG.js} +1 -1
- package/web/assets/{interface-bookmark.svg-BpLEuOv2.js → interface-bookmark-tag.svg-BESGrlZw.js} +1 -1
- package/web/assets/{interface-bookmark-tag.svg-DPWVVeZU.js → interface-bookmark.svg-CVadIwuA.js} +1 -1
- package/web/assets/{interface-calendar-date-one.svg-DbBgvI4W.js → interface-calendar-date-one.svg-D9XP9Dv_.js} +1 -1
- package/web/assets/{interface-content-book-open-pages.svg-BbsuvPZM.js → interface-content-book-open-pages.svg-DMI3yFmk.js} +1 -1
- package/web/assets/{interface-content-book-page.svg-DbRPz1j8.js → interface-content-book-page.svg-BPxSHq3g.js} +1 -1
- package/web/assets/{interface-content-file.svg-OJPKABxS.js → interface-content-file.svg-D0Mbjb8x.js} +1 -1
- package/web/assets/interface-content-folder.svg-D3wbwhAD.js +1 -0
- package/web/assets/{interface-content-folder.svg-3D_5OE_-.js → interface-content-folder.svg-EUO1l7Mn.js} +1 -1
- package/web/assets/{interface-copy-clipboard.svg-DqthVh9J.js → interface-copy-clipboard.svg-DI-wp72J.js} +1 -1
- package/web/assets/{interface-edit-attachment.svg-BAPCnZ0B.js → interface-edit-attachment.svg-CrWbaWn_.js} +1 -1
- package/web/assets/{interface-edit-binocular.svg-BoV39ouF.js → interface-edit-binocular.svg-BzUDq1Il.js} +1 -1
- package/web/assets/{interface-edit-magic-wand.svg-Cz36nKVn.js → interface-edit-magic-wand.svg-DaAdEL5x.js} +1 -1
- package/web/assets/{interface-edit-tool-paint-roller.svg-DZUQotD5.js → interface-edit-tool-paint-roller.svg-C972BXSM.js} +1 -1
- package/web/assets/{interface-edit-tool-pencil.svg-DBf1Y9Tj.js → interface-edit-tool-pencil.svg-47QCYH9f.js} +1 -1
- package/web/assets/{interface-favorite-award.svg-B93sRjxf.js → interface-favorite-award.svg-DROP-rzN.js} +1 -1
- package/web/assets/{interface-favorite-flag.svg-DKHuT11J.js → interface-favorite-flag.svg-B1gpMdkg.js} +1 -1
- package/web/assets/{interface-favorite-heart.svg-Bw5FZQ7d.js → interface-favorite-heart.svg-Dc0MMGJl.js} +1 -1
- package/web/assets/{interface-favorite-star.svg-CgLbct_b.js → interface-favorite-star.svg-D6A5KWft.js} +1 -1
- package/web/assets/{interface-favorite-stars-sparkles.svg-B7cYS4ef.js → interface-favorite-stars-sparkles.svg-CpEr4y41.js} +1 -1
- package/web/assets/{interface-hierarchy-flowchart.svg-zwuaRdWq.js → interface-hierarchy-flowchart.svg-DjvgRFcZ.js} +1 -1
- package/web/assets/{interface-home-house.svg-B85yMFCe.js → interface-home-house.svg-BMmVKlSc.js} +1 -1
- package/web/assets/{interface-hyperlink.svg-US6b-Svn.js → interface-hyperlink.svg-BewFXeyZ.js} +1 -1
- package/web/assets/{interface-lighting-brightness.svg-mZWkhb7f.js → interface-lighting-brightness.svg-B74_Fwt9.js} +1 -1
- package/web/assets/{interface-lock-closed.svg-9oHuNwuY.js → interface-lock-closed.svg-B_kTyHSd.js} +1 -1
- package/web/assets/{interface-lock-open-unlock.svg-DBetdJny.js → interface-lock-open-unlock.svg-BpmOnQWL.js} +1 -1
- package/web/assets/{interface-login-key.svg-BZnZTYd1.js → interface-login-key.svg-CjYpI4bh.js} +1 -1
- package/web/assets/{interface-search.svg-CMXAOoam.js → interface-search.svg-FJmFWdB4.js} +1 -1
- package/web/assets/{interface-setting-cog.svg-CKckatt7.js → interface-setting-cog.svg-CfzSne-G.js} +1 -1
- package/web/assets/{interface-share-megaphone-bullhorn.svg-DH7kVqN-.js → interface-share-megaphone-bullhorn.svg-CIIzDsMB.js} +1 -1
- package/web/assets/{interface-share-rocket.svg-BNXcMugi.js → interface-share-rocket.svg-DqTBI7lO.js} +1 -1
- package/web/assets/{interface-share-satellite.svg-Bb8t607w.js → interface-share-satellite.svg-nJfwIxpE.js} +1 -1
- package/web/assets/{interface-share-space-ship.svg-Dk4rbLtF.js → interface-share-space-ship.svg-hSmFC9Bt.js} +1 -1
- package/web/assets/{interface-share.svg-CtX8dq5i.js → interface-share.svg-DW5W5LS6.js} +1 -1
- package/web/assets/{interface-signal-square.svg-DmUIlYTd.js → interface-signal-square.svg-CxjWE1n9.js} +1 -1
- package/web/assets/{interface-time-clock-circle.svg-D2ZNaXT3.js → interface-time-clock-circle.svg-OliTsm3U.js} +1 -1
- package/web/assets/{interface-time-hour-glass.svg-Ddo-8hHe.js → interface-time-hour-glass.svg-Cq5G77ft.js} +1 -1
- package/web/assets/{interface-users-multiple.svg-Jh7S0sT4.js → interface-users-multiple.svg-BZxMlLou.js} +1 -1
- package/web/assets/{interface-weather-moon.svg-DbdQFgL2.js → interface-weather-moon.svg-lFXrwEyz.js} +1 -1
- package/web/assets/{javascript-BVGFyXBk.js → javascript-BVZ1omk1.js} +1 -1
- package/web/assets/{jsonMode-vnFlxYl9.js → jsonMode-CiBARvaV.js} +2 -2
- package/web/assets/{liquid-DieKMEvN.js → liquid-CUYREU3G.js} +1 -1
- package/web/assets/{lspLanguageFeatures-DoeI-8Y7.js → lspLanguageFeatures-BCfkeNgB.js} +3 -3
- package/web/assets/{mail-chat-bubble-square.svg-CApdU2ea.js → mail-chat-bubble-square.svg-DbOh-u2f.js} +1 -1
- package/web/assets/{mail-send-email-paper-airplane.svg-jjZ0KB32.js → mail-send-email-paper-airplane.svg-Ci3654Ap.js} +1 -1
- package/web/assets/{mail-send-envelope.svg-B6Tsoh-8.js → mail-send-envelope.svg-BUCSUoVb.js} +1 -1
- package/web/assets/{mdx-BCkszXid.js → mdx-GNBOgT3C.js} +1 -1
- package/web/assets/{minus-DfLQX3s2.js → minus-qBqqwoxz.js} +2 -2
- package/web/assets/modal-CsKPvO45.js +5 -0
- package/web/assets/modal-E9FRG--u.js +1 -0
- package/web/assets/{money-cashier-receipt.svg-DM-I8Snr.js → money-cashier-receipt.svg-qOZhZZs2.js} +1 -1
- package/web/assets/{money-currency-dollar-pay.svg-CkDRewrV.js → money-currency-dollar-pay.svg-WYlopKIm.js} +1 -1
- package/web/assets/{money-graph-arrow-increase.svg-BT4KLHWz.js → money-graph-arrow-increase.svg-DAcyYWIw.js} +1 -1
- package/web/assets/{money-graph-bar-chart-increase.svg-EvyIJ3Uu.js → money-graph-bar-chart-increase.svg-Bcjxz1Kd.js} +1 -1
- package/web/assets/multiselect-DiGSzibm.js +251 -0
- package/web/assets/{nature-ecology-leaf.svg-uZBwXdg9.js → nature-ecology-leaf.svg-d0AKmyxH.js} +1 -1
- package/web/assets/{password-D1R5w1qL.js → password-BwMjgK0Q.js} +4 -4
- package/web/assets/{phone-telephone.svg-BSvOskIB.js → phone-telephone.svg-BzKK2wbN.js} +1 -1
- package/web/assets/{plus-CNGSRnxy.js → plus-D6Rlmwbp.js} +6 -6
- package/web/assets/process.store-I5VZVT0x.js +1 -0
- package/web/assets/{programming-bug.svg-CLnGs4K-.js → programming-bug.svg-BtSROvd5.js} +1 -1
- package/web/assets/{programming-cloud.svg-CxBovXBR.js → programming-cloud.svg-YDPFJdYt.js} +1 -1
- package/web/assets/{programming-computer-database-server.svg-C1JmOyio.js → programming-computer-database-server.svg-C_7cgE9Q.js} +1 -1
- package/web/assets/{programming-computer-database.svg-BRjyOzP4.js → programming-computer-database.svg-CLw76mik.js} +1 -1
- package/web/assets/{programming-module-four-layout.svg-Blwzw6Qz.js → programming-module-four-layout.svg-BsoC5ySI.js} +1 -1
- package/web/assets/{programming-module-three.svg-6bkrmWsU.js → programming-module-three.svg-CThoMoAk.js} +1 -1
- package/web/assets/{programming-module.svg-CBS9xKxX.js → programming-module.svg-BQ1YjjAj.js} +1 -1
- package/web/assets/{programming-script-code.svg-BVhyoAD3.js → programming-script-code.svg-BKT_wilO.js} +1 -1
- package/web/assets/project-launch.store-CBnJKGQe.js +1 -0
- package/web/assets/project.store-JIcOcKSg.js +1 -0
- package/web/assets/{python-CiPYtj_d.js → python-BXwGt-Ip.js} +1 -1
- package/web/assets/{radiobutton--KWBHcDP.js → radiobutton-D20sH1UN.js} +3 -3
- package/web/assets/{razor-CSoWGP30.js → razor-RXambmP2.js} +1 -1
- package/web/assets/router-BXj_oCbf.js +1 -0
- package/web/assets/{selectbutton-C0NL5n4w.js → selectbutton-rLcf19Xf.js} +4 -4
- package/web/assets/settings-scope-Cy_9OGE1.js +1 -0
- package/web/assets/settings.store-DrKeFdgW.js +1 -0
- package/web/assets/{shopping-cart.svg-C-8NG_Po.js → shopping-cart.svg-EjTn3XQF.js} +1 -1
- package/web/assets/{shopping-gift-present.svg-Bp6q5VzJ.js → shopping-gift-present.svg-AQNlzazh.js} +1 -1
- package/web/assets/{shopping-shipping-box-parcel-package.svg-DeWaEIwm.js → shopping-shipping-box-parcel-package.svg-VB9n6UNi.js} +1 -1
- package/web/assets/src-ByEHJyfr.js +1 -0
- package/web/assets/{src-BHR3l7pa.js → src-CUwD1xPP.js} +35 -35
- package/web/assets/src-C_auNJtg.css +1 -0
- package/web/assets/{tag-new-circle.svg-CTljXsqE.js → tag-new-circle.svg-BllOd5JW.js} +1 -1
- package/web/assets/theme-DuAHBQRP.js +1 -0
- package/web/assets/{toggleswitch-d41l5g27.js → toggleswitch-C-88_GnB.js} +2 -2
- package/web/assets/{travel-map-earth-globe.svg-BUkcntCp.js → travel-map-earth-globe.svg-ChLDmmU9.js} +1 -1
- package/web/assets/trpc-BoKwANhj.js +1 -0
- package/web/assets/{tsMode-B2c-rCAa.js → tsMode-CIN3QIw8.js} +6 -6
- package/web/assets/{typescript-CmW4u_GQ.js → typescript-wXu_7Eym.js} +1 -1
- package/web/assets/useAiChatDrawer-Bs1Gxhn2.js +1 -0
- package/web/assets/{useCloudOrg-E4l-99WA.js → useCloudOrg-0AZ58M3V.js} +1 -1
- package/web/assets/useEnvVarAutocomplete-BXC_JUF7.js +102 -0
- package/web/assets/{useEnvVarAutocomplete-DsxEF6Ya.css → useEnvVarAutocomplete-dxAmKsn7.css} +1 -1
- package/web/assets/useProjectCloudOrg-UIfVePy9.js +1 -0
- package/web/assets/useServiceUrlHost-BXbIxPaT.js +1 -0
- package/web/assets/{xml-BxMqu3hT.js → xml-FTYGqn2R.js} +1 -1
- package/web/assets/{yaml-Djx7E3R1.js → yaml-DQEEK2dU.js} +1 -1
- package/web/index.html +2 -2
- package/agent-manager-FUU72VGH.js +0 -11
- package/chat-C26CBAZX.js +0 -21
- package/chunk-5EMEJNVU.js.map +0 -1
- package/chunk-FJLMXLMK.js.map +0 -1
- package/chunk-NURPXHLB.js.map +0 -1
- package/chunk-P65BO7WZ.js.map +0 -1
- package/chunk-ZFELQG4B.js.map +0 -1
- package/desktop-launcher-3COY6F6H.js.map +0 -1
- package/desktop-wizard-4CYANX2O.js +0 -209
- package/desktop-wizard-4CYANX2O.js.map +0 -1
- package/settings-manager-J4QBIU3T.js +0 -10
- package/src-7O3GCEIB.js.map +0 -1
- package/web/assets/AgentScalarChatInterface.vue-BGGkpyp3.js +0 -13
- package/web/assets/AgentTerminalPage-B8gLray2.js +0 -1
- package/web/assets/AiChatPage-BKITsyMx.js +0 -1
- package/web/assets/AppLayout-B72S4nTi.css +0 -1
- package/web/assets/AppLayout-BYw7v2sp.js +0 -1
- package/web/assets/AuditPage-nHTwzyia.js +0 -1
- package/web/assets/CloudAccountPage-DYOvfMjD.css +0 -1
- package/web/assets/CloudAccountPage-DuaZz2j4.js +0 -1
- package/web/assets/CloudAccountPage-XHxI-ixD.js +0 -1
- package/web/assets/CloudMessagingPage-B2N5K-Xs.js +0 -2
- package/web/assets/DashboardPage-VoWJeWh_.js +0 -1
- package/web/assets/DirectoryPickerDialog-B5SuJOhv.js +0 -1
- package/web/assets/DirectoryPickerDialog-Ctp1lYoS.css +0 -1
- package/web/assets/EnvironmentFormPage-BIXbPTN5.js +0 -1
- package/web/assets/EnvironmentListPage-CHa-Ni3w.js +0 -1
- package/web/assets/KanbanBoardPage-B46zbE2H.css +0 -1
- package/web/assets/KanbanBoardPage-BFTNpm8P.js +0 -4
- package/web/assets/KanbanListPage-CYuIrKXH.js +0 -1
- package/web/assets/LaunchProjectPage-9hhGBdOh.css +0 -1
- package/web/assets/LaunchProjectPage-jy-R3Fiw.js +0 -1
- package/web/assets/LaunchServicesPage-BMtm_8yP.css +0 -1
- package/web/assets/LaunchServicesPage-DX7nyo36.js +0 -1
- package/web/assets/LaunchShell-BHfseuPM.js +0 -1
- package/web/assets/LaunchShell-HenrOlHV.css +0 -1
- package/web/assets/LogViewer-C-pHXudR.js +0 -3
- package/web/assets/OrgKeyPrompt-CrHXZdKL.css +0 -1
- package/web/assets/OrgKeyPrompt-OPnK5oPm.js +0 -1
- package/web/assets/OrgLogo-Cxa49Tl3.js +0 -1
- package/web/assets/ProcessControls-DXDyR6XX.js +0 -1
- package/web/assets/ProcessDetailPage-DNKTwgPW.js +0 -1
- package/web/assets/RandomJobTestPage-BE8HkgSb.js +0 -2
- package/web/assets/ScenarioEditorPage-Coo6ExzZ.js +0 -14
- package/web/assets/SendToChatDialog-ClXerpCU.js +0 -1
- package/web/assets/ServiceControlsBar-C7HrPjQI.js +0 -1
- package/web/assets/ServiceDetailPage-Cxuy0Yix.js +0 -2
- package/web/assets/ServiceFormPage-CCOu1h8v.js +0 -1
- package/web/assets/SettingsPage-Dt1ViDQe.js +0 -2063
- package/web/assets/UnlockPage-C5iEOAKH.js +0 -1
- package/web/assets/VaultMigrationPage-CwRWvFY7.js +0 -1
- package/web/assets/VersionBadge-Bqb72GXf.js +0 -1
- package/web/assets/WikiPage-Bl1jDKKp.js +0 -1
- package/web/assets/WikiView-58u6vU3q.js +0 -1
- package/web/assets/add-scalar-classes-CT5KQbzH.js +0 -387
- package/web/assets/card-46tM5yU0.js +0 -32
- package/web/assets/client-KL5c1Dog.js +0 -24
- package/web/assets/cloud-chat.store-Belo5SKd.js +0 -1
- package/web/assets/cloud-client-Cqa2Udt8.js +0 -1
- package/web/assets/cloud-session-56bUtkSL.js +0 -2
- package/web/assets/cloud-session-Dqm0C6H5.js +0 -1
- package/web/assets/column-DQ53_qc6.js +0 -763
- package/web/assets/composables-CHyZa9ag.js +0 -1
- package/web/assets/index-CKOtBNaZ.css +0 -1
- package/web/assets/interface-content-folder.svg-8mYqkDao.js +0 -1
- package/web/assets/modal-CCco27Sn.js +0 -5
- package/web/assets/modal-D4J85_wC.js +0 -1
- package/web/assets/multiselect-BmjidXlj.js +0 -251
- package/web/assets/process.store-p1LqnpY2.js +0 -1
- package/web/assets/project-launch.store-BBYtCcv8.js +0 -1
- package/web/assets/project.store-D_2v7amt.js +0 -1
- package/web/assets/router-CRKT3825.js +0 -1
- package/web/assets/settings-scope-DblmUa3N.js +0 -1
- package/web/assets/settings.store-DKTQyerJ.js +0 -1
- package/web/assets/src-BN5gTC76.css +0 -1
- package/web/assets/src-BRLkogf3.js +0 -1
- package/web/assets/theme-BZzt_Sgl.js +0 -1
- package/web/assets/trpc-Db0Atu8A.js +0 -1
- package/web/assets/useAiChatDrawer-0QJJVXul.js +0 -1
- package/web/assets/useEnvVarAutocomplete-BDqUWoGr.js +0 -102
- package/web/assets/useProjectCatalog-Cxt-hL1H.js +0 -1
- package/web/assets/useProjectCloudOrg-CwLTQLIO.js +0 -1
- package/web/assets/useServiceUrlHost-VIA3uP5-.js +0 -1
- /package/{agent-manager-FUU72VGH.js.map → agent-manager-NAGIMH2T.js.map} +0 -0
- /package/{chat-C26CBAZX.js.map → chat-Q2UMYXQL.js.map} +0 -0
- /package/{chunk-BDQOBEZ3.js.map → chunk-GOMF7NWS.js.map} +0 -0
- /package/{chunk-J4GLFY7G.js.map → chunk-MSICJEZD.js.map} +0 -0
- /package/{chunk-I7JHF5FE.js.map → chunk-XHGJHYDC.js.map} +0 -0
- /package/{companion-Q67RAO3N.js.map → companion-MGX62L4T.js.map} +0 -0
- /package/{node-4UUJN2WG.js.map → desktop-launcher-HKXP4LRI.js.map} +0 -0
- /package/{settings-manager-J4QBIU3T.js.map → desktop-wizard-XIDDAG7L.js.map} +0 -0
- /package/{vault-resolver-57Q2DVOR.js.map → node-RN4URNZ5.js.map} +0 -0
- /package/web/assets/{abap-BwLGULgU.js → abap-CRsXUZTC.js} +0 -0
- /package/web/assets/{apex-BmwhxS2n.js → apex-CN6ZSzwM.js} +0 -0
- /package/web/assets/{azcli-7RvE_Zal.js → azcli-ULFzG1xV.js} +0 -0
- /package/web/assets/{bat-DRPmS6Na.js → bat-BVH8lwB4.js} +0 -0
- /package/web/assets/{bicep-BwfkS7ZV.js → bicep-B8jMqZ8i.js} +0 -0
- /package/web/assets/{browser-D3d3061H.js → browser-xa0YgePN.js} +0 -0
- /package/web/assets/{cameligo-BJ_mdC8E.js → cameligo-DuuRwBiE.js} +0 -0
- /package/web/assets/{clojure-CQKq7DWt.js → clojure-DUpiEmPZ.js} +0 -0
- /package/web/assets/{coffee-DJRj2iwd.js → coffee-BO4ou798.js} +0 -0
- /package/web/assets/{cpp-BC1yJTUW.js → cpp-CHOtY2DW.js} +0 -0
- /package/web/assets/{csharp-D6U2fAAT.js → csharp-D3t5O1XD.js} +0 -0
- /package/web/assets/{csp-B2Ue_UmV.js → csp-CJpJWgPE.js} +0 -0
- /package/web/assets/{css-CEzlcbMY.js → css-CAeYpQS5.js} +0 -0
- /package/web/assets/{cypher-D5Sg38Yj.js → cypher-D9-TC6ep.js} +0 -0
- /package/web/assets/{dart-BhjKRv6v.js → dart-CYoMdUUD.js} +0 -0
- /package/web/assets/{dockerfile-BnivEbtE.js → dockerfile-B2ffS5e2.js} +0 -0
- /package/web/assets/{ecl-TS1StLK1.js → ecl-BL_MLv5o.js} +0 -0
- /package/web/assets/{elixir-BX9ta6DO.js → elixir-DTTK5HpM.js} +0 -0
- /package/web/assets/{flow9-CoOB42ee.js → flow9-CnqIliGA.js} +0 -0
- /package/web/assets/{fsharp-DmQslDFn.js → fsharp-BtsygJkw.js} +0 -0
- /package/web/assets/{go-BbEGGooY.js → go-DksUoC0w.js} +0 -0
- /package/web/assets/{graphql-E24y5sn9.js → graphql-DCtJGb0Q.js} +0 -0
- /package/web/assets/{hcl-pBZphP8G.js → hcl-Vm6MaTNZ.js} +0 -0
- /package/web/assets/{ini-BSbRgr25.js → ini-DdyyiZLB.js} +0 -0
- /package/web/assets/{java-D8KvzsMp.js → java-D9tw0Sq3.js} +0 -0
- /package/web/assets/{julia-BDRytf15.js → julia-DsaDhMSi.js} +0 -0
- /package/web/assets/{kotlin-CNcQo-uP.js → kotlin-eMyqSg05.js} +0 -0
- /package/web/assets/{less-0HRV-2Rz.js → less-BTExquT2.js} +0 -0
- /package/web/assets/{lexon-DdJG3_pW.js → lexon-Btiu1CPR.js} +0 -0
- /package/web/assets/{lua-Blq8Mukj.js → lua-uIHSqSt_.js} +0 -0
- /package/web/assets/{m3-CXbmzr9W.js → m3-DtY-QwwW.js} +0 -0
- /package/web/assets/{markdown-DFIISzT8.js → markdown-DalwAnMR.js} +0 -0
- /package/web/assets/{mips-C2XSYglv.js → mips-BocGRfi2.js} +0 -0
- /package/web/assets/{msdax-D3Jl6oAY.js → msdax-CQFbyz50.js} +0 -0
- /package/web/assets/{mysql-mCqxt_Co.js → mysql-BM8uo0J8.js} +0 -0
- /package/web/assets/{objective-c-CUKLr4E9.js → objective-c-H3c5-SZb.js} +0 -0
- /package/web/assets/{pascal-BpqDI6Ur.js → pascal-BgiV8eY7.js} +0 -0
- /package/web/assets/{pascaligo-BVchPyL4.js → pascaligo-DT9ZcxD2.js} +0 -0
- /package/web/assets/{perl-Dgc9v23P.js → perl-B0U4-W-w.js} +0 -0
- /package/web/assets/{pgsql-Dk9IX1G_.js → pgsql-B6kZRXs9.js} +0 -0
- /package/web/assets/{php-XeFLn3yL.js → php-DG9vCwQM.js} +0 -0
- /package/web/assets/{pla-DQMfrdXZ.js → pla-B4Y4wk5I.js} +0 -0
- /package/web/assets/{postiats-DiKrdL3K.js → postiats-C_eWfeAP.js} +0 -0
- /package/web/assets/{powerquery-Cj9Q91Zv.js → powerquery-DfX2HFDF.js} +0 -0
- /package/web/assets/{powershell-DxLElnzU.js → powershell-Bxsmga8Z.js} +0 -0
- /package/web/assets/{protobuf-7vT2HdZD.js → protobuf-BjgmCR9H.js} +0 -0
- /package/web/assets/{pug-oi96TUbQ.js → pug-ryXuxA3i.js} +0 -0
- /package/web/assets/{qsharp-DNr9IwS2.js → qsharp-91Kv1jwy.js} +0 -0
- /package/web/assets/{r-C-REi_Zk.js → r-j6OkO-Lp.js} +0 -0
- /package/web/assets/{redis-BvOCrLoN.js → redis-B2Usw_gW.js} +0 -0
- /package/web/assets/{redshift-jNEw-REz.js → redshift-Bl5n-UlH.js} +0 -0
- /package/web/assets/{restructuredtext-B9ET-x7N.js → restructuredtext-IIWeXmeu.js} +0 -0
- /package/web/assets/{ruby-BIEBiJDZ.js → ruby-DQH1R4pC.js} +0 -0
- /package/web/assets/{rust-BnoIVewm.js → rust-BJi0001n.js} +0 -0
- /package/web/assets/{sb-Bwvy9clh.js → sb-C34JQX0H.js} +0 -0
- /package/web/assets/{scala-DPv5zS47.js → scala-BqHjuqsC.js} +0 -0
- /package/web/assets/{scheme-BQqNVxf_.js → scheme-DIfjDH23.js} +0 -0
- /package/web/assets/{scss-Ck1AFDEz.js → scss-MxgEDdb7.js} +0 -0
- /package/web/assets/{shell-C4IYs9Z7.js → shell-D_SMEq6l.js} +0 -0
- /package/web/assets/{solidity-D3bS77xq.js → solidity-CyBHDO6p.js} +0 -0
- /package/web/assets/{sophia-BSTVfueD.js → sophia-8_L-7Xrk.js} +0 -0
- /package/web/assets/{sparql-BGcXD7s2.js → sparql-CXxyP-1c.js} +0 -0
- /package/web/assets/{sql-CIsSgyam.js → sql-DNd4NFJw.js} +0 -0
- /package/web/assets/{st-dV1d_AXx.js → st-DPFJcK-4.js} +0 -0
- /package/web/assets/{swift-CK8gXWQn.js → swift-DE_LJ5Ub.js} +0 -0
- /package/web/assets/{systemverilog-B9tHBIJU.js → systemverilog-IgPgwLQ7.js} +0 -0
- /package/web/assets/{tcl-BgRT60RV.js → tcl-Cr-fmmH0.js} +0 -0
- /package/web/assets/{twig-CGkLO4Nl.js → twig-Dd_ODPfV.js} +0 -0
- /package/web/assets/{typespec-DMP9WuzC.js → typespec-CeK8X8vB.js} +0 -0
- /package/web/assets/{uuid-H0yY5A03.js → uuid-6HQMUkhT.js} +0 -0
- /package/web/assets/{vb-DfSbhl3d.js → vb-CyLVxxH6.js} +0 -0
- /package/web/assets/{wgsl-CaJmoLY5.js → wgsl-CmRFGM3r.js} +0 -0
|
@@ -51,11 +51,8 @@ import {
|
|
|
51
51
|
requireEnvAction,
|
|
52
52
|
requireLoopbackOrToken,
|
|
53
53
|
requireServiceAction,
|
|
54
|
-
resolveAgentCwd,
|
|
55
|
-
resolveConversationCwd,
|
|
56
54
|
resolveEffectiveAgentId,
|
|
57
55
|
resolveServiceVariables,
|
|
58
|
-
resolveWorkspaceCwd,
|
|
59
56
|
router,
|
|
60
57
|
scenarioRunStore,
|
|
61
58
|
scenarioStore,
|
|
@@ -65,12 +62,12 @@ import {
|
|
|
65
62
|
soleAccountScope,
|
|
66
63
|
startCliSession,
|
|
67
64
|
vaultOfProject
|
|
68
|
-
} from "./chunk-
|
|
65
|
+
} from "./chunk-WNCXZ6E7.js";
|
|
69
66
|
import {
|
|
70
67
|
settingsManager
|
|
71
|
-
} from "./chunk-
|
|
68
|
+
} from "./chunk-XHGJHYDC.js";
|
|
72
69
|
import {
|
|
73
|
-
|
|
70
|
+
LocalProjectRefusedError,
|
|
74
71
|
activeSessionRegistry,
|
|
75
72
|
companionDefaultPrompt,
|
|
76
73
|
companionSettings,
|
|
@@ -81,14 +78,16 @@ import {
|
|
|
81
78
|
holdsRuneyaProject,
|
|
82
79
|
projectPathStore,
|
|
83
80
|
projectStore,
|
|
81
|
+
resolveAgentCwd,
|
|
82
|
+
resolveConversationCwd,
|
|
83
|
+
resolveWorkspaceCwd,
|
|
84
84
|
signJwt,
|
|
85
85
|
startClaudeTranscriptWatcher,
|
|
86
86
|
startCodexTranscriptWatcher,
|
|
87
87
|
stopClaudeTranscriptWatcher,
|
|
88
88
|
stopCodexTranscriptWatcher,
|
|
89
89
|
verifyJwt
|
|
90
|
-
} from "./chunk-
|
|
91
|
-
import "./chunk-MD3VW4HQ.js";
|
|
90
|
+
} from "./chunk-GLIU3J47.js";
|
|
92
91
|
import {
|
|
93
92
|
agentManager,
|
|
94
93
|
agentSpawner,
|
|
@@ -127,13 +126,14 @@ import {
|
|
|
127
126
|
stableEncryptValue,
|
|
128
127
|
traefikManager,
|
|
129
128
|
unregisterInstance
|
|
130
|
-
} from "./chunk-
|
|
129
|
+
} from "./chunk-MSICJEZD.js";
|
|
131
130
|
import {
|
|
132
131
|
atomicWriteSecure,
|
|
133
132
|
renameWithRetry,
|
|
134
133
|
resolveConversationRunDir,
|
|
135
134
|
sweepStaleTempFiles
|
|
136
|
-
} from "./chunk-
|
|
135
|
+
} from "./chunk-GOMF7NWS.js";
|
|
136
|
+
import "./chunk-MD3VW4HQ.js";
|
|
137
137
|
import {
|
|
138
138
|
AGENT_LONG_FETCH_TIMEOUT,
|
|
139
139
|
AGENT_STOP_FETCH_TIMEOUT,
|
|
@@ -170,9 +170,10 @@ import {
|
|
|
170
170
|
serviceSlug,
|
|
171
171
|
suggestBuiltinReferences,
|
|
172
172
|
writeEntity
|
|
173
|
-
} from "./chunk-
|
|
173
|
+
} from "./chunk-LE6XQ3OV.js";
|
|
174
174
|
import {
|
|
175
175
|
allVaultRoots,
|
|
176
|
+
backfillOrgCloud,
|
|
176
177
|
env,
|
|
177
178
|
forgetOrgLogo,
|
|
178
179
|
keyRoot,
|
|
@@ -180,6 +181,7 @@ import {
|
|
|
180
181
|
legacyVaultRoot,
|
|
181
182
|
listCloudVaults,
|
|
182
183
|
listOrgVaults,
|
|
184
|
+
localVaultCollidesWithMachineRoot,
|
|
183
185
|
machineFilePath,
|
|
184
186
|
machineRoot,
|
|
185
187
|
orgVaultRoot,
|
|
@@ -192,14 +194,15 @@ import {
|
|
|
192
194
|
rememberOrgAccount,
|
|
193
195
|
rememberOrgLogo,
|
|
194
196
|
rememberOrgName,
|
|
195
|
-
stampOrgCloud
|
|
196
|
-
|
|
197
|
+
stampOrgCloud,
|
|
198
|
+
vaultFor
|
|
199
|
+
} from "./chunk-EV3TBM7E.js";
|
|
197
200
|
import {
|
|
198
201
|
decryptValueWith,
|
|
199
202
|
encryptValueWith,
|
|
200
203
|
resolveCliInvocation,
|
|
201
204
|
whichCommand
|
|
202
|
-
} from "./chunk-
|
|
205
|
+
} from "./chunk-OZBSOSAS.js";
|
|
203
206
|
|
|
204
207
|
// ../server/src/create-server.ts
|
|
205
208
|
import express from "express";
|
|
@@ -520,6 +523,7 @@ var changelogRouter = router({
|
|
|
520
523
|
|
|
521
524
|
// ../server/src/trpc/routers/project.ts
|
|
522
525
|
import { z as z4 } from "zod";
|
|
526
|
+
import { dirname as dirname2, isAbsolute } from "path";
|
|
523
527
|
import { TRPCError as TRPCError2 } from "@trpc/server";
|
|
524
528
|
|
|
525
529
|
// ../server/src/services/current-project.ts
|
|
@@ -887,19 +891,22 @@ var projectRouter = router({
|
|
|
887
891
|
name: z4.string().min(1).max(200),
|
|
888
892
|
description: z4.string().max(1e4).optional(),
|
|
889
893
|
orgId: z4.string().max(128).nullable().optional(),
|
|
890
|
-
serviceIds: z4.array(z4.string().max(128)).max(1e4).optional()
|
|
894
|
+
serviceIds: z4.array(z4.string().max(128)).max(1e4).optional(),
|
|
895
|
+
/** Le dossier d'un projet local. Omis : le dossier de lancement. */
|
|
896
|
+
localPath: z4.string().min(1).max(4096).refine(isAbsolute, "Chemin absolu attendu").optional()
|
|
891
897
|
})
|
|
892
898
|
).mutation(async ({ input }) => {
|
|
899
|
+
const { localPath, ...fields } = input;
|
|
893
900
|
let project;
|
|
894
901
|
try {
|
|
895
902
|
project = await projectStore.create({
|
|
896
|
-
...
|
|
897
|
-
description:
|
|
898
|
-
serviceIds:
|
|
903
|
+
...fields,
|
|
904
|
+
description: fields.description ?? "",
|
|
905
|
+
serviceIds: fields.serviceIds ?? [],
|
|
899
906
|
environmentIds: []
|
|
900
|
-
});
|
|
907
|
+
}, fields.orgId ? void 0 : localPath);
|
|
901
908
|
} catch (err) {
|
|
902
|
-
if (err instanceof
|
|
909
|
+
if (err instanceof LocalProjectRefusedError) {
|
|
903
910
|
throw new TRPCError2({ code: "CONFLICT", message: err.code, cause: err });
|
|
904
911
|
}
|
|
905
912
|
throw new TRPCError2({ code: "CONFLICT", message: err.message });
|
|
@@ -1125,8 +1132,16 @@ var projectRouter = router({
|
|
|
1125
1132
|
dangling: graph.dangling.filter((d) => allowed.has(d.from))
|
|
1126
1133
|
};
|
|
1127
1134
|
}),
|
|
1135
|
+
/**
|
|
1136
|
+
* Le dossier de chaque projet sur cette machine, par clé `org:projet`
|
|
1137
|
+
* (`local:<id>` pour un projet local, dont le dossier contient son `.runeya`).
|
|
1138
|
+
*/
|
|
1128
1139
|
localPaths: protectedProcedure.query(async () => {
|
|
1129
|
-
|
|
1140
|
+
const paths = await projectPathStore.all();
|
|
1141
|
+
for (const project of await projectStore.list()) {
|
|
1142
|
+
if (!project.orgId) paths[`local:${project.id}`] = dirname2(vaultFor(project).root);
|
|
1143
|
+
}
|
|
1144
|
+
return paths;
|
|
1130
1145
|
}),
|
|
1131
1146
|
getLocalPath: protectedProcedure.input(z4.object({
|
|
1132
1147
|
id: z4.string().min(1).max(128),
|
|
@@ -1141,6 +1156,19 @@ var projectRouter = router({
|
|
|
1141
1156
|
* project was already placed in: two projects sharing a directory is what
|
|
1142
1157
|
* makes services run against the wrong code.
|
|
1143
1158
|
*/
|
|
1159
|
+
/** Ajouter à la liste le projet local déjà présent dans un dossier. */
|
|
1160
|
+
importLocal: protectedProcedure.input(z4.object({ path: z4.string().min(1).max(4096).refine(isAbsolute, "Chemin absolu attendu") })).mutation(async ({ input }) => {
|
|
1161
|
+
try {
|
|
1162
|
+
const project = await projectStore.importLocal(input.path);
|
|
1163
|
+
await auditService.log({ userId: "local", action: "update", entityType: "project", entityId: project.id, metadata: { importedFrom: input.path } });
|
|
1164
|
+
return project;
|
|
1165
|
+
} catch (err) {
|
|
1166
|
+
if (err instanceof LocalProjectRefusedError) {
|
|
1167
|
+
throw new TRPCError2({ code: "CONFLICT", message: err.code, cause: err });
|
|
1168
|
+
}
|
|
1169
|
+
throw err;
|
|
1170
|
+
}
|
|
1171
|
+
}),
|
|
1144
1172
|
setLocalPath: protectedProcedure.input(z4.object({
|
|
1145
1173
|
id: z4.string().min(1).max(128),
|
|
1146
1174
|
orgId: z4.string().max(128).nullable().optional(),
|
|
@@ -1884,10 +1912,12 @@ var setupRouter = router({
|
|
|
1884
1912
|
keyHex: z8.string().length(64).regex(/^[0-9a-f]+$/i, "Invalid hex format")
|
|
1885
1913
|
})).query(async ({ input }) => {
|
|
1886
1914
|
const canary = await readVerifyFile(orgVaultRoot(input.orgId));
|
|
1887
|
-
|
|
1915
|
+
const locked = isVaultLocked(input.orgId);
|
|
1916
|
+
if (!canary) return { isCurrentKey: false, hasCanary: false, locked };
|
|
1888
1917
|
return {
|
|
1889
1918
|
isCurrentKey: matchesCanary(canary, Buffer.from(input.keyHex, "hex")),
|
|
1890
|
-
hasCanary: true
|
|
1919
|
+
hasCanary: true,
|
|
1920
|
+
locked
|
|
1891
1921
|
};
|
|
1892
1922
|
}),
|
|
1893
1923
|
/**
|
|
@@ -2451,7 +2481,12 @@ var settingsRouter = router({
|
|
|
2451
2481
|
dataDir: env.DATA_DIR,
|
|
2452
2482
|
// Where cloud projects live: their vaults belong to the machine, not to
|
|
2453
2483
|
// whichever directory the server happened to be started in.
|
|
2454
|
-
machineDir: machineRoot()
|
|
2484
|
+
machineDir: machineRoot(),
|
|
2485
|
+
// Un projet local peut-il naître ici ? Là où le coffre local se confond
|
|
2486
|
+
// avec la racine machine, non : ses fichiers se mêleraient à ceux de la
|
|
2487
|
+
// machine. Répondu ici pour que l'interface n'offre pas un emplacement que
|
|
2488
|
+
// la création refuserait — la règle reste écrite une seule fois.
|
|
2489
|
+
canCreateLocalProject: !localVaultCollidesWithMachineRoot()
|
|
2455
2490
|
})),
|
|
2456
2491
|
/**
|
|
2457
2492
|
* Où le serveur écoute, et s'il est joignable depuis le réseau local.
|
|
@@ -3308,7 +3343,7 @@ var editorRouter = router({
|
|
|
3308
3343
|
import { z as z13 } from "zod";
|
|
3309
3344
|
import { TRPCError as TRPCError9 } from "@trpc/server";
|
|
3310
3345
|
import { mkdir as mkdir3, writeFile as writeFile3 } from "fs/promises";
|
|
3311
|
-
import { join as join5, dirname as
|
|
3346
|
+
import { join as join5, dirname as dirname3 } from "path";
|
|
3312
3347
|
var ALLOWED_SKILL_PATHS = /* @__PURE__ */ new Set([
|
|
3313
3348
|
".claude/skills/runeya/SKILL.md",
|
|
3314
3349
|
".cursor/rules/runeya.mdc",
|
|
@@ -3356,7 +3391,7 @@ var apiKeysRouter = router({
|
|
|
3356
3391
|
throw new TRPCError9({ code: "BAD_REQUEST", message: "Chemin non autoris\xE9" });
|
|
3357
3392
|
}
|
|
3358
3393
|
const abs = join5(await resolveWorkspaceCwd({}), input.relativePath);
|
|
3359
|
-
await mkdir3(
|
|
3394
|
+
await mkdir3(dirname3(abs), { recursive: true });
|
|
3360
3395
|
await writeFile3(abs, input.content, { encoding: "utf-8", mode: 420 });
|
|
3361
3396
|
return { path: input.relativePath };
|
|
3362
3397
|
})
|
|
@@ -6016,6 +6051,11 @@ function safeLocalName(id, name) {
|
|
|
6016
6051
|
const ext = /\.([A-Za-z0-9]{1,12})$/.exec(name)?.[1];
|
|
6017
6052
|
return ext ? `${base}.${ext.toLowerCase()}` : base;
|
|
6018
6053
|
}
|
|
6054
|
+
async function attachmentScope(input) {
|
|
6055
|
+
if (input.orgId) return accountForOrgScope(input.orgId);
|
|
6056
|
+
if (input.boardId) return kanbanStore.accountForBoard(input.boardId);
|
|
6057
|
+
return soleAccountScope();
|
|
6058
|
+
}
|
|
6019
6059
|
var kanbanRouter = router({
|
|
6020
6060
|
/**
|
|
6021
6061
|
* The organization's boards, without their cards — a board carries its whole
|
|
@@ -6190,6 +6230,28 @@ var kanbanRouter = router({
|
|
|
6190
6230
|
}
|
|
6191
6231
|
return { ok: true };
|
|
6192
6232
|
}),
|
|
6233
|
+
/**
|
|
6234
|
+
* Les références : la même carte posée sur un autre tableau, sans copie.
|
|
6235
|
+
* `boardId` est le tableau où on la pose (ou d'où on la retire) ; la carte
|
|
6236
|
+
* reste sur son tableau d'origine.
|
|
6237
|
+
*/
|
|
6238
|
+
getCardPlacements: protectedProcedure.input(z19.object({ boardId: z19.string().max(128), cardId: z19.string().max(128) })).query(async ({ input }) => ({ placements: await kanbanStore.cardPlacements(input.boardId, input.cardId) })),
|
|
6239
|
+
placeCard: protectedProcedure.input(z19.object({ boardId: z19.string().max(128), cardId: z19.string().max(128), column: z19.string().min(1).max(200) })).mutation(async ({ input }) => {
|
|
6240
|
+
const res = await kanbanStore.placeCard(input.boardId, input.cardId, input.column);
|
|
6241
|
+
if (!res.ok) {
|
|
6242
|
+
throw new TRPCError16({
|
|
6243
|
+
code: "BAD_REQUEST",
|
|
6244
|
+
message: res.reason ?? "The cloud refused the placement (unknown card or column, archived card, or already on this board)."
|
|
6245
|
+
});
|
|
6246
|
+
}
|
|
6247
|
+
return { ok: true };
|
|
6248
|
+
}),
|
|
6249
|
+
unplaceCard: protectedProcedure.input(z19.object({ boardId: z19.string().max(128), cardId: z19.string().max(128) })).mutation(async ({ input }) => {
|
|
6250
|
+
if (!await kanbanStore.unplaceCard(input.boardId, input.cardId)) {
|
|
6251
|
+
throw new TRPCError16({ code: "NOT_FOUND", message: "This card is not placed on this board." });
|
|
6252
|
+
}
|
|
6253
|
+
return { ok: true };
|
|
6254
|
+
}),
|
|
6193
6255
|
moveCard: protectedProcedure.input(z19.object({
|
|
6194
6256
|
boardId: z19.string().max(128),
|
|
6195
6257
|
cardId: z19.string().max(128),
|
|
@@ -6285,10 +6347,14 @@ var kanbanRouter = router({
|
|
|
6285
6347
|
downloadAttachment: protectedProcedure.input(z19.object({
|
|
6286
6348
|
attachmentId: z19.string().max(128),
|
|
6287
6349
|
// La pièce jointe appartient à une organisation : la nommer dit sous quel
|
|
6288
|
-
// compte la demander.
|
|
6289
|
-
|
|
6290
|
-
//
|
|
6291
|
-
|
|
6350
|
+
// compte la demander.
|
|
6351
|
+
orgId: z19.string().max(128).optional(),
|
|
6352
|
+
// À défaut, le tableau d'où vient la carte suffit : il désigne un compte
|
|
6353
|
+
// comme le fait n'importe quel autre appel du kanban. Sans lui, la route
|
|
6354
|
+
// retombait sur le compte unique du poste et refusait de servir dès qu'il
|
|
6355
|
+
// y en avait plusieurs — alors que l'agent, qui n'a qu'un identifiant de
|
|
6356
|
+
// fichier, n'avait aucun moyen de nommer l'organisation.
|
|
6357
|
+
boardId: z19.string().max(128).optional()
|
|
6292
6358
|
})).mutation(async ({ input }) => {
|
|
6293
6359
|
const id = input.attachmentId;
|
|
6294
6360
|
if (!ATTACHMENT_ID_REGEX.test(id)) {
|
|
@@ -6296,7 +6362,7 @@ var kanbanRouter = router({
|
|
|
6296
6362
|
}
|
|
6297
6363
|
const res = await cloudFetch2(`/api/kanban/file/${id}`, {
|
|
6298
6364
|
timeoutMs: 12e4,
|
|
6299
|
-
accountId:
|
|
6365
|
+
accountId: await attachmentScope(input)
|
|
6300
6366
|
});
|
|
6301
6367
|
if (res.status === 404) {
|
|
6302
6368
|
throw new TRPCError16({ code: "NOT_FOUND", message: `Attachment ${id} not found` });
|
|
@@ -6487,7 +6553,7 @@ var utilityRouter = router({
|
|
|
6487
6553
|
import { z as z22 } from "zod";
|
|
6488
6554
|
import { TRPCError as TRPCError18 } from "@trpc/server";
|
|
6489
6555
|
import { readFile as readFile3, readdir as readdir2, stat as stat4, realpath, writeFile as writeFile5, mkdir as mkdir6, rename, rm as rm2 } from "fs/promises";
|
|
6490
|
-
import { resolve as resolvePath, join as join8, relative, sep, dirname as
|
|
6556
|
+
import { resolve as resolvePath, join as join8, relative, sep, dirname as dirname4 } from "path";
|
|
6491
6557
|
var SCOPE_SCHEMA = z22.union([
|
|
6492
6558
|
z22.literal("global"),
|
|
6493
6559
|
z22.string().regex(/^service:[A-Za-z0-9_-]{1,128}$/, "Invalid service scope")
|
|
@@ -6525,7 +6591,7 @@ async function resolveScope(scope) {
|
|
|
6525
6591
|
}
|
|
6526
6592
|
const dataDirAbs = resolvePath(env.DATA_DIR);
|
|
6527
6593
|
await mkdir6(dataDirAbs, { recursive: true });
|
|
6528
|
-
const base =
|
|
6594
|
+
const base = dirname4(await realpath(dataDirAbs));
|
|
6529
6595
|
const target = resolvePath(base, sub);
|
|
6530
6596
|
if (target !== base && !(target + sep).startsWith(base + sep)) {
|
|
6531
6597
|
throw new TRPCError18({ code: "FORBIDDEN", message: "Hors du dossier de donn\xE9es du serveur" });
|
|
@@ -6591,7 +6657,7 @@ async function resolveSafeLocal(root, relPath, requireExist) {
|
|
|
6591
6657
|
}
|
|
6592
6658
|
return real;
|
|
6593
6659
|
}
|
|
6594
|
-
const parent =
|
|
6660
|
+
const parent = dirname4(target);
|
|
6595
6661
|
let realParent;
|
|
6596
6662
|
try {
|
|
6597
6663
|
realParent = await realpath(parent);
|
|
@@ -6637,7 +6703,7 @@ var wikiRouter = router({
|
|
|
6637
6703
|
return agentManager.agentMutation(target.agentId, "wiki.writeMarkdown", { cwd: target.cwd, path: input.path, content: input.content });
|
|
6638
6704
|
}
|
|
6639
6705
|
const file = await resolveSafeLocal(target.root, input.path, false);
|
|
6640
|
-
await mkdir6(
|
|
6706
|
+
await mkdir6(dirname4(file), { recursive: true });
|
|
6641
6707
|
await writeFile5(file, input.content, "utf-8");
|
|
6642
6708
|
return { path: input.path, ok: true };
|
|
6643
6709
|
}),
|
|
@@ -6656,7 +6722,7 @@ var wikiRouter = router({
|
|
|
6656
6722
|
} catch (err) {
|
|
6657
6723
|
if (err instanceof TRPCError18) throw err;
|
|
6658
6724
|
}
|
|
6659
|
-
await mkdir6(
|
|
6725
|
+
await mkdir6(dirname4(file), { recursive: true });
|
|
6660
6726
|
await writeFile5(file, "", "utf-8");
|
|
6661
6727
|
return { path: input.path, ok: true };
|
|
6662
6728
|
}),
|
|
@@ -6682,7 +6748,7 @@ var wikiRouter = router({
|
|
|
6682
6748
|
} catch (err) {
|
|
6683
6749
|
if (err instanceof TRPCError18) throw err;
|
|
6684
6750
|
}
|
|
6685
|
-
await mkdir6(
|
|
6751
|
+
await mkdir6(dirname4(to), { recursive: true });
|
|
6686
6752
|
await rename(from, to);
|
|
6687
6753
|
return { fromPath: input.fromPath, toPath: input.toPath, ok: true };
|
|
6688
6754
|
}),
|
|
@@ -6749,10 +6815,10 @@ async function orgsToSync() {
|
|
|
6749
6815
|
for (const vault of await listCloudVaults()) {
|
|
6750
6816
|
if (targets.has(vault.orgId)) continue;
|
|
6751
6817
|
const stamped = stamps[vault.orgId]?.replace(/\/+$/, "");
|
|
6752
|
-
if (stamped ? !known.has(stamped) : fallback === null) continue;
|
|
6753
|
-
const cloudUrl = stamped ?? fallback;
|
|
6754
|
-
if (!cloudUrl) continue;
|
|
6755
6818
|
const accountId = stampedAccounts[vault.orgId] ?? (accounts.length === 1 ? accounts[0].id : void 0);
|
|
6819
|
+
const accountCloud = accountId ? accounts.find((a) => a.id === accountId)?.cloudUrl.replace(/\/+$/, "") : void 0;
|
|
6820
|
+
const cloudUrl = stamped ?? accountCloud ?? fallback;
|
|
6821
|
+
if (!cloudUrl || !known.has(cloudUrl)) continue;
|
|
6756
6822
|
if (await isMaterialized(vault.root)) {
|
|
6757
6823
|
targets.set(vault.orgId, { orgId: vault.orgId, cloudUrl, ...accountId ? { accountId } : {} });
|
|
6758
6824
|
}
|
|
@@ -6814,7 +6880,7 @@ import * as Y2 from "yjs";
|
|
|
6814
6880
|
// ../server/src/services/sync-doc-cache.ts
|
|
6815
6881
|
import { readFileSync, renameSync, rmSync, writeFileSync, mkdirSync } from "fs";
|
|
6816
6882
|
import { readFile as readFile4 } from "fs/promises";
|
|
6817
|
-
import { dirname as
|
|
6883
|
+
import { dirname as dirname5, join as join10 } from "path";
|
|
6818
6884
|
import { randomUUID as randomUUID6 } from "crypto";
|
|
6819
6885
|
import * as Y from "yjs";
|
|
6820
6886
|
var FILE = "sync-doc.bin";
|
|
@@ -6846,7 +6912,7 @@ function writeSyncDocSync(orgId, state) {
|
|
|
6846
6912
|
existing = new Uint8Array(readFileSync(path));
|
|
6847
6913
|
} catch {
|
|
6848
6914
|
}
|
|
6849
|
-
mkdirSync(
|
|
6915
|
+
mkdirSync(dirname5(path), { recursive: true });
|
|
6850
6916
|
const tmp = `${path}.${process.pid}.${randomUUID6()}.tmp`;
|
|
6851
6917
|
try {
|
|
6852
6918
|
writeFileSync(tmp, mergeWith(existing, state), { mode: 384 });
|
|
@@ -7897,10 +7963,27 @@ async function jsonFilesIn(root) {
|
|
|
7897
7963
|
async function exists(path) {
|
|
7898
7964
|
return stat5(path).then(() => true, () => false);
|
|
7899
7965
|
}
|
|
7966
|
+
async function adoptIntoLockedVault(orgId, newKey, masterPassword) {
|
|
7967
|
+
const canary = await readVerifyFile(orgVaultRoot(orgId));
|
|
7968
|
+
if (canary && !matchesCanary(canary, newKey)) {
|
|
7969
|
+
throw new Error("ORG_KEY_DOES_NOT_OPEN_VAULT");
|
|
7970
|
+
}
|
|
7971
|
+
await readEncryptedKey(await keyRoot(), masterPassword);
|
|
7972
|
+
await installOrgKey(orgId, newKey, masterPassword);
|
|
7973
|
+
clearVaultLock(orgId);
|
|
7974
|
+
environmentStore.resetCache();
|
|
7975
|
+
serviceStore.resetCache();
|
|
7976
|
+
conversationStore.resetCache();
|
|
7977
|
+
apiKeyStore.resetCache();
|
|
7978
|
+
return { converted: [], backups: [] };
|
|
7979
|
+
}
|
|
7900
7980
|
async function adoptOrgKey(orgId, newKey, masterPassword, now) {
|
|
7901
7981
|
const currentKey = getEncryptionKey(orgId);
|
|
7902
7982
|
if (!currentKey) {
|
|
7903
|
-
|
|
7983
|
+
if (!isVaultLocked(orgId)) {
|
|
7984
|
+
throw new Error("La cl\xE9 actuelle de cette organisation n'est pas charg\xE9e.");
|
|
7985
|
+
}
|
|
7986
|
+
return adoptIntoLockedVault(orgId, newKey, masterPassword);
|
|
7904
7987
|
}
|
|
7905
7988
|
if (newKey.equals(currentKey)) {
|
|
7906
7989
|
throw new Error("ORG_KEY_ALREADY_CURRENT");
|
|
@@ -7953,6 +8036,17 @@ async function adoptOrgKey(orgId, newKey, masterPassword, now) {
|
|
|
7953
8036
|
apiKeyStore.resetCache();
|
|
7954
8037
|
return { converted: pending.map(({ path, values }) => ({ file: path, values })), backups };
|
|
7955
8038
|
}
|
|
8039
|
+
async function resetOrgKeyToFresh(orgId, masterPassword, now) {
|
|
8040
|
+
const freshKey = randomBytes2(32);
|
|
8041
|
+
if (isVaultLocked(orgId) || !getEncryptionKey(orgId)) {
|
|
8042
|
+
await readEncryptedKey(await keyRoot(), masterPassword);
|
|
8043
|
+
await installOrgKey(orgId, freshKey, masterPassword);
|
|
8044
|
+
clearVaultLock(orgId);
|
|
8045
|
+
return { converted: [], backups: [], keyHex: freshKey.toString("hex") };
|
|
8046
|
+
}
|
|
8047
|
+
const report = await adoptOrgKey(orgId, freshKey, masterPassword, now);
|
|
8048
|
+
return { ...report, keyHex: freshKey.toString("hex") };
|
|
8049
|
+
}
|
|
7956
8050
|
|
|
7957
8051
|
// ../server/src/trpc/routers/cloud-sync.ts
|
|
7958
8052
|
async function cloudMessage(res) {
|
|
@@ -8150,9 +8244,10 @@ var cloudSyncRouter = router({
|
|
|
8150
8244
|
/**
|
|
8151
8245
|
* Faire adopter à cette machine la clé d'une organisation.
|
|
8152
8246
|
*
|
|
8153
|
-
* Le pendant de `resetOrgKey` : là où celle-ci
|
|
8154
|
-
*
|
|
8155
|
-
*
|
|
8247
|
+
* Le pendant de `resetOrgKey` : là où celle-ci repart sous une clé neuve, en
|
|
8248
|
+
* abandonnant ce qui avait été chiffré sous l'ancienne, celle-là fait plier
|
|
8249
|
+
* cette machine à la clé existante — et c'est la seule des deux qui rend
|
|
8250
|
+
* lisible ce qui avait déjà été chiffré sous elle.
|
|
8156
8251
|
*
|
|
8157
8252
|
* Bornée au coffre de l'organisation et à ceux de ses projets : les autres
|
|
8158
8253
|
* organisations et la machine gardent leur clé.
|
|
@@ -8181,15 +8276,25 @@ var cloudSyncRouter = router({
|
|
|
8181
8276
|
* d'un ancien coffre — laisse l'organisation insynchronisable pour toujours.
|
|
8182
8277
|
* Cette route est la sortie de secours, réservée au propriétaire côté cloud.
|
|
8183
8278
|
*
|
|
8184
|
-
*
|
|
8185
|
-
*
|
|
8279
|
+
* L'organisation repart sous une clé TIRÉE POUR ELLE, et non sous celle de
|
|
8280
|
+
* cette machine : cette dernière vaut pour toutes les organisations d'ici qui
|
|
8281
|
+
* n'ont pas adopté la leur, et il faut ensuite transmettre la clé publiée aux
|
|
8282
|
+
* autres membres. Le coffre local est re-chiffré au passage, ce qui exige le
|
|
8283
|
+
* master password — comme l'adoption, dont c'est le même geste à l'envers.
|
|
8284
|
+
*
|
|
8285
|
+
* Ce qui a déjà été synchronisé sous l'ancienne clé de référence reste
|
|
8286
|
+
* illisible : aucune clé d'ici ne l'ouvre. L'interface le dit avant.
|
|
8186
8287
|
*/
|
|
8187
|
-
resetOrgKey: protectedProcedure.input(z23.object({
|
|
8188
|
-
|
|
8288
|
+
resetOrgKey: protectedProcedure.input(z23.object({
|
|
8289
|
+
orgId: z23.string().min(1).max(128),
|
|
8290
|
+
masterPassword: z23.string().min(1).max(1024)
|
|
8291
|
+
})).mutation(async ({ input }) => {
|
|
8292
|
+
const { keyHex } = await resetOrgKeyToFresh(input.orgId, input.masterPassword, /* @__PURE__ */ new Date());
|
|
8293
|
+
const canary = await readVerifyFile(orgVaultRoot(input.orgId));
|
|
8189
8294
|
if (!canary) {
|
|
8190
8295
|
throw new TRPCError19({
|
|
8191
8296
|
code: "PRECONDITION_FAILED",
|
|
8192
|
-
message: "
|
|
8297
|
+
message: "Le coffre de cette organisation n'a pas re\xE7u sa cl\xE9."
|
|
8193
8298
|
});
|
|
8194
8299
|
}
|
|
8195
8300
|
const res = await cloudFetch2("/api/auth/organization/canary/reset", {
|
|
@@ -8206,7 +8311,7 @@ var cloudSyncRouter = router({
|
|
|
8206
8311
|
}
|
|
8207
8312
|
const cloudUrl = (await orgsToSync()).find((l) => l.orgId === input.orgId)?.cloudUrl ?? getCloudApiUrl();
|
|
8208
8313
|
await cloudSyncBridge.connect({ orgId: input.orgId, cloudUrl, ...await accountScope(input.orgId) });
|
|
8209
|
-
return { state: syncState(input.orgId) };
|
|
8314
|
+
return { state: syncState(input.orgId), keyHex };
|
|
8210
8315
|
}),
|
|
8211
8316
|
/**
|
|
8212
8317
|
* Stop materializing one project of an org on this machine.
|
|
@@ -8302,12 +8407,22 @@ var cloudSyncRouter = router({
|
|
|
8302
8407
|
candidates.set(orgId, [...candidates.get(orgId) ?? [], accountId]);
|
|
8303
8408
|
}
|
|
8304
8409
|
const current2 = await readOrgAccounts();
|
|
8410
|
+
const stamped = await readOrgClouds();
|
|
8411
|
+
const cloudOf = new Map(
|
|
8412
|
+
(await cloudSessionStore.list()).map((a) => [a.id, a.cloudUrl.replace(/\/+$/, "")])
|
|
8413
|
+
);
|
|
8305
8414
|
let remembered = 0;
|
|
8306
8415
|
for (const [orgId, accountIds] of candidates) {
|
|
8307
8416
|
const kept = current2[orgId];
|
|
8308
|
-
|
|
8309
|
-
|
|
8310
|
-
|
|
8417
|
+
const owner = kept && accountIds.includes(kept) ? kept : accountIds[0];
|
|
8418
|
+
if (owner !== kept) {
|
|
8419
|
+
await rememberOrgAccount(orgId, owner);
|
|
8420
|
+
remembered++;
|
|
8421
|
+
}
|
|
8422
|
+
if (!stamped[orgId]) {
|
|
8423
|
+
const cloudUrl = cloudOf.get(owner);
|
|
8424
|
+
if (cloudUrl) await backfillOrgCloud(orgId, cloudUrl);
|
|
8425
|
+
}
|
|
8311
8426
|
}
|
|
8312
8427
|
return { remembered };
|
|
8313
8428
|
}),
|
|
@@ -8402,14 +8517,14 @@ var cloudSyncRouter = router({
|
|
|
8402
8517
|
// ../server/src/trpc/routers/filesystem.ts
|
|
8403
8518
|
import { readdir as readdir4, stat as stat6 } from "fs/promises";
|
|
8404
8519
|
import { homedir as homedir3 } from "os";
|
|
8405
|
-
import { isAbsolute, join as join12, resolve as resolve2, dirname as
|
|
8520
|
+
import { isAbsolute as isAbsolute2, join as join12, resolve as resolve2, dirname as dirname6, basename } from "path";
|
|
8406
8521
|
import { z as z24 } from "zod";
|
|
8407
8522
|
var MAX_ENTRIES2 = 500;
|
|
8408
8523
|
var PATH_SCHEMA = z24.string().min(1).max(4096);
|
|
8409
8524
|
function safeResolve(input) {
|
|
8410
8525
|
if (input.includes("\0")) throw new Error("Chemin invalide");
|
|
8411
8526
|
const expanded = input.startsWith("~") ? join12(homedir3(), input.slice(1)) : input;
|
|
8412
|
-
if (!
|
|
8527
|
+
if (!isAbsolute2(expanded)) throw new Error("Le chemin doit \xEAtre absolu");
|
|
8413
8528
|
return resolve2(expanded);
|
|
8414
8529
|
}
|
|
8415
8530
|
var filesystemRouter = router({
|
|
@@ -8450,13 +8565,24 @@ var filesystemRouter = router({
|
|
|
8450
8565
|
return {
|
|
8451
8566
|
path: dir,
|
|
8452
8567
|
// Null at the filesystem root, which is what stops "up" from looping.
|
|
8453
|
-
parent:
|
|
8568
|
+
parent: dirname6(dir) === dir ? null : dirname6(dir),
|
|
8454
8569
|
name: basename(dir) || dir,
|
|
8455
8570
|
entries: entries2,
|
|
8456
8571
|
truncated,
|
|
8457
8572
|
hasRuneyaProject: await holdsRuneyaProject(dir)
|
|
8458
8573
|
};
|
|
8459
8574
|
}),
|
|
8575
|
+
/**
|
|
8576
|
+
* Ce qu'un dossier permet pour un projet local : le créer, importer celui
|
|
8577
|
+
* qui s'y trouve, ou rien (déjà dans la liste, lié à un projet d'organisation,
|
|
8578
|
+
* racine machine).
|
|
8579
|
+
*/
|
|
8580
|
+
checkLocalProjectTarget: protectedProcedure.input(z24.object({ path: PATH_SCHEMA })).query(async ({ input }) => {
|
|
8581
|
+
const dir = safeResolve(input.path);
|
|
8582
|
+
const info = await stat6(dir).catch(() => null);
|
|
8583
|
+
if (!info?.isDirectory()) return { path: dir, status: "missing", projectName: null };
|
|
8584
|
+
return { path: dir, ...await projectStore.inspectLocalDir(dir) };
|
|
8585
|
+
}),
|
|
8460
8586
|
/**
|
|
8461
8587
|
* Whether a directory can receive this project.
|
|
8462
8588
|
*
|
|
@@ -8486,12 +8612,12 @@ var filesystemRouter = router({
|
|
|
8486
8612
|
|
|
8487
8613
|
// ../server/src/trpc/routers/desktop.ts
|
|
8488
8614
|
import { z as z25 } from "zod";
|
|
8489
|
-
import { isAbsolute as
|
|
8615
|
+
import { isAbsolute as isAbsolute4 } from "path";
|
|
8490
8616
|
import { TRPCError as TRPCError20 } from "@trpc/server";
|
|
8491
8617
|
|
|
8492
8618
|
// ../server/src/services/desktop-launcher.ts
|
|
8493
8619
|
import { execFile as execFile4 } from "child_process";
|
|
8494
|
-
import { isAbsolute as
|
|
8620
|
+
import { isAbsolute as isAbsolute3 } from "path";
|
|
8495
8621
|
import { promisify as promisify3 } from "util";
|
|
8496
8622
|
var exec = promisify3(execFile4);
|
|
8497
8623
|
var INSTALL_TIMEOUT_MS2 = 3e4;
|
|
@@ -8512,7 +8638,7 @@ function suggestLauncher() {
|
|
|
8512
8638
|
}
|
|
8513
8639
|
async function installLauncher(input) {
|
|
8514
8640
|
if (!cli) throw new Error("launcher-unavailable");
|
|
8515
|
-
if (input.workingDir !== null && !
|
|
8641
|
+
if (input.workingDir !== null && !isAbsolute3(input.workingDir)) {
|
|
8516
8642
|
throw new Error("launcher-working-dir-not-absolute");
|
|
8517
8643
|
}
|
|
8518
8644
|
const args = [
|
|
@@ -8584,7 +8710,7 @@ var desktopRouter = router({
|
|
|
8584
8710
|
* absolu, refusé autrement : le dossier devient un argument positionnel
|
|
8585
8711
|
* du CLI, où une valeur commençant par un tiret passerait pour un drapeau.
|
|
8586
8712
|
*/
|
|
8587
|
-
workingDir: z25.string().max(4096).refine(
|
|
8713
|
+
workingDir: z25.string().max(4096).refine(isAbsolute4, {
|
|
8588
8714
|
message: "Le dossier de travail doit \xEAtre un chemin absolu."
|
|
8589
8715
|
}).nullable(),
|
|
8590
8716
|
port: z25.number().int().min(1).max(65535),
|
|
@@ -8857,7 +8983,7 @@ import {
|
|
|
8857
8983
|
access as access2,
|
|
8858
8984
|
readdir as readdir6
|
|
8859
8985
|
} from "fs/promises";
|
|
8860
|
-
import { join as join15, dirname as
|
|
8986
|
+
import { join as join15, dirname as dirname7 } from "path";
|
|
8861
8987
|
var _require = createRequire(import.meta.url);
|
|
8862
8988
|
var PARSER_ID_MAP = {
|
|
8863
8989
|
"stack-monitor-parser-jsons": "native:json",
|
|
@@ -9466,7 +9592,7 @@ async function runOverrideOnlyMigration(dataDir) {
|
|
|
9466
9592
|
const { resolve: resolve4 } = await import("path");
|
|
9467
9593
|
const abDataDir = resolve4(dataDir);
|
|
9468
9594
|
const candidateDirs = [
|
|
9469
|
-
join15(
|
|
9595
|
+
join15(dirname7(env.DATA_DIR), ".runeya", "dbs", "overrides"),
|
|
9470
9596
|
join15(abDataDir, "dbs", "overrides")
|
|
9471
9597
|
];
|
|
9472
9598
|
let overridesDir = null;
|
|
@@ -10157,31 +10283,6 @@ async function createLocalServer() {
|
|
|
10157
10283
|
);
|
|
10158
10284
|
}
|
|
10159
10285
|
await runOverrideOnlyMigration(env.DATA_DIR);
|
|
10160
|
-
if (env.MODE === "local-simple") {
|
|
10161
|
-
const projects = await projectStore.list();
|
|
10162
|
-
if (projects.length === 0) {
|
|
10163
|
-
const project = await projectStore.create({
|
|
10164
|
-
name: "My Local Project",
|
|
10165
|
-
description: "Auto-generated default project for local development"
|
|
10166
|
-
});
|
|
10167
|
-
const localEnv = await environmentStore.create({
|
|
10168
|
-
projectId: project.id,
|
|
10169
|
-
name: "Local",
|
|
10170
|
-
description: "Default local environment (immutable)",
|
|
10171
|
-
variables: {},
|
|
10172
|
-
parentIds: [],
|
|
10173
|
-
color: "#22c55e",
|
|
10174
|
-
immutable: true
|
|
10175
|
-
}, project.orgId);
|
|
10176
|
-
await projectStore.update({
|
|
10177
|
-
id: project.id,
|
|
10178
|
-
orgId: project.orgId,
|
|
10179
|
-
environmentIds: [localEnv.id],
|
|
10180
|
-
activeEnvironmentId: localEnv.id
|
|
10181
|
-
});
|
|
10182
|
-
console.log("[server] Created default project with Local environment");
|
|
10183
|
-
}
|
|
10184
|
-
}
|
|
10185
10286
|
await agentManager.init();
|
|
10186
10287
|
agentSpawner.spawnLocalAgent().catch((err) => {
|
|
10187
10288
|
console.warn("[server] Failed to spawn the local agent:", err);
|
|
@@ -10830,7 +10931,7 @@ async function createLocalServer() {
|
|
|
10830
10931
|
]);
|
|
10831
10932
|
console.log("[server] Shutdown complete");
|
|
10832
10933
|
};
|
|
10833
|
-
const { initCompanion } = await import("./companion-
|
|
10934
|
+
const { initCompanion } = await import("./companion-MGX62L4T.js");
|
|
10834
10935
|
initCompanion();
|
|
10835
10936
|
return { app, server, wss, shutdown };
|
|
10836
10937
|
}
|
|
@@ -11220,7 +11321,7 @@ function listenWithRetry(server, port, host, wss, maxRetries = 20, delay = 500)
|
|
|
11220
11321
|
});
|
|
11221
11322
|
}
|
|
11222
11323
|
async function main() {
|
|
11223
|
-
const { ensureNodeBinOnPath, ensureUserBinsOnPath } = await import("./node-
|
|
11324
|
+
const { ensureNodeBinOnPath, ensureUserBinsOnPath } = await import("./node-RN4URNZ5.js");
|
|
11224
11325
|
ensureNodeBinOnPath();
|
|
11225
11326
|
await ensureUserBinsOnPath();
|
|
11226
11327
|
console.log("Hello World 2");
|
|
@@ -11277,4 +11378,4 @@ export {
|
|
|
11277
11378
|
startProcess,
|
|
11278
11379
|
stopProcess
|
|
11279
11380
|
};
|
|
11280
|
-
//# sourceMappingURL=src-
|
|
11381
|
+
//# sourceMappingURL=src-KWLVQD36.js.map
|