@symerian/symi 2.8.16 → 2.9.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 (215) hide show
  1. package/dist/{acp-cli-BgR7mxTS.js → acp-cli-BTu3_kZ1.js} +2 -2
  2. package/dist/{acp-cli-D1JYg9c1.js → acp-cli-Bav1bRj2.js} +2 -2
  3. package/dist/{agents-D6V12K_e.js → agents-CvNeiuSB.js} +5 -5
  4. package/dist/{agents.config-C0iGGY9q.js → agents.config-BCgY5FjE.js} +1 -1
  5. package/dist/{agents.config-BIIkG8rN.js → agents.config-Ct64cGQ8.js} +1 -1
  6. package/dist/{audio-preflight-rjCWpcfE.js → audio-preflight-Cb-T0r6e.js} +4 -4
  7. package/dist/{audit-xiwEIT96.js → audit-C9nq99IR.js} +2 -2
  8. package/dist/{audit-Dr_8rC6G.js → audit-CuKP86d_.js} +2 -2
  9. package/dist/{auth-choice-BcCUgEa4.js → auth-choice-ChFU9OCF.js} +2 -2
  10. package/dist/{auth-choice-jyLLyEpy.js → auth-choice-DmMyKZX4.js} +2 -2
  11. package/dist/{banner-DSRsscTp.js → banner-Bf46tqiY.js} +1 -1
  12. package/dist/{browser-cli-IXepRCZR.js → browser-cli-ClgQ-C8E.js} +3 -3
  13. package/dist/{browser-cli-BQeCPbES.js → browser-cli-DuPPIcuV.js} +3 -3
  14. package/dist/build-info.json +3 -3
  15. package/dist/bundled/boot-md/handler.js +7 -7
  16. package/dist/bundled/session-memory/handler.js +7 -7
  17. package/dist/{call-BkJK3eYP.js → call-DYfKEdwh.js} +2 -1
  18. package/dist/{call-CAGvQYXj.js → call-M4YyUnwu.js} +2 -1
  19. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  20. package/dist/{channel-options-Cr_if7it.js → channel-options-Bqc2VCgt.js} +1 -1
  21. package/dist/{channel-options-BSdsxwj0.js → channel-options-D4a0ZJ72.js} +1 -1
  22. package/dist/{channel-web-C3gcPe4C.js → channel-web-YNC2xS5K.js} +1 -1
  23. package/dist/{channels-cli-O7MxdB1l.js → channels-cli-BFJcNLbB.js} +9 -9
  24. package/dist/{channels-cli-Bn6mTlYq.js → channels-cli-h3GnmmM9.js} +9 -9
  25. package/dist/{chrome-C08Z0XAa.js → chrome-ROtrXlNs.js} +7 -7
  26. package/dist/cli/daemon-cli.js +1 -1
  27. package/dist/{cli-RIwsXnB-.js → cli-BX54CAM7.js} +6 -6
  28. package/dist/{cli-CLOf6U-k.js → cli-BpQlSGVs.js} +6 -6
  29. package/dist/{client-Cmq13-uF.js → client-CJIMV1WD.js} +36 -1
  30. package/dist/{client-CYsBIR3j.js → client-pd8kwOFJ.js} +36 -1
  31. package/dist/{command-registry-BiznuVYK.js → command-registry-BiRjJ2Sy.js} +11 -11
  32. package/dist/{completion-cli-BVG9ZtBG.js → completion-cli-BYXofVqv.js} +2 -2
  33. package/dist/{completion-cli-D-xVtDhj.js → completion-cli-C8K5J1ld.js} +1 -1
  34. package/dist/{config-cli-CDTQQFyj.js → config-cli-BPPD3xqE.js} +1 -1
  35. package/dist/{config-cli-zd2upqe_.js → config-cli-Deoo6r2K.js} +1 -1
  36. package/dist/{configure-Cu4CiLWY.js → configure-BKHxUAAh.js} +6 -6
  37. package/dist/{configure-BHdczngQ.js → configure-D4f0P3bH.js} +6 -6
  38. package/dist/control-ui/css/style.css +130 -0
  39. package/dist/control-ui/index.html +11 -0
  40. package/dist/control-ui/js/history.js +288 -8
  41. package/dist/{cron-cli-Dq2FEfK1.js → cron-cli-BEdmHCWZ.js} +3 -3
  42. package/dist/{cron-cli-CZCm3aLt.js → cron-cli-C8-Gv5dd.js} +3 -3
  43. package/dist/{daemon-cli-CweMes2K.js → daemon-cli-BFoJGCHZ.js} +2 -2
  44. package/dist/{daemon-cli-B2_uIgDM.js → daemon-cli-D6wyb9bo.js} +2 -2
  45. package/dist/daemon-cli.js +36 -0
  46. package/dist/{deliver-qUx-eLKt.js → deliver-B0OUq6RP.js} +1 -1
  47. package/dist/{devices-cli-DeoPyzAd.js → devices-cli-BXc6DPkC.js} +2 -2
  48. package/dist/{devices-cli-3ui-Wcaj.js → devices-cli-CHt4I-7e.js} +2 -2
  49. package/dist/{doctor-completion-ClveVbW_.js → doctor-completion-gMWymNcA.js} +1 -1
  50. package/dist/{doctor-completion-e-Ke-FnA.js → doctor-completion-woDYSVtY.js} +1 -1
  51. package/dist/entry.js +1 -1
  52. package/dist/{exec-approvals-cli-Bx9loYnQ.js → exec-approvals-cli-BBKVrFTj.js} +4 -4
  53. package/dist/{exec-approvals-cli-CTEn_Eu_.js → exec-approvals-cli-CKRDAo17.js} +4 -4
  54. package/dist/extensionAPI.js +2 -2
  55. package/dist/{gateway-cli-DGMuMxMT.js → gateway-cli-Bnh42-56.js} +91 -46
  56. package/dist/{gateway-cli-CBseg7zA.js → gateway-cli-DsnkTUOp.js} +91 -46
  57. package/dist/{gateway-rpc-DbSbyIcL.js → gateway-rpc-BEfosIsg.js} +1 -1
  58. package/dist/{gateway-rpc-QsFn5Zr1.js → gateway-rpc-DZrB7Sl_.js} +1 -1
  59. package/dist/{glass-ui-ws-B0WonpHP.js → glass-ui-ws-0Y0KsBvU.js} +13 -13
  60. package/dist/{glass-ui-ws-BU6qyCvM.js → glass-ui-ws-uj3DRmL8.js} +13 -13
  61. package/dist/{health-BrpUi4qW.js → health-CcV5nKIK.js} +2 -2
  62. package/dist/{health-d4gqJJCY.js → health-Dl2WRoTa.js} +2 -2
  63. package/dist/{hooks-cli-Dm2SU8AY.js → hooks-cli-CTcHtm_0.js} +7 -7
  64. package/dist/{hooks-cli-CBStbWME.js → hooks-cli-DEJe3dUH.js} +7 -7
  65. package/dist/{image-C6rCON9L.js → image-BuVL0jHI.js} +1 -1
  66. package/dist/index.js +11 -11
  67. package/dist/llm-slug-generator.js +7 -7
  68. package/dist/{logs-cli-R4WwQvR2.js → logs-cli-CsHpYc2M.js} +3 -3
  69. package/dist/{logs-cli-1hn28HCu.js → logs-cli-N5jQvJTm.js} +3 -3
  70. package/dist/{manager-BOvfAdfG.js → manager-9Mni2AA9.js} +1 -1
  71. package/dist/{manager-CtwApSQo.js → manager-C-H0XXJq.js} +1 -1
  72. package/dist/{manager-B-5p7UGu.js → manager-CjW8kPVc.js} +1 -1
  73. package/dist/{manager-DDboJTtn.js → manager-QPF0UtOC.js} +1 -1
  74. package/dist/{memory-cli-BOxWccJu.js → memory-cli-BTByRgM0.js} +3 -3
  75. package/dist/{memory-cli-D2QHGsxh.js → memory-cli-OW9XfyYu.js} +3 -3
  76. package/dist/{models-Cn1cbmce.js → models-Q1jV8ArL.js} +3 -3
  77. package/dist/{models-cli-CXW-3Zot.js → models-cli-Cy6H1sFq.js} +8 -8
  78. package/dist/{models-cli-Cdkkr4--.js → models-cli-pfVmmgpv.js} +7 -7
  79. package/dist/{node-cli-BBN6PoOG.js → node-cli-BD4E-Y8a.js} +1 -1
  80. package/dist/{node-cli-BsAzTrAx.js → node-cli-CwnTjFkG.js} +1 -1
  81. package/dist/{nodes-cli-t3azniiS.js → nodes-cli-DUD8_q_Q.js} +3 -3
  82. package/dist/{nodes-cli-DE60dv81.js → nodes-cli-Dv0NXhCO.js} +3 -3
  83. package/dist/{onboard-UB4D1vwP.js → onboard-CvpyaUQd.js} +3 -3
  84. package/dist/{onboard-BJ9vVhFw.js → onboard-EL8foMiP.js} +3 -3
  85. package/dist/{onboard-channels-Cfc9EhLj.js → onboard-channels-BRoSUijQ.js} +1 -1
  86. package/dist/{onboard-channels-Gfgyvx9N.js → onboard-channels-Bupbm6zh.js} +1 -1
  87. package/dist/{onboard-helpers-B7jBYbCU.js → onboard-helpers-CBxazphs.js} +1 -1
  88. package/dist/{onboard-helpers-DjlGq6iG.js → onboard-helpers-DWDNKmkJ.js} +1 -1
  89. package/dist/{onboard-remote-D7wGqONm.js → onboard-remote-DoIKLWXA.js} +1 -1
  90. package/dist/{onboard-remote-CXuHbtrT.js → onboard-remote-cZrkePlK.js} +1 -1
  91. package/dist/{onboard-skills-ChQnpMi-.js → onboard-skills-BjGYTueQ.js} +1 -1
  92. package/dist/{onboard-skills-BDhqz3te.js → onboard-skills-zauvnEui.js} +1 -1
  93. package/dist/{onboarding-BfSg5GnT.js → onboarding-Ch8WSJ3j.js} +7 -7
  94. package/dist/{onboarding-Bv89FLSZ.js → onboarding-Dg5ydWSh.js} +7 -7
  95. package/dist/{onboarding.finalize-DMJTZPb_.js → onboarding.finalize-Bo8-8TtH.js} +11 -11
  96. package/dist/{onboarding.finalize-B8MFYp8E.js → onboarding.finalize-CCTaCp2s.js} +12 -12
  97. package/dist/{onboarding.gateway-config-Cm5jIfRz.js → onboarding.gateway-config-Dg12RcXA.js} +3 -3
  98. package/dist/{onboarding.gateway-config-wAyLcGRu.js → onboarding.gateway-config-uIRsaxMy.js} +3 -3
  99. package/dist/{pi-embedded-CzKPTG9K.js → pi-embedded-Bl3YkBkI.js} +185 -35
  100. package/dist/{pi-embedded-helpers-P13adotN.js → pi-embedded-helpers-D1_Sab0M.js} +4 -4
  101. package/dist/{plugin-registry-CQAtbgft.js → plugin-registry-BVYZLxmo.js} +1 -1
  102. package/dist/{plugin-registry-R7nyNT_4.js → plugin-registry-Bn9Mj8mP.js} +1 -1
  103. package/dist/plugin-sdk/agents/pi-tools.read-edit-guard.d.ts +5 -0
  104. package/dist/plugin-sdk/agents/pi-tools.read-edit-tracker.d.ts +26 -0
  105. package/dist/plugin-sdk/{channel-web-D1qaoERA.js → channel-web-BhqGIC7q.js} +1 -1
  106. package/dist/plugin-sdk/gateway/protocol/index.d.ts +9 -3
  107. package/dist/plugin-sdk/gateway/protocol/schema/sessions.d.ts +39 -0
  108. package/dist/plugin-sdk/gateway/protocol/schema/types.d.ts +3 -1
  109. package/dist/plugin-sdk/index.js +3 -3
  110. package/dist/plugin-sdk/{manager-CVuMChKq.js → manager-DdOb0Em2.js} +1 -1
  111. package/dist/plugin-sdk/{reply-LZax-i7K.js → reply-Cjjf4VYT.js} +185 -35
  112. package/dist/plugin-sdk/{synthesis-DnknLqQP.js → synthesis-CZ8BYNXP.js} +2 -2
  113. package/dist/plugin-sdk/{web-DGGSyBgc.js → web-B8upqMUo.js} +3 -3
  114. package/dist/{plugins-cli-DGWVBlc8.js → plugins-cli-3h1N5N8n.js} +7 -7
  115. package/dist/{plugins-cli-CyaM2yPX.js → plugins-cli-CYOQh2DM.js} +7 -7
  116. package/dist/{program-2jsiC85C.js → program-D3_xE9BL.js} +12 -12
  117. package/dist/{program-context-DQg-ZH6A.js → program-context-COwsYCbf.js} +30 -30
  118. package/dist/{prompt-select-styled-CQJkA--o.js → prompt-select-styled-D88AWCeM.js} +8 -8
  119. package/dist/{prompt-select-styled-Csj7D4id.js → prompt-select-styled-rKPBDv7n.js} +8 -8
  120. package/dist/{provider-auth-helpers-DSq3qfws.js → provider-auth-helpers-CyZyVx-V.js} +1 -1
  121. package/dist/{provider-auth-helpers-C1rUolDI.js → provider-auth-helpers-rff7s_gC.js} +1 -1
  122. package/dist/{push-apns-Dv3XQClG.js → push-apns-BNzgqUl3.js} +1 -1
  123. package/dist/{push-apns-FvyXV3Um.js → push-apns-d9qKGKPe.js} +1 -1
  124. package/dist/{pw-ai-CeWN4iD9.js → pw-ai-DWkC5eGA.js} +1 -1
  125. package/dist/{register.agent-DCIdzwFG.js → register.agent-BjaqQA02.js} +10 -10
  126. package/dist/{register.agent-Cs5QU2Cd.js → register.agent-D_MON8p-.js} +11 -11
  127. package/dist/{register.configure-C64fHXoT.js → register.configure-BWkkQhpH.js} +13 -13
  128. package/dist/{register.configure-BBKyd--9.js → register.configure-UJi9sfNv.js} +13 -13
  129. package/dist/{register.maintenance-D99fy4mM.js → register.maintenance-ChskcWGz.js} +13 -13
  130. package/dist/{register.maintenance-DRUMeCun.js → register.maintenance-DJptz3DR.js} +12 -12
  131. package/dist/{register.message-CelO3y3f.js → register.message-BDTsiyrW.js} +7 -7
  132. package/dist/{register.message-BL30Nofx.js → register.message-CiadI_oS.js} +7 -7
  133. package/dist/{register.onboard-Cb9K2U81.js → register.onboard-BflOE1jy.js} +9 -9
  134. package/dist/{register.onboard-j6fg7rSF.js → register.onboard-KR_-4TLY.js} +9 -9
  135. package/dist/{register.setup-BfbJZE5C.js → register.setup-Cl0sD25T.js} +9 -9
  136. package/dist/{register.setup-xyGsh3Fi.js → register.setup-W-oNfOp0.js} +9 -9
  137. package/dist/{register.status-health-sessions-CpnBFwbx.js → register.status-health-sessions-CCQs235z.js} +9 -9
  138. package/dist/{register.status-health-sessions-BE4TcJ1J.js → register.status-health-sessions-CT_SmmOH.js} +9 -9
  139. package/dist/{register.subclis-8cGjLTmN.js → register.subclis-ByZAz4st.js} +20 -20
  140. package/dist/{reply-CaGCmutq.js → reply-CgyjcoxC.js} +151 -37
  141. package/dist/{rpc-St4eAsjR.js → rpc-BKlQ97aZ.js} +1 -1
  142. package/dist/{rpc-C3ZUAjXK.js → rpc-DC4ol5Xa.js} +1 -1
  143. package/dist/{run-main-BzZuJeMa.js → run-main-xmWpjZL9.js} +20 -20
  144. package/dist/{runner-D633VT13.js → runner-ecX1WzDt.js} +1 -1
  145. package/dist/{security-cli-BSvxNP9m.js → security-cli-BfiJ3e0Y.js} +3 -3
  146. package/dist/{security-cli-B8gavsuQ.js → security-cli-CIB7kqEk.js} +3 -3
  147. package/dist/{server-methods-DEV38b_O.js → server-methods-CBn954AO.js} +73 -12
  148. package/dist/{server-methods-BKlZejQC.js → server-methods-DDpCXuOU.js} +73 -12
  149. package/dist/{server-node-events-3FL5gBKp.js → server-node-events-BBEMSKVE.js} +7 -7
  150. package/dist/{server-node-events-BX5JLPyV.js → server-node-events-BUEZ3py9.js} +7 -7
  151. package/dist/{status-h7VP4Vpq.js → status-BjMiGq0n.js} +1 -1
  152. package/dist/{status-zNfi0s3F.js → status-CG5iHUJ6.js} +6 -6
  153. package/dist/{status-uBCH1pzQ.js → status-CpvzoCOC.js} +1 -1
  154. package/dist/{status-L76LBY6B.js → status-PfvX-BjO.js} +6 -6
  155. package/dist/{subagent-registry-DlIPWOrx.js → subagent-registry-D0IYimMO.js} +151 -37
  156. package/dist/{synthesis-1XabTYcd.js → synthesis-BVZ5RJLg.js} +6 -6
  157. package/dist/{synthesis-D1xCmGZi.js → synthesis-CBwKBuLy.js} +7 -7
  158. package/dist/{synthesis-BfB-Lbjy.js → synthesis-D55QrjAJ.js} +6 -6
  159. package/dist/{synthesis-D3EObLPS.js → synthesis-itgrzpuj.js} +2 -2
  160. package/dist/{system-cli-BN9MXNk7.js → system-cli-BERSpUjO.js} +3 -3
  161. package/dist/{system-cli-CD5latLh.js → system-cli-C61hzNPk.js} +3 -3
  162. package/dist/{tui-DLkE0D7e.js → tui-CI_zqapL.js} +2 -2
  163. package/dist/{tui-Cu4TZK3I.js → tui-Dg_cvgVP.js} +2 -2
  164. package/dist/{tui-cli-DC9Bq-N_.js → tui-cli-BD1cbShC.js} +3 -3
  165. package/dist/{tui-cli-BfuEq3Q-.js → tui-cli-DtBW_VCL.js} +3 -3
  166. package/dist/{unified-runner-KFxqPxWe.js → unified-runner-BhnvjB1J.js} +199 -49
  167. package/dist/{update-cli-CwtAWyeY.js → update-cli-CL1_LPBS.js} +14 -14
  168. package/dist/{update-cli-bTfRfI4b.js → update-cli-D3K4mhrr.js} +13 -13
  169. package/dist/{update-runner-DeT8NIX6.js → update-runner-Bmq67eos.js} +1 -1
  170. package/dist/{update-runner-BixvbAbN.js → update-runner-DMucmRlv.js} +1 -1
  171. package/dist/{web-CO0AUYgu.js → web-B0lZdBBl.js} +6 -6
  172. package/dist/{web-Bwrtjkmy.js → web-C1HPdY_D.js} +2 -2
  173. package/dist/{web-YSRcfzpP.js → web-DCO_YCRw.js} +7 -7
  174. package/dist/{web-N4FG6nyF.js → web-DmgQtLx3.js} +7 -7
  175. package/extensions/bluebubbles/package.json +1 -1
  176. package/extensions/copilot-proxy/package.json +1 -1
  177. package/extensions/diagnostics-otel/package.json +1 -1
  178. package/extensions/discord/package.json +1 -1
  179. package/extensions/feishu/package.json +1 -1
  180. package/extensions/google-antigravity-auth/package.json +1 -1
  181. package/extensions/google-gemini-cli-auth/package.json +1 -1
  182. package/extensions/googlechat/package.json +1 -1
  183. package/extensions/imessage/package.json +1 -1
  184. package/extensions/irc/package.json +1 -1
  185. package/extensions/learning-loop/package.json +1 -1
  186. package/extensions/line/package.json +1 -1
  187. package/extensions/llm-task/package.json +1 -1
  188. package/extensions/matrix/CHANGELOG.md +12 -0
  189. package/extensions/matrix/package.json +1 -1
  190. package/extensions/mattermost/package.json +1 -1
  191. package/extensions/memory-core/package.json +1 -1
  192. package/extensions/memory-lancedb/package.json +1 -1
  193. package/extensions/minimax-portal-auth/package.json +1 -1
  194. package/extensions/msteams/CHANGELOG.md +12 -0
  195. package/extensions/msteams/package.json +1 -1
  196. package/extensions/nextcloud-talk/package.json +1 -1
  197. package/extensions/nostr/CHANGELOG.md +12 -0
  198. package/extensions/nostr/package.json +1 -1
  199. package/extensions/open-prose/package.json +1 -1
  200. package/extensions/outlook/package.json +1 -1
  201. package/extensions/pipeline/package.json +1 -1
  202. package/extensions/signal/package.json +1 -1
  203. package/extensions/slack/package.json +1 -1
  204. package/extensions/telegram/package.json +1 -1
  205. package/extensions/tlon/package.json +1 -1
  206. package/extensions/twitch/CHANGELOG.md +12 -0
  207. package/extensions/twitch/package.json +1 -1
  208. package/extensions/voice-call/CHANGELOG.md +12 -0
  209. package/extensions/voice-call/package.json +1 -1
  210. package/extensions/whatsapp/package.json +1 -1
  211. package/extensions/zalo/CHANGELOG.md +12 -0
  212. package/extensions/zalo/package.json +1 -1
  213. package/extensions/zalouser/CHANGELOG.md +12 -0
  214. package/extensions/zalouser/package.json +1 -1
  215. package/package.json +1 -1
