@termix-it/cryptoclaw 1.0.1 → 1.0.2

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 (137) hide show
  1. package/CHANGELOG.md +93 -93
  2. package/assets/favicon.svg +22 -0
  3. package/dist/{acp-cli-Bsrf851G.js → acp-cli-CBFKSvET.js} +2 -2
  4. package/dist/{acp-cli-C9D24JzU.js → acp-cli-CEPAR8vh.js} +2 -2
  5. package/dist/{agent-BH-rLX4t.js → agent-8dTCwA-D.js} +2 -2
  6. package/dist/{agent-mns7e_gL.js → agent-sjalTGVA.js} +2 -2
  7. package/dist/build-info.json +3 -3
  8. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  9. package/dist/{channel-options-CUOi5M0r.js → channel-options-B951pKy8.js} +1 -1
  10. package/dist/{channel-options-B3XNSAJG.js → channel-options-DJsSCLD8.js} +1 -1
  11. package/dist/{channels-cli-BRxxmnVq.js → channels-cli-Fv9FTQXn.js} +6 -6
  12. package/dist/{channels-cli-xTlvzb2Z.js → channels-cli-Lq6EWRJ9.js} +5 -5
  13. package/dist/cli/daemon-cli.js +1 -1
  14. package/dist/{cli-B7NiNFc2.js → cli-Bzyu6rQE.js} +2 -2
  15. package/dist/{cli-6yV4qEGI.js → cli-DJnpasWd.js} +2 -2
  16. package/dist/{command-options-DeWanQ_1.js → command-options-DBpEhnW5.js} +1 -1
  17. package/dist/{completion-cli-DyiCPCwN.js → completion-cli-Bd5FrGHg.js} +25 -25
  18. package/dist/{completion-cli-BIA4Amxj.js → completion-cli-Cs-B1hk7.js} +1 -1
  19. package/dist/{config-guard-C4vrsjgm.js → config-guard-Csl9Ubn5.js} +36 -36
  20. package/dist/{configure-BupCndyG.js → configure-CeTzu0Ed.js} +14 -14
  21. package/dist/{configure-B28_m98z.js → configure-CxPJaP8X.js} +14 -14
  22. package/dist/control-ui/apple-touch-icon.png +0 -0
  23. package/dist/control-ui/assets/{index-DQ-7PWhX.js → index-BdjmXlOn.js} +372 -363
  24. package/dist/control-ui/assets/index-BdjmXlOn.js.map +1 -0
  25. package/dist/control-ui/assets/{index-nlpH70Eh.css → index-BxkHytum.css} +1 -1
  26. package/dist/control-ui/favicon-32.png +0 -0
  27. package/dist/control-ui/favicon.ico +0 -0
  28. package/dist/control-ui/favicon.svg +4 -4
  29. package/dist/control-ui/index.html +2 -2
  30. package/dist/{cron-cli-CaCwFGvb.js → cron-cli-D8gKivN0.js} +2 -2
  31. package/dist/{cron-cli-v8FMB7_N.js → cron-cli-yC5Cy77c.js} +2 -2
  32. package/dist/{daemon-cli-JZ9ONoBh.js → daemon-cli-BM8zb09s.js} +5 -5
  33. package/dist/{daemon-cli-D24Obngu.js → daemon-cli-D8AC0Q_A.js} +5 -5
  34. package/dist/{deps-DY5l__pK.js → deps-BhcPiVuz.js} +1 -1
  35. package/dist/{deps-BDQ4UyT5.js → deps-ZGqhOjkR.js} +1 -1
  36. package/dist/{directory-cli-B8IA2RSF.js → directory-cli--IOOMz66.js} +2 -2
  37. package/dist/{directory-cli-C9y2B84i.js → directory-cli-DGFlpQ4T.js} +2 -2
  38. package/dist/{dns-cli-DoO4a6op.js → dns-cli-DkhYuREi.js} +2 -2
  39. package/dist/{dns-cli-DJUkN_WU.js → dns-cli-fQ4wu1HJ.js} +2 -2
  40. package/dist/{docs-cli-CcQ9shjL.js → docs-cli-BgnDzmFT.js} +5 -5
  41. package/dist/{docs-cli-CPus_TqL.js → docs-cli-CPaJzUSD.js} +5 -5
  42. package/dist/{doctor-D3VWObNR.js → doctor-D6M3Hc0a.js} +3 -3
  43. package/dist/{doctor-ClJURW58.js → doctor-DRRL31R4.js} +3 -3
  44. package/dist/entry.js +1 -1
  45. package/dist/{exec-approvals-cli-DC9v48w9.js → exec-approvals-cli-BhEdzGao.js} +3 -3
  46. package/dist/{exec-approvals-cli-Djev4HNk.js → exec-approvals-cli-DHMroOAh.js} +3 -3
  47. package/dist/extensionAPI.js +8 -8
  48. package/dist/{gateway-cli-CHZrqsVp.js → gateway-cli-CbQ4xoXp.js} +14 -14
  49. package/dist/{gateway-cli--xOlaN5f.js → gateway-cli-DO7lIBZ5.js} +15 -15
  50. package/dist/{github-copilot-auth-CLh6feLw.js → github-copilot-auth-D6I2MUxi.js} +1 -1
  51. package/dist/{github-copilot-auth-CeBZ5KDq.js → github-copilot-auth-DvShXmvU.js} +1 -1
  52. package/dist/{health-format-QWTDdHdV.js → health-format-DlvTEKqI.js} +1 -1
  53. package/dist/{health-format-D0ylScGO.js → health-format-SZpheYuf.js} +1 -1
  54. package/dist/hooks/bundled/boot-md/HOOK.md +1 -1
  55. package/dist/hooks/bundled/command-logger/HOOK.md +1 -1
  56. package/dist/hooks/bundled/session-memory/HOOK.md +1 -1
  57. package/dist/hooks/bundled/soul-evil/HOOK.md +1 -1
  58. package/dist/{hooks-cli-IS7KFMZy.js → hooks-cli-CedlcxxR.js} +4 -4
  59. package/dist/{hooks-cli-C9066q7q.js → hooks-cli-DRarvOK2.js} +4 -4
  60. package/dist/index.js +38 -38
  61. package/dist/{links-DXtV_A64.js → links-Dv1EDiwa.js} +1 -1
  62. package/dist/{links-KcaRpMJg.js → links-kbubTyay.js} +1 -1
  63. package/dist/{loader-BNqYr2Am.js → loader-DE_vKAH5.js} +10 -10
  64. package/dist/{logs-cli-BRQOdLoD.js → logs-cli-_DHuOrR4.js} +2 -2
  65. package/dist/{logs-cli-D08L6RIX.js → logs-cli-emy-Mg4S.js} +2 -2
  66. package/dist/{models-cli-CovM2RsI.js → models-cli-CdrDfutq.js} +4 -4
  67. package/dist/{models-cli-D0bxf-ID.js → models-cli-CgIqfTHx.js} +4 -4
  68. package/dist/{node-cli-whSrpDNN.js → node-cli-Bsn9lQ6O.js} +2 -2
  69. package/dist/{node-cli-DoMmvbg-.js → node-cli-Ckvs6bcI.js} +2 -2
  70. package/dist/{nodes-cli-CeMIAaHZ.js → nodes-cli-BELOAYB6.js} +2 -2
  71. package/dist/{nodes-cli-DRmkJeRw.js → nodes-cli-CTQPoAcf.js} +2 -2
  72. package/dist/{onboard-channels-uZ5vLniX.js → onboard-channels-B5qHfMk8.js} +2 -2
  73. package/dist/{onboard-channels-xteKATz4.js → onboard-channels-BgchLTab.js} +2 -2
  74. package/dist/{onboard-skills-tUnJDYV8.js → onboard-skills-CyG0xbsu.js} +7 -7
  75. package/dist/{onboard-skills-CKpZ4Xwu.js → onboard-skills-DEnuz7z3.js} +7 -7
  76. package/dist/{onboarding-DX15S5UW.js → onboarding-B6aTF0nd.js} +18 -18
  77. package/dist/{pairing-cli-Oq8UZJRJ.js → pairing-cli-C_PnyRzK.js} +2 -2
  78. package/dist/{pairing-cli-B7Bji_j_.js → pairing-cli-CocCRLzF.js} +2 -2
  79. package/dist/plugin-sdk/index.js +1 -1
  80. package/dist/{plugins-cli-BVoSu7m7.js → plugins-cli-DB1NYN9W.js} +5 -5
  81. package/dist/{plugins-cli-ChkSbzKF.js → plugins-cli-Dn9I2nvT.js} +5 -5
  82. package/dist/{program-DpxSYPmu.js → program-CL1V1uQh.js} +18 -18
  83. package/dist/{register.subclis-DG215F73.js → register.subclis-Bf9yES9h.js} +26 -26
  84. package/dist/{reply-3TWXjNUA.js → reply-qWVVjmhR.js} +10 -10
  85. package/dist/{run-main-D43qwCZX.js → run-main-C12Z921D.js} +19 -19
  86. package/dist/{sandbox-cli-BPdnq1hk.js → sandbox-cli-DVfJ38Q2.js} +4 -4
  87. package/dist/{sandbox-cli-a3oEVi7W.js → sandbox-cli-DqrtTHAP.js} +4 -4
  88. package/dist/{security-cli-Devsjfv_.js → security-cli-2AAajc4y.js} +2 -2
  89. package/dist/{security-cli-C1XbzHNF.js → security-cli-YL2ZTkkR.js} +2 -2
  90. package/dist/{server-node-events-BVLdeCJU.js → server-node-events-uUSBf7hZ.js} +4 -4
  91. package/dist/{server-node-events-DLZj55Ir.js → server-node-events-x6ZMjAs1.js} +4 -4
  92. package/dist/{skills-cli-DnSEVLxn.js → skills-cli-CYZbvr7O.js} +2 -2
  93. package/dist/{skills-cli-g1nC-Yz9.js → skills-cli-eDUNGpwb.js} +2 -2
  94. package/dist/{status-D09U-Iku.js → status-BnbwLzB2.js} +1 -1
  95. package/dist/{status-1TQxVU1M.js → status-CN2V3fan.js} +18 -18
  96. package/dist/{status-CbMg399g.js → status-DCrBN9vJ.js} +1 -1
  97. package/dist/{system-cli-D3UizeGy.js → system-cli-BEmIixtY.js} +2 -2
  98. package/dist/{system-cli-DJ_e6msK.js → system-cli-ZxnlO0-v.js} +2 -2
  99. package/dist/{tui-cli-PKJ39Zsl.js → tui-cli-B9iCyCn2.js} +2 -2
  100. package/dist/{tui-cli-DPhl5a66.js → tui-cli-iakTIAvk.js} +2 -2
  101. package/dist/{update-cli-C5x50A17.js → update-cli-DUO4CVNB.js} +12 -12
  102. package/dist/{update-cli-DKLyK_Tu.js → update-cli-DlXzjuIc.js} +11 -11
  103. package/dist/{update-runner-DotP-T6Y.js → update-runner-L1EJYQRF.js} +2 -2
  104. package/dist/{update-runner-vOge0-Wj.js → update-runner-eJ773fp-.js} +2 -2
  105. package/dist/{webhooks-cli-DEqtDAwW.js → webhooks-cli-BLHZn_at.js} +2 -2
  106. package/dist/{webhooks-cli-ORjumqe4.js → webhooks-cli-UhujyhVU.js} +2 -2
  107. package/docs/assets/pixel-lobster.svg +3 -3
  108. package/docs/blockchain/aave.md +72 -0
  109. package/docs/blockchain/agent-identity.md +73 -0
  110. package/docs/blockchain/contracts.md +96 -0
  111. package/docs/blockchain/defi.md +61 -0
  112. package/docs/blockchain/index.md +92 -0
  113. package/docs/blockchain/market-data.md +98 -0
  114. package/docs/blockchain/nft.md +44 -0
  115. package/docs/blockchain/portfolio.md +57 -0
  116. package/docs/blockchain/security.md +83 -0
  117. package/docs/blockchain/swap.md +89 -0
  118. package/docs/blockchain/wallet.md +77 -0
  119. package/docs/concepts/features.md +29 -10
  120. package/docs/docs.json +76 -6
  121. package/docs/index.md +44 -44
  122. package/docs/start/getting-started.md +10 -9
  123. package/docs/zh-CN/blockchain/aave.md +63 -0
  124. package/docs/zh-CN/blockchain/agent-identity.md +62 -0
  125. package/docs/zh-CN/blockchain/contracts.md +64 -0
  126. package/docs/zh-CN/blockchain/defi.md +49 -0
  127. package/docs/zh-CN/blockchain/index.md +92 -0
  128. package/docs/zh-CN/blockchain/market-data.md +68 -0
  129. package/docs/zh-CN/blockchain/nft.md +43 -0
  130. package/docs/zh-CN/blockchain/portfolio.md +49 -0
  131. package/docs/zh-CN/blockchain/security.md +75 -0
  132. package/docs/zh-CN/blockchain/swap.md +68 -0
  133. package/docs/zh-CN/blockchain/wallet.md +71 -0
  134. package/extensions/voice-call/README.md +2 -2
  135. package/extensions/voice-call/src/cli.ts +1 -1
  136. package/package.json +1 -1
  137. package/dist/control-ui/assets/index-DQ-7PWhX.js.map +0 -1
