@runeya/runeya 2.0.44 → 2.0.45
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-manager-RQEJLSSF.js +7 -0
- package/{chunk-NJJMESIY.js → chunk-B6C5AXMK.js} +42 -10
- package/chunk-B6C5AXMK.js.map +1 -0
- package/index.js +1 -1
- package/package.json +1 -1
- package/{src-7CJJBMY3.js → src-ZKQETCHR.js} +229 -67
- package/src-ZKQETCHR.js.map +1 -0
- package/web/assets/AgentScalarChatInterface.vue-IDhv2vYG.js +13 -0
- package/web/assets/AgentTerminalPage-BNUuSKXa.js +1 -0
- package/web/assets/AiChatPage-i_HxoGlU.js +1 -0
- package/web/assets/{AppLayout-BBifPBJu.css → AppLayout-Bqs7ug1K.css} +1 -1
- package/web/assets/AppLayout-BtVQtKnv.js +1 -0
- package/web/assets/AuditPage-D__LOvkN.js +1 -0
- package/web/assets/CloudAccountPage-CEf5yWA2.js +1 -0
- package/web/assets/CloudAccountPage-ll1uAGyN.js +1 -0
- package/web/assets/CloudMessagingPage-B63PMN88.js +2 -0
- package/web/assets/DashboardPage-XFl45skz.js +1 -0
- package/web/assets/{EditorIcon-CNesALrK.js → EditorIcon-DHxnxi15.js} +2 -2
- package/web/assets/{EnvironmentForm-vcLpp9mR.js → EnvironmentForm-D_JXws5q.js} +2 -2
- package/web/assets/EnvironmentFormPage-7YhkQZnF.js +1 -0
- package/web/assets/EnvironmentListPage-DyNlU_ys.js +1 -0
- package/web/assets/EnvironmentSelector-zX2RSq7p.js +1 -0
- package/web/assets/KanbanBoardPage-CYiVnEsW.js +4 -0
- package/web/assets/KanbanListPage-DA8VLR_A.js +1 -0
- package/web/assets/LaunchProjectPage-B7ch8hBp.js +1 -0
- package/web/assets/LaunchServicesPage-BxbnthGj.js +1 -0
- package/web/assets/LogViewer-DfbwNIUv.js +3 -0
- package/web/assets/ProcessControls-CZV4iizX.js +1 -0
- package/web/assets/ProcessDetailPage-CeatPGNs.js +1 -0
- package/web/assets/{ProcessMetrics-dy3TGmKO.js → ProcessMetrics-C5U4PvOh.js} +2 -2
- package/web/assets/ProjectDetailPage-BaZIvewr.js +1 -0
- package/web/assets/ProjectListPage-BreaFS_h.js +1 -0
- package/web/assets/RandomJobTestPage-ycTTIaQd.js +2 -0
- package/web/assets/ScenarioEditorPage-C1EV-XSW.js +14 -0
- package/web/assets/SendToChatDialog-28Mlo-hb.js +1 -0
- package/web/assets/ServiceControlsBar-CdWFcbXZ.js +1 -0
- package/web/assets/ServiceDetailPage-DAq3ofhT.js +2 -0
- package/web/assets/ServiceFormPage-BER91b-6.js +1 -0
- package/web/assets/SettingsPage-B1jaxJGj.js +2062 -0
- package/web/assets/UnlockPage-DE_HJy8h.css +1 -0
- package/web/assets/UnlockPage-ktTtBOr2.js +1 -0
- package/web/assets/VariablesTable-B9Nhdk1_.js +1 -0
- package/web/assets/VaultMigrationPage-BGJ2PP-7.css +1 -0
- package/web/assets/VaultMigrationPage-Dy48s3x-.js +1 -0
- package/web/assets/VersionBadge-BdlVr8Tg.js +1 -0
- package/web/assets/WikiPage-CMqO84ak.js +1 -0
- package/web/assets/WikiView-CJDAiZr5.js +1 -0
- package/web/assets/add-scalar-classes-pA8osZfz.js +387 -0
- package/web/assets/auth-errors-B3tAiztt.js +1 -0
- package/web/assets/{autocomplete-egYkKgXN.js → autocomplete-N91is6wh.js} +4 -4
- package/web/assets/{basic-shape-diamond.svg-B4ql31Pl.js → basic-shape-diamond.svg-BllfU_oB.js} +1 -1
- package/web/assets/{basic-shape-hexagon.svg-Dse435xU.js → basic-shape-hexagon.svg-DW5bh6IP.js} +1 -1
- package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-Ca80MM2U.js → basic-shape-primary-circle-ellipse-round.svg-9uuUiv5o.js} +1 -1
- package/web/assets/{basic-shape-primary-square-rectangle.svg-BzMOacCe.js → basic-shape-primary-square-rectangle.svg-B64Eo9nB.js} +1 -1
- package/web/assets/{basic-shape-shield.svg-CDpbzQoc.js → basic-shape-shield.svg-DOPLFilS.js} +1 -1
- package/web/assets/{browser-B6yA2X2D.js → browser-DueDd93t.js} +1 -1
- package/web/assets/{browser-CASFdUlr.js → browser-SZtn0i0X.js} +1 -1
- package/web/assets/card-COABLB3K.js +32 -0
- package/web/assets/{checkbox-DX42-aCG.js → checkbox-B_GT2gG5.js} +3 -3
- package/web/assets/{chip-CDVNzEoh.js → chip--NXSwDoR.js} +2 -2
- package/web/assets/{client-wwEU7lJc.js → client-BhFbvoQd.js} +2 -2
- package/web/assets/cloud-chat.store-DEKUnKhm.js +1 -0
- package/web/assets/cloud-session-BSsRB6P3.js +1 -0
- package/web/assets/column-BtS8Diqq.js +907 -0
- package/web/assets/{computer-device-desktop-monitor.svg-QvdUlZtb.js → computer-device-desktop-monitor.svg-BzjC7P3F.js} +1 -1
- package/web/assets/{computer-device-desktop.svg-C9Sr1yFe.js → computer-device-desktop.svg-BecVq71S.js} +1 -1
- package/web/assets/{computer-device-laptop.svg-CQbvy4qG.js → computer-device-laptop.svg-Dme_bl6m.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-DRwNxxcl.js → computer-device-mobile-phone-android-samsung-back.svg-DCxv5fub.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung.svg-DZiXwi21.js → computer-device-mobile-phone-android-samsung.svg--sSW4sfn.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-D1eMrnSS.js → computer-device-mobile-phone-iphone-x-back.svg-h5Po-TDX.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x.svg-MiK72cdg.js → computer-device-mobile-phone-iphone-x.svg-C2Uy1WjT.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet-touch.svg-DkPhnoi4.js → computer-device-mobile-tablet-touch.svg-CaeEG4WK.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet.svg-CDuR2wiu.js → computer-device-mobile-tablet.svg-BpXku7YF.js} +1 -1
- package/web/assets/{computer-device-network-ethernet-cat6.svg-BUBM3jji.js → computer-device-network-ethernet-cat6.svg-aNAbOQCS.js} +1 -1
- package/web/assets/{computer-device-network-lan-www.svg-28lu85cP.js → computer-device-network-lan-www.svg-ClT8Xavc.js} +1 -1
- package/web/assets/{computer-device-network-wifi-connection.svg-BGEvw9iY.js → computer-device-network-wifi-connection.svg-BBVSSCLm.js} +1 -1
- package/web/assets/{computer-device-network-wifi-router.svg-D8xYZAWK.js → computer-device-network-wifi-router.svg-DHEuRciK.js} +1 -1
- package/web/assets/{cssMode-Dvq-MecZ.js → cssMode-X03N01aE.js} +1 -1
- package/web/assets/{divider-B5VXYGmb.js → divider-B8p6MBJX.js} +2 -2
- package/web/assets/{ecology-science-erlenmeyer-flask.svg-Ct1P3ToA.js → ecology-science-erlenmeyer-flask.svg-2iSCfC0H.js} +1 -1
- package/web/assets/{fieldset-CIscNGD5.js → fieldset-B9fGvXQ_.js} +2 -2
- package/web/assets/{freemarker2-CqFs1Djg.js → freemarker2-BR_8OWIK.js} +1 -1
- package/web/assets/{handlebars-i2b7C1iO.js → handlebars-B3tZa--p.js} +1 -1
- package/web/assets/{html-BBmJW8Cg.js → html-BZBK1HMw.js} +1 -1
- package/web/assets/{htmlMode-DPAh_Y5y.js → htmlMode-BVt6cDn5.js} +1 -1
- package/web/assets/{image-flash-lightning.svg-BSAfy_cZ.js → image-flash-lightning.svg-CGclepmP.js} +1 -1
- package/web/assets/{image-picture-flower.svg-4AEEapQs.js → image-picture-flower.svg-Cl3xtcRn.js} +1 -1
- package/web/assets/{index-Br0Stb0u.js → index-BPW4FgHw.js} +299 -299
- package/web/assets/{interface-alert-exclamation-diamond.svg-DclDPUml.js → interface-alert-exclamation-diamond.svg-CmooSrfz.js} +1 -1
- package/web/assets/{interface-alert-exclamation-triangle-warning.svg-AQlrdI6-.js → interface-alert-exclamation-triangle-warning.svg-CkbjudIG.js} +1 -1
- package/web/assets/{interface-alert-information-circle.svg-C70b_ORM.js → interface-alert-information-circle.svg-BVOJniJB.js} +1 -1
- package/web/assets/{interface-award-crown.svg-D-uMX_D5.js → interface-award-crown.svg-BtCDhizx.js} +1 -1
- package/web/assets/{interface-bookmark.svg-DdNPAQF4.js → interface-bookmark-tag.svg-DpZpJCxG.js} +1 -1
- package/web/assets/{interface-bookmark-tag.svg-BBO8UdsI.js → interface-bookmark.svg-CI3C_CEm.js} +1 -1
- package/web/assets/{interface-calendar-date-one.svg-C5m8QsAn.js → interface-calendar-date-one.svg-DeSRwc9I.js} +1 -1
- package/web/assets/{interface-content-book-open-pages.svg-D9gk_nRv.js → interface-content-book-open-pages.svg-CsYHQiGg.js} +1 -1
- package/web/assets/{interface-content-book-page.svg-z_oQ-Kg8.js → interface-content-book-page.svg-DusdhNh8.js} +1 -1
- package/web/assets/{interface-content-file.svg-CLt_X895.js → interface-content-file.svg-BZpRl2vg.js} +1 -1
- package/web/assets/{interface-content-folder.svg-BW_H9jDi.js → interface-content-folder.svg-BHyjskUa.js} +1 -1
- package/web/assets/interface-content-folder.svg-CE1AjWC2.js +1 -0
- package/web/assets/{interface-copy-clipboard.svg-D89FD0hT.js → interface-copy-clipboard.svg-CU8KQ56k.js} +1 -1
- package/web/assets/{interface-edit-attachment.svg-CSax0FWg.js → interface-edit-attachment.svg-sLGtjIVg.js} +1 -1
- package/web/assets/{interface-edit-binocular.svg-C1t3PxkA.js → interface-edit-binocular.svg-Kr0btLKm.js} +1 -1
- package/web/assets/{interface-edit-magic-wand.svg-P-HVaqcv.js → interface-edit-magic-wand.svg-DuZj2AYt.js} +1 -1
- package/web/assets/{interface-edit-tool-paint-roller.svg-BCd-B5Li.js → interface-edit-tool-paint-roller.svg-Da6-5RAS.js} +1 -1
- package/web/assets/{interface-edit-tool-pencil.svg-Dy_8C148.js → interface-edit-tool-pencil.svg-BoPw8ms_.js} +1 -1
- package/web/assets/{interface-favorite-award.svg-BOUSPQD8.js → interface-favorite-award.svg-C3ITWbq3.js} +1 -1
- package/web/assets/{interface-favorite-flag.svg-yj88TNA3.js → interface-favorite-flag.svg-GCr6RXH0.js} +1 -1
- package/web/assets/{interface-favorite-heart.svg-CZCH_6x9.js → interface-favorite-heart.svg-BY9dqVB0.js} +1 -1
- package/web/assets/{interface-favorite-star.svg-CTyJilUu.js → interface-favorite-star.svg-uA4scusZ.js} +1 -1
- package/web/assets/{interface-favorite-stars-sparkles.svg-BOBjnmtV.js → interface-favorite-stars-sparkles.svg-BdSCoHYl.js} +1 -1
- package/web/assets/{interface-hierarchy-flowchart.svg-B0S-kTTJ.js → interface-hierarchy-flowchart.svg-CxNFchvq.js} +1 -1
- package/web/assets/{interface-home-house.svg-Dku5UxpT.js → interface-home-house.svg-DkrKouBb.js} +1 -1
- package/web/assets/{interface-hyperlink.svg-CJwD4AsW.js → interface-hyperlink.svg-I-GxkQJY.js} +1 -1
- package/web/assets/{interface-lighting-brightness.svg-DwLV7f-n.js → interface-lighting-brightness.svg-BJR3bOQ-.js} +1 -1
- package/web/assets/{interface-lock-closed.svg-9XB_WC1w.js → interface-lock-closed.svg-C0b_bVUd.js} +1 -1
- package/web/assets/{interface-lock-open-unlock.svg-DppiuvYV.js → interface-lock-open-unlock.svg-BtmiNLaj.js} +1 -1
- package/web/assets/{interface-login-key.svg-C4pLwiam.js → interface-login-key.svg-DmYxn7RL.js} +1 -1
- package/web/assets/{interface-search.svg-BfLZwjYy.js → interface-search.svg-C1pVTe7C.js} +1 -1
- package/web/assets/{interface-setting-cog.svg-Cv8hVyGq.js → interface-setting-cog.svg-C42e2OTW.js} +1 -1
- package/web/assets/{interface-share-megaphone-bullhorn.svg-BVlc-dhY.js → interface-share-megaphone-bullhorn.svg-o9tOlEh2.js} +1 -1
- package/web/assets/{interface-share-rocket.svg-ChHMNOi9.js → interface-share-rocket.svg-Da9sYj_t.js} +1 -1
- package/web/assets/{interface-share-satellite.svg-Bh7sMl8A.js → interface-share-satellite.svg-B20KpyfR.js} +1 -1
- package/web/assets/{interface-share-space-ship.svg-CcQ-3-tc.js → interface-share-space-ship.svg-B16T8uJ6.js} +1 -1
- package/web/assets/{interface-share.svg-CCg2aMOy.js → interface-share.svg-Bwk_5ajK.js} +1 -1
- package/web/assets/{interface-signal-square.svg-CU31YeuE.js → interface-signal-square.svg-CAVSymjP.js} +1 -1
- package/web/assets/{interface-time-clock-circle.svg-BUUuMbzp.js → interface-time-clock-circle.svg-fjss8ru1.js} +1 -1
- package/web/assets/{interface-time-hour-glass.svg-W7cfslag.js → interface-time-hour-glass.svg-DaTX8FMo.js} +1 -1
- package/web/assets/{interface-users-multiple.svg-DjyQMEmj.js → interface-users-multiple.svg-D-EFFOw7.js} +1 -1
- package/web/assets/{interface-weather-moon.svg-C2sv5n1P.js → interface-weather-moon.svg-CrrnEbU7.js} +1 -1
- package/web/assets/{javascript-D-ps7-Fj.js → javascript-C6MNjbYD.js} +1 -1
- package/web/assets/{jsonMode-C8spHQzS.js → jsonMode-CA2Tf-2T.js} +1 -1
- package/web/assets/{liquid-DqSbumgt.js → liquid-DBKs6KRv.js} +1 -1
- package/web/assets/{lspLanguageFeatures-CY8c9PkF.js → lspLanguageFeatures-BPpii0dk.js} +1 -1
- package/web/assets/{mail-chat-bubble-square.svg-C3X6jNwQ.js → mail-chat-bubble-square.svg-lR62-873.js} +1 -1
- package/web/assets/{mail-send-email-paper-airplane.svg-DAIGQOyP.js → mail-send-email-paper-airplane.svg-Bkg6W9qr.js} +1 -1
- package/web/assets/{mail-send-envelope.svg-CA0S-i50.js → mail-send-envelope.svg-CbNm7aaE.js} +1 -1
- package/web/assets/{mdx-DvZHY6Gn.js → mdx-nUeiRsUz.js} +1 -1
- package/web/assets/{message-Cj-E8qHk.js → message-D6qRK6Jo.js} +2 -2
- package/web/assets/{minus-Bk1xGw-l.js → minus-DoeouXPt.js} +2 -2
- package/web/assets/modal-OTFsRnDn.js +1 -0
- package/web/assets/modal-kvCAAvat.js +5 -0
- package/web/assets/{money-cashier-receipt.svg-TBP6hXoT.js → money-cashier-receipt.svg-DV9XlLpx.js} +1 -1
- package/web/assets/{money-currency-dollar-pay.svg-DYwjJWCD.js → money-currency-dollar-pay.svg-_jLRI9-z.js} +1 -1
- package/web/assets/{money-graph-arrow-increase.svg-BR1Gr97f.js → money-graph-arrow-increase.svg-Tnvl7X21.js} +1 -1
- package/web/assets/{money-graph-bar-chart-increase.svg-BNAoJq2R.js → money-graph-bar-chart-increase.svg-uo4bmQha.js} +1 -1
- package/web/assets/multiselect-BJUl25Yx.js +251 -0
- package/web/assets/{nature-ecology-leaf.svg-CHJE8I4R.js → nature-ecology-leaf.svg-CFuPp8bO.js} +1 -1
- package/web/assets/{password-tS13MOUm.js → password-Cmgp-gwd.js} +4 -4
- package/web/assets/{phone-telephone.svg-CJQLiuXQ.js → phone-telephone.svg-CPKz1YHt.js} +1 -1
- package/web/assets/{plus-CB_mX6Lf.js → plus-s_OJLoyY.js} +6 -6
- package/web/assets/process.store-dKQhHReg.js +1 -0
- package/web/assets/{programming-bug.svg-BXjb-M36.js → programming-bug.svg-fxsVnaeH.js} +1 -1
- package/web/assets/{programming-cloud.svg-gt7FIwaa.js → programming-cloud.svg-BnU51aLl.js} +1 -1
- package/web/assets/{programming-computer-database-server.svg-BtO4lpAh.js → programming-computer-database-server.svg-BZgDGKJW.js} +1 -1
- package/web/assets/{programming-computer-database.svg-DQ-dZqw4.js → programming-computer-database.svg-B5S5rAvT.js} +1 -1
- package/web/assets/{programming-module-four-layout.svg-laiWKIf7.js → programming-module-four-layout.svg-QRzEO0n6.js} +1 -1
- package/web/assets/{programming-module-three.svg--oNt7CzW.js → programming-module-three.svg-CM_P7Vlm.js} +1 -1
- package/web/assets/{programming-module.svg-C9Ai98wU.js → programming-module.svg-3GTFIIEX.js} +1 -1
- package/web/assets/{programming-script-code.svg-DhbU3qfH.js → programming-script-code.svg-KtOz6fyB.js} +1 -1
- package/web/assets/{python-BQIuDGub.js → python-Dm07kugX.js} +1 -1
- package/web/assets/{razor-C_wqRSVy.js → razor-bhq-c8Pc.js} +1 -1
- package/web/assets/router-BamtimoJ.js +1 -0
- package/web/assets/settings.store-DkR2x1Gd.js +1 -0
- package/web/assets/{shopping-cart.svg-D-mwPXiz.js → shopping-cart.svg-z5f-zUgD.js} +1 -1
- package/web/assets/{shopping-gift-present.svg-CplnpU1q.js → shopping-gift-present.svg-BuM8QoB9.js} +1 -1
- package/web/assets/{shopping-shipping-box-parcel-package.svg-D0k-fVoU.js → shopping-shipping-box-parcel-package.svg-CWw8lTQj.js} +1 -1
- package/web/assets/src-BNgzvl34.js +1 -0
- package/web/assets/{src-D0-roPyX.js → src-G9u1k3Z0.js} +33 -33
- package/web/assets/{tabpanel-BXlQXZ2Q.js → tabpanel-C_MAwvD8.js} +3 -3
- package/web/assets/{tag-new-circle.svg-msSLdpvt.js → tag-new-circle.svg-C2PwVxge.js} +1 -1
- package/web/assets/{travel-map-earth-globe.svg-BfNt3fj_.js → travel-map-earth-globe.svg-Cva7Lt5l.js} +1 -1
- package/web/assets/trpc-BdB_KPws.js +1 -0
- package/web/assets/{tsMode-B-iW-fA7.js → tsMode-CiozJEFc.js} +1 -1
- package/web/assets/{typescript-X0FI4nNI.js → typescript-DjFjYcp9.js} +1 -1
- package/web/assets/useAiChatDrawer-DpUd_4Sa.js +1 -0
- package/web/assets/useCloudOrg-DcDNmhwp.js +1 -0
- package/web/assets/{xml-BGZfBXt_.js → xml-_A4d3R4e.js} +1 -1
- package/web/assets/{yaml-Bu_QXl8g.js → yaml-B2BOTmvS.js} +1 -1
- package/web/index.html +1 -1
- package/agent-manager-2I47P7CA.js +0 -7
- package/chunk-NJJMESIY.js.map +0 -1
- package/src-7CJJBMY3.js.map +0 -1
- package/web/assets/AgentScalarChatInterface.vue-DJWCM29h.js +0 -13
- package/web/assets/AgentTerminalPage-DStCvPsn.js +0 -1
- package/web/assets/AiChatPage-B74k4w7z.js +0 -1
- package/web/assets/AppLayout-Crr8vrnA.js +0 -1
- package/web/assets/AuditPage-ya7Q_-y8.js +0 -1
- package/web/assets/CloudAccountPage--zPhBcyX.js +0 -1
- package/web/assets/CloudAccountPage-BsXQlx4x.js +0 -1
- package/web/assets/CloudMessagingPage-sXT8SLY4.js +0 -2
- package/web/assets/DashboardPage-y4tWdya9.js +0 -1
- package/web/assets/EnvironmentFormPage-BSeIsEH-.js +0 -1
- package/web/assets/EnvironmentListPage-DtSTzbmv.js +0 -1
- package/web/assets/EnvironmentSelector-Dbe1Ilq8.js +0 -1
- package/web/assets/KanbanBoardPage-PkAwHbvp.js +0 -4
- package/web/assets/KanbanListPage-BphN58qM.js +0 -1
- package/web/assets/LaunchProjectPage-ClVBkFsC.js +0 -1
- package/web/assets/LaunchServicesPage-C4C8l5wP.js +0 -1
- package/web/assets/LogViewer-DeWk02W9.js +0 -3
- package/web/assets/ProcessControls-uUzThwLe.js +0 -1
- package/web/assets/ProcessDetailPage-Dj9-KZqI.js +0 -1
- package/web/assets/ProjectDetailPage-Prcd6a6y.js +0 -1
- package/web/assets/ProjectListPage-C3-QvMAf.js +0 -1
- package/web/assets/RandomJobTestPage-B5USJ2CQ.js +0 -2
- package/web/assets/ScenarioEditorPage-D0XY_WOp.js +0 -14
- package/web/assets/SendToChatDialog-BSa5s8PE.js +0 -1
- package/web/assets/ServiceControlsBar-CRVx5mMr.js +0 -1
- package/web/assets/ServiceDetailPage-DzxAxNdH.js +0 -2
- package/web/assets/ServiceFormPage-_3cU1hqt.js +0 -1
- package/web/assets/SettingsPage-B0mpjswp.js +0 -2062
- package/web/assets/UnlockPage-DAvZd_hY.js +0 -1
- package/web/assets/UnlockPage-cWvMhfyi.css +0 -1
- package/web/assets/VariablesTable-CoeTpHQw.js +0 -1
- package/web/assets/VersionBadge-D_oFrbj6.js +0 -1
- package/web/assets/WikiPage-HEXd9iFN.js +0 -1
- package/web/assets/WikiView-D_gNl0pw.js +0 -1
- package/web/assets/add-scalar-classes-B5XCUsCH.js +0 -387
- package/web/assets/auth-errors-C44F3O24.js +0 -1
- package/web/assets/card-DLRYSKgj.js +0 -32
- package/web/assets/cloud-chat.store-2Mksi6iL.js +0 -1
- package/web/assets/cloud-session-C0DzgONu.js +0 -1
- package/web/assets/column-TZbNKWtE.js +0 -907
- package/web/assets/interface-content-folder.svg-BJQbuSNW.js +0 -1
- package/web/assets/modal-Bi7DAFyz.js +0 -1
- package/web/assets/modal-BtlOliEo.js +0 -5
- package/web/assets/multiselect-DI4UWQQc.js +0 -251
- package/web/assets/process.store-DCXMZqHz.js +0 -1
- package/web/assets/router-B5tVgvg3.js +0 -1
- package/web/assets/settings.store-p3x3oG-N.js +0 -1
- package/web/assets/src-B_ytlQOt.js +0 -1
- package/web/assets/trpc--zmPP0fK.js +0 -1
- package/web/assets/useAiChatDrawer-CmZm2O_C.js +0 -1
- package/web/assets/useCloudOrg-BsMHgwHL.js +0 -1
- /package/{agent-manager-2I47P7CA.js.map → agent-manager-RQEJLSSF.js.map} +0 -0
- /package/web/assets/{abap-B8xnHZJW.js → abap-lJFTLuI6.js} +0 -0
- /package/web/assets/{apex-B69W3sGq.js → apex-Bp0KWav8.js} +0 -0
- /package/web/assets/{azcli-Eaai8vgm.js → azcli-DBOe7Uvy.js} +0 -0
- /package/web/assets/{bat-CCyh2P9V.js → bat-Dk_NT_by.js} +0 -0
- /package/web/assets/{bicep-CyAc2Run.js → bicep-B07Mrlc7.js} +0 -0
- /package/web/assets/{cameligo-CJVuMDnv.js → cameligo-DL5eNXGn.js} +0 -0
- /package/web/assets/{clojure-DCWtDuXT.js → clojure-BzV2Yqu_.js} +0 -0
- /package/web/assets/{coffee-93zwCqZu.js → coffee-Bjlj5hmf.js} +0 -0
- /package/web/assets/{cpp-t1qXcBbB.js → cpp-C9oth5qz.js} +0 -0
- /package/web/assets/{csharp-Bu0-wvSx.js → csharp-HyGd049S.js} +0 -0
- /package/web/assets/{csp-AaiYnRi_.js → csp-DjCDOBuX.js} +0 -0
- /package/web/assets/{css-BS-T3bCT.js → css-DIL8RTJ3.js} +0 -0
- /package/web/assets/{cypher-QYdwWDet.js → cypher-DX1zPXL5.js} +0 -0
- /package/web/assets/{dart-DRQfRz5u.js → dart-BBQZd_ZZ.js} +0 -0
- /package/web/assets/{dockerfile-Cf422HaY.js → dockerfile-Cj0CaWYx.js} +0 -0
- /package/web/assets/{ecl-DKmCxEZC.js → ecl-BjmWCTJg.js} +0 -0
- /package/web/assets/{elixir-DXxuFQwb.js → elixir-3uWoEjXX.js} +0 -0
- /package/web/assets/{flow9-BhnEDmps.js → flow9-D4r739e9.js} +0 -0
- /package/web/assets/{fsharp-BcdMpySh.js → fsharp-B3ycAx5T.js} +0 -0
- /package/web/assets/{go-CUNzU43j.js → go-DFHBjfCl.js} +0 -0
- /package/web/assets/{graphql-0GEdoWdT.js → graphql-DBjIbM_e.js} +0 -0
- /package/web/assets/{hcl-7aT0BoBu.js → hcl-Buu_1Hsp.js} +0 -0
- /package/web/assets/{ini-C2uC_Kkd.js → ini-CgzZhgz_.js} +0 -0
- /package/web/assets/{java-BGh_orDD.js → java-BczDO0q5.js} +0 -0
- /package/web/assets/{julia-BMkYL7l7.js → julia-B142kn-7.js} +0 -0
- /package/web/assets/{kotlin-CaStfl8T.js → kotlin-42XMP7p1.js} +0 -0
- /package/web/assets/{less-CpP708lq.js → less-BCIsKRqU.js} +0 -0
- /package/web/assets/{lexon-n74w-VMa.js → lexon-DTDOH1dQ.js} +0 -0
- /package/web/assets/{lua-DV3MQq-H.js → lua-BrH-CeNs.js} +0 -0
- /package/web/assets/{m3-Cclze1bC.js → m3-D-eUeHOI.js} +0 -0
- /package/web/assets/{markdown-C8b0Ckdo.js → markdown-DwpSjZTn.js} +0 -0
- /package/web/assets/{mips-pWj6zxei.js → mips-DoGTrjVk.js} +0 -0
- /package/web/assets/{msdax-DvyywuD0.js → msdax-CQ8McnjQ.js} +0 -0
- /package/web/assets/{mysql-CZlMFPhf.js → mysql-Cj3do0ZO.js} +0 -0
- /package/web/assets/{objective-c-Dfzs1cqa.js → objective-c-BZbR8TG8.js} +0 -0
- /package/web/assets/{pascal-DnvBS6YC.js → pascal-23PRDHRq.js} +0 -0
- /package/web/assets/{pascaligo-BqQrNWHm.js → pascaligo-CxasKTLJ.js} +0 -0
- /package/web/assets/{perl-PmXI7PaC.js → perl-Dhxz2Lhx.js} +0 -0
- /package/web/assets/{pgsql-BSIv6vTg.js → pgsql-BIbUy7yD.js} +0 -0
- /package/web/assets/{php-DFl1Flu9.js → php-B5qS9qgM.js} +0 -0
- /package/web/assets/{pla-D85akHEG.js → pla-Bolz9fha.js} +0 -0
- /package/web/assets/{postiats-BENv2q_G.js → postiats-Ba6dE5lj.js} +0 -0
- /package/web/assets/{powerquery-BFkjDbIZ.js → powerquery-2jW3ONgo.js} +0 -0
- /package/web/assets/{powershell-YrWnOFV5.js → powershell-CMfBIiJp.js} +0 -0
- /package/web/assets/{protobuf-Defuvypk.js → protobuf-BpaquOUj.js} +0 -0
- /package/web/assets/{pug-U5vTkfZW.js → pug-cBG82Ydz.js} +0 -0
- /package/web/assets/{qsharp-CYAWcALE.js → qsharp-DtqL8Lmt.js} +0 -0
- /package/web/assets/{r-DfDvKIQI.js → r-CKLew4sj.js} +0 -0
- /package/web/assets/{redis-CfxXb5P7.js → redis-BdDxRU-N.js} +0 -0
- /package/web/assets/{redshift-C79hPgxo.js → redshift-X4a4MlqW.js} +0 -0
- /package/web/assets/{restructuredtext-8wPbRyeC.js → restructuredtext-LA4Fv05h.js} +0 -0
- /package/web/assets/{ruby-QxUAWasq.js → ruby-CibE_WVM.js} +0 -0
- /package/web/assets/{rust-HuSf37VN.js → rust-BK6RsiL0.js} +0 -0
- /package/web/assets/{sb-Sv7lt4AB.js → sb-BnCCt0Qj.js} +0 -0
- /package/web/assets/{scala-DKemzKKU.js → scala-oaBDrVqj.js} +0 -0
- /package/web/assets/{scheme-BzHyg2h9.js → scheme-C-wkLC01.js} +0 -0
- /package/web/assets/{scss-rEyGzHl_.js → scss-BceVGOJY.js} +0 -0
- /package/web/assets/{shell-B0M_8Ipp.js → shell-CxhBAFA5.js} +0 -0
- /package/web/assets/{solidity-DBlqOy8H.js → solidity-D9sXgTfx.js} +0 -0
- /package/web/assets/{sophia-CvF25coV.js → sophia-C4VBhIEM.js} +0 -0
- /package/web/assets/{sparql-Bh-bEONh.js → sparql-DbsK2s9y.js} +0 -0
- /package/web/assets/{sql-b2efFD_k.js → sql-CuGfE0wH.js} +0 -0
- /package/web/assets/{st-CZYKif4r.js → st-rB6Bqb2h.js} +0 -0
- /package/web/assets/{swift--G_pPFZi.js → swift-BtHGe_4T.js} +0 -0
- /package/web/assets/{systemverilog-lKrXkwoz.js → systemverilog-CgKnzwU4.js} +0 -0
- /package/web/assets/{tcl-BBD-NhPH.js → tcl-DyqQWf87.js} +0 -0
- /package/web/assets/{twig-Cp-9q602.js → twig-C980XO5P.js} +0 -0
- /package/web/assets/{typespec-CFPGsTQu.js → typespec-CVmA80px.js} +0 -0
- /package/web/assets/{vb-CF5A6m2D.js → vb-rdNQv5VQ.js} +0 -0
- /package/web/assets/{wgsl-DwzoWMFM.js → wgsl-64oVbimL.js} +0 -0
package/index.js
CHANGED
|
@@ -201,7 +201,7 @@ function listenWithRetry(server, port, host, wss, maxRetries = 20, delay = 500)
|
|
|
201
201
|
});
|
|
202
202
|
}
|
|
203
203
|
async function main() {
|
|
204
|
-
const { createLocalServer, pullEnv, PullEnvError } = await import("./src-
|
|
204
|
+
const { createLocalServer, pullEnv, PullEnvError } = await import("./src-ZKQETCHR.js");
|
|
205
205
|
if (isPullEnv) {
|
|
206
206
|
if (!serviceArg) {
|
|
207
207
|
console.error("Error: --service (-s) is required with --pull-env");
|
package/package.json
CHANGED
|
@@ -35,8 +35,10 @@ import {
|
|
|
35
35
|
clearEncryptionKey,
|
|
36
36
|
clearPendingLegacyKey,
|
|
37
37
|
decryptValue,
|
|
38
|
+
decryptValueWith,
|
|
38
39
|
decryptVariableSlots,
|
|
39
40
|
encryptValue,
|
|
41
|
+
encryptValueWith,
|
|
40
42
|
encryptVariableSlots,
|
|
41
43
|
ensureEncryptionKey,
|
|
42
44
|
ensureLocalVault,
|
|
@@ -54,6 +56,7 @@ import {
|
|
|
54
56
|
keyRoot,
|
|
55
57
|
keyedFilePath,
|
|
56
58
|
legacyMachineFilePath,
|
|
59
|
+
legacyVaultRoot,
|
|
57
60
|
listCloudVaults,
|
|
58
61
|
loadFromEnv,
|
|
59
62
|
localVaultRoot,
|
|
@@ -75,7 +78,7 @@ import {
|
|
|
75
78
|
traefikManager,
|
|
76
79
|
vaultFor,
|
|
77
80
|
writeEntity
|
|
78
|
-
} from "./chunk-
|
|
81
|
+
} from "./chunk-B6C5AXMK.js";
|
|
79
82
|
|
|
80
83
|
// ../server/src/create-server.ts
|
|
81
84
|
import express from "express";
|
|
@@ -1976,13 +1979,13 @@ var serviceRouter = router({
|
|
|
1976
1979
|
remote: service.git?.remote,
|
|
1977
1980
|
checkReachability: input.checkReachability
|
|
1978
1981
|
});
|
|
1979
|
-
const { exists, actualRemote, unreachable, resolvedCwd, unresolvedVars } = agentResult;
|
|
1982
|
+
const { exists: exists2, actualRemote, unreachable, resolvedCwd, unresolvedVars } = agentResult;
|
|
1980
1983
|
if (unresolvedVars.length > 0) {
|
|
1981
1984
|
return { exists: false, canClone: false, unresolvedVars, resolvedCwd, gitMismatch: null };
|
|
1982
1985
|
}
|
|
1983
|
-
const canClone = !!service.git?.remote && (!
|
|
1986
|
+
const canClone = !!service.git?.remote && (!exists2 || actualRemote === null);
|
|
1984
1987
|
let gitMismatch = null;
|
|
1985
|
-
if (
|
|
1988
|
+
if (exists2 && service.git?.remote && !canClone) {
|
|
1986
1989
|
if (actualRemote === null) {
|
|
1987
1990
|
gitMismatch = { actual: null, configured: service.git.remote };
|
|
1988
1991
|
} else if (actualRemote !== service.git.remote) {
|
|
@@ -1991,7 +1994,7 @@ var serviceRouter = router({
|
|
|
1991
1994
|
gitMismatch = { actual: actualRemote, configured: service.git.remote, unreachable: true };
|
|
1992
1995
|
}
|
|
1993
1996
|
}
|
|
1994
|
-
return { exists, canClone, unresolvedVars: [], resolvedCwd, gitMismatch };
|
|
1997
|
+
return { exists: exists2, canClone, unresolvedVars: [], resolvedCwd, gitMismatch };
|
|
1995
1998
|
}),
|
|
1996
1999
|
cloneRepository: protectedProcedure.input(z3.object({ id: z3.string().max(128) })).mutation(async ({ input }) => {
|
|
1997
2000
|
const service = await serviceStore.get(input.id);
|
|
@@ -6590,7 +6593,7 @@ function tailTranscript(opts) {
|
|
|
6590
6593
|
|
|
6591
6594
|
// ../server/src/services/ai-runners/claude-pty-runner.ts
|
|
6592
6595
|
async function getAgentManager() {
|
|
6593
|
-
const { agentManager: agentManager2 } = await import("./agent-manager-
|
|
6596
|
+
const { agentManager: agentManager2 } = await import("./agent-manager-RQEJLSSF.js");
|
|
6594
6597
|
return agentManager2;
|
|
6595
6598
|
}
|
|
6596
6599
|
function buildPtyArgs(params, sessionId, opts) {
|
|
@@ -7243,7 +7246,7 @@ async function shutdownCodexAppServer() {
|
|
|
7243
7246
|
}
|
|
7244
7247
|
}
|
|
7245
7248
|
async function getAgentManager2() {
|
|
7246
|
-
const { agentManager: agentManager2 } = await import("./agent-manager-
|
|
7249
|
+
const { agentManager: agentManager2 } = await import("./agent-manager-RQEJLSSF.js");
|
|
7247
7250
|
return agentManager2;
|
|
7248
7251
|
}
|
|
7249
7252
|
function parseRuneyaCurlCommand(command) {
|
|
@@ -13147,19 +13150,129 @@ async function ensureFilePermissions() {
|
|
|
13147
13150
|
}
|
|
13148
13151
|
}
|
|
13149
13152
|
|
|
13153
|
+
// ../server/src/services/vault-migration.ts
|
|
13154
|
+
import { readdir as readdir7, readFile as readFile17, writeFile as writeFile16, mkdir as mkdir19, copyFile, unlink as unlink5, rename as rename13, stat as stat7 } from "fs/promises";
|
|
13155
|
+
import { join as join17 } from "path";
|
|
13156
|
+
var KEY_FILES = [".encryption.key.enc", ".runeya-verify"];
|
|
13157
|
+
var MACHINE_FILES = [
|
|
13158
|
+
"agents.json",
|
|
13159
|
+
"cloud-session.json",
|
|
13160
|
+
"conversations.private.json",
|
|
13161
|
+
"api-keys.json",
|
|
13162
|
+
"api-keys.private.json",
|
|
13163
|
+
"settings.private.json"
|
|
13164
|
+
];
|
|
13165
|
+
function rekeyValue(value, from, to, counter) {
|
|
13166
|
+
if (typeof value === "string") {
|
|
13167
|
+
if (!isEncryptedValue(value)) return value;
|
|
13168
|
+
let plaintext;
|
|
13169
|
+
try {
|
|
13170
|
+
plaintext = decryptValueWith(from, value);
|
|
13171
|
+
} catch {
|
|
13172
|
+
return value;
|
|
13173
|
+
}
|
|
13174
|
+
counter.n += 1;
|
|
13175
|
+
return encryptValueWith(to, plaintext);
|
|
13176
|
+
}
|
|
13177
|
+
if (Array.isArray(value)) return value.map((v) => rekeyValue(v, from, to, counter));
|
|
13178
|
+
if (value && typeof value === "object") {
|
|
13179
|
+
const out = {};
|
|
13180
|
+
for (const [k, v] of Object.entries(value)) {
|
|
13181
|
+
out[k] = rekeyValue(v, from, to, counter);
|
|
13182
|
+
}
|
|
13183
|
+
return out;
|
|
13184
|
+
}
|
|
13185
|
+
return value;
|
|
13186
|
+
}
|
|
13187
|
+
async function vaultJsonFiles(root) {
|
|
13188
|
+
const entries = await readdir7(root, { withFileTypes: true });
|
|
13189
|
+
return entries.filter((e) => e.isFile() && e.name.endsWith(".json")).map((e) => e.name);
|
|
13190
|
+
}
|
|
13191
|
+
async function exists(path) {
|
|
13192
|
+
try {
|
|
13193
|
+
await stat7(path);
|
|
13194
|
+
return true;
|
|
13195
|
+
} catch {
|
|
13196
|
+
return false;
|
|
13197
|
+
}
|
|
13198
|
+
}
|
|
13199
|
+
async function openLegacyVault(legacyRoot, masterPassword) {
|
|
13200
|
+
const key = await readEncryptedKey(legacyRoot, masterPassword);
|
|
13201
|
+
await verifyEncryptionKey(legacyRoot, key);
|
|
13202
|
+
return key;
|
|
13203
|
+
}
|
|
13204
|
+
async function migrateLegacyVault(legacyRoot, machineRootDir, legacyKey, machineKey, now) {
|
|
13205
|
+
const stamp = now.toISOString().replace(/[:.]/g, "-").substring(0, 19);
|
|
13206
|
+
const backupDir = join17(legacyRoot, `backup-${stamp}`);
|
|
13207
|
+
await mkdir19(backupDir, { recursive: true });
|
|
13208
|
+
const jsonFiles = await vaultJsonFiles(legacyRoot);
|
|
13209
|
+
for (const name of [...jsonFiles, ...KEY_FILES]) {
|
|
13210
|
+
if (await exists(join17(legacyRoot, name))) {
|
|
13211
|
+
await copyFile(join17(legacyRoot, name), join17(backupDir, name));
|
|
13212
|
+
}
|
|
13213
|
+
}
|
|
13214
|
+
const rekeyed = [];
|
|
13215
|
+
for (const name of jsonFiles) {
|
|
13216
|
+
const raw = await readFile17(join17(legacyRoot, name), "utf-8");
|
|
13217
|
+
let parsed;
|
|
13218
|
+
try {
|
|
13219
|
+
parsed = JSON.parse(raw);
|
|
13220
|
+
} catch {
|
|
13221
|
+
continue;
|
|
13222
|
+
}
|
|
13223
|
+
const counter = { n: 0 };
|
|
13224
|
+
const converted = rekeyValue(parsed, legacyKey, machineKey, counter);
|
|
13225
|
+
if (counter.n === 0) continue;
|
|
13226
|
+
const tmp = join17(legacyRoot, `${name}.tmp`);
|
|
13227
|
+
await writeFile16(tmp, JSON.stringify(converted, null, 2), "utf-8");
|
|
13228
|
+
await rename13(tmp, join17(legacyRoot, name));
|
|
13229
|
+
rekeyed.push({ file: name, values: counter.n });
|
|
13230
|
+
}
|
|
13231
|
+
for (const { file, values } of rekeyed) {
|
|
13232
|
+
const parsed = JSON.parse(await readFile17(join17(legacyRoot, file), "utf-8"));
|
|
13233
|
+
const check = { n: 0 };
|
|
13234
|
+
rekeyValue(parsed, machineKey, machineKey, check);
|
|
13235
|
+
if (check.n !== values) {
|
|
13236
|
+
throw new Error(
|
|
13237
|
+
`V\xE9rification \xE9chou\xE9e pour ${file} : ${check.n} valeur(s) relisible(s) avec la cl\xE9 machine, ${values} attendue(s)`
|
|
13238
|
+
);
|
|
13239
|
+
}
|
|
13240
|
+
}
|
|
13241
|
+
await mkdir19(machineRootDir, { recursive: true });
|
|
13242
|
+
const moved = [];
|
|
13243
|
+
const skipped = [];
|
|
13244
|
+
for (const name of MACHINE_FILES) {
|
|
13245
|
+
const from = join17(legacyRoot, name);
|
|
13246
|
+
if (!await exists(from)) continue;
|
|
13247
|
+
const to = join17(machineRootDir, name);
|
|
13248
|
+
if (await exists(to)) {
|
|
13249
|
+
skipped.push(name);
|
|
13250
|
+
continue;
|
|
13251
|
+
}
|
|
13252
|
+
await copyFile(from, to);
|
|
13253
|
+
await unlink5(from);
|
|
13254
|
+
moved.push(name);
|
|
13255
|
+
}
|
|
13256
|
+
for (const name of KEY_FILES) {
|
|
13257
|
+
const path = join17(legacyRoot, name);
|
|
13258
|
+
if (await exists(path)) await unlink5(path);
|
|
13259
|
+
}
|
|
13260
|
+
return { backupDir, rekeyed, moved, skipped };
|
|
13261
|
+
}
|
|
13262
|
+
|
|
13150
13263
|
// ../server/src/migrations/migrate-from-legacy.ts
|
|
13151
13264
|
import { createRequire } from "module";
|
|
13152
13265
|
import { randomBytes as randomBytes5, createCipheriv as createCipheriv2, createDecipheriv as createDecipheriv2 } from "crypto";
|
|
13153
13266
|
import { randomUUID as randomUUID12 } from "crypto";
|
|
13154
13267
|
import {
|
|
13155
|
-
readFile as
|
|
13156
|
-
writeFile as
|
|
13157
|
-
rename as
|
|
13158
|
-
mkdir as
|
|
13268
|
+
readFile as readFile18,
|
|
13269
|
+
writeFile as writeFile17,
|
|
13270
|
+
rename as rename14,
|
|
13271
|
+
mkdir as mkdir20,
|
|
13159
13272
|
access as access2,
|
|
13160
|
-
readdir as
|
|
13273
|
+
readdir as readdir8
|
|
13161
13274
|
} from "fs/promises";
|
|
13162
|
-
import { join as
|
|
13275
|
+
import { join as join18 } from "path";
|
|
13163
13276
|
var _require = createRequire(import.meta.url);
|
|
13164
13277
|
var PARSER_ID_MAP = {
|
|
13165
13278
|
"stack-monitor-parser-jsons": "native:json",
|
|
@@ -13268,7 +13381,7 @@ async function getSodium() {
|
|
|
13268
13381
|
return _sodium;
|
|
13269
13382
|
}
|
|
13270
13383
|
async function decryptLegacyFile(filePath, key, sodium) {
|
|
13271
|
-
const raw = (await
|
|
13384
|
+
const raw = (await readFile18(filePath, "utf-8")).trim();
|
|
13272
13385
|
if (!raw || raw === "[]" || raw === "{}") {
|
|
13273
13386
|
try {
|
|
13274
13387
|
return JSON.parse(raw);
|
|
@@ -13288,14 +13401,14 @@ async function decryptLegacyFile(filePath, key, sodium) {
|
|
|
13288
13401
|
}
|
|
13289
13402
|
async function atomicWrite(path, data) {
|
|
13290
13403
|
const tmp = path + ".tmp";
|
|
13291
|
-
await
|
|
13292
|
-
await
|
|
13404
|
+
await writeFile17(tmp, JSON.stringify(data, null, 2), "utf-8");
|
|
13405
|
+
await rename14(tmp, path);
|
|
13293
13406
|
}
|
|
13294
13407
|
async function runLegacyMigration(dataDir) {
|
|
13295
13408
|
const { resolve: resolve6 } = await import("path");
|
|
13296
13409
|
const abCwd = resolve6(process.cwd());
|
|
13297
|
-
const legacyRoot =
|
|
13298
|
-
const legacyKeyPath =
|
|
13410
|
+
const legacyRoot = join18(abCwd, env.DATA_DIR);
|
|
13411
|
+
const legacyKeyPath = join18(legacyRoot, "dbs", "encryption-key.json");
|
|
13299
13412
|
try {
|
|
13300
13413
|
await access2(legacyKeyPath);
|
|
13301
13414
|
} catch {
|
|
@@ -13303,20 +13416,20 @@ async function runLegacyMigration(dataDir) {
|
|
|
13303
13416
|
}
|
|
13304
13417
|
console.log("[legacy-migration] Legacy Runeya data detected, starting migration\u2026");
|
|
13305
13418
|
const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-").substring(0, 19);
|
|
13306
|
-
const legacyTmp =
|
|
13307
|
-
await
|
|
13308
|
-
await
|
|
13309
|
-
const legacyOld =
|
|
13310
|
-
await
|
|
13419
|
+
const legacyTmp = join18(abCwd, ".runeya-tmp");
|
|
13420
|
+
await rename14(legacyRoot, legacyTmp);
|
|
13421
|
+
await mkdir20(dataDir, { recursive: true });
|
|
13422
|
+
const legacyOld = join18(dataDir, `backup-${timestamp}`);
|
|
13423
|
+
await rename14(legacyTmp, legacyOld);
|
|
13311
13424
|
console.log(`[legacy-migration] Legacy data backed up to ${legacyOld}`);
|
|
13312
|
-
const keyJson = JSON.parse(await
|
|
13425
|
+
const keyJson = JSON.parse(await readFile18(join18(legacyOld, "dbs", "encryption-key.json"), "utf-8"));
|
|
13313
13426
|
const sodium = await getSodium();
|
|
13314
13427
|
const sodiumKey = sodium.from_base64(keyJson.encryptionKey);
|
|
13315
13428
|
const keyBuffer = Buffer.from(sodiumKey);
|
|
13316
13429
|
const runyeaKeyHex = keyBuffer.toString("hex");
|
|
13317
13430
|
await setEncryptionKey(runyeaKeyHex);
|
|
13318
13431
|
console.log("[legacy-migration] Encryption key loaded in memory (temporary)");
|
|
13319
|
-
const dbsDir =
|
|
13432
|
+
const dbsDir = join18(legacyOld, "dbs");
|
|
13320
13433
|
async function readEncrypted(filePath) {
|
|
13321
13434
|
try {
|
|
13322
13435
|
return await decryptLegacyFile(filePath, sodiumKey, sodium);
|
|
@@ -13325,29 +13438,29 @@ async function runLegacyMigration(dataDir) {
|
|
|
13325
13438
|
return null;
|
|
13326
13439
|
}
|
|
13327
13440
|
}
|
|
13328
|
-
const envsDir =
|
|
13329
|
-
const envFiles = (await
|
|
13441
|
+
const envsDir = join18(dbsDir, "envs");
|
|
13442
|
+
const envFiles = (await readdir8(envsDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
|
|
13330
13443
|
const legacyEnvs = {};
|
|
13331
13444
|
for (const file of envFiles) {
|
|
13332
13445
|
const name = file.replace(".encrypted.json", "");
|
|
13333
|
-
legacyEnvs[name] = await readEncrypted(
|
|
13446
|
+
legacyEnvs[name] = await readEncrypted(join18(envsDir, file));
|
|
13334
13447
|
}
|
|
13335
|
-
const servicesDir =
|
|
13336
|
-
const serviceFiles = (await
|
|
13448
|
+
const servicesDir = join18(dbsDir, "services");
|
|
13449
|
+
const serviceFiles = (await readdir8(servicesDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
|
|
13337
13450
|
const legacyServices = {};
|
|
13338
13451
|
for (const file of serviceFiles) {
|
|
13339
13452
|
const name = file.replace(".encrypted.json", "");
|
|
13340
13453
|
if (!name) continue;
|
|
13341
|
-
const data = await readEncrypted(
|
|
13454
|
+
const data = await readEncrypted(join18(servicesDir, file));
|
|
13342
13455
|
if (data?.label) legacyServices[name] = data;
|
|
13343
13456
|
}
|
|
13344
|
-
const overridesDir =
|
|
13345
|
-
const overrideFiles = (await
|
|
13457
|
+
const overridesDir = join18(dbsDir, "overrides");
|
|
13458
|
+
const overrideFiles = (await readdir8(overridesDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
|
|
13346
13459
|
const legacyServiceOverrides = {};
|
|
13347
13460
|
const legacyEnvOverrides = {};
|
|
13348
13461
|
for (const file of overrideFiles) {
|
|
13349
13462
|
const baseName = file.replace(".encrypted.json", "");
|
|
13350
|
-
const data = await readEncrypted(
|
|
13463
|
+
const data = await readEncrypted(join18(overridesDir, file));
|
|
13351
13464
|
if (!data) continue;
|
|
13352
13465
|
if (baseName.endsWith("-envs")) {
|
|
13353
13466
|
legacyServiceOverrides[baseName.slice(0, -5)] = data;
|
|
@@ -13355,11 +13468,11 @@ async function runLegacyMigration(dataDir) {
|
|
|
13355
13468
|
legacyEnvOverrides[baseName.slice(0, -12)] = data;
|
|
13356
13469
|
}
|
|
13357
13470
|
}
|
|
13358
|
-
const parsersDir =
|
|
13359
|
-
const parserFiles = (await
|
|
13471
|
+
const parsersDir = join18(dbsDir, "parsers");
|
|
13472
|
+
const parserFiles = (await readdir8(parsersDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
|
|
13360
13473
|
const legacyParsers = [];
|
|
13361
13474
|
for (const file of parserFiles) {
|
|
13362
|
-
const data = await readEncrypted(
|
|
13475
|
+
const data = await readEncrypted(join18(parsersDir, file));
|
|
13363
13476
|
if (data?.id) legacyParsers.push(data);
|
|
13364
13477
|
}
|
|
13365
13478
|
const projectMonoId = randomUUID12();
|
|
@@ -13700,7 +13813,7 @@ async function runLegacyMigration(dataDir) {
|
|
|
13700
13813
|
}
|
|
13701
13814
|
let existingSettings = {};
|
|
13702
13815
|
try {
|
|
13703
|
-
existingSettings = JSON.parse(await
|
|
13816
|
+
existingSettings = JSON.parse(await readFile18(join18(dataDir, "settings.json"), "utf-8"));
|
|
13704
13817
|
} catch {
|
|
13705
13818
|
}
|
|
13706
13819
|
const migratedParsers = legacyParsers.map((p) => ({
|
|
@@ -13721,11 +13834,11 @@ ${p.transform ?? ""}`,
|
|
|
13721
13834
|
...migratedParsers
|
|
13722
13835
|
]
|
|
13723
13836
|
};
|
|
13724
|
-
await atomicWrite(
|
|
13725
|
-
await atomicWrite(
|
|
13726
|
-
await atomicWrite(
|
|
13727
|
-
await atomicWrite(
|
|
13728
|
-
await atomicWrite(
|
|
13837
|
+
await atomicWrite(join18(dataDir, "projects.json"), runeProjects);
|
|
13838
|
+
await atomicWrite(join18(dataDir, "services.json"), runeServices);
|
|
13839
|
+
await atomicWrite(join18(dataDir, "environments.json"), runeEnvs);
|
|
13840
|
+
await atomicWrite(join18(dataDir, "environment-overrides.json"), flatOverrides);
|
|
13841
|
+
await atomicWrite(join18(dataDir, "settings.json"), newSettings);
|
|
13729
13842
|
const svcEnvCount = runeEnvs.filter((e) => e.scope === "service").length;
|
|
13730
13843
|
console.log(`[legacy-migration] Written: ${runeProjects.length} projects, ${runeServices.length} services, ${runeEnvs.length} environments (${svcEnvCount} service-scoped)`);
|
|
13731
13844
|
console.log(`[legacy-migration] Overrides: ${Object.keys(flatOverrides).length}, custom parsers: ${migratedParsers.length} (all disabled \u2014 rewrite required)`);
|
|
@@ -13736,12 +13849,12 @@ ${p.transform ?? ""}`,
|
|
|
13736
13849
|
}
|
|
13737
13850
|
async function findLegacyKeyInBackup(dataDir) {
|
|
13738
13851
|
try {
|
|
13739
|
-
const entries = await
|
|
13852
|
+
const entries = await readdir8(dataDir);
|
|
13740
13853
|
const backupDirs = entries.filter((e) => e.startsWith("backup-")).sort((a, b) => a < b ? -1 : a > b ? 1 : 0).reverse();
|
|
13741
13854
|
for (const dir of backupDirs) {
|
|
13742
|
-
const keyJsonPath =
|
|
13855
|
+
const keyJsonPath = join18(dataDir, dir, "dbs", "encryption-key.json");
|
|
13743
13856
|
try {
|
|
13744
|
-
const raw = await
|
|
13857
|
+
const raw = await readFile18(keyJsonPath, "utf-8");
|
|
13745
13858
|
const parsed = JSON.parse(raw);
|
|
13746
13859
|
if (!parsed.encryptionKey) continue;
|
|
13747
13860
|
const sodium = await getSodium();
|
|
@@ -13763,14 +13876,14 @@ async function runOverrideOnlyMigration(dataDir) {
|
|
|
13763
13876
|
const abDataDir = resolve6(dataDir);
|
|
13764
13877
|
const abCwd = resolve6(process.cwd());
|
|
13765
13878
|
const candidateDirs = [
|
|
13766
|
-
|
|
13767
|
-
|
|
13879
|
+
join18(abCwd, ".runeya", "dbs", "overrides"),
|
|
13880
|
+
join18(abDataDir, "dbs", "overrides")
|
|
13768
13881
|
];
|
|
13769
13882
|
let overridesDir = null;
|
|
13770
13883
|
let overrideFiles = [];
|
|
13771
13884
|
for (const dir of candidateDirs) {
|
|
13772
13885
|
try {
|
|
13773
|
-
const files = (await
|
|
13886
|
+
const files = (await readdir8(dir)).filter((f) => f.endsWith(".encrypted.json"));
|
|
13774
13887
|
if (files.length > 0) {
|
|
13775
13888
|
overridesDir = dir;
|
|
13776
13889
|
overrideFiles = files;
|
|
@@ -13780,7 +13893,7 @@ async function runOverrideOnlyMigration(dataDir) {
|
|
|
13780
13893
|
}
|
|
13781
13894
|
}
|
|
13782
13895
|
if (!overridesDir || overrideFiles.length === 0) return false;
|
|
13783
|
-
const legacyKeyPath =
|
|
13896
|
+
const legacyKeyPath = join18(overridesDir, "..", "encryption-key.json");
|
|
13784
13897
|
try {
|
|
13785
13898
|
await access2(legacyKeyPath);
|
|
13786
13899
|
return false;
|
|
@@ -13798,7 +13911,7 @@ async function runOverrideOnlyMigration(dataDir) {
|
|
|
13798
13911
|
const envNameToId = {};
|
|
13799
13912
|
let envsRaw;
|
|
13800
13913
|
try {
|
|
13801
|
-
envsRaw = JSON.parse(await
|
|
13914
|
+
envsRaw = JSON.parse(await readFile18(join18(abDataDir, "environments.json"), "utf-8"));
|
|
13802
13915
|
for (const _env of envsRaw) {
|
|
13803
13916
|
const env2 = _env;
|
|
13804
13917
|
if (env2["name"] && env2["id"]) {
|
|
@@ -13817,7 +13930,7 @@ async function runOverrideOnlyMigration(dataDir) {
|
|
|
13817
13930
|
let servicesRaw = [];
|
|
13818
13931
|
const serviceNameToId = {};
|
|
13819
13932
|
try {
|
|
13820
|
-
servicesRaw = JSON.parse(await
|
|
13933
|
+
servicesRaw = JSON.parse(await readFile18(join18(abDataDir, "services.json"), "utf-8"));
|
|
13821
13934
|
for (const _svc of servicesRaw) {
|
|
13822
13935
|
const svc = _svc;
|
|
13823
13936
|
if (svc["name"] && svc["id"]) serviceNameToId[svc["name"]] = svc["id"];
|
|
@@ -13834,7 +13947,7 @@ async function runOverrideOnlyMigration(dataDir) {
|
|
|
13834
13947
|
const envName = baseName.slice(0, -"-environment".length);
|
|
13835
13948
|
let data;
|
|
13836
13949
|
try {
|
|
13837
|
-
data = await decryptLegacyFile(
|
|
13950
|
+
data = await decryptLegacyFile(join18(overridesDir, file), sodiumKey, sodium);
|
|
13838
13951
|
} catch (err) {
|
|
13839
13952
|
console.warn(`[override-migration] Failed to decrypt ${file}: ${err.message}`);
|
|
13840
13953
|
continue;
|
|
@@ -13861,7 +13974,7 @@ async function runOverrideOnlyMigration(dataDir) {
|
|
|
13861
13974
|
}
|
|
13862
13975
|
}
|
|
13863
13976
|
if (Object.keys(flatOverrides).length > 0) {
|
|
13864
|
-
await atomicWrite(
|
|
13977
|
+
await atomicWrite(join18(abDataDir, "environment-overrides.json"), flatOverrides);
|
|
13865
13978
|
console.log(`[override-migration] Written ${Object.keys(flatOverrides).length} override(s) to environment-overrides.json`);
|
|
13866
13979
|
}
|
|
13867
13980
|
let envsModified = false;
|
|
@@ -13871,7 +13984,7 @@ async function runOverrideOnlyMigration(dataDir) {
|
|
|
13871
13984
|
const serviceName = baseName.slice(0, -"-envs".length);
|
|
13872
13985
|
let data;
|
|
13873
13986
|
try {
|
|
13874
|
-
data = await decryptLegacyFile(
|
|
13987
|
+
data = await decryptLegacyFile(join18(overridesDir, file), sodiumKey, sodium);
|
|
13875
13988
|
} catch (err) {
|
|
13876
13989
|
console.warn(`[override-migration] Failed to decrypt ${file}: ${err.message}`);
|
|
13877
13990
|
continue;
|
|
@@ -13930,12 +14043,12 @@ async function runOverrideOnlyMigration(dataDir) {
|
|
|
13930
14043
|
}
|
|
13931
14044
|
}
|
|
13932
14045
|
if (envsModified) {
|
|
13933
|
-
await atomicWrite(
|
|
14046
|
+
await atomicWrite(join18(abDataDir, "environments.json"), envsRaw);
|
|
13934
14047
|
console.log("[override-migration] Merged service overrides into environments.json");
|
|
13935
14048
|
}
|
|
13936
14049
|
const migratedDir = overridesDir.replace(/overrides$/, "overrides-migrated");
|
|
13937
14050
|
try {
|
|
13938
|
-
await
|
|
14051
|
+
await rename14(overridesDir, migratedDir);
|
|
13939
14052
|
console.log(`[override-migration] Moved overrides/ \u2192 overrides-migrated/`);
|
|
13940
14053
|
} catch (err) {
|
|
13941
14054
|
console.warn(`[override-migration] Could not rename overrides dir: ${err.message}`);
|
|
@@ -13945,8 +14058,8 @@ async function runOverrideOnlyMigration(dataDir) {
|
|
|
13945
14058
|
}
|
|
13946
14059
|
|
|
13947
14060
|
// ../server/src/services/server-state.ts
|
|
13948
|
-
import { join as
|
|
13949
|
-
import { stat as
|
|
14061
|
+
import { join as join19 } from "path";
|
|
14062
|
+
import { stat as stat8 } from "fs/promises";
|
|
13950
14063
|
var ENCRYPTED_KEY_FILENAME2 = ".encryption.key.enc";
|
|
13951
14064
|
var VERIFY_FILENAME2 = ".runeya-verify";
|
|
13952
14065
|
async function getServerState() {
|
|
@@ -13955,36 +14068,43 @@ async function getServerState() {
|
|
|
13955
14068
|
let hasVerify = false;
|
|
13956
14069
|
let hasData = false;
|
|
13957
14070
|
try {
|
|
13958
|
-
await
|
|
14071
|
+
await stat8(join19(dataDir, ENCRYPTED_KEY_FILENAME2));
|
|
13959
14072
|
hasEncFile = true;
|
|
13960
14073
|
} catch {
|
|
13961
14074
|
}
|
|
13962
14075
|
try {
|
|
13963
|
-
await
|
|
14076
|
+
await stat8(join19(dataDir, VERIFY_FILENAME2));
|
|
13964
14077
|
hasVerify = true;
|
|
13965
14078
|
} catch {
|
|
13966
14079
|
}
|
|
13967
14080
|
try {
|
|
13968
|
-
await
|
|
14081
|
+
await stat8(join19(dataDir, "projects.json"));
|
|
13969
14082
|
hasData = true;
|
|
13970
14083
|
} catch {
|
|
13971
14084
|
}
|
|
13972
14085
|
try {
|
|
13973
|
-
await
|
|
14086
|
+
await stat8(join19(dataDir, "project.json"));
|
|
13974
14087
|
hasData = true;
|
|
13975
14088
|
} catch {
|
|
13976
14089
|
}
|
|
13977
14090
|
if (hasEncryptionKey()) {
|
|
13978
|
-
return {
|
|
14091
|
+
return {
|
|
14092
|
+
state: "unlocked",
|
|
14093
|
+
hasVerifyFile: false,
|
|
14094
|
+
isLegacyMigration: false,
|
|
14095
|
+
hasExistingData: hasData,
|
|
14096
|
+
legacyVault: await legacyVaultRoot()
|
|
14097
|
+
};
|
|
13979
14098
|
}
|
|
13980
14099
|
if (hasEncFile) {
|
|
13981
|
-
return { state: "locked", hasVerifyFile: hasVerify, isLegacyMigration: false, hasExistingData: hasData };
|
|
14100
|
+
return { state: "locked", hasVerifyFile: hasVerify, isLegacyMigration: false, hasExistingData: hasData, legacyVault: null };
|
|
13982
14101
|
}
|
|
13983
14102
|
return {
|
|
13984
14103
|
state: "setup",
|
|
13985
14104
|
hasVerifyFile: hasVerify,
|
|
13986
14105
|
isLegacyMigration: hasPendingLegacyKey(),
|
|
13987
|
-
hasExistingData: hasData
|
|
14106
|
+
hasExistingData: hasData,
|
|
14107
|
+
legacyVault: null
|
|
13988
14108
|
};
|
|
13989
14109
|
}
|
|
13990
14110
|
|
|
@@ -14730,6 +14850,48 @@ async function createLocalServer() {
|
|
|
14730
14850
|
}
|
|
14731
14851
|
}
|
|
14732
14852
|
});
|
|
14853
|
+
app.post("/api/migrate-vault", authLimiter, csrfMiddleware, express.json({ limit: "10kb" }), async (req, res) => {
|
|
14854
|
+
try {
|
|
14855
|
+
const jwt = typeof req.headers.authorization === "string" && req.headers.authorization.startsWith("Bearer ") ? req.headers.authorization.slice(7) : "";
|
|
14856
|
+
if (!isCiMode()) {
|
|
14857
|
+
try {
|
|
14858
|
+
await verifyJwt(jwt);
|
|
14859
|
+
} catch {
|
|
14860
|
+
res.status(401).json({ error: "Session invalide" });
|
|
14861
|
+
return;
|
|
14862
|
+
}
|
|
14863
|
+
}
|
|
14864
|
+
const machineKey = getEncryptionKey();
|
|
14865
|
+
if (!machineKey) {
|
|
14866
|
+
res.status(409).json({ error: "Serveur verrouill\xE9" });
|
|
14867
|
+
return;
|
|
14868
|
+
}
|
|
14869
|
+
const legacyRoot = await legacyVaultRoot();
|
|
14870
|
+
if (!legacyRoot) {
|
|
14871
|
+
res.status(409).json({ error: "Aucun coffre \xE0 migrer dans ce r\xE9pertoire" });
|
|
14872
|
+
return;
|
|
14873
|
+
}
|
|
14874
|
+
const body = req.body;
|
|
14875
|
+
const masterPassword = body.masterPassword;
|
|
14876
|
+
if (typeof masterPassword !== "string" || masterPassword.length < 1 || masterPassword.length > 1024) {
|
|
14877
|
+
res.status(400).json({ error: "masterPassword invalide" });
|
|
14878
|
+
return;
|
|
14879
|
+
}
|
|
14880
|
+
let legacyKey;
|
|
14881
|
+
try {
|
|
14882
|
+
legacyKey = await openLegacyVault(legacyRoot, masterPassword);
|
|
14883
|
+
} catch {
|
|
14884
|
+
res.status(401).json({ error: "Ancien master password incorrect" });
|
|
14885
|
+
return;
|
|
14886
|
+
}
|
|
14887
|
+
const report = await migrateLegacyVault(legacyRoot, machineRoot(), legacyKey, machineKey, /* @__PURE__ */ new Date());
|
|
14888
|
+
console.log(`[vault-migration] ${legacyRoot} migr\xE9 \u2014 sauvegarde : ${report.backupDir}`);
|
|
14889
|
+
res.json(report);
|
|
14890
|
+
} catch (err) {
|
|
14891
|
+
console.error("[server] Vault migration error:", err);
|
|
14892
|
+
res.status(500).json({ error: err instanceof Error ? err.message : "Erreur interne" });
|
|
14893
|
+
}
|
|
14894
|
+
});
|
|
14733
14895
|
app.get("/:apikey/llms.txt", llmsLimiter, async (req, res) => {
|
|
14734
14896
|
const apikey = Array.isArray(req.params["apikey"]) ? req.params["apikey"][0] : req.params["apikey"];
|
|
14735
14897
|
if (!apikey || !/^[0-9a-f]{64}$/i.test(apikey)) {
|
|
@@ -15134,4 +15296,4 @@ export {
|
|
|
15134
15296
|
createLocalServer,
|
|
15135
15297
|
pullEnv
|
|
15136
15298
|
};
|
|
15137
|
-
//# sourceMappingURL=src-
|
|
15299
|
+
//# sourceMappingURL=src-ZKQETCHR.js.map
|