@symerian/symi 2.8.8 → 2.8.10

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 (164) hide show
  1. package/dist/{agents-BBb3pG_r.js → agents-BbVxJTp2.js} +4 -4
  2. package/dist/{agents.config-DDAd-KmU.js → agents.config-DckCExUX.js} +1 -1
  3. package/dist/{agents.config-C1tHX61N.js → agents.config-LE2JxgiS.js} +1 -1
  4. package/dist/{audio-preflight-Cb-T0r6e.js → audio-preflight-rjCWpcfE.js} +4 -4
  5. package/dist/{auth-choice-FY48Z00U.js → auth-choice-DnKOB8Gs.js} +1 -1
  6. package/dist/{auth-choice-DPNcCrz1.js → auth-choice-j1FEYnxv.js} +1 -1
  7. package/dist/{banner-yIuMuNbm.js → banner-BFr8n0of.js} +1 -1
  8. package/dist/build-info.json +3 -3
  9. package/dist/bundled/boot-md/handler.js +7 -7
  10. package/dist/bundled/session-memory/handler.js +7 -7
  11. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  12. package/dist/{channel-options-C_9TyM7R.js → channel-options-BtmFCQOB.js} +1 -1
  13. package/dist/{channel-options-C5SLfyqk.js → channel-options-DrBxsMlw.js} +1 -1
  14. package/dist/{channel-web-ByaqLmaZ.js → channel-web-YgdajAXX.js} +1 -1
  15. package/dist/{channels-cli-CSnENSPd.js → channels-cli-ChS_nQcP.js} +6 -6
  16. package/dist/{channels-cli-Ca41AO96.js → channels-cli-fYbw-4gz.js} +6 -6
  17. package/dist/{chrome-ROtrXlNs.js → chrome-C08Z0XAa.js} +7 -7
  18. package/dist/{cli-BO8YhTtM.js → cli-CA4qcSFY.js} +3 -3
  19. package/dist/{cli-ZZzj67hW.js → cli-NfoZJEPh.js} +3 -3
  20. package/dist/{command-registry-DnCUp2Vv.js → command-registry-B6spVZMd.js} +10 -10
  21. package/dist/{completion-cli-BpdGxP6F.js → completion-cli-DKoZNVbW.js} +1 -1
  22. package/dist/{completion-cli-DmWio6gO.js → completion-cli-VQrV_JN9.js} +2 -2
  23. package/dist/{config-cli-CihWekyc.js → config-cli-CgC3xSoL.js} +1 -1
  24. package/dist/{config-cli-BNZy4xXJ.js → config-cli-Dm2QMcwn.js} +1 -1
  25. package/dist/{configure-BB_JMk-P.js → configure-COCCg2tV.js} +3 -3
  26. package/dist/{configure-pkgSrqbn.js → configure-DiDXmX3E.js} +3 -3
  27. package/dist/{deliver-B0OUq6RP.js → deliver-qUx-eLKt.js} +1 -1
  28. package/dist/{doctor-completion-BCzSR_c-.js → doctor-completion-BR5k35Qj.js} +1 -1
  29. package/dist/{doctor-completion-CyzIEK0J.js → doctor-completion-CPFKFTc-.js} +1 -1
  30. package/dist/entry.js +1 -1
  31. package/dist/extensionAPI.js +2 -2
  32. package/dist/{gateway-cli-BhX-isYp.js → gateway-cli-BF1-DFEf.js} +12 -11
  33. package/dist/{gateway-cli-c5VWm80z.js → gateway-cli-BJH2K8fn.js} +12 -11
  34. package/dist/{glass-ui-ws-BRKLiUgG.js → glass-ui-ws-B7j7iTDg.js} +9 -9
  35. package/dist/{glass-ui-ws-BvKAGzsP.js → glass-ui-ws-DyoHQW3O.js} +9 -9
  36. package/dist/{health-C-B-3prj.js → health-BAjSATWA.js} +1 -1
  37. package/dist/{health-DlRTgD3e.js → health-D-0xOxV8.js} +1 -1
  38. package/dist/{hooks-cli-CApedXJB.js → hooks-cli-BaoCFIbQ.js} +4 -4
  39. package/dist/{hooks-cli-oulDpg7g.js → hooks-cli-ZZaM2xfC.js} +4 -4
  40. package/dist/{image-BuVL0jHI.js → image-C6rCON9L.js} +1 -1
  41. package/dist/index.js +8 -8
  42. package/dist/llm-slug-generator.js +7 -7
  43. package/dist/{manager-BDW4v0kn.js → manager-B5JWZL0E.js} +1 -1
  44. package/dist/{manager-D_NVh5nU.js → manager-BpvcDr-7.js} +1 -1
  45. package/dist/{manager-DfbiNFMG.js → manager-BxJ9BhQe.js} +1 -1
  46. package/dist/{manager-C6236YLp.js → manager-DUuPE1N1.js} +1 -1
  47. package/dist/{memory-cli-j-HcbP06.js → memory-cli-BQZ0rTKC.js} +3 -3
  48. package/dist/{memory-cli-CMd2wNuE.js → memory-cli-r-ulsUBa.js} +3 -3
  49. package/dist/{models-CWWcJjaU.js → models-B1__62Qo.js} +2 -2
  50. package/dist/{models-cli-CTNMdFcR.js → models-cli-BGpB4PAp.js} +4 -4
  51. package/dist/{models-cli-BdTd0wN8.js → models-cli-Ch-4PBud.js} +5 -5
  52. package/dist/{onboard-DQZlDx_8.js → onboard-D2NC88Mp.js} +2 -2
  53. package/dist/{onboard-aP7vFmGI.js → onboard-D_2-lyyt.js} +2 -2
  54. package/dist/{onboard-channels-Nos59voI.js → onboard-channels-BgA4i9TU.js} +1 -1
  55. package/dist/{onboard-channels-B2HQSE5z.js → onboard-channels-CYlZtWF6.js} +1 -1
  56. package/dist/{onboarding-C0I5Zbfm.js → onboarding-D7N2AfyJ.js} +3 -3
  57. package/dist/{onboarding-BMmZ3Tnf.js → onboarding-uVLsv2Sd.js} +3 -3
  58. package/dist/{onboarding.finalize-lDB3lIzR.js → onboarding.finalize-CTDv0xwp.js} +8 -8
  59. package/dist/{onboarding.finalize-CQTERN7X.js → onboarding.finalize-DEjTjgRt.js} +7 -7
  60. package/dist/{pi-embedded-CC0d2GbY.js → pi-embedded-HSRJqesT.js} +33 -5
  61. package/dist/{pi-embedded-helpers-D1_Sab0M.js → pi-embedded-helpers-P13adotN.js} +4 -4
  62. package/dist/{plugin-registry-y33YD86y.js → plugin-registry-Chvg6kT0.js} +1 -1
  63. package/dist/{plugin-registry-nbnWVfl0.js → plugin-registry-DEKq3ti3.js} +1 -1
  64. package/dist/plugin-sdk/agents/pi-embedded-runner/run/types.d.ts +7 -0
  65. package/dist/plugin-sdk/agents/pi-embedded-runner/types.d.ts +6 -0
  66. package/dist/plugin-sdk/agents/unified-runner.d.ts +8 -0
  67. package/dist/plugin-sdk/{channel-web-BjHrRVyw.js → channel-web-CfaamthT.js} +1 -1
  68. package/dist/plugin-sdk/index.js +3 -3
  69. package/dist/plugin-sdk/{manager-Dkk-rYV5.js → manager-B3jEviU1.js} +1 -1
  70. package/dist/plugin-sdk/{reply-BvRRQRwy.js → reply-DWwxgBtH.js} +33 -5
  71. package/dist/plugin-sdk/{synthesis-CvCvHSQJ.js → synthesis-C_u94H_P.js} +2 -2
  72. package/dist/plugin-sdk/{web-BXlaAqfp.js → web-DFvYfej5.js} +3 -3
  73. package/dist/{plugins-cli-9vI7CQW6.js → plugins-cli-Cd99p333.js} +4 -4
  74. package/dist/{plugins-cli-MgRgt7Mu.js → plugins-cli-QZlpLtva.js} +4 -4
  75. package/dist/{program-context-hHMQ9IaD.js → program-context-Dun-c3nf.js} +18 -18
  76. package/dist/{program-Ba081u3Y.js → program-viRCc6Je.js} +9 -9
  77. package/dist/{prompt-select-styled-C-7N8FY0.js → prompt-select-styled-DVLibGeR.js} +6 -6
  78. package/dist/{prompt-select-styled-MVmYxgMW.js → prompt-select-styled-W2G26g34.js} +6 -6
  79. package/dist/{provider-auth-helpers-4eBjBsnM.js → provider-auth-helpers-DCEiDG3X.js} +1 -1
  80. package/dist/{provider-auth-helpers-Dr_EyLaO.js → provider-auth-helpers-KFQclkJT.js} +1 -1
  81. package/dist/{push-apns-D4X5TtMo.js → push-apns-CB_8WzQ9.js} +1 -1
  82. package/dist/{push-apns-69s0P1E4.js → push-apns-tfhjtI57.js} +1 -1
  83. package/dist/{pw-ai-DWkC5eGA.js → pw-ai-CeWN4iD9.js} +1 -1
  84. package/dist/{register.agent-6nMG0iFQ.js → register.agent--QTUjLu9.js} +7 -7
  85. package/dist/{register.agent-Buw0POPK.js → register.agent-i2wi1-vo.js} +8 -8
  86. package/dist/{register.configure-CPHixRQq.js → register.configure-B9JysEK8.js} +8 -8
  87. package/dist/{register.configure-D0QJaqhS.js → register.configure-ByJcC9t4.js} +8 -8
  88. package/dist/{register.maintenance-DFUetG40.js → register.maintenance-BGiYxRYm.js} +10 -10
  89. package/dist/{register.maintenance-B6retPun.js → register.maintenance-DqJL_QWT.js} +9 -9
  90. package/dist/{register.message-B2iknN6N.js → register.message-DT_TqsFl.js} +4 -4
  91. package/dist/{register.message-B-dikPUk.js → register.message-G6-UeGON.js} +4 -4
  92. package/dist/{register.onboard-B4js1bcI.js → register.onboard-848EXgTB.js} +6 -6
  93. package/dist/{register.onboard-CvEm9qn-.js → register.onboard-CfySx27T.js} +6 -6
  94. package/dist/{register.setup-DY-9NReY.js → register.setup-B40A19lI.js} +6 -6
  95. package/dist/{register.setup-C5aRtPrT.js → register.setup-C-NYSAGY.js} +6 -6
  96. package/dist/{register.status-health-sessions-B_OUXi_q.js → register.status-health-sessions-B03EDfwZ.js} +5 -5
  97. package/dist/{register.status-health-sessions-DXdy2sDv.js → register.status-health-sessions-BACExyrd.js} +5 -5
  98. package/dist/{register.subclis-CXZMI0Py.js → register.subclis-kF8KnNuq.js} +9 -9
  99. package/dist/{reply-BwSt9FgY.js → reply-C5VU6T-F.js} +32 -4
  100. package/dist/{run-main-DQPmad4_.js → run-main-BqpvNq8c.js} +17 -17
  101. package/dist/{runner-ecX1WzDt.js → runner-D633VT13.js} +1 -1
  102. package/dist/{server-methods-D-X3f0JZ.js → server-methods-CkLzZq0Y.js} +7 -7
  103. package/dist/{server-methods-BGlmZerh.js → server-methods-DjB0hxeW.js} +7 -7
  104. package/dist/{server-node-events-DYspYAsS.js → server-node-events-BM-APRHy.js} +4 -4
  105. package/dist/{server-node-events-VMWi_q_4.js → server-node-events-ZgCh4sCg.js} +4 -4
  106. package/dist/{status-D4IpFPfd.js → status-BhQk3JSz.js} +1 -1
  107. package/dist/{status-Ciil-4CY.js → status-C_gwgMp4.js} +3 -3
  108. package/dist/{status-CpK9Je7o.js → status-Nf53o222.js} +1 -1
  109. package/dist/{status-BIqQY-EW.js → status-WMQ2CpbK.js} +3 -3
  110. package/dist/{subagent-registry-CA3olOuQ.js → subagent-registry-BCWbFTGF.js} +32 -4
  111. package/dist/{synthesis-tkINNn_o.js → synthesis-CJIAYDoU.js} +3 -3
  112. package/dist/{synthesis-DNOkCR-a.js → synthesis-CWsrtigA.js} +2 -2
  113. package/dist/{synthesis-DhWAXhL7.js → synthesis-DIKBPZgB.js} +3 -3
  114. package/dist/{synthesis-UdetU7yM.js → synthesis-VfWtSYrv.js} +7 -7
  115. package/dist/{unified-runner-BdNmAHcK.js → unified-runner-yPBTU4xt.js} +47 -19
  116. package/dist/{update-cli-Cz-Ho1q4.js → update-cli-BCFHfhUW.js} +10 -10
  117. package/dist/{update-cli-Crd_JOtd.js → update-cli-B_Mxicbw.js} +9 -9
  118. package/dist/{update-runner-yfcQ1dWZ.js → update-runner-BQJSshFU.js} +1 -1
  119. package/dist/{update-runner-BR5qByxw.js → update-runner-DG5x7t--.js} +1 -1
  120. package/dist/{web-BQN_t3ZP.js → web-D9_FatXM.js} +7 -7
  121. package/dist/{web-BD0BGw7V.js → web-Dpfsnk-b.js} +3 -3
  122. package/dist/{web-Cuozfpq6.js → web-TVVa5EDS.js} +4 -4
  123. package/dist/{web-DoSYXtxt.js → web-eJWNRwV5.js} +2 -2
  124. package/extensions/bluebubbles/package.json +1 -1
  125. package/extensions/copilot-proxy/package.json +1 -1
  126. package/extensions/diagnostics-otel/package.json +1 -1
  127. package/extensions/discord/package.json +1 -1
  128. package/extensions/feishu/package.json +1 -1
  129. package/extensions/google-antigravity-auth/package.json +1 -1
  130. package/extensions/google-gemini-cli-auth/package.json +1 -1
  131. package/extensions/googlechat/package.json +1 -1
  132. package/extensions/imessage/package.json +1 -1
  133. package/extensions/irc/package.json +1 -1
  134. package/extensions/learning-loop/package.json +1 -1
  135. package/extensions/line/package.json +1 -1
  136. package/extensions/llm-task/package.json +1 -1
  137. package/extensions/matrix/CHANGELOG.md +12 -0
  138. package/extensions/matrix/package.json +1 -1
  139. package/extensions/mattermost/package.json +1 -1
  140. package/extensions/memory-core/package.json +1 -1
  141. package/extensions/memory-lancedb/package.json +1 -1
  142. package/extensions/minimax-portal-auth/package.json +1 -1
  143. package/extensions/msteams/CHANGELOG.md +12 -0
  144. package/extensions/msteams/package.json +1 -1
  145. package/extensions/nextcloud-talk/package.json +1 -1
  146. package/extensions/nostr/CHANGELOG.md +12 -0
  147. package/extensions/nostr/package.json +1 -1
  148. package/extensions/open-prose/package.json +1 -1
  149. package/extensions/outlook/package.json +1 -1
  150. package/extensions/pipeline/package.json +1 -1
  151. package/extensions/signal/package.json +1 -1
  152. package/extensions/slack/package.json +1 -1
  153. package/extensions/telegram/package.json +1 -1
  154. package/extensions/tlon/package.json +1 -1
  155. package/extensions/twitch/CHANGELOG.md +12 -0
  156. package/extensions/twitch/package.json +1 -1
  157. package/extensions/voice-call/CHANGELOG.md +12 -0
  158. package/extensions/voice-call/package.json +1 -1
  159. package/extensions/whatsapp/package.json +1 -1
  160. package/extensions/zalo/CHANGELOG.md +12 -0
  161. package/extensions/zalo/package.json +1 -1
  162. package/extensions/zalouser/CHANGELOG.md +12 -0
  163. package/extensions/zalouser/package.json +1 -1
  164. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import { t as CONFIG_PATH } from "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, R as colorize, S as shortenHomePath, z as isRich$1 } from "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import { Yt as describeFailoverError, _r as formatRemainingShort, gr as buildAuthHealthSummary, gt as loadProviderUsageSummary, hr as DEFAULT_OAUTH_WARN_MS, mr as maskApiKey, vt as formatUsageWindowSummary, yt as resolveUsageProviderId, zt as runAgentTurn } from "./reply-BwSt9FgY.js";
