@visorcraft/idlehands 4.0.3 → 4.0.4

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 (61) hide show
  1. package/dist/{agent-via-gateway-C0vCg1ZM.js → agent-via-gateway-DuiGvn8r.js} +7 -7
  2. package/dist/{agent-via-gateway-ByPWQgRB.js → agent-via-gateway-qbejl3kr.js} +7 -7
  3. package/dist/{anton-B6isA8u0.js → anton-3jbpOFwj.js} +1 -1
  4. package/dist/{anton-DIOwS7eE.js → anton-B9kIWNvg.js} +1 -1
  5. package/dist/{audio-preflight-DXHA4Zl5.js → audio-preflight-NNCHbv8F.js} +4 -4
  6. package/dist/{audio-preflight-CQPO22GN.js → audio-preflight-cfmqgcH-.js} +4 -4
  7. package/dist/build-info.json +3 -3
  8. package/dist/bundled/boot-md/handler.js +7 -7
  9. package/dist/bundled/session-memory/handler.js +7 -7
  10. package/dist/{chrome-BgN40zx8.js → chrome-Cvenz6iZ.js} +9 -9
  11. package/dist/{chrome-B0l3h-bh.js → chrome-D9NosK0s.js} +9 -9
  12. package/dist/{command-registry-B6hFRHrd.js → command-registry-DZvQyvdk.js} +4 -4
  13. package/dist/{completion-cli-CNt0wK0B.js → completion-cli-DlgejkIg.js} +1 -1
  14. package/dist/{completion-cli-C3IMZB6Q.js → completion-cli-L4888GxV.js} +2 -2
  15. package/dist/{deliver-Du5xy-7p.js → deliver-CmPR7fhR.js} +1 -1
  16. package/dist/{deliver-CKuy0O7A.js → deliver-CnDgICqg.js} +1 -1
  17. package/dist/{deps-BeeqYsLD.js → deps-DtZJZiVU.js} +1 -1
  18. package/dist/{deps-D_Vpxxj5.js → deps-DvxU9aZw.js} +1 -1
  19. package/dist/{doctor-completion-BNfkghK8.js → doctor-completion-Bpz9BR7f.js} +1 -1
  20. package/dist/{doctor-completion-G9FLUIDZ.js → doctor-completion-CLstfG3E.js} +1 -1
  21. package/dist/{emergency-stop-C5wb5VII.js → emergency-stop-DV0vzMOk.js} +7 -7
  22. package/dist/{emergency-stop-Dz030a7z.js → emergency-stop-mvmVCWFD.js} +7 -7
  23. package/dist/entry.js +1 -1
  24. package/dist/extensionAPI.js +7 -7
  25. package/dist/{gateway-cli-B7ik7LaX.js → gateway-cli-C8dmI-xf.js} +1 -1
  26. package/dist/{gateway-cli-BUH75yVT.js → gateway-cli-PaW0PAyP.js} +1 -1
  27. package/dist/{image-Bln46YHL.js → image-BIel6qcx.js} +1 -1
  28. package/dist/{image-17K3y23x.js → image-zLW7gYnA.js} +1 -1
  29. package/dist/index.js +1 -1
  30. package/dist/llm-slug-generator.js +7 -7
  31. package/dist/{onboard-CJhQPHr3.js → onboard-C9HVLPjY.js} +1 -1
  32. package/dist/{onboard-BAM3Ph4P.js → onboard-DJ7dmTBg.js} +1 -1
  33. package/dist/{onboarding-CkGY9DOw.js → onboarding-CnU9R2v4.js} +1 -1
  34. package/dist/{onboarding-B4o-MRq0.js → onboarding-rwitqr3M.js} +1 -1
  35. package/dist/{onboarding.finalize-37w1SzFE.js → onboarding.finalize-CBrKhegy.js} +4 -4
  36. package/dist/{onboarding.finalize-DUS4FGTl.js → onboarding.finalize-RneA46WW.js} +3 -3
  37. package/dist/{pi-embedded-DxtxFMEA.js → pi-embedded-BOUt2MaE.js} +26 -26
  38. package/dist/{pi-embedded-Dm1vEbz2.js → pi-embedded-Bjo5CecP.js} +26 -26
  39. package/dist/{pi-embedded-helpers-CQtSzbgg.js → pi-embedded-helpers-CUIrFj49.js} +4 -4
  40. package/dist/{pi-embedded-helpers-BqxGElDO.js → pi-embedded-helpers-CZOzeFRc.js} +4 -4
  41. package/dist/{program-context-BQzDOgIq.js → program-context-CKI3DfIX.js} +13 -7
  42. package/dist/{program-rhZMLOVW.js → program-iI96_r6N.js} +2 -2
  43. package/dist/{prompt-select-styled-BcWpzfp6.js → prompt-select-styled-B_jidQym.js} +1 -1
  44. package/dist/{prompt-select-styled-B7sFXf8N.js → prompt-select-styled-DNS7CxGQ.js} +1 -1
  45. package/dist/{pw-ai-FgbTBj7b.js → pw-ai-DfYItNj-.js} +1 -1
  46. package/dist/{pw-ai-sE5_5A_d.js → pw-ai-iKGIUT9i.js} +1 -1
  47. package/dist/{register.maintenance-CqmTMNRn.js → register.maintenance-D1g04iVa.js} +4 -4
  48. package/dist/{register.maintenance-DLAqSYb5.js → register.maintenance-DPXU1fUi.js} +5 -5
  49. package/dist/{register.onboard-BuSdHpWA.js → register.onboard-4XzBlDae.js} +2 -2
  50. package/dist/{register.onboard-zzQKmCB7.js → register.onboard-CVPSskh8.js} +2 -2
  51. package/dist/{register.setup-CeoK5Umb.js → register.setup-DqgWgFx8.js} +2 -2
  52. package/dist/{register.setup-W5jbbnCS.js → register.setup-kaaBHEc9.js} +2 -2
  53. package/dist/{register.subclis-DdamdQRf.js → register.subclis-DPbBzdlM.js} +10 -4
  54. package/dist/{run-main-rzhnBUTn.js → run-main-DhUY_kmj.js} +3 -3
  55. package/dist/{runner-DgsLLQfa.js → runner-Bii78ELA.js} +1 -1
  56. package/dist/{runner-DzyqsjTB.js → runner-WzLTqSgy.js} +1 -1
  57. package/dist/{update-cli-CiMVlwJv.js → update-cli-CQICcdX8.js} +5 -5
  58. package/dist/{update-cli-Dpg99tsI.js → update-cli-CStwhzZ-.js} +4 -4
  59. package/dist/{web-hYq16QXM.js → web-CELy4oHd.js} +8 -8
  60. package/dist/{web-CMxhIr2y.js → web-eYE3dbHr.js} +8 -8
  61. package/package.json +1 -1
