@symerian/symi 2.6.18 → 2.6.20

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 (118) hide show
  1. package/dist/{agents-BEWe0DLk.js → agents-p4UQ5QFH.js} +4 -4
  2. package/dist/{agents.config-C76tSodQ.js → agents.config-D7aaLeuW.js} +1 -1
  3. package/dist/{agents.config-DxYp0zoG.js → agents.config-DDFFWWKf.js} +1 -1
  4. package/dist/{audio-preflight-CPBOQV4I.js → audio-preflight-C40mKAp7.js} +4 -4
  5. package/dist/{audio-preflight-BVaaZWkg.js → audio-preflight-DHTaS5U1.js} +4 -4
  6. package/dist/{auth-choice-EwOsmB_b.js → auth-choice-BXoSDb_9.js} +1 -1
  7. package/dist/{auth-choice-DrYJKB8t.js → auth-choice-DeYYQOns.js} +1 -1
  8. package/dist/{banner-CJyz7ro7.js → banner-_OS2xmMF.js} +1 -1
  9. package/dist/build-info.json +3 -3
  10. package/dist/bundled/boot-md/handler.js +6 -6
  11. package/dist/bundled/session-memory/handler.js +6 -6
  12. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  13. package/dist/{channel-options-D0NlH6Qb.js → channel-options-CbZIcMGC.js} +1 -1
  14. package/dist/{channel-options-tWyK68mk.js → channel-options-D9UfDD9j.js} +1 -1
  15. package/dist/{channel-web-PvWA2ukO.js → channel-web-L1DDfHzk.js} +1 -1
  16. package/dist/{channels-cli-B50IZ27a.js → channels-cli-4GM5fqNa.js} +4 -4
  17. package/dist/{channels-cli-BAXmmIxX.js → channels-cli-CXa7mgR9.js} +4 -4
  18. package/dist/{chrome-DkaXoP36.js → chrome-CDJYxX5a.js} +5 -5
  19. package/dist/{chrome-D2SKJnR7.js → chrome-DYZwl5Gv.js} +5 -5
  20. package/dist/{cli-CPKEDe6C.js → cli-B-wwaV4Y.js} +1 -1
  21. package/dist/{cli-BW4igUHG.js → cli-C8QNJgG8.js} +1 -1
  22. package/dist/{command-registry-DV-FTDz1.js → command-registry-DXdP9h9E.js} +9 -9
  23. package/dist/{completion-cli-BqzmOZg7.js → completion-cli-BqsjyQ-I.js} +1 -1
  24. package/dist/{completion-cli-Cbr2b-rs.js → completion-cli-hQmnRt3u.js} +2 -2
  25. package/dist/{config-cli-DBjlHFwQ.js → config-cli-DvqG-E-3.js} +1 -1
  26. package/dist/{config-cli-D5QqQi4y.js → config-cli-i08FMBVe.js} +1 -1
  27. package/dist/{configure-DbTH7t_m.js → configure-Cxa5EWql.js} +3 -3
  28. package/dist/{configure-B4VAN-WJ.js → configure-DKc61kbD.js} +3 -3
  29. package/dist/control-ui/js/models.js +2 -2
  30. package/dist/{deliver-C-37cZUe.js → deliver-BH0l3UKW.js} +1 -1
  31. package/dist/{deliver-C46-vyqg.js → deliver-dODxSv3b.js} +1 -1
  32. package/dist/{doctor-completion-v8uq--hy.js → doctor-completion-C9CcD8pq.js} +1 -1
  33. package/dist/{doctor-completion-Do0e0eZE.js → doctor-completion-Dq3zKXdh.js} +1 -1
  34. package/dist/entry.js +1 -1
  35. package/dist/extensionAPI.js +6 -6
  36. package/dist/{gateway-cli-BkOe3JQ_.js → gateway-cli-CxzaL9HR.js} +9 -9
  37. package/dist/{gateway-cli-BAiFaCGg.js → gateway-cli-D4JEZSb9.js} +9 -9
  38. package/dist/{glass-ui-ws-DFAQWoiK.js → glass-ui-ws-D4Dqbeuw.js} +7 -7
  39. package/dist/{glass-ui-ws-B8V4Slwd.js → glass-ui-ws-KXmUDlRi.js} +7 -7
  40. package/dist/{health-8bTzq722.js → health-8DlAtuas.js} +1 -1
  41. package/dist/{health-B3pwVJ_N.js → health-B8uQe9CP.js} +1 -1
  42. package/dist/{hooks-cli-D1Yhb7y5.js → hooks-cli-B7qROHCQ.js} +2 -2
  43. package/dist/{hooks-cli-Vqz0A84F.js → hooks-cli-BAM_LcfL.js} +2 -2
  44. package/dist/{image-DcpMiprB.js → image-CHzdaNJ4.js} +1 -1
  45. package/dist/{image-CuzFLQWC.js → image-CXu8W39c.js} +1 -1
  46. package/dist/index.js +6 -6
  47. package/dist/llm-slug-generator.js +6 -6
  48. package/dist/{models-cli-BrDyN5KN.js → models-cli-BFkooNFz.js} +3 -3
  49. package/dist/{models-cli-EP_U-tWq.js → models-cli-DwXzh6z6.js} +2 -2
  50. package/dist/{models-BQOnDzS9.js → models-xTtbDVki.js} +2 -2
  51. package/dist/{onboard-BZNptre7.js → onboard-8nBHoLPU.js} +2 -2
  52. package/dist/{onboard-DM0BChC6.js → onboard-D9GAiRIO.js} +2 -2
  53. package/dist/{onboard-channels-C6dLmiYY.js → onboard-channels-G9yKy7Ui.js} +1 -1
  54. package/dist/{onboard-channels-4jeB30Ty.js → onboard-channels-pSqXeoTx.js} +1 -1
  55. package/dist/{onboarding-DQJQ-k9A.js → onboarding-C8K3ipt8.js} +3 -3
  56. package/dist/{onboarding-CDdiYaCC.js → onboarding-Wha0uWD5.js} +3 -3
  57. package/dist/{onboarding.finalize-Bmd5TpyH.js → onboarding.finalize-CC_hOdGz.js} +5 -5
  58. package/dist/{onboarding.finalize-B82xL12C.js → onboarding.finalize-CPqgV8GM.js} +6 -6
  59. package/dist/{pi-embedded-Dtmwbds4.js → pi-embedded-9mHDXoCz.js} +67 -242
  60. package/dist/{pi-embedded-helpers-B8kqLWns.js → pi-embedded-helpers-lgx_U5KS.js} +4 -4
  61. package/dist/{pi-embedded-helpers-CfqDGQ9J.js → pi-embedded-helpers-pubKo8HQ.js} +4 -4
  62. package/dist/{plugin-registry-D7ylmzDw.js → plugin-registry-8Diq8Bpt.js} +1 -1
  63. package/dist/{plugin-registry-DG_WWCr9.js → plugin-registry-8qRWG0zs.js} +1 -1
  64. package/dist/plugin-sdk/{channel-web-_efq-pM9.js → channel-web-CVpBWp5N.js} +1 -1
  65. package/dist/plugin-sdk/index.js +2 -2
  66. package/dist/plugin-sdk/{reply-D2W7XCcz.js → reply-qc0sy-0a.js} +53 -228
  67. package/dist/plugin-sdk/{web-CmT3D7vj.js → web-BRiKjFQe.js} +2 -2
  68. package/dist/{plugins-cli-CMCwFRL9.js → plugins-cli-BsGLF2yJ.js} +2 -2
  69. package/dist/{plugins-cli-BUFrZlyR.js → plugins-cli-DSVlBtQR.js} +2 -2
  70. package/dist/{program-BdVazL5L.js → program-DXDaxm5S.js} +7 -7
  71. package/dist/{program-context-DZNOBe-u.js → program-context-0iUzRT8G.js} +17 -17
  72. package/dist/{prompt-select-styled-XyOMjPBV.js → prompt-select-styled-B9Vx6n4u.js} +4 -4
  73. package/dist/{prompt-select-styled-uLoOKbdZ.js → prompt-select-styled-BTsilnfC.js} +4 -4
  74. package/dist/{provider-auth-helpers-CWf7gdZW.js → provider-auth-helpers-DEqcL4cK.js} +1 -1
  75. package/dist/{provider-auth-helpers-D01YbcHZ.js → provider-auth-helpers-Ta9EaBo3.js} +1 -1
  76. package/dist/{push-apns-B-zVLcnN.js → push-apns-_7NSUBR2.js} +1 -1
  77. package/dist/{push-apns-B2bxLda8.js → push-apns-ivn-KjGr.js} +1 -1
  78. package/dist/{pw-ai-m0mj2KWK.js → pw-ai-B5asscAD.js} +1 -1
  79. package/dist/{pw-ai-1htA-NnS.js → pw-ai-De-KR9_s.js} +1 -1
  80. package/dist/{register.agent-BYZEiWk1.js → register.agent-BKM1SK6p.js} +6 -6
  81. package/dist/{register.agent-BF6_rPdM.js → register.agent-BR0TqnOO.js} +5 -5
  82. package/dist/{register.configure-4lt1A0NF.js → register.configure-B5vBXQB9.js} +6 -6
  83. package/dist/{register.configure-B0g-yfDR.js → register.configure-BIiuwamc.js} +6 -6
  84. package/dist/{register.maintenance-DXZyjFYw.js → register.maintenance-CQMV0_xM.js} +8 -8
  85. package/dist/{register.maintenance-WBpgdygw.js → register.maintenance-CzpoyDDR.js} +7 -7
  86. package/dist/{register.message-BHRBK4eH.js → register.message-DCx7M65y.js} +2 -2
  87. package/dist/{register.message-CuoXu-_e.js → register.message-Dg0DcwTW.js} +2 -2
  88. package/dist/{register.onboard-D-P9Wc41.js → register.onboard-BG0dlbOM.js} +4 -4
  89. package/dist/{register.onboard-D5-L8JYT.js → register.onboard-BWoUYNe1.js} +4 -4
  90. package/dist/{register.setup-D7NNQwXc.js → register.setup-BlhLiXjH.js} +4 -4
  91. package/dist/{register.setup-BzmkdzSO.js → register.setup-BsA9V9Zh.js} +4 -4
  92. package/dist/{register.status-health-sessions-BIwZhPIZ.js → register.status-health-sessions-DMBqK6OA.js} +3 -3
  93. package/dist/{register.status-health-sessions-DiCr003h.js → register.status-health-sessions-DnPQ6EbH.js} +3 -3
  94. package/dist/{register.subclis-BxbyrMu1.js → register.subclis-nswajsbE.js} +9 -9
  95. package/dist/{reply-BgOOEOPX.js → reply-DU025-Dw.js} +53 -228
  96. package/dist/{run-main-BW5eFi2Y.js → run-main-DjiZHV0H.js} +14 -14
  97. package/dist/{runner-BcQ0sF9T.js → runner-DUBExAb5.js} +1 -1
  98. package/dist/{runner-CU9l0uJh.js → runner-WAG0M5s9.js} +1 -1
  99. package/dist/{server-methods-D-Gd1kMo.js → server-methods-BefrlQc3.js} +7 -7
  100. package/dist/{server-methods-Dp8iuEko.js → server-methods-CrPLWtui.js} +7 -7
  101. package/dist/{server-node-events-CnjqDQbZ.js → server-node-events-CKYqZ_QS.js} +2 -2
  102. package/dist/{server-node-events-B2_RCsYi.js → server-node-events-CjsIxKpS.js} +2 -2
  103. package/dist/{status-CrVk9Tz5.js → status-BWaIkbur.js} +1 -1
  104. package/dist/{status-CGhoES6L.js → status-DWpakHjS.js} +1 -1
  105. package/dist/{status-4PSvL6ui.js → status-eergZLRZ.js} +2 -2
  106. package/dist/{status-kFfqsras.js → status-iuYHrvPw.js} +2 -2
  107. package/dist/{subagent-registry-M6DQwhYN.js → subagent-registry-C-JJ2VmR.js} +53 -228
  108. package/dist/{unified-runner-DckayuEM.js → unified-runner-BEC009tx.js} +67 -242
  109. package/dist/{update-cli-x5YGUm9F.js → update-cli-BEQF9OZ6.js} +7 -7
  110. package/dist/{update-cli-DCYkskZu.js → update-cli-C1B-X-g-.js} +8 -8
  111. package/dist/{update-runner-Dmki2xrH.js → update-runner-Dnq8KGjY.js} +1 -1
  112. package/dist/{update-runner-BIp88-4P.js → update-runner-zv3kaly2.js} +1 -1
  113. package/dist/{web-1JPHv6du.js → web-B5ciapWd.js} +6 -6
  114. package/dist/{web-DWSTD7Gy.js → web-BUXU8aHt.js} +1 -1
  115. package/dist/{web-rShvuTx4.js → web-DLKmJqCG.js} +2 -2
  116. package/dist/{web-C40boK8U.js → web-Dkz9WSaL.js} +6 -6
  117. package/package.json +1 -1
  118. package/skills/self-inspect/SKILL.md +0 -109
