@symerian/symi 2.3.3 → 2.4.0

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 (255) hide show
  1. package/dist/{accounts-Cd816n6l.js → accounts-DDuIpcln.js} +7 -7
  2. package/dist/{accounts-mN_EcgxC.js → accounts-DyJN4_vR.js} +1 -1
  3. package/dist/{accounts-CokRskCl.js → accounts-bK-Yqdwx.js} +1 -1
  4. package/dist/{acp-cli-BgyJMtqt.js → acp-cli-Cu4icbJT.js} +6 -6
  5. package/dist/{agent-scope-BRwEc2pG.js → agent-scope-CgUHAtCo.js} +18 -18
  6. package/dist/{agents-DjLt6jc3.js → agents-CI3xxYc_.js} +4 -4
  7. package/dist/{agents.config-u_ibObha.js → agents.config-DCE3RGr9.js} +2 -2
  8. package/dist/{agents.config-Dt7B_P5o.js → agents.config-DTUAM1AG.js} +1 -1
  9. package/dist/{api-key-rotation-CEr3lKih.js → api-key-rotation-CzuPlV2t.js} +1 -1
  10. package/dist/{audio-preflight-CPBOQV4I.js → audio-preflight-C40mKAp7.js} +4 -4
  11. package/dist/{audio-preflight-CjysqO8U.js → audio-preflight-CWnxkaac.js} +28 -28
  12. package/dist/{audio-preflight-D02HwB-I.js → audio-preflight-O3ASWbaG.js} +4 -4
  13. package/dist/{audit-BSB9NPSO.js → audit-CrITRV6w.js} +23 -23
  14. package/dist/{auth-choice-DmSG7c8J.js → auth-choice-DuQwRfJc.js} +8 -8
  15. package/dist/{auth-choice-DUUu6Nhg.js → auth-choice-IiIysHGO.js} +1 -1
  16. package/dist/{auth-token-DC5w1WoS.js → auth-token-BnOynwk4.js} +1 -1
  17. package/dist/{banner-BiAcdT2T.js → banner-xhDZu_ZJ.js} +1 -1
  18. package/dist/{bindings-ChzePa8q.js → bindings-DFaVVCsf.js} +1 -1
  19. package/dist/{browser-cli-C4D9Ql3c.js → browser-cli-BG4qPxpM.js} +9 -9
  20. package/dist/build-info.json +3 -3
  21. package/dist/bundled/boot-md/handler.js +6 -6
  22. package/dist/bundled/session-memory/handler.js +6 -6
  23. package/dist/{call-Dd7-bkfG.js → call-CJaS1iRF.js} +9 -9
  24. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  25. package/dist/{channel-options-vQREpu-n.js → channel-options-D3gGVwBd.js} +2 -2
  26. package/dist/{channel-options-ClfXE1B7.js → channel-options-Dvxd7eJY.js} +1 -1
  27. package/dist/{channel-selection-DjfBv8kq.js → channel-selection-DuWs0Aak.js} +1 -1
  28. package/dist/{channel-web-y6pd_GHr.js → channel-web-a5tX1YI3.js} +17 -17
  29. package/dist/{channels-cli-CjYD1_OO.js → channels-cli-BLUkl5Li.js} +75 -75
  30. package/dist/{channels-cli-suXRcyfF.js → channels-cli-C9wBYmDe.js} +4 -4
  31. package/dist/{channels-status-issues-BoH1ZJPN.js → channels-status-issues-B_kBkl_u.js} +1 -1
  32. package/dist/{chrome-EyvdASWt.js → chrome-BFekevcE.js} +7 -7
  33. package/dist/{chrome-D2SKJnR7.js → chrome-CDJYxX5a.js} +7 -7
  34. package/dist/{chrome-r4RThPxq.js → chrome-DtPkPq9T.js} +2 -2
  35. package/dist/cli/daemon-cli.js +1 -1
  36. package/dist/{cli-mbfUlFn3.js → cli-CaEE46xi.js} +1 -1
  37. package/dist/{cli-B-911QZL.js → cli-Cw45F0yJ.js} +62 -62
  38. package/dist/{client-BsrZnuSi.js → client-CQSyCS4M.js} +1 -1
  39. package/dist/{command-registry-y8CXSD5O.js → command-registry-ea9SD1eA.js} +9 -9
  40. package/dist/{commands-CtocZ4Lg.js → commands-BNLCWX6e.js} +1 -1
  41. package/dist/{commands-registry-BZ0ZSQpM.js → commands-registry-BT0-zzs3.js} +3 -3
  42. package/dist/{completion-cli-BLrwUAyo.js → completion-cli-CMJmUQbI.js} +12 -12
  43. package/dist/{completion-cli-2Mi5hts2.js → completion-cli-DVkiEAEA.js} +2 -2
  44. package/dist/{config-CJMcIRQM.js → config-CHwyw6l5.js} +2 -2
  45. package/dist/{config-cli-CF-wdLkO.js → config-cli-B2d28_hb.js} +4 -4
  46. package/dist/{config-cli-tYZAnvgQ.js → config-cli-VIg0PSyq.js} +1 -1
  47. package/dist/{config-guard-C1Rs8NZG.js → config-guard-BflmO0t7.js} +12 -12
  48. package/dist/{config-validation-ChQQVndI.js → config-validation-CmimHAES.js} +1 -1
  49. package/dist/{configure-si19m30s.js → configure-C_TVBt76.js} +3 -3
  50. package/dist/{configure-BHKdqhLb.js → configure-D-3FiJbK.js} +15 -15
  51. package/dist/{control-service-B8H3Bqpv.js → control-service-Bz7rxLWq.js} +4 -4
  52. package/dist/{control-ui-assets-DqGziq7x.js → control-ui-assets-Z947tKLt.js} +1 -1
  53. package/dist/{cron-cli-YrMWJCkm.js → cron-cli-DBIlCvp3.js} +10 -10
  54. package/dist/{daemon-cli-Dx4SXRyp.js → daemon-cli-DscwlsKW.js} +11 -11
  55. package/dist/{daemon-runtime--RiRUx_2.js → daemon-runtime-2mwX-jqj.js} +10 -10
  56. package/dist/{deliver-C-37cZUe.js → deliver-BH0l3UKW.js} +1 -1
  57. package/dist/{deliver-Um8yyhRA.js → deliver-CceEhg3d.js} +7 -7
  58. package/dist/{deliver-D1ZN6-fl.js → deliver-CvCK5Mm9.js} +1 -1
  59. package/dist/{devices-cli-DAJ84AOe.js → devices-cli-Dds-25Ve.js} +6 -6
  60. package/dist/{diagnostics-D2yUMZN1.js → diagnostics-BAMlsVVX.js} +5 -5
  61. package/dist/{directory-cli-C4h8KQLH.js → directory-cli-CpUByQew.js} +7 -7
  62. package/dist/{dm-policy-shared-BCSw0GJS.js → dm-policy-shared-Bh3TbexU.js} +2 -2
  63. package/dist/{dns-cli-s0ZWvTPm.js → dns-cli-Beyzdh3S.js} +3 -3
  64. package/dist/{dock-BYiRZSgZ.js → dock-BhS32F6E.js} +4 -4
  65. package/dist/{docs-cli-BfPfHTDs.js → docs-cli-BpnEOtJi.js} +1 -1
  66. package/dist/{doctor-completion-C19QYsQN.js → doctor-completion-CJHJYIwQ.js} +2 -2
  67. package/dist/{doctor-completion-Dn_Kn4gz.js → doctor-completion-DeRX6gkI.js} +1 -1
  68. package/dist/{doctor-config-flow-D05HlWdn.js → doctor-config-flow-QnaBd8kL.js} +10 -10
  69. package/dist/entry.js +1 -1
  70. package/dist/{exec-approvals-cli-Df1lyRyE.js → exec-approvals-cli-BliRl8VB.js} +13 -13
  71. package/dist/extensionAPI.js +6 -6
  72. package/dist/{fs-safe-CTDvb1DF.js → fs-safe-CUjO1ca2.js} +6 -6
  73. package/dist/{gateway-cli-B7khyAHs.js → gateway-cli-BDDHBfYP.js} +126 -121
  74. package/dist/{gateway-cli-DG_Mdw0H.js → gateway-cli-DiDJ6Z2d.js} +22 -17
  75. package/dist/{gateway-rpc-DFeD8pZh.js → gateway-rpc-BxkKeCZ0.js} +1 -1
  76. package/dist/{glass-ui-ws-BmQAULMj.js → glass-ui-ws-Bj1IuJXt.js} +82 -82
  77. package/dist/{glass-ui-ws-BAub_JoN.js → glass-ui-ws-rGIAkViC.js} +7 -7
  78. package/dist/{health-CboWXJkq.js → health-Bst5HnLF.js} +1 -1
  79. package/dist/{health-DkKXiUEF.js → health-CypF_2ZD.js} +13 -13
  80. package/dist/{hooks-cli-DLM_5caf.js → hooks-cli-CDMcqTy4.js} +2 -2
  81. package/dist/{hooks-cli-BrO_9pas.js → hooks-cli-CfsqqxPX.js} +76 -76
  82. package/dist/{image-Cp3JDEBB.js → image-B0wGflxA.js} +1 -1
  83. package/dist/{image-DcpMiprB.js → image-CHzdaNJ4.js} +1 -1
  84. package/dist/{image-BiY-PfMh.js → image-D9uvDTrc.js} +3 -3
  85. package/dist/{image-ops-DYbDWaIA.js → image-ops-1OJMSAUX.js} +10 -10
  86. package/dist/index.js +72 -72
  87. package/dist/{inspect-ZJkNX0WL.js → inspect-CllGjsWo.js} +4 -4
  88. package/dist/{install-safe-path-Qqr_t_tH.js → install-safe-path-tCLiMpmO.js} +11 -11
  89. package/dist/{installs-O9KlRu9h.js → installs-C1Cebk97.js} +10 -10
  90. package/dist/{ir-Dt4hOzxG.js → ir-DZam9q5M.js} +6 -6
  91. package/dist/{lifecycle-core-BkPSoGM2.js → lifecycle-core-D6LYXpFj.js} +5 -5
  92. package/dist/llm-slug-generator.js +6 -6
  93. package/dist/{local-roots-BBeKX7PX.js → local-roots-aAFLQGkY.js} +2 -2
  94. package/dist/{login-1sleXoB4.js → login-dIlDkG4X.js} +3 -3
  95. package/dist/{login-qr-wCWBOMwB.js → login-qr-pbXdFORv.js} +5 -5
  96. package/dist/{logs-cli-DVeEdUCU.js → logs-cli-xOzIPrHm.js} +7 -7
  97. package/dist/{manager-C1CfGzZ2.js → manager-D4LJSRyZ.js} +13 -13
  98. package/dist/{markdown-tables-ZwP14ydw.js → markdown-tables-CEbN0fEm.js} +1 -1
  99. package/dist/{memory-cli-lk6fRiwy.js → memory-cli-Ca5r9AUb.js} +14 -14
  100. package/dist/{model-catalog-C3NLvWC2.js → model-catalog-DvBJ8pMD.js} +4 -4
  101. package/dist/{model-picker-LKZLY2DL.js → model-picker-Ddo3jHe-.js} +3 -3
  102. package/dist/{model-selection-X1oLh3CE.js → model-selection-CyFvYcRt.js} +9 -9
  103. package/dist/{model-CeeOcylL.js → model-tWhwnFf8.js} +1 -1
  104. package/dist/{models-BmiRYEVd.js → models-ZEOGlFx7.js} +2 -2
  105. package/dist/{models-cli-Tf61I97Q.js → models-cli-BM1QyeXr.js} +3 -3
  106. package/dist/{models-cli-4vQrbW6G.js → models-cli-BwOQhZ_c.js} +72 -72
  107. package/dist/{models-config-CqDdkHJq.js → models-config-qyOXrOli.js} +7 -7
  108. package/dist/{node-cli-Jj2LTGzF.js → node-cli-C_G-Q3h-.js} +28 -28
  109. package/dist/{node-service-CJygtY5M.js → node-service-Cxz4e-Qd.js} +1 -1
  110. package/dist/{nodes-cli-C43ifECe.js → nodes-cli-BcnuJajV.js} +10 -10
  111. package/dist/{nodes-screen-C99kfE1u.js → nodes-screen-VBGXKdLk.js} +4 -4
  112. package/dist/{npm-registry-spec-DR_at_Hp.js → npm-registry-spec-C2JDdSZS.js} +9 -9
  113. package/dist/{onboard-FpptSqHZ.js → onboard-CU-pntZD.js} +2 -2
  114. package/dist/{onboard-D8uxVvMq.js → onboard-DQ34giB5.js} +13 -13
  115. package/dist/{onboard-channels-DOKid2w1.js → onboard-channels-BOBxxhHX.js} +5 -5
  116. package/dist/{onboard-channels-Q_xxgZ8O.js → onboard-channels-g5cvwJpx.js} +1 -1
  117. package/dist/{onboard-custom-DPJiy9aT.js → onboard-custom-C7O-zfQ1.js} +3 -3
  118. package/dist/{onboard-helpers-Dixh6cNh.js → onboard-helpers-ZmZYzlq3.js} +8 -8
  119. package/dist/{onboard-hooks-lsws7g2s.js → onboard-hooks-BAA8CoVv.js} +1 -1
  120. package/dist/{onboard-remote-B66ZWtkN.js → onboard-remote-zUjD7UtM.js} +1 -1
  121. package/dist/{onboard-skills-B0IA09ig.js → onboard-skills-BB0YhUmF.js} +4 -4
  122. package/dist/{onboarding-CdlGKa0U.js → onboarding-CXWUjdM5.js} +13 -13
  123. package/dist/{onboarding-DhIEUmp5.js → onboarding-DWs6tHZ9.js} +3 -3
  124. package/dist/{onboarding.finalize-CEYLIXkq.js → onboarding.finalize-CAYf88mf.js} +6 -6
  125. package/dist/{onboarding.finalize-DyBsPxXJ.js → onboarding.finalize-vupGASMK.js} +74 -74
  126. package/dist/{onboarding.gateway-config-CCJqI0kw.js → onboarding.gateway-config-CJUgDC6Y.js} +14 -14
  127. package/dist/{openai-model-default-BJ1IZ3TN.js → openai-model-default-DMjQRsb1.js} +2 -2
  128. package/dist/{outbound-NJCy0h4x.js → outbound-DB5Zus0-.js} +4 -4
  129. package/dist/{outbound-attachment-D62E0xDI.js → outbound-attachment-D_QuKi8U.js} +2 -2
  130. package/dist/{pairing-cli-CcW0ndhB.js → pairing-cli-CBLfGvqW.js} +8 -8
  131. package/dist/{pairing-labels-27SOKDzJ.js → pairing-labels-2S6x2UoV.js} +1 -1
  132. package/dist/{pairing-store-B8ktu-6j.js → pairing-store-CK726Dzq.js} +2 -2
  133. package/dist/{pairing-token-AV-MMfVE.js → pairing-token-CX3NN_qj.js} +7 -7
  134. package/dist/{paths-CT6jsi4E.js → paths-BBm9fwuG.js} +1 -1
  135. package/dist/{pi-auth-json-CCneTXUh.js → pi-auth-json-DayrlDg_.js} +3 -3
  136. package/dist/{pi-embedded-wr4HXhzm.js → pi-embedded-CJsSOG2j.js} +147 -185
  137. package/dist/{pi-embedded-BThV36aG.js → pi-embedded-DwbQz0MC.js} +147 -185
  138. package/dist/{pi-embedded-helpers-DO6u9K2t.js → pi-embedded-helpers-CNPyv_ax.js} +6 -6
  139. package/dist/{pi-embedded-helpers-ag2bosuj.js → pi-embedded-helpers-DLFjnVBb.js} +4 -4
  140. package/dist/{pi-embedded-helpers-B8kqLWns.js → pi-embedded-helpers-lgx_U5KS.js} +4 -4
  141. package/dist/{pi-tools.policy-juZV2uUv.js → pi-tools.policy-CIDBbw6x.js} +4 -4
  142. package/dist/{plugin-auto-enable-Bbm7MwFV.js → plugin-auto-enable-BzX1uAKy.js} +2 -2
  143. package/dist/{plugin-registry-DvWWctC9.js → plugin-registry-BDpdOTei.js} +1 -1
  144. package/dist/{plugin-registry-lWWSu9UD.js → plugin-registry-CZeHSx_c.js} +3 -3
  145. package/dist/plugin-sdk/agents/model-aware-stream.d.ts +41 -0
  146. package/dist/plugin-sdk/agents/model-token-filter.d.ts +11 -0
  147. package/dist/plugin-sdk/agents/pi-embedded-runner/extra-params.d.ts +13 -0
  148. package/dist/plugin-sdk/{channel-web-BnrTC55Y.js → channel-web-uUypcT9Q.js} +1 -1
  149. package/dist/plugin-sdk/index.js +2 -2
  150. package/dist/plugin-sdk/{reply-kuMxu6Q4.js → reply-DTKTuCrn.js} +133 -171
  151. package/dist/plugin-sdk/{web-TMIhKQyF.js → web-Dh6Youzv.js} +2 -2
  152. package/dist/{plugins-BAyxWQSz.js → plugins-DKDeQZF0.js} +2 -2
  153. package/dist/{plugins-cli-BHfzYAq6.js → plugins-cli-CCQ3skeQ.js} +71 -71
  154. package/dist/{plugins-cli-wlWRx4Oj.js → plugins-cli-D_RzeRoE.js} +2 -2
  155. package/dist/{ports-OZQlocB7.js → ports-BOmtxoTv.js} +2 -2
  156. package/dist/{ports-b36gHZbA.js → ports-BX0kKI0g.js} +1 -1
  157. package/dist/{program-CKy7s-bm.js → program-Cl9i8ubQ.js} +7 -7
  158. package/dist/{program-context-D4gbh6dg.js → program-context-BbmYGW-V.js} +39 -39
  159. package/dist/{prompt-select-styled-bh0GLMiQ.js → prompt-select-styled-BN0T6GxF.js} +4 -4
  160. package/dist/{prompt-select-styled-DlGPNq9c.js → prompt-select-styled-BfuyvChh.js} +38 -38
  161. package/dist/{provider-auth-helpers-B-YsKbwc.js → provider-auth-helpers-CkmLFHXL.js} +1 -1
  162. package/dist/{provider-auth-helpers-Bd5VVReu.js → provider-auth-helpers-CuT5EHza.js} +5 -5
  163. package/dist/{push-apns-ByyOJyDl.js → push-apns-CFkFVwEz.js} +1 -1
  164. package/dist/{push-apns-0et2AR44.js → push-apns-DeJt9kAO.js} +4 -4
  165. package/dist/{pw-ai-Ch7liUOW.js → pw-ai-BnAKvSuw.js} +1 -1
  166. package/dist/{pw-ai-1htA-NnS.js → pw-ai-De-KR9_s.js} +1 -1
  167. package/dist/{pw-ai-MVzi113V.js → pw-ai-DqL87js3.js} +7 -7
  168. package/dist/{qmd-manager-BP2r8b1D.js → qmd-manager-D85GJrir.js} +18 -18
  169. package/dist/{qr-cli-17laLZm_.js → qr-cli-jd9LdZpq.js} +3 -3
  170. package/dist/{register.agent-oKma6YjU.js → register.agent-BQm4YmZp.js} +6 -6
  171. package/dist/{register.agent-Dhijhxr5.js → register.agent-BygseJ7t.js} +81 -81
  172. package/dist/register.configure-C2fhjZze.js +147 -0
  173. package/dist/{register.configure-BX8vQ2Np.js → register.configure-Cj95vB2U.js} +6 -6
  174. package/dist/{register.maintenance-OJCduNdt.js → register.maintenance-CClfXq5e.js} +8 -8
  175. package/dist/{register.maintenance-B3TPb969.js → register.maintenance-K1x3E7OS.js} +84 -84
  176. package/dist/{register.message-CX8C_Fds.js → register.message-BSr-kUvJ.js} +2 -2
  177. package/dist/{register.message-D0aswsGo.js → register.message-CSRzBl-c.js} +63 -63
  178. package/dist/{register.onboard-CSepiSPt.js → register.onboard-Bd6wPydW.js} +4 -4
  179. package/dist/{register.onboard-BHTyEs6d.js → register.onboard-TsU21RR7.js} +74 -74
  180. package/dist/{register.setup-uhpgkBjU.js → register.setup-C9gu0W5l.js} +77 -77
  181. package/dist/{register.setup-lZSHKiGQ.js → register.setup-DK-zsne2.js} +4 -4
  182. package/dist/{register.status-health-sessions-Cbavf8do.js → register.status-health-sessions-DN5Ui3V0.js} +3 -3
  183. package/dist/{register.status-health-sessions-v1KN3eEp.js → register.status-health-sessions-rZsuoqtr.js} +75 -75
  184. package/dist/{register.subclis-DBEv5xOP.js → register.subclis-DnzHFtLz.js} +9 -9
  185. package/dist/{replies-BL7IBg12.js → replies-vgss3_QA.js} +1 -1
  186. package/dist/{reply-DVxU0AMq.js → reply-Ca3slrA3.js} +262 -300
  187. package/dist/{reply-prefix-BLOOs1aW.js → reply-prefix-CE2YmmsD.js} +1 -1
  188. package/dist/{resolve-route-BcnaXYvh.js → resolve-route-BMoTaVAH.js} +2 -2
  189. package/dist/{routes-CE-ohckF.js → routes-Ba9CUQ8M.js} +8 -8
  190. package/dist/{rpc-wovSCB5v.js → rpc-BfhojW8g.js} +1 -1
  191. package/dist/{run-main-DspjiCY1.js → run-main-DlHh5iOO.js} +14 -14
  192. package/dist/{runner-Cen70krW.js → runner-CUglpiFP.js} +20 -20
  193. package/dist/{runner-BcQ0sF9T.js → runner-DUBExAb5.js} +1 -1
  194. package/dist/{runner-D0QUGA_X.js → runner-odEv83vv.js} +1 -1
  195. package/dist/{sandbox-BzNrUHpt.js → sandbox-C-T6hOMv.js} +18 -18
  196. package/dist/{sandbox-cli-CZrMO34w.js → sandbox-cli-BllVdQzR.js} +20 -20
  197. package/dist/{security-cli-CeBoEmeN.js → security-cli-BFLtWWHy.js} +36 -36
  198. package/dist/{send-dH0xroTu.js → send-CPF8hSFp.js} +4 -4
  199. package/dist/{send-C95ZRvja.js → send-CXxQ_f7L.js} +6 -6
  200. package/dist/{send-BnuIB59F.js → send-CZr1hVHY.js} +13 -13
  201. package/dist/{send-BEeuDXqy.js → send-Cutb0ZDY.js} +6 -6
  202. package/dist/{send-BjdAgYLu.js → send-tanEMpHN.js} +6 -6
  203. package/dist/{server-context-DUXqnh6l.js → server-context-CEpFjqSk.js} +5 -5
  204. package/dist/{server-methods-BgBq7KRL.js → server-methods-BYOkyf-q.js} +54 -54
  205. package/dist/{server-methods-B9alalq5.js → server-methods-b_Qod4tt.js} +7 -7
  206. package/dist/{server-node-events-BrBsrcCd.js → server-node-events-60nWpTh1.js} +63 -63
  207. package/dist/{server-node-events-DWG81_Fo.js → server-node-events-oU4Amei7.js} +2 -2
  208. package/dist/{service--qMN5DPm.js → service-Cl74hx8J.js} +15 -15
  209. package/dist/{session-CsIk0Sqq.js → session-DIBTkyvE.js} +2 -2
  210. package/dist/{sessions-D5a7H247.js → sessions-DgYpBvse.js} +13 -13
  211. package/dist/{shared-Jm_QdQJQ.js → shared-BJvwnR5z.js} +1 -1
  212. package/dist/{shared-Gi3l7nlY.js → shared-Knv1hy6h.js} +3 -3
  213. package/dist/{skill-commands-ZXbEITKi.js → skill-commands-Cxw-jNxU.js} +5 -5
  214. package/dist/{skill-scanner-CXg9eeyc.js → skill-scanner-CLs8u6vQ.js} +5 -5
  215. package/dist/{skills-DqQUtOph.js → skills-6jdJQ5ZL.js} +4 -4
  216. package/dist/{skills-cli-D1JL_utC.js → skills-cli-BZTBLQTt.js} +7 -7
  217. package/dist/{skills-install-DjcTy3CT.js → skills-install-D67isO1L.js} +3 -3
  218. package/dist/{skills-status-DS-NZQiq.js → skills-status-CURJKnyY.js} +1 -1
  219. package/dist/{sqlite-BV5ILFtC.js → sqlite-Dx3J_aSE.js} +12 -12
  220. package/dist/{status-CgPPKk09.js → status-BXW5l4sd.js} +25 -25
  221. package/dist/{status-DxodHhzX.js → status-BxbbINLV.js} +2 -2
  222. package/dist/{status-DqMwkAnF.js → status-D3-lP2_9.js} +1 -1
  223. package/dist/{status-CkJV2sl6.js → status-kdz9P3tw.js} +3 -3
  224. package/dist/{status.update-CmGpjKSr.js → status.update-DtwCUTf-.js} +3 -3
  225. package/dist/{store-DvtcmOKj.js → store-r1DJSDq-.js} +5 -5
  226. package/dist/{subagent-registry-CBklD0OL.js → subagent-registry-CbTbJKLs.js} +133 -171
  227. package/dist/{symi-root-MF6_6SCS.js → symi-root-CrGJbkzf.js} +2 -2
  228. package/dist/{system-cli-Buhvt_H5.js → system-cli-UMsMEurS.js} +11 -11
  229. package/dist/{systemd-hints-Db0oImvK.js → systemd-hints-BR6gChwm.js} +6 -6
  230. package/dist/{systemd-linger-BXwqn1jL.js → systemd-linger-aQ75ZlXY.js} +1 -1
  231. package/dist/{systemd-AhJEsmIk.js → systemd-riq8uNJQ.js} +5 -5
  232. package/dist/{tables-C38rzF6E.js → tables-BEzT0Da4.js} +1 -1
  233. package/dist/{target-errors-CCz79CmV.js → target-errors-7AvoVa10.js} +4 -4
  234. package/dist/{tool-images-B-pqX3nX.js → tool-images-DvUBlqjX.js} +1 -1
  235. package/dist/{tui-C0A9W969.js → tui-CriznorL.js} +7 -7
  236. package/dist/{tui-cli-tCnkNdSx.js → tui-cli-CSIdfCTR.js} +28 -28
  237. package/dist/{update-check-C0oYCI89.js → update-check-CtckACbb.js} +5 -5
  238. package/dist/{update-cli-DYrpyu4a.js → update-cli-B5TI650v.js} +94 -94
  239. package/dist/{update-cli-BqdgQuYp.js → update-cli-Cy0gdWRf.js} +8 -8
  240. package/dist/{update-runner-CmZW3aeK.js → update-runner-B0NdgPvD.js} +1 -1
  241. package/dist/{update-runner-BgzyPjF5.js → update-runner-Bacq0oLK.js} +15 -15
  242. package/dist/{update-Df4sEKtI.js → update-rw7wJwHd.js} +3 -3
  243. package/dist/{web-GL_nqURg.js → web-D-oCzJTU.js} +1 -1
  244. package/dist/{web-CfZp0Jv6.js → web-DWNtg4iV.js} +6 -6
  245. package/dist/web-DmED3zDP.js +109 -0
  246. package/dist/{web-DNQzo8ao.js → web-QVwKg99Q.js} +6 -6
  247. package/dist/{webhooks-cli-Bp-7Rs2Y.js → webhooks-cli-cD58DWAE.js} +4 -4
  248. package/dist/{whatsapp-actions-CFXNPLco.js → whatsapp-actions-DbcsdOH3.js} +15 -15
  249. package/dist/{with-timeout-Cs6_LnHB.js → with-timeout-gmK6RciS.js} +1 -1
  250. package/dist/{workspace-dirs-DKu48umx.js → workspace-dirs-GpkFi6Kw.js} +1 -1
  251. package/dist/{wsl-BbXxnokd.js → wsl-C4424szg.js} +2 -2
  252. package/package.json +1 -1
  253. package/dist/register.configure-BcZ-7Yir.js +0 -147
  254. package/dist/session-dirs-D3qlvucD.js +0 -18
  255. package/dist/web-DsCqmzyk.js +0 -109
