@runeya/runeya 2.0.134 → 2.0.136
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/{chat-IQBWQCTK.js → chat-UBUGGGBZ.js} +3 -3
- package/{chunk-GISLEYNE.js → chunk-5JUONZ3G.js} +3 -3
- package/{chunk-M3UUGW5Z.js → chunk-G4CR7O3L.js} +66 -395
- package/chunk-G4CR7O3L.js.map +1 -0
- package/{companion-YQ7CGW7W.js → companion-U3FKH7SQ.js} +2 -2
- package/index.js +3 -3
- package/package.json +1 -1
- package/{src-NMMPS4ZF.js → src-XAKZS5VF.js} +4 -4
- package/{src-NMMPS4ZF.js.map → src-XAKZS5VF.js.map} +1 -1
- package/web/assets/{AgentScalarChatInterface.vue-BMJAUTbn.js → AgentScalarChatInterface.vue-BGGkpyp3.js} +3 -3
- package/web/assets/AgentTerminalPage-B8gLray2.js +1 -0
- package/web/assets/AiChatPage-BKITsyMx.js +1 -0
- package/web/assets/AppLayout-B72S4nTi.css +1 -0
- package/web/assets/AppLayout-BYw7v2sp.js +1 -0
- package/web/assets/AuditPage-nHTwzyia.js +1 -0
- package/web/assets/CloudAccountPage-DuaZz2j4.js +1 -0
- package/web/assets/CloudAccountPage-XHxI-ixD.js +1 -0
- package/web/assets/CloudMessagingPage-B2N5K-Xs.js +2 -0
- package/web/assets/DashboardPage-Bd1Y_T3b.css +1 -0
- package/web/assets/DashboardPage-VoWJeWh_.js +1 -0
- package/web/assets/DirectoryPickerDialog-B5SuJOhv.js +1 -0
- package/web/assets/{EditorIcon-V_Fqyf2s.js → EditorIcon-DXYoMZnL.js} +2 -2
- package/web/assets/{EnvironmentForm-qlF1EeZ2.js → EnvironmentForm-D3pZuxVn.js} +2 -2
- package/web/assets/EnvironmentFormPage-BIXbPTN5.js +1 -0
- package/web/assets/EnvironmentListPage-CHa-Ni3w.js +1 -0
- package/web/assets/KanbanBoardPage-B46zbE2H.css +1 -0
- package/web/assets/KanbanBoardPage-BFTNpm8P.js +4 -0
- package/web/assets/KanbanListPage-CYuIrKXH.js +1 -0
- package/web/assets/KanbanListPage-DxJFx6A6.css +1 -0
- package/web/assets/LaunchProjectPage-9hhGBdOh.css +1 -0
- package/web/assets/LaunchProjectPage-jy-R3Fiw.js +1 -0
- package/web/assets/LaunchServicesPage-BMtm_8yP.css +1 -0
- package/web/assets/LaunchServicesPage-DX7nyo36.js +1 -0
- package/web/assets/LaunchShell-BHfseuPM.js +1 -0
- package/web/assets/LaunchShell-HenrOlHV.css +1 -0
- package/web/assets/LogViewer-C-pHXudR.js +3 -0
- package/web/assets/OrgKeyPrompt-OPnK5oPm.js +1 -0
- package/web/assets/OrgLogo-Cxa49Tl3.js +1 -0
- package/web/assets/ProcessControls-DXDyR6XX.js +1 -0
- package/web/assets/ProcessDetailPage-DNKTwgPW.js +1 -0
- package/web/assets/ProcessMetrics-CdQc_8Z0.js +168 -0
- package/web/assets/RandomJobTestPage-BE8HkgSb.js +2 -0
- package/web/assets/ScenarioEditorPage-COC03w7b.css +1 -0
- package/web/assets/ScenarioEditorPage-Coo6ExzZ.js +14 -0
- package/web/assets/SendToChatDialog-ClXerpCU.js +1 -0
- package/web/assets/ServiceControlsBar-C7HrPjQI.js +1 -0
- package/web/assets/{ServiceDetailPage-cQNK1uWq.css → ServiceDetailPage-BhFOqSte.css} +1 -1
- package/web/assets/ServiceDetailPage-Cxuy0Yix.js +2 -0
- package/web/assets/ServiceFormPage-CCOu1h8v.js +1 -0
- package/web/assets/{SettingsPage-B7yKfXK2.css → SettingsPage-DA7lVKfg.css} +1 -1
- package/web/assets/SettingsPage-Dt1ViDQe.js +2063 -0
- package/web/assets/UnlockPage-C5iEOAKH.js +1 -0
- package/web/assets/UnlockPage-DR-Vy9-Y.css +1 -0
- package/web/assets/VaultMigrationPage-CwRWvFY7.js +1 -0
- package/web/assets/VersionBadge-Bqb72GXf.js +1 -0
- package/web/assets/VersionBadge-DUFbwfrl.css +1 -0
- package/web/assets/WikiPage-Bl1jDKKp.js +1 -0
- package/web/assets/WikiView-58u6vU3q.js +1 -0
- package/web/assets/WikiView-BqO5AEaY.css +1 -0
- package/web/assets/add-scalar-classes-CT5KQbzH.js +387 -0
- package/web/assets/{autocomplete-DKHFlhhO.js → autocomplete-DobAPPYJ.js} +3 -3
- package/web/assets/{basic-shape-diamond.svg-DCxdtThm.js → basic-shape-diamond.svg-FbeAPLc-.js} +1 -1
- package/web/assets/{basic-shape-hexagon.svg-BllqL52E.js → basic-shape-hexagon.svg-CtwcdpTe.js} +1 -1
- package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-qsZEp39q.js → basic-shape-primary-circle-ellipse-round.svg-DsSs3S2_.js} +1 -1
- package/web/assets/{basic-shape-primary-square-rectangle.svg-DrsT6mAT.js → basic-shape-primary-square-rectangle.svg-CNe1RNx8.js} +1 -1
- package/web/assets/{basic-shape-shield.svg-Cbxs8_Nf.js → basic-shape-shield.svg-DwZMLfah.js} +1 -1
- package/web/assets/{browser-pqiHj2Ya.js → browser-DsZ9HxVm.js} +1 -1
- package/web/assets/{browser-3Xde4kSz.js → browser-Dz1gvldT.js} +1 -1
- package/web/assets/card-46tM5yU0.js +32 -0
- package/web/assets/{checkbox-BcVCOcOx.js → checkbox-DPknldTJ.js} +3 -3
- package/web/assets/chevronup-D2Lr2GiV.js +151 -0
- package/web/assets/{chip-DCUZHTdu.js → chip-Caiakd-N.js} +2 -2
- package/web/assets/client-KL5c1Dog.js +24 -0
- package/web/assets/cloud-chat.store-Belo5SKd.js +1 -0
- package/web/assets/cloud-client-Cqa2Udt8.js +1 -0
- package/web/assets/cloud-session-56bUtkSL.js +2 -0
- package/web/assets/cloud-session-Dqm0C6H5.js +1 -0
- package/web/assets/column-DQ53_qc6.js +763 -0
- package/web/assets/composables-CHyZa9ag.js +1 -0
- package/web/assets/{computer-device-desktop-monitor.svg-2AkCd4Vg.js → computer-device-desktop-monitor.svg-CwiGN14T.js} +1 -1
- package/web/assets/{computer-device-desktop.svg-BX6dDfTh.js → computer-device-desktop.svg-BC2VdXDZ.js} +1 -1
- package/web/assets/{computer-device-laptop.svg-DQot5tMG.js → computer-device-laptop.svg-BOp8AKN6.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-BqQpExMo.js → computer-device-mobile-phone-android-samsung-back.svg-CmbpPX1u.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung.svg-uWqzS9ou.js → computer-device-mobile-phone-android-samsung.svg-_WGKWVtZ.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-lGlmpWrH.js → computer-device-mobile-phone-iphone-x-back.svg-DmLh97KG.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x.svg-BZkIeiFY.js → computer-device-mobile-phone-iphone-x.svg-C7-5mdyV.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet-touch.svg-BIY2ojxF.js → computer-device-mobile-tablet-touch.svg-DiUaSnhU.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet.svg-EsUtZRCO.js → computer-device-mobile-tablet.svg-B6nfbYm_.js} +1 -1
- package/web/assets/{computer-device-network-ethernet-cat6.svg-CFYKvBLS.js → computer-device-network-ethernet-cat6.svg-DwtVKy79.js} +1 -1
- package/web/assets/{computer-device-network-lan-www.svg-DD140-i0.js → computer-device-network-lan-www.svg-vQKfG3Xz.js} +1 -1
- package/web/assets/{computer-device-network-wifi-connection.svg-B6xlwqRF.js → computer-device-network-wifi-connection.svg-DhHaOUge.js} +1 -1
- package/web/assets/{computer-device-network-wifi-router.svg-D2oEGuXL.js → computer-device-network-wifi-router.svg-1dQS4k4J.js} +1 -1
- package/web/assets/{cssMode-CyhbxQFj.js → cssMode-CdQL22W5.js} +1 -1
- package/web/assets/{divider-bEPGnPmT.js → divider-DhYR4BAO.js} +2 -2
- package/web/assets/{docx-preview-CPCu7gIi.js → docx-preview-D-jP_CCs.js} +1 -1
- package/web/assets/{ecology-science-erlenmeyer-flask.svg-C3Zo72lq.js → ecology-science-erlenmeyer-flask.svg-D76wQVA2.js} +1 -1
- package/web/assets/{fieldset-BSON_QE9.js → fieldset-BtOjs_Hh.js} +2 -2
- package/web/assets/{freemarker2-764Mz1z9.js → freemarker2-BADW9vhy.js} +1 -1
- package/web/assets/{handlebars-BcplsCVf.js → handlebars-CwWQD_C8.js} +1 -1
- package/web/assets/{html-Ab2Gwigb.js → html-y87CEbe3.js} +1 -1
- package/web/assets/{htmlMode-D8yRZKkz.js → htmlMode-CVagtvVh.js} +1 -1
- package/web/assets/{image-flash-lightning.svg-D-jM06gw.js → image-flash-lightning.svg-OvpKi3a3.js} +1 -1
- package/web/assets/{image-picture-flower.svg-X2opjZMU.js → image-picture-flower.svg-DLOePozT.js} +1 -1
- package/web/assets/index-CKOtBNaZ.css +1 -0
- package/web/assets/{index-CI76mltd.js → index-CcIrffU_.js} +363 -583
- package/web/assets/{interface-alert-exclamation-diamond.svg-B3xHmrw0.js → interface-alert-exclamation-diamond.svg-4Vk7SoQ1.js} +1 -1
- package/web/assets/{interface-alert-exclamation-triangle-warning.svg-BYsDqmTI.js → interface-alert-exclamation-triangle-warning.svg-BLAvc4am.js} +1 -1
- package/web/assets/{interface-alert-information-circle.svg-CC4CgbBo.js → interface-alert-information-circle.svg-CaAXpDAI.js} +1 -1
- package/web/assets/{interface-award-crown.svg-B08Pbh8m.js → interface-award-crown.svg-CW7XG0wx.js} +1 -1
- package/web/assets/{interface-bookmark.svg-CS29ZpkA.js → interface-bookmark-tag.svg-DPWVVeZU.js} +1 -1
- package/web/assets/{interface-bookmark-tag.svg-BcxMXdHY.js → interface-bookmark.svg-BpLEuOv2.js} +1 -1
- package/web/assets/{interface-calendar-date-one.svg-QnK7dekM.js → interface-calendar-date-one.svg-DbBgvI4W.js} +1 -1
- package/web/assets/{interface-content-book-open-pages.svg-C4tNKeZR.js → interface-content-book-open-pages.svg-BbsuvPZM.js} +1 -1
- package/web/assets/{interface-content-book-page.svg-6Rp1a1dk.js → interface-content-book-page.svg-DbRPz1j8.js} +1 -1
- package/web/assets/{interface-content-file.svg-llFUOjLX.js → interface-content-file.svg-OJPKABxS.js} +1 -1
- package/web/assets/{interface-content-folder.svg-OI_omwbE.js → interface-content-folder.svg-3D_5OE_-.js} +1 -1
- package/web/assets/interface-content-folder.svg-8mYqkDao.js +1 -0
- package/web/assets/{interface-copy-clipboard.svg-Cz3_mRtM.js → interface-copy-clipboard.svg-DqthVh9J.js} +1 -1
- package/web/assets/{interface-edit-attachment.svg-DXOfVMyI.js → interface-edit-attachment.svg-BAPCnZ0B.js} +1 -1
- package/web/assets/{interface-edit-binocular.svg-Bx3DHzuZ.js → interface-edit-binocular.svg-BoV39ouF.js} +1 -1
- package/web/assets/{interface-edit-magic-wand.svg-CAfIYJHR.js → interface-edit-magic-wand.svg-Cz36nKVn.js} +1 -1
- package/web/assets/{interface-edit-tool-paint-roller.svg-FMiiT6dK.js → interface-edit-tool-paint-roller.svg-DZUQotD5.js} +1 -1
- package/web/assets/{interface-edit-tool-pencil.svg-DbkLSbF0.js → interface-edit-tool-pencil.svg-DBf1Y9Tj.js} +1 -1
- package/web/assets/{interface-favorite-award.svg-hIvxW1cg.js → interface-favorite-award.svg-B93sRjxf.js} +1 -1
- package/web/assets/{interface-favorite-flag.svg-CXlWtfuy.js → interface-favorite-flag.svg-DKHuT11J.js} +1 -1
- package/web/assets/{interface-favorite-heart.svg-BzYW_bf1.js → interface-favorite-heart.svg-Bw5FZQ7d.js} +1 -1
- package/web/assets/{interface-favorite-star.svg-C-Um6PkR.js → interface-favorite-star.svg-CgLbct_b.js} +1 -1
- package/web/assets/{interface-favorite-stars-sparkles.svg-DO6EAdIZ.js → interface-favorite-stars-sparkles.svg-B7cYS4ef.js} +1 -1
- package/web/assets/{interface-hierarchy-flowchart.svg-CT5ujWQr.js → interface-hierarchy-flowchart.svg-zwuaRdWq.js} +1 -1
- package/web/assets/{interface-home-house.svg-Inv2Er4f.js → interface-home-house.svg-B85yMFCe.js} +1 -1
- package/web/assets/{interface-hyperlink.svg-6GygCg4m.js → interface-hyperlink.svg-US6b-Svn.js} +1 -1
- package/web/assets/{interface-lighting-brightness.svg-DWnle7Gq.js → interface-lighting-brightness.svg-mZWkhb7f.js} +1 -1
- package/web/assets/{interface-lock-closed.svg-D-wTtQo2.js → interface-lock-closed.svg-9oHuNwuY.js} +1 -1
- package/web/assets/{interface-lock-open-unlock.svg-B_c9nJ0x.js → interface-lock-open-unlock.svg-DBetdJny.js} +1 -1
- package/web/assets/{interface-login-key.svg-UCNam9v0.js → interface-login-key.svg-BZnZTYd1.js} +1 -1
- package/web/assets/{interface-search.svg-BCkx6NFS.js → interface-search.svg-CMXAOoam.js} +1 -1
- package/web/assets/{interface-setting-cog.svg-B72XaLKk.js → interface-setting-cog.svg-CKckatt7.js} +1 -1
- package/web/assets/{interface-share-megaphone-bullhorn.svg-M_vr4ET6.js → interface-share-megaphone-bullhorn.svg-DH7kVqN-.js} +1 -1
- package/web/assets/{interface-share-rocket.svg-c3ZAv4Fq.js → interface-share-rocket.svg-BNXcMugi.js} +1 -1
- package/web/assets/{interface-share-satellite.svg-C-cwO4ZJ.js → interface-share-satellite.svg-Bb8t607w.js} +1 -1
- package/web/assets/{interface-share-space-ship.svg-7YTjWYKO.js → interface-share-space-ship.svg-Dk4rbLtF.js} +1 -1
- package/web/assets/{interface-share.svg-DJwukuDM.js → interface-share.svg-CtX8dq5i.js} +1 -1
- package/web/assets/{interface-signal-square.svg-BpoFub4k.js → interface-signal-square.svg-DmUIlYTd.js} +1 -1
- package/web/assets/{interface-time-clock-circle.svg-xsV2D_qB.js → interface-time-clock-circle.svg-D2ZNaXT3.js} +1 -1
- package/web/assets/{interface-time-hour-glass.svg-4ENYolRr.js → interface-time-hour-glass.svg-Ddo-8hHe.js} +1 -1
- package/web/assets/{interface-users-multiple.svg-eev_D0ig.js → interface-users-multiple.svg-Jh7S0sT4.js} +1 -1
- package/web/assets/{interface-weather-moon.svg-CrLYHTyu.js → interface-weather-moon.svg-DbdQFgL2.js} +1 -1
- package/web/assets/{javascript-DU1DQexv.js → javascript-BVGFyXBk.js} +1 -1
- package/web/assets/{jsonMode-CB8B-oHc.js → jsonMode-vnFlxYl9.js} +2 -2
- package/web/assets/{liquid-Dumxg7oa.js → liquid-DieKMEvN.js} +1 -1
- package/web/assets/{lspLanguageFeatures-DQTWe8ey.js → lspLanguageFeatures-DoeI-8Y7.js} +3 -3
- package/web/assets/{mail-chat-bubble-square.svg-DMcOjB2m.js → mail-chat-bubble-square.svg-CApdU2ea.js} +1 -1
- package/web/assets/{mail-send-email-paper-airplane.svg-CKpmx979.js → mail-send-email-paper-airplane.svg-jjZ0KB32.js} +1 -1
- package/web/assets/{mail-send-envelope.svg-C-WAmEPg.js → mail-send-envelope.svg-B6Tsoh-8.js} +1 -1
- package/web/assets/{mdx-DNzXmMw3.js → mdx-BCkszXid.js} +1 -1
- package/web/assets/{minus-CmvRtEQe.js → minus-DfLQX3s2.js} +2 -2
- package/web/assets/modal-CCco27Sn.js +5 -0
- package/web/assets/modal-D4J85_wC.js +1 -0
- package/web/assets/{money-cashier-receipt.svg-DeL4SF6F.js → money-cashier-receipt.svg-DM-I8Snr.js} +1 -1
- package/web/assets/{money-currency-dollar-pay.svg-DCIbDsIr.js → money-currency-dollar-pay.svg-CkDRewrV.js} +1 -1
- package/web/assets/{money-graph-arrow-increase.svg-NDD5MY4C.js → money-graph-arrow-increase.svg-BT4KLHWz.js} +1 -1
- package/web/assets/{money-graph-bar-chart-increase.svg-CqFZrAkq.js → money-graph-bar-chart-increase.svg-EvyIJ3Uu.js} +1 -1
- package/web/assets/multiselect-BmjidXlj.js +251 -0
- package/web/assets/{nature-ecology-leaf.svg-C74TcBty.js → nature-ecology-leaf.svg-uZBwXdg9.js} +1 -1
- package/web/assets/page-actions-DofPMoFe.js +1 -0
- package/web/assets/{password-Cf8j-GkJ.js → password-D1R5w1qL.js} +4 -4
- package/web/assets/{phone-telephone.svg-BeNULj1e.js → phone-telephone.svg-BSvOskIB.js} +1 -1
- package/web/assets/{plus-hUxz8lH_.js → plus-CNGSRnxy.js} +6 -6
- package/web/assets/process.store-p1LqnpY2.js +1 -0
- package/web/assets/{programming-bug.svg-DSydJcD0.js → programming-bug.svg-CLnGs4K-.js} +1 -1
- package/web/assets/{programming-cloud.svg-2xUngU0S.js → programming-cloud.svg-CxBovXBR.js} +1 -1
- package/web/assets/{programming-computer-database-server.svg-TAX5z1tR.js → programming-computer-database-server.svg-C1JmOyio.js} +1 -1
- package/web/assets/{programming-computer-database.svg-mO5bElVh.js → programming-computer-database.svg-BRjyOzP4.js} +1 -1
- package/web/assets/{programming-module-four-layout.svg-Dr767G1Z.js → programming-module-four-layout.svg-Blwzw6Qz.js} +1 -1
- package/web/assets/{programming-module-three.svg-D4oVsZl_.js → programming-module-three.svg-6bkrmWsU.js} +1 -1
- package/web/assets/{programming-module.svg-wdwopIvm.js → programming-module.svg-CBS9xKxX.js} +1 -1
- package/web/assets/{programming-script-code.svg-DBPWoki2.js → programming-script-code.svg-BVhyoAD3.js} +1 -1
- package/web/assets/project-launch.store-BBYtCcv8.js +1 -0
- package/web/assets/project.store-D_2v7amt.js +1 -0
- package/web/assets/{python-BE5DaTS2.js → python-CiPYtj_d.js} +1 -1
- package/web/assets/{radiobutton-CImlBTBP.js → radiobutton--KWBHcDP.js} +3 -2
- package/web/assets/{razor-Cmx-7XPV.js → razor-CSoWGP30.js} +1 -1
- package/web/assets/router-CRKT3825.js +1 -0
- package/web/assets/{selectbutton-BhpYZyFl.js → selectbutton-C0NL5n4w.js} +4 -4
- package/web/assets/settings-scope-DblmUa3N.js +1 -0
- package/web/assets/{settings.store-DridR-ck.js → settings.store-DKTQyerJ.js} +1 -1
- package/web/assets/{shopping-cart.svg-C3En9-vl.js → shopping-cart.svg-C-8NG_Po.js} +1 -1
- package/web/assets/{shopping-gift-present.svg-7p-hRdPX.js → shopping-gift-present.svg-Bp6q5VzJ.js} +1 -1
- package/web/assets/{shopping-shipping-box-parcel-package.svg-BWbZhI8w.js → shopping-shipping-box-parcel-package.svg-DeWaEIwm.js} +1 -1
- package/web/assets/{src-DTiDFW3B.js → src-BHR3l7pa.js} +35 -35
- package/web/assets/{src-BM_sDDlr.css → src-BN5gTC76.css} +1 -1
- package/web/assets/src-BRLkogf3.js +1 -0
- package/web/assets/{tag-new-circle.svg-Spe566L2.js → tag-new-circle.svg-CTljXsqE.js} +1 -1
- package/web/assets/theme-BZzt_Sgl.js +1 -0
- package/web/assets/{toggleswitch-CZCAv-jp.js → toggleswitch-d41l5g27.js} +2 -2
- package/web/assets/{travel-map-earth-globe.svg-DKz5j-UT.js → travel-map-earth-globe.svg-BUkcntCp.js} +1 -1
- package/web/assets/trpc-Db0Atu8A.js +1 -0
- package/web/assets/{tsMode-AQ4klRHU.js → tsMode-B2c-rCAa.js} +4 -4
- package/web/assets/{typescript-yluvE--_.js → typescript-CmW4u_GQ.js} +1 -1
- package/web/assets/useAiChatDrawer-0QJJVXul.js +1 -0
- package/web/assets/useCloudOrg-E4l-99WA.js +1 -0
- package/web/assets/useEnvVarAutocomplete-BDqUWoGr.js +102 -0
- package/web/assets/{useProjectCatalog-BGdTjXzH.js → useProjectCatalog-Cxt-hL1H.js} +1 -1
- package/web/assets/useProjectCloudOrg-CwLTQLIO.js +1 -0
- package/web/assets/useServiceUrlHost-VIA3uP5-.js +1 -0
- package/web/assets/{xml-BEYNsHpr.js → xml-BxMqu3hT.js} +1 -1
- package/web/assets/{yaml-CdJTW_Jy.js → yaml-Djx7E3R1.js} +1 -1
- package/web/index.html +2 -2
- package/chunk-M3UUGW5Z.js.map +0 -1
- package/web/assets/AgentTerminalPage-DJny5leF.js +0 -1
- package/web/assets/AiChatPage-Co5YwUra.js +0 -1
- package/web/assets/AppLayout-DhRnQ7sB.js +0 -1
- package/web/assets/AppLayout-lOwRflWA.css +0 -1
- package/web/assets/AuditPage-B87IuU2E.js +0 -1
- package/web/assets/CloudAccountPage-B9zHVg91.js +0 -1
- package/web/assets/CloudAccountPage-ClRW-luH.js +0 -1
- package/web/assets/CloudMessagingPage-Cil491lq.js +0 -2
- package/web/assets/DashboardPage-DRZGWuU1.css +0 -1
- package/web/assets/DashboardPage-vQ69rIA_.js +0 -1
- package/web/assets/DirectoryPickerDialog-BZG4wryg.js +0 -1
- package/web/assets/EnvironmentFormPage-BrW-34oI.js +0 -1
- package/web/assets/EnvironmentListPage-BdEPphrn.js +0 -1
- package/web/assets/KanbanBoardPage-DQKqtxxI.js +0 -4
- package/web/assets/KanbanBoardPage-cXyI-2uZ.css +0 -1
- package/web/assets/KanbanListPage-5-yh2hO3.js +0 -1
- package/web/assets/KanbanListPage-pCWYPwBv.css +0 -1
- package/web/assets/LaunchProjectPage-CHeYx5v0.css +0 -1
- package/web/assets/LaunchProjectPage-g_5Wme1T.js +0 -1
- package/web/assets/LaunchServicesPage-BxUrOZ44.js +0 -1
- package/web/assets/LaunchServicesPage-CPN3Z3m5.css +0 -1
- package/web/assets/LogViewer-DhTTUJLn.js +0 -3
- package/web/assets/OrgKeyPrompt-Bs08QGKq.js +0 -1
- package/web/assets/OrgLogo-CWXqzPiS.js +0 -1
- package/web/assets/ProcessControls-DIN7XQOl.js +0 -1
- package/web/assets/ProcessDetailPage-DMFYdJO6.js +0 -1
- package/web/assets/ProcessMetrics-DED63acT.js +0 -51
- package/web/assets/RandomJobTestPage-CqOMbdjK.js +0 -2
- package/web/assets/ScenarioEditorPage-DPuYttHT.js +0 -14
- package/web/assets/ScenarioEditorPage-GmFIXPDj.css +0 -1
- package/web/assets/SendToChatDialog-qbllbAWj.js +0 -1
- package/web/assets/ServiceControlsBar-DxPLkFTF.js +0 -1
- package/web/assets/ServiceDetailPage-Cp0zW4vF.js +0 -2
- package/web/assets/ServiceFormPage-COy2T7gp.js +0 -1
- package/web/assets/SettingsPage-DsLaZJWX.js +0 -2063
- package/web/assets/UnlockPage-DU3hoV78.css +0 -1
- package/web/assets/UnlockPage-shod0TOQ.js +0 -1
- package/web/assets/VaultMigrationPage-BDJIDUa6.js +0 -1
- package/web/assets/VersionBadge-CgHek52W.css +0 -1
- package/web/assets/VersionBadge-V6I68xY-.js +0 -1
- package/web/assets/WikiPage-CRPtaZ4n.js +0 -1
- package/web/assets/WikiView-CaUVD3f1.css +0 -1
- package/web/assets/WikiView-trPq-25v.js +0 -1
- package/web/assets/add-scalar-classes-CSUXL3L0.js +0 -387
- package/web/assets/card-wrii-nrq.js +0 -32
- package/web/assets/client-B9hsmT1s.js +0 -24
- package/web/assets/cloud-chat.store-o00oRsgO.js +0 -1
- package/web/assets/cloud-client-TKLL1zwR.js +0 -1
- package/web/assets/cloud-session-B9wU6_5G.js +0 -2
- package/web/assets/cloud-session-DloNvu91.js +0 -1
- package/web/assets/column-DA7ijaud.js +0 -763
- package/web/assets/composables-DgWeyWnW.js +0 -1
- package/web/assets/index-rUoTy8xc.css +0 -1
- package/web/assets/interface-content-folder.svg-D9afgGr0.js +0 -1
- package/web/assets/modal-C0O2XBPJ.js +0 -5
- package/web/assets/modal-DRUfpIPe.js +0 -1
- package/web/assets/multiselect-C3dGhKnP.js +0 -251
- package/web/assets/process.store-TQsoI7AA.js +0 -1
- package/web/assets/project-launch.store-CZsTY83m.js +0 -1
- package/web/assets/project.store-eIP8RM3Q.js +0 -1
- package/web/assets/router-CVSY8aIb.js +0 -1
- package/web/assets/settings-scope-CxYQcvAR.js +0 -1
- package/web/assets/src-isLSni-N.js +0 -1
- package/web/assets/tabpanel-Bfol4XTd.js +0 -150
- package/web/assets/theme-4th617B_.js +0 -1
- package/web/assets/trpc-CBXwYAMy.js +0 -1
- package/web/assets/useAiChatDrawer-D_AzdjrA.js +0 -1
- package/web/assets/useCloudOrg-b-QnhnSc.js +0 -1
- package/web/assets/useEnvVarAutocomplete-Bj9GeijO.js +0 -1
- package/web/assets/useProjectCloudOrg-DQJMaDXR.js +0 -1
- package/web/assets/useServiceUrlHost-BezQuX2r.js +0 -1
- /package/{chat-IQBWQCTK.js.map → chat-UBUGGGBZ.js.map} +0 -0
- /package/{chunk-GISLEYNE.js.map → chunk-5JUONZ3G.js.map} +0 -0
- /package/{companion-YQ7CGW7W.js.map → companion-U3FKH7SQ.js.map} +0 -0
- /package/web/assets/{abap-BMzrySmF.js → abap-BwLGULgU.js} +0 -0
- /package/web/assets/{apex-B-FTsm78.js → apex-BmwhxS2n.js} +0 -0
- /package/web/assets/{azcli--oTP982j.js → azcli-7RvE_Zal.js} +0 -0
- /package/web/assets/{bat-BoGrdVjd.js → bat-DRPmS6Na.js} +0 -0
- /package/web/assets/{bicep-CzjrcFxJ.js → bicep-BwfkS7ZV.js} +0 -0
- /package/web/assets/{browser-TSICzjSV.js → browser-D3d3061H.js} +0 -0
- /package/web/assets/{cameligo-C5PP9BK8.js → cameligo-BJ_mdC8E.js} +0 -0
- /package/web/assets/{clojure-CQZ7UtVM.js → clojure-CQKq7DWt.js} +0 -0
- /package/web/assets/{coffee-D04oxsa9.js → coffee-DJRj2iwd.js} +0 -0
- /package/web/assets/{cpp-CrdHZict.js → cpp-BC1yJTUW.js} +0 -0
- /package/web/assets/{csharp-DEojCdJ9.js → csharp-D6U2fAAT.js} +0 -0
- /package/web/assets/{csp-B_k4_rnT.js → csp-B2Ue_UmV.js} +0 -0
- /package/web/assets/{css-pkVaNQ-t.js → css-CEzlcbMY.js} +0 -0
- /package/web/assets/{cypher-InDI0ycO.js → cypher-D5Sg38Yj.js} +0 -0
- /package/web/assets/{dart-CMBDu6Jq.js → dart-BhjKRv6v.js} +0 -0
- /package/web/assets/{dockerfile-Dus6X0qp.js → dockerfile-BnivEbtE.js} +0 -0
- /package/web/assets/{ecl-DcGwRpWZ.js → ecl-TS1StLK1.js} +0 -0
- /package/web/assets/{elixir-BNgAfgpS.js → elixir-BX9ta6DO.js} +0 -0
- /package/web/assets/{flow9-b9BSTtId.js → flow9-CoOB42ee.js} +0 -0
- /package/web/assets/{fsharp-DsEl3ylC.js → fsharp-DmQslDFn.js} +0 -0
- /package/web/assets/{go-BVk-2zoJ.js → go-BbEGGooY.js} +0 -0
- /package/web/assets/{graphql-CCOPKJOV.js → graphql-E24y5sn9.js} +0 -0
- /package/web/assets/{hcl-Bk9fje7b.js → hcl-pBZphP8G.js} +0 -0
- /package/web/assets/{ini-Bfgwaf--.js → ini-BSbRgr25.js} +0 -0
- /package/web/assets/{java-X9tlBUoe.js → java-D8KvzsMp.js} +0 -0
- /package/web/assets/{julia-CSpUiZse.js → julia-BDRytf15.js} +0 -0
- /package/web/assets/{kotlin-D9ZC3fV-.js → kotlin-CNcQo-uP.js} +0 -0
- /package/web/assets/{less-D_gN2wJJ.js → less-0HRV-2Rz.js} +0 -0
- /package/web/assets/{lexon-DQORBJ3L.js → lexon-DdJG3_pW.js} +0 -0
- /package/web/assets/{lua-cfsK9g-g.js → lua-Blq8Mukj.js} +0 -0
- /package/web/assets/{m3-CqoRZqX5.js → m3-CXbmzr9W.js} +0 -0
- /package/web/assets/{markdown-7m0w-Hon.js → markdown-DFIISzT8.js} +0 -0
- /package/web/assets/{mips-Jgck3TtW.js → mips-C2XSYglv.js} +0 -0
- /package/web/assets/{msdax-DZzPcvtl.js → msdax-D3Jl6oAY.js} +0 -0
- /package/web/assets/{mysql-BDgvhBkY.js → mysql-mCqxt_Co.js} +0 -0
- /package/web/assets/{objective-c-s7vO3TPA.js → objective-c-CUKLr4E9.js} +0 -0
- /package/web/assets/{pascal-WgQqmw9E.js → pascal-BpqDI6Ur.js} +0 -0
- /package/web/assets/{pascaligo-DdIoMHxz.js → pascaligo-BVchPyL4.js} +0 -0
- /package/web/assets/{perl-DscrjHeC.js → perl-Dgc9v23P.js} +0 -0
- /package/web/assets/{pgsql-BoaUrFoQ.js → pgsql-Dk9IX1G_.js} +0 -0
- /package/web/assets/{php-CozsHsln.js → php-XeFLn3yL.js} +0 -0
- /package/web/assets/{pla-BmgIF2rB.js → pla-DQMfrdXZ.js} +0 -0
- /package/web/assets/{postiats-kTIQO6-c.js → postiats-DiKrdL3K.js} +0 -0
- /package/web/assets/{powerquery-Bge8QN2f.js → powerquery-Cj9Q91Zv.js} +0 -0
- /package/web/assets/{powershell-C_EAICI2.js → powershell-DxLElnzU.js} +0 -0
- /package/web/assets/{protobuf-CeVRf2v4.js → protobuf-7vT2HdZD.js} +0 -0
- /package/web/assets/{pug-v3OQoW7_.js → pug-oi96TUbQ.js} +0 -0
- /package/web/assets/{qsharp-B8FD4CzE.js → qsharp-DNr9IwS2.js} +0 -0
- /package/web/assets/{r-DoTn9Ot2.js → r-C-REi_Zk.js} +0 -0
- /package/web/assets/{redis-B9eZmNDt.js → redis-BvOCrLoN.js} +0 -0
- /package/web/assets/{redshift-hkVOq3Na.js → redshift-jNEw-REz.js} +0 -0
- /package/web/assets/{restructuredtext-go0p3fHP.js → restructuredtext-B9ET-x7N.js} +0 -0
- /package/web/assets/{ruby-DlJSZQx7.js → ruby-BIEBiJDZ.js} +0 -0
- /package/web/assets/{rust-CS0ULEAB.js → rust-BnoIVewm.js} +0 -0
- /package/web/assets/{sb-BWXLY6C5.js → sb-Bwvy9clh.js} +0 -0
- /package/web/assets/{scala-BnuniK5f.js → scala-DPv5zS47.js} +0 -0
- /package/web/assets/{scheme-rpzgzOI1.js → scheme-BQqNVxf_.js} +0 -0
- /package/web/assets/{scss-CDZa-oHG.js → scss-Ck1AFDEz.js} +0 -0
- /package/web/assets/{shell-Ddbp1LTu.js → shell-C4IYs9Z7.js} +0 -0
- /package/web/assets/{solidity-XL5oY4Gs.js → solidity-D3bS77xq.js} +0 -0
- /package/web/assets/{sophia-C_FAm0DW.js → sophia-BSTVfueD.js} +0 -0
- /package/web/assets/{sparql-Bkcu5lIB.js → sparql-BGcXD7s2.js} +0 -0
- /package/web/assets/{sql-hd2WP_Pl.js → sql-CIsSgyam.js} +0 -0
- /package/web/assets/{st-DX23wqhB.js → st-dV1d_AXx.js} +0 -0
- /package/web/assets/{swift-Uc9uURgY.js → swift-CK8gXWQn.js} +0 -0
- /package/web/assets/{systemverilog-uwEj3oP7.js → systemverilog-B9tHBIJU.js} +0 -0
- /package/web/assets/{tcl-CW0gNQFo.js → tcl-BgRT60RV.js} +0 -0
- /package/web/assets/{twig-C-fOaHGU.js → twig-CGkLO4Nl.js} +0 -0
- /package/web/assets/{typespec-Cs66OMeg.js → typespec-DMP9WuzC.js} +0 -0
- /package/web/assets/{uuid-hYISTbX6.js → uuid-H0yY5A03.js} +0 -0
- /package/web/assets/{vb-f4DjbovN.js → vb-DfSbhl3d.js} +0 -0
- /package/web/assets/{wgsl-D8hs7PJh.js → wgsl-CaJmoLY5.js} +0 -0
|
@@ -3,9 +3,9 @@ import {
|
|
|
3
3
|
startClaudeCodeSession,
|
|
4
4
|
startCliSession,
|
|
5
5
|
startCodexSession
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-G4CR7O3L.js";
|
|
7
7
|
import "./chunk-I7JHF5FE.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-5JUONZ3G.js";
|
|
9
9
|
import "./chunk-MD3VW4HQ.js";
|
|
10
10
|
import "./chunk-7JAJSV4L.js";
|
|
11
11
|
import "./chunk-BDQOBEZ3.js";
|
|
@@ -18,4 +18,4 @@ export {
|
|
|
18
18
|
startCliSession,
|
|
19
19
|
startCodexSession
|
|
20
20
|
};
|
|
21
|
-
//# sourceMappingURL=chat-
|
|
21
|
+
//# sourceMappingURL=chat-UBUGGGBZ.js.map
|
|
@@ -2037,7 +2037,7 @@ async function runCompanionForTurn(conversationId) {
|
|
|
2037
2037
|
if (!hasNew) {
|
|
2038
2038
|
return skip(conversationId, "nothingNew", `rien de neuf \xE0 relire (${messageCount} messages)`);
|
|
2039
2039
|
}
|
|
2040
|
-
const { startCliSession } = await import("./chat-
|
|
2040
|
+
const { startCliSession } = await import("./chat-UBUGGGBZ.js");
|
|
2041
2041
|
const companionConv = await ensureCompanionConversation(conv);
|
|
2042
2042
|
const isFirstTurn = (companionConv.messages?.length ?? 0) === 0;
|
|
2043
2043
|
const exchange = formatExchange(conv.messages, from);
|
|
@@ -2152,7 +2152,7 @@ async function deliverToMainConversation(conv, message) {
|
|
|
2152
2152
|
async function attemptDelivery(conv, message) {
|
|
2153
2153
|
if (await writeToLivePty(conv.id, message)) return "pty";
|
|
2154
2154
|
try {
|
|
2155
|
-
const { startCliSession } = await import("./chat-
|
|
2155
|
+
const { startCliSession } = await import("./chat-UBUGGGBZ.js");
|
|
2156
2156
|
await startCliSession(conv.runner, conv.id, message, { jwt: await signJwt() });
|
|
2157
2157
|
return "headless";
|
|
2158
2158
|
} catch (err) {
|
|
@@ -2317,4 +2317,4 @@ export {
|
|
|
2317
2317
|
runCompanionNow,
|
|
2318
2318
|
initCompanion
|
|
2319
2319
|
};
|
|
2320
|
-
//# sourceMappingURL=chunk-
|
|
2320
|
+
//# sourceMappingURL=chunk-5JUONZ3G.js.map
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
runCompanionNow,
|
|
31
31
|
syncConversationFromClaudeTranscript,
|
|
32
32
|
verifyJwt
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-5JUONZ3G.js";
|
|
34
34
|
import {
|
|
35
35
|
StoreDiskCoordinator,
|
|
36
36
|
agentManager,
|
|
@@ -649,6 +649,18 @@ var FILENAME = "environment-overrides.json";
|
|
|
649
649
|
var EnvironmentOverridesStore = class {
|
|
650
650
|
data = {};
|
|
651
651
|
loaded = false;
|
|
652
|
+
/**
|
|
653
|
+
* Le coordinateur partagé par les stores : un seul rechargement à la fois,
|
|
654
|
+
* jamais pendant une écriture, et une substitution atomique à la fin.
|
|
655
|
+
*
|
|
656
|
+
* Ce store faisait sa propre cuisine et se marquait « chargé » avant ses
|
|
657
|
+
* `await` : toute lecture concurrente repartait avec une table vide — une
|
|
658
|
+
* surcharge déjà écrite paraissait absente, et l'assistant réclamait au
|
|
659
|
+
* déverrouillage des variables que ce poste avait déjà renseignées.
|
|
660
|
+
*/
|
|
661
|
+
disk = new StoreDiskCoordinator();
|
|
662
|
+
/** Ce que le disque portait au dernier chargement (cf. `load`). */
|
|
663
|
+
fingerprint = "";
|
|
652
664
|
diskEncryptedSlots = {};
|
|
653
665
|
/**
|
|
654
666
|
* Les surcharges dont le secret ne s'est pas ouvert.
|
|
@@ -658,7 +670,6 @@ var EnvironmentOverridesStore = class {
|
|
|
658
670
|
* manquait que la clé.
|
|
659
671
|
*/
|
|
660
672
|
unreadableSecrets = /* @__PURE__ */ new Set();
|
|
661
|
-
saveQueue = Promise.resolve();
|
|
662
673
|
/** Which vault each override was read from, until its project is known. */
|
|
663
674
|
roots = /* @__PURE__ */ new Map();
|
|
664
675
|
/**
|
|
@@ -683,24 +694,52 @@ var EnvironmentOverridesStore = class {
|
|
|
683
694
|
getLegacyFilePath() {
|
|
684
695
|
return legacyMachineFilePath(FILENAME);
|
|
685
696
|
}
|
|
686
|
-
/**
|
|
687
|
-
|
|
688
|
-
*
|
|
689
|
-
* Variable ids are unique, so merging the files cannot collide; a vault read
|
|
690
|
-
* later simply wins over a legacy copy of the same override.
|
|
691
|
-
*/
|
|
692
|
-
async load() {
|
|
693
|
-
if (this.loaded) return;
|
|
694
|
-
if (!getEncryptionKey()) return;
|
|
695
|
-
this.loaded = true;
|
|
696
|
-
await ensureProjectsLoaded();
|
|
697
|
+
/** Les fichiers qui portent des surcharges : les coffres, et l'emplacement d'avant. */
|
|
698
|
+
async sourcePaths() {
|
|
697
699
|
const roots = await allVaultRoots();
|
|
698
|
-
|
|
700
|
+
return [
|
|
699
701
|
this.getLegacyFilePath(),
|
|
700
702
|
await keyedFilePath(FILENAME),
|
|
701
703
|
...roots.map((root) => join4(root, FILENAME))
|
|
702
704
|
];
|
|
703
|
-
|
|
705
|
+
}
|
|
706
|
+
/**
|
|
707
|
+
* Charger, et recharger quand les fichiers ont bougé sous nos pieds.
|
|
708
|
+
*
|
|
709
|
+
* L'empreinte se prend **après** `ensureProjectsLoaded` : la liste des coffres
|
|
710
|
+
* en dépend, et une empreinte prise sur une liste incomplète ne ressemblerait
|
|
711
|
+
* à aucune des suivantes — le store se rechargerait à chaque lecture.
|
|
712
|
+
*/
|
|
713
|
+
async load() {
|
|
714
|
+
await this.disk.load(async () => {
|
|
715
|
+
if (!getEncryptionKey()) return null;
|
|
716
|
+
await ensureProjectsLoaded();
|
|
717
|
+
const fingerprint = await fingerprintFiles(await this.sourcePaths());
|
|
718
|
+
if (this.loaded && fingerprint === this.fingerprint) return null;
|
|
719
|
+
const next = await this.readVaults();
|
|
720
|
+
return () => {
|
|
721
|
+
this.data = next.data;
|
|
722
|
+
this.diskEncryptedSlots = next.diskEncryptedSlots;
|
|
723
|
+
this.roots = next.roots;
|
|
724
|
+
this.unreadableSecrets = next.unreadableSecrets;
|
|
725
|
+
this.fingerprint = fingerprint;
|
|
726
|
+
this.loaded = true;
|
|
727
|
+
};
|
|
728
|
+
});
|
|
729
|
+
}
|
|
730
|
+
/**
|
|
731
|
+
* Read every vault, then the places older versions used, into fresh tables
|
|
732
|
+
* that `load` swaps in at once.
|
|
733
|
+
*
|
|
734
|
+
* Variable ids are unique, so merging the files cannot collide; a vault read
|
|
735
|
+
* later simply wins over a legacy copy of the same override.
|
|
736
|
+
*/
|
|
737
|
+
async readVaults() {
|
|
738
|
+
const data = {};
|
|
739
|
+
const diskEncryptedSlots = {};
|
|
740
|
+
const roots = /* @__PURE__ */ new Map();
|
|
741
|
+
const unreadableSecrets = /* @__PURE__ */ new Set();
|
|
742
|
+
for (const path of await this.sourcePaths()) {
|
|
704
743
|
let parsed;
|
|
705
744
|
try {
|
|
706
745
|
parsed = JSON.parse(await readFile2(path, "utf-8"));
|
|
@@ -708,24 +747,24 @@ var EnvironmentOverridesStore = class {
|
|
|
708
747
|
continue;
|
|
709
748
|
}
|
|
710
749
|
Object.assign(
|
|
711
|
-
|
|
750
|
+
diskEncryptedSlots,
|
|
712
751
|
extractEncryptedVariableSlots(parsed)
|
|
713
752
|
);
|
|
714
753
|
const decrypted = decryptVariableSlots(
|
|
715
754
|
parsed,
|
|
716
755
|
"environment-overrides",
|
|
717
|
-
(variableId) =>
|
|
756
|
+
(variableId) => unreadableSecrets.add(variableId),
|
|
718
757
|
vaultIdOfRoot(dirname2(path))
|
|
719
758
|
);
|
|
720
759
|
for (const [id, override] of Object.entries(decrypted)) {
|
|
721
|
-
|
|
722
|
-
|
|
760
|
+
data[id] = { value: override.value };
|
|
761
|
+
roots.set(id, dirname2(path));
|
|
723
762
|
}
|
|
724
763
|
}
|
|
764
|
+
return { data, diskEncryptedSlots, roots, unreadableSecrets };
|
|
725
765
|
}
|
|
726
766
|
save() {
|
|
727
|
-
|
|
728
|
-
return this.saveQueue;
|
|
767
|
+
return this.disk.save(() => this.doSave());
|
|
729
768
|
}
|
|
730
769
|
/**
|
|
731
770
|
* Write each vault that holds — or held — an override.
|
|
@@ -1394,11 +1433,11 @@ function toList(raw) {
|
|
|
1394
1433
|
}
|
|
1395
1434
|
return text.split(",").map((v) => v.trim().replace(/^["'[]+|["'\]]+$/g, "")).filter(Boolean);
|
|
1396
1435
|
}
|
|
1397
|
-
function clearable(raw,
|
|
1436
|
+
function clearable(raw, parse, key) {
|
|
1398
1437
|
if (raw === void 0) return {};
|
|
1399
1438
|
const text = String(raw).trim();
|
|
1400
1439
|
if (!text || text === "null") return { [key]: null };
|
|
1401
|
-
return { [key]:
|
|
1440
|
+
return { [key]: parse(text) };
|
|
1402
1441
|
}
|
|
1403
1442
|
function gitTarget(p) {
|
|
1404
1443
|
return {
|
|
@@ -3274,360 +3313,6 @@ var serviceRouter = router({
|
|
|
3274
3313
|
})
|
|
3275
3314
|
});
|
|
3276
3315
|
|
|
3277
|
-
// ../server/src/services/claude-usage.ts
|
|
3278
|
-
import pty from "@lydell/node-pty";
|
|
3279
|
-
import { execSync } from "child_process";
|
|
3280
|
-
var MONTHS = {
|
|
3281
|
-
jan: 0,
|
|
3282
|
-
feb: 1,
|
|
3283
|
-
mar: 2,
|
|
3284
|
-
apr: 3,
|
|
3285
|
-
may: 4,
|
|
3286
|
-
jun: 5,
|
|
3287
|
-
jul: 6,
|
|
3288
|
-
aug: 7,
|
|
3289
|
-
sep: 8,
|
|
3290
|
-
oct: 9,
|
|
3291
|
-
nov: 10,
|
|
3292
|
-
dec: 11
|
|
3293
|
-
};
|
|
3294
|
-
function parseResetsAt(str) {
|
|
3295
|
-
const tzMatch = str.match(/\(([^)]+)\)/);
|
|
3296
|
-
const tz = tzMatch?.[1] ?? "UTC";
|
|
3297
|
-
const dateStr = str.replace(/\([^)]+\)/, "").replaceAll("\xB7", "").trim();
|
|
3298
|
-
const withTime = dateStr.match(/^([A-Za-z]{3})(\d+),(\d+)(am|pm)$/i);
|
|
3299
|
-
const withoutTime = dateStr.match(/^([A-Za-z]{3})(\d+)$/i);
|
|
3300
|
-
const timeOnly = dateStr.match(/^(\d+)(?::(\d+))?(am|pm)$/i);
|
|
3301
|
-
let month, day, hour = 0, minute = 0;
|
|
3302
|
-
const year = (/* @__PURE__ */ new Date()).getFullYear();
|
|
3303
|
-
if (withTime) {
|
|
3304
|
-
month = MONTHS[withTime[1].toLowerCase()] ?? 0;
|
|
3305
|
-
day = Number.parseInt(withTime[2]);
|
|
3306
|
-
hour = Number.parseInt(withTime[3]);
|
|
3307
|
-
if (withTime[4].toLowerCase() === "pm" && hour !== 12) hour += 12;
|
|
3308
|
-
if (withTime[4].toLowerCase() === "am" && hour === 12) hour = 0;
|
|
3309
|
-
} else if (withoutTime) {
|
|
3310
|
-
month = MONTHS[withoutTime[1].toLowerCase()] ?? 0;
|
|
3311
|
-
day = Number.parseInt(withoutTime[2]);
|
|
3312
|
-
} else if (timeOnly) {
|
|
3313
|
-
hour = Number.parseInt(timeOnly[1]);
|
|
3314
|
-
minute = timeOnly[2] ? Number.parseInt(timeOnly[2]) : 0;
|
|
3315
|
-
if (timeOnly[3].toLowerCase() === "pm" && hour !== 12) hour += 12;
|
|
3316
|
-
if (timeOnly[3].toLowerCase() === "am" && hour === 12) hour = 0;
|
|
3317
|
-
const now = /* @__PURE__ */ new Date();
|
|
3318
|
-
const parts = new Intl.DateTimeFormat("en", { timeZone: tz, year: "numeric", month: "2-digit", day: "2-digit" }).formatToParts(now);
|
|
3319
|
-
month = Number.parseInt(parts.find((p) => p.type === "month").value) - 1;
|
|
3320
|
-
day = Number.parseInt(parts.find((p) => p.type === "day").value);
|
|
3321
|
-
} else {
|
|
3322
|
-
return str;
|
|
3323
|
-
}
|
|
3324
|
-
const approxUtc = new Date(Date.UTC(year, month, day, hour, 0));
|
|
3325
|
-
const offsetStr = new Intl.DateTimeFormat("en", {
|
|
3326
|
-
timeZone: tz,
|
|
3327
|
-
timeZoneName: "shortOffset"
|
|
3328
|
-
}).formatToParts(approxUtc).find((p) => p.type === "timeZoneName")?.value ?? "GMT+0";
|
|
3329
|
-
const offsetMatch = offsetStr.match(/GMT([+-])(\d+)(?::(\d+))?/);
|
|
3330
|
-
const sign = offsetMatch?.[1] === "-" ? -1 : 1;
|
|
3331
|
-
const offsetMinutes = sign * (Number.parseInt(offsetMatch?.[2] ?? "0") * 60 + Number.parseInt(offsetMatch?.[3] ?? "0"));
|
|
3332
|
-
const utc = new Date(Date.UTC(year, month, day, hour, minute) - offsetMinutes * 6e4);
|
|
3333
|
-
return utc.toISOString();
|
|
3334
|
-
}
|
|
3335
|
-
function extractSection(text, startPattern, endPattern) {
|
|
3336
|
-
const start = text.search(startPattern);
|
|
3337
|
-
if (start === -1) return null;
|
|
3338
|
-
const after = text.slice(start);
|
|
3339
|
-
const end = endPattern ? after.search(endPattern) : after.length;
|
|
3340
|
-
return end === -1 ? after : after.slice(0, end);
|
|
3341
|
-
}
|
|
3342
|
-
function extractPercent(section) {
|
|
3343
|
-
const m = section?.match(/(\d+)%\s*used/i);
|
|
3344
|
-
return m ? Number.parseInt(m[1]) : null;
|
|
3345
|
-
}
|
|
3346
|
-
function extractResets(section) {
|
|
3347
|
-
const m = section?.match(/Rese[ts]+\s*(.+?)(?=Current|Extra|$)/is);
|
|
3348
|
-
return m ? m[1].replaceAll(/\s+/g, " ").trim() : null;
|
|
3349
|
-
}
|
|
3350
|
-
function parse(text) {
|
|
3351
|
-
const flat = text.replaceAll("\n", " ").replaceAll(/\s+/g, " ");
|
|
3352
|
-
const result = {};
|
|
3353
|
-
const sessionSec = extractSection(flat, /Current\s*session/i, /Current\s*week|Extra\s*usage/i);
|
|
3354
|
-
if (sessionSec) {
|
|
3355
|
-
const resets = extractResets(sessionSec);
|
|
3356
|
-
result.current_session = {
|
|
3357
|
-
percent: extractPercent(sessionSec),
|
|
3358
|
-
resetsAt: resets ? parseResetsAt(resets) : null
|
|
3359
|
-
};
|
|
3360
|
-
}
|
|
3361
|
-
const weekAllSec = extractSection(flat, /Current\s*week\s*\(all\s*models?\)/i, /Current\s*week\s*\(Sonnet/i);
|
|
3362
|
-
if (weekAllSec) {
|
|
3363
|
-
const resets = extractResets(weekAllSec);
|
|
3364
|
-
result.current_week_all = {
|
|
3365
|
-
percent: extractPercent(weekAllSec),
|
|
3366
|
-
resetsAt: resets ? parseResetsAt(resets) : null
|
|
3367
|
-
};
|
|
3368
|
-
}
|
|
3369
|
-
const weekSonnetSec = extractSection(flat, /Current\s*week\s*\(Sonnet\s*only\)/i, /Extra\s*usage/i);
|
|
3370
|
-
if (weekSonnetSec) {
|
|
3371
|
-
const resets = extractResets(weekSonnetSec);
|
|
3372
|
-
result.current_week_sonnet = {
|
|
3373
|
-
percent: extractPercent(weekSonnetSec),
|
|
3374
|
-
resetsAt: resets ? parseResetsAt(resets) : null
|
|
3375
|
-
};
|
|
3376
|
-
}
|
|
3377
|
-
const extraSec = extractSection(flat, /Extra\s*usage(?!\s*not)/i, null);
|
|
3378
|
-
if (extraSec && !/not\s*enabled/i.test(extraSec.slice(0, 40))) {
|
|
3379
|
-
const spent = extraSec.match(/\$([\d.]+)\s*\/\s*\$([\d.]+)\s*spent/i);
|
|
3380
|
-
const resets = extractResets(extraSec);
|
|
3381
|
-
result.extra_usage = {
|
|
3382
|
-
percent: extractPercent(extraSec),
|
|
3383
|
-
spent: spent ? Number.parseFloat(spent[1]) : null,
|
|
3384
|
-
limit: spent ? Number.parseFloat(spent[2]) : null,
|
|
3385
|
-
resetsAt: resets ? parseResetsAt(resets) : null
|
|
3386
|
-
};
|
|
3387
|
-
}
|
|
3388
|
-
return result;
|
|
3389
|
-
}
|
|
3390
|
-
function getClaudeUsage() {
|
|
3391
|
-
return new Promise((resolve2, reject) => {
|
|
3392
|
-
const env2 = { ...process.env };
|
|
3393
|
-
delete env2["CLAUDECODE"];
|
|
3394
|
-
let claudeBin = "claude";
|
|
3395
|
-
if (process.platform !== "win32") {
|
|
3396
|
-
try {
|
|
3397
|
-
claudeBin = execSync("which claude", { encoding: "utf8" }).trim().split("\n")[0].trim() || "claude";
|
|
3398
|
-
} catch {
|
|
3399
|
-
}
|
|
3400
|
-
}
|
|
3401
|
-
const invocation = resolveCliInvocation(claudeBin, ["/usage"]);
|
|
3402
|
-
let term = null;
|
|
3403
|
-
try {
|
|
3404
|
-
term = pty.spawn(invocation.command, invocation.args, {
|
|
3405
|
-
name: "xterm-256color",
|
|
3406
|
-
cols: 200,
|
|
3407
|
-
rows: 40,
|
|
3408
|
-
env: env2
|
|
3409
|
-
});
|
|
3410
|
-
} catch (err) {
|
|
3411
|
-
reject(err);
|
|
3412
|
-
return;
|
|
3413
|
-
}
|
|
3414
|
-
let buffer = "";
|
|
3415
|
-
let done = false;
|
|
3416
|
-
let debounce = null;
|
|
3417
|
-
function finish() {
|
|
3418
|
-
if (done) return;
|
|
3419
|
-
done = true;
|
|
3420
|
-
if (debounce) clearTimeout(debounce);
|
|
3421
|
-
clearTimeout(hardTimeout);
|
|
3422
|
-
term?.kill();
|
|
3423
|
-
const clean = buffer.replaceAll(/\x1b\[[0-9;]*X/g, "\n").replaceAll(/\x1b\[[0-9;]*[mGKHFABCDJsu]/g, "").replaceAll(/\x1b[^a-zA-Z]*[a-zA-Z]/g, "").replaceAll("\r", "");
|
|
3424
|
-
resolve2(parse(clean));
|
|
3425
|
-
}
|
|
3426
|
-
const hardTimeout = setTimeout(() => {
|
|
3427
|
-
if (!done) finish();
|
|
3428
|
-
}, 15e3);
|
|
3429
|
-
term.onData((data) => {
|
|
3430
|
-
buffer += data;
|
|
3431
|
-
if (buffer.includes("%")) {
|
|
3432
|
-
if (debounce) clearTimeout(debounce);
|
|
3433
|
-
debounce = setTimeout(finish, 800);
|
|
3434
|
-
}
|
|
3435
|
-
});
|
|
3436
|
-
term.onExit(() => {
|
|
3437
|
-
finish();
|
|
3438
|
-
});
|
|
3439
|
-
});
|
|
3440
|
-
}
|
|
3441
|
-
async function getClaudeUsageEntries() {
|
|
3442
|
-
const usage = await getClaudeUsage();
|
|
3443
|
-
const entries = [];
|
|
3444
|
-
if (usage.current_session) {
|
|
3445
|
-
entries.push({
|
|
3446
|
-
label: "Session",
|
|
3447
|
-
percentage: usage.current_session.percent,
|
|
3448
|
-
next_reset: usage.current_session.resetsAt
|
|
3449
|
-
});
|
|
3450
|
-
}
|
|
3451
|
-
if (usage.current_week_all) {
|
|
3452
|
-
entries.push({
|
|
3453
|
-
label: "Week",
|
|
3454
|
-
percentage: usage.current_week_all.percent,
|
|
3455
|
-
next_reset: usage.current_week_all.resetsAt
|
|
3456
|
-
});
|
|
3457
|
-
}
|
|
3458
|
-
if (usage.current_week_sonnet) {
|
|
3459
|
-
entries.push({
|
|
3460
|
-
label: "Sonnet",
|
|
3461
|
-
percentage: usage.current_week_sonnet.percent,
|
|
3462
|
-
next_reset: usage.current_week_sonnet.resetsAt
|
|
3463
|
-
});
|
|
3464
|
-
}
|
|
3465
|
-
if (usage.extra_usage) {
|
|
3466
|
-
entries.push({
|
|
3467
|
-
label: "Extra",
|
|
3468
|
-
percentage: usage.extra_usage.percent,
|
|
3469
|
-
next_reset: usage.extra_usage.resetsAt
|
|
3470
|
-
});
|
|
3471
|
-
}
|
|
3472
|
-
return entries;
|
|
3473
|
-
}
|
|
3474
|
-
|
|
3475
|
-
// ../server/src/services/codex-usage.ts
|
|
3476
|
-
import pty2 from "@lydell/node-pty";
|
|
3477
|
-
var MONTHS2 = {
|
|
3478
|
-
jan: 0,
|
|
3479
|
-
feb: 1,
|
|
3480
|
-
mar: 2,
|
|
3481
|
-
apr: 3,
|
|
3482
|
-
may: 4,
|
|
3483
|
-
jun: 5,
|
|
3484
|
-
jul: 6,
|
|
3485
|
-
aug: 7,
|
|
3486
|
-
sep: 8,
|
|
3487
|
-
oct: 9,
|
|
3488
|
-
nov: 10,
|
|
3489
|
-
dec: 11
|
|
3490
|
-
};
|
|
3491
|
-
function parseResetToIso(raw) {
|
|
3492
|
-
const value = raw.replace(/^\(*/, "").replace(/\)*$/, "").replace(/^resets?\s*/i, "").trim();
|
|
3493
|
-
const now = /* @__PURE__ */ new Date();
|
|
3494
|
-
const timeOnly = value.match(/^(\d{1,2}):(\d{2})$/);
|
|
3495
|
-
if (timeOnly) {
|
|
3496
|
-
const hour = Number.parseInt(timeOnly[1], 10);
|
|
3497
|
-
const minute = Number.parseInt(timeOnly[2], 10);
|
|
3498
|
-
const date = new Date(now);
|
|
3499
|
-
date.setHours(hour, minute, 0, 0);
|
|
3500
|
-
if (date.getTime() <= now.getTime()) {
|
|
3501
|
-
date.setDate(date.getDate() + 1);
|
|
3502
|
-
}
|
|
3503
|
-
return date.toISOString();
|
|
3504
|
-
}
|
|
3505
|
-
const withDate = value.match(/^(\d{1,2}):(\d{2})\s+on\s+(\d{1,2})\s+([A-Za-z]{3})$/i);
|
|
3506
|
-
if (withDate) {
|
|
3507
|
-
const hour = Number.parseInt(withDate[1], 10);
|
|
3508
|
-
const minute = Number.parseInt(withDate[2], 10);
|
|
3509
|
-
const day = Number.parseInt(withDate[3], 10);
|
|
3510
|
-
const month = MONTHS2[withDate[4].toLowerCase()];
|
|
3511
|
-
if (month === void 0) return null;
|
|
3512
|
-
let year = now.getFullYear();
|
|
3513
|
-
let date = new Date(year, month, day, hour, minute, 0, 0);
|
|
3514
|
-
if (date.getTime() <= now.getTime()) {
|
|
3515
|
-
year += 1;
|
|
3516
|
-
date = new Date(year, month, day, hour, minute, 0, 0);
|
|
3517
|
-
}
|
|
3518
|
-
return date.toISOString();
|
|
3519
|
-
}
|
|
3520
|
-
return null;
|
|
3521
|
-
}
|
|
3522
|
-
function stripAnsi(text) {
|
|
3523
|
-
return text.replace(/[\u001b\u009b][[\]()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, "").replaceAll("\r", "");
|
|
3524
|
-
}
|
|
3525
|
-
function parseCodexStatusText(text) {
|
|
3526
|
-
const clean = stripAnsi(text);
|
|
3527
|
-
const normalizedLines = clean.replace(/[│╭╰╮╯─]/g, " ").split("\n").map((line) => line.replace(/\s+/g, " ").trim()).filter(Boolean);
|
|
3528
|
-
const entries = [];
|
|
3529
|
-
let pendingIndex = null;
|
|
3530
|
-
for (const line of normalizedLines) {
|
|
3531
|
-
const sameLine = line.match(/^(.+?limit)\s*:\s*(?:\[[^\]]*\]\s*)?(\d+)%\s*left(?:\s*\((?:resets?\s+)?([^)]+)\))?$/i);
|
|
3532
|
-
if (sameLine) {
|
|
3533
|
-
const label = sameLine[1].trim();
|
|
3534
|
-
const left = Number.parseInt(sameLine[2], 10);
|
|
3535
|
-
const used = Number.isNaN(left) ? null : Math.max(0, Math.min(100, 100 - left));
|
|
3536
|
-
const nextReset = sameLine[3] ? parseResetToIso(sameLine[3]) ?? null : null;
|
|
3537
|
-
entries.push({ label, percentage: used, next_reset: nextReset });
|
|
3538
|
-
pendingIndex = nextReset ? null : entries.length - 1;
|
|
3539
|
-
continue;
|
|
3540
|
-
}
|
|
3541
|
-
const splitReset = line.match(/^\(?\s*resets?\s+([^)]+)\)?$/i);
|
|
3542
|
-
if (splitReset && pendingIndex !== null) {
|
|
3543
|
-
entries[pendingIndex].next_reset = parseResetToIso(splitReset[1]) ?? null;
|
|
3544
|
-
pendingIndex = null;
|
|
3545
|
-
}
|
|
3546
|
-
}
|
|
3547
|
-
if (entries.length === 0) {
|
|
3548
|
-
const statuslineMatch = clean.match(/·\s*(\d+)%\s*left/i);
|
|
3549
|
-
if (statuslineMatch) {
|
|
3550
|
-
const left = Number.parseInt(statuslineMatch[1], 10);
|
|
3551
|
-
const used = Number.isNaN(left) ? null : Math.max(0, Math.min(100, 100 - left));
|
|
3552
|
-
entries.push({ label: "Usage", percentage: used, next_reset: null });
|
|
3553
|
-
}
|
|
3554
|
-
}
|
|
3555
|
-
return entries;
|
|
3556
|
-
}
|
|
3557
|
-
function getCodexUsageEntries() {
|
|
3558
|
-
return new Promise((resolve2, reject) => {
|
|
3559
|
-
let term = null;
|
|
3560
|
-
try {
|
|
3561
|
-
const invocation = resolveCliInvocation("codex", []);
|
|
3562
|
-
term = pty2.spawn(invocation.command, invocation.args, {
|
|
3563
|
-
name: "xterm-256color",
|
|
3564
|
-
cols: 220,
|
|
3565
|
-
rows: 40,
|
|
3566
|
-
env: process.env
|
|
3567
|
-
});
|
|
3568
|
-
} catch (err) {
|
|
3569
|
-
reject(err);
|
|
3570
|
-
return;
|
|
3571
|
-
}
|
|
3572
|
-
let buffer = "";
|
|
3573
|
-
let done = false;
|
|
3574
|
-
const queuedInputs = ["/status", "/status", "/status", "/exit"];
|
|
3575
|
-
let queuedIndex = 0;
|
|
3576
|
-
let inputDrainDebounce = null;
|
|
3577
|
-
let promptSeen = false;
|
|
3578
|
-
const finish = () => {
|
|
3579
|
-
if (done) return;
|
|
3580
|
-
done = true;
|
|
3581
|
-
if (inputDrainDebounce) clearTimeout(inputDrainDebounce);
|
|
3582
|
-
clearTimeout(initialTrigger);
|
|
3583
|
-
clearTimeout(hardTimeout);
|
|
3584
|
-
term?.kill();
|
|
3585
|
-
if (process.env["CODEX_USAGE_DEBUG"] === "1") {
|
|
3586
|
-
const debugClean = stripAnsi(buffer).slice(-6e3);
|
|
3587
|
-
process.stdout.write("[codex-usage] raw tail:\n" + debugClean + "\n");
|
|
3588
|
-
}
|
|
3589
|
-
resolve2(parseCodexStatusText(buffer));
|
|
3590
|
-
};
|
|
3591
|
-
const hardTimeout = setTimeout(() => {
|
|
3592
|
-
finish();
|
|
3593
|
-
}, 25e3);
|
|
3594
|
-
const sendNextInputIfReady = () => {
|
|
3595
|
-
if (done) return;
|
|
3596
|
-
if (!promptSeen) return;
|
|
3597
|
-
if (queuedIndex >= queuedInputs.length) return;
|
|
3598
|
-
const value = queuedInputs[queuedIndex];
|
|
3599
|
-
queuedIndex += 1;
|
|
3600
|
-
promptSeen = false;
|
|
3601
|
-
term?.write(`${value}\r`);
|
|
3602
|
-
};
|
|
3603
|
-
const initialTrigger = setTimeout(() => {
|
|
3604
|
-
promptSeen = true;
|
|
3605
|
-
sendNextInputIfReady();
|
|
3606
|
-
}, 6e3);
|
|
3607
|
-
term.onData((data) => {
|
|
3608
|
-
buffer += data;
|
|
3609
|
-
if (data.includes("\x1B[6n")) {
|
|
3610
|
-
term?.write("\x1B[25;1R");
|
|
3611
|
-
}
|
|
3612
|
-
if (data.includes("\u203A")) {
|
|
3613
|
-
promptSeen = true;
|
|
3614
|
-
}
|
|
3615
|
-
if (inputDrainDebounce) clearTimeout(inputDrainDebounce);
|
|
3616
|
-
inputDrainDebounce = setTimeout(sendNextInputIfReady, 120);
|
|
3617
|
-
if (/(\d+)\s*h\s+limit\s*:/i.test(buffer) && /weekly\s+limit\s*:/i.test(buffer)) {
|
|
3618
|
-
setTimeout(finish, 800);
|
|
3619
|
-
}
|
|
3620
|
-
if (/data not available yet/i.test(buffer) && queuedIndex >= queuedInputs.length - 1) {
|
|
3621
|
-
setTimeout(finish, 400);
|
|
3622
|
-
}
|
|
3623
|
-
});
|
|
3624
|
-
term.onExit(() => {
|
|
3625
|
-
clearTimeout(initialTrigger);
|
|
3626
|
-
finish();
|
|
3627
|
-
});
|
|
3628
|
-
});
|
|
3629
|
-
}
|
|
3630
|
-
|
|
3631
3316
|
// ../server/src/services/scenario-store.ts
|
|
3632
3317
|
function normalizeNode(raw) {
|
|
3633
3318
|
const aiCli = raw.aiCli ?? "claude-code";
|
|
@@ -7512,9 +7197,9 @@ var chatRouter = router({
|
|
|
7512
7197
|
agentId,
|
|
7513
7198
|
"ai.findPtyBySession",
|
|
7514
7199
|
{ sessionId: input.id }
|
|
7515
|
-
).then((
|
|
7516
|
-
if (
|
|
7517
|
-
return agentManager.agentMutation(agentId, "ai.kill", { spawnId:
|
|
7200
|
+
).then((pty) => {
|
|
7201
|
+
if (pty?.status === "running") {
|
|
7202
|
+
return agentManager.agentMutation(agentId, "ai.kill", { spawnId: pty.spawnId });
|
|
7518
7203
|
}
|
|
7519
7204
|
}).catch(() => {
|
|
7520
7205
|
});
|
|
@@ -7625,20 +7310,6 @@ Return ONLY the improved text, no explanation, no preamble.`;
|
|
|
7625
7310
|
return { enhanced: input.text };
|
|
7626
7311
|
}),
|
|
7627
7312
|
listClaudeCodeModels: protectedProcedure.query(() => ["opus", "sonnet", "haiku"]),
|
|
7628
|
-
getClaudeUsage: protectedProcedure.query(async () => {
|
|
7629
|
-
try {
|
|
7630
|
-
return await getClaudeUsageEntries();
|
|
7631
|
-
} catch {
|
|
7632
|
-
return null;
|
|
7633
|
-
}
|
|
7634
|
-
}),
|
|
7635
|
-
getCodexUsage: protectedProcedure.query(async () => {
|
|
7636
|
-
try {
|
|
7637
|
-
return await getCodexUsageEntries();
|
|
7638
|
-
} catch {
|
|
7639
|
-
return null;
|
|
7640
|
-
}
|
|
7641
|
-
}),
|
|
7642
7313
|
getStreamingStatus: protectedProcedure.query(() => activeSessionRegistry.listActive()),
|
|
7643
7314
|
stopSession: protectedProcedure.input(z9.object({ conversationId: ConversationIdSchema })).mutation(({ input }) => {
|
|
7644
7315
|
if (process.env.RUNEYA_DEBUG) console.log("[chat]: stopSession");
|
|
@@ -8431,4 +8102,4 @@ export {
|
|
|
8431
8102
|
startCliSession,
|
|
8432
8103
|
chatRouter
|
|
8433
8104
|
};
|
|
8434
|
-
//# sourceMappingURL=chunk-
|
|
8105
|
+
//# sourceMappingURL=chunk-G4CR7O3L.js.map
|