@bitseek/claw 1.2.7 → 1.2.8

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 (123) hide show
  1. package/dist/{audio-preflight-Dd9DDvqB.js → audio-preflight-BWOdDA2n.js} +4 -4
  2. package/dist/{audio-transcription-runner-Bx53bUS2.js → audio-transcription-runner-DaoqvWoi.js} +1 -1
  3. package/dist/build-info.json +3 -3
  4. package/dist/bundled/boot-md/handler.js +6 -6
  5. package/dist/bundled/session-memory/handler.js +6 -6
  6. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  7. package/dist/{chrome-C6zMSR36.js → chrome-CjTE-vWv.js} +8 -8
  8. package/dist/{command-registry-Ce2f2xlT.js → command-registry-Keal8P25.js} +4 -4
  9. package/dist/{completion-cli-BmyLEw45.js → completion-cli-BWcHEWr6.js} +2 -2
  10. package/dist/{completion-cli-9Y73fGUi.js → completion-cli-B_pSnPVY.js} +1 -1
  11. package/dist/control-ui/assets/{index-CKSSOzJL.js → index-puDi2eTY.js} +2 -2
  12. package/dist/control-ui/assets/index-puDi2eTY.js.map +1 -0
  13. package/dist/control-ui/brand.png +0 -0
  14. package/dist/control-ui/index.html +4 -5
  15. package/dist/{deliver-DXa06hfk.js → deliver-xY3h9X6N.js} +1 -1
  16. package/dist/{doctor-completion-_GRkzsCa.js → doctor-completion-leOuoRMt.js} +1 -1
  17. package/dist/{doctor-completion-CWm9ZwKY.js → doctor-completion-sKCaOE5l.js} +1 -1
  18. package/dist/entry.js +2 -2
  19. package/dist/{gateway-cli-CSL5V3uF.js → gateway-cli-BlVNebTw.js} +15 -5
  20. package/dist/{gateway-cli-DRM2vzxA.js → gateway-cli-jL3MSRHB.js} +15 -5
  21. package/dist/{image-Dd4lgi4H.js → image-DCyaYY2d.js} +1 -1
  22. package/dist/index.js +1 -1
  23. package/dist/llm-slug-generator.js +6 -6
  24. package/dist/{onboard-BuGv9f2N.js → onboard-BCcjGKBR.js} +1 -1
  25. package/dist/{onboard-ATkjPZXm.js → onboard-KHObANUh.js} +1 -1
  26. package/dist/{onboarding-BAaREMfO.js → onboarding-BTXvw1Ro.js} +1 -1
  27. package/dist/{onboarding-BvdtFAPe.js → onboarding-DQNTd5J7.js} +1 -1
  28. package/dist/{onboarding.finalize-dkwktLJD.js → onboarding.finalize-CHYENeNO.js} +3 -3
  29. package/dist/{onboarding.finalize-CV7n10lP.js → onboarding.finalize-D0qfP3rB.js} +4 -4
  30. package/dist/{pi-embedded-DKX65Hec.js → pi-embedded-Bacc2S0h.js} +22 -22
  31. package/dist/{pi-embedded-helpers-BErNo2oq.js → pi-embedded-helpers-CMTVhLjq.js} +3 -3
  32. package/dist/plugin-sdk/{accounts-COLYAAOx.js → accounts-4WE2wtsW.js} +1 -1
  33. package/dist/plugin-sdk/{accounts-BZrkOo6-.js → accounts-AbI8uETR.js} +1 -1
  34. package/dist/plugin-sdk/{accounts-D_pT5EjF.js → accounts-BYcizTXn.js} +3 -3
  35. package/dist/plugin-sdk/{active-listener-DxBXcWm_.js → active-listener-pnqLAUOh.js} +1 -1
  36. package/dist/plugin-sdk/{agent-scope-DT5pxpJB.js → agent-scope-_j3fIYCK.js} +3 -3
  37. package/dist/plugin-sdk/{api-key-rotation-Dl6Ad7Nj.js → api-key-rotation-CYI51U_M.js} +2 -2
  38. package/dist/plugin-sdk/{audio-preflight-CkPj4OVY.js → audio-preflight-BTRRjPew.js} +33 -33
  39. package/dist/plugin-sdk/{audio-transcription-runner-BBn9jEMg.js → audio-transcription-runner-DFZS7uCO.js} +10 -10
  40. package/dist/plugin-sdk/{bindings-BSfhEjKN.js → bindings-CxxzC7gn.js} +2 -2
  41. package/dist/plugin-sdk/{channel-activity-DAEbma-o.js → channel-activity-B3yZ-f-m.js} +3 -3
  42. package/dist/plugin-sdk/{channel-web-O79O_ah6.js → channel-web-D2q54sK-.js} +23 -23
  43. package/dist/plugin-sdk/{chrome-Dn0G4NoF.js → chrome-oPevdeh5.js} +7 -7
  44. package/dist/plugin-sdk/{chunk-cvtXztAT.js → chunk-BPyPeheZ.js} +1 -1
  45. package/dist/plugin-sdk/{command-format-BOJz3y1v.js → command-format-DvyMEXQo.js} +1 -1
  46. package/dist/plugin-sdk/{commands-registry-CZWv_JwZ.js → commands-registry-Dk8re8Lz.js} +5 -5
  47. package/dist/plugin-sdk/{config-DAwOhnVF.js → config-D7I2_X4P.js} +10 -10
  48. package/dist/plugin-sdk/{deliver-PdH-MCq8.js → deliver-NrIHn0__.js} +11 -11
  49. package/dist/plugin-sdk/{diagnostic-BZvj-qNu.js → diagnostic-DL3k_wRi.js} +2 -2
  50. package/dist/plugin-sdk/{dock-BdR3OYZn.js → dock-CjdkiLH7.js} +6 -6
  51. package/dist/plugin-sdk/{errors-jusxdu7M.js → errors-DFTN4h2I.js} +1 -1
  52. package/dist/plugin-sdk/{fetch-guard-Dary6WwJ.js → fetch-guard-BivEyA4v.js} +2 -2
  53. package/dist/plugin-sdk/{fs-safe-DMCE0ej9.js → fs-safe-B256n7Ff.js} +3 -3
  54. package/dist/plugin-sdk/{image-B3A2l2ep.js → image-CkPzr3XN.js} +6 -6
  55. package/dist/plugin-sdk/{image-ops-DulHE5Qc.js → image-ops-C9GXWF3o.js} +1 -1
  56. package/dist/plugin-sdk/index.js +64 -64
  57. package/dist/plugin-sdk/{ir-BFXiJrsN.js → ir-BIm-jvIK.js} +6 -6
  58. package/dist/plugin-sdk/{local-roots-DssN60r6.js → local-roots-2AOXGUXW.js} +4 -4
  59. package/dist/plugin-sdk/{logger-Cr-x0vMf.js → logger-CNhs9eKJ.js} +1 -1
  60. package/dist/plugin-sdk/{login-D0ul3-6C.js → login-BcLiF9tC.js} +6 -6
  61. package/dist/plugin-sdk/{login-qr-XWKTFBuI.js → login-qr-GyPUodKJ.js} +9 -9
  62. package/dist/plugin-sdk/{manager-DGx_cF54.js → manager-DYLqNUb4.js} +10 -10
  63. package/dist/plugin-sdk/{markdown-tables-CsQpDNU5.js → markdown-tables-D9mmqMKi.js} +1 -1
  64. package/dist/plugin-sdk/{message-channel-CvNq-esz.js → message-channel-_CEZcqxE.js} +1 -1
  65. package/dist/plugin-sdk/{outbound-D29FHlQl.js → outbound-DdTsUaXa.js} +7 -7
  66. package/dist/plugin-sdk/{outbound-attachment-DRHrZUOx.js → outbound-attachment--hkuIDR1.js} +2 -2
  67. package/dist/plugin-sdk/{path-alias-guards-DpKV1B5p.js → path-alias-guards-BqUCBfUg.js} +1 -1
  68. package/dist/plugin-sdk/{pi-embedded-helpers-CKEUWckk.js → pi-embedded-helpers-CTfvZz83.js} +17 -17
  69. package/dist/plugin-sdk/{pi-model-discovery-BPeQq9XM.js → pi-model-discovery-CK3Ih_kq.js} +1 -1
  70. package/dist/plugin-sdk/{plugins-DF_dKXTR.js → plugins-BpHAMNJ1.js} +6 -6
  71. package/dist/plugin-sdk/{proxy-BfmEDoun.js → proxy-BJdRZOnJ.js} +1 -1
  72. package/dist/plugin-sdk/{proxy-fetch-BpHIgvBk.js → proxy-fetch-jmbopGcm.js} +1 -1
  73. package/dist/plugin-sdk/{pw-ai-BmmXDjtm.js → pw-ai-D0Kx7w1D.js} +13 -13
  74. package/dist/plugin-sdk/{qmd-manager-3hQbqkm5.js → qmd-manager-BDcutPp9.js} +8 -8
  75. package/dist/plugin-sdk/{query-expansion-BOGLUWB7.js → query-expansion-C_X8SyEA.js} +2 -2
  76. package/dist/plugin-sdk/{redact-BOuKZWXa.js → redact-DH8u23pF.js} +1 -1
  77. package/dist/plugin-sdk/{registry-Cv-oHUj1.js → registry-HF8_S7QO.js} +2 -2
  78. package/dist/plugin-sdk/{replies-CddwWBTJ.js → replies-DbjvV4gf.js} +3 -3
  79. package/dist/plugin-sdk/{reply-YZQvouuF.js → reply-Cs_Ks2Mr.js} +93 -93
  80. package/dist/plugin-sdk/{reply-prefix-DXthVxCx.js → reply-prefix-KODsMNJ-.js} +1 -1
  81. package/dist/plugin-sdk/{resolve-outbound-target-D3Y4F2Le.js → resolve-outbound-target-BPT4aNiD.js} +2 -2
  82. package/dist/plugin-sdk/{resolve-route-DuwYYn4a.js → resolve-route-De2B5QY_.js} +4 -4
  83. package/dist/plugin-sdk/{retry-BMcrIz7L.js → retry-pZ8iKytf.js} +1 -1
  84. package/dist/plugin-sdk/{send-D0AaWnIj.js → send-1uW-uqPf.js} +7 -7
  85. package/dist/plugin-sdk/{send-C5USYGq7.js → send-BoNw1Bki.js} +8 -8
  86. package/dist/plugin-sdk/{send-B0ztz6QC.js → send-C-Rd2stz.js} +6 -6
  87. package/dist/plugin-sdk/{send-DJzwu8kk.js → send-CZIN8SDx.js} +15 -15
  88. package/dist/plugin-sdk/{send-DEyQJTzd.js → send-wCqsQs_s.js} +10 -10
  89. package/dist/plugin-sdk/{session-meta-ChWvKVWj.js → session-meta-7J-uHiM_.js} +1 -1
  90. package/dist/plugin-sdk/{session-BA7tVDpV.js → session-ooYcB82T.js} +5 -5
  91. package/dist/plugin-sdk/{sessions-BXps6YzJ.js → sessions-lAIo5l8W.js} +6 -6
  92. package/dist/plugin-sdk/{skill-commands-B20uUsji.js → skill-commands-D1Q6hGS4.js} +5 -5
  93. package/dist/plugin-sdk/{skills-DXOTei42.js → skills-BWSDv2F_.js} +8 -8
  94. package/dist/plugin-sdk/{ssrf-Doxv9M7Q.js → ssrf-JKDwTi8i.js} +1 -1
  95. package/dist/plugin-sdk/{store-BZbE1V-C.js → store-BMeqzQAf.js} +2 -2
  96. package/dist/plugin-sdk/{subsystem-CM1s2lDT.js → subsystem-B0V8LFBA.js} +2 -2
  97. package/dist/plugin-sdk/{tables-BhH8EIqU.js → tables-DCSeBGBz.js} +1 -1
  98. package/dist/plugin-sdk/{target-errors-QZay02Cv.js → target-errors-0u6pegQv.js} +2 -2
  99. package/dist/plugin-sdk/{tokens-DIE-Bf72.js → tokens-DF2_VTJy.js} +1 -1
  100. package/dist/plugin-sdk/{tool-images-heXfaJdb.js → tool-images-BbsgbHMZ.js} +2 -2
  101. package/dist/plugin-sdk/{tool-loop-detection-CygMSQUK.js → tool-loop-detection-JkCpGrfk.js} +2 -2
  102. package/dist/plugin-sdk/{utils-BcL6KGZf.js → utils-BfVxx6bk.js} +1 -1
  103. package/dist/plugin-sdk/web-B35hdNQ-.js +72 -0
  104. package/dist/plugin-sdk/{whatsapp-actions-CRean1yN.js → whatsapp-actions-tVcrGNQc.js} +25 -25
  105. package/dist/{program-Br-upXE-.js → program-BI6W1Gll.js} +2 -2
  106. package/dist/{program-context-B7eOpdoF.js → program-context-D2D7wH7Q.js} +6 -6
  107. package/dist/{prompt-select-styled-CPPwmToI.js → prompt-select-styled-CdBJ0FWT.js} +1 -1
  108. package/dist/{prompt-select-styled-BpKwjfWa.js → prompt-select-styled-FGF3Su20.js} +1 -1
  109. package/dist/{pw-ai-pkfCxzhV.js → pw-ai-DGwA7iCM.js} +1 -1
  110. package/dist/{register.maintenance-DlVX7oGZ.js → register.maintenance-DTx6vUDv.js} +4 -4
  111. package/dist/{register.maintenance-D3hGsmW7.js → register.maintenance-f8NCHf6u.js} +5 -5
  112. package/dist/{register.onboard-BSOSCu5a.js → register.onboard-DmymXZNT.js} +2 -2
  113. package/dist/{register.onboard-BLl4Er9V.js → register.onboard-tT7keiju.js} +2 -2
  114. package/dist/{register.setup-CvAXGVEU.js → register.setup-D9AvFexw.js} +2 -2
  115. package/dist/{register.setup-NLg11E_9.js → register.setup-DjHaiqnA.js} +2 -2
  116. package/dist/{register.subclis-Zhshg_9Y.js → register.subclis-pmPhNoRB.js} +3 -3
  117. package/dist/{run-main-CiC7Az8U.js → run-main-D5C2p24j.js} +3 -3
  118. package/dist/{update-cli-B9F4MIMw.js → update-cli-C2EagLTi.js} +5 -5
  119. package/dist/{update-cli-mCVWiI6K.js → update-cli-DiT2fFEK.js} +4 -4
  120. package/dist/{web-V1uGLepo.js → web-CDHXvGxm.js} +6 -6
  121. package/package.json +1 -1
  122. package/dist/control-ui/assets/index-CKSSOzJL.js.map +0 -1
  123. package/dist/plugin-sdk/web-jmxdxo0H.js +0 -72
