@symerian/symi 3.5.20 → 3.5.22

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 (257) hide show
  1. package/dist/{agent-D0Z4r5fr.js → agent-DgVWcnlD.js} +1 -1
  2. package/dist/{agent-DCDT-MPE.js → agent-NT0EKnK_.js} +18 -18
  3. package/dist/{agent-scope-DOrZjOnW.js → agent-scope-Bnsyyeci.js} +18 -18
  4. package/dist/{agents-CdkBeP0d.js → agents-Dlcpc1K3.js} +3 -3
  5. package/dist/{agents.config-B7sNDvhz.js → agents.config-DA0ISLi7.js} +1 -1
  6. package/dist/{audit-B7deV4Lp.js → audit-CPloCzEZ.js} +2 -2
  7. package/dist/{audit-BCStg-Hv.js → audit-CXIXYDRx.js} +20 -20
  8. package/dist/{auth-choice-BIGcxSzP.js → auth-choice--DymOp5O.js} +2 -2
  9. package/dist/{auth-choice-B3DU-aBr.js → auth-choice-BtXIQPTU.js} +11 -11
  10. package/dist/{auth-profiles-Ce7R_25e.js → auth-profiles-D5nYBj_Z.js} +2 -2
  11. package/dist/{auth-token-Cr28IDKY.js → auth-token-fgnCQEHT.js} +3 -3
  12. package/dist/{banner-ChNdzPjD.js → banner-CY_9VW7E.js} +1 -1
  13. package/dist/{browser-cli-C9xaKW8l.js → browser-cli-C5VVk6C9.js} +3 -3
  14. package/dist/{browser-cli-BTg8SVs-.js → browser-cli-DOTM7UBC.js} +9 -9
  15. package/dist/build-info.json +3 -3
  16. package/dist/bundled/boot-md/handler.js +2 -2
  17. package/dist/bundled/session-memory/handler.js +2 -2
  18. package/dist/{call-BccaLPi8.js → call-Bpjj5p7I.js} +9 -9
  19. package/dist/{call-DZg43vv8.js → call-C2urR5Fj.js} +1 -1
  20. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  21. package/dist/{channel-options-CUptVX8c.js → channel-options-XRJiHUm5.js} +1 -1
  22. package/dist/{channel-options-LLmAnD_L.js → channel-options-rFgJaKzJ.js} +1 -1
  23. package/dist/{channels-cli-xoromnio.js → channels-cli-CQ4M05oy.js} +57 -57
  24. package/dist/{channels-cli-B0OQvVUL.js → channels-cli-QMHCRAb5.js} +9 -9
  25. package/dist/{chrome-DJChpTwP.js → chrome-38OnGyuN.js} +2 -2
  26. package/dist/{chrome-3jl2ulOE.js → chrome-DNssqQJs.js} +7 -7
  27. package/dist/{cli-C7v-sID8.js → cli-B-uoiYP2.js} +45 -45
  28. package/dist/{cli-CMNR7ULk.js → cli-BafqEuaj.js} +6 -6
  29. package/dist/{client-k0MT6NBw.js → client-CTrfpKT3.js} +7 -2
  30. package/dist/{client-DCxeV1bw.js → client-yVTJ5jx5.js} +6 -1
  31. package/dist/{command-registry-CXcvXjUR.js → command-registry-CLm8TAH3.js} +11 -11
  32. package/dist/{commands-registry-Ca5hh7nh.js → commands-registry-CwXsDVuO.js} +1 -1
  33. package/dist/{completion-cli-DJ1YCeSg.js → completion-cli-Cn_81QBb.js} +12 -12
  34. package/dist/{completion-cli-B1Fg6Lmg.js → completion-cli-DOBXkVwG.js} +2 -2
  35. package/dist/{config-B4jkreCN.js → config-BngIfn5l.js} +2 -2
  36. package/dist/{config-cli-D5DlWt6T.js → config-cli-B1cPkJ4p.js} +4 -4
  37. package/dist/{config-cli-CQ1FAvY_.js → config-cli-BgHYqFH1.js} +1 -1
  38. package/dist/{config-guard-BRm3RiOi.js → config-guard-DStz4_V2.js} +6 -6
  39. package/dist/{config-validation-Cdyg1BZB.js → config-validation-Dxj9LRzr.js} +1 -1
  40. package/dist/{configure-bhJB2Dti.js → configure-C7zmSgvC.js} +14 -14
  41. package/dist/{configure-DG1lf0Ld.js → configure-DmzM0S7L.js} +6 -6
  42. package/dist/{consolidate-DymnvvYm.js → consolidate-CO32_TEx.js} +6 -6
  43. package/dist/{control-service-D8kKOts5.js → control-service-CUreKVeY.js} +4 -4
  44. package/dist/control-ui/css/style.css +281 -0
  45. package/dist/control-ui/index.html +45 -115
  46. package/dist/control-ui/js/scheduling.js +85 -224
  47. package/dist/control-ui/js/subagents.js +78 -394
  48. package/dist/control-ui/js/symframe-awaiting.js +306 -0
  49. package/dist/control-ui/js/symframe-pin-store.js +104 -0
  50. package/dist/control-ui/js/symframe-substrate.js +11 -7
  51. package/dist/control-ui/js/symframe.js +250 -30
  52. package/dist/{control-ui-assets-CJQ97d4u.js → control-ui-assets-B8B9z_Ll.js} +1 -1
  53. package/dist/{cost-cli-DWiVCOCx.js → cost-cli-D-ssjcRF.js} +3 -3
  54. package/dist/{cron-cli-8RaBr1CM.js → cron-cli-BNBs3zue.js} +3 -3
  55. package/dist/{cron-cli-fW3wtftG.js → cron-cli-otPeKxmi.js} +7 -7
  56. package/dist/{daemon-cli-Y6clFgva.js → daemon-cli-DDqeG2nd.js} +2 -2
  57. package/dist/{daemon-cli-0EiZTQ2A.js → daemon-cli-qDdMg615.js} +11 -11
  58. package/dist/daemon-cli.js +6 -1
  59. package/dist/{daemon-runtime-DlQla_dA.js → daemon-runtime-CKn0wmCk.js} +10 -10
  60. package/dist/{deliver-lTZLIQqf.js → deliver-CWMFmMCv.js} +2 -2
  61. package/dist/{deliver-f3cIWxXT.js → deliver-q23ar_Pm.js} +4 -4
  62. package/dist/{deps-Bf9dt2UO.js → deps-CdibsPMx.js} +1 -1
  63. package/dist/{devices-cli-C2gQTsB0.js → devices-cli-BJ3rVWOw.js} +2 -2
  64. package/dist/{devices-cli-DfiSkZ7k.js → devices-cli-DDPwF2Nx.js} +6 -6
  65. package/dist/{diagnostics-DlZODdRf.js → diagnostics-CYkqD5lP.js} +5 -5
  66. package/dist/{directory-cli-Bm5QYEo-.js → directory-cli-giqTe8Yg.js} +3 -3
  67. package/dist/{dm-policy-shared-CeFt0nch.js → dm-policy-shared-B61_yf6G.js} +1 -1
  68. package/dist/{dns-cli-CubLq4j9.js → dns-cli-Dssz4RqF.js} +3 -3
  69. package/dist/{docs-cli-PS8m1er7.js → docs-cli-Ct1STieY.js} +1 -1
  70. package/dist/{doctor-completion-CfF0J8fs.js → doctor-completion-CL7MyXlo.js} +2 -2
  71. package/dist/{doctor-completion-ScxFfN93.js → doctor-completion-k0HiL05o.js} +1 -1
  72. package/dist/{doctor-config-flow-C52W1uUK.js → doctor-config-flow-ljVnQJjo.js} +9 -9
  73. package/dist/entry.js +1 -1
  74. package/dist/{exec-approvals-cli-Cl-vWA1q.js → exec-approvals-cli-Cau1vPQI.js} +4 -4
  75. package/dist/{exec-approvals-cli-BaKWIf56.js → exec-approvals-cli-DsBoQu5H.js} +13 -13
  76. package/dist/extensionAPI.js +4 -4
  77. package/dist/{file-lock-BVUYnlQv.js → file-lock-2AecMjCa.js} +8 -8
  78. package/dist/{fs-safe-BdejYjW8.js → fs-safe-B0Is-oLk.js} +6 -6
  79. package/dist/{gateway-cli-kq5EWlnF.js → gateway-cli-DG_2YZ8B.js} +98 -98
  80. package/dist/{gateway-cli-CK-5nguV.js → gateway-cli-DgmGygc6.js} +16 -16
  81. package/dist/{gateway-rpc-Bzg_TTKP.js → gateway-rpc-Kv0-8W2E.js} +1 -1
  82. package/dist/{gateway-rpc-D12UaJS5.js → gateway-rpc-gaoD882s.js} +1 -1
  83. package/dist/{glass-ui-ws-B6p0iPsO.js → glass-ui-ws-Bof7krDJ.js} +67 -67
  84. package/dist/{glass-ui-ws-CVr0_1gT.js → glass-ui-ws-Dl45d7eU.js} +13 -13
  85. package/dist/{health-CPU9rQGj.js → health-CMbUI4aN.js} +4 -4
  86. package/dist/{health-CJb2CYtg.js → health-znS85U-F.js} +1 -1
  87. package/dist/{hooks-cli-DbgVZaP4.js → hooks-cli-Cb9BzCOY.js} +7 -7
  88. package/dist/{hooks-cli-13HCu5Xs.js → hooks-cli-Cgjor7F-.js} +59 -59
  89. package/dist/{image-ops-L70xVnpG.js → image-ops-BzCBIakN.js} +10 -10
  90. package/dist/index.js +52 -52
  91. package/dist/{inspect-CGKsaVZ4.js → inspect-DzYUb_Dl.js} +4 -4
  92. package/dist/{install-safe-path-B2JrFspY.js → install-safe-path-BrpA09f2.js} +11 -11
  93. package/dist/{installs-D890uIIW.js → installs-bnDlOSq2.js} +10 -10
  94. package/dist/{internal-DVCddhhN.js → internal-csqU78gW.js} +9 -9
  95. package/dist/{lifecycle-core-wFwnK_mD.js → lifecycle-core-cSR_xiIO.js} +5 -5
  96. package/dist/llm-slug-generator.js +2 -2
  97. package/dist/{local-roots-CgDCgCuM.js → local-roots-2Jb79HZ8.js} +1 -1
  98. package/dist/{logs-cli-R16VTptK.js → logs-cli-Kr145PO_.js} +7 -7
  99. package/dist/{logs-cli-CQeK5fn7.js → logs-cli-LiAjkog2.js} +3 -3
  100. package/dist/{manager-CxFs8Z_F.js → manager-CceVgXHV.js} +1 -1
  101. package/dist/{manager-B2SWSuad.js → manager-DDynl084.js} +1 -1
  102. package/dist/{manager-CHLdCC6u.js → manager-DG6PODgu.js} +15 -15
  103. package/dist/{manager-LPPGAsqn.js → manager-qrAOWmHt.js} +1 -1
  104. package/dist/{memory-DFpqcIst.js → memory-A2D5e8dL.js} +2 -2
  105. package/dist/{memory-DavRjdTi.js → memory-BFnx3v3_.js} +5 -5
  106. package/dist/{memory-cli-DZnq3S6s.js → memory-cli-1zjVJITN.js} +2 -2
  107. package/dist/{memory-cli-B-Cp1Sb1.js → memory-cli-CHNghdrm.js} +12 -12
  108. package/dist/{model-MUMSB_7d.js → model-Cwbcw-km.js} +1 -1
  109. package/dist/{model-auth-1EAQvYRv.js → model-auth-_C07_3Yr.js} +2 -2
  110. package/dist/{model-catalog-IWi6-nY9.js → model-catalog-BWurV7gl.js} +3 -3
  111. package/dist/{model-picker-Cf6UgQEh.js → model-picker-Dpkr5xBW.js} +5 -5
  112. package/dist/{model-selection-7wdmO-Iw.js → model-selection-CCTzD29o.js} +1 -1
  113. package/dist/{models-Cht7Mzvs.js → models-BYev6YAG.js} +3 -3
  114. package/dist/{models-cli-B_motPDX.js → models-cli-BbK8HMKa.js} +55 -55
  115. package/dist/{models-cli-DXswzgUR.js → models-cli-Fa5r1QYP.js} +9 -9
  116. package/dist/{models-config-B5Xxy-c-.js → models-config-DlXge3Sd.js} +8 -8
  117. package/dist/{node-cli-D-gsjRXY.js → node-cli-BPnBosC4.js} +27 -27
  118. package/dist/{node-cli-VmKhIXuP.js → node-cli-Cv7x1gGu.js} +1 -1
  119. package/dist/{node-service-BH08wY5j.js → node-service-Cc18m-uk.js} +1 -1
  120. package/dist/{nodes-cli-BMvxQGCp.js → nodes-cli-CN_m6PO5.js} +10 -10
  121. package/dist/{nodes-cli-D199d74o.js → nodes-cli-DaHOBbd4.js} +3 -3
  122. package/dist/{nodes-screen-De9ma6e1.js → nodes-screen-Cp5QP3ET.js} +4 -4
  123. package/dist/{npm-registry-spec-DTqn-NXZ.js → npm-registry-spec-C-muP97-.js} +9 -9
  124. package/dist/{onboard-DFJcbABp.js → onboard-B2IcTMv-.js} +15 -15
  125. package/dist/{onboard-CdRA8BRG.js → onboard-D-m6WTZl.js} +3 -3
  126. package/dist/{onboard-channels-fadyQGBK.js → onboard-channels-Z-Jkrk5-.js} +1 -1
  127. package/dist/{onboard-channels-Ca7ZFQ2Y.js → onboard-channels-wfGO5Zlh.js} +4 -4
  128. package/dist/{onboard-custom-BcRYreNG.js → onboard-custom-DnDrvxSg.js} +3 -3
  129. package/dist/{onboard-helpers-CQBpac8h.js → onboard-helpers-BKejzolA.js} +8 -8
  130. package/dist/{onboard-helpers-BcLPSb5N.js → onboard-helpers-Dhr98nj8.js} +1 -1
  131. package/dist/{onboard-hooks-2SCajRKc.js → onboard-hooks-D9jHwImb.js} +1 -1
  132. package/dist/{onboard-remote-Bo3tpC9N.js → onboard-remote-DZdMxd1Q.js} +1 -1
  133. package/dist/{onboard-remote-BWK5Ths4.js → onboard-remote-y3ZmP90U.js} +1 -1
  134. package/dist/{onboard-skills-BLl8HPJO.js → onboard-skills-2SUv-W7i.js} +1 -1
  135. package/dist/{onboard-skills-DvacccqZ.js → onboard-skills-BFhHfrt9.js} +3 -3
  136. package/dist/{onboarding-ojb2rFkA.js → onboarding-BckHLQMV.js} +7 -7
  137. package/dist/{onboarding-BywueA1d.js → onboarding-DqlPV372.js} +12 -12
  138. package/dist/{onboarding.finalize-DdxBQpUU.js → onboarding.finalize-Bwjv3jew.js} +31 -31
  139. package/dist/{onboarding.finalize-DHvlZi9G.js → onboarding.finalize-CbH_ShIW.js} +9 -9
  140. package/dist/{onboarding.gateway-config-DPBNWNV6.js → onboarding.gateway-config-CiRo9EMt.js} +8 -8
  141. package/dist/{onboarding.gateway-config-ZK9517uR.js → onboarding.gateway-config-sNSeEykB.js} +3 -3
  142. package/dist/{openai-model-default-BkuuK-Di.js → openai-model-default-De-UAjwg.js} +2 -2
  143. package/dist/{pairing-cli-Rsae0KnN.js → pairing-cli-CBMMCNnx.js} +5 -5
  144. package/dist/{pairing-store-BNhJOnWn.js → pairing-store-Be-ZQK87.js} +1 -1
  145. package/dist/{pairing-token-Dcy37-4s.js → pairing-token-B703A1U3.js} +7 -7
  146. package/dist/{paths-DObzwe08.js → paths-BWqg8NZT.js} +1 -1
  147. package/dist/{pi-auth-json-Db8XJVGL.js → pi-auth-json-D-vdh-nY.js} +6 -6
  148. package/dist/{pi-embedded-Da0QRlM0.js → pi-embedded-CviuByGd.js} +32 -16
  149. package/dist/{pi-embedded-helpers-D-OFjhdI.js → pi-embedded-helpers-j1JrlsI0.js} +6 -6
  150. package/dist/{pi-tools.policy-H2t-Xkfc.js → pi-tools.policy-CvAqjEH9.js} +3 -3
  151. package/dist/{plugin-auto-enable-DJBhDIMq.js → plugin-auto-enable-BXSJTxI7.js} +1 -1
  152. package/dist/{plugin-registry-tG7NXc3Y.js → plugin-registry-B43UosQh.js} +3 -3
  153. package/dist/{plugin-registry-Tlmjr-LX.js → plugin-registry-CS4WgHbu.js} +1 -1
  154. package/dist/plugin-sdk/gateway/protocol/schema/logs-chat.d.ts +1 -1
  155. package/dist/plugin-sdk/infra/symframe-broadcast.d.ts +18 -6
  156. package/dist/{plugins-cli-CRKD8aho.js → plugins-cli-BV2wbjfI.js} +54 -54
  157. package/dist/{plugins-cli-Cm0G_-Y5.js → plugins-cli-BY42hyHP.js} +7 -7
  158. package/dist/{ports-r7LBic2V.js → ports-Bi3V_3n9.js} +1 -1
  159. package/dist/{ports-gxLM5ahL.js → ports-CB_Iu83U.js} +2 -2
  160. package/dist/{program-DEmAlwmD.js → program-P9F1DxBa.js} +12 -12
  161. package/dist/{program-context-DRCRbDpu.js → program-context-BmXxHUKe.js} +40 -40
  162. package/dist/{prompt-select-styled-pomsR-zf.js → prompt-select-styled-B2ah467m.js} +7 -7
  163. package/dist/{prompt-select-styled-B41Tx9aC.js → prompt-select-styled-BlQZX6pK.js} +38 -38
  164. package/dist/{provider-auth-helpers-rKWs_r7a.js → provider-auth-helpers-Bgb_Bfp9.js} +1 -1
  165. package/dist/{provider-auth-helpers-CdQwOam7.js → provider-auth-helpers-WLwb6tL4.js} +6 -6
  166. package/dist/{push-apns-eCM0qmrY.js → push-apns-CBGvXev_.js} +4 -4
  167. package/dist/{push-apns-CZPUHftn.js → push-apns-DnSCjFu7.js} +1 -1
  168. package/dist/{pw-ai-BiBvIJzd.js → pw-ai-CP5pn3eU.js} +7 -7
  169. package/dist/{pw-ai-DOAsQ5NX.js → pw-ai-v__CyAlM.js} +1 -1
  170. package/dist/{qmd-manager-C8-M4Pru.js → qmd-manager-Dxyue7B1.js} +19 -19
  171. package/dist/{qr-cli-1sCVaPcF.js → qr-cli-DHw6muwK.js} +3 -3
  172. package/dist/{register.agent-BQPvYYdn.js → register.agent-BuEcmVg0.js} +12 -12
  173. package/dist/{register.agent-N1hoqMFR.js → register.agent-CXdTiqyP.js} +67 -67
  174. package/dist/{register.configure-BHHZ44xB.js → register.configure-DVcn-gCO.js} +70 -70
  175. package/dist/{register.configure-BAc3P4Z-.js → register.configure-YDKJ-KQg.js} +14 -14
  176. package/dist/{register.maintenance-lX0a3Hzl.js → register.maintenance-BiGvpEj-.js} +13 -13
  177. package/dist/{register.maintenance-DDgy5Iyy.js → register.maintenance-cpspl8D6.js} +67 -67
  178. package/dist/{register.message-Br-IH_0z.js → register.message-BIuLbESM.js} +7 -7
  179. package/dist/{register.message-B4lDhHpE.js → register.message-BjcYy5UG.js} +47 -47
  180. package/dist/{register.onboard-B-GoYJIc.js → register.onboard-C4vIASed.js} +6 -6
  181. package/dist/{register.onboard-Bv0s2_KV.js → register.onboard-D4RN92s2.js} +25 -25
  182. package/dist/{register.setup-DQ6KLkAI.js → register.setup-BvoXF0xl.js} +28 -28
  183. package/dist/{register.setup-4lNdC98i.js → register.setup-D-Jt2e1d.js} +6 -6
  184. package/dist/{register.status-health-sessions-Cg7bK5K2.js → register.status-health-sessions-BY9hMD1s.js} +8 -8
  185. package/dist/{register.status-health-sessions-ByGn71_M.js → register.status-health-sessions-DjDvCXBn.js} +41 -41
  186. package/dist/{register.subclis-FMlcLBX0.js → register.subclis-Cibmeapc.js} +20 -20
  187. package/dist/{replies-CbXXjn9X.js → replies-B_3j7R_Q.js} +1 -1
  188. package/dist/{reply-prefix-BFNeXT65.js → reply-prefix-CtZtkTJK.js} +1 -1
  189. package/dist/{resolve-route-C1IIA6kH.js → resolve-route-Du0VftVs.js} +1 -1
  190. package/dist/{routes-ivqbutvM.js → routes-BwTUoI5h.js} +10 -10
  191. package/dist/{rpc-Dk1Az_d8.js → rpc-BnAKPQDB.js} +1 -1
  192. package/dist/{rpc-JAmDaTYt.js → rpc-CwxSZZOx.js} +1 -1
  193. package/dist/{run-main-DSyeVDsT.js → run-main-BhEQjKtM.js} +20 -20
  194. package/dist/{sandbox-BkznAPKO.js → sandbox-CZGTCone.js} +18 -18
  195. package/dist/{sandbox-cli-Bb9cBtBH.js → sandbox-cli-DEtGT_4y.js} +13 -13
  196. package/dist/{security-cli-DmgGLP83.js → security-cli-CS-ZT1LE.js} +3 -3
  197. package/dist/{security-cli-D47LQbpf.js → security-cli-DJd7Fcdy.js} +29 -29
  198. package/dist/{send-B0jHSNMF.js → send-CxjvucMO.js} +7 -7
  199. package/dist/{server-context-ChcbJgNo.js → server-context-DXdk410X.js} +5 -5
  200. package/dist/{server-methods-DGBBt49x.js → server-methods-CWxr5b-w.js} +19 -13
  201. package/dist/{server-methods-BkHB2MOW.js → server-methods-DfVfzYqq.js} +68 -62
  202. package/dist/{server-node-events-C186LRm0.js → server-node-events-B0yC6hi1.js} +48 -48
  203. package/dist/{server-node-events-D-Akk3uq.js → server-node-events-ClDEcUTJ.js} +8 -8
  204. package/dist/{service-e6MzlLCd.js → service-CRZoXO_n.js} +15 -15
  205. package/dist/{session-dirs-C9E2G0yZ.js → session-dirs-a00Ad2SO.js} +2 -2
  206. package/dist/{session-utils-Cs1jlD-q.js → session-utils-CJhcRx3E.js} +14 -14
  207. package/dist/{sessions-Dxf5Kjig.js → sessions-BCc3THTm.js} +10 -10
  208. package/dist/{shared-1xPo9ygd.js → shared-C39SiDDJ.js} +1 -1
  209. package/dist/{shared-COtpr3Ad.js → shared-Dh-O8nRd.js} +3 -3
  210. package/dist/{skill-commands-DDGGlq68.js → skill-commands-DWvXs3lz.js} +4 -4
  211. package/dist/{skill-scanner-BCgVcIwi.js → skill-scanner-CIlHPszT.js} +5 -5
  212. package/dist/{skills-BwDmcZdt.js → skills-CYcBtLGH.js} +4 -4
  213. package/dist/{skills-cli-B-7TY-vS.js → skills-cli-CD9s3cgm.js} +7 -7
  214. package/dist/{skills-install-Dwzsjoc8.js → skills-install-BTa9IuQ6.js} +3 -3
  215. package/dist/{skills-remote-bz71Bstn.js → skills-remote-BcRQTDsZ.js} +3 -3
  216. package/dist/{skills-status-BKX1PjCc.js → skills-status-DLnCHUZ2.js} +1 -1
  217. package/dist/{sqlite-Cod7C5ba.js → sqlite-BpogPlQW.js} +5 -5
  218. package/dist/{status-CFgCSaDq.js → status-BWxLtb3D.js} +23 -23
  219. package/dist/{status-poPDyC8O.js → status-Doq8T1zj.js} +3 -3
  220. package/dist/{status-Bahhq7OQ.js → status-K1k4g3Ai.js} +1 -1
  221. package/dist/{status-D9LC5P_Y.js → status-ojZB_Lrf.js} +5 -5
  222. package/dist/{status.update-DGJi0OLl.js → status.update-CKfyV6zw.js} +3 -3
  223. package/dist/{subagent-registry-V2o45tIn.js → subagent-registry-BOt7g9hn.js} +21 -10
  224. package/dist/{symframe-cli-bxdpivve.js → symframe-cli-CrUtJw_7.js} +31 -7
  225. package/dist/{symframe-cli-ppdMo15M.js → symframe-cli-D1CtN3pf.js} +37 -13
  226. package/dist/{symi-root-BQ0IpoW2.js → symi-root-DeCVdZB4.js} +2 -2
  227. package/dist/{synthesis-B2EyHFXy.js → synthesis-BIQLrbys.js} +6 -6
  228. package/dist/{synthesis-C2WbvLOI.js → synthesis-D91XE0n4.js} +2 -2
  229. package/dist/{synthesis-DGau1ONT.js → synthesis-DuP2d469.js} +4 -4
  230. package/dist/{synthesis-CPSq83PP.js → synthesis-VZNnlUTf.js} +45 -45
  231. package/dist/{system-cli-nPyjUPBH.js → system-cli-CvN-Wq9U.js} +3 -3
  232. package/dist/{system-cli-BroqLjZ6.js → system-cli-r7WJj0Xh.js} +7 -7
  233. package/dist/{systemd-CUIM0n5P.js → systemd-CsoVnIbM.js} +5 -5
  234. package/dist/{systemd-hints-CsrzMCTD.js → systemd-hints-QISwLlFU.js} +6 -6
  235. package/dist/{systemd-linger-BzYk7A6M.js → systemd-linger-BnhuRdbt.js} +1 -1
  236. package/dist/{tui-Bp9k5skv.js → tui-BxgdImL_.js} +2 -2
  237. package/dist/{tui-DzROrE20.js → tui-J7Jxp-FF.js} +7 -7
  238. package/dist/{tui-cli-BHBF8O-3.js → tui-cli-DR48dU_C.js} +19 -19
  239. package/dist/{tui-cli-Dv4hBFdc.js → tui-cli-DqvgN5ng.js} +3 -3
  240. package/dist/{unified-runner-CIQIkbvi.js → unified-runner-CdJx7yN8.js} +25 -9
  241. package/dist/{unified-runner-CduaBH_0.js → unified-runner-DXjH-prv.js} +117 -106
  242. package/dist/{update-yYduAjKd.js → update-Cb0Fmxic.js} +3 -3
  243. package/dist/{update-check-BCL_K7kx.js → update-check-u6Jgr1cz.js} +5 -5
  244. package/dist/{update-cli-WcLxjBiY.js → update-cli-CKpjWtlv.js} +77 -77
  245. package/dist/{update-cli-BKnHBe8a.js → update-cli-Dn6QQZLd.js} +14 -14
  246. package/dist/{update-runner-BLV8SI96.js → update-runner-G2YgEATs.js} +15 -15
  247. package/dist/{webhooks-cli-D5k-Y2A8.js → webhooks-cli-DjUITimx.js} +4 -4
  248. package/dist/{with-timeout-DPR4A2dx.js → with-timeout-CLrF-Yr_.js} +1 -1
  249. package/dist/{workspace-dirs-jKFQf7of.js → workspace-dirs-DCICLTHx.js} +1 -1
  250. package/dist/{wsl-CglTdtlb.js → wsl-DTi7eX-V.js} +2 -2
  251. package/extensions/memory-core/package.json +1 -1
  252. package/extensions/msteams/CHANGELOG.md +12 -0
  253. package/extensions/msteams/package.json +1 -1
  254. package/extensions/open-prose/package.json +1 -1
  255. package/extensions/outlook/package.json +1 -1
  256. package/extensions/slack/package.json +1 -1
  257. package/package.json +1 -1
