@runeya/runeya 2.0.56 → 2.0.58
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agent/index.js +154 -103
- package/agent/index.js.map +1 -1
- package/agent-manager-EDFP4VXP.js +7 -0
- package/assets/icon.icns +0 -0
- package/assets/icon.ico +0 -0
- package/assets/icon.png +0 -0
- package/assets/icon.svg +5 -0
- package/{chunk-Q2WY6PYX.js → chunk-NLVDO4EC.js} +180 -10
- package/chunk-NLVDO4EC.js.map +1 -0
- package/chunk-O2KOX4LU.js +66 -0
- package/chunk-O2KOX4LU.js.map +1 -0
- package/desktop-launcher-TM7AABMC.js +256 -0
- package/desktop-launcher-TM7AABMC.js.map +1 -0
- package/desktop-wizard-4CYANX2O.js +209 -0
- package/desktop-wizard-4CYANX2O.js.map +1 -0
- package/free-port-565NMFIZ.js +13 -0
- package/free-port-565NMFIZ.js.map +1 -0
- package/index.js +101 -2
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/{src-WCSXKTXA.js → src-V3J62F6F.js} +2976 -2474
- package/src-V3J62F6F.js.map +1 -0
- package/startup-failure-FOO7BLHD.js +180 -0
- package/startup-failure-FOO7BLHD.js.map +1 -0
- package/web/assets/AgentScalarChatInterface.vue-EIqnE2D0.js +13 -0
- package/web/assets/AgentTerminalPage-5kH1RTj6.js +1 -0
- package/web/assets/AiChatPage-DvPM0b-g.js +1 -0
- package/web/assets/AppLayout-CxU9x6en.js +1 -0
- package/web/assets/{AppLayout-CDh-jiJ3.css → AppLayout-Dj8YOvMQ.css} +1 -1
- package/web/assets/AuditPage-BrqreO8a.js +1 -0
- package/web/assets/CloudAccountPage-CzUpIjdc.js +1 -0
- package/web/assets/CloudAccountPage-DRcN1jNp.css +1 -0
- package/web/assets/CloudAccountPage-DS3ZfENB.js +1 -0
- package/web/assets/CloudMessagingPage-D8gBnkFY.js +2 -0
- package/web/assets/DashboardPage-BiskmF6R.js +1 -0
- package/web/assets/DirectoryPickerDialog-Bny02api.css +1 -0
- package/web/assets/DirectoryPickerDialog-CtKWj2hx.js +1 -0
- package/web/assets/{EditorIcon-CZLL1qox.js → EditorIcon-B58cXgvK.js} +2 -2
- package/web/assets/EnvironmentForm-DZXx9r78.js +108 -0
- package/web/assets/EnvironmentFormPage-Dl7pdkEM.js +1 -0
- package/web/assets/EnvironmentListPage-B0WX_Hq7.js +1 -0
- package/web/assets/KanbanBoardPage-CBJs26gZ.js +4 -0
- package/web/assets/KanbanListPage-Cz-tlLWA.js +1 -0
- package/web/assets/LaunchProjectPage-8SDkFiLE.js +1 -0
- package/web/assets/LaunchServicesPage-B-ncX3rd.js +1 -0
- package/web/assets/LogViewer-BJNqKt3I.js +3 -0
- package/web/assets/{ProcessControls-BKUKb6vL.js → ProcessControls-NA6_my0q.js} +1 -1
- package/web/assets/ProcessDetailPage-6galJRdd.js +1 -0
- package/web/assets/ProcessDetailPage-CFJfjneL.css +1 -0
- package/web/assets/{ProcessMetrics-4aaZekKw.js → ProcessMetrics-CUDjJ4s_.js} +2 -2
- package/web/assets/ProjectDetailPage-CLbj9ZT4.css +1 -0
- package/web/assets/ProjectDetailPage-DKHoFXjW.js +1 -0
- package/web/assets/ProjectListPage-C1xSP6Bq.js +1 -0
- package/web/assets/RandomJobTestPage-BAuT49yE.js +2 -0
- package/web/assets/ScenarioEditorPage-CROCV83A.js +14 -0
- package/web/assets/SendToChatDialog-BfaLVfzw.js +1 -0
- package/web/assets/ServiceControlsBar-DE0In-jH.js +1 -0
- package/web/assets/ServiceDetailPage-0iIv9RqU.js +2 -0
- package/web/assets/{ServiceDetailPage-BRg1byDZ.css → ServiceDetailPage-DDSyACSv.css} +1 -1
- package/web/assets/ServiceFormPage-D-tLX8jE.js +1 -0
- package/web/assets/SettingsPage-ClNw9uEA.js +2063 -0
- package/web/assets/{SettingsPage-BY3dG-wn.css → SettingsPage-ySsQCeYE.css} +1 -1
- package/web/assets/UnlockPage-flNU5Iky.js +1 -0
- package/web/assets/VariablesTable-BnCSYLD4.js +1 -0
- package/web/assets/VaultMigrationPage-BSv9anTA.js +1 -0
- package/web/assets/VersionBadge-zyKx_N_w.js +1 -0
- package/web/assets/WikiPage-C9Bruew6.js +1 -0
- package/web/assets/WikiView-BZZ5mybT.js +1 -0
- package/web/assets/add-scalar-classes-DZb8OCPH.js +387 -0
- package/web/assets/auth-errors-CU6pB2jP.js +1 -0
- package/web/assets/autocomplete-DGLJp6Xx.js +308 -0
- package/web/assets/{basic-shape-diamond.svg-DH2telU3.js → basic-shape-diamond.svg-D7lBpWcu.js} +1 -1
- package/web/assets/{basic-shape-hexagon.svg-CkFORYUC.js → basic-shape-hexagon.svg-BIDPqohs.js} +1 -1
- package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-BlV1CeJ6.js → basic-shape-primary-circle-ellipse-round.svg-iWUF3CNK.js} +1 -1
- package/web/assets/{basic-shape-primary-square-rectangle.svg-BaAO9T6a.js → basic-shape-primary-square-rectangle.svg-BQy8tY9i.js} +1 -1
- package/web/assets/{basic-shape-shield.svg-CAX-F0Ai.js → basic-shape-shield.svg-Dcov5U2N.js} +1 -1
- package/web/assets/{browser-DPOAuokj.js → browser-Dc4T6GL2.js} +1 -1
- package/web/assets/{browser-CgnxRAK6.js → browser-DrMkXWE3.js} +1 -1
- package/web/assets/{card-BinmfAW6.js → card-DADdd2-i.js} +2 -2
- package/web/assets/{checkbox-DRF4pbAa.js → checkbox-By0TwAz_.js} +3 -3
- package/web/assets/{chip-Dvt1MVQM.js → chip-W5HkUiZA.js} +2 -2
- package/web/assets/{client-BqPXDxC1.js → client-Be8SiY8s.js} +2 -2
- package/web/assets/cloud-chat.store-GKWq9kin.js +1 -0
- package/web/assets/cloud-session-CJ4n3dbT.js +1 -0
- package/web/assets/column-P4Yoqttz.js +907 -0
- package/web/assets/{computer-device-desktop-monitor.svg-CJMZ28bk.js → computer-device-desktop-monitor.svg-BjBC4Q_B.js} +1 -1
- package/web/assets/{computer-device-desktop.svg-BedAMKhR.js → computer-device-desktop.svg-C7H8X0sb.js} +1 -1
- package/web/assets/{computer-device-laptop.svg-DdhI-EdQ.js → computer-device-laptop.svg-GDU5987h.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-C5diuYjt.js → computer-device-mobile-phone-android-samsung-back.svg-BcWod8vA.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung.svg-DGHCufqU.js → computer-device-mobile-phone-android-samsung.svg-Cj58lY5g.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-CMWyPtt9.js → computer-device-mobile-phone-iphone-x-back.svg-CtJM7Ul_.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x.svg-BRy5W1In.js → computer-device-mobile-phone-iphone-x.svg-BiSi4riW.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet-touch.svg-BGnBo8Ih.js → computer-device-mobile-tablet-touch.svg-BAMVDwHH.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet.svg-xSg_XplW.js → computer-device-mobile-tablet.svg-quWU62em.js} +1 -1
- package/web/assets/{computer-device-network-ethernet-cat6.svg-hz-jiJFA.js → computer-device-network-ethernet-cat6.svg-eoCbNWkF.js} +1 -1
- package/web/assets/{computer-device-network-lan-www.svg-BF6NF79C.js → computer-device-network-lan-www.svg-AR5jmH9w.js} +1 -1
- package/web/assets/{computer-device-network-wifi-connection.svg-gwpaLcz6.js → computer-device-network-wifi-connection.svg-C3-i1o4I.js} +1 -1
- package/web/assets/{computer-device-network-wifi-router.svg-B4oSiJHk.js → computer-device-network-wifi-router.svg-D8_62H2U.js} +1 -1
- package/web/assets/{cssMode-HHg8IzQM.js → cssMode-CfDickSl.js} +1 -1
- package/web/assets/{divider-C5a--3VK.js → divider-DOwWKUnp.js} +2 -2
- package/web/assets/{ecology-science-erlenmeyer-flask.svg-DkoOes8O.js → ecology-science-erlenmeyer-flask.svg-bmj1315r.js} +1 -1
- package/web/assets/{fieldset-c3hO4nzt.js → fieldset-CM6GY5DX.js} +2 -2
- package/web/assets/{freemarker2-BJSUPPPz.js → freemarker2-B_0Gh4L-.js} +1 -1
- package/web/assets/{handlebars-BAY2_Hod.js → handlebars-D7Oha3sz.js} +1 -1
- package/web/assets/{html-CNW7z0dM.js → html-BDq-ql3l.js} +1 -1
- package/web/assets/{htmlMode-SpxSLWYn.js → htmlMode-DVuzX8LQ.js} +1 -1
- package/web/assets/{image-flash-lightning.svg-DzcaFZwQ.js → image-flash-lightning.svg-pdHiRywD.js} +1 -1
- package/web/assets/{image-picture-flower.svg-DbYkuhs0.js → image-picture-flower.svg-BJarIt4k.js} +1 -1
- package/web/assets/{index-BIjjyvxm.js → index-Dk3h9927.js} +282 -282
- package/web/assets/{interface-alert-exclamation-diamond.svg-VqQleX3x.js → interface-alert-exclamation-diamond.svg-CZUf0TtR.js} +1 -1
- package/web/assets/{interface-alert-exclamation-triangle-warning.svg-B4xCH3UD.js → interface-alert-exclamation-triangle-warning.svg-B1qbmOvN.js} +1 -1
- package/web/assets/{interface-alert-information-circle.svg-5k54XhJ-.js → interface-alert-information-circle.svg-DAH6I2Rk.js} +1 -1
- package/web/assets/{interface-award-crown.svg-BXVJGSgl.js → interface-award-crown.svg-Co-un_0E.js} +1 -1
- package/web/assets/{interface-bookmark.svg-D0afhfDQ.js → interface-bookmark-tag.svg-DCeSL4gX.js} +1 -1
- package/web/assets/{interface-bookmark-tag.svg-CBUeCBGD.js → interface-bookmark.svg-BoAQ5WAA.js} +1 -1
- package/web/assets/{interface-calendar-date-one.svg-CFO_cJx5.js → interface-calendar-date-one.svg-KM5TH_vj.js} +1 -1
- package/web/assets/{interface-content-book-open-pages.svg-D_VJNLAI.js → interface-content-book-open-pages.svg-2t-0H_Nl.js} +1 -1
- package/web/assets/{interface-content-book-page.svg-BxdaWR7b.js → interface-content-book-page.svg-Dx9U_5uo.js} +1 -1
- package/web/assets/{interface-content-file.svg-CCKgKAVi.js → interface-content-file.svg-CW_9AGDl.js} +1 -1
- package/web/assets/interface-content-folder.svg-C9_1n23c.js +1 -0
- package/web/assets/{interface-content-folder.svg-Dw0SKwbv.js → interface-content-folder.svg-DgU2KM8d.js} +1 -1
- package/web/assets/{interface-copy-clipboard.svg-Co7ESi9t.js → interface-copy-clipboard.svg-BXCY1wtO.js} +1 -1
- package/web/assets/{interface-edit-attachment.svg-DB4Fu5ck.js → interface-edit-attachment.svg-lJsBgdnd.js} +1 -1
- package/web/assets/{interface-edit-binocular.svg-DSEtWb7P.js → interface-edit-binocular.svg-N_us2_d_.js} +1 -1
- package/web/assets/{interface-edit-magic-wand.svg-Bh9JP-_u.js → interface-edit-magic-wand.svg-GlHpAoND.js} +1 -1
- package/web/assets/{interface-edit-tool-paint-roller.svg-DXODVJeW.js → interface-edit-tool-paint-roller.svg-B3s6tHLT.js} +1 -1
- package/web/assets/{interface-edit-tool-pencil.svg-gJSTl1EM.js → interface-edit-tool-pencil.svg-BhJltLPD.js} +1 -1
- package/web/assets/{interface-favorite-award.svg-Bv3Ditpr.js → interface-favorite-award.svg-CAC4qrCL.js} +1 -1
- package/web/assets/{interface-favorite-flag.svg-RU02g1Zi.js → interface-favorite-flag.svg-5dLI18uT.js} +1 -1
- package/web/assets/{interface-favorite-heart.svg-C9umX2vE.js → interface-favorite-heart.svg-DAWMqUS8.js} +1 -1
- package/web/assets/{interface-favorite-star.svg-CWsQ-mGb.js → interface-favorite-star.svg-C9DICFBb.js} +1 -1
- package/web/assets/{interface-favorite-stars-sparkles.svg-C5z_gPrX.js → interface-favorite-stars-sparkles.svg-zD5-a95u.js} +1 -1
- package/web/assets/{interface-hierarchy-flowchart.svg-CctM7HYF.js → interface-hierarchy-flowchart.svg-BzAAQM0v.js} +1 -1
- package/web/assets/{interface-home-house.svg-Cd6GJDkx.js → interface-home-house.svg-CB_mzszz.js} +1 -1
- package/web/assets/{interface-hyperlink.svg-RUZY_MPS.js → interface-hyperlink.svg-BUMVlOAE.js} +1 -1
- package/web/assets/{interface-lighting-brightness.svg-CoJei7Uh.js → interface-lighting-brightness.svg-wPXo2pZW.js} +1 -1
- package/web/assets/{interface-lock-closed.svg-DHBiQkRu.js → interface-lock-closed.svg-Qj4fLj5D.js} +1 -1
- package/web/assets/{interface-lock-open-unlock.svg-D9gUzkAe.js → interface-lock-open-unlock.svg-PaaFsUiU.js} +1 -1
- package/web/assets/{interface-login-key.svg-BGNkKSCc.js → interface-login-key.svg-By-IZ7EH.js} +1 -1
- package/web/assets/{interface-search.svg-a20xpUNh.js → interface-search.svg-D1s5Gsyk.js} +1 -1
- package/web/assets/{interface-setting-cog.svg-Du_6PHwV.js → interface-setting-cog.svg-BIjZVOwf.js} +1 -1
- package/web/assets/{interface-share-megaphone-bullhorn.svg-cUXjeKNG.js → interface-share-megaphone-bullhorn.svg-1oPoDdIL.js} +1 -1
- package/web/assets/{interface-share-rocket.svg-D5DY8-4Z.js → interface-share-rocket.svg-B07UdOH6.js} +1 -1
- package/web/assets/{interface-share-satellite.svg-CxZ9ENCv.js → interface-share-satellite.svg-AxSAr1JP.js} +1 -1
- package/web/assets/{interface-share-space-ship.svg-DxRCAuZe.js → interface-share-space-ship.svg-ghRJYkXG.js} +1 -1
- package/web/assets/{interface-share.svg-CJ86d8ve.js → interface-share.svg-jVvV5wf9.js} +1 -1
- package/web/assets/{interface-signal-square.svg-DaITtWso.js → interface-signal-square.svg-BB8KvxNI.js} +1 -1
- package/web/assets/{interface-time-clock-circle.svg-DOXyhrEi.js → interface-time-clock-circle.svg-Bt_vXLib.js} +1 -1
- package/web/assets/{interface-time-hour-glass.svg-DEzjXGhd.js → interface-time-hour-glass.svg-CqsWXDx3.js} +1 -1
- package/web/assets/{interface-users-multiple.svg-DuW2zZO9.js → interface-users-multiple.svg-DfZzhCkI.js} +1 -1
- package/web/assets/{interface-weather-moon.svg-CAJTRm96.js → interface-weather-moon.svg-B5X37fBl.js} +1 -1
- package/web/assets/{javascript-DoNH7W21.js → javascript-DWxMn_QC.js} +1 -1
- package/web/assets/{jsonMode-Ba_3RQUr.js → jsonMode-BWOZzM3d.js} +2 -2
- package/web/assets/{liquid-yqqVxQ3r.js → liquid-B0VtIwJX.js} +1 -1
- package/web/assets/{lspLanguageFeatures-DsNvNJOK.js → lspLanguageFeatures-DXFZNqLk.js} +3 -3
- package/web/assets/{mail-chat-bubble-square.svg-DxuFTrxl.js → mail-chat-bubble-square.svg-DVi8sPM-.js} +1 -1
- package/web/assets/{mail-send-email-paper-airplane.svg-fobU5Rru.js → mail-send-email-paper-airplane.svg-Dlk35rWL.js} +1 -1
- package/web/assets/{mail-send-envelope.svg-DjoyQmbK.js → mail-send-envelope.svg-DpEE06QS.js} +1 -1
- package/web/assets/{mdx-We_KeaPg.js → mdx-XjdLNHo4.js} +1 -1
- package/web/assets/{message-Cgzl10yY.js → message-TASaHoOx.js} +2 -2
- package/web/assets/{minus-CWad93a9.js → minus-BO9HwuhK.js} +2 -2
- package/web/assets/modal-B0K9qtIb.js +1 -0
- package/web/assets/modal-Dadfdblm.js +5 -0
- package/web/assets/{money-cashier-receipt.svg-Cd3vbq1N.js → money-cashier-receipt.svg-D3T1gdZO.js} +1 -1
- package/web/assets/{money-currency-dollar-pay.svg-q2PhWmHi.js → money-currency-dollar-pay.svg-RhoFWz8z.js} +1 -1
- package/web/assets/{money-graph-arrow-increase.svg-DFoTvPe7.js → money-graph-arrow-increase.svg-BENn1K5R.js} +1 -1
- package/web/assets/{money-graph-bar-chart-increase.svg-N1y-bW8g.js → money-graph-bar-chart-increase.svg-COGPwero.js} +1 -1
- package/web/assets/{multiselect-DlPZQWML.js → multiselect-QI9V-o7t.js} +3 -3
- package/web/assets/{nature-ecology-leaf.svg-B759TwbF.js → nature-ecology-leaf.svg-CyQJuX9P.js} +1 -1
- package/web/assets/{password-Bbkf0Avi.js → password-68lVUSdj.js} +4 -4
- package/web/assets/{phone-telephone.svg-BAjrImUz.js → phone-telephone.svg-Cp49xUlu.js} +1 -1
- package/web/assets/{plus-CSmkO4gT.js → plus-CtAUJUu2.js} +6 -6
- package/web/assets/process.store-DkO9CCEs.js +1 -0
- package/web/assets/{programming-bug.svg-C9yxLgbr.js → programming-bug.svg-DJCw-G7S.js} +1 -1
- package/web/assets/{programming-cloud.svg-Brnt7HfW.js → programming-cloud.svg-Dawch6nl.js} +1 -1
- package/web/assets/{programming-computer-database-server.svg-CA5tIDJ_.js → programming-computer-database-server.svg-wM3gh9nl.js} +1 -1
- package/web/assets/{programming-computer-database.svg-BJ_fk-M0.js → programming-computer-database.svg-B-CBQ4FN.js} +1 -1
- package/web/assets/{programming-module-four-layout.svg-DULdtPL4.js → programming-module-four-layout.svg-B8K3IYUP.js} +1 -1
- package/web/assets/{programming-module-three.svg-B1vBli33.js → programming-module-three.svg-BVHpxetj.js} +1 -1
- package/web/assets/{programming-module.svg-DpVKFxMS.js → programming-module.svg-CXID9wrd.js} +1 -1
- package/web/assets/{programming-script-code.svg-CTNuSx8y.js → programming-script-code.svg-lSz-9Xfp.js} +1 -1
- package/web/assets/{python-B0GPM7en.js → python-DL0o4ZFa.js} +1 -1
- package/web/assets/{razor-YCIzBEVM.js → razor-1T_DtFYV.js} +1 -1
- package/web/assets/router-BKOiPGCa.js +1 -0
- package/web/assets/settings-scope-DrVQNSTC.js +1 -0
- package/web/assets/settings.store-xvHd8xGI.js +1 -0
- package/web/assets/{shopping-cart.svg-DinVLM6s.js → shopping-cart.svg-TZA8HEQB.js} +1 -1
- package/web/assets/{shopping-gift-present.svg-CzHOD4sx.js → shopping-gift-present.svg-CRGiXfBk.js} +1 -1
- package/web/assets/{shopping-shipping-box-parcel-package.svg-Ct0cSZV2.js → shopping-shipping-box-parcel-package.svg-BuEMZoGf.js} +1 -1
- package/web/assets/src-Be-L2-AH.js +1 -0
- package/web/assets/{src-DsmqQeZ9.js → src-Dy-bHT95.js} +11 -11
- package/web/assets/tabpanel-BP3edJSv.js +150 -0
- package/web/assets/{tag-new-circle.svg-DszV9Yu3.js → tag-new-circle.svg-CsOt9-U5.js} +1 -1
- package/web/assets/toggleswitch-B49OhBFD.js +115 -0
- package/web/assets/{travel-map-earth-globe.svg-DJS5nR0r.js → travel-map-earth-globe.svg-BTR5ahca.js} +1 -1
- package/web/assets/trpc-hOuUVUMw.js +1 -0
- package/web/assets/{tsMode-DAiF0SK5.js → tsMode-BUrbWgsu.js} +5 -5
- package/web/assets/{typescript-Bs2RtJDr.js → typescript-tKGzqX3Z.js} +1 -1
- package/web/assets/useAiChatDrawer-CZS0RLp8.js +1 -0
- package/web/assets/useCloudOrg-0VY86rgI.js +93 -0
- package/web/assets/useCloudOrg-CDe4gvZH.css +1 -0
- package/web/assets/{useProjectCatalog-OUh8Jzm4.js → useProjectCatalog-C2BH8Bnr.js} +1 -1
- package/web/assets/{xml-DNJakbU1.js → xml-4CdtJV3Y.js} +1 -1
- package/web/assets/{yaml-CuCgMv5w.js → yaml-Cj7LK0oJ.js} +1 -1
- package/web/index.html +1 -1
- package/agent-manager-LSAJSO3X.js +0 -7
- package/chunk-Q2WY6PYX.js.map +0 -1
- package/src-WCSXKTXA.js.map +0 -1
- package/web/assets/AgentScalarChatInterface.vue-CBm8pMxm.js +0 -13
- package/web/assets/AgentTerminalPage-Cu2yebw0.js +0 -1
- package/web/assets/AiChatPage-D_QT__oC.js +0 -1
- package/web/assets/AppLayout-B-JzLiuN.js +0 -1
- package/web/assets/AuditPage-O5w_rRoF.js +0 -1
- package/web/assets/CloudAccountPage-8iUKumU1.js +0 -1
- package/web/assets/CloudAccountPage-CVAMkCOF.css +0 -1
- package/web/assets/CloudAccountPage-CxclkzzF.js +0 -1
- package/web/assets/CloudMessagingPage-Cn4mBsGb.js +0 -2
- package/web/assets/DashboardPage-CBPAacTy.js +0 -1
- package/web/assets/EnvironmentForm-A41dAsGK.js +0 -108
- package/web/assets/EnvironmentFormPage-seMzTipP.js +0 -1
- package/web/assets/EnvironmentListPage-Bx_8aQ7W.js +0 -1
- package/web/assets/EnvironmentSelector-B9SZvB3I.css +0 -1
- package/web/assets/EnvironmentSelector-GuLEFkas.js +0 -1
- package/web/assets/KanbanBoardPage-BV-1mFti.js +0 -4
- package/web/assets/KanbanListPage-BHmn0L7d.js +0 -1
- package/web/assets/LaunchProjectPage-0x_cAt48.js +0 -1
- package/web/assets/LaunchServicesPage-wC2HNYAu.js +0 -1
- package/web/assets/LogViewer-BRsgOXsv.js +0 -3
- package/web/assets/ProcessDetailPage-CzGUsQM9.css +0 -1
- package/web/assets/ProcessDetailPage-DqInQZoM.js +0 -1
- package/web/assets/ProjectDetailPage-DWdYGIm5.js +0 -1
- package/web/assets/ProjectDetailPage-hcU-rKhJ.css +0 -1
- package/web/assets/ProjectListPage-XKb11ZSl.js +0 -1
- package/web/assets/RandomJobTestPage-D3mNVwkH.js +0 -2
- package/web/assets/ScenarioEditorPage-Bhp_uvLq.js +0 -14
- package/web/assets/SendToChatDialog-DdjtI7RN.js +0 -1
- package/web/assets/ServiceControlsBar-CRzSTSbf.js +0 -1
- package/web/assets/ServiceDetailPage-ChZVB2uY.js +0 -2
- package/web/assets/ServiceFormPage-CXrwDYXc.js +0 -1
- package/web/assets/SettingsPage-BKImNNGC.js +0 -2062
- package/web/assets/UnlockPage-IF_kNWCK.js +0 -1
- package/web/assets/VariablesTable-BnfdPTJs.js +0 -1
- package/web/assets/VaultMigrationPage-Dzn-moG9.js +0 -1
- package/web/assets/VersionBadge-DJlVV7r7.js +0 -1
- package/web/assets/WikiPage-DNm8r3l9.js +0 -1
- package/web/assets/WikiView-DCuU1ES2.js +0 -1
- package/web/assets/add-scalar-classes-DGIbkQ1f.js +0 -387
- package/web/assets/auth-errors-DQYwI7Ju.js +0 -1
- package/web/assets/autocomplete-BIqGkkg7.js +0 -422
- package/web/assets/cloud-chat.store-DqrDy_y_.js +0 -1
- package/web/assets/cloud-session-BPYJmCDW.js +0 -1
- package/web/assets/column-DFi06tD3.js +0 -907
- package/web/assets/interface-content-folder.svg-DnPIUwnJ.js +0 -1
- package/web/assets/modal-BwAKEIsn.js +0 -5
- package/web/assets/modal-tmtc9vXB.js +0 -1
- package/web/assets/process.store-f72KyYo3.js +0 -1
- package/web/assets/router-CRcngiuT.js +0 -1
- package/web/assets/settings-scope-BIR0n6j3.js +0 -1
- package/web/assets/settings.store-DuwB5egt.js +0 -1
- package/web/assets/src-HJHc4vH7.js +0 -1
- package/web/assets/tabpanel-C4RQhLki.js +0 -150
- package/web/assets/trpc-CTOLa5Ye.js +0 -1
- package/web/assets/useAiChatDrawer-CFsO_u5Q.js +0 -1
- package/web/assets/useCloudOrg-Ds7-Bvva.js +0 -1
- package/web/assets/useCloudOrg-zVC74FRC.css +0 -1
- /package/{agent-manager-LSAJSO3X.js.map → agent-manager-EDFP4VXP.js.map} +0 -0
- /package/web/assets/{abap-DT2sAUGb.js → abap-BftohFSP.js} +0 -0
- /package/web/assets/{apex-BqR8ejP0.js → apex-BvK6mslj.js} +0 -0
- /package/web/assets/{azcli-DK_jNPxf.js → azcli-sP_xqaje.js} +0 -0
- /package/web/assets/{bat-BLmcleEN.js → bat-BVOfLmAN.js} +0 -0
- /package/web/assets/{bicep-DkR6Nnyy.js → bicep-BlQUrQRt.js} +0 -0
- /package/web/assets/{cameligo-DfT1QA_V.js → cameligo-Hsiv8If_.js} +0 -0
- /package/web/assets/{clojure-BbsGZ_q_.js → clojure-BJCEwD5Z.js} +0 -0
- /package/web/assets/{coffee-CZQPrkXM.js → coffee-DaIzfLck.js} +0 -0
- /package/web/assets/{cpp-CZLFjmrQ.js → cpp-D1D8tync.js} +0 -0
- /package/web/assets/{csharp-CljM85nx.js → csharp-aJ5U4ZX-.js} +0 -0
- /package/web/assets/{csp-B7ItwhrE.js → csp-Dl6_9F5u.js} +0 -0
- /package/web/assets/{css-CIuVviKc.js → css-vCyBaqZs.js} +0 -0
- /package/web/assets/{cypher-Lk1MiloH.js → cypher-3AJUSxML.js} +0 -0
- /package/web/assets/{dart-B83vLjrb.js → dart-CTkotL3V.js} +0 -0
- /package/web/assets/{dockerfile--LImnfYW.js → dockerfile-D5-w2qBp.js} +0 -0
- /package/web/assets/{ecl-C1mPHzto.js → ecl-Bv13-VWP.js} +0 -0
- /package/web/assets/{elixir-F7VkySYx.js → elixir-tGAhMDbc.js} +0 -0
- /package/web/assets/{flow9-CyDLjcIP.js → flow9-BGyqHZGG.js} +0 -0
- /package/web/assets/{fsharp-BtAy52j8.js → fsharp-CNmn9I-8.js} +0 -0
- /package/web/assets/{go-nAky3Nvu.js → go-Ci34O9J5.js} +0 -0
- /package/web/assets/{graphql-BFHB5AhE.js → graphql-MnWRwivv.js} +0 -0
- /package/web/assets/{hcl-DiNGWUmy.js → hcl-CHOlr9Wk.js} +0 -0
- /package/web/assets/{ini-D1Fg5XrG.js → ini-DbnmjBHk.js} +0 -0
- /package/web/assets/{java-C-10mSK7.js → java-BfYu7xZq.js} +0 -0
- /package/web/assets/{julia-Bqx3lIQk.js → julia-DLtmkb8l.js} +0 -0
- /package/web/assets/{kotlin-BBx7H7X0.js → kotlin-DcvmgooU.js} +0 -0
- /package/web/assets/{less-BFHUOKEO.js → less-BcK61AQc.js} +0 -0
- /package/web/assets/{lexon-CZNaGS2_.js → lexon-CTymSfIj.js} +0 -0
- /package/web/assets/{lua-iuAeZ15y.js → lua-RfM_CC1S.js} +0 -0
- /package/web/assets/{m3-Dotjo0U8.js → m3-BUMcu6kl.js} +0 -0
- /package/web/assets/{markdown-B_31SQ_4.js → markdown-D43qGxMI.js} +0 -0
- /package/web/assets/{mips-Dp4rVQ6A.js → mips-DraL1zR7.js} +0 -0
- /package/web/assets/{msdax-DGvgi_My.js → msdax-DwsT9zOV.js} +0 -0
- /package/web/assets/{mysql-jqX2Izgu.js → mysql-CI0Y1SVo.js} +0 -0
- /package/web/assets/{objective-c-KWePe42v.js → objective-c-DFGG0hMZ.js} +0 -0
- /package/web/assets/{pascal-k9Augcc6.js → pascal-BwDR4uJo.js} +0 -0
- /package/web/assets/{pascaligo-CijZuMoC.js → pascaligo-BIFJ11Dr.js} +0 -0
- /package/web/assets/{perl-CtKbbdqv.js → perl-BA3RVdIi.js} +0 -0
- /package/web/assets/{pgsql-IYBGBY8p.js → pgsql-CQdJ7fT6.js} +0 -0
- /package/web/assets/{php-CZgzKas5.js → php-aksMphIw.js} +0 -0
- /package/web/assets/{pla-DxEUZCU5.js → pla-oY2ZYZjq.js} +0 -0
- /package/web/assets/{postiats-Cf9oispl.js → postiats-B6K4WFxG.js} +0 -0
- /package/web/assets/{powerquery-Cyri2j7y.js → powerquery-BEv8gWXV.js} +0 -0
- /package/web/assets/{powershell-CezsOW84.js → powershell-Dh31ZyY5.js} +0 -0
- /package/web/assets/{protobuf-BVSVLozM.js → protobuf-IOe1WZKr.js} +0 -0
- /package/web/assets/{pug-tdDHxxGI.js → pug-BoF2xjem.js} +0 -0
- /package/web/assets/{qsharp-BbxYBU73.js → qsharp-Cg-pSrKC.js} +0 -0
- /package/web/assets/{r-CMiogh24.js → r-CXVSpnOi.js} +0 -0
- /package/web/assets/{redis-Be7YRs2n.js → redis-Ds37g3HK.js} +0 -0
- /package/web/assets/{redshift-BMtedC4Y.js → redshift-Bc3XVP9_.js} +0 -0
- /package/web/assets/{restructuredtext-BeqA_Nw7.js → restructuredtext-DEe8sZRY.js} +0 -0
- /package/web/assets/{ruby-DQh1qjXf.js → ruby-rR6GK4gP.js} +0 -0
- /package/web/assets/{rust-Dtb7SJq9.js → rust-DIavTiQB.js} +0 -0
- /package/web/assets/{sb-YjmuT7ii.js → sb-DTmnd4yY.js} +0 -0
- /package/web/assets/{scala-3ZhdCU1r.js → scala-1g7pYkrn.js} +0 -0
- /package/web/assets/{scheme-Ck6PwJVN.js → scheme-DrHHAHD4.js} +0 -0
- /package/web/assets/{scss-CdSZkceb.js → scss-TmmHVu6S.js} +0 -0
- /package/web/assets/{shell-D951-SzL.js → shell-heJIehx2.js} +0 -0
- /package/web/assets/{solidity-BtE4jdUZ.js → solidity-DaFcLbgd.js} +0 -0
- /package/web/assets/{sophia-CPgh17t9.js → sophia-CXbpjkzF.js} +0 -0
- /package/web/assets/{sparql-D5V7fRaF.js → sparql-fPaD1mrB.js} +0 -0
- /package/web/assets/{sql-CIe64i2G.js → sql-AsIRMoxc.js} +0 -0
- /package/web/assets/{st-BUZL4NkZ.js → st-BzrDXems.js} +0 -0
- /package/web/assets/{swift-BGpAy-yZ.js → swift-BllUhPGN.js} +0 -0
- /package/web/assets/{systemverilog-CYBqw_20.js → systemverilog-DNQlsb2M.js} +0 -0
- /package/web/assets/{tcl-CqmcDc3_.js → tcl-Cw_eJI2v.js} +0 -0
- /package/web/assets/{twig-BWVIPIPE.js → twig-vw9mFGZ-.js} +0 -0
- /package/web/assets/{typespec-mTM8EdlQ.js → typespec-BshQoZSA.js} +0 -0
- /package/web/assets/{uuid-aTVnbu2y.js → uuid-egnMxzmj.js} +0 -0
- /package/web/assets/{vb-xvgQ7mYU.js → vb-CmPDgk6r.js} +0 -0
- /package/web/assets/{w3c-keyname-CjzYiphr.js → w3c-keyname-WZPedoVd.js} +0 -0
- /package/web/assets/{wgsl-C8m-CvBD.js → wgsl-CewGSgNG.js} +0 -0
package/agent/index.js
CHANGED
|
@@ -67,7 +67,7 @@ import { TRPCError as TRPCError2 } from "@trpc/server";
|
|
|
67
67
|
import { EventEmitter as EventEmitter7 } from "events";
|
|
68
68
|
import { randomUUID as randomUUID3 } from "crypto";
|
|
69
69
|
import { networkInterfaces } from "os";
|
|
70
|
-
import { join as join3, isAbsolute } from "path";
|
|
70
|
+
import { join as join3, isAbsolute, resolve } from "path";
|
|
71
71
|
|
|
72
72
|
// ../../packages/runner-native/src/native-runner.ts
|
|
73
73
|
import { execa } from "execa";
|
|
@@ -212,15 +212,15 @@ var NativeRunner = class {
|
|
|
212
212
|
// Don't accumulate stdout/stderr in memory — we stream via readline
|
|
213
213
|
});
|
|
214
214
|
}
|
|
215
|
-
const exitPromise = new Promise((
|
|
215
|
+
const exitPromise = new Promise((resolve2) => {
|
|
216
216
|
subprocess.then((result) => {
|
|
217
|
-
|
|
217
|
+
resolve2({
|
|
218
218
|
exitCode: result.exitCode ?? null,
|
|
219
219
|
signal: result.signal ?? null,
|
|
220
220
|
error: result.failed && result.shortMessage ? result.shortMessage : void 0
|
|
221
221
|
});
|
|
222
222
|
}).catch((err) => {
|
|
223
|
-
|
|
223
|
+
resolve2({ exitCode: 1, signal: null, error: err.message ?? "Unknown error" });
|
|
224
224
|
});
|
|
225
225
|
});
|
|
226
226
|
return {
|
|
@@ -312,7 +312,7 @@ var DockerRunner = class {
|
|
|
312
312
|
const containerName = sanitizeDockerName(config.cmdId ? `runeya-${config.serviceId}-${config.cmdId}` : `runeya-${config.serviceId}`);
|
|
313
313
|
let killed = false;
|
|
314
314
|
const exitPromise = new Promise(
|
|
315
|
-
(
|
|
315
|
+
(resolve2) => {
|
|
316
316
|
void (async () => {
|
|
317
317
|
try {
|
|
318
318
|
await execa2("docker", ["rm", "-f", containerName], { reject: false });
|
|
@@ -365,7 +365,7 @@ var DockerRunner = class {
|
|
|
365
365
|
}
|
|
366
366
|
}
|
|
367
367
|
if (killed) {
|
|
368
|
-
|
|
368
|
+
resolve2({ exitCode: null, signal: "SIGTERM" });
|
|
369
369
|
return;
|
|
370
370
|
}
|
|
371
371
|
if (lastCardId) {
|
|
@@ -376,7 +376,7 @@ var DockerRunner = class {
|
|
|
376
376
|
const bootstrapCmds = config.skipBootstrap ? [] : (dc.bootstrapCommands ?? []).filter((c) => c.command.trim());
|
|
377
377
|
for (const bsCmd of bootstrapCmds) {
|
|
378
378
|
if (killed) {
|
|
379
|
-
|
|
379
|
+
resolve2({ exitCode: null, signal: "SIGTERM" });
|
|
380
380
|
return;
|
|
381
381
|
}
|
|
382
382
|
const bsCardId = randomUUID();
|
|
@@ -389,12 +389,12 @@ var DockerRunner = class {
|
|
|
389
389
|
if (exitCode !== 0) {
|
|
390
390
|
stderr.write(`Bootstrap command "${bsCmdName}" failed with exit code ${exitCode}
|
|
391
391
|
`);
|
|
392
|
-
|
|
392
|
+
resolve2({ exitCode, signal: null, error: `Bootstrap "${bsCmdName}" failed (exit ${exitCode})` });
|
|
393
393
|
return;
|
|
394
394
|
}
|
|
395
395
|
}
|
|
396
396
|
if (killed) {
|
|
397
|
-
|
|
397
|
+
resolve2({ exitCode: null, signal: "SIGTERM" });
|
|
398
398
|
return;
|
|
399
399
|
}
|
|
400
400
|
const networkFlags = dc.networkMode === "host" ? ["--network", "host"] : (dc.ports ?? []).flatMap((p) => ["-p", p]);
|
|
@@ -436,12 +436,12 @@ var DockerRunner = class {
|
|
|
436
436
|
runProc.stdout?.pipe(stdout, { end: false });
|
|
437
437
|
runProc.stderr?.pipe(stderr, { end: false });
|
|
438
438
|
const result = await runProc;
|
|
439
|
-
|
|
439
|
+
resolve2({ exitCode: result.exitCode ?? null, signal: result.signal ?? null });
|
|
440
440
|
} catch (err) {
|
|
441
441
|
const msg = err instanceof Error ? err.message : String(err);
|
|
442
442
|
stderr.write(`Docker infrastructure error: ${msg}
|
|
443
443
|
`);
|
|
444
|
-
|
|
444
|
+
resolve2({ exitCode: 1, signal: null });
|
|
445
445
|
} finally {
|
|
446
446
|
stdout.end();
|
|
447
447
|
stderr.end();
|
|
@@ -480,8 +480,8 @@ var DockerRunner = class {
|
|
|
480
480
|
});
|
|
481
481
|
let exitResolve;
|
|
482
482
|
const exitPromise = new Promise(
|
|
483
|
-
(
|
|
484
|
-
exitResolve =
|
|
483
|
+
(resolve2) => {
|
|
484
|
+
exitResolve = resolve2;
|
|
485
485
|
}
|
|
486
486
|
);
|
|
487
487
|
void (async () => {
|
|
@@ -600,7 +600,7 @@ var DockerRunner = class {
|
|
|
600
600
|
const stderr = new PassThrough();
|
|
601
601
|
let dockerProc = null;
|
|
602
602
|
const exitPromise = new Promise(
|
|
603
|
-
(
|
|
603
|
+
(resolve2) => {
|
|
604
604
|
void (async () => {
|
|
605
605
|
try {
|
|
606
606
|
const envFlags = Object.entries(envVars).flatMap(([k, v]) => ["-e", `${k}=${v}`]);
|
|
@@ -613,12 +613,12 @@ var DockerRunner = class {
|
|
|
613
613
|
dockerProc.stdout?.pipe(stdout, { end: false });
|
|
614
614
|
dockerProc.stderr?.pipe(stderr, { end: false });
|
|
615
615
|
const result = await dockerProc;
|
|
616
|
-
|
|
616
|
+
resolve2({ exitCode: result.exitCode ?? null, signal: result.signal ?? null });
|
|
617
617
|
} catch (err) {
|
|
618
618
|
const msg = err instanceof Error ? err.message : String(err);
|
|
619
619
|
stderr.write(`docker execInContainer error: ${msg}
|
|
620
620
|
`);
|
|
621
|
-
|
|
621
|
+
resolve2({ exitCode: 1, signal: null });
|
|
622
622
|
} finally {
|
|
623
623
|
stdout.end();
|
|
624
624
|
stderr.end();
|
|
@@ -647,7 +647,7 @@ var DockerRunner = class {
|
|
|
647
647
|
let innerProcess = null;
|
|
648
648
|
let dockerProc = null;
|
|
649
649
|
const exitPromise = new Promise(
|
|
650
|
-
(
|
|
650
|
+
(resolve2) => {
|
|
651
651
|
void (async () => {
|
|
652
652
|
try {
|
|
653
653
|
const psResult = await execa2(
|
|
@@ -671,7 +671,7 @@ var DockerRunner = class {
|
|
|
671
671
|
dockerProc.stdout?.pipe(stdout, { end: false });
|
|
672
672
|
dockerProc.stderr?.pipe(stderr, { end: false });
|
|
673
673
|
const result = await dockerProc;
|
|
674
|
-
|
|
674
|
+
resolve2({ exitCode: result.exitCode ?? null, signal: result.signal ?? null });
|
|
675
675
|
} else {
|
|
676
676
|
innerProcess = this.start({
|
|
677
677
|
...config,
|
|
@@ -684,13 +684,13 @@ var DockerRunner = class {
|
|
|
684
684
|
innerProcess.stdout?.pipe(stdout, { end: false });
|
|
685
685
|
innerProcess.stderr?.pipe(stderr, { end: false });
|
|
686
686
|
const result = await innerProcess.exitPromise;
|
|
687
|
-
|
|
687
|
+
resolve2(result);
|
|
688
688
|
}
|
|
689
689
|
} catch (err) {
|
|
690
690
|
const msg = err instanceof Error ? err.message : String(err);
|
|
691
691
|
stderr.write(`docker shortcut error: ${msg}
|
|
692
692
|
`);
|
|
693
|
-
|
|
693
|
+
resolve2({ exitCode: 1, signal: null });
|
|
694
694
|
} finally {
|
|
695
695
|
stdout.end();
|
|
696
696
|
stderr.end();
|
|
@@ -1227,7 +1227,17 @@ var ProcessStatusSchema = z8.object({
|
|
|
1227
1227
|
startedAt: z8.coerce.date().nullable().optional(),
|
|
1228
1228
|
restartCount: z8.number().int().nonnegative().default(0),
|
|
1229
1229
|
uptime: z8.number().nonnegative().default(0),
|
|
1230
|
-
healthStatus: HealthStatusSchema.default("unknown")
|
|
1230
|
+
healthStatus: HealthStatusSchema.default("unknown"),
|
|
1231
|
+
/**
|
|
1232
|
+
* Le répertoire où le processus s'exécute VRAIMENT, absolutisé par l'agent.
|
|
1233
|
+
*
|
|
1234
|
+
* Rapporté par l'agent plutôt que déduit de la config : entre le `cwd` de la
|
|
1235
|
+
* commande, celui du service, l'ancrage sur le projet et les variables que
|
|
1236
|
+
* l'agent étend lui-même, la valeur affichée n'aurait rien prouvé. Ce qui
|
|
1237
|
+
* intéresse quand un service tourne contre le mauvais dépôt, c'est le chemin
|
|
1238
|
+
* final — y compris quand il retombe sur le répertoire de l'agent.
|
|
1239
|
+
*/
|
|
1240
|
+
cwd: z8.string().max(4096).nullable().optional()
|
|
1231
1241
|
});
|
|
1232
1242
|
|
|
1233
1243
|
// ../../packages/shared/src/schemas/log.schema.ts
|
|
@@ -1589,6 +1599,22 @@ var KanbanCardSchema = z19.object({
|
|
|
1589
1599
|
/** Files attached to the card — stored out of band, referenced here. */
|
|
1590
1600
|
attachments: z19.array(KanbanAttachmentSchema).max(50).default([]),
|
|
1591
1601
|
order: z19.number().int(),
|
|
1602
|
+
/**
|
|
1603
|
+
* La priorité de la carte, de 1 à 10 — 10 étant le plus urgent.
|
|
1604
|
+
*
|
|
1605
|
+
* Facultative, et absente veut dire « pas de priorité », pas « la plus
|
|
1606
|
+
* basse » : une carte qu'on n'a pas encore arbitrée ne doit pas se ranger
|
|
1607
|
+
* d'office au fond de la pile.
|
|
1608
|
+
*/
|
|
1609
|
+
priority: z19.number().int().min(1).max(10).optional(),
|
|
1610
|
+
/**
|
|
1611
|
+
* Les groupes de la carte — des étiquettes libres, posées par l'équipe.
|
|
1612
|
+
*
|
|
1613
|
+
* Rien ne les déclare ailleurs : un groupe existe parce qu'une carte le
|
|
1614
|
+
* porte, et disparaît avec la dernière qui le portait. C'est ce qui permet
|
|
1615
|
+
* d'en créer un en le tapant, sans passer par un écran d'administration.
|
|
1616
|
+
*/
|
|
1617
|
+
groups: z19.array(z19.string().min(1).max(60)).max(30).optional(),
|
|
1592
1618
|
/**
|
|
1593
1619
|
* La couleur de la carte, en hexadécimal (`#RRGGBB`) — un liseré en haut de
|
|
1594
1620
|
* la carte, et rien d'autre : ce qu'elle veut dire appartient à l'équipe.
|
|
@@ -2690,7 +2716,7 @@ var MySQLLogSource = class extends EventEmitter4 {
|
|
|
2690
2716
|
} catch {
|
|
2691
2717
|
}
|
|
2692
2718
|
this.connection = null;
|
|
2693
|
-
await new Promise((
|
|
2719
|
+
await new Promise((resolve2) => setTimeout(resolve2, delayMs));
|
|
2694
2720
|
if (this.stopped) return;
|
|
2695
2721
|
try {
|
|
2696
2722
|
await this.connect();
|
|
@@ -2738,14 +2764,14 @@ import pidusage from "pidusage";
|
|
|
2738
2764
|
import { execFile } from "child_process";
|
|
2739
2765
|
import { EventEmitter as EventEmitter5 } from "events";
|
|
2740
2766
|
async function getDockerStats(containerName) {
|
|
2741
|
-
return new Promise((
|
|
2767
|
+
return new Promise((resolve2) => {
|
|
2742
2768
|
execFile(
|
|
2743
2769
|
"docker",
|
|
2744
2770
|
["stats", "--no-stream", "--format", "{{json .}}", containerName],
|
|
2745
2771
|
{ timeout: 5e3 },
|
|
2746
2772
|
(err, stdout) => {
|
|
2747
2773
|
if (err || !stdout.trim()) {
|
|
2748
|
-
|
|
2774
|
+
resolve2(null);
|
|
2749
2775
|
return;
|
|
2750
2776
|
}
|
|
2751
2777
|
try {
|
|
@@ -2753,9 +2779,9 @@ async function getDockerStats(containerName) {
|
|
|
2753
2779
|
const cpu = Number.parseFloat(data.CPUPerc);
|
|
2754
2780
|
const memStr = data.MemUsage.split("/")[0].trim();
|
|
2755
2781
|
const memory = parseMemBytes(memStr);
|
|
2756
|
-
|
|
2782
|
+
resolve2({ cpu: Number.isNaN(cpu) ? 0 : cpu, memory });
|
|
2757
2783
|
} catch {
|
|
2758
|
-
|
|
2784
|
+
resolve2(null);
|
|
2759
2785
|
}
|
|
2760
2786
|
}
|
|
2761
2787
|
);
|
|
@@ -3104,10 +3130,10 @@ var TraefikManager = class {
|
|
|
3104
3130
|
clearTimeout(this.debounceTimer);
|
|
3105
3131
|
this.debounceTimer = null;
|
|
3106
3132
|
}
|
|
3107
|
-
await new Promise((
|
|
3108
|
-
execFile2("docker", ["rm", "-f", "runeya-traefik"], { timeout: 1e4 }, () =>
|
|
3133
|
+
await new Promise((resolve2) => {
|
|
3134
|
+
execFile2("docker", ["rm", "-f", "runeya-traefik"], { timeout: 1e4 }, () => resolve2());
|
|
3109
3135
|
});
|
|
3110
|
-
await new Promise((
|
|
3136
|
+
await new Promise((resolve2) => setTimeout(resolve2, 500));
|
|
3111
3137
|
}
|
|
3112
3138
|
async getConfigFiles() {
|
|
3113
3139
|
const [staticContent, dynamicContent] = await Promise.all([
|
|
@@ -3146,13 +3172,13 @@ var TraefikManager = class {
|
|
|
3146
3172
|
return result;
|
|
3147
3173
|
}
|
|
3148
3174
|
async getLogs(lines = 100) {
|
|
3149
|
-
return new Promise((
|
|
3175
|
+
return new Promise((resolve2) => {
|
|
3150
3176
|
execFile2("docker", ["logs", "--tail", String(lines), "runeya-traefik"], { timeout: 1e4 }, (err, stdout, stderr) => {
|
|
3151
3177
|
if (err) {
|
|
3152
|
-
|
|
3178
|
+
resolve2("");
|
|
3153
3179
|
return;
|
|
3154
3180
|
}
|
|
3155
|
-
|
|
3181
|
+
resolve2((stdout + stderr).trim());
|
|
3156
3182
|
});
|
|
3157
3183
|
});
|
|
3158
3184
|
}
|
|
@@ -3197,10 +3223,10 @@ var TraefikManager = class {
|
|
|
3197
3223
|
async getStatus() {
|
|
3198
3224
|
let dockerAvailable = false;
|
|
3199
3225
|
try {
|
|
3200
|
-
await new Promise((
|
|
3226
|
+
await new Promise((resolve2, reject) => {
|
|
3201
3227
|
execFile2("docker", ["info", "--format", "{{.ServerVersion}}"], { timeout: 5e3 }, (err) => {
|
|
3202
3228
|
if (err) reject(err instanceof Error ? err : new Error("docker info failed"));
|
|
3203
|
-
else
|
|
3229
|
+
else resolve2();
|
|
3204
3230
|
});
|
|
3205
3231
|
});
|
|
3206
3232
|
dockerAvailable = true;
|
|
@@ -3217,10 +3243,10 @@ var TraefikManager = class {
|
|
|
3217
3243
|
let containerRunning = false;
|
|
3218
3244
|
if (dockerAvailable) {
|
|
3219
3245
|
try {
|
|
3220
|
-
const output = await new Promise((
|
|
3246
|
+
const output = await new Promise((resolve2, reject) => {
|
|
3221
3247
|
execFile2("docker", ["inspect", "--format", "{{.State.Running}}", "runeya-traefik"], { timeout: 5e3 }, (err, stdout) => {
|
|
3222
3248
|
if (err) reject(err instanceof Error ? err : new Error("docker inspect failed"));
|
|
3223
|
-
else
|
|
3249
|
+
else resolve2(stdout.trim());
|
|
3224
3250
|
});
|
|
3225
3251
|
});
|
|
3226
3252
|
containerRunning = output === "true";
|
|
@@ -3498,6 +3524,19 @@ var EnvSchema = z21.object({
|
|
|
3498
3524
|
var env = EnvSchema.parse(process.env);
|
|
3499
3525
|
|
|
3500
3526
|
// src/services/process-manager.ts
|
|
3527
|
+
function anchorCommandCwd(cwd, serviceConfig) {
|
|
3528
|
+
const base = serviceConfig.resolvedCwd ?? serviceConfig.cwd;
|
|
3529
|
+
const raw = (cwd ?? "").trim();
|
|
3530
|
+
if (!raw || raw === ".") return base ?? void 0;
|
|
3531
|
+
if (!base || !isAbsolute(base)) return raw;
|
|
3532
|
+
if (isAbsolute(raw) || raw.startsWith("~") || raw.startsWith("$")) return raw;
|
|
3533
|
+
return join3(base, raw);
|
|
3534
|
+
}
|
|
3535
|
+
function effectiveProcessCwd(serviceConfig) {
|
|
3536
|
+
const first = serviceConfig.commands?.[0];
|
|
3537
|
+
const anchored = anchorCommandCwd(first?.cwd, serviceConfig);
|
|
3538
|
+
return resolve(resolveCwd(anchored, resolveEnv(serviceConfig.env)));
|
|
3539
|
+
}
|
|
3501
3540
|
function getLanIp() {
|
|
3502
3541
|
const nets = networkInterfaces();
|
|
3503
3542
|
for (const name of Object.keys(nets)) {
|
|
@@ -3763,7 +3802,7 @@ var ProcessManager = class extends EventEmitter7 {
|
|
|
3763
3802
|
const runnerConfig = {
|
|
3764
3803
|
command: cmd.command,
|
|
3765
3804
|
shell: cmd.shell ?? false,
|
|
3766
|
-
cwd: cmd.cwd
|
|
3805
|
+
cwd: anchorCommandCwd(cmd.cwd, proc.serviceConfig),
|
|
3767
3806
|
env: mergedServiceEnv
|
|
3768
3807
|
};
|
|
3769
3808
|
let runnerProcess;
|
|
@@ -3949,7 +3988,7 @@ var ProcessManager = class extends EventEmitter7 {
|
|
|
3949
3988
|
* Centralises runner selection so executeShortcut / executeAdHocCommand share the logic. */
|
|
3950
3989
|
launchOneOffCommand(proc, command, cwd, env2) {
|
|
3951
3990
|
const serviceConfig = proc.serviceConfig;
|
|
3952
|
-
const effectiveCwd = cwd
|
|
3991
|
+
const effectiveCwd = anchorCommandCwd(cwd, serviceConfig);
|
|
3953
3992
|
if (serviceConfig.runner === "docker" && serviceConfig.dockerConfig) {
|
|
3954
3993
|
const dockerRunner = this.runners.get("docker");
|
|
3955
3994
|
if (!dockerRunner) throw new Error("Docker runner not available");
|
|
@@ -3995,7 +4034,7 @@ var ProcessManager = class extends EventEmitter7 {
|
|
|
3995
4034
|
proc.kill("SIGTERM");
|
|
3996
4035
|
void Promise.race([
|
|
3997
4036
|
proc.exitPromise,
|
|
3998
|
-
new Promise((
|
|
4037
|
+
new Promise((resolve2) => setTimeout(resolve2, 3e3))
|
|
3999
4038
|
]).then((result) => {
|
|
4000
4039
|
if (result === void 0) proc.kill("SIGKILL");
|
|
4001
4040
|
});
|
|
@@ -4011,7 +4050,7 @@ var ProcessManager = class extends EventEmitter7 {
|
|
|
4011
4050
|
this.consoleLogSource.addSystemLog(processId, `[shortcut] Running "${shortcutName}": ${shortcut.command}`, "info");
|
|
4012
4051
|
const serviceConfig = proc.serviceConfig;
|
|
4013
4052
|
const env2 = resolveEnv(serviceConfig.env);
|
|
4014
|
-
const effectiveCwd = shortcut.cwd
|
|
4053
|
+
const effectiveCwd = anchorCommandCwd(shortcut.cwd, serviceConfig);
|
|
4015
4054
|
if (this.warnUnresolvedVars(processId, env2, { "shortcut cwd": effectiveCwd })) {
|
|
4016
4055
|
this.consoleLogSource.addSystemLog(processId, `Cannot run shortcut "${shortcutName}": unresolved variables (see above)`, "error", { id: randomUUID3(), type: "command-fail", header: shortcutName, state: "self" });
|
|
4017
4056
|
return { exitCode: 1 };
|
|
@@ -4046,7 +4085,7 @@ var ProcessManager = class extends EventEmitter7 {
|
|
|
4046
4085
|
this.consoleLogSource.setJSParsers(processId, jsParsers);
|
|
4047
4086
|
const serviceConfig = proc.serviceConfig;
|
|
4048
4087
|
const env2 = resolveEnv(serviceConfig.env);
|
|
4049
|
-
const effectiveCwd = cwd
|
|
4088
|
+
const effectiveCwd = anchorCommandCwd(cwd, serviceConfig);
|
|
4050
4089
|
if (this.warnUnresolvedVars(processId, env2, { cwd: effectiveCwd })) {
|
|
4051
4090
|
this.consoleLogSource.addSystemLog(processId, `Cannot run command: unresolved variables (see above)`, "error", { id: randomUUID3(), type: "command-fail", header: command, state: "self" });
|
|
4052
4091
|
return { exitCode: 1 };
|
|
@@ -4113,14 +4152,14 @@ var ProcessManager = class extends EventEmitter7 {
|
|
|
4113
4152
|
sharedProc.kill("SIGTERM");
|
|
4114
4153
|
await Promise.race([
|
|
4115
4154
|
sharedProc.exitPromise,
|
|
4116
|
-
new Promise((
|
|
4155
|
+
new Promise((resolve2) => setTimeout(resolve2, graceMs))
|
|
4117
4156
|
]);
|
|
4118
4157
|
const activeExecs = proc.commandProcesses.filter((cp) => cp.runnerProcess);
|
|
4119
4158
|
await Promise.all(
|
|
4120
4159
|
activeExecs.map(async (cp) => {
|
|
4121
4160
|
await Promise.race([
|
|
4122
4161
|
cp.runnerProcess.exitPromise,
|
|
4123
|
-
new Promise((
|
|
4162
|
+
new Promise((resolve2) => setTimeout(resolve2, 2e3))
|
|
4124
4163
|
]);
|
|
4125
4164
|
cp.runnerProcess = null;
|
|
4126
4165
|
})
|
|
@@ -4135,7 +4174,7 @@ var ProcessManager = class extends EventEmitter7 {
|
|
|
4135
4174
|
activeProcesses.map(async (cp) => {
|
|
4136
4175
|
const exited = await Promise.race([
|
|
4137
4176
|
cp.runnerProcess.exitPromise.then(() => true),
|
|
4138
|
-
new Promise((
|
|
4177
|
+
new Promise((resolve2) => setTimeout(() => resolve2(false), graceMs))
|
|
4139
4178
|
]);
|
|
4140
4179
|
if (!exited && cp.runnerProcess) {
|
|
4141
4180
|
cp.runnerProcess.kill("SIGKILL");
|
|
@@ -4231,7 +4270,8 @@ var ProcessManager = class extends EventEmitter7 {
|
|
|
4231
4270
|
startedAt: proc.startedAt,
|
|
4232
4271
|
restartCount: proc.restartCount,
|
|
4233
4272
|
uptime,
|
|
4234
|
-
healthStatus
|
|
4273
|
+
healthStatus,
|
|
4274
|
+
cwd: effectiveProcessCwd(proc.serviceConfig)
|
|
4235
4275
|
};
|
|
4236
4276
|
}
|
|
4237
4277
|
emitStatus(processId) {
|
|
@@ -4340,15 +4380,15 @@ var processRouter = router({
|
|
|
4340
4380
|
/** Subscribe to real-time log stream (yields batches of ParsedLog[]) */
|
|
4341
4381
|
onLog: protectedProcedure.input(z22.object({ processId: z22.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
|
|
4342
4382
|
const queue = [];
|
|
4343
|
-
let
|
|
4383
|
+
let resolve2 = null;
|
|
4344
4384
|
const handler = (batch) => {
|
|
4345
4385
|
const filtered = input?.processId ? batch.filter((log) => log.processId === input.processId) : batch;
|
|
4346
4386
|
if (filtered.length === 0) return;
|
|
4347
4387
|
if (queue.length >= SUBSCRIPTION_QUEUE_MAX) queue.shift();
|
|
4348
4388
|
queue.push(filtered);
|
|
4349
|
-
if (
|
|
4350
|
-
|
|
4351
|
-
|
|
4389
|
+
if (resolve2) {
|
|
4390
|
+
resolve2();
|
|
4391
|
+
resolve2 = null;
|
|
4352
4392
|
}
|
|
4353
4393
|
};
|
|
4354
4394
|
processManager.on("logs", handler);
|
|
@@ -4358,7 +4398,7 @@ var processRouter = router({
|
|
|
4358
4398
|
yield queue.shift();
|
|
4359
4399
|
} else {
|
|
4360
4400
|
await new Promise((r) => {
|
|
4361
|
-
|
|
4401
|
+
resolve2 = r;
|
|
4362
4402
|
});
|
|
4363
4403
|
}
|
|
4364
4404
|
}
|
|
@@ -4370,15 +4410,15 @@ var processRouter = router({
|
|
|
4370
4410
|
onStatus: protectedProcedure.input(z22.object({ processId: z22.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
|
|
4371
4411
|
console.debug("[agent] onStatus subscription started", input?.processId ? `for process ${input.processId}` : "(all processes)");
|
|
4372
4412
|
const queue = [];
|
|
4373
|
-
let
|
|
4413
|
+
let resolve2 = null;
|
|
4374
4414
|
const handler = (status) => {
|
|
4375
4415
|
const entry = status;
|
|
4376
4416
|
if (!input?.processId || entry.id === input.processId) {
|
|
4377
4417
|
if (queue.length >= SUBSCRIPTION_QUEUE_MAX) queue.shift();
|
|
4378
4418
|
queue.push(status);
|
|
4379
|
-
if (
|
|
4380
|
-
|
|
4381
|
-
|
|
4419
|
+
if (resolve2) {
|
|
4420
|
+
resolve2();
|
|
4421
|
+
resolve2 = null;
|
|
4382
4422
|
}
|
|
4383
4423
|
}
|
|
4384
4424
|
};
|
|
@@ -4389,7 +4429,7 @@ var processRouter = router({
|
|
|
4389
4429
|
yield queue.shift();
|
|
4390
4430
|
} else {
|
|
4391
4431
|
await new Promise((r) => {
|
|
4392
|
-
|
|
4432
|
+
resolve2 = r;
|
|
4393
4433
|
});
|
|
4394
4434
|
}
|
|
4395
4435
|
}
|
|
@@ -4401,15 +4441,15 @@ var processRouter = router({
|
|
|
4401
4441
|
/** Subscribe to real-time health status changes */
|
|
4402
4442
|
onHealth: protectedProcedure.input(z22.object({ processId: z22.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
|
|
4403
4443
|
const queue = [];
|
|
4404
|
-
let
|
|
4444
|
+
let resolve2 = null;
|
|
4405
4445
|
const handler = (healthData) => {
|
|
4406
4446
|
const entry = healthData;
|
|
4407
4447
|
if (!input?.processId || entry.processId === input.processId) {
|
|
4408
4448
|
if (queue.length >= SUBSCRIPTION_QUEUE_MAX) queue.shift();
|
|
4409
4449
|
queue.push(healthData);
|
|
4410
|
-
if (
|
|
4411
|
-
|
|
4412
|
-
|
|
4450
|
+
if (resolve2) {
|
|
4451
|
+
resolve2();
|
|
4452
|
+
resolve2 = null;
|
|
4413
4453
|
}
|
|
4414
4454
|
}
|
|
4415
4455
|
};
|
|
@@ -4420,7 +4460,7 @@ var processRouter = router({
|
|
|
4420
4460
|
yield queue.shift();
|
|
4421
4461
|
} else {
|
|
4422
4462
|
await new Promise((r) => {
|
|
4423
|
-
|
|
4463
|
+
resolve2 = r;
|
|
4424
4464
|
});
|
|
4425
4465
|
}
|
|
4426
4466
|
}
|
|
@@ -4431,15 +4471,15 @@ var processRouter = router({
|
|
|
4431
4471
|
/** Subscribe to real-time metrics */
|
|
4432
4472
|
onMetrics: protectedProcedure.input(z22.object({ processId: z22.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
|
|
4433
4473
|
const queue = [];
|
|
4434
|
-
let
|
|
4474
|
+
let resolve2 = null;
|
|
4435
4475
|
const handler = (metrics) => {
|
|
4436
4476
|
const entry = metrics;
|
|
4437
4477
|
if (!input?.processId || entry.processId === input.processId) {
|
|
4438
4478
|
if (queue.length >= SUBSCRIPTION_QUEUE_MAX) queue.shift();
|
|
4439
4479
|
queue.push(metrics);
|
|
4440
|
-
if (
|
|
4441
|
-
|
|
4442
|
-
|
|
4480
|
+
if (resolve2) {
|
|
4481
|
+
resolve2();
|
|
4482
|
+
resolve2 = null;
|
|
4443
4483
|
}
|
|
4444
4484
|
}
|
|
4445
4485
|
};
|
|
@@ -4450,7 +4490,7 @@ var processRouter = router({
|
|
|
4450
4490
|
yield queue.shift();
|
|
4451
4491
|
} else {
|
|
4452
4492
|
await new Promise((r) => {
|
|
4453
|
-
|
|
4493
|
+
resolve2 = r;
|
|
4454
4494
|
});
|
|
4455
4495
|
}
|
|
4456
4496
|
}
|
|
@@ -4591,20 +4631,20 @@ var terminalRouter = router({
|
|
|
4591
4631
|
throw new TRPCError3({ code: "NOT_FOUND", message: `Terminal session ${input.sessionId} not found` });
|
|
4592
4632
|
}
|
|
4593
4633
|
const queue = [];
|
|
4594
|
-
let
|
|
4634
|
+
let resolve2 = null;
|
|
4595
4635
|
let done = false;
|
|
4596
4636
|
const onData = (data) => {
|
|
4597
4637
|
queue.push(data);
|
|
4598
|
-
if (
|
|
4599
|
-
|
|
4600
|
-
|
|
4638
|
+
if (resolve2) {
|
|
4639
|
+
resolve2();
|
|
4640
|
+
resolve2 = null;
|
|
4601
4641
|
}
|
|
4602
4642
|
};
|
|
4603
4643
|
const onExit = () => {
|
|
4604
4644
|
done = true;
|
|
4605
|
-
if (
|
|
4606
|
-
|
|
4607
|
-
|
|
4645
|
+
if (resolve2) {
|
|
4646
|
+
resolve2();
|
|
4647
|
+
resolve2 = null;
|
|
4608
4648
|
}
|
|
4609
4649
|
};
|
|
4610
4650
|
emitter.on("data", onData);
|
|
@@ -4615,7 +4655,7 @@ var terminalRouter = router({
|
|
|
4615
4655
|
yield queue.shift();
|
|
4616
4656
|
} else {
|
|
4617
4657
|
await new Promise((r) => {
|
|
4618
|
-
|
|
4658
|
+
resolve2 = r;
|
|
4619
4659
|
});
|
|
4620
4660
|
}
|
|
4621
4661
|
}
|
|
@@ -4818,15 +4858,15 @@ var gitRouter = router({
|
|
|
4818
4858
|
const gitDir = (await git(["rev-parse", "--git-dir"], cwd, true)).trim();
|
|
4819
4859
|
const absGitDir = resolvePath(cwd, gitDir);
|
|
4820
4860
|
const queue = [];
|
|
4821
|
-
let
|
|
4861
|
+
let resolve2 = null;
|
|
4822
4862
|
let debounceTimer = null;
|
|
4823
4863
|
const onFsChange = () => {
|
|
4824
4864
|
if (debounceTimer) clearTimeout(debounceTimer);
|
|
4825
4865
|
debounceTimer = setTimeout(() => {
|
|
4826
4866
|
queue.push("changed");
|
|
4827
|
-
if (
|
|
4828
|
-
|
|
4829
|
-
|
|
4867
|
+
if (resolve2) {
|
|
4868
|
+
resolve2();
|
|
4869
|
+
resolve2 = null;
|
|
4830
4870
|
}
|
|
4831
4871
|
}, 500);
|
|
4832
4872
|
};
|
|
@@ -4852,7 +4892,7 @@ var gitRouter = router({
|
|
|
4852
4892
|
}
|
|
4853
4893
|
} else {
|
|
4854
4894
|
await new Promise((r) => {
|
|
4855
|
-
|
|
4895
|
+
resolve2 = r;
|
|
4856
4896
|
});
|
|
4857
4897
|
}
|
|
4858
4898
|
}
|
|
@@ -5287,19 +5327,19 @@ var AiSpawnManager = class {
|
|
|
5287
5327
|
const entry = this.spawns.get(spawnId);
|
|
5288
5328
|
if (!entry) throw new Error(`AI spawn ${spawnId} not found`);
|
|
5289
5329
|
let offset = fromOffset;
|
|
5290
|
-
let
|
|
5330
|
+
let resolve2 = null;
|
|
5291
5331
|
let done = false;
|
|
5292
5332
|
const onChunk = () => {
|
|
5293
|
-
if (
|
|
5294
|
-
|
|
5295
|
-
|
|
5333
|
+
if (resolve2) {
|
|
5334
|
+
resolve2();
|
|
5335
|
+
resolve2 = null;
|
|
5296
5336
|
}
|
|
5297
5337
|
};
|
|
5298
5338
|
const onDone = () => {
|
|
5299
5339
|
done = true;
|
|
5300
|
-
if (
|
|
5301
|
-
|
|
5302
|
-
|
|
5340
|
+
if (resolve2) {
|
|
5341
|
+
resolve2();
|
|
5342
|
+
resolve2 = null;
|
|
5303
5343
|
}
|
|
5304
5344
|
};
|
|
5305
5345
|
entry.emitter.on("chunk", onChunk);
|
|
@@ -5318,7 +5358,7 @@ var AiSpawnManager = class {
|
|
|
5318
5358
|
}
|
|
5319
5359
|
if (done && offset >= entry.buffer.length) break;
|
|
5320
5360
|
await new Promise((r) => {
|
|
5321
|
-
|
|
5361
|
+
resolve2 = r;
|
|
5322
5362
|
});
|
|
5323
5363
|
}
|
|
5324
5364
|
} finally {
|
|
@@ -5577,12 +5617,12 @@ var CodexAppServerManager = class extends EventEmitter10 {
|
|
|
5577
5617
|
throw new Error("codex app-server not connected");
|
|
5578
5618
|
}
|
|
5579
5619
|
const id = this.nextId++;
|
|
5580
|
-
return new Promise((
|
|
5620
|
+
return new Promise((resolve2, reject) => {
|
|
5581
5621
|
const timer = setTimeout(() => {
|
|
5582
5622
|
this.pending.delete(id);
|
|
5583
5623
|
reject(new Error(`Request ${method} (id=${id}) timed out`));
|
|
5584
5624
|
}, REQUEST_TIMEOUT_MS);
|
|
5585
|
-
this.pending.set(id, { resolve, reject, timer });
|
|
5625
|
+
this.pending.set(id, { resolve: resolve2, reject, timer });
|
|
5586
5626
|
this.writeLine({ jsonrpc: "2.0", method, id, params });
|
|
5587
5627
|
});
|
|
5588
5628
|
}
|
|
@@ -5706,12 +5746,12 @@ function extForMime(mime) {
|
|
|
5706
5746
|
return MIME_TO_EXT[mime.toLowerCase()] ?? "png";
|
|
5707
5747
|
}
|
|
5708
5748
|
function runCmd(cmd, args, stdin, timeoutMs = 5e3) {
|
|
5709
|
-
return new Promise((
|
|
5749
|
+
return new Promise((resolve2) => {
|
|
5710
5750
|
let settled = false;
|
|
5711
5751
|
const settle = (code, stderr) => {
|
|
5712
5752
|
if (settled) return;
|
|
5713
5753
|
settled = true;
|
|
5714
|
-
|
|
5754
|
+
resolve2({ code, stderr });
|
|
5715
5755
|
};
|
|
5716
5756
|
try {
|
|
5717
5757
|
const child = spawn7(cmd, args, { stdio: ["pipe", "ignore", "pipe"] });
|
|
@@ -5913,16 +5953,16 @@ var aiRouter = router({
|
|
|
5913
5953
|
}).default({})).subscription(async function* ({ input, signal }) {
|
|
5914
5954
|
await codexAppServerManager.ensureConnected();
|
|
5915
5955
|
const queue = [];
|
|
5916
|
-
let
|
|
5956
|
+
let resolve2 = null;
|
|
5917
5957
|
const unsub = codexAppServerManager.onNotification((method, params) => {
|
|
5918
5958
|
if (input.threadId) {
|
|
5919
5959
|
const notifThreadId = params["threadId"] ?? params["turn"]?.["threadId"];
|
|
5920
5960
|
if (notifThreadId && notifThreadId !== input.threadId) return;
|
|
5921
5961
|
}
|
|
5922
5962
|
queue.push({ method, params });
|
|
5923
|
-
if (
|
|
5924
|
-
|
|
5925
|
-
|
|
5963
|
+
if (resolve2) {
|
|
5964
|
+
resolve2();
|
|
5965
|
+
resolve2 = null;
|
|
5926
5966
|
}
|
|
5927
5967
|
});
|
|
5928
5968
|
try {
|
|
@@ -5931,7 +5971,7 @@ var aiRouter = router({
|
|
|
5931
5971
|
yield queue.shift();
|
|
5932
5972
|
}
|
|
5933
5973
|
await new Promise((r) => {
|
|
5934
|
-
|
|
5974
|
+
resolve2 = r;
|
|
5935
5975
|
});
|
|
5936
5976
|
}
|
|
5937
5977
|
} finally {
|
|
@@ -6246,24 +6286,34 @@ function createAgent(opts) {
|
|
|
6246
6286
|
await traefikManager.stop();
|
|
6247
6287
|
await processManager.shutdownAll();
|
|
6248
6288
|
await Promise.race([
|
|
6249
|
-
new Promise((
|
|
6250
|
-
new Promise((
|
|
6289
|
+
new Promise((resolve2) => healthWss.close(() => resolve2())),
|
|
6290
|
+
new Promise((resolve2) => setTimeout(resolve2, 5e3))
|
|
6251
6291
|
]);
|
|
6252
6292
|
await Promise.race([
|
|
6253
|
-
new Promise((
|
|
6254
|
-
new Promise((
|
|
6293
|
+
new Promise((resolve2) => trpcWss.close(() => resolve2())),
|
|
6294
|
+
new Promise((resolve2) => setTimeout(resolve2, 5e3))
|
|
6255
6295
|
]);
|
|
6256
6296
|
await Promise.race([
|
|
6257
|
-
new Promise((
|
|
6258
|
-
new Promise((
|
|
6297
|
+
new Promise((resolve2) => server.close(() => resolve2())),
|
|
6298
|
+
new Promise((resolve2) => setTimeout(resolve2, 5e3))
|
|
6259
6299
|
]);
|
|
6260
6300
|
};
|
|
6261
6301
|
return { app, server, trpcWss, healthWss, passphraseHex, shutdown };
|
|
6262
6302
|
}
|
|
6263
6303
|
|
|
6304
|
+
// src/config/node-path.ts
|
|
6305
|
+
import { dirname as dirname3, delimiter } from "path";
|
|
6306
|
+
function ensureNodeBinOnPath(environment = process.env) {
|
|
6307
|
+
const nodeBin = dirname3(process.execPath);
|
|
6308
|
+
const current = environment["PATH"] ?? "";
|
|
6309
|
+
const entries = current.split(delimiter).filter(Boolean);
|
|
6310
|
+
if (entries.includes(nodeBin)) return;
|
|
6311
|
+
environment["PATH"] = entries.length > 0 ? `${current}${delimiter}${nodeBin}` : nodeBin;
|
|
6312
|
+
}
|
|
6313
|
+
|
|
6264
6314
|
// src/index.ts
|
|
6265
6315
|
function listenWithRetry(server, port, host, maxRetries = 20, delay = 500) {
|
|
6266
|
-
return new Promise((
|
|
6316
|
+
return new Promise((resolve2, reject) => {
|
|
6267
6317
|
let attempts = 0;
|
|
6268
6318
|
const tryListen = () => {
|
|
6269
6319
|
const onError = (err) => {
|
|
@@ -6279,7 +6329,7 @@ function listenWithRetry(server, port, host, maxRetries = 20, delay = 500) {
|
|
|
6279
6329
|
server.once("error", onError);
|
|
6280
6330
|
server.listen(port, host, () => {
|
|
6281
6331
|
server.removeListener("error", onError);
|
|
6282
|
-
|
|
6332
|
+
resolve2();
|
|
6283
6333
|
});
|
|
6284
6334
|
};
|
|
6285
6335
|
tryListen();
|
|
@@ -6294,6 +6344,7 @@ process.on("uncaughtException", (err) => {
|
|
|
6294
6344
|
process.exit(1);
|
|
6295
6345
|
});
|
|
6296
6346
|
async function main() {
|
|
6347
|
+
ensureNodeBinOnPath();
|
|
6297
6348
|
const { server, shutdown, passphraseHex } = createAgent({
|
|
6298
6349
|
passphraseHex: env.PASSPHRASE_OVERRIDE
|
|
6299
6350
|
});
|