@@ -12,25 +12,25 @@ import { f as inspectPortUsage, m as formatPortDiagnostics } from "./errors-DpH6
12
12
  import { a as findTailscaleBinary, o as getTailnetHostname, s as readTailscaleStatusJson } from "./tailscale-CCLcQalf.js";
13
13
  import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-D-Kvee3W.js";
14
14
  import { n as listChannelPlugins } from "./plugins-CB4Xjrgb.js";
15
- import { Dr as getMemorySearchManager, Fn as readRestartSentinel, In as summarizeRestartSentinel, Jt as loadProviderUsageSummary, Kn as peekSystemEvents, Qt as listAgentsForGateway, Yt as formatUsageReportLines, _ as randomToken, a as applyWizardMetadata, b as summarizeExistingConfig, c as ensureWorkspaceAndSessions, d as handleReset, dn as lookupContextTokens, g as probeGatewayReachable, h as printWizardHeader, i as DEFAULT_WORKSPACE, l as formatControlUiSshHint, m as openUrl, p as normalizeGatewayTokenInput, q as getRemoteSkillEligibility, s as detectBrowserOpenSupport, v as resolveControlUiLinks, w as normalizeControlUiBasePath, x as waitForGatewayReachable } from "./loader-BNqYr2Am.js";
15
+ import { Dr as getMemorySearchManager, Fn as readRestartSentinel, In as summarizeRestartSentinel, Jt as loadProviderUsageSummary, Kn as peekSystemEvents, Qt as listAgentsForGateway, Yt as formatUsageReportLines, _ as randomToken, a as applyWizardMetadata, b as summarizeExistingConfig, c as ensureWorkspaceAndSessions, d as handleReset, dn as lookupContextTokens, g as probeGatewayReachable, h as printWizardHeader, i as DEFAULT_WORKSPACE, l as formatControlUiSshHint, m as openUrl, p as normalizeGatewayTokenInput, q as getRemoteSkillEligibility, s as detectBrowserOpenSupport, v as resolveControlUiLinks, w as normalizeControlUiBasePath, x as waitForGatewayReachable } from "./loader-DE_vKAH5.js";
16
16
  import { n as withProgress } from "./progress-D-Oc-KAH.js";
17
17
  import { t as WizardCancelledError } from "./prompts-C2D9_VZC.js";
18
18
  import { t as resolveChannelDefaultAccountId } from "./helpers-OUt4hxkS.js";
19
- import { n as setupChannels } from "./onboard-channels-uZ5vLniX.js";
19
+ import { n as setupChannels } from "./onboard-channels-B5qHfMk8.js";
20
20
  import { o as resolveStorePath } from "./paths-KUslkJRs.js";
21
21
  import { I as resolveMainSessionKey, d as loadSessionStore } from "./sandbox-Cfvpk8Q8.js";
