squidclaw 3.0.32 → 3.0.33

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 (108) hide show
  1. package/dist/{acp-cli-Cgh0knV4.js → acp-cli-BeT7oXUu.js} +2 -2
  2. package/dist/{agents.config-DOZdl-eO.js → agents.config-Cav8LwTL.js} +1 -1
  3. package/dist/{audio-preflight-CXP7KNn_.js → audio-preflight-Ckq8A2xS.js} +4 -4
  4. package/dist/{audio-preflight-CB33NBGY.js → audio-preflight-WUW8KeL4.js} +6 -6
  5. package/dist/{audio-transcription-runner-BOxTuqbS.js → audio-transcription-runner-Bd34S1mx.js} +1 -1
  6. package/dist/{audio-transcription-runner-CCZC5tJf.js → audio-transcription-runner-BkEXZq6_.js} +1 -1
  7. package/dist/{audit-BhpEYysK.js → audit-CL1tJbCc.js} +6 -6
  8. package/dist/{auth-choice-CW-WPa0J.js → auth-choice-CbIT_f15.js} +2 -2
  9. package/dist/{browser-cli-BsOTPzD6.js → browser-cli-Bjw4bzsY.js} +3 -3
  10. package/dist/build-info.json +2 -2
  11. package/dist/bundled/session-memory/HOOK.md +1 -1
  12. package/dist/bundled/session-memory/handler.js +48 -0
  13. package/dist/{call-CsRvPUMG.js → call-BZMmsZnA.js} +1 -1
  14. package/dist/{channel-options-DiLSWw11.js → channel-options-ByYVebwk.js} +1 -1
  15. package/dist/{channel-web-B9qThdZn.js → channel-web-DRCZstY9.js} +3 -3
  16. package/dist/{channels-cli-DPzzCs8D.js → channels-cli-fZ8vLR-3.js} +21 -21
  17. package/dist/{chrome-AmH-OPlL.js → chrome-B3h5980A.js} +8 -8
  18. package/dist/{chrome-DLZaNSqV.js → chrome-uzcvgAW9.js} +8 -8
  19. package/dist/{clawbot-cli-Y6f5RzmX.js → clawbot-cli-Aal6iAhy.js} +4 -4
  20. package/dist/{cli-Cegwo5rc.js → cli-DDzqaV2x.js} +16 -16
  21. package/dist/{client-DYXM5N_N.js → client-gy8bx9Xy.js} +4 -4
  22. package/dist/{command-secret-targets-4lxt7RD_.js → command-secret-targets-QzzK0cvw.js} +2 -2
  23. package/dist/{completion-cli-BLY0f3DS.js → completion-cli-cvF7VIAg.js} +1 -1
  24. package/dist/{config-cli-B7X83S8T.js → config-cli-BeARZFf8.js} +1 -1
  25. package/dist/{configure-Hiahxtwa.js → configure-D3v5-GDg.js} +6 -6
  26. package/dist/{cron-cli-DIoOoMCm.js → cron-cli-DjN_8kik.js} +3 -3
  27. package/dist/{daemon-cli-DyGOGB4b.js → daemon-cli-D-GtS9tA.js} +2 -2
  28. package/dist/{deliver-Baa4v4N-.js → deliver-KuyvhwaK.js} +1 -1
  29. package/dist/{deliver-DGXG0w_w.js → deliver-e7dtX7aI.js} +1 -1
  30. package/dist/{deliver-runtime-Cld2SPeU.js → deliver-runtime-CJeRn4Mi.js} +5 -5
  31. package/dist/{deliver-runtime-Do2EXjHh.js → deliver-runtime-DPjMYovi.js} +3 -3
  32. package/dist/{deps-send-whatsapp.runtime-rPF4BAeN.js → deps-send-whatsapp.runtime-B155kzJI.js} +7 -7
  33. package/dist/{deps-send-whatsapp.runtime-Di849gV3.js → deps-send-whatsapp.runtime-cpKOCWZ7.js} +18 -18
  34. package/dist/{devices-cli-DJ5t9Awn.js → devices-cli-CxBvKU-k.js} +2 -2
  35. package/dist/{doctor-completion-kjDYgxZk.js → doctor-completion-BIsKBzEq.js} +1 -1
  36. package/dist/{exec-approvals-cli-qbq31pxo.js → exec-approvals-cli-BWJVqTGx.js} +4 -4
  37. package/dist/extensionAPI.js +6 -6
  38. package/dist/{gateway-cli-lvhI_G2p.js → gateway-cli-D6hF-7r8.js} +28 -28
  39. package/dist/{gateway-rpc-DXJlCFNJ.js → gateway-rpc-CMY4PORW.js} +1 -1
  40. package/dist/{health-TD-34Yp-.js → health-B6rkscPh.js} +3 -3
  41. package/dist/{hooks-cli-C6DWUB-U.js → hooks-cli-CsLbZW55.js} +17 -17
  42. package/dist/{image-DI75geX3.js → image-CBBib8Ld.js} +1 -1
  43. package/dist/{image-Ccz6ndn7.js → image-Dkl58_nM.js} +1 -1
  44. package/dist/{image-runtime-Obmeae9a.js → image-runtime-2ePySomG.js} +5 -5
  45. package/dist/{image-runtime-BWARi-r4.js → image-runtime-BinILRte.js} +3 -3
  46. package/dist/index.js +21 -21
  47. package/dist/{logs-cli-C4B9RucB.js → logs-cli-Dv4wWIJZ.js} +3 -3
  48. package/dist/{memory-cli-C7wo32BJ.js → memory-cli-CgsaxpRr.js} +1 -1
  49. package/dist/{models-cli-CGWYDv56.js → models-cli-Cs6QUPHJ.js} +17 -17
  50. package/dist/{node-cli-DhcjrGhX.js → node-cli-QeGnYeqt.js} +5 -5
  51. package/dist/{node-command-policy-CPjB6YQt.js → node-command-policy-CzqB-8ah.js} +1 -1
  52. package/dist/{nodes-cli-CmE8JKKq.js → nodes-cli-u94LkIig.js} +3 -3
  53. package/dist/{npm-resolution-Bwt62vuA.js → npm-resolution-DptUU3y3.js} +1 -1
  54. package/dist/{onboard-BP7rTtCO.js → onboard-CJX_C5lq.js} +3 -3
  55. package/dist/{onboard-channels-D2p7QNyT.js → onboard-channels-CA3x3tGg.js} +2 -2
  56. package/dist/{onboard-helpers-JS-Lbczt.js → onboard-helpers-DZtoPn8i.js} +1 -1
  57. package/dist/{onboard-remote-Bf-wwh2S.js → onboard-remote-BvW9CIHn.js} +1 -1
  58. package/dist/{onboard-skills-CUip0jpN.js → onboard-skills-D19L2KkN.js} +1 -1
  59. package/dist/{onboarding-LbGi6oDz.js → onboarding-CvKwUVhN.js} +7 -7
  60. package/dist/{onboarding.finalize-CWcaxeIO.js → onboarding.finalize-CxclFJxn.js} +21 -21
  61. package/dist/{onboarding.gateway-config-BfJ7jZ3-.js → onboarding.gateway-config-DvYcbETj.js} +4 -4
  62. package/dist/{pi-embedded-BoY_A7hg.js → pi-embedded-BULXCFPg.js} +24 -24
  63. package/dist/{pi-embedded-helpers-u_th5KKV.js → pi-embedded-helpers-CQJfmPVp.js} +3 -3
  64. package/dist/{pi-embedded-helpers-DBZo6ghW.js → pi-embedded-helpers-CuiXHzQ1.js} +1 -1
  65. package/dist/{pi-tools.policy-BYTs7z53.js → pi-tools.policy-FpqAOqvu.js} +1 -1
  66. package/dist/{plugin-registry-FXXByNP3.js → plugin-registry-Cpf1qgAz.js} +1 -1
  67. package/dist/plugin-sdk/imessage.js +2 -2
  68. package/dist/plugin-sdk/mattermost.js +3 -3
  69. package/dist/plugin-sdk/signal.js +2 -2
  70. package/dist/{plugins-cli-BmfpsKs2.js → plugins-cli-DWmGTrQi.js} +17 -17
  71. package/dist/{program-context-Cc5-MG37.js → program-context-CIEsO7ba.js} +34 -34
  72. package/dist/{prompt-select-styled-BmJHQFIe.js → prompt-select-styled-4uvdkCmK.js} +10 -10
  73. package/dist/{provider-auth-helpers-BrYxePGn.js → provider-auth-helpers-Ds4co7pd.js} +1 -1
  74. package/dist/{push-apns-BH6u2jeD.js → push-apns-wyGqUoCL.js} +1 -1
  75. package/dist/{pw-ai-Bxj7Voze.js → pw-ai-DS32O9Ei.js} +1 -1
  76. package/dist/{pw-ai-Do8UJz-Y.js → pw-ai-DXis1Gal.js} +1 -1
  77. package/dist/{qr-cli-t7wb_tRQ.js → qr-cli-DhqLEdBe.js} +1 -1
  78. package/dist/{register.agent-eYMqq7DM.js → register.agent-IRNp0fr-.js} +21 -21
  79. package/dist/{register.configure-5ZU_WG0B.js → register.configure-D4ecAwAg.js} +24 -24
  80. package/dist/{register.maintenance-Di-_iCcy.js → register.maintenance-YOZ3sMNS.js} +22 -22
  81. package/dist/{register.message-BJEQ0tWj.js → register.message-ozARKUco.js} +17 -17
  82. package/dist/{register.onboard-D8V8BiRf.js → register.onboard-BtzGW6wy.js} +5 -5
  83. package/dist/{register.setup-CuD_ucSh.js → register.setup-CaZETnfd.js} +5 -5
  84. package/dist/{register.status-health-sessions-CfcRluvS.js → register.status-health-sessions-qS3pe6Kw.js} +20 -20
  85. package/dist/{reply-DM6COks_.js → reply-d12k6JyN.js} +30 -30
  86. package/dist/{rpc-BAWL8_DO.js → rpc-BnWL4MCX.js} +1 -1
  87. package/dist/{sandbox-dnsTApLp.js → sandbox-4_YzlsBa.js} +2 -2
  88. package/dist/{sandbox-cli-B_c94l3B.js → sandbox-cli-CO9AcpuP.js} +3 -3
  89. package/dist/{secrets-cli-ES-9H2pj.js → secrets-cli-CE_fukZS.js} +3 -3
  90. package/dist/{security-cli-B5H4tjcT.js → security-cli-D-jh37Iy.js} +8 -8
  91. package/dist/{server-DWce8-ko.js → server-COF4C6UQ.js} +4 -4
  92. package/dist/{server-context-CYPsJeRg.js → server-context-DWRUW3Oc.js} +3 -3
  93. package/dist/{server-lifecycle-CL57-qY-.js → server-lifecycle-DSRW9YyS.js} +2 -2
  94. package/dist/{server-node-events-CM2wrNgk.js → server-node-events-DcI3BKLU.js} +17 -17
  95. package/dist/{slash-dispatch.runtime-9OkfqjfK.js → slash-dispatch.runtime-CnIrfAgj.js} +16 -16
  96. package/dist/{slash-dispatch.runtime-B79IzyjK.js → slash-dispatch.runtime-DidWtkRY.js} +6 -6
  97. package/dist/{status-DLXPWgfm.js → status-Cxc7ROTK.js} +7 -7
  98. package/dist/{subagent-registry-runtime-CQR_M6WF.js → subagent-registry-runtime-DqbU91-h.js} +16 -16
  99. package/dist/{subagent-registry-runtime-CFbDYdKR.js → subagent-registry-runtime-Dup_yrOH.js} +6 -6
  100. package/dist/{system-cli-CUOkjFj4.js → system-cli-B0wBc7tJ.js} +3 -3
  101. package/dist/{tui-ChZP3wJ7.js → tui-BNyyikcb.js} +3 -3
  102. package/dist/{tui-cli-nXP__ZM8.js → tui-cli-DsuDwgRG.js} +7 -7
  103. package/dist/{update-cli-XGRmAcuW.js → update-cli-CqGNnerP.js} +23 -23
  104. package/dist/{update-runner-7klqnWFq.js → update-runner-BGYtEI5Z.js} +1 -1
  105. package/dist/{web-6kCngkSg.js → web-BQbhCFGN.js} +17 -17
  106. package/dist/{web-BUpcF84p.js → web-Cp2nm6U4.js} +6 -6
  107. package/dist/{with-timeout-CtjR5hW9.js → with-timeout-DINiEgLx.js} +2 -2
  108. package/package.json +1 -1
