@symerian/symi 3.5.21 → 3.5.23
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-NT0EKnK_.js → agent-CBfp75J4.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-CXIXYDRx.js → audit-Ce-u6aaR.js} +20 -20
- package/dist/{auth-choice-BtXIQPTU.js → auth-choice-CUvx59kv.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-DOTM7UBC.js → browser-cli-Ibgld3mA.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-Bpjj5p7I.js → call-xdEE97oU.js} +9 -9
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-XRJiHUm5.js → channel-options-DCmWOAc0.js} +1 -1
- package/dist/{channels-cli-CQ4M05oy.js → channels-cli-Cs1Z0dn8.js} +57 -57
- package/dist/{chrome-OTJg3QKn.js → chrome-CmQwGAuL.js} +7 -7
- package/dist/{chrome-38OnGyuN.js → chrome-DJChpTwP.js} +2 -2
- package/dist/{cli-B-uoiYP2.js → cli-CadU09SC.js} +45 -45
- package/dist/{client-CTrfpKT3.js → client-Cs9Bh-G0.js} +1 -1
- package/dist/{commands-registry-CwXsDVuO.js → commands-registry-Ca5hh7nh.js} +1 -1
- package/dist/{completion-cli-Cn_81QBb.js → completion-cli-Dd56ibFZ.js} +12 -12
- package/dist/{config-BngIfn5l.js → config-B4jkreCN.js} +2 -2
- package/dist/{config-cli-B1cPkJ4p.js → config-cli-GwUJEapt.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-C7zmSgvC.js → configure-5md67tCP.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 +38 -3
- package/dist/control-ui/index.html +2 -2
- package/dist/control-ui/js/symframe-awaiting.js +15 -10
- package/dist/control-ui/js/symframe-substrate.js +11 -7
- package/dist/control-ui/js/symframe.js +12 -28
- 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-otPeKxmi.js → cron-cli-CE9bV9Et.js} +7 -7
- package/dist/{daemon-cli-qDdMg615.js → daemon-cli-BYiG4GOU.js} +11 -11
- package/dist/{daemon-runtime-CKn0wmCk.js → daemon-runtime-DlQla_dA.js} +10 -10
- package/dist/{deliver-BiWlR84Y.js → deliver-B04yNX82.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-DDPwF2Nx.js → devices-cli-Bhr6jGtH.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-CL7MyXlo.js → doctor-completion-BpUGRguQ.js} +2 -2
- package/dist/{doctor-config-flow-ljVnQJjo.js → doctor-config-flow-C52W1uUK.js} +9 -9
- package/dist/{exec-approvals-cli-DsBoQu5H.js → exec-approvals-cli-CzvIqBUd.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-DG_2YZ8B.js → gateway-cli-D1d5YAt0.js} +98 -98
- package/dist/{gateway-rpc-gaoD882s.js → gateway-rpc-BTGT1SuZ.js} +1 -1
- package/dist/{glass-ui-ws-Bof7krDJ.js → glass-ui-ws-BH9WH_VN.js} +67 -67
- package/dist/{health-CMbUI4aN.js → health-DpE9GWGn.js} +4 -4
- package/dist/{hooks-cli-Cgjor7F-.js → hooks-cli-D7xxbEwI.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-Kr145PO_.js → logs-cli-DvIVuW0d.js} +7 -7
- package/dist/{manager-DG6PODgu.js → manager-CoCX7L5u.js} +15 -15
- package/dist/{manager-Cv4xI8sP.js → manager-DDynl084.js} +1 -1
- package/dist/{memory-BFnx3v3_.js → memory-B067LTL9.js} +5 -5
- package/dist/{memory-cli-CHNghdrm.js → memory-cli-D8Z_5-Nz.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-BbK8HMKa.js → models-cli-C979SN3Z.js} +55 -55
- package/dist/{models-config-DlXge3Sd.js → models-config-B5Xxy-c-.js} +8 -8
- package/dist/{node-cli-BPnBosC4.js → node-cli-DGybtex_.js} +27 -27
- package/dist/{node-service-Cc18m-uk.js → node-service-BH08wY5j.js} +1 -1
- package/dist/{nodes-cli-CN_m6PO5.js → nodes-cli-C-mEw2av.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-B2IcTMv-.js → onboard-CotuAZi6.js} +15 -15
- package/dist/{onboard-channels-wfGO5Zlh.js → onboard-channels-DSyynpou.js} +4 -4
- package/dist/{onboard-custom-DnDrvxSg.js → onboard-custom-BcRYreNG.js} +3 -3
- package/dist/{onboard-helpers-BKejzolA.js → onboard-helpers-CLXJ8zp0.js} +8 -8
- package/dist/{onboard-hooks-D9jHwImb.js → onboard-hooks-2SCajRKc.js} +1 -1
- package/dist/{onboard-remote-y3ZmP90U.js → onboard-remote-BYBai0w3.js} +1 -1
- package/dist/{onboard-skills-BFhHfrt9.js → onboard-skills-BxJlS1Bk.js} +3 -3
- package/dist/{onboarding-DqlPV372.js → onboarding-BnoGiOh3.js} +12 -12
- package/dist/{onboarding.finalize-Bwjv3jew.js → onboarding.finalize-g86Q4433.js} +31 -31
- package/dist/{onboarding.gateway-config-CiRo9EMt.js → onboarding.gateway-config-CEXjbEM0.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-B43UosQh.js → plugin-registry-AsC9gydF.js} +3 -3
- package/dist/plugin-sdk/index.js +6 -6
- package/dist/{plugins-cli-BV2wbjfI.js → plugins-cli-CbByGz8z.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-BmXxHUKe.js → program-context-CiyK6MfV.js} +40 -40
- package/dist/{prompt-select-styled-BlQZX6pK.js → prompt-select-styled-DaNQ_GgB.js} +38 -38
- package/dist/{provider-auth-helpers-WLwb6tL4.js → provider-auth-helpers-D2FDvwT5.js} +6 -6
- package/dist/{push-apns-CBGvXev_.js → push-apns-va-DRu4U.js} +4 -4
- package/dist/{pw-ai-CP5pn3eU.js → pw-ai-BiBvIJzd.js} +7 -7
- package/dist/{pw-ai-DY_6l11g.js → pw-ai-DLsdzdgc.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-CXdTiqyP.js → register.agent-BqdQ0s30.js} +67 -67
- package/dist/{register.configure-DVcn-gCO.js → register.configure-Dhwi-4FG.js} +70 -70
- package/dist/{register.maintenance-cpspl8D6.js → register.maintenance-iMjNw9uy.js} +67 -67
- package/dist/{register.message-BjcYy5UG.js → register.message-Ao_b9s2g.js} +47 -47
- package/dist/{register.onboard-D4RN92s2.js → register.onboard-ymhSAezZ.js} +25 -25
- package/dist/{register.setup-BvoXF0xl.js → register.setup-CKs9mqtD.js} +28 -28
- package/dist/{register.status-health-sessions-DjDvCXBn.js → register.status-health-sessions-U-azRmpb.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-CwxSZZOx.js → rpc-DjqFrbOc.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-DJd7Fcdy.js → security-cli-JKsf9SIu.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-DfVfzYqq.js → server-methods-B2tykucj.js} +60 -60
- package/dist/{server-node-events-B0yC6hi1.js → server-node-events-BKqszk_a.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-BWxLtb3D.js → status-DHBVIMyL.js} +23 -23
- package/dist/{status-Doq8T1zj.js → status-DPGFZPpp.js} +3 -3
- package/dist/{status.update-CKfyV6zw.js → status.update-DGJi0OLl.js} +3 -3
- package/dist/{symframe-cli-D1CtN3pf.js → symframe-cli-CX3dINPw.js} +9 -9
- package/dist/{symi-root-DeCVdZB4.js → symi-root-BQ0IpoW2.js} +2 -2
- package/dist/{synthesis-yl24Ovw4.js → synthesis-D91XE0n4.js} +4 -4
- package/dist/{synthesis-VZNnlUTf.js → synthesis-DmqicCsT.js} +45 -45
- package/dist/{system-cli-r7WJj0Xh.js → system-cli-DUHzCGfK.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-J7Jxp-FF.js → tui-DCqVZ6sC.js} +7 -7
- package/dist/{tui-cli-DR48dU_C.js → tui-cli-CI-P3sei.js} +19 -19
- package/dist/{unified-runner-BV5TdNFv.js → unified-runner-CdJx7yN8.js} +10 -10
- package/dist/{unified-runner-DXjH-prv.js → unified-runner-CznU7Ad0.js} +101 -101
- package/dist/{update-check-u6Jgr1cz.js → update-check-BCL_K7kx.js} +5 -5
- package/dist/{update-cli-CKpjWtlv.js → update-cli-DBoIBDNe.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 +12 -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
|
@@ -2,10 +2,10 @@ import "./registry-Sbac4a4z.js";
|
|
|
2
2
|
import "./paths-By0XjHBk.js";
|
|
3
3
|
import "./utils-CTPsqyE_.js";
|
|
4
4
|
import { t as createSubsystemLogger } from "./subsystem-CHbO_DkH.js";
|
|
5
|
-
import { l as parseEmbedding, r as cosineSimilarity } from "./internal-
|
|
5
|
+
import { l as parseEmbedding, r as cosineSimilarity } from "./internal-DVCddhhN.js";
|
|
6
6
|
import crypto from "node:crypto";
|
|
7
7
|
import path from "node:path";
|
|
8
|
-
import
|
|
8
|
+
import fs from "node:fs/promises";
|
|
9
9
|
|
|
10
10
|
//#region src/memory/consolidate.ts
|
|
11
11
|
const log = createSubsystemLogger("memory/consolidate");
|
|
@@ -346,7 +346,7 @@ async function stagePromote(params) {
|
|
|
346
346
|
};
|
|
347
347
|
const now = params.now ?? Date.now();
|
|
348
348
|
const memoryDir = path.join(params.workspaceDir, "memory");
|
|
349
|
-
await
|
|
349
|
+
await fs.mkdir(memoryDir, { recursive: true }).catch(() => {});
|
|
350
350
|
const corePath = path.join(memoryDir, "symi-core.md");
|
|
351
351
|
const beliefsPath = path.join(memoryDir, "symi-beliefs.md");
|
|
352
352
|
params.db.prepare(`UPDATE chunks SET promoted_to = NULL WHERE promoted_to = ?`).run(SYMI_CORE_PATH);
|
|
@@ -386,7 +386,7 @@ async function stagePromote(params) {
|
|
|
386
386
|
sections: sectionLines,
|
|
387
387
|
now
|
|
388
388
|
});
|
|
389
|
-
await
|
|
389
|
+
await fs.writeFile(corePath, symiCoreContent, "utf-8");
|
|
390
390
|
const merged = mergeBeliefs({
|
|
391
391
|
existing: await readExistingBeliefs(beliefsPath),
|
|
392
392
|
fresh: params.synthesizedBeliefs ?? [],
|
|
@@ -396,7 +396,7 @@ async function stagePromote(params) {
|
|
|
396
396
|
beliefs: merged,
|
|
397
397
|
now
|
|
398
398
|
});
|
|
399
|
-
await
|
|
399
|
+
await fs.writeFile(beliefsPath, symiBeliefsContent, "utf-8");
|
|
400
400
|
log.debug("consolidate.promote", {
|
|
401
401
|
promoted,
|
|
402
402
|
sections: CORE_SECTIONS.length,
|
|
@@ -596,7 +596,7 @@ function mergeBeliefs(params) {
|
|
|
596
596
|
return [...byHash.values()].toSorted((a, b) => b.confidence - a.confidence).slice(0, params.cap);
|
|
597
597
|
}
|
|
598
598
|
async function readExistingBeliefs(filePath) {
|
|
599
|
-
const content = await
|
|
599
|
+
const content = await fs.readFile(filePath, "utf-8").catch(() => "");
|
|
600
600
|
if (!content) return [];
|
|
601
601
|
const out = [];
|
|
602
602
|
for (const rawLine of content.split("\n")) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
2
|
import { t as createSubsystemLogger } from "./subsystem-CHbO_DkH.js";
|
|
3
|
-
import { i as loadConfig } from "./config-
|
|
4
|
-
import { x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
5
|
-
import { a as resolveProfile, i as resolveBrowserConfig, n as listKnownProfileNames, p as ensureBrowserControlAuth, t as createBrowserRouteContext } from "./server-context-
|
|
3
|
+
import { i as loadConfig } from "./config-B4jkreCN.js";
|
|
4
|
+
import { x as ensureChromeExtensionRelayServer } from "./chrome-DJChpTwP.js";
|
|
5
|
+
import { a as resolveProfile, i as resolveBrowserConfig, n as listKnownProfileNames, p as ensureBrowserControlAuth, t as createBrowserRouteContext } from "./server-context-ChcbJgNo.js";
|
|
6
6
|
|
|
7
7
|
//#region src/browser/server-lifecycle.ts
|
|
8
8
|
async function ensureExtensionRelayForProfiles(params) {
|
|
@@ -80,7 +80,7 @@ async function stopBrowserControlService() {
|
|
|
80
80
|
});
|
|
81
81
|
state = null;
|
|
82
82
|
try {
|
|
83
|
-
await (await import("./pw-ai-
|
|
83
|
+
await (await import("./pw-ai-BiBvIJzd.js")).closePlaywrightBrowserConnection();
|
|
84
84
|
} catch {}
|
|
85
85
|
}
|
|
86
86
|
|
|
@@ -850,6 +850,11 @@ body {
|
|
|
850
850
|
flex-direction: column;
|
|
851
851
|
gap: 8px;
|
|
852
852
|
height: 100%;
|
|
853
|
+
/* Stage C.2: contain the column so the substrate's internal scroll
|
|
854
|
+
engages instead of bursting the parent. Without overflow:hidden
|
|
855
|
+
here, the metrics-col scroll absorbs everything and substrate
|
|
856
|
+
overflow-y becomes a no-op. */
|
|
857
|
+
overflow: hidden;
|
|
853
858
|
}
|
|
854
859
|
.symframe-header {
|
|
855
860
|
padding: 8px 10px 10px;
|
|
@@ -890,17 +895,35 @@ body {
|
|
|
890
895
|
|
|
891
896
|
/* The stack — substrate + cards share a single grid cell so they
|
|
892
897
|
overlap on the z-axis. Cards on top (z:1) with backdrop-filter let
|
|
893
|
-
the substrate (z:0) show through.
|
|
898
|
+
the substrate (z:0) show through.
|
|
899
|
+
|
|
900
|
+
Stage C.2 sizing fixes (after the substrate was observed bursting
|
|
901
|
+
the column on a long reasoning session):
|
|
902
|
+
- flex: 1 1 0 force pure flex-grow, ignore intrinsic content size
|
|
903
|
+
- min-height: 0 break the default min-height:auto so the flex
|
|
904
|
+
algorithm can actually shrink this child below
|
|
905
|
+
its content size — required for the substrate's
|
|
906
|
+
overflow-y:auto to engage
|
|
907
|
+
- grid-template-rows: 1fr explicitly bound the row height so the
|
|
908
|
+
grid cell tracks the stack's measured size, not
|
|
909
|
+
its content size
|
|
910
|
+
- overflow: hidden on the stack as belt-and-suspenders so any
|
|
911
|
+
stray overflow doesn't leak past the cell bounds
|
|
912
|
+
- min-height: 0 on each grid child for the same reason
|
|
913
|
+
*/
|
|
894
914
|
.symframe-stack {
|
|
895
915
|
position: relative;
|
|
896
|
-
flex: 1 1
|
|
897
|
-
min-height:
|
|
916
|
+
flex: 1 1 0;
|
|
917
|
+
min-height: 0;
|
|
898
918
|
display: grid;
|
|
899
919
|
grid-template-areas: "overlay";
|
|
920
|
+
grid-template-rows: 1fr;
|
|
921
|
+
overflow: hidden;
|
|
900
922
|
}
|
|
901
923
|
.symframe-cards {
|
|
902
924
|
grid-area: overlay;
|
|
903
925
|
z-index: 1;
|
|
926
|
+
min-height: 0;
|
|
904
927
|
display: flex;
|
|
905
928
|
flex-direction: column;
|
|
906
929
|
gap: 10px;
|
|
@@ -932,6 +955,7 @@ body {
|
|
|
932
955
|
.symframe-substrate {
|
|
933
956
|
grid-area: overlay;
|
|
934
957
|
z-index: 0;
|
|
958
|
+
min-height: 0;
|
|
935
959
|
overflow-y: auto;
|
|
936
960
|
display: flex;
|
|
937
961
|
flex-direction: column;
|
|
@@ -1326,6 +1350,17 @@ body {
|
|
|
1326
1350
|
white-space: nowrap;
|
|
1327
1351
|
}
|
|
1328
1352
|
|
|
1353
|
+
/* Empty-state placeholder when no subagents and no schedules exist. */
|
|
1354
|
+
.awaiting-empty {
|
|
1355
|
+
font-family: var(--font-mono);
|
|
1356
|
+
font-size: 10px;
|
|
1357
|
+
color: var(--text-dim);
|
|
1358
|
+
opacity: 0.55;
|
|
1359
|
+
padding: 8px 10px;
|
|
1360
|
+
text-align: center;
|
|
1361
|
+
font-style: italic;
|
|
1362
|
+
}
|
|
1363
|
+
|
|
1329
1364
|
/* Add button + menu */
|
|
1330
1365
|
.awaiting-add-btn {
|
|
1331
1366
|
display: inline-flex;
|
|
@@ -200,7 +200,7 @@
|
|
|
200
200
|
<div class="symframe-header-row">
|
|
201
201
|
<span class="symframe-title">SYMFRAME</span>
|
|
202
202
|
<span class="reasoning-live-dot" id="reasoning-live-dot"></span>
|
|
203
|
-
<span class="symframe-count" id="symframe-count"
|
|
203
|
+
<span class="symframe-count" id="symframe-count"></span>
|
|
204
204
|
</div>
|
|
205
205
|
<div class="symframe-sub">window into the agent's mind</div>
|
|
206
206
|
</div>
|
|
@@ -223,7 +223,7 @@
|
|
|
223
223
|
<!-- "things that aren't done yet" list, sorted by in-flight-first -->
|
|
224
224
|
<!-- then ETA. Click a sub-agent → existing subagent modal; click -->
|
|
225
225
|
<!-- a schedule → existing schedule modal; [+ Add] opens an add menu. -->
|
|
226
|
-
<div class="symframe-awaiting" id="symframe-awaiting"
|
|
226
|
+
<div class="symframe-awaiting" id="symframe-awaiting">
|
|
227
227
|
<div class="awaiting-header">
|
|
228
228
|
<span class="awaiting-title">AWAITING</span>
|
|
229
229
|
<span class="awaiting-count" id="awaiting-count"></span>
|
|
@@ -156,6 +156,12 @@
|
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
// ── Render ──
|
|
159
|
+
// Stage C.1 fix: the AWAITING footer is ALWAYS visible — it's a
|
|
160
|
+
// permanent part of the panel's identity (matches the §5 spec
|
|
161
|
+
// "always-present footer"). When nothing's pending, an empty-state
|
|
162
|
+
// placeholder appears so the user always sees the surface, the
|
|
163
|
+
// [+ Add] button, and the implicit "this is where deferred work
|
|
164
|
+
// shows up" affordance.
|
|
159
165
|
function render() {
|
|
160
166
|
const activeSubagents = subagents
|
|
161
167
|
.filter((s) => s.status === "active" || !s.endedAt)
|
|
@@ -171,16 +177,11 @@
|
|
|
171
177
|
|
|
172
178
|
const totalActive = activeSubagents.length + sortedSchedules.filter((s) => s.enabled).length;
|
|
173
179
|
|
|
174
|
-
// Hide entire footer when nothing's pending and no schedules exist —
|
|
175
|
-
// a quiet panel is part of the design. Show whenever there's any
|
|
176
|
-
// activity or any scheduled job (even disabled — so user can re-enable).
|
|
177
|
-
const hasAny = activeSubagents.length > 0 || sortedSchedules.length > 0;
|
|
178
|
-
root.hidden = !hasAny && !addMenuOpen;
|
|
179
|
-
|
|
180
180
|
// Count badge: "N active" (in-flight subagents + enabled schedules)
|
|
181
|
+
// or "idle" when nothing's pending.
|
|
181
182
|
if (countEl) {
|
|
182
183
|
if (totalActive === 0) {
|
|
183
|
-
countEl.textContent = "";
|
|
184
|
+
countEl.textContent = "idle";
|
|
184
185
|
} else {
|
|
185
186
|
const subPart =
|
|
186
187
|
activeSubagents.length > 0
|
|
@@ -198,6 +199,13 @@
|
|
|
198
199
|
return;
|
|
199
200
|
}
|
|
200
201
|
list.innerHTML = "";
|
|
202
|
+
if (activeSubagents.length === 0 && sortedSchedules.length === 0) {
|
|
203
|
+
const empty = document.createElement("div");
|
|
204
|
+
empty.className = "awaiting-empty";
|
|
205
|
+
empty.textContent = "Nothing pending — use [+ Add] to spawn a subagent or schedule a task.";
|
|
206
|
+
list.appendChild(empty);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
201
209
|
for (const sub of activeSubagents) {
|
|
202
210
|
list.appendChild(buildSubagentRow(sub));
|
|
203
211
|
}
|
|
@@ -216,8 +224,6 @@
|
|
|
216
224
|
addMenuOpen = true;
|
|
217
225
|
addMenu.hidden = false;
|
|
218
226
|
addBtn.setAttribute("aria-expanded", "true");
|
|
219
|
-
// Ensure footer is visible while menu is open
|
|
220
|
-
root.hidden = false;
|
|
221
227
|
document.addEventListener("click", onOutsideClickAddMenu, true);
|
|
222
228
|
document.addEventListener("keydown", onAddMenuKey);
|
|
223
229
|
}
|
|
@@ -231,7 +237,6 @@
|
|
|
231
237
|
addBtn.setAttribute("aria-expanded", "false");
|
|
232
238
|
document.removeEventListener("click", onOutsideClickAddMenu, true);
|
|
233
239
|
document.removeEventListener("keydown", onAddMenuKey);
|
|
234
|
-
render(); // re-evaluate hidden state
|
|
235
240
|
}
|
|
236
241
|
|
|
237
242
|
function onOutsideClickAddMenu(e) {
|
|
@@ -46,14 +46,18 @@
|
|
|
46
46
|
// ── Decay tiers ─────────────────────────────────────────────────────
|
|
47
47
|
// Each entry carries dataset.createdAt; the tick reads its age and
|
|
48
48
|
// looks up the matching tier. Tiers are evaluated in order; first
|
|
49
|
-
// match (age < maxAge) wins.
|
|
50
|
-
//
|
|
49
|
+
// match (age < maxAge) wins.
|
|
50
|
+
//
|
|
51
|
+
// Stage C.1 revision: the original aggressive curve faded entries to
|
|
52
|
+
// 8% opacity + 6px blur (effectively invisible) after 10 minutes.
|
|
53
|
+
// Users perceived the substrate as "fading to nothing." The new
|
|
54
|
+
// curve keeps content readable at every age — older entries dim and
|
|
55
|
+
// shrink slightly but stay legible. No texture-mode collapse.
|
|
51
56
|
const DECAY_TIERS = [
|
|
52
|
-
{ maxAge:
|
|
53
|
-
{ maxAge:
|
|
54
|
-
{ maxAge:
|
|
55
|
-
{ maxAge:
|
|
56
|
-
{ maxAge: Infinity, opacity: 0.08, blur: 6, scale: 0.94, texture: true },
|
|
57
|
+
{ maxAge: 60_000, opacity: 1.0, blur: 0, scale: 1.0, texture: false }, // 0-1min sharp
|
|
58
|
+
{ maxAge: 300_000, opacity: 0.9, blur: 0, scale: 1.0, texture: false }, // 1-5min slight dim
|
|
59
|
+
{ maxAge: 1_800_000, opacity: 0.7, blur: 1, scale: 1.0, texture: false }, // 5-30min readable
|
|
60
|
+
{ maxAge: Infinity, opacity: 0.5, blur: 2, scale: 0.98, texture: false }, // 30min+ floor
|
|
57
61
|
];
|
|
58
62
|
|
|
59
63
|
const DECAY_TICK_MS = 1000;
|
|
@@ -60,7 +60,13 @@
|
|
|
60
60
|
return;
|
|
61
61
|
}
|
|
62
62
|
const total = cards.size;
|
|
63
|
-
|
|
63
|
+
// Stage C.1: blank when no cards (the static "2 cards" default
|
|
64
|
+
// was confusing post-Stage-B/C when the panel often has 0 cards).
|
|
65
|
+
if (total === 0) {
|
|
66
|
+
countEl.textContent = "";
|
|
67
|
+
} else {
|
|
68
|
+
countEl.textContent = total === 1 ? "1 card" : `${total} cards`;
|
|
69
|
+
}
|
|
64
70
|
}
|
|
65
71
|
|
|
66
72
|
// ── Per-type body renderers ──
|
|
@@ -752,33 +758,11 @@
|
|
|
752
758
|
return Array.from(cards.values());
|
|
753
759
|
}
|
|
754
760
|
|
|
755
|
-
//
|
|
756
|
-
//
|
|
757
|
-
//
|
|
758
|
-
//
|
|
759
|
-
//
|
|
760
|
-
// (see glass-ui/js/symframe-substrate.js).
|
|
761
|
-
const KNOWN_STICKY = [
|
|
762
|
-
{ id: "subagents", elementId: "subagents-panel", title: "SUBAGENTS", type: "panel-subagents" },
|
|
763
|
-
{
|
|
764
|
-
id: "scheduling",
|
|
765
|
-
elementId: "scheduling-panel",
|
|
766
|
-
title: "SCHEDULING",
|
|
767
|
-
type: "panel-scheduling",
|
|
768
|
-
},
|
|
769
|
-
];
|
|
770
|
-
for (const known of KNOWN_STICKY) {
|
|
771
|
-
const el = document.getElementById(known.elementId);
|
|
772
|
-
if (el) {
|
|
773
|
-
register({
|
|
774
|
-
id: known.id,
|
|
775
|
-
type: known.type,
|
|
776
|
-
title: known.title,
|
|
777
|
-
sticky: true,
|
|
778
|
-
element: el,
|
|
779
|
-
});
|
|
780
|
-
}
|
|
781
|
-
}
|
|
761
|
+
// Sticky-panel auto-registration was removed in Stage C (3.5.21):
|
|
762
|
+
// SUBAGENTS and SCHEDULING moved to the AWAITING footer, and REASONING
|
|
763
|
+
// became the substrate in Stage B (3.5.20). The `register()` API
|
|
764
|
+
// remains exposed via window.symframe.register for any future caller
|
|
765
|
+
// that wants to track a non-registry-managed DOM element as a card.
|
|
782
766
|
|
|
783
767
|
window.symframe = {
|
|
784
768
|
add,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { f as defaultRuntime } from "./subsystem-CHbO_DkH.js";
|
|
2
|
-
import { n as resolveSymiPackageRootSync, t as resolveSymiPackageRoot } from "./symi-root-
|
|
2
|
+
import { n as resolveSymiPackageRootSync, t as resolveSymiPackageRoot } from "./symi-root-BQ0IpoW2.js";
|
|
3
3
|
import { t as runCommandWithTimeout } from "./exec-DuYbft0z.js";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
5
|
import path from "node:path";
|
|
@@ -3,9 +3,9 @@ import "./paths-By0XjHBk.js";
|
|
|
3
3
|
import "./utils-CTPsqyE_.js";
|
|
4
4
|
import "./subsystem-CHbO_DkH.js";
|
|
5
5
|
import "./exec-DuYbft0z.js";
|
|
6
|
-
import "./agent-scope-
|
|
7
|
-
import "./model-selection-
|
|
8
|
-
import { i as loadConfig } from "./config-
|
|
6
|
+
import "./agent-scope-DOrZjOnW.js";
|
|
7
|
+
import "./model-selection-7wdmO-Iw.js";
|
|
8
|
+
import { i as loadConfig } from "./config-B4jkreCN.js";
|
|
9
9
|
import "./boolean-CbZoNRMn.js";
|
|
10
10
|
import "./env-BRnPI9sO.js";
|
|
11
11
|
import "./shell-env-Dc3iU7HK.js";
|
|
@@ -4,24 +4,24 @@ import "./utils-CTPsqyE_.js";
|
|
|
4
4
|
import { f as defaultRuntime } from "./subsystem-CHbO_DkH.js";
|
|
5
5
|
import { u as sanitizeAgentId } from "./session-key-DUSb7CCb.js";
|
|
6
6
|
import "./exec-DuYbft0z.js";
|
|
7
|
-
import "./agent-scope-
|
|
8
|
-
import "./model-selection-
|
|
9
|
-
import "./config-
|
|
7
|
+
import "./agent-scope-DOrZjOnW.js";
|
|
8
|
+
import "./model-selection-7wdmO-Iw.js";
|
|
9
|
+
import "./config-B4jkreCN.js";
|
|
10
10
|
import "./boolean-CbZoNRMn.js";
|
|
11
11
|
import "./env-BRnPI9sO.js";
|
|
12
12
|
import "./shell-env-Dc3iU7HK.js";
|
|
13
13
|
import "./manifest-registry-D1MLZEjS.js";
|
|
14
14
|
import "./message-channel-DgjXWzf-.js";
|
|
15
15
|
import { n as listChannelPlugins } from "./plugins-CF5skkHh.js";
|
|
16
|
-
import "./client-
|
|
17
|
-
import "./call-
|
|
18
|
-
import "./pairing-token-
|
|
16
|
+
import "./client-Cs9Bh-G0.js";
|
|
17
|
+
import "./call-xdEE97oU.js";
|
|
18
|
+
import "./pairing-token-Dcy37-4s.js";
|
|
19
19
|
import { n as formatDurationHuman } from "./format-duration-CIjmjQST.js";
|
|
20
20
|
import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs } from "./stagger-DQs772BN.js";
|
|
21
21
|
import { t as formatDocsLink } from "./links-Bqr0FxXx.js";
|
|
22
22
|
import "./progress-swt2y17x.js";
|
|
23
23
|
import { n as parsePositiveIntOrUndefined } from "./helpers-B_p8ul9t.js";
|
|
24
|
-
import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-
|
|
24
|
+
import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-BTGT1SuZ.js";
|
|
25
25
|
|
|
26
26
|
//#region src/cli/cron-cli/shared.ts
|
|
27
27
|
const getCronChannelOptions = () => ["last", ...listChannelPlugins().map((plugin) => plugin.id)].join("|");
|
|
@@ -4,26 +4,26 @@ import { _ as resolveStateDir, d as resolveIsNixMode, o as resolveConfigPath, u
|
|
|
4
4
|
import { v as shortenHomePath } from "./utils-CTPsqyE_.js";
|
|
5
5
|
import { f as defaultRuntime } from "./subsystem-CHbO_DkH.js";
|
|
6
6
|
import { t as formatCliCommand } from "./command-format-BzjsXBTi.js";
|
|
7
|
-
import { i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot, r as createConfigIO } from "./config-
|
|
7
|
+
import { i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot, r as createConfigIO } from "./config-B4jkreCN.js";
|
|
8
8
|
import { n as pickPrimaryTailnetIPv4 } from "./tailnet-XKACsamF.js";
|
|
9
9
|
import { u as resolveGatewayBindHost } from "./ws-C7Ktmt-R.js";
|
|
10
10
|
import { a as resolveGatewayAuth } from "./auth-Bkx-QuRN.js";
|
|
11
|
-
import { a as inspectPortUsage, s as formatPortDiagnostics } from "./ports-
|
|
11
|
+
import { a as inspectPortUsage, s as formatPortDiagnostics } from "./ports-gxLM5ahL.js";
|
|
12
12
|
import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DgjXWzf-.js";
|
|
13
|
-
import { n as callGateway } from "./call-
|
|
13
|
+
import { n as callGateway } from "./call-xdEE97oU.js";
|
|
14
14
|
import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-BLIhifCJ.js";
|
|
15
15
|
import { t as formatDocsLink } from "./links-Bqr0FxXx.js";
|
|
16
16
|
import { n as withProgress } from "./progress-swt2y17x.js";
|
|
17
17
|
import { n as inheritOptionFromParent } from "./command-options-DDDwkB9t.js";
|
|
18
|
-
import { i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-
|
|
19
|
-
import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-
|
|
20
|
-
import { n as isWSLEnv } from "./wsl-
|
|
21
|
-
import { s as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-
|
|
22
|
-
import { a as createCliStatusTextStyles, c as parsePortFromArgs, d as renderRuntimeHints, f as resolveRuntimeStatusColor, g as installDaemonServiceAndEmit, h as createDaemonActionContext, i as runServiceUninstall, l as pickProbeHostForBind, m as buildDaemonServiceSnapshot, n as runServiceStart, o as filterDaemonEnv, p as safeDaemonEnv, r as runServiceStop, s as normalizeListenerAddress, t as runServiceRestart, u as renderGatewayServiceStartHints } from "./lifecycle-core-
|
|
23
|
-
import { i as auditGatewayServiceConfig, n as renderSystemdUnavailableHints, s as formatRuntimeStatus, t as isSystemdUnavailableDetail } from "./systemd-hints-
|
|
18
|
+
import { i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-DlQla_dA.js";
|
|
19
|
+
import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-CLXJ8zp0.js";
|
|
20
|
+
import { n as isWSLEnv } from "./wsl-CglTdtlb.js";
|
|
21
|
+
import { s as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-e6MzlLCd.js";
|
|
22
|
+
import { a as createCliStatusTextStyles, c as parsePortFromArgs, d as renderRuntimeHints, f as resolveRuntimeStatusColor, g as installDaemonServiceAndEmit, h as createDaemonActionContext, i as runServiceUninstall, l as pickProbeHostForBind, m as buildDaemonServiceSnapshot, n as runServiceStart, o as filterDaemonEnv, p as safeDaemonEnv, r as runServiceStop, s as normalizeListenerAddress, t as runServiceRestart, u as renderGatewayServiceStartHints } from "./lifecycle-core-wFwnK_mD.js";
|
|
23
|
+
import { i as auditGatewayServiceConfig, n as renderSystemdUnavailableHints, s as formatRuntimeStatus, t as isSystemdUnavailableDetail } from "./systemd-hints-CsrzMCTD.js";
|
|
24
24
|
import { t as parsePort } from "./parse-port-CMRD6fhd.js";
|
|
25
|
-
import { t as readLastGatewayErrorLine } from "./diagnostics-
|
|
26
|
-
import { n as renderGatewayServiceCleanupHints, t as findExtraGatewayServices } from "./inspect-
|
|
25
|
+
import { t as readLastGatewayErrorLine } from "./diagnostics-DlZODdRf.js";
|
|
26
|
+
import { n as renderGatewayServiceCleanupHints, t as findExtraGatewayServices } from "./inspect-CGKsaVZ4.js";
|
|
27
27
|
|
|
28
28
|
//#region src/cli/daemon-cli/install.ts
|
|
29
29
|
async function runDaemonInstall(opts) {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { t as formatCliCommand } from "./command-format-BzjsXBTi.js";
|
|
2
|
-
import { N as VERSION, k as collectConfigServiceEnvVars } from "./config-
|
|
2
|
+
import { N as VERSION, k as collectConfigServiceEnvVars } from "./config-B4jkreCN.js";
|
|
3
3
|
import { a as NODE_SERVICE_MARKER, c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName, g as resolveNodeWindowsTaskName, h as resolveNodeSystemdServiceName, i as NODE_SERVICE_KIND, m as resolveNodeLaunchAgentLabel, n as GATEWAY_SERVICE_KIND, o as NODE_WINDOWS_TASK_SCRIPT_NAME, r as GATEWAY_SERVICE_MARKER } from "./constants-BLIhifCJ.js";
|
|
4
4
|
import { n as isSupportedNodeVersion } from "./runtime-guard-CWA00ZXa.js";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import os from "node:os";
|
|
7
7
|
import { promisify } from "node:util";
|
|
8
|
-
import
|
|
8
|
+
import fs from "node:fs/promises";
|
|
9
9
|
import { execFile } from "node:child_process";
|
|
10
10
|
|
|
11
11
|
//#region src/daemon/program-args.ts
|
|
@@ -23,23 +23,23 @@ async function resolveCliEntrypointPathForService() {
|
|
|
23
23
|
const normalized = path.resolve(argv1);
|
|
24
24
|
const resolvedPath = await resolveRealpathSafe(normalized);
|
|
25
25
|
if (/[/\\]dist[/\\].+\.(cjs|js|mjs)$/.test(resolvedPath)) {
|
|
26
|
-
await
|
|
26
|
+
await fs.access(resolvedPath);
|
|
27
27
|
if (/[/\\]dist[/\\].+\.(cjs|js|mjs)$/.test(normalized) && normalized !== resolvedPath) try {
|
|
28
|
-
await
|
|
28
|
+
await fs.access(normalized);
|
|
29
29
|
return normalized;
|
|
30
30
|
} catch {}
|
|
31
31
|
return resolvedPath;
|
|
32
32
|
}
|
|
33
33
|
const distCandidates = buildDistCandidates(resolvedPath, normalized);
|
|
34
34
|
for (const candidate of distCandidates) try {
|
|
35
|
-
await
|
|
35
|
+
await fs.access(candidate);
|
|
36
36
|
return candidate;
|
|
37
37
|
} catch {}
|
|
38
38
|
throw new Error(`Cannot find built CLI at ${distCandidates.join(" or ")}. Run "pnpm build" first, or use dev mode.`);
|
|
39
39
|
}
|
|
40
40
|
async function resolveRealpathSafe(inputPath) {
|
|
41
41
|
try {
|
|
42
|
-
return await
|
|
42
|
+
return await fs.realpath(inputPath);
|
|
43
43
|
} catch {
|
|
44
44
|
return inputPath;
|
|
45
45
|
}
|
|
@@ -99,7 +99,7 @@ async function resolveBinaryPath(binary) {
|
|
|
99
99
|
try {
|
|
100
100
|
const resolved = execFileSync(cmd, [binary], { encoding: "utf8" }).trim().split(/\r?\n/)[0]?.trim();
|
|
101
101
|
if (!resolved) throw new Error("empty");
|
|
102
|
-
await
|
|
102
|
+
await fs.access(resolved);
|
|
103
103
|
return resolved;
|
|
104
104
|
} catch {
|
|
105
105
|
if (binary === "bun") throw new Error("Bun not found in PATH. Install bun: https://bun.sh");
|
|
@@ -118,7 +118,7 @@ async function resolveCliProgramArguments(params) {
|
|
|
118
118
|
if (params.dev) {
|
|
119
119
|
const repoRoot = resolveRepoRootForDev();
|
|
120
120
|
const devCliPath = path.join(repoRoot, "src", "index.ts");
|
|
121
|
-
await
|
|
121
|
+
await fs.access(devCliPath);
|
|
122
122
|
return {
|
|
123
123
|
programArguments: [
|
|
124
124
|
isBunRuntime(execPath) ? execPath : await resolveBunPath(),
|
|
@@ -146,7 +146,7 @@ async function resolveCliProgramArguments(params) {
|
|
|
146
146
|
}
|
|
147
147
|
const repoRoot = resolveRepoRootForDev();
|
|
148
148
|
const devCliPath = path.join(repoRoot, "src", "index.ts");
|
|
149
|
-
await
|
|
149
|
+
await fs.access(devCliPath);
|
|
150
150
|
if (isBunRuntime(execPath)) return {
|
|
151
151
|
programArguments: [
|
|
152
152
|
execPath,
|
|
@@ -259,7 +259,7 @@ function isSystemNodePath(nodePath, env = process.env, platform = process.platfo
|
|
|
259
259
|
async function resolveSystemNodePath(env = process.env, platform = process.platform) {
|
|
260
260
|
const candidates = buildSystemNodeCandidates(env, platform);
|
|
261
261
|
for (const candidate of candidates) try {
|
|
262
|
-
await
|
|
262
|
+
await fs.access(candidate);
|
|
263
263
|
return candidate;
|
|
264
264
|
} catch {}
|
|
265
265
|
return null;
|
|
@@ -9,7 +9,7 @@ import { t as formatCliCommand } from "./command-format-BrrHNE8r.js";
|
|
|
9
9
|
import { n as isPidAlive, t as resolveProcessScopedMap } from "./process-scoped-map-B-dHc_9I.js";
|
|
10
10
|
import { c as loadConfig, d as writeConfigFile, m as parseByteSize, p as parseDurationMs, s as createConfigIO, t as SsrFBlockedError } from "./ssrf-DNhyFMRW.js";
|
|
11
11
|
import { t as parseBooleanValue } from "./boolean-BsqeuxE6.js";
|
|
12
|
-
import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
12
|
+
import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-CmQwGAuL.js";
|
|
13
13
|
import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-Dm4gX4Tl.js";
|
|
14
14
|
import { n as formatErrorMessage, t as extractErrorCode } from "./errors-C89ppfp9.js";
|
|
15
15
|
import { b as SafeOpenError, d as extensionForMime, i as buildImageResizeSideGrid, l as resizeToJpeg, o as getImageMetadata, r as IMAGE_REDUCE_QUALITY_STEPS, t as getAgentScopedMediaLocalRoots, u as detectMime, x as openFileWithinRoot } from "./local-roots-C7fBKoOI.js";
|
|
@@ -939,7 +939,7 @@ function isModuleNotFoundError(err) {
|
|
|
939
939
|
}
|
|
940
940
|
async function loadPwAiModule(mode) {
|
|
941
941
|
try {
|
|
942
|
-
return await import("./pw-ai-
|
|
942
|
+
return await import("./pw-ai-DLsdzdgc.js");
|
|
943
943
|
} catch (err) {
|
|
944
944
|
if (mode === "soft") return null;
|
|
945
945
|
if (isModuleNotFoundError(err)) return null;
|
|
@@ -3536,11 +3536,11 @@ function createProfileContext(opts, profile) {
|
|
|
3536
3536
|
const userDataDir = resolveSymiUserDataDir(profile.name);
|
|
3537
3537
|
const profileState = getProfileState();
|
|
3538
3538
|
if (await isHttpReachable(300) && !profileState.running) try {
|
|
3539
|
-
await (await import("./pw-ai-
|
|
3539
|
+
await (await import("./pw-ai-DLsdzdgc.js")).closePlaywrightBrowserConnection();
|
|
3540
3540
|
} catch {}
|
|
3541
3541
|
if (profileState.running) await stopRunningBrowser();
|
|
3542
3542
|
try {
|
|
3543
|
-
await (await import("./pw-ai-
|
|
3543
|
+
await (await import("./pw-ai-DLsdzdgc.js")).closePlaywrightBrowserConnection();
|
|
3544
3544
|
} catch {}
|
|
3545
3545
|
if (!fs.existsSync(userDataDir)) return {
|
|
3546
3546
|
moved: false,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
2
|
import { H as createInternalHookEvent, W as triggerInternalHook, d as getActivePluginRegistry } from "./registry-Sbac4a4z.js";
|
|
3
3
|
import { t as createSubsystemLogger } from "./subsystem-CHbO_DkH.js";
|
|
4
|
-
import { i as resolveMirroredTranscriptText, r as appendAssistantMessageToSessionTranscript } from "./sessions-
|
|
4
|
+
import { i as resolveMirroredTranscriptText, r as appendAssistantMessageToSessionTranscript } from "./sessions-Dxf5Kjig.js";
|
|
5
5
|
import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CF5skkHh.js";
|
|
6
6
|
import { n as isSilentReplyText, t as SILENT_REPLY_TOKEN } from "./tokens-0yh2UnJq.js";
|
|
7
7
|
import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-BxfKjCUx.js";
|
|
8
|
-
import { t as getAgentScopedMediaLocalRoots } from "./local-roots-
|
|
8
|
+
import { t as getAgentScopedMediaLocalRoots } from "./local-roots-CgDCgCuM.js";
|
|
9
9
|
import { i as failDelivery, r as enqueueDelivery, t as ackDelivery } from "./delivery-queue-OAc7hsIs.js";
|
|
10
10
|
|
|
11
11
|
//#region src/plugins/hooks.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
//#region src/cli/deps.ts
|
|
2
2
|
function createDefaultDeps() {
|
|
3
3
|
return { sendMessageSlack: async (...args) => {
|
|
4
|
-
const { sendMessageSlack } = await import("./send-
|
|
4
|
+
const { sendMessageSlack } = await import("./send-B0jHSNMF.js").then((n) => n.n);
|
|
5
5
|
return await sendMessageSlack(...args);
|
|
6
6
|
} };
|
|
7
7
|
}
|
|
@@ -3,18 +3,18 @@ import "./paths-By0XjHBk.js";
|
|
|
3
3
|
import "./utils-CTPsqyE_.js";
|
|
4
4
|
import { f as defaultRuntime } from "./subsystem-CHbO_DkH.js";
|
|
5
5
|
import "./exec-DuYbft0z.js";
|
|
6
|
-
import "./agent-scope-
|
|
7
|
-
import "./model-selection-
|
|
8
|
-
import "./config-
|
|
6
|
+
import "./agent-scope-DOrZjOnW.js";
|
|
7
|
+
import "./model-selection-7wdmO-Iw.js";
|
|
8
|
+
import "./config-B4jkreCN.js";
|
|
9
9
|
import "./boolean-CbZoNRMn.js";
|
|
10
10
|
import "./env-BRnPI9sO.js";
|
|
11
11
|
import "./shell-env-Dc3iU7HK.js";
|
|
12
12
|
import "./manifest-registry-D1MLZEjS.js";
|
|
13
13
|
import { r as isLoopbackHost } from "./ws-C7Ktmt-R.js";
|
|
14
14
|
import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DgjXWzf-.js";
|
|
15
|
-
import { Gt as approveDevicePairing, Jt as listDevicePairing, en as summarizeDeviceTokens } from "./client-
|
|
16
|
-
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-
|
|
17
|
-
import "./pairing-token-
|
|
15
|
+
import { Gt as approveDevicePairing, Jt as listDevicePairing, en as summarizeDeviceTokens } from "./client-Cs9Bh-G0.js";
|
|
16
|
+
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-xdEE97oU.js";
|
|
17
|
+
import "./pairing-token-Dcy37-4s.js";
|
|
18
18
|
import { n as formatTimeAgo } from "./format-relative-D4GQsWlP.js";
|
|
19
19
|
import { n as withProgress } from "./progress-swt2y17x.js";
|
|
20
20
|
import { t as renderTable } from "./table-0A3xKJVC.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { s as resolveGatewayLogPaths } from "./service-
|
|
2
|
-
import
|
|
1
|
+
import { s as resolveGatewayLogPaths } from "./service-e6MzlLCd.js";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
3
|
|
|
4
4
|
//#region src/daemon/diagnostics.ts
|
|
5
5
|
const GATEWAY_LOG_ERROR_PATTERNS = [
|
|
@@ -11,7 +11,7 @@ const GATEWAY_LOG_ERROR_PATTERNS = [
|
|
|
11
11
|
];
|
|
12
12
|
async function readLastLogLine(filePath) {
|
|
13
13
|
try {
|
|
14
|
-
const lines = (await
|
|
14
|
+
const lines = (await fs.readFile(filePath, "utf8")).split(/\r?\n/).map((line) => line.trim());
|
|
15
15
|
for (let i = lines.length - 1; i >= 0; i -= 1) if (lines[i]) return lines[i];
|
|
16
16
|
return null;
|
|
17
17
|
} catch {
|
|
@@ -20,8 +20,8 @@ async function readLastLogLine(filePath) {
|
|
|
20
20
|
}
|
|
21
21
|
async function readLastGatewayErrorLine(env) {
|
|
22
22
|
const { stdoutPath, stderrPath } = resolveGatewayLogPaths(env);
|
|
23
|
-
const stderrRaw = await
|
|
24
|
-
const stdoutRaw = await
|
|
23
|
+
const stderrRaw = await fs.readFile(stderrPath, "utf8").catch(() => "");
|
|
24
|
+
const stdoutRaw = await fs.readFile(stdoutPath, "utf8").catch(() => "");
|
|
25
25
|
const lines = [...stderrRaw.split(/\r?\n/), ...stdoutRaw.split(/\r?\n/)].map((line) => line.trim());
|
|
26
26
|
for (let i = lines.length - 1; i >= 0; i -= 1) {
|
|
27
27
|
const line = lines[i];
|
|
@@ -3,9 +3,9 @@ import "./paths-By0XjHBk.js";
|
|
|
3
3
|
import "./utils-CTPsqyE_.js";
|
|
4
4
|
import { f as defaultRuntime } from "./subsystem-CHbO_DkH.js";
|
|
5
5
|
import "./exec-DuYbft0z.js";
|
|
6
|
-
import "./agent-scope-
|
|
7
|
-
import "./model-selection-
|
|
8
|
-
import { i as loadConfig } from "./config-
|
|
6
|
+
import "./agent-scope-DOrZjOnW.js";
|
|
7
|
+
import "./model-selection-7wdmO-Iw.js";
|
|
8
|
+
import { i as loadConfig } from "./config-B4jkreCN.js";
|
|
9
9
|
import "./boolean-CbZoNRMn.js";
|
|
10
10
|
import "./env-BRnPI9sO.js";
|
|
11
11
|
import "./shell-env-Dc3iU7HK.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { c as normalizeStringEntries } from "./dock-hF45sewN.js";
|
|
2
|
-
import { i as readChannelAllowFromStore } from "./pairing-store-
|
|
2
|
+
import { i as readChannelAllowFromStore } from "./pairing-store-BNhJOnWn.js";
|
|
3
3
|
|
|
4
4
|
//#region src/security/dm-policy-shared.ts
|
|
5
5
|
async function resolveDmAllowState(params) {
|
|
@@ -3,9 +3,9 @@ import "./paths-By0XjHBk.js";
|
|
|
3
3
|
import "./utils-CTPsqyE_.js";
|
|
4
4
|
import { f as defaultRuntime } from "./subsystem-CHbO_DkH.js";
|
|
5
5
|
import "./exec-DuYbft0z.js";
|
|
6
|
-
import "./agent-scope-
|
|
7
|
-
import "./model-selection-
|
|
8
|
-
import { i as loadConfig } from "./config-
|
|
6
|
+
import "./agent-scope-DOrZjOnW.js";
|
|
7
|
+
import "./model-selection-7wdmO-Iw.js";
|
|
8
|
+
import { i as loadConfig } from "./config-B4jkreCN.js";
|
|
9
9
|
import "./boolean-CbZoNRMn.js";
|
|
10
10
|
import "./env-BRnPI9sO.js";
|
|
11
11
|
import "./shell-env-Dc3iU7HK.js";
|