4
+ import { Yt as describeFailoverError, _r as formatRemainingShort, gr as buildAuthHealthSummary, gt as loadProviderUsageSummary, hr as DEFAULT_OAUTH_WARN_MS, mr as maskApiKey, vt as formatUsageWindowSummary, yt as resolveUsageProviderId, zt as runAgentTurn } from "./reply-C5VU6T-F.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
@@ -61,8 +61,8 @@ import "./diagnostic-session-state-CUslJyKP.js";
61
61
  import "./send-DpMnSIi5.js";
62
62
  import { i as resolveForwardCompatModel, r as ANTIGRAVITY_OPUS_46_FORWARD_COMPAT_CANDIDATES } from "./model-ECsJuJew.js";
63
63
  import "./reply-prefix-CE2YmmsD.js";
64
- import "./memory-cli-j-HcbP06.js";
65
- import "./manager-D_NVh5nU.js";
64
+ import "./memory-cli-BQZ0rTKC.js";
65
+ import "./manager-BpvcDr-7.js";
66
66
  import "./retry-BoS4e4X_.js";
67
67
  import "./sqlite-D55gRQbH.js";
68
68
  import "./target-errors-C9e6dMU_.js";
@@ -111,7 +111,7 @@ import { n as redactSecrets } from "./format-DNqZrSx7.js";
111
111
  import { a as isLocalBaseUrl, c as normalizeAlias, d as resolveModelTarget, f as updateConfig, i as formatTokenK, l as resolveKnownAgentId, n as ensureFlagCompatibility, o as loadValidConfigOrThrow, r as formatMs, s as mergePrimaryFallbackConfig, t as applyDefaultModelPrimaryUpdate, u as resolveModelKeysFromEntries } from "./shared-C9vLT1Vj.js";
