@symerian/symi 2.6.3 → 2.6.5

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 (102) hide show
  1. package/dist/{agents-Dm0V9Z2G.js → agents-DPdRUY_O.js} +4 -4
  2. package/dist/{agents.config-DP0CLvIA.js → agents.config-Cr6DcdaD.js} +1 -1
  3. package/dist/{agents.config-WdkJjM2-.js → agents.config-DIumfxnN.js} +1 -1
  4. package/dist/{auth-choice-B9OnYICm.js → auth-choice-C5etRQcH.js} +1 -1
  5. package/dist/{auth-choice-CXHi61T5.js → auth-choice-z3-Baeyd.js} +1 -1
  6. package/dist/{banner-ToxTMzfL.js → banner-om7BRUIc.js} +1 -1
  7. package/dist/build-info.json +3 -3
  8. package/dist/bundled/boot-md/handler.js +1 -1
  9. package/dist/bundled/session-memory/handler.js +1 -1
  10. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  11. package/dist/{channel-options-Jl8AKRLD.js → channel-options-BqnokE7_.js} +1 -1
  12. package/dist/{channel-options-CsGrHsjP.js → channel-options-Cb1PgfNV.js} +1 -1
  13. package/dist/{channel-web-qFGaLytG.js → channel-web-DztB2W6w.js} +1 -1
  14. package/dist/{channels-cli-BFyOmW-R.js → channels-cli-R2PHQWVd.js} +4 -4
  15. package/dist/{channels-cli-DQTl2Pk5.js → channels-cli-xlZ2mjBu.js} +4 -4
  16. package/dist/{cli-B4biLt2z.js → cli-DLly6H0w.js} +1 -1
  17. package/dist/{cli-DQw_LEew.js → cli-DNGrFH7L.js} +1 -1
  18. package/dist/{command-registry-D1OePePk.js → command-registry-DeOD2MdC.js} +9 -9
  19. package/dist/{completion-cli-CI-0hC_u.js → completion-cli-B6IpFueu.js} +2 -2
  20. package/dist/{completion-cli-DW8a1WYc.js → completion-cli-D9rF4Hsw.js} +1 -1
  21. package/dist/{config-cli-DHXt5cQZ.js → config-cli-BaH8OVQ-.js} +1 -1
  22. package/dist/{config-cli-CpiluXlO.js → config-cli-CbdeNt0M.js} +1 -1
  23. package/dist/{configure-Ha9cu8Bu.js → configure-BmNOfGox.js} +3 -3
  24. package/dist/{configure-CmVnpTNi.js → configure-D5dSJprr.js} +3 -3
  25. package/dist/{doctor-completion-CRNCOXcf.js → doctor-completion-CmxVAo2o.js} +1 -1
  26. package/dist/{doctor-completion-ve-JPlmN.js → doctor-completion-DIKftJUc.js} +1 -1
  27. package/dist/entry.js +1 -1
  28. package/dist/extensionAPI.js +1 -1
  29. package/dist/{gateway-cli-Cc7N8N_E.js → gateway-cli-CSOiySht.js} +9 -9
  30. package/dist/{gateway-cli-BPsbjmUI.js → gateway-cli-DEPCdrmX.js} +9 -9
  31. package/dist/{glass-ui-ws-1O1O2xC6.js → glass-ui-ws-B7V2wHEu.js} +7 -7
  32. package/dist/{glass-ui-ws-CKwLnOwl.js → glass-ui-ws-Cj9wbO1L.js} +7 -7
  33. package/dist/{health-DTRWmRB8.js → health-BPOuBmYt.js} +1 -1
  34. package/dist/{health-tYyUNVp5.js → health-DUKLANXu.js} +1 -1
  35. package/dist/{hooks-cli-Cp81vqRc.js → hooks-cli-BF0mbqlZ.js} +2 -2
  36. package/dist/{hooks-cli-eC03ywfG.js → hooks-cli-BpfIySkB.js} +2 -2
  37. package/dist/index.js +6 -6
  38. package/dist/llm-slug-generator.js +1 -1
  39. package/dist/{models-CuhnCX2U.js → models-Bt8lm_nD.js} +2 -2
  40. package/dist/{models-cli-BzwGQUdn.js → models-cli-BmBmBUgl.js} +3 -3
  41. package/dist/{models-cli-CFr_ZP5y.js → models-cli-bHYoiL5x.js} +2 -2
  42. package/dist/{onboard-B2g2Q6dd.js → onboard-DZRuFOui.js} +2 -2
  43. package/dist/{onboard-channels-DmRBC7VN.js → onboard-channels-D0RHtaJE.js} +1 -1
  44. package/dist/{onboard-channels-CWd17q6h.js → onboard-channels-DEFF3Rjo.js} +1 -1
  45. package/dist/{onboard-CcB6pmEy.js → onboard-z3fzzRA3.js} +2 -2
  46. package/dist/{onboarding-DwvQIqR8.js → onboarding-C-CKVquN.js} +3 -3
  47. package/dist/{onboarding-DMqlt_p6.js → onboarding-Dt44Sq16.js} +3 -3
  48. package/dist/{onboarding.finalize-lJmZSE4C.js → onboarding.finalize-BS2mkyHV.js} +6 -6
  49. package/dist/{onboarding.finalize-BUSzTwhM.js → onboarding.finalize-Brx3PR8v.js} +5 -5
  50. package/dist/{pi-embedded-CT2JDfQr.js → pi-embedded-DPXbVwW0.js} +15 -8
  51. package/dist/{plugin-registry-DZdPnpP_.js → plugin-registry-C1ghjhOE.js} +1 -1
  52. package/dist/{plugin-registry-vW2V1yCi.js → plugin-registry-CDIOKK_i.js} +1 -1
  53. package/dist/plugin-sdk/{channel-web-38aqDKeT.js → channel-web-CxwLjrWk.js} +1 -1
  54. package/dist/plugin-sdk/index.js +2 -2
  55. package/dist/plugin-sdk/{reply-BjJZjZRr.js → reply-CyZfsjrl.js} +15 -8
  56. package/dist/plugin-sdk/{web-BgKYnau3.js → web-C2OyRvIo.js} +2 -2
  57. package/dist/{plugins-cli-BTq9c2hZ.js → plugins-cli-BFCJyRBX.js} +2 -2
  58. package/dist/{plugins-cli-DkAx9r3h.js → plugins-cli-jv-Bqq1t.js} +2 -2
  59. package/dist/{program-DZx9PtyT.js → program-CLUzfgIi.js} +7 -7
  60. package/dist/{program-context-DyfuToE1.js → program-context-Dy0GIFHq.js} +17 -17
  61. package/dist/{prompt-select-styled-DNbD3v3G.js → prompt-select-styled-qBayGUev.js} +4 -4
  62. package/dist/{prompt-select-styled-CifWTOoY.js → prompt-select-styled-u4kisg-4.js} +4 -4
  63. package/dist/{provider-auth-helpers-BzySaUp5.js → provider-auth-helpers-CfBPNN7J.js} +1 -1
  64. package/dist/{provider-auth-helpers-BPIIDTwA.js → provider-auth-helpers-CqDTEFnD.js} +1 -1
  65. package/dist/{push-apns-IdD-dKZm.js → push-apns-CHIVwHRD.js} +1 -1
  66. package/dist/{push-apns-DbpeXPGR.js → push-apns-CVRC-O3Q.js} +1 -1
  67. package/dist/{register.agent-CfFcSvM1.js → register.agent-B0ExzmtM.js} +6 -6
  68. package/dist/{register.agent-TFUcxDGN.js → register.agent-DD2QErXm.js} +5 -5
  69. package/dist/{register.configure-BwRTNCws.js → register.configure-ByNKeAo7.js} +6 -6
  70. package/dist/{register.configure-D3BJejOC.js → register.configure-DpHCcS5d.js} +6 -6
  71. package/dist/{register.maintenance-DkdVYwbj.js → register.maintenance-Bo0Biy_N.js} +8 -8
  72. package/dist/{register.maintenance-B5350ddh.js → register.maintenance-CdLPllzi.js} +7 -7
  73. package/dist/{register.message-FbCBAfJO.js → register.message-BveFb6IW.js} +2 -2
  74. package/dist/{register.message-DTopCPGC.js → register.message-DZ45n1GX.js} +2 -2
  75. package/dist/{register.onboard-DITZn8dx.js → register.onboard-C7dTjfHL.js} +4 -4
  76. package/dist/{register.onboard-GSv5xyA3.js → register.onboard-ChIcWJCu.js} +4 -4
  77. package/dist/{register.setup-BuOeoBk0.js → register.setup-BtALSMOO.js} +4 -4
  78. package/dist/{register.setup-BI6lILMU.js → register.setup-CBpAYN-J.js} +4 -4
  79. package/dist/{register.status-health-sessions-EK4_odLb.js → register.status-health-sessions-CMJ_l4rs.js} +3 -3
  80. package/dist/{register.status-health-sessions-C1RhWKxN.js → register.status-health-sessions-DgNzHYE-.js} +3 -3
  81. package/dist/{register.subclis-Bn_Mr_Wa.js → register.subclis-ffG-1Diq.js} +9 -9
  82. package/dist/{reply-BGSd_cMI.js → reply-DcyKvFor.js} +15 -8
  83. package/dist/{run-main-Bu9IAm9E.js → run-main-D1Qgb9_t.js} +14 -14
  84. package/dist/{server-methods-dxn6-zQz.js → server-methods-BdXCfO_O.js} +7 -7
  85. package/dist/{server-methods-tA9lkIQT.js → server-methods-D1W-tViM.js} +7 -7
  86. package/dist/{server-node-events-6jcJSpXA.js → server-node-events-BwGehjys.js} +2 -2
  87. package/dist/{server-node-events-CzcTGD9T.js → server-node-events-DqVmWjof.js} +2 -2
  88. package/dist/{status-DGKT6HnE.js → status-BY4CnB2O.js} +2 -2
  89. package/dist/{status-CcQSl2sN.js → status-BvnWSBQl.js} +1 -1
  90. package/dist/{status-8176C-aV.js → status-CfLq5R5j.js} +2 -2
  91. package/dist/{status-DmPOSk-A.js → status-kPaSg3RB.js} +1 -1
  92. package/dist/{subagent-registry-DqFKNTCX.js → subagent-registry-CVQOC9Jw.js} +15 -8
  93. package/dist/{unified-runner-BbanUEmo.js → unified-runner-DpWGASP3.js} +15 -8
  94. package/dist/{update-cli-YCXB_6jz.js → update-cli-BrS9rZHi.js} +7 -7
  95. package/dist/{update-cli-FMcGr7MA.js → update-cli-Kauib3Oa.js} +8 -8
  96. package/dist/{update-runner-C8OkrKjW.js → update-runner-CPOm0f_6.js} +1 -1
  97. package/dist/{update-runner-DMP1rCS1.js → update-runner-DdPdhkw5.js} +1 -1
  98. package/dist/{web-LUMjboLF.js → web-DGLeD0Lo.js} +1 -1
  99. package/dist/{web-BsS1ia0M.js → web-DhofKbBh.js} +1 -1
  100. package/dist/{web-DoRGusTq.js → web-DqjNQqGK.js} +2 -2
  101. package/dist/{web-CQ2F1f3a.js → web-ZnFT5LP9.js} +1 -1
  102. package/package.json +1 -1