Binary file
@@ -3,12 +3,11 @@
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
- <title>OpenClaw Control</title>
6
+ <title>BitSeek Claw Control</title>
7
7
  <meta name="color-scheme" content="dark light" />
8
- <link rel="icon" type="image/svg+xml" href="./favicon.svg" />
9
- <link rel="icon" type="image/png" sizes="32x32" href="./favicon-32.png" />
10
- <link rel="apple-touch-icon" sizes="180x180" href="./apple-touch-icon.png" />
11
- <script type="module" crossorigin src="./assets/index-CKSSOzJL.js"></script>
8
+ <link rel="icon" type="image/png" href="./brand.png" />
9
+ <link rel="apple-touch-icon" href="./brand.png" />
10
+ <script type="module" crossorigin src="./assets/index-puDi2eTY.js"></script>
12
11
  <link rel="stylesheet" crossorigin href="./assets/index-Ck63PFX9.css">
13
12
  </head>
14
13
  <body>
@@ -8,7 +8,7 @@ import { t as getChannelDock } from "./dock-Cr9V9V1V.js";
8
8
  import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-B9EDT4jv.js";
9
9
  import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CJoaoIHc.js";
10
10
  import { n as generateSecureUuid } from "./secure-random-CY3Mg7Dp.js";
11
- import { i as isMessagingToolDuplicate } from "./pi-embedded-helpers-BErNo2oq.js";
11
+ import { i as isMessagingToolDuplicate } from "./pi-embedded-helpers-CMTVhLjq.js";
12
12
  import { i as resolveMirroredTranscriptText, r as appendAssistantMessageToSessionTranscript, w as parseInlineDirectives } from "./sessions-CA_BydGA.js";
13
13
  import { i as getAgentScopedMediaLocalRoots } from "./fetch--iXu7oa7.js";
14
14
  import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-DtYb6TYl.js";
@@ -1,7 +1,7 @@
1
1
  import { S as resolveCliName } from "./paths-BnKiOk2S.js";
2
2
  import { y as resolveOpenClawPackageRoot } from "./workspace-BHfqkuYN.js";
3
3
  import { t as note } from "./note-BuhsMSuP.js";