@@ -4,16 +4,16 @@ import { _ as isCronSessionKey, b as resolveThreadParentSessionKey, c as normali
4
4
  import { $ as warn, B as sleep$1, D as escapeRegExp, E as ensureDir$3, G as danger, I as resolveUserPath, J as logVerbose, M as normalizeE164, O as formatTerminalLink, R as shortenHomeInString, S as CONFIG_DIR, U as truncateUtf16Safe, V as sliceUtf16Safe, W as isPlainObject, X as setVerbose, Z as shouldLogVerbose, _ as matchPluginCommand, a as normalizeAnyChannelId, d as createPluginRegistry, dt as resolvePreferredSymiTmpDir, et as colorize, f as normalizePluginHttpPath, g as listPluginCommands, h as getPluginCommandSpecs, k as isRecord$1, l as requireActivePluginRegistry, lt as normalizeLogLevel, m as executePluginCommand, n as CHAT_CHANNEL_ORDER, nt as theme, o as normalizeChannelId, p as clearPluginCommands, r as DEFAULT_CHAT_CHANNEL, rt as getChildLogger, tt as isRich, u as setActivePluginRegistry, v as createInternalHookEvent, w as clampInt, x as triggerInternalHook, z as shortenHomePath } from "./registry-DYq1AYOv.js";
5
5
  import { a as resolveAgentModelPrimary, c as resolveDefaultAgentId, d as resolveSessionAgentIds, i as resolveAgentModelFallbacksOverride, l as resolveEffectiveModelFallbacks, n as resolveAgentConfig, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentId } from "./agent-scope-CpEJ0B88.js";
6
6
  import { a as registerActiveProgressLine, i as clearActiveProgressLine, n as createNonExitingRuntime, o as unregisterActiveProgressLine, r as defaultRuntime, t as createSubsystemLogger } from "./subsystem-BjyjJF-d.js";
7
- import { S as logWarn, _ as runExec, b as logError, f as loadWorkspaceBootstrapFiles, g as runCommandWithTimeout, h as resolveSymiPackageRootSync, i as DEFAULT_IDENTITY_FILENAME, l as ensureAgentWorkspace, m as resolveSymiPackageRoot, n as DEFAULT_AGENT_WORKSPACE_DIR, r as DEFAULT_BOOTSTRAP_FILENAME, u as filterBootstrapFilesForSession, v as spawnWithFallback, x as logInfo, y as logDebug } from "./workspace-DscDraUb.js";
7
+ import { S as logWarn, _ as runExec, b as logError, f as loadWorkspaceBootstrapFiles, g as runCommandWithTimeout, i as DEFAULT_IDENTITY_FILENAME, l as ensureAgentWorkspace, m as resolveSymiPackageRoot, n as DEFAULT_AGENT_WORKSPACE_DIR, r as DEFAULT_BOOTSTRAP_FILENAME, u as filterBootstrapFilesForSession, v as spawnWithFallback, x as logInfo, y as logDebug } from "./workspace-DscDraUb.js";
8
8
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-CbQV9WEg.js";
9
9
  import { $ as resolveSymiAgentDir, B as resolveApiKeyForProvider, C as normalizeProviderId, D as resolveModelRefFromString, E as resolveDefaultModelForAgent, F as OLLAMA_NATIVE_BASE_URL, H as resolveModelAuthMode, I as createOllamaStreamFn, K as resolveShellEnvFallbackTimeoutMs, L as getApiKeyForModel, O as resolveSubagentSpawnModelSelection, Q as resolveAuthProfileDisplayLabel, R as getCustomProviderApiKey, S as normalizeModelRef$2, T as resolveConfiguredModelRef, U as normalizeSecretInput, V as resolveEnvApiKey, W as getShellPathFromLoginShell, X as DEFAULT_MODEL, Y as DEFAULT_CONTEXT_TOKENS, Z as DEFAULT_PROVIDER, _ as buildConfiguredAllowlistKeys, a as markAuthProfileFailure, b as isCliProvider, c as dedupeProfileIds, d as ensureAuthProfileStore, f as resolveAuthStorePathForDisplay, g as buildAllowedModelSet, i as isProfileInCooldown, k as resolveThinkingDefault, l as listProfilesForProvider, n as resolveAuthProfileOrder, o as markAuthProfileUsed, p as withFileLock, r as getSoonestCooldownExpiry, s as resolveApiKeyForProfile, u as markAuthProfileGood, v as buildModelAliasIndex, x as modelKey, y as findNormalizedProviderValue, z as requireApiKey } from "./auth-profiles-DdK1Hxaa.js";
10
10
  import { n as formatCliCommand, r as resolveCliName, t as isTruthyEnvValue } from "./env-BDXYbTKj.js";
11
11
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-cCYzSU9h.js";
12
12
  import { t as parseBooleanValue$1 } from "./boolean-CE7i9tBR.js";
13
- import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-CfqDGQ9J.js";
13
+ import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-pubKo8HQ.js";
14
14
  import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-5SdHIcHU.js";
15
15
  import { a as applyTestPluginDefaults, c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, i as safeStatSync, n as discoverSymiPlugins, o as normalizePluginsConfig, r as isPathInside, s as resolveEnableState, t as loadPluginManifestRegistry, u as isPathInsideWithRealpath } from "./manifest-registry-yb7sAlu4.js";
16
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-DkaXoP36.js";
16
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-DYZwl5Gv.js";
17
17
  import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-Bs0AW1g3.js";
18
18
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-XIsvXeC-.js";
19
19
  import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, p as isGifMedia, s as resizeToJpeg, v as mediaKindFromMime } from "./image-ops-C7CauEK8.js";
