@symerian/symi 3.4.25 → 3.4.26

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 (139) hide show
  1. package/dist/{agent-CQlyTNu-.js → agent-DQvcs-ag.js} +1 -1
  2. package/dist/{agent-N_J2cDO6.js → agent-DR2UU-2F.js} +2 -2
  3. package/dist/{agents-1xmRO246.js → agents-BewjExwR.js} +2 -2
  4. package/dist/{audit-DCwHws4M.js → audit-bjakulrx.js} +5 -5
  5. package/dist/{auth-choice-Ryx7oj6G.js → auth-choice-BkSsm1pk.js} +1 -1
  6. package/dist/{auth-choice-DwXdS4c2.js → auth-choice-L6_DvGSb.js} +2 -2
  7. package/dist/{banner-CxMQaUgh.js → banner-DoxWG0Rv.js} +1 -1
  8. package/dist/{browser-cli-C3hfJNZy.js → browser-cli-DdLN-X6g.js} +3 -3
  9. package/dist/build-info.json +3 -3
  10. package/dist/bundled/boot-md/handler.js +2 -2
  11. package/dist/bundled/session-memory/handler.js +2 -2
  12. package/dist/{call-BouPakqe.js → call-BOE4s-tQ.js} +1 -1
  13. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  14. package/dist/{channel-options-n9C_ovb1.js → channel-options-CJOhNCrO.js} +1 -1
  15. package/dist/{channel-options-WR29vfWK.js → channel-options-X5Mgr-oH.js} +1 -1
  16. package/dist/{channels-cli-Cs-Uq67O.js → channels-cli-CBdy4UL6.js} +7 -7
  17. package/dist/{channels-cli-DbFGI3vF.js → channels-cli-Drn3JOc8.js} +17 -17
  18. package/dist/{chrome-B7-rO4i9.js → chrome-BKUACyeO.js} +7 -7
  19. package/dist/{chrome-rzK8edU7.js → chrome-xlyBE8q3.js} +7 -7
  20. package/dist/{cli-D55pCJ8Q.js → cli-DJA_Gm3_.js} +4 -4
  21. package/dist/{cli-7ceDvtPc.js → cli-S62cMO1-.js} +14 -14
  22. package/dist/{client-BzUAFrla.js → client-iv2QpsT1.js} +3 -3
  23. package/dist/{command-registry-DAy62yhH.js → command-registry-CZrQWdR_.js} +10 -10
  24. package/dist/{completion-cli-Bh-Y2NVp.js → completion-cli-CPiZTObN.js} +2 -2
  25. package/dist/{completion-cli-Bc1jojml.js → completion-cli-DvaCHwGr.js} +1 -1
  26. package/dist/{config-cli-DupKETmw.js → config-cli-CiTMrunf.js} +1 -1
  27. package/dist/{config-cli-BxRcn2oD.js → config-cli-Dhb3ZuZ6.js} +1 -1
  28. package/dist/{configure-BilM_Fgn.js → configure-CzAszDyQ.js} +2 -2
  29. package/dist/{configure-0XYm59w7.js → configure-DlLBbvyP.js} +6 -6
  30. package/dist/{control-service-Ry7Le68N.js → control-service-BgfKoTwJ.js} +3 -3
  31. package/dist/{cron-cli-DHFgjr_X.js → cron-cli-Bg9CiOss.js} +3 -3
  32. package/dist/{daemon-cli-fC2R9YZd.js → daemon-cli-wRBPfyuU.js} +2 -2
  33. package/dist/{deliver-oWGJwzFf.js → deliver-Cjyb6h4g.js} +4 -4
  34. package/dist/{devices-cli-DtkKN4l0.js → devices-cli-IoQV2hfa.js} +2 -2
  35. package/dist/{doctor-completion-B6OPl_GZ.js → doctor-completion-C4vmp9I7.js} +1 -1
  36. package/dist/{doctor-completion-BZJWX3Dr.js → doctor-completion-CBs1R4s0.js} +1 -1
  37. package/dist/entry.js +1 -1
  38. package/dist/{exec-approvals-cli-C3gZAwV8.js → exec-approvals-cli-D107mxRX.js} +4 -4
  39. package/dist/extensionAPI.js +4 -4
  40. package/dist/{gateway-cli-CyhLb-zS.js → gateway-cli-D6v-ok73.js} +25 -25
  41. package/dist/{gateway-cli-DQhYa6AL.js → gateway-cli-q8Mf3jQH.js} +10 -10
  42. package/dist/{gateway-rpc-DNq7EMhm.js → gateway-rpc-rNjNMA6y.js} +1 -1
  43. package/dist/{glass-ui-ws-SJVljtUx.js → glass-ui-ws-CC93azF2.js} +21 -21
  44. package/dist/{glass-ui-ws-CLDbMDPk.js → glass-ui-ws-CIm7LZ8W.js} +8 -8
  45. package/dist/{health-DZ0aipDZ.js → health-B92I0vwb.js} +1 -1
  46. package/dist/{hooks-cli-BVtdP5x7.js → hooks-cli-DCVYSJ8i.js} +5 -5
  47. package/dist/{hooks-cli-BMRj13QU.js → hooks-cli-DfFHpfYB.js} +15 -15
  48. package/dist/index.js +18 -18
  49. package/dist/llm-slug-generator.js +2 -2
  50. package/dist/{logs-cli-mdSEYBKS.js → logs-cli-DvPMH-Ur.js} +3 -3
  51. package/dist/{manager-BLg6zbeA.js → manager-C1bLWQJb.js} +1 -1
  52. package/dist/{manager-BhIaahpm.js → manager-CVP2spyx.js} +1 -1
  53. package/dist/{manager-BIt2_nlu.js → manager-Dj2dVPGR.js} +1 -1
  54. package/dist/{manager-DhHNnMyK.js → manager-Dz4nKG33.js} +1 -1
  55. package/dist/{memory-BENbCb4f.js → memory-BGLXu8Hn.js} +2 -2
  56. package/dist/{memory-B4DsKRSc.js → memory-D_CuTCAW.js} +2 -2
  57. package/dist/{memory-cli-BIjwqjBx.js → memory-cli-DLyBqCnp.js} +2 -2
  58. package/dist/{memory-cli-DotHyA76.js → memory-cli-XxOC0_-M.js} +2 -2
  59. package/dist/{models-CmToZKBp.js → models-Bf57T7rZ.js} +2 -2
  60. package/dist/{models-cli-Di7iKhD4.js → models-cli-BoUVPeOA.js} +6 -6
  61. package/dist/{models-cli-CZgkOUZB.js → models-cli-C7UZtCdE.js} +16 -16
  62. package/dist/{node-cli-BXv9SEDG.js → node-cli-DBa3SOQb.js} +6 -6
  63. package/dist/{nodes-cli-Cim3ANNU.js → nodes-cli-Dx8iwcda.js} +3 -3
  64. package/dist/{onboard-CuLvp4Ds.js → onboard-CvXaQ6g7.js} +3 -3
  65. package/dist/{onboard-BXI02b3e.js → onboard-CvspL8de.js} +1 -1
  66. package/dist/{onboard-channels-E5NIYGJz.js → onboard-channels-Bf0N23cr.js} +1 -1
  67. package/dist/{onboard-channels-A6_QP7MR.js → onboard-channels-MlbB9sk1.js} +1 -1
  68. package/dist/{onboard-helpers---sZ9pdZ.js → onboard-helpers-DP7FgSbE.js} +1 -1
  69. package/dist/{onboard-remote-BUB3VPBP.js → onboard-remote-KlZ04Ycj.js} +1 -1
  70. package/dist/{onboard-skills-Cs3BZ4VJ.js → onboard-skills-C2YVZLtY.js} +1 -1
  71. package/dist/{onboarding-BeYl1Egj.js → onboarding-Bkqm3GYG.js} +3 -3
  72. package/dist/{onboarding-BWMBA6cP.js → onboarding-Dhjsa9Kl.js} +7 -7
  73. package/dist/{onboarding.finalize-CH8dBgA2.js → onboarding.finalize-DEnbT-08.js} +13 -13
  74. package/dist/{onboarding.finalize-Bk-XW8b3.js → onboarding.finalize-Dj2kTz2P.js} +4 -4
  75. package/dist/{onboarding.gateway-config-arRNxrI9.js → onboarding.gateway-config-1PP2Esxt.js} +3 -3
  76. package/dist/{pi-embedded-0I7WdtRz.js → pi-embedded-DisxTf9Y.js} +50 -12
  77. package/dist/{pi-embedded-helpers-B5cWV7_y.js → pi-embedded-helpers-x7n6pMgT.js} +1 -1
  78. package/dist/{pi-tools.policy-BdGVEMZn.js → pi-tools.policy-J58A7qFU.js} +1 -1
  79. package/dist/{plugin-registry-CAdIrLmG.js → plugin-registry-BTkbl0FJ.js} +1 -1
  80. package/dist/{plugin-registry-DovNSdK0.js → plugin-registry-D-hgQT7P.js} +1 -1
  81. package/dist/plugin-sdk/agents/pi-tools.types.d.ts +1 -2
  82. package/dist/plugin-sdk/agents/tools/availability-filter.d.ts +10 -0
  83. package/dist/plugin-sdk/agents/tools/common.d.ts +30 -0
  84. package/dist/{plugins-cli-ZG4PxNTC.js → plugins-cli-Bh5QiPdZ.js} +15 -15
  85. package/dist/{plugins-cli-JzKO-vmR.js → plugins-cli-kV-uO1kp.js} +5 -5
  86. package/dist/{program-BbfU4idg.js → program-CbGjDDWP.js} +10 -10
  87. package/dist/{program-context-ByiEP1Lk.js → program-context-DFJyoCC0.js} +30 -30
  88. package/dist/{prompt-select-styled-DvrG_zWV.js → prompt-select-styled-DaVdKaBp.js} +8 -8
  89. package/dist/{prompt-select-styled-CWH2Mcrb.js → prompt-select-styled-p9o4e4m6.js} +4 -4
  90. package/dist/{provider-auth-helpers-2x7YxT5F.js → provider-auth-helpers-BCiBe4Q9.js} +1 -1
  91. package/dist/{provider-auth-helpers-CMQexdSl.js → provider-auth-helpers-CoGyeok2.js} +1 -1
  92. package/dist/{push-apns-CtWwPxRj.js → push-apns-BorKE_Qo.js} +1 -1
  93. package/dist/{push-apns-eGdGU3r7.js → push-apns-DzCR9bci.js} +1 -1
  94. package/dist/{pw-ai-tgngV3iZ.js → pw-ai-8E0uhtHT.js} +1 -1
  95. package/dist/{pw-ai-BOOB8qoi.js → pw-ai-BFS9ezWe.js} +1 -1
  96. package/dist/{register.agent-Dwkya1rv.js → register.agent-CaN-g4uZ.js} +19 -19
  97. package/dist/{register.agent-DZE9NBNx.js → register.agent-DydJFXJP.js} +9 -9
  98. package/dist/{register.configure-CD8WkXo8.js → register.configure-BVe4hnaS.js} +8 -8
  99. package/dist/{register.configure-DCpbCHR0.js → register.configure-DAy2cE8-.js} +22 -22
  100. package/dist/{register.maintenance-Bqjj77CZ.js → register.maintenance-DOPFPjF1.js} +20 -20
  101. package/dist/{register.maintenance-CxVeo_7j.js → register.maintenance-dg4F8WtF.js} +9 -9
  102. package/dist/{register.message-tcJN7-E3.js → register.message-BcVCnsvF.js} +5 -5
  103. package/dist/{register.message-uhAmNxoO.js → register.message-C142fUnJ.js} +15 -15
  104. package/dist/{register.onboard-F6d_Wrv1.js → register.onboard-JdqDBt_q.js} +6 -6
  105. package/dist/{register.onboard-Rm5t0yxX.js → register.onboard-rAsjY0XL.js} +2 -2
  106. package/dist/{register.setup-C2datfZK.js → register.setup--uV2P6Rv.js} +2 -2
  107. package/dist/{register.setup-CcHxpsUT.js → register.setup-D1aL4OSn.js} +6 -6
  108. package/dist/{register.status-health-sessions-DIUDRMqm.js → register.status-health-sessions-78J4b8E3.js} +13 -13
  109. package/dist/{register.status-health-sessions-DFVjS9Hy.js → register.status-health-sessions-CsaUl0vE.js} +3 -3
  110. package/dist/{register.subclis-D9uGnVGm.js → register.subclis-BVReTdEZ.js} +9 -9
  111. package/dist/{routes-C-rIjd8Z.js → routes-DIFuU49J.js} +2 -2
  112. package/dist/{rpc-BkFkeuJ6.js → rpc-DfaVxm4P.js} +1 -1
  113. package/dist/{run-main-HkbyvIDy.js → run-main-Crj9RFFj.js} +17 -17
  114. package/dist/{sandbox-Dx8IMw-E.js → sandbox-DR_uvPm8.js} +3 -3
  115. package/dist/{sandbox-cli-BFkLKdlk.js → sandbox-cli-we8HwKzB.js} +4 -4
  116. package/dist/{security-cli-BEpQ_rO1.js → security-cli-B3nmOCuA.js} +8 -8
  117. package/dist/{server-context--mmXXEkE.js → server-context-DZK_rfwz.js} +4 -4
  118. package/dist/{server-methods-DJ8eiTu1.js → server-methods-BR_LQLUr.js} +6 -6
  119. package/dist/{server-methods-RtjWUhkv.js → server-methods-qP6jEpBJ.js} +12 -12
  120. package/dist/{server-node-events-DQ1iCUgY.js → server-node-events-BLrBQ1Ix.js} +16 -16
  121. package/dist/{server-node-events-CT8fFtBQ.js → server-node-events-C9CEaVgd.js} +6 -6
  122. package/dist/{status-EAjzyREy.js → status-COihHYJZ.js} +1 -1
  123. package/dist/{status-CuMBp54T.js → status-DCL7G3Ib.js} +5 -5
  124. package/dist/{status-CoqGtHXq.js → status-DTQT3d18.js} +1 -1
  125. package/dist/{status-Cpz64Vy_.js → status-ORM-gYB7.js} +1 -1
  126. package/dist/{subagent-registry-Dkif1XYO.js → subagent-registry-8gdHiRIg.js} +43 -5
  127. package/dist/{synthesis-D3fpp3Vu.js → synthesis-CH82c52O.js} +4 -4
  128. package/dist/{synthesis-CKKZrrYd.js → synthesis-CppYEB8e.js} +14 -14
  129. package/dist/{synthesis-B0PXRiiM.js → synthesis-RrXFr-nJ.js} +2 -2
  130. package/dist/{synthesis-CpsURf9J.js → synthesis-SpZQv_zc.js} +4 -4
  131. package/dist/{system-cli-DMKzffe3.js → system-cli-DNR3YCgN.js} +3 -3
  132. package/dist/{tui-CqrM_Fj2.js → tui-BADAjgA5.js} +3 -3
  133. package/dist/{tui-cli-BsqRmqTX.js → tui-cli-3ZepuEPv.js} +8 -8
  134. package/dist/{unified-runner-DkPztkL8.js → unified-runner-97bDoU4e.js} +43 -5
  135. package/dist/{unified-runner-DZAjU6aB.js → unified-runner-DOYB1_-K.js} +53 -15
  136. package/dist/{update-cli-t7W6vcQY.js → update-cli-BTkGps8b.js} +21 -21
  137. package/dist/{update-cli-Bgk30eoA.js → update-cli-CKoIGU3l.js} +9 -9
  138. package/dist/{with-timeout-B5zAsivw.js → with-timeout-CGWq0-d5.js} +1 -1
  139. package/package.json +1 -1