@@ -19,8 +19,8 @@ import { r as isKnownCoreToolId } from "./tool-catalog-DEbNxV11.js";
19
19
  import "./tailnet-CW8QpG1h.js";
20
20
  import "./ws-CyDV_9z2.js";
21
21
  import { n as resolveWindowsSpawnProgram, t as materializeWindowsSpawnProgram } from "./windows-spawn-Bo-pPi83.js";
22
- import { t as GatewayClient } from "./client-DYXM5N_N.js";
23
- import { s as resolveGatewayCredentialsWithSecretInputs, t as buildGatewayConnectionDetails } from "./call-CsRvPUMG.js";
22
+ import { t as GatewayClient } from "./client-gy8bx9Xy.js";
23
+ import { s as resolveGatewayCredentialsWithSecretInputs, t as buildGatewayConnectionDetails } from "./call-BZMmsZnA.js";
24
24
  import "./pairing-token-C0LPdqAt.js";
25
25
  import { t as formatDocsLink } from "./links-De9M3AmU.js";
26
26
  import { t as isMainModule } from "./is-main-D5LnS2LP.js";
@@ -1,4 +1,4 @@
1
- import { nn as identityHasValues, rn as loadAgentIdentityFromWorkspace } from "./reply-DM6COks_.js";
1
+ import { nn as identityHasValues, rn as loadAgentIdentityFromWorkspace } from "./reply-d12k6JyN.js";
2
2
  import { a as resolveAgentDir, d as resolveDefaultAgentId, n as listAgentEntries, u as resolveAgentWorkspaceDir } from "./agent-scope-BujGQgAe.js";
3
3
  import { c as normalizeAgentId } from "./session-key-CIXZm7v4.js";
4
4
 
@@ -8,8 +8,8 @@ import "./plugins-DyL70_Cc.js";
8
8
  import "./accounts-DbFEaiJV.js";
9
9
  import "./accounts-M-PDXeZS.js";
10
10
  import "./image-ops-kjt4AS_Q.js";
11
- import "./pi-embedded-helpers-u_th5KKV.js";
12
- import "./chrome-AmH-OPlL.js";
11
+ import "./pi-embedded-helpers-CQJfmPVp.js";
12
+ import "./chrome-B3h5980A.js";
13
13
  import "./skills-D-yc7joe.js";
14
14
  import "./path-alias-guards-CkoY5PBF.js";
15
15
  import "./redact-kK-uDSQK.js";
@@ -20,8 +20,8 @@ import "./store-BR2dv_uL.js";
20
20
  import "./accounts-CBw88Ct9.js";
21
21
  import "./paths-DX1_VIk-.js";
22
22
  import "./tool-images-CYIFgCQb.js";
