@symerian/symi 2.6.35 → 2.6.37

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 (203) hide show
  1. package/dist/{acp-cli-NJzARaHq.js → acp-cli-EqE2uipx.js} +2 -2
  2. package/dist/{acp-cli-Cu4icbJT.js → acp-cli-gr5XIPZf.js} +2 -2
  3. package/dist/{agents-BIAaMNSb.js → agents-BDKvA-fr.js} +5 -5
  4. package/dist/{agents.config-BKjYekzK.js → agents.config-DP7J1Yxi.js} +1 -1
  5. package/dist/{agents.config-BDtgUDFp.js → agents.config-SvdnvFsa.js} +1 -1
  6. package/dist/{audio-preflight-CWnxkaac.js → audio-preflight-COe9clRU.js} +2 -2
  7. package/dist/{audit-Byo5jCLN.js → audit-Cgd5-Y7W.js} +2 -2
  8. package/dist/{audit-CrITRV6w.js → audit-DCDNPsGr.js} +2 -2
  9. package/dist/{auth-choice-Cw2rldnf.js → auth-choice-CinzPjY5.js} +4 -4
  10. package/dist/{auth-choice-C7BrC95t.js → auth-choice-DeTIgQiQ.js} +2 -2
  11. package/dist/{banner-DCF8IifK.js → banner-DlzlZSHv.js} +1 -1
  12. package/dist/{browser-cli-CPcnnsJJ.js → browser-cli-Dun4KSp2.js} +3 -3
  13. package/dist/{browser-cli-BG4qPxpM.js → browser-cli-FNGt_E96.js} +3 -3
  14. package/dist/build-info.json +3 -3
  15. package/dist/bundled/boot-md/handler.js +1 -1
  16. package/dist/bundled/session-memory/handler.js +1 -1
  17. package/dist/{call-CJaS1iRF.js → call-CFhGTNtt.js} +1 -1
  18. package/dist/{call-BcE47FtD.js → call-DIDhYlsx.js} +1 -1
  19. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  20. package/dist/{channel-options-BaC3G5sc.js → channel-options-38j3QjH3.js} +1 -1
  21. package/dist/{channel-options-DHSRuD2s.js → channel-options-D7Lp2WmW.js} +1 -1
  22. package/dist/{channel-web-YXrZZHRE.js → channel-web-DoJWvCSG.js} +2 -2
  23. package/dist/{channels-cli-CfMJGgBp.js → channels-cli-CMMBVrwz.js} +7 -7
  24. package/dist/{channels-cli-DODlfOu4.js → channels-cli-DmvAljR1.js} +9 -9
  25. package/dist/cli/daemon-cli.js +1 -1
  26. package/dist/{cli-CSlDsUKl.js → cli-Cd4B5FyU.js} +6 -6
  27. package/dist/{cli-CVqXnzze.js → cli-D9LYX6lB.js} +4 -4
  28. package/dist/{client-DMBZpU6X.js → client-T3qcxXru.js} +6 -1
  29. package/dist/{client-CQSyCS4M.js → client-jI1oE0_k.js} +6 -1
  30. package/dist/{command-registry-CrYpGtIt.js → command-registry-CARx8WBf.js} +10 -10
  31. package/dist/{completion-cli-GqPGf3Kq.js → completion-cli-DCO3bMjl.js} +2 -2
  32. package/dist/{completion-cli-BmYBAxqM.js → completion-cli-LYcBopv1.js} +1 -1
  33. package/dist/{config-cli-BxSBpwuL.js → config-cli-9rTAv29s.js} +1 -1
  34. package/dist/{config-cli-BjXnB1c7.js → config-cli-BCiQhEoA.js} +1 -1
  35. package/dist/{configure-De-0b4bB.js → configure-BeKcXpvL.js} +6 -6
  36. package/dist/{configure-CIFt3G-c.js → configure-RmJWWP1i.js} +8 -8
  37. package/dist/control-ui/css/style.css +104 -0
  38. package/dist/control-ui/index.html +2 -2
  39. package/dist/control-ui/js/app.js +45 -0
  40. package/dist/control-ui/js/history.js +38 -0
  41. package/dist/control-ui/js/menu.js +38 -30
  42. package/dist/control-ui/js/settings.js +166 -2
  43. package/dist/{cron-cli-BP24xl6n.js → cron-cli-C-gg6wfO.js} +3 -3
  44. package/dist/{cron-cli-DBIlCvp3.js → cron-cli-KYTOQ6d9.js} +3 -3
  45. package/dist/{daemon-cli-wWnBIQtk.js → daemon-cli-0RLS-CwL.js} +2 -2
  46. package/dist/{daemon-cli-DscwlsKW.js → daemon-cli-CJJ8Vueq.js} +2 -2
  47. package/dist/daemon-cli.js +5 -0
  48. package/dist/{devices-cli-BHiPx2c2.js → devices-cli-CI2TOoP1.js} +2 -2
  49. package/dist/{devices-cli-Dds-25Ve.js → devices-cli-j0f38zcG.js} +2 -2
  50. package/dist/{doctor-completion-CL0NHlCA.js → doctor-completion-BlysSk9e.js} +1 -1
  51. package/dist/{doctor-completion-4SDl6ZEA.js → doctor-completion-CfPhNCUx.js} +1 -1
  52. package/dist/entry.js +1 -1
  53. package/dist/{exec-approvals-cli-BliRl8VB.js → exec-approvals-cli-2BfYmO4M.js} +4 -4
  54. package/dist/{exec-approvals-cli--zyXYrNY.js → exec-approvals-cli-wesKZNXl.js} +4 -4
  55. package/dist/extensionAPI.js +1 -1
  56. package/dist/{gateway-cli-D98LL9Yi.js → gateway-cli-B1AI4M7v.js} +17 -16
  57. package/dist/{gateway-cli-CqHk7Nfm.js → gateway-cli-D2MuH-Vj.js} +15 -14
  58. package/dist/{gateway-rpc-BxkKeCZ0.js → gateway-rpc-5aGm8LwU.js} +1 -1
  59. package/dist/{gateway-rpc-DfZSz5JF.js → gateway-rpc-BkB6xEaM.js} +1 -1
  60. package/dist/{glass-ui-ws-z-ryIbt7.js → glass-ui-ws-cB1R6KOh.js} +13 -13
  61. package/dist/{glass-ui-ws-vx0iMfPn.js → glass-ui-ws-xbRlW2Pz.js} +11 -11
  62. package/dist/{health-BNxdveY8.js → health-By4_Yu9p.js} +2 -2
  63. package/dist/{health-pFcca1cU.js → health-DjUN4OFC.js} +2 -2
  64. package/dist/{hooks-cli-DefzmbZl.js → hooks-cli-BENuuN6Y.js} +7 -7
  65. package/dist/{hooks-cli-Dqe7WVzD.js → hooks-cli-CGrOzATb.js} +5 -5
  66. package/dist/index.js +11 -11
  67. package/dist/llm-slug-generator.js +1 -1
  68. package/dist/{logs-cli-xOzIPrHm.js → logs-cli-C0FZokFv.js} +3 -3
  69. package/dist/{logs-cli-Du8FCgKK.js → logs-cli-Dvs8e7u9.js} +3 -3
  70. package/dist/{model-catalog-DvBJ8pMD.js → model-catalog-DsFLN-ua.js} +1 -1
  71. package/dist/{model-picker-Ddo3jHe-.js → model-picker-BzIRY_aM.js} +1 -1
  72. package/dist/{models-c9cOxxrP.js → models-D1mOj_fd.js} +3 -3
  73. package/dist/{models-cli-BhOA86hd.js → models-cli-Blg1YDNe.js} +6 -6
  74. package/dist/{models-cli-Cosjljgg.js → models-cli-DhanAXLt.js} +8 -8
  75. package/dist/{node-cli-DSEhcjUV.js → node-cli-C4b1vFcY.js} +1 -1
  76. package/dist/{node-cli-C_G-Q3h-.js → node-cli-DUi87xSB.js} +1 -1
  77. package/dist/{nodes-cli-BIPA9B8G.js → nodes-cli-alQ9Bv_-.js} +3 -3
  78. package/dist/{nodes-cli-BcnuJajV.js → nodes-cli-wgJi8nLG.js} +3 -3
  79. package/dist/{onboard-DzfTelta.js → onboard-BKl9tvd9.js} +5 -5
  80. package/dist/{onboard-Cy_CK0Ng.js → onboard-DIjwRWbY.js} +3 -3
  81. package/dist/{onboard-channels-BjUx6cZ7.js → onboard-channels-CW1DBHfJ.js} +1 -1
  82. package/dist/{onboard-channels-BAEFSSqU.js → onboard-channels-wd_fR_EA.js} +1 -1
  83. package/dist/{onboard-custom-C7O-zfQ1.js → onboard-custom-BPvHqbtj.js} +1 -1
  84. package/dist/{onboard-helpers-ZmZYzlq3.js → onboard-helpers-Ci50bfCW.js} +1 -1
  85. package/dist/{onboard-helpers-_pit1NZW.js → onboard-helpers-DASpwgat.js} +1 -1
  86. package/dist/{onboard-remote-zUjD7UtM.js → onboard-remote-I9QVs0MQ.js} +1 -1
  87. package/dist/{onboard-remote-R1g6st9i.js → onboard-remote-xXi061GI.js} +1 -1
  88. package/dist/{onboard-skills-ByO_wSN5.js → onboard-skills-Bn2T6lze.js} +1 -1
  89. package/dist/{onboard-skills-BB0YhUmF.js → onboard-skills-DX7L1thH.js} +1 -1
  90. package/dist/{onboarding-B9RTmYiC.js → onboarding-Ban5B7QD.js} +9 -9
  91. package/dist/{onboarding-CerjrLp1.js → onboarding-DnhVdzx6.js} +7 -7
  92. package/dist/{onboarding.finalize-CGGB37q-.js → onboarding.finalize-QCZDp4AW.js} +10 -10
  93. package/dist/{onboarding.finalize-CLQL7PKW.js → onboarding.finalize-YbnkoDuN.js} +11 -11
  94. package/dist/{onboarding.gateway-config-CJUgDC6Y.js → onboarding.gateway-config-CJU7Hzrn.js} +3 -3
  95. package/dist/{onboarding.gateway-config-BQFO9a_h.js → onboarding.gateway-config-D6SN3HBb.js} +3 -3
  96. package/dist/{pi-auth-json-DayrlDg_.js → pi-auth-json-DhTX6MBO.js} +1 -1
  97. package/dist/{pi-embedded-CziuxRtW.js → pi-embedded-DG6dQt8v.js} +7 -2
  98. package/dist/{plugin-registry-Ls_YGsWz.js → plugin-registry-BdvMB68i.js} +1 -1
  99. package/dist/{plugin-registry-BkFixq63.js → plugin-registry-DfODDpUe.js} +1 -1
  100. package/dist/plugin-sdk/{channel-web-D4P9MkFu.js → channel-web-DHcmAnVa.js} +1 -1
  101. package/dist/plugin-sdk/gateway/protocol/index.d.ts +6 -2
  102. package/dist/plugin-sdk/gateway/protocol/schema/sessions.d.ts +4 -0
  103. package/dist/plugin-sdk/gateway/protocol/schema/types.d.ts +2 -1
  104. package/dist/plugin-sdk/index.js +2 -2
  105. package/dist/plugin-sdk/{reply-BVs4oalQ.js → reply-CeoL_D-u.js} +7 -2
  106. package/dist/plugin-sdk/{web-DiQTcviv.js → web-qmzvsQZn.js} +2 -2
  107. package/dist/{plugins-cli-CJLJsr_L.js → plugins-cli-DMxHIMNz.js} +5 -5
  108. package/dist/{plugins-cli-DXiakDnC.js → plugins-cli-Dcd56Auo.js} +7 -7
  109. package/dist/{program-B6KpKryX.js → program-CK6pb4lq.js} +10 -10
  110. package/dist/{program-context-Dm-BSkOd.js → program-context-0dr-H7wo.js} +29 -29
  111. package/dist/{prompt-select-styled-Dk8_YofB.js → prompt-select-styled-Bi9q87ml.js} +7 -7
  112. package/dist/{prompt-select-styled-DszNP9MV.js → prompt-select-styled-uYsTGG3x.js} +6 -6
  113. package/dist/{provider-auth-helpers-Bi5oeREh.js → provider-auth-helpers-BC24Uzzu.js} +1 -1
  114. package/dist/{provider-auth-helpers-B_Rtgt-w.js → provider-auth-helpers-BUorkQUD.js} +1 -1
  115. package/dist/{push-apns-BzIW-JHE.js → push-apns-BQckoz9S.js} +1 -1
  116. package/dist/{push-apns-Bmd6SdxC.js → push-apns-BwHZ2F7j.js} +1 -1
  117. package/dist/{register.agent-Vc2Bu3J4.js → register.agent-Ffw952Cm.js} +11 -11
  118. package/dist/{register.agent-kKtKgmcO.js → register.agent-wv_0IcpN.js} +9 -9
  119. package/dist/{register.configure-BnNPTLBI.js → register.configure-BMkj8T9e.js} +15 -15
  120. package/dist/{register.configure-D-o-geWg.js → register.configure-BTKXkVgp.js} +11 -11
  121. package/dist/{register.maintenance-jMmXJ1NK.js → register.maintenance-CRu_hm_x.js} +11 -11
  122. package/dist/{register.maintenance-0L5VAVCA.js → register.maintenance-D1xEYvHY.js} +12 -12
  123. package/dist/{register.message-CdCHhVND.js → register.message-DD5LEq6t.js} +5 -5
  124. package/dist/{register.message-C9zVQOWl.js → register.message-f-91gZI8.js} +7 -7
  125. package/dist/{register.onboard-pKq2v5Fh.js → register.onboard-BRTil6DH.js} +11 -11
  126. package/dist/{register.onboard-BN7J8vyx.js → register.onboard-BetMbk4D.js} +7 -7
  127. package/dist/{register.setup-J_GQSh-T.js → register.setup-C0XLhwPd.js} +11 -11
  128. package/dist/{register.setup-BKYxHrcB.js → register.setup-DX01Qmwr.js} +7 -7
  129. package/dist/{register.status-health-sessions-BLA4yUC4.js → register.status-health-sessions-CMF93G-p.js} +7 -7
  130. package/dist/{register.status-health-sessions-BtGRpngz.js → register.status-health-sessions-Dqh15XbO.js} +9 -9
  131. package/dist/{register.subclis-DcBHO9E8.js → register.subclis-D_HoHaB7.js} +20 -20
  132. package/dist/{reply-C68F3IMq.js → reply-CMb-m0ZJ.js} +9 -9
  133. package/dist/{rpc-BjLadgzu.js → rpc--E7i90bk.js} +1 -1
  134. package/dist/{rpc-BfhojW8g.js → rpc-_E0CZJKf.js} +1 -1
  135. package/dist/{run-main-DkcjdsAo.js → run-main-e6LI0zRf.js} +17 -17
  136. package/dist/{runner-CUglpiFP.js → runner-BSzJIT-z.js} +1 -1
  137. package/dist/{security-cli-BFLtWWHy.js → security-cli-BSZ1_9R3.js} +3 -3
  138. package/dist/{security-cli-Dmb1k47A.js → security-cli-KxA9AZ3q.js} +3 -3
  139. package/dist/{server-methods-B4IR7jcD.js → server-methods-CZJHMB_M.js} +102 -11
  140. package/dist/{server-methods-n5oCz2e0.js → server-methods-D5X0JrXg.js} +102 -11
  141. package/dist/{server-node-events-C3hHerD3.js → server-node-events-BpNyybGF.js} +5 -5
  142. package/dist/{server-node-events---jWWBKN.js → server-node-events-Cu_8g2ws.js} +7 -7
  143. package/dist/{status-8CbQSAEF.js → status-C2iQbl7T.js} +1 -1
  144. package/dist/{status-CwhHbhUv.js → status-CL1xQrpW.js} +5 -5
  145. package/dist/{status-ITRlj7e_.js → status-CXib3MSE.js} +5 -5
  146. package/dist/{status-ClvXAaHZ.js → status-iJUy8byq.js} +1 -1
  147. package/dist/{subagent-registry-BXI3DyAX.js → subagent-registry-Cdiios3w.js} +5 -5
  148. package/dist/{system-cli-UMsMEurS.js → system-cli-C4A3Udil.js} +3 -3
  149. package/dist/{system-cli-D_EIZpBm.js → system-cli-CECNjZdB.js} +3 -3
  150. package/dist/{tui-BJB80muc.js → tui-2nWOvxxE.js} +2 -2
  151. package/dist/{tui-CriznorL.js → tui-D14a9N3F.js} +2 -2
  152. package/dist/{tui-cli-C7Q9lK8Q.js → tui-cli-B-Nl_8uj.js} +3 -3
  153. package/dist/{tui-cli-CSIdfCTR.js → tui-cli-Bg4YuRSd.js} +3 -3
  154. package/dist/{unified-runner-Di5Ca6mo.js → unified-runner-dSVvVx1y.js} +7 -2
  155. package/dist/{update-cli-JS-KTMc8.js → update-cli-B5q0ErXF.js} +12 -12
  156. package/dist/{update-cli-B0H4ITiR.js → update-cli-CSWxJ-hA.js} +13 -13
  157. package/dist/{update-runner-C17bqGvO.js → update-runner-BB5A0jnW.js} +1 -1
  158. package/dist/{update-runner-e_ChofHM.js → update-runner-jvpPI7iP.js} +1 -1
  159. package/dist/{web-Dr9gUjHz.js → web-BsEbA9Ur.js} +4 -4
  160. package/dist/{web-BTiGD3po.js → web-BuHFfZp7.js} +1 -1
  161. package/dist/{web-B3oyGSBx.js → web-DDmkA8-N.js} +1 -1
  162. package/dist/{web-Cih6rPbV.js → web-DsdmLxAP.js} +7 -7
  163. package/extensions/bluebubbles/package.json +1 -1
  164. package/extensions/copilot-proxy/package.json +1 -1
  165. package/extensions/diagnostics-otel/package.json +1 -1
  166. package/extensions/discord/package.json +1 -1
  167. package/extensions/feishu/package.json +1 -1
  168. package/extensions/google-antigravity-auth/package.json +1 -1
  169. package/extensions/google-gemini-cli-auth/package.json +1 -1
  170. package/extensions/googlechat/package.json +1 -1
  171. package/extensions/imessage/package.json +1 -1
  172. package/extensions/irc/package.json +1 -1
  173. package/extensions/learning-loop/package.json +1 -1
  174. package/extensions/line/package.json +1 -1
  175. package/extensions/llm-task/package.json +1 -1
  176. package/extensions/matrix/CHANGELOG.md +12 -0
  177. package/extensions/matrix/package.json +1 -1
  178. package/extensions/mattermost/package.json +1 -1
  179. package/extensions/memory-core/package.json +1 -1
  180. package/extensions/memory-lancedb/package.json +1 -1
  181. package/extensions/minimax-portal-auth/package.json +1 -1
  182. package/extensions/msteams/CHANGELOG.md +12 -0
  183. package/extensions/msteams/package.json +1 -1
  184. package/extensions/nextcloud-talk/package.json +1 -1
  185. package/extensions/nostr/CHANGELOG.md +12 -0
  186. package/extensions/nostr/package.json +1 -1
  187. package/extensions/open-prose/package.json +1 -1
  188. package/extensions/outlook/package.json +1 -1
  189. package/extensions/pipeline/package.json +1 -1
  190. package/extensions/signal/package.json +1 -1
  191. package/extensions/slack/package.json +1 -1
  192. package/extensions/telegram/package.json +1 -1
  193. package/extensions/tlon/package.json +1 -1
  194. package/extensions/twitch/CHANGELOG.md +12 -0
  195. package/extensions/twitch/package.json +1 -1
  196. package/extensions/voice-call/CHANGELOG.md +12 -0
  197. package/extensions/voice-call/package.json +1 -1
  198. package/extensions/whatsapp/package.json +1 -1
  199. package/extensions/zalo/CHANGELOG.md +12 -0
  200. package/extensions/zalo/package.json +1 -1
  201. package/extensions/zalouser/CHANGELOG.md +12 -0
  202. package/extensions/zalouser/package.json +1 -1
  203. package/package.json +1 -1
