@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.
Files changed (229) hide show
  1. package/dist/{agent-CoHzNs_e.js → agent-BsRYHa15.js} +18 -18
  2. package/dist/{agent-CB5yb-7V.js → agent-TRt_SsAW.js} +1 -1
  3. package/dist/{agent-scope-Bnsyyeci.js → agent-scope-DOrZjOnW.js} +18 -18
  4. package/dist/{agents-DtRd3yEb.js → agents-7qMp2MWu.js} +2 -2
  5. package/dist/{agents.config-DA0ISLi7.js → agents.config-B7sNDvhz.js} +1 -1
  6. package/dist/{audit-CuwXq_EA.js → audit-C_3fAFeS.js} +20 -20
  7. package/dist/{auth-choice-5SLfZiQ7.js → auth-choice-C8lwYiEQ.js} +1 -1
  8. package/dist/{auth-choice-DKRHawfp.js → auth-choice-DcB72YWZ.js} +11 -11
  9. package/dist/{auth-profiles-D5nYBj_Z.js → auth-profiles-Ce7R_25e.js} +2 -2
  10. package/dist/{auth-token-fgnCQEHT.js → auth-token-Cr28IDKY.js} +3 -3
  11. package/dist/{banner-B_P_FrmA.js → banner-B5Hv4rlk.js} +1 -1
  12. package/dist/{browser-cli-BI81RlI8.js → browser-cli-D6xFqw9w.js} +9 -9
  13. package/dist/build-info.json +3 -3
  14. package/dist/bundled/boot-md/handler.js +4 -4
  15. package/dist/bundled/session-memory/handler.js +4 -4
  16. package/dist/{call-xUpyZDH4.js → call-AZ9vNhST.js} +9 -9
  17. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  18. package/dist/{channel-options-vjcKi2yl.js → channel-options-DOzFci6h.js} +1 -1
  19. package/dist/{channel-options-8NGYZjfd.js → channel-options-ZkruGuHl.js} +1 -1
  20. package/dist/{channels-cli-Bx90nSmB.js → channels-cli-CEz9LILV.js} +7 -7
  21. package/dist/{channels-cli-CfBFa-VO.js → channels-cli-DMShhX0d.js} +57 -57
  22. package/dist/{chrome-38OnGyuN.js → chrome-DJChpTwP.js} +2 -2
  23. package/dist/{chrome-3jl2ulOE.js → chrome-DNssqQJs.js} +7 -7
  24. package/dist/{chrome-CmQwGAuL.js → chrome-OTJg3QKn.js} +7 -7
  25. package/dist/{cli-qf0qK7oi.js → cli-Byovb_j5.js} +45 -45
  26. package/dist/{cli-DHG9iZJi.js → cli-MDHkESMC.js} +4 -4
  27. package/dist/{client-DiPa71im.js → client-DH75FlQF.js} +1 -1
  28. package/dist/{command-registry-DBbzZvh6.js → command-registry-Dzj-Uz5N.js} +10 -10
  29. package/dist/{commands-registry-CwXsDVuO.js → commands-registry-Ca5hh7nh.js} +1 -1
  30. package/dist/{completion-cli-Ddfrnilx.js → completion-cli-CsJ2f_fk.js} +12 -12
  31. package/dist/{completion-cli-DoQrkCAd.js → completion-cli-vAwL_uEK.js} +2 -2
  32. package/dist/{config-BngIfn5l.js → config-B4jkreCN.js} +2 -2
  33. package/dist/{config-cli-9a5qBcdo.js → config-cli-CqqCDyf0.js} +1 -1
  34. package/dist/{config-cli-JVGYyfYA.js → config-cli-cmea_Z-A.js} +4 -4
  35. package/dist/{config-guard-DStz4_V2.js → config-guard-BRm3RiOi.js} +6 -6
  36. package/dist/{config-validation-Dxj9LRzr.js → config-validation-Cdyg1BZB.js} +1 -1
  37. package/dist/{configure-ryB8EvyP.js → configure-BEPKQuJj.js} +2 -2
  38. package/dist/{configure-Bqz2Hvnf.js → configure-DymrZd1n.js} +14 -14
  39. package/dist/{consolidate-CO32_TEx.js → consolidate-DymnvvYm.js} +6 -6
  40. package/dist/{control-service-CUreKVeY.js → control-service-D8kKOts5.js} +4 -4
  41. package/dist/control-ui/css/style.css +274 -0
  42. package/dist/control-ui/index.html +14 -0
  43. package/dist/control-ui/js/symframe-bidirectional.js +210 -0
  44. package/dist/{control-ui-assets-B8B9z_Ll.js → control-ui-assets-CJQ97d4u.js} +1 -1
  45. package/dist/{cost-cli-D-ssjcRF.js → cost-cli-DWiVCOCx.js} +3 -3
  46. package/dist/{cron-cli-pZ_7Wzhj.js → cron-cli-VH_t2D1o.js} +7 -7
  47. package/dist/{daemon-cli-BDzcfcu_.js → daemon-cli-3PFXkheJ.js} +11 -11
  48. package/dist/{daemon-runtime-CKn0wmCk.js → daemon-runtime-DlQla_dA.js} +10 -10
  49. package/dist/{deliver-B04yNX82.js → deliver-BiWlR84Y.js} +4 -4
  50. package/dist/{deliver-CWMFmMCv.js → deliver-lTZLIQqf.js} +2 -2
  51. package/dist/{deliver-f3cIWxXT.js → deliver-q23ar_Pm.js} +4 -4
  52. package/dist/{deps-CdibsPMx.js → deps-Bf9dt2UO.js} +1 -1
  53. package/dist/{devices-cli-BIZbo_Pt.js → devices-cli-Bhi1rWnT.js} +6 -6
  54. package/dist/{diagnostics-CYkqD5lP.js → diagnostics-DlZODdRf.js} +5 -5
  55. package/dist/{directory-cli-giqTe8Yg.js → directory-cli-Bm5QYEo-.js} +3 -3
  56. package/dist/{dm-policy-shared-B61_yf6G.js → dm-policy-shared-CeFt0nch.js} +1 -1
  57. package/dist/{dns-cli-Dssz4RqF.js → dns-cli-CubLq4j9.js} +3 -3
  58. package/dist/{docs-cli-Ct1STieY.js → docs-cli-PS8m1er7.js} +1 -1
  59. package/dist/{doctor-completion-Bk55g4MP.js → doctor-completion--phnyAqO.js} +1 -1
  60. package/dist/{doctor-completion-eh7aImCx.js → doctor-completion-BY72G6-l.js} +2 -2
  61. package/dist/{doctor-config-flow-ljVnQJjo.js → doctor-config-flow-C52W1uUK.js} +9 -9
  62. package/dist/entry.js +1 -1
  63. package/dist/{exec-approvals-cli-B2UY9dZC.js → exec-approvals-cli-xTOKcyZh.js} +13 -13
  64. package/dist/extensionAPI.js +4 -4
  65. package/dist/{file-lock-2AecMjCa.js → file-lock-BVUYnlQv.js} +8 -8
  66. package/dist/{fs-safe-B0Is-oLk.js → fs-safe-BdejYjW8.js} +6 -6
  67. package/dist/{gateway-cli-BwPy7u0B.js → gateway-cli-BVpyqk_H.js} +98 -98
  68. package/dist/{gateway-cli-BGMVOW2G.js → gateway-cli-Bo80TSkq.js} +10 -10
  69. package/dist/{gateway-rpc-DmFOiGIJ.js → gateway-rpc-C6lKFbor.js} +1 -1
  70. package/dist/{glass-ui-ws-Z-W33_mF.js → glass-ui-ws-BK5qk7-_.js} +8 -8
  71. package/dist/{glass-ui-ws-CwOiILiY.js → glass-ui-ws-CrmnRYxe.js} +67 -67
  72. package/dist/{health-Bc1wmAO5.js → health-7UqIGG8U.js} +4 -4
  73. package/dist/{hooks-cli-DOjHV2fF.js → hooks-cli-CjklMDuK.js} +59 -59
  74. package/dist/{hooks-cli-Bn6x6Jnj.js → hooks-cli-CqmTdxT6.js} +5 -5
  75. package/dist/{image-ops-BzCBIakN.js → image-ops-L70xVnpG.js} +10 -10
  76. package/dist/index.js +52 -52
  77. package/dist/{inspect-DzYUb_Dl.js → inspect-CGKsaVZ4.js} +4 -4
  78. package/dist/{install-safe-path-BrpA09f2.js → install-safe-path-B2JrFspY.js} +11 -11
  79. package/dist/{installs-bnDlOSq2.js → installs-D890uIIW.js} +10 -10
  80. package/dist/{internal-csqU78gW.js → internal-DVCddhhN.js} +9 -9
  81. package/dist/{lifecycle-core-cSR_xiIO.js → lifecycle-core-wFwnK_mD.js} +5 -5
  82. package/dist/llm-slug-generator.js +4 -4
  83. package/dist/{local-roots-2Jb79HZ8.js → local-roots-CgDCgCuM.js} +1 -1
  84. package/dist/{logs-cli-CYFlhj51.js → logs-cli-BTU7zrkU.js} +7 -7
  85. package/dist/{manager-DuWp0CTD.js → manager-CL767Sv9.js} +15 -15
  86. package/dist/{manager-BHddoe4T.js → manager-NDn8AFhr.js} +1 -1
  87. package/dist/{manager-DH00nlW8.js → manager-XfNxjaX5.js} +1 -1
  88. package/dist/{manager-F0-SHT1B.js → manager-fgUC_sHR.js} +1 -1
  89. package/dist/{memory-C02Znuee.js → memory-CTf9MdBg.js} +2 -2
  90. package/dist/{memory-fFc7GGPZ.js → memory-DOl2l2AS.js} +5 -5
  91. package/dist/{memory-cli-BnBKckEk.js → memory-cli-B9_Vfaow.js} +12 -12
  92. package/dist/{memory-cli-083UJtVJ.js → memory-cli-CA5PbH9y.js} +2 -2
  93. package/dist/{model-Cwbcw-km.js → model-MUMSB_7d.js} +1 -1
  94. package/dist/{model-auth-_C07_3Yr.js → model-auth-1EAQvYRv.js} +2 -2
  95. package/dist/{model-catalog-BWurV7gl.js → model-catalog-IWi6-nY9.js} +3 -3
  96. package/dist/{model-picker-Dpkr5xBW.js → model-picker-Cf6UgQEh.js} +5 -5
  97. package/dist/{model-selection-CCTzD29o.js → model-selection-7wdmO-Iw.js} +1 -1
  98. package/dist/{models-Bh_frCup.js → models-DgiBOeVH.js} +2 -2
  99. package/dist/{models-cli-DVdb_TUS.js → models-cli-B7gTrlgn.js} +55 -55
  100. package/dist/{models-cli-BhBu4Dwm.js → models-cli-BHN3bt0f.js} +6 -6
  101. package/dist/{models-config-DlXge3Sd.js → models-config-B5Xxy-c-.js} +8 -8
  102. package/dist/{node-cli-B0ePfMUr.js → node-cli-CWbA6YCw.js} +27 -27
  103. package/dist/{node-service-Cc18m-uk.js → node-service-BH08wY5j.js} +1 -1
  104. package/dist/{nodes-cli-L0gy-26E.js → nodes-cli-BfHcv62i.js} +10 -10
  105. package/dist/{nodes-screen-Cp5QP3ET.js → nodes-screen-De9ma6e1.js} +4 -4
  106. package/dist/{npm-registry-spec-C-muP97-.js → npm-registry-spec-DTqn-NXZ.js} +9 -9
  107. package/dist/{onboard-D6GZ2t-L.js → onboard-BNdKimpG.js} +15 -15
  108. package/dist/{onboard-BSxqEQfo.js → onboard-DGp6mHJD.js} +1 -1
  109. package/dist/{onboard-channels-BkR3MKMp.js → onboard-channels-DSBWRjSp.js} +1 -1
  110. package/dist/{onboard-channels-DVS9vciR.js → onboard-channels-Dhb-28-_.js} +4 -4
  111. package/dist/{onboard-custom-DnDrvxSg.js → onboard-custom-BcRYreNG.js} +3 -3
  112. package/dist/{onboard-helpers-CJlheOSJ.js → onboard-helpers-7IGQ8nAM.js} +8 -8
  113. package/dist/{onboard-hooks-D9jHwImb.js → onboard-hooks-2SCajRKc.js} +1 -1
  114. package/dist/{onboard-remote-CVZ8l58S.js → onboard-remote-Dr75eqOQ.js} +1 -1
  115. package/dist/{onboard-skills-MgcaLiE6.js → onboard-skills-uO7HZwjc.js} +3 -3
  116. package/dist/{onboarding-D-mzwQ_f.js → onboarding-BG23DuS1.js} +12 -12
  117. package/dist/{onboarding-CrCGoZ4H.js → onboarding-MPSU9pXd.js} +3 -3
  118. package/dist/{onboarding.finalize-BYzduVFA.js → onboarding.finalize-B-mxzJ08.js} +4 -4
  119. package/dist/{onboarding.finalize-DBFL76p0.js → onboarding.finalize-Cv20GyNt.js} +31 -31
  120. package/dist/{onboarding.gateway-config-BCDgsFl8.js → onboarding.gateway-config-CkP7K4EN.js} +8 -8
  121. package/dist/{openai-model-default-De-UAjwg.js → openai-model-default-BkuuK-Di.js} +2 -2
  122. package/dist/{pairing-cli-CBMMCNnx.js → pairing-cli-Rsae0KnN.js} +5 -5
  123. package/dist/{pairing-store-Be-ZQK87.js → pairing-store-BNhJOnWn.js} +1 -1
  124. package/dist/{pairing-token-B703A1U3.js → pairing-token-Dcy37-4s.js} +7 -7
  125. package/dist/{paths-BWqg8NZT.js → paths-DObzwe08.js} +1 -1
  126. package/dist/{pi-auth-json-D-vdh-nY.js → pi-auth-json-Db8XJVGL.js} +6 -6
  127. package/dist/{pi-embedded-DGnpyHm-.js → pi-embedded-V-5MAZNb.js} +11 -10
  128. package/dist/{pi-embedded-helpers-j1JrlsI0.js → pi-embedded-helpers-D-OFjhdI.js} +6 -6
  129. package/dist/{pi-tools.policy-CvAqjEH9.js → pi-tools.policy-H2t-Xkfc.js} +3 -3
  130. package/dist/{plugin-auto-enable-BXSJTxI7.js → plugin-auto-enable-DJBhDIMq.js} +1 -1
  131. package/dist/{plugin-registry-KP94aK4z.js → plugin-registry-CBV_Y6Dj.js} +3 -3
  132. package/dist/{plugin-registry-B74FBx4U.js → plugin-registry-c3Skr0q9.js} +1 -1
  133. package/dist/{plugins-cli-Cmf3kRf5.js → plugins-cli-8Jo1X8SU.js} +5 -5
  134. package/dist/{plugins-cli-B4ljapU5.js → plugins-cli-Dl7-FSCq.js} +54 -54
  135. package/dist/{ports-CB_Iu83U.js → ports-gxLM5ahL.js} +2 -2
  136. package/dist/{ports-Bi3V_3n9.js → ports-r7LBic2V.js} +1 -1
  137. package/dist/{program-CGuYYumL.js → program-D-LYHEvk.js} +10 -10
  138. package/dist/{program-context-BzqGUxMS.js → program-context-BpeLcVUB.js} +40 -40
  139. package/dist/{prompt-select-styled-BVkRteee.js → prompt-select-styled-Ceih9wkY.js} +38 -38
  140. package/dist/{prompt-select-styled-b752FPLG.js → prompt-select-styled-ZWxB2Odf.js} +4 -4
  141. package/dist/{provider-auth-helpers-C6GjAO-s.js → provider-auth-helpers-BCejcf5o.js} +6 -6
  142. package/dist/{provider-auth-helpers-BKveYcEH.js → provider-auth-helpers-BdvW7eau.js} +1 -1
  143. package/dist/{push-apns-HNg0rTkI.js → push-apns-D4iLNyBo.js} +1 -1
  144. package/dist/{push-apns-CbbWM63o.js → push-apns-HQd5hCpM.js} +4 -4
  145. package/dist/{pw-ai-CP5pn3eU.js → pw-ai-BiBvIJzd.js} +7 -7
  146. package/dist/{pw-ai-DLsdzdgc.js → pw-ai-DY_6l11g.js} +1 -1
  147. package/dist/{pw-ai-DOAsQ5NX.js → pw-ai-v__CyAlM.js} +1 -1
  148. package/dist/{qmd-manager-Dxyue7B1.js → qmd-manager-C8-M4Pru.js} +19 -19
  149. package/dist/{qr-cli-DHw6muwK.js → qr-cli-1sCVaPcF.js} +3 -3
  150. package/dist/{register.agent-DbPYGG3u.js → register.agent-DoUbqZIu.js} +9 -9
  151. package/dist/{register.agent-DhS2lmWo.js → register.agent-zwVEiCHs.js} +67 -67
  152. package/dist/{register.configure-ChjzXxh8.js → register.configure-CSe8Rlda.js} +70 -70
  153. package/dist/{register.configure-B0M15y31.js → register.configure-jBKvvOnk.js} +8 -8
  154. package/dist/{register.maintenance-bzLNOqch.js → register.maintenance-BdikNAV1.js} +9 -9
  155. package/dist/{register.maintenance-frHWf6Xs.js → register.maintenance-royLmVA2.js} +67 -67
  156. package/dist/{register.message-Bfukmte_.js → register.message-C1H5Vcnb.js} +5 -5
  157. package/dist/{register.message-DWB4eVII.js → register.message-C_0uLdYn.js} +47 -47
  158. package/dist/{register.onboard-4P8ud4Sw.js → register.onboard-DTLtb0SN.js} +25 -25
  159. package/dist/{register.onboard-CDsSVoFI.js → register.onboard-DnMRUtnl.js} +2 -2
  160. package/dist/{register.setup-Bp8rYeRx.js → register.setup-B9sjRH7l.js} +2 -2
  161. package/dist/{register.setup-D0I7sEGc.js → register.setup-KA8Cs3HJ.js} +28 -28
  162. package/dist/{register.status-health-sessions-69Gigo_H.js → register.status-health-sessions-B_jcsH3c.js} +41 -41
  163. package/dist/{register.status-health-sessions-DE2db_Uo.js → register.status-health-sessions-BwiKHLEj.js} +3 -3
  164. package/dist/{register.subclis-QXO75pUm.js → register.subclis-B_V8vNI0.js} +9 -9
  165. package/dist/{replies-B_3j7R_Q.js → replies-CbXXjn9X.js} +1 -1
  166. package/dist/{reply-prefix-CtZtkTJK.js → reply-prefix-BFNeXT65.js} +1 -1
  167. package/dist/{resolve-route-Du0VftVs.js → resolve-route-C1IIA6kH.js} +1 -1
  168. package/dist/{routes-BwTUoI5h.js → routes-ivqbutvM.js} +10 -10
  169. package/dist/{rpc-DTqyJZKO.js → rpc-B1czfnym.js} +1 -1
  170. package/dist/{run-main-MD8Z8ydF.js → run-main-DhgQtxI0.js} +17 -17
  171. package/dist/{sandbox-CZGTCone.js → sandbox-BkznAPKO.js} +18 -18
  172. package/dist/{sandbox-cli-DEtGT_4y.js → sandbox-cli-Bb9cBtBH.js} +13 -13
  173. package/dist/{security-cli-iJpHPABF.js → security-cli-l59T6lAJ.js} +29 -29
  174. package/dist/{send-CxjvucMO.js → send-B0jHSNMF.js} +7 -7
  175. package/dist/{server-context-DXdk410X.js → server-context-ChcbJgNo.js} +5 -5
  176. package/dist/{server-methods-DHWxmfIu.js → server-methods-6-10RyMD.js} +60 -60
  177. package/dist/{server-methods-DTkVQH8Q.js → server-methods-Bdz-OwQ4.js} +7 -7
  178. package/dist/{server-node-events-C0smPxrR.js → server-node-events-B3Yey3h9.js} +6 -6
  179. package/dist/{server-node-events-DHSiqnRS.js → server-node-events-C4giIb7q.js} +48 -48
  180. package/dist/{service-CRZoXO_n.js → service-e6MzlLCd.js} +15 -15
  181. package/dist/{session-dirs-a00Ad2SO.js → session-dirs-C9E2G0yZ.js} +2 -2
  182. package/dist/{session-utils-CJhcRx3E.js → session-utils-Cs1jlD-q.js} +14 -14
  183. package/dist/{sessions-BCc3THTm.js → sessions-Dxf5Kjig.js} +10 -10
  184. package/dist/{shared-C39SiDDJ.js → shared-1xPo9ygd.js} +1 -1
  185. package/dist/{shared-Dh-O8nRd.js → shared-COtpr3Ad.js} +3 -3
  186. package/dist/{skill-commands-DWvXs3lz.js → skill-commands-DDGGlq68.js} +4 -4
  187. package/dist/{skill-scanner-CIlHPszT.js → skill-scanner-BCgVcIwi.js} +5 -5
  188. package/dist/{skills-CYcBtLGH.js → skills-BwDmcZdt.js} +4 -4
  189. package/dist/{skills-cli-CD9s3cgm.js → skills-cli-B-7TY-vS.js} +7 -7
  190. package/dist/{skills-install-BTa9IuQ6.js → skills-install-Dwzsjoc8.js} +3 -3
  191. package/dist/{skills-remote-BcRQTDsZ.js → skills-remote-bz71Bstn.js} +3 -3
  192. package/dist/{skills-status-DLnCHUZ2.js → skills-status-BKX1PjCc.js} +1 -1
  193. package/dist/{sqlite-BpogPlQW.js → sqlite-Cod7C5ba.js} +5 -5
  194. package/dist/{status-DUbs9rVu.js → status-BRUIJsUm.js} +3 -3
  195. package/dist/{status-OTYFx93W.js → status-B_CQpjQ9.js} +1 -1
  196. package/dist/{status-ISN-LC9F.js → status-CCAO6ZHm.js} +23 -23
  197. package/dist/{status-BEZotN01.js → status-D_0593yR.js} +1 -1
  198. package/dist/{status.update-CKfyV6zw.js → status.update-DGJi0OLl.js} +3 -3
  199. package/dist/{subagent-registry-CVhLz4p3.js → subagent-registry-D8BIWG9Q.js} +4 -3
  200. package/dist/{symframe-cli-CPE5nxuJ.js → symframe-cli-BVmRLRid.js} +9 -9
  201. package/dist/{symi-root-DeCVdZB4.js → symi-root-BQ0IpoW2.js} +2 -2
  202. package/dist/{synthesis-C1mZnGqD.js → synthesis-BfVWACNx.js} +4 -4
  203. package/dist/{synthesis-DkHCk0El.js → synthesis-CV94EuT_.js} +45 -45
  204. package/dist/{synthesis-CDPVZw2P.js → synthesis-D6pnRAxI.js} +4 -4
  205. package/dist/{synthesis-RhT991Ni.js → synthesis-qvteT0Ti.js} +4 -4
  206. package/dist/{system-cli-nWJwLo85.js → system-cli-Du1GEeoO.js} +7 -7
  207. package/dist/{systemd-CsoVnIbM.js → systemd-CUIM0n5P.js} +5 -5
  208. package/dist/{systemd-hints-QISwLlFU.js → systemd-hints-CsrzMCTD.js} +6 -6
  209. package/dist/{systemd-linger-BnhuRdbt.js → systemd-linger-BzYk7A6M.js} +1 -1
  210. package/dist/{tui-ZL7IGA7l.js → tui-B2MY6Mj2.js} +7 -7
  211. package/dist/{tui-cli-CEpMtmhP.js → tui-cli-BMEnosW9.js} +19 -19
  212. package/dist/{unified-runner-CsadjpQa.js → unified-runner-CtSJoaGS.js} +102 -101
  213. package/dist/{unified-runner-Cppo8O8z.js → unified-runner-H3Qh_NZO.js} +11 -10
  214. package/dist/{update-check-u6Jgr1cz.js → update-check-BCL_K7kx.js} +5 -5
  215. package/dist/{update-cli-48-Nah-Y.js → update-cli-BrryYmFA.js} +77 -77
  216. package/dist/{update-cli-D9g9s187.js → update-cli-CUos9qgT.js} +9 -9
  217. package/dist/{update-runner-G2YgEATs.js → update-runner-BLV8SI96.js} +15 -15
  218. package/dist/{update-Cb0Fmxic.js → update-yYduAjKd.js} +3 -3
  219. package/dist/{webhooks-cli-DjUITimx.js → webhooks-cli-D5k-Y2A8.js} +4 -4
  220. package/dist/{with-timeout-CLrF-Yr_.js → with-timeout-DPR4A2dx.js} +1 -1
  221. package/dist/{workspace-dirs-DCICLTHx.js → workspace-dirs-jKFQf7of.js} +1 -1
  222. package/dist/{wsl-DTi7eX-V.js → wsl-CglTdtlb.js} +2 -2
  223. package/extensions/memory-core/package.json +1 -1
  224. package/extensions/msteams/CHANGELOG.md +12 -0
  225. package/extensions/msteams/package.json +1 -1
  226. package/extensions/open-prose/package.json +1 -1
  227. package/extensions/outlook/package.json +1 -1
  228. package/extensions/slack/package.json +1 -1
  229. 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-CCTzD29o.js";