23
- import "./image-DI75geX3.js";
24
- import { g as isAudioAttachment, i as normalizeMediaAttachments, o as resolveMediaAttachmentLocalRoots, t as runAudioTranscription } from "./audio-transcription-runner-BOxTuqbS.js";
23
+ import "./image-CBBib8Ld.js";
24
+ import { g as isAudioAttachment, i as normalizeMediaAttachments, o as resolveMediaAttachmentLocalRoots, t as runAudioTranscription } from "./audio-transcription-runner-Bd34S1mx.js";
25
25
  import "./fetch-C6LwQYOf.js";
26
26
  import "./fetch-guard-B1gqp9Cu.js";
27
27
  import "./api-key-rotation-9CbKvlYi.js";
@@ -19,18 +19,18 @@ import "./dock-2ifhd2CL.js";
19
19
  import "./message-channel-CSxZnhaV.js";
20
20
  import "./plugins-IsWYhQUd.js";
21
21
  import "./sessions-DYMgGJDb.js";
22
- import { d as isAudioAttachment, i as normalizeMediaAttachments, o as resolveMediaAttachmentLocalRoots, t as runAudioTranscription } from "./audio-transcription-runner-CCZC5tJf.js";
23
- import "./image-Ccz6ndn7.js";
22
+ import { d as isAudioAttachment, i as normalizeMediaAttachments, o as resolveMediaAttachmentLocalRoots, t as runAudioTranscription } from "./audio-transcription-runner-BkEXZq6_.js";
23
+ import "./image-Dkl58_nM.js";
24
24
  import "./models-config-E6UjccpQ.js";
25
- import "./pi-embedded-helpers-DBZo6ghW.js";
26
- import "./sandbox-dnsTApLp.js";
25
+ import "./pi-embedded-helpers-CuiXHzQ1.js";
26
+ import "./sandbox-4_YzlsBa.js";
27
27
  import "./tool-catalog-DEbNxV11.js";
28
- import "./chrome-DLZaNSqV.js";
28
+ import "./chrome-uzcvgAW9.js";
29
29
  import "./tailscale-D0l0E6wR.js";
30
30
  import "./tailnet-CW8QpG1h.js";
31
31
  import "./ws-CyDV_9z2.js";
32
32
  import "./auth-C-PQHdpn.js";
33
- import "./server-context-CYPsJeRg.js";
33
+ import "./server-context-DWRUW3Oc.js";
34
34
  import "./frontmatter-2aKLThq2.js";
35
35
  import "./skills-BnBOxX1c.js";
36
36
  import "./path-alias-guards-CCRXJArp.js";