112
112
  import { d as applyAuthProfileConfig, n as validateAnthropicSetupToken } from "./auth-token-Cq0R-Q6i.js";
113
113
  import { n as logConfigUpdated } from "./logging-CZuxhCZR.js";
114
- import { a as createVpsAwareOAuthHandlers, c as githubCopilotLoginCommand, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-4eBjBsnM.js";
114
+ import { a as createVpsAwareOAuthHandlers, c as githubCopilotLoginCommand, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-DCEiDG3X.js";
115
115
  import path from "node:path";
116
116
  import fs from "node:fs/promises";
117
117
  import crypto from "node:crypto";
@@ -14,7 +14,7 @@ import "./client-qUlxXXVJ.js";
14
14
  import "./call-BrRWr7Lj.js";
15
15
  import "./message-channel-C9dERklz.js";
16
16
  import "./pairing-token-Byh6drgn.js";
17
- import "./subagent-registry-CA3olOuQ.js";
17
+ import "./subagent-registry-BCWbFTGF.js";
18
18
  import "./sessions-BPD85pWA.js";
19
19
  import "./tokens-Csntmwwn.js";
20
20
  import "./plugins-CwSlLxM8.js";
@@ -52,8 +52,8 @@ import "./tool-images-CVLISeRT.js";
52
52
  import "./thinking-8sKPnzpp.js";
53
53
  import "./models-config-J1x_DaPn.js";
54
54
  import "./reply-prefix-BUN71nd5.js";
55
- import "./memory-cli-CMd2wNuE.js";
56
- import "./manager-DfbiNFMG.js";
55
+ import "./memory-cli-r-ulsUBa.js";
56
+ import "./manager-BxJ9BhQe.js";
57
57
  import "./gemini-auth-DEakvf-D.js";
58
58
  import "./retry-C4Q_VPOo.js";
59
59
  import "./sqlite-BP8tiuca.js";
@@ -104,8 +104,8 @@ import "./table-Bka4fasy.js";
104
104
  import "./shared-PtB96PLH.js";
105
105
  import "./auth-token-ce8PBZwF.js";
106
106
  import "./logging-PVQxLC6I.js";
107
- import { c as githubCopilotLoginCommand } from "./provider-auth-helpers-Dr_EyLaO.js";
108
- import { C as modelsAliasesListCommand, S as modelsAliasesAddCommand, _ as modelsAuthOrderSetCommand, a as modelsStatusCommand, b as modelsAuthPasteTokenCommand, c as modelsImageFallbacksClearCommand, d as modelsFallbacksAddCommand, f as modelsFallbacksClearCommand, g as modelsAuthOrderGetCommand, h as modelsAuthOrderClearCommand, i as modelsScanCommand, l as modelsImageFallbacksListCommand, m as modelsFallbacksRemoveCommand, n as modelsSetImageCommand, o as modelsListCommand, p as modelsFallbacksListCommand, r as modelsSetCommand, s as modelsImageFallbacksAddCommand, u as modelsImageFallbacksRemoveCommand, v as modelsAuthAddCommand, w as modelsAliasesRemoveCommand, x as modelsAuthSetupTokenCommand, y as modelsAuthLoginCommand } from "./models-CWWcJjaU.js";
107
+ import { c as githubCopilotLoginCommand } from "./provider-auth-helpers-KFQclkJT.js";
108
+ import { C as modelsAliasesListCommand, S as modelsAliasesAddCommand, _ as modelsAuthOrderSetCommand, a as modelsStatusCommand, b as modelsAuthPasteTokenCommand, c as modelsImageFallbacksClearCommand, d as modelsFallbacksAddCommand, f as modelsFallbacksClearCommand, g as modelsAuthOrderGetCommand, h as modelsAuthOrderClearCommand, i as modelsScanCommand, l as modelsImageFallbacksListCommand, m as modelsFallbacksRemoveCommand, n as modelsSetImageCommand, o as modelsListCommand, p as modelsFallbacksListCommand, r as modelsSetCommand, s as modelsImageFallbacksAddCommand, u as modelsImageFallbacksRemoveCommand, v as modelsAuthAddCommand, w as modelsAliasesRemoveCommand, x as modelsAuthSetupTokenCommand, y as modelsAuthLoginCommand } from "./models-B1__62Qo.js";
109
109
 
110
110
  //#region src/cli/models-cli.ts
111
111
  function runModelsCommand(action) {
@@ -9,8 +9,8 @@ import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, r as isGate
9
9
  import { t as assertSupportedRuntime } from "./runtime-guard-BofkqBu7.js";
10
10
  import { r as isSystemdUserServiceAvailable } from "./systemd-CJ5L2ee4.js";
11
11
  import { t as resolveGatewayService } from "./service-RxN7lQKN.js";
12
- import { r as healthCommand } from "./health-DlRTgD3e.js";
13
- import { t as runOnboardingWizard } from "./onboarding-C0I5Zbfm.js";
12
+ import { r as healthCommand } from "./health-D-0xOxV8.js";
13
+ import { t as runOnboardingWizard } from "./onboarding-D7N2AfyJ.js";
14
14
  import { $ as setHuggingfaceApiKey, A as applyXaiConfig, B as applyVercelAiGatewayConfig, E as applyTogetherConfig, I as applyLitellmConfig, M as applyXiaomiConfig, O as applyVeniceConfig, P as applyZaiConfig, Q as setGeminiApiKey, R as applyCloudflareAiGatewayConfig, S as applyQianfanConfig, X as setAnthropicApiKey, Z as setCloudflareAiGatewayConfig, _ as applyMoonshotConfigCn, a as applyMinimaxApiConfig, at as setOpenrouterApiKey, b as applyOpenrouterConfig, ct as setTogetherApiKey, d as applyAuthProfileConfig, dt as setXaiApiKey, et as setKimiCodingApiKey, f as applyHuggingfaceConfig, ft as setXiaomiApiKey, g as applyMoonshotConfig, it as setOpencodeZenApiKey, l as applyMinimaxConfig, lt as setVeniceApiKey, m as applyKimiCodeConfig, n as validateAnthropicSetupToken, nt as setMinimaxApiKey, o as applyMinimaxApiConfigCn, ot as setQianfanApiKey, pt as setZaiApiKey, r as applyOpencodeZenConfig, rt as setMoonshotApiKey, st as setSyntheticApiKey, t as buildTokenProfileId, tt as setLitellmApiKey, ut as setVercelAiGatewayApiKey, w as applySyntheticConfig } from "./auth-token-ce8PBZwF.js";
15
15
  import { n as logConfigUpdated } from "./logging-PVQxLC6I.js";
16
16
  import { n as isDeprecatedAuthChoice, r as normalizeLegacyOnboardAuthChoice } from "./auth-choice-legacy-DxCamFcQ.js";
@@ -11,8 +11,8 @@ import { t as createClackPrompter } from "./clack-prompter-CM5UgVAv.js";
11
11
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-Cp7obV7Q.js";
12
12
  import { r as isSystemdUserServiceAvailable } from "./systemd-Xs16roN5.js";
13
13
  import { t as resolveGatewayService } from "./service-DzLem5vL.js";
14
- import { r as healthCommand } from "./health-C-B-3prj.js";
15
- import { t as runOnboardingWizard } from "./onboarding-BMmZ3Tnf.js";
14
+ import { r as healthCommand } from "./health-BAjSATWA.js";
15
+ import { t as runOnboardingWizard } from "./onboarding-uVLsv2Sd.js";
16
16
  import { $ as setHuggingfaceApiKey, A as applyXaiConfig, B as applyVercelAiGatewayConfig, E as applyTogetherConfig, I as applyLitellmConfig, M as applyXiaomiConfig, O as applyVeniceConfig, P as applyZaiConfig, Q as setGeminiApiKey, R as applyCloudflareAiGatewayConfig, S as applyQianfanConfig, X as setAnthropicApiKey, Z as setCloudflareAiGatewayConfig, _ as applyMoonshotConfigCn, a as applyMinimaxApiConfig, at as setOpenrouterApiKey, b as applyOpenrouterConfig, ct as setTogetherApiKey, d as applyAuthProfileConfig, dt as setXaiApiKey, et as setKimiCodingApiKey, f as applyHuggingfaceConfig, ft as setXiaomiApiKey, g as applyMoonshotConfig, it as setOpencodeZenApiKey, l as applyMinimaxConfig, lt as setVeniceApiKey, m as applyKimiCodeConfig, n as validateAnthropicSetupToken, nt as setMinimaxApiKey, o as applyMinimaxApiConfigCn, ot as setQianfanApiKey, pt as setZaiApiKey, r as applyOpencodeZenConfig, rt as setMoonshotApiKey, st as setSyntheticApiKey, t as buildTokenProfileId, tt as setLitellmApiKey, ut as setVercelAiGatewayApiKey, w as applySyntheticConfig } from "./auth-token-Cq0R-Q6i.js";
17
17
  import { n as logConfigUpdated } from "./logging-CZuxhCZR.js";
18
18
  import { n as isDeprecatedAuthChoice, r as normalizeLegacyOnboardAuthChoice } from "./auth-choice-legacy-C7jeLI7r.js";
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { dt as createPluginLoaderLogger, ft as loadSymiPlugins } from "./reply-BwSt9FgY.js";
2
+ import { dt as createPluginLoaderLogger, ft as loadSymiPlugins } from "./reply-C5VU6T-F.js";
3
3
  import { h as normalizeAccountId, m as DEFAULT_ACCOUNT_ID } from "./session-key-DCt45XZa.js";
4
4
  import { a as formatChannelSelectionLine, i as formatChannelPrimerLine, s as listChatChannels } from "./registry-Cja8eT7G.js";
5
5
  import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
@@ -3,7 +3,7 @@ import { E as formatChannelSelectionLine, O as listChatChannels, T as formatChan
3
3
  import { t as formatCliCommand } from "./command-format-BtYOfWxC.js";
4
4
  import { h as normalizeAccountId, m as DEFAULT_ACCOUNT_ID } from "./session-key-DjZ7Z1hW.js";
5
5
  import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-D-jRCY0d.js";
6
- import { m as loadSymiPlugins, p as createPluginLoaderLogger } from "./subagent-registry-CA3olOuQ.js";
6
+ import { m as loadSymiPlugins, p as createPluginLoaderLogger } from "./subagent-registry-BCWbFTGF.js";
7
7
  import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-CwSlLxM8.js";
8
8
  import { t as formatDocsLink } from "./links-CxyMXTsn.js";
9
9
  import { r as listChannelPluginCatalogEntries } from "./catalog-KcLvtTfa.js";
@@ -223,7 +223,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
223
223
  const { ensureAuthProfileStore } = await import("./auth-profiles-BBniPGeS.js").then((n) => n.t);
224
224
  const { promptAuthChoiceGrouped } = await import("./auth-choice-prompt-DF6R_pgV.js").then((n) => n.t);
225
225
  const { promptCustomApiConfig } = await import("./onboard-custom-CJGSIPt3.js").then((n) => n.r);
226
- const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-DPNcCrz1.js").then((n) => n.t);
226
+ const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-j1FEYnxv.js").then((n) => n.t);
227
227
  const { applyPrimaryModel, promptDefaultModel } = await import("./model-picker-n7beL1F5.js").then((n) => n.i);
228
228
  const authStore = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false });
229
229
  const authChoiceFromPrompt = opts.authChoice === void 0;
@@ -276,7 +276,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
276
276
  if (opts.skipChannels ?? opts.skipProviders) await prompter.note("Skipping channel setup.", "Channels");
277
277
  else {
278
278
  const { listChannelPlugins } = await import("./plugins-CwSlLxM8.js").then((n) => n.i);
279
- const { setupChannels } = await import("./onboard-channels-B2HQSE5z.js").then((n) => n.n);
279
+ const { setupChannels } = await import("./onboard-channels-CYlZtWF6.js").then((n) => n.n);
280
280
  const quickstartAllowFromChannels = flow === "quickstart" ? listChannelPlugins().filter((plugin) => plugin.meta.quickstartAllowFrom).map((plugin) => plugin.id) : [];
281
281
  nextConfig = await setupChannels(nextConfig, runtime, prompter, {
282
282
  allowSignalInstall: true,
@@ -302,7 +302,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
302
302
  mode
303
303
  });
304
304
  await writeConfigFile(nextConfig);
305
- const { finalizeOnboardingWizard } = await import("./onboarding.finalize-lDB3lIzR.js");
305
+ const { finalizeOnboardingWizard } = await import("./onboarding.finalize-CTDv0xwp.js");
306
306
  const { launchedTui } = await finalizeOnboardingWizard({
307
307
  flow,
308
308
  opts,
@@ -225,7 +225,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
225
225
  const { ensureAuthProfileStore } = await import("./model-selection-C-eIBa0H.js").then((n) => n.dt);
226
226
  const { promptAuthChoiceGrouped } = await import("./auth-choice-prompt-PeQmwVpp.js").then((n) => n.t);
227
227
  const { promptCustomApiConfig } = await import("./onboard-custom-Dk9cL3Uu.js").then((n) => n.r);
228
- const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-FY48Z00U.js").then((n) => n.t);
228
+ const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-DnKOB8Gs.js").then((n) => n.t);
229
229
  const { applyPrimaryModel, promptDefaultModel } = await import("./model-picker-BNWV-jU4.js").then((n) => n.i);
230
230
  const authStore = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false });
231
231
  const authChoiceFromPrompt = opts.authChoice === void 0;
@@ -278,7 +278,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
278
278
  if (opts.skipChannels ?? opts.skipProviders) await prompter.note("Skipping channel setup.", "Channels");
279
279
  else {
280
280
  const { listChannelPlugins } = await import("./plugins-DKDeQZF0.js").then((n) => n.i);
281
- const { setupChannels } = await import("./onboard-channels-Nos59voI.js").then((n) => n.n);
281
+ const { setupChannels } = await import("./onboard-channels-BgA4i9TU.js").then((n) => n.n);
282
282
  const quickstartAllowFromChannels = flow === "quickstart" ? listChannelPlugins().filter((plugin) => plugin.meta.quickstartAllowFrom).map((plugin) => plugin.id) : [];
283
283
  nextConfig = await setupChannels(nextConfig, runtime, prompter, {
284
284
  allowSignalInstall: true,
@@ -304,7 +304,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
304
304
  mode
305
305
  });
306
306
  await writeConfigFile(nextConfig);
307
- const { finalizeOnboardingWizard } = await import("./onboarding.finalize-CQTERN7X.js");
307
+ const { finalizeOnboardingWizard } = await import("./onboarding.finalize-DEjTjgRt.js");
308
308
  const { launchedTui } = await finalizeOnboardingWizard({
309
309
  flow,
310
310
  opts,
@@ -15,7 +15,7 @@ import "./client-qUlxXXVJ.js";
15
15
  import "./call-BrRWr7Lj.js";
16
16
  import "./message-channel-C9dERklz.js";
17
17
  import "./pairing-token-Byh6drgn.js";
18
- import "./subagent-registry-CA3olOuQ.js";
18
+ import "./subagent-registry-BCWbFTGF.js";
19
19
  import "./sessions-BPD85pWA.js";
20
20
  import "./tokens-Csntmwwn.js";
21
21
  import "./plugins-CwSlLxM8.js";
@@ -53,8 +53,8 @@ import "./tool-images-CVLISeRT.js";
53
53
  import "./thinking-8sKPnzpp.js";
54
54
  import "./models-config-J1x_DaPn.js";
55
55
  import "./reply-prefix-BUN71nd5.js";
56
- import "./memory-cli-CMd2wNuE.js";
57
- import "./manager-DfbiNFMG.js";
56
+ import "./memory-cli-r-ulsUBa.js";
57
+ import "./manager-BxJ9BhQe.js";
58
58
  import "./gemini-auth-DEakvf-D.js";
59
59
  import "./retry-C4Q_VPOo.js";
60
60
  import "./sqlite-BP8tiuca.js";
@@ -100,18 +100,18 @@ import "./prompt-style-BxVdnrLq.js";
100
100
  import "./pairing-labels-BHx_CdbP.js";
101
101
  import "./pi-tools.policy-dbCkhLDL.js";
102
102
  import "./note-DewoEWtc.js";
103
- import "./register.subclis-CXZMI0Py.js";
104
- import "./command-registry-DnCUp2Vv.js";
103
+ import "./register.subclis-kF8KnNuq.js";
104
+ import "./command-registry-B6spVZMd.js";
105
105
  import "./program-context-DeZ44oQ9.js";
106
- import { r as installCompletion } from "./completion-cli-DmWio6gO.js";
106
+ import { r as installCompletion } from "./completion-cli-VQrV_JN9.js";
107
107
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-D_elkkFW.js";
108
108
  import "./runtime-guard-BofkqBu7.js";
109
109
  import { r as isSystemdUserServiceAvailable } from "./systemd-CJ5L2ee4.js";
110
110
  import { t as resolveGatewayService } from "./service-RxN7lQKN.js";
111
- import { r as healthCommand } from "./health-DlRTgD3e.js";
111
+ import { r as healthCommand } from "./health-D-0xOxV8.js";
112
112
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Clf7H-Sm.js";
113
113
  import { t as formatHealthCheckFailure } from "./health-format-DkjSgkDx.js";
114
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BCzSR_c-.js";
114
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BR5k35Qj.js";
115
115
  import { t as runTui } from "./tui-BiBFm_RY.js";
116
116
  import os from "node:os";
117
117
  import path from "node:path";
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cqn-zk3M.js";
2
2
  import { h as pathExists, y as resolveUserPath } from "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import "./reply-BwSt9FgY.js";
4
+ import "./reply-C5VU6T-F.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import { p as restoreTerminalState } from "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
@@ -61,8 +61,8 @@ import "./diagnostic-session-state-CUslJyKP.js";
61
61
  import "./send-DpMnSIi5.js";
62
62
  import "./model-ECsJuJew.js";
63
63
  import "./reply-prefix-CE2YmmsD.js";
64
- import "./memory-cli-j-HcbP06.js";
65
- import "./manager-D_NVh5nU.js";
64
+ import "./memory-cli-BQZ0rTKC.js";
65
+ import "./manager-BpvcDr-7.js";
66
66
  import "./retry-BoS4e4X_.js";
67
67
  import "./sqlite-D55gRQbH.js";
68
68
  import "./target-errors-C9e6dMU_.js";
@@ -104,16 +104,16 @@ import "./control-service-C0pRqIFv.js";
104
104
  import "./stagger-CZ1Rrj7O.js";
105
105
  import "./channel-selection-9fIQGtZy.js";
106
106
  import "./runtime-guard-BKFbNplo.js";
107
- import "./program-context-hHMQ9IaD.js";
107
+ import "./program-context-Dun-c3nf.js";
108
108
  import "./note-ByDX0v9V.js";
109
- import { r as installCompletion } from "./completion-cli-BpdGxP6F.js";
109
+ import { r as installCompletion } from "./completion-cli-DKoZNVbW.js";
110
110
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-Cp7obV7Q.js";
111
111
  import { r as isSystemdUserServiceAvailable } from "./systemd-Xs16roN5.js";
112
112
  import { t as resolveGatewayService } from "./service-DzLem5vL.js";
113
- import { r as healthCommand } from "./health-C-B-3prj.js";
113
+ import { r as healthCommand } from "./health-BAjSATWA.js";
114
114
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-BrP31IQR.js";
115
115
  import { t as formatHealthCheckFailure } from "./health-format-Ct4VWeSk.js";
116
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-CyzIEK0J.js";
116
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-CPFKFTc-.js";
117
117
  import { t as runTui } from "./tui-CvHbwJ3G.js";
118
118
  import os from "node:os";
119
119
  import path from "node:path";
@@ -37,7 +37,7 @@ import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as re
37
37
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-C8Tqw4td.js";
38
38
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-ChC2CXaN.js";
39
39
  import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-tzIqIuKx.js";
40
- import { a as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, r as probeOllamaEmbeddingModels, t as MemoryIndexManager } from "./manager-BDW4v0kn.js";
40
+ import { a as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, r as probeOllamaEmbeddingModels, t as MemoryIndexManager } from "./manager-B5JWZL0E.js";
41
41
  import { c as normalizeExtraMemoryPaths, f as runTasksWithConcurrency, s as listMemoryFiles } from "./internal-479FB0St.js";
42
42
  import { n as retryAsync } from "./retry-QGp0jvVi.js";
43
43
  import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-Dm716SF3.js";
@@ -3473,7 +3473,7 @@ async function getMemorySearchManager(params) {
3473
3473
  const wrapper = new FallbackMemoryManager({
3474
3474
  primary,
3475
3475
  fallbackFactory: async () => {
3476
- const { MemoryIndexManager } = await import("./manager-BDW4v0kn.js").then((n) => n.n);
3476
+ const { MemoryIndexManager } = await import("./manager-B5JWZL0E.js").then((n) => n.n);
3477
3477
  return await MemoryIndexManager.get(params);
3478
3478
  }
3479
3479
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -3486,7 +3486,7 @@ async function getMemorySearchManager(params) {
3486
3486
  }
3487
3487
  }
3488
3488
  try {
3489
- const { MemoryIndexManager } = await import("./manager-BDW4v0kn.js").then((n) => n.n);
3489
+ const { MemoryIndexManager } = await import("./manager-B5JWZL0E.js").then((n) => n.n);
3490
3490
  return { manager: await MemoryIndexManager.get(params) };
3491
3491
  } catch (err) {
3492
3492
  return {
@@ -47049,6 +47049,7 @@ async function runEmbeddedAttempt(params) {
47049
47049
  let aborted = Boolean(params.abortSignal?.aborted);
47050
47050
  let timedOut = false;
47051
47051
  let timedOutDuringCompaction = false;
47052
+ let circuitBreakerAborted = false;
47052
47053
  const getAbortReason = (signal) => "reason" in signal ? signal.reason : void 0;
47053
47054
  const makeTimeoutAbortReason = () => {
47054
47055
  const err = /* @__PURE__ */ new Error("request timed out");
@@ -47150,6 +47151,20 @@ async function runEmbeddedAttempt(params) {
47150
47151
  if (consecutiveToolErrors >= TOOL_ERROR_ABORT_THRESHOLD) {
47151
47152
  const toolName = typeof evt.data?.name === "string" ? evt.data.name : "unknown";
47152
47153
  log$5.error(`Agent-loop circuit breaker: ${consecutiveToolErrors} consecutive tool errors (last: ${toolName}). Aborting run ${params.runId}.`);
47154
+ const breakerNotice = `I hit ${consecutiveToolErrors} consecutive tool errors (last: \`${toolName}\`). The files or resources I was looking for may not exist where I expected. Let me try answering without tools.`;
47155
+ try {
47156
+ emitAgentEvent({
47157
+ runId: params.runId,
47158
+ stream: "assistant",
47159
+ data: {
47160
+ text: breakerNotice,
47161
+ delta: breakerNotice
47162
+ }
47163
+ });
47164
+ } catch (err) {
47165
+ log$5.warn(`circuit breaker: synthetic notice emit failed: ${String(err)}`);
47166
+ }
47167
+ circuitBreakerAborted = true;
47153
47168
  abortRun(false, /* @__PURE__ */ new Error(`${consecutiveToolErrors} consecutive tool errors. The model may be generating corrupted tool arguments. Run aborted to prevent infinite loop.`));
47154
47169
  } else if (consecutiveToolErrors === TOOL_ERROR_WARN_THRESHOLD) {
47155
47170
  const toolName = typeof evt.data?.name === "string" ? evt.data.name : "unknown";
@@ -47467,6 +47482,7 @@ async function runEmbeddedAttempt(params) {
47467
47482
  aborted,
47468
47483
  timedOut,
47469
47484
  timedOutDuringCompaction,
47485
+ circuitBreakerAborted,
47470
47486
  promptError,
47471
47487
  sessionIdUsed,
47472
47488
  systemPromptReport,
@@ -48397,6 +48413,7 @@ async function runEmbeddedPiAgent(params) {
48397
48413
  durationMs: Date.now() - started,
48398
48414
  agentMeta,
48399
48415
  aborted,
48416
+ circuitBreakerAborted: attempt.circuitBreakerAborted,
48400
48417
  systemPromptReport: attempt.systemPromptReport
48401
48418
  },
48402
48419
  didSendViaMessagingTool: attempt.didSendViaMessagingTool,
@@ -48425,6 +48442,7 @@ async function runEmbeddedPiAgent(params) {
48425
48442
  durationMs: Date.now() - started,
48426
48443
  agentMeta,
48427
48444
  aborted,
48445
+ circuitBreakerAborted: attempt.circuitBreakerAborted,
48428
48446
  systemPromptReport: attempt.systemPromptReport,
48429
48447
  stopReason: attempt.clientToolCall ? "tool_calls" : void 0,
48430
48448
  pendingToolCalls: attempt.clientToolCall ? [{
@@ -48621,6 +48639,16 @@ async function runAgentTurn(params) {
48621
48639
  throw err;
48622
48640
  }
48623
48641
  result = result;
48642
+ if (result.meta.circuitBreakerAborted && !params._circuitBreakerRetried) {
48643
+ const continuationPrompt = "(Your previous turn aborted after several consecutive tool errors because the tool calls kept failing. For THIS turn: answer the user's original question directly using your existing knowledge and the conversation history above. Do NOT attempt any tool calls — they are disabled in this turn and will not work. If you truly cannot answer without tool access, say so clearly and explain what information you would have needed.)";
48644
+ return runAgentTurn({
48645
+ ...params,
48646
+ runId: randomUUID(),
48647
+ prompt: continuationPrompt,
48648
+ disableTools: true,
48649
+ _circuitBreakerRetried: true
48650
+ });
48651
+ }
48624
48652
  const responseText = (result.payloads ?? []).filter((p) => p.text && !p.isError).map((p) => p.text).join("\n").trim();
48625
48653
  const resolvedProvider = fallbackProvider ?? result.meta.agentMeta?.provider ?? params.provider ?? "";
48626
48654
  const resolvedModel = fallbackModel ?? result.meta.agentMeta?.model ?? params.modelId ?? "";
@@ -61238,7 +61266,7 @@ function isVoiceChannelType(type) {
61238
61266
  function createDefaultDeps() {
61239
61267
  return {
61240
61268
  sendMessageWhatsApp: async (...args) => {
61241
- const { sendMessageWhatsApp } = await import("./web-DoSYXtxt.js");
61269
+ const { sendMessageWhatsApp } = await import("./web-eJWNRwV5.js");
61242
61270
  return await sendMessageWhatsApp(...args);
61243
61271
  },
61244
61272
  sendMessageTelegram: async (...args) => {
@@ -76518,7 +76546,7 @@ function loadWebLoginQr() {
76518
76546
  return webLoginQrPromise;
76519
76547
  }
76520
76548
  function loadWebChannel() {
76521
- webChannelPromise ??= import("./web-DoSYXtxt.js");
76549
+ webChannelPromise ??= import("./web-eJWNRwV5.js");
76522
76550
  return webChannelPromise;
76523
76551
  }
76524
76552
  function loadWhatsAppActions() {
@@ -9,7 +9,7 @@ import { h as isPidAlive, m as resolveProcessScopedMap } from "./auth-profiles-C
9
9
  import { n as formatCliCommand } from "./env-BDXYbTKj.js";
10
10
  import { t as parseBooleanValue } from "./boolean-CE7i9tBR.js";
11
11
  import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-BkZ9HOKT.js";
12
- import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-ROtrXlNs.js";
12
+ import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-C08Z0XAa.js";
13
13
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-CXxrn_e2.js";
14
14
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-XIsvXeC-.js";
15
15
  import { b as openFileWithinRoot, i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS, y as SafeOpenError } from "./image-ops-C7CauEK8.js";
@@ -940,7 +940,7 @@ function isModuleNotFoundError(err) {
940
940
  }
941
941
  async function loadPwAiModule(mode) {
942
942
  try {
943
- return await import("./pw-ai-DWkC5eGA.js");
943
+ return await import("./pw-ai-CeWN4iD9.js");
944
944
  } catch (err) {
945
945
  if (mode === "soft") return null;
946
946
  if (isModuleNotFoundError(err)) return null;
@@ -3480,11 +3480,11 @@ function createProfileContext(opts, profile) {
3480
3480
  const userDataDir = resolveSymiUserDataDir(profile.name);
3481
3481
  const profileState = getProfileState();
3482
3482
  if (await isHttpReachable(300) && !profileState.running) try {
3483
- await (await import("./pw-ai-DWkC5eGA.js")).closePlaywrightBrowserConnection();
3483
+ await (await import("./pw-ai-CeWN4iD9.js")).closePlaywrightBrowserConnection();
3484
3484
  } catch {}
3485
3485
  if (profileState.running) await stopRunningBrowser();
3486
3486
  try {
3487
- await (await import("./pw-ai-DWkC5eGA.js")).closePlaywrightBrowserConnection();
3487
+ await (await import("./pw-ai-CeWN4iD9.js")).closePlaywrightBrowserConnection();
3488
3488
  } catch {}
3489
3489
  if (!fs.existsSync(userDataDir)) return {
3490
3490
  moved: false,
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { M as getActivePluginRegistry, o as createSubsystemLogger } from "./entry.js";
3
3
  import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-D-jRCY0d.js";
4
4
  import { i as loadConfig } from "./config-DXt3pc08.js";
5
- import { m as loadSymiPlugins } from "./subagent-registry-CA3olOuQ.js";
5
+ import { m as loadSymiPlugins } from "./subagent-registry-BCWbFTGF.js";
6
6
 
7
7
  //#region src/cli/plugin-registry.ts
8
8
  var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { ft as loadSymiPlugins } from "./reply-BwSt9FgY.js";
2
+ import { ft as loadSymiPlugins } from "./reply-C5VU6T-F.js";
3
3
  import { d as getActivePluginRegistry } from "./registry-Cja8eT7G.js";
4
4
  import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
5
5
  import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-CgUHAtCo.js";
@@ -20,6 +20,13 @@ export type EmbeddedRunAttemptResult = {
20
20
  timedOut: boolean;
21
21
  /** True if the timeout occurred while compaction was in progress or pending. */
22
22
  timedOutDuringCompaction: boolean;
23
+ /**
24
+ * True when the abort was triggered specifically by the consecutive-tool-error
25
+ * circuit breaker in attempt.ts. Distinguishes this abort kind from user
26
+ * aborts and timeouts so `runAgentTurn` can auto-retry the run with tools
27
+ * disabled instead of returning a silent empty result to the caller.
28
+ */
29
+ circuitBreakerAborted: boolean;
23
30
  promptError: unknown;
24
31
  sessionIdUsed: string;
25
32
  systemPromptReport?: SessionSystemPromptReport;
@@ -32,6 +32,12 @@ export type EmbeddedPiRunMeta = {
32
32
  durationMs: number;
33
33
  agentMeta?: EmbeddedPiAgentMeta;
34
34
  aborted?: boolean;
35
+ /**
36
+ * True when the abort was triggered by the consecutive-tool-error circuit
37
+ * breaker in attempt.ts. Observed by `runAgentTurn` to decide whether to
38
+ * schedule a no-tool recovery retry.
39
+ */
40
+ circuitBreakerAborted?: boolean;
35
41
  systemPromptReport?: SessionSystemPromptReport;
36
42
  error?: {
37
43
  kind: "context_overflow" | "compaction_failure" | "role_ordering" | "image_size" | "retry_limit";
@@ -81,6 +81,14 @@ export interface AgentTurnParams {
81
81
  symipulseMs?: number;
82
82
  /** Retry once on transient HTTP errors (502/521) with 2.5s delay. */
83
83
  retryOnTransientError?: boolean;
84
+ /**
85
+ * @internal Set by `runAgentTurn` when it recurses into itself to recover
86
+ * from a tool-error circuit-breaker abort with tools disabled. Prevents
87
+ * infinite recursion — a second circuit-breaker event in the retry turn
88
+ * (which shouldn't happen since tools are off) is surfaced as-is instead
89
+ * of triggering another retry.
90
+ */
91
+ _circuitBreakerRetried?: boolean;
84
92
  channel?: ChannelContext;
85
93
  callbacks?: AgentTurnCallbacks;
86
94
  }
@@ -1,6 +1,6 @@
1
1
  import { a as buildGroupHistoryKey, n as DEFAULT_MAIN_KEY, r as buildAgentMainSessionKey, s as normalizeAgentId } from "./session-key-C_0eELjb.js";
2
2
  import { f as readWebSelfId, o as getWebAuthAgeMs, r as resolveWhatsAppAccount } from "./accounts-D9zGZU5t.js";
3
- import { D as enqueueSystemEvent, G as shouldAckReactionForWhatsApp, K as resolveMentionGating, X as DEFAULT_GROUP_HISTORY_LIMIT, Z as buildHistoryContextFromEntries, _ as formatInboundEnvelope, b as shouldComputeCommandAuthorized, c as computeBackoff, d as buildPairingReply, f as formatDurationPrecise, g as resolveInboundDebounceMs, gt as createDedupeCache, h as createInboundDebouncer, it as normalizeMentionText, l as sleepWithAbort, n as normalizeGroupActivation, nt as recordPendingHistoryEntryIfEnabled, p as dispatchReplyWithBufferedBlockDispatcher, r as parseActivationCommand, rt as buildMentionRegexes, t as getReplyFromConfig, v as resolveEnvelopeFormatOptions, y as hasControlCommand } from "./reply-BvRRQRwy.js";
3
+ import { D as enqueueSystemEvent, G as shouldAckReactionForWhatsApp, K as resolveMentionGating, X as DEFAULT_GROUP_HISTORY_LIMIT, Z as buildHistoryContextFromEntries, _ as formatInboundEnvelope, b as shouldComputeCommandAuthorized, c as computeBackoff, d as buildPairingReply, f as formatDurationPrecise, g as resolveInboundDebounceMs, gt as createDedupeCache, h as createInboundDebouncer, it as normalizeMentionText, l as sleepWithAbort, n as normalizeGroupActivation, nt as recordPendingHistoryEntryIfEnabled, p as dispatchReplyWithBufferedBlockDispatcher, r as parseActivationCommand, rt as buildMentionRegexes, t as getReplyFromConfig, v as resolveEnvelopeFormatOptions, y as hasControlCommand } from "./reply-DWwxgBtH.js";
4
4
  import { A as normalizeE164, B as toWhatsappJid, K as logVerbose, N as resolveJidToE164, O as isSelfChatMode, R as sleep, Y as shouldLogVerbose, k as jidToE164, s as normalizeChatChannelId, tt as getChildLogger, x as clamp } from "./registry--_pGht6S.js";
5
5
  import { n as loadConfig } from "./config-BzupW6LN.js";
6
6
  import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
@@ -1,6 +1,6 @@
1
1
  import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId } from "./session-key-C_0eELjb.js";
2
2
  import { _ as createAccountListHelpers, i as resolveWhatsAppAuthDir, n as resolveDefaultWhatsAppAccountId, r as resolveWhatsAppAccount, t as listWhatsAppAccountIds } from "./accounts-D9zGZU5t.js";
3
- import { $ as clearHistoryEntries, A as detectBinary, At as CHANNEL_MESSAGE_ACTION_NAMES, B as logInboundDrop, C as processLineMessage, Ct as listThreadBindingsBySessionKey, Dt as BLUEBUBBLES_ACTIONS, E as attachFooterText, Et as resolveAllowlistMatchSimple, F as optionalStringEnum, G as shouldAckReactionForWhatsApp, H as createTypingCallbacks, I as stringEnum, J as mergeAllowlist, K as resolveMentionGating, L as recordInboundSession, M as resolveDiscordChannelAllowlist, N as collectDiscordAuditChannelIds, O as resolveSlackUserAllowlist, Ot as BLUEBUBBLES_ACTION_NAMES, P as formatDocsLink, Q as buildPendingHistoryContextFromMap, R as resolveControlCommandGate, S as hasMarkdownToConvert, St as autoBindSpawnedDiscordSubagent, T as createReceiptCard, Tt as formatAllowlistMatchMeta, U as removeAckReactionAfterReply, V as logTypingFailure, W as shouldAckReaction, X as DEFAULT_GROUP_HISTORY_LIMIT, Y as summarizeMapping, _t as approveDevicePairing, a as normalizeAccountId$1, at as isWSL2Sync, bt as extractToolSend, ct as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, dt as installRequestBodyLimitGuard, et as clearHistoryEntriesIfEnabled, ft as isRequestBodyLimitError, gt as createDedupeCache, ht as requestBodyErrorToText, i as listLineAccountIds, j as resolveDiscordUserAllowlist, k as resolveSlackChannelAllowlist, kt as BLUEBUBBLES_GROUP_ACTIONS, lt as DEFAULT_WEBHOOK_MAX_BODY_BYTES, mt as readRequestBodyWithLimit, nt as recordPendingHistoryEntryIfEnabled, o as resolveDefaultLineAccountId, ot as isWSLEnv, pt as readJsonBodyWithLimit, q as resolveMentionGatingWithBypass, s as resolveLineAccount, st as isWSLSync, tt as recordPendingHistoryEntry, ut as RequestBodyLimitError, vt as listDevicePairing, w as stripMarkdown, wt as unbindThreadBindingsBySessionKey, xt as registerPluginHttpRoute, yt as rejectDevicePairing, z as logAckFailure } from "./reply-BvRRQRwy.js";
3
+ import { $ as clearHistoryEntries, A as detectBinary, At as CHANNEL_MESSAGE_ACTION_NAMES, B as logInboundDrop, C as processLineMessage, Ct as listThreadBindingsBySessionKey, Dt as BLUEBUBBLES_ACTIONS, E as attachFooterText, Et as resolveAllowlistMatchSimple, F as optionalStringEnum, G as shouldAckReactionForWhatsApp, H as createTypingCallbacks, I as stringEnum, J as mergeAllowlist, K as resolveMentionGating, L as recordInboundSession, M as resolveDiscordChannelAllowlist, N as collectDiscordAuditChannelIds, O as resolveSlackUserAllowlist, Ot as BLUEBUBBLES_ACTION_NAMES, P as formatDocsLink, Q as buildPendingHistoryContextFromMap, R as resolveControlCommandGate, S as hasMarkdownToConvert, St as autoBindSpawnedDiscordSubagent, T as createReceiptCard, Tt as formatAllowlistMatchMeta, U as removeAckReactionAfterReply, V as logTypingFailure, W as shouldAckReaction, X as DEFAULT_GROUP_HISTORY_LIMIT, Y as summarizeMapping, _t as approveDevicePairing, a as normalizeAccountId$1, at as isWSL2Sync, bt as extractToolSend, ct as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, dt as installRequestBodyLimitGuard, et as clearHistoryEntriesIfEnabled, ft as isRequestBodyLimitError, gt as createDedupeCache, ht as requestBodyErrorToText, i as listLineAccountIds, j as resolveDiscordUserAllowlist, k as resolveSlackChannelAllowlist, kt as BLUEBUBBLES_GROUP_ACTIONS, lt as DEFAULT_WEBHOOK_MAX_BODY_BYTES, mt as readRequestBodyWithLimit, nt as recordPendingHistoryEntryIfEnabled, o as resolveDefaultLineAccountId, ot as isWSLEnv, pt as readJsonBodyWithLimit, q as resolveMentionGatingWithBypass, s as resolveLineAccount, st as isWSLSync, tt as recordPendingHistoryEntry, ut as RequestBodyLimitError, vt as listDevicePairing, w as stripMarkdown, wt as unbindThreadBindingsBySessionKey, xt as registerPluginHttpRoute, yt as rejectDevicePairing, z as logAckFailure } from "./reply-DWwxgBtH.js";
4
4
  import "./paths-DR2yt_mP.js";
5
5
  import "./github-copilot-token-D9X2phUj.js";
6
6
  import { D as resolveSlackAccount, E as resolveDefaultSlackAccountId, F as resolveDiscordAccount, M as listDiscordAccountIds, O as resolveSlackReplyToMode, P as resolveDefaultDiscordAccountId, S as resolveTelegramAccount, T as listSlackAccountIds, _ as normalizeWhatsAppTarget, a as listDiscordDirectoryPeersFromConfig, b as listTelegramAccountIds, c as listTelegramDirectoryGroupsFromConfig, d as listWhatsAppDirectoryPeersFromConfig, f as looksLikeSlackTargetId, g as isWhatsAppGroupJid, i as listDiscordDirectoryGroupsFromConfig, l as listTelegramDirectoryPeersFromConfig, o as listSlackDirectoryGroupsFromConfig, p as normalizeSlackMessagingTarget, s as listSlackDirectoryPeersFromConfig, u as listWhatsAppDirectoryGroupsFromConfig, w as listEnabledSlackAccounts, x as resolveDefaultTelegramAccountId } from "./plugins-BbAvhC25.js";
@@ -47,12 +47,12 @@ import "./paths-A0xdf3yk.js";
47
47
  import { h as onDiagnosticEvent, m as isDiagnosticsEnabled, p as emitDiagnosticEvent } from "./diagnostic-_oc91gNi.js";
48
48
  import { n as extractOriginalFilename } from "./store-Do3t33-c.js";
49
49
  import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-BkCUbYGV.js";
50
- import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-BjHrRVyw.js";
50
+ import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-CfaamthT.js";
51
51
  import "./image-DFyINnvE.js";
52
52
  import "./pi-model-discovery-LbcEa65a.js";
53
53
  import "./api-key-rotation-CBsLb_4V.js";
54
54
  import "./diagnostic-session-state-Wd5tNeQG.js";
55
- import "./manager-Dkk-rYV5.js";
55
+ import "./manager-B3jEviU1.js";
56
56
  import "./sqlite-CmVrFEYD.js";
57
57
  import "./commands-registry-BuYpmEx-.js";
58
58
  import "./send-CGhw9mO3.js";
@@ -3970,7 +3970,7 @@ var MemoryIndexManager = class MemoryIndexManager extends MemoryManagerEmbedding
3970
3970
  * to bypass the min-interval guard (CLI use).
3971
3971
  */
3972
3972
  async runL3CycleIfDue(params) {
3973
- const [{ runL3Cycle, runL3CycleIfDue }, { createSynthesizer }] = await Promise.all([import("./consolidate-CafShdsH.js"), import("./synthesis-CvCvHSQJ.js")]);
3973
+ const [{ runL3Cycle, runL3CycleIfDue }, { createSynthesizer }] = await Promise.all([import("./consolidate-CafShdsH.js"), import("./synthesis-C_u94H_P.js")]);
3974
3974
  const synthesize = createSynthesizer({
3975
3975
  cfg: this.cfg,
3976
3976
  agentId: this.agentId,