@@ -13,7 +13,7 @@ import "./client-DMBZpU6X.js";
13
13
  import "./call-BcE47FtD.js";
14
14
  import "./message-channel-C9dERklz.js";
15
15
  import "./pairing-token-Byh6drgn.js";
16
- import "./subagent-registry-DqFKNTCX.js";
16
+ import "./subagent-registry-CVQOC9Jw.js";
17
17
  import "./sessions-CJXnZVjR.js";
18
18
  import "./tokens-Csntmwwn.js";
19
19
  import "./plugins-CwSlLxM8.js";
@@ -104,8 +104,8 @@ import "./daemon-runtime-CfRwa6qh.js";
104
104
  import "./runtime-guard-D7waq_Ho.js";
105
105
  import "./systemd-DlMdyFDY.js";
106
106
  import "./service-Cm9j9WzQ.js";
107
- import "./health-tYyUNVp5.js";
108
- import "./onboarding-DMqlt_p6.js";
107
+ import "./health-DUKLANXu.js";
108
+ import "./onboarding-Dt44Sq16.js";
109
109
  import "./shared-D8K9MkWg.js";
110
110
  import "./auth-token-Cmrk2TPo.js";
111
111
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-BGewRZy0.js";
@@ -113,7 +113,7 @@ import "./openai-model-default-DAwnTUcK.js";
113
113
  import "./model-picker-D5nCutGW.js";
