@runeya/runeya 2.0.9 → 2.0.10
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 +159 -44
- package/agent/index.js.map +1 -1
- package/agent-manager-A4E5CXFT-6PJDFN7J.js +8 -0
- package/{chunk-BSPKMRKW.js → chunk-DODGBBTE.js} +27 -11
- package/chunk-DODGBBTE.js.map +1 -0
- package/{dist-PSPHMTZN.js → dist-HZBWBT6S.js} +37 -14
- package/dist-HZBWBT6S.js.map +1 -0
- package/index.js +2 -1
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/web/assets/{AddressBar.vue-BOHUxRhN.js → AddressBar.vue-D_8vQPIF.js} +1 -1
- package/web/assets/{AgentScalarChatInterface.vue-Cxxiyyj8.js → AgentScalarChatInterface.vue-Be-LbA03.js} +1 -1
- package/web/assets/{AgentTerminalPage-D-T5emEl.js → AgentTerminalPage-BZmmd1H1.js} +1 -1
- package/web/assets/AiChatPage-kTk6yC6d.js +1 -0
- package/web/assets/AppLayout-CDtyYNWp.css +1 -0
- package/web/assets/AppLayout-jbNML_m4.js +1 -0
- package/web/assets/{AuditPage-DZiwogoY.js → AuditPage-S4kDjrZ5.js} +1 -1
- package/web/assets/{CodeInput.vue-8aNMYCYM.js → CodeInput.vue-nIhSM0FX.js} +1 -1
- package/web/assets/{Collection.vue-N8zZa4pa.js → Collection.vue-CkwnxBu4.js} +1 -1
- package/web/assets/{CollectionAuthentication.vue-cJOxjafo.js → CollectionAuthentication.vue-CiZinGpr.js} +1 -1
- package/web/assets/CollectionCookies.vue-BLEJqAhX.js +1 -0
- package/web/assets/{CollectionEnvironment.vue-DWPTZ8qx.js → CollectionEnvironment.vue-3bWtuG1B.js} +1 -1
- package/web/assets/{CollectionOverview.vue-1Qf130d5.js → CollectionOverview.vue-BheZFfD3.js} +1 -1
- package/web/assets/CollectionScripts.vue-CsY6tWxk.js +1 -0
- package/web/assets/{CollectionServers.vue-h7E03W0v.js → CollectionServers.vue-Ja8mYDaK.js} +1 -1
- package/web/assets/{CollectionSettings.vue-CFrOwl7U.js → CollectionSettings.vue-DOB9JUg8.js} +1 -1
- package/web/assets/CollectionSync.vue-B-uKwdTU.js +1 -0
- package/web/assets/{CommandActionInput.vue-L7AcEf6T.js → CommandActionInput.vue-BBijVqe7.js} +1 -1
- package/web/assets/{Cookies.vue-_P19OjMm.js → Cookies.vue-DgVzSolJ.js} +1 -1
- package/web/assets/{DashboardPage-BUDWnuJT.js → DashboardPage-BwZPpURp.js} +1 -1
- package/web/assets/{DataTable.vue-DYVeGQPP.js → DataTable.vue-DXTWz2Vi.js} +1 -1
- package/web/assets/{DataTableCheckbox.vue-n2xCTJj1.js → DataTableCheckbox.vue-BA5yHmxd.js} +1 -1
- package/web/assets/{DataTableHeader.vue-ByesjY2f.js → DataTableHeader.vue-U2le7KBO.js} +1 -1
- package/web/assets/{DataTableInput.vue-uPpuKzrX.js → DataTableInput.vue-DpeNUUXc.js} +1 -1
- package/web/assets/{DeleteSidebarListElement.vue-CBIb58rU.js → DeleteSidebarListElement.vue-C2SV2geU.js} +1 -1
- package/web/assets/{EditSidebarListElement.vue-DqTVSZtI.js → EditSidebarListElement.vue-DvvYjTMO.js} +1 -1
- package/web/assets/{EditorIcon-B70ii4EM.js → EditorIcon-BPEaZrXC.js} +1 -1
- package/web/assets/{EmptyState.vue-CcnWPtfW.js → EmptyState.vue-Be8_w2rR.js} +1 -1
- package/web/assets/{Environment.vue-Cgx06nkH.js → Environment.vue-D0PdeVIp.js} +1 -1
- package/web/assets/{EnvironmentForm-iBZzqZKd.js → EnvironmentForm-Dm3dFrSU.js} +2 -2
- package/web/assets/{EnvironmentFormPage-YVxAAreT.js → EnvironmentFormPage-ByVELlly.js} +1 -1
- package/web/assets/{EnvironmentListPage-CHYDJ_c-.js → EnvironmentListPage-DvaTK4NF.js} +1 -1
- package/web/assets/{EnvironmentModal.vue-BJNYZuPC.js → EnvironmentModal.vue-Bssf0U5X.js} +1 -1
- package/web/assets/{EnvironmentSelector-BZn_taec.js → EnvironmentSelector-4kpQpg5e.js} +1 -1
- package/web/assets/{Form.vue-NLXFw40d.js → Form.vue-Dv4a31zh.js} +1 -1
- package/web/assets/{IconSelector.vue-Ykh6DAln.js → IconSelector.vue-BsYvff6K.js} +1 -1
- package/web/assets/KanbanBoardPage-7rLK-ucb.js +141 -0
- package/web/assets/{KanbanListPage-DMNSYO_o.js → KanbanListPage-Dn35VrDc.js} +1 -1
- package/web/assets/{LaunchProjectPage-DSyBuhky.js → LaunchProjectPage-Byemtd9C.js} +1 -1
- package/web/assets/{LaunchServicesPage-CiGkiqwE.js → LaunchServicesPage-CHiV6T5Y.js} +1 -1
- package/web/assets/{LogViewer-DBVkaZnm.js → LogViewer-KtrKiUZw.js} +1 -1
- package/web/assets/{ProcessControls-Cya4eb3d.js → ProcessControls-DfFxf6jZ.js} +1 -1
- package/web/assets/ProcessDetailPage-BOI85Xo7.js +1 -0
- package/web/assets/ProcessDetailPage-CzGUsQM9.css +1 -0
- package/web/assets/ProcessMetrics-CLa8mdh2.js +51 -0
- package/web/assets/{ProjectDetailPage-a1lTAjKP.js → ProjectDetailPage-CTEt0DSq.js} +1 -1
- package/web/assets/{ProjectListPage-Dewqu8Dm.js → ProjectListPage-BrTIxp9K.js} +1 -1
- package/web/assets/{RandomJobTestPage-E6mevkqw.js → RandomJobTestPage-D2OB5pqD.js} +1 -1
- package/web/assets/{Request.vue-DQPTi6ur.js → Request.vue-DHQd9eyp.js} +1 -1
- package/web/assets/{RequestAuth.vue-DV5nNO3f.js → RequestAuth.vue-CEVOgzEk.js} +1 -1
- package/web/assets/{RequestRoot.vue-DKlASKU5.js → RequestRoot.vue-BEtC7IEP.js} +1 -1
- package/web/assets/{ScalarAsciiArt.vue-mk9jZSKh.js → ScalarAsciiArt.vue-CyYmv9BB.js} +1 -1
- package/web/assets/{ScalarIconEyeSlash.vue-DWKhR_BX.js → ScalarIconEyeSlash.vue-qR90sHHe.js} +1 -1
- package/web/assets/{ScalarIconTrash.vue-CtSwrO5S.js → ScalarIconTrash.vue-Ll6Zw6_W.js} +1 -1
- package/web/assets/{ScenarioEditorPage-DogHTbNU.js → ScenarioEditorPage-xCx9aW1X.js} +1 -1
- package/web/assets/{ServerVariablesForm.vue-DYmWiAuz.js → ServerVariablesForm.vue-D9sjD4AT.js} +1 -1
- package/web/assets/{ServiceControlsBar-B8Sm6p9E.js → ServiceControlsBar-DKYIgScL.js} +1 -1
- package/web/assets/ServiceDetailPage-B5qBCc9A.js +2 -0
- package/web/assets/ServiceDetailPage-znbWajpt.css +1 -0
- package/web/assets/ServiceFormPage-BNpWmyj_.js +1 -0
- package/web/assets/{Settings.vue-buoYkM3l.js → Settings.vue-DWPIjz57.js} +1 -1
- package/web/assets/SettingsPage-C5lWJT0Z.js +225 -0
- package/web/assets/SettingsPage-CgJN_IL7.css +1 -0
- package/web/assets/{SetupKeyPage-BdSpJPDR.js → SetupKeyPage-BiqO4PQr.js} +1 -1
- package/web/assets/{SetupPage-BsWaVllB.js → SetupPage-FEUuQSQ2.js} +1 -1
- package/web/assets/{Sidebar.vue-DntMEn5m.js → Sidebar.vue-DVHNacfA.js} +1 -1
- package/web/assets/{SidebarButton.vue-DTin2zI2.js → SidebarButton.vue-C4QDgSym.js} +1 -1
- package/web/assets/{SidebarListElement.vue-zlfRLuE5.js → SidebarListElement.vue-Ch1aI_Bz.js} +1 -1
- package/web/assets/{UnlockPage-CmwRV1XA.js → UnlockPage-Dhg0hoP-.js} +1 -1
- package/web/assets/VariablesTable-DFJHJ9DF.js +1 -0
- package/web/assets/{ViewLayout.vue-C7w_U_o6.js → ViewLayout.vue-svdAMKVP.js} +1 -1
- package/web/assets/{ViewLayoutContent.vue-CAXM5eIo.js → ViewLayoutContent.vue-CAixUN8B.js} +1 -1
- package/web/assets/{ViewLayoutSection.vue-BzJIsja7.js → ViewLayoutSection.vue-C9VAyihF.js} +1 -1
- package/web/assets/{active-entities-C2TbBQeI.js → active-entities-Dpd4ny38.js} +1 -1
- package/web/assets/{api-reference-BJkGMKQj.js → api-reference-C9jD1TQ9.js} +1 -1
- package/web/assets/autocomplete-Do-EC8XW.js +422 -0
- package/web/assets/{card-D5_gGGD-.js → card-CeTOcGyS.js} +1 -1
- package/web/assets/{checkbox-C0sXsL9e.js → checkbox-C2hHZbMO.js} +1 -1
- package/web/assets/{chip-rnk9_cKV.js → chip-CD3EONN7.js} +1 -1
- package/web/assets/{column-ChvIrUdH.js → column-xfOef4Rh.js} +1 -1
- package/web/assets/{core-wYvkV3-A.js → core-Dq8cnTTd.js} +1 -1
- package/web/assets/{cssMode-DdlczEni.js → cssMode-BzsFOrHs.js} +1 -1
- package/web/assets/{dist-DeOvPbza.js → dist-BmCpMB7W.js} +1 -1
- package/web/assets/{dist-ZJ37S89a.js → dist-CQoPOD_o.js} +20 -20
- package/web/assets/{dist-DBBhfLmf.js → dist-CiBpb7F_.js} +3 -3
- package/web/assets/{dist-BHh6fQzR.js → dist-US_vG96F.js} +1 -1
- package/web/assets/{divider-D6L7p-FU.js → divider-C7F2jaMI.js} +1 -1
- package/web/assets/{editor.store-CWtgIxvE.js → editor.store-Dzhoqquh.js} +1 -1
- package/web/assets/{fieldset-CiwzR0un.js → fieldset-kJDAoVaz.js} +1 -1
- package/web/assets/{freemarker2-_wLEdPSz.js → freemarker2-qyf3DfQl.js} +1 -1
- package/web/assets/{handlebars-66zKrSAk.js → handlebars-Dt_j38Ok.js} +1 -1
- package/web/assets/{html-oM24gnvF.js → html-BM6JBSDe.js} +1 -1
- package/web/assets/{htmlMode-D65_fKu-.js → htmlMode-BWrj-eTf.js} +1 -1
- package/web/assets/index-DXutsd9M.css +1 -0
- package/web/assets/{index-D5xJxOo2.js → index-Dviyssba.js} +229 -229
- package/web/assets/{javascript-D-njx6Yh.js → javascript-Nwj2LVeE.js} +1 -1
- package/web/assets/{jsonMode-bqHogKpM.js → jsonMode-xQ2R28Fq.js} +1 -1
- package/web/assets/{keyboard-BzTLpobK.js → keyboard-CidI6qyD.js} +1 -1
- package/web/assets/{lib-CPo2W-Kx.js → lib-Bpt_o5V9.js} +4 -4
- package/web/assets/{library-DmdL5Pgv.js → library-CcEqwrWR.js} +1 -1
- package/web/assets/{liquid-BDL70fhI.js → liquid-CNc1r-Ln.js} +1 -1
- package/web/assets/{mdx-Bo_N_Jd-.js → mdx-D5yTipSh.js} +1 -1
- package/web/assets/{mediaTypes-Cnm-r_sv.js → mediaTypes-pLZCmXiT.js} +1 -1
- package/web/assets/{message-gtjFpAbc.js → message-B6M86BRU.js} +1 -1
- package/web/assets/{minus-C5Lsl7Wp.js → minus-wesZvWq4.js} +1 -1
- package/web/assets/{multiselect-BlmCsiSW.js → multiselect-CHEmtEFg.js} +1 -1
- package/web/assets/{password-RYOg4soC.js → password-ISam7EYg.js} +1 -1
- package/web/assets/{plus-C52I3-BN.js → plus-BBMmFC_c.js} +1 -1
- package/web/assets/{pretty-ms-BBvjfSt1.js → pretty-ms-Bj2IaA2r.js} +1 -1
- package/web/assets/process.store-cvjJzD3H.js +1 -0
- package/web/assets/{project.store-emr8mjg8.js → project.store-C94-7i6c.js} +1 -1
- package/web/assets/{python-D1UXSNgK.js → python-BOLsEvIQ.js} +1 -1
- package/web/assets/{radiobutton-B0t-WlKP.js → radiobutton-DwoOAEAF.js} +1 -1
- package/web/assets/{razor-Bd4GOtMe.js → razor-JsBDv4HY.js} +1 -1
- package/web/assets/router-BgHCboHx.js +1 -0
- package/web/assets/{settings.store-CDr0Mia7.js → settings.store-BGScNTnu.js} +1 -1
- package/web/assets/{store-CZKREOuj.js → store-a88gBDkh.js} +1 -1
- package/web/assets/{tabpanel-geoVG-sX.js → tabpanel-DBInUEl5.js} +1 -1
- package/web/assets/{tag-Dv5CaUPa.js → tag-CQlI4fJK.js} +1 -1
- package/web/assets/trpc-CgAubgRH.js +1 -0
- package/web/assets/{tsMode-BkM4CkKr.js → tsMode-C7uad5vV.js} +1 -1
- package/web/assets/{typescript-CUKl0qxN.js → typescript-C2IozRX9.js} +1 -1
- package/web/assets/{urls-BqL-MrG5.js → urls-BuNgEu0U.js} +1 -1
- package/web/assets/{use-tree-walker-E64HILpa.js → use-tree-walker-CJHEPXgB.js} +1 -1
- package/web/assets/useAiChatDrawer-D6TRHaNu.js +1 -0
- package/web/assets/{useClipboard-Bep2crMO.js → useClipboard-DtO-z5Ls.js} +1 -1
- package/web/assets/{useLayout-F9XKAPPL.js → useLayout-D-FCdkqa.js} +1 -1
- package/web/assets/{usePluginManager-yL67GqCi.js → usePluginManager-CPTBi3rk.js} +1 -1
- package/web/assets/{useSidebar-DVRRagIa.js → useSidebar-BoK12gD1.js} +1 -1
- package/web/assets/{vue-router-uE6ClrN-.js → vue-router-DSROI5EH.js} +1 -1
- package/web/assets/{xml-DMOW2yTg.js → xml-DtJwg-5S.js} +1 -1
- package/web/assets/{yaml-D2q3K0ZL.js → yaml-sPGHMYDm.js} +1 -1
- package/web/index.html +2 -2
- package/agent-manager-UP3PJ35X-LO6B3XKF.js +0 -8
- package/chunk-BSPKMRKW.js.map +0 -1
- package/dist-PSPHMTZN.js.map +0 -1
- package/web/assets/AgentPage-BTWkJvqr.css +0 -1
- package/web/assets/AgentPage-DFHxsu-9.js +0 -2
- package/web/assets/AiChatPage-C81mFvv5.js +0 -1
- package/web/assets/ApiDocsPage-CMGvcGEJ.js +0 -5
- package/web/assets/ApiDocsPage-D2Z0wqGZ.css +0 -1
- package/web/assets/AppLayout-D10vX1fo.js +0 -1
- package/web/assets/AppLayout-sngalCCj.css +0 -1
- package/web/assets/CollectionCookies.vue-DrFQqbwv.js +0 -1
- package/web/assets/CollectionScripts.vue-DhcFFz80.js +0 -1
- package/web/assets/CollectionSync.vue-PV_tIrJS.js +0 -1
- package/web/assets/KanbanBoardPage-gtXv0ZhK.js +0 -141
- package/web/assets/ProcessDetailPage-8ypC6zkc.js +0 -1
- package/web/assets/ProcessDetailPage-B0qGKtvQ.css +0 -1
- package/web/assets/ProcessMetrics-CxRgbaUS.js +0 -1
- package/web/assets/ServiceDetailPage-BriHTCpT.css +0 -1
- package/web/assets/ServiceDetailPage-DpWLccOg.js +0 -2
- package/web/assets/ServiceFormPage-DQbOgtB3.js +0 -1
- package/web/assets/SettingsPage-CCjZq5jP.js +0 -508
- package/web/assets/SettingsPage-vGhb_tlY.css +0 -1
- package/web/assets/VariablesTable-C8lxLV1V.js +0 -1
- package/web/assets/autocomplete-CxPmwkcZ.js +0 -308
- package/web/assets/index-Pqvy10Qz.css +0 -1
- package/web/assets/process.store-3BOses3z.js +0 -1
- package/web/assets/router-DHhyM3YQ.js +0 -1
- package/web/assets/toggleswitch-DNzwv4Lc.js +0 -115
- package/web/assets/trpc-B-vyi6vd.js +0 -1
- package/web/assets/useAiChatDrawer-uS6dsG6x.js +0 -1
- /package/{agent-manager-UP3PJ35X-LO6B3XKF.js.map → agent-manager-A4E5CXFT-6PJDFN7J.js.map} +0 -0
- /package/web/assets/{_plugin-vue_export-helper-C7ztIXtE.js → _plugin-vue_export-helper-BVSTY9ge.js} +0 -0
- /package/web/assets/{abap-C4tHUUCU.js → abap-BF8nUS5p.js} +0 -0
- /package/web/assets/{apex-6cG6aG-w.js → apex-Bbj_Fak2.js} +0 -0
- /package/web/assets/{azcli-51BngrSU.js → azcli-B8w3JS7J.js} +0 -0
- /package/web/assets/{base64-uZi92-DX.js → base64-CG47Jc3Y.js} +0 -0
- /package/web/assets/{bat-BDcdVSIt.js → bat-CaNuqacB.js} +0 -0
- /package/web/assets/{bicep-Cg0BCcky.js → bicep-DAvnLugW.js} +0 -0
- /package/web/assets/{cameligo-C3ekVui9.js → cameligo-BlI8LCmP.js} +0 -0
- /package/web/assets/{clojure-Ci5xNgh_.js → clojure-CxxhrBQl.js} +0 -0
- /package/web/assets/{coffee-xsRz4GKy.js → coffee-SkbnTBhO.js} +0 -0
- /package/web/assets/{cpp-B2gW4e23.js → cpp-Dm2HJxj0.js} +0 -0
- /package/web/assets/{csharp-SRujvHqy.js → csharp-BOGHPGcq.js} +0 -0
- /package/web/assets/{csp-Cr-ll6gP.js → csp-CMA_7tOs.js} +0 -0
- /package/web/assets/{css-BYTJZCno.js → css-DU8LSGcn.js} +0 -0
- /package/web/assets/{cypher-AmQ0R_D3.js → cypher-BZPsEDmT.js} +0 -0
- /package/web/assets/{dart-Du01a0J5.js → dart-C1tIJhFk.js} +0 -0
- /package/web/assets/{dist-DkaYBczY.js → dist-BPIMeATj.js} +0 -0
- /package/web/assets/{dockerfile-Dtlk9wqf.js → dockerfile-z4dmGi5q.js} +0 -0
- /package/web/assets/{ecl-CpmVnLkK.js → ecl-Rv9JwhOI.js} +0 -0
- /package/web/assets/{elixir-B3MVAC8k.js → elixir-DL6xFSed.js} +0 -0
- /package/web/assets/{flow9-Chkly0RN.js → flow9-DFZ52-2d.js} +0 -0
- /package/web/assets/{fsharp-CZvMkppk.js → fsharp-RvVOB9Dm.js} +0 -0
- /package/web/assets/{go-dT2iT7lt.js → go-B2USMDMv.js} +0 -0
- /package/web/assets/{graphql-DmObWyBD.js → graphql-CsHpCYeJ.js} +0 -0
- /package/web/assets/{hcl-D1x5Oyp4.js → hcl-CK021J-J.js} +0 -0
- /package/web/assets/{ini-Bg2o1S3s.js → ini-v1EoSUxR.js} +0 -0
- /package/web/assets/{java-XviKSSn5.js → java-CUXpSPxY.js} +0 -0
- /package/web/assets/{julia-DfTIwUGh.js → julia-DwKveiZg.js} +0 -0
- /package/web/assets/{kotlin-CNaIBh9d.js → kotlin-SsG_4ZBt.js} +0 -0
- /package/web/assets/{less-D7o76tXd.js → less-BviquM8A.js} +0 -0
- /package/web/assets/{lexon-Dd374QjV.js → lexon-C8G_qWst.js} +0 -0
- /package/web/assets/{lua-DZKuiFbY.js → lua-xqYje_o5.js} +0 -0
- /package/web/assets/{m3-CbwRx9Bb.js → m3-B5PetinG.js} +0 -0
- /package/web/assets/{markdown-DwLB5Rib.js → markdown-BksexNux.js} +0 -0
- /package/web/assets/{mips-DLbIq1yM.js → mips-DKSTezUQ.js} +0 -0
- /package/web/assets/{msdax-D4IjoZ6m.js → msdax-SeFNE86e.js} +0 -0
- /package/web/assets/{mysql-DQL_jy6H.js → mysql-5TQWJDdB.js} +0 -0
- /package/web/assets/{objective-c-D74wM5bv.js → objective-c-DeaYl08g.js} +0 -0
- /package/web/assets/{pascal-5tRlZk4O.js → pascal-CGBtIfZg.js} +0 -0
- /package/web/assets/{pascaligo-CAE4rAEt.js → pascaligo-B85wuk0w.js} +0 -0
- /package/web/assets/{perl-DREAbuQT.js → perl-Bl61zsEQ.js} +0 -0
- /package/web/assets/{pgsql-DASKdyAW.js → pgsql-KgXv5Cq7.js} +0 -0
- /package/web/assets/{php-C37ZWqoO.js → php-KRRf0kxu.js} +0 -0
- /package/web/assets/{pla-v5u9R8i1.js → pla-CFpO6lSz.js} +0 -0
- /package/web/assets/{postiats-Szt5m-7G.js → postiats-B0jQ-DXO.js} +0 -0
- /package/web/assets/{powerquery-BzVrUSu3.js → powerquery-T9Ge5xUx.js} +0 -0
- /package/web/assets/{powershell-BdbPbX_X.js → powershell-rmYjKoE4.js} +0 -0
- /package/web/assets/{protobuf-qqDa50tu.js → protobuf-B--9ME3E.js} +0 -0
- /package/web/assets/{pug-Cu20UQ5w.js → pug-y0-ppnAV.js} +0 -0
- /package/web/assets/{qsharp-DcbHL5X7.js → qsharp-DobgOAC8.js} +0 -0
- /package/web/assets/{r-Bvig6Flk.js → r-BHQZIThn.js} +0 -0
- /package/web/assets/{redis-BxHDcW3-.js → redis-DMHMVIni.js} +0 -0
- /package/web/assets/{redshift-B8dvlzjH.js → redshift-ilRjY5HF.js} +0 -0
- /package/web/assets/{restructuredtext-npodtAFM.js → restructuredtext-jr4YYJbv.js} +0 -0
- /package/web/assets/{ruby-DiofbcJD.js → ruby-D-h_0NIs.js} +0 -0
- /package/web/assets/{rust-BjYid3-m.js → rust-VxeTSQU2.js} +0 -0
- /package/web/assets/{sb-CzcPAP71.js → sb-BlhKufrP.js} +0 -0
- /package/web/assets/{scala-Ci4wFrYi.js → scala-IAk6nSCU.js} +0 -0
- /package/web/assets/{scheme-D3iWhvP7.js → scheme-Dggdm5LS.js} +0 -0
- /package/web/assets/{scss-DdlqDgmu.js → scss-Bzj9Cp1q.js} +0 -0
- /package/web/assets/{shell-Bawb9gbH.js → shell-CSwYJdGJ.js} +0 -0
- /package/web/assets/{solidity-Z2Sq8PBC.js → solidity-DnWqIXnk.js} +0 -0
- /package/web/assets/{sophia--yD-H1Ow.js → sophia-ClaYC_5N.js} +0 -0
- /package/web/assets/{sparql-0vv3-wLi.js → sparql-CfjIZAcz.js} +0 -0
- /package/web/assets/{sql-0gdWKhmJ.js → sql-DxdJ7snd.js} +0 -0
- /package/web/assets/{st-rE-x-DTZ.js → st-DJgQE1uj.js} +0 -0
- /package/web/assets/{swift-CSKeG8Ne.js → swift-5cz3wIvv.js} +0 -0
- /package/web/assets/{systemverilog-CblNM3Im.js → systemverilog-C8-7QuIt.js} +0 -0
- /package/web/assets/{tcl-BYnzj-GZ.js → tcl-C99u42o5.js} +0 -0
- /package/web/assets/{twig-DiGWiEtp.js → twig-Cv9kOcBK.js} +0 -0
- /package/web/assets/{typespec-a6xMcpXw.js → typespec-DF1s-ehc.js} +0 -0
- /package/web/assets/{uuid-B9GFVXPm.js → uuid-6HQMUkhT.js} +0 -0
- /package/web/assets/{vb---51HVMC.js → vb-4mpz9ITX.js} +0 -0
- /package/web/assets/{w3c-keyname-DDCGDLuI.js → w3c-keyname-emj7Fjc1.js} +0 -0
- /package/web/assets/{wgsl-2A8z4pT5.js → wgsl-xExw6Z08.js} +0 -0
package/agent/index.js
CHANGED
|
@@ -397,6 +397,7 @@ var DockerRunner = class {
|
|
|
397
397
|
);
|
|
398
398
|
return {
|
|
399
399
|
pid: void 0,
|
|
400
|
+
containerName,
|
|
400
401
|
stdout,
|
|
401
402
|
stderr,
|
|
402
403
|
exitPromise,
|
|
@@ -526,6 +527,7 @@ var DockerRunner = class {
|
|
|
526
527
|
})();
|
|
527
528
|
return {
|
|
528
529
|
pid: void 0,
|
|
530
|
+
containerName,
|
|
529
531
|
stdout,
|
|
530
532
|
stderr,
|
|
531
533
|
exitPromise,
|
|
@@ -572,6 +574,7 @@ var DockerRunner = class {
|
|
|
572
574
|
);
|
|
573
575
|
return {
|
|
574
576
|
pid: void 0,
|
|
577
|
+
containerName,
|
|
575
578
|
stdout,
|
|
576
579
|
stderr,
|
|
577
580
|
exitPromise,
|
|
@@ -902,7 +905,13 @@ var NotificationPreferencesSchema = z5.object({
|
|
|
902
905
|
ai_conversation_error: z5.boolean().default(true),
|
|
903
906
|
service_error_log: z5.boolean().default(true),
|
|
904
907
|
service_status_changed: z5.boolean().default(true),
|
|
905
|
-
service_health_changed: z5.boolean().default(true)
|
|
908
|
+
service_health_changed: z5.boolean().default(true),
|
|
909
|
+
/** Service IDs excluded from error-log notifications */
|
|
910
|
+
service_error_log_excluded: z5.array(z5.string().max(100)).max(500).default([]),
|
|
911
|
+
/** Service IDs excluded from status-change notifications */
|
|
912
|
+
service_status_changed_excluded: z5.array(z5.string().max(100)).max(500).default([]),
|
|
913
|
+
/** Service IDs excluded from health-change notifications */
|
|
914
|
+
service_health_changed_excluded: z5.array(z5.string().max(100)).max(500).default([])
|
|
906
915
|
});
|
|
907
916
|
var SettingsSchema = z5.object({
|
|
908
917
|
mode: z5.enum(["local-simple", "cloud"]),
|
|
@@ -931,7 +940,10 @@ var SettingsPrivateSchema = z5.object({
|
|
|
931
940
|
ai_conversation_error: true,
|
|
932
941
|
service_error_log: true,
|
|
933
942
|
service_status_changed: true,
|
|
934
|
-
service_health_changed: true
|
|
943
|
+
service_health_changed: true,
|
|
944
|
+
service_error_log_excluded: [],
|
|
945
|
+
service_status_changed_excluded: [],
|
|
946
|
+
service_health_changed_excluded: []
|
|
935
947
|
})),
|
|
936
948
|
traefikConfig: TraefikConfigSchema.optional()
|
|
937
949
|
});
|
|
@@ -948,9 +960,6 @@ var safePath = z6.string().min(1).max(4096).refine(
|
|
|
948
960
|
).refine(
|
|
949
961
|
(p) => !/(^|[/\\])\.\.([/\\]|$)/.test(p),
|
|
950
962
|
{ message: "path must not contain path-traversal sequences (..)" }
|
|
951
|
-
).refine(
|
|
952
|
-
(p) => p.startsWith("/") || /^[A-Za-z]:[/\\]/.test(p),
|
|
953
|
-
{ message: "path must be absolute" }
|
|
954
963
|
);
|
|
955
964
|
var ConsoleLogSourceSchema = z6.object({
|
|
956
965
|
type: z6.literal("console")
|
|
@@ -959,7 +968,8 @@ var FileLogSourceSchema = z6.object({
|
|
|
959
968
|
type: z6.literal("file"),
|
|
960
969
|
path: safePath,
|
|
961
970
|
encoding: z6.string().max(32).default("utf-8"),
|
|
962
|
-
startFromEnd: z6.boolean().default(true)
|
|
971
|
+
startFromEnd: z6.boolean().default(true),
|
|
972
|
+
createIfNotExists: z6.boolean().default(false)
|
|
963
973
|
});
|
|
964
974
|
var MongoLogSourceSchema = z6.object({
|
|
965
975
|
type: z6.literal("mongo"),
|
|
@@ -2010,6 +2020,21 @@ var FileLogSource = class extends EventEmitter2 {
|
|
|
2010
2020
|
this.emitSystemLog(processId, `[FileLogSource] Permission denied: ${this.config.path}`, "error");
|
|
2011
2021
|
return;
|
|
2012
2022
|
}
|
|
2023
|
+
if (nodeErr.code === "ENOENT" && this.config.createIfNotExists) {
|
|
2024
|
+
try {
|
|
2025
|
+
await fsPromises.mkdir(
|
|
2026
|
+
(await import("path")).dirname(this.config.path),
|
|
2027
|
+
{ recursive: true }
|
|
2028
|
+
);
|
|
2029
|
+
await fsPromises.writeFile(this.config.path, "", { flag: "a" });
|
|
2030
|
+
this.emitSystemLog(processId, `[FileLogSource] File created: ${this.config.path}`, "info");
|
|
2031
|
+
break;
|
|
2032
|
+
} catch (createErr) {
|
|
2033
|
+
const ce = createErr;
|
|
2034
|
+
this.emitSystemLog(processId, `[FileLogSource] Failed to create file: ${ce.message}`, "error");
|
|
2035
|
+
return;
|
|
2036
|
+
}
|
|
2037
|
+
}
|
|
2013
2038
|
attempts++;
|
|
2014
2039
|
if (attempts >= RETRY_ATTEMPTS) {
|
|
2015
2040
|
this.emitSystemLog(processId, `[FileLogSource] File not found after ${RETRY_ATTEMPTS} retries: ${this.config.path}`, "error");
|
|
@@ -2475,7 +2500,47 @@ function createLogSource(config, logBuffer, logParser) {
|
|
|
2475
2500
|
|
|
2476
2501
|
// src/services/metrics-collector.ts
|
|
2477
2502
|
import pidusage from "pidusage";
|
|
2503
|
+
import { execFile } from "child_process";
|
|
2478
2504
|
import { EventEmitter as EventEmitter5 } from "events";
|
|
2505
|
+
async function getDockerStats(containerName) {
|
|
2506
|
+
return new Promise((resolve) => {
|
|
2507
|
+
execFile(
|
|
2508
|
+
"docker",
|
|
2509
|
+
["stats", "--no-stream", "--format", "{{json .}}", containerName],
|
|
2510
|
+
{ timeout: 5e3 },
|
|
2511
|
+
(err, stdout) => {
|
|
2512
|
+
if (err || !stdout.trim()) {
|
|
2513
|
+
resolve(null);
|
|
2514
|
+
return;
|
|
2515
|
+
}
|
|
2516
|
+
try {
|
|
2517
|
+
const data = JSON.parse(stdout.trim());
|
|
2518
|
+
const cpu = parseFloat(data.CPUPerc.replace("%", ""));
|
|
2519
|
+
const memStr = data.MemUsage.split("/")[0].trim();
|
|
2520
|
+
const memory = parseMemBytes(memStr);
|
|
2521
|
+
resolve({ cpu: isNaN(cpu) ? 0 : cpu, memory });
|
|
2522
|
+
} catch {
|
|
2523
|
+
resolve(null);
|
|
2524
|
+
}
|
|
2525
|
+
}
|
|
2526
|
+
);
|
|
2527
|
+
});
|
|
2528
|
+
}
|
|
2529
|
+
function parseMemBytes(str) {
|
|
2530
|
+
const m = str.match(/^([\d.]+)\s*(B|kB|MB|MiB|GiB|GB)$/i);
|
|
2531
|
+
if (!m) return 0;
|
|
2532
|
+
const val = parseFloat(m[1]);
|
|
2533
|
+
const unit = m[2].toLowerCase();
|
|
2534
|
+
const multipliers = {
|
|
2535
|
+
b: 1,
|
|
2536
|
+
kb: 1e3,
|
|
2537
|
+
mb: 1e6,
|
|
2538
|
+
mib: 1024 * 1024,
|
|
2539
|
+
gib: 1024 ** 3,
|
|
2540
|
+
gb: 1e9
|
|
2541
|
+
};
|
|
2542
|
+
return Math.round(val * (multipliers[unit] ?? 1));
|
|
2543
|
+
}
|
|
2479
2544
|
var MetricsCollector = class extends EventEmitter5 {
|
|
2480
2545
|
intervals = /* @__PURE__ */ new Map();
|
|
2481
2546
|
intervalMs;
|
|
@@ -2483,7 +2548,7 @@ var MetricsCollector = class extends EventEmitter5 {
|
|
|
2483
2548
|
super();
|
|
2484
2549
|
this.intervalMs = intervalMs;
|
|
2485
2550
|
}
|
|
2486
|
-
/** Start collecting metrics for a process */
|
|
2551
|
+
/** Start collecting metrics for a native process (by PID). */
|
|
2487
2552
|
startCollecting(processId, pid) {
|
|
2488
2553
|
this.stopCollecting(processId);
|
|
2489
2554
|
const interval = setInterval(async () => {
|
|
@@ -2502,6 +2567,25 @@ var MetricsCollector = class extends EventEmitter5 {
|
|
|
2502
2567
|
}, this.intervalMs);
|
|
2503
2568
|
this.intervals.set(processId, interval);
|
|
2504
2569
|
}
|
|
2570
|
+
/** Start collecting metrics for a Docker container (by container name). */
|
|
2571
|
+
startCollectingDocker(processId, containerName) {
|
|
2572
|
+
this.stopCollecting(processId);
|
|
2573
|
+
const interval = setInterval(async () => {
|
|
2574
|
+
const stats = await getDockerStats(containerName);
|
|
2575
|
+
if (!stats) {
|
|
2576
|
+
this.stopCollecting(processId);
|
|
2577
|
+
return;
|
|
2578
|
+
}
|
|
2579
|
+
const metrics = {
|
|
2580
|
+
processId,
|
|
2581
|
+
cpu: stats.cpu,
|
|
2582
|
+
memory: stats.memory,
|
|
2583
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
2584
|
+
};
|
|
2585
|
+
this.emit("metrics", metrics);
|
|
2586
|
+
}, this.intervalMs);
|
|
2587
|
+
this.intervals.set(processId, interval);
|
|
2588
|
+
}
|
|
2505
2589
|
/** Stop collecting metrics for a process */
|
|
2506
2590
|
stopCollecting(processId) {
|
|
2507
2591
|
const interval = this.intervals.get(processId);
|
|
@@ -2510,23 +2594,31 @@ var MetricsCollector = class extends EventEmitter5 {
|
|
|
2510
2594
|
this.intervals.delete(processId);
|
|
2511
2595
|
}
|
|
2512
2596
|
}
|
|
2513
|
-
/** Get current metrics for a process (one-shot, uses first active PID) */
|
|
2597
|
+
/** Get current metrics for a process (one-shot, uses first active PID or container name). */
|
|
2514
2598
|
async getMetrics(processId) {
|
|
2515
2599
|
const proc = processStore.get(processId);
|
|
2516
2600
|
if (!proc) return null;
|
|
2517
2601
|
const activePid = proc.commandProcesses.find((cp) => cp.pid !== null)?.pid;
|
|
2518
|
-
if (
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2602
|
+
if (activePid) {
|
|
2603
|
+
try {
|
|
2604
|
+
const stats = await pidusage(activePid);
|
|
2605
|
+
return {
|
|
2606
|
+
processId,
|
|
2607
|
+
cpu: stats.cpu,
|
|
2608
|
+
memory: stats.memory,
|
|
2609
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
2610
|
+
};
|
|
2611
|
+
} catch {
|
|
2612
|
+
}
|
|
2613
|
+
}
|
|
2614
|
+
const containerName = proc.commandProcesses.find((cp) => cp.containerName)?.containerName;
|
|
2615
|
+
if (containerName) {
|
|
2616
|
+
const stats = await getDockerStats(containerName);
|
|
2617
|
+
if (stats) {
|
|
2618
|
+
return { processId, ...stats, timestamp: (/* @__PURE__ */ new Date()).toISOString() };
|
|
2619
|
+
}
|
|
2529
2620
|
}
|
|
2621
|
+
return null;
|
|
2530
2622
|
}
|
|
2531
2623
|
/** Stop all collection intervals */
|
|
2532
2624
|
stopAll() {
|
|
@@ -2548,8 +2640,8 @@ import { homedir as homedir4 } from "os";
|
|
|
2548
2640
|
import { z as z20 } from "zod";
|
|
2549
2641
|
|
|
2550
2642
|
// src/services/traefik-manager.ts
|
|
2551
|
-
import { spawn, execFile } from "child_process";
|
|
2552
|
-
import { mkdir as
|
|
2643
|
+
import { spawn, execFile as execFile2 } from "child_process";
|
|
2644
|
+
import { mkdir as mkdir3, writeFile as writeFile3, rename, chmod, access as access2, readFile } from "fs/promises";
|
|
2553
2645
|
import { X509Certificate } from "crypto";
|
|
2554
2646
|
import { join as join2 } from "path";
|
|
2555
2647
|
import { homedir as homedir3, platform } from "os";
|
|
@@ -2575,7 +2667,7 @@ var TraefikManager = class {
|
|
|
2575
2667
|
}
|
|
2576
2668
|
async atomicWrite(filePath, content) {
|
|
2577
2669
|
const tmpPath = filePath + ".tmp";
|
|
2578
|
-
await
|
|
2670
|
+
await writeFile3(tmpPath, content, "utf-8");
|
|
2579
2671
|
await rename(tmpPath, filePath);
|
|
2580
2672
|
}
|
|
2581
2673
|
async applyConfig(config) {
|
|
@@ -2584,7 +2676,7 @@ var TraefikManager = class {
|
|
|
2584
2676
|
await this.stop();
|
|
2585
2677
|
return;
|
|
2586
2678
|
}
|
|
2587
|
-
await
|
|
2679
|
+
await mkdir3(this.dynamicDir, { recursive: true });
|
|
2588
2680
|
await this.writeStaticConfig(config);
|
|
2589
2681
|
await this.regenerateDynamic();
|
|
2590
2682
|
await this.stop();
|
|
@@ -2629,7 +2721,7 @@ var TraefikManager = class {
|
|
|
2629
2721
|
await this.atomicWrite(this.staticConfigPath, yaml);
|
|
2630
2722
|
}
|
|
2631
2723
|
async regenerateDynamic() {
|
|
2632
|
-
await
|
|
2724
|
+
await mkdir3(this.dynamicDir, { recursive: true });
|
|
2633
2725
|
const processes = processStore.getAll();
|
|
2634
2726
|
const entries = processes.flatMap(
|
|
2635
2727
|
(p) => (p.serviceConfig.localUrls ?? []).map((lu) => ({ url: lu.url, port: lu.port }))
|
|
@@ -2714,7 +2806,7 @@ var TraefikManager = class {
|
|
|
2714
2806
|
}
|
|
2715
2807
|
async ensureAcmeJson() {
|
|
2716
2808
|
try {
|
|
2717
|
-
await
|
|
2809
|
+
await writeFile3(this.acmeStorePath, "{}", { flag: "wx" });
|
|
2718
2810
|
} catch (err) {
|
|
2719
2811
|
if (err.code !== "EEXIST") throw err;
|
|
2720
2812
|
}
|
|
@@ -2779,7 +2871,7 @@ var TraefikManager = class {
|
|
|
2779
2871
|
this.debounceTimer = null;
|
|
2780
2872
|
}
|
|
2781
2873
|
await new Promise((resolve) => {
|
|
2782
|
-
|
|
2874
|
+
execFile2("docker", ["rm", "-f", "runeya-traefik"], { timeout: 1e4 }, () => resolve());
|
|
2783
2875
|
});
|
|
2784
2876
|
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
2785
2877
|
}
|
|
@@ -2821,7 +2913,7 @@ var TraefikManager = class {
|
|
|
2821
2913
|
}
|
|
2822
2914
|
async getLogs(lines = 100) {
|
|
2823
2915
|
return new Promise((resolve) => {
|
|
2824
|
-
|
|
2916
|
+
execFile2("docker", ["logs", "--tail", String(lines), "runeya-traefik"], { timeout: 1e4 }, (err, stdout, stderr) => {
|
|
2825
2917
|
if (err) {
|
|
2826
2918
|
resolve("");
|
|
2827
2919
|
return;
|
|
@@ -2840,7 +2932,7 @@ var TraefikManager = class {
|
|
|
2840
2932
|
}
|
|
2841
2933
|
async forceRenewCert() {
|
|
2842
2934
|
if (!this.config?.enabled) throw new Error("Traefik non activ\xE9");
|
|
2843
|
-
await
|
|
2935
|
+
await writeFile3(this.acmeStorePath, "{}", "utf-8");
|
|
2844
2936
|
await chmod(this.acmeStorePath, 384);
|
|
2845
2937
|
await this.stop();
|
|
2846
2938
|
await this.spawnTraefik(this.config);
|
|
@@ -2872,7 +2964,7 @@ var TraefikManager = class {
|
|
|
2872
2964
|
let dockerAvailable = false;
|
|
2873
2965
|
try {
|
|
2874
2966
|
await new Promise((resolve, reject) => {
|
|
2875
|
-
|
|
2967
|
+
execFile2("docker", ["info", "--format", "{{.ServerVersion}}"], { timeout: 5e3 }, (err) => {
|
|
2876
2968
|
if (err) reject(err);
|
|
2877
2969
|
else resolve();
|
|
2878
2970
|
});
|
|
@@ -2892,7 +2984,7 @@ var TraefikManager = class {
|
|
|
2892
2984
|
if (dockerAvailable) {
|
|
2893
2985
|
try {
|
|
2894
2986
|
const output = await new Promise((resolve, reject) => {
|
|
2895
|
-
|
|
2987
|
+
execFile2("docker", ["inspect", "--format", "{{.State.Running}}", "runeya-traefik"], { timeout: 5e3 }, (err, stdout) => {
|
|
2896
2988
|
if (err) reject(err);
|
|
2897
2989
|
else resolve(stdout.trim());
|
|
2898
2990
|
});
|
|
@@ -3390,6 +3482,7 @@ var ProcessManager = class extends EventEmitter7 {
|
|
|
3390
3482
|
commandId: cmd.id,
|
|
3391
3483
|
runnerProcess,
|
|
3392
3484
|
pid: null,
|
|
3485
|
+
containerName: runnerProcess.containerName ?? null,
|
|
3393
3486
|
exitCode: null
|
|
3394
3487
|
};
|
|
3395
3488
|
proc.commandProcesses = [...proc.commandProcesses, cmdProcess];
|
|
@@ -3475,6 +3568,7 @@ var ProcessManager = class extends EventEmitter7 {
|
|
|
3475
3568
|
commandId: cmd.id,
|
|
3476
3569
|
runnerProcess,
|
|
3477
3570
|
pid: runnerProcess.pid ?? null,
|
|
3571
|
+
containerName: runnerProcess.containerName ?? null,
|
|
3478
3572
|
exitCode: null
|
|
3479
3573
|
};
|
|
3480
3574
|
proc.commandProcesses = [...proc.commandProcesses, cmdProcess];
|
|
@@ -3489,6 +3583,8 @@ var ProcessManager = class extends EventEmitter7 {
|
|
|
3489
3583
|
this.consoleLogSource.attach(processId, runnerProcess.stdout, runnerProcess.stderr, runnerProcess.pid ?? null);
|
|
3490
3584
|
if (runnerProcess.pid) {
|
|
3491
3585
|
this.metricsCollector.startCollecting(processId, runnerProcess.pid);
|
|
3586
|
+
} else if (runnerProcess.containerName) {
|
|
3587
|
+
this.metricsCollector.startCollectingDocker(processId, runnerProcess.containerName);
|
|
3492
3588
|
}
|
|
3493
3589
|
runnerProcess.exitPromise.then(({ exitCode, signal, error }) => {
|
|
3494
3590
|
const current = processStore.get(processId);
|
|
@@ -3650,9 +3746,26 @@ var ProcessManager = class extends EventEmitter7 {
|
|
|
3650
3746
|
const proc = this.activeShortcuts.get(key);
|
|
3651
3747
|
if (proc) proc.kill("SIGTERM");
|
|
3652
3748
|
}
|
|
3653
|
-
cancelAdHocCommand(processId) {
|
|
3654
|
-
const
|
|
3655
|
-
if (
|
|
3749
|
+
cancelAdHocCommand(processId, commandId) {
|
|
3750
|
+
const targets = [];
|
|
3751
|
+
if (commandId) {
|
|
3752
|
+
const key = `${processId}:${commandId}`;
|
|
3753
|
+
const proc = this.activeAdHocCommands.get(key);
|
|
3754
|
+
if (proc) targets.push(proc);
|
|
3755
|
+
} else {
|
|
3756
|
+
for (const [key, proc] of this.activeAdHocCommands) {
|
|
3757
|
+
if (key.startsWith(`${processId}:`)) targets.push(proc);
|
|
3758
|
+
}
|
|
3759
|
+
}
|
|
3760
|
+
for (const proc of targets) {
|
|
3761
|
+
proc.kill("SIGTERM");
|
|
3762
|
+
void Promise.race([
|
|
3763
|
+
proc.exitPromise,
|
|
3764
|
+
new Promise((resolve) => setTimeout(resolve, 3e3))
|
|
3765
|
+
]).then((result) => {
|
|
3766
|
+
if (result === void 0) proc.kill("SIGKILL");
|
|
3767
|
+
});
|
|
3768
|
+
}
|
|
3656
3769
|
}
|
|
3657
3770
|
/** Execute a shortcut command and stream its output as logs for the given process */
|
|
3658
3771
|
async executeShortcut(processId, shortcut) {
|
|
@@ -3692,7 +3805,7 @@ var ProcessManager = class extends EventEmitter7 {
|
|
|
3692
3805
|
return { exitCode };
|
|
3693
3806
|
}
|
|
3694
3807
|
/** Execute an ad-hoc command and stream its output as logs for the given process */
|
|
3695
|
-
async executeAdHocCommand(processId, command, cwd) {
|
|
3808
|
+
async executeAdHocCommand(processId, command, cwd, commandId) {
|
|
3696
3809
|
const proc = processStore.get(processId);
|
|
3697
3810
|
if (!proc) throw new Error(`Process ${processId} not found`);
|
|
3698
3811
|
const jsParsers = proc.serviceConfig.resolvedLogParsers ?? [];
|
|
@@ -3712,10 +3825,11 @@ var ProcessManager = class extends EventEmitter7 {
|
|
|
3712
3825
|
this.consoleLogSource.addSystemLog(processId, `Failed to start: ${err instanceof Error ? err.message : String(err)}`, "error", { id: randomUUID3(), type: "command-fail", header: command, state: "self" });
|
|
3713
3826
|
return { exitCode: 1 };
|
|
3714
3827
|
}
|
|
3715
|
-
|
|
3828
|
+
const cmdKey = `${processId}:${commandId ?? randomUUID3()}`;
|
|
3829
|
+
this.activeAdHocCommands.set(cmdKey, runnerProcess);
|
|
3716
3830
|
this.consoleLogSource.attach(processId, runnerProcess.stdout, runnerProcess.stderr, runnerProcess.pid ?? null);
|
|
3717
3831
|
const { exitCode, signal, error } = await runnerProcess.exitPromise;
|
|
3718
|
-
this.activeAdHocCommands.delete(
|
|
3832
|
+
this.activeAdHocCommands.delete(cmdKey);
|
|
3719
3833
|
if (signal) {
|
|
3720
3834
|
this.consoleLogSource.addSystemLog(processId, `command cancelled`, "info");
|
|
3721
3835
|
} else if (exitCode !== 0) {
|
|
@@ -3967,17 +4081,18 @@ var processRouter = router({
|
|
|
3967
4081
|
return { success: true };
|
|
3968
4082
|
}),
|
|
3969
4083
|
/** Cancel a running ad-hoc command */
|
|
3970
|
-
cancelAdHocCommand: protectedProcedure.input(z22.object({ id: z22.string().max(128) })).mutation(({ input }) => {
|
|
3971
|
-
processManager.cancelAdHocCommand(input.id);
|
|
4084
|
+
cancelAdHocCommand: protectedProcedure.input(z22.object({ id: z22.string().max(128), commandId: z22.string().max(128).optional() })).mutation(({ input }) => {
|
|
4085
|
+
processManager.cancelAdHocCommand(input.id, input.commandId);
|
|
3972
4086
|
return { success: true };
|
|
3973
4087
|
}),
|
|
3974
4088
|
/** Execute an ad-hoc command and stream output into the process log */
|
|
3975
4089
|
executeAdHocCommand: protectedProcedure.input(z22.object({
|
|
3976
4090
|
id: z22.string().max(128),
|
|
3977
4091
|
command: z22.string().min(1).max(4096),
|
|
3978
|
-
cwd: z22.string().max(4096).optional()
|
|
4092
|
+
cwd: z22.string().max(4096).optional(),
|
|
4093
|
+
commandId: z22.string().max(128).optional()
|
|
3979
4094
|
})).mutation(async ({ input }) => {
|
|
3980
|
-
const result = await processManager.executeAdHocCommand(input.id, input.command, input.cwd);
|
|
4095
|
+
const result = await processManager.executeAdHocCommand(input.id, input.command, input.cwd, input.commandId);
|
|
3981
4096
|
return result;
|
|
3982
4097
|
}),
|
|
3983
4098
|
/** List active log source types for a process */
|
|
@@ -4113,9 +4228,9 @@ var processRouter = router({
|
|
|
4113
4228
|
|
|
4114
4229
|
// src/trpc/routers/health.ts
|
|
4115
4230
|
import { networkInterfaces as networkInterfaces2 } from "os";
|
|
4116
|
-
import { execFile as
|
|
4231
|
+
import { execFile as execFile3 } from "child_process";
|
|
4117
4232
|
import { promisify } from "util";
|
|
4118
|
-
var execFileAsync = promisify(
|
|
4233
|
+
var execFileAsync = promisify(execFile3);
|
|
4119
4234
|
var startedAt = Date.now();
|
|
4120
4235
|
function getLanIp2() {
|
|
4121
4236
|
const nets = networkInterfaces2();
|
|
@@ -4280,12 +4395,12 @@ var terminalRouter = router({
|
|
|
4280
4395
|
// src/trpc/routers/git.ts
|
|
4281
4396
|
import { z as z24 } from "zod";
|
|
4282
4397
|
import { TRPCError as TRPCError4 } from "@trpc/server";
|
|
4283
|
-
import { execFile as
|
|
4398
|
+
import { execFile as execFile4, spawn as spawn3 } from "child_process";
|
|
4284
4399
|
import { promisify as promisify2 } from "util";
|
|
4285
4400
|
import { existsSync, watch as fsWatch } from "fs";
|
|
4286
4401
|
import { promises as fsPromises2 } from "fs";
|
|
4287
4402
|
import { join as join4, resolve as resolvePath } from "path";
|
|
4288
|
-
var execFileAsync2 = promisify2(
|
|
4403
|
+
var execFileAsync2 = promisify2(execFile4);
|
|
4289
4404
|
var GIT_TIMEOUT = 15e3;
|
|
4290
4405
|
var DIFF_MAX_BYTES = 512 * 1024;
|
|
4291
4406
|
var CWD_SCHEMA = z24.string().min(1).max(4096);
|