@runeya/runeya 2.0.120 → 2.0.122
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 +17 -2
- package/agent/index.js.map +1 -1
- package/agent-manager-BSPEFZKZ.js +10 -0
- package/{chat-PXMMZIAY.js → chat-SE5GIT4B.js} +7 -6
- package/{chunk-22RJM654.js → chunk-BVBK2WII.js} +155 -157
- package/chunk-BVBK2WII.js.map +1 -0
- package/chunk-GL7WA5K3.js +92 -0
- package/chunk-GL7WA5K3.js.map +1 -0
- package/{chunk-GIHR3BGT.js → chunk-NIU3CN5A.js} +37 -17
- package/chunk-NIU3CN5A.js.map +1 -0
- package/{chunk-H6VIS4OY.js → chunk-T2BV5WZE.js} +18 -3
- package/chunk-T2BV5WZE.js.map +1 -0
- package/{chunk-NYKFDU76.js → chunk-VNLIA5PV.js} +137 -59
- package/chunk-VNLIA5PV.js.map +1 -0
- package/{chunk-2WXQIUVC.js → chunk-XTLQOYLT.js} +147 -81
- package/chunk-XTLQOYLT.js.map +1 -0
- package/{companion-4RQ3AMOL.js → companion-HEJHC3UR.js} +5 -4
- package/{desktop-launcher-ADGRYF4S.js → desktop-launcher-EGGVXXKV.js} +2 -2
- package/index.js +4 -4
- package/package.json +1 -1
- package/settings-manager-4GAINSJO.js +10 -0
- package/{src-NRKK27F3.js → src-YUVA6WCM.js} +259 -172
- package/src-YUVA6WCM.js.map +1 -0
- package/web/assets/AgentScalarChatInterface.vue-DrcrJYKe.js +13 -0
- package/web/assets/AgentTerminalPage-BonnuSSS.js +1 -0
- package/web/assets/AiChatPage-DzTc9-iH.js +1 -0
- package/web/assets/AppLayout-DRTTSl7g.js +1 -0
- package/web/assets/{AppLayout-kIdcdJ2n.css → AppLayout-vWoE_P8T.css} +1 -1
- package/web/assets/AuditPage-CBWGaY0D.js +1 -0
- package/web/assets/CloudAccountPage-DTrPLz-p.js +1 -0
- package/web/assets/CloudAccountPage-DYOvfMjD.css +1 -0
- package/web/assets/CloudAccountPage-DvbOBtHJ.js +1 -0
- package/web/assets/CloudMessagingPage-BB-_RdEk.js +2 -0
- package/web/assets/DashboardPage-MdYRjTwv.js +164 -0
- package/web/assets/DirectoryPickerDialog-DROtNZ9T.js +1 -0
- package/web/assets/{EditorIcon-CdapdMgo.js → EditorIcon-LCl9V_-a.js} +2 -2
- package/web/assets/{EnvironmentForm-Dgrt5I5N.js → EnvironmentForm-BUadxutb.js} +2 -2
- package/web/assets/EnvironmentFormPage-Do3NwXL5.js +1 -0
- package/web/assets/EnvironmentListPage-DiG8nF1p.js +1 -0
- package/web/assets/KanbanBoardPage-_QCZ2A2f.js +4 -0
- package/web/assets/KanbanListPage-Dl-FpuPX.css +1 -0
- package/web/assets/KanbanListPage-nyfKMn50.js +1 -0
- package/web/assets/LaunchProjectPage-VHAUZ-cq.js +1 -0
- package/web/assets/LaunchServicesPage-CRv2zJxH.js +1 -0
- package/web/assets/LogViewer-DcoQF_33.js +3 -0
- package/web/assets/OrgKeyPrompt-X9hHtpi9.js +1 -0
- package/web/assets/{ProcessControls-DRyD5bQg.js → ProcessControls-PKQWukd7.js} +1 -1
- package/web/assets/ProcessDetailPage-DhFoi4DT.js +1 -0
- package/web/assets/{ProcessMetrics-D5SgFgFU.js → ProcessMetrics-CMewzyxA.js} +2 -2
- package/web/assets/RandomJobTestPage-CErdKP1K.js +2 -0
- package/web/assets/ScenarioEditorPage-CpRlfU3g.js +14 -0
- package/web/assets/SendToChatDialog-DIp62wvw.js +1 -0
- package/web/assets/ServiceControlsBar-Bk4M-tKR.js +1 -0
- package/web/assets/ServiceDetailPage-BxAZTqFu.js +2 -0
- package/web/assets/ServiceFormPage-Dr_e9QMM.js +1 -0
- package/web/assets/SettingsPage-Dx1eYZKP.js +2063 -0
- package/web/assets/UnlockPage-CgynzFN3.js +1 -0
- package/web/assets/UnlockPage-DU3hoV78.css +1 -0
- package/web/assets/VaultMigrationPage-Cw--n60U.js +1 -0
- package/web/assets/VersionBadge-Ct-qYNDF.js +1 -0
- package/web/assets/WikiPage-D7N7nA2O.js +1 -0
- package/web/assets/WikiView-Izg2SvGt.js +1 -0
- package/web/assets/add-scalar-classes-BP_OZa5m.js +387 -0
- package/web/assets/{autocomplete-ByrzVX5h.js → autocomplete-DMfvn4sK.js} +3 -3
- package/web/assets/{basic-shape-diamond.svg-h2koobo1.js → basic-shape-diamond.svg-B5H1r2bp.js} +1 -1
- package/web/assets/{basic-shape-hexagon.svg--IMj5O6H.js → basic-shape-hexagon.svg-CYAjKF0z.js} +1 -1
- package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-B0JqtIPK.js → basic-shape-primary-circle-ellipse-round.svg-CgleCAf-.js} +1 -1
- package/web/assets/{basic-shape-primary-square-rectangle.svg-nMUFcz3q.js → basic-shape-primary-square-rectangle.svg-1Oa48Hhs.js} +1 -1
- package/web/assets/{basic-shape-shield.svg-B01_o2Y1.js → basic-shape-shield.svg-F6dZwVUJ.js} +1 -1
- package/web/assets/{browser-OPkfGEHD.js → browser-CmPAWcJ7.js} +1 -1
- package/web/assets/{browser-DcLBGCAS.js → browser-D3KJ0m2n.js} +1 -1
- package/web/assets/card-Ciw7uU90.js +32 -0
- package/web/assets/{checkbox-DGCPu95-.js → checkbox-BCCx0Nu6.js} +3 -3
- package/web/assets/{chip-Chk5tAnb.js → chip-JRh6DXig.js} +2 -2
- package/web/assets/client-BIlYBe0s.js +24 -0
- package/web/assets/cloud-chat.store-BUYi4kYT.js +1 -0
- package/web/assets/cloud-client-CujRC6FF.js +1 -0
- package/web/assets/cloud-session-CSIV9Uvx.js +1 -0
- package/web/assets/{cloud-session-CnTOFA6T.js → cloud-session-CZWto5y3.js} +2 -2
- package/web/assets/column-DSBHw97f.js +763 -0
- package/web/assets/{computer-device-desktop-monitor.svg-CfTbcAFd.js → computer-device-desktop-monitor.svg-D7wu2cQ4.js} +1 -1
- package/web/assets/{computer-device-desktop.svg-Cl-xv361.js → computer-device-desktop.svg-BtVwjOEG.js} +1 -1
- package/web/assets/{computer-device-laptop.svg-ukRjIyMq.js → computer-device-laptop.svg-f3tFeUHj.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-CoDvI0SU.js → computer-device-mobile-phone-android-samsung-back.svg-CmJcGkrL.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung.svg-BQWjk4Zt.js → computer-device-mobile-phone-android-samsung.svg-C2ke6Sbg.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-DAoSG317.js → computer-device-mobile-phone-iphone-x-back.svg-DxMqUXKE.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x.svg-BPjvW-EA.js → computer-device-mobile-phone-iphone-x.svg-DkbKlrh8.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet-touch.svg-BYEFFDGJ.js → computer-device-mobile-tablet-touch.svg-DP0uXMda.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet.svg-DNLPmtgI.js → computer-device-mobile-tablet.svg-C064ZFQm.js} +1 -1
- package/web/assets/{computer-device-network-ethernet-cat6.svg-BLWV1j_N.js → computer-device-network-ethernet-cat6.svg-Dwzl7zBN.js} +1 -1
- package/web/assets/{computer-device-network-lan-www.svg-BOoU0zpo.js → computer-device-network-lan-www.svg-BgErom5w.js} +1 -1
- package/web/assets/{computer-device-network-wifi-connection.svg-DGwn0IjA.js → computer-device-network-wifi-connection.svg-ByqNsV6y.js} +1 -1
- package/web/assets/{computer-device-network-wifi-router.svg-C5g_K48A.js → computer-device-network-wifi-router.svg-AySGITbi.js} +1 -1
- package/web/assets/{cssMode-Cx5qrxXy.js → cssMode-BqrZ4SB-.js} +1 -1
- package/web/assets/{divider-BrS14lDG.js → divider-BswZTb8q.js} +2 -2
- package/web/assets/{docx-preview-DAPpQjxw.js → docx-preview-t_oOha_C.js} +1 -1
- package/web/assets/{ecology-science-erlenmeyer-flask.svg-DomVqm74.js → ecology-science-erlenmeyer-flask.svg-Keg4ZY0z.js} +1 -1
- package/web/assets/{fieldset-C0CmkHzJ.js → fieldset-DaWy9FsL.js} +2 -2
- package/web/assets/{freemarker2-183f16_T.js → freemarker2-Br0kiufp.js} +1 -1
- package/web/assets/{handlebars-Ck2u5MRS.js → handlebars-BrATzKUL.js} +1 -1
- package/web/assets/{html-RFHCet7g.js → html-LWTJcTM2.js} +1 -1
- package/web/assets/{htmlMode-MLvTePcj.js → htmlMode-A23pWfMP.js} +1 -1
- package/web/assets/{image-flash-lightning.svg-C_9EqK2Z.js → image-flash-lightning.svg-uQfoT6Ex.js} +1 -1
- package/web/assets/{image-picture-flower.svg-Cw0p4SDa.js → image-picture-flower.svg-XxD1bCHC.js} +1 -1
- package/web/assets/{index-De7vzwYE.js → index-e5dmzMc-.js} +362 -362
- package/web/assets/{index-qjiWPMcS.css → index-rUoTy8xc.css} +1 -1
- package/web/assets/{interface-alert-exclamation-diamond.svg-D_7jQp52.js → interface-alert-exclamation-diamond.svg-gQAlkILu.js} +1 -1
- package/web/assets/{interface-alert-exclamation-triangle-warning.svg-slrQHD7Z.js → interface-alert-exclamation-triangle-warning.svg-Ga2rsl6o.js} +1 -1
- package/web/assets/{interface-alert-information-circle.svg-D6HZsCxj.js → interface-alert-information-circle.svg-BS0N2R1M.js} +1 -1
- package/web/assets/{interface-award-crown.svg-C8KlpCo8.js → interface-award-crown.svg-CtLbK4Gl.js} +1 -1
- package/web/assets/{interface-bookmark.svg-CcHEFyZI.js → interface-bookmark-tag.svg-Dfd6eXAX.js} +1 -1
- package/web/assets/{interface-bookmark-tag.svg-4m7iWpFd.js → interface-bookmark.svg-Clt6TTov.js} +1 -1
- package/web/assets/{interface-calendar-date-one.svg-B-NpBZQW.js → interface-calendar-date-one.svg-BmFNLrzR.js} +1 -1
- package/web/assets/{interface-content-book-open-pages.svg-D6JSr0DE.js → interface-content-book-open-pages.svg-u8kJbc3N.js} +1 -1
- package/web/assets/{interface-content-book-page.svg-4JwHKP99.js → interface-content-book-page.svg-Csk8d0R8.js} +1 -1
- package/web/assets/{interface-content-file.svg-dDsVtuW0.js → interface-content-file.svg-DIoD1UhJ.js} +1 -1
- package/web/assets/interface-content-folder.svg-BPZbNQNK.js +1 -0
- package/web/assets/{interface-content-folder.svg-VlaIOWsg.js → interface-content-folder.svg-ipO7hYM2.js} +1 -1
- package/web/assets/{interface-copy-clipboard.svg-C8NaVJTP.js → interface-copy-clipboard.svg-BaK2fHKS.js} +1 -1
- package/web/assets/{interface-edit-attachment.svg-DLv3r8Ta.js → interface-edit-attachment.svg-CrpyP6c6.js} +1 -1
- package/web/assets/{interface-edit-binocular.svg-Dn_isC0z.js → interface-edit-binocular.svg-Cw-YeqUQ.js} +1 -1
- package/web/assets/{interface-edit-magic-wand.svg-D7nDtfWR.js → interface-edit-magic-wand.svg-BPa49t_4.js} +1 -1
- package/web/assets/{interface-edit-tool-paint-roller.svg-pvqfHBhq.js → interface-edit-tool-paint-roller.svg-Cfag7vxY.js} +1 -1
- package/web/assets/{interface-edit-tool-pencil.svg-65sH97q4.js → interface-edit-tool-pencil.svg-BNAmX0d_.js} +1 -1
- package/web/assets/{interface-favorite-award.svg-ByKr9sn6.js → interface-favorite-award.svg-CIMvocAv.js} +1 -1
- package/web/assets/{interface-favorite-flag.svg-Dw-AP2Bq.js → interface-favorite-flag.svg-8C3GXK06.js} +1 -1
- package/web/assets/{interface-favorite-heart.svg-B_rIv8ZF.js → interface-favorite-heart.svg-CEU_IALn.js} +1 -1
- package/web/assets/{interface-favorite-star.svg-DdSC1aGg.js → interface-favorite-star.svg-Bs0RUtgk.js} +1 -1
- package/web/assets/{interface-favorite-stars-sparkles.svg-B2P_fEQm.js → interface-favorite-stars-sparkles.svg-CZYZ5qkH.js} +1 -1
- package/web/assets/{interface-hierarchy-flowchart.svg-Dn7xVcha.js → interface-hierarchy-flowchart.svg-DOgEXHV2.js} +1 -1
- package/web/assets/{interface-home-house.svg-CPV7dtoL.js → interface-home-house.svg-lDERGk8q.js} +1 -1
- package/web/assets/{interface-hyperlink.svg-BxEpW0yS.js → interface-hyperlink.svg-CAZrs64U.js} +1 -1
- package/web/assets/{interface-lighting-brightness.svg-CHwx5muE.js → interface-lighting-brightness.svg-CVANBB7i.js} +1 -1
- package/web/assets/{interface-lock-closed.svg-Ct9YyvGT.js → interface-lock-closed.svg-qDLyceL-.js} +1 -1
- package/web/assets/{interface-lock-open-unlock.svg-DuuZ9seB.js → interface-lock-open-unlock.svg-Bc-cq6eU.js} +1 -1
- package/web/assets/{interface-login-key.svg-DwQq_1hs.js → interface-login-key.svg-D6wZBYEi.js} +1 -1
- package/web/assets/{interface-search.svg-Cd9FPHXP.js → interface-search.svg-BVM6kkvA.js} +1 -1
- package/web/assets/{interface-setting-cog.svg-C2oUvcZk.js → interface-setting-cog.svg-uJYqlmKx.js} +1 -1
- package/web/assets/{interface-share-megaphone-bullhorn.svg-D_sqPbcr.js → interface-share-megaphone-bullhorn.svg-CgBVBu7Z.js} +1 -1
- package/web/assets/{interface-share-rocket.svg-DHw9o1DN.js → interface-share-rocket.svg-C1iCXMlX.js} +1 -1
- package/web/assets/{interface-share-satellite.svg-CYuWbhdH.js → interface-share-satellite.svg-uH-Cvq9d.js} +1 -1
- package/web/assets/{interface-share-space-ship.svg-CsQbvDGw.js → interface-share-space-ship.svg-81lauyV5.js} +1 -1
- package/web/assets/{interface-share.svg-CxR58P36.js → interface-share.svg-DO85t-F0.js} +1 -1
- package/web/assets/{interface-signal-square.svg-BFCAMIlM.js → interface-signal-square.svg-CFAni6lY.js} +1 -1
- package/web/assets/{interface-time-clock-circle.svg-BMtmcI_Z.js → interface-time-clock-circle.svg-BUQfluh7.js} +1 -1
- package/web/assets/{interface-time-hour-glass.svg-F_74mbfe.js → interface-time-hour-glass.svg-BAZDU-C5.js} +1 -1
- package/web/assets/{interface-users-multiple.svg-GqG3hBlb.js → interface-users-multiple.svg-Bj0AvF2-.js} +1 -1
- package/web/assets/{interface-weather-moon.svg-By26aJ-s.js → interface-weather-moon.svg-Cxz-5thD.js} +1 -1
- package/web/assets/{javascript-DWG-shUz.js → javascript-CuP68vN5.js} +1 -1
- package/web/assets/{jsonMode-c7o5Rqeq.js → jsonMode-CdGjze9r.js} +1 -1
- package/web/assets/{liquid-DqJ-7gUQ.js → liquid-fJJZPdJb.js} +1 -1
- package/web/assets/{lspLanguageFeatures-C_r6rVue.js → lspLanguageFeatures-YzzH9q9a.js} +3 -3
- package/web/assets/{mail-chat-bubble-square.svg-1OECQtwZ.js → mail-chat-bubble-square.svg-DY1-sN8v.js} +1 -1
- package/web/assets/{mail-send-email-paper-airplane.svg-DGa9kXqg.js → mail-send-email-paper-airplane.svg-6zVEUG2-.js} +1 -1
- package/web/assets/{mail-send-envelope.svg-DOnW83Qn.js → mail-send-envelope.svg-DNpA7Auy.js} +1 -1
- package/web/assets/{mdx-BmXiyjsf.js → mdx-CphM-wvX.js} +1 -1
- package/web/assets/{minus-Bva6o6mu.js → minus-DD84SZSh.js} +2 -2
- package/web/assets/modal-CKGM8Wb3.js +5 -0
- package/web/assets/modal-Dd5rzDUd.js +1 -0
- package/web/assets/{money-cashier-receipt.svg-C9S8E9Gs.js → money-cashier-receipt.svg-ChxLUMT0.js} +1 -1
- package/web/assets/{money-currency-dollar-pay.svg-CXNYqgJd.js → money-currency-dollar-pay.svg-CcPdfv1E.js} +1 -1
- package/web/assets/{money-graph-arrow-increase.svg-DVTCnF_9.js → money-graph-arrow-increase.svg-BsmXO8yM.js} +1 -1
- package/web/assets/{money-graph-bar-chart-increase.svg-CIlyGCUY.js → money-graph-bar-chart-increase.svg-QVk3zD8i.js} +1 -1
- package/web/assets/multiselect-3cR58mLz.js +251 -0
- package/web/assets/{nature-ecology-leaf.svg-xc6FzauK.js → nature-ecology-leaf.svg-nzup63P6.js} +1 -1
- package/web/assets/{password-B_HLITFe.js → password-CCYLOu-C.js} +4 -4
- package/web/assets/{phone-telephone.svg-D6y6im-g.js → phone-telephone.svg-BLtgdZw-.js} +1 -1
- package/web/assets/{plus-DJr2QEgS.js → plus-jk73RdzY.js} +5 -5
- package/web/assets/process.store-jsfEBwiA.js +1 -0
- package/web/assets/{programming-bug.svg-jKhqPvQ0.js → programming-bug.svg-BCN6lOn1.js} +1 -1
- package/web/assets/{programming-cloud.svg-C1_us4-8.js → programming-cloud.svg-DHNBRNkQ.js} +1 -1
- package/web/assets/{programming-computer-database-server.svg-C_8mq7k2.js → programming-computer-database-server.svg-C4DheEbm.js} +1 -1
- package/web/assets/{programming-computer-database.svg-Cc445gb5.js → programming-computer-database.svg-cD2w2ZZ6.js} +1 -1
- package/web/assets/{programming-module-four-layout.svg-B5fbcAO3.js → programming-module-four-layout.svg-D6_P2rTG.js} +1 -1
- package/web/assets/{programming-module-three.svg-J7fncT0c.js → programming-module-three.svg-Dc076Z_f.js} +1 -1
- package/web/assets/{programming-module.svg-BVjzZRgZ.js → programming-module.svg-D0c9akII.js} +1 -1
- package/web/assets/{programming-script-code.svg-By609kb5.js → programming-script-code.svg-BrT3KZQe.js} +1 -1
- package/web/assets/project-launch.store-Bp7vasUu.js +1 -0
- package/web/assets/project.store-DuZriz9o.js +1 -0
- package/web/assets/{python-jVn8dPRY.js → python-DMw-TRDY.js} +1 -1
- package/web/assets/{radiobutton-erK19fCL.js → radiobutton-CnoEo0qc.js} +2 -2
- package/web/assets/{razor-BJoJ2H1P.js → razor-BTS4Lk96.js} +1 -1
- package/web/assets/router-BU2tqcBm.js +1 -0
- package/web/assets/settings-scope-Bg_X1n_Y.js +1 -0
- package/web/assets/{settings.store-CcYfFedF.js → settings.store-DeGpnclr.js} +1 -1
- package/web/assets/{shopping-cart.svg-a8Rjk8rK.js → shopping-cart.svg-pvFNKXP_.js} +1 -1
- package/web/assets/{shopping-gift-present.svg-BIN9jnEb.js → shopping-gift-present.svg-PYJ4_vdS.js} +1 -1
- package/web/assets/{shopping-shipping-box-parcel-package.svg-05MVPg3v.js → shopping-shipping-box-parcel-package.svg-KMRd9Rmg.js} +1 -1
- package/web/assets/src-BsadAol0.js +572 -0
- package/web/assets/{src-DCcw9sU3.css → src-DU1mBjF-.css} +1 -1
- package/web/assets/src-NXursDRf.js +1 -0
- package/web/assets/{tabpanel-BIAV4aKH.js → tabpanel-CKudNnqo.js} +3 -3
- package/web/assets/{tag-new-circle.svg-ehKpryNe.js → tag-new-circle.svg-Bf83DYRq.js} +1 -1
- package/web/assets/theme-D6M00FyZ.js +1 -0
- package/web/assets/{toggleswitch-qhHjeH7s.js → toggleswitch-Cv0supU2.js} +2 -2
- package/web/assets/{travel-map-earth-globe.svg-D0Dk72so.js → travel-map-earth-globe.svg-WxnFDzEH.js} +1 -1
- package/web/assets/trpc-mWVODCs2.js +1 -0
- package/web/assets/{tsMode-B-s4JVyR.js → tsMode-CfruLmor.js} +5 -5
- package/web/assets/{typescript-CToySho3.js → typescript-BvsjNfHT.js} +1 -1
- package/web/assets/useAiChatDrawer-vNey6IKe.js +1 -0
- package/web/assets/useCloudOrg-B0o8vN4e.js +1 -0
- package/web/assets/useEnvVarAutocomplete-DJMTIim7.js +1 -0
- package/web/assets/useProjectCatalog-B6GXBDDA.js +1 -0
- package/web/assets/{useProjectCloudOrg-DOTcwa9I.js → useProjectCloudOrg-BwLsTiz0.js} +1 -1
- package/web/assets/useServiceUrlHost-CE4Qoy-J.js +1 -0
- package/web/assets/{xml-BMt9wg3H.js → xml-BTID20Kj.js} +1 -1
- package/web/assets/{yaml-RmzWffCM.js → yaml-BtOf_8je.js} +1 -1
- package/web/index.html +2 -2
- package/agent-manager-ACPQWUZ5.js +0 -9
- package/chunk-22RJM654.js.map +0 -1
- package/chunk-2WXQIUVC.js.map +0 -1
- package/chunk-GIHR3BGT.js.map +0 -1
- package/chunk-H6VIS4OY.js.map +0 -1
- package/chunk-NYKFDU76.js.map +0 -1
- package/settings-manager-2C7RY6ZC.js +0 -9
- package/src-NRKK27F3.js.map +0 -1
- package/web/assets/AgentScalarChatInterface.vue-Lgml1vhh.js +0 -13
- package/web/assets/AgentTerminalPage-CwxbyQxm.js +0 -1
- package/web/assets/AiChatPage-CknE-NOo.js +0 -1
- package/web/assets/AppLayout-DT6bb__K.js +0 -1
- package/web/assets/AuditPage-DzK5Tp3Z.js +0 -1
- package/web/assets/CloudAccountPage-BDQpVEAX.js +0 -1
- package/web/assets/CloudAccountPage-CWdxZvAC.js +0 -1
- package/web/assets/CloudAccountPage-CfMY69pk.css +0 -1
- package/web/assets/CloudMessagingPage-BX0QPzkR.js +0 -2
- package/web/assets/DashboardPage-BNBzT2zb.js +0 -164
- package/web/assets/DirectoryPickerDialog-ZT-tL_4A.js +0 -1
- package/web/assets/EnvironmentFormPage-B7uerFJ0.js +0 -1
- package/web/assets/EnvironmentListPage-tTe_1yh-.js +0 -1
- package/web/assets/KanbanBoardPage-DTZVqxd6.js +0 -4
- package/web/assets/KanbanListPage-C5rbZ1eL.css +0 -1
- package/web/assets/KanbanListPage-D82HSRy7.js +0 -1
- package/web/assets/LaunchProjectPage-DgaslasQ.js +0 -1
- package/web/assets/LaunchServicesPage-I2HCqujc.js +0 -1
- package/web/assets/LogViewer-CYuoSJAN.js +0 -3
- package/web/assets/OrgKeyPrompt-Asz6FlrN.js +0 -1
- package/web/assets/ProcessDetailPage-DHmTCgj8.js +0 -1
- package/web/assets/RandomJobTestPage-COLLiJzt.js +0 -2
- package/web/assets/ScenarioEditorPage-rDIB08Ap.js +0 -14
- package/web/assets/SendToChatDialog-BvUmZhUU.js +0 -1
- package/web/assets/ServiceControlsBar-DGTsbA5Q.js +0 -1
- package/web/assets/ServiceDetailPage-Ddko3DNN.js +0 -2
- package/web/assets/ServiceFormPage-oVVmtWjt.js +0 -1
- package/web/assets/SettingsPage-BcQruhk1.js +0 -2063
- package/web/assets/UnlockPage-CpysPhlT.css +0 -1
- package/web/assets/UnlockPage-OH7UV01L.js +0 -1
- package/web/assets/VaultMigrationPage-B4a0WihW.js +0 -1
- package/web/assets/VersionBadge-URtOAd5L.js +0 -1
- package/web/assets/WikiPage-BotpKBAY.js +0 -1
- package/web/assets/WikiView-DQCs79lu.js +0 -1
- package/web/assets/add-scalar-classes-CnAomA8D.js +0 -387
- package/web/assets/card-C3Xots9M.js +0 -32
- package/web/assets/client-CbBJUuyt.js +0 -24
- package/web/assets/cloud-chat.store-COR3nnYR.js +0 -1
- package/web/assets/cloud-client-DZFY1sze.js +0 -1
- package/web/assets/cloud-session-CCJUvzk1.js +0 -1
- package/web/assets/column-ROcesBUs.js +0 -763
- package/web/assets/interface-content-folder.svg-CagI3wg0.js +0 -1
- package/web/assets/modal-AUS2ksVq.js +0 -5
- package/web/assets/modal-BR3MAJDn.js +0 -1
- package/web/assets/multiselect-aPow7kzy.js +0 -251
- package/web/assets/process.store-CVrBwiRB.js +0 -1
- package/web/assets/project-launch.store-DCuERm8z.js +0 -1
- package/web/assets/project.store-D0oo8kyl.js +0 -1
- package/web/assets/router-0UcfydXq.js +0 -1
- package/web/assets/settings-scope-DdLe151G.js +0 -1
- package/web/assets/src-BiwZaAz3.js +0 -1
- package/web/assets/src-OmBj_GBQ.js +0 -572
- package/web/assets/theme-DiK_jXoN.js +0 -1
- package/web/assets/trpc-DOYpfRgV.js +0 -1
- package/web/assets/useAiChatDrawer-BSlDU8P0.js +0 -1
- package/web/assets/useCloudOrg-_EGQ6eUY.js +0 -1
- package/web/assets/useEnvVarAutocomplete-B4h_6ylX.js +0 -1
- package/web/assets/useProjectCatalog-B3GacZkf.js +0 -1
- package/web/assets/useServiceUrlHost-B-38dOxY.js +0 -1
- /package/{agent-manager-ACPQWUZ5.js.map → agent-manager-BSPEFZKZ.js.map} +0 -0
- /package/{chat-PXMMZIAY.js.map → chat-SE5GIT4B.js.map} +0 -0
- /package/{companion-4RQ3AMOL.js.map → companion-HEJHC3UR.js.map} +0 -0
- /package/{desktop-launcher-ADGRYF4S.js.map → desktop-launcher-EGGVXXKV.js.map} +0 -0
- /package/{settings-manager-2C7RY6ZC.js.map → settings-manager-4GAINSJO.js.map} +0 -0
|
@@ -31,8 +31,9 @@ import {
|
|
|
31
31
|
runCompanionNow,
|
|
32
32
|
syncConversationFromClaudeTranscript,
|
|
33
33
|
verifyJwt
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-VNLIA5PV.js";
|
|
35
35
|
import {
|
|
36
|
+
StoreDiskCoordinator,
|
|
36
37
|
agentManager,
|
|
37
38
|
agentStore,
|
|
38
39
|
decryptValue,
|
|
@@ -43,18 +44,25 @@ import {
|
|
|
43
44
|
environmentStore,
|
|
44
45
|
extractEncryptedVariableSlots,
|
|
45
46
|
getEncryptionKey,
|
|
46
|
-
hasChangedSinceRead,
|
|
47
47
|
hasEncryptionKey,
|
|
48
48
|
isCiMode,
|
|
49
49
|
isEncryptedValue,
|
|
50
50
|
refsOfProjectId,
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
wasRead
|
|
54
|
-
} from "./chunk-2WXQIUVC.js";
|
|
51
|
+
serviceStore
|
|
52
|
+
} from "./chunk-XTLQOYLT.js";
|
|
55
53
|
import {
|
|
56
54
|
settingsManager
|
|
57
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-NIU3CN5A.js";
|
|
56
|
+
import {
|
|
57
|
+
atomicWriteJsonSecure,
|
|
58
|
+
atomicWriteSecure,
|
|
59
|
+
fingerprintFiles,
|
|
60
|
+
hasChangedSinceRead,
|
|
61
|
+
readJsonFileSafe,
|
|
62
|
+
rememberFile,
|
|
63
|
+
resolveConversationRunDir,
|
|
64
|
+
wasRead
|
|
65
|
+
} from "./chunk-GL7WA5K3.js";
|
|
58
66
|
import {
|
|
59
67
|
AGENT_STOP_FETCH_TIMEOUT,
|
|
60
68
|
ApiKeysFileSchema,
|
|
@@ -77,7 +85,7 @@ import {
|
|
|
77
85
|
serviceUrlValues,
|
|
78
86
|
urlHostFor,
|
|
79
87
|
withDeprecatedAliases
|
|
80
|
-
} from "./chunk-
|
|
88
|
+
} from "./chunk-T2BV5WZE.js";
|
|
81
89
|
import {
|
|
82
90
|
allVaultRoots,
|
|
83
91
|
env,
|
|
@@ -205,8 +213,8 @@ import { initTRPC, TRPCError } from "@trpc/server";
|
|
|
205
213
|
|
|
206
214
|
// ../server/src/services/api-key-store.ts
|
|
207
215
|
import { randomBytes, randomUUID, timingSafeEqual } from "crypto";
|
|
208
|
-
import { readFile
|
|
209
|
-
import {
|
|
216
|
+
import { readFile } from "fs/promises";
|
|
217
|
+
import { join as join2 } from "path";
|
|
210
218
|
function maskApiKey(apiKey) {
|
|
211
219
|
const { key, ...rest } = apiKey;
|
|
212
220
|
return { ...rest, keyPreview: key.slice(-4) };
|
|
@@ -231,6 +239,15 @@ var ApiKeyStore = class {
|
|
|
231
239
|
*/
|
|
232
240
|
unreadable = /* @__PURE__ */ new Map();
|
|
233
241
|
loaded = false;
|
|
242
|
+
/**
|
|
243
|
+
* L'état du disque au dernier chargement — voir `ProjectStore.fingerprint`.
|
|
244
|
+
*
|
|
245
|
+
* Les clés d'un propriétaire tiennent dans un fichier unique, réécrit en
|
|
246
|
+
* entier à chaque sauvegarde : sans relecture, une seconde Runeya partageant
|
|
247
|
+
* cette racine machine efface la clé que la première vient de créer.
|
|
248
|
+
*/
|
|
249
|
+
fingerprint = "";
|
|
250
|
+
disk = new StoreDiskCoordinator();
|
|
234
251
|
/**
|
|
235
252
|
* Encrypted at rest, so the file sits beside the key that opens it — read
|
|
236
253
|
* under a different key it would decrypt to blanks, then be saved back blank.
|
|
@@ -252,16 +269,13 @@ var ApiKeyStore = class {
|
|
|
252
269
|
);
|
|
253
270
|
return;
|
|
254
271
|
}
|
|
255
|
-
await mkdir(dirname(path), { recursive: true });
|
|
256
272
|
const keys = Array.from(this.keys.values()).filter((k) => k.isPublic === isPublic && (this.owners.get(k.id) ?? null) === owner).map((k) => ({ ...k, key: encryptValue(k.key, owner ?? void 0) }));
|
|
257
273
|
for (const raw of this.unreadable.get(owner)?.values() ?? []) {
|
|
258
274
|
if (raw.isPublic === isPublic) keys.push(raw);
|
|
259
275
|
}
|
|
260
|
-
|
|
261
|
-
await writeFile(tmp, JSON.stringify({ keys }, null, 2), "utf-8");
|
|
262
|
-
await rename(tmp, path);
|
|
263
|
-
await chmod(path, 384);
|
|
276
|
+
await atomicWriteSecure(path, JSON.stringify({ keys }, null, 2));
|
|
264
277
|
await rememberFile(path);
|
|
278
|
+
this.fingerprint = await this.diskFingerprint();
|
|
265
279
|
}
|
|
266
280
|
/**
|
|
267
281
|
* Réécrire ce fichier pour chaque propriétaire connu.
|
|
@@ -269,10 +283,12 @@ var ApiKeyStore = class {
|
|
|
269
283
|
* Y compris ceux qui n'ont plus de clé : sinon une clé supprimée — ou dont le
|
|
270
284
|
* propriétaire a changé — survivrait dans son ancien coffre.
|
|
271
285
|
*/
|
|
272
|
-
|
|
273
|
-
|
|
286
|
+
persist(isPublic) {
|
|
287
|
+
return this.disk.save(async () => {
|
|
288
|
+
for (const owner of this.knownOwners) await this.persistFile(isPublic, owner);
|
|
289
|
+
});
|
|
274
290
|
}
|
|
275
|
-
async loadFile(path, owner) {
|
|
291
|
+
async loadFile(path, owner, into) {
|
|
276
292
|
try {
|
|
277
293
|
const raw = await readFile(path, "utf-8");
|
|
278
294
|
await rememberFile(path);
|
|
@@ -282,29 +298,49 @@ var ApiKeyStore = class {
|
|
|
282
298
|
for (const k of parsed.data.keys) {
|
|
283
299
|
try {
|
|
284
300
|
const key = isEncryptedValue(k.key) ? decryptValue(k.key, owner ?? void 0) : k.key;
|
|
285
|
-
|
|
286
|
-
|
|
301
|
+
into.keys.set(k.id, { ...k, key });
|
|
302
|
+
into.owners.set(k.id, owner);
|
|
287
303
|
} catch {
|
|
288
304
|
console.error(`[api-key-store] Cl\xE9 d'API ${k.id} illisible sous la cl\xE9 de ce coffre \u2014 conserv\xE9e telle quelle sur le disque`);
|
|
289
|
-
const bucket =
|
|
305
|
+
const bucket = into.unreadable.get(owner) ?? /* @__PURE__ */ new Map();
|
|
290
306
|
bucket.set(k.id, k);
|
|
291
|
-
|
|
307
|
+
into.unreadable.set(owner, bucket);
|
|
292
308
|
}
|
|
293
309
|
}
|
|
294
310
|
}
|
|
295
311
|
} catch {
|
|
296
312
|
}
|
|
297
313
|
}
|
|
298
|
-
/**
|
|
299
|
-
async
|
|
300
|
-
if (this.loaded) return;
|
|
301
|
-
this.loaded = true;
|
|
302
|
-
this.unreadable.clear();
|
|
314
|
+
/** Tous les fichiers de clés du disque : ceux de la machine et des coffres. */
|
|
315
|
+
async sourcePaths() {
|
|
303
316
|
const owners = [null, ...await listOrgVaults()];
|
|
317
|
+
const paths = [];
|
|
304
318
|
for (const owner of owners) {
|
|
305
|
-
|
|
306
|
-
await this.loadFile(await this.filePath(false, owner), owner);
|
|
319
|
+
paths.push(await this.filePath(true, owner), await this.filePath(false, owner));
|
|
307
320
|
}
|
|
321
|
+
return paths;
|
|
322
|
+
}
|
|
323
|
+
async diskFingerprint() {
|
|
324
|
+
return fingerprintFiles(await this.sourcePaths());
|
|
325
|
+
}
|
|
326
|
+
/** La machine, puis chaque organisation dont un coffre existe sur ce disque. */
|
|
327
|
+
async load() {
|
|
328
|
+
await this.disk.load(async () => {
|
|
329
|
+
const fingerprint = await this.diskFingerprint();
|
|
330
|
+
if (this.loaded && fingerprint === this.fingerprint) return null;
|
|
331
|
+
const next = { keys: /* @__PURE__ */ new Map(), owners: /* @__PURE__ */ new Map(), unreadable: /* @__PURE__ */ new Map() };
|
|
332
|
+
for (const owner of [null, ...await listOrgVaults()]) {
|
|
333
|
+
await this.loadFile(await this.filePath(true, owner), owner, next);
|
|
334
|
+
await this.loadFile(await this.filePath(false, owner), owner, next);
|
|
335
|
+
}
|
|
336
|
+
return () => {
|
|
337
|
+
this.keys = next.keys;
|
|
338
|
+
this.owners = next.owners;
|
|
339
|
+
this.unreadable = next.unreadable;
|
|
340
|
+
this.fingerprint = fingerprint;
|
|
341
|
+
this.loaded = true;
|
|
342
|
+
};
|
|
343
|
+
});
|
|
308
344
|
}
|
|
309
345
|
/**
|
|
310
346
|
* Oublier ce qui a été lu, pour tout relire sous la clé courante.
|
|
@@ -539,7 +575,7 @@ var DescriptionSchema = z2.string().max(2e3);
|
|
|
539
575
|
var OptionalProviderIdSchema = Id128Schema.optional();
|
|
540
576
|
|
|
541
577
|
// ../server/src/services/workspace-cwd.ts
|
|
542
|
-
import { isAbsolute, join as join3, dirname
|
|
578
|
+
import { isAbsolute, join as join3, dirname } from "path";
|
|
543
579
|
async function projectRoot(ref) {
|
|
544
580
|
const project = await projectStore.get(ref);
|
|
545
581
|
if (!project?.orgId) return null;
|
|
@@ -570,7 +606,7 @@ function anchor(base, raw) {
|
|
|
570
606
|
return join3(base, raw);
|
|
571
607
|
}
|
|
572
608
|
function localVaultRootParent() {
|
|
573
|
-
return
|
|
609
|
+
return dirname(localVaultRoot());
|
|
574
610
|
}
|
|
575
611
|
async function resolveAgentCwd(target) {
|
|
576
612
|
if (target.serviceId) {
|
|
@@ -598,8 +634,8 @@ async function resolveConversationCwd(conversationId) {
|
|
|
598
634
|
}
|
|
599
635
|
|
|
600
636
|
// ../server/src/services/environment-overrides-store.ts
|
|
601
|
-
import { readFile as readFile2, writeFile
|
|
602
|
-
import { dirname as
|
|
637
|
+
import { readFile as readFile2, writeFile, rename, mkdir, chmod } from "fs/promises";
|
|
638
|
+
import { dirname as dirname2, join as join4 } from "path";
|
|
603
639
|
var FILENAME = "environment-overrides.json";
|
|
604
640
|
var EnvironmentOverridesStore = class {
|
|
605
641
|
data = {};
|
|
@@ -632,7 +668,7 @@ var EnvironmentOverridesStore = class {
|
|
|
632
668
|
async rootFor(variableId) {
|
|
633
669
|
const root = await environmentStore.rootOfVariable(variableId);
|
|
634
670
|
if (root) return root;
|
|
635
|
-
return this.roots.get(variableId) ??
|
|
671
|
+
return this.roots.get(variableId) ?? dirname2(await keyedFilePath(FILENAME));
|
|
636
672
|
}
|
|
637
673
|
/** Where earlier versions kept them: read once, rewritten to their vaults. */
|
|
638
674
|
getLegacyFilePath() {
|
|
@@ -670,11 +706,11 @@ var EnvironmentOverridesStore = class {
|
|
|
670
706
|
parsed,
|
|
671
707
|
"environment-overrides",
|
|
672
708
|
(variableId) => this.unreadableSecrets.add(variableId),
|
|
673
|
-
vaultIdOfRoot(
|
|
709
|
+
vaultIdOfRoot(dirname2(path))
|
|
674
710
|
);
|
|
675
711
|
for (const [id, override] of Object.entries(decrypted)) {
|
|
676
712
|
this.data[id] = { value: override.value };
|
|
677
|
-
this.roots.set(id,
|
|
713
|
+
this.roots.set(id, dirname2(path));
|
|
678
714
|
}
|
|
679
715
|
}
|
|
680
716
|
}
|
|
@@ -709,12 +745,12 @@ var EnvironmentOverridesStore = class {
|
|
|
709
745
|
this.diskEncryptedSlots,
|
|
710
746
|
extractEncryptedVariableSlots(encrypted)
|
|
711
747
|
);
|
|
712
|
-
await
|
|
748
|
+
await mkdir(root, { recursive: true });
|
|
713
749
|
const path = join4(root, FILENAME);
|
|
714
750
|
const tmpPath = path + ".tmp";
|
|
715
|
-
await
|
|
716
|
-
await
|
|
717
|
-
await
|
|
751
|
+
await writeFile(tmpPath, JSON.stringify(encrypted, null, 2), "utf-8");
|
|
752
|
+
await rename(tmpPath, path);
|
|
753
|
+
await chmod(path, 384);
|
|
718
754
|
}
|
|
719
755
|
}
|
|
720
756
|
/**
|
|
@@ -2211,7 +2247,7 @@ import { z as z3 } from "zod";
|
|
|
2211
2247
|
import { TRPCError as TRPCError2 } from "@trpc/server";
|
|
2212
2248
|
|
|
2213
2249
|
// ../server/src/services/audit-service.ts
|
|
2214
|
-
import { appendFile, readFile as readFile3, stat, rename as
|
|
2250
|
+
import { appendFile, readFile as readFile3, stat, rename as rename2, unlink, readdir as readdir2, mkdir as mkdir2 } from "fs/promises";
|
|
2215
2251
|
var AUDIT_FILENAME = "audit.log";
|
|
2216
2252
|
var MAX_FILE_SIZE = 10 * 1024 * 1024;
|
|
2217
2253
|
var MAX_AGE_DAYS = 30;
|
|
@@ -2231,7 +2267,7 @@ var AuditService = class {
|
|
|
2231
2267
|
const line = JSON.stringify(record) + "\n";
|
|
2232
2268
|
const filepath = this.getFilePath();
|
|
2233
2269
|
try {
|
|
2234
|
-
await
|
|
2270
|
+
await mkdir2(machineRoot(), { recursive: true });
|
|
2235
2271
|
await appendFile(filepath, line, "utf-8");
|
|
2236
2272
|
await this.rotateIfNeeded();
|
|
2237
2273
|
} catch (err) {
|
|
@@ -2277,7 +2313,7 @@ var AuditService = class {
|
|
|
2277
2313
|
try {
|
|
2278
2314
|
const stats = await stat(filepath);
|
|
2279
2315
|
if (stats.size > MAX_FILE_SIZE) {
|
|
2280
|
-
await
|
|
2316
|
+
await rename2(filepath, this.getRotatedPath());
|
|
2281
2317
|
}
|
|
2282
2318
|
} catch {
|
|
2283
2319
|
}
|
|
@@ -2976,7 +3012,7 @@ function parse(text) {
|
|
|
2976
3012
|
return result;
|
|
2977
3013
|
}
|
|
2978
3014
|
function getClaudeUsage() {
|
|
2979
|
-
return new Promise((
|
|
3015
|
+
return new Promise((resolve2, reject) => {
|
|
2980
3016
|
const env2 = { ...process.env };
|
|
2981
3017
|
delete env2["CLAUDECODE"];
|
|
2982
3018
|
let claudeBin = "claude";
|
|
@@ -3009,7 +3045,7 @@ function getClaudeUsage() {
|
|
|
3009
3045
|
clearTimeout(hardTimeout);
|
|
3010
3046
|
term?.kill();
|
|
3011
3047
|
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", "");
|
|
3012
|
-
|
|
3048
|
+
resolve2(parse(clean));
|
|
3013
3049
|
}
|
|
3014
3050
|
const hardTimeout = setTimeout(() => {
|
|
3015
3051
|
if (!done) finish();
|
|
@@ -3143,7 +3179,7 @@ function parseCodexStatusText(text) {
|
|
|
3143
3179
|
return entries;
|
|
3144
3180
|
}
|
|
3145
3181
|
function getCodexUsageEntries() {
|
|
3146
|
-
return new Promise((
|
|
3182
|
+
return new Promise((resolve2, reject) => {
|
|
3147
3183
|
let term = null;
|
|
3148
3184
|
try {
|
|
3149
3185
|
const invocation = resolveCliInvocation("codex", []);
|
|
@@ -3174,7 +3210,7 @@ function getCodexUsageEntries() {
|
|
|
3174
3210
|
const debugClean = stripAnsi(buffer).slice(-6e3);
|
|
3175
3211
|
process.stdout.write("[codex-usage] raw tail:\n" + debugClean + "\n");
|
|
3176
3212
|
}
|
|
3177
|
-
|
|
3213
|
+
resolve2(parseCodexStatusText(buffer));
|
|
3178
3214
|
};
|
|
3179
3215
|
const hardTimeout = setTimeout(() => {
|
|
3180
3216
|
finish();
|
|
@@ -3377,44 +3413,8 @@ var ScenarioStore = class {
|
|
|
3377
3413
|
var scenarioStore = new ScenarioStore();
|
|
3378
3414
|
|
|
3379
3415
|
// ../server/src/services/scenario-run-store.ts
|
|
3380
|
-
import { mkdir as
|
|
3416
|
+
import { mkdir as mkdir3, rm, readFile as readFile4 } from "fs/promises";
|
|
3381
3417
|
import { join as join5 } from "path";
|
|
3382
|
-
|
|
3383
|
-
// ../server/src/services/run-store-utils.ts
|
|
3384
|
-
import { chmod as chmod3, mkdir as mkdir4, rename as rename4, writeFile as writeFile3, readFile as readFile4 } from "fs/promises";
|
|
3385
|
-
import { dirname as dirname4, resolve, sep } from "path";
|
|
3386
|
-
var SAFE_PATH_SEGMENT_RE = /^[a-zA-Z0-9][a-zA-Z0-9._-]{0,127}$/;
|
|
3387
|
-
function resolveConversationRunDir(rootDirName, conversationId) {
|
|
3388
|
-
if (!SAFE_PATH_SEGMENT_RE.test(conversationId)) {
|
|
3389
|
-
throw new Error("Invalid conversationId");
|
|
3390
|
-
}
|
|
3391
|
-
const base = resolve(machineRoot(), rootDirName);
|
|
3392
|
-
const dir = resolve(base, conversationId);
|
|
3393
|
-
if (!dir.startsWith(base + sep)) {
|
|
3394
|
-
throw new Error("Invalid conversationId");
|
|
3395
|
-
}
|
|
3396
|
-
return dir;
|
|
3397
|
-
}
|
|
3398
|
-
async function atomicWriteSecure(filePath, content) {
|
|
3399
|
-
await mkdir4(dirname4(filePath), { recursive: true });
|
|
3400
|
-
const tmpPath = `${filePath}.tmp`;
|
|
3401
|
-
await writeFile3(tmpPath, content, "utf-8");
|
|
3402
|
-
await rename4(tmpPath, filePath);
|
|
3403
|
-
await chmod3(filePath, 384);
|
|
3404
|
-
}
|
|
3405
|
-
async function atomicWriteJsonSecure(filePath, data, pretty = false) {
|
|
3406
|
-
await atomicWriteSecure(filePath, JSON.stringify(data, null, pretty ? 2 : 0));
|
|
3407
|
-
}
|
|
3408
|
-
async function readJsonFileSafe(filePath) {
|
|
3409
|
-
try {
|
|
3410
|
-
const raw = await readFile4(filePath, "utf-8");
|
|
3411
|
-
return JSON.parse(raw);
|
|
3412
|
-
} catch {
|
|
3413
|
-
return null;
|
|
3414
|
-
}
|
|
3415
|
-
}
|
|
3416
|
-
|
|
3417
|
-
// ../server/src/services/scenario-run-store.ts
|
|
3418
3418
|
function sanitizeSlug(value) {
|
|
3419
3419
|
return value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 60) || "member";
|
|
3420
3420
|
}
|
|
@@ -3430,7 +3430,7 @@ var ScenarioRunStore = class _ScenarioRunStore {
|
|
|
3430
3430
|
}
|
|
3431
3431
|
async initializeConversationWorkspace(conversationId, scenario, userInput) {
|
|
3432
3432
|
const dir = this.getRunDir(conversationId);
|
|
3433
|
-
await
|
|
3433
|
+
await mkdir3(dir, { recursive: true });
|
|
3434
3434
|
await this.saveScenarioSnapshot(conversationId, scenario);
|
|
3435
3435
|
const nodesById = new Map(scenario.nodes.map((p) => [p.id, p]));
|
|
3436
3436
|
const teamMap = new Map(scenario.groups.map((t2) => [t2.id, t2.name]));
|
|
@@ -3542,7 +3542,7 @@ ${userInput.trim() || "(empty)"}
|
|
|
3542
3542
|
if (!runState) return;
|
|
3543
3543
|
try {
|
|
3544
3544
|
const dir = this.getRunDir(conversationId);
|
|
3545
|
-
await
|
|
3545
|
+
await mkdir3(dir, { recursive: true });
|
|
3546
3546
|
const data = {
|
|
3547
3547
|
nodeStates: { ...runState.nodeStates },
|
|
3548
3548
|
nodeOutputs: { ...runState.nodeOutputs },
|
|
@@ -3561,7 +3561,7 @@ ${userInput.trim() || "(empty)"}
|
|
|
3561
3561
|
async readUserRequest(conversationId) {
|
|
3562
3562
|
try {
|
|
3563
3563
|
const dir = this.getRunDir(conversationId);
|
|
3564
|
-
const content = await
|
|
3564
|
+
const content = await readFile4(join5(dir, "USER_REQUEST.md"), "utf-8");
|
|
3565
3565
|
return content.replace(/^#\s*User request\s*\n+/, "").trim() || null;
|
|
3566
3566
|
} catch {
|
|
3567
3567
|
return null;
|
|
@@ -3570,14 +3570,14 @@ ${userInput.trim() || "(empty)"}
|
|
|
3570
3570
|
async readReadme(conversationId) {
|
|
3571
3571
|
try {
|
|
3572
3572
|
const dir = this.getRunDir(conversationId);
|
|
3573
|
-
return await
|
|
3573
|
+
return await readFile4(join5(dir, "README.md"), "utf-8");
|
|
3574
3574
|
} catch {
|
|
3575
3575
|
return null;
|
|
3576
3576
|
}
|
|
3577
3577
|
}
|
|
3578
3578
|
async saveScenarioSnapshot(conversationId, scenario) {
|
|
3579
3579
|
const dir = this.getRunDir(conversationId);
|
|
3580
|
-
await
|
|
3580
|
+
await mkdir3(dir, { recursive: true });
|
|
3581
3581
|
await atomicWriteJsonSecure(
|
|
3582
3582
|
join5(dir, _ScenarioRunStore.SCENARIO_SNAPSHOT_FILE),
|
|
3583
3583
|
scenario,
|
|
@@ -3641,9 +3641,9 @@ async function vaultOfProject(projectId) {
|
|
|
3641
3641
|
|
|
3642
3642
|
// ../server/src/services/image-storage.service.ts
|
|
3643
3643
|
import { randomUUID as randomUUID3 } from "crypto";
|
|
3644
|
-
import { mkdir as
|
|
3644
|
+
import { mkdir as mkdir4, writeFile as writeFile2, readFile as readFile5, unlink as unlink2, readdir as readdir3 } from "fs/promises";
|
|
3645
3645
|
import { existsSync as existsSync2 } from "fs";
|
|
3646
|
-
import { join as join6, extname, resolve
|
|
3646
|
+
import { join as join6, extname, resolve, sep } from "path";
|
|
3647
3647
|
var ALLOWED_MIME_TYPES = /* @__PURE__ */ new Set([
|
|
3648
3648
|
"image/png",
|
|
3649
3649
|
"image/jpeg",
|
|
@@ -3660,7 +3660,7 @@ var ImageStorageService = class {
|
|
|
3660
3660
|
this.dir = dir;
|
|
3661
3661
|
}
|
|
3662
3662
|
async ensureTmpDir() {
|
|
3663
|
-
await
|
|
3663
|
+
await mkdir4(this.dir, { recursive: true, mode: 448 });
|
|
3664
3664
|
}
|
|
3665
3665
|
async saveImage(buffer, originalName, mimeType, contextId) {
|
|
3666
3666
|
if (!ALLOWED_MIME_TYPES.has(mimeType)) {
|
|
@@ -3681,14 +3681,14 @@ var ImageStorageService = class {
|
|
|
3681
3681
|
const safeExt = ext.replace(/[^a-z.]/g, "");
|
|
3682
3682
|
const fileName = `${imageId}${safeExt}`;
|
|
3683
3683
|
const filePath = join6(this.dir, fileName);
|
|
3684
|
-
const resolvedPath =
|
|
3685
|
-
const resolvedDir =
|
|
3686
|
-
if (resolvedPath !== resolvedDir && !resolvedPath.startsWith(resolvedDir +
|
|
3684
|
+
const resolvedPath = resolve(filePath);
|
|
3685
|
+
const resolvedDir = resolve(this.dir);
|
|
3686
|
+
if (resolvedPath !== resolvedDir && !resolvedPath.startsWith(resolvedDir + sep)) {
|
|
3687
3687
|
throw new Error("Invalid file path");
|
|
3688
3688
|
}
|
|
3689
|
-
await
|
|
3689
|
+
await writeFile2(filePath, buffer, { mode: 384 });
|
|
3690
3690
|
const meta = { imageId, filePath, mimeType, originalName, createdAt: Date.now(), contextId };
|
|
3691
|
-
await
|
|
3691
|
+
await writeFile2(`${filePath}.meta.json`, JSON.stringify(meta), { encoding: "utf-8", mode: 384 });
|
|
3692
3692
|
return meta;
|
|
3693
3693
|
}
|
|
3694
3694
|
/**
|
|
@@ -3706,7 +3706,7 @@ var ImageStorageService = class {
|
|
|
3706
3706
|
const files = await readdir3(this.dir);
|
|
3707
3707
|
const metaFile = files.find((f) => f.startsWith(imageId) && f.endsWith(".meta.json"));
|
|
3708
3708
|
if (!metaFile) return null;
|
|
3709
|
-
const raw = JSON.parse(await
|
|
3709
|
+
const raw = JSON.parse(await readFile5(join6(this.dir, metaFile), "utf-8"));
|
|
3710
3710
|
if (expectedContextId !== void 0 && raw.contextId !== expectedContextId) return null;
|
|
3711
3711
|
if (!existsSync2(raw.filePath)) return null;
|
|
3712
3712
|
return { filePath: raw.filePath, mimeType: raw.mimeType, contextId: raw.contextId };
|
|
@@ -3732,7 +3732,7 @@ var ImageStorageService = class {
|
|
|
3732
3732
|
await Promise.all(
|
|
3733
3733
|
files.filter((f) => f.endsWith(".meta.json")).map(async (file) => {
|
|
3734
3734
|
try {
|
|
3735
|
-
const raw = JSON.parse(await
|
|
3735
|
+
const raw = JSON.parse(await readFile5(join6(this.dir, file), "utf-8"));
|
|
3736
3736
|
if (raw.contextId === contextId) {
|
|
3737
3737
|
await unlink2(raw.filePath).catch(() => {
|
|
3738
3738
|
});
|
|
@@ -3747,7 +3747,7 @@ var ImageStorageService = class {
|
|
|
3747
3747
|
async readImageAsBase64(imageId, expectedContextId) {
|
|
3748
3748
|
const result = await this.getImagePath(imageId, expectedContextId);
|
|
3749
3749
|
if (!result) return null;
|
|
3750
|
-
const buffer = await
|
|
3750
|
+
const buffer = await readFile5(result.filePath);
|
|
3751
3751
|
return { base64: buffer.toString("base64"), mimeType: result.mimeType };
|
|
3752
3752
|
}
|
|
3753
3753
|
async listExpiredImages(ttlMs = IMAGE_TTL_MS) {
|
|
@@ -3762,7 +3762,7 @@ var ImageStorageService = class {
|
|
|
3762
3762
|
for (const file of files) {
|
|
3763
3763
|
if (!file.endsWith(".meta.json")) continue;
|
|
3764
3764
|
try {
|
|
3765
|
-
const raw = JSON.parse(await
|
|
3765
|
+
const raw = JSON.parse(await readFile5(join6(this.dir, file), "utf-8"));
|
|
3766
3766
|
if (now - raw.createdAt > ttlMs) expired.push(raw);
|
|
3767
3767
|
} catch {
|
|
3768
3768
|
}
|
|
@@ -3773,7 +3773,7 @@ var ImageStorageService = class {
|
|
|
3773
3773
|
var _singleton;
|
|
3774
3774
|
function getSingleton() {
|
|
3775
3775
|
if (!_singleton) {
|
|
3776
|
-
_singleton = new ImageStorageService(
|
|
3776
|
+
_singleton = new ImageStorageService(resolve(machineRoot(), "images"));
|
|
3777
3777
|
}
|
|
3778
3778
|
return _singleton;
|
|
3779
3779
|
}
|
|
@@ -3831,8 +3831,8 @@ import { basename } from "path";
|
|
|
3831
3831
|
import { TRPCError as TRPCError3 } from "@trpc/server";
|
|
3832
3832
|
|
|
3833
3833
|
// ../server/src/services/cloud-session-store.ts
|
|
3834
|
-
import { readFile as
|
|
3835
|
-
import { dirname as
|
|
3834
|
+
import { readFile as readFile6, writeFile as writeFile3, rename as rename3, mkdir as mkdir5, chmod as chmod2, unlink as unlink3 } from "fs/promises";
|
|
3835
|
+
import { dirname as dirname3 } from "path";
|
|
3836
3836
|
import { randomBytes as randomBytes2, createHash, timingSafeEqual as timingSafeEqual2 } from "crypto";
|
|
3837
3837
|
var FILENAME2 = "cloud-session.json";
|
|
3838
3838
|
var STATE_TTL_MS = 5 * 60 * 1e3;
|
|
@@ -3863,9 +3863,9 @@ var CloudSessionStore = class {
|
|
|
3863
3863
|
*/
|
|
3864
3864
|
async readFromDisk() {
|
|
3865
3865
|
try {
|
|
3866
|
-
return await
|
|
3866
|
+
return await readFile6(await this.getFilePath(), "utf-8");
|
|
3867
3867
|
} catch {
|
|
3868
|
-
return
|
|
3868
|
+
return readFile6(this.getLegacyFilePath(), "utf-8");
|
|
3869
3869
|
}
|
|
3870
3870
|
}
|
|
3871
3871
|
/**
|
|
@@ -3939,12 +3939,12 @@ var CloudSessionStore = class {
|
|
|
3939
3939
|
}
|
|
3940
3940
|
async save() {
|
|
3941
3941
|
const filePath = await this.getFilePath();
|
|
3942
|
-
await
|
|
3942
|
+
await mkdir5(dirname3(filePath), { recursive: true });
|
|
3943
3943
|
const payload = { version: 2, accounts: this.accounts };
|
|
3944
3944
|
const tmpPath = filePath + ".tmp";
|
|
3945
|
-
await
|
|
3946
|
-
await
|
|
3947
|
-
await
|
|
3945
|
+
await writeFile3(tmpPath, JSON.stringify(payload, null, 2), "utf-8");
|
|
3946
|
+
await rename3(tmpPath, filePath);
|
|
3947
|
+
await chmod2(filePath, 384);
|
|
3948
3948
|
}
|
|
3949
3949
|
/**
|
|
3950
3950
|
* Ranger le token obtenu par l'échange de jeton à usage unique.
|
|
@@ -4080,7 +4080,7 @@ var cloudSessionStore = new CloudSessionStore();
|
|
|
4080
4080
|
|
|
4081
4081
|
// ../server/src/services/lan-mode.ts
|
|
4082
4082
|
import { networkInterfaces } from "os";
|
|
4083
|
-
import { readFile as
|
|
4083
|
+
import { readFile as readFile7, writeFile as writeFile4, rename as rename4, mkdir as mkdir6 } from "fs/promises";
|
|
4084
4084
|
import { join as join7 } from "path";
|
|
4085
4085
|
import { z as z4 } from "zod";
|
|
4086
4086
|
var LOOPBACK2 = "127.0.0.1";
|
|
@@ -4098,7 +4098,7 @@ function networkFilePath() {
|
|
|
4098
4098
|
}
|
|
4099
4099
|
async function readFileState() {
|
|
4100
4100
|
try {
|
|
4101
|
-
return NetworkFileSchema.parse(JSON.parse(await
|
|
4101
|
+
return NetworkFileSchema.parse(JSON.parse(await readFile7(networkFilePath(), "utf-8")));
|
|
4102
4102
|
} catch {
|
|
4103
4103
|
return { instances: {} };
|
|
4104
4104
|
}
|
|
@@ -4109,13 +4109,13 @@ async function readPersisted() {
|
|
|
4109
4109
|
}
|
|
4110
4110
|
async function writePersisted(lanEnabled) {
|
|
4111
4111
|
const root = machineRoot();
|
|
4112
|
-
await
|
|
4112
|
+
await mkdir6(root, { recursive: true });
|
|
4113
4113
|
const state = await readFileState();
|
|
4114
4114
|
state.instances[instanceKey()] = { lanEnabled };
|
|
4115
4115
|
const filePath = networkFilePath();
|
|
4116
4116
|
const tmpPath = filePath + ".tmp";
|
|
4117
|
-
await
|
|
4118
|
-
await
|
|
4117
|
+
await writeFile4(tmpPath, JSON.stringify(state, null, 2), "utf-8");
|
|
4118
|
+
await rename4(tmpPath, filePath);
|
|
4119
4119
|
}
|
|
4120
4120
|
function registerHttpServer(server) {
|
|
4121
4121
|
httpServer = server;
|
|
@@ -4153,14 +4153,14 @@ async function rebind(host, previousHost) {
|
|
|
4153
4153
|
const server = httpServer;
|
|
4154
4154
|
if (!server?.listening) return;
|
|
4155
4155
|
const port = currentPort();
|
|
4156
|
-
const listenOn = (target) => new Promise((
|
|
4156
|
+
const listenOn = (target) => new Promise((resolve2, reject) => {
|
|
4157
4157
|
const onError = (err) => {
|
|
4158
4158
|
server.removeListener("listening", onListening);
|
|
4159
4159
|
reject(err);
|
|
4160
4160
|
};
|
|
4161
4161
|
const onListening = () => {
|
|
4162
4162
|
server.removeListener("error", onError);
|
|
4163
|
-
|
|
4163
|
+
resolve2();
|
|
4164
4164
|
};
|
|
4165
4165
|
server.once("error", onError);
|
|
4166
4166
|
server.once("listening", onListening);
|
|
@@ -5248,12 +5248,12 @@ function tailTranscript(opts) {
|
|
|
5248
5248
|
const poll = setInterval(() => {
|
|
5249
5249
|
void readMore();
|
|
5250
5250
|
}, 500);
|
|
5251
|
-
await new Promise((
|
|
5251
|
+
await new Promise((resolve2) => {
|
|
5252
5252
|
const tick = setInterval(() => {
|
|
5253
5253
|
if (stopped) {
|
|
5254
5254
|
clearInterval(tick);
|
|
5255
5255
|
clearInterval(poll);
|
|
5256
|
-
|
|
5256
|
+
resolve2();
|
|
5257
5257
|
}
|
|
5258
5258
|
}, 100);
|
|
5259
5259
|
});
|
|
@@ -5272,7 +5272,7 @@ function tailTranscript(opts) {
|
|
|
5272
5272
|
|
|
5273
5273
|
// ../server/src/services/ai-runners/claude-pty-runner.ts
|
|
5274
5274
|
async function getAgentManager() {
|
|
5275
|
-
const { agentManager: agentManager2 } = await import("./agent-manager-
|
|
5275
|
+
const { agentManager: agentManager2 } = await import("./agent-manager-BSPEFZKZ.js");
|
|
5276
5276
|
return agentManager2;
|
|
5277
5277
|
}
|
|
5278
5278
|
function buildPtyArgs(params, sessionId, opts) {
|
|
@@ -5347,7 +5347,7 @@ async function runClaudeViaPty(params) {
|
|
|
5347
5347
|
return a;
|
|
5348
5348
|
});
|
|
5349
5349
|
params.onCommand?.(`claude ${displayArgs.join(" ")}`);
|
|
5350
|
-
return new Promise((
|
|
5350
|
+
return new Promise((resolve2, reject) => {
|
|
5351
5351
|
let settled = false;
|
|
5352
5352
|
let spawnId = null;
|
|
5353
5353
|
const state = { assistantText: "", tools: /* @__PURE__ */ new Map() };
|
|
@@ -5370,7 +5370,7 @@ async function runClaudeViaPty(params) {
|
|
|
5370
5370
|
settled = true;
|
|
5371
5371
|
cleanup();
|
|
5372
5372
|
void killSpawn();
|
|
5373
|
-
|
|
5373
|
+
resolve2(result);
|
|
5374
5374
|
};
|
|
5375
5375
|
const fail = (err) => {
|
|
5376
5376
|
if (settled) return;
|
|
@@ -5694,7 +5694,7 @@ var ClaudeCodeRunner = class {
|
|
|
5694
5694
|
runLocal(params) {
|
|
5695
5695
|
const { signal, skipTokenInstructions } = params;
|
|
5696
5696
|
const { args, env: env2, stdinData, sessionArg, hasImages: _hasImages } = buildClaudeSpawnConfig(params);
|
|
5697
|
-
return new Promise((
|
|
5697
|
+
return new Promise((resolve2, reject) => {
|
|
5698
5698
|
const totalArgSize = args.reduce((s, a) => s + a.length + 1, 0);
|
|
5699
5699
|
console.log(`[claude-code-runner] arg size: ${totalArgSize} bytes (${(totalArgSize / 1024 / 1024).toFixed(2)} MB), session: ${sessionArg.join(" ")}, images: ${params.images?.length ?? 0}`);
|
|
5700
5700
|
const displayArgs = args.map((a) => {
|
|
@@ -5738,7 +5738,7 @@ var ClaudeCodeRunner = class {
|
|
|
5738
5738
|
});
|
|
5739
5739
|
proc.on("close", (code) => {
|
|
5740
5740
|
if (ctx.earlyResult) {
|
|
5741
|
-
|
|
5741
|
+
resolve2({ ...ctx.earlyResult, actualSessionId: streamState.actualSessionId });
|
|
5742
5742
|
return;
|
|
5743
5743
|
}
|
|
5744
5744
|
signal.removeEventListener("abort", onAbort);
|
|
@@ -5755,7 +5755,7 @@ var ClaudeCodeRunner = class {
|
|
|
5755
5755
|
return;
|
|
5756
5756
|
}
|
|
5757
5757
|
const { status, message, branchChoice } = skipTokenInstructions ? { status: "none", message: "", branchChoice: void 0 } : parseEndToken(streamState.fullContent);
|
|
5758
|
-
|
|
5758
|
+
resolve2({ output: streamState.fullContent, tokenStatus: status, tokenMessage: message, branchChoice, actualSessionId: streamState.actualSessionId });
|
|
5759
5759
|
});
|
|
5760
5760
|
proc.on("error", (err) => {
|
|
5761
5761
|
if (ctx.settled) return;
|
|
@@ -5832,12 +5832,12 @@ var CodexAppServerClient = class extends EventEmitter {
|
|
|
5832
5832
|
if (forceId !== void 0 && forceId >= this.nextId) {
|
|
5833
5833
|
this.nextId = forceId + 1;
|
|
5834
5834
|
}
|
|
5835
|
-
return new Promise((
|
|
5835
|
+
return new Promise((resolve2, reject) => {
|
|
5836
5836
|
const timer = setTimeout(() => {
|
|
5837
5837
|
this.pending.delete(id);
|
|
5838
5838
|
reject(new Error(`Request ${method} (id=${id}) timed out after ${this.requestTimeoutMs}ms`));
|
|
5839
5839
|
}, this.requestTimeoutMs);
|
|
5840
|
-
this.pending.set(id, { resolve:
|
|
5840
|
+
this.pending.set(id, { resolve: resolve2, reject, timer });
|
|
5841
5841
|
this.writeLine({ jsonrpc: "2.0", method, id, params: params ?? {} });
|
|
5842
5842
|
});
|
|
5843
5843
|
}
|
|
@@ -5869,8 +5869,8 @@ var CodexAppServerClient = class extends EventEmitter {
|
|
|
5869
5869
|
this.rl = null;
|
|
5870
5870
|
const proc = this.proc;
|
|
5871
5871
|
this.proc = null;
|
|
5872
|
-
return new Promise((
|
|
5873
|
-
proc.on("exit", () =>
|
|
5872
|
+
return new Promise((resolve2) => {
|
|
5873
|
+
proc.on("exit", () => resolve2());
|
|
5874
5874
|
proc.kill("SIGTERM");
|
|
5875
5875
|
const forceTimer = setTimeout(() => {
|
|
5876
5876
|
proc.kill("SIGKILL");
|
|
@@ -5964,7 +5964,7 @@ async function shutdownCodexAppServer() {
|
|
|
5964
5964
|
}
|
|
5965
5965
|
}
|
|
5966
5966
|
async function getAgentManager2() {
|
|
5967
|
-
const { agentManager: agentManager2 } = await import("./agent-manager-
|
|
5967
|
+
const { agentManager: agentManager2 } = await import("./agent-manager-BSPEFZKZ.js");
|
|
5968
5968
|
return agentManager2;
|
|
5969
5969
|
}
|
|
5970
5970
|
function parseRuneyaCurlCommand(command) {
|
|
@@ -6082,7 +6082,7 @@ ${prompt}`;
|
|
|
6082
6082
|
}
|
|
6083
6083
|
input.push({ type: "text", text: fullPrompt });
|
|
6084
6084
|
const turnRef = { id: null };
|
|
6085
|
-
return new Promise((
|
|
6085
|
+
return new Promise((resolve2, reject) => {
|
|
6086
6086
|
let settled = false;
|
|
6087
6087
|
let fullContent = "";
|
|
6088
6088
|
let thinkingEmitted = false;
|
|
@@ -6131,7 +6131,7 @@ ${prompt}`;
|
|
|
6131
6131
|
params.onDelta(delta);
|
|
6132
6132
|
const { status, message, branchChoice } = parseEndToken(fullContent);
|
|
6133
6133
|
if (status !== "none") {
|
|
6134
|
-
settle(() =>
|
|
6134
|
+
settle(() => resolve2({ output: fullContent, tokenStatus: status, tokenMessage: message, branchChoice }));
|
|
6135
6135
|
}
|
|
6136
6136
|
}
|
|
6137
6137
|
} else if (method === "item/reasoning/summaryTextDelta" || method === "item/reasoning/textDelta") {
|
|
@@ -6205,7 +6205,7 @@ ${prompt}`;
|
|
|
6205
6205
|
return;
|
|
6206
6206
|
}
|
|
6207
6207
|
const { status, message, branchChoice } = parseEndToken(fullContent);
|
|
6208
|
-
settle(() =>
|
|
6208
|
+
settle(() => resolve2({ output: fullContent, tokenStatus: status, tokenMessage: message, branchChoice }));
|
|
6209
6209
|
} else if (method === "turn/errored") {
|
|
6210
6210
|
const error = p["error"];
|
|
6211
6211
|
const msg = typeof error?.["message"] === "string" ? error["message"] : "Codex turn errored";
|
|
@@ -6282,7 +6282,7 @@ ${prompt}`;
|
|
|
6282
6282
|
sandboxPolicy: { type: "dangerFullAccess" }
|
|
6283
6283
|
});
|
|
6284
6284
|
const turnId = turnRes.turn.id;
|
|
6285
|
-
return new Promise((
|
|
6285
|
+
return new Promise((resolve2, reject) => {
|
|
6286
6286
|
let settled = false;
|
|
6287
6287
|
let fullContent = "";
|
|
6288
6288
|
let thinkingEmitted = false;
|
|
@@ -6308,7 +6308,7 @@ ${prompt}`;
|
|
|
6308
6308
|
params.onDelta(delta);
|
|
6309
6309
|
const { status, message, branchChoice } = parseEndToken(fullContent);
|
|
6310
6310
|
if (status !== "none") {
|
|
6311
|
-
settle(() =>
|
|
6311
|
+
settle(() => resolve2({ output: fullContent, tokenStatus: status, tokenMessage: message, branchChoice }));
|
|
6312
6312
|
}
|
|
6313
6313
|
}
|
|
6314
6314
|
} else if (method === "item/reasoning/summaryTextDelta" || method === "item/reasoning/textDelta") {
|
|
@@ -6382,7 +6382,7 @@ ${prompt}`;
|
|
|
6382
6382
|
return;
|
|
6383
6383
|
}
|
|
6384
6384
|
const { status, message, branchChoice } = parseEndToken(fullContent);
|
|
6385
|
-
settle(() =>
|
|
6385
|
+
settle(() => resolve2({ output: fullContent, tokenStatus: status, tokenMessage: message, branchChoice }));
|
|
6386
6386
|
} else if (method === "turn/errored") {
|
|
6387
6387
|
const error = p["error"];
|
|
6388
6388
|
const msg = typeof error?.["message"] === "string" ? error["message"] : "Codex turn errored";
|
|
@@ -6843,14 +6843,14 @@ var chatRouter = router({
|
|
|
6843
6843
|
const initial = (await conversationStore.list()).filter(belongs);
|
|
6844
6844
|
yield { type: "initial", conversations: initial };
|
|
6845
6845
|
const queue = [];
|
|
6846
|
-
let
|
|
6846
|
+
let resolve2 = null;
|
|
6847
6847
|
const handler = (event) => {
|
|
6848
6848
|
if (event.type !== "deleted" && event.type !== "reloaded" && !belongs(event.conversation)) return;
|
|
6849
6849
|
if (queue.length >= 500) queue.shift();
|
|
6850
6850
|
queue.push(event);
|
|
6851
|
-
if (
|
|
6852
|
-
|
|
6853
|
-
|
|
6851
|
+
if (resolve2) {
|
|
6852
|
+
resolve2();
|
|
6853
|
+
resolve2 = null;
|
|
6854
6854
|
}
|
|
6855
6855
|
};
|
|
6856
6856
|
conversationStore.onChanged(handler);
|
|
@@ -6865,7 +6865,7 @@ var chatRouter = router({
|
|
|
6865
6865
|
yield event;
|
|
6866
6866
|
} else {
|
|
6867
6867
|
await new Promise((r) => {
|
|
6868
|
-
|
|
6868
|
+
resolve2 = r;
|
|
6869
6869
|
});
|
|
6870
6870
|
}
|
|
6871
6871
|
}
|
|
@@ -7008,13 +7008,13 @@ var chatRouter = router({
|
|
|
7008
7008
|
onCompanionThinking: protectedProcedure.subscription(async function* () {
|
|
7009
7009
|
const snapshot = () => ({ thinking: companionThinkingIds(), skipped: companionSkips() });
|
|
7010
7010
|
const queue = [snapshot()];
|
|
7011
|
-
let
|
|
7011
|
+
let resolve2 = null;
|
|
7012
7012
|
const handler = () => {
|
|
7013
7013
|
if (queue.length >= 50) queue.shift();
|
|
7014
7014
|
queue.push(snapshot());
|
|
7015
|
-
if (
|
|
7016
|
-
|
|
7017
|
-
|
|
7015
|
+
if (resolve2) {
|
|
7016
|
+
resolve2();
|
|
7017
|
+
resolve2 = null;
|
|
7018
7018
|
}
|
|
7019
7019
|
};
|
|
7020
7020
|
const unsubscribe = onCompanionThinkingChanged(handler);
|
|
@@ -7022,7 +7022,7 @@ var chatRouter = router({
|
|
|
7022
7022
|
while (true) {
|
|
7023
7023
|
if (queue.length > 0) yield queue.shift();
|
|
7024
7024
|
else await new Promise((r) => {
|
|
7025
|
-
|
|
7025
|
+
resolve2 = r;
|
|
7026
7026
|
});
|
|
7027
7027
|
}
|
|
7028
7028
|
} finally {
|
|
@@ -7719,7 +7719,7 @@ Context:
|
|
|
7719
7719
|
const tSub = Date.now();
|
|
7720
7720
|
let firstChunk = true;
|
|
7721
7721
|
const queue = [];
|
|
7722
|
-
let
|
|
7722
|
+
let resolve2 = null;
|
|
7723
7723
|
let stopped = false;
|
|
7724
7724
|
const unsub = agentManager.agentSubscribe(
|
|
7725
7725
|
agentId,
|
|
@@ -7733,16 +7733,16 @@ Context:
|
|
|
7733
7733
|
const item = data;
|
|
7734
7734
|
if (typeof item.chunk?.data === "string") observePtyChunk(input.spawnId, item.chunk.data);
|
|
7735
7735
|
queue.push(item);
|
|
7736
|
-
if (
|
|
7737
|
-
|
|
7738
|
-
|
|
7736
|
+
if (resolve2) {
|
|
7737
|
+
resolve2();
|
|
7738
|
+
resolve2 = null;
|
|
7739
7739
|
}
|
|
7740
7740
|
},
|
|
7741
7741
|
() => {
|
|
7742
7742
|
stopped = true;
|
|
7743
|
-
if (
|
|
7744
|
-
|
|
7745
|
-
|
|
7743
|
+
if (resolve2) {
|
|
7744
|
+
resolve2();
|
|
7745
|
+
resolve2 = null;
|
|
7746
7746
|
}
|
|
7747
7747
|
}
|
|
7748
7748
|
);
|
|
@@ -7759,7 +7759,7 @@ Context:
|
|
|
7759
7759
|
}
|
|
7760
7760
|
if (stopped) break;
|
|
7761
7761
|
await new Promise((r) => {
|
|
7762
|
-
|
|
7762
|
+
resolve2 = r;
|
|
7763
7763
|
});
|
|
7764
7764
|
}
|
|
7765
7765
|
} finally {
|
|
@@ -7983,8 +7983,6 @@ export {
|
|
|
7983
7983
|
OptionalProviderIdSchema,
|
|
7984
7984
|
generateLlmsTxt,
|
|
7985
7985
|
scenarioStore,
|
|
7986
|
-
resolveConversationRunDir,
|
|
7987
|
-
atomicWriteSecure,
|
|
7988
7986
|
scenarioRunStore,
|
|
7989
7987
|
OPENAI_COMPAT_BASE_URLS,
|
|
7990
7988
|
DEFAULT_MODELS,
|
|
@@ -8008,4 +8006,4 @@ export {
|
|
|
8008
8006
|
startCliSession,
|
|
8009
8007
|
chatRouter
|
|
8010
8008
|
};
|
|
8011
|
-
//# sourceMappingURL=chunk-
|
|
8009
|
+
//# sourceMappingURL=chunk-BVBK2WII.js.map
|