@symerian/symi 3.5.26 → 3.5.27
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/dist/{agent-CoHzNs_e.js → agent-DxRVDqSg.js} +18 -18
- package/dist/{agent-scope-Bnsyyeci.js → agent-scope-DOrZjOnW.js} +18 -18
- package/dist/{agents.config-DA0ISLi7.js → agents.config-B7sNDvhz.js} +1 -1
- package/dist/{audit-CuwXq_EA.js → audit-C_3fAFeS.js} +20 -20
- package/dist/{auth-choice-DKRHawfp.js → auth-choice-DQplW60s.js} +11 -11
- package/dist/{auth-profiles-D5nYBj_Z.js → auth-profiles-Ce7R_25e.js} +2 -2
- package/dist/{auth-token-fgnCQEHT.js → auth-token-Cr28IDKY.js} +3 -3
- package/dist/{browser-cli-BI81RlI8.js → browser-cli-D6xFqw9w.js} +9 -9
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +4 -4
- package/dist/bundled/session-memory/handler.js +4 -4
- package/dist/{call-xUpyZDH4.js → call-AZ9vNhST.js} +9 -9
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-vjcKi2yl.js → channel-options-DnWkDAWi.js} +1 -1
- package/dist/{channels-cli-CfBFa-VO.js → channels-cli-CGCyzahW.js} +57 -57
- package/dist/{chrome-38OnGyuN.js → chrome-DJChpTwP.js} +2 -2
- package/dist/{chrome-CmQwGAuL.js → chrome-OTJg3QKn.js} +7 -7
- package/dist/{cli-qf0qK7oi.js → cli-DZAtyHzb.js} +45 -45
- package/dist/{client-DiPa71im.js → client-DH75FlQF.js} +1 -1
- package/dist/{commands-registry-CwXsDVuO.js → commands-registry-Ca5hh7nh.js} +1 -1
- package/dist/{completion-cli-Ddfrnilx.js → completion-cli-Cbf0-8ob.js} +12 -12
- package/dist/{config-BngIfn5l.js → config-B4jkreCN.js} +2 -2
- package/dist/{config-cli-JVGYyfYA.js → config-cli-D4RmoOxe.js} +4 -4
- package/dist/{config-guard-DStz4_V2.js → config-guard-BRm3RiOi.js} +6 -6
- package/dist/{config-validation-Dxj9LRzr.js → config-validation-Cdyg1BZB.js} +1 -1
- package/dist/{configure-Bqz2Hvnf.js → configure-kaf3aurx.js} +14 -14
- package/dist/{consolidate-CO32_TEx.js → consolidate-DymnvvYm.js} +6 -6
- package/dist/{control-service-CUreKVeY.js → control-service-D8kKOts5.js} +4 -4
- package/dist/control-ui/css/style.css +159 -0
- package/dist/{control-ui-assets-B8B9z_Ll.js → control-ui-assets-CJQ97d4u.js} +1 -1
- package/dist/{cost-cli-D-ssjcRF.js → cost-cli-DWiVCOCx.js} +3 -3
- package/dist/{cron-cli-pZ_7Wzhj.js → cron-cli-VH_t2D1o.js} +7 -7
- package/dist/{daemon-cli-BDzcfcu_.js → daemon-cli-3PFXkheJ.js} +11 -11
- package/dist/{daemon-runtime-CKn0wmCk.js → daemon-runtime-DlQla_dA.js} +10 -10
- package/dist/{deliver-B04yNX82.js → deliver-BiWlR84Y.js} +4 -4
- package/dist/{deliver-CWMFmMCv.js → deliver-lTZLIQqf.js} +2 -2
- package/dist/{deps-CdibsPMx.js → deps-Bf9dt2UO.js} +1 -1
- package/dist/{devices-cli-BIZbo_Pt.js → devices-cli-Bhi1rWnT.js} +6 -6
- package/dist/{diagnostics-CYkqD5lP.js → diagnostics-DlZODdRf.js} +5 -5
- package/dist/{directory-cli-giqTe8Yg.js → directory-cli-Bm5QYEo-.js} +3 -3
- package/dist/{dm-policy-shared-B61_yf6G.js → dm-policy-shared-CeFt0nch.js} +1 -1
- package/dist/{dns-cli-Dssz4RqF.js → dns-cli-CubLq4j9.js} +3 -3
- package/dist/{docs-cli-Ct1STieY.js → docs-cli-PS8m1er7.js} +1 -1
- package/dist/{doctor-completion-eh7aImCx.js → doctor-completion--j-3qqz6.js} +2 -2
- package/dist/{doctor-config-flow-ljVnQJjo.js → doctor-config-flow-C52W1uUK.js} +9 -9
- package/dist/{exec-approvals-cli-B2UY9dZC.js → exec-approvals-cli-xTOKcyZh.js} +13 -13
- package/dist/{file-lock-2AecMjCa.js → file-lock-BVUYnlQv.js} +8 -8
- package/dist/{fs-safe-B0Is-oLk.js → fs-safe-BdejYjW8.js} +6 -6
- package/dist/{gateway-cli-BwPy7u0B.js → gateway-cli-B3FuQctH.js} +98 -98
- package/dist/{gateway-rpc-DmFOiGIJ.js → gateway-rpc-C6lKFbor.js} +1 -1
- package/dist/{glass-ui-ws-CwOiILiY.js → glass-ui-ws-BJcI_IdV.js} +67 -67
- package/dist/{health-Bc1wmAO5.js → health-7UqIGG8U.js} +4 -4
- package/dist/{hooks-cli-DOjHV2fF.js → hooks-cli-D43GEG-W.js} +59 -59
- package/dist/{image-ops-BzCBIakN.js → image-ops-L70xVnpG.js} +10 -10
- package/dist/index.js +52 -52
- package/dist/{inspect-DzYUb_Dl.js → inspect-CGKsaVZ4.js} +4 -4
- package/dist/{install-safe-path-BrpA09f2.js → install-safe-path-B2JrFspY.js} +11 -11
- package/dist/{installs-bnDlOSq2.js → installs-D890uIIW.js} +10 -10
- package/dist/{internal-csqU78gW.js → internal-DVCddhhN.js} +9 -9
- package/dist/{lifecycle-core-cSR_xiIO.js → lifecycle-core-wFwnK_mD.js} +5 -5
- package/dist/llm-slug-generator.js +4 -4
- package/dist/{local-roots-2Jb79HZ8.js → local-roots-CgDCgCuM.js} +1 -1
- package/dist/{logs-cli-CYFlhj51.js → logs-cli-BTU7zrkU.js} +7 -7
- package/dist/{manager-DuWp0CTD.js → manager-Cw7IJGbB.js} +15 -15
- package/dist/{manager-F0-SHT1B.js → manager-DbVMwpDc.js} +1 -1
- package/dist/{memory-fFc7GGPZ.js → memory-BZ24UkLW.js} +5 -5
- package/dist/{memory-cli-BnBKckEk.js → memory-cli-0HHYm-B8.js} +12 -12
- package/dist/{model-Cwbcw-km.js → model-MUMSB_7d.js} +1 -1
- package/dist/{model-auth-_C07_3Yr.js → model-auth-1EAQvYRv.js} +2 -2
- package/dist/{model-catalog-BWurV7gl.js → model-catalog-IWi6-nY9.js} +3 -3
- package/dist/{model-picker-Dpkr5xBW.js → model-picker-Cf6UgQEh.js} +5 -5
- package/dist/{model-selection-CCTzD29o.js → model-selection-7wdmO-Iw.js} +1 -1
- package/dist/{models-cli-DVdb_TUS.js → models-cli-C2EXmrYH.js} +55 -55
- package/dist/{models-config-DlXge3Sd.js → models-config-B5Xxy-c-.js} +8 -8
- package/dist/{node-cli-B0ePfMUr.js → node-cli-CWbA6YCw.js} +27 -27
- package/dist/{node-service-Cc18m-uk.js → node-service-BH08wY5j.js} +1 -1
- package/dist/{nodes-cli-L0gy-26E.js → nodes-cli-BfHcv62i.js} +10 -10
- package/dist/{nodes-screen-Cp5QP3ET.js → nodes-screen-De9ma6e1.js} +4 -4
- package/dist/{npm-registry-spec-C-muP97-.js → npm-registry-spec-DTqn-NXZ.js} +9 -9
- package/dist/{onboard-D6GZ2t-L.js → onboard-DnwWawQO.js} +15 -15
- package/dist/{onboard-channels-DVS9vciR.js → onboard-channels-qDThNkyj.js} +4 -4
- package/dist/{onboard-custom-DnDrvxSg.js → onboard-custom-BcRYreNG.js} +3 -3
- package/dist/{onboard-helpers-CJlheOSJ.js → onboard-helpers-7IGQ8nAM.js} +8 -8
- package/dist/{onboard-hooks-D9jHwImb.js → onboard-hooks-2SCajRKc.js} +1 -1
- package/dist/{onboard-remote-CVZ8l58S.js → onboard-remote-Dr75eqOQ.js} +1 -1
- package/dist/{onboard-skills-MgcaLiE6.js → onboard-skills-uO7HZwjc.js} +3 -3
- package/dist/{onboarding-D-mzwQ_f.js → onboarding-DxZAGVkD.js} +12 -12
- package/dist/{onboarding.finalize-DBFL76p0.js → onboarding.finalize-Dt-rcgpk.js} +31 -31
- package/dist/{onboarding.gateway-config-BCDgsFl8.js → onboarding.gateway-config-CkP7K4EN.js} +8 -8
- package/dist/{openai-model-default-De-UAjwg.js → openai-model-default-BkuuK-Di.js} +2 -2
- package/dist/{pairing-cli-CBMMCNnx.js → pairing-cli-Rsae0KnN.js} +5 -5
- package/dist/{pairing-store-Be-ZQK87.js → pairing-store-BNhJOnWn.js} +1 -1
- package/dist/{pairing-token-B703A1U3.js → pairing-token-Dcy37-4s.js} +7 -7
- package/dist/{paths-BWqg8NZT.js → paths-DObzwe08.js} +1 -1
- package/dist/{pi-auth-json-D-vdh-nY.js → pi-auth-json-Db8XJVGL.js} +6 -6
- package/dist/{pi-embedded-helpers-j1JrlsI0.js → pi-embedded-helpers-D-OFjhdI.js} +6 -6
- package/dist/{pi-tools.policy-CvAqjEH9.js → pi-tools.policy-H2t-Xkfc.js} +3 -3
- package/dist/{plugin-auto-enable-BXSJTxI7.js → plugin-auto-enable-DJBhDIMq.js} +1 -1
- package/dist/{plugin-registry-KP94aK4z.js → plugin-registry-D2_TLnOr.js} +3 -3
- package/dist/{plugins-cli-B4ljapU5.js → plugins-cli-CqV1Q7ao.js} +54 -54
- package/dist/{ports-CB_Iu83U.js → ports-gxLM5ahL.js} +2 -2
- package/dist/{ports-Bi3V_3n9.js → ports-r7LBic2V.js} +1 -1
- package/dist/{program-context-BzqGUxMS.js → program-context-B0ovpbFU.js} +40 -40
- package/dist/{prompt-select-styled-BVkRteee.js → prompt-select-styled-B5GrNfqR.js} +38 -38
- package/dist/{provider-auth-helpers-C6GjAO-s.js → provider-auth-helpers-DU8RlQz7.js} +6 -6
- package/dist/{push-apns-CbbWM63o.js → push-apns-CyAPMMJC.js} +4 -4
- package/dist/{pw-ai-CP5pn3eU.js → pw-ai-BiBvIJzd.js} +7 -7
- package/dist/{pw-ai-DLsdzdgc.js → pw-ai-DY_6l11g.js} +1 -1
- package/dist/{qmd-manager-Dxyue7B1.js → qmd-manager-C8-M4Pru.js} +19 -19
- package/dist/{qr-cli-DHw6muwK.js → qr-cli-1sCVaPcF.js} +3 -3
- package/dist/{register.agent-DhS2lmWo.js → register.agent-BKbQhrre.js} +67 -67
- package/dist/{register.configure-ChjzXxh8.js → register.configure-C4_ShaQV.js} +70 -70
- package/dist/{register.maintenance-frHWf6Xs.js → register.maintenance-BOYWTu9C.js} +67 -67
- package/dist/{register.message-DWB4eVII.js → register.message-BtCthbpo.js} +47 -47
- package/dist/{register.onboard-4P8ud4Sw.js → register.onboard-D5GmuX8K.js} +25 -25
- package/dist/{register.setup-D0I7sEGc.js → register.setup-DzospfSf.js} +28 -28
- package/dist/{register.status-health-sessions-69Gigo_H.js → register.status-health-sessions-NVbWTQpZ.js} +41 -41
- package/dist/{replies-B_3j7R_Q.js → replies-CbXXjn9X.js} +1 -1
- package/dist/{reply-prefix-CtZtkTJK.js → reply-prefix-BFNeXT65.js} +1 -1
- package/dist/{resolve-route-Du0VftVs.js → resolve-route-C1IIA6kH.js} +1 -1
- package/dist/{routes-BwTUoI5h.js → routes-ivqbutvM.js} +10 -10
- package/dist/{rpc-DTqyJZKO.js → rpc-B1czfnym.js} +1 -1
- package/dist/{sandbox-CZGTCone.js → sandbox-BkznAPKO.js} +18 -18
- package/dist/{sandbox-cli-DEtGT_4y.js → sandbox-cli-Bb9cBtBH.js} +13 -13
- package/dist/{security-cli-iJpHPABF.js → security-cli-l59T6lAJ.js} +29 -29
- package/dist/{send-CxjvucMO.js → send-B0jHSNMF.js} +7 -7
- package/dist/{server-context-DXdk410X.js → server-context-ChcbJgNo.js} +5 -5
- package/dist/{server-methods-DHWxmfIu.js → server-methods-Bl41VzMu.js} +60 -60
- package/dist/{server-node-events-DHSiqnRS.js → server-node-events-CxYKzrbU.js} +48 -48
- package/dist/{service-CRZoXO_n.js → service-e6MzlLCd.js} +15 -15
- package/dist/{session-dirs-a00Ad2SO.js → session-dirs-C9E2G0yZ.js} +2 -2
- package/dist/{session-utils-CJhcRx3E.js → session-utils-Cs1jlD-q.js} +14 -14
- package/dist/{sessions-BCc3THTm.js → sessions-Dxf5Kjig.js} +10 -10
- package/dist/{shared-C39SiDDJ.js → shared-1xPo9ygd.js} +1 -1
- package/dist/{shared-Dh-O8nRd.js → shared-COtpr3Ad.js} +3 -3
- package/dist/{skill-commands-DWvXs3lz.js → skill-commands-DDGGlq68.js} +4 -4
- package/dist/{skill-scanner-CIlHPszT.js → skill-scanner-BCgVcIwi.js} +5 -5
- package/dist/{skills-CYcBtLGH.js → skills-BwDmcZdt.js} +4 -4
- package/dist/{skills-cli-CD9s3cgm.js → skills-cli-B-7TY-vS.js} +7 -7
- package/dist/{skills-install-BTa9IuQ6.js → skills-install-Dwzsjoc8.js} +3 -3
- package/dist/{skills-remote-BcRQTDsZ.js → skills-remote-bz71Bstn.js} +3 -3
- package/dist/{skills-status-DLnCHUZ2.js → skills-status-BKX1PjCc.js} +1 -1
- package/dist/{sqlite-BpogPlQW.js → sqlite-Cod7C5ba.js} +5 -5
- package/dist/{status-ISN-LC9F.js → status-D7QX7VDk.js} +23 -23
- package/dist/{status-DUbs9rVu.js → status-DrWy5OkC.js} +3 -3
- package/dist/{status.update-CKfyV6zw.js → status.update-DGJi0OLl.js} +3 -3
- package/dist/{symframe-cli-CPE5nxuJ.js → symframe-cli-BVmRLRid.js} +9 -9
- package/dist/{symi-root-DeCVdZB4.js → symi-root-BQ0IpoW2.js} +2 -2
- package/dist/{synthesis-CDPVZw2P.js → synthesis-CO5pr92g.js} +4 -4
- package/dist/{synthesis-DkHCk0El.js → synthesis-ts2nG0tK.js} +45 -45
- package/dist/{system-cli-nWJwLo85.js → system-cli-Du1GEeoO.js} +7 -7
- package/dist/{systemd-CsoVnIbM.js → systemd-CUIM0n5P.js} +5 -5
- package/dist/{systemd-hints-QISwLlFU.js → systemd-hints-CsrzMCTD.js} +6 -6
- package/dist/{systemd-linger-BnhuRdbt.js → systemd-linger-BzYk7A6M.js} +1 -1
- package/dist/{tui-ZL7IGA7l.js → tui-B2MY6Mj2.js} +7 -7
- package/dist/{tui-cli-CEpMtmhP.js → tui-cli-BMEnosW9.js} +19 -19
- package/dist/{unified-runner-CsadjpQa.js → unified-runner-4O0ifBsI.js} +101 -101
- package/dist/{unified-runner-Cppo8O8z.js → unified-runner-O3qR5Iie.js} +10 -10
- package/dist/{update-check-u6Jgr1cz.js → update-check-BCL_K7kx.js} +5 -5
- package/dist/{update-cli-48-Nah-Y.js → update-cli-BMURsYJU.js} +77 -77
- package/dist/{update-runner-G2YgEATs.js → update-runner-BLV8SI96.js} +15 -15
- package/dist/{update-Cb0Fmxic.js → update-yYduAjKd.js} +3 -3
- package/dist/{webhooks-cli-DjUITimx.js → webhooks-cli-D5k-Y2A8.js} +4 -4
- package/dist/{with-timeout-CLrF-Yr_.js → with-timeout-DPR4A2dx.js} +1 -1
- package/dist/{workspace-dirs-DCICLTHx.js → workspace-dirs-jKFQf7of.js} +1 -1
- package/dist/{wsl-DTi7eX-V.js → wsl-CglTdtlb.js} +2 -2
- package/extensions/memory-core/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +6 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/outlook/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { u as resolveGatewayPort } from "./paths-By0XjHBk.js";
|
|
2
|
-
import { i as loadConfig, l as writeConfigFile, r as createConfigIO } from "./config-
|
|
3
|
-
import { A as DEFAULT_SYMI_BROWSER_PROFILE_NAME, D as DEFAULT_BROWSER_EVALUATE_ENABLED, E as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, O as DEFAULT_SYMI_BROWSER_COLOR, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, k as DEFAULT_SYMI_BROWSER_ENABLED, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, v as fetchOk, x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
2
|
+
import { i as loadConfig, l as writeConfigFile, r as createConfigIO } from "./config-B4jkreCN.js";
|
|
3
|
+
import { A as DEFAULT_SYMI_BROWSER_PROFILE_NAME, D as DEFAULT_BROWSER_EVALUATE_ENABLED, E as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, O as DEFAULT_SYMI_BROWSER_COLOR, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, k as DEFAULT_SYMI_BROWSER_ENABLED, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, v as fetchOk, x as ensureChromeExtensionRelayServer } from "./chrome-DJChpTwP.js";
|
|
4
4
|
import { r as isLoopbackHost } from "./ws-C7Ktmt-R.js";
|
|
5
5
|
import { a as resolveGatewayAuth } from "./auth-Bkx-QuRN.js";
|
|
6
6
|
import { n as formatErrorMessage, t as extractErrorCode } from "./errors-bI7Tdx75.js";
|
|
@@ -152,7 +152,7 @@ function isModuleNotFoundError(err) {
|
|
|
152
152
|
}
|
|
153
153
|
async function loadPwAiModule(mode) {
|
|
154
154
|
try {
|
|
155
|
-
return await import("./pw-ai-
|
|
155
|
+
return await import("./pw-ai-BiBvIJzd.js");
|
|
156
156
|
} catch (err) {
|
|
157
157
|
if (mode === "soft") return null;
|
|
158
158
|
if (isModuleNotFoundError(err)) return null;
|
|
@@ -775,11 +775,11 @@ function createProfileContext(opts, profile) {
|
|
|
775
775
|
const userDataDir = resolveSymiUserDataDir(profile.name);
|
|
776
776
|
const profileState = getProfileState();
|
|
777
777
|
if (await isHttpReachable(300) && !profileState.running) try {
|
|
778
|
-
await (await import("./pw-ai-
|
|
778
|
+
await (await import("./pw-ai-BiBvIJzd.js")).closePlaywrightBrowserConnection();
|
|
779
779
|
} catch {}
|
|
780
780
|
if (profileState.running) await stopRunningBrowser();
|
|
781
781
|
try {
|
|
782
|
-
await (await import("./pw-ai-
|
|
782
|
+
await (await import("./pw-ai-BiBvIJzd.js")).closePlaywrightBrowserConnection();
|
|
783
783
|
} catch {}
|
|
784
784
|
if (!fs.existsSync(userDataDir)) return {
|
|
785
785
|
moved: false,
|
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
import { D as ensureOutboundSessionEntry, Ft as normalizeGroupActivation, I as normalizeCronJobCreate, Kt as resolveAgentTimeoutMs, L as normalizeCronJobPatch, Lt as formatZonedTimestamp, Nt as prepareAgentRun, O as resolveOutboundSessionRoute, Pt as BARE_SESSION_RESET_PROMPT, Rt as isAbortTrigger, St as parseVerboseOverride, Ut as listDescendantRunsForRequester, Wt as listSubagentRunsForRequester, Zt as clearSessionQueues, b as prepareReplyTurn, bt as applyModelOverrideToSessionEntry, et as applyBrowserProxyPaths, f as getChannelActivity, g as buildGlassUiProfile, ht as resolveSendPolicy, in as abortEmbeddedPiRun, j as normalizePollInput, k as resolveOutboundTarget, m as createReplyDispatcher, mt as normalizeSendPolicy, nn as registerAgentRunContext, on as waitForEmbeddedPiRunEnd, pn as resolveUserTimezone, s as loadSymiPlugins, st as scheduleGatewaySigusr1Restart, tn as onAgentEvent, tt as persistBrowserProxyFiles, v as runUnifiedTurn, w as listTasksInWorkdir, xt as applyVerboseOverride, y as buildAgentTurnParams, zt as stopSubagentsForRequester } from "./unified-runner-
|
|
1
|
+
import { D as ensureOutboundSessionEntry, Ft as normalizeGroupActivation, I as normalizeCronJobCreate, Kt as resolveAgentTimeoutMs, L as normalizeCronJobPatch, Lt as formatZonedTimestamp, Nt as prepareAgentRun, O as resolveOutboundSessionRoute, Pt as BARE_SESSION_RESET_PROMPT, Rt as isAbortTrigger, St as parseVerboseOverride, Ut as listDescendantRunsForRequester, Wt as listSubagentRunsForRequester, Zt as clearSessionQueues, b as prepareReplyTurn, bt as applyModelOverrideToSessionEntry, et as applyBrowserProxyPaths, f as getChannelActivity, g as buildGlassUiProfile, ht as resolveSendPolicy, in as abortEmbeddedPiRun, j as normalizePollInput, k as resolveOutboundTarget, m as createReplyDispatcher, mt as normalizeSendPolicy, nn as registerAgentRunContext, on as waitForEmbeddedPiRunEnd, pn as resolveUserTimezone, s as loadSymiPlugins, st as scheduleGatewaySigusr1Restart, tn as onAgentEvent, tt as persistBrowserProxyFiles, v as runUnifiedTurn, w as listTasksInWorkdir, xt as applyVerboseOverride, y as buildAgentTurnParams, zt as stopSubagentsForRequester } from "./unified-runner-4O0ifBsI.js";
|
|
2
2
|
import { H as createInternalHookEvent, P as getResolvedLoggerSettings, W as triggerInternalHook, d as getActivePluginRegistry, r as DEFAULT_CHAT_CHANNEL } from "./registry-Sbac4a4z.js";
|
|
3
3
|
import { _ as resolveStateDir, t as CONFIG_PATH } from "./paths-By0XjHBk.js";
|
|
4
4
|
import { S as isPlainObject, h as resolveUserPath, n as clamp } from "./utils-CTPsqyE_.js";
|
|
5
5
|
import { f as defaultRuntime, t as createSubsystemLogger } from "./subsystem-CHbO_DkH.js";
|
|
6
6
|
import { a as classifySessionKeyShape, b as isSubagentSessionKey, c as resolveAgentIdFromSessionKey, o as normalizeAgentId, p as DEFAULT_ACCOUNT_ID, t as DEFAULT_AGENT_ID, x as parseAgentSessionKey } from "./session-key-DUSb7CCb.js";
|
|
7
|
-
import { t as resolveSymiPackageRoot } from "./symi-root-
|
|
8
|
-
import { C as ensureAgentWorkspace, S as DEFAULT_USER_FILENAME, T as isWorkspaceOnboardingCompleted, _ as DEFAULT_MEMORY_ALT_FILENAME, b as DEFAULT_SYMIPULSE_FILENAME, c as resolveAgentWorkspaceDir, d as resolveSessionAgentId, g as DEFAULT_IDENTITY_FILENAME, h as DEFAULT_BOOTSTRAP_FILENAME, i as resolveAgentDir, l as resolveDefaultAgentId, n as listAgentIds, p as DEFAULT_AGENTS_FILENAME, t as listAgentEntries, v as DEFAULT_MEMORY_FILENAME, x as DEFAULT_TOOLS_FILENAME, y as DEFAULT_SYMICORE_FILENAME } from "./agent-scope-
|
|
9
|
-
import { b as resolveThinkingDefault, f as resolveAllowedModelRef, h as resolveDefaultModelForAgent, v as resolveSubagentConfiguredModelSelection } from "./model-selection-
|
|
7
|
+
import { t as resolveSymiPackageRoot } from "./symi-root-BQ0IpoW2.js";
|
|
8
|
+
import { C as ensureAgentWorkspace, S as DEFAULT_USER_FILENAME, T as isWorkspaceOnboardingCompleted, _ as DEFAULT_MEMORY_ALT_FILENAME, b as DEFAULT_SYMIPULSE_FILENAME, c as resolveAgentWorkspaceDir, d as resolveSessionAgentId, g as DEFAULT_IDENTITY_FILENAME, h as DEFAULT_BOOTSTRAP_FILENAME, i as resolveAgentDir, l as resolveDefaultAgentId, n as listAgentIds, p as DEFAULT_AGENTS_FILENAME, t as listAgentEntries, v as DEFAULT_MEMORY_FILENAME, x as DEFAULT_TOOLS_FILENAME, y as DEFAULT_SYMICORE_FILENAME } from "./agent-scope-DOrZjOnW.js";
|
|
9
|
+
import { b as resolveThinkingDefault, f as resolveAllowedModelRef, h as resolveDefaultModelForAgent, v as resolveSubagentConfiguredModelSelection } from "./model-selection-7wdmO-Iw.js";
|
|
10
10
|
import { n as normalizeSecretInput } from "./normalize-secret-input-DjGU5EXe.js";
|
|
11
|
-
import { N as VERSION, P as resolveRuntimeServiceVersion, T as applyLegacyMigrations, a as parseConfigJson5, c as resolveConfigSnapshotHash, d as SymiSchema, i as loadConfig, l as writeConfigFile, m as sensitive, o as readConfigFileSnapshot, s as readConfigFileSnapshotForWrite, u as validateConfigObjectWithPlugins, w as applyMergePatch } from "./config-
|
|
11
|
+
import { N as VERSION, P as resolveRuntimeServiceVersion, T as applyLegacyMigrations, a as parseConfigJson5, c as resolveConfigSnapshotHash, d as SymiSchema, i as loadConfig, l as writeConfigFile, m as sensitive, o as readConfigFileSnapshot, s as readConfigFileSnapshotForWrite, u as validateConfigObjectWithPlugins, w as applyMergePatch } from "./config-B4jkreCN.js";
|
|
12
12
|
import { c as pickPrimaryLanIPv4 } from "./ws-C7Ktmt-R.js";
|
|
13
|
-
import { i as loadWorkspaceSkillEntries } from "./skills-
|
|
13
|
+
import { i as loadWorkspaceSkillEntries } from "./skills-BwDmcZdt.js";
|
|
14
14
|
import { t as movePathToTrash } from "./trash-_YhavPQI.js";
|
|
15
|
-
import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, G as snapshotSessionOrigin, H as resolveMainSessionKey, O as stripEnvelopeFromMessages, S as archiveSessionTranscripts, T as readSessionPreviewItemsFromTranscript, U as resolveMainSessionKeyFromConfig, V as resolveExplicitAgentSessionKey, d as updateSessionStore, o as loadSessionStore, t as extractDeliveryInfo, w as readSessionMessages, x as archiveFileOnDisk, y as normalizeSessionDeliveryFields } from "./sessions-
|
|
15
|
+
import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, G as snapshotSessionOrigin, H as resolveMainSessionKey, O as stripEnvelopeFromMessages, S as archiveSessionTranscripts, T as readSessionPreviewItemsFromTranscript, U as resolveMainSessionKeyFromConfig, V as resolveExplicitAgentSessionKey, d as updateSessionStore, o as loadSessionStore, t as extractDeliveryInfo, w as readSessionMessages, x as archiveFileOnDisk, y as normalizeSessionDeliveryFields } from "./sessions-Dxf5Kjig.js";
|
|
16
16
|
import { f as GATEWAY_CLIENT_CAPS, g as hasGatewayClientCap, i as isGatewayMessageChannel, l as normalizeMessageChannel, n as isDeliverableMessageChannel, t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-DgjXWzf-.js";
|
|
17
17
|
import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CF5skkHh.js";
|
|
18
18
|
import { c as resolveStorePath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, s as resolveSessionTranscriptsDirForAgent } from "./paths-BtvQ7JvU.js";
|
|
19
19
|
import { i as normalizeInputProvenance } from "./input-provenance-Dfn-vEsu.js";
|
|
20
20
|
import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels } from "./thinking-COroyVA5.js";
|
|
21
|
-
import { h as getGlobalHookRunner, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-
|
|
21
|
+
import { h as getGlobalHookRunner, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-lTZLIQqf.js";
|
|
22
22
|
import { i as loadSessionUsageTimeSeries, n as loadCostUsageSummary, r as loadSessionCostSummary, t as discoverAllSessions } from "./session-cost-usage-D3mgssM_.js";
|
|
23
|
-
import { C as enqueueSystemEvent, _ as loadProviderUsageSummary, a as loadCombinedSessionStoreForGateway, c as resolveGatewaySessionStoreTarget, d as formatDoctorNonInteractiveHint, g as writeRestartSentinel, i as listSessionsFromStore, l as resolveSessionModelRef, o as loadSessionEntry, r as listAgentsForGateway, s as pruneLegacyStoreKeys, t as canonicalizeSpawnedByForAgent, w as isSystemEventContextChanged } from "./session-utils-
|
|
24
|
-
import { n as createBrowserRouteDispatcher } from "./with-timeout-
|
|
25
|
-
import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-
|
|
26
|
-
import { t as getMemorySearchManager } from "./memory-
|
|
27
|
-
import { $ as validateNodeInvokeResultParams, $t as rotateDeviceToken, A as validateCronListParams, At as validateTasksListParams, B as validateDeviceTokenRevokeParams, Bt as ErrorCodes, C as validateConfigApplyParams, Ct as validateSessionsUsageParams, D as validateConfigSetParams, Dt as validateSkillsUpdateParams, E as validateConfigSchemaParams, Et as validateSkillsStatusParams, F as validateCronUpdateParams, Ft as validateWizardCancelParams, G as validateExecApprovalsNodeGetParams, Gt as approveDevicePairing, I as validateDevicePairApproveParams, It as validateWizardNextParams, J as validateLogsTailParams, Jt as listDevicePairing, K as validateExecApprovalsNodeSetParams, L as validateDevicePairListParams, Lt as validateWizardStartParams, M as validateCronRunParams, Mt as validateWakeParams, N as validateCronRunsParams, Nt as validateWebLoginStartParams, Ot as validateTalkConfigParams, P as validateCronStatusParams, Pt as validateWebLoginWaitParams, Q as validateNodeInvokeParams, Qt as revokeDeviceToken, R as validateDevicePairRejectParams, Rt as validateWizardStatusParams, S as validateChatToolsListParams, St as validateSessionsSearchParams, T as validateConfigPatchParams, Tt as validateSkillsInstallParams, Ut as parseSessionLabel, V as validateDeviceTokenRotateParams, Vt as errorShape, W as validateExecApprovalsGetParams, X as validateNodeDescribeParams, Xt as removePairedDevice, Y as validateModelsListParams, Yt as rejectDevicePairing, Z as validateNodeEventParams, _ as validateChatHistoryParams, _t as validateSessionsPatchParams, a as validateAgentWaitParams, at as validateNodePairVerifyParams, b as validateChatSkillsListParams, bt as validateSessionsResolveParams, c as validateAgentsFilesGetParams, ct as validatePushTestParams, d as validateAgentsListParams, dt as validateSessionsAdoptFileParams, en as summarizeDeviceTokens, et as validateNodeListParams, f as validateAgentsUpdateParams, ft as validateSessionsCompactParams, g as validateChatCommandsListParams, gt as validateSessionsListParams, h as validateChatAbortParams, ht as validateSessionsFavoriteFileParams, i as validateAgentParams, it as validateNodePairRequestParams, j as validateCronRemoveParams, jt as validateUpdateRunParams, k as validateCronAddParams, kt as validateTalkModeParams, l as validateAgentsFilesListParams, m as validateChannelsStatusParams, mt as validateSessionsDeleteParams, n as formatValidationErrors, nt as validateNodePairListParams, o as validateAgentsCreateParams, ot as validateNodeRenameParams, p as validateChannelsLogoutParams, pt as validateSessionsDeleteFileParams, q as validateExecApprovalsSetParams, r as validateAgentIdentityParams, rt as validateNodePairRejectParams, s as validateAgentsDeleteParams, st as validatePollParams, tt as validateNodePairApproveParams, u as validateAgentsFilesSetParams, ut as validateSendParams, v as validateChatInjectParams, vt as validateSessionsPreviewParams, w as validateConfigGetParams, wt as validateSkillsBinsParams, x as validateChatSymframePushParams, xt as validateSessionsRestoreParams, y as validateChatSendParams, yt as validateSessionsResetParams, z as validateDevicePairRemoveParams } from "./client-
|
|
28
|
-
import { l as authorizeOperatorScopesForMethod, s as ADMIN_SCOPE$2, u as isNodeRoleMethod } from "./call-
|
|
29
|
-
import { c as writeJsonAtomic, o as createAsyncLock, s as readJsonFile } from "./pairing-token-
|
|
30
|
-
import { c as approveNodePairing, d as renamePairedNode, f as requestNodePairing, l as listNodePairing, m as verifyNodeToken, t as getRemoteSkillEligibility, u as rejectNodePairing } from "./skills-remote-
|
|
31
|
-
import { t as listAgentWorkspaceDirs } from "./workspace-dirs-
|
|
23
|
+
import { C as enqueueSystemEvent, _ as loadProviderUsageSummary, a as loadCombinedSessionStoreForGateway, c as resolveGatewaySessionStoreTarget, d as formatDoctorNonInteractiveHint, g as writeRestartSentinel, i as listSessionsFromStore, l as resolveSessionModelRef, o as loadSessionEntry, r as listAgentsForGateway, s as pruneLegacyStoreKeys, t as canonicalizeSpawnedByForAgent, w as isSystemEventContextChanged } from "./session-utils-Cs1jlD-q.js";
|
|
24
|
+
import { n as createBrowserRouteDispatcher } from "./with-timeout-DPR4A2dx.js";
|
|
25
|
+
import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-BFNeXT65.js";
|
|
26
|
+
import { t as getMemorySearchManager } from "./memory-BZ24UkLW.js";
|
|
27
|
+
import { $ as validateNodeInvokeResultParams, $t as rotateDeviceToken, A as validateCronListParams, At as validateTasksListParams, B as validateDeviceTokenRevokeParams, Bt as ErrorCodes, C as validateConfigApplyParams, Ct as validateSessionsUsageParams, D as validateConfigSetParams, Dt as validateSkillsUpdateParams, E as validateConfigSchemaParams, Et as validateSkillsStatusParams, F as validateCronUpdateParams, Ft as validateWizardCancelParams, G as validateExecApprovalsNodeGetParams, Gt as approveDevicePairing, I as validateDevicePairApproveParams, It as validateWizardNextParams, J as validateLogsTailParams, Jt as listDevicePairing, K as validateExecApprovalsNodeSetParams, L as validateDevicePairListParams, Lt as validateWizardStartParams, M as validateCronRunParams, Mt as validateWakeParams, N as validateCronRunsParams, Nt as validateWebLoginStartParams, Ot as validateTalkConfigParams, P as validateCronStatusParams, Pt as validateWebLoginWaitParams, Q as validateNodeInvokeParams, Qt as revokeDeviceToken, R as validateDevicePairRejectParams, Rt as validateWizardStatusParams, S as validateChatToolsListParams, St as validateSessionsSearchParams, T as validateConfigPatchParams, Tt as validateSkillsInstallParams, Ut as parseSessionLabel, V as validateDeviceTokenRotateParams, Vt as errorShape, W as validateExecApprovalsGetParams, X as validateNodeDescribeParams, Xt as removePairedDevice, Y as validateModelsListParams, Yt as rejectDevicePairing, Z as validateNodeEventParams, _ as validateChatHistoryParams, _t as validateSessionsPatchParams, a as validateAgentWaitParams, at as validateNodePairVerifyParams, b as validateChatSkillsListParams, bt as validateSessionsResolveParams, c as validateAgentsFilesGetParams, ct as validatePushTestParams, d as validateAgentsListParams, dt as validateSessionsAdoptFileParams, en as summarizeDeviceTokens, et as validateNodeListParams, f as validateAgentsUpdateParams, ft as validateSessionsCompactParams, g as validateChatCommandsListParams, gt as validateSessionsListParams, h as validateChatAbortParams, ht as validateSessionsFavoriteFileParams, i as validateAgentParams, it as validateNodePairRequestParams, j as validateCronRemoveParams, jt as validateUpdateRunParams, k as validateCronAddParams, kt as validateTalkModeParams, l as validateAgentsFilesListParams, m as validateChannelsStatusParams, mt as validateSessionsDeleteParams, n as formatValidationErrors, nt as validateNodePairListParams, o as validateAgentsCreateParams, ot as validateNodeRenameParams, p as validateChannelsLogoutParams, pt as validateSessionsDeleteFileParams, q as validateExecApprovalsSetParams, r as validateAgentIdentityParams, rt as validateNodePairRejectParams, s as validateAgentsDeleteParams, st as validatePollParams, tt as validateNodePairApproveParams, u as validateAgentsFilesSetParams, ut as validateSendParams, v as validateChatInjectParams, vt as validateSessionsPreviewParams, w as validateConfigGetParams, wt as validateSkillsBinsParams, x as validateChatSymframePushParams, xt as validateSessionsRestoreParams, y as validateChatSendParams, yt as validateSessionsResetParams, z as validateDevicePairRemoveParams } from "./client-DH75FlQF.js";
|
|
28
|
+
import { l as authorizeOperatorScopesForMethod, s as ADMIN_SCOPE$2, u as isNodeRoleMethod } from "./call-AZ9vNhST.js";
|
|
29
|
+
import { c as writeJsonAtomic, o as createAsyncLock, s as readJsonFile } from "./pairing-token-Dcy37-4s.js";
|
|
30
|
+
import { c as approveNodePairing, d as renamePairedNode, f as requestNodePairing, l as listNodePairing, m as verifyNodeToken, t as getRemoteSkillEligibility, u as rejectNodePairing } from "./skills-remote-bz71Bstn.js";
|
|
31
|
+
import { t as listAgentWorkspaceDirs } from "./workspace-dirs-jKFQf7of.js";
|
|
32
32
|
import { a as mergeExecApprovalsSocketDefaults, c as readExecApprovalsSnapshot, p as saveExecApprovals, r as ensureExecApprovals, s as normalizeExecApprovals } from "./exec-approvals-DioSaIeH.js";
|
|
33
|
-
import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-
|
|
33
|
+
import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-D8kKOts5.js";
|
|
34
34
|
import { i as parseAbsoluteTimeMs } from "./stagger-DQs772BN.js";
|
|
35
|
-
import { n as createOutboundSendDeps } from "./deps-
|
|
35
|
+
import { n as createOutboundSendDeps } from "./deps-Bf9dt2UO.js";
|
|
36
36
|
import { t as buildChannelUiCatalog } from "./catalog-BptA-dUv.js";
|
|
37
|
-
import { t as buildWorkspaceSkillStatus } from "./skills-status-
|
|
37
|
+
import { t as buildWorkspaceSkillStatus } from "./skills-status-BKX1PjCc.js";
|
|
38
38
|
import { t as WizardCancelledError } from "./prompts-CNzp9M83.js";
|
|
39
39
|
import { t as resolveChannelDefaultAccountId } from "./helpers-G6zuddmF.js";
|
|
40
40
|
import { t as buildChannelAccountSnapshot } from "./status-Bah7VY4i.js";
|
|
41
|
-
import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-
|
|
42
|
-
import { c as resolveNodeCommandAllowlist, s as isNodeCommandAllowed } from "./audit-
|
|
43
|
-
import { n as getStatusSummary } from "./status-
|
|
44
|
-
import { m as normalizeUpdateChannel } from "./update-check-
|
|
45
|
-
import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-
|
|
46
|
-
import { i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-
|
|
47
|
-
import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-
|
|
41
|
+
import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-7IGQ8nAM.js";
|
|
42
|
+
import { c as resolveNodeCommandAllowlist, s as isNodeCommandAllowed } from "./audit-C_3fAFeS.js";
|
|
43
|
+
import { n as getStatusSummary } from "./status-D7QX7VDk.js";
|
|
44
|
+
import { m as normalizeUpdateChannel } from "./update-check-BCL_K7kx.js";
|
|
45
|
+
import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-CyAPMMJC.js";
|
|
46
|
+
import { i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-DxRVDqSg.js";
|
|
47
|
+
import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-B7sNDvhz.js";
|
|
48
48
|
import { t as resolveSystemRunCommand } from "./system-run-command-olPQqEUJ.js";
|
|
49
|
-
import { t as installSkill } from "./skills-install-
|
|
50
|
-
import { t as runGatewayUpdate } from "./update-runner-
|
|
49
|
+
import { t as installSkill } from "./skills-install-Dwzsjoc8.js";
|
|
50
|
+
import { t as runGatewayUpdate } from "./update-runner-BLV8SI96.js";
|
|
51
51
|
import crypto, { randomUUID } from "node:crypto";
|
|
52
52
|
import path from "node:path";
|
|
53
|
-
import * as fs$
|
|
53
|
+
import * as fs$2 from "node:fs";
|
|
54
54
|
import fs from "node:fs";
|
|
55
55
|
import * as os$1 from "node:os";
|
|
56
56
|
import os from "node:os";
|
|
57
|
-
import
|
|
57
|
+
import fs$1 from "node:fs/promises";
|
|
58
58
|
import { spawnSync } from "node:child_process";
|
|
59
59
|
import { z } from "zod";
|
|
60
60
|
import { CURRENT_SESSION_VERSION, SessionManager } from "@mariozechner/pi-coding-agent";
|
|
@@ -401,20 +401,20 @@ function resolveCronRunLogPath(params) {
|
|
|
401
401
|
}
|
|
402
402
|
const writesByPath = /* @__PURE__ */ new Map();
|
|
403
403
|
async function pruneIfNeeded(filePath, opts) {
|
|
404
|
-
const stat = await
|
|
404
|
+
const stat = await fs$1.stat(filePath).catch(() => null);
|
|
405
405
|
if (!stat || stat.size <= opts.maxBytes) return;
|
|
406
|
-
const lines = (await
|
|
406
|
+
const lines = (await fs$1.readFile(filePath, "utf-8").catch(() => "")).split("\n").map((l) => l.trim()).filter(Boolean);
|
|
407
407
|
const kept = lines.slice(Math.max(0, lines.length - opts.keepLines));
|
|
408
408
|
const { randomBytes } = await import("node:crypto");
|
|
409
409
|
const tmp = `${filePath}.${process.pid}.${randomBytes(8).toString("hex")}.tmp`;
|
|
410
|
-
await
|
|
411
|
-
await
|
|
410
|
+
await fs$1.writeFile(tmp, `${kept.join("\n")}\n`, "utf-8");
|
|
411
|
+
await fs$1.rename(tmp, filePath);
|
|
412
412
|
}
|
|
413
413
|
async function appendCronRunLog(filePath, entry, opts) {
|
|
414
414
|
const resolved = path.resolve(filePath);
|
|
415
415
|
const next = (writesByPath.get(resolved) ?? Promise.resolve()).catch(() => void 0).then(async () => {
|
|
416
|
-
await
|
|
417
|
-
await
|
|
416
|
+
await fs$1.mkdir(path.dirname(resolved), { recursive: true });
|
|
417
|
+
await fs$1.appendFile(resolved, `${JSON.stringify(entry)}\n`, "utf-8");
|
|
418
418
|
await pruneIfNeeded(resolved, {
|
|
419
419
|
maxBytes: opts?.maxBytes ?? 2e6,
|
|
420
420
|
keepLines: opts?.keepLines ?? 2e3
|
|
@@ -426,7 +426,7 @@ async function appendCronRunLog(filePath, entry, opts) {
|
|
|
426
426
|
async function readCronRunLogEntries(filePath, opts) {
|
|
427
427
|
const limit = Math.max(1, Math.min(5e3, Math.floor(opts?.limit ?? 200)));
|
|
428
428
|
const jobId = opts?.jobId?.trim() || void 0;
|
|
429
|
-
const raw = await
|
|
429
|
+
const raw = await fs$1.readFile(path.resolve(filePath), "utf-8").catch(() => "");
|
|
430
430
|
if (!raw.trim()) return [];
|
|
431
431
|
const parsed = [];
|
|
432
432
|
const lines = raw.split("\n");
|
|
@@ -2938,7 +2938,7 @@ function resolveAgentWorkspaceFileOrRespondError(params, respond) {
|
|
|
2938
2938
|
}
|
|
2939
2939
|
async function statFile(filePath) {
|
|
2940
2940
|
try {
|
|
2941
|
-
const stat = await
|
|
2941
|
+
const stat = await fs$1.stat(filePath);
|
|
2942
2942
|
if (!stat.isFile()) return null;
|
|
2943
2943
|
return {
|
|
2944
2944
|
size: stat.size,
|
|
@@ -3008,7 +3008,7 @@ function resolveOptionalStringParam(value) {
|
|
|
3008
3008
|
async function moveToTrashBestEffort(pathname) {
|
|
3009
3009
|
if (!pathname) return;
|
|
3010
3010
|
try {
|
|
3011
|
-
await
|
|
3011
|
+
await fs$1.access(pathname);
|
|
3012
3012
|
} catch {
|
|
3013
3013
|
return;
|
|
3014
3014
|
}
|
|
@@ -3055,7 +3055,7 @@ const agentsHandlers = {
|
|
|
3055
3055
|
dir: workspaceDir,
|
|
3056
3056
|
ensureBootstrapFiles: !Boolean(nextConfig.agents?.defaults?.skipBootstrap)
|
|
3057
3057
|
});
|
|
3058
|
-
await
|
|
3058
|
+
await fs$1.mkdir(resolveSessionTranscriptsDirForAgent(agentId), { recursive: true });
|
|
3059
3059
|
await writeConfigFile(nextConfig);
|
|
3060
3060
|
const safeName = sanitizeIdentityLine(rawName);
|
|
3061
3061
|
const emoji = resolveOptionalStringParam(params.emoji);
|
|
@@ -3068,7 +3068,7 @@ const agentsHandlers = {
|
|
|
3068
3068
|
...avatar ? [`- Avatar: ${sanitizeIdentityLine(avatar)}`] : [],
|
|
3069
3069
|
""
|
|
3070
3070
|
];
|
|
3071
|
-
await
|
|
3071
|
+
await fs$1.appendFile(identityPath, lines.join("\n"), "utf-8");
|
|
3072
3072
|
respond(true, {
|
|
3073
3073
|
ok: true,
|
|
3074
3074
|
agentId,
|
|
@@ -3103,9 +3103,9 @@ const agentsHandlers = {
|
|
|
3103
3103
|
});
|
|
3104
3104
|
if (avatar) {
|
|
3105
3105
|
const workspace = workspaceDir ?? resolveAgentWorkspaceDir(nextConfig, agentId);
|
|
3106
|
-
await
|
|
3106
|
+
await fs$1.mkdir(workspace, { recursive: true });
|
|
3107
3107
|
const identityPath = path.join(workspace, DEFAULT_IDENTITY_FILENAME);
|
|
3108
|
-
await
|
|
3108
|
+
await fs$1.appendFile(identityPath, `\n- Avatar: ${sanitizeIdentityLine(avatar)}\n`, "utf-8");
|
|
3109
3109
|
}
|
|
3110
3110
|
respond(true, {
|
|
3111
3111
|
ok: true,
|
|
@@ -3188,7 +3188,7 @@ const agentsHandlers = {
|
|
|
3188
3188
|
}, void 0);
|
|
3189
3189
|
return;
|
|
3190
3190
|
}
|
|
3191
|
-
const content = await
|
|
3191
|
+
const content = await fs$1.readFile(filePath, "utf-8");
|
|
3192
3192
|
respond(true, {
|
|
3193
3193
|
agentId,
|
|
3194
3194
|
workspace: workspaceDir,
|
|
@@ -3210,10 +3210,10 @@ const agentsHandlers = {
|
|
|
3210
3210
|
const resolved = resolveAgentWorkspaceFileOrRespondError(params, respond);
|
|
3211
3211
|
if (!resolved) return;
|
|
3212
3212
|
const { agentId, workspaceDir, name } = resolved;
|
|
3213
|
-
await
|
|
3213
|
+
await fs$1.mkdir(workspaceDir, { recursive: true });
|
|
3214
3214
|
const filePath = path.join(workspaceDir, name);
|
|
3215
3215
|
const content = String(params.content ?? "");
|
|
3216
|
-
await
|
|
3216
|
+
await fs$1.writeFile(filePath, content, "utf-8");
|
|
3217
3217
|
const meta = await statFile(filePath);
|
|
3218
3218
|
respond(true, {
|
|
3219
3219
|
ok: true,
|
|
@@ -4201,7 +4201,7 @@ const chatHandlers = {
|
|
|
4201
4201
|
}
|
|
4202
4202
|
(async () => {
|
|
4203
4203
|
try {
|
|
4204
|
-
const [mod, { loadConfig }] = await Promise.all([import("./commands-registry-
|
|
4204
|
+
const [mod, { loadConfig }] = await Promise.all([import("./commands-registry-Ca5hh7nh.js").then((n) => n.t), import("./config-B4jkreCN.js").then((n) => n.t)]);
|
|
4205
4205
|
const cfg = loadConfig();
|
|
4206
4206
|
respond(true, { commands: mod.listChatCommandsForConfig(cfg).map((cmd) => ({
|
|
4207
4207
|
key: cmd.key,
|
|
@@ -4225,7 +4225,7 @@ const chatHandlers = {
|
|
|
4225
4225
|
}
|
|
4226
4226
|
(async () => {
|
|
4227
4227
|
try {
|
|
4228
|
-
const [{ createSymiTools }, { loadConfig }] = await Promise.all([import("./unified-runner-
|
|
4228
|
+
const [{ createSymiTools }, { loadConfig }] = await Promise.all([import("./unified-runner-4O0ifBsI.js").then((n) => n.C), import("./config-B4jkreCN.js").then((n) => n.t)]);
|
|
4229
4229
|
respond(true, { tools: createSymiTools({ config: loadConfig() }).map((tool) => {
|
|
4230
4230
|
const name = tool.name;
|
|
4231
4231
|
const description = tool.description;
|
|
@@ -4254,7 +4254,7 @@ const chatHandlers = {
|
|
|
4254
4254
|
}
|
|
4255
4255
|
(async () => {
|
|
4256
4256
|
try {
|
|
4257
|
-
const [{ listSkillCommandsForAgents }, { loadConfig }] = await Promise.all([import("./skill-commands-
|
|
4257
|
+
const [{ listSkillCommandsForAgents }, { loadConfig }] = await Promise.all([import("./skill-commands-DDGGlq68.js").then((n) => n.a), import("./config-B4jkreCN.js").then((n) => n.t)]);
|
|
4258
4258
|
respond(true, { items: listSkillCommandsForAgents({ cfg: loadConfig() }).map((skill) => ({
|
|
4259
4259
|
value: skill.name,
|
|
4260
4260
|
label: skill.description ? `${skill.name} — ${skill.description}` : skill.name
|
|
@@ -6548,7 +6548,7 @@ const docsHandlers = { "docs.get": async ({ params, respond }) => {
|
|
|
6548
6548
|
const fullPath = path.join(packageRoot, relPath);
|
|
6549
6549
|
let markdown;
|
|
6550
6550
|
try {
|
|
6551
|
-
markdown = await
|
|
6551
|
+
markdown = await fs$1.readFile(fullPath, "utf-8");
|
|
6552
6552
|
} catch (err) {
|
|
6553
6553
|
if (err?.code === "ENOENT") {
|
|
6554
6554
|
respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, `docs file not bundled in this Symi install: ${relPath}`));
|
|
@@ -6699,14 +6699,14 @@ function isRollingLogFile(file) {
|
|
|
6699
6699
|
return ROLLING_LOG_RE.test(path.basename(file));
|
|
6700
6700
|
}
|
|
6701
6701
|
async function resolveLogFile(file) {
|
|
6702
|
-
if (await
|
|
6702
|
+
if (await fs$1.stat(file).catch(() => null)) return file;
|
|
6703
6703
|
if (!isRollingLogFile(file)) return file;
|
|
6704
6704
|
const dir = path.dirname(file);
|
|
6705
|
-
const entries = await
|
|
6705
|
+
const entries = await fs$1.readdir(dir, { withFileTypes: true }).catch(() => null);
|
|
6706
6706
|
if (!entries) return file;
|
|
6707
6707
|
return (await Promise.all(entries.filter((entry) => entry.isFile() && ROLLING_LOG_RE.test(entry.name)).map(async (entry) => {
|
|
6708
6708
|
const fullPath = path.join(dir, entry.name);
|
|
6709
|
-
const fileStat = await
|
|
6709
|
+
const fileStat = await fs$1.stat(fullPath).catch(() => null);
|
|
6710
6710
|
return fileStat ? {
|
|
6711
6711
|
path: fullPath,
|
|
6712
6712
|
mtimeMs: fileStat.mtimeMs
|
|
@@ -6714,7 +6714,7 @@ async function resolveLogFile(file) {
|
|
|
6714
6714
|
}))).filter((entry) => Boolean(entry)).toSorted((a, b) => b.mtimeMs - a.mtimeMs)[0]?.path ?? file;
|
|
6715
6715
|
}
|
|
6716
6716
|
async function readLogSlice(params) {
|
|
6717
|
-
const stat = await
|
|
6717
|
+
const stat = await fs$1.stat(params.file).catch(() => null);
|
|
6718
6718
|
if (!stat) return {
|
|
6719
6719
|
cursor: 0,
|
|
6720
6720
|
size: 0,
|
|
@@ -6752,7 +6752,7 @@ async function readLogSlice(params) {
|
|
|
6752
6752
|
truncated,
|
|
6753
6753
|
reset
|
|
6754
6754
|
};
|
|
6755
|
-
const handle = await
|
|
6755
|
+
const handle = await fs$1.open(params.file, "r");
|
|
6756
6756
|
try {
|
|
6757
6757
|
let prefix = "";
|
|
6758
6758
|
if (start > 0) {
|
|
@@ -7553,7 +7553,7 @@ const nodeHandlers = {
|
|
|
7553
7553
|
const p = params;
|
|
7554
7554
|
const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
|
|
7555
7555
|
await respondUnavailableOnThrow(respond, async () => {
|
|
7556
|
-
const { handleNodeEvent } = await import("./server-node-events-
|
|
7556
|
+
const { handleNodeEvent } = await import("./server-node-events-CxYKzrbU.js");
|
|
7557
7557
|
const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
|
|
7558
7558
|
await handleNodeEvent({
|
|
7559
7559
|
deps: context.deps,
|
|
@@ -8072,7 +8072,7 @@ function broadcastPresenceSnapshot(params) {
|
|
|
8072
8072
|
let _prevCpu = null;
|
|
8073
8073
|
function getCpuPercent() {
|
|
8074
8074
|
try {
|
|
8075
|
-
const parts = fs$
|
|
8075
|
+
const parts = fs$2.readFileSync("/proc/stat", "utf8").split("\n")[0].trim().split(/\s+/).slice(1).map(Number);
|
|
8076
8076
|
const [, , , idle, iowait] = parts;
|
|
8077
8077
|
const total = parts.reduce((a, b) => a + b, 0);
|
|
8078
8078
|
const active = total - idle - (iowait || 0);
|
|
@@ -8096,7 +8096,7 @@ function getCpuPercent() {
|
|
|
8096
8096
|
}
|
|
8097
8097
|
function getMemInfo() {
|
|
8098
8098
|
try {
|
|
8099
|
-
const text = fs$
|
|
8099
|
+
const text = fs$2.readFileSync("/proc/meminfo", "utf8");
|
|
8100
8100
|
const get = (key) => parseInt(text.match(new RegExp(`${key}:\\s+(\\d+)`))?.[1] ?? "0", 10) * 1024;
|
|
8101
8101
|
const total = get("MemTotal");
|
|
8102
8102
|
const used = total - get("MemAvailable");
|
|
@@ -8115,7 +8115,7 @@ function getMemInfo() {
|
|
|
8115
8115
|
}
|
|
8116
8116
|
function getDiskInfo() {
|
|
8117
8117
|
try {
|
|
8118
|
-
const stats = fs$
|
|
8118
|
+
const stats = fs$2.statfsSync("/");
|
|
8119
8119
|
const total = stats.blocks * stats.bsize;
|
|
8120
8120
|
const used = total - stats.bfree * stats.bsize;
|
|
8121
8121
|
return {
|
|
@@ -1,96 +1,96 @@
|
|
|
1
|
-
import { k as resolveOutboundTarget } from "./unified-runner-
|
|
1
|
+
import { k as resolveOutboundTarget } from "./unified-runner-4O0ifBsI.js";
|
|
2
2
|
import "./registry-Sbac4a4z.js";
|
|
3
3
|
import "./paths-By0XjHBk.js";
|
|
4
4
|
import "./utils-CTPsqyE_.js";
|
|
5
5
|
import { f as defaultRuntime } from "./subsystem-CHbO_DkH.js";
|
|
6
|
-
import "./auth-profiles-
|
|
6
|
+
import "./auth-profiles-Ce7R_25e.js";
|
|
7
7
|
import { s as normalizeMainKey } from "./session-key-DUSb7CCb.js";
|
|
8
8
|
import "./exec-DuYbft0z.js";
|
|
9
|
-
import { d as resolveSessionAgentId } from "./agent-scope-
|
|
10
|
-
import "./model-selection-
|
|
11
|
-
import "./file-lock-
|
|
9
|
+
import { d as resolveSessionAgentId } from "./agent-scope-DOrZjOnW.js";
|
|
10
|
+
import "./model-selection-7wdmO-Iw.js";
|
|
11
|
+
import "./file-lock-BVUYnlQv.js";
|
|
12
12
|
import "./agent-paths-BbZSGrUA.js";
|
|
13
|
-
import "./pi-embedded-helpers-
|
|
14
|
-
import { i as loadConfig } from "./config-
|
|
13
|
+
import "./pi-embedded-helpers-D-OFjhdI.js";
|
|
14
|
+
import { i as loadConfig } from "./config-B4jkreCN.js";
|
|
15
15
|
import "./boolean-CbZoNRMn.js";
|
|
16
16
|
import "./env-BRnPI9sO.js";
|
|
17
17
|
import "./shell-env-Dc3iU7HK.js";
|
|
18
18
|
import "./manifest-registry-D1MLZEjS.js";
|
|
19
|
-
import "./sandbox-
|
|
20
|
-
import "./chrome-
|
|
19
|
+
import "./sandbox-BkznAPKO.js";
|
|
20
|
+
import "./chrome-DJChpTwP.js";
|
|
21
21
|
import "./tailscale-DpKBMIvx.js";
|
|
22
22
|
import "./auth-Bkx-QuRN.js";
|
|
23
|
-
import "./server-context-
|
|
23
|
+
import "./server-context-ChcbJgNo.js";
|
|
24
24
|
import "./frontmatter-B_jqcova.js";
|
|
25
|
-
import "./skills-
|
|
26
|
-
import "./routes-
|
|
25
|
+
import "./skills-BwDmcZdt.js";
|
|
26
|
+
import "./routes-ivqbutvM.js";
|
|
27
27
|
import "./redact-B3O-RBO1.js";
|
|
28
28
|
import "./errors-bI7Tdx75.js";
|
|
29
|
-
import "./fs-safe-
|
|
30
|
-
import "./paths-
|
|
29
|
+
import "./fs-safe-BdejYjW8.js";
|
|
30
|
+
import "./paths-DObzwe08.js";
|
|
31
31
|
import "./ssrf-DOZRI5XH.js";
|
|
32
|
-
import "./image-ops-
|
|
33
|
-
import "./ports-
|
|
32
|
+
import "./image-ops-L70xVnpG.js";
|
|
33
|
+
import "./ports-gxLM5ahL.js";
|
|
34
34
|
import "./trash-_YhavPQI.js";
|
|
35
|
-
import { d as updateSessionStore } from "./sessions-
|
|
35
|
+
import { d as updateSessionStore } from "./sessions-Dxf5Kjig.js";
|
|
36
36
|
import "./dock-hF45sewN.js";
|
|
37
37
|
import "./message-channel-DgjXWzf-.js";
|
|
38
38
|
import { r as normalizeChannelId } from "./plugins-CF5skkHh.js";
|
|
39
|
-
import "./send-
|
|
39
|
+
import "./send-B0jHSNMF.js";
|
|
40
40
|
import "./paths-BtvQ7JvU.js";
|
|
41
41
|
import "./thinking-COroyVA5.js";
|
|
42
42
|
import "./tokens-0yh2UnJq.js";
|
|
43
|
-
import { t as deliverOutboundPayloads } from "./deliver-
|
|
43
|
+
import { t as deliverOutboundPayloads } from "./deliver-lTZLIQqf.js";
|
|
44
44
|
import "./diagnostic-DbT9t0Sh.js";
|
|
45
45
|
import "./diagnostic-session-state-DnkpMfCl.js";
|
|
46
|
-
import "./model-auth-
|
|
46
|
+
import "./model-auth-1EAQvYRv.js";
|
|
47
47
|
import "./github-copilot-token-D-FdDfee.js";
|
|
48
|
-
import "./models-config-
|
|
49
|
-
import "./pi-auth-json-
|
|
48
|
+
import "./models-config-B5Xxy-c-.js";
|
|
49
|
+
import "./pi-auth-json-Db8XJVGL.js";
|
|
50
50
|
import "./session-cost-usage-D3mgssM_.js";
|
|
51
|
-
import { C as enqueueSystemEvent, c as resolveGatewaySessionStoreTarget, o as loadSessionEntry, s as pruneLegacyStoreKeys } from "./session-utils-
|
|
52
|
-
import "./with-timeout-
|
|
53
|
-
import "./reply-prefix-
|
|
54
|
-
import "./memory-
|
|
55
|
-
import "./manager-
|
|
56
|
-
import "./sqlite-
|
|
51
|
+
import { C as enqueueSystemEvent, c as resolveGatewaySessionStoreTarget, o as loadSessionEntry, s as pruneLegacyStoreKeys } from "./session-utils-Cs1jlD-q.js";
|
|
52
|
+
import "./with-timeout-DPR4A2dx.js";
|
|
53
|
+
import "./reply-prefix-BFNeXT65.js";
|
|
54
|
+
import "./memory-BZ24UkLW.js";
|
|
55
|
+
import "./manager-Cw7IJGbB.js";
|
|
56
|
+
import "./sqlite-Cod7C5ba.js";
|
|
57
57
|
import "./chunk-BxfKjCUx.js";
|
|
58
58
|
import "./markdown-tables-CS1Tvb3z.js";
|
|
59
59
|
import "./fetch-guard-JHxT9355.js";
|
|
60
|
-
import "./local-roots-
|
|
60
|
+
import "./local-roots-CgDCgCuM.js";
|
|
61
61
|
import "./commands-DUzLGgEZ.js";
|
|
62
|
-
import "./commands-registry-
|
|
63
|
-
import "./client-
|
|
64
|
-
import "./call-
|
|
65
|
-
import "./pairing-token-
|
|
62
|
+
import "./commands-registry-Ca5hh7nh.js";
|
|
63
|
+
import "./client-DH75FlQF.js";
|
|
64
|
+
import "./call-AZ9vNhST.js";
|
|
65
|
+
import "./pairing-token-Dcy37-4s.js";
|
|
66
66
|
import "./tool-display-DFOL6UQ9.js";
|
|
67
|
-
import "./skills-remote-
|
|
68
|
-
import "./workspace-dirs-
|
|
67
|
+
import "./skills-remote-bz71Bstn.js";
|
|
68
|
+
import "./workspace-dirs-jKFQf7of.js";
|
|
69
69
|
import "./pi-model-discovery-ClQLvlCW.js";
|
|
70
|
-
import "./model-catalog-
|
|
71
|
-
import "./skill-commands-
|
|
72
|
-
import "./pairing-store-
|
|
70
|
+
import "./model-catalog-IWi6-nY9.js";
|
|
71
|
+
import "./skill-commands-DDGGlq68.js";
|
|
72
|
+
import "./pairing-store-BNhJOnWn.js";
|
|
73
73
|
import "./exec-approvals-DioSaIeH.js";
|
|
74
|
-
import "./nodes-screen-
|
|
74
|
+
import "./nodes-screen-De9ma6e1.js";
|
|
75
75
|
import "./breakdown-B_Dhhm3K.js";
|
|
76
|
-
import "./control-service-
|
|
76
|
+
import "./control-service-D8kKOts5.js";
|
|
77
77
|
import "./stagger-DQs772BN.js";
|
|
78
78
|
import "./channel-selection-H1qOf0q-.js";
|
|
79
79
|
import "./delivery-queue-OAc7hsIs.js";
|
|
80
80
|
import "./bindings-DIhsYGa_.js";
|
|
81
|
-
import "./resolve-route-
|
|
81
|
+
import "./resolve-route-C1IIA6kH.js";
|
|
82
82
|
import "./links-Bqr0FxXx.js";
|
|
83
83
|
import "./cli-utils-CuyGL3rq.js";
|
|
84
84
|
import "./help-format-7hFcsqss.js";
|
|
85
85
|
import "./progress-swt2y17x.js";
|
|
86
|
-
import "./memory-cli-
|
|
86
|
+
import "./memory-cli-0HHYm-B8.js";
|
|
87
87
|
import "./logging-BWknayJl.js";
|
|
88
|
-
import "./replies-
|
|
89
|
-
import "./pi-tools.policy-
|
|
90
|
-
import "./model-
|
|
91
|
-
import "./deps-
|
|
92
|
-
import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-
|
|
93
|
-
import { t as agentCommand } from "./agent-
|
|
88
|
+
import "./replies-CbXXjn9X.js";
|
|
89
|
+
import "./pi-tools.policy-H2t-Xkfc.js";
|
|
90
|
+
import "./model-MUMSB_7d.js";
|
|
91
|
+
import "./deps-Bf9dt2UO.js";
|
|
92
|
+
import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-CyAPMMJC.js";
|
|
93
|
+
import { t as agentCommand } from "./agent-DxRVDqSg.js";
|
|
94
94
|
import { t as createOutboundSendDeps } from "./outbound-send-deps--SpwgFhS.js";
|
|
95
95
|
import { randomUUID } from "node:crypto";
|
|
96
96
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { c as resolveGatewayLaunchAgentLabel, f as resolveGatewayWindowsTaskName, p as resolveLegacyGatewayLaunchAgentLabels, t as GATEWAY_LAUNCH_AGENT_LABEL, u as resolveGatewayServiceDescription } from "./constants-BLIhifCJ.js";
|
|
2
|
-
import { _ as toPosixPath, a as readSystemdServiceRuntime, c as stopSystemdService, f as splitArgsPreservingQuotes, g as formatLine, h as resolveHomeDir, i as readSystemdServiceExecStart, l as uninstallSystemdService, m as resolveGatewayStateDir, n as isSystemdServiceEnabled, p as parseKeyValueOutput, s as restartSystemdService, t as installSystemdService, v as writeFormattedLines, y as execFileUtf8 } from "./systemd-
|
|
2
|
+
import { _ as toPosixPath, a as readSystemdServiceRuntime, c as stopSystemdService, f as splitArgsPreservingQuotes, g as formatLine, h as resolveHomeDir, i as readSystemdServiceExecStart, l as uninstallSystemdService, m as resolveGatewayStateDir, n as isSystemdServiceEnabled, p as parseKeyValueOutput, s as restartSystemdService, t as installSystemdService, v as writeFormattedLines, y as execFileUtf8 } from "./systemd-CUIM0n5P.js";
|
|
3
3
|
import path from "node:path";
|
|
4
|
-
import
|
|
4
|
+
import fs from "node:fs/promises";
|
|
5
5
|
|
|
6
6
|
//#region src/daemon/launchd-plist.ts
|
|
7
7
|
const plistEscape = (value) => value.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll("\"", """).replaceAll("'", "'");
|
|
@@ -14,7 +14,7 @@ const renderEnvDict = (env) => {
|
|
|
14
14
|
};
|
|
15
15
|
async function readLaunchAgentProgramArgumentsFromFile(plistPath) {
|
|
16
16
|
try {
|
|
17
|
-
const plist = await
|
|
17
|
+
const plist = await fs.readFile(plistPath, "utf8");
|
|
18
18
|
const programMatch = plist.match(/<key>ProgramArguments<\/key>\s*<array>([\s\S]*?)<\/array>/i);
|
|
19
19
|
if (!programMatch) return null;
|
|
20
20
|
const args = Array.from(programMatch[1].matchAll(/<string>([\s\S]*?)<\/string>/gi)).map((match) => plistUnescape(match[1] ?? "").trim());
|
|
@@ -128,7 +128,7 @@ async function isLaunchAgentListed(args) {
|
|
|
128
128
|
async function launchAgentPlistExists(env) {
|
|
129
129
|
try {
|
|
130
130
|
const plistPath = resolveLaunchAgentPlistPath(env);
|
|
131
|
-
await
|
|
131
|
+
await fs.access(plistPath);
|
|
132
132
|
return true;
|
|
133
133
|
} catch {
|
|
134
134
|
return false;
|
|
@@ -188,7 +188,7 @@ async function uninstallLaunchAgent({ env, stdout }) {
|
|
|
188
188
|
]);
|
|
189
189
|
await execLaunchctl(["unload", plistPath]);
|
|
190
190
|
try {
|
|
191
|
-
await
|
|
191
|
+
await fs.access(plistPath);
|
|
192
192
|
} catch {
|
|
193
193
|
stdout.write(`LaunchAgent not found at ${plistPath}\n`);
|
|
194
194
|
return;
|
|
@@ -197,8 +197,8 @@ async function uninstallLaunchAgent({ env, stdout }) {
|
|
|
197
197
|
const trashDir = path.join(home, ".Trash");
|
|
198
198
|
const dest = path.join(trashDir, `${label}.plist`);
|
|
199
199
|
try {
|
|
200
|
-
await
|
|
201
|
-
await
|
|
200
|
+
await fs.mkdir(trashDir, { recursive: true });
|
|
201
|
+
await fs.rename(plistPath, dest);
|
|
202
202
|
stdout.write(`${formatLine("Moved LaunchAgent to Trash", dest)}\n`);
|
|
203
203
|
} catch {
|
|
204
204
|
stdout.write(`LaunchAgent remains at ${plistPath} (could not move)\n`);
|
|
@@ -221,7 +221,7 @@ async function stopLaunchAgent({ stdout, env }) {
|
|
|
221
221
|
}
|
|
222
222
|
async function installLaunchAgent({ env, stdout, programArguments, workingDirectory, environment, description }) {
|
|
223
223
|
const { logDir, stdoutPath, stderrPath } = resolveGatewayLogPaths(env);
|
|
224
|
-
await
|
|
224
|
+
await fs.mkdir(logDir, { recursive: true });
|
|
225
225
|
const domain = resolveGuiDomain();
|
|
226
226
|
const label = resolveLaunchAgentLabel({ env });
|
|
227
227
|
for (const legacyLabel of resolveLegacyGatewayLaunchAgentLabels(env.SYMI_PROFILE)) {
|
|
@@ -233,11 +233,11 @@ async function installLaunchAgent({ env, stdout, programArguments, workingDirect
|
|
|
233
233
|
]);
|
|
234
234
|
await execLaunchctl(["unload", legacyPlistPath]);
|
|
235
235
|
try {
|
|
236
|
-
await
|
|
236
|
+
await fs.unlink(legacyPlistPath);
|
|
237
237
|
} catch {}
|
|
238
238
|
}
|
|
239
239
|
const plistPath = resolveLaunchAgentPlistPathForLabel(env, label);
|
|
240
|
-
await
|
|
240
|
+
await fs.mkdir(path.dirname(plistPath), { recursive: true });
|
|
241
241
|
const plist = buildLaunchAgentPlist({
|
|
242
242
|
label,
|
|
243
243
|
comment: resolveGatewayServiceDescription({
|
|
@@ -251,7 +251,7 @@ async function installLaunchAgent({ env, stdout, programArguments, workingDirect
|
|
|
251
251
|
stderrPath,
|
|
252
252
|
environment
|
|
253
253
|
});
|
|
254
|
-
await
|
|
254
|
+
await fs.writeFile(plistPath, plist, "utf8");
|
|
255
255
|
await execLaunchctl([
|
|
256
256
|
"bootout",
|
|
257
257
|
domain,
|
|
@@ -408,7 +408,7 @@ function resolveTaskUser(env) {
|
|
|
408
408
|
async function readScheduledTaskCommand(env) {
|
|
409
409
|
const scriptPath = resolveTaskScriptPath(env);
|
|
410
410
|
try {
|
|
411
|
-
const content = await
|
|
411
|
+
const content = await fs.readFile(scriptPath, "utf8");
|
|
412
412
|
let workingDirectory = "";
|
|
413
413
|
let commandLine = "";
|
|
414
414
|
const environment = {};
|
|
@@ -476,7 +476,7 @@ async function assertSchtasksAvailable() {
|
|
|
476
476
|
async function installScheduledTask({ env, stdout, programArguments, workingDirectory, environment, description }) {
|
|
477
477
|
await assertSchtasksAvailable();
|
|
478
478
|
const scriptPath = resolveTaskScriptPath(env);
|
|
479
|
-
await
|
|
479
|
+
await fs.mkdir(path.dirname(scriptPath), { recursive: true });
|
|
480
480
|
const script = buildTaskScript({
|
|
481
481
|
description: resolveGatewayServiceDescription({
|
|
482
482
|
env,
|
|
@@ -487,7 +487,7 @@ async function installScheduledTask({ env, stdout, programArguments, workingDire
|
|
|
487
487
|
workingDirectory,
|
|
488
488
|
environment
|
|
489
489
|
});
|
|
490
|
-
await
|
|
490
|
+
await fs.writeFile(scriptPath, script, "utf8");
|
|
491
491
|
const taskName = resolveTaskName(env);
|
|
492
492
|
const baseArgs = [
|
|
493
493
|
"/Create",
|
|
@@ -539,7 +539,7 @@ async function uninstallScheduledTask({ env, stdout }) {
|
|
|
539
539
|
]);
|
|
540
540
|
const scriptPath = resolveTaskScriptPath(env);
|
|
541
541
|
try {
|
|
542
|
-
await
|
|
542
|
+
await fs.unlink(scriptPath);
|
|
543
543
|
stdout.write(`${formatLine("Removed task script", scriptPath)}\n`);
|
|
544
544
|
} catch {
|
|
545
545
|
stdout.write(`Task script not found at ${scriptPath}\n`);
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
3
|
|
|
4
4
|
//#region src/agents/session-dirs.ts
|
|
5
5
|
async function resolveAgentSessionDirs(stateDir) {
|
|
6
6
|
const agentsDir = path.join(stateDir, "agents");
|
|
7
7
|
let entries = [];
|
|
8
8
|
try {
|
|
9
|
-
entries = await
|
|
9
|
+
entries = await fs.readdir(agentsDir, { withFileTypes: true });
|
|
10
10
|
} catch (err) {
|
|
11
11
|
if (err.code === "ENOENT") return [];
|
|
12
12
|
throw err;
|