@@ -31,10 +31,10 @@ import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i
31
31
  import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-CvhXrdgS.js";
32
32
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-BBh3Gsrx.js";
33
33
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-SqqWIT22.js";
34
- import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-C46-vyqg.js";
34
+ import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-dODxSv3b.js";
35
35
  import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-rPhsBoZz.js";
36
36
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Zw87xFym.js";
37
- 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-CuzFLQWC.js";
37
+ 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-CXu8W39c.js";
38
38
  import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-Bux9Y_xD.js";
39
39
  import { $ as isVoiceCompatibleAudio, A as extractTelegramLocation, B as normalizeAllowFromWithStore$1, C as buildTelegramGroupFrom, D as buildTypingThreadParams, E as buildTelegramThreadParams, F as resolveTelegramMediaPlaceholder, G as formatLocationText, H as firstDefined$1, I as resolveTelegramReplyId, J as readChannelAllowFromStore, K as toLocationContext, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, Q as listPairingChannels, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as isSenderIdAllowed, V as resolveSenderAllowMatch, W as mergeAllowFromSources, X as upsertChannelPairingRequest, Y as removeChannelAllowFromStoreEntry, Z as getPairingAdapter, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, et as parseTelegramTarget, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as hasBotMention, k as expandTextLinks, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as addChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as resolveTelegramTargetChatType, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-DYj_o4_F.js";
40
40
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-Bv5YDJc8.js";
@@ -49,7 +49,7 @@ import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-DL3f
49
49
  import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, t as getAgentScopedMediaLocalRoots } from "./local-roots-DhZz0Ybs.js";