114
114
  import "./systemd-linger-DA_LW52P.js";
115
115
  import "./onboard-custom-DdWPfzJO.js";
116
- import { t as onboardCommand } from "./onboard-CcB6pmEy.js";
116
+ import { t as onboardCommand } from "./onboard-z3fzzRA3.js";
117
117
  import JSON5 from "json5";
118
118
  import fs from "node:fs/promises";
119
119
 
@@ -14,7 +14,7 @@ import "./client-DMBZpU6X.js";
14
14
  import "./call-BcE47FtD.js";
15
15
  import "./message-channel-C9dERklz.js";
16
16
  import "./pairing-token-Byh6drgn.js";
17
- import "./subagent-registry-DqFKNTCX.js";
17
+ import "./subagent-registry-CVQOC9Jw.js";
18
18
  import "./sessions-CJXnZVjR.js";
19
19
  import "./tokens-Csntmwwn.js";
20
20
  import "./plugins-CwSlLxM8.js";
@@ -108,8 +108,8 @@ import "./service-Cm9j9WzQ.js";
108
108
  import "./diagnostics-CS1ov_hH.js";
109
109
  import "./table-D01d2GuY.js";
110
110
  import "./audit-Byo5jCLN.js";
111
- import { n as statusCommand } from "./status-8176C-aV.js";
112
- import { r as healthCommand } from "./health-tYyUNVp5.js";
111
+ import { n as statusCommand } from "./status-CfLq5R5j.js";
112
+ import { r as healthCommand } from "./health-DUKLANXu.js";
113
113
  import "./update-check-ZdimP1aU.js";
