@symerian/symi 3.5.24 → 3.5.26
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-DgVWcnlD.js → agent-CB5yb-7V.js} +1 -1
- package/dist/{agent-CBfp75J4.js → agent-CoHzNs_e.js} +18 -18
- package/dist/{agent-scope-DOrZjOnW.js → agent-scope-Bnsyyeci.js} +18 -18
- package/dist/{agents-Dlcpc1K3.js → agents-DtRd3yEb.js} +3 -3
- package/dist/{agents.config-B7sNDvhz.js → agents.config-DA0ISLi7.js} +1 -1
- package/dist/{audit-Ce-u6aaR.js → audit-CuwXq_EA.js} +20 -20
- package/dist/{audit-CPloCzEZ.js → audit-DyncRBKq.js} +2 -2
- package/dist/{auth-choice--DymOp5O.js → auth-choice-5SLfZiQ7.js} +2 -2
- package/dist/{auth-choice-CUvx59kv.js → auth-choice-DKRHawfp.js} +11 -11
- package/dist/{auth-profiles-Ce7R_25e.js → auth-profiles-D5nYBj_Z.js} +2 -2
- package/dist/{auth-token-Cr28IDKY.js → auth-token-fgnCQEHT.js} +3 -3
- package/dist/{banner-CY_9VW7E.js → banner-B_P_FrmA.js} +1 -1
- package/dist/{browser-cli-Ibgld3mA.js → browser-cli-BI81RlI8.js} +9 -9
- package/dist/{browser-cli-C5VVk6C9.js → browser-cli-CcCYZtag.js} +3 -3
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +2 -2
- package/dist/bundled/session-memory/handler.js +2 -2
- package/dist/{call-C2urR5Fj.js → call-DTshgdlW.js} +1 -1
- package/dist/{call-xdEE97oU.js → call-xUpyZDH4.js} +9 -9
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-rFgJaKzJ.js → channel-options-8NGYZjfd.js} +1 -1
- package/dist/{channel-options-DCmWOAc0.js → channel-options-vjcKi2yl.js} +1 -1
- package/dist/{channels-cli-QMHCRAb5.js → channels-cli-Bx90nSmB.js} +9 -9
- package/dist/{channels-cli-Cs1Z0dn8.js → channels-cli-CfBFa-VO.js} +57 -57
- package/dist/{chrome-DJChpTwP.js → chrome-38OnGyuN.js} +2 -2
- package/dist/{cli-BafqEuaj.js → cli-DHG9iZJi.js} +6 -6
- package/dist/{cli-CadU09SC.js → cli-qf0qK7oi.js} +45 -45
- package/dist/{client-yVTJ5jx5.js → client-BOd5o3Kp.js} +9 -1
- package/dist/{client-Cs9Bh-G0.js → client-DiPa71im.js} +10 -2
- package/dist/{command-registry-CLm8TAH3.js → command-registry-DBbzZvh6.js} +11 -11
- package/dist/{commands-registry-Ca5hh7nh.js → commands-registry-CwXsDVuO.js} +1 -1
- package/dist/{completion-cli-Dd56ibFZ.js → completion-cli-Ddfrnilx.js} +12 -12
- package/dist/{completion-cli-DOBXkVwG.js → completion-cli-DoQrkCAd.js} +2 -2
- package/dist/{config-B4jkreCN.js → config-BngIfn5l.js} +2 -2
- package/dist/{config-cli-BgHYqFH1.js → config-cli-9a5qBcdo.js} +1 -1
- package/dist/{config-cli-GwUJEapt.js → config-cli-JVGYyfYA.js} +4 -4
- package/dist/{config-guard-BRm3RiOi.js → config-guard-DStz4_V2.js} +6 -6
- package/dist/{config-validation-Cdyg1BZB.js → config-validation-Dxj9LRzr.js} +1 -1
- package/dist/{configure-5md67tCP.js → configure-Bqz2Hvnf.js} +14 -14
- package/dist/{configure-DmzM0S7L.js → configure-ryB8EvyP.js} +6 -6
- package/dist/{consolidate-DymnvvYm.js → consolidate-CO32_TEx.js} +6 -6
- package/dist/{control-service-D8kKOts5.js → control-service-CUreKVeY.js} +4 -4
- package/dist/control-ui/css/style.css +177 -9
- package/dist/control-ui/index.html +42 -0
- package/dist/control-ui/js/symframe-modes.js +65 -0
- package/dist/control-ui/js/symframe.js +139 -0
- package/dist/{control-ui-assets-CJQ97d4u.js → control-ui-assets-B8B9z_Ll.js} +1 -1
- package/dist/{cost-cli-DWiVCOCx.js → cost-cli-D-ssjcRF.js} +3 -3
- package/dist/{cron-cli-BNBs3zue.js → cron-cli-DsGkkt1s.js} +3 -3
- package/dist/{cron-cli-CE9bV9Et.js → cron-cli-pZ_7Wzhj.js} +7 -7
- package/dist/{daemon-cli-BYiG4GOU.js → daemon-cli-BDzcfcu_.js} +11 -11
- package/dist/{daemon-cli-DDqeG2nd.js → daemon-cli-dbAPTgGm.js} +2 -2
- package/dist/daemon-cli.js +9 -1
- package/dist/{daemon-runtime-DlQla_dA.js → daemon-runtime-CKn0wmCk.js} +10 -10
- package/dist/{deliver-lTZLIQqf.js → deliver-CWMFmMCv.js} +2 -2
- package/dist/{deps-Bf9dt2UO.js → deps-CdibsPMx.js} +1 -1
- package/dist/{devices-cli-Bhr6jGtH.js → devices-cli-BIZbo_Pt.js} +6 -6
- package/dist/{devices-cli-BJ3rVWOw.js → devices-cli-CIAuYH4P.js} +2 -2
- package/dist/{diagnostics-DlZODdRf.js → diagnostics-CYkqD5lP.js} +5 -5
- package/dist/{directory-cli-Bm5QYEo-.js → directory-cli-giqTe8Yg.js} +3 -3
- package/dist/{dm-policy-shared-CeFt0nch.js → dm-policy-shared-B61_yf6G.js} +1 -1
- package/dist/{dns-cli-CubLq4j9.js → dns-cli-Dssz4RqF.js} +3 -3
- package/dist/{docs-cli-PS8m1er7.js → docs-cli-Ct1STieY.js} +1 -1
- package/dist/{doctor-completion-k0HiL05o.js → doctor-completion-Bk55g4MP.js} +1 -1
- package/dist/{doctor-completion-BpUGRguQ.js → doctor-completion-eh7aImCx.js} +2 -2
- package/dist/{doctor-config-flow-C52W1uUK.js → doctor-config-flow-ljVnQJjo.js} +9 -9
- package/dist/entry.js +1 -1
- package/dist/{exec-approvals-cli-CzvIqBUd.js → exec-approvals-cli-B2UY9dZC.js} +13 -13
- package/dist/{exec-approvals-cli-Cau1vPQI.js → exec-approvals-cli-BiXeyPPz.js} +4 -4
- package/dist/extensionAPI.js +2 -2
- package/dist/{file-lock-BVUYnlQv.js → file-lock-2AecMjCa.js} +8 -8
- package/dist/{fs-safe-BdejYjW8.js → fs-safe-B0Is-oLk.js} +6 -6
- package/dist/{gateway-cli-DgmGygc6.js → gateway-cli-BGMVOW2G.js} +16 -16
- package/dist/{gateway-cli-D1d5YAt0.js → gateway-cli-BwPy7u0B.js} +98 -98
- package/dist/{gateway-rpc-BTGT1SuZ.js → gateway-rpc-DmFOiGIJ.js} +1 -1
- package/dist/{gateway-rpc-Kv0-8W2E.js → gateway-rpc-DpRnrv_i.js} +1 -1
- package/dist/{glass-ui-ws-BH9WH_VN.js → glass-ui-ws-CwOiILiY.js} +67 -67
- package/dist/{glass-ui-ws-Dl45d7eU.js → glass-ui-ws-Z-W33_mF.js} +13 -13
- package/dist/{health-DpE9GWGn.js → health-Bc1wmAO5.js} +4 -4
- package/dist/{health-znS85U-F.js → health-Dkwuq8ta.js} +1 -1
- package/dist/{hooks-cli-Cb9BzCOY.js → hooks-cli-Bn6x6Jnj.js} +7 -7
- package/dist/{hooks-cli-D7xxbEwI.js → hooks-cli-DOjHV2fF.js} +59 -59
- package/dist/{image-ops-L70xVnpG.js → image-ops-BzCBIakN.js} +10 -10
- package/dist/index.js +52 -52
- package/dist/{inspect-CGKsaVZ4.js → inspect-DzYUb_Dl.js} +4 -4
- package/dist/{install-safe-path-B2JrFspY.js → install-safe-path-BrpA09f2.js} +11 -11
- package/dist/{installs-D890uIIW.js → installs-bnDlOSq2.js} +10 -10
- package/dist/{internal-DVCddhhN.js → internal-csqU78gW.js} +9 -9
- package/dist/{lifecycle-core-wFwnK_mD.js → lifecycle-core-cSR_xiIO.js} +5 -5
- package/dist/llm-slug-generator.js +2 -2
- package/dist/{local-roots-CgDCgCuM.js → local-roots-2Jb79HZ8.js} +1 -1
- package/dist/{logs-cli-LiAjkog2.js → logs-cli-CJLJ745C.js} +3 -3
- package/dist/{logs-cli-DvIVuW0d.js → logs-cli-CYFlhj51.js} +7 -7
- package/dist/{manager-V4UCf0Av.js → manager-BHddoe4T.js} +1 -1
- package/dist/{manager-CceVgXHV.js → manager-DH00nlW8.js} +1 -1
- package/dist/{manager-CoCX7L5u.js → manager-DuWp0CTD.js} +15 -15
- package/dist/{manager-DDynl084.js → manager-F0-SHT1B.js} +1 -1
- package/dist/{memory-A2D5e8dL.js → memory-C02Znuee.js} +2 -2
- package/dist/{memory-cli-1zjVJITN.js → memory-cli-083UJtVJ.js} +2 -2
- package/dist/{memory-cli-D8Z_5-Nz.js → memory-cli-BnBKckEk.js} +12 -12
- package/dist/{memory-B067LTL9.js → memory-fFc7GGPZ.js} +5 -5
- package/dist/{model-MUMSB_7d.js → model-Cwbcw-km.js} +1 -1
- package/dist/{model-auth-1EAQvYRv.js → model-auth-_C07_3Yr.js} +2 -2
- package/dist/{model-catalog-IWi6-nY9.js → model-catalog-BWurV7gl.js} +3 -3
- package/dist/{model-picker-Cf6UgQEh.js → model-picker-Dpkr5xBW.js} +5 -5
- package/dist/{model-selection-7wdmO-Iw.js → model-selection-CCTzD29o.js} +1 -1
- package/dist/{models-BYev6YAG.js → models-Bh_frCup.js} +3 -3
- package/dist/{models-cli-Fa5r1QYP.js → models-cli-BhBu4Dwm.js} +9 -9
- package/dist/{models-cli-C979SN3Z.js → models-cli-DVdb_TUS.js} +55 -55
- package/dist/{models-config-B5Xxy-c-.js → models-config-DlXge3Sd.js} +8 -8
- package/dist/{node-cli-DGybtex_.js → node-cli-B0ePfMUr.js} +27 -27
- package/dist/{node-cli-Cv7x1gGu.js → node-cli-CBW_ECu_.js} +1 -1
- package/dist/{node-service-BH08wY5j.js → node-service-Cc18m-uk.js} +1 -1
- package/dist/{nodes-cli-DaHOBbd4.js → nodes-cli-CJ0gxF5n.js} +3 -3
- package/dist/{nodes-cli-C-mEw2av.js → nodes-cli-L0gy-26E.js} +10 -10
- package/dist/{nodes-screen-De9ma6e1.js → nodes-screen-Cp5QP3ET.js} +4 -4
- package/dist/{npm-registry-spec-DTqn-NXZ.js → npm-registry-spec-C-muP97-.js} +9 -9
- package/dist/{onboard-D-m6WTZl.js → onboard-BSxqEQfo.js} +3 -3
- package/dist/{onboard-CotuAZi6.js → onboard-D6GZ2t-L.js} +15 -15
- package/dist/{onboard-channels-Z-Jkrk5-.js → onboard-channels-BkR3MKMp.js} +1 -1
- package/dist/{onboard-channels-DSyynpou.js → onboard-channels-DVS9vciR.js} +4 -4
- package/dist/{onboard-custom-BcRYreNG.js → onboard-custom-DnDrvxSg.js} +3 -3
- package/dist/{onboard-helpers-CLXJ8zp0.js → onboard-helpers-CJlheOSJ.js} +8 -8
- package/dist/{onboard-helpers-Dhr98nj8.js → onboard-helpers-t7tI9KSA.js} +1 -1
- package/dist/{onboard-hooks-2SCajRKc.js → onboard-hooks-D9jHwImb.js} +1 -1
- package/dist/{onboard-remote-BYBai0w3.js → onboard-remote-CVZ8l58S.js} +1 -1
- package/dist/{onboard-remote-DZdMxd1Q.js → onboard-remote-DH3bPYbE.js} +1 -1
- package/dist/{onboard-skills-2SUv-W7i.js → onboard-skills-Bjf7kWvg.js} +1 -1
- package/dist/{onboard-skills-BxJlS1Bk.js → onboard-skills-MgcaLiE6.js} +3 -3
- package/dist/{onboarding-BckHLQMV.js → onboarding-CrCGoZ4H.js} +7 -7
- package/dist/{onboarding-BnoGiOh3.js → onboarding-D-mzwQ_f.js} +12 -12
- package/dist/{onboarding.finalize-CbH_ShIW.js → onboarding.finalize-BYzduVFA.js} +9 -9
- package/dist/{onboarding.finalize-g86Q4433.js → onboarding.finalize-DBFL76p0.js} +31 -31
- package/dist/{onboarding.gateway-config-CEXjbEM0.js → onboarding.gateway-config-BCDgsFl8.js} +8 -8
- package/dist/{onboarding.gateway-config-sNSeEykB.js → onboarding.gateway-config-xWUSbtoY.js} +3 -3
- package/dist/{openai-model-default-BkuuK-Di.js → openai-model-default-De-UAjwg.js} +2 -2
- package/dist/{pairing-cli-Rsae0KnN.js → pairing-cli-CBMMCNnx.js} +5 -5
- package/dist/{pairing-store-BNhJOnWn.js → pairing-store-Be-ZQK87.js} +1 -1
- package/dist/{pairing-token-Dcy37-4s.js → pairing-token-B703A1U3.js} +7 -7
- package/dist/{paths-DObzwe08.js → paths-BWqg8NZT.js} +1 -1
- package/dist/{pi-auth-json-Db8XJVGL.js → pi-auth-json-D-vdh-nY.js} +6 -6
- package/dist/{pi-embedded-B9rtlNMc.js → pi-embedded-DGnpyHm-.js} +50 -7
- package/dist/{pi-embedded-helpers-D-OFjhdI.js → pi-embedded-helpers-j1JrlsI0.js} +6 -6
- package/dist/{pi-tools.policy-H2t-Xkfc.js → pi-tools.policy-CvAqjEH9.js} +3 -3
- package/dist/{plugin-auto-enable-DJBhDIMq.js → plugin-auto-enable-BXSJTxI7.js} +1 -1
- package/dist/{plugin-registry-CS4WgHbu.js → plugin-registry-B74FBx4U.js} +1 -1
- package/dist/{plugin-registry-AsC9gydF.js → plugin-registry-KP94aK4z.js} +3 -3
- package/dist/plugin-sdk/agents/tools/browser-tool.schema.d.ts +1 -1
- package/dist/plugin-sdk/gateway/protocol/schema/logs-chat.d.ts +5 -1
- package/dist/plugin-sdk/index.js +6 -6
- package/dist/plugin-sdk/infra/symframe-broadcast.d.ts +7 -2
- package/dist/{plugins-cli-CbByGz8z.js → plugins-cli-B4ljapU5.js} +54 -54
- package/dist/{plugins-cli-BY42hyHP.js → plugins-cli-Cmf3kRf5.js} +7 -7
- package/dist/{ports-r7LBic2V.js → ports-Bi3V_3n9.js} +1 -1
- package/dist/{ports-gxLM5ahL.js → ports-CB_Iu83U.js} +2 -2
- package/dist/{program-P9F1DxBa.js → program-CGuYYumL.js} +12 -12
- package/dist/{program-context-CiyK6MfV.js → program-context-BzqGUxMS.js} +40 -40
- package/dist/{prompt-select-styled-DaNQ_GgB.js → prompt-select-styled-BVkRteee.js} +38 -38
- package/dist/{prompt-select-styled-B2ah467m.js → prompt-select-styled-b752FPLG.js} +7 -7
- package/dist/{provider-auth-helpers-Bgb_Bfp9.js → provider-auth-helpers-BKveYcEH.js} +1 -1
- package/dist/{provider-auth-helpers-D2FDvwT5.js → provider-auth-helpers-C6GjAO-s.js} +6 -6
- package/dist/{push-apns-va-DRu4U.js → push-apns-CbbWM63o.js} +4 -4
- package/dist/{push-apns-DnSCjFu7.js → push-apns-HNg0rTkI.js} +1 -1
- package/dist/{pw-ai-BiBvIJzd.js → pw-ai-CP5pn3eU.js} +7 -7
- package/dist/{qmd-manager-C8-M4Pru.js → qmd-manager-Dxyue7B1.js} +19 -19
- package/dist/{qr-cli-1sCVaPcF.js → qr-cli-DHw6muwK.js} +3 -3
- package/dist/{register.agent-BuEcmVg0.js → register.agent-DbPYGG3u.js} +12 -12
- package/dist/{register.agent-BqdQ0s30.js → register.agent-DhS2lmWo.js} +67 -67
- package/dist/{register.configure-YDKJ-KQg.js → register.configure-B0M15y31.js} +14 -14
- package/dist/{register.configure-Dhwi-4FG.js → register.configure-ChjzXxh8.js} +70 -70
- package/dist/{register.maintenance-BiGvpEj-.js → register.maintenance-bzLNOqch.js} +13 -13
- package/dist/{register.maintenance-iMjNw9uy.js → register.maintenance-frHWf6Xs.js} +67 -67
- package/dist/{register.message-BIuLbESM.js → register.message-Bfukmte_.js} +7 -7
- package/dist/{register.message-Ao_b9s2g.js → register.message-DWB4eVII.js} +47 -47
- package/dist/{register.onboard-ymhSAezZ.js → register.onboard-4P8ud4Sw.js} +25 -25
- package/dist/{register.onboard-C4vIASed.js → register.onboard-CDsSVoFI.js} +6 -6
- package/dist/{register.setup-D-Jt2e1d.js → register.setup-Bp8rYeRx.js} +6 -6
- package/dist/{register.setup-CKs9mqtD.js → register.setup-D0I7sEGc.js} +28 -28
- package/dist/{register.status-health-sessions-U-azRmpb.js → register.status-health-sessions-69Gigo_H.js} +41 -41
- package/dist/{register.status-health-sessions-BY9hMD1s.js → register.status-health-sessions-DE2db_Uo.js} +8 -8
- package/dist/{register.subclis-Cibmeapc.js → register.subclis-QXO75pUm.js} +20 -20
- package/dist/{replies-CbXXjn9X.js → replies-B_3j7R_Q.js} +1 -1
- package/dist/{reply-prefix-BFNeXT65.js → reply-prefix-CtZtkTJK.js} +1 -1
- package/dist/{resolve-route-C1IIA6kH.js → resolve-route-Du0VftVs.js} +1 -1
- package/dist/{routes-ivqbutvM.js → routes-BwTUoI5h.js} +10 -10
- package/dist/{rpc-BnAKPQDB.js → rpc-BBtNUyxN.js} +1 -1
- package/dist/{rpc-DjqFrbOc.js → rpc-DTqyJZKO.js} +1 -1
- package/dist/{run-main-BhEQjKtM.js → run-main-MD8Z8ydF.js} +20 -20
- package/dist/{sandbox-BkznAPKO.js → sandbox-CZGTCone.js} +18 -18
- package/dist/{sandbox-cli-Bb9cBtBH.js → sandbox-cli-DEtGT_4y.js} +13 -13
- package/dist/{security-cli-CS-ZT1LE.js → security-cli-DZ-6QDRB.js} +3 -3
- package/dist/{security-cli-JKsf9SIu.js → security-cli-iJpHPABF.js} +29 -29
- package/dist/{send-B0jHSNMF.js → send-CxjvucMO.js} +7 -7
- package/dist/{server-context-ChcbJgNo.js → server-context-DXdk410X.js} +5 -5
- package/dist/{server-methods-B2tykucj.js → server-methods-DHWxmfIu.js} +67 -61
- package/dist/{server-methods-CWxr5b-w.js → server-methods-DTkVQH8Q.js} +18 -12
- package/dist/{server-node-events-ClDEcUTJ.js → server-node-events-C0smPxrR.js} +8 -8
- package/dist/{server-node-events-BKqszk_a.js → server-node-events-DHSiqnRS.js} +48 -48
- package/dist/{service-e6MzlLCd.js → service-CRZoXO_n.js} +15 -15
- package/dist/{session-dirs-C9E2G0yZ.js → session-dirs-a00Ad2SO.js} +2 -2
- package/dist/{session-utils-Cs1jlD-q.js → session-utils-CJhcRx3E.js} +14 -14
- package/dist/{sessions-Dxf5Kjig.js → sessions-BCc3THTm.js} +10 -10
- package/dist/{shared-1xPo9ygd.js → shared-C39SiDDJ.js} +1 -1
- package/dist/{shared-COtpr3Ad.js → shared-Dh-O8nRd.js} +3 -3
- package/dist/{skill-commands-DDGGlq68.js → skill-commands-DWvXs3lz.js} +4 -4
- package/dist/{skill-scanner-BCgVcIwi.js → skill-scanner-CIlHPszT.js} +5 -5
- package/dist/{skills-BwDmcZdt.js → skills-CYcBtLGH.js} +4 -4
- package/dist/{skills-cli-B-7TY-vS.js → skills-cli-CD9s3cgm.js} +7 -7
- package/dist/{skills-install-Dwzsjoc8.js → skills-install-BTa9IuQ6.js} +3 -3
- package/dist/{skills-remote-bz71Bstn.js → skills-remote-BcRQTDsZ.js} +3 -3
- package/dist/{skills-status-BKX1PjCc.js → skills-status-DLnCHUZ2.js} +1 -1
- package/dist/{sqlite-Cod7C5ba.js → sqlite-BpogPlQW.js} +5 -5
- package/dist/{status-ojZB_Lrf.js → status-BEZotN01.js} +5 -5
- package/dist/{status-DPGFZPpp.js → status-DUbs9rVu.js} +3 -3
- package/dist/{status-DHBVIMyL.js → status-ISN-LC9F.js} +23 -23
- package/dist/{status-K1k4g3Ai.js → status-OTYFx93W.js} +1 -1
- package/dist/{status.update-DGJi0OLl.js → status.update-CKfyV6zw.js} +3 -3
- package/dist/{subagent-registry-BOt7g9hn.js → subagent-registry-CVhLz4p3.js} +43 -8
- package/dist/{symframe-cli-CrUtJw_7.js → symframe-cli-BSAQ05fb.js} +22 -6
- package/dist/{symframe-cli-CX3dINPw.js → symframe-cli-CPE5nxuJ.js} +28 -12
- package/dist/{symi-root-BQ0IpoW2.js → symi-root-DeCVdZB4.js} +2 -2
- package/dist/{synthesis-Bc2QkGvt.js → synthesis-C1mZnGqD.js} +2 -2
- package/dist/{synthesis-D91XE0n4.js → synthesis-CDPVZw2P.js} +2 -2
- package/dist/{synthesis-DmqicCsT.js → synthesis-DkHCk0El.js} +45 -45
- package/dist/{synthesis-BIQLrbys.js → synthesis-RhT991Ni.js} +6 -6
- package/dist/{system-cli-CvN-Wq9U.js → system-cli-Dy6_0Qp7.js} +3 -3
- package/dist/{system-cli-DUHzCGfK.js → system-cli-nWJwLo85.js} +7 -7
- package/dist/{systemd-CUIM0n5P.js → systemd-CsoVnIbM.js} +5 -5
- package/dist/{systemd-hints-CsrzMCTD.js → systemd-hints-QISwLlFU.js} +6 -6
- package/dist/{systemd-linger-BzYk7A6M.js → systemd-linger-BnhuRdbt.js} +1 -1
- package/dist/{tui-DCqVZ6sC.js → tui-ZL7IGA7l.js} +7 -7
- package/dist/{tui-cli-DqvgN5ng.js → tui-cli-B-DKpOxE.js} +3 -3
- package/dist/{tui-cli-CI-P3sei.js → tui-cli-CEpMtmhP.js} +19 -19
- package/dist/{tui-BxgdImL_.js → tui-h57L-YTX.js} +2 -2
- package/dist/{unified-runner-CdJx7yN8.js → unified-runner-Cppo8O8z.js} +50 -7
- package/dist/{unified-runner-CznU7Ad0.js → unified-runner-CsadjpQa.js} +139 -104
- package/dist/{update-yYduAjKd.js → update-Cb0Fmxic.js} +3 -3
- package/dist/{update-check-BCL_K7kx.js → update-check-u6Jgr1cz.js} +5 -5
- package/dist/{update-cli-DBoIBDNe.js → update-cli-48-Nah-Y.js} +77 -77
- package/dist/{update-cli-Dn6QQZLd.js → update-cli-D9g9s187.js} +14 -14
- package/dist/{update-runner-BLV8SI96.js → update-runner-G2YgEATs.js} +15 -15
- package/dist/{webhooks-cli-D5k-Y2A8.js → webhooks-cli-DjUITimx.js} +4 -4
- package/dist/{with-timeout-DPR4A2dx.js → with-timeout-CLrF-Yr_.js} +1 -1
- package/dist/{workspace-dirs-jKFQf7of.js → workspace-dirs-DCICLTHx.js} +1 -1
- package/dist/{wsl-CglTdtlb.js → wsl-DTi7eX-V.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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
2
|
import { d as getActivePluginRegistry } from "./registry-Sbac4a4z.js";
|
|
3
3
|
import { c as escapeRegExp } from "./utils-CTPsqyE_.js";
|
|
4
|
-
import { C as DEFAULT_MODEL, m as resolveConfiguredModelRef, w as DEFAULT_PROVIDER } from "./model-selection-
|
|
4
|
+
import { C as DEFAULT_MODEL, m as resolveConfiguredModelRef, w as DEFAULT_PROVIDER } from "./model-selection-CCTzD29o.js";
|
|
5
5
|
import { n as listChannelDocks } from "./dock-hF45sewN.js";
|
|
6
6
|
import { i as listThinkingLevels } from "./thinking-COroyVA5.js";
|
|
7
7
|
import { t as isCommandFlagEnabled } from "./commands-DUzLGgEZ.js";
|
|
@@ -2,10 +2,10 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
|
2
2
|
import { _ as resolveStateDir } from "./paths-By0XjHBk.js";
|
|
3
3
|
import { f as pathExists } from "./utils-CTPsqyE_.js";
|
|
4
4
|
import { i as routeLogsToStderr } from "./subsystem-CHbO_DkH.js";
|
|
5
|
-
import { a as registerCoreCliByName, c as getSubCliEntries, l as registerSubCliByName, r as getCoreCliCommandNames, t as getProgramContext } from "./program-context-
|
|
5
|
+
import { a as registerCoreCliByName, c as getSubCliEntries, l as registerSubCliByName, r as getCoreCliCommandNames, t as getProgramContext } from "./program-context-BzqGUxMS.js";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
import os from "node:os";
|
|
8
|
-
import
|
|
8
|
+
import fsPromises from "node:fs/promises";
|
|
9
9
|
import { Option } from "commander";
|
|
10
10
|
|
|
11
11
|
//#region src/cli/completion-cli.ts
|
|
@@ -62,11 +62,11 @@ function getCompletionScript(shell, program) {
|
|
|
62
62
|
}
|
|
63
63
|
async function writeCompletionCache(params) {
|
|
64
64
|
const cacheDir = resolveCompletionCacheDir();
|
|
65
|
-
await
|
|
65
|
+
await fsPromises.mkdir(cacheDir, { recursive: true });
|
|
66
66
|
for (const shell of params.shells) {
|
|
67
67
|
const script = getCompletionScript(shell, params.program);
|
|
68
68
|
const targetPath = resolveCompletionCachePath(shell, params.binName);
|
|
69
|
-
await
|
|
69
|
+
await fsPromises.writeFile(targetPath, script, "utf-8");
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
function formatCompletionSourceLine(shell, binName, cachePath) {
|
|
@@ -124,7 +124,7 @@ async function isCompletionInstalled(shell, binName = "symi") {
|
|
|
124
124
|
if (!await pathExists(profilePath)) return false;
|
|
125
125
|
const cachePathCandidate = resolveCompletionCachePath(shell, binName);
|
|
126
126
|
const cachedPath = await pathExists(cachePathCandidate) ? cachePathCandidate : null;
|
|
127
|
-
return (await
|
|
127
|
+
return (await fsPromises.readFile(profilePath, "utf-8")).split("\n").some((line) => isCompletionProfileHeader(line) || isCompletionProfileLine(line, binName, cachedPath));
|
|
128
128
|
}
|
|
129
129
|
/**
|
|
130
130
|
* Check if the profile uses the slow dynamic completion pattern.
|
|
@@ -134,7 +134,7 @@ async function usesSlowDynamicCompletion(shell, binName = "symi") {
|
|
|
134
134
|
const profilePath = getShellProfilePath(shell);
|
|
135
135
|
if (!await pathExists(profilePath)) return false;
|
|
136
136
|
const cachePath = resolveCompletionCachePath(shell, binName);
|
|
137
|
-
const lines = (await
|
|
137
|
+
const lines = (await fsPromises.readFile(profilePath, "utf-8")).split("\n");
|
|
138
138
|
for (const line of lines) if (isSlowDynamicCompletionLine(line, binName) && !line.includes(cachePath)) return true;
|
|
139
139
|
return false;
|
|
140
140
|
}
|
|
@@ -183,7 +183,7 @@ async function installCompletion(shell, yes, binName = "symi") {
|
|
|
183
183
|
} else if (shell === "bash") {
|
|
184
184
|
profilePath = path.join(home, ".bashrc");
|
|
185
185
|
try {
|
|
186
|
-
await
|
|
186
|
+
await fsPromises.access(profilePath);
|
|
187
187
|
} catch {
|
|
188
188
|
profilePath = path.join(home, ".bash_profile");
|
|
189
189
|
}
|
|
@@ -197,13 +197,13 @@ async function installCompletion(shell, yes, binName = "symi") {
|
|
|
197
197
|
}
|
|
198
198
|
try {
|
|
199
199
|
try {
|
|
200
|
-
await
|
|
200
|
+
await fsPromises.access(profilePath);
|
|
201
201
|
} catch {
|
|
202
202
|
if (!yes) console.warn(`Profile not found at ${profilePath}. Created a new one.`);
|
|
203
|
-
await
|
|
204
|
-
await
|
|
203
|
+
await fsPromises.mkdir(path.dirname(profilePath), { recursive: true });
|
|
204
|
+
await fsPromises.writeFile(profilePath, "", "utf-8");
|
|
205
205
|
}
|
|
206
|
-
const update = updateCompletionProfile(await
|
|
206
|
+
const update = updateCompletionProfile(await fsPromises.readFile(profilePath, "utf-8"), binName, cachePath, sourceLine);
|
|
207
207
|
if (!update.changed) {
|
|
208
208
|
if (!yes) console.log(`Completion already installed in ${profilePath}`);
|
|
209
209
|
return;
|
|
@@ -212,7 +212,7 @@ async function installCompletion(shell, yes, binName = "symi") {
|
|
|
212
212
|
const action = update.hadExisting ? "Updating" : "Installing";
|
|
213
213
|
console.log(`${action} completion in ${profilePath}...`);
|
|
214
214
|
}
|
|
215
|
-
await
|
|
215
|
+
await fsPromises.writeFile(profilePath, update.next, "utf-8");
|
|
216
216
|
if (!yes) console.log(`Completion installed. Restart your shell or run: source ${profilePath}`);
|
|
217
217
|
} catch (err) {
|
|
218
218
|
console.error(`Failed to install completion: ${err}`);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
2
|
import { Mt as pathExists, l as routeLogsToStderr, yt as resolveStateDir } from "./entry.js";
|
|
3
|
-
import { n as getSubCliEntries, r as registerSubCliByName } from "./register.subclis-
|
|
4
|
-
import { i as registerCoreCliByName, n as getCoreCliCommandNames } from "./command-registry-
|
|
3
|
+
import { n as getSubCliEntries, r as registerSubCliByName } from "./register.subclis-QXO75pUm.js";
|
|
4
|
+
import { i as registerCoreCliByName, n as getCoreCliCommandNames } from "./command-registry-DBbzZvh6.js";
|
|
5
5
|
import { t as getProgramContext } from "./program-context-B_0V80zV.js";
|
|
6
6
|
import os from "node:os";
|
|
7
7
|
import path from "node:path";
|
|
@@ -3,8 +3,8 @@ import { t as CHANNEL_IDS } from "./registry-Sbac4a4z.js";
|
|
|
3
3
|
import { _ as resolveStateDir, a as resolveCanonicalConfigPath, b as resolveRequiredHomeDir, c as resolveDefaultConfigCandidates, d as resolveIsNixMode, f as resolveLegacyStateDir, g as resolveOAuthPath, h as resolveOAuthDir, i as isNixMode, l as resolveGatewayLockDir, m as resolveNewStateDir, n as DEFAULT_GATEWAY_PORT, o as resolveConfigPath, p as resolveLegacyStateDirs, r as STATE_DIR, s as resolveConfigPathCandidate, t as CONFIG_PATH, u as resolveGatewayPort } from "./paths-By0XjHBk.js";
|
|
4
4
|
import { S as isPlainObject$1, h as resolveUserPath, p as resolveConfigDir, u as isRecord } from "./utils-CTPsqyE_.js";
|
|
5
5
|
import { o as normalizeAgentId, t as DEFAULT_AGENT_ID } from "./session-key-DUSb7CCb.js";
|
|
6
|
-
import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-
|
|
7
|
-
import { S as DEFAULT_CONTEXT_TOKENS, d as parseModelRef } from "./model-selection-
|
|
6
|
+
import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-Bnsyyeci.js";
|
|
7
|
+
import { S as DEFAULT_CONTEXT_TOKENS, d as parseModelRef } from "./model-selection-CCTzD29o.js";
|
|
8
8
|
import { a as shouldDeferShellEnvFallback, i as resolveShellEnvFallbackTimeoutMs, o as shouldEnableShellEnvFallback, r as loadShellEnvFallback } from "./shell-env-Dc3iU7HK.js";
|
|
9
9
|
import { d as resolveEnableState, f as resolveMemorySlotDecision, g as normalizeEnvVarKey, h as isDangerousHostEnvVarName, n as loadPluginManifestRegistry, u as normalizePluginsConfig } from "./manifest-registry-D1MLZEjS.js";
|
|
10
10
|
import { i as isPathInside } from "./legacy-names-BQ9vKISY.js";
|
|
@@ -201,7 +201,7 @@ async function runConfigUnset(opts) {
|
|
|
201
201
|
}
|
|
202
202
|
function registerConfigCli(program) {
|
|
203
203
|
const cmd = program.command("config").description("Non-interactive config helpers (get/set/unset). Run without subcommand for the setup wizard.").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/config", "docs.symi.ai/cli/config")}\n`).option("--section <section>", "Configure wizard sections (repeatable). Use with no subcommand.", (value, previous) => [...previous, value], []).action(async (opts) => {
|
|
204
|
-
const { configureCommandFromSectionsArg } = await import("./configure-
|
|
204
|
+
const { configureCommandFromSectionsArg } = await import("./configure-ryB8EvyP.js").then((n) => n.t);
|
|
205
205
|
await configureCommandFromSectionsArg(opts.section, defaultRuntime);
|
|
206
206
|
});
|
|
207
207
|
cmd.command("get").description("Get a config value by dot path").argument("<path>", "Config path (dot or bracket notation)").option("--json", "Output JSON", false).action(async (path, opts) => {
|
|
@@ -4,9 +4,9 @@ import { v as shortenHomePath } from "./utils-CTPsqyE_.js";
|
|
|
4
4
|
import { f as defaultRuntime } from "./subsystem-CHbO_DkH.js";
|
|
5
5
|
import { t as formatCliCommand } from "./command-format-BzjsXBTi.js";
|
|
6
6
|
import "./exec-DuYbft0z.js";
|
|
7
|
-
import "./agent-scope-
|
|
8
|
-
import "./model-selection-
|
|
9
|
-
import { l as writeConfigFile, o as readConfigFileSnapshot } from "./config-
|
|
7
|
+
import "./agent-scope-Bnsyyeci.js";
|
|
8
|
+
import "./model-selection-CCTzD29o.js";
|
|
9
|
+
import { l as writeConfigFile, o as readConfigFileSnapshot } from "./config-BngIfn5l.js";
|
|
10
10
|
import "./boolean-CbZoNRMn.js";
|
|
11
11
|
import "./env-BRnPI9sO.js";
|
|
12
12
|
import "./shell-env-Dc3iU7HK.js";
|
|
@@ -206,7 +206,7 @@ async function runConfigUnset(opts) {
|
|
|
206
206
|
}
|
|
207
207
|
function registerConfigCli(program) {
|
|
208
208
|
const cmd = program.command("config").description("Non-interactive config helpers (get/set/unset). Run without subcommand for the setup wizard.").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/config", "docs.symi.ai/cli/config")}\n`).option("--section <section>", "Configure wizard sections (repeatable). Use with no subcommand.", (value, previous) => [...previous, value], []).action(async (opts) => {
|
|
209
|
-
const { configureCommandFromSectionsArg } = await import("./configure-
|
|
209
|
+
const { configureCommandFromSectionsArg } = await import("./configure-Bqz2Hvnf.js").then((n) => n.t);
|
|
210
210
|
await configureCommandFromSectionsArg(opts.section, defaultRuntime);
|
|
211
211
|
});
|
|
212
212
|
cmd.command("get").description("Get a config value by dot path").argument("<path>", "Config path (dot or bracket notation)").option("--json", "Output JSON", false).action(async (path, opts) => {
|
|
@@ -4,14 +4,14 @@ import { v as shortenHomePath } from "./utils-CTPsqyE_.js";
|
|
|
4
4
|
import "./subsystem-CHbO_DkH.js";
|
|
5
5
|
import { t as formatCliCommand } from "./command-format-BzjsXBTi.js";
|
|
6
6
|
import "./exec-DuYbft0z.js";
|
|
7
|
-
import "./agent-scope-
|
|
8
|
-
import "./model-selection-
|
|
9
|
-
import { o as readConfigFileSnapshot } from "./config-
|
|
7
|
+
import "./agent-scope-Bnsyyeci.js";
|
|
8
|
+
import "./model-selection-CCTzD29o.js";
|
|
9
|
+
import { o as readConfigFileSnapshot } from "./config-BngIfn5l.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
|
-
import "./sessions-
|
|
14
|
+
import "./sessions-BCc3THTm.js";
|
|
15
15
|
import "./dock-hF45sewN.js";
|
|
16
16
|
import "./message-channel-DgjXWzf-.js";
|
|
17
17
|
import "./plugins-CF5skkHh.js";
|
|
@@ -20,8 +20,8 @@ import { c as shouldMigrateStateFromPath } from "./argv-D6PT4jl6.js";
|
|
|
20
20
|
import "./catalog-BptA-dUv.js";
|
|
21
21
|
import "./prompt-style-olk5zI5k.js";
|
|
22
22
|
import "./note-D9FXI2qW.js";
|
|
23
|
-
import "./plugin-auto-enable-
|
|
24
|
-
import { t as loadAndMaybeMigrateDoctorConfig } from "./doctor-config-flow-
|
|
23
|
+
import "./plugin-auto-enable-BXSJTxI7.js";
|
|
24
|
+
import { t as loadAndMaybeMigrateDoctorConfig } from "./doctor-config-flow-ljVnQJjo.js";
|
|
25
25
|
|
|
26
26
|
//#region src/cli/program/config-guard.ts
|
|
27
27
|
const ALLOWED_INVALID_COMMANDS = new Set([
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as formatCliCommand } from "./command-format-BzjsXBTi.js";
|
|
2
|
-
import { o as readConfigFileSnapshot } from "./config-
|
|
2
|
+
import { o as readConfigFileSnapshot } from "./config-BngIfn5l.js";
|
|
3
3
|
|
|
4
4
|
//#region src/commands/config-validation.ts
|
|
5
5
|
async function requireValidConfigSnapshot(runtime) {
|
|
@@ -2,9 +2,9 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
|
2
2
|
import { t as CONFIG_PATH, u as resolveGatewayPort } from "./paths-By0XjHBk.js";
|
|
3
3
|
import { h as resolveUserPath, v as shortenHomePath } from "./utils-CTPsqyE_.js";
|
|
4
4
|
import { f as defaultRuntime } from "./subsystem-CHbO_DkH.js";
|
|
5
|
-
import { b as ensureAuthProfileStore } from "./auth-profiles-
|
|
5
|
+
import { b as ensureAuthProfileStore } from "./auth-profiles-D5nYBj_Z.js";
|
|
6
6
|
import { t as formatCliCommand } from "./command-format-BzjsXBTi.js";
|
|
7
|
-
import { i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot } from "./config-
|
|
7
|
+
import { i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot } from "./config-BngIfn5l.js";
|
|
8
8
|
import { a as findTailscaleBinary } from "./tailscale-DpKBMIvx.js";
|
|
9
9
|
import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-CF5skkHh.js";
|
|
10
10
|
import { n as withProgress } from "./progress-swt2y17x.js";
|
|
@@ -12,22 +12,22 @@ import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint }
|
|
|
12
12
|
import { t as note$1 } from "./note-D9FXI2qW.js";
|
|
13
13
|
import { t as WizardCancelledError } from "./prompts-CNzp9M83.js";
|
|
14
14
|
import { t as createClackPrompter } from "./clack-prompter-BpcKjPIh.js";
|
|
15
|
-
import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-
|
|
16
|
-
import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-
|
|
17
|
-
import { a as ensureWorkspaceAndSessions, b as waitForGatewayReachable, g as resolveControlUiLinks, h as randomToken, m as probeGatewayReachable, n as applyWizardMetadata, p as printWizardHeader, s as guardCancel, t as DEFAULT_WORKSPACE, u as normalizeGatewayTokenInput, v as summarizeExistingConfig, y as validateGatewayPasswordInput } from "./onboard-helpers-
|
|
18
|
-
import { t as resolveGatewayService } from "./service-
|
|
19
|
-
import { r as healthCommand } from "./health-
|
|
20
|
-
import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-
|
|
15
|
+
import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-DVS9vciR.js";
|
|
16
|
+
import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-CKn0wmCk.js";
|
|
17
|
+
import { a as ensureWorkspaceAndSessions, b as waitForGatewayReachable, g as resolveControlUiLinks, h as randomToken, m as probeGatewayReachable, n as applyWizardMetadata, p as printWizardHeader, s as guardCancel, t as DEFAULT_WORKSPACE, u as normalizeGatewayTokenInput, v as summarizeExistingConfig, y as validateGatewayPasswordInput } from "./onboard-helpers-CJlheOSJ.js";
|
|
18
|
+
import { t as resolveGatewayService } from "./service-CRZoXO_n.js";
|
|
19
|
+
import { r as healthCommand } from "./health-Bc1wmAO5.js";
|
|
20
|
+
import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-B8B9z_Ll.js";
|
|
21
21
|
import { n as logConfigUpdated } from "./logging-DDnP1BTp.js";
|
|
22
22
|
import { n as promptAuthChoiceGrouped } from "./auth-choice-prompt-BAFfYZeR.js";
|
|
23
|
-
import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-
|
|
24
|
-
import { a as promptDefaultModel, n as applyModelFallbacksFromSelection, o as promptModelAllowlist, r as applyPrimaryModel, t as applyModelAllowlist } from "./model-picker-
|
|
25
|
-
import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-
|
|
26
|
-
import { a as promptCustomApiConfig } from "./onboard-custom-
|
|
23
|
+
import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-DKRHawfp.js";
|
|
24
|
+
import { a as promptDefaultModel, n as applyModelFallbacksFromSelection, o as promptModelAllowlist, r as applyPrimaryModel, t as applyModelAllowlist } from "./model-picker-Dpkr5xBW.js";
|
|
25
|
+
import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-BnhuRdbt.js";
|
|
26
|
+
import { a as promptCustomApiConfig } from "./onboard-custom-DnDrvxSg.js";
|
|
27
27
|
import { i as TAILSCALE_MISSING_BIN_NOTE_LINES, n as TAILSCALE_DOCS_LINES, r as TAILSCALE_EXPOSURE_OPTIONS, t as validateIPv4AddressInput } from "./ipv4-C_NtZ3JP.js";
|
|
28
28
|
import { t as formatHealthCheckFailure } from "./health-format-Bxg84_f4.js";
|
|
29
|
-
import { n as promptRemoteGatewayConfig } from "./onboard-remote-
|
|
30
|
-
import { n as setupSkills } from "./onboard-skills-
|
|
29
|
+
import { n as promptRemoteGatewayConfig } from "./onboard-remote-CVZ8l58S.js";
|
|
30
|
+
import { n as setupSkills } from "./onboard-skills-MgcaLiE6.js";
|
|
31
31
|
import { confirm, intro, outro, select, text } from "@clack/prompts";
|
|
32
32
|
|
|
33
33
|
//#region src/commands/configure.shared.ts
|
|
@@ -10,22 +10,22 @@ import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint }
|
|
|
10
10
|
import { t as note$1 } from "./note-BIAQpZxi.js";
|
|
11
11
|
import { t as WizardCancelledError } from "./prompts-D4yOwSll.js";
|
|
12
12
|
import { t as createClackPrompter } from "./clack-prompter-BMQT37oC.js";
|
|
13
|
-
import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-
|
|
13
|
+
import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-BkR3MKMp.js";
|
|
14
14
|
import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-AkgOtHR6.js";
|
|
15
|
-
import { a as ensureWorkspaceAndSessions, b as waitForGatewayReachable, g as resolveControlUiLinks, h as randomToken, m as probeGatewayReachable, n as applyWizardMetadata, p as printWizardHeader, s as guardCancel, t as DEFAULT_WORKSPACE, u as normalizeGatewayTokenInput, v as summarizeExistingConfig, y as validateGatewayPasswordInput } from "./onboard-helpers-
|
|
15
|
+
import { a as ensureWorkspaceAndSessions, b as waitForGatewayReachable, g as resolveControlUiLinks, h as randomToken, m as probeGatewayReachable, n as applyWizardMetadata, p as printWizardHeader, s as guardCancel, t as DEFAULT_WORKSPACE, u as normalizeGatewayTokenInput, v as summarizeExistingConfig, y as validateGatewayPasswordInput } from "./onboard-helpers-t7tI9KSA.js";
|
|
16
16
|
import { t as resolveGatewayService } from "./service-DYpU1ajf.js";
|
|
17
|
-
import { r as healthCommand } from "./health-
|
|
17
|
+
import { r as healthCommand } from "./health-Dkwuq8ta.js";
|
|
18
18
|
import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Dnz69KRU.js";
|
|
19
19
|
import { n as logConfigUpdated } from "./logging-Ev3fNJEG.js";
|
|
20
20
|
import { n as promptAuthChoiceGrouped } from "./auth-choice-prompt-D6A5uuj3.js";
|
|
21
|
-
import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice
|
|
21
|
+
import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-5SLfZiQ7.js";
|
|
22
22
|
import { a as promptDefaultModel, n as applyModelFallbacksFromSelection, o as promptModelAllowlist, r as applyPrimaryModel, t as applyModelAllowlist } from "./model-picker-DvP8ViSf.js";
|
|
23
23
|
import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-CctFkWNE.js";
|
|
24
24
|
import { a as promptCustomApiConfig } from "./onboard-custom-CfKvdcJ5.js";
|
|
25
25
|
import { i as TAILSCALE_MISSING_BIN_NOTE_LINES, n as TAILSCALE_DOCS_LINES, r as TAILSCALE_EXPOSURE_OPTIONS, t as validateIPv4AddressInput } from "./ipv4-qGjACkoi.js";
|
|
26
26
|
import { t as formatHealthCheckFailure } from "./health-format-6tfMqkNX.js";
|
|
27
|
-
import { n as promptRemoteGatewayConfig } from "./onboard-remote-
|
|
28
|
-
import { n as setupSkills } from "./onboard-skills-
|
|
27
|
+
import { n as promptRemoteGatewayConfig } from "./onboard-remote-DH3bPYbE.js";
|
|
28
|
+
import { n as setupSkills } from "./onboard-skills-Bjf7kWvg.js";
|
|
29
29
|
import { confirm, intro, outro, select, text } from "@clack/prompts";
|
|
30
30
|
|
|
31
31
|
//#region src/commands/configure.shared.ts
|
|
@@ -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-csqU78gW.js";
|
|
6
6
|
import crypto from "node:crypto";
|
|
7
7
|
import path from "node:path";
|
|
8
|
-
import
|
|
8
|
+
import fsPromises 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 fsPromises.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 fsPromises.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 fsPromises.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 fsPromises.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-BngIfn5l.js";
|
|
4
|
+
import { x as ensureChromeExtensionRelayServer } from "./chrome-38OnGyuN.js";
|
|
5
|
+
import { a as resolveProfile, i as resolveBrowserConfig, n as listKnownProfileNames, p as ensureBrowserControlAuth, t as createBrowserRouteContext } from "./server-context-DXdk410X.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-CP5pn3eU.js")).closePlaywrightBrowserConnection();
|
|
84
84
|
} catch {}
|
|
85
85
|
}
|
|
86
86
|
|
|
@@ -853,22 +853,30 @@ body {
|
|
|
853
853
|
the now-removed reasoning panel up into the header row, where it
|
|
854
854
|
still pulses on agent activity (app.js:840-845 untouched, single id
|
|
855
855
|
continues to bind that semantic). */
|
|
856
|
+
/* Stage C.4 (3.5.25): switched the symframe from flex to grid. The
|
|
857
|
+
flex-based layout (flex: 1 1 0 + min-height: 0 + child grid
|
|
858
|
+
overflow: hidden) intermittently failed to bound the substrate's
|
|
859
|
+
intrinsic content size — observed on real hardware where the
|
|
860
|
+
substrate's reasoning entries still pushed the AWAITING footer
|
|
861
|
+
past the viewport.
|
|
862
|
+
|
|
863
|
+
Grid handles the "auto-row + 1fr-row + auto-row" pattern natively:
|
|
864
|
+
the 1fr row is constrained to whatever space remains after the
|
|
865
|
+
two auto rows resolve. There's no flex-basis-vs-content-size
|
|
866
|
+
negotiation to get wrong. The grid track shrinks to fit and the
|
|
867
|
+
substrate's overflow-y reliably engages. */
|
|
856
868
|
.symframe {
|
|
857
|
-
display:
|
|
858
|
-
|
|
869
|
+
display: grid;
|
|
870
|
+
grid-template-rows: auto 1fr auto;
|
|
859
871
|
gap: 8px;
|
|
860
872
|
height: 100%;
|
|
861
|
-
/* Stage C.2: contain the column so the substrate's internal scroll
|
|
862
|
-
engages instead of bursting the parent. Without overflow:hidden
|
|
863
|
-
here, the metrics-col scroll absorbs everything and substrate
|
|
864
|
-
overflow-y becomes a no-op. */
|
|
865
873
|
overflow: hidden;
|
|
866
874
|
}
|
|
867
875
|
.symframe-header {
|
|
868
876
|
padding: 8px 10px 10px;
|
|
869
877
|
border-bottom: 1px solid rgba(0, 212, 255, 0.12);
|
|
870
878
|
margin-bottom: 4px;
|
|
871
|
-
|
|
879
|
+
min-height: 0;
|
|
872
880
|
}
|
|
873
881
|
.symframe-header-row {
|
|
874
882
|
display: flex;
|
|
@@ -901,6 +909,158 @@ body {
|
|
|
901
909
|
line-height: 1.4;
|
|
902
910
|
}
|
|
903
911
|
|
|
912
|
+
/* ── Stage D (3.5.26) mode chips + per-mode layout ───────────────── */
|
|
913
|
+
.symframe-modes {
|
|
914
|
+
display: flex;
|
|
915
|
+
align-items: center;
|
|
916
|
+
gap: 6px;
|
|
917
|
+
margin-top: 6px;
|
|
918
|
+
}
|
|
919
|
+
.mode-chip {
|
|
920
|
+
width: 10px;
|
|
921
|
+
height: 10px;
|
|
922
|
+
border-radius: 50%;
|
|
923
|
+
border: 1px solid rgba(0, 212, 255, 0.32);
|
|
924
|
+
background: transparent;
|
|
925
|
+
padding: 0;
|
|
926
|
+
cursor: pointer;
|
|
927
|
+
transition:
|
|
928
|
+
background 0.2s ease,
|
|
929
|
+
border-color 0.2s ease,
|
|
930
|
+
transform 0.15s ease;
|
|
931
|
+
flex-shrink: 0;
|
|
932
|
+
}
|
|
933
|
+
.mode-chip:hover {
|
|
934
|
+
border-color: var(--accent-cyan);
|
|
935
|
+
background: rgba(0, 212, 255, 0.15);
|
|
936
|
+
transform: scale(1.15);
|
|
937
|
+
}
|
|
938
|
+
.mode-chip.active {
|
|
939
|
+
background: var(--accent-cyan);
|
|
940
|
+
border-color: var(--accent-cyan);
|
|
941
|
+
box-shadow: 0 0 6px rgba(0, 212, 255, 0.5);
|
|
942
|
+
}
|
|
943
|
+
.mode-auto {
|
|
944
|
+
margin-left: auto;
|
|
945
|
+
padding: 2px 8px;
|
|
946
|
+
font-family: var(--font-mono);
|
|
947
|
+
font-size: 8px;
|
|
948
|
+
font-weight: 700;
|
|
949
|
+
letter-spacing: 0.12em;
|
|
950
|
+
color: var(--accent-cyan);
|
|
951
|
+
background: rgba(0, 212, 255, 0.08);
|
|
952
|
+
border: 1px solid rgba(0, 212, 255, 0.32);
|
|
953
|
+
border-radius: 8px;
|
|
954
|
+
cursor: pointer;
|
|
955
|
+
transition:
|
|
956
|
+
background 0.15s ease,
|
|
957
|
+
color 0.15s ease;
|
|
958
|
+
}
|
|
959
|
+
.mode-auto:hover {
|
|
960
|
+
background: rgba(0, 212, 255, 0.2);
|
|
961
|
+
color: var(--text);
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
/* ── Per-mode layout overrides ───────────────────────────────── */
|
|
965
|
+
/* Default (ambient): inherits the base .symframe grid above —
|
|
966
|
+
auto / 1fr / auto rows. No override needed. */
|
|
967
|
+
|
|
968
|
+
/* Focus mode: hide AWAITING; dim substrate to a soft texture; the
|
|
969
|
+
foreground card takes the visual stage. If a focusedId is set, the
|
|
970
|
+
matching card gets a cyan halo + others fade out. */
|
|
971
|
+
.symframe[data-mode="focus"] {
|
|
972
|
+
grid-template-rows: auto 1fr 0;
|
|
973
|
+
}
|
|
974
|
+
.symframe[data-mode="focus"] .symframe-awaiting {
|
|
975
|
+
display: none;
|
|
976
|
+
}
|
|
977
|
+
.symframe[data-mode="focus"] .symframe-substrate {
|
|
978
|
+
opacity: 0.2;
|
|
979
|
+
pointer-events: none;
|
|
980
|
+
filter: blur(2px);
|
|
981
|
+
transition:
|
|
982
|
+
opacity 0.4s ease,
|
|
983
|
+
filter 0.4s ease;
|
|
984
|
+
}
|
|
985
|
+
/* When focusedId is set, dim non-matching cards. */
|
|
986
|
+
.symframe[data-mode="focus"][data-focus-id] .symframe-card-dynamic {
|
|
987
|
+
opacity: 0.25;
|
|
988
|
+
transition: opacity 0.4s ease;
|
|
989
|
+
}
|
|
990
|
+
.symframe[data-mode="focus"][data-focus-id] .symframe-card-dynamic:hover {
|
|
991
|
+
opacity: 0.6;
|
|
992
|
+
}
|
|
993
|
+
/* The focused card gets a halo and stays sharp. Selector is built
|
|
994
|
+
dynamically by symframe.js via the [data-focus-id] attribute and
|
|
995
|
+
the card's own [data-card-id]; CSS can't directly match across
|
|
996
|
+
them, so we use a generic "the card whose id matches" pattern via
|
|
997
|
+
:has() (when supported) plus a fallback class added by JS. */
|
|
998
|
+
.symframe[data-mode="focus"] .symframe-card-focused {
|
|
999
|
+
opacity: 1 !important;
|
|
1000
|
+
box-shadow:
|
|
1001
|
+
0 0 24px rgba(0, 212, 255, 0.35),
|
|
1002
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.06),
|
|
1003
|
+
0 4px 12px rgba(0, 0, 0, 0.25);
|
|
1004
|
+
border-color: var(--accent-cyan) !important;
|
|
1005
|
+
transform: scale(1.02);
|
|
1006
|
+
transform-origin: center;
|
|
1007
|
+
transition:
|
|
1008
|
+
box-shadow 0.4s ease,
|
|
1009
|
+
border-color 0.4s ease,
|
|
1010
|
+
transform 0.4s ease;
|
|
1011
|
+
}
|
|
1012
|
+
|
|
1013
|
+
/* Awaiting mode: footer dominant; cards collapse to title strips;
|
|
1014
|
+
substrate dims to a status band. */
|
|
1015
|
+
.symframe[data-mode="awaiting"] {
|
|
1016
|
+
grid-template-rows: auto minmax(60px, 1fr) 4fr;
|
|
1017
|
+
}
|
|
1018
|
+
.symframe[data-mode="awaiting"] .symframe-substrate {
|
|
1019
|
+
opacity: 0.35;
|
|
1020
|
+
}
|
|
1021
|
+
.symframe[data-mode="awaiting"] .symframe-card-dynamic {
|
|
1022
|
+
max-height: 38px;
|
|
1023
|
+
overflow: hidden;
|
|
1024
|
+
transition:
|
|
1025
|
+
max-height 0.4s ease,
|
|
1026
|
+
opacity 0.4s ease;
|
|
1027
|
+
}
|
|
1028
|
+
.symframe[data-mode="awaiting"] .symframe-card-dynamic .symframe-card-body,
|
|
1029
|
+
.symframe[data-mode="awaiting"] .symframe-card-dynamic .symframe-card-actions {
|
|
1030
|
+
display: none;
|
|
1031
|
+
}
|
|
1032
|
+
.symframe[data-mode="awaiting"] .symframe-awaiting {
|
|
1033
|
+
max-height: none;
|
|
1034
|
+
background: rgba(0, 212, 255, 0.04);
|
|
1035
|
+
border-radius: 10px;
|
|
1036
|
+
margin-top: 8px;
|
|
1037
|
+
}
|
|
1038
|
+
.symframe[data-mode="awaiting"] .awaiting-list {
|
|
1039
|
+
max-height: none;
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1042
|
+
/* Quiet mode: only the substrate breathes. Cards + AWAITING hidden.
|
|
1043
|
+
This is the "deep think" or "nothing to surface" posture. */
|
|
1044
|
+
.symframe[data-mode="quiet"] {
|
|
1045
|
+
grid-template-rows: auto 1fr;
|
|
1046
|
+
}
|
|
1047
|
+
.symframe[data-mode="quiet"] .symframe-cards,
|
|
1048
|
+
.symframe[data-mode="quiet"] .symframe-awaiting {
|
|
1049
|
+
display: none;
|
|
1050
|
+
}
|
|
1051
|
+
|
|
1052
|
+
/* Reduced-motion: drop the per-mode transitions. The data-mode
|
|
1053
|
+
attribute still flips; just no animated handoff between modes. */
|
|
1054
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1055
|
+
.symframe[data-mode="focus"] .symframe-substrate,
|
|
1056
|
+
.symframe[data-mode="focus"][data-focus-id] .symframe-card-dynamic,
|
|
1057
|
+
.symframe[data-mode="focus"] .symframe-card-focused,
|
|
1058
|
+
.symframe[data-mode="awaiting"] .symframe-substrate,
|
|
1059
|
+
.symframe[data-mode="awaiting"] .symframe-card-dynamic {
|
|
1060
|
+
transition: none;
|
|
1061
|
+
}
|
|
1062
|
+
}
|
|
1063
|
+
|
|
904
1064
|
/* The stack — substrate + cards share a single grid cell so they
|
|
905
1065
|
overlap on the z-axis. Cards on top (z:1) with backdrop-filter let
|
|
906
1066
|
the substrate (z:0) show through.
|
|
@@ -921,7 +1081,6 @@ body {
|
|
|
921
1081
|
*/
|
|
922
1082
|
.symframe-stack {
|
|
923
1083
|
position: relative;
|
|
924
|
-
flex: 1 1 0;
|
|
925
1084
|
min-height: 0;
|
|
926
1085
|
display: grid;
|
|
927
1086
|
grid-template-areas: "overlay";
|
|
@@ -1255,7 +1414,6 @@ body {
|
|
|
1255
1414
|
Click a schedule row → existing schedule edit modal.
|
|
1256
1415
|
Click [+ Add] → menu with "Spawn subagent" / "Add scheduled task". */
|
|
1257
1416
|
.symframe-awaiting {
|
|
1258
|
-
flex-shrink: 0;
|
|
1259
1417
|
position: relative;
|
|
1260
1418
|
border-top: 1px solid rgba(0, 212, 255, 0.12);
|
|
1261
1419
|
margin-top: 8px;
|
|
@@ -1263,6 +1421,16 @@ body {
|
|
|
1263
1421
|
display: flex;
|
|
1264
1422
|
flex-direction: column;
|
|
1265
1423
|
gap: 4px;
|
|
1424
|
+
/* Stage C.4: cap the AWAITING footer so it can't claim more than ~40%
|
|
1425
|
+
of the column height even if the user has many cron jobs. The
|
|
1426
|
+
list inside still scrolls (max-height: 200px on .awaiting-list)
|
|
1427
|
+
so visible item count stays sensible. This is a defensive cap —
|
|
1428
|
+
the grid auto-row already takes only what the footer needs, but
|
|
1429
|
+
a cap stops a pathological case from squeezing the substrate to
|
|
1430
|
+
nothing. */
|
|
1431
|
+
max-height: 40%;
|
|
1432
|
+
min-height: 0;
|
|
1433
|
+
overflow: hidden;
|
|
1266
1434
|
}
|
|
1267
1435
|
.awaiting-header {
|
|
1268
1436
|
display: flex;
|
|
@@ -202,6 +202,47 @@
|
|
|
202
202
|
<span class="reasoning-live-dot" id="reasoning-live-dot"></span>
|
|
203
203
|
<span class="symframe-count" id="symframe-count"></span>
|
|
204
204
|
</div>
|
|
205
|
+
<!-- Stage D (3.5.26): mode selector chips. Agent picks via -->
|
|
206
|
+
<!-- display_artifact setMode; user can override by clicking a chip. -->
|
|
207
|
+
<!-- The AUTO pill appears only while userOverride is active; click -->
|
|
208
|
+
<!-- it to release control back to the agent. -->
|
|
209
|
+
<div class="symframe-modes" id="symframe-modes" role="tablist" aria-label="Panel mode">
|
|
210
|
+
<button
|
|
211
|
+
type="button"
|
|
212
|
+
class="mode-chip"
|
|
213
|
+
data-mode="ambient"
|
|
214
|
+
role="tab"
|
|
215
|
+
title="Ambient — substrate + cards + awaiting visible"
|
|
216
|
+
aria-label="Ambient mode"
|
|
217
|
+
></button>
|
|
218
|
+
<button
|
|
219
|
+
type="button"
|
|
220
|
+
class="mode-chip"
|
|
221
|
+
data-mode="focus"
|
|
222
|
+
role="tab"
|
|
223
|
+
title="Focus — one card centered, substrate dim, footer hidden"
|
|
224
|
+
aria-label="Focus mode"
|
|
225
|
+
></button>
|
|
226
|
+
<button
|
|
227
|
+
type="button"
|
|
228
|
+
class="mode-chip"
|
|
229
|
+
data-mode="awaiting"
|
|
230
|
+
role="tab"
|
|
231
|
+
title="Awaiting — footer prominent, cards collapsed"
|
|
232
|
+
aria-label="Awaiting mode"
|
|
233
|
+
></button>
|
|
234
|
+
<button
|
|
235
|
+
type="button"
|
|
236
|
+
class="mode-chip"
|
|
237
|
+
data-mode="quiet"
|
|
238
|
+
role="tab"
|
|
239
|
+
title="Quiet — substrate only, cards + footer hidden"
|
|
240
|
+
aria-label="Quiet mode"
|
|
241
|
+
></button>
|
|
242
|
+
<button type="button" class="mode-auto" id="mode-auto" hidden title="Release to agent">
|
|
243
|
+
AUTO
|
|
244
|
+
</button>
|
|
245
|
+
</div>
|
|
205
246
|
<div class="symframe-sub">window into the agent's mind</div>
|
|
206
247
|
</div>
|
|
207
248
|
<div class="symframe-stack">
|
|
@@ -987,5 +1028,6 @@
|
|
|
987
1028
|
<script src="js/symframe.js"></script>
|
|
988
1029
|
<script src="js/symframe-substrate.js"></script>
|
|
989
1030
|
<script src="js/symframe-awaiting.js"></script>
|
|
1031
|
+
<script src="js/symframe-modes.js"></script>
|
|
990
1032
|
</body>
|
|
991
1033
|
</html>
|