@@ -60,7 +60,13 @@
60
60
  return;
61
61
  }
62
62
  const total = cards.size;
63
- countEl.textContent = total === 1 ? "1 card" : `${total} cards`;
63
+ // Stage C.1: blank when no cards (the static "2 cards" default
64
+ // was confusing post-Stage-B/C when the panel often has 0 cards).
65
+ if (total === 0) {
66
+ countEl.textContent = "";
67
+ } else {
68
+ countEl.textContent = total === 1 ? "1 card" : `${total} cards`;
69
+ }
64
70
  }
65
71
 
66
72
  // ── Per-type body renderers ──
@@ -358,7 +364,21 @@
358
364
  const titleSpan = document.createElement("span");
359
365
  titleSpan.textContent = card.title || "";
360
366
  header.appendChild(titleSpan);
361
- if (card.dismissable && !card.sticky) {
367
+ // Stage C: pin glyph for pinned cards. Click toggles unpin.
368
+ if (card.pinned) {
369
+ const pinGlyph = document.createElement("button");
370
+ pinGlyph.className = "symframe-card-pin";
371
+ pinGlyph.type = "button";
372
+ pinGlyph.setAttribute("aria-label", "Unpin");
373
+ pinGlyph.title = "Pinned — click to unpin";
374
+ pinGlyph.textContent = "📌";
375
+ pinGlyph.addEventListener("click", (e) => {
376
+ e.preventDefault();
377
+ e.stopPropagation();
378
+ unpin(card.id);
379
+ });
380
+ header.appendChild(pinGlyph);
381
+ } else if (card.dismissable && !card.sticky) {
362
382
  const dismiss = document.createElement("button");
363
383
  dismiss.className = "symframe-card-dismiss";
364
384
  dismiss.type = "button";
@@ -535,6 +555,12 @@
535
555
  * Remove a card from the registry + DOM. Sticky cards refuse removal
536
556
  * unless force=true is passed (defensive — the system panels really
537
557
  * shouldn't disappear via stray API calls).
558
+ *
559
+ * Stage C: pinned cards behave like sticky for the user-side dismiss
560
+ * button (× hidden in the header) but `remove` still drops them when
561
+ * called — the pin survives in localStorage and the card re-appears
562
+ * on the next reload. To actually drop a pinned card permanently,
563
+ * the agent / user must unpin first.
538
564
  */
539
565
  function remove(id, force = false) {
540
566
  const entry = cards.get(id);
@@ -553,40 +579,205 @@
553
579
  return true;
554
580
  }
555
581
 
556
- /** Snapshot of all registered cards. */
557
- function list() {
558
- return Array.from(cards.values());
582
+ // ── Stage C: dwell / release / recall / pin / unpin ────────────────
583
+ // The CRUD vocabulary (add/update/remove) treats the panel as a
584
+ // notification list. These verbs treat it as a mind-window: cards
585
+ // can be foregrounded ("dwell"), softly let go of ("release"),
586
+ // brought back ("recall"), or persisted across sessions ("pin").
587
+
588
+ const RECENTLY_RELEASED_MAX = 10;
589
+ /** @type {Array<{id:string, card:object, releasedAt:number}>} */
590
+ const recentlyReleased = [];
591
+
592
+ /**
593
+ * Pull a card to the top of the stack with a brief cyan border pulse.
594
+ * Implementation: prepend the element (newest-first stack order
595
+ * normally has it there if it was just added, but for older cards
596
+ * this lifts them up), then add a `dwelling` class for a 600ms
597
+ * CSS pulse animation. Sticky cards aren't reordered (they live at
598
+ * the anchored end of the stack by design).
599
+ */
600
+ function dwell(id) {
601
+ const entry = cards.get(id);
602
+ if (!entry) {
603
+ console.warn(`[symframe] dwell: unknown id ${id}`);
604
+ return false;
605
+ }
606
+ if (!entry.element) {
607
+ console.warn(`[symframe] dwell: card ${id} has no element`);
608
+ return false;
609
+ }
610
+ if (!entry.sticky) {
611
+ // Re-prepend to bring to top of ephemeral stack.
612
+ container.prepend(entry.element);
613
+ }
614
+ entry.element.classList.remove("symframe-dwelling");
615
+ // Re-flow so the animation restarts even on repeated dwell calls.
616
+ void entry.element.offsetWidth;
617
+ entry.element.classList.add("symframe-dwelling");
618
+ setTimeout(() => entry.element?.classList.remove("symframe-dwelling"), 700);
619
+ return true;
559
620
  }
560
621
 
561
- // Auto-register the sticky panels that already live in the DOM. The
562
- // existing JS for each panel (subagents.js, scheduling.js) keeps
563
- // targeting them by id and is unaffected.
564
- // Stage B (3.5.20): reasoning was removed from this list its DOM
565
- // block is gone; reasoning content now flows to #symframe-substrate
566
- // (see glass-ui/js/symframe-substrate.js).
567
- const KNOWN_STICKY = [
568
- { id: "subagents", elementId: "subagents-panel", title: "SUBAGENTS", type: "panel-subagents" },
569
- {
570
- id: "scheduling",
571
- elementId: "scheduling-panel",
572
- title: "SCHEDULING",
573
- type: "panel-scheduling",
574
- },
575
- ];
576
- for (const known of KNOWN_STICKY) {
577
- const el = document.getElementById(known.elementId);
622
+ /**
623
+ * Soft-dismiss a card. Animated fade + scale; on animation end the
624
+ * element is removed from the registry and DOM. Unlike `remove`,
625
+ * `release` records the card in a session ring buffer so `recall(id)`
626
+ * can bring it back. Sticky cards refuse release without force=true.
627
+ */
628
+ function release(id, force = false) {
629
+ const entry = cards.get(id);
630
+ if (!entry) {
631
+ return false;
632
+ }
633
+ if (entry.sticky && !force) {
634
+ console.warn(`[symframe] release: refusing sticky card '${id}' without force=true`);
635
+ return false;
636
+ }
637
+ // Snapshot for recall (strip the live DOM element)
638
+ const snapshot = { ...entry };
639
+ delete snapshot.element;
640
+ recentlyReleased.unshift({
641
+ id,
642
+ card: snapshot,
643
+ releasedAt: Date.now(),
644
+ });
645
+ if (recentlyReleased.length > RECENTLY_RELEASED_MAX) {
646
+ recentlyReleased.length = RECENTLY_RELEASED_MAX;
647
+ }
648
+ // Animate then drop
649
+ const el = entry.element;
578
650
  if (el) {
579
- register({
580
- id: known.id,
581
- type: known.type,
582
- title: known.title,
583
- sticky: true,
584
- element: el,
585
- });
651
+ el.classList.add("symframe-releasing");
652
+ const cleanup = () => {
653
+ cards.delete(id);
654
+ if (el.parentElement === container) {
655
+ el.remove();
656
+ }
657
+ updateCount();
658
+ };
659
+ // Fail-safe: drop after the CSS transition window even if the
660
+ // transitionend event doesn't fire (browser bug, reduced motion).
661
+ const handle = setTimeout(cleanup, 900);
662
+ el.addEventListener(
663
+ "transitionend",
664
+ () => {
665
+ clearTimeout(handle);
666
+ cleanup();
667
+ },
668
+ { once: true },
669
+ );
670
+ } else {
671
+ cards.delete(id);
672
+ updateCount();
673
+ }
674
+ return true;
675
+ }
676
+
677
+ /**
678
+ * Re-summon a recently-released card from the session ring buffer.
679
+ * Calling `recall(id)` without an id recalls the most-recent release.
680
+ * If the id isn't in the buffer or the card already exists, no-op.
681
+ */
682
+ function recall(id) {
683
+ const recordIdx = id
684
+ ? recentlyReleased.findIndex((r) => r.id === id)
685
+ : recentlyReleased.length > 0
686
+ ? 0
687
+ : -1;
688
+ if (recordIdx < 0) {
689
+ console.warn(`[symframe] recall: nothing to recall${id ? ` for id ${id}` : ""}`);
690
+ return false;
691
+ }
692
+ const [record] = recentlyReleased.splice(recordIdx, 1);
693
+ if (cards.has(record.id)) {
694
+ // Already restored elsewhere — no-op.
695
+ return false;
696
+ }
697
+ add(record.card);
698
+ return true;
699
+ }
700
+
701
+ /** Snapshot of recently-released cards (most-recent first). */
702
+ function listRecentlyReleased() {
703
+ return recentlyReleased.slice();
704
+ }
705
+
706
+ /**
707
+ * Pin a card to localStorage so it survives reload + /new. Idempotent
708
+ * on id. The card is marked `pinned: true` so the dismiss button is
709
+ * hidden. Calling pin on an unknown id is a no-op.
710
+ */
711
+ function pin(id) {
712
+ const entry = cards.get(id);
713
+ if (!entry) {
714
+ console.warn(`[symframe] pin: unknown id ${id}`);
715
+ return false;
716
+ }
717
+ if (typeof window.symframePinStore?.pin !== "function") {
718
+ console.warn("[symframe] pin: pin-store unavailable");
719
+ return false;
586
720
  }
721
+ const snapshot = { ...entry };
722
+ delete snapshot.element;
723
+ snapshot.pinned = true;
724
+ snapshot.dismissable = false;
725
+ window.symframePinStore.pin(snapshot);
726
+ // Update live entry so the chrome reflects the pin (no dismiss btn,
727
+ // pin glyph in header).
728
+ entry.pinned = true;
729
+ entry.dismissable = false;
730
+ if (entry.element) {
731
+ const newEl = renderCardElement(entry);
732
+ entry.element.replaceWith(newEl);
733
+ entry.element = newEl;
734
+ }
735
+ return true;
587
736
  }
588
737
 
589
- window.symframe = { add, update, remove, list, register };
738
+ /** Inverse of pin. Removes from localStorage; does NOT drop the card. */
739
+ function unpin(id) {
740
+ const entry = cards.get(id);
741
+ if (typeof window.symframePinStore?.unpin === "function") {
742
+ window.symframePinStore.unpin(id);
743
+ }
744
+ if (entry) {
745
+ entry.pinned = false;
746
+ entry.dismissable = true;
747
+ if (entry.element) {
748
+ const newEl = renderCardElement(entry);
749
+ entry.element.replaceWith(newEl);
750
+ entry.element = newEl;
751
+ }
752
+ }
753
+ return true;
754
+ }
755
+
756
+ /** Snapshot of all registered cards. */
757
+ function list() {
758
+ return Array.from(cards.values());
759
+ }
760
+
761
+ // Sticky-panel auto-registration was removed in Stage C (3.5.21):
762
+ // SUBAGENTS and SCHEDULING moved to the AWAITING footer, and REASONING
763
+ // became the substrate in Stage B (3.5.20). The `register()` API
764
+ // remains exposed via window.symframe.register for any future caller
765
+ // that wants to track a non-registry-managed DOM element as a card.
766
+
767
+ window.symframe = {
768
+ add,
769
+ update,
770
+ remove,
771
+ list,
772
+ register,
773
+ // Stage C — attention verbs
774
+ dwell,
775
+ release,
776
+ recall,
777
+ pin,
778
+ unpin,
779
+ listRecentlyReleased,
780
+ };
590
781
 
591
782
  // Phase 3: server-pushed cards. The gateway's `symframe` broadcast is
592
783
  // re-emitted as a window-level CustomEvent by gateway.js — subscribe
@@ -594,6 +785,8 @@
594
785
  // chat.symframe.push RPC: { action, id?, card?, force? }.
595
786
  // Stage A: `force` flows through to update/remove so the agent (via
596
787
  // display_artifact) and the CLI can override the sticky-card guard.
788
+ // Stage C: new verbs (dwell / release / recall / pin / unpin) route
789
+ // alongside the existing CRUD trio.
597
790
  window.addEventListener("symi:symframe", (e) => {
598
791
  const payload = e.detail;
599
792
  if (!payload || typeof payload !== "object") {
@@ -606,6 +799,33 @@
606
799
  update(payload.id, payload.card, force);
607
800
  } else if (payload.action === "remove" && payload.id) {
608
801
  remove(payload.id, force);
802
+ } else if (payload.action === "dwell" && payload.id) {
803
+ dwell(payload.id);
804
+ } else if (payload.action === "release" && payload.id) {
805
+ release(payload.id, force);
806
+ } else if (payload.action === "recall") {
807
+ recall(payload.id);
808
+ } else if (payload.action === "pin" && payload.id) {
809
+ pin(payload.id);
810
+ } else if (payload.action === "unpin" && payload.id) {
811
+ unpin(payload.id);
609
812
  }
610
813
  });
814
+
815
+ // Stage C: restore pinned cards from localStorage on boot. Pinned
816
+ // cards are user-curated state and survive reload, /new, and gateway
817
+ // reconnect. Each pin is a snapshot; the registry re-adds it as a
818
+ // dynamic card with pinned=true (no dismiss button).
819
+ if (typeof window.symframePinStore?.list === "function") {
820
+ try {
821
+ const pinned = window.symframePinStore.list();
822
+ for (const record of pinned) {
823
+ if (record?.card && !cards.has(record.id)) {
824
+ add({ ...record.card, pinned: true, dismissable: false });
825
+ }
826
+ }
827
+ } catch (err) {
828
+ console.warn("[symframe] failed to restore pinned cards:", err);
829
+ }
830
+ }
611
831
  })();
@@ -1,5 +1,5 @@
1
1
  import { f as defaultRuntime } from "./subsystem-CHbO_DkH.js";
2
- import { n as resolveSymiPackageRootSync, t as resolveSymiPackageRoot } from "./symi-root-BQ0IpoW2.js";
2
+ import { n as resolveSymiPackageRootSync, t as resolveSymiPackageRoot } from "./symi-root-DeCVdZB4.js";
3
3
  import { t as runCommandWithTimeout } from "./exec-DuYbft0z.js";
4
4
  import { fileURLToPath } from "node:url";
5
5
  import path from "node:path";
@@ -3,9 +3,9 @@ import "./paths-By0XjHBk.js";
3
3
  import "./utils-CTPsqyE_.js";
4
4
  import "./subsystem-CHbO_DkH.js";
5
5
  import "./exec-DuYbft0z.js";
6
- import "./agent-scope-DOrZjOnW.js";
7
- import "./model-selection-7wdmO-Iw.js";
8
- import { i as loadConfig } from "./config-B4jkreCN.js";
6
+ import "./agent-scope-Bnsyyeci.js";
7
+ import "./model-selection-CCTzD29o.js";
8
+ import { i as loadConfig } from "./config-BngIfn5l.js";
9
9
  import "./boolean-CbZoNRMn.js";
10
10
  import "./env-BRnPI9sO.js";
11
11
  import "./shell-env-Dc3iU7HK.js";
@@ -6,8 +6,8 @@ import "./model-selection-CMx1evaF.js";
6
6
  import "./manifest-registry-CVLmi8rz.js";
7
7
  import "./config-D7TcU4qN.js";
8
8
  import "./shell-env-CTYaxUs_.js";
9
- import "./client-DCxeV1bw.js";
10
- import "./call-DZg43vv8.js";
9
+ import "./client-yVTJ5jx5.js";
10
+ import "./call-C2urR5Fj.js";
11
11
  import "./message-channel-DXToSaWK.js";
12
12
  import "./pairing-token-B-OTYROz.js";
13
13
  import { n as listChannelPlugins } from "./plugins-BsEhWvLn.js";
@@ -15,7 +15,7 @@ import { n as formatDurationHuman } from "./format-duration-CIjmjQST.js";
15
15
  import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs } from "./stagger-DUVGiPYV.js";
16
16
  import { t as formatDocsLink } from "./links-Dnmd-RS-.js";
17
17
  import "./progress-CI19Xh3z.js";
18
- import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-Bzg_TTKP.js";
18
+ import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-Kv0-8W2E.js";
19
19
  import { n as parsePositiveIntOrUndefined } from "./helpers-CKQ7JYPP.js";
20
20
 
21
21
  //#region src/cli/cron-cli/shared.ts
@@ -4,24 +4,24 @@ import "./utils-CTPsqyE_.js";
4
4
  import { f as defaultRuntime } from "./subsystem-CHbO_DkH.js";
5
5
  import { u as sanitizeAgentId } from "./session-key-DUSb7CCb.js";
6
6
  import "./exec-DuYbft0z.js";
7
- import "./agent-scope-DOrZjOnW.js";
8
- import "./model-selection-7wdmO-Iw.js";
9
- import "./config-B4jkreCN.js";
7
+ import "./agent-scope-Bnsyyeci.js";
8
+ import "./model-selection-CCTzD29o.js";
9
+ import "./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
14
  import "./message-channel-DgjXWzf-.js";
15
15
  import { n as listChannelPlugins } from "./plugins-CF5skkHh.js";
16
- import "./client-k0MT6NBw.js";
17
- import "./call-BccaLPi8.js";
18
- import "./pairing-token-Dcy37-4s.js";
16
+ import "./client-CTrfpKT3.js";
17
+ import "./call-Bpjj5p7I.js";
18
+ import "./pairing-token-B703A1U3.js";
19
19
  import { n as formatDurationHuman } from "./format-duration-CIjmjQST.js";
20
20
  import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs } from "./stagger-DQs772BN.js";
21
21
  import { t as formatDocsLink } from "./links-Bqr0FxXx.js";
22
22
  import "./progress-swt2y17x.js";
23
23
  import { n as parsePositiveIntOrUndefined } from "./helpers-B_p8ul9t.js";
24
- import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-D12UaJS5.js";
24
+ import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-gaoD882s.js";
25
25
 
26
26
  //#region src/cli/cron-cli/shared.ts
27
27
  const getCronChannelOptions = () => ["last", ...listChannelPlugins().map((plugin) => plugin.id)].join("|");
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { Q as theme, Rt as shortenHomePath, X as colorize, Z as isRich, _ as defaultRuntime, ct as resolveConfigPath, ft as resolveGatewayPort, pt as resolveIsNixMode, tt as getResolvedLoggerSettings, yt as resolveStateDir } from "./entry.js";
3
3
  import { t as formatCliCommand } from "./command-format-B3nkKRhC.js";
4
4
  import { i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot, r as createConfigIO } from "./config-D7TcU4qN.js";
5
- import { n as callGateway } from "./call-DZg43vv8.js";
5
+ import { n as callGateway } from "./call-C2urR5Fj.js";
6
6
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DXToSaWK.js";
7
7
  import { l as resolveGatewayBindHost } from "./net-TZUXtwGR.js";
8
8
  import { n as pickPrimaryTailnetIPv4 } from "./tailnet-B2SPYrh4.js";
@@ -13,7 +13,7 @@ import { t as formatDocsLink } from "./links-Dnmd-RS-.js";
13
13
  import { n as withProgress } from "./progress-CI19Xh3z.js";
14
14
  import { n as inheritOptionFromParent } from "./command-options-BFvvecvU.js";
15
15
  import { i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-AkgOtHR6.js";
16
- import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-BcLPSb5N.js";
16
+ import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-Dhr98nj8.js";
17
17
  import { n as isWSLEnv } from "./wsl-DMA0sTvh.js";
18
18
  import { s as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-DYpU1ajf.js";
19
19
  import { a as createCliStatusTextStyles, c as parsePortFromArgs, d as renderRuntimeHints, f as resolveRuntimeStatusColor, g as installDaemonServiceAndEmit, h as createDaemonActionContext, i as runServiceUninstall, l as pickProbeHostForBind, m as buildDaemonServiceSnapshot, n as runServiceStart, o as filterDaemonEnv, p as safeDaemonEnv, r as runServiceStop, s as normalizeListenerAddress, t as runServiceRestart, u as renderGatewayServiceStartHints } from "./lifecycle-core-YmWzkN43.js";
@@ -4,26 +4,26 @@ import { _ as resolveStateDir, d as resolveIsNixMode, o as resolveConfigPath, u
4
4
  import { v as shortenHomePath } from "./utils-CTPsqyE_.js";
5
5
  import { f as defaultRuntime } from "./subsystem-CHbO_DkH.js";
6
6
  import { t as formatCliCommand } from "./command-format-BzjsXBTi.js";
7
- import { i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot, r as createConfigIO } from "./config-B4jkreCN.js";
7
+ import { i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot, r as createConfigIO } from "./config-BngIfn5l.js";
8
8
  import { n as pickPrimaryTailnetIPv4 } from "./tailnet-XKACsamF.js";
9
9
  import { u as resolveGatewayBindHost } from "./ws-C7Ktmt-R.js";
10
10
  import { a as resolveGatewayAuth } from "./auth-Bkx-QuRN.js";
11
- import { a as inspectPortUsage, s as formatPortDiagnostics } from "./ports-gxLM5ahL.js";
11
+ import { a as inspectPortUsage, s as formatPortDiagnostics } from "./ports-CB_Iu83U.js";
12
12
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DgjXWzf-.js";
13
- import { n as callGateway } from "./call-BccaLPi8.js";
13
+ import { n as callGateway } from "./call-Bpjj5p7I.js";
14
14
  import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-BLIhifCJ.js";
15
15
  import { t as formatDocsLink } from "./links-Bqr0FxXx.js";
16
16
  import { n as withProgress } from "./progress-swt2y17x.js";
17
17
  import { n as inheritOptionFromParent } from "./command-options-DDDwkB9t.js";
18
- import { i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-DlQla_dA.js";
19
- import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-CQBpac8h.js";
20
- import { n as isWSLEnv } from "./wsl-CglTdtlb.js";
21
- import { s as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-e6MzlLCd.js";
22
- import { a as createCliStatusTextStyles, c as parsePortFromArgs, d as renderRuntimeHints, f as resolveRuntimeStatusColor, g as installDaemonServiceAndEmit, h as createDaemonActionContext, i as runServiceUninstall, l as pickProbeHostForBind, m as buildDaemonServiceSnapshot, n as runServiceStart, o as filterDaemonEnv, p as safeDaemonEnv, r as runServiceStop, s as normalizeListenerAddress, t as runServiceRestart, u as renderGatewayServiceStartHints } from "./lifecycle-core-wFwnK_mD.js";
23
- import { i as auditGatewayServiceConfig, n as renderSystemdUnavailableHints, s as formatRuntimeStatus, t as isSystemdUnavailableDetail } from "./systemd-hints-CsrzMCTD.js";
18
+ import { i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-CKn0wmCk.js";
19
+ import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-BKejzolA.js";
20
+ import { n as isWSLEnv } from "./wsl-DTi7eX-V.js";
21
+ import { s as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-CRZoXO_n.js";
22
+ import { a as createCliStatusTextStyles, c as parsePortFromArgs, d as renderRuntimeHints, f as resolveRuntimeStatusColor, g as installDaemonServiceAndEmit, h as createDaemonActionContext, i as runServiceUninstall, l as pickProbeHostForBind, m as buildDaemonServiceSnapshot, n as runServiceStart, o as filterDaemonEnv, p as safeDaemonEnv, r as runServiceStop, s as normalizeListenerAddress, t as runServiceRestart, u as renderGatewayServiceStartHints } from "./lifecycle-core-cSR_xiIO.js";
23
+ import { i as auditGatewayServiceConfig, n as renderSystemdUnavailableHints, s as formatRuntimeStatus, t as isSystemdUnavailableDetail } from "./systemd-hints-QISwLlFU.js";
24
24
  import { t as parsePort } from "./parse-port-CMRD6fhd.js";
25
- import { t as readLastGatewayErrorLine } from "./diagnostics-DlZODdRf.js";
26
- import { n as renderGatewayServiceCleanupHints, t as findExtraGatewayServices } from "./inspect-CGKsaVZ4.js";
25
+ import { t as readLastGatewayErrorLine } from "./diagnostics-CYkqD5lP.js";
26
+ import { n as renderGatewayServiceCleanupHints, t as findExtraGatewayServices } from "./inspect-DzYUb_Dl.js";
27
27
 
28
28
  //#region src/cli/daemon-cli/install.ts
29
29
  async function runDaemonInstall(opts) {
@@ -9623,7 +9623,12 @@ const ChatSymframePushParamsSchema = Type.Object({
9623
9623
  action: Type.Union([
9624
9624
  Type.Literal("add"),
9625
9625
  Type.Literal("update"),
9626
- Type.Literal("remove")
9626
+ Type.Literal("remove"),
9627
+ Type.Literal("dwell"),
9628
+ Type.Literal("release"),
9629
+ Type.Literal("recall"),
9630
+ Type.Literal("pin"),
9631
+ Type.Literal("unpin")
9627
9632
  ]),
9628
9633
  id: Type.Optional(NonEmptyString),
9629
9634
  force: Type.Optional(Type.Boolean()),
@@ -1,11 +1,11 @@
1
1
  import { t as formatCliCommand } from "./command-format-BzjsXBTi.js";
2
- import { N as VERSION, k as collectConfigServiceEnvVars } from "./config-B4jkreCN.js";
2
+ import { N as VERSION, k as collectConfigServiceEnvVars } from "./config-BngIfn5l.js";
3
3
  import { a as NODE_SERVICE_MARKER, c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName, g as resolveNodeWindowsTaskName, h as resolveNodeSystemdServiceName, i as NODE_SERVICE_KIND, m as resolveNodeLaunchAgentLabel, n as GATEWAY_SERVICE_KIND, o as NODE_WINDOWS_TASK_SCRIPT_NAME, r as GATEWAY_SERVICE_MARKER } from "./constants-BLIhifCJ.js";
4
4
  import { n as isSupportedNodeVersion } from "./runtime-guard-CWA00ZXa.js";
5
5
  import path from "node:path";
6
6
  import os from "node:os";
7
7
  import { promisify } from "node:util";
8
- import fs from "node:fs/promises";
8
+ import fsPromises from "node:fs/promises";
9
9
  import { execFile } from "node:child_process";
10
10
 
11
11
  //#region src/daemon/program-args.ts
@@ -23,23 +23,23 @@ async function resolveCliEntrypointPathForService() {
23
23
  const normalized = path.resolve(argv1);
24
24
  const resolvedPath = await resolveRealpathSafe(normalized);
25
25
  if (/[/\\]dist[/\\].+\.(cjs|js|mjs)$/.test(resolvedPath)) {
26
- await fs.access(resolvedPath);
26
+ await fsPromises.access(resolvedPath);
27
27
  if (/[/\\]dist[/\\].+\.(cjs|js|mjs)$/.test(normalized) && normalized !== resolvedPath) try {
28
- await fs.access(normalized);
28
+ await fsPromises.access(normalized);
29
29
  return normalized;
30
30
  } catch {}
31
31
  return resolvedPath;
32
32
  }
33
33
  const distCandidates = buildDistCandidates(resolvedPath, normalized);
34
34
  for (const candidate of distCandidates) try {
35
- await fs.access(candidate);
35
+ await fsPromises.access(candidate);
36
36
  return candidate;
37
37
  } catch {}
38
38
  throw new Error(`Cannot find built CLI at ${distCandidates.join(" or ")}. Run "pnpm build" first, or use dev mode.`);
39
39
  }
40
40
  async function resolveRealpathSafe(inputPath) {
41
41
  try {
42
- return await fs.realpath(inputPath);
42
+ return await fsPromises.realpath(inputPath);
43
43
  } catch {
44
44
  return inputPath;
45
45
  }
@@ -99,7 +99,7 @@ async function resolveBinaryPath(binary) {
99
99
  try {
100
100
  const resolved = execFileSync(cmd, [binary], { encoding: "utf8" }).trim().split(/\r?\n/)[0]?.trim();
101
101
  if (!resolved) throw new Error("empty");
102
- await fs.access(resolved);
102
+ await fsPromises.access(resolved);
103
103
  return resolved;
104
104
  } catch {
105
105
  if (binary === "bun") throw new Error("Bun not found in PATH. Install bun: https://bun.sh");
@@ -118,7 +118,7 @@ async function resolveCliProgramArguments(params) {
118
118
  if (params.dev) {
119
119
  const repoRoot = resolveRepoRootForDev();
120
120
  const devCliPath = path.join(repoRoot, "src", "index.ts");
121
- await fs.access(devCliPath);
121
+ await fsPromises.access(devCliPath);
122
122
  return {
123
123
  programArguments: [
124
124
  isBunRuntime(execPath) ? execPath : await resolveBunPath(),
@@ -146,7 +146,7 @@ async function resolveCliProgramArguments(params) {
146
146
  }
147
147
  const repoRoot = resolveRepoRootForDev();
148
148
  const devCliPath = path.join(repoRoot, "src", "index.ts");
149
- await fs.access(devCliPath);
149
+ await fsPromises.access(devCliPath);
150
150
  if (isBunRuntime(execPath)) return {
151
151
  programArguments: [
152
152
  execPath,
@@ -259,7 +259,7 @@ function isSystemNodePath(nodePath, env = process.env, platform = process.platfo
259
259
  async function resolveSystemNodePath(env = process.env, platform = process.platform) {
260
260
  const candidates = buildSystemNodeCandidates(env, platform);
261
261
  for (const candidate of candidates) try {
262
- await fs.access(candidate);
262
+ await fsPromises.access(candidate);
263
263
  return candidate;
264
264
  } catch {}
265
265
  return null;
@@ -1,11 +1,11 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { H as createInternalHookEvent, W as triggerInternalHook, d as getActivePluginRegistry } from "./registry-Sbac4a4z.js";
3
3
  import { t as createSubsystemLogger } from "./subsystem-CHbO_DkH.js";
4
- import { i as resolveMirroredTranscriptText, r as appendAssistantMessageToSessionTranscript } from "./sessions-Dxf5Kjig.js";
4
+ import { i as resolveMirroredTranscriptText, r as appendAssistantMessageToSessionTranscript } from "./sessions-BCc3THTm.js";
5
5
  import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CF5skkHh.js";
6
6
  import { n as isSilentReplyText, t as SILENT_REPLY_TOKEN } from "./tokens-0yh2UnJq.js";
7
7
  import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-BxfKjCUx.js";
8
- import { t as getAgentScopedMediaLocalRoots } from "./local-roots-CgDCgCuM.js";
8
+ import { t as getAgentScopedMediaLocalRoots } from "./local-roots-2Jb79HZ8.js";
9
9
  import { i as failDelivery, r as enqueueDelivery, t as ackDelivery } from "./delivery-queue-OAc7hsIs.js";
10
10
 
11
11
  //#region src/plugins/hooks.ts
@@ -9,7 +9,7 @@ import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CZ_mYw
9
9
  import { _ as listDeliverableMessageChannels, c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph, v as normalizeMessageChannel } from "./chunk-CAZujdOi.js";
10
10
  import { c as loadConfig, d as writeConfigFile, m as parseByteSize, p as parseDurationMs, s as createConfigIO, t as SsrFBlockedError } from "./ssrf-BCSnhba8.js";
11
11
  import { t as parseBooleanValue } from "./boolean-BW6OTjPi.js";
12
- import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-3jl2ulOE.js";
12
+ import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-DNssqQJs.js";
13
13
  import { t as formatCliCommand } from "./command-format-DPd9RN2g.js";
14
14
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-DO7WNsVJ.js";
15
15
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-BEU7IHU6.js";
@@ -1331,7 +1331,7 @@ function isModuleNotFoundError(err) {
1331
1331
  }
1332
1332
  async function loadPwAiModule(mode) {
1333
1333
  try {
1334
- return await import("./pw-ai-DOAsQ5NX.js");
1334
+ return await import("./pw-ai-v__CyAlM.js");
1335
1335
  } catch (err) {
1336
1336
  if (mode === "soft") return null;
1337
1337
  if (isModuleNotFoundError(err)) return null;
@@ -3928,11 +3928,11 @@ function createProfileContext(opts, profile) {
3928
3928
  const userDataDir = resolveSymiUserDataDir(profile.name);
3929
3929
  const profileState = getProfileState();
3930
3930
  if (await isHttpReachable(300) && !profileState.running) try {
3931
- await (await import("./pw-ai-DOAsQ5NX.js")).closePlaywrightBrowserConnection();
3931
+ await (await import("./pw-ai-v__CyAlM.js")).closePlaywrightBrowserConnection();
3932
3932
  } catch {}
3933
3933
  if (profileState.running) await stopRunningBrowser();
3934
3934
  try {
3935
- await (await import("./pw-ai-DOAsQ5NX.js")).closePlaywrightBrowserConnection();
3935
+ await (await import("./pw-ai-v__CyAlM.js")).closePlaywrightBrowserConnection();
3936
3936
  } catch {}
3937
3937
  if (!fs.existsSync(userDataDir)) return {
3938
3938
  moved: false,
@@ -1,7 +1,7 @@
1
1
  //#region src/cli/deps.ts
2
2
  function createDefaultDeps() {
3
3
  return { sendMessageSlack: async (...args) => {
4
- const { sendMessageSlack } = await import("./send-B0jHSNMF.js").then((n) => n.n);
4
+ const { sendMessageSlack } = await import("./send-CxjvucMO.js").then((n) => n.n);
5
5
  return await sendMessageSlack(...args);
6
6
  } };
7
7
  }
@@ -5,8 +5,8 @@ import "./model-selection-CMx1evaF.js";
5
5
  import "./manifest-registry-CVLmi8rz.js";
6
6
  import "./config-D7TcU4qN.js";
7
7
  import "./shell-env-CTYaxUs_.js";
8
- import { Gt as approveDevicePairing, Jt as listDevicePairing, en as summarizeDeviceTokens } from "./client-DCxeV1bw.js";
9
- import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-DZg43vv8.js";
8
+ import { Gt as approveDevicePairing, Jt as listDevicePairing, en as summarizeDeviceTokens } from "./client-yVTJ5jx5.js";
9
+ import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-C2urR5Fj.js";
10
10
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DXToSaWK.js";
11
11
  import "./pairing-token-B-OTYROz.js";
12
12
  import { n as isLoopbackHost } from "./net-TZUXtwGR.js";