22
22
  import { t as buildChannelSummary } from "./channel-summary-BQMoWZQ1.js";
23
23
  import { t as collectChannelStatusIssues } from "./channels-status-issues-DouPXVa3.js";
24
- import { r as installCompletion } from "./completion-cli-BIA4Amxj.js";
24
+ import { r as installCompletion } from "./completion-cli-Cs-B1hk7.js";
25
25
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-BMAJ_2LE.js";
26
26
  import { o as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-C0ccl5rU.js";
27
27
  import { r as isSystemdUserServiceAvailable } from "./systemd-kY3NnWdi.js";
28
28
  import { o as readLastGatewayErrorLine } from "./service-audit-CCg0o0UZ.js";
29
29
  import { t as renderTable } from "./table--L48nql9.js";
30
30
  import { i as probeGateway, t as runSecurityAudit } from "./audit-DQsCrYXQ.js";
31
- import { d as applyAuthChoice, g as ensureControlUiAssetsBuilt, h as promptAuthChoiceGrouped, l as resolvePreferredProviderForAuthChoice, o as applyPrimaryModel, r as promptRemoteGatewayConfig, s as promptDefaultModel, t as setupSkills, u as warnIfModelConfigLooksOff } from "./onboard-skills-tUnJDYV8.js";
32
- import { a as resolveHeartbeatSummaryForAgent, i as healthCommand, n as formatHealthChannelLines, t as formatHealthCheckFailure } from "./health-format-QWTDdHdV.js";
33
- import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, c as formatUpdateOneLiner, d as checkShellCompletionStatus, h as compareSemverStrings, l as getUpdateCheckResult, m as checkUpdateStatus, p as ensureCompletionCacheExists, s as formatUpdateAvailableHint, u as resolveUpdateAvailability, x as formatUpdateChannelLabel } from "./update-runner-vOge0-Wj.js";
31
+ import { d as applyAuthChoice, g as ensureControlUiAssetsBuilt, h as promptAuthChoiceGrouped, l as resolvePreferredProviderForAuthChoice, o as applyPrimaryModel, r as promptRemoteGatewayConfig, s as promptDefaultModel, t as setupSkills, u as warnIfModelConfigLooksOff } from "./onboard-skills-CyG0xbsu.js";
32
+ import { a as resolveHeartbeatSummaryForAgent, i as healthCommand, n as formatHealthChannelLines, t as formatHealthCheckFailure } from "./health-format-DlvTEKqI.js";
33
+ import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, c as formatUpdateOneLiner, d as checkShellCompletionStatus, h as compareSemverStrings, l as getUpdateCheckResult, m as checkUpdateStatus, p as ensureCompletionCacheExists, s as formatUpdateAvailableHint, u as resolveUpdateAvailability, x as formatUpdateChannelLabel } from "./update-runner-eJ773fp-.js";
34
34
  import { n as logConfigUpdated } from "./logging-B65tlzu3.js";
35
35
  import { t as buildWorkspaceHookStatus } from "./hooks-status-B4cP-W7z.js";
36
36
  import { t as buildWorkspaceSkillStatus } from "./skills-status-dTiH79uI.js";
@@ -50,7 +50,7 @@ async function setupInternalHooks(cfg, runtime, prompter) {
50
50
  "Hooks let you automate actions when agent commands are issued.",
51
51
  "Example: Save session context to memory when you issue /new.",
52
52
  "",
53
- "Learn more: https://docs.cryptoclaw.ai/hooks"
53
+ "Learn more: https://docs.openclaw.ai/hooks"
54
54
  ].join("\n"), "Hooks");
55
55
  const eligibleHooks = buildWorkspaceHookStatus(resolveAgentWorkspaceDir(cfg, resolveDefaultAgentId(cfg)), { config: cfg }).hooks.filter((h) => h.eligible);
56
56
  if (eligibleHooks.length === 0) {
@@ -379,8 +379,8 @@ async function finalizeOnboardingWizard(options) {
379
379
  runtime.error(formatHealthCheckFailure(err));
380
380
  await prompter.note([
381
381
  "Docs:",
382
- "https://docs.cryptoclaw.ai/gateway/health",
383
- "https://docs.cryptoclaw.ai/gateway/troubleshooting"
382
+ "https://docs.openclaw.ai/gateway/health",
383
+ "https://docs.openclaw.ai/gateway/troubleshooting"
384
384
  ].join("\n"), "Health check help");
385
385
  }
386
386
  }
@@ -410,7 +410,7 @@ async function finalizeOnboardingWizard(options) {
410
410
  `Web UI: ${dashboardUrl}`,
411
411
  `Gateway WS: ${links.wsUrl}`,
412
412
  gatewayStatusLine,
413
- "Docs: https://docs.cryptoclaw.ai/web/control-ui"
413
+ "Docs: https://docs.openclaw.ai/web/control-ui"
414
414
  ].filter(Boolean).join("\n"), "Control UI");
415
415
  let controlUiOpened = false;
416
416
  let controlUiOpenHint;
@@ -472,7 +472,7 @@ async function finalizeOnboardingWizard(options) {
472
472
  ].filter(Boolean).join("\n"), "Dashboard ready");
473
473
  } else await prompter.note(`When you're ready: ${formatCliCommand("cryptoclaw dashboard --no-open")}`, "Later");
474
474
  } else if (opts.skipUi) await prompter.note("Skipping Control UI/TUI prompts.", "Control UI");
475
- await prompter.note("Running agents on your computer is risky — harden your setup: https://docs.cryptoclaw.ai/security", "Security");
475
+ await prompter.note("Running agents on your computer is risky — harden your setup: https://docs.openclaw.ai/security", "Security");
476
476
  const cliName = resolveCliName();
477
477
  const completionStatus = await checkShellCompletionStatus(cliName);