114
114
  import "./dm-policy-shared-DJ-61hCT.js";
115
115
  import "./node-service-fcZExd22.js";
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, P as setVerbose, k as info, z as isRich } from "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import { m as classifySessionKey, pr as lookupContextTokens, x as resolveSessionModelRef } from "./reply-BGSd_cMI.js";
4
+ import { m as classifySessionKey, pr as lookupContextTokens, x as resolveSessionModelRef } from "./reply-DcyKvFor.js";
5
5
  import { S as parseAgentSessionKey } from "./session-key-DCt45XZa.js";
6
6
  import "./registry-Cja8eT7G.js";
7
7
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
@@ -114,8 +114,8 @@ import "./service-Cl74hx8J.js";
114
114
  import "./diagnostics-BAMlsVVX.js";
115
115
  import "./table-BTgkRafz.js";
116
116
  import "./audit-CrITRV6w.js";
117
- import { t as statusCommand } from "./status-DGKT6HnE.js";
118
- import { r as healthCommand } from "./health-DTRWmRB8.js";
117
+ import { t as statusCommand } from "./status-BY4CnB2O.js";
118
+ import { r as healthCommand } from "./health-BPOuBmYt.js";
119
119
  import "./update-check-CtckACbb.js";
120
120
  import "./dm-policy-shared-Bh3TbexU.js";
121
121
  import "./node-service-Cxz4e-Qd.js";
@@ -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-BPsbjmUI.js")).registerGatewayCli(program);
52
+ (await import("./gateway-cli-DEPCdrmX.js")).registerGatewayCli(program);
53
53
  }
54
54
  },
55
55
  {
@@ -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-BzwGQUdn.js")).registerModelsCli(program);
84
+ (await import("./models-cli-BmBmBUgl.js")).registerModelsCli(program);
85
85
  }
86
86
  },
87
87
  {
@@ -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-eC03ywfG.js")).registerHooksCli(program);
164
+ (await import("./hooks-cli-BpfIySkB.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-DQw_LEew.js");
188
+ const { registerPluginCliCommands } = await import("./cli-DNGrFH7L.js");
189
189
  registerPluginCliCommands(program, await loadConfig());
190
190
  (await import("./pairing-cli-CQRAnpvm.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-DkAx9r3h.js")).registerPluginsCli(program);
199
- const { registerPluginCliCommands } = await import("./cli-DQw_LEew.js");
198
+ (await import("./plugins-cli-jv-Bqq1t.js")).registerPluginsCli(program);
199
+ const { registerPluginCliCommands } = await import("./cli-DNGrFH7L.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-BFyOmW-R.js")).registerChannelsCli(program);
208
+ (await import("./channels-cli-R2PHQWVd.js")).registerChannelsCli(program);
209
209
  }
210
210
  },
211
211
  {
@@ -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-FMcGr7MA.js")).registerUpdateCli(program);
240
+ (await import("./update-cli-Kauib3Oa.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-CI-0hC_u.js").then((n) => n.n)).registerCompletionCli(program);
248
+ (await import("./completion-cli-B6IpFueu.js").then((n) => n.n)).registerCompletionCli(program);
249
249
  }
250
250
  }
251
251
  ];