50
50
  import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-CTiz95Vb.js";
51
51
  import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-Bfc7Uz0o.js";
52
- import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as registerUnhandledRejectionHandler } from "./runner-CU9l0uJh.js";
52
+ import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as registerUnhandledRejectionHandler } from "./runner-WAG0M5s9.js";
53
53
  import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile, i as resolveSkillCommandInvocation, l as pruneExpiredPending, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as writeJsonAtomic, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as resolvePairingPaths } from "./skill-commands-DcVwOafC.js";
54
54
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-DSDTl6Kj.js";
55
55
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-Bso4i15F.js";
@@ -80,7 +80,7 @@ import AjvPkg from "ajv";
80
80
  import { CURRENT_SESSION_VERSION, DefaultResourceLoader, SessionManager, SettingsManager, codingTools, createAgentSession, createEditTool, createReadTool, createWriteTool, estimateTokens, generateSummary, readTool } from "@mariozechner/pi-coding-agent";
81
81
  import { createServer } from "node:http";
82
82
  import { ProxyAgent, fetch as fetch$1 } from "undici";
83
- import WebSocket$1, { WebSocket } from "ws";
83
+ import WebSocket, { WebSocket as WebSocket$1 } from "ws";
84
84
  import { Buffer as Buffer$1 } from "node:buffer";
85
85
  import { EdgeTTS } from "node-edge-tts";
86
86
  import { createJiti } from "jiti";
@@ -104,30 +104,6 @@ import { apiThrottler } from "@grammyjs/transformer-throttler";
104
104
 
105
105
  //#region src/config/model-profiles-builtin.ts
