@symerian/symi 2.0.15 → 2.0.16

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 (165) hide show
  1. package/dist/{acp-cli-BKh-53nn.js → acp-cli-CSX62tsS.js} +2 -2
  2. package/dist/{acp-cli-CRT2rkIR.js → acp-cli-CrfY9UHo.js} +2 -2
  3. package/dist/{agents-CNsMe4Dr.js → agents-CP6mOf0j.js} +5 -5
  4. package/dist/{agents.config-CdDf19dm.js → agents.config-CFps8Krs.js} +1 -1
  5. package/dist/{agents.config-yx78oSLx.js → agents.config-Da5XukaM.js} +1 -1
  6. package/dist/{audio-preflight-CO2seHjy.js → audio-preflight-CQ5_RYEe.js} +2 -2
  7. package/dist/{audio-preflight-B8ffbICW.js → audio-preflight-Cq4C-m27.js} +4 -4
  8. package/dist/{audit-CiugrQda.js → audit-Do2bVss3.js} +2 -2
  9. package/dist/{audit-DKUpFt8z.js → audit-x_SzU263.js} +2 -2
  10. package/dist/{auth-choice-mw9ndZQO.js → auth-choice-CZ9ugRNS.js} +4 -4
  11. package/dist/{auth-choice-CXMFi9LR.js → auth-choice-za414gQg.js} +2 -2
  12. package/dist/{banner-B-joBGLz.js → banner-DHgxDWv_.js} +1 -1
  13. package/dist/{browser-cli-Bk7Q_04S.js → browser-cli-BydQRa6Z.js} +3 -3
  14. package/dist/{browser-cli-iXhPMwGZ.js → browser-cli-Bz2dcSy1.js} +3 -3
  15. package/dist/build-info.json +3 -3
  16. package/dist/bundled/boot-md/handler.js +1 -1
  17. package/dist/bundled/session-memory/handler.js +1 -1
  18. package/dist/{call-BQiCOxB6.js → call-BVw7l9v8.js} +1 -1
  19. package/dist/{call-BNyqFDDZ.js → call-CJYWtIM9.js} +1 -1
  20. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  21. package/dist/{channel-options-D74Jofp4.js → channel-options-BCZol8_4.js} +1 -1
  22. package/dist/{channel-options-XPRRVrmU.js → channel-options-D7RdZp1E.js} +1 -1
  23. package/dist/{channel-web-vRvvtf0S.js → channel-web-Dki5eEiP.js} +2 -2
  24. package/dist/{channels-cli-DgxPfJF7.js → channels-cli-CILkYyG3.js} +7 -7
  25. package/dist/{channels-cli-D3lj5dXo.js → channels-cli-CwliXNUk.js} +9 -9
  26. package/dist/{chrome-B_zrSLce.js → chrome-h6BnL8Lp.js} +7 -7
  27. package/dist/cli/daemon-cli.js +1 -1
  28. package/dist/{cli-Bg_5WQFe.js → cli-CLHi2LEP.js} +4 -4
  29. package/dist/{cli-DQQAfUbo.js → cli-aAOs92a8.js} +6 -6
  30. package/dist/{client-Cnoh7nRo.js → client-CQSyCS4M.js} +2 -1
  31. package/dist/{client-LeVQns9-.js → client-DMBZpU6X.js} +2 -1
  32. package/dist/{command-registry-Cde2LqTh.js → command-registry-OHfvK1Oq.js} +10 -10
  33. package/dist/{completion-cli-KJUTWJP3.js → completion-cli-D7iBY_Z-.js} +2 -2
  34. package/dist/{completion-cli-Cx9htCOm.js → completion-cli-DSHmAUFN.js} +1 -1
  35. package/dist/{config-cli-C5-P9Nzz.js → config-cli-BlusBXAA.js} +1 -1
  36. package/dist/{config-cli-ozfA6MGF.js → config-cli-CcbYdW1-.js} +1 -1
  37. package/dist/{configure-DiuQ_aTS.js → configure-CJf-vDqN.js} +8 -8
  38. package/dist/{configure-ktsZw1bT.js → configure-rrxn5n5n.js} +6 -6
  39. package/dist/control-ui/css/style.css +9 -0
  40. package/dist/control-ui/js/app.js +137 -0
  41. package/dist/control-ui/js/gateway.js +10 -2
  42. package/dist/{cron-cli-iWejT5dL.js → cron-cli-B9s3FO4y.js} +3 -3
  43. package/dist/{cron-cli-BVy2Ysgu.js → cron-cli-CMb8Tfrd.js} +3 -3
  44. package/dist/{daemon-cli-BU1FofT_.js → daemon-cli-DY782AjS.js} +2 -2
  45. package/dist/{daemon-cli-CFZpc0hg.js → daemon-cli-duUjaj82.js} +2 -2
  46. package/dist/daemon-cli.js +2 -1
  47. package/dist/{deliver-CkjSfucB.js → deliver-CZF9f8aC.js} +1 -1
  48. package/dist/{devices-cli-DC8knKQP.js → devices-cli-Cahrr6Rd.js} +2 -2
  49. package/dist/{devices-cli-CKAh6Hnl.js → devices-cli-Ch8p42OS.js} +2 -2
  50. package/dist/{doctor-completion-Vwi_je1c.js → doctor-completion-B6R-Um0m.js} +1 -1
  51. package/dist/{doctor-completion-CrN6Ly8x.js → doctor-completion-Db9Ka2VX.js} +1 -1
  52. package/dist/entry.js +1 -1
  53. package/dist/{exec-approvals-cli-CfrLzlfe.js → exec-approvals-cli-CSTHY6Vs.js} +4 -4
  54. package/dist/{exec-approvals-cli-D7ZfJtB3.js → exec-approvals-cli-lduNEUnu.js} +4 -4
  55. package/dist/extensionAPI.js +6 -6
  56. package/dist/{gateway-cli-DyqK4XZ1.js → gateway-cli-DVzEvDKA.js} +16 -16
  57. package/dist/{gateway-cli-CwO3878F.js → gateway-cli-VZ3pwSh3.js} +14 -14
  58. package/dist/{gateway-rpc-BnsXD9QK.js → gateway-rpc-BTXPWO6j.js} +1 -1
  59. package/dist/{gateway-rpc-XxpDa3Bd.js → gateway-rpc-Cx0HPjI7.js} +1 -1
  60. package/dist/{glass-ui-ws-BmqwQaCf.js → glass-ui-ws-CAm9wWND.js} +21 -15
  61. package/dist/{glass-ui-ws-zVNodseh.js → glass-ui-ws-DmPVzO59.js} +23 -17
  62. package/dist/{health-UjXEBnzA.js → health-CYZdOaco.js} +2 -2
  63. package/dist/{health-Q1RP1M2f.js → health-CnH3J7xA.js} +2 -2
  64. package/dist/{hooks-cli-D4qJl6do.js → hooks-cli-C7tb9Ef0.js} +5 -5
  65. package/dist/{hooks-cli-DOT9uGZw.js → hooks-cli-CHMoGB4O.js} +7 -7
  66. package/dist/{image-CSeAnozE.js → image-DOnOTocl.js} +1 -1
  67. package/dist/index.js +11 -11
  68. package/dist/llm-slug-generator.js +1 -1
  69. package/dist/{logs-cli-D3iVwGDc.js → logs-cli-Cvhx1c0V.js} +3 -3
  70. package/dist/{logs-cli-DfFvgxqj.js → logs-cli-DUzUCojZ.js} +3 -3
  71. package/dist/{model-catalog-DjJ9GtKX.js → model-catalog-CX8kAHv8.js} +1 -1
  72. package/dist/{model-picker-DXwUsLAy.js → model-picker-CDXdeNr-.js} +1 -1
  73. package/dist/{models-cli-ULbdeSgc.js → models-cli-CTptBZ1_.js} +8 -8
  74. package/dist/{models-cli-BS6UJ98e.js → models-cli-xt0_lwNn.js} +6 -6
  75. package/dist/{models-DKsiIvSx.js → models-wHzbWyGd.js} +3 -3
  76. package/dist/{node-cli-Dq7jjGmU.js → node-cli-BhCoxgBf.js} +1 -1
  77. package/dist/{node-cli-BDruQPgf.js → node-cli-C8scjTTR.js} +1 -1
  78. package/dist/{nodes-cli-CO1-qlpY.js → nodes-cli-BHnGJEDY.js} +3 -3
  79. package/dist/{nodes-cli-D71AOvPL.js → nodes-cli-DvFB1bRc.js} +3 -3
  80. package/dist/{onboard-Bt-BwfkR.js → onboard-CLT8dKkn.js} +3 -3
  81. package/dist/{onboard-B387frTY.js → onboard-CqrqIyTw.js} +5 -5
  82. package/dist/{onboard-channels-COcxT5Q0.js → onboard-channels-B1qEMRuK.js} +1 -1
  83. package/dist/{onboard-channels-ybPEmcP8.js → onboard-channels-Dq99OYWi.js} +1 -1
  84. package/dist/{onboard-custom-DoIhWPnb.js → onboard-custom-BPHkLBMT.js} +1 -1
  85. package/dist/{onboard-helpers-BuSj9DUm.js → onboard-helpers-CYxzQfe5.js} +1 -1
  86. package/dist/{onboard-helpers-CUQrf3zD.js → onboard-helpers-Dsr4zKCb.js} +1 -1
  87. package/dist/{onboard-remote-DTYzroFm.js → onboard-remote-3c_muVej.js} +1 -1
  88. package/dist/{onboard-remote-BSjc42yV.js → onboard-remote-d48SMpNw.js} +1 -1
  89. package/dist/{onboard-skills-BD8JNVwL.js → onboard-skills-2HJIpm3O.js} +1 -1
  90. package/dist/{onboard-skills-70EumFmD.js → onboard-skills-b_chEkYH.js} +1 -1
  91. package/dist/{onboarding-BibGEGIS.js → onboarding-Bs82247P.js} +7 -7
  92. package/dist/{onboarding-CdN_NU2d.js → onboarding-yfMTHyHB.js} +9 -9
  93. package/dist/{onboarding.finalize-CY1NjrGb.js → onboarding.finalize-DkZuXXiU.js} +10 -10
  94. package/dist/{onboarding.finalize-CvahVrDM.js → onboarding.finalize-QC0g7ZLU.js} +11 -11
  95. package/dist/{onboarding.gateway-config-Cj_s_IG8.js → onboarding.gateway-config-BkXJPv7f.js} +3 -3
  96. package/dist/{onboarding.gateway-config-DipSuaKH.js → onboarding.gateway-config-stm3z82Y.js} +3 -3
  97. package/dist/{pi-auth-json-DuUL9qfI.js → pi-auth-json-B83DuyYZ.js} +1 -1
  98. package/dist/{pi-embedded-9wEA_0mu.js → pi-embedded-B3nbPN60.js} +18 -17
  99. package/dist/{pi-embedded-BjzaB3CT.js → pi-embedded-DDe6lqPs.js} +4 -3
  100. package/dist/{pi-embedded-helpers-BmYZe8o8.js → pi-embedded-helpers--yFTAWwW.js} +4 -4
  101. package/dist/{plugin-registry-CEoSVvL1.js → plugin-registry-DWJeC9bW.js} +1 -1
  102. package/dist/{plugin-registry-BAbkdLQ7.js → plugin-registry-SCI1BVkI.js} +1 -1
  103. package/dist/plugin-sdk/{channel-web-xXTpy0N_.js → channel-web-BUTyAx0r.js} +1 -1
  104. package/dist/plugin-sdk/gateway/protocol/schema/logs-chat.d.ts +1 -0
  105. package/dist/plugin-sdk/index.js +2 -2
  106. package/dist/plugin-sdk/{reply-EEvLfWgt.js → reply-CjWIATx5.js} +4 -3
  107. package/dist/plugin-sdk/{web-COWtpMAH.js → web-C1q3B85D.js} +2 -2
  108. package/dist/{plugins-cli-C_S07pgO.js → plugins-cli-D2GDnmKk.js} +7 -7
  109. package/dist/{plugins-cli-BpuQ7Y9l.js → plugins-cli-QSrupxLG.js} +5 -5
  110. package/dist/{program-cO9YX6wL.js → program-7hcHnpYu.js} +10 -10
  111. package/dist/{program-context-QBBvnWFX.js → program-context-CIOqtCr8.js} +29 -29
  112. package/dist/{prompt-select-styled-D3dYbx2P.js → prompt-select-styled-DC-k-kBQ.js} +6 -6
  113. package/dist/{prompt-select-styled-CepuQSKg.js → prompt-select-styled-DpVAhv1V.js} +7 -7
  114. package/dist/{provider-auth-helpers-DXqvuBCi.js → provider-auth-helpers-BGhm_DOe.js} +1 -1
  115. package/dist/{provider-auth-helpers-BMACaaEd.js → provider-auth-helpers-DvwmlisW.js} +1 -1
  116. package/dist/{push-apns-8YIzbTM7.js → push-apns-BZu5OVg5.js} +1 -1
  117. package/dist/{push-apns-DhZgao_r.js → push-apns-CiOx7dgB.js} +1 -1
  118. package/dist/{pw-ai-s-d46DCX.js → pw-ai-C_C5as1t.js} +1 -1
  119. package/dist/{register.agent-CiTS9lyx.js → register.agent-CDD5Z9Fj.js} +11 -11
  120. package/dist/{register.agent-CSUoUVKd.js → register.agent-Ds6PkEYl.js} +9 -9
  121. package/dist/{register.configure-CuCVLOW0.js → register.configure-CBRYdCX2.js} +11 -11
  122. package/dist/{register.configure-BbE9MAer.js → register.configure-COyj6XWC.js} +15 -15
  123. package/dist/{register.maintenance-CJG75LTu.js → register.maintenance-CyJQDrP0.js} +11 -11
  124. package/dist/{register.maintenance-D8bthvou.js → register.maintenance-DwHXDl_N.js} +12 -12
  125. package/dist/{register.message-CyqE4E2O.js → register.message-BNe6-SJE.js} +5 -5
  126. package/dist/{register.message-nUpHGrEE.js → register.message-CvQ7LEYe.js} +7 -7
  127. package/dist/{register.onboard-Dlw-TCPH.js → register.onboard-BxxfWU46.js} +11 -11
  128. package/dist/{register.onboard-BDlne5KX.js → register.onboard-CuRnx0wV.js} +7 -7
  129. package/dist/{register.setup-B8kiMuah.js → register.setup-B4rO_Fld.js} +11 -11
  130. package/dist/{register.setup-ByMyofSq.js → register.setup-qmcQQ6EM.js} +7 -7
  131. package/dist/{register.status-health-sessions-0odRpA-p.js → register.status-health-sessions-4OEVg4h6.js} +7 -7
  132. package/dist/{register.status-health-sessions-Diirshgb.js → register.status-health-sessions-CQ0_UB_j.js} +9 -9
  133. package/dist/{register.subclis-CqEj9vfW.js → register.subclis-68XcQ3ao.js} +20 -20
  134. package/dist/{reply-B9o45s3E.js → reply-DI3kOl7x.js} +9 -9
  135. package/dist/{rpc-K2mc_55f.js → rpc-CvzWzHjS.js} +1 -1
  136. package/dist/{rpc-B8S3CF-2.js → rpc-DfC0wvv1.js} +1 -1
  137. package/dist/{run-main-C__lZ7VF.js → run-main-DiJI5-hU.js} +17 -17
  138. package/dist/{runner-C0tJTZmp.js → runner-VHq3quQZ.js} +1 -1
  139. package/dist/{runner-CJJY2r19.js → runner-uDZlTCm2.js} +1 -1
  140. package/dist/{security-cli-Bt0VkUtO.js → security-cli-BPqLtK8x.js} +3 -3
  141. package/dist/{security-cli-YGXUUBvD.js → security-cli-BTcKFy-k.js} +3 -3
  142. package/dist/{server-methods-Df9KsV_-.js → server-methods-B_JpD0c-.js} +29 -13
  143. package/dist/{server-methods-B_NSJmhc.js → server-methods-DnTo3Oou.js} +29 -13
  144. package/dist/{server-node-events-ZG0SBDkU.js → server-node-events-IlWB4f_P.js} +7 -7
  145. package/dist/{server-node-events-C2mugatX.js → server-node-events-t5pGPXLD.js} +5 -5
  146. package/dist/{status-PADx9rG7.js → status-BXQGCrxj.js} +5 -5
  147. package/dist/{status-BTF6_aBO.js → status-cWLYsK8x.js} +1 -1
  148. package/dist/{status-BytVj4kU.js → status-kOpLSgWJ.js} +1 -1
  149. package/dist/{status-hgm5EhwS.js → status-s1Tp-jVl.js} +5 -5
  150. package/dist/{subagent-registry-BR2Qhqjf.js → subagent-registry-XHBZsH3Q.js} +5 -5
  151. package/dist/{system-cli-BMrwtPdR.js → system-cli-D10NhXw1.js} +3 -3
  152. package/dist/{system-cli-B_cCDKOu.js → system-cli-DPNDYRBr.js} +3 -3
  153. package/dist/{tui-0rURH3b3.js → tui-4d-MyU6O.js} +2 -2
  154. package/dist/{tui-cli-D3VMk5c8.js → tui-cli-9uTZZ13F.js} +3 -3
  155. package/dist/{tui-cli-hcbzeOtp.js → tui-cli-BsSKYVE3.js} +3 -3
  156. package/dist/{tui-CcirlGg5.js → tui-pvq_HI-q.js} +2 -2
  157. package/dist/{update-cli-CHr8rjf-.js → update-cli-B3VC_mrH.js} +12 -12
  158. package/dist/{update-cli-qacplfF4.js → update-cli-_1YRH17q.js} +13 -13
  159. package/dist/{update-runner-DM8zQvQB.js → update-runner-DBbX4Iin.js} +1 -1
  160. package/dist/{update-runner-DNA7FJa2.js → update-runner-Dsc1_XOK.js} +1 -1
  161. package/dist/{web-BKQnrqo-.js → web-CmZZsoMg.js} +1 -1
  162. package/dist/{web-CAnxcgBD.js → web-DjgeLZ5l.js} +6 -6
  163. package/dist/{web-DkQc82PT.js → web-DzjJ_iNt.js} +4 -4
  164. package/dist/{web-UroM-w6c.js → web-JIG-oxRW.js} +7 -7
  165. package/package.json +1 -1