@@ -22,7 +22,7 @@ import { a as logoutWeb, i as logWebSelfId, l as readWebSelfId, n as getWebAuthA
22
22
  import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-DKOubXzD.js";
23
23
  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-D-vZESI7.js";
24
24
  import { n as generateSecureUuid, t as generateSecureToken } from "./secure-random-BvP4jdcV.js";
25
- import { C as initializeGlobalHookRunner, S as getGlobalHookRunner, _ as createReplyToModeFilterForChannel, a as normalizeOutboundPayloadsForJson, b as normalizeChannelTargetInput, c as parseReplyDirectives, d as applyReplyThreading, f as filterMessagingToolDuplicates, g as shouldSuppressReasoningPayload, h as shouldSuppressMessagingToolReplies, i as normalizeOutboundPayloads, l as splitMediaFromOutput, m as isRenderablePayload, o as normalizeReplyPayloadsForDelivery, p as filterMessagingToolMediaDuplicates, r as formatOutboundPayloadLog, s as throwIfAborted, t as deliverOutboundPayloads, u as applyReplyTagsToPayload, v as resolveReplyToMode, x as normalizeTargetForProvider, y as buildTargetResolverSignature } from "./deliver-Du5xy-7p.js";
25
+ import { C as initializeGlobalHookRunner, S as getGlobalHookRunner, _ as createReplyToModeFilterForChannel, a as normalizeOutboundPayloadsForJson, b as normalizeChannelTargetInput, c as parseReplyDirectives, d as applyReplyThreading, f as filterMessagingToolDuplicates, g as shouldSuppressReasoningPayload, h as shouldSuppressMessagingToolReplies, i as normalizeOutboundPayloads, l as splitMediaFromOutput, m as isRenderablePayload, o as normalizeReplyPayloadsForDelivery, p as filterMessagingToolMediaDuplicates, r as formatOutboundPayloadLog, s as throwIfAborted, t as deliverOutboundPayloads, u as applyReplyTagsToPayload, v as resolveReplyToMode, x as normalizeTargetForProvider, y as buildTargetResolverSignature } from "./deliver-CmPR7fhR.js";
26
26
  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-DRWdTrhm.js";
27
27
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Bx2Le86J.js";
28
28
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-BaXLABoj.js";
@@ -30,8 +30,8 @@ import { $ as readJsonFileWithFallback, A as extractTelegramLocation, B as norma
30
30
  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-ZtqTZwlg.js";
31
31
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-Db0k4t23.js";
32
32
  import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel, d as GATEWAY_CLIENT_MODES, f as GATEWAY_CLIENT_NAMES, i as isInternalMessageChannel, l as resolveMessageChannel, n as isDeliverableMessageChannel, o as listDeliverableMessageChannels, r as isGatewayMessageChannel, s as normalizeMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_IDS } from "./message-channel-D2SE0a87.js";
33
- import { $ as stripPluginOnlyAllowlist, A as isTimeoutErrorMessage, B as resolveBrowserConfig, C as isCompactionFailureError, D as isLikelyContextOverflowError, E as isFailoverErrorMessage, F as ensureSandboxWorkspaceForSession, G as resolveGatewayCredentialsFromConfig, H as getBridgeAuthForPort, I as resolveSandboxContext, J as applyOwnerOnlyToolPolicy, K as trimToUndefined$1, L as resolveSandboxRuntimeStatus, M as parseImageDimensionError, N as parseImageSizeError, O as isRateLimitAssistantError, P as sanitizeUserFacingText, Q as mergeAlsoAllowPolicy, R as createBrowserRouteContext, S as isCloudCodeAssistFormatError, T as isFailoverAssistantError, U as ensureBrowserControlAuth, V as resolveProfile, W as resolveBrowserControlAuth, X as collectExplicitAllowlist, Y as buildPluginToolGroups, Z as expandPolicyWithPluginGroups, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, at as buildBootstrapContextFiles, b as isAuthPermanentErrorMessage, c as extractToolCallsFromAssistant, ct as resolveBootstrapTotalMaxChars, d as downgradeOpenAIReasoningBlocks, et as expandToolGroups, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, it as matchesAnyGlobPattern, j as isTransientHttpError, k as isRawApiErrorPayload, l as extractToolResultId, lt as sanitizeGoogleTurnOrdering, m as classifyFailoverReason, n as validateGeminiTurns, nt as resolveToolProfilePolicy, o as normalizeTextForComparison, ot as ensureSessionHeader, p as BILLING_ERROR_USER_MESSAGE, q as resolveSandboxConfigForAgent, r as pickFallbackThinkingLevel, rt as compileGlobPatterns, s as sanitizeSessionMessagesImages, st as resolveBootstrapMaxChars, t as validateAnthropicTurns, tt as normalizeToolName, u as sanitizeToolCallIdsForCloudCodeAssist, v as getApiErrorPayloadFingerprint, w as isContextOverflowError, x as isBillingAssistantError, y as isAuthAssistantError, z as registerBrowserRoutes } from "./pi-embedded-helpers-CQtSzbgg.js";
34
- import { C as ensureChromeExtensionRelayServer, F as isSecureWebSocketUrl, O as DEFAULT_UPLOAD_DIR, P as isLoopbackHost, R as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as rawDataToString, k as resolveExistingPathsWithinRoot, s as resolveLsofCommandSync } from "./chrome-B0l3h-bh.js";
33
+ import { $ as stripPluginOnlyAllowlist, A as isTimeoutErrorMessage, B as resolveBrowserConfig, C as isCompactionFailureError, D as isLikelyContextOverflowError, E as isFailoverErrorMessage, F as ensureSandboxWorkspaceForSession, G as resolveGatewayCredentialsFromConfig, H as getBridgeAuthForPort, I as resolveSandboxContext, J as applyOwnerOnlyToolPolicy, K as trimToUndefined$1, L as resolveSandboxRuntimeStatus, M as parseImageDimensionError, N as parseImageSizeError, O as isRateLimitAssistantError, P as sanitizeUserFacingText, Q as mergeAlsoAllowPolicy, R as createBrowserRouteContext, S as isCloudCodeAssistFormatError, T as isFailoverAssistantError, U as ensureBrowserControlAuth, V as resolveProfile, W as resolveBrowserControlAuth, X as collectExplicitAllowlist, Y as buildPluginToolGroups, Z as expandPolicyWithPluginGroups, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, at as buildBootstrapContextFiles, b as isAuthPermanentErrorMessage, c as extractToolCallsFromAssistant, ct as resolveBootstrapTotalMaxChars, d as downgradeOpenAIReasoningBlocks, et as expandToolGroups, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, it as matchesAnyGlobPattern, j as isTransientHttpError, k as isRawApiErrorPayload, l as extractToolResultId, lt as sanitizeGoogleTurnOrdering, m as classifyFailoverReason, n as validateGeminiTurns, nt as resolveToolProfilePolicy, o as normalizeTextForComparison, ot as ensureSessionHeader, p as BILLING_ERROR_USER_MESSAGE, q as resolveSandboxConfigForAgent, r as pickFallbackThinkingLevel, rt as compileGlobPatterns, s as sanitizeSessionMessagesImages, st as resolveBootstrapMaxChars, t as validateAnthropicTurns, tt as normalizeToolName, u as sanitizeToolCallIdsForCloudCodeAssist, v as getApiErrorPayloadFingerprint, w as isContextOverflowError, x as isBillingAssistantError, y as isAuthAssistantError, z as registerBrowserRoutes } from "./pi-embedded-helpers-CUIrFj49.js";
34
+ import { C as ensureChromeExtensionRelayServer, F as isSecureWebSocketUrl, O as DEFAULT_UPLOAD_DIR, P as isLoopbackHost, R as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as rawDataToString, k as resolveExistingPathsWithinRoot, s as resolveLsofCommandSync } from "./chrome-D9NosK0s.js";
35
35
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-DappnhDp.js";
36
36
  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-DfHELZOB.js";
37
37
  import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-CvJiPmtO.js";
@@ -46,7 +46,7 @@ import { a as resolveSessionFilePathOptions, i as resolveSessionFilePath, l as r
46
46
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-BaUINxJH.js";
47
47
  import { a as canonicalizeBase64, i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, o as estimateBase64DecodedBytes, r as sanitizeToolResultImages } from "./tool-images-DdrK-UD8.js";
48
48
  import { a as normalizeReasoningLevel, c as normalizeVerboseLevel, i as normalizeElevatedLevel, l as resolveResponseUsageMode, n as formatXHighModelHint, o as normalizeThinkLevel, s as normalizeUsageDisplay, t as formatThinkingLevels, u as supportsXHighThinking } from "./thinking-BFsWfunr.js";
49
- import { C as extractTextFromChatContent, S as isInsideCode, _ 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, w as ensureIdleHandsModelsJson, x as findCodeRegions, y as resolveToolDisplay } from "./image-17K3y23x.js";
49
+ import { C as extractTextFromChatContent, S as isInsideCode, _ 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, w as ensureIdleHandsModelsJson, x as findCodeRegions, y as resolveToolDisplay } from "./image-zLW7gYnA.js";
50
50
  import { n as resolveMemorySearchConfig } from "./manager-DFuM9dGV.js";
51
51
  import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-B7YMixjc.js";
52
52
  import { t as fetchWithSsrFGuard } from "./fetch-guard-DqbeAPu0.js";
@@ -60,7 +60,7 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-DZNMSYYq.js";
60
60
  import { _ as isNativeCommandsExplicitlyDisabled, a as listChatCommands, b as resolveNativeSkillsEnabled, c as listNativeCommandSpecsForConfig, d as parseCommandArgs, f as resolveCommandArgChoices, g as isCommandFlagEnabled, h as shouldHandleTextCommands, i as isCommandEnabled, l as maybeResolveTextAlias, m as serializeCommandArgs, o as listChatCommandsForConfig, p as resolveCommandArgMenu, r as findCommandByNativeName, s as listNativeCommandSpecs, t as buildCommandTextFromArgs, u as normalizeCommandBody, v as isRestartEnabled, y as resolveNativeCommandsEnabled } from "./commands-registry-OUkXoJUp.js";
61
61
  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-DGVzCQBz.js";
62
62
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-DZmR6jxY.js";
63
- import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$2, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-DgsLLQfa.js";
63
+ import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$2, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-Bii78ELA.js";
64
64
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-ChVgjTkv.js";
65
65
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-DTHhQmHb.js";
66
66
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-BD2QvhQt.js";
@@ -72,7 +72,7 @@ import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-rou
72
72
  import { i as redactIdentifier, t as getActiveWebListener } from "./active-listener-BnWIC6Jc.js";
73
73
  import { t as makeProxyFetch } from "./proxy-CNZpb4NE.js";
74
74
  import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-BenkesYD.js";
75
- import { r as createOutboundSendDepsFromCliSource, t as createDefaultDeps } from "./deps-D_Vpxxj5.js";
75
+ import { r as createOutboundSendDepsFromCliSource, t as createDefaultDeps } from "./deps-DvxU9aZw.js";
76
76
  import { createRequire } from "node:module";
77
77
  import * as path$1 from "node:path";
78
78
  import path, { isAbsolute } from "node:path";
@@ -91,7 +91,7 @@ import { CURRENT_SESSION_VERSION, DefaultResourceLoader, SessionManager, Setting
91
91
  import { EdgeTTS } from "node-edge-tts";
92
92
  import { createServer } from "node:http";
93
93
  import { ProxyAgent, fetch as fetch$1 } from "undici";
94
- import WebSocket$1, { WebSocket } from "ws";
94
+ import WebSocket, { WebSocket as WebSocket$1 } from "ws";
95
95
  import { Buffer as Buffer$1 } from "node:buffer";
96
96
  import { createJiti } from "jiti";
97
97
  import { Type } from "@sinclair/typebox";
@@ -6371,7 +6371,7 @@ var GatewayClient = class {
6371
6371
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
6372
6372
  });
6373
6373
  }
6374
- this.ws = new WebSocket(url, wsOptions);
6374
+ this.ws = new WebSocket$1(url, wsOptions);
6375
6375
  this.ws.on("open", () => {
6376
6376
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
6377
6377
  const tlsError = this.validateTlsFingerprint();
@@ -6567,7 +6567,7 @@ var GatewayClient = class {
6567
6567
  const connectChallengeTimeoutMs = typeof rawConnectDelayMs === "number" && Number.isFinite(rawConnectDelayMs) ? Math.max(250, Math.min(1e4, rawConnectDelayMs)) : 2e3;
6568
6568
  if (this.connectTimer) clearTimeout(this.connectTimer);
6569
6569
  this.connectTimer = setTimeout(() => {
6570
- if (this.connectSent || this.ws?.readyState !== WebSocket.OPEN) return;
6570
+ if (this.connectSent || this.ws?.readyState !== WebSocket$1.OPEN) return;
6571
6571
  this.opts.onConnectError?.(/* @__PURE__ */ new Error("gateway connect challenge timeout"));
6572
6572
  this.ws?.close(1008, "connect challenge timeout");
6573
6573
  }, connectChallengeTimeoutMs);
@@ -6609,7 +6609,7 @@ var GatewayClient = class {
6609
6609
  return null;
6610
6610
  }
6611
6611
  async request(method, params, opts) {
6612
- if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
6612
+ if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
6613
6613
  const id = randomUUID();
6614
6614
  const frame = {
6615
6615
  type: "req",
@@ -7933,7 +7933,7 @@ async function routeReply(params) {
7933
7933
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
7934
7934
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
7935
7935
  try {
7936
- const { deliverOutboundPayloads } = await import("./deliver-Du5xy-7p.js").then((n) => n.n);
7936
+ const { deliverOutboundPayloads } = await import("./deliver-CmPR7fhR.js").then((n) => n.n);
7937
7937
  const outboundSession = buildOutboundSessionContext({
7938
7938
  cfg,
7939
7939
  agentId: resolvedAgentId,
@@ -23055,7 +23055,7 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
23055
23055
  };
23056
23056
  const arg = body.slice(6).trim();
23057
23057
  if (arg === "status" || arg === "") {
23058
- const { antonStatus } = await import("./anton-B6isA8u0.js");
23058
+ const { antonStatus } = await import("./anton-3jbpOFwj.js");
23059
23059
  const lines = [];
23060
23060
  await antonStatus({
23061
23061
  log: (msg) => lines.push(msg),
@@ -23066,7 +23066,7 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
23066
23066
  return { shouldContinue: false };
23067
23067
  }
23068
23068
  if (arg === "stop") {
23069
- const { antonStop } = await import("./anton-B6isA8u0.js");
23069
+ const { antonStop } = await import("./anton-3jbpOFwj.js");
23070
23070
  const lines = [];
23071
23071
  await antonStop({
23072
23072
  log: (msg) => lines.push(msg),
@@ -23089,8 +23089,8 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
23089
23089
  await sendProgress(replyCtx, `❌ File not found: \`${resolvedPath}\``);
23090
23090
  return { shouldContinue: false };
23091
23091
  }
23092
- const { runAnton, formatProgressMessage } = await import("./anton-B6isA8u0.js");
23093
- const { createDefaultDeps } = await import("./deps-D_Vpxxj5.js").then((n) => n.n);
23092
+ const { runAnton, formatProgressMessage } = await import("./anton-3jbpOFwj.js");
23093
+ const { createDefaultDeps } = await import("./deps-DvxU9aZw.js").then((n) => n.n);
23094
23094
  const { createNonExitingRuntime } = await import("./runtime-8mi3mpYB.js").then((n) => n.r);
23095
23095
  const runtime = createNonExitingRuntime();
23096
23096
  const deps = createDefaultDeps();
@@ -47352,7 +47352,7 @@ async function deliverSessionMaintenanceWarning(params) {
47352
47352
  return;
47353
47353
  }
47354
47354
  try {
47355
- const { deliverOutboundPayloads } = await import("./deliver-Du5xy-7p.js").then((n) => n.n);
47355
+ const { deliverOutboundPayloads } = await import("./deliver-CmPR7fhR.js").then((n) => n.n);
47356
47356
  const outboundSession = buildOutboundSessionContext({
47357
47357
  cfg: params.cfg,
47358
47358
  sessionKey: params.sessionKey
@@ -51786,7 +51786,7 @@ async function describeStickerImage(params) {
51786
51786
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
51787
51787
  try {
51788
51788
  const buffer = await fs.readFile(imagePath);
51789
- const { describeImageWithModel } = await import("./image-17K3y23x.js").then((n) => n.n);
51789
+ const { describeImageWithModel } = await import("./image-zLW7gYnA.js").then((n) => n.n);
51790
51790
  return (await describeImageWithModel({
51791
51791
  buffer,
51792
51792
  fileName: "sticker.webp",
@@ -54714,7 +54714,7 @@ async function preflightDiscordMessage(params) {
54714
54714
  let preflightTranscript;
54715
54715
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
54716
54716
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
54717
- const { transcribeFirstAudio } = await import("./audio-preflight-DXHA4Zl5.js");
54717
+ const { transcribeFirstAudio } = await import("./audio-preflight-NNCHbv8F.js");
54718
54718
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
54719
54719
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
54720
54720
  ctx: {
@@ -57191,7 +57191,7 @@ function createDiscordMessageHandler(params) {
57191
57191
  try {
57192
57192
  const messageText = resolveDiscordMessageText(data.message)?.trim();
57193
57193
  if (messageText) {
57194
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-C5wb5VII.js");
57194
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DV0vzMOk.js");
57195
57195
  if (isAbortRequestText(messageText)) {
57196
57196
  const { resolveAgentRoute } = await import("./resolve-route-Ca-fMPk9.js").then((n) => n.r);
57197
57197
  const channelId = resolveDiscordMessageChannelId({
@@ -62637,7 +62637,7 @@ function createDiscordGatewayPlugin(params) {
62637
62637
  return super.registerClient(client);
62638
62638
  }
62639
62639
  createWebSocket(url) {
62640
- return new WebSocket$1(url, { agent: wsAgent });
62640
+ return new WebSocket(url, { agent: wsAgent });
62641
62641
  }
62642
62642
  }
62643
62643
  return new ProxyGatewayPlugin();
@@ -64689,7 +64689,7 @@ async function monitorIMessageProvider(opts = {}) {
64689
64689
  }
64690
64690
  const msgText = (message.text ?? "").trim();
64691
64691
  if (msgText) {
64692
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-C5wb5VII.js");
64692
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DV0vzMOk.js");
64693
64693
  if (isAbortRequestText(msgText)) {
64694
64694
  const { resolveAgentRoute } = await import("./resolve-route-Ca-fMPk9.js").then((n) => n.r);
64695
64695
  const route = resolveAgentRoute({
@@ -67300,7 +67300,7 @@ function createSignalEventHandler(deps) {
67300
67300
  const senderName = envelope.sourceName ?? senderDisplay;
67301
67301
  const messageId = typeof envelope.timestamp === "number" ? String(envelope.timestamp) : void 0;
67302
67302
  if (bodyText) {
67303
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-C5wb5VII.js");
67303
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DV0vzMOk.js");
67304
67304
  if (isAbortRequestText(bodyText)) {
67305
67305
  const { resolveAgentRoute } = await import("./resolve-route-Ca-fMPk9.js").then((n) => n.r);
67306
67306
  const route = resolveAgentRoute({
@@ -70682,7 +70682,7 @@ function createSlackMessageHandler(params) {
70682
70682
  if (ctx.markMessageSeen(message.channel, message.ts)) return;
70683
70683
  const rawText = (message.text ?? "").trim();
70684
70684
  if (rawText) {
70685
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-C5wb5VII.js");
70685
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DV0vzMOk.js");
70686
70686
  if (isAbortRequestText(rawText)) {
70687
70687
  const { resolveAgentRoute } = await import("./resolve-route-Ca-fMPk9.js").then((n) => n.r);
70688
70688
  const route = resolveAgentRoute({
@@ -72876,7 +72876,7 @@ const registerTelegramHandlers = ({ cfg, accountId, bot, opts, runtime, mediaMax
72876
72876
  const { ctx, msg, chatId, resolvedThreadId, storeAllowFrom, sendOversizeWarning, oversizeLogMessage } = params;
72877
72877
  const text = typeof msg.text === "string" ? msg.text : void 0;
72878
72878
  if (text) {
72879
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-C5wb5VII.js");
72879
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DV0vzMOk.js");
72880
72880
  if (isAbortRequestText(text)) {
72881
72881
  const senderId = msg.from?.id ? String(msg.from.id) : "";
72882
72882
  if (!senderId || !allowFrom?.length || allowFrom.includes(senderId)) {
@@ -73763,7 +73763,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, replyMedia =
73763
73763
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
73764
73764
  let preflightTranscript;
73765
73765
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
73766
- const { transcribeFirstAudio } = await import("./audio-preflight-DXHA4Zl5.js");
73766
+ const { transcribeFirstAudio } = await import("./audio-preflight-NNCHbv8F.js");
73767
73767
  preflightTranscript = await transcribeFirstAudio({
73768
73768
  ctx: {
73769
73769
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -76361,7 +76361,7 @@ function loadWebLoginQr() {
76361
76361
  return webLoginQrPromise;
76362
76362
  }
76363
76363
  function loadWebChannel() {
76364
- webChannelPromise ??= import("./web-hYq16QXM.js");
76364
+ webChannelPromise ??= import("./web-CELy4oHd.js");
76365
76365
  return webChannelPromise;
76366
76366
  }
76367
76367
  function loadWhatsAppActions() {
@@ -9,7 +9,7 @@ import { t as formatCliCommand } from "./command-format-BAxx4PW5.js";
9
9
  import { n as parseBooleanValue } from "./env-D7qJ4JPa.js";
10
10
  import { t as generateSecureToken } from "./secure-random-BvP4jdcV.js";
11
11
  import { i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-ZtqTZwlg.js";
12
- import { B as DEFAULT_BROWSER_EVALUATE_ENABLED, C as ensureChromeExtensionRelayServer, D as DEFAULT_TRACE_DIR, E as DEFAULT_DOWNLOAD_DIR, H as DEFAULT_IDLEHANDS_BROWSER_ENABLED, I as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, L as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, N as normalizeBrowserFormField, O as DEFAULT_UPLOAD_DIR, P as isLoopbackHost, R as DEFAULT_AI_SNAPSHOT_MAX_CHARS, U as DEFAULT_IDLEHANDS_BROWSER_PROFILE_NAME, V as DEFAULT_IDLEHANDS_BROWSER_COLOR, _ as withBrowserNavigationPolicy, a as resolveIdleHandsUserDataDir, b as fetchOk, c as resolveBrowserExecutableForPlatform, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, i as launchIdleHandsChrome, j as resolveWritablePathWithinRoot, k as resolveExistingPathsWithinRoot, l as captureScreenshot, m as InvalidBrowserNavigationUrlError, n as isChromeCdpReady, o as stopIdleHandsChrome, p as snapshotAria, r as isChromeReachable, u as createTargetViaCdp, v as appendCdpPath, w as stopChromeExtensionRelayServer, y as fetchJson, z as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME } from "./chrome-B0l3h-bh.js";
12
+ import { B as DEFAULT_BROWSER_EVALUATE_ENABLED, C as ensureChromeExtensionRelayServer, D as DEFAULT_TRACE_DIR, E as DEFAULT_DOWNLOAD_DIR, H as DEFAULT_IDLEHANDS_BROWSER_ENABLED, I as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, L as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, N as normalizeBrowserFormField, O as DEFAULT_UPLOAD_DIR, P as isLoopbackHost, R as DEFAULT_AI_SNAPSHOT_MAX_CHARS, U as DEFAULT_IDLEHANDS_BROWSER_PROFILE_NAME, V as DEFAULT_IDLEHANDS_BROWSER_COLOR, _ as withBrowserNavigationPolicy, a as resolveIdleHandsUserDataDir, b as fetchOk, c as resolveBrowserExecutableForPlatform, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, i as launchIdleHandsChrome, j as resolveWritablePathWithinRoot, k as resolveExistingPathsWithinRoot, l as captureScreenshot, m as InvalidBrowserNavigationUrlError, n as isChromeCdpReady, o as stopIdleHandsChrome, p as snapshotAria, r as isChromeReachable, u as createTargetViaCdp, v as appendCdpPath, w as stopChromeExtensionRelayServer, y as fetchJson, z as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME } from "./chrome-D9NosK0s.js";
13
13
  import { t as SsrFBlockedError } from "./ssrf-DappnhDp.js";
14
14
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-DfHELZOB.js";
15
15
  import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-CvJiPmtO.js";
@@ -1181,7 +1181,7 @@ function isModuleNotFoundError(err) {
1181
1181
  }
1182
1182
  async function loadPwAiModule(mode) {
1183
1183
  try {
1184
- return await import("./pw-ai-FgbTBj7b.js");
1184
+ return await import("./pw-ai-DfYItNj-.js");
1185
1185
  } catch (err) {
1186
1186
  if (mode === "soft") return null;
1187
1187
  if (isModuleNotFoundError(err)) return null;
@@ -3716,11 +3716,11 @@ function createProfileContext(opts, profile) {
3716
3716
  const userDataDir = resolveIdleHandsUserDataDir(profile.name);
3717
3717
  const profileState = getProfileState();
3718
3718
  if (await isHttpReachable(300) && !profileState.running) try {
3719
- await (await import("./pw-ai-FgbTBj7b.js")).closePlaywrightBrowserConnection();
3719
+ await (await import("./pw-ai-DfYItNj-.js")).closePlaywrightBrowserConnection();
3720
3720
  } catch {}
3721
3721
  if (profileState.running) await stopRunningBrowser();
3722
3722
  try {
3723
- await (await import("./pw-ai-FgbTBj7b.js")).closePlaywrightBrowserConnection();
3723
+ await (await import("./pw-ai-DfYItNj-.js")).closePlaywrightBrowserConnection();
3724
3724
  } catch {}
3725
3725
  if (!syncFs.existsSync(userDataDir)) return {
3726
3726
  moved: false,
@@ -10,7 +10,7 @@ import { t as formatCliCommand } from "./command-format-BAxx4PW5.js";
10
10
  import { t as parseBooleanValue } from "./boolean-CE7i9tBR.js";
11
11
  import { t as generateSecureToken } from "./secure-random-B1N_MXT_.js";
12
12
  import { i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-Bvf7ZFBE.js";
13
- import { B as DEFAULT_BROWSER_EVALUATE_ENABLED, C as ensureChromeExtensionRelayServer, D as DEFAULT_TRACE_DIR, E as DEFAULT_DOWNLOAD_DIR, H as DEFAULT_IDLEHANDS_BROWSER_ENABLED, I as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, L as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, N as normalizeBrowserFormField, O as DEFAULT_UPLOAD_DIR, P as isLoopbackHost, R as DEFAULT_AI_SNAPSHOT_MAX_CHARS, U as DEFAULT_IDLEHANDS_BROWSER_PROFILE_NAME, V as DEFAULT_IDLEHANDS_BROWSER_COLOR, _ as withBrowserNavigationPolicy, a as resolveIdleHandsUserDataDir, b as fetchOk, c as resolveBrowserExecutableForPlatform, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, i as launchIdleHandsChrome, j as resolveWritablePathWithinRoot, k as resolveExistingPathsWithinRoot, l as captureScreenshot, m as InvalidBrowserNavigationUrlError, n as isChromeCdpReady, o as stopIdleHandsChrome, p as snapshotAria, r as isChromeReachable, u as createTargetViaCdp, v as appendCdpPath, w as stopChromeExtensionRelayServer, y as fetchJson, z as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME } from "./chrome-BgN40zx8.js";
13
+ import { B as DEFAULT_BROWSER_EVALUATE_ENABLED, C as ensureChromeExtensionRelayServer, D as DEFAULT_TRACE_DIR, E as DEFAULT_DOWNLOAD_DIR, H as DEFAULT_IDLEHANDS_BROWSER_ENABLED, I as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, L as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, N as normalizeBrowserFormField, O as DEFAULT_UPLOAD_DIR, P as isLoopbackHost, R as DEFAULT_AI_SNAPSHOT_MAX_CHARS, U as DEFAULT_IDLEHANDS_BROWSER_PROFILE_NAME, V as DEFAULT_IDLEHANDS_BROWSER_COLOR, _ as withBrowserNavigationPolicy, a as resolveIdleHandsUserDataDir, b as fetchOk, c as resolveBrowserExecutableForPlatform, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, i as launchIdleHandsChrome, j as resolveWritablePathWithinRoot, k as resolveExistingPathsWithinRoot, l as captureScreenshot, m as InvalidBrowserNavigationUrlError, n as isChromeCdpReady, o as stopIdleHandsChrome, p as snapshotAria, r as isChromeReachable, u as createTargetViaCdp, v as appendCdpPath, w as stopChromeExtensionRelayServer, y as fetchJson, z as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME } from "./chrome-Cvenz6iZ.js";
14
14
  import { t as SsrFBlockedError } from "./ssrf-CZeHDwVZ.js";
15
15
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-CqQmYqWB.js";
16
16
  import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-wnBrvThd.js";
@@ -1182,7 +1182,7 @@ function isModuleNotFoundError(err) {
1182
1182
  }
1183
1183
  async function loadPwAiModule(mode) {
1184
1184
  try {
1185
- return await import("./pw-ai-sE5_5A_d.js");
1185
+ return await import("./pw-ai-iKGIUT9i.js");
1186
1186
  } catch (err) {
1187
1187
  if (mode === "soft") return null;
1188
1188
  if (isModuleNotFoundError(err)) return null;
@@ -3717,11 +3717,11 @@ function createProfileContext(opts, profile) {
3717
3717
  const userDataDir = resolveIdleHandsUserDataDir(profile.name);
3718
3718
  const profileState = getProfileState();
3719
3719
  if (await isHttpReachable(300) && !profileState.running) try {
3720
- await (await import("./pw-ai-sE5_5A_d.js")).closePlaywrightBrowserConnection();
3720
+ await (await import("./pw-ai-iKGIUT9i.js")).closePlaywrightBrowserConnection();
3721
3721
  } catch {}
3722
3722
  if (profileState.running) await stopRunningBrowser();
3723
3723
  try {
3724
- await (await import("./pw-ai-sE5_5A_d.js")).closePlaywrightBrowserConnection();
3724
+ await (await import("./pw-ai-iKGIUT9i.js")).closePlaywrightBrowserConnection();
3725
3725
  } catch {}
3726
3726
  if (!syncFs.existsSync(userDataDir)) return {
3727
3727
  moved: false,
@@ -58,7 +58,7 @@ const entries = [
58
58
  description: "Run, inspect, and query the WebSocket Gateway",
59
59
  hasSubcommands: true,
60
60
  register: async (program) => {
61
- (await import("./gateway-cli-B7ik7LaX.js")).registerGatewayCli(program);
61
+ (await import("./gateway-cli-C8dmI-xf.js")).registerGatewayCli(program);
62
62
  }
63
63
  },
64
64
  {
@@ -262,7 +262,7 @@ const entries = [
262
262
  description: "Update IdleHands and inspect update channel status",
263
263
  hasSubcommands: true,
264
264
  register: async (program) => {
265
- (await import("./update-cli-Dpg99tsI.js")).registerUpdateCli(program);
265
+ (await import("./update-cli-CStwhzZ-.js")).registerUpdateCli(program);
266
266
  }
267
267
  },
268
268
  {
@@ -283,7 +283,13 @@ const entries = [
283
283
  console.log(message.replace(/\*\*/g, ""));
284
284
  });
285
285
  console.log("\n" + result.message.replace(/\*\*/g, ""));
286
- if (result.needsRestart && result.success) console.log("\n⚠️ Please restart idlehands to use the new version.");
286
+ if (result.needsRestart && result.success) {
287
+ console.log("\nℹ️ Upgrade installed. If you are running interactively, restart your current process/session to load the new binary.");
288
+ console.log("Suggested commands:");
289
+ console.log(" systemctl --user restart idlehands-bot # if using user service");
290
+ console.log(" idlehands gateway restart # if running gateway manually");
291
+ console.log(" hash -r && idlehands --version # refresh shell command cache + verify");
292
+ }
287
293
  });
288
294
  }
289
295
  },
@@ -292,7 +298,7 @@ const entries = [
292
298
  description: "Generate shell completion script",
293
299
  hasSubcommands: false,
294
300
  register: async (program) => {
295
- (await import("./completion-cli-CNt0wK0B.js").then((n) => n.n)).registerCompletionCli(program);
301
+ (await import("./completion-cli-DlgejkIg.js").then((n) => n.n)).registerCompletionCli(program);
296
302
  }
297
303
  }
298
304
  ];
@@ -349,7 +355,7 @@ const coreEntries = [
349
355
  hasSubcommands: false
350
356
  }],
351
357
  register: async ({ program }) => {
352
- (await import("./register.setup-W5jbbnCS.js")).registerSetupCommand(program);
358
+ (await import("./register.setup-kaaBHEc9.js")).registerSetupCommand(program);
353
359
  }
354
360
  },
355
361
  {
@@ -359,7 +365,7 @@ const coreEntries = [
359
365
  hasSubcommands: false
360
366
  }],
361
367
  register: async ({ program }) => {
362
- (await import("./register.onboard-BuSdHpWA.js")).registerOnboardCommand(program);
368
+ (await import("./register.onboard-4XzBlDae.js")).registerOnboardCommand(program);
363
369
  }
364
370
  },
365
371
  {
@@ -406,7 +412,7 @@ const coreEntries = [
406
412
  }
407
413
  ],
408
414
  register: async ({ program }) => {
409
- (await import("./register.maintenance-CqmTMNRn.js")).registerMaintenanceCommands(program);
415
+ (await import("./register.maintenance-D1g04iVa.js")).registerMaintenanceCommands(program);
410
416
  }
411
417
  },
412
418
  {
@@ -115,8 +115,8 @@ import "./prompt-style-XmK49QYK.js";
115
115
  import "./pairing-labels-DZ_lUZoX.js";
116
116
  import "./plugin-registry-DJcJYR9Y.js";
117
117
  import { n as resolveCliChannelOptions } from "./channel-options-bjUhLp5T.js";
118
- import { t as getSubCliCommandsWithSubcommands } from "./register.subclis-DdamdQRf.js";
119
- import { a as registerProgramCommands, r as getCoreCliCommandsWithSubcommands } from "./command-registry-B6hFRHrd.js";
118
+ import { t as getSubCliCommandsWithSubcommands } from "./register.subclis-DPbBzdlM.js";
119
+ import { a as registerProgramCommands, r as getCoreCliCommandsWithSubcommands } from "./command-registry-DZvQyvdk.js";
120
120
  import { r as setProgramContext } from "./program-context-BrqeiWcA.js";
121
121
  import { t as forceFreePort } from "./ports-CIJavqzS.js";
122
122
  import { n as formatCliBannerLine, r as hasEmittedCliBanner, t as emitCliBanner } from "./banner-DEEZT1oR.js";
@@ -43,7 +43,7 @@ import { n as logConfigUpdated } from "./logging-ByTQYoIg.js";
43
43
  import { n as detectLegacyStateMigrations, r as runLegacyStateMigrations, t as loadAndMaybeMigrateDoctorConfig } from "./doctor-config-flow-FDCTWwu_.js";
44
44
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-5XlJVbbh.js";
45
45
  import { t as formatHealthCheckFailure } from "./health-format-CE5TCyXu.js";
46
- import { n as doctorShellCompletion } from "./doctor-completion-BNfkghK8.js";
46
+ import { n as doctorShellCompletion } from "./doctor-completion-Bpz9BR7f.js";
47
47
  import fs from "node:fs";
48
48
  import os from "node:os";
49
49
  import path from "node:path";
@@ -41,7 +41,7 @@ import { n as logConfigUpdated } from "./logging-MF6Thoxk.js";
41
41
  import { n as detectLegacyStateMigrations, r as runLegacyStateMigrations, t as loadAndMaybeMigrateDoctorConfig } from "./doctor-config-flow-DNl4GG2O.js";
42
42
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-Dx928sEF.js";
43
43
  import { t as formatHealthCheckFailure } from "./health-format-wax5NzZB.js";
44
- import { n as doctorShellCompletion } from "./doctor-completion-G9FLUIDZ.js";
44
+ import { n as doctorShellCompletion } from "./doctor-completion-CLstfG3E.js";
45
45
  import { execFile } from "node:child_process";
46
46
  import os from "node:os";
47
47
  import path from "node:path";
@@ -7,7 +7,7 @@ import "./model-selection-BxtJfqcr.js";
7
7
  import "./github-copilot-token-BPPyzHPe.js";
8
8
  import { t as formatCliCommand } from "./command-format-BAxx4PW5.js";
9
9
  import "./env-D7qJ4JPa.js";
10
- import { A as resolveStrictExistingPathsWithinRoot, M as DEFAULT_FILL_FIELD_TYPE, O as DEFAULT_UPLOAD_DIR, S as withCdpSocket, _ as withBrowserNavigationPolicy, d as formatAriaSnapshot, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, t as getChromeWebSocketUrl, v as appendCdpPath, x as getHeadersWithAuth, y as fetchJson } from "./chrome-B0l3h-bh.js";
10
+ import { A as resolveStrictExistingPathsWithinRoot, M as DEFAULT_FILL_FIELD_TYPE, O as DEFAULT_UPLOAD_DIR, S as withCdpSocket, _ as withBrowserNavigationPolicy, d as formatAriaSnapshot, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, t as getChromeWebSocketUrl, v as appendCdpPath, x as getHeadersWithAuth, y as fetchJson } from "./chrome-D9NosK0s.js";
11
11
  import "./ssrf-DappnhDp.js";
12
12
  import "./path-alias-guards-CvJiPmtO.js";
13
13
  import "./redact-BC8lz54x.js";
@@ -9,7 +9,7 @@ import "./github-copilot-token-a1OCSw8A.js";
9
9
  import { t as formatCliCommand } from "./command-format-BAxx4PW5.js";
10
10
  import "./boolean-CE7i9tBR.js";
11
11
  import "./env-DlwyzkOi.js";
12
- import { A as resolveStrictExistingPathsWithinRoot, M as DEFAULT_FILL_FIELD_TYPE, O as DEFAULT_UPLOAD_DIR, S as withCdpSocket, _ as withBrowserNavigationPolicy, d as formatAriaSnapshot, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, t as getChromeWebSocketUrl, v as appendCdpPath, x as getHeadersWithAuth, y as fetchJson } from "./chrome-BgN40zx8.js";
12
+ import { A as resolveStrictExistingPathsWithinRoot, M as DEFAULT_FILL_FIELD_TYPE, O as DEFAULT_UPLOAD_DIR, S as withCdpSocket, _ as withBrowserNavigationPolicy, d as formatAriaSnapshot, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, t as getChromeWebSocketUrl, v as appendCdpPath, x as getHeadersWithAuth, y as fetchJson } from "./chrome-Cvenz6iZ.js";
13
13
  import "./ssrf-CZeHDwVZ.js";
14
14
  import "./path-alias-guards-wnBrvThd.js";
15
15
  import "./redact-BBK1JJVh.js";
@@ -117,12 +117,12 @@ import "./server-lifecycle-dHFl4Thm.js";
117
117
  import "./stagger-rQoQSWkz.js";
118
118
  import "./system-run-command-g1BuXCBC.js";
119
119
  import "./runtime-guard-X6f4YmTM.js";
120
- import "./program-context-BQzDOgIq.js";
120
+ import "./program-context-CKI3DfIX.js";
121
121
  import "./skills-status-DA8PuK0E.js";
122
122
  import { t as copyToClipboard } from "./clipboard-wjtMutPa.js";
123
123
  import "./note-BmH1T9iR.js";
124
124
  import "./channels-status-issues-DQ_oSJ2B.js";
125
- import "./completion-cli-CNt0wK0B.js";
125
+ import "./completion-cli-DlgejkIg.js";
126
126
  import "./daemon-install-helpers-BZY9-jNW.js";
127
127
  import "./systemd-DPAobQZs.js";
128
128
  import { t as resolveGatewayService } from "./service-DSsjOK4I.js";
@@ -136,8 +136,8 @@ import "./logging-ByTQYoIg.js";
136
136
  import "./doctor-config-flow-FDCTWwu_.js";
137
137
  import "./systemd-linger-5XlJVbbh.js";
138
138
  import "./health-format-CE5TCyXu.js";
139
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-BcWpzfp6.js";
140
- import "./doctor-completion-BNfkghK8.js";
139
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-B_jidQym.js";
140
+ import "./doctor-completion-Bpz9BR7f.js";
141
141
  import path from "node:path";
142
142
  import fs from "node:fs/promises";
143
143
  import { cancel, confirm, isCancel, multiselect } from "@clack/prompts";
@@ -117,9 +117,9 @@ import "./pairing-labels-DZ_lUZoX.js";
117
117
  import { t as copyToClipboard } from "./clipboard-C25piuHH.js";
118
118
  import "./note-C2HHth6G.js";
119
119
  import "./channels-status-issues-DLyLTQYy.js";
120
- import "./completion-cli-C3IMZB6Q.js";
121
- import "./register.subclis-DdamdQRf.js";
122
- import "./command-registry-B6hFRHrd.js";
120
+ import "./completion-cli-L4888GxV.js";
121
+ import "./register.subclis-DPbBzdlM.js";
122
+ import "./command-registry-DZvQyvdk.js";
123
123
  import "./program-context-BrqeiWcA.js";
124
124
  import "./daemon-install-helpers-DUHqeg5Y.js";
125
125
  import "./runtime-guard-DTSD0F6o.js";
@@ -135,8 +135,8 @@ import "./logging-MF6Thoxk.js";
135
135
  import "./doctor-config-flow-DNl4GG2O.js";
136
136
  import "./systemd-linger-Dx928sEF.js";
137
137
  import "./health-format-wax5NzZB.js";
138
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-B7sFXf8N.js";
139
- import "./doctor-completion-G9FLUIDZ.js";
138
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-DNS7CxGQ.js";
139
+ import "./doctor-completion-CLstfG3E.js";
140
140
  import path from "node:path";
141
141
  import fs from "node:fs/promises";
142
142
  import { cancel, confirm, isCancel, multiselect } from "@clack/prompts";
@@ -40,11 +40,11 @@ import "./prompt-style-BOT6z_rl.js";
40
40
  import "./runtime-guard-X6f4YmTM.js";
41
41
  import "./note-BmH1T9iR.js";
42
42
  import "./clack-prompter-D56VAM4o.js";
43
- import "./onboarding-B4o-MRq0.js";
43
+ import "./onboarding-rwitqr3M.js";
44
44
  import "./logging-ByTQYoIg.js";
45
45
  import { t as ONBOARD_PROVIDER_AUTH_FLAGS } from "./onboard-provider-auth-flags-CWpV5eF5.js";
46
46
  import { n as formatAuthChoiceChoicesForCli } from "./auth-choice-options-hTcaCfWv.js";
47
- import { t as onboardCommand } from "./onboard-BAM3Ph4P.js";
47
+ import { t as onboardCommand } from "./onboard-DJ7dmTBg.js";
48
48
 
49
49
  //#region src/cli/program/register.onboard.ts
50
50
  function resolveInstallDaemonFlag(command, opts) {
@@ -36,11 +36,11 @@ import "./prompt-style-XmK49QYK.js";
36
36
  import "./note-C2HHth6G.js";
37
37
  import "./clack-prompter-Bo7vS5xP.js";
38
38
  import "./runtime-guard-DTSD0F6o.js";
39
- import "./onboarding-CkGY9DOw.js";
39
+ import "./onboarding-CnU9R2v4.js";
40
40
  import "./logging-MF6Thoxk.js";
41
41
  import { t as ONBOARD_PROVIDER_AUTH_FLAGS } from "./onboard-provider-auth-flags-DHfeIfN6.js";
42
42
  import { n as formatAuthChoiceChoicesForCli } from "./auth-choice-options-DFPvi4sr.js";
43
- import { t as onboardCommand } from "./onboard-CJhQPHr3.js";
43
+ import { t as onboardCommand } from "./onboard-C9HVLPjY.js";
44
44
 
45
45
  //#region src/cli/program/register.onboard.ts
46
46
  function resolveInstallDaemonFlag(command, opts) {
@@ -37,9 +37,9 @@ import { t as hasExplicitOptions } from "./command-options-CK65DMbR.js";
37
37
  import "./note-C2HHth6G.js";
38
38
  import "./clack-prompter-Bo7vS5xP.js";
39
39
  import "./runtime-guard-DTSD0F6o.js";
40
- import "./onboarding-CkGY9DOw.js";
40
+ import "./onboarding-CnU9R2v4.js";
41
41
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-MF6Thoxk.js";
42
- import { t as onboardCommand } from "./onboard-CJhQPHr3.js";
42
+ import { t as onboardCommand } from "./onboard-C9HVLPjY.js";
43
43
  import JSON5 from "json5";
44
44
  import fs from "node:fs/promises";
45
45
 
@@ -41,9 +41,9 @@ import "./runtime-guard-X6f4YmTM.js";
41
41
  import { t as hasExplicitOptions } from "./command-options-D4MmqoOd.js";
42
42
  import "./note-BmH1T9iR.js";
43
43
  import "./clack-prompter-D56VAM4o.js";
44
- import "./onboarding-B4o-MRq0.js";
44
+ import "./onboarding-rwitqr3M.js";
45
45
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-ByTQYoIg.js";
46
- import { t as onboardCommand } from "./onboard-BAM3Ph4P.js";
46
+ import { t as onboardCommand } from "./onboard-DJ7dmTBg.js";
47
47
  import JSON5 from "json5";
48
48
  import fs from "node:fs/promises";
49
49
 
@@ -64,7 +64,7 @@ const entries = [
64
64
  description: "Run, inspect, and query the WebSocket Gateway",
65
65
  hasSubcommands: true,
66
66
  register: async (program) => {
67
- (await import("./gateway-cli-BUH75yVT.js")).registerGatewayCli(program);
67
+ (await import("./gateway-cli-PaW0PAyP.js")).registerGatewayCli(program);
68
68
  }
69
69
  },
70
70
  {
@@ -268,7 +268,7 @@ const entries = [
268
268
  description: "Update IdleHands and inspect update channel status",
269
269
  hasSubcommands: true,
270
270
  register: async (program) => {
271
- (await import("./update-cli-CiMVlwJv.js")).registerUpdateCli(program);
271
+ (await import("./update-cli-CQICcdX8.js")).registerUpdateCli(program);
272
272
  }
273
273
  },
274
274
  {
@@ -289,7 +289,13 @@ const entries = [
289
289
  console.log(message.replace(/\*\*/g, ""));
290
290
  });
291
291
  console.log("\n" + result.message.replace(/\*\*/g, ""));
292
- if (result.needsRestart && result.success) console.log("\n⚠️ Please restart idlehands to use the new version.");
292
+ if (result.needsRestart && result.success) {
293
+ console.log("\nℹ️ Upgrade installed. If you are running interactively, restart your current process/session to load the new binary.");
294
+ console.log("Suggested commands:");
295
+ console.log(" systemctl --user restart idlehands-bot # if using user service");
296
+ console.log(" idlehands gateway restart # if running gateway manually");
297
+ console.log(" hash -r && idlehands --version # refresh shell command cache + verify");
298
+ }
293
299
  });
294
300
  }
295
301
  },
@@ -298,7 +304,7 @@ const entries = [
298
304
  description: "Generate shell completion script",
299
305
  hasSubcommands: false,
300
306
  register: async (program) => {
301
- (await import("./completion-cli-C3IMZB6Q.js").then((n) => n.n)).registerCompletionCli(program);
307
+ (await import("./completion-cli-L4888GxV.js").then((n) => n.n)).registerCompletionCli(program);
302
308
  }
303
309
  }
304
310
  ];
@@ -397,7 +397,7 @@ async function runCli(argv = process$1.argv) {
397
397
  assertSupportedRuntime();
398
398
  if (await tryRouteCli(normalizedArgv)) return;
399
399
  enableConsoleCapture();
400
- const { buildProgram } = await import("./program-rhZMLOVW.js");
400
+ const { buildProgram } = await import("./program-iI96_r6N.js");
401
401
  const program = buildProgram();
402
402
  installUnhandledRejectionHandler();
403
403
  process$1.on("uncaughtException", (error) => {
@@ -410,10 +410,10 @@ async function runCli(argv = process$1.argv) {
410
410
  const { getProgramContext } = await import("./program-context-BrqeiWcA.js").then((n) => n.n);
411
411
  const ctx = getProgramContext(program);
412
412
  if (ctx) {
413
- const { registerCoreCliByName } = await import("./command-registry-B6hFRHrd.js").then((n) => n.t);
413
+ const { registerCoreCliByName } = await import("./command-registry-DZvQyvdk.js").then((n) => n.t);
414
414
  await registerCoreCliByName(program, ctx, primary, parseArgv);
415
415
  }
416
- const { registerSubCliByName } = await import("./register.subclis-DdamdQRf.js").then((n) => n.a);
416
+ const { registerSubCliByName } = await import("./register.subclis-DPbBzdlM.js").then((n) => n.a);
417
417
  await registerSubCliByName(program, primary);
418
418
  }
419
419
  if (!shouldSkipPluginCommandRegistration({
@@ -4,7 +4,7 @@ import { A as shouldLogVerbose, D as logVerbose, K as resolvePreferredIdleHandsT
4
4
  import { C as requireApiKey, J as mergeInboundPathRoots, K as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, L as loadConfig, Y as resolveIMessageAttachmentRoots, c as normalizeProviderId, fn as resolveIdleHandsAgentDir, h as normalizeGoogleModelId, q as isInboundPathAllowed, w as resolveApiKeyForProvider } from "./model-selection-BxtJfqcr.js";
5
5
  import { t as normalizeChatType } from "./chat-type-DLInEbxd.js";
6
6
  import { c as detectMime, f as isAudioFileName, m as kindFromMime, u as getFileExtension } from "./image-ops-ZtqTZwlg.js";
7
- import { t as describeImageWithModel, w as ensureIdleHandsModelsJson } from "./image-17K3y23x.js";
7
+ import { t as describeImageWithModel, w as ensureIdleHandsModelsJson } from "./image-zLW7gYnA.js";
8
8
  import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-83r9WogG.js";
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-B7YMixjc.js";
10
10
  import { t as fetchWithSsrFGuard } from "./fetch-guard-DqbeAPu0.js";