@@ -25497,8 +25497,14 @@ const FILE_PATH_KEYS = [
25497
25497
  * Call this AFTER tools are created and the model profile is resolved.
25498
25498
  */
25499
25499
  function wrapToolsWithArgValidation(tools, profile) {
25500
- if (!profile.filters?.validateToolArgs) return tools;
25501
- return tools.map((tool) => wrapToolWithArgValidation(tool));
25500
+ if (!profile.filters?.validateToolArgs) {
25501
+ log$3.debug(`[validate] skipped — validateToolArgs=${profile.filters?.validateToolArgs ?? "undefined"} profile=${profile.label}`);
25502
+ return tools;
25503
+ }
25504
+ const wrapped = tools.map((tool) => wrapToolWithArgValidation(tool));
25505
+ const wrappedNames = wrapped.filter((t, i) => t !== tools[i]).map((t) => t.name);
25506
+ log$3.debug(`[validate] applied to ${wrappedNames.length} tools: ${wrappedNames.join(",") || "(none matched)"}`);
25507
+ return wrapped;
25502
25508
  }
25503
25509
  /**
25504
25510
  * Clean a file path by stripping control token fragments.
@@ -29585,7 +29591,9 @@ async function runEmbeddedAttempt(params) {
29585
29591
  skillsPrompt,
29586
29592
  tools
29587
29593
  });
29588
- const modelProfile = resolveModelProfile(params.modelId ?? "", params.config?.models?.profiles);
29594
+ const profileModelKey = params.modelId ?? "";
29595
+ const modelProfile = resolveModelProfile(profileModelKey, params.config?.models?.profiles);
29596
+ log$7.debug(`[profile] resolved: modelId=${profileModelKey} → profile=${modelProfile.label} validateToolArgs=${modelProfile.filters?.validateToolArgs ?? false}`);
29589
29597
  const systemPromptText = createSystemPromptOverride(appendPrompt + (modelProfile.promptAdditions.length > 0 ? "\n\n" + modelProfile.promptAdditions.join("\n") : ""))();
29590
29598
  const sessionLock = await acquireSessionWriteLock({
29591
29599
  sessionFile: params.sessionFile,
@@ -29645,11 +29653,10 @@ async function runEmbeddedAttempt(params) {
29645
29653
  await resourceLoader.reload();
29646
29654
  }
29647
29655
  const hookRunner = getGlobalHookRunner();
29648
- const { builtInTools: rawBuiltInTools, customTools } = splitSdkTools({
29649
- tools,
29656
+ const { builtInTools, customTools } = splitSdkTools({
29657
+ tools: wrapToolsWithArgValidation(tools, modelProfile),
29650
29658
  sandboxEnabled: !!sandbox?.enabled
29651
29659
  });
29652
- const builtInTools = wrapToolsWithArgValidation(rawBuiltInTools, modelProfile);
29653
29660
  let clientToolCallDetected = null;
29654
29661
  const clientToolLoopDetection = resolveToolLoopDetectionConfig({
29655
29662
  cfg: params.config,
@@ -31393,7 +31400,7 @@ async function runAgentTurn(params) {
31393
31400
  function createDefaultDeps() {
31394
31401
  return {
31395
31402
  sendMessageWhatsApp: async (...args) => {
31396
- const { sendMessageWhatsApp } = await import("./web-DoRGusTq.js");
31403
+ const { sendMessageWhatsApp } = await import("./web-DqjNQqGK.js");
31397
31404
  return await sendMessageWhatsApp(...args);
31398
31405
  },
31399
31406
  sendMessageTelegram: async (...args) => {
@@ -49824,7 +49831,7 @@ function loadWebLoginQr() {
49824
49831
  return webLoginQrPromise;
49825
49832
  }
49826
49833
  function loadWebChannel() {
49827
- webChannelPromise ??= import("./web-DoRGusTq.js");
49834
+ webChannelPromise ??= import("./web-DqjNQqGK.js");
49828
49835
  return webChannelPromise;
49829
49836
  }
49830
49837
  function loadWhatsAppActions() {
@@ -13,7 +13,7 @@ import "./client-DMBZpU6X.js";
13
13
  import "./call-BcE47FtD.js";
14
14
  import "./message-channel-C9dERklz.js";
15
15
  import "./pairing-token-Byh6drgn.js";
16
- import "./subagent-registry-DqFKNTCX.js";
16
+ import "./subagent-registry-CVQOC9Jw.js";
17
17
  import "./sessions-CJXnZVjR.js";
18
18
  import "./tokens-Csntmwwn.js";
19
19
  import "./plugins-CwSlLxM8.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-D6ENR3Xg.js";
104
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-DZdPnpP_.js";
104
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-C1ghjhOE.js";
105
105
  import { t as assertSupportedRuntime } from "./runtime-guard-D7waq_Ho.js";
106
- import { t as emitCliBanner } from "./banner-ToxTMzfL.js";
106
+ import { t as emitCliBanner } from "./banner-om7BRUIc.js";
107
107
  import "./doctor-config-flow-CA3eiKhd.js";
108
108
  import { n as ensureConfigReady } from "./config-guard-CPHvOzsC.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-tYyUNVp5.js").then((n) => n.i);
121
+ const { healthCommand } = await import("./health-DUKLANXu.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-8176C-aV.js").then((n) => n.t);
141
+ const { statusCommand } = await import("./status-CfLq5R5j.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-Dm0V9Z2G.js").then((n) => n.t);
175
+ const { agentsListCommand } = await import("./agents-DPdRUY_O.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-DHXt5cQZ.js");
246
+ const { runConfigGet } = await import("./config-cli-BaH8OVQ-.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-DHXt5cQZ.js");
259
+ const { runConfigUnset } = await import("./config-cli-BaH8OVQ-.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-CuhnCX2U.js").then((n) => n.t);
273
+ const { modelsListCommand } = await import("./models-Bt8lm_nD.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-CuhnCX2U.js").then((n) => n.t);
304
+ const { modelsStatusCommand } = await import("./models-Bt8lm_nD.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-DZx9PtyT.js");
382
+ const { buildProgram } = await import("./program-CLUzfgIi.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-D1OePePk.js").then((n) => n.t);
414
+ const { registerCoreCliByName } = await import("./command-registry-DeOD2MdC.js").then((n) => n.t);
415
415
  await registerCoreCliByName(program, ctx, primary, parseArgv);
416
416
  }
417
- const { registerSubCliByName } = await import("./register.subclis-Bn_Mr_Wa.js").then((n) => n.a);
417
+ const { registerSubCliByName } = await import("./register.subclis-ffG-1Diq.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-DQw_LEew.js");
426
+ const { registerPluginCliCommands } = await import("./cli-DNGrFH7L.js");
427
427
  const { loadConfig } = await import("./config-DHBLS1Hl.js").then((n) => n.t);
428
428
  registerPluginCliCommands(program, loadConfig());
429
429
  }
@@ -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-BGSd_cMI.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-DcyKvFor.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";
@@ -39,14 +39,14 @@ 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
41
  import { o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-CrITRV6w.js";
42
- import { n as getStatusSummary } from "./status-DGKT6HnE.js";
43
- import { s as setHeartbeatsEnabled } from "./health-DTRWmRB8.js";
42
+ import { n as getStatusSummary } from "./status-BY4CnB2O.js";
43
+ import { s as setHeartbeatsEnabled } from "./health-BPOuBmYt.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-IdD-dKZm.js";
46
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-DP0CLvIA.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-CHIVwHRD.js";
46
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-Cr6DcdaD.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-C8OkrKjW.js";
49
+ import { t as runGatewayUpdate } from "./update-runner-CPOm0f_6.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";
@@ -6853,7 +6853,7 @@ const nodeHandlers = {
6853
6853
  const p = params;
6854
6854
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
6855
6855
  await respondUnavailableOnThrow(respond, async () => {
6856
- const { handleNodeEvent } = await import("./server-node-events-CzcTGD9T.js");
6856
+ const { handleNodeEvent } = await import("./server-node-events-DqVmWjof.js");
6857
6857
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
6858
6858
  await handleNodeEvent({
6859
6859
  deps: context.deps,
@@ -12,7 +12,7 @@ import { f as GATEWAY_CLIENT_CAPS, g as hasGatewayClientCap, i as isGatewayMessa
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-DqFKNTCX.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-CVQOC9Jw.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";
@@ -37,14 +37,14 @@ 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
39
  import { o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-Byo5jCLN.js";
40
- import { r as getStatusSummary } from "./status-8176C-aV.js";
41
- import { c as setHeartbeatsEnabled } from "./health-tYyUNVp5.js";
40
+ import { r as getStatusSummary } from "./status-CfLq5R5j.js";
41
+ import { c as setHeartbeatsEnabled } from "./health-DUKLANXu.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-DbpeXPGR.js";
44
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-WdkJjM2-.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-CVRC-O3Q.js";
44
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-DIumfxnN.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-DMP1rCS1.js";
47
+ import { t as runGatewayUpdate } from "./update-runner-DdPdhkw5.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";
@@ -6851,7 +6851,7 @@ const nodeHandlers = {
6851
6851
  const p = params;
6852
6852
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
6853
6853
  await respondUnavailableOnThrow(respond, async () => {
6854
- const { handleNodeEvent } = await import("./server-node-events-6jcJSpXA.js");
6854
+ const { handleNodeEvent } = await import("./server-node-events-BwGehjys.js");
6855
6855
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
6856
6856
  await handleNodeEvent({
6857
6857
  deps: context.deps,
@@ -14,7 +14,7 @@ import "./client-DMBZpU6X.js";
14
14
  import "./call-BcE47FtD.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-DqFKNTCX.js";
17
+ import { Cn as enqueueSystemEvent, T as createOutboundSendDeps, dn as requestHeartbeatNow, dt as resolveOutboundTarget, x as agentCommand } from "./subagent-registry-CVQOC9Jw.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";
@@ -98,7 +98,7 @@ import "./onboard-helpers-_pit1NZW.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-DbpeXPGR.js";
101
+ import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-CVRC-O3Q.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-BGSd_cMI.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-DcyKvFor.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";
@@ -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-IdD-dKZm.js";
105
+ import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-CHIVwHRD.js";
106
106
  import { randomUUID } from "node:crypto";
107
107
 
108
108
  //#region src/gateway/server-node-events.ts
@@ -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-BGSd_cMI.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-DcyKvFor.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";
@@ -28,7 +28,7 @@ import { t as formatRuntimeStatusWithDetails } from "./runtime-status-CR9445g5.j
28
28
  import { t as readLastGatewayErrorLine } from "./diagnostics-BAMlsVVX.js";
29
29
  import { t as renderTable } from "./table-BTgkRafz.js";
30
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-DTRWmRB8.js";
31
+ import { a as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-BPOuBmYt.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,4 +1,4 @@
1
- import { dt as createPluginLoaderLogger, ft as loadSymiPlugins } from "./reply-BGSd_cMI.js";
1
+ import { dt as createPluginLoaderLogger, ft as loadSymiPlugins } from "./reply-DcyKvFor.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";
@@ -9,7 +9,7 @@ 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
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-DqFKNTCX.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-CVQOC9Jw.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";
@@ -29,7 +29,7 @@ import { t as formatRuntimeStatusWithDetails } from "./runtime-status-hFVEC3wO.j
29
29
  import { t as readLastGatewayErrorLine } from "./diagnostics-CS1ov_hH.js";
30
30
  import { t as renderTable } from "./table-D01d2GuY.js";
31
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-tYyUNVp5.js";
32
+ import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-DUKLANXu.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,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-DqFKNTCX.js";
4
+ import { m as loadSymiPlugins, p as createPluginLoaderLogger } from "./subagent-registry-CVQOC9Jw.js";
5
5
 
6
6
  //#region src/plugins/status.ts
7
7
  const log = createSubsystemLogger("plugins");
@@ -35632,8 +35632,14 @@ const FILE_PATH_KEYS = [
35632
35632
  * Call this AFTER tools are created and the model profile is resolved.
35633
35633
  */
35634
35634
  function wrapToolsWithArgValidation(tools, profile) {
35635
- if (!profile.filters?.validateToolArgs) return tools;
35636
- return tools.map((tool) => wrapToolWithArgValidation(tool));
35635
+ if (!profile.filters?.validateToolArgs) {
35636
+ log$1.debug(`[validate] skipped — validateToolArgs=${profile.filters?.validateToolArgs ?? "undefined"} profile=${profile.label}`);
35637
+ return tools;
35638
+ }
35639
+ const wrapped = tools.map((tool) => wrapToolWithArgValidation(tool));
35640
+ const wrappedNames = wrapped.filter((t, i) => t !== tools[i]).map((t) => t.name);
35641
+ log$1.debug(`[validate] applied to ${wrappedNames.length} tools: ${wrappedNames.join(",") || "(none matched)"}`);
35642
+ return wrapped;
35637
35643
  }
35638
35644
  /**
35639
35645
  * Clean a file path by stripping control token fragments.
@@ -39590,7 +39596,9 @@ async function runEmbeddedAttempt(params) {
39590
39596
  skillsPrompt,
39591
39597
  tools
39592
39598
  });
39593
- const modelProfile = resolveModelProfile(params.modelId ?? "", params.config?.models?.profiles);
39599
+ const profileModelKey = params.modelId ?? "";
39600
+ const modelProfile = resolveModelProfile(profileModelKey, params.config?.models?.profiles);
39601
+ log$5.debug(`[profile] resolved: modelId=${profileModelKey} → profile=${modelProfile.label} validateToolArgs=${modelProfile.filters?.validateToolArgs ?? false}`);
39594
39602
  const systemPromptText = createSystemPromptOverride(appendPrompt + (modelProfile.promptAdditions.length > 0 ? "\n\n" + modelProfile.promptAdditions.join("\n") : ""))();
39595
39603
  const sessionLock = await acquireSessionWriteLock({
39596
39604
  sessionFile: params.sessionFile,
@@ -39650,11 +39658,10 @@ async function runEmbeddedAttempt(params) {
39650
39658
  await resourceLoader.reload();
39651
39659
  }
39652
39660
  const hookRunner = getGlobalHookRunner();
39653
- const { builtInTools: rawBuiltInTools, customTools } = splitSdkTools({
39654
- tools,
39661
+ const { builtInTools, customTools } = splitSdkTools({
39662
+ tools: wrapToolsWithArgValidation(tools, modelProfile),
39655
39663
  sandboxEnabled: !!sandbox?.enabled
39656
39664
  });
39657
- const builtInTools = wrapToolsWithArgValidation(rawBuiltInTools, modelProfile);
39658
39665
  let clientToolCallDetected = null;
39659
39666
  const clientToolLoopDetection = resolveToolLoopDetectionConfig({
39660
39667
  cfg: params.config,
@@ -53018,7 +53025,7 @@ function isVoiceChannelType(type) {
53018
53025
  function createDefaultDeps() {
53019
53026
  return {
53020
53027
  sendMessageWhatsApp: async (...args) => {
53021
- const { sendMessageWhatsApp } = await import("./web-CQ2F1f3a.js");
53028
+ const { sendMessageWhatsApp } = await import("./web-ZnFT5LP9.js");
53022
53029
  return await sendMessageWhatsApp(...args);
53023
53030
  },
53024
53031
  sendMessageTelegram: async (...args) => {
@@ -68332,7 +68339,7 @@ function loadWebLoginQr() {
68332
68339
  return webLoginQrPromise;
68333
68340
  }
68334
68341
  function loadWebChannel() {
68335
- webChannelPromise ??= import("./web-CQ2F1f3a.js");
68342
+ webChannelPromise ??= import("./web-ZnFT5LP9.js");
68336
68343
  return webChannelPromise;
68337
68344
  }
68338
68345
  function loadWhatsAppActions() {
@@ -53674,7 +53674,7 @@ function isVoiceChannelType(type) {
53674
53674
  function createDefaultDeps() {
53675
53675
  return {
53676
53676
  sendMessageWhatsApp: async (...args) => {
53677
- const { sendMessageWhatsApp } = await import("./web-BsS1ia0M.js");
53677
+ const { sendMessageWhatsApp } = await import("./web-DhofKbBh.js");
53678
53678
  return await sendMessageWhatsApp(...args);
53679
53679
  },
53680
53680
  sendMessageTelegram: async (...args) => {
@@ -68954,7 +68954,7 @@ function loadWebLoginQr() {
68954
68954
  return webLoginQrPromise;
68955
68955
  }
68956
68956
  function loadWebChannel() {
68957
- webChannelPromise ??= import("./web-BsS1ia0M.js");
68957
+ webChannelPromise ??= import("./web-DhofKbBh.js");
68958
68958
  return webChannelPromise;
68959
68959
  }
68960
68960
  function loadWhatsAppActions() {
@@ -75550,8 +75550,14 @@ const FILE_PATH_KEYS = [
75550
75550
  * Call this AFTER tools are created and the model profile is resolved.
75551
75551
  */
75552
75552
  function wrapToolsWithArgValidation(tools, profile) {
75553
- if (!profile.filters?.validateToolArgs) return tools;
75554
- return tools.map((tool) => wrapToolWithArgValidation(tool));
75553
+ if (!profile.filters?.validateToolArgs) {
75554
+ log.debug(`[validate] skipped — validateToolArgs=${profile.filters?.validateToolArgs ?? "undefined"} profile=${profile.label}`);
75555
+ return tools;
75556
+ }
75557
+ const wrapped = tools.map((tool) => wrapToolWithArgValidation(tool));
75558
+ const wrappedNames = wrapped.filter((t, i) => t !== tools[i]).map((t) => t.name);
75559
+ log.debug(`[validate] applied to ${wrappedNames.length} tools: ${wrappedNames.join(",") || "(none matched)"}`);
75560
+ return wrapped;
75555
75561
  }
75556
75562
  /**
75557
75563
  * Clean a file path by stripping control token fragments.
@@ -76790,7 +76796,9 @@ async function runEmbeddedAttempt(params) {
76790
76796
  skillsPrompt,
76791
76797
  tools
76792
76798
  });
76793
- const modelProfile = resolveModelProfile(params.modelId ?? "", params.config?.models?.profiles);
76799
+ const profileModelKey = params.modelId ?? "";
76800
+ const modelProfile = resolveModelProfile(profileModelKey, params.config?.models?.profiles);
76801
+ log$9.debug(`[profile] resolved: modelId=${profileModelKey} → profile=${modelProfile.label} validateToolArgs=${modelProfile.filters?.validateToolArgs ?? false}`);
76794
76802
  const systemPromptText = createSystemPromptOverride(appendPrompt + (modelProfile.promptAdditions.length > 0 ? "\n\n" + modelProfile.promptAdditions.join("\n") : ""))();
76795
76803
  const sessionLock = await acquireSessionWriteLock({
76796
76804
  sessionFile: params.sessionFile,
@@ -76850,11 +76858,10 @@ async function runEmbeddedAttempt(params) {
76850
76858
  await resourceLoader.reload();
76851
76859
  }
76852
76860
  const hookRunner = getGlobalHookRunner();
76853
- const { builtInTools: rawBuiltInTools, customTools } = splitSdkTools({
76854
- tools,
76861
+ const { builtInTools, customTools } = splitSdkTools({
76862
+ tools: wrapToolsWithArgValidation(tools, modelProfile),
76855
76863
  sandboxEnabled: !!sandbox?.enabled
76856
76864
  });
76857
- const builtInTools = wrapToolsWithArgValidation(rawBuiltInTools, modelProfile);
76858
76865
  let clientToolCallDetected = null;
76859
76866
  const clientToolLoopDetection = resolveToolLoopDetectionConfig({
76860
76867
  cfg: params.config,