@@ -41,7 +41,7 @@ const entries = [
41
41
  description: "Agent Control Protocol tools",
42
42
  hasSubcommands: true,
43
43
  register: async (program) => {
44
- (await import("./acp-cli-BKh-53nn.js")).registerAcpCli(program);
44
+ (await import("./acp-cli-CSX62tsS.js")).registerAcpCli(program);
45
45
  }
46
46
  },
47
47
  {
@@ -49,7 +49,7 @@ const entries = [
49
49
  description: "Run, inspect, and query the WebSocket Gateway",
50
50
  hasSubcommands: true,
51
51
  register: async (program) => {
52
- (await import("./gateway-cli-CwO3878F.js")).registerGatewayCli(program);
52
+ (await import("./gateway-cli-VZ3pwSh3.js")).registerGatewayCli(program);
53
53
  }
54
54
  },
55
55
  {
@@ -57,7 +57,7 @@ const entries = [
57
57
  description: "Gateway service (legacy alias)",
58
58
  hasSubcommands: true,
59
59
  register: async (program) => {
60
- (await import("./daemon-cli-CFZpc0hg.js").then((n) => n.t)).registerDaemonCli(program);
60
+ (await import("./daemon-cli-duUjaj82.js").then((n) => n.t)).registerDaemonCli(program);
61
61
  }
62
62
  },
63
63
  {
@@ -65,7 +65,7 @@ const entries = [
65
65
  description: "Tail gateway file logs via RPC",
66
66
  hasSubcommands: false,
67
67
  register: async (program) => {
68
- (await import("./logs-cli-D3iVwGDc.js")).registerLogsCli(program);
68
+ (await import("./logs-cli-Cvhx1c0V.js")).registerLogsCli(program);
69
69
  }
70
70
  },
71
71
  {
@@ -73,7 +73,7 @@ const entries = [
73
73
  description: "System events, heartbeat, and presence",
74
74
  hasSubcommands: true,
75
75
  register: async (program) => {
76
- (await import("./system-cli-B_cCDKOu.js")).registerSystemCli(program);
76
+ (await import("./system-cli-DPNDYRBr.js")).registerSystemCli(program);
77
77
  }
78
78
  },
79
79
  {
@@ -81,7 +81,7 @@ const entries = [
81
81
  description: "Discover, scan, and configure models",
82
82
  hasSubcommands: true,
83
83
  register: async (program) => {
84
- (await import("./models-cli-BS6UJ98e.js")).registerModelsCli(program);
84
+ (await import("./models-cli-xt0_lwNn.js")).registerModelsCli(program);
85
85
  }
86
86
  },
87
87
  {
@@ -89,7 +89,7 @@ const entries = [
89
89
  description: "Manage exec approvals (gateway or node host)",
90
90
  hasSubcommands: true,
91
91
  register: async (program) => {
92
- (await import("./exec-approvals-cli-CfrLzlfe.js")).registerExecApprovalsCli(program);
92
+ (await import("./exec-approvals-cli-CSTHY6Vs.js")).registerExecApprovalsCli(program);
93
93
  }
94
94
  },
95
95
  {
@@ -97,7 +97,7 @@ const entries = [
97
97
  description: "Manage gateway-owned node pairing and node commands",
98
98
  hasSubcommands: true,
99
99
  register: async (program) => {
100
- (await import("./nodes-cli-CO1-qlpY.js")).registerNodesCli(program);
100
+ (await import("./nodes-cli-BHnGJEDY.js")).registerNodesCli(program);
101
101
  }
102
102
  },
103
103
  {
@@ -105,7 +105,7 @@ const entries = [
105
105
  description: "Device pairing + token management",
106
106
  hasSubcommands: true,
107
107
  register: async (program) => {
108
- (await import("./devices-cli-CKAh6Hnl.js")).registerDevicesCli(program);
108
+ (await import("./devices-cli-Ch8p42OS.js")).registerDevicesCli(program);
109
109
  }
110
110
  },
111
111
  {
@@ -113,7 +113,7 @@ const entries = [
113
113
  description: "Run and manage the headless node host service",
114
114
  hasSubcommands: true,
115
115
  register: async (program) => {
116
- (await import("./node-cli-Dq7jjGmU.js")).registerNodeCli(program);
116
+ (await import("./node-cli-BhCoxgBf.js")).registerNodeCli(program);
117
117
  }
118
118
  },
119
119
  {
@@ -129,7 +129,7 @@ const entries = [
129
129
  description: "Open a terminal UI connected to the Gateway",
130
130
  hasSubcommands: false,
131
131
  register: async (program) => {
132
- (await import("./tui-cli-hcbzeOtp.js")).registerTuiCli(program);
132
+ (await import("./tui-cli-BsSKYVE3.js")).registerTuiCli(program);
133
133
  }
134
134
  },
135
135
  {
@@ -137,7 +137,7 @@ const entries = [
137
137
  description: "Manage cron jobs via the Gateway scheduler",
138
138
  hasSubcommands: true,
139
139
  register: async (program) => {
140
- (await import("./cron-cli-BVy2Ysgu.js")).registerCronCli(program);
140
+ (await import("./cron-cli-CMb8Tfrd.js")).registerCronCli(program);
141
141
  }
142
142
  },
143
143
  {
@@ -161,7 +161,7 @@ const entries = [
161
161
  description: "Manage internal agent hooks",
162
162
  hasSubcommands: true,
163
163
  register: async (program) => {
164
- (await import("./hooks-cli-D4qJl6do.js")).registerHooksCli(program);
164
+ (await import("./hooks-cli-C7tb9Ef0.js")).registerHooksCli(program);
165
165
  }
166
166
  },
167
167
  {
@@ -185,7 +185,7 @@ const entries = [
185
185
  description: "Secure DM pairing (approve inbound requests)",
186
186
  hasSubcommands: true,
187
187
  register: async (program) => {
188
- const { registerPluginCliCommands } = await import("./cli-Bg_5WQFe.js");
188
+ const { registerPluginCliCommands } = await import("./cli-CLHi2LEP.js");
189
189
  registerPluginCliCommands(program, await loadConfig());
190
190
  (await import("./pairing-cli-B7oA36Ke.js")).registerPairingCli(program);
191
191
  }
@@ -195,8 +195,8 @@ const entries = [
195
195
  description: "Manage Symi plugins and extensions",
196
196
  hasSubcommands: true,
197
197
  register: async (program) => {
198
- (await import("./plugins-cli-BpuQ7Y9l.js")).registerPluginsCli(program);
199
- const { registerPluginCliCommands } = await import("./cli-Bg_5WQFe.js");
198
+ (await import("./plugins-cli-QSrupxLG.js")).registerPluginsCli(program);
199
+ const { registerPluginCliCommands } = await import("./cli-CLHi2LEP.js");
200
200
  registerPluginCliCommands(program, await loadConfig());
201
201
  }
202
202
  },
@@ -205,7 +205,7 @@ const entries = [
205
205
  description: "Manage connected chat channels (Telegram, Discord, etc.)",
206
206
  hasSubcommands: true,
207
207
  register: async (program) => {
208
- (await import("./channels-cli-DgxPfJF7.js")).registerChannelsCli(program);
208
+ (await import("./channels-cli-CILkYyG3.js")).registerChannelsCli(program);
209
209
  }
210
210
  },
211
211
  {
@@ -221,7 +221,7 @@ const entries = [
221
221
  description: "Security tools and local config audits",
222
222
  hasSubcommands: true,
223
223
  register: async (program) => {
224
- (await import("./security-cli-YGXUUBvD.js")).registerSecurityCli(program);
224
+ (await import("./security-cli-BTcKFy-k.js")).registerSecurityCli(program);
225
225
  }
226
226
  },
227
227
  {
@@ -237,7 +237,7 @@ const entries = [
237
237
  description: "Update Symi and inspect update channel status",
238
238
  hasSubcommands: true,
239
239
  register: async (program) => {
240
- (await import("./update-cli-CHr8rjf-.js")).registerUpdateCli(program);
240
+ (await import("./update-cli-B3VC_mrH.js")).registerUpdateCli(program);
241
241
  }
242
242
  },
243
243
  {
@@ -245,7 +245,7 @@ const entries = [
245
245
  description: "Generate shell completion script",
246
246
  hasSubcommands: false,
247
247
  register: async (program) => {
248
- (await import("./completion-cli-KJUTWJP3.js").then((n) => n.n)).registerCompletionCli(program);
248
+ (await import("./completion-cli-D7iBY_Z-.js").then((n) => n.n)).registerCompletionCli(program);
249
249
  }
250
250
  }
251
251
  ];
@@ -21,7 +21,7 @@ import { a as isPathInsideWithRealpath } from "./legacy-names-Be3msDZo.js";
21
21
  import { t as normalizeChatType } from "./chat-type-DyovJwCt.js";
22
22
  import { n as resolveConversationLabel } from "./conversation-label-Bn5j3lUT.js";
23
23
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-CmmmT8IP.js";
24
- import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-C0tJTZmp.js";
24
+ import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-VHq3quQZ.js";
25
25
  import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-DrZEJQwQ.js";
26
26
  import { t as ensureSymiModelsJson } from "./models-config-u4va9_AO.js";
27
27
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-4uUnLc3n.js";
@@ -51,7 +51,7 @@ import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-Db3d
51
51
  import { t as fetchWithSsrFGuard } from "./fetch-guard-DOPkVbh3.js";
52
52
  import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, t as getAgentScopedMediaLocalRoots } from "./local-roots-aAFLQGkY.js";
53
53
  import { v as runTasksWithConcurrency } from "./sqlite-Dx3J_aSE.js";
54
- import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-DjJ9GtKX.js";
54
+ import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-CX8kAHv8.js";
55
55
  import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-BuceUQDl.js";
56
56
  import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-BeA4Jxcl.js";
57
57
  import { C as getGlobalHookRunner, S as throwIfAborted, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as splitMediaFromOutput, 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 parseReplyDirectives, w as initializeGlobalHookRunner, x as parseInlineDirectives$1, y as MEDIA_TOKEN_RE } from "./deliver-2Y_F_0yh.js";
@@ -69,8 +69,8 @@ import { n as resolveMarkdownTableMode } from "./markdown-tables-CEbN0fEm.js";
69
69
  import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-DZam9q5M.js";
70
70
  import { a as resolveNativeSkillsEnabled, i as resolveNativeCommandsEnabled, n as isNativeCommandsExplicitlyDisabled, r as isRestartEnabled, t as isCommandFlagEnabled } from "./commands-BNLCWX6e.js";
71
71
  import { a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, i as listChatCommands, l as parseCommandArgs, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices } from "./commands-registry-DyWjIe7d.js";
72
- import { Mt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-Cnoh7nRo.js";
73
- import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-BNyqFDDZ.js";
72
+ import { Mt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-CQSyCS4M.js";
73
+ import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-CJYWtIM9.js";
74
74
  import { n as formatTimeAgo } from "./format-relative-BXoxEQVN.js";
75
75
  import { n as normalizePollInput } from "./polls-DhH5YkzN.js";
76
76
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-BOiuJS3t.js";
@@ -85,7 +85,7 @@ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliv
85
85
  import { b as ensureSkillsWatcher, i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames, x as getSkillsSnapshotVersion } from "./skill-commands-DrFCB9F9.js";
86
86
  import { c as hasNonzeroUsage, l as normalizeUsage, n as loadCostUsageSummary, o as derivePromptTokens, r as loadSessionCostSummary, s as deriveSessionTotalTokens } from "./session-cost-usage-BG4AXrGN.js";
87
87
  import { a as normalizeIMessageHandle, c as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, i as isAllowedIMessageSender, o as parseIMessageTarget, r as formatIMessageChatTarget, s as createIMessageRpcClient, t as sendMessageIMessage } from "./send-B18gkuvz.js";
88
- import { r as detectBinary } from "./onboard-helpers-BuSj9DUm.js";
88
+ import { r as detectBinary } from "./onboard-helpers-CYxzQfe5.js";
89
89
  import { t as resolvePairingIdLabel } from "./pairing-labels-B-WwqJ-z.js";
90
90
  import { i as resolveModelCostConfig, n as formatTokenCount$2, r as formatUsd, t as estimateUsageCost } from "./usage-format-BzKEDn0q.js";
91
91
  import { t as getActiveWebListener } from "./active-listener-kvXhlgwu.js";
@@ -15602,7 +15602,7 @@ async function preflightDiscordMessage(params) {
15602
15602
  let preflightTranscript;
15603
15603
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
15604
15604
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
15605
- const { transcribeFirstAudio } = await import("./audio-preflight-CO2seHjy.js");
15605
+ const { transcribeFirstAudio } = await import("./audio-preflight-CQ5_RYEe.js");
15606
15606
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
15607
15607
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
15608
15608
  ctx: {
@@ -22291,7 +22291,7 @@ async function runWithImageModelFallback(params) {
22291
22291
  function createDefaultDeps() {
22292
22292
  return {
22293
22293
  sendMessageWhatsApp: async (...args) => {
22294
- const { sendMessageWhatsApp } = await import("./web-UroM-w6c.js");
22294
+ const { sendMessageWhatsApp } = await import("./web-JIG-oxRW.js");
22295
22295
  return await sendMessageWhatsApp(...args);
22296
22296
  },
22297
22297
  sendMessageTelegram: async (...args) => {
@@ -38685,7 +38685,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
38685
38685
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
38686
38686
  let preflightTranscript;
38687
38687
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
38688
- const { transcribeFirstAudio } = await import("./audio-preflight-CO2seHjy.js");
38688
+ const { transcribeFirstAudio } = await import("./audio-preflight-CQ5_RYEe.js");
38689
38689
  preflightTranscript = await transcribeFirstAudio({
38690
38690
  ctx: {
38691
38691
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -40851,7 +40851,7 @@ function loadWebLoginQr() {
40851
40851
  return webLoginQrPromise;
40852
40852
  }
40853
40853
  function loadWebChannel() {
40854
- webChannelPromise ??= import("./web-UroM-w6c.js");
40854
+ webChannelPromise ??= import("./web-JIG-oxRW.js");
40855
40855
  return webChannelPromise;
40856
40856
  }
40857
40857
  function loadWhatsAppActions() {
@@ -1,4 +1,4 @@
1
- import { a as randomIdempotencyKey, n as callGateway } from "./call-BQiCOxB6.js";
1
+ import { a as randomIdempotencyKey, n as callGateway } from "./call-BVw7l9v8.js";
2
2
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-C9dERklz.js";
3
3
  import { n as parseNodeList, r as parsePairingList, t as resolveNodeIdFromCandidates } from "./node-match-DKGjoxbG.js";
4
4
  import { n as withProgress } from "./progress-BAHiAaDW.js";
@@ -1,5 +1,5 @@
1
1
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-aT-I_DTX.js";
2
- import { a as randomIdempotencyKey, n as callGateway } from "./call-BNyqFDDZ.js";
2
+ import { a as randomIdempotencyKey, n as callGateway } from "./call-CJYWtIM9.js";
3
3
  import { n as withProgress } from "./progress-jIePzvGA.js";
4
4
  import { n as parseNodeList, r as parsePairingList, t as resolveNodeIdFromCandidates } from "./node-match-CN8o4Vi3.js";
5
5
 
@@ -9,11 +9,11 @@ import "./frontmatter-B8duUx_6.js";
9
9
  import "./skills-hAdgFdrv.js";
10
10
  import "./manifest-registry-Czr39pxG.js";
11
11
  import { H as VERSION, W as loadDotEnv } from "./config-amjzHiWZ.js";
12
- import "./client-LeVQns9-.js";
13
- import "./call-BQiCOxB6.js";
12
+ import "./client-DMBZpU6X.js";
13
+ import "./call-BVw7l9v8.js";
14
14
  import "./message-channel-C9dERklz.js";
15
15
  import "./pairing-token-Byh6drgn.js";
16
- import "./subagent-registry-BR2Qhqjf.js";
16
+ import "./subagent-registry-XHBZsH3Q.js";
17
17
  import "./sessions-DJAxaVI7.js";
18
18
  import "./tokens-Csntmwwn.js";
19
19
  import "./plugins-CwSlLxM8.js";
@@ -93,7 +93,7 @@ import "./cli-utils-CCaEbxAz.js";
93
93
  import "./help-format-B0pWGnZs.js";
94
94
  import "./progress-BAHiAaDW.js";
95
95
  import "./replies-CTKReSzx.js";
96
- import "./onboard-helpers-CUQrf3zD.js";
96
+ import "./onboard-helpers-Dsr4zKCb.js";
97
97
  import "./prompt-style-DwCXob2h.js";
98
98
  import "./pairing-labels-sIj1ZLt-.js";
99
99
  import "./pi-tools.policy-T6Z5F-_n.js";
@@ -101,9 +101,9 @@ import { t as ensureSymiCliOnPath } from "./path-env-Bic_wXs9.js";
101
101
  import "./catalog-DLQFKucJ.js";
102
102
  import "./note-DDecZomM.js";
103
103
  import "./plugin-auto-enable-D4BRdbII.js";
104
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-BAbkdLQ7.js";
104
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-SCI1BVkI.js";
105
105
  import { t as assertSupportedRuntime } from "./runtime-guard-D7waq_Ho.js";
106
- import { t as emitCliBanner } from "./banner-B-joBGLz.js";
106
+ import { t as emitCliBanner } from "./banner-DHgxDWv_.js";
107
107
  import "./doctor-config-flow-C_56SUPO.js";
108
108
  import { n as ensureConfigReady } from "./config-guard-BpQn1MKk.js";
109
109
  import process$1 from "node:process";
@@ -118,7 +118,7 @@ const routeHealth = {
118
118
  const verbose = getVerboseFlag(argv, { includeDebug: true });
119
119
  const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
120
120
  if (timeoutMs === null) return false;
121
- const { healthCommand } = await import("./health-UjXEBnzA.js").then((n) => n.i);
121
+ const { healthCommand } = await import("./health-CYZdOaco.js").then((n) => n.i);
122
122
  await healthCommand({
123
123
  json,
124
124
  timeoutMs,
@@ -138,7 +138,7 @@ const routeStatus = {
138
138
  const verbose = getVerboseFlag(argv, { includeDebug: true });
139
139
  const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
140
140
  if (timeoutMs === null) return false;
141
- const { statusCommand } = await import("./status-PADx9rG7.js").then((n) => n.t);
141
+ const { statusCommand } = await import("./status-BXQGCrxj.js").then((n) => n.t);
142
142
  await statusCommand({
143
143
  json,
144
144
  deep,
@@ -172,7 +172,7 @@ const routeAgentsList = {
172
172
  run: async (argv) => {
173
173
  const json = hasFlag(argv, "--json");
174
174
  const bindings = hasFlag(argv, "--bindings");
175
- const { agentsListCommand } = await import("./agents-CNsMe4Dr.js").then((n) => n.t);
175
+ const { agentsListCommand } = await import("./agents-CP6mOf0j.js").then((n) => n.t);
176
176
  await agentsListCommand({
177
177
  json,
178
178
  bindings
@@ -243,7 +243,7 @@ const routes = [
243
243
  const pathArg = getCommandPositionals(argv)[2];
244
244
  if (!pathArg) return false;
245
245
  const json = hasFlag(argv, "--json");
246
- const { runConfigGet } = await import("./config-cli-ozfA6MGF.js");
246
+ const { runConfigGet } = await import("./config-cli-CcbYdW1-.js");
247
247
  await runConfigGet({
248
248
  path: pathArg,
249
249
  json
@@ -256,7 +256,7 @@ const routes = [
256
256
  run: async (argv) => {
257
257
  const pathArg = getCommandPositionals(argv)[2];
258
258
  if (!pathArg) return false;
259
- const { runConfigUnset } = await import("./config-cli-ozfA6MGF.js");
259
+ const { runConfigUnset } = await import("./config-cli-CcbYdW1-.js");
260
260
  await runConfigUnset({ path: pathArg });
261
261
  return true;
262
262
  }
@@ -270,7 +270,7 @@ const routes = [
270
270
  const local = hasFlag(argv, "--local");
271
271
  const json = hasFlag(argv, "--json");
272
272
  const plain = hasFlag(argv, "--plain");
273
- const { modelsListCommand } = await import("./models-DKsiIvSx.js").then((n) => n.t);
273
+ const { modelsListCommand } = await import("./models-wHzbWyGd.js").then((n) => n.t);
274
274
  await modelsListCommand({
275
275
  all,
276
276
  local,
@@ -301,7 +301,7 @@ const routes = [
301
301
  const plain = hasFlag(argv, "--plain");
302
302
  const check = hasFlag(argv, "--check");
303
303
  const probe = hasFlag(argv, "--probe");
304
- const { modelsStatusCommand } = await import("./models-DKsiIvSx.js").then((n) => n.t);
304
+ const { modelsStatusCommand } = await import("./models-wHzbWyGd.js").then((n) => n.t);
305
305
  await modelsStatusCommand({
306
306
  json,
307
307
  plain,
@@ -379,7 +379,7 @@ async function runCli(argv = process$1.argv) {
379
379
  assertSupportedRuntime();
380
380
  if (await tryRouteCli(normalizedArgv)) return;
381
381
  enableConsoleCapture();
382
- const { buildProgram } = await import("./program-cO9YX6wL.js");
382
+ const { buildProgram } = await import("./program-7hcHnpYu.js");
383
383
  const program = buildProgram();
384
384
  installUnhandledRejectionHandler();
385
385
  process$1.on("uncaughtException", (error) => {
@@ -411,10 +411,10 @@ async function runCli(argv = process$1.argv) {
411
411
  const { getProgramContext } = await import("./program-context-CqzR_m-7.js").then((n) => n.n);
412
412
  const ctx = getProgramContext(program);
413
413
  if (ctx) {
414
- const { registerCoreCliByName } = await import("./command-registry-Cde2LqTh.js").then((n) => n.t);
414
+ const { registerCoreCliByName } = await import("./command-registry-OHfvK1Oq.js").then((n) => n.t);
415
415
  await registerCoreCliByName(program, ctx, primary, parseArgv);
416
416
  }
417
- const { registerSubCliByName } = await import("./register.subclis-CqEj9vfW.js").then((n) => n.a);
417
+ const { registerSubCliByName } = await import("./register.subclis-68XcQ3ao.js").then((n) => n.a);
418
418
  await registerSubCliByName(program, primary);
419
419
  }
420
420
  const hasBuiltinPrimary = primary !== null && program.commands.some((command) => command.name() === primary);
@@ -423,7 +423,7 @@ async function runCli(argv = process$1.argv) {
423
423
  primary,
424
424
  hasBuiltinPrimary
425
425
  })) {
426
- const { registerPluginCliCommands } = await import("./cli-Bg_5WQFe.js");
426
+ const { registerPluginCliCommands } = await import("./cli-CLHi2LEP.js");
427
427
  const { loadConfig } = await import("./config-amjzHiWZ.js").then((n) => n.t);
428
428
  registerPluginCliCommands(program, loadConfig());
429
429
  }
@@ -10,7 +10,7 @@ import { n as fetchWithTimeout } from "./fetch-timeout-Db3da8yR.js";
10
10
  import { t as fetchWithSsrFGuard } from "./fetch-guard-DOPkVbh3.js";
11
11
  import { n as executeWithApiKeyRotation, r as parseGeminiAuth, t as collectProviderApiKeysForExecution } from "./api-key-rotation-BukD0zzl.js";
12
12
  import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, r as MediaFetchError } from "./local-roots-aAFLQGkY.js";
13
- import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-DjJ9GtKX.js";
13
+ import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-CX8kAHv8.js";
14
14
  import process$1 from "node:process";
15
15
  import { fileURLToPath } from "node:url";
16
16
  import { constants } from "node:fs";
@@ -4,7 +4,7 @@ import { G as resolveSymiAgentDir, T as resolveApiKeyForProvider, c as normalize
4
4
  import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
5
5
  import { _ as kindFromMime, d as detectMime, h as isAudioFileName, p as getFileExtension } from "./image-ops-ByaQt43P.js";
6
6
  import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-BjGo9GnL.js";
7
- import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-CSeAnozE.js";
7
+ import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-DOnOTocl.js";
8
8
  import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-K6vg8B5c.js";
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-BheTNyes.js";
10
10
  import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-CC8jiKDk.js";
@@ -40,8 +40,8 @@ import "./bindings-DFaVVCsf.js";
40
40
  import "./logging-w5jq5901.js";
41
41
  import "./paths-CyhzMxFA.js";
42
42
  import "./commands-BNLCWX6e.js";
43
- import "./client-Cnoh7nRo.js";
44
- import "./call-BNyqFDDZ.js";
43
+ import "./client-CQSyCS4M.js";
44
+ import "./call-CJYWtIM9.js";
45
45
  import "./pairing-token-CX3NN_qj.js";
46
46
  import { i as readChannelAllowFromStore } from "./pairing-store-CFwkjcA5.js";
47
47
  import { t as formatDocsLink } from "./links-3i1eUga4.js";
@@ -50,7 +50,7 @@ import "./workspace-dirs-GpkFi6Kw.js";
50
50
  import "./pi-tools.policy-DPmdlOwE.js";
51
51
  import "./dangerous-tools-BL-M3lPt.js";
52
52
  import "./skill-scanner-CLs8u6vQ.js";
53
- import { i as collectIncludePathsRecursive, n as createIcaclsResetCommand, r as formatIcaclsResetCommand, t as runSecurityAudit } from "./audit-CiugrQda.js";
53
+ import { i as collectIncludePathsRecursive, n as createIcaclsResetCommand, r as formatIcaclsResetCommand, t as runSecurityAudit } from "./audit-Do2bVss3.js";
54
54
  import "./dm-policy-shared-DckBYBwg.js";
55
55
  import path from "node:path";
56
56
  import fs from "node:fs/promises";
@@ -9,8 +9,8 @@ import "./frontmatter-B8duUx_6.js";
9
9
  import "./skills-hAdgFdrv.js";
10
10
  import "./manifest-registry-Czr39pxG.js";
11
11
  import { i as loadConfig, r as createConfigIO } from "./config-amjzHiWZ.js";
12
- import "./client-LeVQns9-.js";
13
- import "./call-BQiCOxB6.js";
12
+ import "./client-DMBZpU6X.js";
13
+ import "./call-BVw7l9v8.js";
14
14
  import "./message-channel-C9dERklz.js";
15
15
  import "./pairing-token-Byh6drgn.js";
16
16
  import "./sessions-DJAxaVI7.js";
@@ -45,7 +45,7 @@ import { t as formatHelpExamples } from "./help-format-B0pWGnZs.js";
45
45
  import "./pi-tools.policy-T6Z5F-_n.js";
46
46
  import "./dangerous-tools-B8QrxStA.js";
47
47
  import "./skill-scanner-BGWOBqLY.js";
48
- import { i as collectIncludePathsRecursive, n as createIcaclsResetCommand, r as formatIcaclsResetCommand, t as runSecurityAudit } from "./audit-DKUpFt8z.js";
48
+ import { i as collectIncludePathsRecursive, n as createIcaclsResetCommand, r as formatIcaclsResetCommand, t as runSecurityAudit } from "./audit-x_SzU263.js";
49
49
  import "./dm-policy-shared-BovJdm5T.js";
50
50
  import path from "node:path";
51
51
  import fs from "node:fs/promises";
@@ -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-amjzHiWZ.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-LeVQns9-.js";
10
- import { l as authorizeOperatorScopesForMethod, s as ADMIN_SCOPE$2, u as isNodeRoleMethod } from "./call-BQiCOxB6.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-BVw7l9v8.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 resolveTtsPrefsPath, $t as normalizeGroupActivation, A as createOutboundSendDeps, D as resolveAgentOutboundTarget, E as resolveAgentDeliveryPlan, Hn as isAbortTrigger, Ht as applyBrowserProxyPaths, J as BARE_SESSION_RESET_PROMPT, Jn as isTtsEnabled, Kn as resolveUserTimezone, Pn as resolveAgentTimeoutMs, Qn as resolveTtsConfig, Qt as unbindThreadBindingsBySessionKey, Sn as isSystemEventContextChanged, Sr as registerAgentRunContext, St as writeRestartSentinel, Tt as normalizeCronJobPatch, U as dispatchInboundMessage, Un as stopSubagentsForRequester, Ut as persistBrowserProxyFiles, W as createReplyDispatcher, Xn as resolveTtsApiKey, Yn as isTtsProviderConfigured, Yt as scheduleGatewaySigusr1Restart, Zn as resolveTtsAutoMode, _ as loadSymiPlugins, _t as formatDoctorNonInteractiveHint, ar as OPENAI_TTS_VOICES, at as ensureOutboundSessionEntry, bn as parseVerboseOverride, d as waitForEmbeddedPiRunEnd, er as resolveTtsProviderOrder, fn as normalizeSendPolicy, i as listSubagentRunsForRequester, ir as OPENAI_TTS_MODELS, l as abortEmbeddedPiRun, lt as resolveOutboundTarget, nr as setTtsProvider, ot as resolveOutboundSessionRoute, pn as resolveSendPolicy, qn as getTtsProvider, r as listDescendantRunsForRequester, rr as textToSpeech, s as clearSessionQueues, tn as loadProviderUsageSummary, tr as setTtsEnabled, vn as applyModelOverrideToSessionEntry, w as agentCommand, wt as normalizeCronJobCreate, xn as enqueueSystemEvent, xr as onAgentEvent, yn as applyVerboseOverride, zn as formatZonedTimestamp } from "./subagent-registry-BR2Qhqjf.js";
15
+ import { $n as resolveTtsPrefsPath, $t as normalizeGroupActivation, A as createOutboundSendDeps, D as resolveAgentOutboundTarget, E as resolveAgentDeliveryPlan, Hn as isAbortTrigger, Ht as applyBrowserProxyPaths, J as BARE_SESSION_RESET_PROMPT, Jn as isTtsEnabled, Kn as resolveUserTimezone, Pn as resolveAgentTimeoutMs, Qn as resolveTtsConfig, Qt as unbindThreadBindingsBySessionKey, Sn as isSystemEventContextChanged, Sr as registerAgentRunContext, St as writeRestartSentinel, Tt as normalizeCronJobPatch, U as dispatchInboundMessage, Un as stopSubagentsForRequester, Ut as persistBrowserProxyFiles, W as createReplyDispatcher, Xn as resolveTtsApiKey, Yn as isTtsProviderConfigured, Yt as scheduleGatewaySigusr1Restart, Zn as resolveTtsAutoMode, _ as loadSymiPlugins, _t as formatDoctorNonInteractiveHint, ar as OPENAI_TTS_VOICES, at as ensureOutboundSessionEntry, bn as parseVerboseOverride, d as waitForEmbeddedPiRunEnd, er as resolveTtsProviderOrder, fn as normalizeSendPolicy, i as listSubagentRunsForRequester, ir as OPENAI_TTS_MODELS, l as abortEmbeddedPiRun, lt as resolveOutboundTarget, nr as setTtsProvider, ot as resolveOutboundSessionRoute, pn as resolveSendPolicy, qn as getTtsProvider, r as listDescendantRunsForRequester, rr as textToSpeech, s as clearSessionQueues, tn as loadProviderUsageSummary, tr as setTtsEnabled, vn as applyModelOverrideToSessionEntry, w as agentCommand, wt as normalizeCronJobCreate, xn as enqueueSystemEvent, xr as onAgentEvent, yn as applyVerboseOverride, zn as formatZonedTimestamp } from "./subagent-registry-XHBZsH3Q.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-DJAxaVI7.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-Cj_xUxo6.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-DVFF3PrV.js";
32
32
  import { i as parseAbsoluteTimeMs } from "./stagger-CQar2eKe.js";
33
- import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-CUQrf3zD.js";
33
+ import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-Dsr4zKCb.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-DKUpFt8z.js";
40
- import { r as getStatusSummary } from "./status-PADx9rG7.js";
41
- import { c as setHeartbeatsEnabled } from "./health-UjXEBnzA.js";
39
+ import { o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-x_SzU263.js";
40
+ import { r as getStatusSummary } from "./status-BXQGCrxj.js";
41
+ import { c as setHeartbeatsEnabled } from "./health-CYZdOaco.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-8YIzbTM7.js";
44
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-yx78oSLx.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-BZu5OVg5.js";
44
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-Da5XukaM.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-DNA7FJa2.js";
47
+ import { t as runGatewayUpdate } from "./update-runner-Dsc1_XOK.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";
@@ -3482,14 +3482,27 @@ const chatHandlers = {
3482
3482
  respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, `invalid chat.history params: ${formatValidationErrors(validateChatHistoryParams.errors)}`));
3483
3483
  return;
3484
3484
  }
3485
- const { sessionKey, limit } = params;
3485
+ const { sessionKey, limit, before } = params;
3486
3486
  const { cfg, storePath, entry } = loadSessionEntry(sessionKey);
3487
3487
  const sessionId = entry?.sessionId;
3488
3488
  const rawMessages = sessionId && storePath ? readSessionMessages(sessionId, storePath, entry?.sessionFile) : [];
3489
+ const total = rawMessages.length;
3489
3490
  const hardMax = 1e3;
3490
3491
  const requested = typeof limit === "number" ? limit : 200;
3491
3492
  const max = Math.min(hardMax, requested);
3492
- const normalized = sanitizeChatHistoryMessages(stripEnvelopeFromMessages(rawMessages.length > max ? rawMessages.slice(-max) : rawMessages));
3493
+ let sliced;
3494
+ let startIndex;
3495
+ if (typeof before === "number" && before >= 0) {
3496
+ const end = Math.min(before, total);
3497
+ const start = Math.max(0, end - max);
3498
+ sliced = rawMessages.slice(start, end);
3499
+ startIndex = start;
3500
+ } else {
3501
+ sliced = rawMessages.length > max ? rawMessages.slice(-max) : rawMessages;
3502
+ startIndex = Math.max(0, total - max);
3503
+ }
3504
+ const hasMore = startIndex > 0;
3505
+ const normalized = sanitizeChatHistoryMessages(stripEnvelopeFromMessages(sliced));
3493
3506
  const maxHistoryBytes = getMaxChatHistoryMessagesBytes();
3494
3507
  const replaced = replaceOversizedChatHistoryMessages({
3495
3508
  messages: normalized,
@@ -3527,6 +3540,9 @@ const chatHandlers = {
3527
3540
  sessionKey,
3528
3541
  sessionId,
3529
3542
  messages: bounded.messages,
3543
+ total,
3544
+ hasMore,
3545
+ startIndex,
3530
3546
  thinkingLevel,
3531
3547
  verboseLevel
3532
3548
  });
@@ -6832,7 +6848,7 @@ const nodeHandlers = {
6832
6848
  const p = params;
6833
6849
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
6834
6850
  await respondUnavailableOnThrow(respond, async () => {
6835
- const { handleNodeEvent } = await import("./server-node-events-C2mugatX.js");
6851
+ const { handleNodeEvent } = await import("./server-node-events-t5pGPXLD.js");
6836
6852
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
6837
6853
  await handleNodeEvent({
6838
6854
  deps: context.deps,