@@ -6,13 +6,13 @@ import { C as ensureAgentWorkspace, S as DEFAULT_USER_FILENAME, T as isWorkspace
6
6
  import { i as loadWorkspaceSkillEntries } from "./skills-hAdgFdrv.js";
7
7
  import { t as buildWorkspaceSkillStatus } from "./skills-status-DKXJ-tbi.js";
8
8
  import { H as VERSION, N as applyMergePatch, P as applyLegacyMigrations, S as sensitive, U as resolveRuntimeServiceVersion, a as parseConfigJson5, c as resolveConfigSnapshotHash, d as SymiSchema, i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot, s as readConfigFileSnapshotForWrite, u as validateConfigObjectWithPlugins } from "./config-DHBLS1Hl.js";
9
- import { $ as validateNodePairRejectParams, A as validateCronStatusParams, At as ErrorCodes, B as validateExecApprovalsGetParams, Bt as removePairedDevice, C as validateConfigSetParams, Ct as validateWebLoginStartParams, D as validateCronRemoveParams, Dt as validateWizardStartParams, E as validateCronListParams, Et as validateWizardNextParams, F as validateDevicePairRemoveParams, Ft as approveDevicePairing, G as validateModelsListParams, H as validateExecApprovalsNodeSetParams, Ht as revokeDeviceToken, I as validateDeviceTokenRevokeParams, J as validateNodeInvokeParams, K as validateNodeDescribeParams, L as validateDeviceTokenRotateParams, M as validateDevicePairApproveParams, N as validateDevicePairListParams, Nt as parseSessionLabel, O as validateCronRunParams, Ot as validateWizardStatusParams, P as validateDevicePairRejectParams, Q as validateNodePairListParams, Rt as listDevicePairing, S as validateConfigSchemaParams, St as validateWakeParams, T as validateCronAddParams, Tt as validateWizardCancelParams, U as validateExecApprovalsSetParams, Ut as rotateDeviceToken, V as validateExecApprovalsNodeGetParams, W as validateLogsTailParams, Wt as summarizeDeviceTokens, X as validateNodeListParams, Y as validateNodeInvokeResultParams, Z as validateNodePairApproveParams, _ as validateChatInjectParams, _t as validateSkillsStatusParams, a as validateAgentWaitParams, b as validateConfigGetParams, bt as validateTalkModeParams, c as validateAgentsFilesGetParams, ct as validateSessionsDeleteParams, d as validateAgentsListParams, dt as validateSessionsPreviewParams, et as validateNodePairRequestParams, f as validateAgentsUpdateParams, ft as validateSessionsResetParams, g as validateChatHistoryParams, gt as validateSkillsInstallParams, h as validateChatAbortParams, ht as validateSkillsBinsParams, i as validateAgentParams, it as validatePushTestParams, j as validateCronUpdateParams, jt as errorShape, k as validateCronRunsParams, l as validateAgentsFilesListParams, lt as validateSessionsListParams, m as validateChannelsStatusParams, mt as validateSessionsUsageParams, n as formatValidationErrors, nt as validateNodeRenameParams, o as validateAgentsCreateParams, ot as validateSendParams, p as validateChannelsLogoutParams, pt as validateSessionsResolveParams, q as validateNodeEventParams, r as validateAgentIdentityParams, rt as validatePollParams, s as validateAgentsDeleteParams, st as validateSessionsCompactParams, tt as validateNodePairVerifyParams, u as validateAgentsFilesSetParams, ut as validateSessionsPatchParams, v as validateChatSendParams, vt as validateSkillsUpdateParams, wt as validateWebLoginWaitParams, x as validateConfigPatchParams, xt as validateUpdateRunParams, y as validateConfigApplyParams, yt as validateTalkConfigParams, zt as rejectDevicePairing } from "./client-DMBZpU6X.js";
10
- import { l as authorizeOperatorScopesForMethod, s as ADMIN_SCOPE$2, u as isNodeRoleMethod } from "./call-BcE47FtD.js";
9
+ import { $ as validateNodePairRejectParams, A as validateCronStatusParams, B as validateExecApprovalsGetParams, Bt as rejectDevicePairing, C as validateConfigSetParams, Ct as validateWakeParams, D as validateCronRemoveParams, Dt as validateWizardNextParams, E as validateCronListParams, Et as validateWizardCancelParams, F as validateDevicePairRemoveParams, G as validateModelsListParams, Gt as summarizeDeviceTokens, H as validateExecApprovalsNodeSetParams, I as validateDeviceTokenRevokeParams, It as approveDevicePairing, J as validateNodeInvokeParams, K as validateNodeDescribeParams, L as validateDeviceTokenRotateParams, M as validateDevicePairApproveParams, Mt as errorShape, N as validateDevicePairListParams, O as validateCronRunParams, Ot as validateWizardStartParams, P as validateDevicePairRejectParams, Pt as parseSessionLabel, Q as validateNodePairListParams, S as validateConfigSchemaParams, St as validateUpdateRunParams, T as validateCronAddParams, Tt as validateWebLoginWaitParams, U as validateExecApprovalsSetParams, Ut as revokeDeviceToken, V as validateExecApprovalsNodeGetParams, Vt as removePairedDevice, W as validateLogsTailParams, Wt as rotateDeviceToken, X as validateNodeListParams, Y as validateNodeInvokeResultParams, Z as validateNodePairApproveParams, _ as validateChatInjectParams, _t as validateSkillsInstallParams, a as validateAgentWaitParams, b as validateConfigGetParams, bt as validateTalkConfigParams, c as validateAgentsFilesGetParams, ct as validateSessionsDeleteParams, d as validateAgentsListParams, dt as validateSessionsPreviewParams, et as validateNodePairRequestParams, f as validateAgentsUpdateParams, ft as validateSessionsResetParams, g as validateChatHistoryParams, gt as validateSkillsBinsParams, h as validateChatAbortParams, ht as validateSessionsUsageParams, i as validateAgentParams, it as validatePushTestParams, j as validateCronUpdateParams, jt as ErrorCodes, k as validateCronRunsParams, kt as validateWizardStatusParams, l as validateAgentsFilesListParams, lt as validateSessionsListParams, m as validateChannelsStatusParams, mt as validateSessionsRestoreParams, n as formatValidationErrors, nt as validateNodeRenameParams, o as validateAgentsCreateParams, ot as validateSendParams, p as validateChannelsLogoutParams, pt as validateSessionsResolveParams, q as validateNodeEventParams, r as validateAgentIdentityParams, rt as validatePollParams, s as validateAgentsDeleteParams, st as validateSessionsCompactParams, tt as validateNodePairVerifyParams, u as validateAgentsFilesSetParams, ut as validateSessionsPatchParams, v as validateChatSendParams, vt as validateSkillsStatusParams, wt as validateWebLoginStartParams, x as validateConfigPatchParams, xt as validateTalkModeParams, y as validateConfigApplyParams, yt as validateSkillsUpdateParams, zt as listDevicePairing } from "./client-T3qcxXru.js";
10
+ import { l as authorizeOperatorScopesForMethod, s as ADMIN_SCOPE$2, u as isNodeRoleMethod } from "./call-DIDhYlsx.js";
11
11
  import { f as GATEWAY_CLIENT_CAPS, g as hasGatewayClientCap, i as isGatewayMessageChannel, l as normalizeMessageChannel, n as isDeliverableMessageChannel, t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-C9dERklz.js";
12
12
  import { c as writeJsonAtomic, o as createAsyncLock, s as readJsonFile } from "./pairing-token-Byh6drgn.js";
13
13
  import { s as pickPrimaryLanIPv4 } from "./net-DZ5Ayk-W.js";
14
14
  import { i as normalizeInputProvenance } from "./input-provenance-D0lNkCf6.js";
15
- import { $n as resolveTtsAutoMode, B as dispatchInboundMessage, C as resolveAgentDeliveryPlan, Cn as enqueueSystemEvent, Cr as onAgentEvent, D as createOutboundSendDeps, Dt as normalizeCronJobPatch, Et as normalizeCronJobCreate, G as BARE_SESSION_RESET_PROMPT, Gn as stopSubagentsForRequester, Gt as persistBrowserProxyFiles, In as resolveAgentTimeoutMs, Jn as resolveUserTimezone, Qn as resolveTtsApiKey, Sn as parseVerboseOverride, V as createReplyDispatcher, Vn as formatZonedTimestamp, Wn as isAbortTrigger, Wt as applyBrowserProxyPaths, Xn as isTtsEnabled, Y as abortEmbeddedPiRun, Yn as getTtsProvider, Z as waitForEmbeddedPiRunEnd, Zn as isTtsProviderConfigured, Zt as scheduleGatewaySigusr1Restart, a as listSubagentRunsForRequester, ar as textToSpeech, bn as applyModelOverrideToSessionEntry, c as clearSessionQueues, ct as resolveOutboundSessionRoute, dt as resolveOutboundTarget, en as unbindThreadBindingsBySessionKey, er as resolveTtsConfig, hn as resolveSendPolicy, i as listDescendantRunsForRequester, ir as setTtsProvider, m as loadSymiPlugins, mn as normalizeSendPolicy, nr as resolveTtsProviderOrder, or as OPENAI_TTS_MODELS, rn as loadProviderUsageSummary, rr as setTtsEnabled, sr as OPENAI_TTS_VOICES, st as ensureOutboundSessionEntry, tn as normalizeGroupActivation, tr as resolveTtsPrefsPath, w as resolveAgentOutboundTarget, wn as isSystemEventContextChanged, wr as registerAgentRunContext, wt as writeRestartSentinel, x as agentCommand, xn as applyVerboseOverride, yt as formatDoctorNonInteractiveHint } from "./subagent-registry-BXI3DyAX.js";
15
+ import { $n as resolveTtsAutoMode, B as dispatchInboundMessage, C as resolveAgentDeliveryPlan, Cn as enqueueSystemEvent, Cr as onAgentEvent, D as createOutboundSendDeps, Dt as normalizeCronJobPatch, Et as normalizeCronJobCreate, G as BARE_SESSION_RESET_PROMPT, Gn as stopSubagentsForRequester, Gt as persistBrowserProxyFiles, In as resolveAgentTimeoutMs, Jn as resolveUserTimezone, Qn as resolveTtsApiKey, Sn as parseVerboseOverride, V as createReplyDispatcher, Vn as formatZonedTimestamp, Wn as isAbortTrigger, Wt as applyBrowserProxyPaths, Xn as isTtsEnabled, Y as abortEmbeddedPiRun, Yn as getTtsProvider, Z as waitForEmbeddedPiRunEnd, Zn as isTtsProviderConfigured, Zt as scheduleGatewaySigusr1Restart, a as listSubagentRunsForRequester, ar as textToSpeech, bn as applyModelOverrideToSessionEntry, c as clearSessionQueues, ct as resolveOutboundSessionRoute, dt as resolveOutboundTarget, en as unbindThreadBindingsBySessionKey, er as resolveTtsConfig, hn as resolveSendPolicy, i as listDescendantRunsForRequester, ir as setTtsProvider, m as loadSymiPlugins, mn as normalizeSendPolicy, nr as resolveTtsProviderOrder, or as OPENAI_TTS_MODELS, rn as loadProviderUsageSummary, rr as setTtsEnabled, sr as OPENAI_TTS_VOICES, st as ensureOutboundSessionEntry, tn as normalizeGroupActivation, tr as resolveTtsPrefsPath, w as resolveAgentOutboundTarget, wn as isSystemEventContextChanged, wr as registerAgentRunContext, wt as writeRestartSentinel, x as agentCommand, xn as applyVerboseOverride, yt as formatDoctorNonInteractiveHint } from "./subagent-registry-Cdiios3w.js";
16
16
  import { F as resolveMainSessionKey, I as resolveMainSessionKeyFromConfig, J as normalizeSessionDeliveryFields, N as resolveAgentMainSessionKey, P as resolveExplicitAgentSessionKey, R as snapshotSessionOrigin, S as stripEnvelopeFromMessages, _ as capArrayByJsonBytes, d as updateSessionStore, g as archiveSessionTranscripts, h as archiveFileOnDisk, o as loadSessionStore, t as extractDeliveryInfo, v as readSessionMessages, x as resolveSessionTranscriptCandidates, y as readSessionPreviewItemsFromTranscript } from "./sessions-CJXnZVjR.js";
17
17
  import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CwSlLxM8.js";
18
18
  import { n as createBrowserRouteDispatcher } from "./with-timeout-Di0nddLY.js";
@@ -30,21 +30,21 @@ import { t as getChannelActivity } from "./channel-activity-myOnmDZi.js";
30
30
  import { n as normalizePollInput } from "./polls-DXeUmcgz.js";
31
31
  import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-DEVN6FRR.js";
32
32
  import { i as parseAbsoluteTimeMs } from "./stagger-CQar2eKe.js";
33
- import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-_pit1NZW.js";
33
+ import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-DASpwgat.js";
34
34
  import { r as getLastHeartbeatEvent } from "./heartbeat-visibility-B8TDjqpW.js";
35
35
  import { t as buildChannelUiCatalog } from "./catalog-DLQFKucJ.js";
36
36
  import { t as WizardCancelledError } from "./prompts-m1IJwIAx.js";
37
37
  import { t as resolveChannelDefaultAccountId } from "./helpers-cLP5YLeQ.js";
38
38
  import { t as buildChannelAccountSnapshot } from "./status-BUedPCLb.js";
39
- import { o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-Byo5jCLN.js";
40
- import { r as getStatusSummary } from "./status-CwhHbhUv.js";
41
- import { c as setHeartbeatsEnabled } from "./health-BNxdveY8.js";
39
+ import { o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-Cgd5-Y7W.js";
40
+ import { r as getStatusSummary } from "./status-CL1xQrpW.js";
41
+ import { c as setHeartbeatsEnabled } from "./health-By4_Yu9p.js";
42
42
  import { m as normalizeUpdateChannel } from "./update-check-ZdimP1aU.js";
43
- import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-BzIW-JHE.js";
44
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-BDtgUDFp.js";
43
+ import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-BQckoz9S.js";
44
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-SvdnvFsa.js";
45
45
  import { t as resolveSystemRunCommand } from "./system-run-command-ByVa3txU.js";
46
46
  import { t as installSkill } from "./skills-install-1ZdwGTnh.js";
47
- import { t as runGatewayUpdate } from "./update-runner-e_ChofHM.js";
47
+ import { t as runGatewayUpdate } from "./update-runner-jvpPI7iP.js";
48
48
  import { spawnSync } from "node:child_process";
49
49
  import * as os$1 from "node:os";
50
50
  import os from "node:os";
@@ -1830,6 +1830,97 @@ const sessionsHandlers = {
1830
1830
  entry: next
1831
1831
  }, void 0);
1832
1832
  },
1833
+ "sessions.restore": async ({ params, respond }) => {
1834
+ if (!assertValidParams(params, validateSessionsRestoreParams, "sessions.restore", respond)) return;
1835
+ const p = params;
1836
+ const key = requireSessionKey(p.key, respond);
1837
+ if (!key) return;
1838
+ const targetBasename = path.basename(p.targetFile);
1839
+ if (targetBasename !== p.targetFile || targetBasename.includes("..")) {
1840
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "Invalid target file name."));
1841
+ return;
1842
+ }
1843
+ const { cfg, target, storePath } = resolveGatewaySessionTargetFromKey(key);
1844
+ const sessionsDir = path.dirname(storePath);
1845
+ const targetPath = path.join(sessionsDir, targetBasename);
1846
+ if (!fs.existsSync(targetPath)) {
1847
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, `Target file not found: ${targetBasename}`));
1848
+ return;
1849
+ }
1850
+ let restoredSessionId;
1851
+ try {
1852
+ const firstLine = fs.readFileSync(targetPath, "utf8").split("\n")[0];
1853
+ const header = JSON.parse(firstLine);
1854
+ if (!header.id || header.type !== "session") throw new Error("invalid session header");
1855
+ restoredSessionId = header.id;
1856
+ } catch {
1857
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "Target file is not a valid session transcript."));
1858
+ return;
1859
+ }
1860
+ const { entry } = loadSessionEntry(key);
1861
+ const sessionId = entry?.sessionId;
1862
+ const cleanupError = await ensureSessionRuntimeCleanup({
1863
+ cfg,
1864
+ key,
1865
+ target,
1866
+ sessionId
1867
+ });
1868
+ if (cleanupError) {
1869
+ respond(false, void 0, cleanupError);
1870
+ return;
1871
+ }
1872
+ const oldSessionId = entry?.sessionId;
1873
+ const oldSessionFile = entry?.sessionFile;
1874
+ archiveSessionTranscriptsForSession({
1875
+ sessionId: oldSessionId,
1876
+ storePath,
1877
+ sessionFile: oldSessionFile,
1878
+ agentId: target.agentId,
1879
+ reason: "reset"
1880
+ });
1881
+ const restoredFileName = `${restoredSessionId}.jsonl`;
1882
+ const restoredPath = path.join(sessionsDir, restoredFileName);
1883
+ if (targetPath !== restoredPath) fs.renameSync(targetPath, restoredPath);
1884
+ const next = await updateSessionStore(storePath, (store) => {
1885
+ const { primaryKey } = migrateAndPruneSessionStoreKey({
1886
+ cfg,
1887
+ key,
1888
+ store
1889
+ });
1890
+ const existingEntry = store[primaryKey];
1891
+ const nextEntry = {
1892
+ sessionId: restoredSessionId,
1893
+ sessionFile: restoredPath,
1894
+ updatedAt: Date.now(),
1895
+ systemSent: false,
1896
+ abortedLastRun: false,
1897
+ thinkingLevel: existingEntry?.thinkingLevel,
1898
+ verboseLevel: existingEntry?.verboseLevel,
1899
+ reasoningLevel: existingEntry?.reasoningLevel,
1900
+ responseUsage: existingEntry?.responseUsage,
1901
+ model: existingEntry?.model,
1902
+ contextTokens: existingEntry?.contextTokens,
1903
+ sendPolicy: existingEntry?.sendPolicy,
1904
+ label: existingEntry?.label,
1905
+ origin: snapshotSessionOrigin(existingEntry),
1906
+ lastChannel: existingEntry?.lastChannel,
1907
+ lastTo: existingEntry?.lastTo,
1908
+ skillsSnapshot: existingEntry?.skillsSnapshot,
1909
+ inputTokens: 0,
1910
+ outputTokens: 0,
1911
+ totalTokens: 0,
1912
+ totalTokensFresh: true
1913
+ };
1914
+ store[primaryKey] = nextEntry;
1915
+ return nextEntry;
1916
+ });
1917
+ respond(true, {
1918
+ ok: true,
1919
+ key: target.canonicalKey,
1920
+ sessionId: restoredSessionId,
1921
+ entry: next
1922
+ }, void 0);
1923
+ },
1833
1924
  "sessions.delete": async ({ params, respond, client, isWebchatConnect }) => {
1834
1925
  if (!assertValidParams(params, validateSessionsDeleteParams, "sessions.delete", respond)) return;
1835
1926
  const p = params;
@@ -6851,7 +6942,7 @@ const nodeHandlers = {
6851
6942
  const p = params;
6852
6943
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
6853
6944
  await respondUnavailableOnThrow(respond, async () => {
6854
- const { handleNodeEvent } = await import("./server-node-events-C3hHerD3.js");
6945
+ const { handleNodeEvent } = await import("./server-node-events-BpNyybGF.js");
6855
6946
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
6856
6947
  await handleNodeEvent({
6857
6948
  deps: context.deps,
@@ -1,7 +1,7 @@
1
1
  import { g as resolveStateDir, t as CONFIG_PATH } from "./paths-Cqn-zk3M.js";
2
2
  import { D as isPlainObject, U as getResolvedLoggerSettings, r as clamp, y as resolveUserPath } from "./utils-B-0b9bGM.js";
3
3
  import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels } from "./thinking-EAliFiVK.js";
4
- import { $n as OPENAI_TTS_MODELS, Bn as registerAgentRunContext, Bt as abortEmbeddedPiRun, C as ensureOutboundSessionEntry, Et as agentCommand, Ft as normalizeSendPolicy, G as normalizeCronJobPatch, Gn as resolveTtsApiKey, H as writeRestartSentinel, Hn as getTtsProvider, Ht as waitForEmbeddedPiRunEnd, It as resolveSendPolicy, Jn as resolveTtsPrefsPath, Kn as resolveTtsAutoMode, L as formatDoctorNonInteractiveHint, Mn as listSubagentRunsForRequester, Mt as resolveOutboundTarget, N as scheduleGatewaySigusr1Restart, Ot as resolveAgentDeliveryPlan, Pr as resolveAgentTimeoutMs, Qn as textToSpeech, Rt as createOutboundSendDeps, Sr as isSystemEventContextChanged, Tn as stopSubagentsForRequester, Un as isTtsEnabled, Vn as resolveUserTimezone, W as normalizeCronJobCreate, Wn as isTtsProviderConfigured, Xn as setTtsEnabled, Yn as resolveTtsProviderOrder, Zn as setTtsProvider, _ as loadCombinedSessionStoreForGateway, at as persistBrowserProxyFiles, b as resolveGatewaySessionStoreTarget, br as parseVerboseOverride, c as clearSessionQueues, er as OPENAI_TTS_VOICES, ft as loadSymiPlugins, g as listSessionsFromStore, gt as loadProviderUsageSummary, h as listAgentsForGateway, in as unbindThreadBindingsBySessionKey, it as applyBrowserProxyPaths, jn as listDescendantRunsForRequester, kt as resolveAgentOutboundTarget, mn as createReplyDispatcher, mt as normalizeGroupActivation, n as BARE_SESSION_RESET_PROMPT, p as canonicalizeSpawnedByForAgent, pn as dispatchInboundMessage, qn as resolveTtsConfig, v as loadSessionEntry, vr as applyModelOverrideToSessionEntry, w as resolveOutboundSessionRoute, wn as isAbortTrigger, x as resolveSessionModelRef, xn as formatZonedTimestamp, xr as enqueueSystemEvent, y as pruneLegacyStoreKeys, yr as applyVerboseOverride, zn as onAgentEvent } from "./reply-C68F3IMq.js";
4
+ import { $n as OPENAI_TTS_MODELS, Bn as registerAgentRunContext, Bt as abortEmbeddedPiRun, C as ensureOutboundSessionEntry, Et as agentCommand, Ft as normalizeSendPolicy, G as normalizeCronJobPatch, Gn as resolveTtsApiKey, H as writeRestartSentinel, Hn as getTtsProvider, Ht as waitForEmbeddedPiRunEnd, It as resolveSendPolicy, Jn as resolveTtsPrefsPath, Kn as resolveTtsAutoMode, L as formatDoctorNonInteractiveHint, Mn as listSubagentRunsForRequester, Mt as resolveOutboundTarget, N as scheduleGatewaySigusr1Restart, Ot as resolveAgentDeliveryPlan, Pr as resolveAgentTimeoutMs, Qn as textToSpeech, Rt as createOutboundSendDeps, Sr as isSystemEventContextChanged, Tn as stopSubagentsForRequester, Un as isTtsEnabled, Vn as resolveUserTimezone, W as normalizeCronJobCreate, Wn as isTtsProviderConfigured, Xn as setTtsEnabled, Yn as resolveTtsProviderOrder, Zn as setTtsProvider, _ as loadCombinedSessionStoreForGateway, at as persistBrowserProxyFiles, b as resolveGatewaySessionStoreTarget, br as parseVerboseOverride, c as clearSessionQueues, er as OPENAI_TTS_VOICES, ft as loadSymiPlugins, g as listSessionsFromStore, gt as loadProviderUsageSummary, h as listAgentsForGateway, in as unbindThreadBindingsBySessionKey, it as applyBrowserProxyPaths, jn as listDescendantRunsForRequester, kt as resolveAgentOutboundTarget, mn as createReplyDispatcher, mt as normalizeGroupActivation, n as BARE_SESSION_RESET_PROMPT, p as canonicalizeSpawnedByForAgent, pn as dispatchInboundMessage, qn as resolveTtsConfig, v as loadSessionEntry, vr as applyModelOverrideToSessionEntry, w as resolveOutboundSessionRoute, wn as isAbortTrigger, x as resolveSessionModelRef, xn as formatZonedTimestamp, xr as enqueueSystemEvent, y as pruneLegacyStoreKeys, yr as applyVerboseOverride, zn as onAgentEvent } from "./reply-CMb-m0ZJ.js";
5
5
  import { S as parseAgentSessionKey, l as resolveAgentIdFromSessionKey, m as DEFAULT_ACCOUNT_ID, o as classifySessionKeyShape, s as normalizeAgentId, t as DEFAULT_AGENT_ID, x as isSubagentSessionKey } from "./session-key-DCt45XZa.js";
6
6
  import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
7
7
  import { C as createInternalHookEvent, T as triggerInternalHook, d as getActivePluginRegistry, r as DEFAULT_CHAT_CHANNEL, t as CHANNEL_IDS } from "./registry-Cja8eT7G.js";
@@ -20,15 +20,15 @@ import { i as normalizeInputProvenance } from "./input-provenance-BzbXHcaD.js";
20
20
  import { n as createBrowserRouteDispatcher } from "./with-timeout-gmK6RciS.js";
21
21
  import { C as getGlobalHookRunner, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-CWR_98sK.js";
22
22
  import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-CE2YmmsD.js";
23
- import { $ as validateNodePairRejectParams, A as validateCronStatusParams, At as ErrorCodes, B as validateExecApprovalsGetParams, Bt as removePairedDevice, C as validateConfigSetParams, Ct as validateWebLoginStartParams, D as validateCronRemoveParams, Dt as validateWizardStartParams, E as validateCronListParams, Et as validateWizardNextParams, F as validateDevicePairRemoveParams, Ft as approveDevicePairing, G as validateModelsListParams, H as validateExecApprovalsNodeSetParams, Ht as revokeDeviceToken, I as validateDeviceTokenRevokeParams, J as validateNodeInvokeParams, K as validateNodeDescribeParams, L as validateDeviceTokenRotateParams, M as validateDevicePairApproveParams, N as validateDevicePairListParams, Nt as parseSessionLabel, O as validateCronRunParams, Ot as validateWizardStatusParams, P as validateDevicePairRejectParams, Q as validateNodePairListParams, Rt as listDevicePairing, S as validateConfigSchemaParams, St as validateWakeParams, T as validateCronAddParams, Tt as validateWizardCancelParams, U as validateExecApprovalsSetParams, Ut as rotateDeviceToken, V as validateExecApprovalsNodeGetParams, W as validateLogsTailParams, Wt as summarizeDeviceTokens, X as validateNodeListParams, Y as validateNodeInvokeResultParams, Z as validateNodePairApproveParams, _ as validateChatInjectParams, _t as validateSkillsStatusParams, a as validateAgentWaitParams, b as validateConfigGetParams, bt as validateTalkModeParams, c as validateAgentsFilesGetParams, ct as validateSessionsDeleteParams, d as validateAgentsListParams, dt as validateSessionsPreviewParams, et as validateNodePairRequestParams, f as validateAgentsUpdateParams, ft as validateSessionsResetParams, g as validateChatHistoryParams, gt as validateSkillsInstallParams, h as validateChatAbortParams, ht as validateSkillsBinsParams, i as validateAgentParams, it as validatePushTestParams, j as validateCronUpdateParams, jt as errorShape, k as validateCronRunsParams, l as validateAgentsFilesListParams, lt as validateSessionsListParams, m as validateChannelsStatusParams, mt as validateSessionsUsageParams, n as formatValidationErrors, nt as validateNodeRenameParams, o as validateAgentsCreateParams, ot as validateSendParams, p as validateChannelsLogoutParams, pt as validateSessionsResolveParams, q as validateNodeEventParams, r as validateAgentIdentityParams, rt as validatePollParams, s as validateAgentsDeleteParams, st as validateSessionsCompactParams, tt as validateNodePairVerifyParams, u as validateAgentsFilesSetParams, ut as validateSessionsPatchParams, v as validateChatSendParams, vt as validateSkillsUpdateParams, wt as validateWebLoginWaitParams, x as validateConfigPatchParams, xt as validateUpdateRunParams, y as validateConfigApplyParams, yt as validateTalkConfigParams, zt as rejectDevicePairing } from "./client-CQSyCS4M.js";
24
- import { l as authorizeOperatorScopesForMethod, s as ADMIN_SCOPE$2, u as isNodeRoleMethod } from "./call-CJaS1iRF.js";
23
+ import { $ as validateNodePairRejectParams, A as validateCronStatusParams, B as validateExecApprovalsGetParams, Bt as rejectDevicePairing, C as validateConfigSetParams, Ct as validateWakeParams, D as validateCronRemoveParams, Dt as validateWizardNextParams, E as validateCronListParams, Et as validateWizardCancelParams, F as validateDevicePairRemoveParams, G as validateModelsListParams, Gt as summarizeDeviceTokens, H as validateExecApprovalsNodeSetParams, I as validateDeviceTokenRevokeParams, It as approveDevicePairing, J as validateNodeInvokeParams, K as validateNodeDescribeParams, L as validateDeviceTokenRotateParams, M as validateDevicePairApproveParams, Mt as errorShape, N as validateDevicePairListParams, O as validateCronRunParams, Ot as validateWizardStartParams, P as validateDevicePairRejectParams, Pt as parseSessionLabel, Q as validateNodePairListParams, S as validateConfigSchemaParams, St as validateUpdateRunParams, T as validateCronAddParams, Tt as validateWebLoginWaitParams, U as validateExecApprovalsSetParams, Ut as revokeDeviceToken, V as validateExecApprovalsNodeGetParams, Vt as removePairedDevice, W as validateLogsTailParams, Wt as rotateDeviceToken, X as validateNodeListParams, Y as validateNodeInvokeResultParams, Z as validateNodePairApproveParams, _ as validateChatInjectParams, _t as validateSkillsInstallParams, a as validateAgentWaitParams, b as validateConfigGetParams, bt as validateTalkConfigParams, c as validateAgentsFilesGetParams, ct as validateSessionsDeleteParams, d as validateAgentsListParams, dt as validateSessionsPreviewParams, et as validateNodePairRequestParams, f as validateAgentsUpdateParams, ft as validateSessionsResetParams, g as validateChatHistoryParams, gt as validateSkillsBinsParams, h as validateChatAbortParams, ht as validateSessionsUsageParams, i as validateAgentParams, it as validatePushTestParams, j as validateCronUpdateParams, jt as ErrorCodes, k as validateCronRunsParams, kt as validateWizardStatusParams, l as validateAgentsFilesListParams, lt as validateSessionsListParams, m as validateChannelsStatusParams, mt as validateSessionsRestoreParams, n as formatValidationErrors, nt as validateNodeRenameParams, o as validateAgentsCreateParams, ot as validateSendParams, p as validateChannelsLogoutParams, pt as validateSessionsResolveParams, q as validateNodeEventParams, r as validateAgentIdentityParams, rt as validatePollParams, s as validateAgentsDeleteParams, st as validateSessionsCompactParams, tt as validateNodePairVerifyParams, u as validateAgentsFilesSetParams, ut as validateSessionsPatchParams, v as validateChatSendParams, vt as validateSkillsStatusParams, wt as validateWebLoginStartParams, x as validateConfigPatchParams, xt as validateTalkModeParams, y as validateConfigApplyParams, yt as validateSkillsUpdateParams, zt as listDevicePairing } from "./client-jI1oE0_k.js";
24
+ import { l as authorizeOperatorScopesForMethod, s as ADMIN_SCOPE$2, u as isNodeRoleMethod } from "./call-CFhGTNtt.js";
25
25
  import { c as writeJsonAtomic, o as createAsyncLock, s as readJsonFile } from "./pairing-token-CX3NN_qj.js";
26
26
  import { n as normalizePollInput } from "./polls-DhH5YkzN.js";
27
27
  import { t as getChannelActivity } from "./channel-activity-BOiuJS3t.js";
28
28
  import { _ as requestNodePairing, g as renamePairedNode, h as rejectNodePairing, m as listNodePairing, o as getRemoteSkillEligibility, p as approveNodePairing, y as verifyNodeToken } from "./skill-commands-Cxw-jNxU.js";
29
29
  import { t as listAgentWorkspaceDirs } from "./workspace-dirs-GpkFi6Kw.js";
30
30
  import { i as loadSessionUsageTimeSeries, n as loadCostUsageSummary, r as loadSessionCostSummary, t as discoverAllSessions } from "./session-cost-usage-UxUgrslM.js";
31
- import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-ZmZYzlq3.js";
31
+ import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-Ci50bfCW.js";
32
32
  import { a as mergeExecApprovalsSocketDefaults, c as readExecApprovalsSnapshot, p as saveExecApprovals, r as ensureExecApprovals, s as normalizeExecApprovals } from "./exec-approvals-Kn31mBcW.js";
33
33
  import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-Bz7rxLWq.js";
34
34
  import { i as parseAbsoluteTimeMs } from "./stagger-BUClb97_.js";
@@ -38,15 +38,15 @@ import { t as buildWorkspaceSkillStatus } from "./skills-status-CURJKnyY.js";
38
38
  import { t as WizardCancelledError } from "./prompts-Xu2Sveka.js";
39
39
  import { t as resolveChannelDefaultAccountId } from "./helpers-BcGbMZD1.js";
40
40
  import { t as buildChannelAccountSnapshot } from "./status-BrV-afZE.js";
41
- import { o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-CrITRV6w.js";
42
- import { n as getStatusSummary } from "./status-ITRlj7e_.js";
43
- import { s as setHeartbeatsEnabled } from "./health-pFcca1cU.js";
41
+ import { o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-DCDNPsGr.js";
42
+ import { n as getStatusSummary } from "./status-CXib3MSE.js";
43
+ import { s as setHeartbeatsEnabled } from "./health-DjUN4OFC.js";
44
44
  import { m as normalizeUpdateChannel } from "./update-check-CtckACbb.js";
45
- import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-Bmd6SdxC.js";
46
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-BKjYekzK.js";
45
+ import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-BwHZ2F7j.js";
46
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-DP7J1Yxi.js";
47
47
  import { t as resolveSystemRunCommand } from "./system-run-command-ByVa3txU.js";
48
48
  import { t as installSkill } from "./skills-install-D67isO1L.js";
49
- import { t as runGatewayUpdate } from "./update-runner-C17bqGvO.js";
49
+ import { t as runGatewayUpdate } from "./update-runner-BB5A0jnW.js";
50
50
  import * as fs$2 from "node:fs";
51
51
  import fs from "node:fs";
52
52
  import * as os$1 from "node:os";
@@ -1832,6 +1832,97 @@ const sessionsHandlers = {
1832
1832
  entry: next
1833
1833
  }, void 0);
1834
1834
  },
1835
+ "sessions.restore": async ({ params, respond }) => {
1836
+ if (!assertValidParams(params, validateSessionsRestoreParams, "sessions.restore", respond)) return;
1837
+ const p = params;
1838
+ const key = requireSessionKey(p.key, respond);
1839
+ if (!key) return;
1840
+ const targetBasename = path.basename(p.targetFile);
1841
+ if (targetBasename !== p.targetFile || targetBasename.includes("..")) {
1842
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "Invalid target file name."));
1843
+ return;
1844
+ }
1845
+ const { cfg, target, storePath } = resolveGatewaySessionTargetFromKey(key);
1846
+ const sessionsDir = path.dirname(storePath);
1847
+ const targetPath = path.join(sessionsDir, targetBasename);
1848
+ if (!fs.existsSync(targetPath)) {
1849
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, `Target file not found: ${targetBasename}`));
1850
+ return;
1851
+ }
1852
+ let restoredSessionId;
1853
+ try {
1854
+ const firstLine = fs.readFileSync(targetPath, "utf8").split("\n")[0];
1855
+ const header = JSON.parse(firstLine);
1856
+ if (!header.id || header.type !== "session") throw new Error("invalid session header");
1857
+ restoredSessionId = header.id;
1858
+ } catch {
1859
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "Target file is not a valid session transcript."));
1860
+ return;
1861
+ }
1862
+ const { entry } = loadSessionEntry(key);
1863
+ const sessionId = entry?.sessionId;
1864
+ const cleanupError = await ensureSessionRuntimeCleanup({
1865
+ cfg,
1866
+ key,
1867
+ target,
1868
+ sessionId
1869
+ });
1870
+ if (cleanupError) {
1871
+ respond(false, void 0, cleanupError);
1872
+ return;
1873
+ }
1874
+ const oldSessionId = entry?.sessionId;
1875
+ const oldSessionFile = entry?.sessionFile;
1876
+ archiveSessionTranscriptsForSession({
1877
+ sessionId: oldSessionId,
1878
+ storePath,
1879
+ sessionFile: oldSessionFile,
1880
+ agentId: target.agentId,
1881
+ reason: "reset"
1882
+ });
1883
+ const restoredFileName = `${restoredSessionId}.jsonl`;
1884
+ const restoredPath = path.join(sessionsDir, restoredFileName);
1885
+ if (targetPath !== restoredPath) fs.renameSync(targetPath, restoredPath);
1886
+ const next = await updateSessionStore(storePath, (store) => {
1887
+ const { primaryKey } = migrateAndPruneSessionStoreKey({
1888
+ cfg,
1889
+ key,
1890
+ store
1891
+ });
1892
+ const existingEntry = store[primaryKey];
1893
+ const nextEntry = {
1894
+ sessionId: restoredSessionId,
1895
+ sessionFile: restoredPath,
1896
+ updatedAt: Date.now(),
1897
+ systemSent: false,
1898
+ abortedLastRun: false,
1899
+ thinkingLevel: existingEntry?.thinkingLevel,
1900
+ verboseLevel: existingEntry?.verboseLevel,
1901
+ reasoningLevel: existingEntry?.reasoningLevel,
1902
+ responseUsage: existingEntry?.responseUsage,
1903
+ model: existingEntry?.model,
1904
+ contextTokens: existingEntry?.contextTokens,
1905
+ sendPolicy: existingEntry?.sendPolicy,
1906
+ label: existingEntry?.label,
1907
+ origin: snapshotSessionOrigin(existingEntry),
1908
+ lastChannel: existingEntry?.lastChannel,
1909
+ lastTo: existingEntry?.lastTo,
1910
+ skillsSnapshot: existingEntry?.skillsSnapshot,
1911
+ inputTokens: 0,
1912
+ outputTokens: 0,
1913
+ totalTokens: 0,
1914
+ totalTokensFresh: true
1915
+ };
1916
+ store[primaryKey] = nextEntry;
1917
+ return nextEntry;
1918
+ });
1919
+ respond(true, {
1920
+ ok: true,
1921
+ key: target.canonicalKey,
1922
+ sessionId: restoredSessionId,
1923
+ entry: next
1924
+ }, void 0);
1925
+ },
1835
1926
  "sessions.delete": async ({ params, respond, client, isWebchatConnect }) => {
1836
1927
  if (!assertValidParams(params, validateSessionsDeleteParams, "sessions.delete", respond)) return;
1837
1928
  const p = params;
@@ -6853,7 +6944,7 @@ const nodeHandlers = {
6853
6944
  const p = params;
6854
6945
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
6855
6946
  await respondUnavailableOnThrow(respond, async () => {
6856
- const { handleNodeEvent } = await import("./server-node-events---jWWBKN.js");
6947
+ const { handleNodeEvent } = await import("./server-node-events-Cu_8g2ws.js");
6857
6948
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
6858
6949
  await handleNodeEvent({
6859
6950
  deps: context.deps,
@@ -10,11 +10,11 @@ import "./frontmatter-B8duUx_6.js";
10
10
  import "./skills-hAdgFdrv.js";
11
11
  import "./manifest-registry-Czr39pxG.js";
12
12
  import { i as loadConfig } from "./config-DHBLS1Hl.js";
13
- import "./client-DMBZpU6X.js";
14
- import "./call-BcE47FtD.js";
13
+ import "./client-T3qcxXru.js";
14
+ import "./call-DIDhYlsx.js";
15
15
  import "./message-channel-C9dERklz.js";
16
16
  import "./pairing-token-Byh6drgn.js";
17
- import { Cn as enqueueSystemEvent, T as createOutboundSendDeps, dn as requestHeartbeatNow, dt as resolveOutboundTarget, x as agentCommand } from "./subagent-registry-BXI3DyAX.js";
17
+ import { Cn as enqueueSystemEvent, T as createOutboundSendDeps, dn as requestHeartbeatNow, dt as resolveOutboundTarget, x as agentCommand } from "./subagent-registry-Cdiios3w.js";
18
18
  import { d as updateSessionStore } from "./sessions-CJXnZVjR.js";
19
19
  import "./tokens-Csntmwwn.js";
20
20
  import { r as normalizeChannelId } from "./plugins-CwSlLxM8.js";
@@ -94,11 +94,11 @@ import "./cli-utils-CCaEbxAz.js";
94
94
  import "./help-format-B0pWGnZs.js";
95
95
  import "./progress-BAHiAaDW.js";
96
96
  import "./replies-DO80zq73.js";
97
- import "./onboard-helpers-_pit1NZW.js";
97
+ import "./onboard-helpers-DASpwgat.js";
98
98
  import "./prompt-style-DwCXob2h.js";
99
99
  import "./pairing-labels-D1HDboV2.js";
100
100
  import "./pi-tools.policy-De00gPXt.js";
101
- import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-BzIW-JHE.js";
101
+ import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-BQckoz9S.js";
102
102
  import { randomUUID } from "node:crypto";
103
103
 
104
104
  //#region src/gateway/server-node-events.ts
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cqn-zk3M.js";
2
2
  import "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import { Et as agentCommand, Mt as resolveOutboundTarget, Pt as createOutboundSendDeps, b as resolveGatewaySessionStoreTarget, st as requestHeartbeatNow, v as loadSessionEntry, xr as enqueueSystemEvent, y as pruneLegacyStoreKeys } from "./reply-C68F3IMq.js";
4
+ import { Et as agentCommand, Mt as resolveOutboundTarget, Pt as createOutboundSendDeps, b as resolveGatewaySessionStoreTarget, st as requestHeartbeatNow, v as loadSessionEntry, xr as enqueueSystemEvent, y as pruneLegacyStoreKeys } from "./reply-CMb-m0ZJ.js";
5
5
  import { c as normalizeMainKey } from "./session-key-DCt45XZa.js";
6
6
  import "./registry-Cja8eT7G.js";
7
7
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
@@ -15,7 +15,7 @@ import "./message-channel-aT-I_DTX.js";
15
15
  import "./send-CZr1hVHY.js";
16
16
  import { i as loadConfig } from "./config-CHwyw6l5.js";
17
17
  import "./manifest-registry-C4BxOMWX.js";
18
- import "./runner-CUglpiFP.js";
18
+ import "./runner-BSzJIT-z.js";
19
19
  import "./image-D9uvDTrc.js";
20
20
  import "./models-config-qyOXrOli.js";
21
21
  import "./pi-model-discovery-4uUnLc3n.js";
@@ -53,7 +53,7 @@ import "./fetch-guard-DOPkVbh3.js";
53
53
  import "./api-key-rotation-CzuPlV2t.js";
54
54
  import "./local-roots-aAFLQGkY.js";
55
55
  import "./sqlite-Dx3J_aSE.js";
56
- import "./model-catalog-DvBJ8pMD.js";
56
+ import "./model-catalog-DsFLN-ua.js";
57
57
  import "./tokens-BuceUQDl.js";
58
58
  import "./with-timeout-gmK6RciS.js";
59
59
  import { t as deliverOutboundPayloads } from "./deliver-CWR_98sK.js";
@@ -72,8 +72,8 @@ import "./ir-DZam9q5M.js";
72
72
  import "./render-CXDO_kgw.js";
73
73
  import "./commands-BNLCWX6e.js";
74
74
  import "./commands-registry-BT0-zzs3.js";
75
- import "./client-CQSyCS4M.js";
76
- import "./call-CJaS1iRF.js";
75
+ import "./client-jI1oE0_k.js";
76
+ import "./call-CFhGTNtt.js";
77
77
  import "./pairing-token-CX3NN_qj.js";
78
78
  import "./channel-activity-BOiuJS3t.js";
79
79
  import "./fetch-DTNGXEzX.js";
@@ -93,7 +93,7 @@ import "./session-cost-usage-UxUgrslM.js";
93
93
  import "./outbound-attachment-mQQiYZ3C.js";
94
94
  import "./delivery-queue-CxuV9EeG.js";
95
95
  import "./send-DWYkPSUs.js";
96
- import "./onboard-helpers-ZmZYzlq3.js";
96
+ import "./onboard-helpers-Ci50bfCW.js";
97
97
  import "./prompt-style-8JqOYj0q.js";
98
98
  import "./pairing-labels-2S6x2UoV.js";
99
99
  import "./exec-approvals-Kn31mBcW.js";
@@ -102,7 +102,7 @@ import "./pi-tools.policy-CIDBbw6x.js";
102
102
  import "./control-service-Bz7rxLWq.js";
103
103
  import "./stagger-BUClb97_.js";
104
104
  import "./channel-selection-DuWs0Aak.js";
105
- import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-Bmd6SdxC.js";
105
+ import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-BwHZ2F7j.js";
106
106
  import { randomUUID } from "node:crypto";
107
107
 
108
108
  //#region src/gateway/server-node-events.ts
@@ -1,4 +1,4 @@
1
- import { dt as createPluginLoaderLogger, ft as loadSymiPlugins } from "./reply-C68F3IMq.js";
1
+ import { dt as createPluginLoaderLogger, ft as loadSymiPlugins } from "./reply-CMb-m0ZJ.js";
2
2
  import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
3
3
  import { D as resolveDefaultAgentWorkspaceDir, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-CgUHAtCo.js";
4
4
  import { i as loadConfig } from "./config-CHwyw6l5.js";
@@ -8,8 +8,8 @@ import { n as runExec } from "./exec-CBKBIMpA.js";
8
8
  import { c as resolveAgentWorkspaceDir } from "./agent-scope-D-jRCY0d.js";
9
9
  import { t as buildWorkspaceSkillStatus } from "./skills-status-DKXJ-tbi.js";
10
10
  import { H as VERSION, i as loadConfig, o as readConfigFileSnapshot } from "./config-DHBLS1Hl.js";
11
- import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-BcE47FtD.js";
12
- import { En as peekSystemEvents, St as summarizeRestartSentinel, cn as buildChannelAccountSnapshot, in as formatUsageReportLines, ln as formatChannelAllowFrom, nt as sha256HexPrefix, rn as loadProviderUsageSummary, sn as buildChannelSummary, xt as readRestartSentinel } from "./subagent-registry-BXI3DyAX.js";
11
+ import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-DIDhYlsx.js";
12
+ import { En as peekSystemEvents, St as summarizeRestartSentinel, cn as buildChannelAccountSnapshot, in as formatUsageReportLines, ln as formatChannelAllowFrom, nt as sha256HexPrefix, rn as loadProviderUsageSummary, sn as buildChannelSummary, xt as readRestartSentinel } from "./subagent-registry-Cdiios3w.js";
13
13
  import { F as resolveMainSessionKey, j as resolveFreshSessionTotalTokens, o as loadSessionStore } from "./sessions-CJXnZVjR.js";
14
14
  import { n as listChannelPlugins } from "./plugins-CwSlLxM8.js";
15
15
  import { o as getTailnetHostname, s as readTailscaleStatusJson } from "./tailscale-CbbvYNVw.js";
@@ -21,15 +21,15 @@ import { l as resolveSessionModelRef, n as classifySessionKey, r as listAgentsFo
21
21
  import { o as getRemoteSkillEligibility } from "./skill-commands-C8BcwE33.js";
22
22
  import { r as formatDurationPrecise } from "./format-duration-BOC0O2XQ.js";
23
23
  import { n as withProgress } from "./progress-BAHiAaDW.js";
24
- import { C as normalizeControlUiBasePath, g as resolveControlUiLinks } from "./onboard-helpers-_pit1NZW.js";
24
+ import { C as normalizeControlUiBasePath, g as resolveControlUiLinks } from "./onboard-helpers-DASpwgat.js";
25
25
  import { t as resolveChannelDefaultAccountId } from "./helpers-cLP5YLeQ.js";
26
26
  import { t as collectChannelStatusIssues } from "./channels-status-issues-c7qZbYG5.js";
27
27
  import { s as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-Cm9j9WzQ.js";
28
28
  import { t as formatRuntimeStatusWithDetails } from "./runtime-status-hFVEC3wO.js";
29
29
  import { t as readLastGatewayErrorLine } from "./diagnostics-CS1ov_hH.js";
30
30
  import { t as renderTable } from "./table-D01d2GuY.js";
31
- import { a as resolveGatewayProbeAuth$1, c as probeGateway, t as runSecurityAudit } from "./audit-Byo5jCLN.js";
32
- import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-BNxdveY8.js";
31
+ import { a as resolveGatewayProbeAuth$1, c as probeGateway, t as runSecurityAudit } from "./audit-Cgd5-Y7W.js";
32
+ import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-By4_Yu9p.js";
33
33
  import { g as resolveUpdateChannelDisplay, i as formatGitInstallLabel, m as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-ZdimP1aU.js";
34
34
  import { t as resolveNodeService } from "./node-service-fcZExd22.js";
35
35
  import { n as redactSecrets, t as formatGatewayAuthUsed } from "./format-DVLB9DNB.js";
@@ -1,6 +1,6 @@
1
1
  import { u as resolveGatewayPort } from "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, k as info, z as isRich } from "./utils-B-0b9bGM.js";
3
- import { B as summarizeRestartSentinel, Jt as sha256HexPrefix, _t as formatUsageReportLines, a as buildChannelSummary, gt as loadProviderUsageSummary, h as listAgentsForGateway, m as classifySessionKey, o as buildChannelAccountSnapshot, pr as lookupContextTokens, s as formatChannelAllowFrom, wr as peekSystemEvents, x as resolveSessionModelRef, z as readRestartSentinel } from "./reply-C68F3IMq.js";
3
+ import { B as summarizeRestartSentinel, Jt as sha256HexPrefix, _t as formatUsageReportLines, a as buildChannelSummary, gt as loadProviderUsageSummary, h as listAgentsForGateway, m as classifySessionKey, o as buildChannelAccountSnapshot, pr as lookupContextTokens, s as formatChannelAllowFrom, wr as peekSystemEvents, x as resolveSessionModelRef, z as readRestartSentinel } from "./reply-CMb-m0ZJ.js";
4
4
  import { S as parseAgentSessionKey } from "./session-key-DCt45XZa.js";
5
5
  import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
6
6
  import { n as runExec } from "./exec-CWkblSrI.js";
@@ -14,12 +14,12 @@ import { H as resolveMainSessionKey, R as resolveFreshSessionTotalTokens, o as l
14
14
  import { n as listChannelPlugins } from "./plugins-DKDeQZF0.js";
15
15
  import { c as resolveStorePath } from "./paths-CyhzMxFA.js";
16
16
  import { r as getMemorySearchManager } from "./memory-cli-Ca5r9AUb.js";
17
- import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-CJaS1iRF.js";
17
+ import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-CFhGTNtt.js";
18
18
  import { n as formatTimeAgo } from "./format-relative-BXoxEQVN.js";
19
19
  import { n as withProgress } from "./progress-jIePzvGA.js";
20
20
  import { r as formatDurationPrecise } from "./format-duration-D0B0Uo-I.js";
21
21
  import { o as getRemoteSkillEligibility } from "./skill-commands-Cxw-jNxU.js";
22
- import { C as normalizeControlUiBasePath, g as resolveControlUiLinks } from "./onboard-helpers-ZmZYzlq3.js";
22
+ import { C as normalizeControlUiBasePath, g as resolveControlUiLinks } from "./onboard-helpers-Ci50bfCW.js";
23
23
  import { t as buildWorkspaceSkillStatus } from "./skills-status-CURJKnyY.js";
24
24
  import { t as resolveChannelDefaultAccountId } from "./helpers-BcGbMZD1.js";
25
25
  import { t as collectChannelStatusIssues } from "./channels-status-issues-B_kBkl_u.js";
@@ -27,8 +27,8 @@ import { s as resolveGatewayLogPaths, t as resolveGatewayService } from "./servi
27
27
  import { t as formatRuntimeStatusWithDetails } from "./runtime-status-CR9445g5.js";
28
28
  import { t as readLastGatewayErrorLine } from "./diagnostics-BAMlsVVX.js";
29
29
  import { t as renderTable } from "./table-BTgkRafz.js";
30
- import { a as resolveGatewayProbeAuth$1, c as probeGateway, t as runSecurityAudit } from "./audit-CrITRV6w.js";
31
- import { a as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-pFcca1cU.js";
30
+ import { a as resolveGatewayProbeAuth$1, c as probeGateway, t as runSecurityAudit } from "./audit-DCDNPsGr.js";
31
+ import { a as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-DjUN4OFC.js";
32
32
  import { g as resolveUpdateChannelDisplay, i as formatGitInstallLabel, m as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-CtckACbb.js";
33
33
  import { t as resolveNodeService } from "./node-service-Cxz4e-Qd.js";
34
34
  import { n as redactSecrets, t as formatGatewayAuthUsed } from "./format-yQZNwAF2.js";
@@ -1,7 +1,7 @@
1
1
  import { o as createSubsystemLogger } from "./entry.js";
2
2
  import { D as resolveDefaultAgentWorkspaceDir, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-D-jRCY0d.js";
3
3
  import { i as loadConfig } from "./config-DHBLS1Hl.js";
4
- import { m as loadSymiPlugins, p as createPluginLoaderLogger } from "./subagent-registry-BXI3DyAX.js";
4
+ import { m as loadSymiPlugins, p as createPluginLoaderLogger } from "./subagent-registry-Cdiios3w.js";
5
5
 
6
6
  //#region src/plugins/status.ts
7
7
  const log = createSubsystemLogger("plugins");
@@ -14,8 +14,8 @@ import { r as isPathInsideWithRealpath } from "./scan-paths-ppKrtZ9U.js";
14
14
  import { a as resolveSkillsPromptForRun, d as resolveSandboxInputPath, h as applySkillEnvOverridesFromSnapshot, i as loadWorkspaceSkillEntries, l as assertMediaNotDataUrl, m as applySkillEnvOverrides, p as resolveSandboxedMediaSource, r as buildWorkspaceSkillSnapshot, u as assertSandboxPath } from "./skills-hAdgFdrv.js";
15
15
  import { a as safeStatSync, c as applyTestPluginDefaults, d as resolveEnableState, f as resolveMemorySlotDecision, h as isDangerousHostEnvVarName, i as isPathInside, n as loadPluginManifestRegistry, r as discoverSymiPlugins, u as normalizePluginsConfig } from "./manifest-registry-Czr39pxG.js";
16
16
  import { A as parseConfigPath, B as resolveAgentMaxConcurrent, C as parseDurationMs, D as setConfigOverride, E as resetConfigOverrides, H as VERSION, M as unsetConfigValueAtPath, O as unsetConfigOverride, T as getConfigOverrides, _ as isInboundPathAllowed, b as resolveIMessageRemoteAttachmentRoots, c as resolveConfigSnapshotHash, h as resolveTelegramCustomCommands, i as loadConfig, j as setConfigValueAtPath, k as getConfigValueAtPath, l as writeConfigFile, m as normalizeTelegramCommandName, o as readConfigFileSnapshot, p as TELEGRAM_COMMAND_NAME_PATTERN, u as validateConfigObjectWithPlugins, w as validateJsonSchemaValue, x as normalizeScpRemoteHost, y as resolveIMessageAttachmentRoots, z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-DHBLS1Hl.js";
17
- import { Mt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-DMBZpU6X.js";
18
- import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-BcE47FtD.js";
17
+ import { Nt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-T3qcxXru.js";
18
+ import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-DIDhYlsx.js";
19
19
  import { a as isInternalMessageChannel, c as listDeliverableMessageChannels, d as resolveMessageChannel, h as GATEWAY_CLIENT_NAMES, i as isGatewayMessageChannel, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, o as isMarkdownCapableMessageChannel, p as GATEWAY_CLIENT_IDS, t as INTERNAL_MESSAGE_CHANNEL, u as resolveGatewayMessageChannel } from "./message-channel-C9dERklz.js";
20
20
  import { i as normalizeInputProvenance, n as applyInputProvenanceToUserMessage, r as hasInterSessionUserProvenance } from "./input-provenance-D0lNkCf6.js";
21
21
  import { A as DEFAULT_RESET_TRIGGERS, B as resolveGroupSessionKey, D as resolveSessionResetPolicy, E as resolveChannelResetConfig, F as resolveMainSessionKey, G as deliveryContextKey, J as normalizeSessionDeliveryFields, K as mergeDeliveryContext, L as deriveSessionMetaPatch, O as resolveSessionResetType, P as resolveExplicitAgentSessionKey, T as evaluateSessionFreshness, U as resolveSessionLockMaxHoldFromTimeout, V as acquireSessionWriteLock, W as deliveryContextFromSession, Y as normalizeAccountId$3, _ as capArrayByJsonBytes, a as resolveAndPersistSessionFile, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as archiveSessionTranscripts, j as resolveFreshSessionTotalTokens, k as resolveThreadFlag, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as normalizeDeliveryContext, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, w as resolveSessionKey } from "./sessions-CJXnZVjR.js";
@@ -91,7 +91,7 @@ import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-rou
91
91
  import { t as parseTimeoutMs } from "./parse-timeout-zNJBr1fY.js";
92
92
  import { t as makeProxyFetch } from "./proxy-DL3MD6-P.js";
93
93
  import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-DO80zq73.js";
94
- import { r as detectBinary } from "./onboard-helpers-_pit1NZW.js";
94
+ import { r as detectBinary } from "./onboard-helpers-DASpwgat.js";
95
95
  import { t as resolvePairingIdLabel } from "./pairing-labels-D1HDboV2.js";
96
96
  import { t as getActiveWebListener } from "./active-listener-De1JhR4W.js";
97
97
  import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-De00gPXt.js";
@@ -53114,7 +53114,7 @@ function isVoiceChannelType(type) {
53114
53114
  function createDefaultDeps() {
53115
53115
  return {
53116
53116
  sendMessageWhatsApp: async (...args) => {
53117
- const { sendMessageWhatsApp } = await import("./web-Dr9gUjHz.js");
53117
+ const { sendMessageWhatsApp } = await import("./web-BsEbA9Ur.js");
53118
53118
  return await sendMessageWhatsApp(...args);
53119
53119
  },
53120
53120
  sendMessageTelegram: async (...args) => {
@@ -68428,7 +68428,7 @@ function loadWebLoginQr() {
68428
68428
  return webLoginQrPromise;
68429
68429
  }
68430
68430
  function loadWebChannel() {
68431
- webChannelPromise ??= import("./web-Dr9gUjHz.js");
68431
+ webChannelPromise ??= import("./web-BsEbA9Ur.js");
68432
68432
  return webChannelPromise;
68433
68433
  }
68434
68434
  function loadWhatsAppActions() {
@@ -11,12 +11,12 @@ import "./env-DPCHYPeH.js";
11
11
  import "./message-channel-aT-I_DTX.js";
12
12
  import "./config-CHwyw6l5.js";
13
13
  import "./manifest-registry-C4BxOMWX.js";
14
- import "./client-CQSyCS4M.js";
15
- import "./call-CJaS1iRF.js";
14
+ import "./client-jI1oE0_k.js";
15
+ import "./call-CFhGTNtt.js";
16
16
  import "./pairing-token-CX3NN_qj.js";
17
17
  import { t as formatDocsLink } from "./links-3i1eUga4.js";
18
18
  import "./progress-jIePzvGA.js";
19
- import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-BxkKeCZ0.js";
19
+ import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-5aGm8LwU.js";
20
20
  import path from "node:path";
21
21
  import fs from "node:fs/promises";
22
22
 
@@ -5,13 +5,13 @@ import "./agent-scope-D-jRCY0d.js";
5
5
  import "./github-copilot-token-DuFIqfeC.js";
6
6
  import "./manifest-registry-Czr39pxG.js";
7
7
  import "./config-DHBLS1Hl.js";
8
- import "./client-DMBZpU6X.js";
9
- import "./call-BcE47FtD.js";
8
+ import "./client-T3qcxXru.js";
9
+ import "./call-DIDhYlsx.js";
10
10
  import "./message-channel-C9dERklz.js";
11
11
  import "./pairing-token-Byh6drgn.js";
12
12
  import { t as formatDocsLink } from "./links-DlWpl9Yv.js";
13
13
  import "./progress-BAHiAaDW.js";
14
- import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-DfZSz5JF.js";
14
+ import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-BkB6xEaM.js";
15
15
 
16
16
  //#region src/cli/system-cli.ts
17
17
  const normalizeWakeMode = (raw) => {
@@ -2,8 +2,8 @@ import { h as visibleWidth, m as stripAnsi } from "./entry.js";
2
2
  import { S as parseAgentSessionKey, c as normalizeMainKey, r as buildAgentMainSessionKey, s as normalizeAgentId } from "./session-key-DjZ7Z1hW.js";
3
3
  import { l as resolveDefaultAgentId } from "./agent-scope-D-jRCY0d.js";
4
4
  import { H as VERSION, i as loadConfig } from "./config-DHBLS1Hl.js";
5
- import { kt as PROTOCOL_VERSION, t as GatewayClient } from "./client-DMBZpU6X.js";
6
- import { i as ensureExplicitGatewayAuth, o as resolveExplicitGatewayAuth, t as buildGatewayConnectionDetails } from "./call-BcE47FtD.js";
5
+ import { At as PROTOCOL_VERSION, t as GatewayClient } from "./client-T3qcxXru.js";
6
+ import { i as ensureExplicitGatewayAuth, o as resolveExplicitGatewayAuth, t as buildGatewayConnectionDetails } from "./call-DIDhYlsx.js";
7
7
  import { f as GATEWAY_CLIENT_CAPS, h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-C9dERklz.js";
8
8
  import { C as stripLeadingInboundMetadata } from "./sessions-CJXnZVjR.js";
9
9
  import { _ as formatRawAssistantErrorForUi } from "./pi-embedded-helpers-DE9h5GAu.js";