@symerian/symi 2.4.0 → 2.4.2

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 (111) hide show
  1. package/dist/{agents-CI3xxYc_.js → agents-BrpbYYTb.js} +4 -4
  2. package/dist/{agents.config-DCE3RGr9.js → agents.config-Bf8u_0ts.js} +1 -1
  3. package/dist/{agents.config-DTUAM1AG.js → agents.config-j4SWyB6K.js} +1 -1
  4. package/dist/{audio-preflight-C40mKAp7.js → audio-preflight-CPBOQV4I.js} +4 -4
  5. package/dist/{auth-choice-IiIysHGO.js → auth-choice-BYB9fJiu.js} +1 -1
  6. package/dist/{auth-choice-DuQwRfJc.js → auth-choice-DlrjQI-v.js} +1 -1
  7. package/dist/{banner-xhDZu_ZJ.js → banner-DRJJmkv1.js} +1 -1
  8. package/dist/build-info.json +3 -3
  9. package/dist/bundled/boot-md/handler.js +1 -1
  10. package/dist/bundled/session-memory/handler.js +1 -1
  11. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  12. package/dist/{channel-options-D3gGVwBd.js → channel-options-BQz0F4El.js} +1 -1
  13. package/dist/{channel-options-Dvxd7eJY.js → channel-options-CxSIp3x-.js} +1 -1
  14. package/dist/{channel-web-a5tX1YI3.js → channel-web-BY4lhNxW.js} +1 -1
  15. package/dist/{channels-cli-C9wBYmDe.js → channels-cli--rkhLJvR.js} +4 -4
  16. package/dist/{channels-cli-BLUkl5Li.js → channels-cli-B5Nj_nHr.js} +4 -4
  17. package/dist/{chrome-CDJYxX5a.js → chrome-D2SKJnR7.js} +7 -7
  18. package/dist/{cli-Cw45F0yJ.js → cli-CATf6JAq.js} +1 -1
  19. package/dist/{cli-CaEE46xi.js → cli-Ds6poYQ6.js} +1 -1
  20. package/dist/{command-registry-ea9SD1eA.js → command-registry-CsDAPQfS.js} +9 -9
  21. package/dist/{completion-cli-CMJmUQbI.js → completion-cli-B_f5PMBc.js} +1 -1
  22. package/dist/{completion-cli-DVkiEAEA.js → completion-cli-CSdjFWHy.js} +2 -2
  23. package/dist/{config-cli-B2d28_hb.js → config-cli-B_KCvdli.js} +1 -1
  24. package/dist/{config-cli-VIg0PSyq.js → config-cli-C_GarUko.js} +1 -1
  25. package/dist/{configure-C_TVBt76.js → configure-CM-z8YCS.js} +3 -3
  26. package/dist/{configure-D-3FiJbK.js → configure-vfmJApU8.js} +3 -3
  27. package/dist/{deliver-BH0l3UKW.js → deliver-C-37cZUe.js} +1 -1
  28. package/dist/{doctor-completion-CJHJYIwQ.js → doctor-completion-BWJvfjTC.js} +1 -1
  29. package/dist/{doctor-completion-DeRX6gkI.js → doctor-completion-llX6EnGy.js} +1 -1
  30. package/dist/entry.js +1 -1
  31. package/dist/extensionAPI.js +6 -6
  32. package/dist/{gateway-cli-BDDHBfYP.js → gateway-cli-70k2-I4K.js} +20 -16
  33. package/dist/{gateway-cli-DiDJ6Z2d.js → gateway-cli-BApdH1bD.js} +20 -16
  34. package/dist/{glass-ui-ws-Bj1IuJXt.js → glass-ui-ws-Be_AOhp7.js} +7 -7
  35. package/dist/{glass-ui-ws-rGIAkViC.js → glass-ui-ws-Z_wtGa_A.js} +7 -7
  36. package/dist/{health-CypF_2ZD.js → health-BBGgp_dC.js} +1 -1
  37. package/dist/{health-Bst5HnLF.js → health-BmaWws9G.js} +1 -1
  38. package/dist/{hooks-cli-CfsqqxPX.js → hooks-cli-C5eV9sxP.js} +2 -2
  39. package/dist/{hooks-cli-CDMcqTy4.js → hooks-cli-W_aoP9nb.js} +2 -2
  40. package/dist/{image-CHzdaNJ4.js → image-DcpMiprB.js} +1 -1
  41. package/dist/index.js +6 -6
  42. package/dist/llm-slug-generator.js +1 -1
  43. package/dist/{models-ZEOGlFx7.js → models-COaQWNz5.js} +2 -2
  44. package/dist/{models-cli-BM1QyeXr.js → models-cli-DH17yK8M.js} +3 -3
  45. package/dist/{models-cli-BwOQhZ_c.js → models-cli-DeG1qheS.js} +2 -2
  46. package/dist/{onboard-CU-pntZD.js → onboard-1wGdR0wt.js} +2 -2
  47. package/dist/{onboard-channels-g5cvwJpx.js → onboard-channels-BCUkNB26.js} +1 -1
  48. package/dist/{onboard-channels-BOBxxhHX.js → onboard-channels-D93AAHMd.js} +1 -1
  49. package/dist/{onboard-DQ34giB5.js → onboard-nQYq_dsr.js} +2 -2
  50. package/dist/{onboarding-DWs6tHZ9.js → onboarding-Peg7PNOz.js} +3 -3
  51. package/dist/{onboarding-CXWUjdM5.js → onboarding-gQRA57l_.js} +3 -3
  52. package/dist/{onboarding.finalize-CAYf88mf.js → onboarding.finalize-C4DSBMrV.js} +6 -6
  53. package/dist/{onboarding.finalize-vupGASMK.js → onboarding.finalize-D26o-hBA.js} +5 -5
  54. package/dist/{pi-embedded-DwbQz0MC.js → pi-embedded-CfxhTbYF.js} +108 -16
  55. package/dist/{pi-embedded-helpers-lgx_U5KS.js → pi-embedded-helpers-B8kqLWns.js} +4 -4
  56. package/dist/{pi-embedded-CJsSOG2j.js → pi-embedded-k69DSy1Y.js} +94 -2
  57. package/dist/{plugin-registry-CZeHSx_c.js → plugin-registry-C0iHnZ7j.js} +1 -1
  58. package/dist/{plugin-registry-BDpdOTei.js → plugin-registry-D_BAH1V5.js} +1 -1
  59. package/dist/plugin-sdk/agents/pi-embedded-runner/extra-params.d.ts +6 -0
  60. package/dist/plugin-sdk/agents/stream-monitor.d.ts +62 -0
  61. package/dist/plugin-sdk/{channel-web-uUypcT9Q.js → channel-web-ilY3YUmF.js} +1 -1
  62. package/dist/plugin-sdk/index.js +2 -2
  63. package/dist/plugin-sdk/{reply-DTKTuCrn.js → reply-CSgeVqcV.js} +94 -2
  64. package/dist/plugin-sdk/{web-Dh6Youzv.js → web-BVg5EjiY.js} +2 -2
  65. package/dist/{plugins-cli-CCQ3skeQ.js → plugins-cli-BhOXY_Ay.js} +2 -2
  66. package/dist/{plugins-cli-D_RzeRoE.js → plugins-cli-LqQNHF1I.js} +2 -2
  67. package/dist/{program-Cl9i8ubQ.js → program-Bx47hl_J.js} +7 -7
  68. package/dist/{program-context-BbmYGW-V.js → program-context-JFmxYLfK.js} +17 -17
  69. package/dist/{prompt-select-styled-BfuyvChh.js → prompt-select-styled--d3H0JCo.js} +4 -4
  70. package/dist/{prompt-select-styled-BN0T6GxF.js → prompt-select-styled-BeJhp9PS.js} +4 -4
  71. package/dist/{provider-auth-helpers-CkmLFHXL.js → provider-auth-helpers-BzczCfh8.js} +1 -1
  72. package/dist/{provider-auth-helpers-CuT5EHza.js → provider-auth-helpers-Ds_HwlgY.js} +1 -1
  73. package/dist/{push-apns-DeJt9kAO.js → push-apns-CT8-VcK5.js} +1 -1
  74. package/dist/{push-apns-CFkFVwEz.js → push-apns-DvcqkHld.js} +1 -1
  75. package/dist/{pw-ai-De-KR9_s.js → pw-ai-1htA-NnS.js} +1 -1
  76. package/dist/{register.agent-BQm4YmZp.js → register.agent-DMvHFw16.js} +6 -6
  77. package/dist/{register.agent-BygseJ7t.js → register.agent-yoXoJ_5O.js} +5 -5
  78. package/dist/{register.configure-Cj95vB2U.js → register.configure-B8UDTEcS.js} +6 -6
  79. package/dist/{register.configure-C2fhjZze.js → register.configure-BqrNBkwZ.js} +6 -6
  80. package/dist/{register.maintenance-CClfXq5e.js → register.maintenance-CYhp47Hs.js} +8 -8
  81. package/dist/{register.maintenance-K1x3E7OS.js → register.maintenance-CvaHYkoX.js} +7 -7
  82. package/dist/{register.message-BSr-kUvJ.js → register.message-BnLBwUw9.js} +2 -2
  83. package/dist/{register.message-CSRzBl-c.js → register.message-CgtrjEFw.js} +2 -2
  84. package/dist/{register.onboard-Bd6wPydW.js → register.onboard-CoySBEdQ.js} +4 -4
  85. package/dist/{register.onboard-TsU21RR7.js → register.onboard-mCscJN7t.js} +4 -4
  86. package/dist/{register.setup-DK-zsne2.js → register.setup-BmE-pwMT.js} +4 -4
  87. package/dist/{register.setup-C9gu0W5l.js → register.setup-CzrsIQMG.js} +4 -4
  88. package/dist/{register.status-health-sessions-DN5Ui3V0.js → register.status-health-sessions-CP7JWQHw.js} +3 -3
  89. package/dist/{register.status-health-sessions-rZsuoqtr.js → register.status-health-sessions-DhTfQ530.js} +3 -3
  90. package/dist/{register.subclis-DnzHFtLz.js → register.subclis-wsgQ6wk8.js} +9 -9
  91. package/dist/{reply-Ca3slrA3.js → reply-DkwaBRX-.js} +94 -2
  92. package/dist/{run-main-DlHh5iOO.js → run-main-mKcFqx7h.js} +14 -14
  93. package/dist/{runner-DUBExAb5.js → runner-BcQ0sF9T.js} +1 -1
  94. package/dist/{server-methods-BYOkyf-q.js → server-methods-CbeCo-6O.js} +7 -7
  95. package/dist/{server-methods-b_Qod4tt.js → server-methods-EQ0JkHOg.js} +7 -7
  96. package/dist/{server-node-events-60nWpTh1.js → server-node-events-C1FDqJb9.js} +2 -2
  97. package/dist/{server-node-events-oU4Amei7.js → server-node-events-CBHpc_25.js} +2 -2
  98. package/dist/{status-BXW5l4sd.js → status-B1r3Wp0-.js} +2 -2
  99. package/dist/{status-D3-lP2_9.js → status-Cksz7z4T.js} +1 -1
  100. package/dist/{status-BxbbINLV.js → status-CnogoaI_.js} +2 -2
  101. package/dist/{status-kdz9P3tw.js → status-jVJSC_Ga.js} +1 -1
  102. package/dist/{subagent-registry-CbTbJKLs.js → subagent-registry-Jwg44JMf.js} +94 -2
  103. package/dist/{update-cli-Cy0gdWRf.js → update-cli-BEBDpJF4.js} +8 -8
  104. package/dist/{update-cli-B5TI650v.js → update-cli-C22V-tFW.js} +7 -7
  105. package/dist/{update-runner-Bacq0oLK.js → update-runner-BQg__DB5.js} +1 -1
  106. package/dist/{update-runner-B0NdgPvD.js → update-runner-le1Hcqx4.js} +1 -1
  107. package/dist/{web-DmED3zDP.js → web-BSs2eYJa.js} +2 -2
  108. package/dist/{web-D-oCzJTU.js → web-DajtZMaX.js} +1 -1
  109. package/dist/{web-DWNtg4iV.js → web-DolrvXij.js} +6 -6
  110. package/dist/{web-QVwKg99Q.js → web-kIIXN8hK.js} +1 -1
  111. package/package.json +1 -1
