@symerian/symi 3.5.26 → 3.5.28
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-BsRYHa15.js} +18 -18
- package/dist/{agent-CB5yb-7V.js → agent-TRt_SsAW.js} +1 -1
- package/dist/{agent-scope-Bnsyyeci.js → agent-scope-DOrZjOnW.js} +18 -18
- package/dist/{agents-DtRd3yEb.js → agents-7qMp2MWu.js} +2 -2
- 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-5SLfZiQ7.js → auth-choice-C8lwYiEQ.js} +1 -1
- package/dist/{auth-choice-DKRHawfp.js → auth-choice-DcB72YWZ.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/{banner-B_P_FrmA.js → banner-B5Hv4rlk.js} +1 -1
- 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-DOzFci6h.js} +1 -1
- package/dist/{channel-options-8NGYZjfd.js → channel-options-ZkruGuHl.js} +1 -1
- package/dist/{channels-cli-Bx90nSmB.js → channels-cli-CEz9LILV.js} +7 -7
- package/dist/{channels-cli-CfBFa-VO.js → channels-cli-DMShhX0d.js} +57 -57
- package/dist/{chrome-38OnGyuN.js → chrome-DJChpTwP.js} +2 -2
- package/dist/{chrome-3jl2ulOE.js → chrome-DNssqQJs.js} +7 -7
- package/dist/{chrome-CmQwGAuL.js → chrome-OTJg3QKn.js} +7 -7
- package/dist/{cli-qf0qK7oi.js → cli-Byovb_j5.js} +45 -45
- package/dist/{cli-DHG9iZJi.js → cli-MDHkESMC.js} +4 -4
- package/dist/{client-DiPa71im.js → client-DH75FlQF.js} +1 -1
- package/dist/{command-registry-DBbzZvh6.js → command-registry-Dzj-Uz5N.js} +10 -10
- package/dist/{commands-registry-CwXsDVuO.js → commands-registry-Ca5hh7nh.js} +1 -1
- package/dist/{completion-cli-Ddfrnilx.js → completion-cli-CsJ2f_fk.js} +12 -12
- package/dist/{completion-cli-DoQrkCAd.js → completion-cli-vAwL_uEK.js} +2 -2
- package/dist/{config-BngIfn5l.js → config-B4jkreCN.js} +2 -2
- package/dist/{config-cli-9a5qBcdo.js → config-cli-CqqCDyf0.js} +1 -1
- package/dist/{config-cli-JVGYyfYA.js → config-cli-cmea_Z-A.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-ryB8EvyP.js → configure-BEPKQuJj.js} +2 -2
- package/dist/{configure-Bqz2Hvnf.js → configure-DymrZd1n.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 +274 -0
- package/dist/control-ui/index.html +14 -0
- package/dist/control-ui/js/symframe-bidirectional.js +210 -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/{deliver-f3cIWxXT.js → deliver-q23ar_Pm.js} +4 -4
- 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-Bk55g4MP.js → doctor-completion--phnyAqO.js} +1 -1
- package/dist/{doctor-completion-eh7aImCx.js → doctor-completion-BY72G6-l.js} +2 -2
- package/dist/{doctor-config-flow-ljVnQJjo.js → doctor-config-flow-C52W1uUK.js} +9 -9
- package/dist/entry.js +1 -1
- package/dist/{exec-approvals-cli-B2UY9dZC.js → exec-approvals-cli-xTOKcyZh.js} +13 -13
- package/dist/extensionAPI.js +4 -4
- 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-BVpyqk_H.js} +98 -98
- package/dist/{gateway-cli-BGMVOW2G.js → gateway-cli-Bo80TSkq.js} +10 -10
- package/dist/{gateway-rpc-DmFOiGIJ.js → gateway-rpc-C6lKFbor.js} +1 -1
- package/dist/{glass-ui-ws-Z-W33_mF.js → glass-ui-ws-BK5qk7-_.js} +8 -8
- package/dist/{glass-ui-ws-CwOiILiY.js → glass-ui-ws-CrmnRYxe.js} +67 -67
- package/dist/{health-Bc1wmAO5.js → health-7UqIGG8U.js} +4 -4
- package/dist/{hooks-cli-DOjHV2fF.js → hooks-cli-CjklMDuK.js} +59 -59
- package/dist/{hooks-cli-Bn6x6Jnj.js → hooks-cli-CqmTdxT6.js} +5 -5
- 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-CL767Sv9.js} +15 -15
- package/dist/{manager-BHddoe4T.js → manager-NDn8AFhr.js} +1 -1
- package/dist/{manager-DH00nlW8.js → manager-XfNxjaX5.js} +1 -1
- package/dist/{manager-F0-SHT1B.js → manager-fgUC_sHR.js} +1 -1
- package/dist/{memory-C02Znuee.js → memory-CTf9MdBg.js} +2 -2
- package/dist/{memory-fFc7GGPZ.js → memory-DOl2l2AS.js} +5 -5
- package/dist/{memory-cli-BnBKckEk.js → memory-cli-B9_Vfaow.js} +12 -12
- package/dist/{memory-cli-083UJtVJ.js → memory-cli-CA5PbH9y.js} +2 -2
- 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-Bh_frCup.js → models-DgiBOeVH.js} +2 -2
- package/dist/{models-cli-DVdb_TUS.js → models-cli-B7gTrlgn.js} +55 -55
- package/dist/{models-cli-BhBu4Dwm.js → models-cli-BHN3bt0f.js} +6 -6
- 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-BNdKimpG.js} +15 -15
- package/dist/{onboard-BSxqEQfo.js → onboard-DGp6mHJD.js} +1 -1
- package/dist/{onboard-channels-BkR3MKMp.js → onboard-channels-DSBWRjSp.js} +1 -1
- package/dist/{onboard-channels-DVS9vciR.js → onboard-channels-Dhb-28-_.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-BG23DuS1.js} +12 -12
- package/dist/{onboarding-CrCGoZ4H.js → onboarding-MPSU9pXd.js} +3 -3
- package/dist/{onboarding.finalize-BYzduVFA.js → onboarding.finalize-B-mxzJ08.js} +4 -4
- package/dist/{onboarding.finalize-DBFL76p0.js → onboarding.finalize-Cv20GyNt.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-DGnpyHm-.js → pi-embedded-V-5MAZNb.js} +11 -10
- 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-CBV_Y6Dj.js} +3 -3
- package/dist/{plugin-registry-B74FBx4U.js → plugin-registry-c3Skr0q9.js} +1 -1
- package/dist/{plugins-cli-Cmf3kRf5.js → plugins-cli-8Jo1X8SU.js} +5 -5
- package/dist/{plugins-cli-B4ljapU5.js → plugins-cli-Dl7-FSCq.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-CGuYYumL.js → program-D-LYHEvk.js} +10 -10
- package/dist/{program-context-BzqGUxMS.js → program-context-BpeLcVUB.js} +40 -40
- package/dist/{prompt-select-styled-BVkRteee.js → prompt-select-styled-Ceih9wkY.js} +38 -38
- package/dist/{prompt-select-styled-b752FPLG.js → prompt-select-styled-ZWxB2Odf.js} +4 -4
- package/dist/{provider-auth-helpers-C6GjAO-s.js → provider-auth-helpers-BCejcf5o.js} +6 -6
- package/dist/{provider-auth-helpers-BKveYcEH.js → provider-auth-helpers-BdvW7eau.js} +1 -1
- package/dist/{push-apns-HNg0rTkI.js → push-apns-D4iLNyBo.js} +1 -1
- package/dist/{push-apns-CbbWM63o.js → push-apns-HQd5hCpM.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/{pw-ai-DOAsQ5NX.js → pw-ai-v__CyAlM.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-DbPYGG3u.js → register.agent-DoUbqZIu.js} +9 -9
- package/dist/{register.agent-DhS2lmWo.js → register.agent-zwVEiCHs.js} +67 -67
- package/dist/{register.configure-ChjzXxh8.js → register.configure-CSe8Rlda.js} +70 -70
- package/dist/{register.configure-B0M15y31.js → register.configure-jBKvvOnk.js} +8 -8
- package/dist/{register.maintenance-bzLNOqch.js → register.maintenance-BdikNAV1.js} +9 -9
- package/dist/{register.maintenance-frHWf6Xs.js → register.maintenance-royLmVA2.js} +67 -67
- package/dist/{register.message-Bfukmte_.js → register.message-C1H5Vcnb.js} +5 -5
- package/dist/{register.message-DWB4eVII.js → register.message-C_0uLdYn.js} +47 -47
- package/dist/{register.onboard-4P8ud4Sw.js → register.onboard-DTLtb0SN.js} +25 -25
- package/dist/{register.onboard-CDsSVoFI.js → register.onboard-DnMRUtnl.js} +2 -2
- package/dist/{register.setup-Bp8rYeRx.js → register.setup-B9sjRH7l.js} +2 -2
- package/dist/{register.setup-D0I7sEGc.js → register.setup-KA8Cs3HJ.js} +28 -28
- package/dist/{register.status-health-sessions-69Gigo_H.js → register.status-health-sessions-B_jcsH3c.js} +41 -41
- package/dist/{register.status-health-sessions-DE2db_Uo.js → register.status-health-sessions-BwiKHLEj.js} +3 -3
- package/dist/{register.subclis-QXO75pUm.js → register.subclis-B_V8vNI0.js} +9 -9
- 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/{run-main-MD8Z8ydF.js → run-main-DhgQtxI0.js} +17 -17
- 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-6-10RyMD.js} +60 -60
- package/dist/{server-methods-DTkVQH8Q.js → server-methods-Bdz-OwQ4.js} +7 -7
- package/dist/{server-node-events-C0smPxrR.js → server-node-events-B3Yey3h9.js} +6 -6
- package/dist/{server-node-events-DHSiqnRS.js → server-node-events-C4giIb7q.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-DUbs9rVu.js → status-BRUIJsUm.js} +3 -3
- package/dist/{status-OTYFx93W.js → status-B_CQpjQ9.js} +1 -1
- package/dist/{status-ISN-LC9F.js → status-CCAO6ZHm.js} +23 -23
- package/dist/{status-BEZotN01.js → status-D_0593yR.js} +1 -1
- package/dist/{status.update-CKfyV6zw.js → status.update-DGJi0OLl.js} +3 -3
- package/dist/{subagent-registry-CVhLz4p3.js → subagent-registry-D8BIWG9Q.js} +4 -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-C1mZnGqD.js → synthesis-BfVWACNx.js} +4 -4
- package/dist/{synthesis-DkHCk0El.js → synthesis-CV94EuT_.js} +45 -45
- package/dist/{synthesis-CDPVZw2P.js → synthesis-D6pnRAxI.js} +4 -4
- package/dist/{synthesis-RhT991Ni.js → synthesis-qvteT0Ti.js} +4 -4
- 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-CtSJoaGS.js} +102 -101
- package/dist/{unified-runner-Cppo8O8z.js → unified-runner-H3Qh_NZO.js} +11 -10
- package/dist/{update-check-u6Jgr1cz.js → update-check-BCL_K7kx.js} +5 -5
- package/dist/{update-cli-48-Nah-Y.js → update-cli-BrryYmFA.js} +77 -77
- package/dist/{update-cli-D9g9s187.js → update-cli-CUos9qgT.js} +9 -9
- 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
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
// ── Symframe Bidirectional ──────────────────────────────────────────
|
|
2
|
+
// Stage E of the Dynamic Glass Panel arc — see ~/Documents/dynamic-glass-panel.md §5 Stage E.
|
|
3
|
+
//
|
|
4
|
+
// Two user-facing features that bridge the chat column and the symframe:
|
|
5
|
+
//
|
|
6
|
+
// 1. Mention-binding (agent → user direction)
|
|
7
|
+
// When the agent writes `[panel:<card-id>]` in a chat message, this
|
|
8
|
+
// module rewrites the literal text into a clickable span showing the
|
|
9
|
+
// card's title (or id if no title) AND auto-pulses (dwell) the
|
|
10
|
+
// referenced card. Clicking the span re-pulses. Fresh messages
|
|
11
|
+
// auto-dwell once on first render; history-loaded messages get
|
|
12
|
+
// clickable spans but no auto-dwell (so a session with 50 referenced
|
|
13
|
+
// messages doesn't dwell 50 times on reload).
|
|
14
|
+
//
|
|
15
|
+
// 2. "What are you considering?" (user → agent introspection)
|
|
16
|
+
// Small button in the symframe header. On click, dwells every
|
|
17
|
+
// weighing card AND adds .considering-weighing to #symframe which
|
|
18
|
+
// dims non-weighing cards for ~5s. Direct visual answer to "what
|
|
19
|
+
// options are the agent holding open right now?"
|
|
20
|
+
//
|
|
21
|
+
// Implementation notes:
|
|
22
|
+
// - Mention-scanning runs on a 500ms interval over all unscanned
|
|
23
|
+
// assistant bubbles; once processed, a bubble gets the
|
|
24
|
+
// .mentions-scanned class and is skipped. Streaming bubbles
|
|
25
|
+
// (.stream-bubble without .done) are skipped until they finalize.
|
|
26
|
+
// - The pageReadyAt + 1500ms grace window suppresses the initial
|
|
27
|
+
// auto-dwell flood from history reload.
|
|
28
|
+
// - The considering button reads window.symframe.list() to find
|
|
29
|
+
// weighing cards. Sticky cards (subagents/scheduling panels —
|
|
30
|
+
// mostly gone post-Stage-C, but defensive) are excluded.
|
|
31
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
32
|
+
|
|
33
|
+
"use strict";
|
|
34
|
+
|
|
35
|
+
(function () {
|
|
36
|
+
const PANEL_REF_PATTERN = /\[panel:([a-zA-Z0-9_-]+)\]/g;
|
|
37
|
+
const SCAN_INTERVAL_MS = 500;
|
|
38
|
+
const PAGE_READY_AT = Date.now() + 1500;
|
|
39
|
+
const CONSIDERING_DURATION_MS = 5000;
|
|
40
|
+
|
|
41
|
+
// ── Mention-binding ─────────────────────────────────────────────
|
|
42
|
+
function buildPanelRefSpan(id) {
|
|
43
|
+
const span = document.createElement("span");
|
|
44
|
+
span.className = "panel-ref";
|
|
45
|
+
span.dataset.cardId = id;
|
|
46
|
+
const cards = window.symframe?.list?.() || [];
|
|
47
|
+
const card = cards.find((c) => c.id === id);
|
|
48
|
+
const hasCard = !!card;
|
|
49
|
+
span.textContent = card?.title || id;
|
|
50
|
+
span.title = hasCard
|
|
51
|
+
? `Click to pulse "${card.title || id}" in the panel`
|
|
52
|
+
: `Card "${id}" — not currently in the panel`;
|
|
53
|
+
if (!hasCard) {
|
|
54
|
+
span.classList.add("panel-ref-orphan");
|
|
55
|
+
}
|
|
56
|
+
span.addEventListener("click", (e) => {
|
|
57
|
+
e.preventDefault();
|
|
58
|
+
const result = window.symframe?.dwell?.(id);
|
|
59
|
+
if (!result) {
|
|
60
|
+
span.classList.add("panel-ref-miss");
|
|
61
|
+
setTimeout(() => span.classList.remove("panel-ref-miss"), 1000);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
return span;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function walkTextNodes(node, callback) {
|
|
68
|
+
if (!node) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
72
|
+
callback(node);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const el = node;
|
|
79
|
+
// Skip elements we've already processed, code blocks, and links.
|
|
80
|
+
if (el.classList?.contains("panel-ref")) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (el.tagName === "CODE" || el.tagName === "PRE" || el.tagName === "A") {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
for (const child of Array.from(el.childNodes)) {
|
|
87
|
+
walkTextNodes(child, callback);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function processMentionsIn(bubble) {
|
|
92
|
+
const matchedIds = [];
|
|
93
|
+
walkTextNodes(bubble, (textNode) => {
|
|
94
|
+
const text = textNode.textContent;
|
|
95
|
+
if (!text) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
PANEL_REF_PATTERN.lastIndex = 0;
|
|
99
|
+
if (!PANEL_REF_PATTERN.test(text)) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
PANEL_REF_PATTERN.lastIndex = 0;
|
|
103
|
+
const fragment = document.createDocumentFragment();
|
|
104
|
+
let lastIndex = 0;
|
|
105
|
+
let match;
|
|
106
|
+
while ((match = PANEL_REF_PATTERN.exec(text)) !== null) {
|
|
107
|
+
const literal = match[0];
|
|
108
|
+
const id = match[1];
|
|
109
|
+
if (match.index > lastIndex) {
|
|
110
|
+
fragment.appendChild(document.createTextNode(text.slice(lastIndex, match.index)));
|
|
111
|
+
}
|
|
112
|
+
fragment.appendChild(buildPanelRefSpan(id));
|
|
113
|
+
matchedIds.push(id);
|
|
114
|
+
lastIndex = match.index + literal.length;
|
|
115
|
+
}
|
|
116
|
+
if (lastIndex < text.length) {
|
|
117
|
+
fragment.appendChild(document.createTextNode(text.slice(lastIndex)));
|
|
118
|
+
}
|
|
119
|
+
textNode.replaceWith(fragment);
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
// Auto-dwell on fresh mentions only — suppress during the initial
|
|
123
|
+
// history-reload window so we don't flood with pulses.
|
|
124
|
+
if (matchedIds.length > 0 && Date.now() >= PAGE_READY_AT) {
|
|
125
|
+
for (const id of matchedIds) {
|
|
126
|
+
try {
|
|
127
|
+
window.symframe?.dwell?.(id);
|
|
128
|
+
} catch (err) {
|
|
129
|
+
console.warn("[symframe-bidirectional] dwell threw:", err);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
function scanForMentions() {
|
|
136
|
+
const bubbles = document.querySelectorAll(".message.symi-msg .bubble:not(.mentions-scanned)");
|
|
137
|
+
for (const bubble of bubbles) {
|
|
138
|
+
// Skip still-streaming bubbles (delta still incoming)
|
|
139
|
+
if (bubble.classList.contains("stream-bubble") && !bubble.classList.contains("done")) {
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
processMentionsIn(bubble);
|
|
143
|
+
bubble.classList.add("mentions-scanned");
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// ── "What are you considering?" gesture ──────────────────────────
|
|
148
|
+
let considerTimer = null;
|
|
149
|
+
|
|
150
|
+
function showConsidering() {
|
|
151
|
+
const symframeRoot = document.getElementById("symframe");
|
|
152
|
+
if (!symframeRoot) {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
const list = window.symframe?.list?.() || [];
|
|
156
|
+
const weighing = list.filter((c) => c.intent === "weighing" && !c.sticky);
|
|
157
|
+
if (weighing.length === 0) {
|
|
158
|
+
// Brief flash on the considering button itself to signal "no
|
|
159
|
+
// weighing cards right now"
|
|
160
|
+
const btn = document.getElementById("considering-btn");
|
|
161
|
+
if (btn) {
|
|
162
|
+
btn.classList.add("considering-empty");
|
|
163
|
+
setTimeout(() => btn.classList.remove("considering-empty"), 800);
|
|
164
|
+
}
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
// Add the dimming class to non-weighing cards
|
|
168
|
+
symframeRoot.classList.add("considering-weighing");
|
|
169
|
+
// Dwell each weighing card (cyan halo pulses)
|
|
170
|
+
for (const c of weighing) {
|
|
171
|
+
try {
|
|
172
|
+
window.symframe?.dwell?.(c.id);
|
|
173
|
+
} catch (err) {
|
|
174
|
+
console.warn("[symframe-bidirectional] dwell threw:", err);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// Clear after the duration
|
|
178
|
+
if (considerTimer) {
|
|
179
|
+
clearTimeout(considerTimer);
|
|
180
|
+
}
|
|
181
|
+
considerTimer = setTimeout(() => {
|
|
182
|
+
symframeRoot.classList.remove("considering-weighing");
|
|
183
|
+
considerTimer = null;
|
|
184
|
+
}, CONSIDERING_DURATION_MS);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
function wireConsideringButton() {
|
|
188
|
+
const btn = document.getElementById("considering-btn");
|
|
189
|
+
if (!btn) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
btn.addEventListener("click", (e) => {
|
|
193
|
+
e.preventDefault();
|
|
194
|
+
showConsidering();
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// ── Init ────────────────────────────────────────────────────────
|
|
199
|
+
function init() {
|
|
200
|
+
setInterval(scanForMentions, SCAN_INTERVAL_MS);
|
|
201
|
+
scanForMentions();
|
|
202
|
+
wireConsideringButton();
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
if (document.readyState === "loading") {
|
|
206
|
+
document.addEventListener("DOMContentLoaded", init);
|
|
207
|
+
} else {
|
|
208
|
+
init();
|
|
209
|
+
}
|
|
210
|
+
})();
|
|
@@ -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-DH75FlQF.js";
|
|
17
|
+
import "./call-AZ9vNhST.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-C6lKFbor.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-AZ9vNhST.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-7IGQ8nAM.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-OTJg3QKn.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-DY_6l11g.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-DY_6l11g.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-DY_6l11g.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
|
|
@@ -9,7 +9,7 @@ import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CZ_mYw
|
|
|
9
9
|
import { _ as listDeliverableMessageChannels, c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph, v as normalizeMessageChannel } from "./chunk-CAZujdOi.js";
|
|
10
10
|
import { c as loadConfig, d as writeConfigFile, m as parseByteSize, p as parseDurationMs, s as createConfigIO, t as SsrFBlockedError } from "./ssrf-BCSnhba8.js";
|
|
11
11
|
import { t as parseBooleanValue } from "./boolean-BW6OTjPi.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-DNssqQJs.js";
|
|
13
13
|
import { t as formatCliCommand } from "./command-format-DPd9RN2g.js";
|
|
14
14
|
import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-DO7WNsVJ.js";
|
|
15
15
|
import { n as formatErrorMessage, t as extractErrorCode } from "./errors-BEU7IHU6.js";
|
|
@@ -1331,7 +1331,7 @@ function isModuleNotFoundError(err) {
|
|
|
1331
1331
|
}
|
|
1332
1332
|
async function loadPwAiModule(mode) {
|
|
1333
1333
|
try {
|
|
1334
|
-
return await import("./pw-ai-
|
|
1334
|
+
return await import("./pw-ai-v__CyAlM.js");
|
|
1335
1335
|
} catch (err) {
|
|
1336
1336
|
if (mode === "soft") return null;
|
|
1337
1337
|
if (isModuleNotFoundError(err)) return null;
|
|
@@ -3928,11 +3928,11 @@ function createProfileContext(opts, profile) {
|
|
|
3928
3928
|
const userDataDir = resolveSymiUserDataDir(profile.name);
|
|
3929
3929
|
const profileState = getProfileState();
|
|
3930
3930
|
if (await isHttpReachable(300) && !profileState.running) try {
|
|
3931
|
-
await (await import("./pw-ai-
|
|
3931
|
+
await (await import("./pw-ai-v__CyAlM.js")).closePlaywrightBrowserConnection();
|
|
3932
3932
|
} catch {}
|
|
3933
3933
|
if (profileState.running) await stopRunningBrowser();
|
|
3934
3934
|
try {
|
|
3935
|
-
await (await import("./pw-ai-
|
|
3935
|
+
await (await import("./pw-ai-v__CyAlM.js")).closePlaywrightBrowserConnection();
|
|
3936
3936
|
} catch {}
|
|
3937
3937
|
if (!fs.existsSync(userDataDir)) return {
|
|
3938
3938
|
moved: false,
|
|
@@ -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-DH75FlQF.js";
|
|
16
|
+
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-AZ9vNhST.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";
|
|
@@ -7,7 +7,7 @@ import { t as runCommandWithTimeout } from "./exec-DuYbft0z.js";
|
|
|
7
7
|
import "./boolean-CbZoNRMn.js";
|
|
8
8
|
import "./manifest-registry-D1MLZEjS.js";
|
|
9
9
|
import { d as hasBinary } from "./frontmatter-B_jqcova.js";
|
|
10
|
-
import "./skills-
|
|
10
|
+
import "./skills-BwDmcZdt.js";
|
|
11
11
|
import "./redact-B3O-RBO1.js";
|
|
12
12
|
import "./errors-bI7Tdx75.js";
|
|
13
13
|
import { t as formatDocsLink } from "./links-Bqr0FxXx.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as resolveCliName } from "./cli-name-DY75UA5M.js";
|
|
2
2
|
import { t as resolveSymiPackageRoot } from "./symi-root-Ctw1Rb_n.js";
|
|
3
3
|
import { t as note } from "./note-BIAQpZxi.js";
|
|
4
|
-
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-
|
|
4
|
+
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-vAwL_uEK.js";
|
|
5
5
|
import { spawnSync } from "node:child_process";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as resolveCliName } from "./cli-name-CzMV-gJF.js";
|
|
2
|
-
import { t as resolveSymiPackageRoot } from "./symi-root-
|
|
2
|
+
import { t as resolveSymiPackageRoot } from "./symi-root-BQ0IpoW2.js";
|
|
3
3
|
import { t as note } from "./note-D9FXI2qW.js";
|
|
4
|
-
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-
|
|
4
|
+
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-CsJ2f_fk.js";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { spawnSync } from "node:child_process";
|
|
7
7
|
|