@@ -10,10 +10,10 @@ import { $ as resolveAuthProfileDisplayLabel, B as resolveApiKeyForProvider, C a
10
10
  import { n as formatCliCommand, r as resolveCliName, t as isTruthyEnvValue } from "./env-BDXYbTKj.js";
11
11
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-cCYzSU9h.js";
12
12
  import { t as parseBooleanValue$1 } from "./boolean-CE7i9tBR.js";
13
- import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-P13adotN.js";
13
+ import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-D1_Sab0M.js";
14
14
  import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-BkZ9HOKT.js";
15
15
  import { a as applyTestPluginDefaults, c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, i as safeStatSync, n as discoverSymiPlugins, o as normalizePluginsConfig, r as isPathInside, s as resolveEnableState, t as loadPluginManifestRegistry, u as isPathInsideWithRealpath } from "./manifest-registry-CBCGTsIb.js";
16
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-C08Z0XAa.js";
16
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-ROtrXlNs.js";
17
17
  import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-CXxrn_e2.js";
18
18
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-XIsvXeC-.js";
19
19
  import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, p as isGifMedia, s as resizeToJpeg, v as mediaKindFromMime } from "./image-ops-C7CauEK8.js";
@@ -31,16 +31,16 @@ import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i
31
31
  import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-C0QjmPaf.js";