@@ -31,7 +31,7 @@ import { t as emitSessionTranscriptUpdate } from "./transcript-events-ChU6IQwp.j
31
31
  import { n as isSilentReplyText, t as SILENT_REPLY_TOKEN } from "./tokens-D_vCJSzF.js";
32
32
  import { a as logMessageProcessed, i as logLaneEnqueue, o as logMessageQueued, r as logLaneDequeue, s as logSessionStateChange, t as diag } from "./diagnostic-BALvP9wI.js";
33
33
  import { n as getDiagnosticSessionState } from "./diagnostic-session-state-BDfanaOY.js";
34
- import { a as parseGeminiAuth, c as resolveMemorySearchConfig, d as requireApiKey, f as resolveApiKeyForProvider, h as resolveModelAuthMode, i as resolveOllamaBaseUrl, l as getApiKeyForModel, m as resolveEnvApiKey, n as retryAsync, o as collectProviderApiKeysForExecution, p as resolveAwsSdkEnvVarName, r as probeOllamaEmbeddingModels, s as executeWithApiKeyRotation, u as getCustomProviderApiKey } from "./manager-BIt2_nlu.js";
34
+ import { a as parseGeminiAuth, c as resolveMemorySearchConfig, d as requireApiKey, f as resolveApiKeyForProvider, h as resolveModelAuthMode, i as resolveOllamaBaseUrl, l as getApiKeyForModel, m as resolveEnvApiKey, n as retryAsync, o as collectProviderApiKeysForExecution, p as resolveAwsSdkEnvVarName, r as probeOllamaEmbeddingModels, s as executeWithApiKeyRotation, u as getCustomProviderApiKey } from "./manager-Dj2dVPGR.js";
35
35
  import { r as resolveCopilotApiToken, t as DEFAULT_COPILOT_API_BASE_URL } from "./github-copilot-token-uhEBNQfj.js";
