hyperclaw 5.0.1 → 5.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/LICENSE +2 -1
  2. package/README.md +247 -32
  3. package/dist/a2ui-protocol-Gzm29Gaw.js +75 -0
  4. package/dist/agents-routing-Biy5ew4a.js +4 -0
  5. package/dist/agents-routing-CL3HQNoM.js +327 -0
  6. package/dist/api-keys-guide-ChbThbPj.js +149 -0
  7. package/dist/audit-NPIMmOSq.js +441 -0
  8. package/dist/bounty-tools-BUqUKjt0.js +211 -0
  9. package/dist/browser-tools-CxJY6pAn.js +5 -0
  10. package/dist/browser-tools-JZ9ji6AW.js +179 -0
  11. package/dist/chat-qVuqhlPu.js +258 -0
  12. package/dist/claw-tasks-B-8RRMdq.js +80 -0
  13. package/dist/connector-1x1rCBHz.js +162 -0
  14. package/dist/connector-B4jeCULG.js +305 -0
  15. package/dist/connector-B7qngfkT.js +286 -0
  16. package/dist/connector-B8BK0GBo.js +531 -0
  17. package/dist/connector-BE9eJs8-.js +182 -0
  18. package/dist/connector-BEe-DTGQ.js +189 -0
  19. package/dist/connector-BU7p5ZgB.js +167 -0
  20. package/dist/connector-BUzzq7Ij.js +568 -0
  21. package/dist/connector-BpDqLgnW.js +419 -0
  22. package/dist/connector-BpW88ut2.js +189 -0
  23. package/dist/connector-Bxv-gy8U.js +167 -0
  24. package/dist/connector-Bz14zcJv.js +213 -0
  25. package/dist/connector-C1zP5-5q.js +85 -0
  26. package/dist/connector-CAcpcovF.js +498 -0
  27. package/dist/connector-CJgVjS58.js +181 -0
  28. package/dist/connector-Cf53D6qV.js +425 -0
  29. package/dist/connector-CyHmlbNz.js +508 -0
  30. package/dist/connector-D22mJGVu.js +340 -0
  31. package/dist/connector-D6RtMmlL.js +225 -0
  32. package/dist/connector-D9EnT8A4.js +280 -0
  33. package/dist/connector-DNDwIh37.js +239 -0
  34. package/dist/connector-Di27MeO4.js +350 -0
  35. package/dist/connector-Do0BPiHt.js +194 -0
  36. package/dist/connector-DvLwOfJy.js +192 -0
  37. package/dist/connector-DvU83NSq.js +181 -0
  38. package/dist/connector-DxskpDc_.js +173 -0
  39. package/dist/connector-byy3eISx.js +552 -0
  40. package/dist/connector-vV89hsyd.js +218 -0
  41. package/dist/cost-tracker-fnaj_6M9.js +103 -0
  42. package/dist/credentials-store-BxijEirw.js +77 -0
  43. package/dist/credentials-store-CPkVO6-z.js +4 -0
  44. package/dist/cron-tasks-L0mz1yyU.js +82 -0
  45. package/dist/daemon-CNyunwkR.js +5 -0
  46. package/dist/daemon-CindY8OK.js +318 -0
  47. package/dist/delivery-DgiZcJBp.js +4 -0
  48. package/dist/delivery-otAU4alM.js +95 -0
  49. package/dist/destructive-gate-CA0DtA5K.js +101 -0
  50. package/dist/developer-keys-Cnd1kswV.js +127 -0
  51. package/dist/developer-keys-DENo3ZA6.js +8 -0
  52. package/dist/doctor-Dgjoc3DG.js +230 -0
  53. package/dist/doctor-RwsOhtAl.js +6 -0
  54. package/dist/engine-D_VeoZHw.js +305 -0
  55. package/dist/engine-JjRnhlsE.js +7 -0
  56. package/dist/env-resolve-BFJXWl94.js +115 -0
  57. package/dist/env-resolve-bDYssfih.js +10 -0
  58. package/dist/extraction-tools-DbxnxIco.js +5 -0
  59. package/dist/extraction-tools-Dg7AHS35.js +91 -0
  60. package/dist/form_data-CGAy4HE0.js +8657 -0
  61. package/dist/gmail-watch-setup-C3uSWznp.js +40 -0
  62. package/dist/health-DUjluWHQ.js +6 -0
  63. package/dist/health-DVfkpUQW.js +152 -0
  64. package/dist/heartbeat-engine-CrgL4mrP.js +83 -0
  65. package/dist/hub-BO6bj8Yj.js +515 -0
  66. package/dist/hub-Bu52YZqW.js +6 -0
  67. package/dist/hyperclawbot-BrcoYLOp.js +505 -0
  68. package/dist/inference-DHR82Gh7.js +6 -0
  69. package/dist/inference-DhA8jpfH.js +2692 -0
  70. package/dist/knowledge-graph-BrYpSgxW.js +131 -0
  71. package/dist/loader-9JqY6Nlq.js +4 -0
  72. package/dist/loader-Cjdd1kw4.js +400 -0
  73. package/dist/logger-DCT2l9GV.js +83 -0
  74. package/dist/manager-3cq3DydI.js +4 -0
  75. package/dist/manager-BUrFrPuq.js +117 -0
  76. package/dist/manager-Bi9UYyVR.js +105 -0
  77. package/dist/manager-Biz9ixWJ.js +40 -0
  78. package/dist/manager-CBUHJiY7.js +6 -0
  79. package/dist/manager-CVLLaKmq.js +218 -0
  80. package/dist/mcp-CUoTCMw-.js +139 -0
  81. package/dist/mcp-loader-BIz-450x.js +94 -0
  82. package/dist/memory-OL77OMOr.js +270 -0
  83. package/dist/memory-auto-D-L2q21G.js +306 -0
  84. package/dist/memory-auto-DTcy5VBy.js +5 -0
  85. package/dist/memory-gUi4VaIf.js +4 -0
  86. package/dist/memory-integration-B8RSN4pr.js +91 -0
  87. package/dist/moltbook-B-40gQOL.js +81 -0
  88. package/dist/node-TWxRm84k.js +222 -0
  89. package/dist/nodes-registry-DKRtsbNg.js +52 -0
  90. package/dist/oauth-flow-JCfporKq.js +150 -0
  91. package/dist/oauth-provider-4R0EJlsT.js +110 -0
  92. package/dist/observability-CDZmeHfa.js +89 -0
  93. package/dist/onboard-BVOtKQdh.js +3641 -0
  94. package/dist/onboard-CGNIw27w.js +11 -0
  95. package/dist/orchestrator-CcKx1Ovk.js +189 -0
  96. package/dist/orchestrator-DcFfDLTX.js +6 -0
  97. package/dist/osint-B6BZKQAD.js +277 -0
  98. package/dist/pairing-B6RArWhD.js +196 -0
  99. package/dist/pairing-BsQ08DLq.js +4 -0
  100. package/dist/pc-access-B0KocJNe.js +819 -0
  101. package/dist/pc-access-DkzmugZ7.js +8 -0
  102. package/dist/pending-approval-C_HkX1QL.js +22 -0
  103. package/dist/providers-DxiamZSL.js +5 -0
  104. package/dist/providers-Dy15rDb7.js +657 -0
  105. package/dist/reminders-store-CzUY0zYx.js +58 -0
  106. package/dist/renderer-ANNfXsHn.js +225 -0
  107. package/dist/rules-BSQwwAYC.js +103 -0
  108. package/dist/run-main.js +112 -117
  109. package/dist/runner-BHRSOPEU.js +1271 -0
  110. package/dist/security--oQObeJO.js +4 -0
  111. package/dist/security-wBOg0TA8.js +73 -0
  112. package/dist/server-CbTTpB5m.js +1255 -0
  113. package/dist/server-DP_bPzvI.js +4 -0
  114. package/dist/session-store-B09r5HgB.js +5 -0
  115. package/dist/session-store-DCTQIVur.js +113 -0
  116. package/dist/sessions-tools-BdlN6Pb6.js +95 -0
  117. package/dist/sessions-tools-JVLDKSJ_.js +5 -0
  118. package/dist/skill-loader-B5oeliGu.js +7 -0
  119. package/dist/skill-loader-Wf3brNOj.js +160 -0
  120. package/dist/skill-runtime-BGlvly2s.js +102 -0
  121. package/dist/skill-runtime-DhL2T76p.js +5 -0
  122. package/dist/src-BbPa6Q8p.js +63 -0
  123. package/dist/src-BeXtfkK2.js +458 -0
  124. package/dist/src-CGQjRI4N.js +20 -0
  125. package/dist/sub-agent-tools-CmE345s_.js +39 -0
  126. package/dist/theme-D0smfC_l.js +8 -0
  127. package/dist/theme-DajRRZbA.js +180 -0
  128. package/dist/tool-policy-DgNqFWYn.js +189 -0
  129. package/dist/tts-elevenlabs-JeFaGNJU.js +61 -0
  130. package/dist/update-check-BVEqHhFY.js +83 -0
  131. package/dist/vision-fky3elEo.js +121 -0
  132. package/dist/vision-tools-C8B3776g.js +5 -0
  133. package/dist/vision-tools-dwn9p4el.js +51 -0
  134. package/dist/voice-transcription-B6RtplmN.js +138 -0
  135. package/dist/website-watch-tools-B-jRAeTe.js +139 -0
  136. package/dist/website-watch-tools-BC9xAL67.js +5 -0
  137. package/package.json +1 -1