@@ -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 textToSpeech, Bn as onAgentEvent, C as loadSessionEntry, Cr as isSystemEventContextChanged, E as resolveSessionModelRef, En as stopSubagentsForRequester, Fr as resolveAgentTimeoutMs, Ft as resolveAgentOutboundTarget, Gn as isTtsProviderConfigured, H as formatDoctorNonInteractiveHint, Hn as resolveUserTimezone, Ht as resolveSendPolicy, Jn as resolveTtsConfig, Kn as resolveTtsApiKey, Mn as listDescendantRunsForRequester, Mt as agentCommand, Nn as listSubagentRunsForRequester, O as ensureOutboundSessionEntry, Pt as resolveAgentDeliveryPlan, Qn as setTtsProvider, R as scheduleGatewaySigusr1Restart, Rt as resolveOutboundTarget, S as loadCombinedSessionStoreForGateway, Sn as formatZonedTimestamp, Sr as enqueueSystemEvent, St as loadProviderUsageSummary, T as resolveGatewaySessionStoreTarget, Tn as isAbortTrigger, Un as getTtsProvider, Vn as registerAgentRunContext, Vt as normalizeSendPolicy, Wn as isTtsEnabled, Wt as createOutboundSendDeps, X as normalizeCronJobPatch, Xn as resolveTtsProviderOrder, Y as normalizeCronJobCreate, Yn as resolveTtsPrefsPath, Zn as setTtsEnabled, an as unbindThreadBindingsBySessionKey, b as listAgentsForGateway, br as applyVerboseOverride, bt as normalizeGroupActivation, c as clearSessionQueues, er as OPENAI_TTS_MODELS, f as waitForEmbeddedPiRunEnd, hn as createReplyDispatcher, k as resolveOutboundSessionRoute, lt as applyBrowserProxyPaths, mn as dispatchInboundMessage, n as BARE_SESSION_RESET_PROMPT, q as writeRestartSentinel, qn as resolveTtsAutoMode, tr as OPENAI_TTS_VOICES, u as abortEmbeddedPiRun, ut as persistBrowserProxyFiles, v as canonicalizeSpawnedByForAgent, vt as loadSymiPlugins, w as pruneLegacyStoreKeys, x as listSessionsFromStore, xr as parseVerboseOverride, yr as applyModelOverrideToSessionEntry } from "./reply-Ca3slrA3.js";
4
+ import { $n as textToSpeech, Bn as onAgentEvent, C as loadSessionEntry, Cr as isSystemEventContextChanged, E as resolveSessionModelRef, En as stopSubagentsForRequester, Fr as resolveAgentTimeoutMs, Ft as resolveAgentOutboundTarget, Gn as isTtsProviderConfigured, H as formatDoctorNonInteractiveHint, Hn as resolveUserTimezone, Ht as resolveSendPolicy, Jn as resolveTtsConfig, Kn as resolveTtsApiKey, Mn as listDescendantRunsForRequester, Mt as agentCommand, Nn as listSubagentRunsForRequester, O as ensureOutboundSessionEntry, Pt as resolveAgentDeliveryPlan, Qn as setTtsProvider, R as scheduleGatewaySigusr1Restart, Rt as resolveOutboundTarget, S as loadCombinedSessionStoreForGateway, Sn as formatZonedTimestamp, Sr as enqueueSystemEvent, St as loadProviderUsageSummary, T as resolveGatewaySessionStoreTarget, Tn as isAbortTrigger, Un as getTtsProvider, Vn as registerAgentRunContext, Vt as normalizeSendPolicy, Wn as isTtsEnabled, Wt as createOutboundSendDeps, X as normalizeCronJobPatch, Xn as resolveTtsProviderOrder, Y as normalizeCronJobCreate, Yn as resolveTtsPrefsPath, Zn as setTtsEnabled, an as unbindThreadBindingsBySessionKey, b as listAgentsForGateway, br as applyVerboseOverride, bt as normalizeGroupActivation, c as clearSessionQueues, er as OPENAI_TTS_MODELS, f as waitForEmbeddedPiRunEnd, hn as createReplyDispatcher, k as resolveOutboundSessionRoute, lt as applyBrowserProxyPaths, mn as dispatchInboundMessage, n as BARE_SESSION_RESET_PROMPT, q as writeRestartSentinel, qn as resolveTtsAutoMode, tr as OPENAI_TTS_VOICES, u as abortEmbeddedPiRun, ut as persistBrowserProxyFiles, v as canonicalizeSpawnedByForAgent, vt as loadSymiPlugins, w as pruneLegacyStoreKeys, x as listSessionsFromStore, xr as parseVerboseOverride, yr as applyModelOverrideToSessionEntry } from "./reply-DkwaBRX-.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-BXW5l4sd.js";
43
- import { s as setHeartbeatsEnabled } from "./health-CypF_2ZD.js";
42
+ import { n as getStatusSummary } from "./status-B1r3Wp0-.js";
43
+ import { s as setHeartbeatsEnabled } from "./health-BBGgp_dC.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-DeJt9kAO.js";
46
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-DCE3RGr9.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-CT8-VcK5.js";
46
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-Bf8u_0ts.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-Bacq0oLK.js";
49
+ import { t as runGatewayUpdate } from "./update-runner-BQg__DB5.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-60nWpTh1.js");
6856
+ const { handleNodeEvent } = await import("./server-node-events-C1FDqJb9.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 resolveTtsApiKey, A as resolveAgentOutboundTarget, Cn as parseVerboseOverride, D as agentCommand, Dt as normalizeCronJobCreate, Gn as isAbortTrigger, Gt as applyBrowserProxyPaths, Hn as formatZonedTimestamp, K as dispatchInboundMessage, Kn as stopSubagentsForRequester, Kt as persistBrowserProxyFiles, Ln as resolveAgentTimeoutMs, N as createOutboundSendDeps, Ot as normalizeCronJobPatch, Qn as isTtsProviderConfigured, Qt as scheduleGatewaySigusr1Restart, Sn as applyVerboseOverride, Tn as isSystemEventContextChanged, Tr as registerAgentRunContext, Tt as writeRestartSentinel, Xn as getTtsProvider, Yn as resolveUserTimezone, Z as BARE_SESSION_RESET_PROMPT, Zn as isTtsEnabled, a as listSubagentRunsForRequester, ar as setTtsProvider, b as loadSymiPlugins, bt as formatDoctorNonInteractiveHint, c as clearSessionQueues, cr as OPENAI_TTS_VOICES, ct as ensureOutboundSessionEntry, er as resolveTtsAutoMode, f as waitForEmbeddedPiRunEnd, ft as resolveOutboundTarget, gn as resolveSendPolicy, hn as normalizeSendPolicy, i as listDescendantRunsForRequester, in as loadProviderUsageSummary, ir as setTtsEnabled, k as resolveAgentDeliveryPlan, lt as resolveOutboundSessionRoute, nn as normalizeGroupActivation, nr as resolveTtsPrefsPath, or as textToSpeech, q as createReplyDispatcher, rr as resolveTtsProviderOrder, sr as OPENAI_TTS_MODELS, tn as unbindThreadBindingsBySessionKey, tr as resolveTtsConfig, u as abortEmbeddedPiRun, wn as enqueueSystemEvent, wr as onAgentEvent, xn as applyModelOverrideToSessionEntry } from "./subagent-registry-CbTbJKLs.js";
15
+ import { $n as resolveTtsApiKey, A as resolveAgentOutboundTarget, Cn as parseVerboseOverride, D as agentCommand, Dt as normalizeCronJobCreate, Gn as isAbortTrigger, Gt as applyBrowserProxyPaths, Hn as formatZonedTimestamp, K as dispatchInboundMessage, Kn as stopSubagentsForRequester, Kt as persistBrowserProxyFiles, Ln as resolveAgentTimeoutMs, N as createOutboundSendDeps, Ot as normalizeCronJobPatch, Qn as isTtsProviderConfigured, Qt as scheduleGatewaySigusr1Restart, Sn as applyVerboseOverride, Tn as isSystemEventContextChanged, Tr as registerAgentRunContext, Tt as writeRestartSentinel, Xn as getTtsProvider, Yn as resolveUserTimezone, Z as BARE_SESSION_RESET_PROMPT, Zn as isTtsEnabled, a as listSubagentRunsForRequester, ar as setTtsProvider, b as loadSymiPlugins, bt as formatDoctorNonInteractiveHint, c as clearSessionQueues, cr as OPENAI_TTS_VOICES, ct as ensureOutboundSessionEntry, er as resolveTtsAutoMode, f as waitForEmbeddedPiRunEnd, ft as resolveOutboundTarget, gn as resolveSendPolicy, hn as normalizeSendPolicy, i as listDescendantRunsForRequester, in as loadProviderUsageSummary, ir as setTtsEnabled, k as resolveAgentDeliveryPlan, lt as resolveOutboundSessionRoute, nn as normalizeGroupActivation, nr as resolveTtsPrefsPath, or as textToSpeech, q as createReplyDispatcher, rr as resolveTtsProviderOrder, sr as OPENAI_TTS_MODELS, tn as unbindThreadBindingsBySessionKey, tr as resolveTtsConfig, u as abortEmbeddedPiRun, wn as enqueueSystemEvent, wr as onAgentEvent, xn as applyModelOverrideToSessionEntry } from "./subagent-registry-Jwg44JMf.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-BxbbINLV.js";
41
- import { c as setHeartbeatsEnabled } from "./health-Bst5HnLF.js";
40
+ import { r as getStatusSummary } from "./status-CnogoaI_.js";
41
+ import { c as setHeartbeatsEnabled } from "./health-BmaWws9G.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-CFkFVwEz.js";
44
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-DTUAM1AG.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-DvcqkHld.js";
44
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-j4SWyB6K.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-B0NdgPvD.js";
47
+ import { t as runGatewayUpdate } from "./update-runner-le1Hcqx4.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-oU4Amei7.js");
6854
+ const { handleNodeEvent } = await import("./server-node-events-CBHpc_25.js");
6855
6855
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
6856
6856
  await handleNodeEvent({
6857
6857
  deps: context.deps,
@@ -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 { Bt as createOutboundSendDeps, C as loadSessionEntry, Mt as agentCommand, Rt as resolveOutboundTarget, Sr as enqueueSystemEvent, T as resolveGatewaySessionStoreTarget, pt as requestHeartbeatNow, w as pruneLegacyStoreKeys } from "./reply-Ca3slrA3.js";
4
+ import { Bt as createOutboundSendDeps, C as loadSessionEntry, Mt as agentCommand, Rt as resolveOutboundTarget, Sr as enqueueSystemEvent, T as resolveGatewaySessionStoreTarget, pt as requestHeartbeatNow, w as pruneLegacyStoreKeys } from "./reply-DkwaBRX-.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-DeJt9kAO.js";
105
+ import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-CT8-VcK5.js";
106
106
  import { randomUUID } from "node:crypto";
107
107
 
108
108
  //#region src/gateway/server-node-events.ts
@@ -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 { D as agentCommand, fn as requestHeartbeatNow, ft as resolveOutboundTarget, j as createOutboundSendDeps, wn as enqueueSystemEvent } from "./subagent-registry-CbTbJKLs.js";
17
+ import { D as agentCommand, fn as requestHeartbeatNow, ft as resolveOutboundTarget, j as createOutboundSendDeps, wn as enqueueSystemEvent } from "./subagent-registry-Jwg44JMf.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-CFkFVwEz.js";
101
+ import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-DvcqkHld.js";
102
102
  import { randomUUID } from "node:crypto";
103
103
 
104
104
  //#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 { Ct as formatUsageReportLines, E as resolveSessionModelRef, G as summarizeRestartSentinel, St as loadProviderUsageSummary, Tr as peekSystemEvents, W as readRestartSentinel, Yt as sha256HexPrefix, a as buildChannelSummary, b as listAgentsForGateway, mr as lookupContextTokens, o as buildChannelAccountSnapshot, s as formatChannelAllowFrom, y as classifySessionKey } from "./reply-Ca3slrA3.js";
3
+ import { Ct as formatUsageReportLines, E as resolveSessionModelRef, G as summarizeRestartSentinel, St as loadProviderUsageSummary, Tr as peekSystemEvents, W as readRestartSentinel, Yt as sha256HexPrefix, a as buildChannelSummary, b as listAgentsForGateway, mr as lookupContextTokens, o as buildChannelAccountSnapshot, s as formatChannelAllowFrom, y as classifySessionKey } from "./reply-DkwaBRX-.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-CypF_2ZD.js";
31
+ import { a as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-BBGgp_dC.js";
32
32
  import { g as resolveUpdateChannelDisplay, i as formatGitInstallLabel, m as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-CtckACbb.js";
33
33
  import { t as resolveNodeService } from "./node-service-Cxz4e-Qd.js";
34
34
  import { n as redactSecrets, t as formatGatewayAuthUsed } from "./format-yQZNwAF2.js";
@@ -1,7 +1,7 @@
1
1
  import { o as createSubsystemLogger } from "./entry.js";
2
2
  import { D as resolveDefaultAgentWorkspaceDir, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-D-jRCY0d.js";
3
3
  import { i as loadConfig } from "./config-DHBLS1Hl.js";
4
- import { b as loadSymiPlugins, y as createPluginLoaderLogger } from "./subagent-registry-CbTbJKLs.js";
4
+ import { b as loadSymiPlugins, y as createPluginLoaderLogger } from "./subagent-registry-Jwg44JMf.js";
5
5
 
6
6
  //#region src/plugins/status.ts
7
7
  const log = createSubsystemLogger("plugins");
@@ -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 { Ct as summarizeRestartSentinel, Dn as peekSystemEvents, St as readRestartSentinel, an as formatUsageReportLines, cn as buildChannelSummary, in as loadProviderUsageSummary, ln as buildChannelAccountSnapshot, rt as sha256HexPrefix, un as formatChannelAllowFrom } from "./subagent-registry-CbTbJKLs.js";
12
+ import { Ct as summarizeRestartSentinel, Dn as peekSystemEvents, St as readRestartSentinel, an as formatUsageReportLines, cn as buildChannelSummary, in as loadProviderUsageSummary, ln as buildChannelAccountSnapshot, rt as sha256HexPrefix, un as formatChannelAllowFrom } from "./subagent-registry-Jwg44JMf.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-Bst5HnLF.js";
32
+ import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-BmaWws9G.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,4 +1,4 @@
1
- import { _t as createPluginLoaderLogger, vt as loadSymiPlugins } from "./reply-Ca3slrA3.js";
1
+ import { _t as createPluginLoaderLogger, vt as loadSymiPlugins } from "./reply-DkwaBRX-.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";
@@ -44208,7 +44208,7 @@ function isVoiceChannelType(type) {
44208
44208
  function createDefaultDeps() {
44209
44209
  return {
44210
44210
  sendMessageWhatsApp: async (...args) => {
44211
- const { sendMessageWhatsApp } = await import("./web-D-oCzJTU.js");
44211
+ const { sendMessageWhatsApp } = await import("./web-DajtZMaX.js");
44212
44212
  return await sendMessageWhatsApp(...args);
44213
44213
  },
44214
44214
  sendMessageTelegram: async (...args) => {
@@ -59524,7 +59524,7 @@ function loadWebLoginQr() {
59524
59524
  return webLoginQrPromise;
59525
59525
  }
59526
59526
  function loadWebChannel() {
59527
- webChannelPromise ??= import("./web-D-oCzJTU.js");
59527
+ webChannelPromise ??= import("./web-DajtZMaX.js");
59528
59528
  return webChannelPromise;
59529
59529
  }
59530
59530
  function loadWhatsAppActions() {
@@ -67519,6 +67519,89 @@ Use the message tool with buttons:
67519
67519
  [{"label": "✅ Proceed", "data": "/plan-proceed"}, {"label": "✏️ Modify", "data": "/plan-modify"}, {"label": "❌ Cancel", "data": "/plan-cancel"}]
67520
67520
  </plan_mode>`;
67521
67521
 
67522
+ //#endregion
67523
+ //#region src/agents/stream-monitor.ts
67524
+ /**
67525
+ * Create a stream monitor configured for the given model profile.
67526
+ *
67527
+ * - Claude (hasStructuredThinking: true): repetition detection only
67528
+ * - Gemma/vLLM (hasStructuredThinking: false): tool JSON + repetition detection
67529
+ */
67530
+ function createStreamMonitor(profile, overrides) {
67531
+ const detectToolJson = overrides?.detectToolJson ?? !profile.filters.hasStructuredThinking;
67532
+ const detectRepetition = overrides?.detectRepetition ?? true;
67533
+ const minBlockSize = overrides?.repetitionMinBlockSize ?? 150;
67534
+ let accumulated = "";
67535
+ let stopSignaled = false;
67536
+ let stopReason;
67537
+ return {
67538
+ onChunk(delta) {
67539
+ if (stopSignaled) return;
67540
+ accumulated += delta;
67541
+ if (detectToolJson && hasCompleteToolJson(accumulated)) {
67542
+ stopSignaled = true;
67543
+ stopReason = "complete-tool-json";
67544
+ return;
67545
+ }
67546
+ if (detectRepetition && hasRepetition(accumulated, minBlockSize)) {
67547
+ stopSignaled = true;
67548
+ stopReason = "repetition-detected";
67549
+ return;
67550
+ }
67551
+ },
67552
+ shouldStop: () => stopSignaled,
67553
+ getAccumulated: () => accumulated,
67554
+ getStopReason: () => stopReason,
67555
+ reset() {
67556
+ accumulated = "";
67557
+ stopSignaled = false;
67558
+ stopReason = void 0;
67559
+ }
67560
+ };
67561
+ }
67562
+ /**
67563
+ * Detect if the accumulated text contains a syntactically complete JSON
67564
+ * object with tool_name and tool_args. Used for models that output tool
67565
+ * calls as plain text JSON (not native structured tool calls).
67566
+ */
67567
+ function hasCompleteToolJson(text) {
67568
+ const hasToolKey = text.includes("tool_name") || text.includes("\"tool\"");
67569
+ const hasArgsKey = text.includes("tool_args") || text.includes("\"args\"");
67570
+ if (!hasToolKey || !hasArgsKey) return false;
67571
+ const lastBrace = text.lastIndexOf("}");
67572
+ if (lastBrace < 0) return false;
67573
+ let depth = 0;
67574
+ let start = -1;
67575
+ for (let i = lastBrace; i >= 0; i--) {
67576
+ if (text[i] === "}") depth++;
67577
+ if (text[i] === "{") depth--;
67578
+ if (depth === 0) {
67579
+ start = i;
67580
+ break;
67581
+ }
67582
+ }
67583
+ if (start < 0) return false;
67584
+ const candidate = text.slice(start, lastBrace + 1);
67585
+ try {
67586
+ const parsed = JSON.parse(candidate);
67587
+ return typeof parsed === "object" && parsed !== null && (typeof parsed.tool_name === "string" || typeof parsed.tool === "string") && (typeof parsed.tool_args === "object" || typeof parsed.args === "object");
67588
+ } catch {
67589
+ return false;
67590
+ }
67591
+ }
67592
+ /**
67593
+ * Detect if the accumulated text contains a repeated block, indicating
67594
+ * a looping cascade. Returns true if a block of `minBlockSize` chars
67595
+ * from the first half appears again in the second half.
67596
+ */
67597
+ function hasRepetition(text, minBlockSize) {
67598
+ if (text.length < minBlockSize * 2.5) return false;
67599
+ const sampleStart = Math.floor(text.length * .25);
67600
+ const sample = text.slice(sampleStart, sampleStart + minBlockSize);
67601
+ const searchStart = sampleStart + minBlockSize;
67602
+ return text.indexOf(sample, searchStart) >= 0;
67603
+ }
67604
+
67522
67605
  //#endregion
67523
67606
  //#region src/agents/symipulse-timeout.ts
67524
67607
  /**
@@ -68736,6 +68819,7 @@ async function runEmbeddedAttempt(params) {
68736
68819
  return fn(...args);
68737
68820
  });
68738
68821
  };
68822
+ const streamMonitor = createStreamMonitor(modelProfile);
68739
68823
  const subscription = subscribeEmbeddedPiSession({
68740
68824
  session: activeSession,
68741
68825
  runId: params.runId,
@@ -68757,6 +68841,14 @@ async function runEmbeddedAttempt(params) {
68757
68841
  onAgentEvent: (evt) => {
68758
68842
  armSymipulseTimer();
68759
68843
  params.onAgentEvent?.(evt);
68844
+ if (evt.stream === "assistant" && typeof evt.data?.text === "string" && !aborted) {
68845
+ streamMonitor.onChunk(evt.data.text);
68846
+ if (streamMonitor.shouldStop()) {
68847
+ const reason = streamMonitor.getStopReason();
68848
+ log$2.warn(`stream monitor triggered abort: runId=${params.runId} reason=${reason}`);
68849
+ abortRun(false, /* @__PURE__ */ new Error(`stream-monitor:${reason}`));
68850
+ }
68851
+ }
68760
68852
  },
68761
68853
  enforceFinalTag: params.enforceFinalTag,
68762
68854
  config: params.config,
@@ -16,7 +16,7 @@ import "./client-DMBZpU6X.js";
16
16
  import "./call-BcE47FtD.js";
17
17
  import "./message-channel-C9dERklz.js";
18
18
  import "./pairing-token-Byh6drgn.js";
19
- import { wt as trimLogTail } from "./subagent-registry-CbTbJKLs.js";
19
+ import { wt as trimLogTail } from "./subagent-registry-Jwg44JMf.js";
20
20
  import "./sessions-CJXnZVjR.js";
21
21
  import "./tokens-Csntmwwn.js";
22
22
  import "./plugins-CwSlLxM8.js";
@@ -111,10 +111,10 @@ import "./npm-registry-spec-DkaZNHAW.js";
111
111
  import "./skill-scanner-BGWOBqLY.js";
112
112
  import "./installs-CgQpVncj.js";
113
113
  import "./channels-status-issues-c7qZbYG5.js";
114
- import "./register.subclis-DnzHFtLz.js";
115
- import "./command-registry-ea9SD1eA.js";
114
+ import "./register.subclis-wsgQ6wk8.js";
115
+ import "./command-registry-CsDAPQfS.js";
116
116
  import "./program-context-CqzR_m-7.js";
117
- import { r as installCompletion } from "./completion-cli-DVkiEAEA.js";
117
+ import { r as installCompletion } from "./completion-cli-CSdjFWHy.js";
118
118
  import "./daemon-runtime-CfRwa6qh.js";
119
119
  import { r as parseSemver } from "./runtime-guard-D7waq_Ho.js";
120
120
  import "./systemd-DlMdyFDY.js";
@@ -124,19 +124,19 @@ import "./systemd-hints-sQipWGd1.js";
124
124
  import { i as runDaemonInstall, r as runDaemonRestart } from "./daemon-cli-wWnBIQtk.js";
125
125
  import "./diagnostics-CS1ov_hH.js";
126
126
  import { t as renderTable } from "./table-D01d2GuY.js";
127
- import "./health-Bst5HnLF.js";
127
+ import "./health-BmaWws9G.js";
128
128
  import "./control-ui-assets-BseSWee1.js";
129
129
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, d as formatUpdateChannelLabel, g as resolveUpdateChannelDisplay, h as resolveEffectiveUpdateChannel, m as normalizeUpdateChannel, n as compareSemverStrings, r as fetchNpmTagVersion, s as DEFAULT_GIT_CHANNEL, t as checkUpdateStatus, u as channelToNpmTag } from "./update-check-ZdimP1aU.js";
130
130
  import "./dm-policy-shared-DJ-61hCT.js";
131
131
  import { i as resolveUpdateAvailability, n as formatUpdateOneLiner, t as formatUpdateAvailableHint } from "./status.update-DbmZz0Aq.js";
132
- import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-B0NdgPvD.js";
132
+ import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-le1Hcqx4.js";
133
133
  import "./logging-BGewRZy0.js";
134
134
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-DEMKx4eC.js";
135
135
  import "./doctor-config-flow-CA3eiKhd.js";
136
136
  import "./systemd-linger-DA_LW52P.js";
137
137
  import "./health-format-CzgUHmmX.js";
138
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-BN0T6GxF.js";
139
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-DeRX6gkI.js";
138
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-BeJhp9PS.js";
139
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-llX6EnGy.js";
140
140
  import { spawn, spawnSync } from "node:child_process";
141
141
  import os from "node:os";
142
142
  import path from "node:path";
@@ -1,7 +1,7 @@
1
1
  import { g as resolveStateDir } from "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, h as pathExists } from "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import { K as trimLogTail } from "./reply-Ca3slrA3.js";
4
+ import { K as trimLogTail } from "./reply-DkwaBRX-.js";
5
5
  import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
6
6
  import "./registry-Cja8eT7G.js";
7
7
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
@@ -106,7 +106,7 @@ import "./stagger-BUClb97_.js";
106
106
  import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName } from "./constants-C8_BLnaW.js";
107
107
  import "./channel-selection-DuWs0Aak.js";
108
108
  import { r as parseSemver } from "./runtime-guard-B37eizu-.js";
109
- import "./program-context-BbmYGW-V.js";
109
+ import "./program-context-JFmxYLfK.js";
110
110
  import "./catalog-RiADx7MA.js";
111
111
  import "./skills-status-CURJKnyY.js";
112
112
  import { n as inheritOptionFromParent } from "./command-options-BtDai3oC.js";
@@ -117,7 +117,7 @@ import "./npm-registry-spec-C2JDdSZS.js";
117
117
  import "./skill-scanner-CLs8u6vQ.js";
118
118
  import "./installs-C1Cebk97.js";
119
119
  import "./channels-status-issues-B_kBkl_u.js";
120
- import { r as installCompletion } from "./completion-cli-CMJmUQbI.js";
120
+ import { r as installCompletion } from "./completion-cli-B_f5PMBc.js";
121
121
  import "./daemon-runtime-2mwX-jqj.js";
122
122
  import "./systemd-riq8uNJQ.js";
123
123
  import { t as resolveGatewayService } from "./service-Cl74hx8J.js";
@@ -126,19 +126,19 @@ import "./systemd-hints-BR6gChwm.js";
126
126
  import { i as runDaemonInstall, r as runDaemonRestart } from "./daemon-cli-DscwlsKW.js";
127
127
  import "./diagnostics-BAMlsVVX.js";
128
128
  import { t as renderTable } from "./table-BTgkRafz.js";
129
- import "./health-CypF_2ZD.js";
129
+ import "./health-BBGgp_dC.js";
130
130
  import "./control-ui-assets-Z947tKLt.js";
131
131
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, d as formatUpdateChannelLabel, g as resolveUpdateChannelDisplay, h as resolveEffectiveUpdateChannel, m as normalizeUpdateChannel, n as compareSemverStrings, r as fetchNpmTagVersion, s as DEFAULT_GIT_CHANNEL, t as checkUpdateStatus, u as channelToNpmTag } from "./update-check-CtckACbb.js";
132
132
  import "./dm-policy-shared-Bh3TbexU.js";
133
133
  import { i as resolveUpdateAvailability, n as formatUpdateOneLiner, t as formatUpdateAvailableHint } from "./status.update-DtwCUTf-.js";
134
- import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-Bacq0oLK.js";
134
+ import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-BQg__DB5.js";
135
135
  import "./logging-BzzwiKjv.js";
136
136
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-rw7wJwHd.js";
137
137
  import "./doctor-config-flow-QnaBd8kL.js";
138
138
  import "./systemd-linger-aQ75ZlXY.js";
139
139
  import "./health-format-DSwnXZPU.js";
140
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-BfuyvChh.js";
141
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-CJHJYIwQ.js";
140
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled--d3H0JCo.js";
141
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BWJvfjTC.js";
142
142
  import os from "node:os";
143
143
  import path from "node:path";
144
144
  import fs from "node:fs/promises";
@@ -1,5 +1,5 @@
1
1
  import { h as pathExists } from "./utils-B-0b9bGM.js";
2
- import { K as trimLogTail } from "./reply-Ca3slrA3.js";
2
+ import { K as trimLogTail } from "./reply-DkwaBRX-.js";
3
3
  import { t as runCommandWithTimeout } from "./exec-CWkblSrI.js";
4
4
  import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-Z947tKLt.js";
5
5
  import { c as DEFAULT_PACKAGE_CHANNEL, f as isBetaTag, l as DEV_BRANCH, n as compareSemverStrings, o as detectPackageManager$1, p as isStableTag, u as channelToNpmTag } from "./update-check-CtckACbb.js";
@@ -1,6 +1,6 @@
1
1
  import { nt as pathExists } from "./entry.js";
2
2
  import { t as runCommandWithTimeout } from "./exec-CBKBIMpA.js";
3
- import { wt as trimLogTail } from "./subagent-registry-CbTbJKLs.js";
3
+ import { wt as trimLogTail } from "./subagent-registry-Jwg44JMf.js";
4
4
  import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-BseSWee1.js";
5
5
  import { c as DEFAULT_PACKAGE_CHANNEL, f as isBetaTag, l as DEV_BRANCH, n as compareSemverStrings, o as detectPackageManager$1, p as isStableTag, u as channelToNpmTag } from "./update-check-ZdimP1aU.js";
6
6
  import os from "node:os";
@@ -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 "./reply-Ca3slrA3.js";
4
+ import "./reply-DkwaBRX-.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
@@ -101,7 +101,7 @@ import "./pi-tools.policy-CIDBbw6x.js";
101
101
  import "./control-service-Bz7rxLWq.js";
102
102
  import "./stagger-BUClb97_.js";
103
103
  import "./channel-selection-DuWs0Aak.js";
104
- import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-a5tX1YI3.js";
104
+ import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-BY4lhNxW.js";
105
105
  import { n as sendMessageWhatsApp } from "./outbound-DB5Zus0-.js";
106
106
  import { i as waitForWaConnection, t as createWaSocket } from "./session-DIBTkyvE.js";
107
107
  import { t as loginWeb } from "./login-dIlDkG4X.js";
@@ -15,7 +15,7 @@ import "./client-DMBZpU6X.js";
15
15
  import "./call-BcE47FtD.js";
16
16
  import "./message-channel-C9dERklz.js";
17
17
  import "./pairing-token-Byh6drgn.js";
18
- import { B as DEFAULT_GROUP_HISTORY_LIMIT, Bn as formatInboundEnvelope, E as sleepWithAbort, H as recordPendingHistoryEntryIfEnabled, Jn as normalizeMentionText, R as buildPairingReply, Rn as createInboundDebouncer, T as computeBackoff, U as shouldAckReactionForWhatsApp, Un as hasControlCommand, V as buildHistoryContextFromEntries, Vn as resolveEnvelopeFormatOptions, W as dispatchReplyWithBufferedBlockDispatcher, Wn as shouldComputeCommandAuthorized, X as getReplyFromConfig, Y as createDedupeCache, nn as normalizeGroupActivation, qn as buildMentionRegexes, rn as parseActivationCommand, wn as enqueueSystemEvent, z as resolveMentionGating, zn as resolveInboundDebounceMs } from "./subagent-registry-CbTbJKLs.js";
18
+ import { B as DEFAULT_GROUP_HISTORY_LIMIT, Bn as formatInboundEnvelope, E as sleepWithAbort, H as recordPendingHistoryEntryIfEnabled, Jn as normalizeMentionText, R as buildPairingReply, Rn as createInboundDebouncer, T as computeBackoff, U as shouldAckReactionForWhatsApp, Un as hasControlCommand, V as buildHistoryContextFromEntries, Vn as resolveEnvelopeFormatOptions, W as dispatchReplyWithBufferedBlockDispatcher, Wn as shouldComputeCommandAuthorized, X as getReplyFromConfig, Y as createDedupeCache, nn as normalizeGroupActivation, qn as buildMentionRegexes, rn as parseActivationCommand, wn as enqueueSystemEvent, z as resolveMentionGating, zn as resolveInboundDebounceMs } from "./subagent-registry-Jwg44JMf.js";
19
19
  import { B as resolveGroupSessionKey, c as recordSessionMetaFromInbound, o as loadSessionStore, s as readSessionUpdatedAt, u as updateLastRoute } from "./sessions-CJXnZVjR.js";
20
20
  import "./tokens-Csntmwwn.js";
21
21
  import "./plugins-CwSlLxM8.js";
@@ -8,13 +8,13 @@ import { c as resolveIdentityNamePrefix, l as resolveMessagePrefix, t as createR
8
8
  import "./github-copilot-token-BbsJ0Qbo.js";
9
9
  import { r as formatCliCommand } from "./env-CQ_DQOwT.js";
10
10
  import "./tokens-Cn6drXx2.js";
11
- import { C as shouldComputeCommandAuthorized, S as hasControlCommand, T as normalizeMentionText, _ as enqueueSystemEvent, a as resolveMentionGating, b as formatInboundEnvelope, c as recordPendingHistoryEntryIfEnabled, f as createDedupeCache, g as formatDurationPrecise, h as parseActivationCommand, i as buildPairingReply, l as shouldAckReactionForWhatsApp, m as normalizeGroupActivation, n as computeBackoff, o as DEFAULT_GROUP_HISTORY_LIMIT, p as getReplyFromConfig, r as sleepWithAbort, s as buildHistoryContextFromEntries, u as dispatchReplyWithBufferedBlockDispatcher, v as createInboundDebouncer, w as buildMentionRegexes, x as resolveEnvelopeFormatOptions, y as resolveInboundDebounceMs } from "./pi-embedded-DwbQz0MC.js";
11
+ import { C as shouldComputeCommandAuthorized, S as hasControlCommand, T as normalizeMentionText, _ as enqueueSystemEvent, a as resolveMentionGating, b as formatInboundEnvelope, c as recordPendingHistoryEntryIfEnabled, f as createDedupeCache, g as formatDurationPrecise, h as parseActivationCommand, i as buildPairingReply, l as shouldAckReactionForWhatsApp, m as normalizeGroupActivation, n as computeBackoff, o as DEFAULT_GROUP_HISTORY_LIMIT, p as getReplyFromConfig, r as sleepWithAbort, s as buildHistoryContextFromEntries, u as dispatchReplyWithBufferedBlockDispatcher, v as createInboundDebouncer, w as buildMentionRegexes, x as resolveEnvelopeFormatOptions, y as resolveInboundDebounceMs } from "./pi-embedded-CfxhTbYF.js";
12
12
  import "./plugins-71oIavrF.js";
13
13
  import { i as logWebSelfId, l as readWebSelfId, n as WA_WEB_AUTH_DIR, p as webAuthExists, r as getWebAuthAgeMs, s as pickWebChannel, t as resolveWhatsAppAccount } from "./accounts-DDEyGwby.js";
14
14
  import "./bindings-DYVakimr.js";
15
15
  import "./send-D-hWrHoH.js";
16
16
  import "./send-C1IYd3g7.js";
17
- import "./deliver-BH0l3UKW.js";
17
+ import "./deliver-C-37cZUe.js";
18
18
  import "./diagnostic-D0xmLpej.js";
19
19
  import "./diagnostic-session-state-C1vRJs5w.js";
20
20
  import "./accounts-8zZqL37v.js";
@@ -22,10 +22,10 @@ import { G as formatLocationText, J as readChannelAllowFromStore, K as toLocatio
22
22
  import "./image-ops-ByaQt43P.js";
23
23
  import "./pi-model-discovery-j5tVLINv.js";
24
24
  import "./message-channel-BQINJQIT.js";
25
- import { Ct as resolveGroupSessionKey, H as loadSessionStore, K as updateLastRoute, U as readSessionUpdatedAt, W as recordSessionMetaFromInbound } from "./pi-embedded-helpers-lgx_U5KS.js";
25
+ import { Ct as resolveGroupSessionKey, H as loadSessionStore, K as updateLastRoute, U as readSessionUpdatedAt, W as recordSessionMetaFromInbound } from "./pi-embedded-helpers-B8kqLWns.js";
26
26
  import { n as loadConfig } from "./config-BmV60pPT.js";
27
27
  import "./manifest-registry-D-mTF1cj.js";
28
- import "./chrome-CDJYxX5a.js";
28
+ import "./chrome-D2SKJnR7.js";
29
29
  import "./skills-BNpGMnp-.js";
30
30
  import "./redact-1NGYV_8p.js";
31
31
  import "./errors-CPfngF0S.js";
@@ -35,7 +35,7 @@ import { h as resolveChannelGroupRequireMention, m as resolveChannelGroupPolicy
35
35
  import "./accounts-DImOt9jX.js";
36
36
  import { s as resolveStorePath } from "./paths-DkMamAQ-.js";
37
37
  import "./tool-images-ChC2CXaN.js";
38
- import "./image-CHzdaNJ4.js";
38
+ import "./image-DcpMiprB.js";
39
39
  import "./manager-jpn5vRTY.js";
40
40
  import "./gemini-auth-CSlZZ1Pw.js";
41
41
  import "./sqlite-BNh23mUR.js";
@@ -49,7 +49,7 @@ import "./render-B1VqYyvo.js";
49
49
  import "./commands-registry-C_aYUwpl.js";
50
50
  import "./skill-commands-DklY7Cj7.js";
51
51
  import { t as finalizeInboundContext } from "./inbound-context-QOi5vzUt.js";
52
- import { p as registerUnhandledRejectionHandler } from "./runner-DUBExAb5.js";
52
+ import { p as registerUnhandledRejectionHandler } from "./runner-BcQ0sF9T.js";
53
53
  import "./fetch-DtLn7YU3.js";
54
54
  import { n as recordChannelActivity } from "./channel-activity-D9q-fIPB.js";
55
55
  import { t as convertMarkdownTables } from "./tables-COnZ169v.js";
@@ -5,7 +5,7 @@ import "./agent-scope-BxoUQqgM.js";
5
5
  import { r as defaultRuntime, t as createSubsystemLogger } from "./subsystem-Bs9YvKLa.js";
6
6
  import "./workspace-wAaHI8-5.js";
7
7
  import "./tokens-H1H1LiSQ.js";
8
- import { C as resolveEnvelopeFormatOptions, D as normalizeMentionText, E as buildMentionRegexes, S as formatInboundEnvelope, T as shouldComputeCommandAuthorized, _ as parseActivationCommand, b as createInboundDebouncer, c as DEFAULT_GROUP_HISTORY_LIMIT, d as shouldAckReactionForWhatsApp, f as dispatchReplyWithBufferedBlockDispatcher, g as normalizeGroupActivation, h as getReplyFromConfig, l as buildHistoryContextFromEntries, m as createDedupeCache, n as computeBackoff, o as buildPairingReply, r as sleepWithAbort, s as resolveMentionGating, u as recordPendingHistoryEntryIfEnabled, v as formatDurationPrecise, w as hasControlCommand, x as resolveInboundDebounceMs, y as enqueueSystemEvent } from "./pi-embedded-CJsSOG2j.js";
8
+ import { C as resolveEnvelopeFormatOptions, D as normalizeMentionText, E as buildMentionRegexes, S as formatInboundEnvelope, T as shouldComputeCommandAuthorized, _ as parseActivationCommand, b as createInboundDebouncer, c as DEFAULT_GROUP_HISTORY_LIMIT, d as shouldAckReactionForWhatsApp, f as dispatchReplyWithBufferedBlockDispatcher, g as normalizeGroupActivation, h as getReplyFromConfig, l as buildHistoryContextFromEntries, m as createDedupeCache, n as computeBackoff, o as buildPairingReply, r as sleepWithAbort, s as resolveMentionGating, u as recordPendingHistoryEntryIfEnabled, v as formatDurationPrecise, w as hasControlCommand, x as resolveInboundDebounceMs, y as enqueueSystemEvent } from "./pi-embedded-k69DSy1Y.js";
9
9
  import "./plugins-DQYI3Fr-.js";
10
10
  import { i as logWebSelfId, l as readWebSelfId, n as WA_WEB_AUTH_DIR, p as webAuthExists, r as getWebAuthAgeMs, s as pickWebChannel, t as resolveWhatsAppAccount } from "./accounts-tNElYrCH.js";
11
11
  import "./boolean-B8-BqKGQ.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symerian/symi",
3
- "version": "2.4.0",
3
+ "version": "2.4.2",
4
4
  "description": "Multi-channel AI gateway with extensible messaging integrations",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/jaysteelmind/symi#readme",