32
32
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-BBh3Gsrx.js";
33
33
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-SqqWIT22.js";
34
- import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-qUx-eLKt.js";
34
+ import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-B0OUq6RP.js";
35
35
  import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-BUcR3Meg.js";
36
36
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Zw87xFym.js";
37
- import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-C6rCON9L.js";
37
+ import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-BuVL0jHI.js";
38
38
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-RXOlh8ar.js";
39
39
  import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-W0JzCJJM.js";
40
40
  import { $ as isVoiceCompatibleAudio, A as extractTelegramLocation, B as normalizeAllowFromWithStore$1, C as buildTelegramGroupFrom, D as buildTypingThreadParams, E as buildTelegramThreadParams, F as resolveTelegramMediaPlaceholder, G as formatLocationText, H as firstDefined$1, I as resolveTelegramReplyId, J as readChannelAllowFromStore, K as toLocationContext, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, Q as listPairingChannels, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as isSenderIdAllowed, V as resolveSenderAllowMatch, W as mergeAllowFromSources, X as upsertChannelPairingRequest, Y as removeChannelAllowFromStoreEntry, Z as getPairingAdapter, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, et as parseTelegramTarget, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as hasBotMention, k as expandTextLinks, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as addChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as resolveTelegramTargetChatType, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-Bb4it0te.js";
41
41
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-CuZX_Q4t.js";
42
42
  import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-CvEIl6_d.js";
43
- import { a as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, r as probeOllamaEmbeddingModels, t as MemoryIndexManager } from "./manager-B-5p7UGu.js";
43
+ import { a as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, r as probeOllamaEmbeddingModels, t as MemoryIndexManager } from "./manager-CjW8kPVc.js";
44
44
  import { c as normalizeExtraMemoryPaths, f as runTasksWithConcurrency, s as listMemoryFiles } from "./internal-DjnxpF_K.js";
45
45
  import { n as retryAsync } from "./retry-B-y5suGA.js";
46
46
  import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-DeJTztcq.js";
@@ -50,7 +50,7 @@ import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-CVCB
50
50
  import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, t as getAgentScopedMediaLocalRoots } from "./local-roots-ClipCZ9s.js";