package/dist/run-main.js CHANGED
@@ -1,22 +1,23 @@
1
1
  const require_chunk = require('./chunk-jS-bbMI5.js');
2
2
  require('./paths-AIyBxIzm.js');
3
3
  require('./paths-DPovhojT.js');
4
- require('./env-resolve-Z2XF6leB.js');
5
- const require_onboard = require('./onboard-Bw28IRQ3.js');
6
- require('./server-Brl_HQUB.js');
7
- const require_daemon = require('./daemon-BfyKmZhr.js');
8
- require('./theme-DcxwcUgZ.js');
9
- const require_hub = require('./hub-CfwUz9YW.js');
10
- const require_manager = require('./manager-rgCsaWT1.js');
11
- const require_manager$1 = require('./manager-03ipO9R0.js');
12
- const require_memory = require('./memory-DsS_eFvJ.js');
13
- const require_loader = require('./loader-BkDi8MD9.js');
14
- const require_agents_routing = require('./agents-routing-ChHiZp36.js');
15
- const require_pairing = require('./pairing-6iM27aD8.js');
16
- const require_doctor = require('./doctor-BvCe8BBk.js');
17
- const require_health = require('./health-Ds2YlpTB.js');
18
- const require_security = require('./security-tpgqPWWH.js');
19
- const require_developer_keys = require('./developer-keys-DrrcUqFa.js');
4
+ require('./env-resolve-BFJXWl94.js');
5
+ const require_onboard = require('./onboard-BVOtKQdh.js');
6
+ require('./server-CbTTpB5m.js');
7
+ const require_daemon = require('./daemon-CindY8OK.js');
8
+ require('./providers-Dy15rDb7.js');
9
+ require('./theme-DajRRZbA.js');
10
+ const require_hub = require('./hub-BO6bj8Yj.js');
11
+ const require_manager = require('./manager-Biz9ixWJ.js');
12
+ const require_manager$1 = require('./manager-Bi9UYyVR.js');
13
+ const require_memory = require('./memory-OL77OMOr.js');
14
+ const require_loader = require('./loader-Cjdd1kw4.js');
15
+ const require_agents_routing = require('./agents-routing-CL3HQNoM.js');
16
+ const require_pairing = require('./pairing-B6RArWhD.js');
17
+ const require_doctor = require('./doctor-Dgjoc3DG.js');
18
+ const require_health = require('./health-DVfkpUQW.js');
19
+ const require_security = require('./security-wBOg0TA8.js');
20
+ const require_developer_keys = require('./developer-keys-Cnd1kswV.js');
20
21
  const commander = require_chunk.__toESM(require("commander"));
21
22
  const chalk = require_chunk.__toESM(require("chalk"));
22
23
  const inquirer = require_chunk.__toESM(require("inquirer"));
@@ -64,7 +65,7 @@ var Dashboard = class {
64
65
  return c(`� `) + content + " ".repeat(pad) + c(`�`);
65
66
  };
66
67
  console.log(c(`-${line}�`));
67
- console.log(c(`�`) + chalk.default.bold.hex("#06b6d4")(`${"?? HYPERCLAW v5.0.1 � GATEWAY DASHBOARD".padStart(45).padEnd(w)}`) + c(`�`));
68
+ console.log(c(`�`) + chalk.default.bold.hex("#06b6d4")(`${"?? HYPERCLAW v5.0.2 � GATEWAY DASHBOARD".padStart(45).padEnd(w)}`) + c(`�`));
68
69
  console.log(c(`�${line}�`));
69
70
  console.log(row(`${statusDot} Gateway ${statusText} ${chalk.default.gray("�")} ws://localhost:${port} ${chalk.default.gray("�")} Agent: ${c(agent)}`));
70
71
  console.log(row(`${c("?")} Model ${chalk.default.gray(model.slice(0, 30))} ${chalk.default.gray("�")} User: ${c(user)}`));