4
+ import { C as DEFAULT_MODEL, m as resolveConfiguredModelRef, w as DEFAULT_PROVIDER } from "./model-selection-7wdmO-Iw.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-BzqGUxMS.js";
5
+ import { a as registerCoreCliByName, c as getSubCliEntries, l as registerSubCliByName, r as getCoreCliCommandNames, t as getProgramContext } from "./program-context-BpeLcVUB.js";
6
6
  import path from "node:path";
7
7
  import os from "node:os";
8
- import fsPromises from "node:fs/promises";
8
+ import fs 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 fsPromises.mkdir(cacheDir, { recursive: true });
65
+ await fs.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 fsPromises.writeFile(targetPath, script, "utf-8");
69
+ await fs.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 fsPromises.readFile(profilePath, "utf-8")).split("\n").some((line) => isCompletionProfileHeader(line) || isCompletionProfileLine(line, binName, cachedPath));
127
+ return (await fs.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 fsPromises.readFile(profilePath, "utf-8")).split("\n");
137
+ const lines = (await fs.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 fsPromises.access(profilePath);
186
+ await fs.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 fsPromises.access(profilePath);
200
+ await fs.access(profilePath);
201
201
  } catch {
202
202
  if (!yes) console.warn(`Profile not found at ${profilePath}. Created a new one.`);
203
- await fsPromises.mkdir(path.dirname(profilePath), { recursive: true });
204
- await fsPromises.writeFile(profilePath, "", "utf-8");
203
+ await fs.mkdir(path.dirname(profilePath), { recursive: true });
204
+ await fs.writeFile(profilePath, "", "utf-8");
205
205
  }