36
36
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-DCGR3yfh.js";
37
37
  import { a as resolveEffectiveMessagesConfig, i as resolveAckReaction, o as resolveHumanDelayConfig, r as resolveResponsePrefixTemplate, t as createReplyPrefixOptions } from "./reply-prefix-D0NzzC4I.js";
@@ -4460,7 +4460,7 @@ async function getMemorySearchManager(params) {
4460
4460
  const wrapper = new FallbackMemoryManager({
4461
4461
  primary,
4462
4462
  fallbackFactory: async () => {
4463
- const { MemoryIndexManager } = await import("./manager-BIt2_nlu.js").then((n) => n.t);
4463
+ const { MemoryIndexManager } = await import("./manager-Dj2dVPGR.js").then((n) => n.t);
4464
4464
  return await MemoryIndexManager.get(params);
4465
4465
  }
4466
4466
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -4473,7 +4473,7 @@ async function getMemorySearchManager(params) {
4473
4473
  }
4474
4474
  }
4475
4475
  try {
4476
- const { MemoryIndexManager } = await import("./manager-BIt2_nlu.js").then((n) => n.t);
4476
+ const { MemoryIndexManager } = await import("./manager-Dj2dVPGR.js").then((n) => n.t);
4477
4477
  return { manager: await MemoryIndexManager.get(params) };
4478
4478
  } catch (err) {
4479
4479
  return {
@@ -53101,6 +53101,44 @@ function applyToolPolicyPipeline(params) {
53101
53101
  return filtered;
53102
53102
  }
53103
53103
 
53104
+ //#endregion
53105
+ //#region src/agents/tools/availability-filter.ts
53106
+ const FORCE_ALL_TOOLS_ENV = "SYMI_FORCE_ALL_TOOLS";
53107
+ /**
53108
+ * Filter the tool palette by each tool's `checkFn`. Tools without a
53109
+ * checkFn pass through unchanged. Throwing checkFns are treated as
53110
+ * available (defensive). The `SYMI_FORCE_ALL_TOOLS=1` env bypasses the
53111
+ * filter entirely.
53112
+ *
53113
+ * Pure function — does not mutate the input array.
53114
+ */
53115
+ function filterToolsByAvailability(tools) {
53116
+ if (isTruthyEnvValue(process.env[FORCE_ALL_TOOLS_ENV])) return [...tools];
53117
+ const out = [];
53118
+ for (const tool of tools) {
53119
+ if (!tool.checkFn) {
53120
+ out.push(tool);
53121
+ continue;
53122
+ }
53123
+ let available;
53124
+ try {
53125
+ available = tool.checkFn();
53126
+ } catch (err) {
53127
+ logVerbose(`tool availability: checkFn for "${getToolName(tool)}" threw — including tool anyway. ${String(err)}`);
53128
+ out.push(tool);
53129
+ continue;
53130
+ }
53131
+ if (available) out.push(tool);
53132
+ else logVerbose(`tool availability: filtered out "${getToolName(tool)}" — checkFn returned false. Set ${FORCE_ALL_TOOLS_ENV}=1 to bypass this filter.`);
53133
+ }
53134
+ return out;
53135
+ }
53136
+ function getToolName(tool) {
53137
+ const definition = tool.definition;
53138
+ if (definition && typeof definition.name === "string") return definition.name;
53139
+ return "(unknown tool)";
53140
+ }
53141
+
53104
53142
  //#endregion
53105
53143
  //#region src/agents/pi-tools.ts
53106
53144
  function isOpenAIProvider(provider) {
@@ -53320,7 +53358,7 @@ function createSymiCodingTools(options) {
53320
53358
  root: sandboxRoot,
53321
53359
  bridge: sandboxFsBridge
53322
53360
  }), readEditTracker) : null;
53323
- const withHooks = applyToolPolicyPipeline({
53361
+ const withHooks = filterToolsByAvailability(applyToolPolicyPipeline({
53324
53362
  tools: applyOwnerOnlyToolPolicy([
53325
53363
  ...base,
53326
53364
  ...sandboxRoot ? allowWorkspaceWrites && sandboxedEditTool && sandboxedWriteTool ? [workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxedEditTool, sandboxRoot) : sandboxedEditTool, workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxedWriteTool, sandboxRoot) : sandboxedWriteTool] : [] : [],
@@ -53392,7 +53430,7 @@ function createSymiCodingTools(options) {
53392
53430
  label: "subagent tools.allow"
53393
53431
  }
53394
53432
  ]
53395
- }).map((tool) => normalizeToolParameters(tool, { modelProvider: options?.modelProvider })).map((tool) => wrapToolWithBeforeToolCallHook(tool, {
53433
+ })).map((tool) => normalizeToolParameters(tool, { modelProvider: options?.modelProvider })).map((tool) => wrapToolWithBeforeToolCallHook(tool, {
53396
53434
  agentId,
53397
53435
  sessionKey: options?.sessionKey,
53398
53436
  loopDetection: resolveToolLoopDetectionConfig({
@@ -13,19 +13,19 @@ import { C as DEFAULT_MODEL, S as DEFAULT_CONTEXT_TOKENS, _ as resolveModelRefFr
13
13
  import { n as normalizeSecretInput } from "./normalize-secret-input-DjGU5EXe.js";
14
14
  import { n as saveJsonFile, t as loadJsonFile } from "./json-file-CNp4GTiH.js";
15
15
  import { t as resolveSymiAgentDir } from "./agent-paths-BbZSGrUA.js";
16
- import { A as isRawApiErrorPayload, B as sanitizeGoogleTurnOrdering, C as isCloudCodeAssistFormatError, D as isFailoverErrorMessage, E as isFailoverAssistantError, F as sanitizeUserFacingText, I as buildBootstrapContextFiles, L as ensureSessionHeader, M as isTransientHttpError, N as parseImageDimensionError, O as isLikelyContextOverflowError, P as parseImageSizeError, R as resolveBootstrapMaxChars, S as isBillingAssistantError, T as isContextOverflowError, _ as formatAssistantErrorText, a as normalizeTextForComparison, b as getApiErrorPayloadFingerprint, c as sanitizeToolResultImages, d as extractToolResultId, f as downgradeOpenAIReasoningBlocks, g as classifyFailoverReason, h as BILLING_ERROR_USER_MESSAGE, i as isMessagingToolDuplicateNormalized, j as isTimeoutErrorMessage, k as isRateLimitAssistantError, l as resolveImageSanitizationLimits, m as isGoogleModelApi, n as validateGeminiTurns, o as sanitizeSessionMessagesImages, p as isAntigravityClaude, r as pickFallbackThinkingLevel, s as sanitizeImageBlocks, t as validateAnthropicTurns, u as extractToolCallsFromAssistant, v as formatBillingErrorMessage, w as isCompactionFailureError, x as isAuthAssistantError, y as formatRawAssistantErrorForUi, z as resolveBootstrapTotalMaxChars } from "./pi-embedded-helpers-B5cWV7_y.js";
16
+ import { A as isRawApiErrorPayload, B as sanitizeGoogleTurnOrdering, C as isCloudCodeAssistFormatError, D as isFailoverErrorMessage, E as isFailoverAssistantError, F as sanitizeUserFacingText, I as buildBootstrapContextFiles, L as ensureSessionHeader, M as isTransientHttpError, N as parseImageDimensionError, O as isLikelyContextOverflowError, P as parseImageSizeError, R as resolveBootstrapMaxChars, S as isBillingAssistantError, T as isContextOverflowError, _ as formatAssistantErrorText, a as normalizeTextForComparison, b as getApiErrorPayloadFingerprint, c as sanitizeToolResultImages, d as extractToolResultId, f as downgradeOpenAIReasoningBlocks, g as classifyFailoverReason, h as BILLING_ERROR_USER_MESSAGE, i as isMessagingToolDuplicateNormalized, j as isTimeoutErrorMessage, k as isRateLimitAssistantError, l as resolveImageSanitizationLimits, m as isGoogleModelApi, n as validateGeminiTurns, o as sanitizeSessionMessagesImages, p as isAntigravityClaude, r as pickFallbackThinkingLevel, s as sanitizeImageBlocks, t as validateAnthropicTurns, u as extractToolCallsFromAssistant, v as formatBillingErrorMessage, w as isCompactionFailureError, x as isAuthAssistantError, y as formatRawAssistantErrorForUi, z as resolveBootstrapTotalMaxChars } from "./pi-embedded-helpers-x7n6pMgT.js";
17
17
  import { A as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, C as unsetConfigValueAtPath, N as VERSION, S as setConfigValueAtPath, _ as resetConfigOverrides, b as getConfigValueAtPath, c as resolveConfigSnapshotHash, f as parseDurationMs, g as getConfigOverrides, h as validateJsonSchemaValue, i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot, u as validateConfigObjectWithPlugins, v as setConfigOverride, x as parseConfigPath, y as unsetConfigOverride } from "./config-D7SS4vdk.js";
18
18
  import { t as parseBooleanValue } from "./boolean-CbZoNRMn.js";
19
19
  import { t as isTruthyEnvValue } from "./env-BRnPI9sO.js";
20
20
  import { i as resolveShellEnvFallbackTimeoutMs, n as getShellPathFromLoginShell } from "./shell-env-Dc3iU7HK.js";
21
21
  import { a as safeStatSync, c as applyTestPluginDefaults, d as resolveEnableState, f as resolveMemorySlotDecision, h as isDangerousHostEnvVarName, i as isPathInside, n as loadPluginManifestRegistry, r as discoverSymiPlugins, u as normalizePluginsConfig } from "./manifest-registry-D1MLZEjS.js";
22
22
  import { a as isPathInsideWithRealpath } from "./legacy-names-BQ9vKISY.js";
23
- import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-Dx8IMw-E.js";
24
- import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-rzK8edU7.js";
25
- import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context--mmXXEkE.js";
23
+ import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-DR_uvPm8.js";
24
+ import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-xlyBE8q3.js";
25
+ import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-DZK_rfwz.js";
26
26
  import { l as parseFrontmatterBlock } from "./frontmatter-B_jqcova.js";
27
27
  import { a as resolveSkillsPromptForRun, d as resolveSandboxInputPath, h as applySkillEnvOverridesFromSnapshot, i as loadWorkspaceSkillEntries, l as assertMediaNotDataUrl, m as applySkillEnvOverrides, p as resolveSandboxedMediaSource, r as buildWorkspaceSkillSnapshot, u as assertSandboxPath } from "./skills-BwDmcZdt.js";
28
- import { n as getMediaDir, r as saveMediaBuffer } from "./routes-C-rIjd8Z.js";
28
+ import { n as getMediaDir, r as saveMediaBuffer } from "./routes-DIFuU49J.js";
29
29
  import { n as formatErrorMessage, r as formatUncaughtError, t as extractErrorCode } from "./errors-bI7Tdx75.js";
30
30
  import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./paths-DObzwe08.js";
31
31
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-DOZRI5XH.js";
@@ -50,10 +50,10 @@ import { b as OLLAMA_NATIVE_BASE_URL, c as normalizeGoogleModelId, t as ensureSy
50
50
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-Db8XJVGL.js";
51
51
  import { c as hasNonzeroUsage, l as normalizeUsage, n as loadCostUsageSummary, o as derivePromptTokens, r as loadSessionCostSummary } from "./session-cost-usage-D6Ocwmq1.js";
52
52
  import { C as enqueueSystemEvent, E as buildChannelSummary, S as drainSystemEventEntries, _ as loadProviderUsageSummary, a as loadCombinedSessionStoreForGateway, b as resolveUsageProviderId, d as formatDoctorNonInteractiveHint, g as writeRestartSentinel, k as redactIdentifier, x as lookupContextTokens, y as formatUsageWindowSummary } from "./session-utils-BZnPW904.js";
53
- import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$2 } from "./with-timeout-B5zAsivw.js";
53
+ import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$2 } from "./with-timeout-CGWq0-d5.js";
54
54
  import { i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-BFNeXT65.js";
55
- import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-B4DsKRSc.js";
56
- import { a as parseGeminiAuth, c as resolveMemorySearchConfig, n as retryAsync, o as collectProviderApiKeysForExecution, s as executeWithApiKeyRotation } from "./manager-BLg6zbeA.js";
55
+ import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-D_CuTCAW.js";
56
+ import { a as parseGeminiAuth, c as resolveMemorySearchConfig, n as retryAsync, o as collectProviderApiKeysForExecution, s as executeWithApiKeyRotation } from "./manager-C1bLWQJb.js";
57
57
  import { f as runTasksWithConcurrency } from "./internal-DVCddhhN.js";
58
58
  import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-BxfKjCUx.js";
59
59
  import { n as resolveMarkdownTableMode } from "./markdown-tables-CS1Tvb3z.js";
@@ -62,8 +62,8 @@ import { t as fetchWithSsrFGuard } from "./fetch-guard-JHxT9355.js";
62
62
  import { n as getDefaultMediaLocalRoots } from "./local-roots-CgDCgCuM.js";
63
63
  import { i as resolveNativeSkillsEnabled, n as isRestartEnabled, r as resolveNativeCommandsEnabled, t as isCommandFlagEnabled } from "./commands-DUzLGgEZ.js";
64
64
  import { a as shouldHandleTextCommands, i as normalizeCommandBody, n as listChatCommands, r as listChatCommandsForConfig } from "./commands-registry-VfAQOVZO.js";
65
- import { zt as SESSION_LABEL_MAX_LENGTH } from "./client-BzUAFrla.js";
66
- import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege } from "./call-BouPakqe.js";
65
+ import { zt as SESSION_LABEL_MAX_LENGTH } from "./client-iv2QpsT1.js";
66
+ import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege } from "./call-BOE4s-tQ.js";
67
67
  import { n as resolveToolDisplay, t as formatToolDetail } from "./tool-display-DFOL6UQ9.js";
68
68
  import { n as formatTimeAgo } from "./format-relative-D4GQsWlP.js";
69
69
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-B7Rvs8pK.js";
@@ -79,14 +79,14 @@ import { t as formatDurationCompact$1 } from "./format-duration-CIjmjQST.js";
79
79
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-9ygk6nTV.js";
80
80
  import { i as resolveModelCostConfig, n as formatTokenCount$2, r as formatUsd, t as estimateUsageCost } from "./usage-format-_37Bn-Jb.js";
81
81
  import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-ChnKXZKi.js";
82
- import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-Ry7Le68N.js";
82
+ import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-BgfKoTwJ.js";
83
83
  import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-DUVGiPYV.js";
84
84
  import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-DF4bza2Q.js";
85
85
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-Zww0Y-HJ.js";
86
86
  import { t as parseTimeoutMs } from "./parse-timeout-DUdeaMqF.js";
87
- import { n as registerMemoryCli } from "./memory-cli-DotHyA76.js";
87
+ import { n as registerMemoryCli } from "./memory-cli-XxOC0_-M.js";
88
88
  import { i as resolveSlackThreadTs, n as deliverReplies, t as createSlackReplyDeliveryPlan } from "./replies-DzsYQ8Md.js";
89
- import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-BdGVEMZn.js";
89
+ import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-J58A7qFU.js";
90
90
  import { a as buildModelAliasLines, n as resolveModel$2 } from "./model-DsMHOvMn.js";
91
91
  import { createRequire } from "node:module";
92
92
  import process$1 from "node:process";
@@ -41554,6 +41554,44 @@ function applyToolPolicyPipeline(params) {
41554
41554
  return filtered;
41555
41555
  }
41556
41556
 
41557
+ //#endregion
41558
+ //#region src/agents/tools/availability-filter.ts
41559
+ const FORCE_ALL_TOOLS_ENV = "SYMI_FORCE_ALL_TOOLS";
41560
+ /**
41561
+ * Filter the tool palette by each tool's `checkFn`. Tools without a
41562
+ * checkFn pass through unchanged. Throwing checkFns are treated as
41563
+ * available (defensive). The `SYMI_FORCE_ALL_TOOLS=1` env bypasses the
41564
+ * filter entirely.
41565
+ *
41566
+ * Pure function — does not mutate the input array.
41567
+ */
41568
+ function filterToolsByAvailability(tools) {
41569
+ if (isTruthyEnvValue(process.env[FORCE_ALL_TOOLS_ENV])) return [...tools];
41570
+ const out = [];
41571
+ for (const tool of tools) {
41572
+ if (!tool.checkFn) {
41573
+ out.push(tool);
41574
+ continue;
41575
+ }
41576
+ let available;
41577
+ try {
41578
+ available = tool.checkFn();
41579
+ } catch (err) {
41580
+ logVerbose(`tool availability: checkFn for "${getToolName(tool)}" threw — including tool anyway. ${String(err)}`);
41581
+ out.push(tool);
41582
+ continue;
41583
+ }
41584
+ if (available) out.push(tool);
41585
+ else logVerbose(`tool availability: filtered out "${getToolName(tool)}" — checkFn returned false. Set ${FORCE_ALL_TOOLS_ENV}=1 to bypass this filter.`);
41586
+ }
41587
+ return out;
41588
+ }
41589
+ function getToolName(tool) {
41590
+ const definition = tool.definition;
41591
+ if (definition && typeof definition.name === "string") return definition.name;
41592
+ return "(unknown tool)";
41593
+ }
41594
+
41557
41595
  //#endregion
41558
41596
  //#region src/agents/pi-tools.ts
41559
41597
  function isOpenAIProvider(provider) {
@@ -41773,7 +41811,7 @@ function createSymiCodingTools(options) {
41773
41811
  root: sandboxRoot,
41774
41812
  bridge: sandboxFsBridge
41775
41813
  }), readEditTracker) : null;
41776
- const withHooks = applyToolPolicyPipeline({
41814
+ const withHooks = filterToolsByAvailability(applyToolPolicyPipeline({
41777
41815
  tools: applyOwnerOnlyToolPolicy([
41778
41816
  ...base,
41779
41817
  ...sandboxRoot ? allowWorkspaceWrites && sandboxedEditTool && sandboxedWriteTool ? [workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxedEditTool, sandboxRoot) : sandboxedEditTool, workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxedWriteTool, sandboxRoot) : sandboxedWriteTool] : [] : [],
@@ -41845,7 +41883,7 @@ function createSymiCodingTools(options) {
41845
41883
  label: "subagent tools.allow"
41846
41884
  }
41847
41885
  ]
41848
- }).map((tool) => normalizeToolParameters(tool, { modelProvider: options?.modelProvider })).map((tool) => wrapToolWithBeforeToolCallHook(tool, {
41886
+ })).map((tool) => normalizeToolParameters(tool, { modelProvider: options?.modelProvider })).map((tool) => wrapToolWithBeforeToolCallHook(tool, {
41849
41887
  agentId,
41850
41888
  sessionKey: options?.sessionKey,
41851
41889
  loopDetection: resolveToolLoopDetectionConfig({
@@ -1,4 +1,4 @@
1
- import "./unified-runner-DZAjU6aB.js";
1
+ import "./unified-runner-DOYB1_-K.js";
2
2
  import { j as theme } from "./registry-Sbac4a4z.js";
3
3
  import { _ as resolveStateDir } from "./paths-By0XjHBk.js";
4
4
  import { f as pathExists } from "./utils-CTPsqyE_.js";
@@ -12,20 +12,20 @@ import "./agent-scope-DOrZjOnW.js";
12
12
  import "./model-selection-7wdmO-Iw.js";
13
13
  import "./file-lock-BVUYnlQv.js";
14
14
  import "./agent-paths-BbZSGrUA.js";
15
- import "./pi-embedded-helpers-B5cWV7_y.js";
15
+ import "./pi-embedded-helpers-x7n6pMgT.js";
16
16
  import { l as writeConfigFile, o as readConfigFileSnapshot } from "./config-D7SS4vdk.js";
17
17
  import "./boolean-CbZoNRMn.js";
18
18
  import "./env-BRnPI9sO.js";
19
19
  import "./shell-env-Dc3iU7HK.js";
20
20
  import "./manifest-registry-D1MLZEjS.js";
21
- import "./sandbox-Dx8IMw-E.js";
22
- import "./chrome-rzK8edU7.js";
21
+ import "./sandbox-DR_uvPm8.js";
22
+ import "./chrome-xlyBE8q3.js";
23
23
  import "./tailscale-DpKBMIvx.js";
24
24
  import "./auth-Bkx-QuRN.js";
25
- import "./server-context--mmXXEkE.js";
25
+ import "./server-context-DZK_rfwz.js";
26
26
  import "./frontmatter-B_jqcova.js";
27
27
  import "./skills-BwDmcZdt.js";
28
- import "./routes-C-rIjd8Z.js";
28
+ import "./routes-DIFuU49J.js";
29
29
  import "./redact-B3O-RBO1.js";
30
30
  import "./errors-bI7Tdx75.js";
31
31
  import "./fs-safe-BdejYjW8.js";
@@ -51,10 +51,10 @@ import "./models-config-CRnTzdFs.js";
51
51
  import "./pi-auth-json-Db8XJVGL.js";
52
52
  import "./session-cost-usage-D6Ocwmq1.js";
53
53
  import { h as trimLogTail } from "./session-utils-BZnPW904.js";
54
- import "./with-timeout-B5zAsivw.js";
54
+ import "./with-timeout-CGWq0-d5.js";
55
55
  import "./reply-prefix-BFNeXT65.js";
56
- import "./memory-B4DsKRSc.js";
57
- import "./manager-BLg6zbeA.js";
56
+ import "./memory-D_CuTCAW.js";
57
+ import "./manager-C1bLWQJb.js";
58
58
  import "./sqlite-Cod7C5ba.js";
59
59
  import "./chunk-BxfKjCUx.js";
60
60
  import "./markdown-tables-CS1Tvb3z.js";
@@ -62,8 +62,8 @@ import "./fetch-guard-JHxT9355.js";
62
62
  import "./local-roots-CgDCgCuM.js";
63
63
  import "./commands-DUzLGgEZ.js";
64
64
  import "./commands-registry-VfAQOVZO.js";
65
- import "./client-BzUAFrla.js";
66
- import "./call-BouPakqe.js";
65
+ import "./client-iv2QpsT1.js";
66
+ import "./call-BOE4s-tQ.js";
67
67
  import "./pairing-token-Dcy37-4s.js";
68
68
  import "./tool-display-DFOL6UQ9.js";
69
69
  import "./skills-remote-bz71Bstn.js";
@@ -76,7 +76,7 @@ import "./exec-approvals-DioSaIeH.js";
76
76
  import "./nodes-screen-De9ma6e1.js";
77
77
  import { r as formatDurationPrecise } from "./format-duration-CIjmjQST.js";
78
78
  import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName } from "./constants-ChnKXZKi.js";
79
- import "./control-service-Ry7Le68N.js";
79
+ import "./control-service-BgfKoTwJ.js";
80
80
  import "./stagger-DUVGiPYV.js";
81
81
  import "./channel-selection-DF4bza2Q.js";
82
82
  import "./delivery-queue-RUd4NhRw.js";
@@ -86,13 +86,13 @@ import { t as formatDocsLink } from "./links-TQwptN6q.js";
86
86
  import "./cli-utils-tNdOjVQI.js";
87
87
  import { t as formatHelpExamples } from "./help-format-CPT6NY3h.js";
88
88
  import "./progress-HNhsbm0E.js";
89
- import "./memory-cli-DotHyA76.js";
89
+ import "./memory-cli-XxOC0_-M.js";
90
90
  import "./logging-Czh4x_NQ.js";
91
91
  import "./replies-DzsYQ8Md.js";
92
- import "./pi-tools.policy-BdGVEMZn.js";
92
+ import "./pi-tools.policy-J58A7qFU.js";
93
93
  import "./model-DsMHOvMn.js";
94
94
  import { r as parseSemver } from "./runtime-guard-DfRLODeV.js";
95
- import "./program-context-ByiEP1Lk.js";
95
+ import "./program-context-DFJyoCC0.js";
96
96
  import "./catalog-DsC3JTw1.js";
97
97
  import "./skills-status-iltfI_bO.js";
98
98
  import { n as inheritOptionFromParent } from "./command-options-nJfiotBs.js";
@@ -104,17 +104,17 @@ import "./npm-registry-spec-YMWTMnm_.js";
104
104
  import "./skill-scanner-BBwesm0w.js";
105
105
  import "./installs-DF_LhGX6.js";
106
106
  import "./channels-status-issues-mROqdfm_.js";
107
- import { r as installCompletion } from "./completion-cli-Bc1jojml.js";
107
+ import { r as installCompletion } from "./completion-cli-DvaCHwGr.js";
108
108
  import "./daemon-runtime-tZgIbDPz.js";
109
- import "./onboard-helpers---sZ9pdZ.js";
109
+ import "./onboard-helpers-DP7FgSbE.js";
110
110
  import "./systemd-DRpQb_L1.js";
111
111
  import { t as resolveGatewayService } from "./service-CyEDtYLq.js";
112
112
  import "./lifecycle-core-Bvdl2ShM.js";
113
113
  import "./systemd-hints-DR4u43WA.js";
114
- import { i as runDaemonInstall, r as runDaemonRestart } from "./daemon-cli-fC2R9YZd.js";
114
+ import { i as runDaemonInstall, r as runDaemonRestart } from "./daemon-cli-wRBPfyuU.js";
115
115
  import "./diagnostics-tVJR9V0_.js";
116
116
  import { t as renderTable } from "./table-D902H0x3.js";
117
- import "./health-DZ0aipDZ.js";
117
+ import "./health-B92I0vwb.js";
118
118
  import "./control-ui-assets-DuDhl0co.js";
119
119
  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-CxBGAP1E.js";
120
120
  import "./dm-policy-shared-CBlUyDSX.js";
@@ -125,8 +125,8 @@ import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from
125
125
  import "./doctor-config-flow-30ZEvATb.js";
126
126
  import "./systemd-linger-BQQl5RXN.js";
127
127
  import "./health-format-CUEM0lJl.js";
128
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-DvrG_zWV.js";
129
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-B6OPl_GZ.js";
128
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-DaVdKaBp.js";
129
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-C4vmp9I7.js";
130
130
  import path from "node:path";
131
131
  import os from "node:os";
132
132
  import fs from "node:fs/promises";
@@ -21,7 +21,7 @@ import "./client-BqT7xONl.js";
21
21
  import "./call-GzGqMHAx.js";
22
22
  import "./message-channel-DXToSaWK.js";
23
23
  import "./pairing-token-B-OTYROz.js";
24
- import "./subagent-registry-Dkif1XYO.js";
24
+ import "./subagent-registry-8gdHiRIg.js";
25
25
  import "./sessions-DHPf5TzB.js";
26
26
  import "./plugins-BsEhWvLn.js";
27
27
  import "./send-BBfSp-8Q.js";
@@ -51,8 +51,8 @@ import "./model-auth-Byr7Gic_.js";
51
51
  import "./github-copilot-token-B5y4__YM.js";
52
52
  import "./models-config-Br7EjqgG.js";
53
53
  import "./reply-prefix-DV3KhOhL.js";
54
- import "./memory-BENbCb4f.js";
55
- import "./manager-BhIaahpm.js";
54
+ import "./memory-BGLXu8Hn.js";
55
+ import "./manager-CVP2spyx.js";
56
56
  import "./sqlite-9jF_eajd.js";
57
57
  import "./chunk-B2lBXhR0.js";
58
58
  import "./markdown-tables-BEdkErjm.js";
@@ -84,7 +84,7 @@ import { t as formatDocsLink } from "./links-BDe4dm1J.js";
84
84
  import "./cli-utils-BhfE5XS2.js";
85
85
  import { t as formatHelpExamples } from "./help-format-CbgFRc-H.js";
86
86
  import "./progress-CqV5lJkt.js";
87
- import "./memory-cli-BIjwqjBx.js";
87
+ import "./memory-cli-DLyBqCnp.js";
88
88
  import "./logging-BeW3kpQA.js";
89
89
  import "./replies-LM-arXEE.js";
90
90
  import "./pi-tools.policy-4gtz_Ipq.js";
@@ -98,10 +98,10 @@ import "./npm-registry-spec-B5KYXHyZ.js";
98
98
  import "./skill-scanner-CH9qofCG.js";
99
99
  import "./installs-CylGJ0W4.js";
100
100
  import "./channels-status-issues-DGneT0fj.js";
101
- import "./register.subclis-D9uGnVGm.js";
102
- import "./command-registry-DAy62yhH.js";
101
+ import "./register.subclis-BVReTdEZ.js";
102
+ import "./command-registry-CZrQWdR_.js";
103
103
  import "./program-context-4vIUuzQk.js";
104
- import { r as installCompletion } from "./completion-cli-Bh-Y2NVp.js";
104
+ import { r as installCompletion } from "./completion-cli-CPiZTObN.js";
105
105
  import "./daemon-runtime-Cyqcsmvq.js";
106
106
  import { r as parseSemver } from "./runtime-guard-C8jl1lEu.js";
107
107
  import "./onboard-helpers-Cut7JJgz.js";
@@ -123,8 +123,8 @@ import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from
123
123
  import "./doctor-config-flow-B0pP_wcc.js";
124
124
  import "./systemd-linger-C6G2nDWK.js";
125
125
  import "./health-format-y74JTiFu.js";
126
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-CWH2Mcrb.js";
127
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BZJWX3Dr.js";
126
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-p9o4e4m6.js";
127
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-CBs1R4s0.js";
128
128
  import { spawn, spawnSync } from "node:child_process";
129
129
  import os from "node:os";
130
130
  import path from "node:path";
@@ -1,5 +1,5 @@
1
1
  import { c as escapeRegExp } from "./utils-CTPsqyE_.js";
2
- import { t as registerBrowserRoutes } from "./routes-C-rIjd8Z.js";
2
+ import { t as registerBrowserRoutes } from "./routes-DIFuU49J.js";
3
3
  import os from "node:os";
4
4
  import { promisify } from "node:util";
5
5
  import { execFile } from "node:child_process";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symerian/symi",
3
- "version": "3.4.25",
3
+ "version": "3.4.26",
4
4
  "description": "Multi-channel AI gateway with extensible messaging integrations",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/jaysteelmind/symi#readme",