51
51
  import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-7tMVY7D_.js";
52
52
  import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-DxbSTLNQ.js";
53
- import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as registerUnhandledRejectionHandler } from "./runner-D633VT13.js";
53
+ import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as registerUnhandledRejectionHandler } from "./runner-ecX1WzDt.js";
54
54
  import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile, i as resolveSkillCommandInvocation, l as pruneExpiredPending, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as writeJsonAtomic, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as resolvePairingPaths } from "./skill-commands-DG2lcozb.js";
55
55
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-DZQU0r3y.js";
56
56
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-ClslA6GS.js";
@@ -81,7 +81,7 @@ import AjvPkg from "ajv";
81
81
  import { CURRENT_SESSION_VERSION, DefaultResourceLoader, SessionManager, SettingsManager, codingTools, createAgentSession, createEditTool, createReadTool, createWriteTool, estimateTokens, generateSummary, readTool } from "@mariozechner/pi-coding-agent";
82
82
  import { createServer } from "node:http";
83
83
  import { ProxyAgent, fetch as fetch$1 } from "undici";
84
- import WebSocket$1, { WebSocket } from "ws";
84
+ import WebSocket, { WebSocket as WebSocket$1 } from "ws";
85
85
  import { Buffer as Buffer$1 } from "node:buffer";
86
86
  import { EdgeTTS } from "node-edge-tts";
87
87
  import { createJiti } from "jiti";