206
- const update = updateCompletionProfile(await fsPromises.readFile(profilePath, "utf-8"), binName, cachePath, sourceLine);
206
+ const update = updateCompletionProfile(await fs.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 fsPromises.writeFile(profilePath, update.next, "utf-8");
215
+ await fs.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-QXO75pUm.js";
4
- import { i as registerCoreCliByName, n as getCoreCliCommandNames } from "./command-registry-DBbzZvh6.js";
3
+ import { n as getSubCliEntries, r as registerSubCliByName } from "./register.subclis-B_V8vNI0.js";
4
+ import { i as registerCoreCliByName, n as getCoreCliCommandNames } from "./command-registry-Dzj-Uz5N.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-Bnsyyeci.js";
7
- import { S as DEFAULT_CONTEXT_TOKENS, d as parseModelRef } from "./model-selection-CCTzD29o.js";
6
+ import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-DOrZjOnW.js";
7
+ import { S as DEFAULT_CONTEXT_TOKENS, d as parseModelRef } from "./model-selection-7wdmO-Iw.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-ryB8EvyP.js").then((n) => n.t);
204
+ const { configureCommandFromSectionsArg } = await import("./configure-BEPKQuJj.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-Bnsyyeci.js";
8
- import "./model-selection-CCTzD29o.js";
9
- import { l as writeConfigFile, o as readConfigFileSnapshot } from "./config-BngIfn5l.js";
7
+ import "./agent-scope-DOrZjOnW.js";
8
+ import "./model-selection-7wdmO-Iw.js";
9
+ import { l as writeConfigFile, o as readConfigFileSnapshot } from "./config-B4jkreCN.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-Bqz2Hvnf.js").then((n) => n.t);
209
+ const { configureCommandFromSectionsArg } = await import("./configure-DymrZd1n.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-Bnsyyeci.js";
8
- import "./model-selection-CCTzD29o.js";
9
- import { o as readConfigFileSnapshot } from "./config-BngIfn5l.js";
7
+ import "./agent-scope-DOrZjOnW.js";
8
+ import "./model-selection-7wdmO-Iw.js";
9
+ import { o as readConfigFileSnapshot } from "./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
- import "./sessions-BCc3THTm.js";
14
+ import "./sessions-Dxf5Kjig.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-BXSJTxI7.js";
24
- import { t as loadAndMaybeMigrateDoctorConfig } from "./doctor-config-flow-ljVnQJjo.js";
23
+ import "./plugin-auto-enable-DJBhDIMq.js";
24
+ import { t as loadAndMaybeMigrateDoctorConfig } from "./doctor-config-flow-C52W1uUK.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-BngIfn5l.js";
2
+ import { o as readConfigFileSnapshot } from "./config-B4jkreCN.js";
3
3
 
4
4
  //#region src/commands/config-validation.ts
5
5
  async function requireValidConfigSnapshot(runtime) {
@@ -10,7 +10,7 @@ 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-BkR3MKMp.js";
13
+ import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-DSBWRjSp.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
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";
@@ -18,7 +18,7 @@ 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-5SLfZiQ7.js";
21
+ import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-C8lwYiEQ.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";
@@ -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-D5nYBj_Z.js";
5
+ import { b as ensureAuthProfileStore } from "./auth-profiles-Ce7R_25e.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-BngIfn5l.js";
7
+ import { i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot } from "./config-B4jkreCN.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-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";
15
+ import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-Dhb-28-_.js";
16
+ import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-DlQla_dA.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-7IGQ8nAM.js";
18
+ import { t as resolveGatewayService } from "./service-e6MzlLCd.js";
19
+ import { r as healthCommand } from "./health-7UqIGG8U.js";
20
+ import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-CJQ97d4u.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-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";
23
+ import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-DcB72YWZ.js";
24
+ import { a as promptDefaultModel, n as applyModelFallbacksFromSelection, o as promptModelAllowlist, r as applyPrimaryModel, t as applyModelAllowlist } from "./model-picker-Cf6UgQEh.js";
25
+ import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-BzYk7A6M.js";
26
+ import { a as promptCustomApiConfig } from "./onboard-custom-BcRYreNG.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-CVZ8l58S.js";
30
- import { n as setupSkills } from "./onboard-skills-MgcaLiE6.js";
29
+ import { n as promptRemoteGatewayConfig } from "./onboard-remote-Dr75eqOQ.js";
30
+ import { n as setupSkills } from "./onboard-skills-uO7HZwjc.js";
31
31
  import { confirm, intro, outro, select, text } from "@clack/prompts";
32
32
 
33
33
  //#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-csqU78gW.js";
5
+ import { l as parseEmbedding, r as cosineSimilarity } from "./internal-DVCddhhN.js";
6
6
  import crypto from "node:crypto";
7
7
  import path from "node:path";
8
- import fsPromises from "node:fs/promises";
8
+ import fs from "node:fs/promises";
9
9
 
10
10
  //#region src/memory/consolidate.ts
11
11
  const log = createSubsystemLogger("memory/consolidate");
@@ -346,7 +346,7 @@ async function stagePromote(params) {
346
346
  };
347
347
  const now = params.now ?? Date.now();
348
348
  const memoryDir = path.join(params.workspaceDir, "memory");
349
- await fsPromises.mkdir(memoryDir, { recursive: true }).catch(() => {});
349
+ await fs.mkdir(memoryDir, { recursive: true }).catch(() => {});
350
350
  const corePath = path.join(memoryDir, "symi-core.md");
351
351
  const beliefsPath = path.join(memoryDir, "symi-beliefs.md");
352
352
  params.db.prepare(`UPDATE chunks SET promoted_to = NULL WHERE promoted_to = ?`).run(SYMI_CORE_PATH);
@@ -386,7 +386,7 @@ async function stagePromote(params) {
386
386
  sections: sectionLines,
387
387
  now
388
388
  });
389
- await fsPromises.writeFile(corePath, symiCoreContent, "utf-8");
389
+ await fs.writeFile(corePath, symiCoreContent, "utf-8");
390
390
  const merged = mergeBeliefs({
391
391
  existing: await readExistingBeliefs(beliefsPath),
392
392
  fresh: params.synthesizedBeliefs ?? [],
@@ -396,7 +396,7 @@ async function stagePromote(params) {
396
396
  beliefs: merged,
397
397
  now
398
398
  });
399
- await fsPromises.writeFile(beliefsPath, symiBeliefsContent, "utf-8");
399
+ await fs.writeFile(beliefsPath, symiBeliefsContent, "utf-8");
400
400
  log.debug("consolidate.promote", {
401
401
  promoted,
402
402
  sections: CORE_SECTIONS.length,
@@ -596,7 +596,7 @@ function mergeBeliefs(params) {
596
596
  return [...byHash.values()].toSorted((a, b) => b.confidence - a.confidence).slice(0, params.cap);
597
597
  }
598
598
  async function readExistingBeliefs(filePath) {
599
- const content = await fsPromises.readFile(filePath, "utf-8").catch(() => "");
599
+ const content = await fs.readFile(filePath, "utf-8").catch(() => "");
600
600
  if (!content) return [];
601
601
  const out = [];
602
602
  for (const rawLine of content.split("\n")) {
@@ -1,8 +1,8 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { t as createSubsystemLogger } from "./subsystem-CHbO_DkH.js";
3
- import { i as loadConfig } from "./config-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";
3
+ import { i as loadConfig } from "./config-B4jkreCN.js";
4
+ import { x as ensureChromeExtensionRelayServer } from "./chrome-DJChpTwP.js";
5
+ import { a as resolveProfile, i as resolveBrowserConfig, n as listKnownProfileNames, p as ensureBrowserControlAuth, t as createBrowserRouteContext } from "./server-context-ChcbJgNo.js";
6
6
 
7
7
  //#region src/browser/server-lifecycle.ts
8
8
  async function ensureExtensionRelayForProfiles(params) {
@@ -80,7 +80,7 @@ async function stopBrowserControlService() {
80
80
  });
81
81
  state = null;
82
82
  try {
83
- await (await import("./pw-ai-CP5pn3eU.js")).closePlaywrightBrowserConnection();
83
+ await (await import("./pw-ai-BiBvIJzd.js")).closePlaywrightBrowserConnection();
84
84
  } catch {}
85
85
  }
86
86
 
@@ -961,6 +961,121 @@ body {
961
961
  color: var(--text);
962
962
  }
963
963
 
964
+ /* ── Stage E (3.5.28): considering button ─────────────────────── */
965
+ /* "What are you considering?" — clicking dwells every weighing card
966
+ AND adds .considering-weighing to #symframe (CSS below) which dims
967
+ non-weighing cards for the duration. */
968
+ .considering-btn {
969
+ margin-left: 4px;
970
+ padding: 2px 7px;
971
+ font-size: 11px;
972
+ line-height: 1;
973
+ font-family: var(--font-mono);
974
+ color: #f5b73a; /* amber — same hue as weighing intent */
975
+ background: transparent;
976
+ border: 1px solid rgba(245, 183, 58, 0.32);
977
+ border-radius: 8px;
978
+ cursor: pointer;
979
+ transition:
980
+ background 0.15s ease,
981
+ border-color 0.15s ease,
982
+ transform 0.15s ease;
983
+ }
984
+ .considering-btn:hover {
985
+ background: rgba(245, 183, 58, 0.12);
986
+ border-color: #f5b73a;
987
+ }
988
+ .considering-btn:active {
989
+ transform: scale(0.95);
990
+ }
991
+ /* Brief red flash when clicked while no weighing cards exist —
992
+ tells the user "I have nothing to surface here." */
993
+ .considering-btn.considering-empty {
994
+ animation: considering-empty-pulse 0.8s ease-out;
995
+ }
996
+ @keyframes considering-empty-pulse {
997
+ 0%,
998
+ 100% {
999
+ border-color: rgba(245, 183, 58, 0.32);
1000
+ }
1001
+ 50% {
1002
+ border-color: rgba(244, 114, 182, 0.6);
1003
+ background: rgba(244, 114, 182, 0.1);
1004
+ }
1005
+ }
1006
+ /* While considering-weighing is active, dim non-weighing cards so the
1007
+ weighing ones (now pulsing from dwell) stand out. */
1008
+ .symframe.considering-weighing .symframe-card-dynamic:not([data-intent="weighing"]) {
1009
+ opacity: 0.32;
1010
+ filter: blur(1px);
1011
+ transition:
1012
+ opacity 0.4s ease,
1013
+ filter 0.4s ease;
1014
+ }
1015
+ .symframe.considering-weighing .symframe-substrate {
1016
+ opacity: 0.45;
1017
+ transition: opacity 0.4s ease;
1018
+ }
1019
+ @media (prefers-reduced-motion: reduce) {
1020
+ .considering-btn.considering-empty {
1021
+ animation: none;
1022
+ }
1023
+ .symframe.considering-weighing .symframe-card-dynamic:not([data-intent="weighing"]) {
1024
+ transition: opacity 0.2s ease;
1025
+ filter: none;
1026
+ }
1027
+ }
1028
+
1029
+ /* ── Stage E (3.5.28): mention-binding spans ──────────────────── */
1030
+ /* When an assistant chat message contains `[panel:<card-id>]`, the
1031
+ mention-binding scanner replaces the literal text with a clickable
1032
+ .panel-ref span showing the card's title. Clicking the span dwells
1033
+ the referenced card (cyan border pulse). */
1034
+ .panel-ref {
1035
+ display: inline;
1036
+ color: var(--accent-cyan);
1037
+ border-bottom: 1px dashed currentColor;
1038
+ cursor: pointer;
1039
+ font-weight: 500;
1040
+ padding: 0 2px;
1041
+ border-radius: 3px;
1042
+ transition:
1043
+ background 0.15s ease,
1044
+ border-bottom-style 0.15s ease;
1045
+ }
1046
+ .panel-ref::before {
1047
+ content: "↗ ";
1048
+ font-size: 0.85em;
1049
+ opacity: 0.7;
1050
+ }
1051
+ .panel-ref:hover {
1052
+ background: rgba(0, 212, 255, 0.12);
1053
+ border-bottom-style: solid;
1054
+ }
1055
+ /* Orphan reference — the card is no longer in the panel. Subdued so
1056
+ the user sees the link works but the card isn't currently here. */
1057
+ .panel-ref.panel-ref-orphan {
1058
+ color: var(--text-dim);
1059
+ opacity: 0.7;
1060
+ }
1061
+ .panel-ref.panel-ref-orphan::before {
1062
+ content: "↗ ";
1063
+ }
1064
+ /* Click-miss flash: a brief pink tint signals "I tried to dwell but
1065
+ that card isn't currently registered." */
1066
+ .panel-ref.panel-ref-miss {
1067
+ animation: panel-ref-miss-pulse 1s ease-out;
1068
+ }
1069
+ @keyframes panel-ref-miss-pulse {
1070
+ 0%,
1071
+ 100% {
1072
+ background: rgba(0, 212, 255, 0.12);
1073
+ }
1074
+ 50% {
1075
+ background: rgba(244, 114, 182, 0.22);
1076
+ }
1077
+ }
1078
+
964
1079
  /* ── Per-mode layout overrides ───────────────────────────────── */
965
1080
  /* Default (ambient): inherits the base .symframe grid above —
966
1081
  auto / 1fr / auto rows. No override needed. */
@@ -1656,6 +1771,165 @@ body {
1656
1771
  box-shadow: 0 0 8px rgba(0, 212, 255, 0.18);
1657
1772
  }
1658
1773
 
1774
+ /* ── Stage D.1 (3.5.27): intent-aware visual treatment ──────────── */
1775
+ /* The data-intent attribute has been on every card since Stage A but
1776
+ was metadata only. Stage D.1 makes the agent's mental categorization
1777
+ visible: each intent gets a distinct color stripe running down the
1778
+ left edge of the card + a small corner ribbon at the top-left with
1779
+ the intent label. Some intents add subtle behavior (producing
1780
+ pulses; drafted emphasizes action buttons; reference desaturates).
1781
+
1782
+ No JS changes — purely a CSS layer on top of the existing
1783
+ .symframe-card-dynamic[data-intent="..."] hook. */
1784
+
1785
+ /* Base treatment shared across all intents: the left stripe is via
1786
+ inset box-shadow so it doesn't disturb the card's border-radius.
1787
+ The ribbon is via ::before pseudo-element at the top-left corner.
1788
+ Cards without data-intent (legacy / pre-Stage-A pushes) get neither. */
1789
+
1790
+ .symframe-card-dynamic[data-intent]::before {
1791
+ content: attr(data-intent);
1792
+ position: absolute;
1793
+ top: 0;
1794
+ left: 0;
1795
+ padding: 2px 8px 2px 6px;
1796
+ font-family: var(--font-mono);
1797
+ font-size: 8px;
1798
+ font-weight: 700;
1799
+ letter-spacing: 0.14em;
1800
+ text-transform: uppercase;
1801
+ background: rgba(0, 0, 0, 0.55);
1802
+ border-radius: 10px 0 6px 0;
1803
+ border-right: 1px solid currentColor;
1804
+ border-bottom: 1px solid currentColor;
1805
+ pointer-events: none;
1806
+ z-index: 2;
1807
+ opacity: 0.85;
1808
+ }
1809
+ /* Reset the base card-padding so the ribbon hugs the corner */
1810
+ .symframe-card-dynamic[data-intent] {
1811
+ /* Slight top padding so the ribbon doesn't crowd the title */
1812
+ padding-top: 22px;
1813
+ }
1814
+
1815
+ /* holding — cyan; working memory */
1816
+ .symframe-card-dynamic[data-intent="holding"] {
1817
+ box-shadow:
1818
+ inset 3px 0 0 0 rgba(0, 212, 255, 0.65),
1819
+ inset 0 1px 0 rgba(255, 255, 255, 0.04),
1820
+ 0 4px 12px rgba(0, 0, 0, 0.25);
1821
+ }
1822
+ .symframe-card-dynamic[data-intent="holding"]::before {
1823
+ color: var(--accent-cyan);
1824
+ }
1825
+
1826
+ /* weighing — amber; an option under consideration */
1827
+ .symframe-card-dynamic[data-intent="weighing"] {
1828
+ box-shadow:
1829
+ inset 3px 0 0 0 #f5b73a,
1830
+ inset 0 1px 0 rgba(255, 255, 255, 0.04),
1831
+ 0 4px 12px rgba(0, 0, 0, 0.25);
1832
+ }
1833
+ .symframe-card-dynamic[data-intent="weighing"]::before {
1834
+ color: #f5b73a;
1835
+ }
1836
+
1837
+ /* producing — green; actively drafting, slow pulse on the stripe */
1838
+ .symframe-card-dynamic[data-intent="producing"] {
1839
+ animation: intent-producing-pulse 2.6s ease-in-out infinite;
1840
+ }
1841
+ @keyframes intent-producing-pulse {
1842
+ 0%,
1843
+ 100% {
1844
+ box-shadow:
1845
+ inset 3px 0 0 0 rgba(52, 211, 153, 0.55),
1846
+ inset 0 1px 0 rgba(255, 255, 255, 0.04),
1847
+ 0 4px 12px rgba(0, 0, 0, 0.25);
1848
+ }
1849
+ 50% {
1850
+ box-shadow:
1851
+ inset 3px 0 0 0 rgba(52, 211, 153, 1),
1852
+ inset 0 1px 0 rgba(255, 255, 255, 0.04),
1853
+ 0 4px 12px rgba(0, 0, 0, 0.25),
1854
+ 0 0 14px rgba(52, 211, 153, 0.2);
1855
+ }
1856
+ }
1857
+ .symframe-card-dynamic[data-intent="producing"]::before {
1858
+ content: "● producing";
1859
+ color: #34d399;
1860
+ }
1861
+
1862
+ /* drafted — violet; finished artifact ready for user review */
1863
+ .symframe-card-dynamic[data-intent="drafted"] {
1864
+ box-shadow:
1865
+ inset 3px 0 0 0 #8b5cf6,
1866
+ inset 0 1px 0 rgba(255, 255, 255, 0.04),
1867
+ 0 4px 12px rgba(0, 0, 0, 0.25);
1868
+ }
1869
+ .symframe-card-dynamic[data-intent="drafted"]::before {
1870
+ color: #8b5cf6;
1871
+ }
1872
+ /* Emphasize action buttons on drafted cards — these cards exist to
1873
+ be acted on (Send / Copy / Open). Make the buttons more clickable. */
1874
+ .symframe-card-dynamic[data-intent="drafted"] .symframe-card-action {
1875
+ border-color: rgba(139, 92, 246, 0.55);
1876
+ color: var(--text);
1877
+ font-weight: 600;
1878
+ }
1879
+ .symframe-card-dynamic[data-intent="drafted"] .symframe-card-action:hover {
1880
+ background: rgba(139, 92, 246, 0.12);
1881
+ border-color: #8b5cf6;
1882
+ }
1883
+ .symframe-card-dynamic[data-intent="drafted"] .symframe-card-action-primary {
1884
+ background: rgba(139, 92, 246, 0.22);
1885
+ border-color: #8b5cf6;
1886
+ color: var(--text);
1887
+ }
1888
+ .symframe-card-dynamic[data-intent="drafted"] .symframe-card-action-primary:hover {
1889
+ background: rgba(139, 92, 246, 0.32);
1890
+ box-shadow: 0 0 10px rgba(139, 92, 246, 0.25);
1891
+ }
1892
+
1893
+ /* reference — muted gray; passive read-only context */
1894
+ .symframe-card-dynamic[data-intent="reference"] {
1895
+ box-shadow:
1896
+ inset 3px 0 0 0 rgba(255, 255, 255, 0.22),
1897
+ inset 0 1px 0 rgba(255, 255, 255, 0.04),
1898
+ 0 4px 12px rgba(0, 0, 0, 0.25);
1899
+ opacity: 0.88;
1900
+ filter: saturate(0.75);
1901
+ }
1902
+ .symframe-card-dynamic[data-intent="reference"]::before {
1903
+ color: var(--text-dim);
1904
+ }
1905
+
1906
+ /* awaiting — if a card is mistakenly pushed with this intent (it
1907
+ belongs in the AWAITING footer, not the foreground), flag with a
1908
+ pink stripe and a "→ footer" hint so the user/agent notices the
1909
+ miscategorization. */
1910
+ .symframe-card-dynamic[data-intent="awaiting"] {
1911
+ box-shadow:
1912
+ inset 3px 0 0 0 rgba(244, 114, 182, 0.55),
1913
+ inset 0 1px 0 rgba(255, 255, 255, 0.04),
1914
+ 0 4px 12px rgba(0, 0, 0, 0.25);
1915
+ }
1916
+ .symframe-card-dynamic[data-intent="awaiting"]::before {
1917
+ content: "awaiting → footer";
1918
+ color: rgba(244, 114, 182, 0.85);
1919
+ }
1920
+
1921
+ /* Reduced-motion: skip the producing pulse but keep the static
1922
+ green stripe so the intent is still visible. */
1923
+ @media (prefers-reduced-motion: reduce) {
1924
+ .symframe-card-dynamic[data-intent="producing"] {
1925
+ animation: none;
1926
+ box-shadow:
1927
+ inset 3px 0 0 0 rgba(52, 211, 153, 0.75),
1928
+ inset 0 1px 0 rgba(255, 255, 255, 0.04),
1929
+ 0 4px 12px rgba(0, 0, 0, 0.25);
1930
+ }
1931
+ }
1932
+
1659
1933
  /* ── Phase 4: type-specific body renderers ───────────────────────── */
1660
1934
 
1661
1935
  /* Text + markdown: inherit from .symframe-card-body. Add minimal
@@ -242,6 +242,19 @@
242
242
  <button type="button" class="mode-auto" id="mode-auto" hidden title="Release to agent">
243
243
  AUTO
244
244
  </button>
245
+ <!-- Stage E (3.5.28): "what are you considering?" — clicking -->
246
+ <!-- this dwells every weighing card and dims non-weighing cards -->
247
+ <!-- for ~5s. Direct visual answer to "what options is the agent -->
248
+ <!-- holding open right now?" -->
249
+ <button
250
+ type="button"
251
+ class="considering-btn"
252
+ id="considering-btn"
253
+ title="What are you considering? (highlights weighing cards)"
254
+ aria-label="Highlight weighing cards"
255
+ >
256
+
257
+ </button>
245
258
  </div>
246
259
  <div class="symframe-sub">window into the agent's mind</div>
247
260
  </div>
@@ -1029,5 +1042,6 @@
1029
1042
  <script src="js/symframe-substrate.js"></script>
1030
1043
  <script src="js/symframe-awaiting.js"></script>
1031
1044
  <script src="js/symframe-modes.js"></script>
1045
+ <script src="js/symframe-bidirectional.js"></script>
1032
1046
  </body>
1033
1047
  </html>