@@ -1,6 +1,6 @@
1
1
  import { constants } from "node:fs";
2
2
  import path from "node:path";
3
- import fsPromises from "node:fs/promises";
3
+ import fs$1 from "node:fs/promises";
4
4
 
5
5
  //#region src/infra/fs-safe.ts
6
6
  var SafeOpenError = class extends Error {
@@ -20,19 +20,19 @@ const isSymlinkOpenError = (err) => isNodeError(err) && (err.code === "ELOOP" ||
20
20
  async function openVerifiedLocalFile(filePath) {
21
21
  let handle;
22
22
  try {
23
- handle = await fsPromises.open(filePath, OPEN_READ_FLAGS);
23
+ handle = await fs$1.open(filePath, OPEN_READ_FLAGS);
24
24
  } catch (err) {
25
25
  if (isNotFoundError(err)) throw new SafeOpenError("not-found", "file not found");
26
26
  if (isSymlinkOpenError(err)) throw new SafeOpenError("symlink", "symlink open blocked", { cause: err });
27
27
  throw err;
28
28
  }
29
29
  try {
30
- const [stat, lstat] = await Promise.all([handle.stat(), fsPromises.lstat(filePath)]);
30
+ const [stat, lstat] = await Promise.all([handle.stat(), fs$1.lstat(filePath)]);
31
31
  if (lstat.isSymbolicLink()) throw new SafeOpenError("symlink", "symlink not allowed");
32
32
  if (!stat.isFile()) throw new SafeOpenError("not-file", "not a file");
33
33
  if (stat.ino !== lstat.ino || stat.dev !== lstat.dev) throw new SafeOpenError("path-mismatch", "path changed during read");
34
- const realPath = await fsPromises.realpath(filePath);
35
- const realStat = await fsPromises.stat(realPath);
34
+ const realPath = await fs$1.realpath(filePath);
35
+ const realStat = await fs$1.stat(realPath);
36
36
  if (stat.ino !== realStat.ino || stat.dev !== realStat.dev) throw new SafeOpenError("path-mismatch", "path mismatch");
37
37
  return {
38
38
  handle,
@@ -49,7 +49,7 @@ async function openVerifiedLocalFile(filePath) {
49
49
  async function openFileWithinRoot(params) {
50
50
  let rootReal;
51
51
  try {
52
- rootReal = await fsPromises.realpath(params.rootDir);
52
+ rootReal = await fs$1.realpath(params.rootDir);
53
53
  } catch (err) {
54
54
  if (isNotFoundError(err)) throw new SafeOpenError("not-found", "root dir not found");
55
55
  throw err;
@@ -1,155 +1,155 @@
1
1
  import { _ as expandHomePrefix, g as resolveStateDir, i as isNixMode, l as resolveGatewayLockDir, o as resolveConfigPath, r as STATE_DIR, t as CONFIG_PATH, u as resolveGatewayPort } from "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, E as truncateUtf16Safe, H as getLogger, P as setVerbose, R as colorize, S as shortenHomePath, U as getResolvedLoggerSettings, V as getChildLogger, c as ensureDir, t as CONFIG_DIR, y as resolveUserPath, z as isRich } from "./utils-B-0b9bGM.js";
3
3
  import { d as supportsXHighThinking, l as normalizeVerboseLevel, s as normalizeThinkLevel } from "./thinking-EAliFiVK.js";
4
- import { $ as normalizeOptionalSessionKey, An as countActiveRunsForSession, Ar as extractFileContentFromSource, At as computeBackoff, B as setPreRestartDeferralCheck, Bn as onAgentEvent, Bt as createOutboundSendDeps, C as loadSessionEntry, Dr as DEFAULT_INPUT_IMAGE_MIMES, Dt as handleSlackHttpRequest, Er as DEFAULT_INPUT_IMAGE_MAX_BYTES, F as emitGatewayRestart, Fn as runSubagentAnnounceFlow, Fr as resolveAgentTimeoutMs, G as summarizeRestartSentinel, Gt as runWithModelFallback, I as isGatewaySigusr1RestartExternallyAllowed, In as readLatestAssistantReply, J as normalizeHttpWebhookUrl, Jt as runCliAgent, Kt as getCliSessionId, L as markGatewaySigusr1RestartHandled, Ln as clearAgentRunContext, Mn as listDescendantRunsForRequester, Mr as normalizeMimeList, Mt as agentCommand, N as consumeGatewaySigusr1RestartAuthorization, Nr as resolveInputFileLimits, Or as DEFAULT_INPUT_MAX_REDIRECTS, Ot as readJsonBodyWithLimit, P as deferGatewayRestartUntilIdle, Q as normalizeOptionalAgentId, Rn as emitAgentEvent, Rt as resolveOutboundTarget, Sr as enqueueSystemEvent, U as formatRestartSentinelMessage, Ut as createDefaultDeps, V as consumeRestartSentinel, Vn as registerAgentRunContext, Z as inferLegacyName, Zt as resolveAgentAvatar, _ as resolveAnnounceTargetFromKey, ar as resetAllLanes, at as hasLegacyDeliveryHints, cr as CommandLane, d as getActiveEmbeddedRunCount, et as normalizeOptionalText, ft as stripModelTokens, g as createSymiTools, gn as getTotalPendingReplies, gt as getPluginToolMeta, h as buildDefaultToolPolicyPipelineSteps, i as resolveCronStyleNow, in as isExternalHookSession, ir as getTotalQueueSize, it as buildDeliveryFromLegacyPayload, j as resetDirectoryCache, jn as initSubagentRegistry, jr as extractImageContentFromSource, jt as sleepWithAbort, k as resolveOutboundSessionRoute, kn as countActiveDescendantRuns, kr as DEFAULT_INPUT_TIMEOUT_MS, kt as requestBodyErrorToText, l as runEmbeddedPiAgent, ln as buildHistoryContextFromEntries, lr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, m as applyToolPolicyPipeline, mr as lookupContextTokens, nn as detectSuspiciousPatterns, nr as getActiveTaskCount, nt as normalizeRequiredName, or as setCommandLaneConcurrency, ot as stripLegacyDeliveryFields, p as resolveModelProfile, pr as stripHeartbeatToken, pt as requestHeartbeatNow, qt as setCliSessionId, rn as getHookType, rt as migrateLegacyCronPayload, sr as waitForActiveTasks, tn as buildSafeExternalPrompt, tt as normalizePayloadToSystemText, vt as loadSymiPlugins, z as setGatewaySigusr1RestartPolicy, zn as getAgentRunContext, zt as resolveSessionDeliveryTarget } from "./reply-DVxU0AMq.js";
4
+ import { $ as normalizeOptionalSessionKey, An as countActiveRunsForSession, Ar as extractFileContentFromSource, At as computeBackoff, B as setPreRestartDeferralCheck, Bn as onAgentEvent, Bt as createOutboundSendDeps, C as loadSessionEntry, Dr as DEFAULT_INPUT_IMAGE_MIMES, Dt as handleSlackHttpRequest, Er as DEFAULT_INPUT_IMAGE_MAX_BYTES, F as emitGatewayRestart, Fn as runSubagentAnnounceFlow, Fr as resolveAgentTimeoutMs, G as summarizeRestartSentinel, Gt as runWithModelFallback, I as isGatewaySigusr1RestartExternallyAllowed, In as readLatestAssistantReply, J as normalizeHttpWebhookUrl, Jt as runCliAgent, Kt as getCliSessionId, L as markGatewaySigusr1RestartHandled, Ln as clearAgentRunContext, Mn as listDescendantRunsForRequester, Mr as normalizeMimeList, Mt as agentCommand, N as consumeGatewaySigusr1RestartAuthorization, Nr as resolveInputFileLimits, Or as DEFAULT_INPUT_MAX_REDIRECTS, Ot as readJsonBodyWithLimit, P as deferGatewayRestartUntilIdle, Q as normalizeOptionalAgentId, Rn as emitAgentEvent, Rt as resolveOutboundTarget, Sr as enqueueSystemEvent, U as formatRestartSentinelMessage, Ut as createDefaultDeps, V as consumeRestartSentinel, Vn as registerAgentRunContext, Z as inferLegacyName, Zt as resolveAgentAvatar, _ as resolveAnnounceTargetFromKey, ar as resetAllLanes, at as hasLegacyDeliveryHints, cr as CommandLane, d as getActiveEmbeddedRunCount, et as normalizeOptionalText, ft as stripModelTokens, g as createSymiTools, gn as getTotalPendingReplies, gt as getPluginToolMeta, h as buildDefaultToolPolicyPipelineSteps, i as resolveCronStyleNow, in as isExternalHookSession, ir as getTotalQueueSize, it as buildDeliveryFromLegacyPayload, j as resetDirectoryCache, jn as initSubagentRegistry, jr as extractImageContentFromSource, jt as sleepWithAbort, k as resolveOutboundSessionRoute, kn as countActiveDescendantRuns, kr as DEFAULT_INPUT_TIMEOUT_MS, kt as requestBodyErrorToText, l as runEmbeddedPiAgent, ln as buildHistoryContextFromEntries, lr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, m as applyToolPolicyPipeline, mr as lookupContextTokens, nn as detectSuspiciousPatterns, nr as getActiveTaskCount, nt as normalizeRequiredName, or as setCommandLaneConcurrency, ot as stripLegacyDeliveryFields, p as resolveModelProfile, pr as stripHeartbeatToken, pt as requestHeartbeatNow, qt as setCliSessionId, rn as getHookType, rt as migrateLegacyCronPayload, sr as waitForActiveTasks, tn as buildSafeExternalPrompt, tt as normalizePayloadToSystemText, vt as loadSymiPlugins, z as setGatewaySigusr1RestartPolicy, zn as getAgentRunContext, zt as resolveSessionDeliveryTarget } from "./reply-Ca3slrA3.js";
5
5
  import { S as parseAgentSessionKey, c as normalizeMainKey, f as toAgentRequestSessionKey, l as resolveAgentIdFromSessionKey, m as DEFAULT_ACCOUNT_ID, p as toAgentStoreSessionKey, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID, x as isSubagentSessionKey, y as isCronRunSessionKey } from "./session-key-DCt45XZa.js";
6
- import { r as matchesSkillFilter, t as resolveSymiPackageRoot } from "./symi-root-MF6_6SCS.js";
6
+ import { r as matchesSkillFilter, t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
7
7
  import { C as createInternalHookEvent, S as clearInternalHooks, T as triggerInternalHook, m as createEmptyPluginRegistry, r as DEFAULT_CHAT_CHANNEL, w as registerInternalHook } from "./registry-Cja8eT7G.js";
8
8
  import { a as setConsoleSubsystemFilter, f as defaultRuntime, n as runtimeForLogger, o as setConsoleTimestampPrefix, t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
9
9
  import { i as logDebug, n as runExec, s as logWarn, t as runCommandWithTimeout } from "./exec-CWkblSrI.js";
10
- import { C as ensureAgentWorkspace, D as resolveDefaultAgentWorkspaceDir, O as resolveWorkspaceTemplateDir, a as resolveAgentModelFallbacksOverride, c as resolveAgentWorkspaceDir, d as resolveSessionAgentId, i as resolveAgentDir, l as resolveDefaultAgentId, n as listAgentIds, r as resolveAgentConfig, s as resolveAgentSkillsFilter } from "./agent-scope-BRwEc2pG.js";
11
- import { Gt as DEFAULT_MODEL, Kt as DEFAULT_PROVIDER, Rt as isPidAlive, Wt as DEFAULT_CONTEXT_TOKENS, a as getModelRefStatus, d as resolveAllowedModelRef, h as resolveHooksGmailModel, o as isCliProvider, p as resolveConfiguredModelRef, y as resolveThinkingDefault } from "./model-selection-X1oLh3CE.js";
10
+ import { C as ensureAgentWorkspace, D as resolveDefaultAgentWorkspaceDir, O as resolveWorkspaceTemplateDir, a as resolveAgentModelFallbacksOverride, c as resolveAgentWorkspaceDir, d as resolveSessionAgentId, i as resolveAgentDir, l as resolveDefaultAgentId, n as listAgentIds, r as resolveAgentConfig, s as resolveAgentSkillsFilter } from "./agent-scope-CgUHAtCo.js";
11
+ import { Gt as DEFAULT_MODEL, Kt as DEFAULT_PROVIDER, Rt as isPidAlive, Wt as DEFAULT_CONTEXT_TOKENS, a as getModelRefStatus, d as resolveAllowedModelRef, h as resolveHooksGmailModel, o as isCliProvider, p as resolveConfiguredModelRef, y as resolveThinkingDefault } from "./model-selection-CyFvYcRt.js";
12
12
  import "./github-copilot-token-DAu1a6BX.js";
13
13
  import { t as formatCliCommand } from "./command-format-COaS-S7B.js";
14
14
  import "./boolean-BsqeuxE6.js";
15
15
  import { n as logAcceptedEnvOption, t as isTruthyEnvValue } from "./env-DPCHYPeH.js";
16
16
  import { _ as normalizeGatewayClientMode, h as GATEWAY_CLIENT_NAMES, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, p as GATEWAY_CLIENT_IDS, r as isGatewayCliClient, s as isWebchatClient } from "./message-channel-aT-I_DTX.js";
17
- import "./send-BnuIB59F.js";
18
- import { B as resolveAgentMaxConcurrent, C as parseDurationMs, H as VERSION, U as resolveRuntimeServiceVersion, V as resolveSubagentMaxConcurrent, i as loadConfig, l as writeConfigFile, n as migrateLegacyConfig, o as readConfigFileSnapshot, r as createConfigIO } from "./config-CJMcIRQM.js";
17
+ import "./send-CZr1hVHY.js";
18
+ import { B as resolveAgentMaxConcurrent, C as parseDurationMs, H as VERSION, U as resolveRuntimeServiceVersion, V as resolveSubagentMaxConcurrent, i as loadConfig, l as writeConfigFile, n as migrateLegacyConfig, o as readConfigFileSnapshot, r as createConfigIO } from "./config-CHwyw6l5.js";
19
19
  import { l as isTestDefaultMemorySlotDisabled } from "./manifest-registry-C4BxOMWX.js";
20
20
  import { a as isPathInsideWithRealpath } from "./legacy-names-Be3msDZo.js";
21
- import { d as registerUnhandledRejectionHandler } from "./runner-Cen70krW.js";
22
- import "./image-BiY-PfMh.js";
23
- import "./models-config-CqDdkHJq.js";
21
+ import { d as registerUnhandledRejectionHandler } from "./runner-CUglpiFP.js";
22
+ import "./image-D9uvDTrc.js";
23
+ import "./models-config-qyOXrOli.js";
24
24
  import "./pi-model-discovery-4uUnLc3n.js";
25
- import "./pi-embedded-helpers-DO6u9K2t.js";
26
- import { S as resolveToolProfilePolicy, _ as collectExplicitAllowlist, b as mergeAlsoAllowPolicy } from "./sandbox-BzNrUHpt.js";
27
- import "./chrome-r4RThPxq.js";
25
+ import "./pi-embedded-helpers-CNPyv_ax.js";
26
+ import { S as resolveToolProfilePolicy, _ as collectExplicitAllowlist, b as mergeAlsoAllowPolicy } from "./sandbox-C-T6hOMv.js";
27
+ import "./chrome-DtPkPq9T.js";
28
28
  import { i as enableTailscaleServe, n as disableTailscaleServe, o as getTailnetHostname, r as enableTailscaleFunnel, t as disableTailscaleFunnel } from "./tailscale-D5dKabOc.js";
29
29
  import { t as safeEqualSecret } from "./secret-equal-D7A3Bol7.js";
30
30
  import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-B2SPYrh4.js";
31
31
  import { a as isTrustedProxyAddress, d as resolveGatewayListenHosts, f as resolveHostName, l as resolveClientIp, n as isLoopbackAddress, o as isValidIPv4, r as isLoopbackHost, s as normalizeHostHeader, t as rawDataToString, u as resolveGatewayBindHost } from "./ws-C7EXRv8z.js";
32
32
  import { a as resolveGatewayAuth, c as createAuthRateLimiter, i as isLocalDirectRequest, n as authorizeHttpGatewayConnect, o as AUTH_RATE_LIMIT_SCOPE_DEVICE_TOKEN, r as authorizeWsControlUiGatewayConnect, s as AUTH_RATE_LIMIT_SCOPE_SHARED_SECRET, t as assertGatewayAuthConfigured } from "./auth-B741uFtk.js";
33
- import { g as mergeGatewayTailscaleConfig, h as ensureGatewayStartupAuth } from "./server-context-DUXqnh6l.js";
33
+ import { g as mergeGatewayTailscaleConfig, h as ensureGatewayStartupAuth } from "./server-context-CEpFjqSk.js";
34
34
  import { d as hasBinary } from "./frontmatter-DWQhtOo7.js";
35
- import { r as buildWorkspaceSkillSnapshot } from "./skills-DqQUtOph.js";
36
- import "./routes-CE-ohckF.js";
35
+ import { r as buildWorkspaceSkillSnapshot } from "./skills-6jdJQ5ZL.js";
36
+ import "./routes-Ba9CUQ8M.js";
37
37
  import "./redact-f-Q-hFt_.js";
38
38
  import { a as isErrno, n as formatErrorMessage } from "./errors-BF3TeRH2.js";
39
- import { n as openFileWithinRoot, t as SafeOpenError } from "./fs-safe-CTDvb1DF.js";
40
- import "./paths-CT6jsi4E.js";
39
+ import { n as openFileWithinRoot, t as SafeOpenError } from "./fs-safe-CUjO1ca2.js";
40
+ import "./paths-BBm9fwuG.js";
41
41
  import { t as SsrFBlockedError } from "./ssrf-BCYMnxkM.js";
42
- import { c as detectMime } from "./image-ops-DYbDWaIA.js";
43
- import "./store-DvtcmOKj.js";
44
- import { a as inspectPortUsage, r as ensurePortAvailable, s as formatPortDiagnostics } from "./ports-OZQlocB7.js";
42
+ import { c as detectMime } from "./image-ops-1OJMSAUX.js";
43
+ import "./store-r1DJSDq-.js";
44
+ import { a as inspectPortUsage, r as ensurePortAvailable, s as formatPortDiagnostics } from "./ports-BOmtxoTv.js";
45
45
  import "./trash-DcMh1i4B.js";
46
- import { B as resolveAgentMainSessionKey, H as resolveMainSessionKey, M as evaluateSessionFreshness, P as resolveSessionResetPolicy, U as resolveMainSessionKeyFromConfig, Y as cleanStaleLockFiles, _ as mergeDeliveryContext, d as updateSessionStore, h as deliveryContextFromSession, n as parseSessionThreadInfo, o as loadSessionStore, z as canonicalizeMainSessionAlias } from "./sessions-D5a7H247.js";
47
- import "./dock-BYiRZSgZ.js";
48
- import { n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-BAyxWQSz.js";
49
- import { n as resolveWhatsAppAccount } from "./accounts-Cd816n6l.js";
50
- import "./accounts-CokRskCl.js";
51
- import "./accounts-mN_EcgxC.js";
52
- import { t as buildChannelAccountBindings } from "./bindings-ChzePa8q.js";
46
+ import { B as resolveAgentMainSessionKey, H as resolveMainSessionKey, M as evaluateSessionFreshness, P as resolveSessionResetPolicy, U as resolveMainSessionKeyFromConfig, Y as cleanStaleLockFiles, _ as mergeDeliveryContext, d as updateSessionStore, h as deliveryContextFromSession, n as parseSessionThreadInfo, o as loadSessionStore, z as canonicalizeMainSessionAlias } from "./sessions-DgYpBvse.js";
47
+ import "./dock-BhS32F6E.js";
48
+ import { n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-DKDeQZF0.js";
49
+ import { n as resolveWhatsAppAccount } from "./accounts-DDuIpcln.js";
50
+ import "./accounts-bK-Yqdwx.js";
51
+ import "./accounts-DyJN4_vR.js";
52
+ import { t as buildChannelAccountBindings } from "./bindings-DFaVVCsf.js";
53
53
  import "./logging-w5jq5901.js";
54
- import "./send-dH0xroTu.js";
54
+ import "./send-CPF8hSFp.js";
55
55
  import { c as resolveStorePath, i as resolveSessionTranscriptPath } from "./paths-CyhzMxFA.js";
56
- import "./tool-images-B-pqX3nX.js";
56
+ import "./tool-images-DvUBlqjX.js";
57
57
  import "./tool-display-D8N3rsYt.js";
58
58
  import { t as fetchWithSsrFGuard } from "./fetch-guard-DOPkVbh3.js";
59
- import "./api-key-rotation-CEr3lKih.js";
60
- import "./local-roots-BBeKX7PX.js";
61
- import "./sqlite-BV5ILFtC.js";
62
- import { n as loadModelCatalog } from "./model-catalog-C3NLvWC2.js";
59
+ import "./api-key-rotation-CzuPlV2t.js";
60
+ import "./local-roots-aAFLQGkY.js";
61
+ import "./sqlite-Dx3J_aSE.js";
62
+ import { n as loadModelCatalog } from "./model-catalog-DvBJ8pMD.js";
63
63
  import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-BuceUQDl.js";
64
- import { r as getMachineDisplayName } from "./with-timeout-Cs6_LnHB.js";
65
- import { C as getGlobalHookRunner, T as runGlobalGatewayStopSafely, t as deliverOutboundPayloads } from "./deliver-Um8yyhRA.js";
64
+ import { r as getMachineDisplayName } from "./with-timeout-gmK6RciS.js";
65
+ import { C as getGlobalHookRunner, T as runGlobalGatewayStopSafely, t as deliverOutboundPayloads } from "./deliver-CceEhg3d.js";
66
66
  import { d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, m as isDiagnosticsEnabled } from "./diagnostic-DjBRPfu9.js";
67
67
  import "./diagnostic-session-state-CUslJyKP.js";
68
- import "./send-BEeuDXqy.js";
69
- import "./model-CeeOcylL.js";
70
- import { a as resolveAgentIdentity } from "./reply-prefix-BLOOs1aW.js";
71
- import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-lk6fRiwy.js";
72
- import { i as resolveMemorySearchConfig } from "./manager-C1CfGzZ2.js";
68
+ import "./send-Cutb0ZDY.js";
69
+ import "./model-tWhwnFf8.js";
70
+ import { a as resolveAgentIdentity } from "./reply-prefix-CE2YmmsD.js";
71
+ import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-Ca5r9AUb.js";
72
+ import { i as resolveMemorySearchConfig } from "./manager-D4LJSRyZ.js";
73
73
  import "./retry-BoS4e4X_.js";
74
- import { a as ToolInputError } from "./target-errors-CCz79CmV.js";
74
+ import { a as ToolInputError } from "./target-errors-7AvoVa10.js";
75
75
  import "./chunk-1dhPX1NK.js";
76
- import "./markdown-tables-ZwP14ydw.js";
77
- import "./ir-Dt4hOzxG.js";
76
+ import "./markdown-tables-CEbN0fEm.js";
77
+ import "./ir-DZam9q5M.js";
78
78
  import "./render-CXDO_kgw.js";
79
- import { r as isRestartEnabled } from "./commands-CtocZ4Lg.js";
80
- import "./commands-registry-BZ0ZSQpM.js";
81
- import { At as ErrorCodes, Ft as approveDevicePairing, Gt as updatePairedDeviceMetadata, It as ensureDeviceToken, Kt as verifyDeviceToken, Lt as getPairedDevice, Pt as buildDeviceAuthPayload, Qt as verifyDeviceSignature, R as validateExecApprovalRequestParams, Vt as requestDevicePairing, Yt as deriveDeviceIdFromPublicKey, Zt as normalizeDevicePublicKeyBase64Url, at as validateRequestFrame, jt as errorShape, kt as PROTOCOL_VERSION, n as formatValidationErrors, qt as roleScopesAllow, w as validateConnectParams, z as validateExecApprovalResolveParams } from "./client-BsrZnuSi.js";
82
- import { f as loadGatewayTlsRuntime$1, n as callGateway } from "./call-Dd7-bkfG.js";
83
- import "./pairing-token-AV-MMfVE.js";
79
+ import { r as isRestartEnabled } from "./commands-BNLCWX6e.js";
80
+ import "./commands-registry-BT0-zzs3.js";
81
+ import { At as ErrorCodes, Ft as approveDevicePairing, Gt as updatePairedDeviceMetadata, It as ensureDeviceToken, Kt as verifyDeviceToken, Lt as getPairedDevice, Pt as buildDeviceAuthPayload, Qt as verifyDeviceSignature, R as validateExecApprovalRequestParams, Vt as requestDevicePairing, Yt as deriveDeviceIdFromPublicKey, Zt as normalizeDevicePublicKeyBase64Url, at as validateRequestFrame, jt as errorShape, kt as PROTOCOL_VERSION, n as formatValidationErrors, qt as roleScopesAllow, w as validateConnectParams, z as validateExecApprovalResolveParams } from "./client-CQSyCS4M.js";
82
+ import { f as loadGatewayTlsRuntime$1, n as callGateway } from "./call-CJaS1iRF.js";
83
+ import "./pairing-token-CX3NN_qj.js";
84
84
  import "./channel-activity-BOiuJS3t.js";
85
85
  import "./fetch-DTNGXEzX.js";
86
- import "./tables-C38rzF6E.js";
87
- import "./send-BjdAgYLu.js";
88
- import { a as readChannelAllowFromStoreSync } from "./pairing-store-B8ktu-6j.js";
86
+ import "./tables-BEzT0Da4.js";
87
+ import "./send-tanEMpHN.js";
88
+ import { a as readChannelAllowFromStoreSync } from "./pairing-store-CK726Dzq.js";
89
89
  import "./proxy-DU7W9XSc.js";
90
90
  import { t as formatDocsLink } from "./links-3i1eUga4.js";
91
91
  import { n as runCommandWithRuntime } from "./cli-utils-DN_hM6ov.js";
92
92
  import { t as formatHelpExamples } from "./help-format-B_-M23wP.js";
93
93
  import { n as withProgress } from "./progress-jIePzvGA.js";
94
- import "./resolve-route-BcnaXYvh.js";
95
- import "./replies-BL7IBg12.js";
96
- import { S as registerSkillsChangeListener, c as recordRemoteNodeInfo, d as removeRemoteNodeInfo, f as setSkillsRemoteRegistry, l as refreshRemoteBinsForConnectedNodes, o as getRemoteSkillEligibility, s as primeRemoteSkillsCache, u as refreshRemoteNodeBins, v as updatePairedNodeMetadata, x as getSkillsSnapshotVersion } from "./skill-commands-ZXbEITKi.js";
97
- import "./workspace-dirs-DKu48umx.js";
98
- import "./outbound-attachment-D62E0xDI.js";
94
+ import "./resolve-route-BMoTaVAH.js";
95
+ import "./replies-vgss3_QA.js";
96
+ import { S as registerSkillsChangeListener, c as recordRemoteNodeInfo, d as removeRemoteNodeInfo, f as setSkillsRemoteRegistry, l as refreshRemoteBinsForConnectedNodes, o as getRemoteSkillEligibility, s as primeRemoteSkillsCache, u as refreshRemoteNodeBins, v as updatePairedNodeMetadata, x as getSkillsSnapshotVersion } from "./skill-commands-Cxw-jNxU.js";
97
+ import "./workspace-dirs-GpkFi6Kw.js";
98
+ import "./outbound-attachment-D_QuKi8U.js";
99
99
  import "./delivery-queue-Df1uodAG.js";
100
100
  import { c as hasNonzeroUsage, s as deriveSessionTotalTokens } from "./session-cost-usage-BG4AXrGN.js";
101
- import "./send-C95ZRvja.js";
102
- import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as handleReset, w as resolveAssistantAvatarUrl, x as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-Dixh6cNh.js";
101
+ import "./send-CXxQ_f7L.js";
102
+ import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as handleReset, w as resolveAssistantAvatarUrl, x as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-ZmZYzlq3.js";
103
103
  import "./prompt-style-8JqOYj0q.js";
104
- import "./pairing-labels-27SOKDzJ.js";
104
+ import "./pairing-labels-2S6x2UoV.js";
105
105
  import { n as formatTokenCount, r as formatUsd } from "./usage-format-BzKEDn0q.js";
106
106
  import { t as DEFAULT_EXEC_APPROVAL_TIMEOUT_MS } from "./exec-approvals-Kn31mBcW.js";
107
- import "./nodes-screen-C99kfE1u.js";
108
- import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-juZV2uUv.js";
109
- import "./control-service-B8H3Bqpv.js";
107
+ import "./nodes-screen-VBGXKdLk.js";
108
+ import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-CIDBbw6x.js";
109
+ import "./control-service-Bz7rxLWq.js";
110
110
  import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-BUClb97_.js";
111
- import { n as resolveMessageChannelSelection } from "./channel-selection-DjfBv8kq.js";
111
+ import { n as resolveMessageChannelSelection } from "./channel-selection-DuWs0Aak.js";
112
112
  import { i as onHeartbeatEvent, t as resolveHeartbeatVisibility } from "./heartbeat-visibility-U4BL57eQ.js";
113
113
  import { t as ensureSymiCliOnPath } from "./path-env-MnzRq6nD.js";
114
114
  import "./runtime-guard-B37eizu-.js";
115
- import { t as forceFreePortAndWait } from "./ports-b36gHZbA.js";
115
+ import { t as forceFreePortAndWait } from "./ports-BX0kKI0g.js";
116
116
  import "./catalog-RiADx7MA.js";
117
- import "./skills-status-DS-NZQiq.js";
117
+ import "./skills-status-CURJKnyY.js";
118
118
  import { n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./dangerous-tools-BL-M3lPt.js";
119
119
  import { n as inheritOptionFromParent } from "./command-options-BtDai3oC.js";
120
120
  import { t as resolveChannelDefaultAccountId } from "./helpers-BcGbMZD1.js";
121
- import { t as applyPluginAutoEnable } from "./plugin-auto-enable-Bbm7MwFV.js";
122
- import "./install-safe-path-Qqr_t_tH.js";
123
- import "./skill-scanner-CXg9eeyc.js";
124
- import "./channels-status-issues-BoH1ZJPN.js";
125
- import "./daemon-runtime--RiRUx_2.js";
126
- import "./systemd-AhJEsmIk.js";
127
- import "./service--qMN5DPm.js";
128
- import "./lifecycle-core-BkPSoGM2.js";
129
- import "./systemd-hints-Db0oImvK.js";
121
+ import { t as applyPluginAutoEnable } from "./plugin-auto-enable-BzX1uAKy.js";
122
+ import "./install-safe-path-tCLiMpmO.js";
123
+ import "./skill-scanner-CLs8u6vQ.js";
124
+ import "./channels-status-issues-B_kBkl_u.js";
125
+ import "./daemon-runtime-2mwX-jqj.js";
126
+ import "./systemd-riq8uNJQ.js";
127
+ import "./service-Cl74hx8J.js";
128
+ import "./lifecycle-core-D6LYXpFj.js";
129
+ import "./systemd-hints-BR6gChwm.js";
130
130
  import { t as parsePort$1 } from "./parse-port-Vm8F7Kus.js";
131
- import { n as addGatewayServiceCommands } from "./daemon-cli-Dx4SXRyp.js";
132
- import "./diagnostics-D2yUMZN1.js";
131
+ import { n as addGatewayServiceCommands } from "./daemon-cli-DscwlsKW.js";
132
+ import "./diagnostics-BAMlsVVX.js";
133
133
  import "./table-BTgkRafz.js";
134
134
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-DzLerlJb.js";
135
- import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-Jm_QdQJQ.js";
136
- import { c as probeGateway, s as resolveNodeCommandAllowlist } from "./audit-BSB9NPSO.js";
135
+ import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-BJvwnR5z.js";
136
+ import { c as probeGateway, s as resolveNodeCommandAllowlist } from "./audit-CrITRV6w.js";
137
137
  import { t as discoverGatewayBeacons } from "./bonjour-discovery-BHTF5p0X.js";
138
- import { r as pickGatewaySelfPresence } from "./status-CgPPKk09.js";
139
- import { c as startHeartbeatRunner, i as styleHealthChannelLine, n as getHealthSnapshot, o as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-DkKXiUEF.js";
140
- import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-DqGziq7x.js";
141
- import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-C0oYCI89.js";
142
- import { t as runOnboardingWizard } from "./onboarding-CdlGKa0U.js";
143
- import { _ as getHandshakeTimeoutMs, a as DEFAULT_ASSISTANT_IDENTITY, b as resolveCronRunLogPath, c as upsertPresence, d as DEDUPE_MAX, f as DEDUPE_TTL_MS, g as TICK_INTERVAL_MS, h as MAX_PAYLOAD_BYTES, i as safeParseJson, l as formatError, m as MAX_BUFFERED_BYTES, n as handleGatewayRequest, o as resolveAssistantIdentity, p as HEALTH_REFRESH_INTERVAL_MS, r as broadcastPresenceSnapshot, s as listSystemPresence, t as coreGatewayHandlers, u as loadVoiceWakeConfig, v as abortChatRunById, x as startGatewayConfigReloader, y as appendCronRunLog } from "./server-methods-BgBq7KRL.js";
144
- import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-0et2AR44.js";
138
+ import { r as pickGatewaySelfPresence } from "./status-BXW5l4sd.js";
139
+ import { c as startHeartbeatRunner, i as styleHealthChannelLine, n as getHealthSnapshot, o as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-CypF_2ZD.js";
140
+ import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Z947tKLt.js";
141
+ import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-CtckACbb.js";
142
+ import { t as runOnboardingWizard } from "./onboarding-CXWUjdM5.js";
143
+ import { _ as getHandshakeTimeoutMs, a as DEFAULT_ASSISTANT_IDENTITY, b as resolveCronRunLogPath, c as upsertPresence, d as DEDUPE_MAX, f as DEDUPE_TTL_MS, g as TICK_INTERVAL_MS, h as MAX_PAYLOAD_BYTES, i as safeParseJson, l as formatError, m as MAX_BUFFERED_BYTES, n as handleGatewayRequest, o as resolveAssistantIdentity, p as HEALTH_REFRESH_INTERVAL_MS, r as broadcastPresenceSnapshot, s as listSystemPresence, t as coreGatewayHandlers, u as loadVoiceWakeConfig, v as abortChatRunById, x as startGatewayConfigReloader, y as appendCronRunLog } from "./server-methods-BYOkyf-q.js";
144
+ import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-DeJt9kAO.js";
145
145
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-Bv0M7ka7.js";
146
- import "./agents.config-u_ibObha.js";
147
- import "./dm-policy-shared-BCSw0GJS.js";
148
- import "./node-service-CJygtY5M.js";
149
- import "./status.update-CmGpjKSr.js";
150
- import "./skills-install-DjcTy3CT.js";
151
- import "./update-runner-BgzyPjF5.js";
152
- import { t as resolveAgentSessionDirs } from "./session-dirs-D3qlvucD.js";
146
+ import "./agents.config-DCE3RGr9.js";
147
+ import "./dm-policy-shared-Bh3TbexU.js";
148
+ import "./node-service-Cxz4e-Qd.js";
149
+ import "./status.update-DtwCUTf-.js";
150
+ import "./skills-install-D67isO1L.js";
151
+ import "./update-runner-Bacq0oLK.js";
152
+ import { t as resolveAgentSessionDirs } from "./session-dirs-DWgIYmAt.js";
153
153
  import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-CYxdoAlY.js";
154
154
  import { fileURLToPath, pathToFileURL } from "node:url";
155
155
  import * as fsSync from "node:fs";
@@ -158,7 +158,7 @@ import os from "node:os";
158
158
  import path from "node:path";
159
159
  import JSON5 from "json5";
160
160
  import chalk from "chalk";
161
- import fsPromises from "node:fs/promises";
161
+ import fs$1 from "node:fs/promises";
162
162
  import { spawn } from "node:child_process";
163
163
  import crypto, { createHash, randomBytes, randomUUID } from "node:crypto";
164
164
  import { z } from "zod";
@@ -1151,7 +1151,7 @@ function shouldSkipCheck(allowInTests) {
1151
1151
  }
1152
1152
  async function readState(statePath) {
1153
1153
  try {
1154
- const raw = await fsPromises.readFile(statePath, "utf-8");
1154
+ const raw = await fs$1.readFile(statePath, "utf-8");
1155
1155
  const parsed = JSON.parse(raw);
1156
1156
  return parsed && typeof parsed === "object" ? parsed : {};
1157
1157
  } catch {
@@ -1159,8 +1159,8 @@ async function readState(statePath) {
1159
1159
  }
1160
1160
  }
1161
1161
  async function writeState(statePath, state) {
1162
- await fsPromises.mkdir(path.dirname(statePath), { recursive: true });
1163
- await fsPromises.writeFile(statePath, JSON.stringify(state, null, 2), "utf-8");
1162
+ await fs$1.mkdir(path.dirname(statePath), { recursive: true });
1163
+ await fs$1.writeFile(statePath, JSON.stringify(state, null, 2), "utf-8");
1164
1164
  }
1165
1165
  function sameUpdateAvailable(a, b) {
1166
1166
  if (a === b) return true;
@@ -1866,17 +1866,22 @@ function createChannelManager(opts) {
1866
1866
  //#region src/gateway/server-chat.ts
1867
1867
  /**
1868
1868
  * Strip Gemma's self-verification monologue blocks from the final text.
1869
- * These follow a consistent pattern appended after the real answer:
1869
+ * Gemma produces several variants of this pattern:
1870
1870
  * "I have addressed the request fully.\n**Verification:**\n..."
1871
+ * "I've reviewed my response against your request:\n1. Requirements:..."
1872
+ * "**Verification:**\n1. **Address requirements:**..."
1871
1873
  */
1872
- const MONOLOGUE_PATTERN = /\n*I have addressed the request fully\.?\s*(?:\n\*\*Verification:\*\*[\s\S]*)?$/;
1873
- const MONOLOGUE_FALLBACK_PATTERNS = [/\n*\*\*Verification:\*\*\s*\n[\s\S]*?Everything is correct\.?\s*✅?\s*$/, /\n*Address requirements:[\s\S]*?Everything is correct\.?\s*✅?\s*$/];
1874
+ const MONOLOGUE_PATTERNS = [
1875
+ /\n*I have addressed the request fully\.?\s*(?:\n[\s\S]*)?$/,
1876
+ /\n*I['']ve reviewed my response[\s\S]*$/,
1877
+ /\n*\*?\*?Verification:?\*?\*?\s*\n[\s\S]*?(?:Everything is correct|All requirements met)\.?\s*✅?\s*$/,
1878
+ /\n*(?:\*?\*?)?(?:Status Check|Address requirements|Requirements):?(?:\*?\*?)?\s*\n[\s\S]*?(?:Everything is correct|All requirements met|is correct)\.?\s*✅?\s*$/,
1879
+ /\n*\d+\.\s*\*?\*?Requirements:?\*?\*?[\s\S]*?\d+\.\s*\*?\*?Verification:?\*?\*?[\s\S]*$/
1880
+ ];
1874
1881
  function suppressMonologueBlock(text) {
1875
- let result = text.replace(MONOLOGUE_PATTERN, "");
1876
- if (result !== text) return result.trim();
1877
- for (const pattern of MONOLOGUE_FALLBACK_PATTERNS) {
1878
- result = text.replace(pattern, "");
1879
- if (result !== text) return result.trim();
1882
+ for (const pattern of MONOLOGUE_PATTERNS) {
1883
+ const result = text.replace(pattern, "");
1884
+ if (result !== text && result.trim()) return result.trim();
1880
1885
  }
1881
1886
  return text;
1882
1887
  }
@@ -6473,7 +6478,7 @@ function normalizeAgentPayload(payload) {
6473
6478
  async function startBrowserControlServerIfEnabled() {
6474
6479
  if (isTruthyEnvValue(process.env.SYMI_SKIP_BROWSER_CONTROL_SERVER)) return null;
6475
6480
  const override = process.env.SYMI_BROWSER_CONTROL_MODULE?.trim();
6476
- const mod = override ? await import(override) : await import("./control-service-B8H3Bqpv.js").then((n) => n.t);
6481
+ const mod = override ? await import(override) : await import("./control-service-Bz7rxLWq.js").then((n) => n.t);
6477
6482
  const start = typeof mod.startBrowserControlServiceFromConfig === "function" ? mod.startBrowserControlServiceFromConfig : mod.startBrowserControlServerFromConfig;
6478
6483
  const stop = typeof mod.stopBrowserControlService === "function" ? mod.stopBrowserControlService : mod.stopBrowserControlServer;
6479
6484
  if (!start) return null;
@@ -6701,7 +6706,7 @@ async function resolveFileWithinRoot(rootReal, urlPath) {
6701
6706
  if (normalized.endsWith("/")) return await tryOpen(path.posix.join(rel, "index.html"));
6702
6707
  const candidate = path.join(rootReal, rel);
6703
6708
  try {
6704
- const st = await fsPromises.lstat(candidate);
6709
+ const st = await fs$1.lstat(candidate);
6705
6710
  if (st.isSymbolicLink()) return null;
6706
6711
  if (st.isDirectory()) return await tryOpen(path.posix.join(rel, "index.html"));
6707
6712
  } catch {}
@@ -6738,8 +6743,8 @@ async function resolveA2uiRoot() {
6738
6743
  for (const dir of candidates) try {
6739
6744
  const indexPath = path.join(dir, "index.html");
6740
6745
  const bundlePath = path.join(dir, "a2ui.bundle.js");
6741
- await fsPromises.stat(indexPath);
6742
- await fsPromises.stat(bundlePath);
6746
+ await fs$1.stat(indexPath);
6747
+ await fs$1.stat(bundlePath);
6743
6748
  return dir;
6744
6749
  } catch {}
6745
6750
  return null;
@@ -6748,7 +6753,7 @@ async function resolveA2uiRootReal() {
6748
6753
  if (cachedA2uiRootReal !== void 0 && (cachedA2uiRootReal !== null || Date.now() - cachedA2uiResolvedAtMs < A2UI_ROOT_RETRY_NULL_AFTER_MS)) return cachedA2uiRootReal;
6749
6754
  if (!resolvingA2uiRoot) resolvingA2uiRoot = (async () => {
6750
6755
  const root = await resolveA2uiRoot();
6751
- cachedA2uiRootReal = root ? await fsPromises.realpath(root) : null;
6756
+ cachedA2uiRootReal = root ? await fs$1.realpath(root) : null;
6752
6757
  cachedA2uiResolvedAtMs = Date.now();
6753
6758
  resolvingA2uiRoot = null;
6754
6759
  return cachedA2uiRootReal;
@@ -6969,13 +6974,13 @@ function normalizeBasePath(rawPath) {
6969
6974
  }
6970
6975
  async function prepareCanvasRoot(rootDir) {
6971
6976
  await ensureDir(rootDir);
6972
- const rootReal = await fsPromises.realpath(rootDir);
6977
+ const rootReal = await fs$1.realpath(rootDir);
6973
6978
  try {
6974
6979
  const indexPath = path.join(rootReal, "index.html");
6975
- await fsPromises.stat(indexPath);
6980
+ await fs$1.stat(indexPath);
6976
6981
  } catch {
6977
6982
  try {
6978
- await fsPromises.writeFile(path.join(rootReal, "index.html"), defaultIndexHTML(), "utf8");
6983
+ await fs$1.writeFile(path.join(rootReal, "index.html"), defaultIndexHTML(), "utf8");
6979
6984
  } catch {}
6980
6985
  }
6981
6986
  return rootReal;
@@ -9669,7 +9674,7 @@ function resolveGatewayOwnerStatus(pid, payload, platform) {
9669
9674
  }
9670
9675
  async function readLockPayload(lockPath) {
9671
9676
  try {
9672
- const raw = await fsPromises.readFile(lockPath, "utf8");
9677
+ const raw = await fs$1.readFile(lockPath, "utf8");
9673
9678
  const parsed = JSON.parse(raw);
9674
9679
  if (typeof parsed.pid !== "number") return null;
9675
9680
  if (typeof parsed.createdAt !== "string") return null;
@@ -9703,11 +9708,11 @@ async function acquireGatewayLock(opts = {}) {
9703
9708
  const staleMs = opts.staleMs ?? DEFAULT_STALE_MS;
9704
9709
  const platform = opts.platform ?? process.platform;
9705
9710
  const { lockPath, configPath } = resolveGatewayLockPath(env);
9706
- await fsPromises.mkdir(path.dirname(lockPath), { recursive: true });
9711
+ await fs$1.mkdir(path.dirname(lockPath), { recursive: true });
9707
9712
  const startedAt = Date.now();
9708
9713
  let lastPayload = null;
9709
9714
  while (Date.now() - startedAt < timeoutMs) try {
9710
- const handle = await fsPromises.open(lockPath, "wx");
9715
+ const handle = await fs$1.open(lockPath, "wx");
9711
9716
  const startTime = platform === "linux" ? readLinuxStartTime(process.pid) : null;
9712
9717
  const payload = {
9713
9718
  pid: process.pid,
@@ -9721,7 +9726,7 @@ async function acquireGatewayLock(opts = {}) {
9721
9726
  configPath,
9722
9727
  release: async () => {
9723
9728
  await handle.close().catch(() => void 0);
9724
- await fsPromises.rm(lockPath, { force: true });
9729
+ await fs$1.rm(lockPath, { force: true });
9725
9730
  }
9726
9731
  };
9727
9732
  } catch (err) {
@@ -9730,7 +9735,7 @@ async function acquireGatewayLock(opts = {}) {
9730
9735
  const ownerPid = lastPayload?.pid;
9731
9736
  const ownerStatus = ownerPid ? resolveGatewayOwnerStatus(ownerPid, lastPayload, platform) : "unknown";
9732
9737
  if (ownerStatus === "dead" && ownerPid) {
9733
- await fsPromises.rm(lockPath, { force: true });
9738
+ await fs$1.rm(lockPath, { force: true });
9734
9739
  continue;
9735
9740
  }
9736
9741
  if (ownerStatus !== "alive") {
@@ -9740,13 +9745,13 @@ async function acquireGatewayLock(opts = {}) {
9740
9745
  stale = Number.isFinite(createdAt) ? Date.now() - createdAt > staleMs : false;
9741
9746
  }
9742
9747
  if (!stale) try {
9743
- const st = await fsPromises.stat(lockPath);
9748
+ const st = await fs$1.stat(lockPath);
9744
9749
  stale = Date.now() - st.mtimeMs > staleMs;
9745
9750
  } catch {
9746
9751
  stale = true;
9747
9752
  }
9748
9753
  if (stale) {
9749
- await fsPromises.rm(lockPath, { force: true });
9754
+ await fs$1.rm(lockPath, { force: true });
9750
9755
  continue;
9751
9756
  }
9752
9757
  }
@@ -11651,7 +11656,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
11651
11656
  if (!minimalTestGateway) cron.start().catch((err) => logCron.error(`failed to start: ${String(err)}`));
11652
11657
  if (!minimalTestGateway) (async () => {
11653
11658
  const { recoverPendingDeliveries } = await import("./delivery-queue-Df1uodAG.js").then((n) => n.n);
11654
- const { deliverOutboundPayloads } = await import("./deliver-Um8yyhRA.js").then((n) => n.n);
11659
+ const { deliverOutboundPayloads } = await import("./deliver-CceEhg3d.js").then((n) => n.n);
11655
11660
  await recoverPendingDeliveries({
11656
11661
  deliver: deliverOutboundPayloads,
11657
11662
  log: log.child("delivery-recovery"),
@@ -11724,7 +11729,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
11724
11729
  });
11725
11730
  let glassUiBridgeCleanup = null;
11726
11731
  if (!minimalTestGateway) {
11727
- const { createGlassUiBridge } = await import("./glass-ui-ws-BmQAULMj.js");
11732
+ const { createGlassUiBridge } = await import("./glass-ui-ws-Bj1IuJXt.js");
11728
11733
  glassUiBridgeCleanup = createGlassUiBridge({
11729
11734
  wss: glassUiWss,
11730
11735
  context: gatewayRequestContext,
@@ -21,7 +21,7 @@ import "./pairing-token-Byh6drgn.js";
21
21
  import { t as safeEqualSecret } from "./secret-equal-CbntzRkh.js";
22
22
  import { a as isValidIPv4, c as resolveClientIp, d as resolveHostName, f as rawDataToString, i as isTrustedProxyAddress, l as resolveGatewayBindHost, n as isLoopbackHost, o as normalizeHostHeader, t as isLoopbackAddress, u as resolveGatewayListenHosts } from "./net-DZ5Ayk-W.js";
23
23
  import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-Cmumpn76.js";
24
- import { $ as resolveCronStyleNow, $t as setGatewaySigusr1RestartPolicy, An as DEFAULT_INPUT_MAX_REDIRECTS, At as normalizeOptionalAgentId, C as readJsonBodyWithLimit, Cr as getAgentRunContext, Ct as summarizeRestartSentinel, D as agentCommand, E as sleepWithAbort, Et as normalizeHttpWebhookUrl, Fn as resolveInputFileLimits, Ft as migrateLegacyCronPayload, Ht as detectSuspiciousPatterns, It as buildDeliveryFromLegacyPayload, J as getTotalPendingReplies, Jt as deferGatewayRestartUntilIdle, Ln as resolveAgentTimeoutMs, Lt as hasLegacyDeliveryHints, M as createDefaultDeps, Mn as extractFileContentFromSource, Mt as normalizeOptionalText, Nn as extractImageContentFromSource, Nt as normalizePayloadToSystemText, On as DEFAULT_INPUT_IMAGE_MAX_BYTES, P as resolveAgentAvatar, Pn as normalizeMimeList, Pt as normalizeRequiredName, Rt as stripLegacyDeliveryFields, S as handleSlackHttpRequest, Sr as emitAgentEvent, T as computeBackoff, Tr as registerAgentRunContext, Ut as getHookType, V as buildHistoryContextFromEntries, Vt as buildSafeExternalPrompt, Wt as isExternalHookSession, Xt as isGatewaySigusr1RestartExternallyAllowed, Yt as emitGatewayRestart, Zt as markGatewaySigusr1RestartHandled, _ as stripModelTokens, _t as runWithModelFallback, at as readLatestAssistantReply, b as loadSymiPlugins, br as stripHeartbeatToken, d as getActiveEmbeddedRunCount, dr as getTotalQueueSize, en as setPreRestartDeferralCheck, et as getCliSessionId, fn as requestHeartbeatNow, fr as resetAllLanes, ft as resolveOutboundTarget, gr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, h as buildDefaultToolPolicyPipelineSteps, hr as CommandLane, ht as resetDirectoryCache, i as listDescendantRunsForRequester, it as createSymiTools, j as createOutboundSendDeps, jn as DEFAULT_INPUT_TIMEOUT_MS, jt as normalizeOptionalSessionKey, kn as DEFAULT_INPUT_IMAGE_MIMES, kt as inferLegacyName, l as runEmbeddedPiAgent, lr as getActiveTaskCount, lt as resolveOutboundSessionRoute, m as applyToolPolicyPipeline, mr as waitForActiveTasks, n as countActiveRunsForSession, nt as runCliAgent, ot as resolveAnnounceTargetFromKey, p as resolveModelProfile, pr as setCommandLaneConcurrency, pt as resolveSessionDeliveryTarget, qt as consumeGatewaySigusr1RestartAuthorization, r as initSubagentRegistry, s as runSubagentAnnounceFlow, t as countActiveDescendantRuns, tt as setCliSessionId, v as getPluginToolMeta, w as requestBodyErrorToText, wn as enqueueSystemEvent, wr as onAgentEvent, xr as clearAgentRunContext, xt as formatRestartSentinelMessage, yt as consumeRestartSentinel } from "./subagent-registry-CBklD0OL.js";
24
+ import { $ as resolveCronStyleNow, $t as setGatewaySigusr1RestartPolicy, An as DEFAULT_INPUT_MAX_REDIRECTS, At as normalizeOptionalAgentId, C as readJsonBodyWithLimit, Cr as getAgentRunContext, Ct as summarizeRestartSentinel, D as agentCommand, E as sleepWithAbort, Et as normalizeHttpWebhookUrl, Fn as resolveInputFileLimits, Ft as migrateLegacyCronPayload, Ht as detectSuspiciousPatterns, It as buildDeliveryFromLegacyPayload, J as getTotalPendingReplies, Jt as deferGatewayRestartUntilIdle, Ln as resolveAgentTimeoutMs, Lt as hasLegacyDeliveryHints, M as createDefaultDeps, Mn as extractFileContentFromSource, Mt as normalizeOptionalText, Nn as extractImageContentFromSource, Nt as normalizePayloadToSystemText, On as DEFAULT_INPUT_IMAGE_MAX_BYTES, P as resolveAgentAvatar, Pn as normalizeMimeList, Pt as normalizeRequiredName, Rt as stripLegacyDeliveryFields, S as handleSlackHttpRequest, Sr as emitAgentEvent, T as computeBackoff, Tr as registerAgentRunContext, Ut as getHookType, V as buildHistoryContextFromEntries, Vt as buildSafeExternalPrompt, Wt as isExternalHookSession, Xt as isGatewaySigusr1RestartExternallyAllowed, Yt as emitGatewayRestart, Zt as markGatewaySigusr1RestartHandled, _ as stripModelTokens, _t as runWithModelFallback, at as readLatestAssistantReply, b as loadSymiPlugins, br as stripHeartbeatToken, d as getActiveEmbeddedRunCount, dr as getTotalQueueSize, en as setPreRestartDeferralCheck, et as getCliSessionId, fn as requestHeartbeatNow, fr as resetAllLanes, ft as resolveOutboundTarget, gr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, h as buildDefaultToolPolicyPipelineSteps, hr as CommandLane, ht as resetDirectoryCache, i as listDescendantRunsForRequester, it as createSymiTools, j as createOutboundSendDeps, jn as DEFAULT_INPUT_TIMEOUT_MS, jt as normalizeOptionalSessionKey, kn as DEFAULT_INPUT_IMAGE_MIMES, kt as inferLegacyName, l as runEmbeddedPiAgent, lr as getActiveTaskCount, lt as resolveOutboundSessionRoute, m as applyToolPolicyPipeline, mr as waitForActiveTasks, n as countActiveRunsForSession, nt as runCliAgent, ot as resolveAnnounceTargetFromKey, p as resolveModelProfile, pr as setCommandLaneConcurrency, pt as resolveSessionDeliveryTarget, qt as consumeGatewaySigusr1RestartAuthorization, r as initSubagentRegistry, s as runSubagentAnnounceFlow, t as countActiveDescendantRuns, tt as setCliSessionId, v as getPluginToolMeta, w as requestBodyErrorToText, wn as enqueueSystemEvent, wr as onAgentEvent, xr as clearAgentRunContext, xt as formatRestartSentinelMessage, yt as consumeRestartSentinel } from "./subagent-registry-CbTbJKLs.js";
25
25
  import { D as resolveSessionResetPolicy, F as resolveMainSessionKey, H as cleanStaleLockFiles, I as resolveMainSessionKeyFromConfig, K as mergeDeliveryContext, M as canonicalizeMainSessionAlias, N as resolveAgentMainSessionKey, T as evaluateSessionFreshness, W as deliveryContextFromSession, d as updateSessionStore, n as parseSessionThreadInfo, o as loadSessionStore } from "./sessions-CJXnZVjR.js";
26
26
  import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-Csntmwwn.js";
27
27
  import { n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CwSlLxM8.js";
@@ -130,20 +130,20 @@ import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } fr
130
130
  import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-BtG9rny3.js";
131
131
  import { c as probeGateway, s as resolveNodeCommandAllowlist } from "./audit-Byo5jCLN.js";
132
132
  import { t as discoverGatewayBeacons } from "./bonjour-discovery-CA_XIzr_.js";
133
- import { i as pickGatewaySelfPresence } from "./status-DxodHhzX.js";
134
- import { a as styleHealthChannelLine, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-CboWXJkq.js";
133
+ import { i as pickGatewaySelfPresence } from "./status-BxbbINLV.js";
134
+ import { a as styleHealthChannelLine, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-Bst5HnLF.js";
135
135
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-BseSWee1.js";
136
136
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-ZdimP1aU.js";
137
- import { t as runOnboardingWizard } from "./onboarding-DhIEUmp5.js";
138
- import { _ as getHandshakeTimeoutMs, a as DEFAULT_ASSISTANT_IDENTITY, b as resolveCronRunLogPath, c as upsertPresence, d as DEDUPE_MAX, f as DEDUPE_TTL_MS, g as TICK_INTERVAL_MS, h as MAX_PAYLOAD_BYTES, i as safeParseJson, l as formatError, m as MAX_BUFFERED_BYTES, n as handleGatewayRequest, o as resolveAssistantIdentity, p as HEALTH_REFRESH_INTERVAL_MS, r as broadcastPresenceSnapshot, s as listSystemPresence, t as coreGatewayHandlers, u as loadVoiceWakeConfig, v as abortChatRunById, x as startGatewayConfigReloader, y as appendCronRunLog } from "./server-methods-B9alalq5.js";
139
- import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-ByyOJyDl.js";
137
+ import { t as runOnboardingWizard } from "./onboarding-DWs6tHZ9.js";
138
+ import { _ as getHandshakeTimeoutMs, a as DEFAULT_ASSISTANT_IDENTITY, b as resolveCronRunLogPath, c as upsertPresence, d as DEDUPE_MAX, f as DEDUPE_TTL_MS, g as TICK_INTERVAL_MS, h as MAX_PAYLOAD_BYTES, i as safeParseJson, l as formatError, m as MAX_BUFFERED_BYTES, n as handleGatewayRequest, o as resolveAssistantIdentity, p as HEALTH_REFRESH_INTERVAL_MS, r as broadcastPresenceSnapshot, s as listSystemPresence, t as coreGatewayHandlers, u as loadVoiceWakeConfig, v as abortChatRunById, x as startGatewayConfigReloader, y as appendCronRunLog } from "./server-methods-b_Qod4tt.js";
139
+ import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-CFkFVwEz.js";
140
140
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-CzWeiE-Y.js";
141
- import "./agents.config-Dt7B_P5o.js";
141
+ import "./agents.config-DTUAM1AG.js";
142
142
  import "./dm-policy-shared-DJ-61hCT.js";
143
143
  import "./node-service-fcZExd22.js";
144
144
  import "./status.update-DbmZz0Aq.js";
145
145
  import "./skills-install-1ZdwGTnh.js";
146
- import "./update-runner-CmZW3aeK.js";
146
+ import "./update-runner-B0NdgPvD.js";
147
147
  import { t as resolveAgentSessionDirs } from "./session-dirs-DWgIYmAt.js";
148
148
  import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-B51TF6q3.js";
149
149
  import { n as forceFreePortAndWait } from "./ports-Dn122MUd.js";
@@ -1862,17 +1862,22 @@ function createChannelManager(opts) {
1862
1862
  //#region src/gateway/server-chat.ts
1863
1863
  /**
1864
1864
  * Strip Gemma's self-verification monologue blocks from the final text.
1865
- * These follow a consistent pattern appended after the real answer:
1865
+ * Gemma produces several variants of this pattern:
1866
1866
  * "I have addressed the request fully.\n**Verification:**\n..."
1867
+ * "I've reviewed my response against your request:\n1. Requirements:..."
1868
+ * "**Verification:**\n1. **Address requirements:**..."
1867
1869
  */
1868
- const MONOLOGUE_PATTERN = /\n*I have addressed the request fully\.?\s*(?:\n\*\*Verification:\*\*[\s\S]*)?$/;
1869
- const MONOLOGUE_FALLBACK_PATTERNS = [/\n*\*\*Verification:\*\*\s*\n[\s\S]*?Everything is correct\.?\s*✅?\s*$/, /\n*Address requirements:[\s\S]*?Everything is correct\.?\s*✅?\s*$/];
1870
+ const MONOLOGUE_PATTERNS = [
1871
+ /\n*I have addressed the request fully\.?\s*(?:\n[\s\S]*)?$/,
1872
+ /\n*I['']ve reviewed my response[\s\S]*$/,
1873
+ /\n*\*?\*?Verification:?\*?\*?\s*\n[\s\S]*?(?:Everything is correct|All requirements met)\.?\s*✅?\s*$/,
1874
+ /\n*(?:\*?\*?)?(?:Status Check|Address requirements|Requirements):?(?:\*?\*?)?\s*\n[\s\S]*?(?:Everything is correct|All requirements met|is correct)\.?\s*✅?\s*$/,
1875
+ /\n*\d+\.\s*\*?\*?Requirements:?\*?\*?[\s\S]*?\d+\.\s*\*?\*?Verification:?\*?\*?[\s\S]*$/
1876
+ ];
1870
1877
  function suppressMonologueBlock(text) {
1871
- let result = text.replace(MONOLOGUE_PATTERN, "");
1872
- if (result !== text) return result.trim();
1873
- for (const pattern of MONOLOGUE_FALLBACK_PATTERNS) {
1874
- result = text.replace(pattern, "");
1875
- if (result !== text) return result.trim();
1878
+ for (const pattern of MONOLOGUE_PATTERNS) {
1879
+ const result = text.replace(pattern, "");
1880
+ if (result !== text && result.trim()) return result.trim();
1876
1881
  }
1877
1882
  return text;
1878
1883
  }
@@ -11720,7 +11725,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
11720
11725
  });
11721
11726
  let glassUiBridgeCleanup = null;
11722
11727
  if (!minimalTestGateway) {
11723
- const { createGlassUiBridge } = await import("./glass-ui-ws-BAub_JoN.js");
11728
+ const { createGlassUiBridge } = await import("./glass-ui-ws-rGIAkViC.js");
11724
11729
  glassUiBridgeCleanup = createGlassUiBridge({
11725
11730
  wss: glassUiWss,
11726
11731
  context: gatewayRequestContext,
@@ -1,5 +1,5 @@
1
1
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-aT-I_DTX.js";
2
- import { n as callGateway } from "./call-Dd7-bkfG.js";
2
+ import { n as callGateway } from "./call-CJaS1iRF.js";
3
3
  import { n as withProgress } from "./progress-jIePzvGA.js";
4
4
 
5
5
  //#region src/cli/gateway-rpc.ts