@runeya/runeya 2.0.56 → 2.0.58
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 +154 -103
- package/agent/index.js.map +1 -1
- package/agent-manager-EDFP4VXP.js +7 -0
- package/assets/icon.icns +0 -0
- package/assets/icon.ico +0 -0
- package/assets/icon.png +0 -0
- package/assets/icon.svg +5 -0
- package/{chunk-Q2WY6PYX.js → chunk-NLVDO4EC.js} +180 -10
- package/chunk-NLVDO4EC.js.map +1 -0
- package/chunk-O2KOX4LU.js +66 -0
- package/chunk-O2KOX4LU.js.map +1 -0
- package/desktop-launcher-TM7AABMC.js +256 -0
- package/desktop-launcher-TM7AABMC.js.map +1 -0
- package/desktop-wizard-4CYANX2O.js +209 -0
- package/desktop-wizard-4CYANX2O.js.map +1 -0
- package/free-port-565NMFIZ.js +13 -0
- package/free-port-565NMFIZ.js.map +1 -0
- package/index.js +101 -2
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/{src-WCSXKTXA.js → src-V3J62F6F.js} +2976 -2474
- package/src-V3J62F6F.js.map +1 -0
- package/startup-failure-FOO7BLHD.js +180 -0
- package/startup-failure-FOO7BLHD.js.map +1 -0
- package/web/assets/AgentScalarChatInterface.vue-EIqnE2D0.js +13 -0
- package/web/assets/AgentTerminalPage-5kH1RTj6.js +1 -0
- package/web/assets/AiChatPage-DvPM0b-g.js +1 -0
- package/web/assets/AppLayout-CxU9x6en.js +1 -0
- package/web/assets/{AppLayout-CDh-jiJ3.css → AppLayout-Dj8YOvMQ.css} +1 -1
- package/web/assets/AuditPage-BrqreO8a.js +1 -0
- package/web/assets/CloudAccountPage-CzUpIjdc.js +1 -0
- package/web/assets/CloudAccountPage-DRcN1jNp.css +1 -0
- package/web/assets/CloudAccountPage-DS3ZfENB.js +1 -0
- package/web/assets/CloudMessagingPage-D8gBnkFY.js +2 -0
- package/web/assets/DashboardPage-BiskmF6R.js +1 -0
- package/web/assets/DirectoryPickerDialog-Bny02api.css +1 -0
- package/web/assets/DirectoryPickerDialog-CtKWj2hx.js +1 -0
- package/web/assets/{EditorIcon-CZLL1qox.js → EditorIcon-B58cXgvK.js} +2 -2
- package/web/assets/EnvironmentForm-DZXx9r78.js +108 -0
- package/web/assets/EnvironmentFormPage-Dl7pdkEM.js +1 -0
- package/web/assets/EnvironmentListPage-B0WX_Hq7.js +1 -0
- package/web/assets/KanbanBoardPage-CBJs26gZ.js +4 -0
- package/web/assets/KanbanListPage-Cz-tlLWA.js +1 -0
- package/web/assets/LaunchProjectPage-8SDkFiLE.js +1 -0
- package/web/assets/LaunchServicesPage-B-ncX3rd.js +1 -0
- package/web/assets/LogViewer-BJNqKt3I.js +3 -0
- package/web/assets/{ProcessControls-BKUKb6vL.js → ProcessControls-NA6_my0q.js} +1 -1
- package/web/assets/ProcessDetailPage-6galJRdd.js +1 -0
- package/web/assets/ProcessDetailPage-CFJfjneL.css +1 -0
- package/web/assets/{ProcessMetrics-4aaZekKw.js → ProcessMetrics-CUDjJ4s_.js} +2 -2
- package/web/assets/ProjectDetailPage-CLbj9ZT4.css +1 -0
- package/web/assets/ProjectDetailPage-DKHoFXjW.js +1 -0
- package/web/assets/ProjectListPage-C1xSP6Bq.js +1 -0
- package/web/assets/RandomJobTestPage-BAuT49yE.js +2 -0
- package/web/assets/ScenarioEditorPage-CROCV83A.js +14 -0
- package/web/assets/SendToChatDialog-BfaLVfzw.js +1 -0
- package/web/assets/ServiceControlsBar-DE0In-jH.js +1 -0
- package/web/assets/ServiceDetailPage-0iIv9RqU.js +2 -0
- package/web/assets/{ServiceDetailPage-BRg1byDZ.css → ServiceDetailPage-DDSyACSv.css} +1 -1
- package/web/assets/ServiceFormPage-D-tLX8jE.js +1 -0
- package/web/assets/SettingsPage-ClNw9uEA.js +2063 -0
- package/web/assets/{SettingsPage-BY3dG-wn.css → SettingsPage-ySsQCeYE.css} +1 -1
- package/web/assets/UnlockPage-flNU5Iky.js +1 -0
- package/web/assets/VariablesTable-BnCSYLD4.js +1 -0
- package/web/assets/VaultMigrationPage-BSv9anTA.js +1 -0
- package/web/assets/VersionBadge-zyKx_N_w.js +1 -0
- package/web/assets/WikiPage-C9Bruew6.js +1 -0
- package/web/assets/WikiView-BZZ5mybT.js +1 -0
- package/web/assets/add-scalar-classes-DZb8OCPH.js +387 -0
- package/web/assets/auth-errors-CU6pB2jP.js +1 -0
- package/web/assets/autocomplete-DGLJp6Xx.js +308 -0
- package/web/assets/{basic-shape-diamond.svg-DH2telU3.js → basic-shape-diamond.svg-D7lBpWcu.js} +1 -1
- package/web/assets/{basic-shape-hexagon.svg-CkFORYUC.js → basic-shape-hexagon.svg-BIDPqohs.js} +1 -1
- package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-BlV1CeJ6.js → basic-shape-primary-circle-ellipse-round.svg-iWUF3CNK.js} +1 -1
- package/web/assets/{basic-shape-primary-square-rectangle.svg-BaAO9T6a.js → basic-shape-primary-square-rectangle.svg-BQy8tY9i.js} +1 -1
- package/web/assets/{basic-shape-shield.svg-CAX-F0Ai.js → basic-shape-shield.svg-Dcov5U2N.js} +1 -1
- package/web/assets/{browser-DPOAuokj.js → browser-Dc4T6GL2.js} +1 -1
- package/web/assets/{browser-CgnxRAK6.js → browser-DrMkXWE3.js} +1 -1
- package/web/assets/{card-BinmfAW6.js → card-DADdd2-i.js} +2 -2
- package/web/assets/{checkbox-DRF4pbAa.js → checkbox-By0TwAz_.js} +3 -3
- package/web/assets/{chip-Dvt1MVQM.js → chip-W5HkUiZA.js} +2 -2
- package/web/assets/{client-BqPXDxC1.js → client-Be8SiY8s.js} +2 -2
- package/web/assets/cloud-chat.store-GKWq9kin.js +1 -0
- package/web/assets/cloud-session-CJ4n3dbT.js +1 -0
- package/web/assets/column-P4Yoqttz.js +907 -0
- package/web/assets/{computer-device-desktop-monitor.svg-CJMZ28bk.js → computer-device-desktop-monitor.svg-BjBC4Q_B.js} +1 -1
- package/web/assets/{computer-device-desktop.svg-BedAMKhR.js → computer-device-desktop.svg-C7H8X0sb.js} +1 -1
- package/web/assets/{computer-device-laptop.svg-DdhI-EdQ.js → computer-device-laptop.svg-GDU5987h.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-C5diuYjt.js → computer-device-mobile-phone-android-samsung-back.svg-BcWod8vA.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung.svg-DGHCufqU.js → computer-device-mobile-phone-android-samsung.svg-Cj58lY5g.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-CMWyPtt9.js → computer-device-mobile-phone-iphone-x-back.svg-CtJM7Ul_.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x.svg-BRy5W1In.js → computer-device-mobile-phone-iphone-x.svg-BiSi4riW.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet-touch.svg-BGnBo8Ih.js → computer-device-mobile-tablet-touch.svg-BAMVDwHH.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet.svg-xSg_XplW.js → computer-device-mobile-tablet.svg-quWU62em.js} +1 -1
- package/web/assets/{computer-device-network-ethernet-cat6.svg-hz-jiJFA.js → computer-device-network-ethernet-cat6.svg-eoCbNWkF.js} +1 -1
- package/web/assets/{computer-device-network-lan-www.svg-BF6NF79C.js → computer-device-network-lan-www.svg-AR5jmH9w.js} +1 -1
- package/web/assets/{computer-device-network-wifi-connection.svg-gwpaLcz6.js → computer-device-network-wifi-connection.svg-C3-i1o4I.js} +1 -1
- package/web/assets/{computer-device-network-wifi-router.svg-B4oSiJHk.js → computer-device-network-wifi-router.svg-D8_62H2U.js} +1 -1
- package/web/assets/{cssMode-HHg8IzQM.js → cssMode-CfDickSl.js} +1 -1
- package/web/assets/{divider-C5a--3VK.js → divider-DOwWKUnp.js} +2 -2
- package/web/assets/{ecology-science-erlenmeyer-flask.svg-DkoOes8O.js → ecology-science-erlenmeyer-flask.svg-bmj1315r.js} +1 -1
- package/web/assets/{fieldset-c3hO4nzt.js → fieldset-CM6GY5DX.js} +2 -2
- package/web/assets/{freemarker2-BJSUPPPz.js → freemarker2-B_0Gh4L-.js} +1 -1
- package/web/assets/{handlebars-BAY2_Hod.js → handlebars-D7Oha3sz.js} +1 -1
- package/web/assets/{html-CNW7z0dM.js → html-BDq-ql3l.js} +1 -1
- package/web/assets/{htmlMode-SpxSLWYn.js → htmlMode-DVuzX8LQ.js} +1 -1
- package/web/assets/{image-flash-lightning.svg-DzcaFZwQ.js → image-flash-lightning.svg-pdHiRywD.js} +1 -1
- package/web/assets/{image-picture-flower.svg-DbYkuhs0.js → image-picture-flower.svg-BJarIt4k.js} +1 -1
- package/web/assets/{index-BIjjyvxm.js → index-Dk3h9927.js} +282 -282
- package/web/assets/{interface-alert-exclamation-diamond.svg-VqQleX3x.js → interface-alert-exclamation-diamond.svg-CZUf0TtR.js} +1 -1
- package/web/assets/{interface-alert-exclamation-triangle-warning.svg-B4xCH3UD.js → interface-alert-exclamation-triangle-warning.svg-B1qbmOvN.js} +1 -1
- package/web/assets/{interface-alert-information-circle.svg-5k54XhJ-.js → interface-alert-information-circle.svg-DAH6I2Rk.js} +1 -1
- package/web/assets/{interface-award-crown.svg-BXVJGSgl.js → interface-award-crown.svg-Co-un_0E.js} +1 -1
- package/web/assets/{interface-bookmark.svg-D0afhfDQ.js → interface-bookmark-tag.svg-DCeSL4gX.js} +1 -1
- package/web/assets/{interface-bookmark-tag.svg-CBUeCBGD.js → interface-bookmark.svg-BoAQ5WAA.js} +1 -1
- package/web/assets/{interface-calendar-date-one.svg-CFO_cJx5.js → interface-calendar-date-one.svg-KM5TH_vj.js} +1 -1
- package/web/assets/{interface-content-book-open-pages.svg-D_VJNLAI.js → interface-content-book-open-pages.svg-2t-0H_Nl.js} +1 -1
- package/web/assets/{interface-content-book-page.svg-BxdaWR7b.js → interface-content-book-page.svg-Dx9U_5uo.js} +1 -1
- package/web/assets/{interface-content-file.svg-CCKgKAVi.js → interface-content-file.svg-CW_9AGDl.js} +1 -1
- package/web/assets/interface-content-folder.svg-C9_1n23c.js +1 -0
- package/web/assets/{interface-content-folder.svg-Dw0SKwbv.js → interface-content-folder.svg-DgU2KM8d.js} +1 -1
- package/web/assets/{interface-copy-clipboard.svg-Co7ESi9t.js → interface-copy-clipboard.svg-BXCY1wtO.js} +1 -1
- package/web/assets/{interface-edit-attachment.svg-DB4Fu5ck.js → interface-edit-attachment.svg-lJsBgdnd.js} +1 -1
- package/web/assets/{interface-edit-binocular.svg-DSEtWb7P.js → interface-edit-binocular.svg-N_us2_d_.js} +1 -1
- package/web/assets/{interface-edit-magic-wand.svg-Bh9JP-_u.js → interface-edit-magic-wand.svg-GlHpAoND.js} +1 -1
- package/web/assets/{interface-edit-tool-paint-roller.svg-DXODVJeW.js → interface-edit-tool-paint-roller.svg-B3s6tHLT.js} +1 -1
- package/web/assets/{interface-edit-tool-pencil.svg-gJSTl1EM.js → interface-edit-tool-pencil.svg-BhJltLPD.js} +1 -1
- package/web/assets/{interface-favorite-award.svg-Bv3Ditpr.js → interface-favorite-award.svg-CAC4qrCL.js} +1 -1
- package/web/assets/{interface-favorite-flag.svg-RU02g1Zi.js → interface-favorite-flag.svg-5dLI18uT.js} +1 -1
- package/web/assets/{interface-favorite-heart.svg-C9umX2vE.js → interface-favorite-heart.svg-DAWMqUS8.js} +1 -1
- package/web/assets/{interface-favorite-star.svg-CWsQ-mGb.js → interface-favorite-star.svg-C9DICFBb.js} +1 -1
- package/web/assets/{interface-favorite-stars-sparkles.svg-C5z_gPrX.js → interface-favorite-stars-sparkles.svg-zD5-a95u.js} +1 -1
- package/web/assets/{interface-hierarchy-flowchart.svg-CctM7HYF.js → interface-hierarchy-flowchart.svg-BzAAQM0v.js} +1 -1
- package/web/assets/{interface-home-house.svg-Cd6GJDkx.js → interface-home-house.svg-CB_mzszz.js} +1 -1
- package/web/assets/{interface-hyperlink.svg-RUZY_MPS.js → interface-hyperlink.svg-BUMVlOAE.js} +1 -1
- package/web/assets/{interface-lighting-brightness.svg-CoJei7Uh.js → interface-lighting-brightness.svg-wPXo2pZW.js} +1 -1
- package/web/assets/{interface-lock-closed.svg-DHBiQkRu.js → interface-lock-closed.svg-Qj4fLj5D.js} +1 -1
- package/web/assets/{interface-lock-open-unlock.svg-D9gUzkAe.js → interface-lock-open-unlock.svg-PaaFsUiU.js} +1 -1
- package/web/assets/{interface-login-key.svg-BGNkKSCc.js → interface-login-key.svg-By-IZ7EH.js} +1 -1
- package/web/assets/{interface-search.svg-a20xpUNh.js → interface-search.svg-D1s5Gsyk.js} +1 -1
- package/web/assets/{interface-setting-cog.svg-Du_6PHwV.js → interface-setting-cog.svg-BIjZVOwf.js} +1 -1
- package/web/assets/{interface-share-megaphone-bullhorn.svg-cUXjeKNG.js → interface-share-megaphone-bullhorn.svg-1oPoDdIL.js} +1 -1
- package/web/assets/{interface-share-rocket.svg-D5DY8-4Z.js → interface-share-rocket.svg-B07UdOH6.js} +1 -1
- package/web/assets/{interface-share-satellite.svg-CxZ9ENCv.js → interface-share-satellite.svg-AxSAr1JP.js} +1 -1
- package/web/assets/{interface-share-space-ship.svg-DxRCAuZe.js → interface-share-space-ship.svg-ghRJYkXG.js} +1 -1
- package/web/assets/{interface-share.svg-CJ86d8ve.js → interface-share.svg-jVvV5wf9.js} +1 -1
- package/web/assets/{interface-signal-square.svg-DaITtWso.js → interface-signal-square.svg-BB8KvxNI.js} +1 -1
- package/web/assets/{interface-time-clock-circle.svg-DOXyhrEi.js → interface-time-clock-circle.svg-Bt_vXLib.js} +1 -1
- package/web/assets/{interface-time-hour-glass.svg-DEzjXGhd.js → interface-time-hour-glass.svg-CqsWXDx3.js} +1 -1
- package/web/assets/{interface-users-multiple.svg-DuW2zZO9.js → interface-users-multiple.svg-DfZzhCkI.js} +1 -1
- package/web/assets/{interface-weather-moon.svg-CAJTRm96.js → interface-weather-moon.svg-B5X37fBl.js} +1 -1
- package/web/assets/{javascript-DoNH7W21.js → javascript-DWxMn_QC.js} +1 -1
- package/web/assets/{jsonMode-Ba_3RQUr.js → jsonMode-BWOZzM3d.js} +2 -2
- package/web/assets/{liquid-yqqVxQ3r.js → liquid-B0VtIwJX.js} +1 -1
- package/web/assets/{lspLanguageFeatures-DsNvNJOK.js → lspLanguageFeatures-DXFZNqLk.js} +3 -3
- package/web/assets/{mail-chat-bubble-square.svg-DxuFTrxl.js → mail-chat-bubble-square.svg-DVi8sPM-.js} +1 -1
- package/web/assets/{mail-send-email-paper-airplane.svg-fobU5Rru.js → mail-send-email-paper-airplane.svg-Dlk35rWL.js} +1 -1
- package/web/assets/{mail-send-envelope.svg-DjoyQmbK.js → mail-send-envelope.svg-DpEE06QS.js} +1 -1
- package/web/assets/{mdx-We_KeaPg.js → mdx-XjdLNHo4.js} +1 -1
- package/web/assets/{message-Cgzl10yY.js → message-TASaHoOx.js} +2 -2
- package/web/assets/{minus-CWad93a9.js → minus-BO9HwuhK.js} +2 -2
- package/web/assets/modal-B0K9qtIb.js +1 -0
- package/web/assets/modal-Dadfdblm.js +5 -0
- package/web/assets/{money-cashier-receipt.svg-Cd3vbq1N.js → money-cashier-receipt.svg-D3T1gdZO.js} +1 -1
- package/web/assets/{money-currency-dollar-pay.svg-q2PhWmHi.js → money-currency-dollar-pay.svg-RhoFWz8z.js} +1 -1
- package/web/assets/{money-graph-arrow-increase.svg-DFoTvPe7.js → money-graph-arrow-increase.svg-BENn1K5R.js} +1 -1
- package/web/assets/{money-graph-bar-chart-increase.svg-N1y-bW8g.js → money-graph-bar-chart-increase.svg-COGPwero.js} +1 -1
- package/web/assets/{multiselect-DlPZQWML.js → multiselect-QI9V-o7t.js} +3 -3
- package/web/assets/{nature-ecology-leaf.svg-B759TwbF.js → nature-ecology-leaf.svg-CyQJuX9P.js} +1 -1
- package/web/assets/{password-Bbkf0Avi.js → password-68lVUSdj.js} +4 -4
- package/web/assets/{phone-telephone.svg-BAjrImUz.js → phone-telephone.svg-Cp49xUlu.js} +1 -1
- package/web/assets/{plus-CSmkO4gT.js → plus-CtAUJUu2.js} +6 -6
- package/web/assets/process.store-DkO9CCEs.js +1 -0
- package/web/assets/{programming-bug.svg-C9yxLgbr.js → programming-bug.svg-DJCw-G7S.js} +1 -1
- package/web/assets/{programming-cloud.svg-Brnt7HfW.js → programming-cloud.svg-Dawch6nl.js} +1 -1
- package/web/assets/{programming-computer-database-server.svg-CA5tIDJ_.js → programming-computer-database-server.svg-wM3gh9nl.js} +1 -1
- package/web/assets/{programming-computer-database.svg-BJ_fk-M0.js → programming-computer-database.svg-B-CBQ4FN.js} +1 -1
- package/web/assets/{programming-module-four-layout.svg-DULdtPL4.js → programming-module-four-layout.svg-B8K3IYUP.js} +1 -1
- package/web/assets/{programming-module-three.svg-B1vBli33.js → programming-module-three.svg-BVHpxetj.js} +1 -1
- package/web/assets/{programming-module.svg-DpVKFxMS.js → programming-module.svg-CXID9wrd.js} +1 -1
- package/web/assets/{programming-script-code.svg-CTNuSx8y.js → programming-script-code.svg-lSz-9Xfp.js} +1 -1
- package/web/assets/{python-B0GPM7en.js → python-DL0o4ZFa.js} +1 -1
- package/web/assets/{razor-YCIzBEVM.js → razor-1T_DtFYV.js} +1 -1
- package/web/assets/router-BKOiPGCa.js +1 -0
- package/web/assets/settings-scope-DrVQNSTC.js +1 -0
- package/web/assets/settings.store-xvHd8xGI.js +1 -0
- package/web/assets/{shopping-cart.svg-DinVLM6s.js → shopping-cart.svg-TZA8HEQB.js} +1 -1
- package/web/assets/{shopping-gift-present.svg-CzHOD4sx.js → shopping-gift-present.svg-CRGiXfBk.js} +1 -1
- package/web/assets/{shopping-shipping-box-parcel-package.svg-Ct0cSZV2.js → shopping-shipping-box-parcel-package.svg-BuEMZoGf.js} +1 -1
- package/web/assets/src-Be-L2-AH.js +1 -0
- package/web/assets/{src-DsmqQeZ9.js → src-Dy-bHT95.js} +11 -11
- package/web/assets/tabpanel-BP3edJSv.js +150 -0
- package/web/assets/{tag-new-circle.svg-DszV9Yu3.js → tag-new-circle.svg-CsOt9-U5.js} +1 -1
- package/web/assets/toggleswitch-B49OhBFD.js +115 -0
- package/web/assets/{travel-map-earth-globe.svg-DJS5nR0r.js → travel-map-earth-globe.svg-BTR5ahca.js} +1 -1
- package/web/assets/trpc-hOuUVUMw.js +1 -0
- package/web/assets/{tsMode-DAiF0SK5.js → tsMode-BUrbWgsu.js} +5 -5
- package/web/assets/{typescript-Bs2RtJDr.js → typescript-tKGzqX3Z.js} +1 -1
- package/web/assets/useAiChatDrawer-CZS0RLp8.js +1 -0
- package/web/assets/useCloudOrg-0VY86rgI.js +93 -0
- package/web/assets/useCloudOrg-CDe4gvZH.css +1 -0
- package/web/assets/{useProjectCatalog-OUh8Jzm4.js → useProjectCatalog-C2BH8Bnr.js} +1 -1
- package/web/assets/{xml-DNJakbU1.js → xml-4CdtJV3Y.js} +1 -1
- package/web/assets/{yaml-CuCgMv5w.js → yaml-Cj7LK0oJ.js} +1 -1
- package/web/index.html +1 -1
- package/agent-manager-LSAJSO3X.js +0 -7
- package/chunk-Q2WY6PYX.js.map +0 -1
- package/src-WCSXKTXA.js.map +0 -1
- package/web/assets/AgentScalarChatInterface.vue-CBm8pMxm.js +0 -13
- package/web/assets/AgentTerminalPage-Cu2yebw0.js +0 -1
- package/web/assets/AiChatPage-D_QT__oC.js +0 -1
- package/web/assets/AppLayout-B-JzLiuN.js +0 -1
- package/web/assets/AuditPage-O5w_rRoF.js +0 -1
- package/web/assets/CloudAccountPage-8iUKumU1.js +0 -1
- package/web/assets/CloudAccountPage-CVAMkCOF.css +0 -1
- package/web/assets/CloudAccountPage-CxclkzzF.js +0 -1
- package/web/assets/CloudMessagingPage-Cn4mBsGb.js +0 -2
- package/web/assets/DashboardPage-CBPAacTy.js +0 -1
- package/web/assets/EnvironmentForm-A41dAsGK.js +0 -108
- package/web/assets/EnvironmentFormPage-seMzTipP.js +0 -1
- package/web/assets/EnvironmentListPage-Bx_8aQ7W.js +0 -1
- package/web/assets/EnvironmentSelector-B9SZvB3I.css +0 -1
- package/web/assets/EnvironmentSelector-GuLEFkas.js +0 -1
- package/web/assets/KanbanBoardPage-BV-1mFti.js +0 -4
- package/web/assets/KanbanListPage-BHmn0L7d.js +0 -1
- package/web/assets/LaunchProjectPage-0x_cAt48.js +0 -1
- package/web/assets/LaunchServicesPage-wC2HNYAu.js +0 -1
- package/web/assets/LogViewer-BRsgOXsv.js +0 -3
- package/web/assets/ProcessDetailPage-CzGUsQM9.css +0 -1
- package/web/assets/ProcessDetailPage-DqInQZoM.js +0 -1
- package/web/assets/ProjectDetailPage-DWdYGIm5.js +0 -1
- package/web/assets/ProjectDetailPage-hcU-rKhJ.css +0 -1
- package/web/assets/ProjectListPage-XKb11ZSl.js +0 -1
- package/web/assets/RandomJobTestPage-D3mNVwkH.js +0 -2
- package/web/assets/ScenarioEditorPage-Bhp_uvLq.js +0 -14
- package/web/assets/SendToChatDialog-DdjtI7RN.js +0 -1
- package/web/assets/ServiceControlsBar-CRzSTSbf.js +0 -1
- package/web/assets/ServiceDetailPage-ChZVB2uY.js +0 -2
- package/web/assets/ServiceFormPage-CXrwDYXc.js +0 -1
- package/web/assets/SettingsPage-BKImNNGC.js +0 -2062
- package/web/assets/UnlockPage-IF_kNWCK.js +0 -1
- package/web/assets/VariablesTable-BnfdPTJs.js +0 -1
- package/web/assets/VaultMigrationPage-Dzn-moG9.js +0 -1
- package/web/assets/VersionBadge-DJlVV7r7.js +0 -1
- package/web/assets/WikiPage-DNm8r3l9.js +0 -1
- package/web/assets/WikiView-DCuU1ES2.js +0 -1
- package/web/assets/add-scalar-classes-DGIbkQ1f.js +0 -387
- package/web/assets/auth-errors-DQYwI7Ju.js +0 -1
- package/web/assets/autocomplete-BIqGkkg7.js +0 -422
- package/web/assets/cloud-chat.store-DqrDy_y_.js +0 -1
- package/web/assets/cloud-session-BPYJmCDW.js +0 -1
- package/web/assets/column-DFi06tD3.js +0 -907
- package/web/assets/interface-content-folder.svg-DnPIUwnJ.js +0 -1
- package/web/assets/modal-BwAKEIsn.js +0 -5
- package/web/assets/modal-tmtc9vXB.js +0 -1
- package/web/assets/process.store-f72KyYo3.js +0 -1
- package/web/assets/router-CRcngiuT.js +0 -1
- package/web/assets/settings-scope-BIR0n6j3.js +0 -1
- package/web/assets/settings.store-DuwB5egt.js +0 -1
- package/web/assets/src-HJHc4vH7.js +0 -1
- package/web/assets/tabpanel-C4RQhLki.js +0 -150
- package/web/assets/trpc-CTOLa5Ye.js +0 -1
- package/web/assets/useAiChatDrawer-CFsO_u5Q.js +0 -1
- package/web/assets/useCloudOrg-Ds7-Bvva.js +0 -1
- package/web/assets/useCloudOrg-zVC74FRC.css +0 -1
- /package/{agent-manager-LSAJSO3X.js.map → agent-manager-EDFP4VXP.js.map} +0 -0
- /package/web/assets/{abap-DT2sAUGb.js → abap-BftohFSP.js} +0 -0
- /package/web/assets/{apex-BqR8ejP0.js → apex-BvK6mslj.js} +0 -0
- /package/web/assets/{azcli-DK_jNPxf.js → azcli-sP_xqaje.js} +0 -0
- /package/web/assets/{bat-BLmcleEN.js → bat-BVOfLmAN.js} +0 -0
- /package/web/assets/{bicep-DkR6Nnyy.js → bicep-BlQUrQRt.js} +0 -0
- /package/web/assets/{cameligo-DfT1QA_V.js → cameligo-Hsiv8If_.js} +0 -0
- /package/web/assets/{clojure-BbsGZ_q_.js → clojure-BJCEwD5Z.js} +0 -0
- /package/web/assets/{coffee-CZQPrkXM.js → coffee-DaIzfLck.js} +0 -0
- /package/web/assets/{cpp-CZLFjmrQ.js → cpp-D1D8tync.js} +0 -0
- /package/web/assets/{csharp-CljM85nx.js → csharp-aJ5U4ZX-.js} +0 -0
- /package/web/assets/{csp-B7ItwhrE.js → csp-Dl6_9F5u.js} +0 -0
- /package/web/assets/{css-CIuVviKc.js → css-vCyBaqZs.js} +0 -0
- /package/web/assets/{cypher-Lk1MiloH.js → cypher-3AJUSxML.js} +0 -0
- /package/web/assets/{dart-B83vLjrb.js → dart-CTkotL3V.js} +0 -0
- /package/web/assets/{dockerfile--LImnfYW.js → dockerfile-D5-w2qBp.js} +0 -0
- /package/web/assets/{ecl-C1mPHzto.js → ecl-Bv13-VWP.js} +0 -0
- /package/web/assets/{elixir-F7VkySYx.js → elixir-tGAhMDbc.js} +0 -0
- /package/web/assets/{flow9-CyDLjcIP.js → flow9-BGyqHZGG.js} +0 -0
- /package/web/assets/{fsharp-BtAy52j8.js → fsharp-CNmn9I-8.js} +0 -0
- /package/web/assets/{go-nAky3Nvu.js → go-Ci34O9J5.js} +0 -0
- /package/web/assets/{graphql-BFHB5AhE.js → graphql-MnWRwivv.js} +0 -0
- /package/web/assets/{hcl-DiNGWUmy.js → hcl-CHOlr9Wk.js} +0 -0
- /package/web/assets/{ini-D1Fg5XrG.js → ini-DbnmjBHk.js} +0 -0
- /package/web/assets/{java-C-10mSK7.js → java-BfYu7xZq.js} +0 -0
- /package/web/assets/{julia-Bqx3lIQk.js → julia-DLtmkb8l.js} +0 -0
- /package/web/assets/{kotlin-BBx7H7X0.js → kotlin-DcvmgooU.js} +0 -0
- /package/web/assets/{less-BFHUOKEO.js → less-BcK61AQc.js} +0 -0
- /package/web/assets/{lexon-CZNaGS2_.js → lexon-CTymSfIj.js} +0 -0
- /package/web/assets/{lua-iuAeZ15y.js → lua-RfM_CC1S.js} +0 -0
- /package/web/assets/{m3-Dotjo0U8.js → m3-BUMcu6kl.js} +0 -0
- /package/web/assets/{markdown-B_31SQ_4.js → markdown-D43qGxMI.js} +0 -0
- /package/web/assets/{mips-Dp4rVQ6A.js → mips-DraL1zR7.js} +0 -0
- /package/web/assets/{msdax-DGvgi_My.js → msdax-DwsT9zOV.js} +0 -0
- /package/web/assets/{mysql-jqX2Izgu.js → mysql-CI0Y1SVo.js} +0 -0
- /package/web/assets/{objective-c-KWePe42v.js → objective-c-DFGG0hMZ.js} +0 -0
- /package/web/assets/{pascal-k9Augcc6.js → pascal-BwDR4uJo.js} +0 -0
- /package/web/assets/{pascaligo-CijZuMoC.js → pascaligo-BIFJ11Dr.js} +0 -0
- /package/web/assets/{perl-CtKbbdqv.js → perl-BA3RVdIi.js} +0 -0
- /package/web/assets/{pgsql-IYBGBY8p.js → pgsql-CQdJ7fT6.js} +0 -0
- /package/web/assets/{php-CZgzKas5.js → php-aksMphIw.js} +0 -0
- /package/web/assets/{pla-DxEUZCU5.js → pla-oY2ZYZjq.js} +0 -0
- /package/web/assets/{postiats-Cf9oispl.js → postiats-B6K4WFxG.js} +0 -0
- /package/web/assets/{powerquery-Cyri2j7y.js → powerquery-BEv8gWXV.js} +0 -0
- /package/web/assets/{powershell-CezsOW84.js → powershell-Dh31ZyY5.js} +0 -0
- /package/web/assets/{protobuf-BVSVLozM.js → protobuf-IOe1WZKr.js} +0 -0
- /package/web/assets/{pug-tdDHxxGI.js → pug-BoF2xjem.js} +0 -0
- /package/web/assets/{qsharp-BbxYBU73.js → qsharp-Cg-pSrKC.js} +0 -0
- /package/web/assets/{r-CMiogh24.js → r-CXVSpnOi.js} +0 -0
- /package/web/assets/{redis-Be7YRs2n.js → redis-Ds37g3HK.js} +0 -0
- /package/web/assets/{redshift-BMtedC4Y.js → redshift-Bc3XVP9_.js} +0 -0
- /package/web/assets/{restructuredtext-BeqA_Nw7.js → restructuredtext-DEe8sZRY.js} +0 -0
- /package/web/assets/{ruby-DQh1qjXf.js → ruby-rR6GK4gP.js} +0 -0
- /package/web/assets/{rust-Dtb7SJq9.js → rust-DIavTiQB.js} +0 -0
- /package/web/assets/{sb-YjmuT7ii.js → sb-DTmnd4yY.js} +0 -0
- /package/web/assets/{scala-3ZhdCU1r.js → scala-1g7pYkrn.js} +0 -0
- /package/web/assets/{scheme-Ck6PwJVN.js → scheme-DrHHAHD4.js} +0 -0
- /package/web/assets/{scss-CdSZkceb.js → scss-TmmHVu6S.js} +0 -0
- /package/web/assets/{shell-D951-SzL.js → shell-heJIehx2.js} +0 -0
- /package/web/assets/{solidity-BtE4jdUZ.js → solidity-DaFcLbgd.js} +0 -0
- /package/web/assets/{sophia-CPgh17t9.js → sophia-CXbpjkzF.js} +0 -0
- /package/web/assets/{sparql-D5V7fRaF.js → sparql-fPaD1mrB.js} +0 -0
- /package/web/assets/{sql-CIe64i2G.js → sql-AsIRMoxc.js} +0 -0
- /package/web/assets/{st-BUZL4NkZ.js → st-BzrDXems.js} +0 -0
- /package/web/assets/{swift-BGpAy-yZ.js → swift-BllUhPGN.js} +0 -0
- /package/web/assets/{systemverilog-CYBqw_20.js → systemverilog-DNQlsb2M.js} +0 -0
- /package/web/assets/{tcl-CqmcDc3_.js → tcl-Cw_eJI2v.js} +0 -0
- /package/web/assets/{twig-BWVIPIPE.js → twig-vw9mFGZ-.js} +0 -0
- /package/web/assets/{typespec-mTM8EdlQ.js → typespec-BshQoZSA.js} +0 -0
- /package/web/assets/{uuid-aTVnbu2y.js → uuid-egnMxzmj.js} +0 -0
- /package/web/assets/{vb-xvgQ7mYU.js → vb-CmPDgk6r.js} +0 -0
- /package/web/assets/{w3c-keyname-CjzYiphr.js → w3c-keyname-WZPedoVd.js} +0 -0
- /package/web/assets/{wgsl-C8m-CvBD.js → wgsl-CewGSgNG.js} +0 -0
package/assets/icon.icns
ADDED
|
Binary file
|
package/assets/icon.ico
ADDED
|
Binary file
|
package/assets/icon.png
ADDED
|
Binary file
|
package/assets/icon.svg
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28">
|
|
2
|
+
<rect width="28" height="28" rx="8" fill="#6366f1"/>
|
|
3
|
+
<path d="M7 20 L14 8 L21 20" stroke="white" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
4
|
+
<path d="M10 16 L18 16" stroke="white" stroke-width="2.5" stroke-linecap="round"/>
|
|
5
|
+
</svg>
|
|
@@ -36,6 +36,10 @@ var EnvSchema = z.object({
|
|
|
36
36
|
RUNEYA_MODE: z.enum(["local-simple", "cloud"]).default("local-simple"),
|
|
37
37
|
RUNEYA_CORS_ORIGIN: z.string().nullable().default(null),
|
|
38
38
|
RUNEYA_LAN_PROXY: z.preprocess((v) => v === "true" || v === "1", z.boolean()).default(false),
|
|
39
|
+
// Set by the CLI when it was started from a desktop launcher rather than a
|
|
40
|
+
// terminal. The web app surfaces it so the user knows which Runeya they are
|
|
41
|
+
// looking at when several are running.
|
|
42
|
+
RUNEYA_FROM_DESKTOP: z.preprocess((v) => v === "true" || v === "1", z.boolean()).default(false),
|
|
39
43
|
// Label shown for this machine in the cloud's "linked machines" screen.
|
|
40
44
|
// Defaults to the hostname (see `getDeviceName`); set it explicitly when a
|
|
41
45
|
// single host runs several instances and you want to tell them apart.
|
|
@@ -63,7 +67,8 @@ var EnvSchema = z.object({
|
|
|
63
67
|
CLOUD_APP_URL: data.RUNEYA_CLOUD_APP_URL,
|
|
64
68
|
CORS_ORIGIN: data.RUNEYA_CORS_ORIGIN,
|
|
65
69
|
AGENT_BINARY_PATH: data.RUNEYA_AGENT_BINARY_PATH,
|
|
66
|
-
DEVICE_NAME: data.RUNEYA_DEVICE_NAME
|
|
70
|
+
DEVICE_NAME: data.RUNEYA_DEVICE_NAME,
|
|
71
|
+
FROM_DESKTOP: data.RUNEYA_FROM_DESKTOP
|
|
67
72
|
}));
|
|
68
73
|
var env = EnvSchema.parse(process.env);
|
|
69
74
|
|
|
@@ -103,10 +108,35 @@ function vaultFor(target) {
|
|
|
103
108
|
return { root: projectVaultRoot(target.orgId, target.id) };
|
|
104
109
|
}
|
|
105
110
|
var ORG_CLOUD_FILE = "cloud.json";
|
|
106
|
-
async function stampOrgCloud(orgId, cloudUrl) {
|
|
111
|
+
async function stampOrgCloud(orgId, cloudUrl, name) {
|
|
107
112
|
const root = orgVaultRoot(orgId);
|
|
108
113
|
await mkdir(root, { recursive: true });
|
|
109
|
-
|
|
114
|
+
const known = name ?? (await readOrgNames())[orgId];
|
|
115
|
+
const stamp = known ? { cloudUrl, name: known } : { cloudUrl };
|
|
116
|
+
await writeFile(join(root, ORG_CLOUD_FILE), JSON.stringify(stamp, null, 2), "utf-8");
|
|
117
|
+
}
|
|
118
|
+
async function rememberOrgName(orgId, name) {
|
|
119
|
+
const file = join(orgVaultRoot(orgId), ORG_CLOUD_FILE);
|
|
120
|
+
let stamp;
|
|
121
|
+
try {
|
|
122
|
+
stamp = JSON.parse(await readFile(file, "utf-8"));
|
|
123
|
+
} catch {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (stamp["name"] === name) return;
|
|
127
|
+
await writeFile(file, JSON.stringify({ ...stamp, name }, null, 2), "utf-8");
|
|
128
|
+
}
|
|
129
|
+
async function readOrgNames() {
|
|
130
|
+
const out = {};
|
|
131
|
+
for (const orgId of await listOrgVaults()) {
|
|
132
|
+
try {
|
|
133
|
+
const raw = await readFile(join(orgVaultRoot(orgId), ORG_CLOUD_FILE), "utf-8");
|
|
134
|
+
const name = JSON.parse(raw).name;
|
|
135
|
+
if (typeof name === "string" && name) out[orgId] = name;
|
|
136
|
+
} catch {
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return out;
|
|
110
140
|
}
|
|
111
141
|
async function readOrgClouds() {
|
|
112
142
|
const orgsDir = join(machineRoot(), "orgs");
|
|
@@ -264,6 +294,9 @@ function markVaultLocked(vault) {
|
|
|
264
294
|
lockedVaults.add(vault);
|
|
265
295
|
keyring.delete(vault);
|
|
266
296
|
}
|
|
297
|
+
function isVaultLocked(vault) {
|
|
298
|
+
return lockedVaults.has(vault);
|
|
299
|
+
}
|
|
267
300
|
function clearVaultLock(vault) {
|
|
268
301
|
lockedVaults.delete(vault);
|
|
269
302
|
}
|
|
@@ -650,6 +683,28 @@ import { randomUUID as randomUUID2 } from "crypto";
|
|
|
650
683
|
import { readFile as readFile3, writeFile as writeFile3, rename as rename2, mkdir as mkdir3, chmod as chmod2, rm } from "fs/promises";
|
|
651
684
|
import { join as join3 } from "path";
|
|
652
685
|
|
|
686
|
+
// ../server/src/services/disk-freshness.ts
|
|
687
|
+
import { stat } from "fs/promises";
|
|
688
|
+
var seen = /* @__PURE__ */ new Map();
|
|
689
|
+
async function rememberFile(path) {
|
|
690
|
+
try {
|
|
691
|
+
const s = await stat(path);
|
|
692
|
+
seen.set(path, { mtimeMs: s.mtimeMs, size: s.size });
|
|
693
|
+
} catch {
|
|
694
|
+
seen.delete(path);
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
async function hasChangedSinceRead(path) {
|
|
698
|
+
const known = seen.get(path);
|
|
699
|
+
if (!known) return true;
|
|
700
|
+
try {
|
|
701
|
+
const s = await stat(path);
|
|
702
|
+
return s.mtimeMs !== known.mtimeMs || s.size !== known.size;
|
|
703
|
+
} catch {
|
|
704
|
+
return true;
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
|
|
653
708
|
// ../server/src/services/crypto-helpers.ts
|
|
654
709
|
import { randomBytes as randomBytes2, createCipheriv as createCipheriv2, createDecipheriv as createDecipheriv2 } from "crypto";
|
|
655
710
|
var ALGORITHM2 = "aes-256-gcm";
|
|
@@ -1204,7 +1259,17 @@ var ProcessStatusSchema = z9.object({
|
|
|
1204
1259
|
startedAt: z9.coerce.date().nullable().optional(),
|
|
1205
1260
|
restartCount: z9.number().int().nonnegative().default(0),
|
|
1206
1261
|
uptime: z9.number().nonnegative().default(0),
|
|
1207
|
-
healthStatus: HealthStatusSchema.default("unknown")
|
|
1262
|
+
healthStatus: HealthStatusSchema.default("unknown"),
|
|
1263
|
+
/**
|
|
1264
|
+
* Le répertoire où le processus s'exécute VRAIMENT, absolutisé par l'agent.
|
|
1265
|
+
*
|
|
1266
|
+
* Rapporté par l'agent plutôt que déduit de la config : entre le `cwd` de la
|
|
1267
|
+
* commande, celui du service, l'ancrage sur le projet et les variables que
|
|
1268
|
+
* l'agent étend lui-même, la valeur affichée n'aurait rien prouvé. Ce qui
|
|
1269
|
+
* intéresse quand un service tourne contre le mauvais dépôt, c'est le chemin
|
|
1270
|
+
* final — y compris quand il retombe sur le répertoire de l'agent.
|
|
1271
|
+
*/
|
|
1272
|
+
cwd: z9.string().max(4096).nullable().optional()
|
|
1208
1273
|
});
|
|
1209
1274
|
|
|
1210
1275
|
// ../../packages/shared/src/schemas/log.schema.ts
|
|
@@ -1566,6 +1631,22 @@ var KanbanCardSchema = z20.object({
|
|
|
1566
1631
|
/** Files attached to the card — stored out of band, referenced here. */
|
|
1567
1632
|
attachments: z20.array(KanbanAttachmentSchema).max(50).default([]),
|
|
1568
1633
|
order: z20.number().int(),
|
|
1634
|
+
/**
|
|
1635
|
+
* La priorité de la carte, de 1 à 10 — 10 étant le plus urgent.
|
|
1636
|
+
*
|
|
1637
|
+
* Facultative, et absente veut dire « pas de priorité », pas « la plus
|
|
1638
|
+
* basse » : une carte qu'on n'a pas encore arbitrée ne doit pas se ranger
|
|
1639
|
+
* d'office au fond de la pile.
|
|
1640
|
+
*/
|
|
1641
|
+
priority: z20.number().int().min(1).max(10).optional(),
|
|
1642
|
+
/**
|
|
1643
|
+
* Les groupes de la carte — des étiquettes libres, posées par l'équipe.
|
|
1644
|
+
*
|
|
1645
|
+
* Rien ne les déclare ailleurs : un groupe existe parce qu'une carte le
|
|
1646
|
+
* porte, et disparaît avec la dernière qui le portait. C'est ce qui permet
|
|
1647
|
+
* d'en créer un en le tapant, sans passer par un écran d'administration.
|
|
1648
|
+
*/
|
|
1649
|
+
groups: z20.array(z20.string().min(1).max(60)).max(30).optional(),
|
|
1569
1650
|
/**
|
|
1570
1651
|
* La couleur de la carte, en hexadécimal (`#RRGGBB`) — un liseré en haut de
|
|
1571
1652
|
* la carte, et rien d'autre : ce qu'elle veut dire appartient à l'équipe.
|
|
@@ -1993,12 +2074,12 @@ function applyToArray(arr, next) {
|
|
|
1993
2074
|
const wanted = next.map(identityOf);
|
|
1994
2075
|
const wantedCount = /* @__PURE__ */ new Map();
|
|
1995
2076
|
for (const k of wanted) wantedCount.set(k, (wantedCount.get(k) ?? 0) + 1);
|
|
1996
|
-
const
|
|
2077
|
+
const seen2 = /* @__PURE__ */ new Map();
|
|
1997
2078
|
for (let i = arr.length - 1; i >= 0; i--) {
|
|
1998
2079
|
const key = identityOfY(arr.get(i));
|
|
1999
|
-
const used =
|
|
2080
|
+
const used = seen2.get(key) ?? 0;
|
|
2000
2081
|
if (used >= (wantedCount.get(key) ?? 0)) arr.delete(i, 1);
|
|
2001
|
-
else
|
|
2082
|
+
else seen2.set(key, used + 1);
|
|
2002
2083
|
}
|
|
2003
2084
|
for (let j = 0; j < next.length; j++) {
|
|
2004
2085
|
const key = wanted[j];
|
|
@@ -2059,6 +2140,15 @@ var EnvironmentStore = class {
|
|
|
2059
2140
|
* chiffrée : c'est ce que retient cette liste. Voir `keepUnreadableSecrets`.
|
|
2060
2141
|
*/
|
|
2061
2142
|
unreadableSecrets = /* @__PURE__ */ new Map();
|
|
2143
|
+
/**
|
|
2144
|
+
* Coffres dont le fichier a bougé depuis la lecture.
|
|
2145
|
+
*
|
|
2146
|
+
* On ne les réécrit pas. Ni avec notre copie — elle décrirait l'état d'avant
|
|
2147
|
+
* la réparation — ni sans elle, ce qui effacerait les secrets qu'elle
|
|
2148
|
+
* protège. Entre les deux, la seule issue sûre est de ne pas toucher au
|
|
2149
|
+
* fichier et de laisser le prochain chargement faire foi.
|
|
2150
|
+
*/
|
|
2151
|
+
staleRoots = /* @__PURE__ */ new Set();
|
|
2062
2152
|
listeners = /* @__PURE__ */ new Set();
|
|
2063
2153
|
/** Notified after every persisted mutation, for the cloud sync bridge. */
|
|
2064
2154
|
onChange(fn) {
|
|
@@ -2075,6 +2165,43 @@ var EnvironmentStore = class {
|
|
|
2075
2165
|
roots = /* @__PURE__ */ new Map();
|
|
2076
2166
|
/** L'organisation d'où vient un environnement reçu du cloud — voir `vaultOf`. */
|
|
2077
2167
|
remoteOrgs = /* @__PURE__ */ new Map();
|
|
2168
|
+
/**
|
|
2169
|
+
* Oublier ce qui a été lu, pour tout relire sous la clé courante.
|
|
2170
|
+
*
|
|
2171
|
+
* Appelé après l'adoption d'une clé d'organisation : le disque vient d'être
|
|
2172
|
+
* re-chiffré sous les pieds du store, si bien que sa mémoire décrit un état
|
|
2173
|
+
* qui n'existe plus. La laisser en place n'affichait pas seulement des
|
|
2174
|
+
* comptes périmés — la sauvegarde suivante réécrivait l'ancien chiffré
|
|
2175
|
+
* par-dessus le nouveau, et défaisait l'adoption.
|
|
2176
|
+
*/
|
|
2177
|
+
resetCache() {
|
|
2178
|
+
this.environments.clear();
|
|
2179
|
+
this.diskEncryptedSlots.clear();
|
|
2180
|
+
this.unreadableSecrets.clear();
|
|
2181
|
+
this.roots.clear();
|
|
2182
|
+
this.remoteOrgs.clear();
|
|
2183
|
+
this.loaded = false;
|
|
2184
|
+
this.notify();
|
|
2185
|
+
}
|
|
2186
|
+
/**
|
|
2187
|
+
* Combien de secrets ce coffre garde chiffrés sans savoir les ouvrir, par
|
|
2188
|
+
* organisation (`null` pour la machine).
|
|
2189
|
+
*
|
|
2190
|
+
* Ils sont déjà préservés à l'écriture (`keepUnreadableSecrets`) ; ce qui
|
|
2191
|
+
* manquait, c'est de le dire. Un secret qui s'affiche vide et se sauvegarde
|
|
2192
|
+
* intact est rassurant sur le disque et déroutant à l'écran.
|
|
2193
|
+
*/
|
|
2194
|
+
async unreadableByVault() {
|
|
2195
|
+
await this.load();
|
|
2196
|
+
const out = /* @__PURE__ */ new Map();
|
|
2197
|
+
for (const [environmentId, failed] of this.unreadableSecrets) {
|
|
2198
|
+
if (!failed.size) continue;
|
|
2199
|
+
const environment = this.environments.get(environmentId);
|
|
2200
|
+
const vault = (environment ? this.vaultOf(environment) : void 0) ?? null;
|
|
2201
|
+
out.set(vault, (out.get(vault) ?? 0) + failed.size);
|
|
2202
|
+
}
|
|
2203
|
+
return out;
|
|
2204
|
+
}
|
|
2078
2205
|
getFilePath(root) {
|
|
2079
2206
|
return join3(root, FILENAME2);
|
|
2080
2207
|
}
|
|
@@ -2218,6 +2345,7 @@ var EnvironmentStore = class {
|
|
|
2218
2345
|
for (const root of await allVaultRoots()) {
|
|
2219
2346
|
try {
|
|
2220
2347
|
const raw = await readFile3(this.getFilePath(root), "utf-8");
|
|
2348
|
+
await rememberFile(this.getFilePath(root));
|
|
2221
2349
|
const data = JSON.parse(raw);
|
|
2222
2350
|
const clash = data.find((e) => this.environments.has(e.id) && this.roots.get(e.id) !== root);
|
|
2223
2351
|
if (clash) {
|
|
@@ -2226,9 +2354,9 @@ var EnvironmentStore = class {
|
|
|
2226
2354
|
}
|
|
2227
2355
|
for (const e of data) {
|
|
2228
2356
|
this.diskEncryptedSlots.set(e.id, this.extractEncryptedCache(e));
|
|
2229
|
-
const decrypted = this.decryptEnvironment(e);
|
|
2230
|
-
this.environments.set(e.id, decrypted);
|
|
2231
2357
|
this.roots.set(e.id, root);
|
|
2358
|
+
const decrypted = this.decryptEnvironment(e, vaultIdOfRoot(root));
|
|
2359
|
+
this.environments.set(e.id, decrypted);
|
|
2232
2360
|
}
|
|
2233
2361
|
} catch {
|
|
2234
2362
|
}
|
|
@@ -2241,7 +2369,20 @@ var EnvironmentStore = class {
|
|
|
2241
2369
|
* another vault must not survive in the old one, and a `[]` left behind would
|
|
2242
2370
|
* keep (or recreate) a `.runeya` in a directory that holds nothing.
|
|
2243
2371
|
*/
|
|
2372
|
+
/**
|
|
2373
|
+
* Repérer les coffres réparés sous nos pieds, avant d'écrire.
|
|
2374
|
+
*
|
|
2375
|
+
* Le test est fait ici, une fois par sauvegarde, plutôt que par
|
|
2376
|
+
* environnement : c'est le fichier du coffre qui change, pas la variable.
|
|
2377
|
+
*/
|
|
2378
|
+
async markStaleRoots() {
|
|
2379
|
+
this.staleRoots.clear();
|
|
2380
|
+
for (const root of new Set(this.roots.values())) {
|
|
2381
|
+
if (await hasChangedSinceRead(this.getFilePath(root))) this.staleRoots.add(root);
|
|
2382
|
+
}
|
|
2383
|
+
}
|
|
2244
2384
|
async save() {
|
|
2385
|
+
await this.markStaleRoots();
|
|
2245
2386
|
const byRoot = /* @__PURE__ */ new Map();
|
|
2246
2387
|
for (const root of this.roots.values()) {
|
|
2247
2388
|
if (!isVaultConflicted(root)) byRoot.set(root, []);
|
|
@@ -2258,6 +2399,12 @@ var EnvironmentStore = class {
|
|
|
2258
2399
|
else byRoot.set(root, [prepared]);
|
|
2259
2400
|
}
|
|
2260
2401
|
for (const [root, environments] of byRoot) {
|
|
2402
|
+
if (this.staleRoots.has(root)) {
|
|
2403
|
+
console.warn(
|
|
2404
|
+
`[environment-store] ${this.getFilePath(root)} a chang\xE9 depuis sa lecture \u2014 \xE9criture ignor\xE9e pour ne pas \xE9craser une r\xE9paration faite en dehors du serveur.`
|
|
2405
|
+
);
|
|
2406
|
+
continue;
|
|
2407
|
+
}
|
|
2261
2408
|
const filePath = this.getFilePath(root);
|
|
2262
2409
|
if (environments.length === 0) {
|
|
2263
2410
|
await rm(filePath, { force: true }).catch(() => {
|
|
@@ -2269,6 +2416,7 @@ var EnvironmentStore = class {
|
|
|
2269
2416
|
await writeFile3(tmpPath, JSON.stringify(environments, null, 2), "utf-8");
|
|
2270
2417
|
await rename2(tmpPath, filePath);
|
|
2271
2418
|
await chmod2(filePath, 384);
|
|
2419
|
+
await rememberFile(filePath);
|
|
2272
2420
|
}
|
|
2273
2421
|
this.notify();
|
|
2274
2422
|
}
|
|
@@ -2628,6 +2776,23 @@ var ServiceStore = class {
|
|
|
2628
2776
|
* dit la même chose que le coffre.
|
|
2629
2777
|
*/
|
|
2630
2778
|
remoteOrgs = /* @__PURE__ */ new Map();
|
|
2779
|
+
/**
|
|
2780
|
+
* Oublier ce qui a été lu, pour tout relire sous la clé courante.
|
|
2781
|
+
*
|
|
2782
|
+
* Appelé après l'adoption d'une clé d'organisation : le disque vient d'être
|
|
2783
|
+
* re-chiffré sous les pieds du store, si bien que sa mémoire décrit un état
|
|
2784
|
+
* qui n'existe plus. La laisser en place n'affichait pas seulement des
|
|
2785
|
+
* comptes périmés — la sauvegarde suivante réécrivait l'ancien chiffré
|
|
2786
|
+
* par-dessus le nouveau, et défaisait l'adoption.
|
|
2787
|
+
*/
|
|
2788
|
+
resetCache() {
|
|
2789
|
+
this.services.clear();
|
|
2790
|
+
this.diskForm.clear();
|
|
2791
|
+
this.roots.clear();
|
|
2792
|
+
this.remoteOrgs.clear();
|
|
2793
|
+
this.loaded = false;
|
|
2794
|
+
this.notify();
|
|
2795
|
+
}
|
|
2631
2796
|
getFilePath(root) {
|
|
2632
2797
|
return join4(root, FILENAME3);
|
|
2633
2798
|
}
|
|
@@ -3918,6 +4083,7 @@ export {
|
|
|
3918
4083
|
hasEncryptionKey,
|
|
3919
4084
|
getEncryptionKey,
|
|
3920
4085
|
markVaultLocked,
|
|
4086
|
+
isVaultLocked,
|
|
3921
4087
|
clearVaultLock,
|
|
3922
4088
|
ensureEncryptionKey,
|
|
3923
4089
|
setEncryptionKey,
|
|
@@ -3928,6 +4094,8 @@ export {
|
|
|
3928
4094
|
vaultIdOfRoot,
|
|
3929
4095
|
vaultFor,
|
|
3930
4096
|
stampOrgCloud,
|
|
4097
|
+
rememberOrgName,
|
|
4098
|
+
readOrgNames,
|
|
3931
4099
|
readOrgClouds,
|
|
3932
4100
|
listOrgVaults,
|
|
3933
4101
|
listCloudVaults,
|
|
@@ -3980,6 +4148,8 @@ export {
|
|
|
3980
4148
|
decryptVariableSlots,
|
|
3981
4149
|
extractEncryptedVariableSlots,
|
|
3982
4150
|
isEncryptedValue,
|
|
4151
|
+
rememberFile,
|
|
4152
|
+
hasChangedSinceRead,
|
|
3983
4153
|
projectKey,
|
|
3984
4154
|
AmbiguousProjectError,
|
|
3985
4155
|
registerProjectLoader,
|
|
@@ -3998,4 +4168,4 @@ export {
|
|
|
3998
4168
|
traefikManager,
|
|
3999
4169
|
agentManager
|
|
4000
4170
|
};
|
|
4001
|
-
//# sourceMappingURL=chunk-
|
|
4171
|
+
//# sourceMappingURL=chunk-NLVDO4EC.js.map
|