@@ -3,7 +3,7 @@ import { L as logVerbose, O as createSubsystemLogger, Y as resolvePreferredSquid
3
3
  import { A as requireApiKey, Y as loadConfig, at as isInboundPathAllowed, c as normalizeProviderId, cr as resolveSquidClawAgentDir, h as normalizeGoogleModelId, it as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, j as resolveApiKeyForProvider, ot as mergeInboundPathRoots, st as resolveIMessageAttachmentRoots } from "./model-selection-BAHgzvVh.js";
4
4
  import { _ as normalizeChatType } from "./plugins-DyL70_Cc.js";
5
5
  import { E as kindFromMime, S as getFileExtension, b as detectMime, w as isAudioFileName } from "./image-ops-kjt4AS_Q.js";
6
- import { t as describeImageWithModel, w as ensureSquidClawModelsJson } from "./image-DI75geX3.js";
6
+ import { t as describeImageWithModel, w as ensureSquidClawModelsJson } from "./image-CBBib8Ld.js";
7
7
  import { a as getDefaultMediaLocalRoots, n as fetchRemoteMedia, t as MediaFetchError } from "./fetch-C6LwQYOf.js";
8
8
  import { n as fetchWithTimeout } from "./fetch-timeout-B_Wivh-n.js";
9
9
  import { t as fetchWithSsrFGuard } from "./fetch-guard-B1gqp9Cu.js";
@@ -3,7 +3,7 @@ import { M as resolveAgentModelFallbackValues, N as resolveAgentModelPrimaryValu
3
3
  import { n as runExec } from "./exec-Dfgi8amS.js";
4
4
  import { A as normalizeGoogleModelId, d as normalizeProviderId, dn as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, fn as isInboundPathAllowed, mn as resolveIMessageAttachmentRoots, nt as requireApiKey, pn as mergeInboundPathRoots, rt as resolveApiKeyForProvider } from "./model-selection-CYbcDqxk.js";
5
5
  import { j as normalizeChatType } from "./plugins-IsWYhQUd.js";
6
- import { t as describeImageWithModel } from "./image-Ccz6ndn7.js";
6
+ import { t as describeImageWithModel } from "./image-Dkl58_nM.js";
7
7
  import { i as formatUncaughtError, n as extractErrorCode, s as readErrorName, t as collectErrorGraphCandidates } from "./errors-oMAXKmXG.js";
8
8
  import { c as detectMime, f as isAudioFileName, m as kindFromMime, u as getFileExtension } from "./image-ops-BIWika4g.js";
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-BTot-we4.js";
@@ -9,24 +9,24 @@ import { d as normalizePluginsConfig } from "./manifest-registry-BaUPjNKb.js";
9
9
  import { l as normalizeStringEntries } from "./dock-2ifhd2CL.js";
10
10
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-CSxZnhaV.js";
11
11
  import { n as listChannelPlugins } from "./plugins-IsWYhQUd.js";
12
- import { C as resolveToolProfilePolicy, f as resolveSandboxConfigForAgent, k as SANDBOX_BROWSER_SECURITY_HASH_EPOCH, l as execDockerRaw, m as resolveSandboxToolPolicyForAgent, u as getBlockedBindReason } from "./sandbox-dnsTApLp.js";
12
+ import { C as resolveToolProfilePolicy, f as resolveSandboxConfigForAgent, k as SANDBOX_BROWSER_SECURITY_HASH_EPOCH, l as execDockerRaw, m as resolveSandboxToolPolicyForAgent, u as getBlockedBindReason } from "./sandbox-4_YzlsBa.js";
13
13
  import { a as resolveGatewayAuth } from "./auth-C-PQHdpn.js";
14
14
  import { t as resolveGatewayCredentialsFromConfig } from "./credentials-CR1rTMla.js";
15
- import { a as resolveProfile, c as resolveBrowserControlAuth, i as resolveBrowserConfig } from "./server-context-CYPsJeRg.js";
15
+ import { a as resolveProfile, c as resolveBrowserControlAuth, i as resolveBrowserConfig } from "./server-context-DWRUW3Oc.js";
16
16
  import { i as loadWorkspaceSkillEntries } from "./skills-BnBOxX1c.js";
17
17
  import { r as formatErrorMessage } from "./errors-oMAXKmXG.js";
18
18
  import { a as resolveNativeSkillsEnabled, i as resolveNativeCommandsEnabled } from "./commands-ZMRZQlsa.js";
19
- import { t as GatewayClient } from "./client-DYXM5N_N.js";
20
- import { l as READ_SCOPE, t as buildGatewayConnectionDetails } from "./call-CsRvPUMG.js";
19
+ import { t as GatewayClient } from "./client-gy8bx9Xy.js";
20
+ import { l as READ_SCOPE, t as buildGatewayConnectionDetails } from "./call-BZMmsZnA.js";
21
21
  import { i as readChannelAllowFromStore } from "./pairing-store-BWlsysu-.js";
22
22
  import { r as resolveMergedSafeBinProfileFixtures, t as listInterpreterLikeSafeBins } from "./exec-safe-bin-runtime-policy-BVu6icJL.js";
23
- import { l as resolveDmAllowState, n as isToolAllowedByPolicies, o as pickSandboxToolPolicy } from "./pi-tools.policy-BYTs7z53.js";
23
+ import { l as resolveDmAllowState, n as isToolAllowedByPolicies, o as pickSandboxToolPolicy } from "./pi-tools.policy-FpqAOqvu.js";
24
24
  import { n as isDangerousNameMatchingEnabled } from "./dangerous-name-matching-CN1u5zht.js";
25
25
  import { t as listAgentWorkspaceDirs } from "./workspace-dirs-BD6agTFk.js";
26
26
  import { n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./dangerous-tools-D0u9YNYf.js";
27
27
  import { t as resolveChannelDefaultAccountId } from "./helpers-CvsgDup6.js";
28
28
  import { t as scanDirectoryWithSummary } from "./skill-scanner-rdr9cQew.js";
29
- import { r as resolveNodeCommandAllowlist, t as DEFAULT_DANGEROUS_NODE_COMMANDS } from "./node-command-policy-CPjB6YQt.js";
29
+ import { r as resolveNodeCommandAllowlist, t as DEFAULT_DANGEROUS_NODE_COMMANDS } from "./node-command-policy-CzqB-8ah.js";
30
30
  import { c as normalizeTelegramAllowFromEntry, s as isNumericTelegramUserId, t as isDiscordMutableAllowEntry } from "./mutable-allowlist-detectors-CsTC5ncA.js";
31
31
  import { t as inferParamBFromIdOrName } from "./model-param-b-By9uTH-E.js";
32
32
  import path from "node:path";
@@ -3,11 +3,11 @@ import { A as resolveDefaultAgentWorkspaceDir, P as toAgentModelListLike, a as r
3
3
  import { At as generateChutesPkce, G as SYNTHETIC_DEFAULT_MODEL_REF, I as VENICE_DEFAULT_MODEL_REF, Li as KILOCODE_DEFAULT_MODEL_REF, Ot as CHUTES_AUTHORIZE_ENDPOINT, Ti as resolveSquidClawAgentDir, _t as resolveAuthProfileOrder, at as resolveEnvApiKey, dt as isHuggingfacePolicyLocked, fi as listProfilesForProvider, ft as CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF, g as resolveDefaultModelForAgent, hi as upsertAuthProfile, jt as parseOAuthCallbackInput, kt as exchangeChutesCodeForTokens, tt as getCustomProviderApiKey, ut as discoverHuggingfaceModels, vi as ensureAuthProfileStore } from "./model-selection-CYbcDqxk.js";
4
4
  import { i as isLoopbackHost } from "./ws-CyDV_9z2.js";
5
5
  import { n as loadModelCatalog } from "./model-catalog-BA65TdJI.js";
6
- import { f as openUrl } from "./onboard-helpers-JS-Lbczt.js";
6
+ import { f as openUrl } from "./onboard-helpers-DZtoPn8i.js";
7
7
  import { t as enablePluginInConfig } from "./enable-CDT4yxhz.js";
8
8
  import { a as normalizeSecretInputModeInput, c as resolveSecretInputModeForEnvSelection, d as normalizeApiKeyInput, f as validateApiKeyInput, i as ensureApiKeyFromOptionEnvOrPrompt, l as applyDefaultModelChoice, n as createAuthChoiceDefaultModelApplierForMutableState, o as normalizeTokenProviderInput, s as promptSecretRefForOnboarding, t as createAuthChoiceAgentModelNoter, u as ensureModelAllowlistEntry } from "./auth-choice.apply-helpers-62QGo1SR.js";
9
9
  import { $ as ZAI_DEFAULT_MODEL_REF, A as applyTogetherConfig, B as applyLitellmConfig, C as applyMoonshotProviderConfigCn, Ct as writeOAuthCredentials, D as applyQianfanProviderConfig, Dt as QIANFAN_DEFAULT_MODEL_REF, E as applyQianfanConfig, Et as MOONSHOT_DEFAULT_MODEL_REF, F as applyXaiProviderConfig, G as applyVercelAiGatewayProviderConfig, H as applyCloudflareAiGatewayConfig, I as applyXiaomiConfig, J as LITELLM_DEFAULT_MODEL_REF, K as applyAgentDefaultModelPrimary, L as applyXiaomiProviderConfig, M as applyVeniceConfig, N as applyVeniceProviderConfig, O as applySyntheticConfig, Ot as XAI_DEFAULT_MODEL_REF, P as applyXaiConfig, Q as XIAOMI_DEFAULT_MODEL_REF, R as applyZaiConfig, S as applyMoonshotProviderConfig, St as setZaiApiKey, T as applyOpenrouterProviderConfig, Tt as MISTRAL_DEFAULT_MODEL_REF, U as applyCloudflareAiGatewayProviderConfig, V as applyLitellmProviderConfig, W as applyVercelAiGatewayConfig, X as TOGETHER_DEFAULT_MODEL_REF, Y as OPENROUTER_DEFAULT_MODEL_REF, Z as VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF, _ as applyKimiCodeProviderConfig, _t as setVeniceApiKey, a as applyMinimaxApiConfig, at as setKilocodeApiKey, b as applyMoonshotConfig, bt as setXaiApiKey, c as applyMinimaxApiProviderConfigCn, ct as setMinimaxApiKey, d as applyAuthProfileConfig, dt as setOpenaiApiKey, et as setAnthropicApiKey, ft as setOpencodeZenApiKey, g as applyKimiCodeConfig, gt as setTogetherApiKey, h as applyKilocodeProviderConfig, ht as setSyntheticApiKey, i as applyOpencodeZenProviderConfig, it as setHuggingfaceApiKey, j as applyTogetherProviderConfig, k as applySyntheticProviderConfig, l as applyMinimaxConfig, lt as setMistralApiKey, m as applyKilocodeConfig, mt as setQianfanApiKey, n as validateAnthropicSetupToken, nt as setCloudflareAiGatewayConfig, o as applyMinimaxApiConfigCn, ot as setKimiCodingApiKey, p as applyHuggingfaceProviderConfig, pt as setOpenrouterApiKey, q as HUGGINGFACE_DEFAULT_MODEL_REF, r as applyOpencodeZenConfig, rt as setGeminiApiKey, s as applyMinimaxApiProviderConfig, st as setLitellmApiKey, t as buildTokenProfileId, tt as setByteplusApiKey, u as applyMinimaxProviderConfig, ut as setMoonshotApiKey, v as applyMistralConfig, vt as setVercelAiGatewayApiKey, w as applyOpenrouterConfig, wt as KIMI_CODING_MODEL_REF, x as applyMoonshotConfigCn, xt as setXiaomiApiKey, y as applyMistralProviderConfig, yt as setVolcengineApiKey, z as applyZaiProviderConfig } from "./auth-token-D-HcPPvY.js";
10
- import { a as createVpsAwareOAuthHandlers, c as githubCopilotLoginCommand, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-BrYxePGn.js";
10
+ import { a as createVpsAwareOAuthHandlers, c as githubCopilotLoginCommand, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-Ds4co7pd.js";
11
11
  import { a as GOOGLE_GEMINI_DEFAULT_MODEL, i as detectZaiEndpoint, n as applyOpenAIConfig, o as applyGoogleGeminiModelDefault, r as applyOpenAIProviderConfig, t as OPENAI_DEFAULT_MODEL } from "./openai-model-default-CxNMRPoN.js";
12
12
  import { c as OPENAI_CODEX_DEFAULT_MODEL, l as applyOpenAICodexModelDefault, r as applyPrimaryModel, s as promptAndConfigureVllm } from "./model-picker-4_epGej_.js";
13
13
  import { r as runOpenAIOAuthTlsPreflight, t as formatOpenAIOAuthTlsPreflightFix } from "./oauth-tls-preflight-CqqomOFQ.js";
@@ -24,15 +24,15 @@ import "./redact-BHOzodtN.js";
24
24
  import "./errors-oMAXKmXG.js";
25
25
  import "./fs-safe-CKHYu4Vz.js";
26
26
  import { t as movePathToTrash } from "./trash-C4dj1x0P.js";
27
- import "./client-DYXM5N_N.js";
28
- import "./call-CsRvPUMG.js";
27
+ import "./client-gy8bx9Xy.js";
28
+ import "./call-BZMmsZnA.js";
29
29
  import "./pairing-token-C0LPdqAt.js";
30
30
  import { t as formatDocsLink } from "./links-De9M3AmU.js";
31
31
  import { n as runCommandWithRuntime } from "./cli-utils-Ca0KE-dW.js";
32
32
  import { t as formatHelpExamples } from "./help-format-BMkyP_P-.js";
33
33
  import "./progress-BHN121Ps.js";
34
34
  import { n as inheritOptionFromParent } from "./command-options-D0bXi5Pl.js";
35
- import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-DXJlCFNJ.js";
35
+ import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-CMY4PORW.js";
36
36
  import { t as copyToClipboard } from "./clipboard-Cv0aNouS.js";
37
37
  import { fileURLToPath } from "node:url";
38
38
  import fs from "node:fs";
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "3.0.32",
2
+ "version": "3.0.33",
3
3
  "commit": "d1a1a88d935c4868c440c8d73bd3799dd6009abf",
4
- "builtAt": "2026-03-30T11:28:54.930Z"
4
+ "builtAt": "2026-03-30T11:38:19.522Z"
5
5
  }
@@ -7,7 +7,7 @@ metadata:
7
7
  "squidclaw":
8
8
  {
9
9
  "emoji": "💾",
10
- "events": ["command:new", "command:reset", "agent:bootstrap"],
10
+ "events": ["command:new", "command:reset", "agent:bootstrap", "message:received", "message:sent"],
11
11
  "requires": { "config": ["workspace.dir"] },
12
12
  "install": [{ "id": "bundled", "kind": "bundled", "label": "Bundled with SquidClaw" }],
13
13
  },
@@ -801,6 +801,8 @@ async function syncLongTermContextFile(params) {
801
801
  * Creates a new dated memory file with LLM-generated slug
802
802
  */
803
803
  const log = createSubsystemLogger("hooks/session-memory");
804
+ const AUTO_EXTRACT_EVERY_TURNS = 5;
805
+ const sessionTurnBuffers = /* @__PURE__ */ new Map();
804
806
  /**
805
807
  * Read recent messages from session file for slug generation
806
808
  */
@@ -937,6 +939,52 @@ function buildPeerMemoryContext(dbPath, agentId, peerId) {
937
939
  * Save session context to memory when /new or /reset command is triggered
938
940
  */
939
941
  const saveSessionToMemory = async (event) => {
942
+ if (event.type === "message" && (event.action === "received" || event.action === "sent")) {
943
+ const sessionKey = event.sessionKey;
944
+ const ctx = event.context;
945
+ const cfg = ctx.cfg;
946
+ if (!cfg) return;
947
+ const buf = sessionTurnBuffers.get(sessionKey) ?? {
948
+ turns: [],
949
+ extractedAtTurn: 0
950
+ };
951
+ if (event.action === "received") {
952
+ const body = ctx.body || ctx.bodyForAgent || "";
953
+ if (body.trim()) buf.pendingUser = body.trim();
954
+ sessionTurnBuffers.set(sessionKey, buf);
955
+ return;
956
+ }
957
+ if (buf.pendingUser) {
958
+ const assistantContent = ctx.content || "";
959
+ buf.turns.push(`User: ${buf.pendingUser}`);
960
+ buf.turns.push(`Assistant: ${assistantContent.slice(0, 800)}`);
961
+ buf.pendingUser = void 0;
962
+ if (buf.turns.length > 40) buf.turns = buf.turns.slice(-40);
963
+ const completedTurns = Math.floor(buf.turns.length / 2);
964
+ if (completedTurns - buf.extractedAtTurn >= AUTO_EXTRACT_EVERY_TURNS) {
965
+ buf.extractedAtTurn = completedTurns;
966
+ const agentId = resolveAgentIdFromSessionKey(sessionKey);
967
+ const workspaceDir = resolveAgentWorkspaceDir(cfg, agentId);
968
+ const userId = extractPeerIdFromSessionKey(sessionKey) ?? agentId ?? "default";
969
+ const dbPath = path.join(workspaceDir, "memory", "long-term.db");
970
+ const sessionContent = buf.turns.join("\n");
971
+ log.debug(`Auto-extracting memories for ${userId} after ${completedTurns} turns`);
972
+ setImmediate(() => {
973
+ runLongTermExtraction({
974
+ sessionContent,
975
+ sessionId: `auto-${sessionKey}-${Date.now()}`,
976
+ cfg,
977
+ workspaceDir,
978
+ agentId: agentId ?? "default",
979
+ userId,
980
+ dbPath
981
+ }).catch((err) => log.debug("Auto-extraction failed (non-fatal)", { error: String(err) }));
982
+ });
983
+ }
984
+ }
985
+ sessionTurnBuffers.set(sessionKey, buf);
986
+ return;
987
+ }
940
988
  if (isAgentBootstrapEvent(event)) {
941
989
  const peerId = extractPeerIdFromSessionKey(event.sessionKey);
942
990
  if (!peerId) return;
@@ -5,7 +5,7 @@ import { A as hasConfiguredSecretInput, F as resolveSecretInputRef } from "./reg
5
5
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-CSxZnhaV.js";
6
6
  import { a as isSecureWebSocketUrl } from "./ws-CyDV_9z2.js";
7
7
  import { t as resolveGatewayCredentialsFromConfig } from "./credentials-CR1rTMla.js";
8
- import { Mt as PROTOCOL_VERSION, en as normalizeFingerprint, nn as loadOrCreateDeviceIdentity, t as GatewayClient } from "./client-DYXM5N_N.js";
8
+ import { Mt as PROTOCOL_VERSION, en as normalizeFingerprint, nn as loadOrCreateDeviceIdentity, t as GatewayClient } from "./client-gy8bx9Xy.js";
9
9
  import path from "node:path";
10
10
  import { promisify } from "node:util";
11
11
  import fs from "node:fs/promises";
@@ -2,7 +2,7 @@ import { n as CHAT_CHANNEL_ORDER } from "./registry-CpzNS8-a.js";
2
2
  import { t as isTruthyEnvValue } from "./env-DeB9SeAQ.js";
3
3
  import { n as listChannelPlugins } from "./plugins-IsWYhQUd.js";
4
4
  import { a as listChannelPluginCatalogEntries } from "./plugin-auto-enable-DtyL8l35.js";
5
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-FXXByNP3.js";
5
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-Cpf1qgAz.js";
6
6
  import { fileURLToPath } from "node:url";
7
7
  import fs from "node:fs";
8
8
  import path from "node:path";
@@ -1,13 +1,13 @@
1
1
  import { a as logVerbose, c as shouldLogVerbose, m as getChildLogger } from "./globals-xfUIfxbE.js";
2
2
  import { C as sleep, T as toWhatsappJid, f as isSelfChatMode, m as normalizeE164, p as jidToE164, r as clamp, v as resolveJidToE164 } from "./utils-DMGXr25O.js";
3
- import { $t as sleepWithAbort, Cn as resolveInboundDebounceMs, Gn as shouldComputeCommandAuthorized, Gr as normalizeMentionText, Kr as enqueueSystemEvent, Nn as buildAgentSessionKey, Pn as resolveAgentRoute, Qt as computeBackoff, Sn as createInboundDebouncer, Wn as hasControlCommand, Wr as buildMentionRegexes, _n as resolveOpenProviderRuntimeGroupPolicy, _t as parseActivationCommand, bn as dispatchReplyWithBufferedBlockDispatcher, dn as buildPairingReply, fn as resolveMentionGating, gn as resolveDefaultGroupPolicy, gt as normalizeGroupActivation, hn as recordPendingHistoryEntryIfEnabled, kn as createDedupeCache, kt as resolveInboundSessionEnvelopeContext, ln as createReplyPrefixOptions, mi as finalizeInboundContext, mn as buildHistoryContextFromEntries, mr as resolveMessagePrefix, pn as DEFAULT_GROUP_HISTORY_LIMIT, pr as resolveIdentityNamePrefix, t as getReplyFromConfig, vn as warnMissingProviderGroupPolicyFallbackOnce, wn as formatInboundEnvelope, yn as shouldAckReactionForWhatsApp } from "./reply-DM6COks_.js";
3
+ import { $t as sleepWithAbort, Cn as resolveInboundDebounceMs, Gn as shouldComputeCommandAuthorized, Gr as normalizeMentionText, Kr as enqueueSystemEvent, Nn as buildAgentSessionKey, Pn as resolveAgentRoute, Qt as computeBackoff, Sn as createInboundDebouncer, Wn as hasControlCommand, Wr as buildMentionRegexes, _n as resolveOpenProviderRuntimeGroupPolicy, _t as parseActivationCommand, bn as dispatchReplyWithBufferedBlockDispatcher, dn as buildPairingReply, fn as resolveMentionGating, gn as resolveDefaultGroupPolicy, gt as normalizeGroupActivation, hn as recordPendingHistoryEntryIfEnabled, kn as createDedupeCache, kt as resolveInboundSessionEnvelopeContext, ln as createReplyPrefixOptions, mi as finalizeInboundContext, mn as buildHistoryContextFromEntries, mr as resolveMessagePrefix, pn as DEFAULT_GROUP_HISTORY_LIMIT, pr as resolveIdentityNamePrefix, t as getReplyFromConfig, vn as warnMissingProviderGroupPolicyFallbackOnce, wn as formatInboundEnvelope, yn as shouldAckReactionForWhatsApp } from "./reply-d12k6JyN.js";
4
4
  import { d as defaultRuntime, t as createSubsystemLogger } from "./subsystem-DC87CPVS.js";
5
5
  import { a as buildGroupHistoryKey, c as normalizeAgentId, n as DEFAULT_MAIN_KEY, r as buildAgentMainSessionKey } from "./session-key-CIXZm7v4.js";
6
6
  import { $t as loadConfig } from "./model-selection-CYbcDqxk.js";
7
7
  import { t as formatCliCommand } from "./command-format-z1t1m-Kx.js";
8
8
  import { a as resolveChannelGroupRequireMention, i as resolveChannelGroupPolicy } from "./dock-2ifhd2CL.js";
9
9
  import { c as recordSessionMetaFromInbound, o as loadSessionStore, ot as resolveGroupSessionKey, u as updateLastRoute } from "./sessions-DYMgGJDb.js";
10
- import { u as registerUnhandledRejectionHandler } from "./audio-transcription-runner-CCZC5tJf.js";
10
+ import { u as registerUnhandledRejectionHandler } from "./audio-transcription-runner-BkEXZq6_.js";
11
11
  import { i as saveMediaBuffer } from "./store-PDMRmC5Z.js";
12
12
  import { i as resolveWhatsAppAccount, p as readWebSelfId, s as getWebAuthAgeMs } from "./accounts-D095MOmG.js";
13
13
  import { c as resolveStorePath } from "./paths-B9v1dJHA.js";
@@ -16,7 +16,7 @@ import { s as upsertChannelPairingRequest } from "./pairing-store-BWlsysu-.js";
16
16
  import { r as formatDurationPrecise } from "./format-duration-XLSvPvzN.js";
17
17
  import { K as formatLocationText, q as toLocationContext } from "./send-ayueAmmr.js";
18
18
  import { a as loadWebMedia, d as chunkMarkdownTextWithMode, h as resolveTextChunkLimit, m as resolveChunkMode, s as resolveMarkdownTableMode } from "./ir-DXSoqqxw.js";
19
- import { c as readStoreAllowFromForDmPolicy, d as resolveDmGroupAccessWithLists, f as resolvePinnedMainDmOwnerFromAllowlist, u as resolveDmGroupAccessWithCommandGate } from "./pi-tools.policy-BYTs7z53.js";
19
+ import { c as readStoreAllowFromForDmPolicy, d as resolveDmGroupAccessWithLists, f as resolvePinnedMainDmOwnerFromAllowlist, u as resolveDmGroupAccessWithCommandGate } from "./pi-tools.policy-FpqAOqvu.js";
20
20
  import { n as recordChannelActivity } from "./channel-activity-au6JrYj-.js";
21
21
  import { t as convertMarkdownTables } from "./tables-D5xiUVGI.js";
22
22
  import { r as setActiveWebListener } from "./active-listener-cUtJy06F.js";
@@ -2,7 +2,7 @@ import "./paths-mdt1HFK2.js";
2
2
  import { g as getResolvedLoggerSettings, p as theme, s as setVerbose, t as danger } from "./globals-xfUIfxbE.js";
3
3
  import { d as isRecord } from "./utils-DMGXr25O.js";
4
4
  import "./thinking-44rmAw5o.js";
5
- import { mt as deleteTelegramUpdateOffset, vt as loadProviderUsageSummary, yt as formatUsageReportLines } from "./reply-DM6COks_.js";
5
+ import { mt as deleteTelegramUpdateOffset, vt as loadProviderUsageSummary, yt as formatUsageReportLines } from "./reply-d12k6JyN.js";
6
6
  import { d as resolveDefaultAgentId, u as resolveAgentWorkspaceDir } from "./agent-scope-BujGQgAe.js";
7
7
  import { d as defaultRuntime } from "./subsystem-DC87CPVS.js";
8
8
  import { _ as normalizeAccountId, g as DEFAULT_ACCOUNT_ID } from "./session-key-CIXZm7v4.js";
@@ -23,18 +23,18 @@ import "./message-channel-CSxZnhaV.js";
23
23
  import { at as parseDiscordTarget, et as fetchChannelPermissionsDiscord } from "./send-Dkm7tdhl.js";
24
24
  import { l as resolveTelegramAccount, n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-IsWYhQUd.js";
25
25
  import "./sessions-DYMgGJDb.js";
26
- import "./audio-transcription-runner-CCZC5tJf.js";
27
- import "./image-Ccz6ndn7.js";
26
+ import "./audio-transcription-runner-BkEXZq6_.js";
27
+ import "./image-Dkl58_nM.js";
28
28
  import "./models-config-E6UjccpQ.js";
29
- import "./pi-embedded-helpers-DBZo6ghW.js";
30
- import "./sandbox-dnsTApLp.js";
29
+ import "./pi-embedded-helpers-CuiXHzQ1.js";
30
+ import "./sandbox-4_YzlsBa.js";
31
31
  import "./tool-catalog-DEbNxV11.js";
32
- import "./chrome-DLZaNSqV.js";
32
+ import "./chrome-uzcvgAW9.js";
33
33
  import "./tailscale-D0l0E6wR.js";
34
34
  import "./tailnet-CW8QpG1h.js";
35
35
  import "./ws-CyDV_9z2.js";
36
36
  import "./auth-C-PQHdpn.js";
37
- import "./server-context-CYPsJeRg.js";
37
+ import "./server-context-DWRUW3Oc.js";
38
38
  import "./frontmatter-2aKLThq2.js";
39
39
  import "./skills-BnBOxX1c.js";
40
40
  import "./path-alias-guards-CCRXJArp.js";
@@ -63,11 +63,11 @@ import "./local-roots-EawDAy7B.js";
63
63
  import "./model-catalog-BA65TdJI.js";
64
64
  import "./proxy-fetch-C4C5I8Js.js";
65
65
  import "./tokens-B4_ntOSs.js";
66
- import "./deliver-DGXG0w_w.js";
66
+ import "./deliver-e7dtX7aI.js";
67
67
  import "./commands-ZMRZQlsa.js";
68
68
  import "./commands-registry-fCFRzpW3.js";
69
- import "./client-DYXM5N_N.js";
70
- import { n as callGateway } from "./call-CsRvPUMG.js";
69
+ import "./client-gy8bx9Xy.js";
70
+ import { n as callGateway } from "./call-BZMmsZnA.js";
71
71
  import "./pairing-token-C0LPdqAt.js";
72
72
  import "./fetch-C7NOAcr0.js";
73
73
  import { n as formatTimeAgo } from "./format-relative-DQEv82Cs.js";
@@ -79,7 +79,7 @@ import "./nodes-screen-DkPXrUi2.js";
79
79
  import "./target-errors-BxwxgIDk.js";
80
80
  import "./system-run-command-Tn73Ni57.js";
81
81
  import "./diagnostic-uUmjyJiU.js";
82
- import "./with-timeout-CtjR5hW9.js";
82
+ import "./with-timeout-DINiEgLx.js";
83
83
  import "./send-ayueAmmr.js";
84
84
  import "./model-DYX7DCud.js";
85
85
  import "./pi-model-discovery-jKXtBUqh.js";
@@ -91,46 +91,46 @@ import "./send-dbtWROAV.js";
91
91
  import "./outbound-attachment-Dfhlf6jc.js";
92
92
  import "./delivery-queue-BHAfJDuf.js";
93
93
  import "./send-DkA_1IkZ.js";
94
- import "./pi-tools.policy-BYTs7z53.js";
94
+ import "./pi-tools.policy-FpqAOqvu.js";
95
95
  import "./channel-activity-au6JrYj-.js";
96
96
  import "./tables-D5xiUVGI.js";
97
97
  import "./proxy-CzncRRd4.js";
98
98
  import "./skill-commands-BnbbI1PH.js";
99
99
  import "./workspace-dirs-BD6agTFk.js";
100
100
  import "./runtime-config-collectors-C78CbDLl.js";
101
- import { n as getChannelsCommandSecretTargetIds, s as resolveCommandSecretRefsViaGateway } from "./command-secret-targets-4lxt7RD_.js";
101
+ import { n as getChannelsCommandSecretTargetIds, s as resolveCommandSecretRefsViaGateway } from "./command-secret-targets-QzzK0cvw.js";
102
102
  import "./session-cost-usage-B4DbYmaL.js";
103
- import "./onboard-helpers-JS-Lbczt.js";
103
+ import "./onboard-helpers-DZtoPn8i.js";
104
104
  import "./prompt-style-BoYH_ODs.js";
105
105
  import "./pairing-labels-1HVyRj_b.js";
106
- import "./memory-cli-C7wo32BJ.js";
106
+ import "./memory-cli-CgsaxpRr.js";
107
107
  import "./manager-D2bJ_hf3.js";
108
108
  import "./query-expansion-Bf60ekMj.js";
109
109
  import { t as formatDocsLink } from "./links-De9M3AmU.js";
110
110
  import { n as runCommandWithRuntime } from "./cli-utils-Ca0KE-dW.js";
111
111
  import { t as formatHelpExamples } from "./help-format-BMkyP_P-.js";
112
112
  import { n as withProgress } from "./progress-BHN121Ps.js";
113
- import "./server-lifecycle-CL57-qY-.js";
113
+ import "./server-lifecycle-DSRW9YyS.js";
114
114
  import "./stagger-DL-XRpny.js";
115
- import "./channel-web-B9qThdZn.js";
115
+ import "./channel-web-DRCZstY9.js";
116
116
  import "./outbound-DEP_-2Ej.js";
117
117
  import "./session-CZJ5Ux6-.js";
118
118
  import "./login-CHNHfdet.js";
119
- import "./plugin-registry-FXXByNP3.js";
120
- import { t as formatCliChannelOptions } from "./channel-options-DiLSWw11.js";
119
+ import "./plugin-registry-Cpf1qgAz.js";
120
+ import { t as formatCliChannelOptions } from "./channel-options-ByYVebwk.js";
121
121
  import { t as hasExplicitOptions } from "./command-options-D0bXi5Pl.js";
122
122
  import { n as moveSingleAccountChannelSectionToDefaultAccount } from "./api-Cs-0sTCc.js";
123
123
  import "./note-CBt9wSWa.js";
124
124
  import { t as createClackPrompter } from "./clack-prompter-Bx0vssUh.js";
125
125
  import { t as resolveChannelDefaultAccountId } from "./helpers-CvsgDup6.js";
126
126
  import { i as describeBinding, n as applyAgentBindings, t as requireValidConfigSnapshot } from "./config-validation-uxYKdj5Y.js";
127
- import { n as buildAgentSummaries } from "./agents.config-DOZdl-eO.js";
127
+ import { n as buildAgentSummaries } from "./agents.config-Cav8LwTL.js";
128
128
  import "./enable-CDT4yxhz.js";
129
129
  import "./install-safe-path-iCmVuopp.js";
130
130
  import "./npm-pack-install-s-mP9K0z.js";
131
131
  import "./skill-scanner-rdr9cQew.js";
132
132
  import "./installs-CyjlehlR.js";
133
- import { a as reloadOnboardingPluginRegistry, i as ensureOnboardingPluginInstalled, r as setupChannels } from "./onboard-channels-D2p7QNyT.js";
133
+ import { a as reloadOnboardingPluginRegistry, i as ensureOnboardingPluginInstalled, r as setupChannels } from "./onboard-channels-CA3x3tGg.js";
134
134
  import "./auth-choice.apply-helpers-62QGo1SR.js";
135
135
  import "./issue-format-BwjsnqTE.js";
136
136
  import { t as buildChannelAccountSnapshot } from "./status-D98glect.js";
@@ -13,7 +13,7 @@ import { createHmac } from "node:crypto";
13
13
  import net from "node:net";
14
14
  import http, { createServer } from "node:http";
15
15
  import https from "node:https";
16
- import WebSocket$1, { WebSocketServer } from "ws";
16
+ import WebSocket, { WebSocketServer } from "ws";
17
17
  import { Buffer as Buffer$1 } from "node:buffer";
18
18
 
19
19
  //#region src/browser/constants.ts
@@ -592,7 +592,7 @@ async function ensureChromeExtensionRelayServer(opts) {
592
592
  let extensionWs = null;
593
593
  const cdpClients = /* @__PURE__ */ new Set();
594
594
  const connectedTargets = /* @__PURE__ */ new Map();
595
- const extensionConnected = () => extensionWs?.readyState === WebSocket$1.OPEN;
595
+ const extensionConnected = () => extensionWs?.readyState === WebSocket.OPEN;
596
596
  const hasConnectedTargets = () => connectedTargets.size > 0;
597
597
  let extensionDisconnectCleanupTimer = null;
598
598
  const extensionReconnectWaiters = /* @__PURE__ */ new Set();
@@ -644,7 +644,7 @@ async function ensureChromeExtensionRelayServer(opts) {
644
644
  let nextExtensionId = 1;
645
645
  const sendToExtension = async (payload) => {
646
646
  const ws = extensionWs;
647
- if (!ws || ws.readyState !== WebSocket$1.OPEN) throw new Error("Chrome extension not connected");
647
+ if (!ws || ws.readyState !== WebSocket.OPEN) throw new Error("Chrome extension not connected");
648
648
  ws.send(JSON.stringify(payload));
649
649
  return await new Promise((resolve, reject) => {
650
650
  const timer = setTimeout(() => {
@@ -661,12 +661,12 @@ async function ensureChromeExtensionRelayServer(opts) {
661
661
  const broadcastToCdpClients = (evt) => {
662
662
  const msg = JSON.stringify(evt);
663
663
  for (const ws of cdpClients) {
664
- if (ws.readyState !== WebSocket$1.OPEN) continue;
664
+ if (ws.readyState !== WebSocket.OPEN) continue;
665
665
  ws.send(msg);
666
666
  }
667
667
  };
668
668
  const sendResponseToCdp = (ws, res) => {
669
- if (ws.readyState !== WebSocket$1.OPEN) return;
669
+ if (ws.readyState !== WebSocket.OPEN) return;
670
670
  ws.send(JSON.stringify(res));
671
671
  };
672
672
  const dropConnectedTargetSession = (sessionId) => {
@@ -920,7 +920,7 @@ async function ensureChromeExtensionRelayServer(opts) {
920
920
  rejectUpgrade(socket, 401, "Unauthorized");
921
921
  return;
922
922
  }
923
- if (extensionWs && extensionWs.readyState !== WebSocket$1.OPEN) {
923
+ if (extensionWs && extensionWs.readyState !== WebSocket.OPEN) {
924
924
  try {
925
925
  extensionWs.terminate();
926
926
  } catch {}
@@ -953,7 +953,7 @@ async function ensureChromeExtensionRelayServer(opts) {
953
953
  clearExtensionDisconnectCleanupTimer();
954
954
  flushExtensionReconnectWaiters(true);
955
955
  const ping = setInterval(() => {
956
- if (ws.readyState !== WebSocket$1.OPEN) return;
956
+ if (ws.readyState !== WebSocket.OPEN) return;
957
957
  ws.send(JSON.stringify({ method: "ping" }));
958
958
  }, 5e3);
959
959
  ws.on("message", (data) => {
@@ -1309,7 +1309,7 @@ function openCdpWebSocket(wsUrl, opts) {
1309
1309
  const headers = getHeadersWithAuth(wsUrl, opts?.headers ?? {});
1310
1310
  const handshakeTimeoutMs = typeof opts?.handshakeTimeoutMs === "number" && Number.isFinite(opts.handshakeTimeoutMs) ? Math.max(1, Math.floor(opts.handshakeTimeoutMs)) : CDP_WS_HANDSHAKE_TIMEOUT_MS;
1311
1311
  const agent = getDirectAgentForCdp(wsUrl);
1312
- return new WebSocket$1(wsUrl, {
1312
+ return new WebSocket(wsUrl, {
1313
1313
  handshakeTimeout: handshakeTimeoutMs,
1314
1314
  ...Object.keys(headers).length ? { headers } : {},
1315
1315
  ...agent ? { agent } : {}
@@ -11,7 +11,7 @@ import { execFileSync, spawn } from "node:child_process";
11
11
  import { createHmac } from "node:crypto";
12
12
  import http, { createServer } from "node:http";
13
13
  import https from "node:https";
14
- import WebSocket, { WebSocketServer } from "ws";
14
+ import WebSocket$1, { WebSocketServer } from "ws";
15
15
 
16
16
  //#region src/browser/constants.ts
17
17
  const DEFAULT_SQUIDCLAW_BROWSER_ENABLED = true;
@@ -310,7 +310,7 @@ async function ensureChromeExtensionRelayServer(opts) {
310
310
  let extensionWs = null;
311
311
  const cdpClients = /* @__PURE__ */ new Set();
312
312
  const connectedTargets = /* @__PURE__ */ new Map();
313
- const extensionConnected = () => extensionWs?.readyState === WebSocket.OPEN;
313
+ const extensionConnected = () => extensionWs?.readyState === WebSocket$1.OPEN;
314
314
  const hasConnectedTargets = () => connectedTargets.size > 0;
315
315
  let extensionDisconnectCleanupTimer = null;
316
316
  const extensionReconnectWaiters = /* @__PURE__ */ new Set();
@@ -362,7 +362,7 @@ async function ensureChromeExtensionRelayServer(opts) {
362
362
  let nextExtensionId = 1;
363
363
  const sendToExtension = async (payload) => {
364
364
  const ws = extensionWs;
365
- if (!ws || ws.readyState !== WebSocket.OPEN) throw new Error("Chrome extension not connected");
365
+ if (!ws || ws.readyState !== WebSocket$1.OPEN) throw new Error("Chrome extension not connected");
366
366
  ws.send(JSON.stringify(payload));
367
367
  return await new Promise((resolve, reject) => {
368
368
  const timer = setTimeout(() => {
@@ -379,12 +379,12 @@ async function ensureChromeExtensionRelayServer(opts) {
379
379
  const broadcastToCdpClients = (evt) => {
380
380
  const msg = JSON.stringify(evt);
381
381
  for (const ws of cdpClients) {
382
- if (ws.readyState !== WebSocket.OPEN) continue;
382
+ if (ws.readyState !== WebSocket$1.OPEN) continue;
383
383
  ws.send(msg);
384
384
  }
385
385
  };
386
386
  const sendResponseToCdp = (ws, res) => {
387
- if (ws.readyState !== WebSocket.OPEN) return;
387
+ if (ws.readyState !== WebSocket$1.OPEN) return;
388
388
  ws.send(JSON.stringify(res));
389
389
  };
390
390
  const dropConnectedTargetSession = (sessionId) => {
@@ -638,7 +638,7 @@ async function ensureChromeExtensionRelayServer(opts) {
638
638
  rejectUpgrade(socket, 401, "Unauthorized");
639
639
  return;
640
640
  }
641
- if (extensionWs && extensionWs.readyState !== WebSocket.OPEN) {
641
+ if (extensionWs && extensionWs.readyState !== WebSocket$1.OPEN) {
642
642
  try {
643
643
  extensionWs.terminate();
644
644
  } catch {}
@@ -671,7 +671,7 @@ async function ensureChromeExtensionRelayServer(opts) {
671
671
  clearExtensionDisconnectCleanupTimer();
672
672
  flushExtensionReconnectWaiters(true);
673
673
  const ping = setInterval(() => {
674
- if (ws.readyState !== WebSocket.OPEN) return;
674
+ if (ws.readyState !== WebSocket$1.OPEN) return;
675
675
  ws.send(JSON.stringify({ method: "ping" }));
676
676
  }, 5e3);
677
677
  ws.on("message", (data) => {
@@ -1027,7 +1027,7 @@ function openCdpWebSocket(wsUrl, opts) {
1027
1027
  const headers = getHeadersWithAuth(wsUrl, opts?.headers ?? {});
1028
1028
  const handshakeTimeoutMs = typeof opts?.handshakeTimeoutMs === "number" && Number.isFinite(opts.handshakeTimeoutMs) ? Math.max(1, Math.floor(opts.handshakeTimeoutMs)) : CDP_WS_HANDSHAKE_TIMEOUT_MS;
1029
1029
  const agent = getDirectAgentForCdp(wsUrl);
1030
- return new WebSocket(wsUrl, {
1030
+ return new WebSocket$1(wsUrl, {
1031
1031
  handshakeTimeout: handshakeTimeoutMs,
1032
1032
  ...Object.keys(headers).length ? { headers } : {},
1033
1033
  ...agent ? { agent } : {}
@@ -17,13 +17,13 @@ import "./manifest-registry-BaUPjNKb.js";
17
17
  import "./message-channel-CSxZnhaV.js";
18
18
  import "./tailnet-CW8QpG1h.js";
19
19
  import "./ws-CyDV_9z2.js";
20
- import "./client-DYXM5N_N.js";
21
- import "./call-CsRvPUMG.js";
20
+ import "./client-gy8bx9Xy.js";
21
+ import "./call-BZMmsZnA.js";
22
22
  import "./pairing-token-C0LPdqAt.js";
23
23
  import "./runtime-config-collectors-C78CbDLl.js";
24
- import "./command-secret-targets-4lxt7RD_.js";
24
+ import "./command-secret-targets-QzzK0cvw.js";
25
25
  import { t as formatDocsLink } from "./links-De9M3AmU.js";
26
- import { n as registerQrCli } from "./qr-cli-t7wb_tRQ.js";
26
+ import { n as registerQrCli } from "./qr-cli-DhqLEdBe.js";
27
27
 
28
28
  //#region src/cli/clawbot-cli.ts
29
29
  function registerClawbotCli(program) {