478
478
  if (completionStatus.usesSlowPattern) {
@@ -614,8 +614,8 @@ async function configureGatewayForOnboarding(opts) {
614
614
  if (tailscaleMode !== "off" && flow !== "quickstart") {
615
615
  await prompter.note([
616
616
  "Docs:",
617
- "https://docs.cryptoclaw.ai/gateway/tailscale",
618
- "https://docs.cryptoclaw.ai/web"
617
+ "https://docs.openclaw.ai/gateway/tailscale",
618
+ "https://docs.openclaw.ai/web"
619
619
  ].join("\n"), "Tailscale");
620
620
  tailscaleResetOnExit = Boolean(await prompter.confirm({
621
621
  message: "Reset Tailscale serve/funnel on exit?",
@@ -718,7 +718,7 @@ async function requireRiskAcknowledgement(params) {
718
718
  "cryptoclaw security audit --deep",
719
719
  "cryptoclaw security audit --fix",
720
720
  "",
721
- "Must read: https://docs.cryptoclaw.ai/gateway/security"
721
+ "Must read: https://docs.openclaw.ai/gateway/security"
722
722
  ].join("\n"), "Security");
723
723
  if (!await params.prompter.confirm({
724
724
  message: "I understand this is powerful and inherently risky. Continue?",
@@ -739,7 +739,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
739
739
  if (snapshot.issues.length > 0) await prompter.note([
740
740
  ...snapshot.issues.map((iss) => `- ${iss.path}: ${iss.message}`),
741
741
  "",
742
- "Docs: https://docs.cryptoclaw.ai/gateway/configuration"
742
+ "Docs: https://docs.openclaw.ai/gateway/configuration"
743
743
  ].join("\n"), "Config issues");
744
744
  await prompter.outro(`Config invalid. Run \`${formatCliCommand("cryptoclaw doctor")}\` to repair it, then re-run onboarding.`);
745
745
  runtime.exit(1);
@@ -1902,7 +1902,7 @@ async function appendStatusAllDiagnosis(params) {
1902
1902
  }
1903
1903
  lines.push("");
1904
1904
  lines.push(muted("Pasteable debug report. Auth tokens redacted."));
1905
- lines.push("Troubleshooting: https://docs.cryptoclaw.ai/troubleshooting");
1905
+ lines.push("Troubleshooting: https://docs.openclaw.ai/troubleshooting");
1906
1906
  lines.push("");
1907
1907
  }
1908
1908
 
@@ -3345,8 +3345,8 @@ async function statusCommand(opts, runtime) {
3345
3345
  for (const line of formatUsageReportLines(usage)) runtime.log(line);
3346
3346
  }
3347
3347
  runtime.log("");
3348
- runtime.log("FAQ: https://docs.cryptoclaw.ai/faq");
3349
- runtime.log("Troubleshooting: https://docs.cryptoclaw.ai/troubleshooting");
3348
+ runtime.log("FAQ: https://docs.openclaw.ai/faq");
3349
+ runtime.log("Troubleshooting: https://docs.openclaw.ai/troubleshooting");
3350
3350
  runtime.log("");
3351
3351
  const updateHint = formatUpdateAvailableHint(update);
3352
3352
  if (updateHint) {
@@ -1,4 +1,4 @@
1
- import { rt as loadOpenClawPlugins } from "./reply-3TWXjNUA.js";
1
+ import { rt as loadOpenClawPlugins } from "./reply-qWVVjmhR.js";
2
2
  import { t as createSubsystemLogger } from "./subsystem-Btuh5yZj.js";
3
3
  import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir, w as resolveDefaultAgentWorkspaceDir } from "./agent-scope-GUoze5gc.js";
4
4
  import { i as loadConfig } from "./config-D1wc31Qf.js";
@@ -12,7 +12,7 @@ import "./manifest-registry-CmLtWVRR.js";
12
12
  import "./message-channel-CvHWS3C2.js";
13
13
  import "./client-BaTYzXOU.js";
14
14
  import "./call-QEaFjVBF.js";
15
- import { t as formatDocsLink } from "./links-DXtV_A64.js";
15
+ import { t as formatDocsLink } from "./links-Dv1EDiwa.js";
16
16
  import "./progress-DTEUicRP.js";
17
17
  import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-anmk3tbT.js";
18
18
 
@@ -24,7 +24,7 @@ const normalizeWakeMode = (raw) => {
24
24
  throw new Error("--mode must be now or next-heartbeat");
25
25
  };
26
26
  function registerSystemCli(program) {
27
- const system = program.command("system").description("System tools (events, heartbeat, presence)").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/system", "docs.cryptoclaw.ai/cli/system")}\n`);
27
+ const system = program.command("system").description("System tools (events, heartbeat, presence)").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/system", "docs.openclaw.ai/cli/system")}\n`);
28
28
  addGatewayClientOptions(system.command("event").description("Enqueue a system event and optionally trigger a heartbeat").requiredOption("--text <text>", "System event text").option("--mode <mode>", "Wake mode (now|next-heartbeat)", "next-heartbeat").option("--json", "Output JSON", false)).action(async (opts) => {
29
29
  try {
30
30
  const text = typeof opts.text === "string" ? opts.text.trim() : "";
@@ -10,7 +10,7 @@ import "./manifest-registry-CBbBh2FT.js";
10
10
  import "./client-N6zH1neq.js";
11
11
  import "./call-D-Kvee3W.js";
12
12
  import "./message-channel-CfYBy4y3.js";
13
- import { t as formatDocsLink } from "./links-KcaRpMJg.js";
13
+ import { t as formatDocsLink } from "./links-kbubTyay.js";
14
14
  import "./progress-D-Oc-KAH.js";
15
15
  import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-0hjEbkzc.js";
16
16
 
@@ -22,7 +22,7 @@ const normalizeWakeMode = (raw) => {
22
22
  throw new Error("--mode must be now or next-heartbeat");
23
23
  };
24
24
  function registerSystemCli(program) {
25
- const system = program.command("system").description("System tools (events, heartbeat, presence)").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/system", "docs.cryptoclaw.ai/cli/system")}\n`);
25
+ const system = program.command("system").description("System tools (events, heartbeat, presence)").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/system", "docs.openclaw.ai/cli/system")}\n`);
26
26
  addGatewayClientOptions(system.command("event").description("Enqueue a system event and optionally trigger a heartbeat").requiredOption("--text <text>", "System event text").option("--mode <mode>", "Wake mode (now|next-heartbeat)", "next-heartbeat").option("--json", "Output JSON", false)).action(async (opts) => {
27
27
  try {
28
28
  const text = typeof opts.text === "string" ? opts.text.trim() : "";
@@ -25,13 +25,13 @@ import "./tool-display-7o4pgXYF.js";
25
25
  import "./channel-summary-C4kSR_wu.js";
26
26
  import "./client-BaTYzXOU.js";
27
27
  import "./call-QEaFjVBF.js";
28
- import { t as formatDocsLink } from "./links-DXtV_A64.js";
28
+ import { t as formatDocsLink } from "./links-Dv1EDiwa.js";
29
29
  import { t as parseTimeoutMs } from "./parse-timeout-Du-wHHNi.js";
30
30
  import { t as runTui } from "./tui-3eD-E_iD.js";
31
31
 
32
32
  //#region src/cli/tui-cli.ts
33
33
  function registerTuiCli(program) {
34
- program.command("tui").description("Open a terminal UI connected to the Gateway").option("--url <url>", "Gateway WebSocket URL (defaults to gateway.remote.url when configured)").option("--token <token>", "Gateway token (if required)").option("--password <password>", "Gateway password (if required)").option("--session <key>", "Session key (default: \"main\", or \"global\" when scope is global)").option("--deliver", "Deliver assistant replies", false).option("--thinking <level>", "Thinking level override").option("--message <text>", "Send an initial message after connecting").option("--timeout-ms <ms>", "Agent timeout in ms (defaults to agents.defaults.timeoutSeconds)").option("--history-limit <n>", "History entries to load", "200").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/tui", "docs.cryptoclaw.ai/cli/tui")}\n`).action(async (opts) => {
34
+ program.command("tui").description("Open a terminal UI connected to the Gateway").option("--url <url>", "Gateway WebSocket URL (defaults to gateway.remote.url when configured)").option("--token <token>", "Gateway token (if required)").option("--password <password>", "Gateway password (if required)").option("--session <key>", "Session key (default: \"main\", or \"global\" when scope is global)").option("--deliver", "Deliver assistant replies", false).option("--thinking <level>", "Thinking level override").option("--message <text>", "Send an initial message after connecting").option("--timeout-ms <ms>", "Agent timeout in ms (defaults to agents.defaults.timeoutSeconds)").option("--history-limit <n>", "History entries to load", "200").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/tui", "docs.openclaw.ai/cli/tui")}\n`).action(async (opts) => {
35
35
  try {
36
36
  const timeoutMs = parseTimeoutMs(opts.timeoutMs);
37
37
  if (opts.timeoutMs !== void 0 && timeoutMs === void 0) defaultRuntime.error(`warning: invalid --timeout-ms "${String(opts.timeoutMs)}"; ignoring`);
@@ -12,7 +12,7 @@ import "./errors-DpH6VpWK.js";
12
12
  import "./client-N6zH1neq.js";
13
13
  import "./call-D-Kvee3W.js";
14
14
  import "./message-channel-CfYBy4y3.js";
15
- import { t as formatDocsLink } from "./links-KcaRpMJg.js";
15
+ import { t as formatDocsLink } from "./links-kbubTyay.js";
16
16
  import "./plugins-CB4Xjrgb.js";
17
17
  import "./logging-5MtSkLpb.js";
18
18
  import "./accounts-BIh6Lgjl.js";
@@ -29,7 +29,7 @@ import { t as runTui } from "./tui-BGSteZzU.js";
29
29
 
30
30
  //#region src/cli/tui-cli.ts
31
31
  function registerTuiCli(program) {
32
- program.command("tui").description("Open a terminal UI connected to the Gateway").option("--url <url>", "Gateway WebSocket URL (defaults to gateway.remote.url when configured)").option("--token <token>", "Gateway token (if required)").option("--password <password>", "Gateway password (if required)").option("--session <key>", "Session key (default: \"main\", or \"global\" when scope is global)").option("--deliver", "Deliver assistant replies", false).option("--thinking <level>", "Thinking level override").option("--message <text>", "Send an initial message after connecting").option("--timeout-ms <ms>", "Agent timeout in ms (defaults to agents.defaults.timeoutSeconds)").option("--history-limit <n>", "History entries to load", "200").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/tui", "docs.cryptoclaw.ai/cli/tui")}\n`).action(async (opts) => {
32
+ program.command("tui").description("Open a terminal UI connected to the Gateway").option("--url <url>", "Gateway WebSocket URL (defaults to gateway.remote.url when configured)").option("--token <token>", "Gateway token (if required)").option("--password <password>", "Gateway password (if required)").option("--session <key>", "Session key (default: \"main\", or \"global\" when scope is global)").option("--deliver", "Deliver assistant replies", false).option("--thinking <level>", "Thinking level override").option("--message <text>", "Send an initial message after connecting").option("--timeout-ms <ms>", "Agent timeout in ms (defaults to agents.defaults.timeoutSeconds)").option("--history-limit <n>", "History entries to load", "200").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/tui", "docs.openclaw.ai/cli/tui")}\n`).action(async (opts) => {
33
33
  try {
34
34
  const timeoutMs = parseTimeoutMs(opts.timeoutMs);
35
35
  if (opts.timeoutMs !== void 0 && timeoutMs === void 0) defaultRuntime.error(`warning: invalid --timeout-ms "${String(opts.timeoutMs)}"; ignoring`);
@@ -18,12 +18,12 @@ import "./auth-phxCaFNX.js";
18
18
  import "./client-N6zH1neq.js";
19
19
  import "./call-D-Kvee3W.js";
20
20
  import "./message-channel-CfYBy4y3.js";
21
- import { t as formatDocsLink } from "./links-KcaRpMJg.js";
21
+ import { t as formatDocsLink } from "./links-kbubTyay.js";
22
22
  import "./plugin-auto-enable-CBfM3u2p.js";
23
23
  import "./plugins-CB4Xjrgb.js";
24
24
  import "./logging-5MtSkLpb.js";
25
25
  import "./accounts-BIh6Lgjl.js";
26
- import { Ln as trimLogTail } from "./loader-BNqYr2Am.js";
26
+ import { Ln as trimLogTail } from "./loader-DE_vKAH5.js";
27
27
  import "./progress-D-Oc-KAH.js";
28
28
  import { n as stylePromptMessage, t as stylePromptHint } from "./prompt-style-BntC_Eoo.js";
29
29
  import "./note-C5M2AQOP.js";
@@ -49,25 +49,25 @@ import "./commands-B0LiAJsa.js";
49
49
  import "./pairing-store-cC0TwSYc.js";
50
50
  import "./login-qr-C_Vv7Cqc.js";
51
51
  import "./channels-status-issues-DouPXVa3.js";
52
- import "./register.subclis-DG215F73.js";
53
- import { r as installCompletion } from "./completion-cli-BIA4Amxj.js";
54
- import "./deps-BDQ4UyT5.js";
52
+ import "./register.subclis-Bf9yES9h.js";
53
+ import { r as installCompletion } from "./completion-cli-Cs-B1hk7.js";
54
+ import "./deps-ZGqhOjkR.js";
55
55
  import { g as parseSemver } from "./daemon-runtime-BMAJ_2LE.js";
56
56
  import "./service-C0ccl5rU.js";
57
57
  import "./systemd-kY3NnWdi.js";
58
58
  import "./shared-DCh7fkR2.js";
59
- import { r as runDaemonRestart } from "./daemon-cli-JZ9ONoBh.js";
59
+ import { r as runDaemonRestart } from "./daemon-cli-BM8zb09s.js";
60
60
  import "./service-audit-CCg0o0UZ.js";
61
61
  import { t as renderTable } from "./table--L48nql9.js";
62
- import "./health-format-QWTDdHdV.js";
63
- import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, _ as resolveNpmChannelTag, a as globalInstallArgs, b as channelToNpmTag, c as formatUpdateOneLiner, d as checkShellCompletionStatus, g as fetchNpmTagVersion, h as compareSemverStrings, i as detectGlobalInstallManagerForRoot, m as checkUpdateStatus, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, p as ensureCompletionCacheExists, r as detectGlobalInstallManagerByPresence, s as formatUpdateAvailableHint, t as runGatewayUpdate, u as resolveUpdateAvailability, v as DEFAULT_GIT_CHANNEL, x as formatUpdateChannelLabel, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-vOge0-Wj.js";
62
+ import "./health-format-DlvTEKqI.js";
63
+ import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, _ as resolveNpmChannelTag, a as globalInstallArgs, b as channelToNpmTag, c as formatUpdateOneLiner, d as checkShellCompletionStatus, g as fetchNpmTagVersion, h as compareSemverStrings, i as detectGlobalInstallManagerForRoot, m as checkUpdateStatus, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, p as ensureCompletionCacheExists, r as detectGlobalInstallManagerByPresence, s as formatUpdateAvailableHint, t as runGatewayUpdate, u as resolveUpdateAvailability, v as DEFAULT_GIT_CHANNEL, x as formatUpdateChannelLabel, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-eJ773fp-.js";
64
64
  import "./logging-B65tlzu3.js";
65
65
  import "./skills-status-dTiH79uI.js";
66
66
  import "./auth-health-Dc-ImENT.js";
67
67
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-lGuOUiyd.js";
68
68
  import { t as formatHelpExamples } from "./help-format-CUnac_bT.js";
69
69
  import "./systemd-linger-CFK5jDdq.js";
70
- import { t as doctorCommand } from "./doctor-D3VWObNR.js";
70
+ import { t as doctorCommand } from "./doctor-D6M3Hc0a.js";
71
71
  import { spawnSync } from "node:child_process";
72
72
  import path from "node:path";
73
73
  import os from "node:os";
@@ -986,7 +986,7 @@ ${theme.heading("Notes:")}
986
986
  - Downgrades require confirmation (can break configuration)
987
987
  - Skips update if the working directory has uncommitted changes
988
988
 
989
- ${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.cryptoclaw.ai/cli/update")}`;
989
+ ${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.openclaw.ai/cli/update")}`;
990
990
  }).action(async (opts) => {
991
991
  try {
992
992
  await updateCommand({
@@ -1002,7 +1002,7 @@ ${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.cryptoclaw.ai/cli/
1002
1002
  defaultRuntime.exit(1);
1003
1003
  }
1004
1004
  });
1005
- update.command("wizard").description("Interactive update wizard").option("--timeout <seconds>", "Timeout for each update step in seconds (default: 1200)").addHelpText("after", `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.cryptoclaw.ai/cli/update")}\n`).action(async (opts) => {
1005
+ update.command("wizard").description("Interactive update wizard").option("--timeout <seconds>", "Timeout for each update step in seconds (default: 1200)").addHelpText("after", `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.openclaw.ai/cli/update")}\n`).action(async (opts) => {
1006
1006
  try {
1007
1007
  await updateWizardCommand({ timeout: opts.timeout });
1008
1008
  } catch (err) {
@@ -1014,7 +1014,7 @@ ${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.cryptoclaw.ai/cli/
1014
1014
  ["cryptoclaw update status", "Show channel + version status."],
1015
1015
  ["cryptoclaw update status --json", "JSON output."],
1016
1016
  ["cryptoclaw update status --timeout 10", "Custom timeout."]
1017
- ])}\n\n${theme.heading("Notes:")}\n${theme.muted("- Shows current update channel (stable/beta/dev) and source")}\n${theme.muted("- Includes git tag/branch/SHA for source checkouts")}\n\n${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.cryptoclaw.ai/cli/update")}`).action(async (opts) => {
1017
+ ])}\n\n${theme.heading("Notes:")}\n${theme.muted("- Shows current update channel (stable/beta/dev) and source")}\n${theme.muted("- Includes git tag/branch/SHA for source checkouts")}\n\n${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.openclaw.ai/cli/update")}`).action(async (opts) => {
1018
1018
  try {
1019
1019
  await updateStatusCommand({
1020
1020
  json: Boolean(opts.json),
@@ -1,5 +1,5 @@
1
1
  import "./pi-embedded-helpers-CT7w1pYd.js";
2
- import { q as trimLogTail } from "./reply-3TWXjNUA.js";
2
+ import { q as trimLogTail } from "./reply-qWVVjmhR.js";
3
3
  import "./paths-CGrNQEMk.js";
4
4
  import { R as theme, c as defaultRuntime } from "./subsystem-Btuh5yZj.js";
5
5
  import "./utils-CGterW74.js";
@@ -36,14 +36,14 @@ import "./client-BaTYzXOU.js";
36
36
  import "./call-QEaFjVBF.js";
37
37
  import "./login-qr-BpdHxT8l.js";
38
38
  import "./pairing-store-Dbotpoz6.js";
39
- import { t as formatDocsLink } from "./links-DXtV_A64.js";
39
+ import { t as formatDocsLink } from "./links-Dv1EDiwa.js";
40
40
  import "./progress-DTEUicRP.js";
41
41
  import "./pi-tools.policy-BjgXXFkH.js";
42
42
  import { n as stylePromptMessage, t as stylePromptHint } from "./prompt-style-BBlJlXtd.js";
43
43
  import "./session-cost-usage-B3HzifR9.js";
44
44
  import "./control-service-BBeopea3.js";
45
45
  import "./channel-selection-ChOffLk2.js";
46
- import "./deps-DY5l__pK.js";
46
+ import "./deps-BhcPiVuz.js";
47
47
  import "./tailscale-BY0igR48.js";
48
48
  import { _ as parseSemver } from "./daemon-runtime-CD5XPuxz.js";
49
49
  import "./logging-C3Y3mzWS.js";
@@ -52,8 +52,8 @@ import "./plugin-auto-enable-BmBAQgRq.js";
52
52
  import "./archive-Dy3Ezb-5.js";
53
53
  import "./skill-scanner-BoGjHXUZ.js";
54
54
  import "./installs-CWAe2dOG.js";
55
- import "./health-format-D0ylScGO.js";
56
- import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, _ as resolveNpmChannelTag, a as globalInstallArgs, b as channelToNpmTag, d as formatUpdateOneLiner, g as fetchNpmTagVersion, h as compareSemverStrings, i as detectGlobalInstallManagerForRoot, l as ensureCompletionCacheExists, m as checkUpdateStatus, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, p as resolveUpdateAvailability, r as detectGlobalInstallManagerByPresence, s as checkShellCompletionStatus, t as runGatewayUpdate, u as formatUpdateAvailableHint, v as DEFAULT_GIT_CHANNEL, x as formatUpdateChannelLabel, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-DotP-T6Y.js";
55
+ import "./health-format-SZpheYuf.js";
56
+ import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, _ as resolveNpmChannelTag, a as globalInstallArgs, b as channelToNpmTag, d as formatUpdateOneLiner, g as fetchNpmTagVersion, h as compareSemverStrings, i as detectGlobalInstallManagerForRoot, l as ensureCompletionCacheExists, m as checkUpdateStatus, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, p as resolveUpdateAvailability, r as detectGlobalInstallManagerByPresence, s as checkShellCompletionStatus, t as runGatewayUpdate, u as formatUpdateAvailableHint, v as DEFAULT_GIT_CHANNEL, x as formatUpdateChannelLabel, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-L1EJYQRF.js";
57
57
  import "./auth-RTEHx2eI.js";
58
58
  import { t as renderTable } from "./table-C1Xupkjv.js";
59
59
  import "./skills-status-D9G4-4sK.js";
@@ -61,13 +61,13 @@ import "./service-mrQPgOXl.js";
61
61
  import "./systemd-CFHiVC1D.js";
62
62
  import "./service-audit-BsDPEKdd.js";
63
63
  import "./channels-status-issues-BwOdQrU9.js";
64
- import { r as installCompletion } from "./completion-cli-DyiCPCwN.js";
64
+ import { r as installCompletion } from "./completion-cli-Bd5FrGHg.js";
65
65
  import { t as formatHelpExamples } from "./help-format-BzWwbeSF.js";
66
66
  import "./systemd-linger-CxBBzOjC.js";
67
67
  import "./auth-health-Cr8ib9nm.js";
68
- import { t as doctorCommand } from "./doctor-ClJURW58.js";
68
+ import { t as doctorCommand } from "./doctor-DRRL31R4.js";
69
69
  import "./shared-CtNMbLRE.js";
70
- import { r as runDaemonRestart } from "./daemon-cli-D24Obngu.js";
70
+ import { r as runDaemonRestart } from "./daemon-cli-D8AC0Q_A.js";
71
71
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-zm4_acQX.js";
72
72
  import os from "node:os";
73
73
  import path from "node:path";
@@ -987,7 +987,7 @@ ${theme.heading("Notes:")}
987
987
  - Downgrades require confirmation (can break configuration)
988
988
  - Skips update if the working directory has uncommitted changes
989
989
 
990
- ${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.cryptoclaw.ai/cli/update")}`;
990
+ ${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.openclaw.ai/cli/update")}`;
991
991
  }).action(async (opts) => {
992
992
  try {
993
993
  await updateCommand({
@@ -1003,7 +1003,7 @@ ${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.cryptoclaw.ai/cli/
1003
1003
  defaultRuntime.exit(1);
1004
1004
  }
1005
1005
  });
1006
- update.command("wizard").description("Interactive update wizard").option("--timeout <seconds>", "Timeout for each update step in seconds (default: 1200)").addHelpText("after", `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.cryptoclaw.ai/cli/update")}\n`).action(async (opts) => {
1006
+ update.command("wizard").description("Interactive update wizard").option("--timeout <seconds>", "Timeout for each update step in seconds (default: 1200)").addHelpText("after", `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.openclaw.ai/cli/update")}\n`).action(async (opts) => {
1007
1007
  try {
1008
1008
  await updateWizardCommand({ timeout: opts.timeout });
1009
1009
  } catch (err) {
@@ -1015,7 +1015,7 @@ ${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.cryptoclaw.ai/cli/
1015
1015
  ["cryptoclaw update status", "Show channel + version status."],
1016
1016
  ["cryptoclaw update status --json", "JSON output."],
1017
1017
  ["cryptoclaw update status --timeout 10", "Custom timeout."]
1018
- ])}\n\n${theme.heading("Notes:")}\n${theme.muted("- Shows current update channel (stable/beta/dev) and source")}\n${theme.muted("- Includes git tag/branch/SHA for source checkouts")}\n\n${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.cryptoclaw.ai/cli/update")}`).action(async (opts) => {
1018
+ ])}\n\n${theme.heading("Notes:")}\n${theme.muted("- Shows current update channel (stable/beta/dev) and source")}\n${theme.muted("- Includes git tag/branch/SHA for source checkouts")}\n\n${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.openclaw.ai/cli/update")}`).action(async (opts) => {
1019
1019
  try {
1020
1020
  await updateStatusCommand({
1021
1021
  json: Boolean(opts.json),
@@ -1,11 +1,11 @@
1
- import { q as trimLogTail } from "./reply-3TWXjNUA.js";
1
+ import { q as trimLogTail } from "./reply-qWVVjmhR.js";
2
2
  import { t as runCommandWithTimeout } from "./exec-CW_QjkBi.js";
3
3
  import { t as resolveOpenClawPackageRoot } from "./openclaw-root-Cx_l_MXP.js";
4
4
  import { r as resolveCliName, t as formatCliCommand } from "./command-format-9IsYy-9N.js";
5
5
  import { j as VERSION } from "./config-D1wc31Qf.js";
6
6
  import { _ as parseSemver } from "./daemon-runtime-CD5XPuxz.js";
7
7
  import { t as note } from "./note-DEz9ZK7G.js";
8
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-DyiCPCwN.js";
8
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-Bd5FrGHg.js";
9
9
  import os from "node:os";
10
10
  import path from "node:path";
11
11
  import fs from "node:fs/promises";
@@ -2,9 +2,9 @@ import { r as resolveCliName, t as formatCliCommand } from "./command-format-B0b
2
2
  import { t as runCommandWithTimeout } from "./exec-CLQSz0CI.js";
3
3
  import { t as resolveOpenClawPackageRoot } from "./openclaw-root-DJB4AQtF.js";
4
4
  import { j as VERSION } from "./config-DBZqAqbe.js";
5
- import { Ln as trimLogTail } from "./loader-BNqYr2Am.js";
5
+ import { Ln as trimLogTail } from "./loader-DE_vKAH5.js";
6
6
  import { t as note } from "./note-C5M2AQOP.js";
7
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BIA4Amxj.js";
7
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-Cs-B1hk7.js";
8
8
  import { g as parseSemver } from "./daemon-runtime-BMAJ_2LE.js";
9
9
  import { spawnSync } from "node:child_process";
10
10
  import path from "node:path";
@@ -8,7 +8,7 @@ import "./agent-scope-BJucHu4R.js";
8
8
  import "./github-copilot-token-C1sArkX4.js";
9
9
  import { c as writeConfigFile, i as loadConfig, l as validateConfigObjectWithPlugins, o as readConfigFileSnapshot } from "./config-DBZqAqbe.js";
10
10
  import "./manifest-registry-CBbBh2FT.js";
11
- import { t as formatDocsLink } from "./links-KcaRpMJg.js";
11
+ import { t as formatDocsLink } from "./links-kbubTyay.js";
12
12
  import "./skills-DaDm2aTV.js";
13
13
  import { C as normalizeServePath, S as normalizeHooksPath, T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, a as ensureTopic, b as generateHookToken, c as DEFAULT_GMAIL_LABEL, d as DEFAULT_GMAIL_SERVE_BIND, f as DEFAULT_GMAIL_SERVE_PATH, g as buildDefaultHookUrl, h as DEFAULT_GMAIL_TOPIC, i as ensureTailscaleEndpoint, l as DEFAULT_GMAIL_MAX_BYTES, m as DEFAULT_GMAIL_SUBSCRIPTION, n as ensureGcloudAuth, o as resolveProjectIdFromGogCredentials, p as DEFAULT_GMAIL_SERVE_PORT, r as ensureSubscription, s as runGcloud, t as ensureDependency, u as DEFAULT_GMAIL_RENEW_MINUTES, v as buildGogWatchStartArgs, w as parseTopicPath, x as mergeHookPresets, y as buildTopicPath } from "./gmail-setup-utils-CJ1pbsWv.js";
14
14
  import { spawn } from "node:child_process";
@@ -226,7 +226,7 @@ async function startGmailWatch(cfg, fatal = false) {
226
226
  //#endregion
227
227
  //#region src/cli/webhooks-cli.ts
228
228
  function registerWebhooksCli(program) {
229
- const gmail = program.command("webhooks").description("Webhook helpers and integrations").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/webhooks", "docs.cryptoclaw.ai/cli/webhooks")}\n`).command("gmail").description("Gmail Pub/Sub hooks (via gogcli)");
229
+ const gmail = program.command("webhooks").description("Webhook helpers and integrations").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/webhooks", "docs.openclaw.ai/cli/webhooks")}\n`).command("gmail").description("Gmail Pub/Sub hooks (via gogcli)");
230
230
  gmail.command("setup").description("Configure Gmail watch + Pub/Sub + CryptoClaw hooks").requiredOption("--account <email>", "Gmail account to watch").option("--project <id>", "GCP project id (OAuth client owner)").option("--topic <name>", "Pub/Sub topic name", DEFAULT_GMAIL_TOPIC).option("--subscription <name>", "Pub/Sub subscription name", DEFAULT_GMAIL_SUBSCRIPTION).option("--label <label>", "Gmail label to watch", DEFAULT_GMAIL_LABEL).option("--hook-url <url>", "CryptoClaw hook URL").option("--hook-token <token>", "CryptoClaw hook token").option("--push-token <token>", "Push token for gog watch serve").option("--bind <host>", "gog watch serve bind host", DEFAULT_GMAIL_SERVE_BIND).option("--port <port>", "gog watch serve port", String(DEFAULT_GMAIL_SERVE_PORT)).option("--path <path>", "gog watch serve path", DEFAULT_GMAIL_SERVE_PATH).option("--include-body", "Include email body snippets", true).option("--max-bytes <n>", "Max bytes for body snippets", String(DEFAULT_GMAIL_MAX_BYTES)).option("--renew-minutes <n>", "Renew watch every N minutes", String(DEFAULT_GMAIL_RENEW_MINUTES)).option("--tailscale <mode>", "Expose push endpoint via tailscale (funnel|serve|off)", "funnel").option("--tailscale-path <path>", "Path for tailscale serve/funnel").option("--tailscale-target <target>", "Tailscale serve/funnel target (port, host:port, or URL)").option("--push-endpoint <url>", "Explicit Pub/Sub push endpoint").option("--json", "Output JSON summary", false).action(async (opts) => {
231
231
  try {
232
232
  await runGmailSetup(parseGmailSetupOptions(opts));
@@ -11,7 +11,7 @@ import "./env-B2Cd_6IS.js";
11
11
  import { c as writeConfigFile, i as loadConfig, l as validateConfigObjectWithPlugins, o as readConfigFileSnapshot } from "./config-D1wc31Qf.js";
12
12
  import "./manifest-registry-CmLtWVRR.js";
13
13
  import "./skills-DryIpWLj.js";
14
- import { t as formatDocsLink } from "./links-DXtV_A64.js";
14
+ import { t as formatDocsLink } from "./links-Dv1EDiwa.js";
15
15
  import { C as normalizeServePath, S as normalizeHooksPath, T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, a as ensureTopic, b as generateHookToken, c as DEFAULT_GMAIL_LABEL, d as DEFAULT_GMAIL_SERVE_BIND, f as DEFAULT_GMAIL_SERVE_PATH, g as buildDefaultHookUrl, h as DEFAULT_GMAIL_TOPIC, i as ensureTailscaleEndpoint, l as DEFAULT_GMAIL_MAX_BYTES, m as DEFAULT_GMAIL_SUBSCRIPTION, n as ensureGcloudAuth, o as resolveProjectIdFromGogCredentials, p as DEFAULT_GMAIL_SERVE_PORT, r as ensureSubscription, s as runGcloud, t as ensureDependency, u as DEFAULT_GMAIL_RENEW_MINUTES, v as buildGogWatchStartArgs, w as parseTopicPath, x as mergeHookPresets, y as buildTopicPath } from "./gmail-setup-utils-CAfk_F1J.js";
16
16
  import { spawn } from "node:child_process";
17
17
 
@@ -228,7 +228,7 @@ async function startGmailWatch(cfg, fatal = false) {
228
228
  //#endregion
229
229
  //#region src/cli/webhooks-cli.ts
230
230
  function registerWebhooksCli(program) {
231
- const gmail = program.command("webhooks").description("Webhook helpers and integrations").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/webhooks", "docs.cryptoclaw.ai/cli/webhooks")}\n`).command("gmail").description("Gmail Pub/Sub hooks (via gogcli)");
231
+ const gmail = program.command("webhooks").description("Webhook helpers and integrations").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/webhooks", "docs.openclaw.ai/cli/webhooks")}\n`).command("gmail").description("Gmail Pub/Sub hooks (via gogcli)");
232
232
  gmail.command("setup").description("Configure Gmail watch + Pub/Sub + CryptoClaw hooks").requiredOption("--account <email>", "Gmail account to watch").option("--project <id>", "GCP project id (OAuth client owner)").option("--topic <name>", "Pub/Sub topic name", DEFAULT_GMAIL_TOPIC).option("--subscription <name>", "Pub/Sub subscription name", DEFAULT_GMAIL_SUBSCRIPTION).option("--label <label>", "Gmail label to watch", DEFAULT_GMAIL_LABEL).option("--hook-url <url>", "CryptoClaw hook URL").option("--hook-token <token>", "CryptoClaw hook token").option("--push-token <token>", "Push token for gog watch serve").option("--bind <host>", "gog watch serve bind host", DEFAULT_GMAIL_SERVE_BIND).option("--port <port>", "gog watch serve port", String(DEFAULT_GMAIL_SERVE_PORT)).option("--path <path>", "gog watch serve path", DEFAULT_GMAIL_SERVE_PATH).option("--include-body", "Include email body snippets", true).option("--max-bytes <n>", "Max bytes for body snippets", String(DEFAULT_GMAIL_MAX_BYTES)).option("--renew-minutes <n>", "Renew watch every N minutes", String(DEFAULT_GMAIL_RENEW_MINUTES)).option("--tailscale <mode>", "Expose push endpoint via tailscale (funnel|serve|off)", "funnel").option("--tailscale-path <path>", "Path for tailscale serve/funnel").option("--tailscale-target <target>", "Tailscale serve/funnel target (port, host:port, or URL)").option("--push-endpoint <url>", "Explicit Pub/Sub push endpoint").option("--json", "Output JSON summary", false).action(async (opts) => {
233
233
  try {
234
234
  await runGmailSetup(parseGmailSetupOptions(opts));
@@ -1,7 +1,7 @@
1
1
  <svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 16 16" role="img" aria-label="Pixel lobster">
2
2
  <rect width="16" height="16" fill="none"/>
3
3
  <!-- outline -->
4
- <g fill="#3a0a0d">
4
+ <g fill="#064E3B">
5
5
  <rect x="1" y="5" width="1" height="3"/>
6
6
  <rect x="2" y="4" width="1" height="1"/>
7
7
  <rect x="2" y="8" width="1" height="1"/>
@@ -25,7 +25,7 @@
25
25
  </g>
26
26
 
27
27
  <!-- body -->
28
- <g fill="#ff4f40">
28
+ <g fill="#10B981">
29
29
  <rect x="5" y="3" width="6" height="1"/>
30
30
  <rect x="4" y="4" width="8" height="1"/>
31
31
  <rect x="3" y="5" width="10" height="1"/>
@@ -38,7 +38,7 @@
38
38
  </g>
39
39
 
40
40
  <!-- claws -->
41
- <g fill="#ff775f">
41
+ <g fill="#34D399">
42
42
  <rect x="1" y="6" width="2" height="1"/>
43
43
  <rect x="2" y="5" width="1" height="1"/>
44
44
  <rect x="2" y="7" width="1" height="1"/>
@@ -0,0 +1,72 @@
1
+ ---
2
+ summary: "Supply, borrow, and repay on Aave V3 on BSC."
3
+ title: "AAVE Lending"
4
+ ---
5
+
6
+ # AAVE Lending
7
+
8
+ CryptoClaw integrates with Aave V3 on BNB Smart Chain for lending and borrowing operations.
9
+
10
+ ## Protocol addresses (BSC)
11
+
12
+ | Contract | Address |
13
+ | ----------------------- | -------------------------------------------- |
14
+ | Pool Proxy | `0x6807dc923806fE8Fd134338EABCA509979a7e0cB` |
15
+ | Pool Addresses Provider | `0xff75B6da14FfbbfD355Daf7a2731456b3562Ba6D` |
16
+ | Protocol Data Provider | `0x41585C50524fb8c3899B43D7D797d9486AAc94DB` |
17
+
18
+ ## Supported assets
19
+
20
+ | Asset | Address | Use as collateral |
21
+ | ----- | -------------------------------------------- | :---------------: |
22
+ | WBNB | `0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c` | Yes |
23
+ | USDT | `0x55d398326f99059fF775485246999027B3197955` | Yes |
24
+ | USDC | `0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d` | Yes |
25
+ | BTCB | `0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c` | Yes |
26
+ | ETH | `0x2170Ed0880ac9A755fd29B2688956BD959F933F8` | Yes |
27
+
28
+ ## Operations
29
+
30
+ | Action | Description | Confirmation |
31
+ | -------------------- | ------------------------------- | :----------: |
32
+ | `supply` | Deposit assets to earn interest | Yes |
33
+ | `withdraw` | Withdraw supplied assets | Yes |
34
+ | `borrow` | Borrow against collateral | Yes |
35
+ | `repay` | Repay borrowed assets | Yes |
36
+ | `getUserAccountData` | View position summary | |
37
+
38
+ ## Position monitoring
39
+
40
+ Ask the agent to check your Aave position:
41
+
42
+ - "What's my Aave position?" — Shows total collateral, total debt, available borrows, health factor
43
+ - "What's my health factor on Aave?" — Liquidation risk indicator (safe above 1.5)
44
+ - "How much can I borrow on Aave?" — Available borrow capacity
45
+
46
+ The `getUserAccountData` function returns:
47
+
48
+ - Total collateral (USD)
49
+ - Total debt (USD)
50
+ - Available borrows (USD)
51
+ - Liquidation threshold
52
+ - LTV ratio
53
+ - Health factor
54
+
55
+ ## Examples
56
+
57
+ ```
58
+ "Supply 10 USDT to Aave"
59
+ "Borrow 0.1 BNB from Aave using my USDT as collateral"
60
+ "Repay 5 USDT on Aave"
61
+ "Withdraw all my WBNB from Aave"
62
+ "What's my current Aave health factor?"
63
+ ```
64
+
65
+ <Warning>
66
+ Monitor your health factor regularly. If it drops below 1.0, your position may be liquidated. The agent will warn you when health factor is below 1.5.
67
+ </Warning>
68
+
69
+ ## Related
70
+
71
+ - [DeFi Dashboard](/blockchain/defi) — Monitor all DeFi positions
72
+ - [Token Swap](/blockchain/swap) — Swap tokens to repay or adjust positions
@@ -0,0 +1,73 @@
1
+ ---
2
+ summary: "Register and manage on-chain AI agent identity using ERC-8004 Trustless Agents standard."
3
+ title: "Agent Identity (ERC-8004)"
4
+ ---
5
+
6
+ # Agent Identity (ERC-8004)
7
+
8
+ CryptoClaw supports on-chain AI agent identity registration via the **ERC-8004 Trustless Agents** standard. This gives your agent a verifiable on-chain identity and reputation.
9
+
10
+ ## What is ERC-8004?
11
+
12
+ ERC-8004 defines a standard for registering AI agents on-chain with:
13
+
14
+ - **Identity registry** — Map agent addresses to metadata (name, capabilities, version)
15
+ - **Reputation registry** — Track agent reputation scores and endorsements
16
+ - **Trustless verification** — Anyone can verify an agent's identity on-chain
17
+
18
+ ## Tools
19
+
20
+ | Tool | Description | Confirmation |
21
+ | ----------------------- | ------------------------------------ | :----------: |
22
+ | `agent_register` | Register agent identity on-chain | Yes |
23
+ | `agent_identity` | Query agent identity information | |
24
+ | `agent_set_wallet` | Update the agent's associated wallet | Yes |
25
+ | `agent_reputation` | Check agent reputation score | |
26
+ | `agent_list_registered` | List registered agents | |
27
+
28
+ ## Supported networks
29
+
30
+ Agent identity can be registered on 10+ networks:
31
+
32
+ | Network | Registry type |
33
+ | ----------- | ------------- |
34
+ | BSC | Mainnet |
35
+ | Ethereum | Mainnet |
36
+ | Polygon | Mainnet |
37
+ | Arbitrum | Mainnet |
38
+ | Base | Mainnet |
39
+ | BSC Testnet | Testnet |
40
+ | Sepolia | Testnet |
41
+
42
+ ## Registration flow
43
+
44
+ <Steps>
45
+ <Step title="Prepare identity">
46
+ The agent collects identity metadata: name, description, capabilities, and version.
47
+ </Step>
48
+ <Step title="Choose network">
49
+ Select which chain to register on. BSC is recommended for low gas costs.
50
+ </Step>
51
+ <Step title="Confirm and register">
52
+ Review the registration transaction and confirm. The identity is stored on-chain.
53
+ </Step>
54
+ </Steps>
55
+
56
+ ## Identity persistence
57
+
58
+ Agent identity data is persisted locally at `~/.cryptoclaw/agent-identity.json` for quick access without on-chain queries.
59
+
60
+ ## Examples
61
+
62
+ ```
63
+ "Register my agent identity on BSC"
64
+ "What's my agent's on-chain reputation?"
65
+ "List all registered agents on BSC Testnet"
66
+ "Update my agent's wallet address"
67
+ "Show my agent identity details"
68
+ ```
69
+
70
+ ## Related
71
+
72
+ - [Wallet Management](/blockchain/wallet) — Wallet used for registration
73
+ - [Transaction Security](/blockchain/security) — Registration requires confirmation