@@ -145,7 +146,7 @@ async function recordAudio(outFile, seconds) {
145
146
  async function transcribeWhisper(filePath, lang) {
146
147
  const apiKey = process.env.OPENAI_API_KEY || process.env.ANTHROPIC_API_KEY;
147
148
  if (!apiKey) throw new Error("No OPENAI_API_KEY set");
148
- const FormData = (await Promise.resolve().then(() => require_chunk.__toDynamicImportESM()(require("./form_data-Cz040rio.js"))).catch(() => null))?.default;
149
+ const FormData = (await Promise.resolve().then(() => require_chunk.__toDynamicImportESM()(require("./form_data-CGAy4HE0.js"))).catch(() => null))?.default;
149
150
  if (!FormData) throw new Error("form-data not installed");
150
151
  const form = new FormData();
151
152
  form.append("file", fs.createReadStream(filePath), {
@@ -2426,7 +2427,7 @@ var init_queue = require_chunk.__esm({ "src/delivery/queue.ts"() {
2426
2427
  //#endregion
2427
2428
  //#region src/cli/run-main.ts
2428
2429
  const program = new commander.Command();
2429
- program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("5.0.1").option("--profile <name>", "Use an isolated gateway profile. Auto-scopes HYPERCLAW_STATE_DIR and HYPERCLAW_CONFIG_PATH. Required for multi-gateway setups (rescue bot, staging, etc.). Example: hyperclaw --profile rescue gateway --port 19001").hook("preAction", (thisCommand) => {
2430
+ program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("5.0.2").option("--profile <name>", "Use an isolated gateway profile. Auto-scopes HYPERCLAW_STATE_DIR and HYPERCLAW_CONFIG_PATH. Required for multi-gateway setups (rescue bot, staging, etc.). Example: hyperclaw --profile rescue gateway --port 19001").hook("preAction", (thisCommand) => {
2430
2431
  const profile = thisCommand.opts().profile;
2431
2432
  if (profile) {
2432
2433
  const os$8 = require("os");
@@ -2568,8 +2569,8 @@ sandboxCmd.command("explain").description("Show effective sandbox mode, tool pol
2568
2569
  } catch {}
2569
2570
  const sandboxMode = cfg?.agents?.defaults?.sandbox?.mode ?? "non-main";
2570
2571
  const toolsCfg = cfg?.tools ?? {};
2571
- const { describeToolPolicy, applyToolPolicy } = await Promise.resolve().then(() => require("./tool-policy-DZvF8xlQ.js"));
2572
- const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
2572
+ const { describeToolPolicy, applyToolPolicy } = await Promise.resolve().then(() => require("./tool-policy-DgNqFWYn.js"));
2573
+ const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
2573
2574
  const allTools = [
2574
2575
  ...getBuiltinTools(),
2575
2576
  ...getSessionsTools(() => null),
@@ -2912,7 +2913,7 @@ cfgCmd.command("set-service-key <serviceId> [apiKey]").description("Set API key
2912
2913
  cfgCmd.command("schema").description("Show configuration schema").action(() => {
2913
2914
  console.log(chalk.default.bold.hex("#06b6d4")("\n Config schema: ~/.hyperclaw/config.json\n"));
2914
2915
  const schema = {
2915
- version: "string (e.g. \"5.0.1\")",
2916
+ version: "string (e.g. \"5.0.2\")",
2916
2917
  workspaceName: "string",
2917
2918
  provider: {
2918
2919
  providerId: "string",
@@ -3052,7 +3053,7 @@ program.command("status").description("System overview").option("--all", "Full l
3052
3053
  if (opts.all || opts.deep) {
3053
3054
  const fs$7 = await import("fs-extra");
3054
3055
  const { getConfigPath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3055
- const t = (await Promise.resolve().then(() => require("./theme-cx0fkgWC.js"))).getTheme(false);
3056
+ const t = (await Promise.resolve().then(() => require("./theme-D0smfC_l.js"))).getTheme(false);
3056
3057
  const configPath = getConfigPath();
3057
3058
  console.log(t.bold("\n ─── Deep status ───\n"));
3058
3059
  try {
@@ -3064,7 +3065,7 @@ program.command("status").description("System overview").option("--all", "Full l
3064
3065
  }
3065
3066
  if (opts.deep) {
3066
3067
  const http$2 = await import("http");
3067
- const { resolveGatewayUrl } = await Promise.resolve().then(() => require("./health-B-asI__D.js"));
3068
+ const { resolveGatewayUrl } = await Promise.resolve().then(() => require("./health-DUjluWHQ.js"));
3068
3069
  const cfg = await new require_manager.ConfigManager().load();
3069
3070
  const { gatewayUrl } = resolveGatewayUrl(cfg);
3070
3071
  const u = new URL(gatewayUrl);
@@ -3142,7 +3143,7 @@ program.command("health").description("Quick gateway health probe (Runtime, RPC
3142
3143
  });
3143
3144
  const themeCmd = program.command("theme").description("Switch CLI color theme");
3144
3145
  themeCmd.command("list").description("List available themes").action(async () => {
3145
- const { allThemes, getThemeName } = await Promise.resolve().then(() => require("./theme-cx0fkgWC.js"));
3146
+ const { allThemes, getThemeName } = await Promise.resolve().then(() => require("./theme-D0smfC_l.js"));
3146
3147
  const current = getThemeName();
3147
3148
  console.log(chalk.default.bold.hex("#06b6d4")("\n 🎨 AVAILABLE THEMES\n"));
3148
3149
  for (const { name, label } of allThemes()) {
@@ -3154,7 +3155,7 @@ themeCmd.command("list").description("List available themes").action(async () =>
3154
3155
  process.exit(0);
3155
3156
  });
3156
3157
  themeCmd.command("set <theme>").description("Set theme: dark | grey | white").action(async (name) => {
3157
- const { setThemeName, allThemes } = await Promise.resolve().then(() => require("./theme-cx0fkgWC.js"));
3158
+ const { setThemeName, allThemes } = await Promise.resolve().then(() => require("./theme-D0smfC_l.js"));
3158
3159
  const valid = allThemes().map((t) => t.name);
3159
3160
  if (!valid.includes(name)) {
3160
3161
  console.log(chalk.default.red(`\n ✖ Unknown theme: "${name}". Use: ${valid.join(" | ")}\n`));
@@ -3166,7 +3167,7 @@ themeCmd.command("set <theme>").description("Set theme: dark | grey | white").ac
3166
3167
  process.exit(0);
3167
3168
  });
3168
3169
  themeCmd.command("preview").description("Preview all themes side-by-side").action(async () => {
3169
- const { allThemes, getTheme, setThemeName, getThemeName } = await Promise.resolve().then(() => require("./theme-cx0fkgWC.js"));
3170
+ const { allThemes, getTheme, setThemeName, getThemeName } = await Promise.resolve().then(() => require("./theme-D0smfC_l.js"));
3170
3171
  const current = getThemeName();
3171
3172
  console.log(chalk.default.bold("\n 🎨 THEME PREVIEW\n"));
3172
3173
  for (const { name, label } of allThemes()) {
@@ -3183,39 +3184,39 @@ themeCmd.command("preview").description("Preview all themes side-by-side").actio
3183
3184
  });
3184
3185
  const secretsCmd = program.command("secrets").description("External secrets management");
3185
3186
  secretsCmd.command("audit").description("Audit all required secrets").option("--required-by <ids>", "Filter by skill/provider IDs (comma-separated)").action(async (opts) => {
3186
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-B2Gls5RG.js"));
3187
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-CVLLaKmq.js"));
3187
3188
  const filter = opts.requiredBy?.split(",");
3188
3189
  await new SecretsManager().audit(filter);
3189
3190
  process.exit(0);
3190
3191
  });
3191
3192
  secretsCmd.command("set <KEY=value>").description("Set a secret in .env file").action(async (kv) => {
3192
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-B2Gls5RG.js"));
3193
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-CVLLaKmq.js"));
3193
3194
  await new SecretsManager().set(kv);
3194
3195
  process.exit(0);
3195
3196
  });
3196
3197
  secretsCmd.command("apply").description("Write secrets from .env to shell config (~/.bashrc, ~/.zshrc)").action(async () => {
3197
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-B2Gls5RG.js"));
3198
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-CVLLaKmq.js"));
3198
3199
  await new SecretsManager().apply();
3199
3200
  process.exit(0);
3200
3201
  });
3201
3202
  secretsCmd.command("reload").description("Reload secrets into running gateway").action(async () => {
3202
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-B2Gls5RG.js"));
3203
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-CVLLaKmq.js"));
3203
3204
  await new SecretsManager().reload();
3204
3205
  process.exit(0);
3205
3206
  });
3206
3207
  secretsCmd.command("remove <key>").description("Remove a secret from .env").action(async (key) => {
3207
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-B2Gls5RG.js"));
3208
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-CVLLaKmq.js"));
3208
3209
  await new SecretsManager().remove(key);
3209
3210
  process.exit(0);
3210
3211
  });
3211
3212
  secretsCmd.command("credentials").description("List provider credential files (credentials/*.json)").action(async () => {
3212
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-Cm7DH-kh.js"));
3213
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-CPkVO6-z.js"));
3213
3214
  await new CredentialsStore().showList();
3214
3215
  process.exit(0);
3215
3216
  });
3216
3217
  const securityCmd = program.command("security").description("Security tools");
3217
3218
  securityCmd.command("audit").description("Security audit — file permissions, DM policies, embedded secrets").option("--deep", "Full deep scan including token entropy and installed skill risks").option("--fix", "Auto-fix safe findings (file permissions etc.)").option("--json", "Machine-readable JSON output").action(async (opts) => {
3218
- const { runSecurityAudit } = await Promise.resolve().then(() => require("./audit-BJohI_vC.js"));
3219
+ const { runSecurityAudit } = await Promise.resolve().then(() => require("./audit-NPIMmOSq.js"));
3219
3220
  await runSecurityAudit({
3220
3221
  deep: opts.deep,
3221
3222
  fix: opts.fix,
@@ -3224,7 +3225,7 @@ securityCmd.command("audit").description("Security audit — file permissions, D
3224
3225
  process.exit(0);
3225
3226
  });
3226
3227
  program.command("osint").description("OSINT / Ethical Hacking mode — configure HyperClaw for security research").argument("[workflow]", "Workflow preset: recon | bugbounty | pentest | footprint | custom").option("--show", "Show current OSINT profile").option("--reset", "Clear OSINT profile and disable OSINT mode").action(async (workflow, opts) => {
3227
- const { osintSetup, osintQuickStart } = await Promise.resolve().then(() => require("./osint-B4_m3VHQ.js"));
3228
+ const { osintSetup, osintQuickStart } = await Promise.resolve().then(() => require("./osint-B6BZKQAD.js"));
3228
3229
  if (opts.show || opts.reset) await osintSetup({
3229
3230
  show: opts.show,
3230
3231
  reset: opts.reset
@@ -3234,13 +3235,22 @@ program.command("osint").description("OSINT / Ethical Hacking mode — configure
3234
3235
  process.exit(0);
3235
3236
  });
3236
3237
  program.command("osint setup").description("Interactive OSINT session setup wizard").action(async () => {
3237
- const { osintSetup } = await Promise.resolve().then(() => require("./osint-B4_m3VHQ.js"));
3238
+ const { osintSetup } = await Promise.resolve().then(() => require("./osint-B6BZKQAD.js"));
3238
3239
  await osintSetup({});
3239
3240
  process.exit(0);
3240
3241
  });
3242
+ program.command("chat").description("Interactive terminal chat with the agent").option("--session <id>", "Resume a named session").option("--model <model>", "Override model").option("--thinking <level>", "Thinking level: high|medium|low|none", "none").option("--workspace <dir>", "Override workspace directory").action(async (opts) => {
3243
+ const { runChat } = await Promise.resolve().then(() => require("./chat-qVuqhlPu.js"));
3244
+ await runChat({
3245
+ sessionId: opts.session,
3246
+ model: opts.model,
3247
+ thinking: opts.thinking,
3248
+ workspace: opts.workspace
3249
+ });
3250
+ });
3241
3251
  const agentRunCmd = program.command("agent").description("Run agent with thinking control");
3242
3252
  agentRunCmd.requiredOption("-m, --message <text>", "Message to send to the agent").option("--thinking <level>", "Thinking level: high|medium|low|none", "none").option("--model <model>", "Override model").option("--session <id>", "Session/thread ID").option("--multi-step", "Decompose into steps and run each (sequential)").option("--parallel", "Run sub-agents in parallel for independent subtasks").option("--verbose", "Show thinking blocks and request details").option("--workspace <dir>", "Override workspace directory").action(async (opts) => {
3243
- const { runAgent } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3253
+ const { runAgent } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3244
3254
  await runAgent({
3245
3255
  message: opts.message,
3246
3256
  thinking: opts.thinking,
@@ -3256,7 +3266,7 @@ agentRunCmd.requiredOption("-m, --message <text>", "Message to send to the agent
3256
3266
  });
3257
3267
  const threadsCmd = program.command("threads").description("ACP thread-bound agent sessions");
3258
3268
  threadsCmd.command("list").description("List agent threads").option("--channel <id>", "Filter by channel").option("--active", "Show only active threads").action(async (opts) => {
3259
- const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3269
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3260
3270
  const mgr = new ACPThreadManager();
3261
3271
  const threads = await mgr.list({
3262
3272
  channelId: opts.channel,
@@ -3266,29 +3276,29 @@ threadsCmd.command("list").description("List agent threads").option("--channel <
3266
3276
  process.exit(0);
3267
3277
  });
3268
3278
  threadsCmd.command("terminate <id>").description("Terminate a thread").action(async (id) => {
3269
- const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3279
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3270
3280
  await new ACPThreadManager().terminate(id);
3271
3281
  console.log(require("chalk").green(`\n ✔ Thread terminated: ${id}\n`));
3272
3282
  process.exit(0);
3273
3283
  });
3274
3284
  const canvasCmd = program.command("canvas").description("Live AI-driven UI canvas");
3275
3285
  canvasCmd.command("show").description("Show current canvas components").action(async () => {
3276
- const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-BVQrd0_g.js"));
3286
+ const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-ANNfXsHn.js"));
3277
3287
  await new CanvasRenderer().show();
3278
3288
  process.exit(0);
3279
3289
  });
3280
3290
  canvasCmd.command("add <type> <title>").description("Add a canvas component (type: chart|table|form|markdown|image|custom)").action(async (type, title) => {
3281
- const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-BVQrd0_g.js"));
3291
+ const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-ANNfXsHn.js"));
3282
3292
  await new CanvasRenderer().addComponent(type, title);
3283
3293
  process.exit(0);
3284
3294
  });
3285
3295
  canvasCmd.command("clear").description("Clear all canvas components").action(async () => {
3286
- const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-BVQrd0_g.js"));
3296
+ const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-ANNfXsHn.js"));
3287
3297
  await new CanvasRenderer().clear();
3288
3298
  process.exit(0);
3289
3299
  });
3290
3300
  canvasCmd.command("export").description("Export canvas as HTML file").action(async () => {
3291
- const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-BVQrd0_g.js"));
3301
+ const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-ANNfXsHn.js"));
3292
3302
  const fs$7 = require("fs-extra");
3293
3303
  const html = await new CanvasRenderer().exportHtml();
3294
3304
  const outFile = require("path").join(require("os").homedir(), ".hyperclaw", "canvas", "export.html");
@@ -3309,62 +3319,62 @@ deliveryCmd.command("retry <id>").description("Retry a dead-lettered delivery it
3309
3319
  });
3310
3320
  const mcpCmd = program.command("mcp").description("MCP (Model Context Protocol) server management");
3311
3321
  mcpCmd.command("list").action(async () => {
3312
- const { mcpList } = await Promise.resolve().then(() => require("./mcp-CfoSU4Uz.js"));
3322
+ const { mcpList } = await Promise.resolve().then(() => require("./mcp-CUoTCMw-.js"));
3313
3323
  await mcpList();
3314
3324
  process.exit(0);
3315
3325
  });
3316
3326
  mcpCmd.command("add").action(async () => {
3317
- const { mcpAdd } = await Promise.resolve().then(() => require("./mcp-CfoSU4Uz.js"));
3327
+ const { mcpAdd } = await Promise.resolve().then(() => require("./mcp-CUoTCMw-.js"));
3318
3328
  await mcpAdd();
3319
3329
  process.exit(0);
3320
3330
  });
3321
3331
  mcpCmd.command("remove <id>").action(async (id) => {
3322
- const { mcpRemove } = await Promise.resolve().then(() => require("./mcp-CfoSU4Uz.js"));
3332
+ const { mcpRemove } = await Promise.resolve().then(() => require("./mcp-CUoTCMw-.js"));
3323
3333
  await mcpRemove(id);
3324
3334
  process.exit(0);
3325
3335
  });
3326
3336
  mcpCmd.command("probe [id]").action(async (id) => {
3327
- const { mcpProbe } = await Promise.resolve().then(() => require("./mcp-CfoSU4Uz.js"));
3337
+ const { mcpProbe } = await Promise.resolve().then(() => require("./mcp-CUoTCMw-.js"));
3328
3338
  await mcpProbe(id);
3329
3339
  process.exit(0);
3330
3340
  });
3331
3341
  const nodeCmd = program.command("node").description("HyperClaw node management (local, remote, android)");
3332
3342
  nodeCmd.command("list").action(async () => {
3333
- const { nodeList } = await Promise.resolve().then(() => require("./node-Dw2Gi-cP.js"));
3343
+ const { nodeList } = await Promise.resolve().then(() => require("./node-TWxRm84k.js"));
3334
3344
  await nodeList();
3335
3345
  process.exit(0);
3336
3346
  });
3337
3347
  nodeCmd.command("add").action(async () => {
3338
- const { nodeAdd } = await Promise.resolve().then(() => require("./node-Dw2Gi-cP.js"));
3348
+ const { nodeAdd } = await Promise.resolve().then(() => require("./node-TWxRm84k.js"));
3339
3349
  await nodeAdd();
3340
3350
  process.exit(0);
3341
3351
  });
3342
3352
  nodeCmd.command("probe [id]").action(async (id) => {
3343
- const { nodeProbe } = await Promise.resolve().then(() => require("./node-Dw2Gi-cP.js"));
3353
+ const { nodeProbe } = await Promise.resolve().then(() => require("./node-TWxRm84k.js"));
3344
3354
  await nodeProbe(id);
3345
3355
  process.exit(0);
3346
3356
  });
3347
3357
  nodeCmd.command("remove <id>").action(async (id) => {
3348
- const { nodeRemove } = await Promise.resolve().then(() => require("./node-Dw2Gi-cP.js"));
3358
+ const { nodeRemove } = await Promise.resolve().then(() => require("./node-TWxRm84k.js"));
3349
3359
  await nodeRemove(id);
3350
3360
  process.exit(0);
3351
3361
  });
3352
3362
  const arCmd = program.command("auto-reply").description("Auto-reply rule engine");
3353
3363
  arCmd.command("list").action(async () => {
3354
- const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-BE4GV6cV.js"));
3364
+ const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-BSQwwAYC.js"));
3355
3365
  const e = new AutoReplyEngine();
3356
3366
  await e.load();
3357
3367
  e.showList();
3358
3368
  process.exit(0);
3359
3369
  });
3360
3370
  arCmd.command("toggle <id>").action(async (id) => {
3361
- const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-BE4GV6cV.js"));
3371
+ const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-BSQwwAYC.js"));
3362
3372
  const e = new AutoReplyEngine();
3363
3373
  await e.toggle(id);
3364
3374
  process.exit(0);
3365
3375
  });
3366
3376
  arCmd.command("remove <id>").action(async (id) => {
3367
- const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-BE4GV6cV.js"));
3377
+ const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-BSQwwAYC.js"));
3368
3378
  const e = new AutoReplyEngine();
3369
3379
  await e.remove(id);
3370
3380
  process.exit(0);
@@ -3373,7 +3383,7 @@ const gmailCmd = program.command("gmail").description("Gmail Pub/Sub real-time n
3373
3383
  gmailCmd.command("watch-setup").description("Register Gmail watch for push notifications. Requires: hyperclaw auth oauth google-gmail").requiredOption("-t, --topic <name>", "Pub/Sub topic (e.g. projects/myproject/topics/gmail-push)").option("-l, --labels <ids>", "Label IDs to watch (comma-separated)", "INBOX").action(async (opts) => {
3374
3384
  const chalk$11 = require("chalk");
3375
3385
  try {
3376
- const { setupGmailWatch } = await Promise.resolve().then(() => require("./gmail-watch-setup-Du7DVV7S.js"));
3386
+ const { setupGmailWatch } = await Promise.resolve().then(() => require("./gmail-watch-setup-C3uSWznp.js"));
3377
3387
  const labelIds = opts.labels.split(",").map((s) => s.trim()).filter(Boolean);
3378
3388
  const result = await setupGmailWatch({
3379
3389
  topicName: opts.topic,
@@ -3393,7 +3403,7 @@ gmailCmd.command("watch-setup").description("Register Gmail watch for push notif
3393
3403
  const cronCmd = program.command("cron").description("Scheduled tasks (cron → agent prompt)");
3394
3404
  cronCmd.command("list").action(async () => {
3395
3405
  const chalk$11 = require("chalk");
3396
- const { loadCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-_pqQCmxc.js"));
3406
+ const { loadCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-L0mz1yyU.js"));
3397
3407
  const tasks = await loadCronTasks();
3398
3408
  console.log(chalk$11.bold.cyan("\n ⏰ CRON TASKS\n"));
3399
3409
  if (tasks.length === 0) {
@@ -3413,7 +3423,7 @@ cronCmd.command("list").action(async () => {
3413
3423
  });
3414
3424
  cronCmd.command("add").arguments("<schedule> <prompt>").option("-n, --name <name>", "Task name").action(async (schedule, prompt, opts) => {
3415
3425
  const chalk$11 = require("chalk");
3416
- const { loadCronTasks, addCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-_pqQCmxc.js"));
3426
+ const { loadCronTasks, addCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-L0mz1yyU.js"));
3417
3427
  await loadCronTasks();
3418
3428
  addCronTask(schedule, prompt, opts.name);
3419
3429
  await saveCronTasks();
@@ -3423,7 +3433,7 @@ cronCmd.command("add").arguments("<schedule> <prompt>").option("-n, --name <name
3423
3433
  });
3424
3434
  cronCmd.command("remove <id>").action(async (id) => {
3425
3435
  const chalk$11 = require("chalk");
3426
- const { loadCronTasks, removeCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-_pqQCmxc.js"));
3436
+ const { loadCronTasks, removeCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-L0mz1yyU.js"));
3427
3437
  await loadCronTasks();
3428
3438
  if (removeCronTask(id)) {
3429
3439
  await saveCronTasks();
@@ -3480,20 +3490,20 @@ program.command("nodes").description("List connected mobile nodes (iOS/Android C
3480
3490
  });
3481
3491
  const whCmd = program.command("webhooks").description("Webhook endpoint management");
3482
3492
  whCmd.command("list").action(async () => {
3483
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager-CWNSML5D.js"));
3493
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BUrFrPuq.js"));
3484
3494
  const m = new WebhookManager();
3485
3495
  await m.load();
3486
3496
  m.showList();
3487
3497
  process.exit(0);
3488
3498
  });
3489
3499
  whCmd.command("remove <id>").action(async (id) => {
3490
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager-CWNSML5D.js"));
3500
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BUrFrPuq.js"));
3491
3501
  const m = new WebhookManager();
3492
3502
  await m.remove(id);
3493
3503
  process.exit(0);
3494
3504
  });
3495
3505
  whCmd.command("toggle <id>").action(async (id) => {
3496
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager-CWNSML5D.js"));
3506
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BUrFrPuq.js"));
3497
3507
  const m = new WebhookManager();
3498
3508
  await m.toggle(id);
3499
3509
  process.exit(0);
@@ -3502,7 +3512,7 @@ const logsCmd = program.command("logs").description("View gateway logs");
3502
3512
  logsCmd.option("-n, --lines <n>", "Number of lines to show", "50");
3503
3513
  logsCmd.option("-f, --follow", "Stream logs in real time");
3504
3514
  logsCmd.action(async (opts) => {
3505
- const { tailLog, streamLog } = await Promise.resolve().then(() => require("./logger-Cp8wC7F8.js"));
3515
+ const { tailLog, streamLog } = await Promise.resolve().then(() => require("./logger-DCT2l9GV.js"));
3506
3516
  if (opts.follow) await streamLog();
3507
3517
  else {
3508
3518
  await tailLog(parseInt(opts.lines));
@@ -3510,7 +3520,7 @@ logsCmd.action(async (opts) => {
3510
3520
  }
3511
3521
  });
3512
3522
  program.command("gateway:serve").description("Start the gateway server in the foreground (used by daemon)").action(async () => {
3513
- const { startGateway } = await Promise.resolve().then(() => require("./server-DhfipkwN.js"));
3523
+ const { startGateway } = await Promise.resolve().then(() => require("./server-DP_bPzvI.js"));
3514
3524
  await startGateway();
3515
3525
  process.on("SIGINT", () => process.exit(0));
3516
3526
  process.on("SIGTERM", () => process.exit(0));
@@ -3563,9 +3573,9 @@ const authCmd = program.command("auth").description("OAuth and provider credenti
3563
3573
  authCmd.command("add <service_id>").description("Add API key for a service (any provider we do not ship). Stored in credentials/ and .env.").option("--key <api_key>", "API key (prompts if omitted)").option("--base-url <url>", "Base URL (optional, e.g. https://api.example.com)").option("--env-var <name>", "Env var name (default: <SERVICE_ID>_API_KEY)").action(async (serviceId, opts) => {
3564
3574
  const chalk$11 = require("chalk");
3565
3575
  const inquirer$2 = require("inquirer");
3566
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-Cm7DH-kh.js"));
3576
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-CPkVO6-z.js"));
3567
3577
  const { getHyperClawDir, getEnvFilePath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3568
- const { getApiKeyGuide, GENERIC_API_KEY_STEPS } = await Promise.resolve().then(() => require("./api-keys-guide-CGn5BSF7.js"));
3578
+ const { getApiKeyGuide, GENERIC_API_KEY_STEPS } = await Promise.resolve().then(() => require("./api-keys-guide-ChbThbPj.js"));
3569
3579
  const fs$7 = await import("fs-extra");
3570
3580
  const path$7 = await import("path");
3571
3581
  const guide = getApiKeyGuide(serviceId);
@@ -3617,7 +3627,7 @@ authCmd.command("add <service_id>").description("Add API key for a service (any
3617
3627
  });
3618
3628
  authCmd.command("remove <service_id>").description("Remove API key for a service from credentials and .env").action(async (serviceId) => {
3619
3629
  const chalk$11 = require("chalk");
3620
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-Cm7DH-kh.js"));
3630
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-CPkVO6-z.js"));
3621
3631
  const { getHyperClawDir, getEnvFilePath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3622
3632
  const fs$7 = await import("fs-extra");
3623
3633
  const safeId = serviceId.replace(/[^a-zA-Z0-9_-]/g, "_").toLowerCase();
@@ -3637,7 +3647,7 @@ authCmd.command("oauth <provider>").description("Run full OAuth flow. Providers:
3637
3647
  const chalk$11 = require("chalk");
3638
3648
  const ora$4 = (await import("ora")).default;
3639
3649
  try {
3640
- const { runOAuthFlow } = await Promise.resolve().then(() => require("./oauth-flow-CeaaGAz0.js"));
3650
+ const { runOAuthFlow } = await Promise.resolve().then(() => require("./oauth-flow-JCfporKq.js"));
3641
3651
  const spinner = ora$4("Starting OAuth flow...").start();
3642
3652
  spinner.text = "Opening browser — complete the consent and return here.";
3643
3653
  const tokens = await runOAuthFlow(provider, {
@@ -3645,7 +3655,7 @@ authCmd.command("oauth <provider>").description("Run full OAuth flow. Providers:
3645
3655
  clientSecret: opts.clientSecret
3646
3656
  });
3647
3657
  spinner.stop();
3648
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-B4dzn56l.js"));
3658
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-4R0EJlsT.js"));
3649
3659
  const now = Math.floor(Date.now() / 1e3);
3650
3660
  const expires_at = tokens.expires_in ? now + tokens.expires_in : void 0;
3651
3661
  const tokenUrl = provider === "google" || provider === "google-gmail" ? "https://oauth2.googleapis.com/token" : provider === "microsoft" ? "https://login.microsoftonline.com/common/oauth2/v2.0/token" : void 0;
@@ -3680,7 +3690,7 @@ authCmd.command("setup-token <provider>").description("Save setup token (Anthrop
3680
3690
  console.log(chalk$11.red("\n ✖ No token provided.\n"));
3681
3691
  process.exit(1);
3682
3692
  }
3683
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-B4dzn56l.js"));
3693
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-4R0EJlsT.js"));
3684
3694
  await writeOAuthToken("anthropic-setup", {
3685
3695
  access_token: token.trim(),
3686
3696
  token_url: "https://api.anthropic.com"
@@ -3691,7 +3701,7 @@ authCmd.command("setup-token <provider>").description("Save setup token (Anthrop
3691
3701
  });
3692
3702
  authCmd.command("oauth-set <provider>").description("Save OAuth tokens manually (access_token, refresh_token, etc.) to ~/.hyperclaw/oauth-<provider>.json").option("--token <access_token>", "Access token").option("--refresh <refresh_token>", "Refresh token (optional)").option("--expires-in <seconds>", "Token lifetime in seconds (optional)").option("--token-url <url>", "Refresh endpoint URL (optional)").action(async (provider, opts) => {
3693
3703
  const chalk$11 = require("chalk");
3694
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-B4dzn56l.js"));
3704
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-4R0EJlsT.js"));
3695
3705
  const access_token = opts.token || process.env.OAUTH_ACCESS_TOKEN;
3696
3706
  if (!access_token) {
3697
3707
  console.log(chalk$11.red("\n ✖ Provide --token <access_token> or set OAUTH_ACCESS_TOKEN\n"));
@@ -3719,7 +3729,7 @@ workspaceCmd.command("init [dir]").description("Initialize workspace files (SOUL
3719
3729
  try {
3720
3730
  cfg = await fs$7.readJson(path$7.join(os$8.homedir(), ".hyperclaw", "hyperclaw.json"));
3721
3731
  } catch {}
3722
- const { initWorkspaceFiles } = await Promise.resolve().then(() => require("./memory-BlHL7JCO.js"));
3732
+ const { initWorkspaceFiles } = await Promise.resolve().then(() => require("./memory-gUi4VaIf.js"));
3723
3733
  await initWorkspaceFiles({
3724
3734
  agentName: cfg.identity?.agentName || "Hyper",
3725
3735
  personality: cfg.identity?.personality || "helpful and concise",
@@ -3758,13 +3768,13 @@ workspaceCmd.command("show [dir]").description("Show workspace files summary").a
3758
3768
  });
3759
3769
  const botCmd = program.command("bot").description("HyperClaw Bot — companion bot for remote gateway control");
3760
3770
  botCmd.command("status").action(async () => {
3761
- const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-CBiDSKsa.js"));
3771
+ const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-BrcoYLOp.js"));
3762
3772
  await showBotStatus();
3763
3773
  process.exit(0);
3764
3774
  });
3765
3775
  botCmd.command("setup").description("Configure HyperClaw Bot (Telegram token, allowed users)").action(async () => {
3766
3776
  const inquirer$2 = require("inquirer");
3767
- const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-CBiDSKsa.js"));
3777
+ const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-BrcoYLOp.js"));
3768
3778
  const chalk$11 = require("chalk");
3769
3779
  console.log(chalk$11.bold.hex("#06b6d4")("\n 🦅 HYPERCLAW BOT SETUP\n"));
3770
3780
  console.log(chalk$11.gray(" Create a bot at t.me/BotFather, then paste the token below.\n"));
@@ -3826,14 +3836,14 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
3826
3836
  cwd: process.cwd()
3827
3837
  });
3828
3838
  child.unref();
3829
- const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-CBiDSKsa.js"));
3839
+ const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-BrcoYLOp.js"));
3830
3840
  await writeBotPid(child.pid);
3831
3841
  console.log(require("chalk").green(`\n ✔ HyperClaw Bot started in background (PID ${child.pid})`));
3832
3842
  console.log(require("chalk").gray(" Stop with: hyperclaw bot stop\n"));
3833
3843
  process.exit(0);
3834
3844
  return;
3835
3845
  }
3836
- const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-CBiDSKsa.js"));
3846
+ const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-BrcoYLOp.js"));
3837
3847
  const cfg = await loadBotConfig();
3838
3848
  if (!cfg) {
3839
3849
  console.log(require("chalk").red("\n ✖ HyperClaw Bot not configured. Run: hyperclaw bot setup\n"));
@@ -3860,41 +3870,41 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
3860
3870
  });
3861
3871
  botCmd.command("stop").description("Stop HyperClaw Bot (when running in background)").action(async () => {
3862
3872
  const chalk$11 = require("chalk");
3863
- const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-CBiDSKsa.js"));
3873
+ const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-BrcoYLOp.js"));
3864
3874
  const stopped = await stopBotProcess();
3865
3875
  if (stopped) console.log(chalk$11.green("\n ✔ HyperClaw Bot stopped\n"));
3866
3876
  else console.log(chalk$11.gray("\n Bot not running in background (no PID file). Use Ctrl+C to stop foreground bot.\n"));
3867
3877
  process.exit(stopped ? 0 : 0);
3868
3878
  });
3869
3879
  memCmd.command("search <query>").description("Search MEMORY.md").action(async (query) => {
3870
- const { searchMemory } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3880
+ const { searchMemory } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3871
3881
  await searchMemory(query);
3872
3882
  process.exit(0);
3873
3883
  });
3874
3884
  memCmd.command("auto-show").description("Show auto-extracted memories from MEMORY.md").action(async () => {
3875
- const { showMemory } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3885
+ const { showMemory } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3876
3886
  await showMemory();
3877
3887
  process.exit(0);
3878
3888
  });
3879
3889
  memCmd.command("clear").description("Clear all auto-extracted memories").action(async () => {
3880
- const { clearMemory } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3890
+ const { clearMemory } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3881
3891
  await clearMemory();
3882
3892
  process.exit(0);
3883
3893
  });
3884
3894
  memCmd.command("save <text>").description("Manually save a fact to MEMORY.md").action(async (text) => {
3885
- const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3895
+ const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3886
3896
  await saveMemoryDirect(text);
3887
3897
  console.log(chalk.default.hex("#06b6d4")(` ✅ Saved: ${text}\n`));
3888
3898
  process.exit(0);
3889
3899
  });
3890
3900
  const pcCmd = program.command("pc").description("PC access — give the AI access to your computer");
3891
3901
  pcCmd.command("status").description("Show PC access status and config").action(async () => {
3892
- const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3902
+ const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3893
3903
  await showPCAccessStatus();
3894
3904
  process.exit(0);
3895
3905
  });
3896
3906
  pcCmd.command("enable").description("Enable PC access for the AI").option("--level <level>", "Access level: read-only | sandboxed | full", "full").option("--paths <paths>", "Comma-separated allowed paths (sandboxed mode)").action(async (opts) => {
3897
- const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3907
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3898
3908
  const level = opts.level;
3899
3909
  const allowed = [
3900
3910
  "read-only",
@@ -3921,7 +3931,7 @@ pcCmd.command("enable").description("Enable PC access for the AI").option("--lev
3921
3931
  process.exit(0);
3922
3932
  });
3923
3933
  pcCmd.command("disable").description("Disable PC access").action(async () => {
3924
- const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3934
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3925
3935
  await savePCAccessConfig({ enabled: false });
3926
3936
  console.log(chalk.default.hex("#06b6d4")("\n ✅ PC access disabled\n"));
3927
3937
  process.exit(0);
@@ -3945,7 +3955,7 @@ pcCmd.command("log").description("Show PC access audit log").option("-n, --lines
3945
3955
  process.exit(0);
3946
3956
  });
3947
3957
  pcCmd.command("run <command>").description("Run a shell command via PC access (must be enabled)").action(async (command) => {
3948
- const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3958
+ const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3949
3959
  const cfg = await loadPCAccessConfig();
3950
3960
  if (!cfg.enabled) {
3951
3961
  console.log(chalk.default.red("\n ✖ PC access disabled. Run: hyperclaw pc enable\n"));
@@ -3958,33 +3968,6 @@ pcCmd.command("run <command>").description("Run a shell command via PC access (m
3958
3968
  console.log(result);
3959
3969
  process.exit(0);
3960
3970
  });
3961
- function checkForUpdate() {
3962
- const { execFile: execFile$1 } = require("child_process");
3963
- const { readFileSync } = require("fs");
3964
- const path$7 = require("path");
3965
- try {
3966
- const pkgPath = path$7.resolve(__dirname, "../../package.json");
3967
- const current = JSON.parse(readFileSync(pkgPath, "utf8")).version;
3968
- execFile$1("npm", [
3969
- "view",
3970
- "hyperclaw",
3971
- "version",
3972
- "--json"
3973
- ], { timeout: 5e3 }, (_err, stdout) => {
3974
- if (_err || !stdout) return;
3975
- try {
3976
- const latest = JSON.parse(stdout.trim());
3977
- if (latest && latest !== current) {
3978
- const semver = (v) => v.split(".").map(Number);
3979
- const [lMaj, lMin, lPat] = semver(latest);
3980
- const [cMaj, cMin, cPat] = semver(current);
3981
- const isNewer = lMaj > cMaj || lMaj === cMaj && lMin > cMin || lMaj === cMaj && lMin === cMin && lPat > cPat;
3982
- if (isNewer) process.stdout.write(chalk.default.yellow(`\n ⬆ Update available: ${chalk.default.dim(current)} → ${chalk.default.green(latest)}\n`) + chalk.default.gray(` npm install -g hyperclaw@latest\n\n`));
3983
- }
3984
- } catch {}
3985
- });
3986
- } catch {}
3987
- }
3988
3971
  program.command("setup").description("Setup wizard — alias for `hyperclaw onboard`").option("--install-daemon", "Auto-install system daemon").option("--reset", "Reset config before running wizard").option("--non-interactive", "Non-interactive mode").option("--json", "Output result as JSON (use with --non-interactive)").option("--anthropic-api-key <key>", "Anthropic API key (non-interactive)").option("--openai-api-key <key>", "OpenAI API key (non-interactive)").option("--gateway-port <port>", "Gateway port (non-interactive)", "18789").option("--gateway-bind <bind>", "Gateway bind: loopback | all", "loopback").action(async (opts) => {
3989
3972
  await new require_onboard.Banner().showNeonBanner(false);
3990
3973
  const wizardOpts = {
@@ -4001,13 +3984,23 @@ program.command("setup").description("Setup wizard — alias for `hyperclaw onbo
4001
3984
  await new require_onboard.HyperClawWizard().run(wizardOpts);
4002
3985
  process.exit(0);
4003
3986
  });
4004
- checkForUpdate();
3987
+ async function runUpdateCheck() {
3988
+ try {
3989
+ const { checkForUpdates, notifyUpdateAvailable } = await Promise.resolve().then(() => require("./update-check-BVEqHhFY.js"));
3990
+ const path$7 = require("path");
3991
+ const { readFileSync } = require("fs");
3992
+ const pkgPath = path$7.resolve(__dirname, "../../package.json");
3993
+ const current = JSON.parse(readFileSync(pkgPath, "utf8")).version;
3994
+ const result = await checkForUpdates(current);
3995
+ if (result?.available) notifyUpdateAvailable(current, result.latest);
3996
+ } catch {}
3997
+ }
4005
3998
  if (process.argv.length === 2) (async () => {
4006
- const { ConfigManager: ConfigManager$1 } = await Promise.resolve().then(() => require("./manager-CrVDn6eN.js"));
3999
+ const { ConfigManager: ConfigManager$1 } = await Promise.resolve().then(() => require("./manager-CBUHJiY7.js"));
4007
4000
  const cfg = await new ConfigManager$1().load().catch(() => null);
4008
4001
  if (cfg?.provider?.apiKey || cfg?.provider?.providerId) {
4009
4002
  await new require_onboard.Banner().showNeonBanner(false);
4010
- const { getTheme } = await Promise.resolve().then(() => require("./theme-cx0fkgWC.js"));
4003
+ const { getTheme } = await Promise.resolve().then(() => require("./theme-D0smfC_l.js"));
4011
4004
  const t = getTheme(false);
4012
4005
  const chalk$11 = require("chalk");
4013
4006
  console.log(t.bold(" Quick actions:\n"));
@@ -4021,13 +4014,15 @@ if (process.argv.length === 2) (async () => {
4021
4014
  console.log(` ${t.c("hyperclaw --help")} — all commands\n`);
4022
4015
  } else {
4023
4016
  await new require_onboard.Banner().showNeonBanner(false);
4024
- const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-BBBWcfhp.js"));
4017
+ const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-CGNIw27w.js"));
4025
4018
  await new HyperClawWizard$1().run({ wizard: true });
4026
4019
  }
4020
+ await runUpdateCheck();
4027
4021
  process.exit(0);
4028
4022
  })();
4029
- else program.parseAsync(process.argv).then(() => {
4030
- setTimeout(() => process.exit(0), 500);
4023
+ else program.parseAsync(process.argv).then(async () => {
4024
+ await runUpdateCheck();
4025
+ process.exit(0);
4031
4026
  }).catch((e) => {
4032
4027
  console.error(e.message);
4033
4028
  process.exit(1);