106
106
  /**
107
- * Starter pack — always-on context for models with tool arg corruption.
108
- * ~500 tokens. Prevents the most common failure patterns.
109
- * For detailed file modification guides, the self-inspect skill cascades from here.
110
- */
111
- const STARTER_PACK = [
112
- "",
113
- "YOUR FILES (use read tool directly on these paths — NEVER use exec to find or read files):",
114
- "- Glass UI CSS: <SYMI_ROOT>/dist/control-ui/css/style.css",
115
- "- Glass UI HTML: <SYMI_ROOT>/dist/control-ui/index.html",
116
- "- Glass UI JS: <SYMI_ROOT>/dist/control-ui/js/app.js, gateway.js, render.js, models.js, history.js, symipulse.js, debug.js",
117
- "- Package: <SYMI_ROOT>/package.json",
118
- "- Config: ~/.symi/symi.json | Sessions: ~/.symi/agents/main/sessions/ | Memory: ~/.symi/state/memory/",
119
- "- For detailed modification guides, read the self-inspect skill.",
120
- "",
121
- "TOOL RULES (mandatory):",
122
- "- read/write/edit: Always provide the full absolute path directly. NEVER use exec with cat, head, find, grep, or ls to view files.",
123
- "- exec/bash: Provide only valid shell syntax. No tags, no tokens, no markup. Spell commands exactly.",
124
- "- web_search: Always include query argument. Example: web_search({ query: \"search terms\" })",
125
- "- sessions_spawn: Always include task and mode. Example: sessions_spawn({ label: \"name\", mode: \"run\", task: \"description\" })",
126
- "",
127
- "KNOWN SHELL COMMANDS (use exact spelling):",
128
- "awk basename brew cargo cat chmod chown cp curl cut date dd df diff dig dirname docker du echo env find gcc git go grep gunzip gzip head hostname id ifconfig ip java javac journalctl kill killall launchctl less ln locate ls make man mkdir mktemp more mount mv nc netstat nice node nohup npm npx open paste pbcopy pbpaste ping pip pip3 plutil printf ps pwd python python3 readlink realpath rm rmdir rsync ruby scp sed sleep sort ssh stat strings sudo su sw_vers sysctl system_profiler systemctl tail tar tee test top touch tr type uname uniq unzip wc wget which xargs xz yes zip"
129
- ];
130
- /**
131
107
  * Built-in model profiles. Ordered from most-specific to least-specific so
132
108
  * that `resolveModelProfile` can return the first match.
133
109
  *
@@ -170,8 +146,7 @@ const BUILTIN_PROFILES = [
170
146
  "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
171
147
  "- If you need to verify your work, do so before writing your response, not after.",
172
148
  "- Send brief progress updates on long tasks so the user knows you are active.",
173
- "- When calling tools, provide arguments as clean values only. Never include <|, |>, or XML-like tags in tool argument values. For exec/bash commands, provide only valid shell syntax.",
174
- ...STARTER_PACK
149
+ "- When calling tools, provide arguments as clean values only. Never include <|, |>, or XML-like tags in tool argument values. For exec/bash commands, provide only valid shell syntax."
175
150
  ],
176
151
  ui: {
177
152
  badge: "Local",
@@ -179,6 +154,52 @@ const BUILTIN_PROFILES = [
179
154
  armWatchdogOnSend: true
180
155
  }
181
156
  },
157
+ {
158
+ match: ["nemotron/"],
159
+ label: "Nemotron",
160
+ params: {
161
+ temperature: 1,
162
+ top_p: .95,
163
+ top_k: 64,
164
+ max_tokens: 4096,
165
+ stop: ["<end_of_turn>", "<eos>"]
166
+ },
167
+ streaming: {
168
+ deltaThrottleMs: 50,
169
+ flushOnFinal: true,
170
+ chunkPattern: "burst"
171
+ },
172
+ filters: {
173
+ stripPatterns: [
174
+ "<\\|channel>\\w*",
175
+ "<channel\\|>",
176
+ "<start_of_turn>(?:model|user)?",
177
+ "<end_of_turn>",
178
+ "<\\|(?:fim_prefix|fim_suffix|fim_middle)\\|>",
179
+ "^\\s*<bos>\\s*"
180
+ ],
181
+ suppressMonologue: true,
182
+ hasStructuredThinking: false,
183
+ validateToolArgs: true
184
+ },
185
+ promptAdditions: [
186
+ "CRITICAL OUTPUT RULES:",
187
+ "- Your response ends when you have delivered the answer. Do not append anything after.",
188
+ "- Do not output raw control tokens, channel tags, turn markers, or <|channel>thought syntax.",
189
+ "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
190
+ "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
191
+ "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
192
+ "- If you need to verify your work, do so before writing your response, not after.",
193
+ "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
194
+ "- When working on multi-step tasks, send a brief one-line status update so the user knows you are active.",
195
+ "- When calling tools, provide arguments as clean values only. Never include <|, |>, or XML-like tags in tool argument values. For exec/bash commands, provide only valid shell syntax."
196
+ ],
197
+ ui: {
198
+ badge: "Local",
199
+ watchdogMs: 6e5,
200
+ armWatchdogOnSend: true
201
+ }
202
+ },
182
203
  {
183
204
  match: ["anthropic/", "claude-"],
184
205
  label: "Claude",
@@ -243,8 +264,7 @@ const BUILTIN_PROFILES = [
243
264
  "- If you need to verify your work, do so before writing your response, not after.",
244
265
  "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
245
266
  "- When working on multi-step tasks, send a brief one-line status update so the user knows you are active.",
246
- "- When calling tools, provide arguments as clean values only. Never include <|, |>, or XML-like tags in tool argument values. For exec/bash commands, provide only valid shell syntax.",
247
- ...STARTER_PACK
267
+ "- When calling tools, provide arguments as clean values only. Never include <|, |>, or XML-like tags in tool argument values. For exec/bash commands, provide only valid shell syntax."
248
268
  ],
249
269
  ui: {
250
270
  badge: "CoreWeave",
@@ -8662,7 +8682,7 @@ var GatewayClient = class {
8662
8682
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
8663
8683
  });
8664
8684
  }
8665
- this.ws = new WebSocket(url, wsOptions);
8685
+ this.ws = new WebSocket$1(url, wsOptions);
8666
8686
  this.ws.on("open", () => {
8667
8687
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
8668
8688
  const tlsError = this.validateTlsFingerprint();
@@ -8881,7 +8901,7 @@ var GatewayClient = class {
8881
8901
  return null;
8882
8902
  }
8883
8903
  async request(method, params, opts) {
8884
- if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
8904
+ if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
8885
8905
  const id = randomUUID();
8886
8906
  const frame = {
8887
8907
  type: "req",
@@ -10147,7 +10167,7 @@ async function routeReply(params) {
10147
10167
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
10148
10168
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
10149
10169
  try {
10150
- const { deliverOutboundPayloads } = await import("./deliver-C46-vyqg.js").then((n) => n.n);
10170
+ const { deliverOutboundPayloads } = await import("./deliver-dODxSv3b.js").then((n) => n.n);
10151
10171
  return {
10152
10172
  ok: true,
10153
10173
  messageId: (await deliverOutboundPayloads({
@@ -43586,7 +43606,7 @@ async function deliverSessionMaintenanceWarning(params) {
43586
43606
  return;
43587
43607
  }
43588
43608
  try {
43589
- const { deliverOutboundPayloads } = await import("./deliver-C46-vyqg.js").then((n) => n.n);
43609
+ const { deliverOutboundPayloads } = await import("./deliver-dODxSv3b.js").then((n) => n.n);
43590
43610
  await deliverOutboundPayloads({
43591
43611
  cfg: params.cfg,
43592
43612
  channel,
@@ -47032,7 +47052,7 @@ async function describeStickerImage(params) {
47032
47052
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
47033
47053
  try {
47034
47054
  const buffer = await fs$1.readFile(imagePath);
47035
- const { describeImageWithModel } = await import("./image-CuzFLQWC.js").then((n) => n.n);
47055
+ const { describeImageWithModel } = await import("./image-CXu8W39c.js").then((n) => n.n);
47036
47056
  return (await describeImageWithModel({
47037
47057
  buffer,
47038
47058
  fileName: "sticker.webp",
@@ -49694,7 +49714,7 @@ async function preflightDiscordMessage(params) {
49694
49714
  let preflightTranscript;
49695
49715
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
49696
49716
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
49697
- const { transcribeFirstAudio } = await import("./audio-preflight-BVaaZWkg.js");
49717
+ const { transcribeFirstAudio } = await import("./audio-preflight-DHTaS5U1.js");
49698
49718
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
49699
49719
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
49700
49720
  ctx: {
@@ -53700,7 +53720,7 @@ function isVoiceChannelType(type) {
53700
53720
  function createDefaultDeps() {
53701
53721
  return {
53702
53722
  sendMessageWhatsApp: async (...args) => {
53703
- const { sendMessageWhatsApp } = await import("./web-1JPHv6du.js");
53723
+ const { sendMessageWhatsApp } = await import("./web-B5ciapWd.js");
53704
53724
  return await sendMessageWhatsApp(...args);
53705
53725
  },
53706
53726
  sendMessageTelegram: async (...args) => {
@@ -56605,7 +56625,7 @@ function createDiscordGatewayPlugin(params) {
56605
56625
  super(options);
56606
56626
  }
56607
56627
  createWebSocket(url) {
56608
- return new WebSocket$1(url, { agent });
56628
+ return new WebSocket(url, { agent });
56609
56629
  }
56610
56630
  }
56611
56631
  return new ProxyGatewayPlugin();
@@ -66823,7 +66843,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
66823
66843
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
66824
66844
  let preflightTranscript;
66825
66845
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
66826
- const { transcribeFirstAudio } = await import("./audio-preflight-BVaaZWkg.js");
66846
+ const { transcribeFirstAudio } = await import("./audio-preflight-DHTaS5U1.js");
66827
66847
  preflightTranscript = await transcribeFirstAudio({
66828
66848
  ctx: {
66829
66849
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -68980,7 +69000,7 @@ function loadWebLoginQr() {
68980
69000
  return webLoginQrPromise;
68981
69001
  }
68982
69002
  function loadWebChannel() {
68983
- webChannelPromise ??= import("./web-1JPHv6du.js");
69003
+ webChannelPromise ??= import("./web-B5ciapWd.js");
68984
69004
  return webChannelPromise;
68985
69005
  }
68986
69006
  function loadWhatsAppActions() {
@@ -75523,175 +75543,6 @@ function subscribeEmbeddedPiSession(params) {
75523
75543
  * @module
75524
75544
  */