4
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BmyLEw45.js";
4
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BWcHEWr6.js";
5
5
  import { spawnSync } from "node:child_process";
6
6
  import path from "node:path";
7
7
 
@@ -1,7 +1,7 @@
1
1
  import { S as resolveCliName } from "./paths-BYr-iJJ9.js";
2
2
  import { y as resolveOpenClawPackageRoot } from "./workspace-CRdln__H.js";
3
3
  import { t as note } from "./note-CLcV1fjx.js";
4
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-9Y73fGUi.js";
4
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-B_pSnPVY.js";
5
5
  import path from "node:path";
6
6
  import { spawnSync } from "node:child_process";
7
7
 
package/dist/entry.js CHANGED
@@ -384,7 +384,7 @@ if (!isMainModule({
384
384
  }
385
385
  function tryHandleRootHelpFastPath(argv) {
386
386
  if (!isRootHelpInvocation(argv)) return false;
387
- import("./program-Br-upXE-.js").then(({ buildProgram }) => {
387
+ import("./program-BI6W1Gll.js").then(({ buildProgram }) => {
388
388
  buildProgram().outputHelp();
389
389
  }).catch((error) => {
390
390
  console.error("[openclaw] Failed to display help:", error instanceof Error ? error.stack ?? error.message : error);
@@ -403,7 +403,7 @@ if (!isMainModule({
403
403
  applyCliProfileEnv({ profile: parsed.profile });
404
404
  process$1.argv = parsed.argv;
405
405
  }
406
- if (!tryHandleRootVersionFastPath(process$1.argv) && !tryHandleRootHelpFastPath(process$1.argv)) import("./run-main-CiC7Az8U.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
406
+ if (!tryHandleRootVersionFastPath(process$1.argv) && !tryHandleRootHelpFastPath(process$1.argv)) import("./run-main-D5C2p24j.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
407
407
  console.error("[openclaw] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
408
408
  process$1.exitCode = 1;
409
409
  });
@@ -162,7 +162,7 @@ import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t
162
162
  import { o as isBitseekBuild } from "./status.update-YC9VNJxl.js";
163
163
  import { h as normalizeUpdateChannel, l as DEFAULT_PACKAGE_CHANNEL, n as checkUpdateStatus, o as resolveNpmChannelTag, r as compareSemverStrings } from "./channel-account-context-BV3Q0XnD.js";
164
164
  import { i as prepareSecretsRuntimeSnapshot, n as clearSecretsRuntimeSnapshot, r as getActiveSecretsRuntimeSnapshot, t as activateSecretsRuntimeSnapshot } from "./runtime-D4y0Gdfj.js";
165
- import { t as runOnboardingWizard } from "./onboarding-BAaREMfO.js";
165
+ import { t as runOnboardingWizard } from "./onboarding-BTXvw1Ro.js";
166
166
  import { a as sendApnsAlert, c as parseMessageWithAttachments, d as shouldLogWs, f as summarizeAgentEventForWsLog, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, p as setGatewayWsLogStyle, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration, u as logWs } from "./push-apns-BSlKJa83.js";
167
167
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-CtjSNa9d.js";
168
168
  import { n as isNodeCommandAllowed, r as resolveNodeCommandAllowlist } from "./node-command-policy-pJ6IPNBA.js";
@@ -14473,6 +14473,16 @@ async function installClawhubMarketSkill(params, deps) {
14473
14473
 
14474
14474
  //#endregion
14475
14475
  //#region src/gateway/server-methods/skills.ts
14476
+ function matchesInstalledMarketSkill(entry, candidate) {
14477
+ const entrySkillKey = entry.skillKey.trim();
14478
+ const entrySlug = entry.slug?.trim() || "";
14479
+ const candidateSkillKey = candidate.skillKey?.trim() || "";
14480
+ const candidateName = candidate.name?.trim() || "";
14481
+ const candidateDirName = candidate.baseDir ? path.basename(candidate.baseDir) : "";
14482
+ if (candidateSkillKey === entrySkillKey || candidateName === entrySkillKey) return true;
14483
+ if (!entrySlug) return false;
14484
+ return candidateSkillKey === entrySlug || candidateName === entrySlug || candidateDirName === entrySlug;
14485
+ }
14476
14486
  function collectSkillBins(entries) {
14477
14487
  const bins = /* @__PURE__ */ new Set();
14478
14488
  for (const entry of entries) {
@@ -14498,7 +14508,7 @@ function collectSkillBins(entries) {
14498
14508
  return [...bins].toSorted();
14499
14509
  }
14500
14510
  function resolveMarketSkillState(entry, report) {
14501
- const skill = report.skills.find((candidate) => candidate.skillKey === entry.skillKey || candidate.name === entry.skillKey);
14511
+ const skill = report.skills.find((candidate) => matchesInstalledMarketSkill(entry, candidate));
14502
14512
  if (!skill) return {
14503
14513
  installed: false,
14504
14514
  enabled: false,
@@ -14661,7 +14671,7 @@ const skillsHandlers = {
14661
14671
  if (buildWorkspaceSkillStatus(workspaceDir, {
14662
14672
  config: cfg,
14663
14673
  eligibility: { remote: getRemoteSkillEligibility() }
14664
- }).skills.find((candidate) => candidate.skillKey === skillKey || candidate.name === skillKey)) {
14674
+ }).skills.find((candidate) => matchesInstalledMarketSkill(marketEntry, candidate))) {
14665
14675
  respond(true, {
14666
14676
  ok: true,
14667
14677
  skillKey,
@@ -14700,7 +14710,7 @@ const skillsHandlers = {
14700
14710
  if (!buildWorkspaceSkillStatus(workspaceDir, {
14701
14711
  config: cfg,
14702
14712
  eligibility: { remote: getRemoteSkillEligibility() }
14703
- }).skills.find((candidate) => candidate.skillKey === skillKey || candidate.name === skillKey)) {
14713
+ }).skills.find((candidate) => matchesInstalledMarketSkill(marketEntry, candidate))) {
14704
14714
  respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, `Install completed but "${skillKey}" is still not discoverable in skills status.`));
14705
14715
  return;
14706
14716
  }
@@ -22359,7 +22369,7 @@ function attachGatewayWsMessageHandler(params) {
22359
22369
  type: "hello-ok",
22360
22370
  protocol: PROTOCOL_VERSION,
22361
22371
  server: {
22362
- version: resolveRuntimeServiceVersion(process.env, "dev"),
22372
+ version: VERSION,
22363
22373
  connId
22364
22374
  },
22365
22375
  features: {
@@ -161,7 +161,7 @@ import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t
161
161
  import { o as isBitseekBuild } from "./status.update-HwSPC5ZX.js";
162
162
  import { h as normalizeUpdateChannel, l as DEFAULT_PACKAGE_CHANNEL, n as checkUpdateStatus, o as resolveNpmChannelTag, r as compareSemverStrings } from "./channel-account-context-C6rIxLzo.js";
163
163
  import { i as prepareSecretsRuntimeSnapshot, n as clearSecretsRuntimeSnapshot, r as getActiveSecretsRuntimeSnapshot, t as activateSecretsRuntimeSnapshot } from "./runtime-Rd7ooKB0.js";
164
- import { t as runOnboardingWizard } from "./onboarding-BvdtFAPe.js";
164
+ import { t as runOnboardingWizard } from "./onboarding-DQNTd5J7.js";
165
165
  import { a as sendApnsAlert, c as parseMessageWithAttachments, d as shouldLogWs, f as summarizeAgentEventForWsLog, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, p as setGatewayWsLogStyle, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration, u as logWs } from "./push-apns-DvNRo3EQ.js";
166
166
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-mNwdQcKy.js";
167
167
  import { n as isNodeCommandAllowed, r as resolveNodeCommandAllowlist } from "./node-command-policy-BKUs_pS2.js";
@@ -14471,6 +14471,16 @@ async function installClawhubMarketSkill(params, deps) {
14471
14471
 
14472
14472
  //#endregion
14473
14473
  //#region src/gateway/server-methods/skills.ts
14474
+ function matchesInstalledMarketSkill(entry, candidate) {
14475
+ const entrySkillKey = entry.skillKey.trim();
14476
+ const entrySlug = entry.slug?.trim() || "";
14477
+ const candidateSkillKey = candidate.skillKey?.trim() || "";
14478
+ const candidateName = candidate.name?.trim() || "";
14479
+ const candidateDirName = candidate.baseDir ? path.basename(candidate.baseDir) : "";
14480
+ if (candidateSkillKey === entrySkillKey || candidateName === entrySkillKey) return true;
14481
+ if (!entrySlug) return false;
14482
+ return candidateSkillKey === entrySlug || candidateName === entrySlug || candidateDirName === entrySlug;
14483
+ }
14474
14484
  function collectSkillBins(entries) {
14475
14485
  const bins = /* @__PURE__ */ new Set();
14476
14486
  for (const entry of entries) {
@@ -14496,7 +14506,7 @@ function collectSkillBins(entries) {
14496
14506
  return [...bins].toSorted();
14497
14507
  }
14498
14508
  function resolveMarketSkillState(entry, report) {
14499
- const skill = report.skills.find((candidate) => candidate.skillKey === entry.skillKey || candidate.name === entry.skillKey);
14509
+ const skill = report.skills.find((candidate) => matchesInstalledMarketSkill(entry, candidate));
14500
14510
  if (!skill) return {
14501
14511
  installed: false,
14502
14512
  enabled: false,
@@ -14659,7 +14669,7 @@ const skillsHandlers = {
14659
14669
  if (buildWorkspaceSkillStatus(workspaceDir, {
14660
14670
  config: cfg,
14661
14671
  eligibility: { remote: getRemoteSkillEligibility() }
14662
- }).skills.find((candidate) => candidate.skillKey === skillKey || candidate.name === skillKey)) {
14672
+ }).skills.find((candidate) => matchesInstalledMarketSkill(marketEntry, candidate))) {
14663
14673
  respond(true, {
14664
14674
  ok: true,
14665
14675
  skillKey,
@@ -14698,7 +14708,7 @@ const skillsHandlers = {
14698
14708
  if (!buildWorkspaceSkillStatus(workspaceDir, {
14699
14709
  config: cfg,
14700
14710
  eligibility: { remote: getRemoteSkillEligibility() }
14701
- }).skills.find((candidate) => candidate.skillKey === skillKey || candidate.name === skillKey)) {
14711
+ }).skills.find((candidate) => matchesInstalledMarketSkill(marketEntry, candidate))) {
14702
14712
  respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, `Install completed but "${skillKey}" is still not discoverable in skills status.`));
14703
14713
  return;
14704
14714
  }
@@ -22357,7 +22367,7 @@ function attachGatewayWsMessageHandler(params) {
22357
22367
  type: "hello-ok",
22358
22368
  protocol: PROTOCOL_VERSION,
22359
22369
  server: {
22360
- version: resolveRuntimeServiceVersion(process.env, "dev"),
22370
+ version: VERSION,
22361
22371
  connId
22362
22372
  },
22363
22373
  features: {
@@ -3,7 +3,7 @@ import { h as resolveAgentModelPrimaryValue, m as resolveAgentModelFallbackValue
3
3
  import { _ as shortenHomeInString, c as isRecord } from "./utils-BFZnl-5N.js";
4
4
  import { D as getApiKeyForModel, H as loadConfig, In as normalizeSecretInput, _ as normalizeProviders, b as resolveImplicitProviders, gn as applyConfigEnvVars, k as requireApiKey, kn as resolveOpenClawAgentDir, v as resolveImplicitBedrockProvider, y as resolveImplicitCopilotProvider } from "./model-selection-D_Si2Ict.js";
5
5
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-DCIw1y1c.js";
6
- import { F as sanitizeUserFacingText } from "./pi-embedded-helpers-BErNo2oq.js";
6
+ import { F as sanitizeUserFacingText } from "./pi-embedded-helpers-CMTVhLjq.js";
7
7
  import { n as redactToolDetail } from "./redact-ScShueoF.js";
8
8
  import fs from "node:fs/promises";
9
9
  import path from "node:path";
package/dist/index.js CHANGED
@@ -127,7 +127,7 @@ import { t as isMainModule } from "./is-main-Dha5s7-d.js";
127
127
  import { t as ensureOpenClawCliOnPath } from "./path-env-DzEqwLCq.js";
128
128
  import { t as assertSupportedRuntime } from "./runtime-guard-p6l4jDOj.js";
129
129
  import "./ports-BL-FP2jP.js";
130
- import { i as getCoreCliCommandsWithSubcommands, n as setProgramContext, o as registerProgramCommands, s as getSubCliCommandsWithSubcommands } from "./program-context-B7eOpdoF.js";
130
+ import { i as getCoreCliCommandsWithSubcommands, n as setProgramContext, o as registerProgramCommands, s as getSubCliCommandsWithSubcommands } from "./program-context-D2D7wH7Q.js";
131
131
  import "./plugin-registry-TOEmbMc4.js";
132
132
  import { n as resolveCliChannelOptions } from "./channel-options-Bnnem_wD.js";
133
133
  import process$1 from "node:process";
@@ -12,13 +12,13 @@ import "./internal-hooks-yQe6H47q.js";
12
12
  import "./registry-CJCkqTms.js";
13
13
  import "./dock-Cr9V9V1V.js";
14
14
  import "./tokens-B9EDT4jv.js";
15
- import { t as runEmbeddedPiAgent } from "./pi-embedded-DKX65Hec.js";
15
+ import { t as runEmbeddedPiAgent } from "./pi-embedded-Bacc2S0h.js";
16
16
  import "./plugins-CJoaoIHc.js";
17
17
  import "./accounts-ubG6irXZ.js";
18
18
  import "./bindings-CsIiIjqN.js";
19
19
  import "./send-B4pSMBHk.js";
20
20
  import "./send-V3fEVmLq.js";
21
- import "./deliver-DXa06hfk.js";
21
+ import "./deliver-xY3h9X6N.js";
22
22
  import "./diagnostic-BO1GQJJf.js";
23
23
  import "./diagnostic-session-state-DBPrVBk3.js";
24
24
  import "./accounts-BTexwKe8.js";
@@ -26,8 +26,8 @@ import "./send-BqKSZyIb.js";
26
26
  import "./image-ops-DCpyia_K.js";
27
27
  import "./pi-model-discovery-DCIw1y1c.js";
28
28
  import "./message-channel-Dl8dSs0T.js";
29
- import "./pi-embedded-helpers-BErNo2oq.js";
30
- import "./chrome-C6zMSR36.js";
29
+ import "./pi-embedded-helpers-CMTVhLjq.js";
30
+ import "./chrome-CjTE-vWv.js";
31
31
  import "./frontmatter-DIRc-IR1.js";
32
32
  import "./skills-DMmr25nW.js";
33
33
  import "./path-alias-guards-CKjKIhQ3.js";
@@ -41,8 +41,8 @@ import "./accounts-CFz9Jc5d.js";
41
41
  import "./paths-Cpu0XgUj.js";
42
42
  import "./tool-images-ffdfBx0b.js";
43
43
  import "./thinking-FnAYAFD8.js";
44
- import "./image-Dd4lgi4H.js";
45
- import "./audio-transcription-runner-Bx53bUS2.js";
44
+ import "./image-DCyaYY2d.js";
45
+ import "./audio-transcription-runner-DaoqvWoi.js";
46
46
  import "./fetch--iXu7oa7.js";
47
47
  import "./fetch-guard-CNvY0vzQ.js";
48
48
  import "./api-key-rotation-WzOC5dTW.js";
@@ -8,7 +8,7 @@ import { t as WizardCancelledError } from "./prompts-CbZZ91V9.js";
8
8
  import { t as createClackPrompter } from "./clack-prompter-B2lC_BWr.js";
9
9
  import { t as assertSupportedRuntime } from "./runtime-guard-lQH3Hjre.js";
10
10
  import { t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-BPrEIqYI.js";
11
- import { t as runOnboardingWizard } from "./onboarding-BAaREMfO.js";
11
+ import { t as runOnboardingWizard } from "./onboarding-BTXvw1Ro.js";
12
12
  import { n as logConfigUpdated } from "./logging-DsLC1iR-.js";
13
13
  import { i as normalizeLegacyOnboardAuthChoice, r as isDeprecatedAuthChoice, t as ONBOARD_PROVIDER_AUTH_FLAGS } from "./onboard-provider-auth-flags-AoFLWxQT.js";
14
14
  import { t as applyOnboardingLocalWorkspaceConfig } from "./onboard-config-D6N2g-IY.js";
@@ -8,7 +8,7 @@ import { t as assertSupportedRuntime } from "./runtime-guard-p6l4jDOj.js";
8
8
  import { t as WizardCancelledError } from "./prompts-iXdBMk3j.js";
9
9
  import { t as createClackPrompter } from "./clack-prompter-CgCD3NZ8.js";
10
10
  import { t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-D8xmnSd2.js";
11
- import { t as runOnboardingWizard } from "./onboarding-BvdtFAPe.js";
11
+ import { t as runOnboardingWizard } from "./onboarding-DQNTd5J7.js";
12
12
  import { n as logConfigUpdated } from "./logging-yFV4aFrN.js";
13
13
  import { i as normalizeLegacyOnboardAuthChoice, r as isDeprecatedAuthChoice, t as ONBOARD_PROVIDER_AUTH_FLAGS } from "./onboard-provider-auth-flags-Dqir0v9m.js";
14
14
  import { t as applyOnboardingLocalWorkspaceConfig } from "./onboard-config-3n3w_Lvm.js";
@@ -311,7 +311,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
311
311
  mode
312
312
  });
313
313
  await writeConfigFile(nextConfig);
314
- const { finalizeOnboardingWizard } = await import("./onboarding.finalize-CV7n10lP.js");
314
+ const { finalizeOnboardingWizard } = await import("./onboarding.finalize-D0qfP3rB.js");
315
315
  const { launchedTui } = await finalizeOnboardingWizard({
316
316
  flow,
317
317
  opts,
@@ -311,7 +311,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
311
311
  mode
312
312
  });
313
313
  await writeConfigFile(nextConfig);
314
- const { finalizeOnboardingWizard } = await import("./onboarding.finalize-dkwktLJD.js");
314
+ const { finalizeOnboardingWizard } = await import("./onboarding.finalize-CHYENeNO.js");
315
315
  const { launchedTui } = await finalizeOnboardingWizard({
316
316
  flow,
317
317
  opts,
@@ -120,9 +120,9 @@ import "./stagger-C-R8Eo-4.js";
120
120
  import "./constants-BJiQF5Ae.js";
121
121
  import "./context-window-guard-BNuaId5E.js";
122
122
  import "./runtime-guard-p6l4jDOj.js";
123
- import "./program-context-B7eOpdoF.js";
123
+ import "./program-context-D2D7wH7Q.js";
124
124
  import "./note-CLcV1fjx.js";
125
- import { r as installCompletion } from "./completion-cli-9Y73fGUi.js";
125
+ import { r as installCompletion } from "./completion-cli-B_pSnPVY.js";
126
126
  import { n as gatewayInstallErrorHint, t as buildGatewayInstallPlan } from "./daemon-install-helpers-CMWYg4_W.js";
127
127
  import { n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-D8xmnSd2.js";
128
128
  import { r as isSystemdUserServiceAvailable } from "./systemd-DJ5Red-Q.js";
@@ -130,7 +130,7 @@ import { t as resolveGatewayService } from "./service-DqxfCr8y.js";
130
130
  import { r as healthCommand } from "./health-Du8dO3vn.js";
131
131
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-B_3g_YF0.js";
132
132
  import { t as formatHealthCheckFailure } from "./health-format-CEAJLEPm.js";
133
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-CWm9ZwKY.js";
133
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-sKCaOE5l.js";
134
134
  import { t as runTui } from "./tui-Dd6DhgjX.js";
135
135
  import os from "node:os";
136
136
  import path from "node:path";
@@ -121,9 +121,9 @@ import "./progress-CwQKn0ae.js";
121
121
  import "./constants-SKxh9Cou.js";
122
122
  import "./context-window-guard-ejUBbmnW.js";
123
123
  import "./note-BuhsMSuP.js";
124
- import { r as installCompletion } from "./completion-cli-BmyLEw45.js";
125
- import "./register.subclis-Zhshg_9Y.js";
126
- import "./command-registry-Ce2f2xlT.js";
124
+ import { r as installCompletion } from "./completion-cli-BWcHEWr6.js";
125
+ import "./register.subclis-pmPhNoRB.js";
126
+ import "./command-registry-Keal8P25.js";
127
127
  import "./program-context-Cy6hM1zR.js";
128
128
  import { n as gatewayInstallErrorHint, t as buildGatewayInstallPlan } from "./daemon-install-helpers-D28keNLu.js";
129
129
  import "./runtime-guard-lQH3Hjre.js";
@@ -133,7 +133,7 @@ import { t as resolveGatewayService } from "./service-Bjqlh_fF.js";
133
133
  import { r as healthCommand } from "./health-CDEXWvnu.js";
134
134
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Dx8wiZQ_.js";
135
135
  import { t as formatHealthCheckFailure } from "./health-format-NGoowTz5.js";
136
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-_GRkzsCa.js";
136
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-leOuoRMt.js";
137
137
  import { t as runTui } from "./tui-CLK0s6TM.js";
138
138
  import path from "node:path";
139
139
  import os from "node:os";
@@ -24,7 +24,7 @@ import { t as buildChannelAccountBindings } from "./bindings-CsIiIjqN.js";
24
24
  import { a as createSlackWebClient, c as validateSlackBlocksArray, d as resolveSlackChannelId, i as normalizeSlackOutboundText, l as buildSlackBlocksFallbackText, o as resolveSlackWebClientOptions, s as parseSlackBlocksInput, t as sendMessageSlack, u as parseSlackTarget } from "./send-B4pSMBHk.js";
25
25
  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 isDiscordGroupAllowedByPolicy, d as parseDiscordModalCustomId, dt as resolveDiscordAllowListMatch, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordChannelConfigWithFallback, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordOwnerAccess, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as normalizeDiscordAllowList, m as resolveDiscordComponentEntry, mt as resolveDiscordMemberAccessState, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordGuildEntry, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordSlug, 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-V3fEVmLq.js";
26
26
  import { n as generateSecureUuid, t as generateSecureToken } from "./secure-random-CY3Mg7Dp.js";
27
- import { A as initializeGlobalHookRunner, C as shouldSuppressReasoningPayload, D as normalizeChannelTargetInput, E as buildTargetResolverSignature, O as normalizeTargetForProvider, S as shouldSuppressMessagingToolReplies, T as resolveReplyToMode, _ as applyReplyTagsToPayload, a as normalizeOutboundPayloadsForJson, b as filterMessagingToolMediaDuplicates, c as parseReplyDirectives, d as toInternalMessagePreprocessedContext, f as toInternalMessageReceivedContext, g as fireAndForgetHook, h as toPluginMessageReceivedEvent, i as normalizeOutboundPayloads, k as getGlobalHookRunner, l as splitMediaFromOutput, m as toPluginMessageContext, o as normalizeReplyPayloadsForDelivery, p as toInternalMessageTranscribedContext, r as formatOutboundPayloadLog, s as throwIfAborted, t as deliverOutboundPayloads, u as deriveInboundMessageHookContext, v as applyReplyThreading, w as createReplyToModeFilterForChannel, x as isRenderablePayload, y as filterMessagingToolDuplicates } from "./deliver-DXa06hfk.js";
27
+ import { A as initializeGlobalHookRunner, C as shouldSuppressReasoningPayload, D as normalizeChannelTargetInput, E as buildTargetResolverSignature, O as normalizeTargetForProvider, S as shouldSuppressMessagingToolReplies, T as resolveReplyToMode, _ as applyReplyTagsToPayload, a as normalizeOutboundPayloadsForJson, b as filterMessagingToolMediaDuplicates, c as parseReplyDirectives, d as toInternalMessagePreprocessedContext, f as toInternalMessageReceivedContext, g as fireAndForgetHook, h as toPluginMessageReceivedEvent, i as normalizeOutboundPayloads, k as getGlobalHookRunner, l as splitMediaFromOutput, m as toPluginMessageContext, o as normalizeReplyPayloadsForDelivery, p as toInternalMessageTranscribedContext, r as formatOutboundPayloadLog, s as throwIfAborted, t as deliverOutboundPayloads, u as deriveInboundMessageHookContext, v as applyReplyThreading, w as createReplyToModeFilterForChannel, x as isRenderablePayload, y as filterMessagingToolDuplicates } from "./deliver-xY3h9X6N.js";
28
28
  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-BO1GQJJf.js";
29
29
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-DBPrVBk3.js";
30
30
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-BTexwKe8.js";
@@ -32,8 +32,8 @@ import { $ as readChannelAllowFromStore, A as describeReplyTarget, B as resolveT
32
32
  import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, m as kindFromMime, p as isGifMedia, s as resizeToJpeg, v as mediaKindFromMime } from "./image-ops-DCpyia_K.js";
33
33
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-DCIw1y1c.js";
34
34
  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-Dl8dSs0T.js";
35
- import { $ as mergeAlsoAllowPolicy, A as isRawApiErrorPayload, B as registerBrowserRoutes, C as isCloudCodeAssistFormatError, D as isFailoverErrorMessage, E as isFailoverAssistantError, F as sanitizeUserFacingText, G as resolveBrowserControlAuth, H as resolveProfile, I as ensureSandboxWorkspaceForSession, J as resolveSandboxConfigForAgent, K as resolveGatewayCredentialsFromConfig, L as resolveSandboxContext, M as isTransientHttpError, N as parseImageDimensionError, O as isLikelyContextOverflowError, P as parseImageSizeError, Q as expandPolicyWithPluginGroups, R as resolveSandboxRuntimeStatus, S as isBillingAssistantError, T as isContextOverflowError, U as getBridgeAuthForPort, V as resolveBrowserConfig, W as ensureBrowserControlAuth, X as buildPluginToolGroups, Y as applyOwnerOnlyToolPolicy, Z as collectExplicitAllowlist, _ as formatBillingErrorMessage, a as isMessagingToolDuplicateNormalized, at as matchesAnyGlobPattern, b as isAuthAssistantError, c as extractToolCallsFromAssistant, ct as resolveBootstrapMaxChars, d as downgradeOpenAIFunctionCallReasoningPairs, et as stripPluginOnlyAllowlist, f as downgradeOpenAIReasoningBlocks, g as formatAssistantErrorText, h as classifyFailoverReason, it as compileGlobPatterns, j as isTimeoutErrorMessage, k as isRateLimitAssistantError, l as extractToolResultId, lt as resolveBootstrapTotalMaxChars, m as BILLING_ERROR_USER_MESSAGE, n as validateGeminiTurns, nt as normalizeToolName, o as normalizeTextForComparison, ot as buildBootstrapContextFiles, p as isGoogleModelApi, q as trimToUndefined$1, r as pickFallbackThinkingLevel, rt as resolveToolProfilePolicy, s as sanitizeSessionMessagesImages, st as ensureSessionHeader, t as validateAnthropicTurns, tt as expandToolGroups, u as sanitizeToolCallIdsForCloudCodeAssist, ut as sanitizeGoogleTurnOrdering, v as formatRawAssistantErrorForUi, w as isCompactionFailureError, x as isAuthPermanentErrorMessage, y as getApiErrorPayloadFingerprint, z as createBrowserRouteContext } from "./pi-embedded-helpers-BErNo2oq.js";
36
- import { A as rawDataToString, B as isSecureWebSocketUrl, C as ensureChromeExtensionRelayServer, N as DEFAULT_UPLOAD_DIR, P as resolveExistingPathsWithinRoot, U as DEFAULT_AI_SNAPSHOT_MAX_CHARS, s as resolveLsofCommandSync, z as isLoopbackHost } from "./chrome-C6zMSR36.js";
35
+ import { $ as mergeAlsoAllowPolicy, A as isRawApiErrorPayload, B as registerBrowserRoutes, C as isCloudCodeAssistFormatError, D as isFailoverErrorMessage, E as isFailoverAssistantError, F as sanitizeUserFacingText, G as resolveBrowserControlAuth, H as resolveProfile, I as ensureSandboxWorkspaceForSession, J as resolveSandboxConfigForAgent, K as resolveGatewayCredentialsFromConfig, L as resolveSandboxContext, M as isTransientHttpError, N as parseImageDimensionError, O as isLikelyContextOverflowError, P as parseImageSizeError, Q as expandPolicyWithPluginGroups, R as resolveSandboxRuntimeStatus, S as isBillingAssistantError, T as isContextOverflowError, U as getBridgeAuthForPort, V as resolveBrowserConfig, W as ensureBrowserControlAuth, X as buildPluginToolGroups, Y as applyOwnerOnlyToolPolicy, Z as collectExplicitAllowlist, _ as formatBillingErrorMessage, a as isMessagingToolDuplicateNormalized, at as matchesAnyGlobPattern, b as isAuthAssistantError, c as extractToolCallsFromAssistant, ct as resolveBootstrapMaxChars, d as downgradeOpenAIFunctionCallReasoningPairs, et as stripPluginOnlyAllowlist, f as downgradeOpenAIReasoningBlocks, g as formatAssistantErrorText, h as classifyFailoverReason, it as compileGlobPatterns, j as isTimeoutErrorMessage, k as isRateLimitAssistantError, l as extractToolResultId, lt as resolveBootstrapTotalMaxChars, m as BILLING_ERROR_USER_MESSAGE, n as validateGeminiTurns, nt as normalizeToolName, o as normalizeTextForComparison, ot as buildBootstrapContextFiles, p as isGoogleModelApi, q as trimToUndefined$1, r as pickFallbackThinkingLevel, rt as resolveToolProfilePolicy, s as sanitizeSessionMessagesImages, st as ensureSessionHeader, t as validateAnthropicTurns, tt as expandToolGroups, u as sanitizeToolCallIdsForCloudCodeAssist, ut as sanitizeGoogleTurnOrdering, v as formatRawAssistantErrorForUi, w as isCompactionFailureError, x as isAuthPermanentErrorMessage, y as getApiErrorPayloadFingerprint, z as createBrowserRouteContext } from "./pi-embedded-helpers-CMTVhLjq.js";
36
+ import { A as rawDataToString, B as isSecureWebSocketUrl, C as ensureChromeExtensionRelayServer, N as DEFAULT_UPLOAD_DIR, P as resolveExistingPathsWithinRoot, U as DEFAULT_AI_SNAPSHOT_MAX_CHARS, s as resolveLsofCommandSync, z as isLoopbackHost } from "./chrome-CjTE-vWv.js";
37
37
  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-DMmr25nW.js";
38
38
  import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-CKjKIhQ3.js";
39
39
  import { i as testRegexWithBoundedInput, r as compileSafeRegex, t as redactSensitiveText } from "./redact-ScShueoF.js";
@@ -49,8 +49,8 @@ import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as re
49
49
  import { n as onSessionTranscriptUpdate, t as emitSessionTranscriptUpdate } from "./transcript-events-Cso7-m1w.js";
50
50
  import { a as canonicalizeBase64, i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, o as estimateBase64DecodedBytes, r as sanitizeToolResultImages } from "./tool-images-ffdfBx0b.js";
51
51
  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-FnAYAFD8.js";
52
- import { C as extractTextFromChatContent, S as isInsideCode, T as ensureOpenClawModelsJson, _ as stripThinkingTagsFromText, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as formatToolSummary, w as minimaxUnderstandImage, x as findCodeRegions, y as resolveToolDisplay } from "./image-Dd4lgi4H.js";
53
- import { _ as resolveAttachmentKind, a as resolveAutoImageModel, b as modelSupportsVision, c as applyTemplate, d as normalizeMediaUnderstandingChatType, f as resolveMediaUnderstandingScope, h as registerUnhandledRejectionHandler, i as normalizeMediaAttachments, l as resolveConcurrency, m as buildRandomTempFilePath, n as buildProviderRegistry, o as resolveMediaAttachmentLocalRoots, p as CLI_OUTPUT_MAX_BUFFER, r as createMediaAttachmentCache, s as runCapability, t as runAudioTranscription, u as resolveTimeoutMs$2, v as findModelInCatalog, y as loadModelCatalog } from "./audio-transcription-runner-Bx53bUS2.js";
52
+ import { C as extractTextFromChatContent, S as isInsideCode, T as ensureOpenClawModelsJson, _ as stripThinkingTagsFromText, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as formatToolSummary, w as minimaxUnderstandImage, x as findCodeRegions, y as resolveToolDisplay } from "./image-DCyaYY2d.js";
53
+ import { _ as resolveAttachmentKind, a as resolveAutoImageModel, b as modelSupportsVision, c as applyTemplate, d as normalizeMediaUnderstandingChatType, f as resolveMediaUnderstandingScope, h as registerUnhandledRejectionHandler, i as normalizeMediaAttachments, l as resolveConcurrency, m as buildRandomTempFilePath, n as buildProviderRegistry, o as resolveMediaAttachmentLocalRoots, p as CLI_OUTPUT_MAX_BUFFER, r as createMediaAttachmentCache, s as runCapability, t as runAudioTranscription, u as resolveTimeoutMs$2, v as findModelInCatalog, y as loadModelCatalog } from "./audio-transcription-runner-DaoqvWoi.js";
54
54
  import { a as getDefaultMediaLocalRoots, i as getAgentScopedMediaLocalRoots, n as fetchRemoteMedia, r as readResponseWithLimit, t as MediaFetchError } from "./fetch--iXu7oa7.js";
55
55
  import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-CYFFedEH.js";
56
56
  import { n as withStrictGuardedFetchMode, r as withTrustedEnvProxyGuardedFetchMode, t as fetchWithSsrFGuard } from "./fetch-guard-CNvY0vzQ.js";
@@ -95,7 +95,7 @@ import { CURRENT_SESSION_VERSION, DefaultResourceLoader, SessionManager, Setting
95
95
  import { EdgeTTS } from "node-edge-tts";
96
96
  import { createServer } from "node:http";
97
97
  import { ProxyAgent, fetch as fetch$1 } from "undici";
98
- import WebSocket, { WebSocket as WebSocket$1 } from "ws";
98
+ import WebSocket$1, { WebSocket } from "ws";
99
99
  import { Buffer as Buffer$1 } from "node:buffer";
100
100
  import { createJiti } from "jiti";
101
101
  import AjvPkg from "ajv";
@@ -8165,7 +8165,7 @@ var GatewayClient = class {
8165
8165
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
8166
8166
  });
8167
8167
  }
8168
- this.ws = new WebSocket$1(url, wsOptions);
8168
+ this.ws = new WebSocket(url, wsOptions);
8169
8169
  this.ws.on("open", () => {
8170
8170
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
8171
8171
  const tlsError = this.validateTlsFingerprint();
@@ -8361,7 +8361,7 @@ var GatewayClient = class {
8361
8361
  const connectChallengeTimeoutMs = typeof rawConnectDelayMs === "number" && Number.isFinite(rawConnectDelayMs) ? Math.max(250, Math.min(1e4, rawConnectDelayMs)) : 2e3;
8362
8362
  if (this.connectTimer) clearTimeout(this.connectTimer);
8363
8363
  this.connectTimer = setTimeout(() => {
8364
- if (this.connectSent || this.ws?.readyState !== WebSocket$1.OPEN) return;
8364
+ if (this.connectSent || this.ws?.readyState !== WebSocket.OPEN) return;
8365
8365
  this.opts.onConnectError?.(/* @__PURE__ */ new Error("gateway connect challenge timeout"));
8366
8366
  this.ws?.close(1008, "connect challenge timeout");
8367
8367
  }, connectChallengeTimeoutMs);
@@ -8403,7 +8403,7 @@ var GatewayClient = class {
8403
8403
  return null;
8404
8404
  }
8405
8405
  async request(method, params, opts) {
8406
- if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
8406
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
8407
8407
  const id = randomUUID();
8408
8408
  const frame = {
8409
8409
  type: "req",
@@ -9683,7 +9683,7 @@ async function routeReply(params) {
9683
9683
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
9684
9684
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
9685
9685
  try {
9686
- const { deliverOutboundPayloads } = await import("./deliver-DXa06hfk.js").then((n) => n.n);
9686
+ const { deliverOutboundPayloads } = await import("./deliver-xY3h9X6N.js").then((n) => n.n);
9687
9687
  const outboundSession = buildOutboundSessionContext({
9688
9688
  cfg,
9689
9689
  agentId: resolvedAgentId,
@@ -14241,7 +14241,7 @@ async function sendTranscriptEcho(params) {
14241
14241
  }
14242
14242
  const text = formatEchoTranscript(transcript, params.format ?? DEFAULT_ECHO_TRANSCRIPT_FORMAT);
14243
14243
  try {
14244
- const { deliverOutboundPayloads } = await import("./deliver-DXa06hfk.js").then((n) => n.n);
14244
+ const { deliverOutboundPayloads } = await import("./deliver-xY3h9X6N.js").then((n) => n.n);
14245
14245
  await deliverOutboundPayloads({
14246
14246
  cfg,
14247
14247
  channel: normalizedChannel,
@@ -49695,7 +49695,7 @@ async function deliverSessionMaintenanceWarning(params) {
49695
49695
  return;
49696
49696
  }
49697
49697
  try {
49698
- const { deliverOutboundPayloads } = await import("./deliver-DXa06hfk.js").then((n) => n.n);
49698
+ const { deliverOutboundPayloads } = await import("./deliver-xY3h9X6N.js").then((n) => n.n);
49699
49699
  const outboundSession = buildOutboundSessionContext({
49700
49700
  cfg: params.cfg,
49701
49701
  sessionKey: params.sessionKey
@@ -54637,7 +54637,7 @@ async function describeStickerImage(params) {
54637
54637
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
54638
54638
  try {
54639
54639
  const buffer = await fs.readFile(imagePath);
54640
- const { describeImageWithModel } = await import("./image-Dd4lgi4H.js").then((n) => n.n);
54640
+ const { describeImageWithModel } = await import("./image-DCyaYY2d.js").then((n) => n.n);
54641
54641
  return (await describeImageWithModel({
54642
54642
  buffer,
54643
54643
  fileName: "sticker.webp",
@@ -56391,7 +56391,7 @@ async function resolveDiscordPreflightAudioMentionContext(params) {
56391
56391
  const needsPreflightTranscription = !params.isDirectMessage && params.shouldRequireMention && hasAudioAttachment && !hasTypedText && params.mentionRegexes.length > 0;
56392
56392
  let transcript;
56393
56393
  if (needsPreflightTranscription) try {
56394
- const { transcribeFirstAudio } = await import("./audio-preflight-Dd9DDvqB.js");
56394
+ const { transcribeFirstAudio } = await import("./audio-preflight-BWOdDA2n.js");
56395
56395
  const audioUrls = audioAttachments.map((att) => att.url).filter((url) => typeof url === "string" && url.length > 0);
56396
56396
  if (audioUrls.length > 0) transcript = await transcribeFirstAudio({
56397
56397
  ctx: {
@@ -60933,7 +60933,7 @@ function createOutboundSendDepsFromCliSource(deps) {
60933
60933
  function createDefaultDeps() {
60934
60934
  return {
60935
60935
  sendMessageWhatsApp: async (...args) => {
60936
- const { sendMessageWhatsApp } = await import("./web-V1uGLepo.js");
60936
+ const { sendMessageWhatsApp } = await import("./web-CDHXvGxm.js");
60937
60937
  return await sendMessageWhatsApp(...args);
60938
60938
  },
60939
60939
  sendMessageTelegram: async (...args) => {
@@ -64381,7 +64381,7 @@ function createDiscordGatewayPlugin(params) {
64381
64381
  return super.registerClient(client);
64382
64382
  }
64383
64383
  createWebSocket(url) {
64384
- return new WebSocket(url, { agent: wsAgent });
64384
+ return new WebSocket$1(url, { agent: wsAgent });
64385
64385
  }
64386
64386
  }
64387
64387
  return new ProxyGatewayPlugin();
@@ -76412,7 +76412,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, replyMedia =
76412
76412
  const disableAudioPreflight = firstDefined$1(topicConfig?.disableAudioPreflight, groupConfig?.disableAudioPreflight) === true;
76413
76413
  let preflightTranscript;
76414
76414
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0 && !disableAudioPreflight) try {
76415
- const { transcribeFirstAudio } = await import("./audio-preflight-Dd9DDvqB.js");
76415
+ const { transcribeFirstAudio } = await import("./audio-preflight-BWOdDA2n.js");
76416
76416
  preflightTranscript = await transcribeFirstAudio({
76417
76417
  ctx: {
76418
76418
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -79197,7 +79197,7 @@ function loadWebLoginQr() {
79197
79197
  return webLoginQrPromise;
79198
79198
  }
79199
79199
  function loadWebChannel() {
79200
- webChannelPromise ??= import("./web-V1uGLepo.js");
79200
+ webChannelPromise ??= import("./web-CDHXvGxm.js");
79201
79201
  return webChannelPromise;
79202
79202
  }
79203
79203
  function loadWhatsAppActions() {
@@ -87008,7 +87008,7 @@ var OpenAIWebSocketManager = class extends EventEmitter {
87008
87008
  * Throws if the connection is not open.
87009
87009
  */
87010
87010
  send(event) {
87011
- if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error(`OpenAIWebSocketManager: cannot send — connection is not open (readyState=${this.ws?.readyState ?? "no socket"})`);
87011
+ if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error(`OpenAIWebSocketManager: cannot send — connection is not open (readyState=${this.ws?.readyState ?? "no socket"})`);
87012
87012
  this.ws.send(JSON.stringify(event));
87013
87013
  }
87014
87014
  /**
@@ -87025,7 +87025,7 @@ var OpenAIWebSocketManager = class extends EventEmitter {
87025
87025
  * Returns true if the WebSocket is currently open and ready to send.
87026
87026
  */
87027
87027
  isConnected() {
87028
- return this.ws !== null && this.ws.readyState === WebSocket.OPEN;
87028
+ return this.ws !== null && this.ws.readyState === WebSocket$1.OPEN;
87029
87029
  }
87030
87030
  /**
87031
87031
  * Permanently closes the WebSocket connection and disables auto-reconnect.
@@ -87035,7 +87035,7 @@ var OpenAIWebSocketManager = class extends EventEmitter {
87035
87035
  this._cancelRetryTimer();
87036
87036
  if (this.ws) {
87037
87037
  this.ws.removeAllListeners();
87038
- if (this.ws.readyState === WebSocket.OPEN || this.ws.readyState === WebSocket.CONNECTING) this.ws.close(1e3, "Client closed");
87038
+ if (this.ws.readyState === WebSocket$1.OPEN || this.ws.readyState === WebSocket$1.CONNECTING) this.ws.close(1e3, "Client closed");
87039
87039
  this.ws = null;
87040
87040
  }
87041
87041
  }
@@ -87045,7 +87045,7 @@ var OpenAIWebSocketManager = class extends EventEmitter {
87045
87045
  reject(/* @__PURE__ */ new Error("OpenAIWebSocketManager: apiKey is required before connecting."));
87046
87046
  return;
87047
87047
  }
87048
- const socket = new WebSocket(this.wsUrl, { headers: {
87048
+ const socket = new WebSocket$1(this.wsUrl, { headers: {
87049
87049
  Authorization: `Bearer ${this.apiKey}`,
87050
87050
  "OpenAI-Beta": "responses-websocket=v1"
87051
87051
  } });
@@ -10,7 +10,7 @@ import { t as parseBooleanValue } from "./boolean-mcn6kL0s.js";
10
10
  import { t as CHANNEL_IDS } from "./registry-CJCkqTms.js";
11
11
  import { t as generateSecureToken } from "./secure-random-CY3Mg7Dp.js";
12
12
  import { i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-DCpyia_K.js";
13
- import { C as ensureChromeExtensionRelayServer, D as PROFILE_POST_RESTART_WS_TIMEOUT_MS, E as PROFILE_ATTACH_RETRY_TIMEOUT_MS, G as DEFAULT_BROWSER_EVALUATE_ENABLED, H as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, I as resolveWritablePathWithinRoot, J as DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME, K as DEFAULT_OPENCLAW_BROWSER_COLOR, M as DEFAULT_TRACE_DIR, N as DEFAULT_UPLOAD_DIR, O as resolveCdpReachabilityTimeouts, P as resolveExistingPathsWithinRoot, R as normalizeBrowserFormField, T as CDP_JSON_NEW_TIMEOUT_MS, U as DEFAULT_AI_SNAPSHOT_MAX_CHARS, V as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, W as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, _ as withBrowserNavigationPolicy, a as resolveOpenClawUserDataDir, b as fetchOk, c as resolveBrowserExecutableForPlatform, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, i as launchOpenClawChrome, j as DEFAULT_DOWNLOAD_DIR, l as captureScreenshot, m as InvalidBrowserNavigationUrlError, n as isChromeCdpReady, o as stopOpenClawChrome, p as snapshotAria, q as DEFAULT_OPENCLAW_BROWSER_ENABLED, r as isChromeReachable, u as createTargetViaCdp, v as appendCdpPath, w as stopChromeExtensionRelayServer, y as fetchJson, z as isLoopbackHost } from "./chrome-C6zMSR36.js";
13
+ import { C as ensureChromeExtensionRelayServer, D as PROFILE_POST_RESTART_WS_TIMEOUT_MS, E as PROFILE_ATTACH_RETRY_TIMEOUT_MS, G as DEFAULT_BROWSER_EVALUATE_ENABLED, H as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, I as resolveWritablePathWithinRoot, J as DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME, K as DEFAULT_OPENCLAW_BROWSER_COLOR, M as DEFAULT_TRACE_DIR, N as DEFAULT_UPLOAD_DIR, O as resolveCdpReachabilityTimeouts, P as resolveExistingPathsWithinRoot, R as normalizeBrowserFormField, T as CDP_JSON_NEW_TIMEOUT_MS, U as DEFAULT_AI_SNAPSHOT_MAX_CHARS, V as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, W as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, _ as withBrowserNavigationPolicy, a as resolveOpenClawUserDataDir, b as fetchOk, c as resolveBrowserExecutableForPlatform, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, i as launchOpenClawChrome, j as DEFAULT_DOWNLOAD_DIR, l as captureScreenshot, m as InvalidBrowserNavigationUrlError, n as isChromeCdpReady, o as stopOpenClawChrome, p as snapshotAria, q as DEFAULT_OPENCLAW_BROWSER_ENABLED, r as isChromeReachable, u as createTargetViaCdp, v as appendCdpPath, w as stopChromeExtensionRelayServer, y as fetchJson, z as isLoopbackHost } from "./chrome-CjTE-vWv.js";
14
14
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-DMmr25nW.js";
15
15
  import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-CKjKIhQ3.js";
16
16
  import { n as extractErrorCode, r as formatErrorMessage } from "./errors-DEkWxItM.js";
@@ -1192,7 +1192,7 @@ function isModuleNotFoundError(err) {
1192
1192
  }
1193
1193
  async function loadPwAiModule(mode) {
1194
1194
  try {
1195
- return await import("./pw-ai-pkfCxzhV.js");
1195
+ return await import("./pw-ai-DGwA7iCM.js");
1196
1196
  } catch (err) {
1197
1197
  if (mode === "soft") return null;
1198
1198
  if (isModuleNotFoundError(err)) return null;
@@ -3558,7 +3558,7 @@ function createProfileAvailability({ opts, profile, state, getProfileState, setP
3558
3558
  //#region src/browser/server-context.reset.ts
3559
3559
  async function closePlaywrightBrowserConnection() {
3560
3560
  try {
3561
- await (await import("./pw-ai-pkfCxzhV.js")).closePlaywrightBrowserConnection();
3561
+ await (await import("./pw-ai-DGwA7iCM.js")).closePlaywrightBrowserConnection();
3562
3562
  } catch {}
3563
3563
  }
3564
3564
  function createProfileResetOps({ profile, getProfileState, stopRunningBrowser, isHttpReachable, resolveOpenClawUserDataDir }) {
@@ -1,5 +1,5 @@
1
1
  import { m as normalizeAccountId } from "./session-key-CVIXEtLx.js";
2
- import { v as createAccountListHelpers } from "./accounts-D_pT5EjF.js";
2
+ import { v as createAccountListHelpers } from "./accounts-BYcizTXn.js";
3
3
  import { t as resolveAccountEntry } from "./account-lookup-BCxEEOS8.js";
4
4
 
5
5
  //#region src/imessage/accounts.ts
@@ -1,5 +1,5 @@
1
1
  import { m as normalizeAccountId } from "./session-key-CVIXEtLx.js";
2
- import { v as createAccountListHelpers } from "./accounts-D_pT5EjF.js";
2
+ import { v as createAccountListHelpers } from "./accounts-BYcizTXn.js";
3
3
  import { t as resolveAccountEntry } from "./account-lookup-BCxEEOS8.js";
4
4
 
5
5
  //#region src/signal/accounts.ts
@@ -1,8 +1,8 @@
1
1
  import { h as normalizeOptionalAccountId, m as normalizeAccountId, p as DEFAULT_ACCOUNT_ID } from "./session-key-CVIXEtLx.js";
2
2
  import { o as resolveOAuthDir } from "./paths-C__vjTc0.js";
3
- import { i as defaultRuntime, l as info, m as success, y as getChildLogger } from "./subsystem-CM1s2lDT.js";
4
- import { h as resolveUserPath, u as jidToE164 } from "./utils-BcL6KGZf.js";
5
- import { t as formatCliCommand } from "./command-format-BOJz3y1v.js";
3
+ import { i as defaultRuntime, l as info, m as success, y as getChildLogger } from "./subsystem-B0V8LFBA.js";
4
+ import { h as resolveUserPath, u as jidToE164 } from "./utils-BfVxx6bk.js";
5
+ import { t as formatCliCommand } from "./command-format-DvyMEXQo.js";
6
6
  import { t as resolveAccountEntry } from "./account-lookup-BCxEEOS8.js";
7
7
  import fs from "node:fs";
8
8
  import path from "node:path";
@@ -1,5 +1,5 @@
1
1
  import { p as DEFAULT_ACCOUNT_ID } from "./session-key-CVIXEtLx.js";
2
- import { t as formatCliCommand } from "./command-format-BOJz3y1v.js";
2
+ import { t as formatCliCommand } from "./command-format-DvyMEXQo.js";
3
3
  import crypto from "node:crypto";
4
4
 
5
5
  //#region src/logging/redact-identifier.ts