@@ -4340,7 +4340,7 @@ async function getMemorySearchManager(params) {
4340
4340
  const wrapper = new FallbackMemoryManager({
4341
4341
  primary,
4342
4342
  fallbackFactory: async () => {
4343
- const { MemoryIndexManager } = await import("./manager-B-5p7UGu.js").then((n) => n.n);
4343
+ const { MemoryIndexManager } = await import("./manager-CjW8kPVc.js").then((n) => n.n);
4344
4344
  return await MemoryIndexManager.get(params);
4345
4345
  }
4346
4346
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -4353,7 +4353,7 @@ async function getMemorySearchManager(params) {
4353
4353
  }
4354
4354
  }
4355
4355
  try {
4356
- const { MemoryIndexManager } = await import("./manager-B-5p7UGu.js").then((n) => n.n);
4356
+ const { MemoryIndexManager } = await import("./manager-CjW8kPVc.js").then((n) => n.n);
4357
4357
  return { manager: await MemoryIndexManager.get(params) };
4358
4358
  } catch (err) {
4359
4359
  return {
@@ -8603,6 +8603,40 @@ const SessionsPreviewParamsSchema = Type.Object({
8603
8603
  limit: Type.Optional(Type.Integer({ minimum: 1 })),
8604
8604
  maxChars: Type.Optional(Type.Integer({ minimum: 20 }))
8605
8605
  }, { additionalProperties: false });
8606
+ /**
8607
+ * Hybrid (vector + FTS) search across session transcripts. Piggybacks on
8608
+ * the memory-search infrastructure with a `source = "sessions"` filter and
8609
+ * remaps the raw chunk path back to the owning session-key via the agent's
8610
+ * sessions.json index.
8611
+ */
8612
+ const SessionsSearchParamsSchema = Type.Object({
8613
+ query: Type.String({ minLength: 1 }),
8614
+ limit: Type.Optional(Type.Integer({
8615
+ minimum: 1,
8616
+ maximum: 50
8617
+ })),
8618
+ minScore: Type.Optional(Type.Number({
8619
+ minimum: 0,
8620
+ maximum: 1
8621
+ })),
8622
+ agentId: Type.Optional(NonEmptyString)
8623
+ }, { additionalProperties: false });
8624
+ const SessionsSearchMatchSchema = Type.Object({
8625
+ sessionKey: Type.Union([Type.String(), Type.Null()]),
8626
+ sessionId: Type.String(),
8627
+ file: Type.String(),
8628
+ lineStart: Type.Integer(),
8629
+ lineEnd: Type.Integer(),
8630
+ snippet: Type.String(),
8631
+ score: Type.Number(),
8632
+ label: Type.Optional(Type.String()),
8633
+ displayName: Type.Optional(Type.String()),
8634
+ updatedAt: Type.Optional(Type.Integer())
8635
+ }, { additionalProperties: false });
8636
+ const SessionsSearchResultSchema = Type.Object({
8637
+ matches: Type.Array(SessionsSearchMatchSchema),
8638
+ agentId: Type.String()
8639
+ }, { additionalProperties: false });
8606
8640
  const SessionsResolveParamsSchema = Type.Object({
8607
8641
  key: Type.Optional(NonEmptyString),
8608
8642
  sessionId: Type.Optional(NonEmptyString),
@@ -8815,6 +8849,7 @@ const validateNodeEventParams = ajv.compile(NodeEventParamsSchema);
8815
8849
  const validatePushTestParams = ajv.compile(PushTestParamsSchema);
8816
8850
  const validateSessionsListParams = ajv.compile(SessionsListParamsSchema);
8817
8851
  const validateSessionsPreviewParams = ajv.compile(SessionsPreviewParamsSchema);
8852
+ const validateSessionsSearchParams = ajv.compile(SessionsSearchParamsSchema);
8818
8853
  const validateSessionsResolveParams = ajv.compile(SessionsResolveParamsSchema);
8819
8854
  const validateSessionsPatchParams = ajv.compile(SessionsPatchParamsSchema);
8820
8855
  const validateSessionsResetParams = ajv.compile(SessionsResetParamsSchema);
@@ -8920,7 +8955,7 @@ var GatewayClient = class {
8920
8955
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
8921
8956
  });
8922
8957
  }
8923
- this.ws = new WebSocket(url, wsOptions);
8958
+ this.ws = new WebSocket$1(url, wsOptions);
8924
8959
  this.ws.on("open", () => {
8925
8960
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
8926
8961
  const tlsError = this.validateTlsFingerprint();
@@ -9139,7 +9174,7 @@ var GatewayClient = class {
9139
9174
  return null;
9140
9175
  }
9141
9176
  async request(method, params, opts) {
9142
- if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
9177
+ if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
9143
9178
  const id = randomUUID();
9144
9179
  const frame = {
9145
9180
  type: "req",
@@ -9210,6 +9245,7 @@ const METHOD_SCOPE_GROUPS = {
9210
9245
  "voicewake.get",
9211
9246
  "sessions.list",
9212
9247
  "sessions.preview",
9248
+ "sessions.search",
9213
9249
  "sessions.resolve",
9214
9250
  "sessions.usage",
9215
9251
  "sessions.usage.timeseries",
@@ -10407,7 +10443,7 @@ async function routeReply(params) {
10407
10443
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
10408
10444
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
10409
10445
  try {
10410
- const { deliverOutboundPayloads } = await import("./deliver-qUx-eLKt.js").then((n) => n.n);
10446
+ const { deliverOutboundPayloads } = await import("./deliver-B0OUq6RP.js").then((n) => n.n);
10411
10447
  return {
10412
10448
  ok: true,
10413
10449
  messageId: (await deliverOutboundPayloads({
@@ -13292,16 +13328,16 @@ function shouldComputeCommandAuthorized(text, cfg, options) {
13292
13328
 
13293
13329
  //#endregion
13294
13330
  //#region src/channels/sender-label.ts
13295
- function normalize(value) {
13331
+ function normalize$1(value) {
13296
13332
  const trimmed = value?.trim();
13297
13333
  return trimmed ? trimmed : void 0;
13298
13334
  }
13299
13335
  function resolveSenderLabel(params) {
13300
- const name = normalize(params.name);
13301
- const username = normalize(params.username);
13302
- const tag = normalize(params.tag);
13303
- const e164 = normalize(params.e164);
13304
- const id = normalize(params.id);
13336
+ const name = normalize$1(params.name);
13337
+ const username = normalize$1(params.username);
13338
+ const tag = normalize$1(params.tag);
13339
+ const e164 = normalize$1(params.e164);
13340
+ const id = normalize$1(params.id);
13305
13341
  const display = name ?? username ?? tag ?? "";
13306
13342
  const idPart = e164 ?? id ?? "";
13307
13343
  if (display && idPart && display !== idPart) return `${display} (${idPart})`;
@@ -32959,8 +32995,39 @@ const GatewayToolSchema = Type.Object({
32959
32995
  baseHash: Type.Optional(Type.String()),
32960
32996
  sessionKey: Type.Optional(Type.String()),
32961
32997
  note: Type.Optional(Type.String()),
32962
- restartDelayMs: Type.Optional(Type.Number())
32998
+ restartDelayMs: Type.Optional(Type.Number()),
32999
+ userRequestAcknowledgment: Type.Optional(Type.String())
32963
33000
  });
33001
+ /** Actions that mutate gateway state and require explicit user authorization. */
33002
+ const DESTRUCTIVE_ACTIONS = new Set([
33003
+ "config.apply",
33004
+ "config.patch",
33005
+ "update.run"
33006
+ ]);
33007
+ /** Minimum length for a meaningful authorization message. */
33008
+ const MIN_AUTHORIZATION_LENGTH = 10;
33009
+ /**
33010
+ * Asserts the user's request was explicitly acknowledged for destructive
33011
+ * actions. Throws a descriptive error if the acknowledgment is missing,
33012
+ * empty, or trivially short.
33013
+ *
33014
+ * NOTE: This is defense-in-depth, not a hard barrier. A determined model
33015
+ * could still populate the field with fabricated text. The barrier exists
33016
+ * to:
33017
+ * 1. Force the agent to deliberately compose a justification (vs. blind
33018
+ * tool invocation).
33019
+ * 2. Provide an audit trail (the acknowledgment is logged with the tool
33020
+ * call args).
33021
+ * 3. Surface for future tightening (e.g., matching against real session
33022
+ * history).
33023
+ */
33024
+ function assertUserAuthorization(action, params) {
33025
+ if (!DESTRUCTIVE_ACTIONS.has(action)) return;
33026
+ const ack = params.userRequestAcknowledgment;
33027
+ const trimmed = typeof ack === "string" ? ack.trim() : "";
33028
+ if (!trimmed) throw new Error(`Action '${action}' requires an explicit user authorization. Pass userRequestAcknowledgment with a paraphrase of the user's request (e.g., "user said: please update Symi"). If the user did not explicitly request this action, ask them first instead of invoking it.`);
33029
+ if (trimmed.length < MIN_AUTHORIZATION_LENGTH) throw new Error(`Action '${action}' requires a substantive userRequestAcknowledgment (minimum ${MIN_AUTHORIZATION_LENGTH} characters describing the user's request). Received: ${JSON.stringify(trimmed)}.`);
33030
+ }
32964
33031
  function createGatewayTool(opts) {
32965
33032
  return {
32966
33033
  label: "Gateway",
@@ -32971,6 +33038,7 @@ function createGatewayTool(opts) {
32971
33038
  execute: async (_toolCallId, args) => {
32972
33039
  const params = args;
32973
33040
  const action = readStringParam(params, "action", { required: true });
33041
+ assertUserAuthorization(action, params);
32974
33042
  if (action === "restart") {
32975
33043
  if (!isRestartEnabled(opts?.config)) throw new Error("Gateway restart is disabled (commands.restart=false).");
32976
33044
  const sessionKey = typeof params.sessionKey === "string" && params.sessionKey.trim() ? params.sessionKey.trim() : opts?.agentSessionKey?.trim() || void 0;
@@ -44168,7 +44236,7 @@ async function deliverSessionMaintenanceWarning(params) {
44168
44236
  return;
44169
44237
  }
44170
44238
  try {
44171
- const { deliverOutboundPayloads } = await import("./deliver-qUx-eLKt.js").then((n) => n.n);
44239
+ const { deliverOutboundPayloads } = await import("./deliver-B0OUq6RP.js").then((n) => n.n);
44172
44240
  await deliverOutboundPayloads({
44173
44241
  cfg: params.cfg,
44174
44242
  channel,
@@ -47614,7 +47682,7 @@ async function describeStickerImage(params) {
47614
47682
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
47615
47683
  try {
47616
47684
  const buffer = await fs$1.readFile(imagePath);
47617
- const { describeImageWithModel } = await import("./image-C6rCON9L.js").then((n) => n.n);
47685
+ const { describeImageWithModel } = await import("./image-BuVL0jHI.js").then((n) => n.n);
47618
47686
  return (await describeImageWithModel({
47619
47687
  buffer,
47620
47688
  fileName: "sticker.webp",
@@ -50363,7 +50431,7 @@ async function preflightDiscordMessage(params) {
50363
50431
  let preflightTranscript;
50364
50432
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
50365
50433
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
50366
- const { transcribeFirstAudio } = await import("./audio-preflight-rjCWpcfE.js");
50434
+ const { transcribeFirstAudio } = await import("./audio-preflight-Cb-T0r6e.js");
50367
50435
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
50368
50436
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
50369
50437
  ctx: {
@@ -54369,7 +54437,7 @@ function isVoiceChannelType(type) {
54369
54437
  function createDefaultDeps() {
54370
54438
  return {
54371
54439
  sendMessageWhatsApp: async (...args) => {
54372
- const { sendMessageWhatsApp } = await import("./web-YSRcfzpP.js");
54440
+ const { sendMessageWhatsApp } = await import("./web-DCO_YCRw.js");
54373
54441
  return await sendMessageWhatsApp(...args);
54374
54442
  },
54375
54443
  sendMessageTelegram: async (...args) => {
@@ -57274,7 +57342,7 @@ function createDiscordGatewayPlugin(params) {
57274
57342
  super(options);
57275
57343
  }
57276
57344
  createWebSocket(url) {
57277
- return new WebSocket$1(url, { agent });
57345
+ return new WebSocket(url, { agent });
57278
57346
  }
57279
57347
  }
57280
57348
  return new ProxyGatewayPlugin();
@@ -67492,7 +67560,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
67492
67560
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
67493
67561
  let preflightTranscript;
67494
67562
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
67495
- const { transcribeFirstAudio } = await import("./audio-preflight-rjCWpcfE.js");
67563
+ const { transcribeFirstAudio } = await import("./audio-preflight-Cb-T0r6e.js");
67496
67564
  preflightTranscript = await transcribeFirstAudio({
67497
67565
  ctx: {
67498
67566
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -69649,7 +69717,7 @@ function loadWebLoginQr() {
69649
69717
  return webLoginQrPromise;
69650
69718
  }
69651
69719
  function loadWebChannel() {
69652
- webChannelPromise ??= import("./web-YSRcfzpP.js");
69720
+ webChannelPromise ??= import("./web-DCO_YCRw.js");
69653
69721
  return webChannelPromise;
69654
69722
  }
69655
69723
  function loadWhatsAppActions() {
@@ -71118,6 +71186,91 @@ function isToolAllowedByPolicies(name, policies) {
71118
71186
  return policies.every((policy) => isToolAllowedByPolicyName(name, policy));
71119
71187
  }
71120
71188
 
71189
+ //#endregion
71190
+ //#region src/agents/pi-tools.read-edit-guard.ts
71191
+ const RETRY_GUIDANCE_SUFFIX$1 = " Read the file first, then retry the edit.";
71192
+ function readGuardError(filePath) {
71193
+ return /* @__PURE__ */ new Error(`Edit refused: '${filePath}' has not been read in this session. The edit tool requires the agent to read the file first so oldText can match real content rather than hallucinated content.${RETRY_GUIDANCE_SUFFIX$1}`);
71194
+ }
71195
+ function extractPath(args) {
71196
+ if (!args || typeof args !== "object") return;
71197
+ const record = args;
71198
+ const candidate = record.path ?? record.file_path;
71199
+ if (typeof candidate !== "string") return;
71200
+ const trimmed = candidate.trim();
71201
+ return trimmed.length > 0 ? trimmed : void 0;
71202
+ }
71203
+ function wrapReadToolWithTracker(tool, tracker) {
71204
+ return {
71205
+ ...tool,
71206
+ execute: async (toolCallId, args, signal, onUpdate) => {
71207
+ const result = await tool.execute(toolCallId, args, signal, onUpdate);
71208
+ if (!(!!result && typeof result === "object" && result.isError === true)) {
71209
+ const filePath = extractPath(args);
71210
+ if (filePath) tracker.recordRead(filePath);
71211
+ }
71212
+ return result;
71213
+ }
71214
+ };
71215
+ }
71216
+ function wrapWriteToolWithTracker(tool, tracker) {
71217
+ return {
71218
+ ...tool,
71219
+ execute: async (toolCallId, args, signal, onUpdate) => {
71220
+ const result = await tool.execute(toolCallId, args, signal, onUpdate);
71221
+ if (!(!!result && typeof result === "object" && result.isError === true)) {
71222
+ const filePath = extractPath(args);
71223
+ if (filePath) tracker.recordWrite(filePath);
71224
+ }
71225
+ return result;
71226
+ }
71227
+ };
71228
+ }
71229
+ function wrapEditToolWithGuard(tool, tracker) {
71230
+ return {
71231
+ ...tool,
71232
+ execute: async (toolCallId, args, signal, onUpdate) => {
71233
+ const filePath = extractPath(args);
71234
+ if (filePath && !tracker.hasObserved(filePath)) throw readGuardError(filePath);
71235
+ return tool.execute(toolCallId, args, signal, onUpdate);
71236
+ }
71237
+ };
71238
+ }
71239
+
71240
+ //#endregion
71241
+ //#region src/agents/pi-tools.read-edit-tracker.ts
71242
+ function normalize(filePath, workspaceRoot) {
71243
+ if (!workspaceRoot) return filePath;
71244
+ if (path.isAbsolute(filePath)) return path.normalize(filePath);
71245
+ return path.resolve(workspaceRoot, filePath);
71246
+ }
71247
+ function createReadEditTracker(opts = {}) {
71248
+ const observed = /* @__PURE__ */ new Map();
71249
+ const record = (filePath, kind) => {
71250
+ if (typeof filePath !== "string" || !filePath.trim()) return;
71251
+ const key = normalize(filePath.trim(), opts.workspaceRoot);
71252
+ const prior = observed.get(key);
71253
+ if (kind === "written" || prior !== "written") observed.set(key, kind);
71254
+ };
71255
+ return {
71256
+ recordRead: (filePath) => record(filePath, "read"),
71257
+ recordWrite: (filePath) => record(filePath, "written"),
71258
+ observation: (filePath) => {
71259
+ if (typeof filePath !== "string" || !filePath.trim()) return null;
71260
+ const key = normalize(filePath.trim(), opts.workspaceRoot);
71261
+ return observed.get(key) ?? null;
71262
+ },
71263
+ hasObserved: (filePath) => {
71264
+ if (typeof filePath !== "string" || !filePath.trim()) return false;
71265
+ const key = normalize(filePath.trim(), opts.workspaceRoot);
71266
+ return observed.has(key);
71267
+ },
71268
+ reset: () => {
71269
+ observed.clear();
71270
+ }
71271
+ };
71272
+ }
71273
+
71121
71274
  //#endregion
71122
71275
  //#region src/media/sniff-mime-from-base64.ts
71123
71276
  async function sniffMimeFromBase64(base64) {
@@ -71745,33 +71898,34 @@ function createSymiCodingTools(options) {
71745
71898
  });
71746
71899
  if (sandboxRoot && !sandboxFsBridge) throw new Error("Sandbox filesystem bridge is unavailable.");
71747
71900
  const imageSanitization = resolveImageSanitizationLimits(options?.config);
71901
+ const readEditTracker = createReadEditTracker({ workspaceRoot: sandboxRoot ?? workspaceRoot });
71748
71902
  const base = codingTools.flatMap((tool) => {
71749
71903
  if (tool.name === readTool.name) {
71750
71904
  if (sandboxRoot) {
71751
- const sandboxed = createSandboxedReadTool({
71905
+ const tracked = wrapReadToolWithTracker(createSandboxedReadTool({
71752
71906
  root: sandboxRoot,
71753
71907
  bridge: sandboxFsBridge,
71754
71908
  modelContextWindowTokens: options?.modelContextWindowTokens,
71755
71909
  imageSanitization
71756
- });
71757
- return [workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxed, sandboxRoot) : sandboxed];
71910
+ }), readEditTracker);
71911
+ return [workspaceOnly ? wrapToolWorkspaceRootGuard(tracked, sandboxRoot) : tracked];
71758
71912
  }
71759
- const wrapped = createSymiReadTool(createReadTool(workspaceRoot), {
71913
+ const tracked = wrapReadToolWithTracker(createSymiReadTool(createReadTool(workspaceRoot), {
71760
71914
  modelContextWindowTokens: options?.modelContextWindowTokens,
71761
71915
  imageSanitization
71762
- });
71763
- return [workspaceOnly ? wrapToolWorkspaceRootGuard(wrapped, workspaceRoot) : wrapped];
71916
+ }), readEditTracker);
71917
+ return [workspaceOnly ? wrapToolWorkspaceRootGuard(tracked, workspaceRoot) : tracked];
71764
71918
  }
71765
71919
  if (tool.name === "bash" || tool.name === execToolName) return [];
71766
71920
  if (tool.name === "write") {
71767
71921
  if (sandboxRoot) return [];
71768
- const wrapped = wrapToolParamNormalization(createWriteTool(workspaceRoot), CLAUDE_PARAM_GROUPS.write);
71769
- return [workspaceOnly ? wrapToolWorkspaceRootGuard(wrapped, workspaceRoot) : wrapped];
71922
+ const tracked = wrapWriteToolWithTracker(wrapToolParamNormalization(createWriteTool(workspaceRoot), CLAUDE_PARAM_GROUPS.write), readEditTracker);
71923
+ return [workspaceOnly ? wrapToolWorkspaceRootGuard(tracked, workspaceRoot) : tracked];
71770
71924
  }
71771
71925
  if (tool.name === "edit") {
71772
71926
  if (sandboxRoot) return [];
71773
- const wrapped = wrapToolParamNormalization(createEditTool(workspaceRoot), CLAUDE_PARAM_GROUPS.edit);
71774
- return [workspaceOnly ? wrapToolWorkspaceRootGuard(wrapped, workspaceRoot) : wrapped];
71927
+ const guarded = wrapEditToolWithGuard(wrapToolParamNormalization(createEditTool(workspaceRoot), CLAUDE_PARAM_GROUPS.edit), readEditTracker);
71928
+ return [workspaceOnly ? wrapToolWorkspaceRootGuard(guarded, workspaceRoot) : guarded];
71775
71929
  }
71776
71930
  return [tool];
71777
71931
  });
@@ -71814,22 +71968,18 @@ function createSymiCodingTools(options) {
71814
71968
  } : void 0,
71815
71969
  workspaceOnly: applyPatchWorkspaceOnly
71816
71970
  });
71971
+ const sandboxedEditTool = sandboxRoot ? wrapEditToolWithGuard(createSandboxedEditTool({
71972
+ root: sandboxRoot,
71973
+ bridge: sandboxFsBridge
71974
+ }), readEditTracker) : null;
71975
+ const sandboxedWriteTool = sandboxRoot ? wrapWriteToolWithTracker(createSandboxedWriteTool({
71976
+ root: sandboxRoot,
71977
+ bridge: sandboxFsBridge
71978
+ }), readEditTracker) : null;
71817
71979
  const withHooks = applyToolPolicyPipeline({
71818
71980
  tools: applyOwnerOnlyToolPolicy([
71819
71981
  ...base,
71820
- ...sandboxRoot ? allowWorkspaceWrites ? [workspaceOnly ? wrapToolWorkspaceRootGuard(createSandboxedEditTool({
71821
- root: sandboxRoot,
71822
- bridge: sandboxFsBridge
71823
- }), sandboxRoot) : createSandboxedEditTool({
71824
- root: sandboxRoot,
71825
- bridge: sandboxFsBridge
71826
- }), workspaceOnly ? wrapToolWorkspaceRootGuard(createSandboxedWriteTool({
71827
- root: sandboxRoot,
71828
- bridge: sandboxFsBridge
71829
- }), sandboxRoot) : createSandboxedWriteTool({
71830
- root: sandboxRoot,
71831
- bridge: sandboxFsBridge
71832
- })] : [] : [],
71982
+ ...sandboxRoot ? allowWorkspaceWrites && sandboxedEditTool && sandboxedWriteTool ? [workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxedEditTool, sandboxRoot) : sandboxedEditTool, workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxedWriteTool, sandboxRoot) : sandboxedWriteTool] : [] : [],
71833
71983
  ...applyPatchTool ? [applyPatchTool] : [],
71834
71984
  execTool,
71835
71985
  processTool,
@@ -13,11 +13,11 @@ import "./skills-D_oCiaQn.js";
13
13
  import "./manifest-registry-D5bnO5uA.js";
14
14
  import "./skills-status-DODCG6UU.js";
15
15
  import { l as writeConfigFile, o as readConfigFileSnapshot } from "./config-DXt3pc08.js";
16
- import "./client-Cmq13-uF.js";
17
- import "./call-CAGvQYXj.js";
16
+ import "./client-CJIMV1WD.js";
17
+ import "./call-M4YyUnwu.js";
18
18
  import "./message-channel-C9dERklz.js";
19
19
  import "./pairing-token-Byh6drgn.js";
20
- import { wt as trimLogTail } from "./subagent-registry-DlIPWOrx.js";
20
+ import { wt as trimLogTail } from "./subagent-registry-D0IYimMO.js";
21
21
  import "./sessions-BPD85pWA.js";
22
22
  import "./tokens-Csntmwwn.js";
23
23
  import "./plugins-CwSlLxM8.js";
@@ -55,8 +55,8 @@ import "./tool-images-CVLISeRT.js";
55
55
  import "./thinking-8sKPnzpp.js";
56
56
  import "./models-config-J1x_DaPn.js";
57
57
  import "./reply-prefix-BUN71nd5.js";
58
- import "./memory-cli-D2QHGsxh.js";
59
- import "./manager-DDboJTtn.js";
58
+ import "./memory-cli-OW9XfyYu.js";
59
+ import "./manager-QPF0UtOC.js";
60
60
  import "./gemini-auth-DEakvf-D.js";
61
61
  import "./retry-C4Q_VPOo.js";
62
62
  import "./sqlite-BP8tiuca.js";
@@ -99,7 +99,7 @@ import "./cli-utils-CI_KkT8q.js";
99
99
  import { t as formatHelpExamples } from "./help-format-nY42tGMB.js";
100
100
  import "./progress-HK2tT7Yf.js";
101
101
  import "./replies-Sxbew659.js";
102
- import "./onboard-helpers-DjlGq6iG.js";
102
+ import "./onboard-helpers-DWDNKmkJ.js";
103
103
  import { n as stylePromptMessage } from "./prompt-style-BxVdnrLq.js";
104
104
  import "./pairing-labels-BHx_CdbP.js";
105
105
  import "./pi-tools.policy-o0ytjRqu.js";
@@ -112,32 +112,32 @@ import "./npm-registry-spec-PuS2I1Em.js";
112
112
  import "./skill-scanner-BV3QHmsf.js";
113
113
  import "./installs-B4sNNRaW.js";
114
114
  import "./channels-status-issues-B-ssmZ8E.js";
115
- import "./register.subclis-8cGjLTmN.js";
116
- import "./command-registry-BiznuVYK.js";
115
+ import "./register.subclis-ByZAz4st.js";
116
+ import "./command-registry-BiRjJ2Sy.js";
117
117
  import "./program-context-DeZ44oQ9.js";
118
- import { r as installCompletion } from "./completion-cli-BVG9ZtBG.js";
118
+ import { r as installCompletion } from "./completion-cli-BYXofVqv.js";
119
119
  import "./daemon-runtime-D_elkkFW.js";
120
120
  import { r as parseSemver } from "./runtime-guard-BofkqBu7.js";
121
121
  import "./systemd-CJ5L2ee4.js";
122
122
  import { t as resolveGatewayService } from "./service-RxN7lQKN.js";
123
123
  import "./lifecycle-core-v3lT0Ymo.js";
124
124
  import "./systemd-hints-Ct8ebNeC.js";
125
- import { i as runDaemonInstall, r as runDaemonRestart } from "./daemon-cli-CweMes2K.js";
125
+ import { i as runDaemonInstall, r as runDaemonRestart } from "./daemon-cli-BFoJGCHZ.js";
126
126
  import "./diagnostics-C6xPE2ln.js";
127
127
  import { t as renderTable } from "./table-Bka4fasy.js";
128
- import "./health-BrpUi4qW.js";
128
+ import "./health-CcV5nKIK.js";
129
129
  import "./control-ui-assets-Clf7H-Sm.js";
130
130
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, d as formatUpdateChannelLabel, g as resolveUpdateChannelDisplay, h as resolveEffectiveUpdateChannel, m as normalizeUpdateChannel, n as compareSemverStrings, r as fetchNpmTagVersion, s as DEFAULT_GIT_CHANNEL, t as checkUpdateStatus, u as channelToNpmTag } from "./update-check-BNjupSIM.js";
131
131
  import "./dm-policy-shared-JiSNSaKz.js";
132
132
  import { i as resolveUpdateAvailability, n as formatUpdateOneLiner, t as formatUpdateAvailableHint } from "./status.update-B5zI1_Id.js";
133
- import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-DeT8NIX6.js";
133
+ import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-Bmq67eos.js";
134
134
  import "./logging-PVQxLC6I.js";
135
135
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-DticqU4-.js";
136
136
  import "./doctor-config-flow-B2dVxbL7.js";
137
137
  import "./systemd-linger-ipoPa7o0.js";
138
138
  import "./health-format-DkjSgkDx.js";
139
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-CQJkA--o.js";
140
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-e-Ke-FnA.js";
139
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-D88AWCeM.js";
140
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-woDYSVtY.js";
141
141
  import { spawn, spawnSync } from "node:child_process";
142
142
  import os from "node:os";
143
143
  import path from "node:path";
@@ -1,7 +1,7 @@
1
1
  import { g as resolveStateDir } from "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, h as pathExists } from "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import { H as trimLogTail } from "./reply-CaGCmutq.js";
4
+ import { H as trimLogTail } from "./reply-CgyjcoxC.js";
5
5
  import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
6
6
  import "./registry-Cja8eT7G.js";
7
7
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
@@ -62,8 +62,8 @@ import "./diagnostic-session-state-CUslJyKP.js";
62
62
  import "./send-DpMnSIi5.js";
63
63
  import "./model-ECsJuJew.js";
64
64
  import "./reply-prefix-CE2YmmsD.js";
65
- import "./memory-cli-BOxWccJu.js";
66
- import "./manager-BOvfAdfG.js";
65
+ import "./memory-cli-BTByRgM0.js";
66
+ import "./manager-9Mni2AA9.js";
67
67
  import "./retry-BoS4e4X_.js";
68
68
  import "./sqlite-D55gRQbH.js";
69
69
  import "./target-errors-C9e6dMU_.js";
@@ -73,8 +73,8 @@ import "./ir-jTXFdH5R.js";
73
73
  import "./render-Bwu_WxwA.js";
74
74
  import "./commands-vWB85AXk.js";
75
75
  import "./commands-registry-D_uByLpw.js";
76
- import "./client-CYsBIR3j.js";
77
- import "./call-BkJK3eYP.js";
76
+ import "./client-pd8kwOFJ.js";
77
+ import "./call-DYfKEdwh.js";
78
78
  import "./pairing-token-pooyuU2J.js";
79
79
  import "./channel-activity-CoTZV03i.js";
80
80
  import "./fetch-BECUf3wn.js";
@@ -96,7 +96,7 @@ import "./session-cost-usage-RPrhIvZF.js";
96
96
  import "./outbound-attachment-FbHNOB0s.js";
97
97
  import "./delivery-queue-D9i0qjI_.js";
98
98
  import "./send-SF7x1UHb.js";
99
- import "./onboard-helpers-B7jBYbCU.js";
99
+ import "./onboard-helpers-CBxazphs.js";
100
100
  import { n as stylePromptMessage } from "./prompt-style-Y2J72w6p.js";
101
101
  import "./pairing-labels-CTL1gXZb.js";
102
102
  import "./exec-approvals-DEigTi7M.js";
@@ -107,7 +107,7 @@ import "./stagger-CZ1Rrj7O.js";
107
107
  import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName } from "./constants-DF8wPn-_.js";
108
108
  import "./channel-selection-9fIQGtZy.js";
109
109
  import { r as parseSemver } from "./runtime-guard-BKFbNplo.js";
110
- import "./program-context-DQg-ZH6A.js";
110
+ import "./program-context-COwsYCbf.js";
111
111
  import "./catalog-KW3oyt3k.js";
112
112
  import "./skills-status-D1IW8MhS.js";
113
113
  import { n as inheritOptionFromParent } from "./command-options-DOOvAdsg.js";
@@ -118,28 +118,28 @@ import "./npm-registry-spec-B98RgVZF.js";
118
118
  import "./skill-scanner-BTgjeQBf.js";
119
119
  import "./installs-BPZKRjsO.js";
120
120
  import "./channels-status-issues-BVpj6wWd.js";
121
- import { r as installCompletion } from "./completion-cli-D-xVtDhj.js";
121
+ import { r as installCompletion } from "./completion-cli-C8K5J1ld.js";
122
122
  import "./daemon-runtime-Cp7obV7Q.js";
123
123
  import "./systemd-Xs16roN5.js";
124
124
  import { t as resolveGatewayService } from "./service-DzLem5vL.js";
125
125
  import "./lifecycle-core-Uucs6Wz6.js";
126
126
  import "./systemd-hints-vhJS1sOh.js";
127
- import { i as runDaemonInstall, r as runDaemonRestart } from "./daemon-cli-B2_uIgDM.js";
127
+ import { i as runDaemonInstall, r as runDaemonRestart } from "./daemon-cli-D6wyb9bo.js";
128
128
  import "./diagnostics-1uBuB9IE.js";
129
129
  import { t as renderTable } from "./table-BWuvjnmY.js";
130
- import "./health-d4gqJJCY.js";
130
+ import "./health-Dl2WRoTa.js";
131
131
  import "./control-ui-assets-BrP31IQR.js";
132
132
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, d as formatUpdateChannelLabel, g as resolveUpdateChannelDisplay, h as resolveEffectiveUpdateChannel, m as normalizeUpdateChannel, n as compareSemverStrings, r as fetchNpmTagVersion, s as DEFAULT_GIT_CHANNEL, t as checkUpdateStatus, u as channelToNpmTag } from "./update-check-Bbvpax6u.js";
133
133
  import "./dm-policy-shared-KlzpDeT_.js";
134
134
  import { i as resolveUpdateAvailability, n as formatUpdateOneLiner, t as formatUpdateAvailableHint } from "./status.update-8HXdAdwz.js";
135
- import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-BixvbAbN.js";
135
+ import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-DMucmRlv.js";
136
136
  import "./logging-CZuxhCZR.js";
137
137
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-D4uLu0dv.js";
138
138
  import "./doctor-config-flow-BCMxS2lf.js";
139
139
  import "./systemd-linger-0C265XKH.js";
140
140
  import "./health-format-Ct4VWeSk.js";
141
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-Csj7D4id.js";
142
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-ClveVbW_.js";
141
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-rKPBDv7n.js";
142
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-gMWymNcA.js";
143
143
  import os from "node:os";
144
144
  import path from "node:path";
145
145
  import fs from "node:fs/promises";