75525
75545
  /**
75526
- * Known shell commands for prefix deduplication.
75527
- * When token boundary corruption doubles a command prefix (grep → grgrep,
75528
- * ls → lsls), we check the first token against this set. If stripping
75529
- * the repeated prefix yields a known command, use it.
75530
- *
75531
- * O(1) lookup. Zero false positives — no valid command is its own prefix doubled.
75532
- */
75533
- const KNOWN_COMMANDS = new Set([
75534
- "ls",
75535
- "cat",
75536
- "cp",
75537
- "mv",
75538
- "rm",
75539
- "mkdir",
75540
- "rmdir",
75541
- "touch",
75542
- "chmod",
75543
- "chown",
75544
- "chgrp",
75545
- "ln",
75546
- "pwd",
75547
- "echo",
75548
- "printf",
75549
- "head",
75550
- "tail",
75551
- "wc",
75552
- "sort",
75553
- "uniq",
75554
- "cut",
75555
- "tr",
75556
- "tee",
75557
- "xargs",
75558
- "env",
75559
- "date",
75560
- "sleep",
75561
- "true",
75562
- "false",
75563
- "yes",
75564
- "test",
75565
- "expr",
75566
- "basename",
75567
- "dirname",
75568
- "readlink",
75569
- "realpath",
75570
- "mktemp",
75571
- "stat",
75572
- "file",
75573
- "dd",
75574
- "df",
75575
- "du",
75576
- "id",
75577
- "whoami",
75578
- "hostname",
75579
- "uname",
75580
- "grep",
75581
- "egrep",
75582
- "fgrep",
75583
- "find",
75584
- "locate",
75585
- "sed",
75586
- "awk",
75587
- "diff",
75588
- "patch",
75589
- "strings",
75590
- "less",
75591
- "more",
75592
- "tar",
75593
- "gzip",
75594
- "gunzip",
75595
- "zip",
75596
- "unzip",
75597
- "bzip2",
75598
- "xz",
75599
- "curl",
75600
- "wget",
75601
- "ssh",
75602
- "scp",
75603
- "rsync",
75604
- "ping",
75605
- "dig",
75606
- "nslookup",
75607
- "netstat",
75608
- "lsof",
75609
- "nc",
75610
- "ifconfig",
75611
- "ip",
75612
- "ps",
75613
- "top",
75614
- "kill",
75615
- "killall",
75616
- "nohup",
75617
- "nice",
75618
- "which",
75619
- "type",
75620
- "where",
75621
- "man",
75622
- "sudo",
75623
- "su",
75624
- "mount",
75625
- "umount",
75626
- "systemctl",
75627
- "journalctl",
75628
- "launchctl",
75629
- "dmesg",
75630
- "sysctl",
75631
- "git",
75632
- "make",
75633
- "gcc",
75634
- "python",
75635
- "python3",
75636
- "pip",
75637
- "pip3",
75638
- "node",
75639
- "npm",
75640
- "npx",
75641
- "pnpm",
75642
- "yarn",
75643
- "cargo",
75644
- "go",
75645
- "ruby",
75646
- "gem",
75647
- "java",
75648
- "javac",
75649
- "docker",
75650
- "brew",
75651
- "open",
75652
- "pbcopy",
75653
- "pbpaste",
75654
- "defaults",
75655
- "diskutil",
75656
- "sw_vers",
75657
- "system_profiler",
75658
- "plutil",
75659
- "mdfind",
75660
- "mdls",
75661
- "softwareupdate",
75662
- "caffeinate",
75663
- "say",
75664
- "osascript",
75665
- "security",
75666
- "codesign",
75667
- "hdiutil",
75668
- "installer",
75669
- "lipo",
75670
- "otool",
75671
- "dscl",
75672
- "scutil"
75673
- ]);
75674
- /**
75675
- * Fix command prefix duplication from token boundary splits.
75676
- * Token corruption can double a multi-char prefix: grep → grgrep, ls → lsls.
75677
- * Check if the first token starts with a repeated prefix that, when removed,
75678
- * yields a known command.
75679
- *
75680
- * Examples: grgrep → grep, lsls → ls, catcat → cat, curlcurl → curl
75681
- */
75682
- function dedupCommandPrefix(command) {
75683
- const match = command.match(/^([a-zA-Z0-9_-]+)/);
75684
- if (!match) return command;
75685
- const firstToken = match[1];
75686
- if (KNOWN_COMMANDS.has(firstToken)) return command;
75687
- for (let prefixLen = 2; prefixLen <= Math.min(10, Math.floor(firstToken.length / 2)); prefixLen++) {
75688
- const prefix = firstToken.slice(0, prefixLen);
75689
- const candidate = firstToken.slice(prefixLen);
75690
- if (candidate.startsWith(prefix.slice(0, Math.min(prefix.length, candidate.length))) && KNOWN_COMMANDS.has(candidate)) return candidate + command.slice(firstToken.length);
75691
- }
75692
- return command;
75693
- }
75694
- /**
75695
75546
  * Validate that a command string contains extractable valid shell syntax.
75696
75547
  * Returns the cleaned command if valid, or an error reason if not.
75697
75548
  *
@@ -75710,7 +75561,6 @@ function validateShellCommand(command) {
75710
75561
  cleaned = cleaned.replace(/<\|[^|>]*(?:\|>)?/g, "").trim();
75711
75562
  cleaned = cleanResidualTokenFragments(cleaned);
75712
75563
  }
75713
- cleaned = dedupCommandPrefix(cleaned);
75714
75564
  if (!cleaned || !cleaned.trim()) return {
75715
75565
  valid: false,
75716
75566
  cleaned: "",
@@ -77049,18 +76899,7 @@ async function runEmbeddedAttempt(params) {
77049
76899
  const profileModelKey = params.modelId ?? "";
77050
76900
  const modelProfile = resolveModelProfile(profileModelKey, params.config?.models?.profiles);
77051
76901
  log$9.debug(`[profile] resolved: modelId=${profileModelKey} → profile=${modelProfile.label} validateToolArgs=${modelProfile.filters?.validateToolArgs ?? false}`);
77052
- const systemPromptText = createSystemPromptOverride(appendPrompt + (() => {
77053
- if (modelProfile.promptAdditions.length === 0) return "";
77054
- let text = "\n\n" + modelProfile.promptAdditions.join("\n");
77055
- if (text.includes("<SYMI_ROOT>")) {
77056
- const symiRoot = resolveSymiPackageRootSync({
77057
- moduleUrl: import.meta.url,
77058
- argv1: process.argv[1]
77059
- });
77060
- if (symiRoot) text = text.replaceAll("<SYMI_ROOT>", symiRoot);
77061
- }
77062
- return text;
77063
- })())();
76902
+ const systemPromptText = createSystemPromptOverride(appendPrompt + (modelProfile.promptAdditions.length > 0 ? "\n\n" + modelProfile.promptAdditions.join("\n") : ""))();
77064
76903
  const sessionLock = await acquireSessionWriteLock({
77065
76904
  sessionFile: params.sessionFile,
77066
76905
  maxHoldMs: resolveSessionLockMaxHoldFromTimeout({ timeoutMs: params.timeoutMs })
@@ -77334,18 +77173,6 @@ async function runEmbeddedAttempt(params) {
77334
77173
  const TOOL_ERROR_ABORT_THRESHOLD = 5;
77335
77174
  const TOOL_ERROR_WARN_THRESHOLD = 3;
77336
77175
  let consecutiveToolErrors = 0;
77337
- /** Detect exec/bash results that indicate a shell error (non-zero exit, command not found, etc.) */
77338
- const isShellErrorResult = (result) => {
77339
- if (!result || typeof result !== "object") return false;
77340
- const content = result.content;
77341
- if (!Array.isArray(content)) return false;
77342
- const text = content.filter((b) => b && typeof b === "object" && b.type === "text").map((b) => {
77343
- const t = b.text;
77344
- return typeof t === "string" ? t : "";
77345
- }).join("\n");
77346
- if (!text) return false;
77347
- return /exit code [1-9]\d*|command not found|No such file or directory|syntax error|parse error|Permission denied|not recognized|cannot execute/i.test(text);
77348
- };
77349
77176
  const subscription = subscribeEmbeddedPiSession({
77350
77177
  session: activeSession,
77351
77178
  runId: params.runId,
@@ -77371,9 +77198,7 @@ async function runEmbeddedAttempt(params) {
77371
77198
  const phase = typeof evt.data?.phase === "string" ? evt.data.phase : "";
77372
77199
  const isError = evt.data?.isError === true;
77373
77200
  if (phase === "result") {
77374
- const toolName = typeof evt.data?.name === "string" ? evt.data.name : "";
77375
- const isExecShellError = !isError && (toolName === "exec" || toolName === "bash") && isShellErrorResult(evt.data?.result);
77376
- if (isError || isExecShellError) consecutiveToolErrors++;
77201
+ if (isError) consecutiveToolErrors++;
77377
77202
  else consecutiveToolErrors = 0;
77378
77203
  if (consecutiveToolErrors >= TOOL_ERROR_ABORT_THRESHOLD) {
77379
77204
  const toolName = typeof evt.data?.name === "string" ? evt.data.name : "unknown";
@@ -1,7 +1,7 @@
1
1
  import { g as resolveStateDir } from "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, h as pathExists } from "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import { V as trimLogTail } from "./reply-BgOOEOPX.js";
4
+ import { V as trimLogTail } from "./reply-DU025-Dw.js";
5
5
  import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
6
6
  import "./registry-Cja8eT7G.js";
7
7
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
@@ -106,7 +106,7 @@ import "./stagger-BUClb97_.js";
106
106
  import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName } from "./constants-C8_BLnaW.js";
107
107
  import "./channel-selection-DuWs0Aak.js";
108
108
  import { r as parseSemver } from "./runtime-guard-B37eizu-.js";
109
- import "./program-context-DZNOBe-u.js";
109
+ import "./program-context-0iUzRT8G.js";
110
110
  import "./catalog-RiADx7MA.js";
111
111
  import "./skills-status-CURJKnyY.js";
112
112
  import { n as inheritOptionFromParent } from "./command-options-BtDai3oC.js";
@@ -117,7 +117,7 @@ import "./npm-registry-spec-C2JDdSZS.js";
117
117
  import "./skill-scanner-CLs8u6vQ.js";
118
118
  import "./installs-C1Cebk97.js";
119
119
  import "./channels-status-issues-B_kBkl_u.js";
120
- import { r as installCompletion } from "./completion-cli-BqzmOZg7.js";
120
+ import { r as installCompletion } from "./completion-cli-BqsjyQ-I.js";
121
121
  import "./daemon-runtime-2mwX-jqj.js";
122
122
  import "./systemd-riq8uNJQ.js";
123
123
  import { t as resolveGatewayService } from "./service-Cl74hx8J.js";
@@ -126,19 +126,19 @@ import "./systemd-hints-BR6gChwm.js";
126
126
  import { i as runDaemonInstall, r as runDaemonRestart } from "./daemon-cli-DscwlsKW.js";
127
127
  import "./diagnostics-BAMlsVVX.js";
128
128
  import { t as renderTable } from "./table-BTgkRafz.js";
129
- import "./health-B3pwVJ_N.js";
129
+ import "./health-B8uQe9CP.js";
130
130
  import "./control-ui-assets-Z947tKLt.js";
131
131
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, d as formatUpdateChannelLabel, g as resolveUpdateChannelDisplay, h as resolveEffectiveUpdateChannel, m as normalizeUpdateChannel, n as compareSemverStrings, r as fetchNpmTagVersion, s as DEFAULT_GIT_CHANNEL, t as checkUpdateStatus, u as channelToNpmTag } from "./update-check-CtckACbb.js";
132
132
  import "./dm-policy-shared-Bh3TbexU.js";
133
133
  import { i as resolveUpdateAvailability, n as formatUpdateOneLiner, t as formatUpdateAvailableHint } from "./status.update-DtwCUTf-.js";
134
- import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-Dmki2xrH.js";
134
+ import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-Dnq8KGjY.js";
135
135
  import "./logging-BzzwiKjv.js";
136
136
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-rw7wJwHd.js";
137
137
  import "./doctor-config-flow-QnaBd8kL.js";
138
138
  import "./systemd-linger-aQ75ZlXY.js";
139
139
  import "./health-format-DSwnXZPU.js";
140
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-XyOMjPBV.js";
141
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-Do0e0eZE.js";
140
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-B9Vx6n4u.js";
141
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-Dq3zKXdh.js";
142
142
  import os from "node:os";
143
143
  import path from "node:path";
144
144
  import fs from "node:fs/promises";
@@ -16,7 +16,7 @@ import "./client-DMBZpU6X.js";
16
16
  import "./call-BcE47FtD.js";
17
17
  import "./message-channel-C9dERklz.js";
18
18
  import "./pairing-token-Byh6drgn.js";
19
- import { Ct as trimLogTail } from "./subagent-registry-M6DQwhYN.js";
19
+ import { Ct as trimLogTail } from "./subagent-registry-C-JJ2VmR.js";
20
20
  import "./sessions-CJXnZVjR.js";
21
21
  import "./tokens-Csntmwwn.js";
22
22
  import "./plugins-CwSlLxM8.js";
@@ -111,10 +111,10 @@ import "./npm-registry-spec-DkaZNHAW.js";
111
111
  import "./skill-scanner-BGWOBqLY.js";
112
112
  import "./installs-CgQpVncj.js";
113
113
  import "./channels-status-issues-c7qZbYG5.js";
114
- import "./register.subclis-BxbyrMu1.js";
115
- import "./command-registry-DV-FTDz1.js";
114
+ import "./register.subclis-nswajsbE.js";
115
+ import "./command-registry-DXdP9h9E.js";
116
116
  import "./program-context-CqzR_m-7.js";
117
- import { r as installCompletion } from "./completion-cli-Cbr2b-rs.js";
117
+ import { r as installCompletion } from "./completion-cli-hQmnRt3u.js";
118
118
  import "./daemon-runtime-CfRwa6qh.js";
119
119
  import { r as parseSemver } from "./runtime-guard-D7waq_Ho.js";
120
120
  import "./systemd-DlMdyFDY.js";
@@ -124,19 +124,19 @@ import "./systemd-hints-sQipWGd1.js";
124
124
  import { i as runDaemonInstall, r as runDaemonRestart } from "./daemon-cli-wWnBIQtk.js";
125
125
  import "./diagnostics-CS1ov_hH.js";
126
126
  import { t as renderTable } from "./table-D01d2GuY.js";
127
- import "./health-8bTzq722.js";
127
+ import "./health-8DlAtuas.js";
128
128
  import "./control-ui-assets-BseSWee1.js";
129
129
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, d as formatUpdateChannelLabel, g as resolveUpdateChannelDisplay, h as resolveEffectiveUpdateChannel, m as normalizeUpdateChannel, n as compareSemverStrings, r as fetchNpmTagVersion, s as DEFAULT_GIT_CHANNEL, t as checkUpdateStatus, u as channelToNpmTag } from "./update-check-ZdimP1aU.js";
130
130
  import "./dm-policy-shared-DJ-61hCT.js";
131
131
  import { i as resolveUpdateAvailability, n as formatUpdateOneLiner, t as formatUpdateAvailableHint } from "./status.update-DbmZz0Aq.js";
132
- import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-BIp88-4P.js";
132
+ import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-zv3kaly2.js";
133
133
  import "./logging-BGewRZy0.js";
134
134
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-DEMKx4eC.js";
135
135
  import "./doctor-config-flow-CA3eiKhd.js";
136
136
  import "./systemd-linger-DA_LW52P.js";
137
137
  import "./health-format-CzgUHmmX.js";
138
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-uLoOKbdZ.js";
139
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-v8uq--hy.js";
138
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-BTsilnfC.js";
139
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-C9CcD8pq.js";
140
140
  import { spawn, spawnSync } from "node:child_process";
141
141
  import os from "node:os";
142
142
  import path from "node:path";
@@ -1,5 +1,5 @@
1
1
  import { h as pathExists } from "./utils-B-0b9bGM.js";
2
- import { V as trimLogTail } from "./reply-BgOOEOPX.js";
2
+ import { V as trimLogTail } from "./reply-DU025-Dw.js";
3
3
  import { t as runCommandWithTimeout } from "./exec-CWkblSrI.js";
4
4
  import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-Z947tKLt.js";
5
5
  import { c as DEFAULT_PACKAGE_CHANNEL, f as isBetaTag, l as DEV_BRANCH, n as compareSemverStrings, o as detectPackageManager$1, p as isStableTag, u as channelToNpmTag } from "./update-check-CtckACbb.js";
@@ -1,6 +1,6 @@
1
1
  import { nt as pathExists } from "./entry.js";
2
2
  import { t as runCommandWithTimeout } from "./exec-CBKBIMpA.js";
3
- import { Ct as trimLogTail } from "./subagent-registry-M6DQwhYN.js";
3
+ import { Ct as trimLogTail } from "./subagent-registry-C-JJ2VmR.js";
4
4
  import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-BseSWee1.js";
5
5
  import { c as DEFAULT_PACKAGE_CHANNEL, f as isBetaTag, l as DEV_BRANCH, n as compareSemverStrings, o as detectPackageManager$1, p as isStableTag, u as channelToNpmTag } from "./update-check-ZdimP1aU.js";
6
6
  import os from "node:os";