hyperclaw 5.2.7 → 5.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/agents-routing-Cee7wrfi.js +398 -0
  2. package/dist/agents-routing-uNzqjgOr.js +6 -0
  3. package/dist/api-key-validation-DydlUth1.js +64 -0
  4. package/dist/api-keys-guide-DqRGa4x7.js +149 -0
  5. package/dist/audit-CX5poVMR.js +445 -0
  6. package/dist/bounty-tools-BoU1NN5N.js +211 -0
  7. package/dist/chat-C07wF0mM.js +494 -0
  8. package/dist/claw-tasks-BLqd1a0Q.js +80 -0
  9. package/dist/config-BlLlJ6Er.js +7 -0
  10. package/dist/config-SgDxKyfV.js +261 -0
  11. package/dist/cost-tracker-CgEXyEtz.js +103 -0
  12. package/dist/credentials-store-1LDtNReY.js +89 -0
  13. package/dist/credentials-store-BFxEJR00.js +7 -0
  14. package/dist/cron-tasks-1E6wKpTv.js +85 -0
  15. package/dist/daemon-B13UIqvL.js +7 -0
  16. package/dist/daemon-CzOW-1PS.js +421 -0
  17. package/dist/delivery-B8YGmrq5.js +4 -0
  18. package/dist/delivery-DWsU6gx-.js +95 -0
  19. package/dist/destructive-gate-bnkroJWG.js +101 -0
  20. package/dist/engine-ByQ-0sWM.js +7 -0
  21. package/dist/engine-gnMjO743.js +327 -0
  22. package/dist/env-resolve-BdagnXhK.js +151 -0
  23. package/dist/env-resolve-NEtsGacw.js +10 -0
  24. package/dist/gmail-watch-setup-Brkj94Sy.js +42 -0
  25. package/dist/heartbeat-engine-D6oSpgxx.js +89 -0
  26. package/dist/hyperclawbot-DzP_v3iA.js +516 -0
  27. package/dist/inference-BHJFPEKL.js +8 -0
  28. package/dist/inference-vweXyh27.js +2854 -0
  29. package/dist/knowledge-graph-yeMPBPP8.js +134 -0
  30. package/dist/loader-BXYJl25e.js +6 -0
  31. package/dist/loader-gTdKBwiI.js +410 -0
  32. package/dist/logger-C3ZCDSkc.js +86 -0
  33. package/dist/manager-BI3izlRG.js +120 -0
  34. package/dist/manager-CQ3MWNHY.js +250 -0
  35. package/dist/mcp-CklaYr_6.js +142 -0
  36. package/dist/mcp-loader-9v8eUsNI.js +93 -0
  37. package/dist/memory-auto-Bow9u_L7.js +306 -0
  38. package/dist/memory-auto-CgBAI8mm.js +5 -0
  39. package/dist/memory-integration-CveUEI3V.js +91 -0
  40. package/dist/moltbook-xP7VXKlX.js +81 -0
  41. package/dist/node-urDjajMt.js +226 -0
  42. package/dist/nodes-registry-Cd4eWw80.js +52 -0
  43. package/dist/oauth-flow-Bt-LaRHV.js +148 -0
  44. package/dist/oauth-provider-CVTKgj35.js +111 -0
  45. package/dist/observability-lwYm4aoB.js +89 -0
  46. package/dist/onboard-BV5Poocl.js +13 -0
  47. package/dist/onboard-UiynbNQy.js +3909 -0
  48. package/dist/orchestrator-DMZkAVa5.js +189 -0
  49. package/dist/orchestrator-rVGu7yYr.js +6 -0
  50. package/dist/osint-chat-Hn8qpsC1.js +836 -0
  51. package/dist/osint-f9DeXT6j.js +283 -0
  52. package/dist/pending-approval-CHUZ_qT6.js +22 -0
  53. package/dist/run-main.js +68 -65
  54. package/dist/runner-B9xANekJ.js +1274 -0
  55. package/dist/security--17Fxo5Z.js +4 -0
  56. package/dist/security-DP1qtJfL.js +90 -0
  57. package/dist/server-DUDXqJSo.js +1365 -0
  58. package/dist/server-ha59nA8a.js +4 -0
  59. package/dist/skill-runtime-BRp2D8Jb.js +5 -0
  60. package/dist/skill-runtime-C8bNwKwz.js +104 -0
  61. package/dist/src-B8LzGLSY.js +63 -0
  62. package/dist/src-DUoc6_kn.js +458 -0
  63. package/dist/sub-agent-tools-CldaMfd5.js +39 -0
  64. package/dist/tool-policy-DtGf3Ifq.js +189 -0
  65. package/dist/tts-elevenlabs-1zWD3QJw.js +64 -0
  66. package/dist/vision-DV2ubVjr.js +167 -0
  67. package/dist/vision-tools-Cb86uMdh.js +5 -0
  68. package/dist/vision-tools-DlnxaZjg.js +51 -0
  69. package/dist/voice-transcription-BolTT_HG.js +170 -0
  70. package/package.json +4 -1
  71. package/static/chat.html +9 -3
package/dist/run-main.js CHANGED
@@ -1,24 +1,24 @@
1
1
  const require_chunk = require('./chunk-jS-bbMI5.js');
2
2
  const require_paths = require('./paths-AIyBxIzm.js');
3
3
  const require_paths$1 = require('./paths-DPovhojT.js');
4
- require('./env-resolve-DS92g2fk.js');
5
- const require_config = require('./config-Br73VMLb.js');
6
- require('./server-CnZ-Y6L-.js');
7
- const require_daemon = require('./daemon-Dhy9qq9P.js');
4
+ require('./env-resolve-BdagnXhK.js');
5
+ const require_config = require('./config-SgDxKyfV.js');
6
+ require('./server-DUDXqJSo.js');
7
+ const require_daemon = require('./daemon-CzOW-1PS.js');
8
8
  const require_gateway = require('./gateway-CzI8dnlS.js');
9
9
  require('./providers-DP8T0QCR.js');
10
- const require_onboard = require('./onboard-BFuPscDx.js');
10
+ const require_onboard = require('./onboard-UiynbNQy.js');
11
11
  require('./theme-CLXvI6Hr.js');
12
12
  const require_hub = require('./hub-DIoASRn6.js');
13
13
  const require_update_check = require('./update-check-BeAPt4-f.js');
14
14
  const require_manager = require('./manager-Jd0qSzVe.js');
15
15
  const require_memory = require('./memory-D-Py-cz5.js');
16
- const require_loader = require('./loader-DRfmh8hU.js');
17
- const require_agents_routing = require('./agents-routing-Bz3SstlK.js');
16
+ const require_loader = require('./loader-gTdKBwiI.js');
17
+ const require_agents_routing = require('./agents-routing-Cee7wrfi.js');
18
18
  const require_pairing = require('./pairing-fGaxBlgG.js');
19
19
  const require_doctor = require('./doctor-BcfmNAGV.js');
20
20
  const require_health = require('./health-CBy1PfzC.js');
21
- const require_security = require('./security-BhhX8wJx.js');
21
+ const require_security = require('./security-DP1qtJfL.js');
22
22
  const require_device_auth_store = require('./device-auth-store-LKgpU74c.js');
23
23
  const require_developer_keys = require('./developer-keys-CSmzA-dl.js');
24
24
  const commander = require_chunk.__toESM(require("commander"));
@@ -2538,7 +2538,7 @@ function sanitizeForLog(value) {
2538
2538
  return String(value ?? "").replace(/[\r\n\t]+/g, " ").replace(/[^\x20-\x7e]+/g, "?").slice(0, 200);
2539
2539
  }
2540
2540
  const program = new commander.Command();
2541
- program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("5.2.7").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) => {
2541
+ program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("5.2.8").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) => {
2542
2542
  const profile = thisCommand.opts().profile;
2543
2543
  if (profile) {
2544
2544
  const os$2 = require("os");
@@ -2682,8 +2682,8 @@ sandboxCmd.command("explain").description("Show effective sandbox mode, tool pol
2682
2682
  }
2683
2683
  const sandboxMode = cfg?.agents?.defaults?.sandbox?.mode ?? "non-main";
2684
2684
  const toolsCfg = cfg?.tools ?? {};
2685
- const { describeToolPolicy, applyToolPolicy } = await Promise.resolve().then(() => require("./tool-policy-TmXx_fpp.js"));
2686
- const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
2685
+ const { describeToolPolicy, applyToolPolicy } = await Promise.resolve().then(() => require("./tool-policy-DtGf3Ifq.js"));
2686
+ const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-B8LzGLSY.js"));
2687
2687
  const allTools = [
2688
2688
  ...getBuiltinTools(),
2689
2689
  ...getSessionsTools(() => null),
@@ -3022,7 +3022,7 @@ cfgCmd.command("set-key <KEY=value>").description("Set provider API key or confi
3022
3022
  xai: "xai"
3023
3023
  };
3024
3024
  const pid = keyToProvider[key] ?? keyToProvider[key.toLowerCase()] ?? cfg?.provider?.providerId ?? key.toLowerCase();
3025
- const { validateApiKeyFormat } = await Promise.resolve().then(() => require("./api-key-validation-BeQ2MZAT.js"));
3025
+ const { validateApiKeyFormat } = await Promise.resolve().then(() => require("./api-key-validation-DydlUth1.js"));
3026
3026
  const formatErr = validateApiKeyFormat(pid, value);
3027
3027
  if (formatErr) {
3028
3028
  console.log(chalk.default.yellow(`\n ⚠ ${formatErr}\n`));
@@ -3084,7 +3084,7 @@ cfgCmd.command("set-service-key <serviceId> [apiKey]").description("Set API key
3084
3084
  cfgCmd.command("schema").description("Show configuration schema").action(() => {
3085
3085
  console.log(chalk.default.bold.hex("#06b6d4")("\n Config schema: ~/.hyperclaw/hyperclaw.json\n"));
3086
3086
  const schema = {
3087
- version: "string (e.g. \"5.2.7\")",
3087
+ version: "string (e.g. \"5.2.8\")",
3088
3088
  workspaceName: "string",
3089
3089
  provider: {
3090
3090
  providerId: "string",
@@ -3362,40 +3362,40 @@ themeCmd.command("preview").description("Preview all themes side-by-side").actio
3362
3362
  });
3363
3363
  const secretsCmd = program.command("secrets").description("External secrets management");
3364
3364
  secretsCmd.command("audit").description("Audit all required secrets").option("--required-by <ids>", "Filter by skill/provider IDs (comma-separated)").action(async (opts) => {
3365
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-Yo6ZAofG.js"));
3365
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-CQ3MWNHY.js"));
3366
3366
  const filter = opts.requiredBy?.split(",");
3367
3367
  await new SecretsManager().audit(filter);
3368
3368
  process.exit(0);
3369
3369
  });
3370
3370
  secretsCmd.command("set <KEY=value>").description("Set a secret in .env file").action(async (kv) => {
3371
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-Yo6ZAofG.js"));
3371
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-CQ3MWNHY.js"));
3372
3372
  await new SecretsManager().set(kv);
3373
3373
  process.exit(0);
3374
3374
  });
3375
3375
  secretsCmd.command("apply").description("Write secrets from .env to shell config (~/.bashrc, ~/.zshrc)").action(async () => {
3376
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-Yo6ZAofG.js"));
3376
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-CQ3MWNHY.js"));
3377
3377
  await new SecretsManager().apply();
3378
3378
  process.exit(0);
3379
3379
  });
3380
3380
  secretsCmd.command("reload").description("Reload secrets into running gateway").action(async () => {
3381
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-Yo6ZAofG.js"));
3381
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-CQ3MWNHY.js"));
3382
3382
  await new SecretsManager().reload();
3383
3383
  process.exit(0);
3384
3384
  });
3385
3385
  secretsCmd.command("remove <key>").description("Remove a secret from .env").action(async (key) => {
3386
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-Yo6ZAofG.js"));
3386
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-CQ3MWNHY.js"));
3387
3387
  await new SecretsManager().remove(key);
3388
3388
  process.exit(0);
3389
3389
  });
3390
3390
  secretsCmd.command("credentials").description("List provider credential files (credentials/*.json)").action(async () => {
3391
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-DU2cVTiY.js"));
3391
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-BFxEJR00.js"));
3392
3392
  const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3393
3393
  await new CredentialsStore(getHyperClawDir$1()).showList();
3394
3394
  process.exit(0);
3395
3395
  });
3396
3396
  const securityCmd = program.command("security").description("Security tools");
3397
3397
  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) => {
3398
- const { runSecurityAudit } = await Promise.resolve().then(() => require("./audit-NPINyRh4.js"));
3398
+ const { runSecurityAudit } = await Promise.resolve().then(() => require("./audit-CX5poVMR.js"));
3399
3399
  await runSecurityAudit({
3400
3400
  deep: opts.deep,
3401
3401
  fix: opts.fix,
@@ -3403,18 +3403,21 @@ securityCmd.command("audit").description("Security audit — file permissions, D
3403
3403
  });
3404
3404
  process.exit(0);
3405
3405
  });
3406
- 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) => {
3407
- const { osintSetup, osintQuickStart } = await Promise.resolve().then(() => require("./osint-Cg3-CYHx.js"));
3406
+ program.command("osint").description("OSINT / Ethical Hacking mode — configure HyperClaw for security research").argument("[workflow]", "Workflow preset: recon | bugbounty | pentest | footprint | custom | chat").option("--show", "Show current OSINT profile").option("--reset", "Clear OSINT profile and disable OSINT mode").option("--model <model>", "Override model for OSINT chat").action(async (workflow, opts) => {
3407
+ const { osintSetup, osintQuickStart } = await Promise.resolve().then(() => require("./osint-f9DeXT6j.js"));
3408
3408
  if (opts.show || opts.reset) await osintSetup({
3409
3409
  show: opts.show,
3410
3410
  reset: opts.reset
3411
3411
  });
3412
- else if (workflow === "setup" || workflow) await osintSetup({ mode: workflow });
3412
+ else if (workflow === "chat") {
3413
+ const { runOsintChat } = await Promise.resolve().then(() => require("./osint-chat-Hn8qpsC1.js"));
3414
+ await runOsintChat({ model: opts.model });
3415
+ } else if (workflow === "setup" || workflow) await osintSetup({ mode: workflow });
3413
3416
  else await osintQuickStart();
3414
3417
  process.exit(0);
3415
3418
  });
3416
3419
  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) => {
3417
- const { runChat } = await Promise.resolve().then(() => require("./chat-B5Y8u68o.js"));
3420
+ const { runChat } = await Promise.resolve().then(() => require("./chat-C07wF0mM.js"));
3418
3421
  await runChat({
3419
3422
  sessionId: opts.session,
3420
3423
  model: opts.model,
@@ -3424,7 +3427,7 @@ program.command("chat").description("Interactive terminal chat with the agent").
3424
3427
  });
3425
3428
  const agentRunCmd = program.command("agent").description("Run agent with thinking control");
3426
3429
  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) => {
3427
- const { runAgent } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
3430
+ const { runAgent } = await Promise.resolve().then(() => require("./src-B8LzGLSY.js"));
3428
3431
  await runAgent({
3429
3432
  message: opts.message,
3430
3433
  thinking: opts.thinking,
@@ -3440,7 +3443,7 @@ agentRunCmd.requiredOption("-m, --message <text>", "Message to send to the agent
3440
3443
  });
3441
3444
  const threadsCmd = program.command("threads").description("ACP thread-bound agent sessions");
3442
3445
  threadsCmd.command("list").description("List agent threads").option("--channel <id>", "Filter by channel").option("--active", "Show only active threads").action(async (opts) => {
3443
- const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
3446
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-B8LzGLSY.js"));
3444
3447
  const mgr = new ACPThreadManager();
3445
3448
  const threads = await mgr.list({
3446
3449
  channelId: opts.channel,
@@ -3450,7 +3453,7 @@ threadsCmd.command("list").description("List agent threads").option("--channel <
3450
3453
  process.exit(0);
3451
3454
  });
3452
3455
  threadsCmd.command("terminate <id>").description("Terminate a thread").action(async (id) => {
3453
- const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
3456
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-B8LzGLSY.js"));
3454
3457
  await new ACPThreadManager().terminate(id);
3455
3458
  console.log(require("chalk").green(`\n ✔ Thread terminated: ${id}\n`));
3456
3459
  process.exit(0);
@@ -3494,43 +3497,43 @@ deliveryCmd.command("retry <id>").description("Retry a dead-lettered delivery it
3494
3497
  });
3495
3498
  const mcpCmd = program.command("mcp").description("MCP (Model Context Protocol) server management");
3496
3499
  mcpCmd.command("list").description("List configured MCP servers").action(async () => {
3497
- const { mcpList } = await Promise.resolve().then(() => require("./mcp-GWnLTVi-.js"));
3500
+ const { mcpList } = await Promise.resolve().then(() => require("./mcp-CklaYr_6.js"));
3498
3501
  await mcpList();
3499
3502
  process.exit(0);
3500
3503
  });
3501
3504
  mcpCmd.command("add").description("Add MCP server").action(async () => {
3502
- const { mcpAdd } = await Promise.resolve().then(() => require("./mcp-GWnLTVi-.js"));
3505
+ const { mcpAdd } = await Promise.resolve().then(() => require("./mcp-CklaYr_6.js"));
3503
3506
  await mcpAdd();
3504
3507
  process.exit(0);
3505
3508
  });
3506
3509
  mcpCmd.command("remove <id>").description("Remove MCP server").action(async (id) => {
3507
- const { mcpRemove } = await Promise.resolve().then(() => require("./mcp-GWnLTVi-.js"));
3510
+ const { mcpRemove } = await Promise.resolve().then(() => require("./mcp-CklaYr_6.js"));
3508
3511
  await mcpRemove(id);
3509
3512
  process.exit(0);
3510
3513
  });
3511
3514
  mcpCmd.command("probe [id]").description("Test MCP server connection").action(async (id) => {
3512
- const { mcpProbe } = await Promise.resolve().then(() => require("./mcp-GWnLTVi-.js"));
3515
+ const { mcpProbe } = await Promise.resolve().then(() => require("./mcp-CklaYr_6.js"));
3513
3516
  await mcpProbe(id);
3514
3517
  process.exit(0);
3515
3518
  });
3516
3519
  const nodeCmd = program.command("node").description("HyperClaw node management (local, remote, android)");
3517
3520
  nodeCmd.command("list").description("List paired nodes").action(async () => {
3518
- const { nodeList } = await Promise.resolve().then(() => require("./node-4_wJsNEN.js"));
3521
+ const { nodeList } = await Promise.resolve().then(() => require("./node-urDjajMt.js"));
3519
3522
  await nodeList();
3520
3523
  process.exit(0);
3521
3524
  });
3522
3525
  nodeCmd.command("add").description("Add or pair a node").action(async () => {
3523
- const { nodeAdd } = await Promise.resolve().then(() => require("./node-4_wJsNEN.js"));
3526
+ const { nodeAdd } = await Promise.resolve().then(() => require("./node-urDjajMt.js"));
3524
3527
  await nodeAdd();
3525
3528
  process.exit(0);
3526
3529
  });
3527
3530
  nodeCmd.command("probe [id]").description("Probe node connection").action(async (id) => {
3528
- const { nodeProbe } = await Promise.resolve().then(() => require("./node-4_wJsNEN.js"));
3531
+ const { nodeProbe } = await Promise.resolve().then(() => require("./node-urDjajMt.js"));
3529
3532
  await nodeProbe(id);
3530
3533
  process.exit(0);
3531
3534
  });
3532
3535
  nodeCmd.command("remove <id>").description("Remove paired node").action(async (id) => {
3533
- const { nodeRemove } = await Promise.resolve().then(() => require("./node-4_wJsNEN.js"));
3536
+ const { nodeRemove } = await Promise.resolve().then(() => require("./node-urDjajMt.js"));
3534
3537
  await nodeRemove(id);
3535
3538
  process.exit(0);
3536
3539
  });
@@ -3558,7 +3561,7 @@ const gmailCmd = program.command("gmail").description("Gmail Pub/Sub real-time n
3558
3561
  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) => {
3559
3562
  const chalk$11 = require("chalk");
3560
3563
  try {
3561
- const { setupGmailWatch } = await Promise.resolve().then(() => require("./gmail-watch-setup-xG9GkPwr.js"));
3564
+ const { setupGmailWatch } = await Promise.resolve().then(() => require("./gmail-watch-setup-Brkj94Sy.js"));
3562
3565
  const labelIds = opts.labels.split(",").map((s) => s.trim()).filter(Boolean);
3563
3566
  const result = await setupGmailWatch({
3564
3567
  topicName: opts.topic,
@@ -3578,7 +3581,7 @@ gmailCmd.command("watch-setup").description("Register Gmail watch for push notif
3578
3581
  const cronCmd = program.command("cron").description("Scheduled tasks (cron → agent prompt)");
3579
3582
  cronCmd.command("list").action(async () => {
3580
3583
  const chalk$11 = require("chalk");
3581
- const { loadCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-4my0PJce.js"));
3584
+ const { loadCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-1E6wKpTv.js"));
3582
3585
  const tasks = await loadCronTasks();
3583
3586
  console.log(chalk$11.bold.cyan("\n ⏰ CRON TASKS\n"));
3584
3587
  if (tasks.length === 0) {
@@ -3598,7 +3601,7 @@ cronCmd.command("list").action(async () => {
3598
3601
  });
3599
3602
  cronCmd.command("add").arguments("<schedule> <prompt>").option("-n, --name <name>", "Task name").action(async (schedule, prompt, opts) => {
3600
3603
  const chalk$11 = require("chalk");
3601
- const { loadCronTasks, addCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-4my0PJce.js"));
3604
+ const { loadCronTasks, addCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-1E6wKpTv.js"));
3602
3605
  await loadCronTasks();
3603
3606
  addCronTask(schedule, prompt, opts.name);
3604
3607
  await saveCronTasks();
@@ -3608,7 +3611,7 @@ cronCmd.command("add").arguments("<schedule> <prompt>").option("-n, --name <name
3608
3611
  });
3609
3612
  cronCmd.command("remove <id>").action(async (id) => {
3610
3613
  const chalk$11 = require("chalk");
3611
- const { loadCronTasks, removeCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-4my0PJce.js"));
3614
+ const { loadCronTasks, removeCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-1E6wKpTv.js"));
3612
3615
  await loadCronTasks();
3613
3616
  if (removeCronTask(id)) {
3614
3617
  await saveCronTasks();
@@ -3668,20 +3671,20 @@ program.command("nodes").description("List connected mobile nodes (iOS/Android C
3668
3671
  });
3669
3672
  const whCmd = program.command("webhooks").description("Webhook endpoint management");
3670
3673
  whCmd.command("list").action(async () => {
3671
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BQf9drst.js"));
3674
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BI3izlRG.js"));
3672
3675
  const m = new WebhookManager();
3673
3676
  await m.load();
3674
3677
  m.showList();
3675
3678
  process.exit(0);
3676
3679
  });
3677
3680
  whCmd.command("remove <id>").action(async (id) => {
3678
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BQf9drst.js"));
3681
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BI3izlRG.js"));
3679
3682
  const m = new WebhookManager();
3680
3683
  await m.remove(id);
3681
3684
  process.exit(0);
3682
3685
  });
3683
3686
  whCmd.command("toggle <id>").action(async (id) => {
3684
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BQf9drst.js"));
3687
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BI3izlRG.js"));
3685
3688
  const m = new WebhookManager();
3686
3689
  await m.toggle(id);
3687
3690
  process.exit(0);
@@ -3690,7 +3693,7 @@ const logsCmd = program.command("logs").description("View gateway logs");
3690
3693
  logsCmd.option("-n, --lines <n>", "Number of lines to show", "50");
3691
3694
  logsCmd.option("-f, --follow", "Stream logs in real time");
3692
3695
  logsCmd.action(async (opts) => {
3693
- const { tailLog, streamLog } = await Promise.resolve().then(() => require("./logger-CnxILOPV.js"));
3696
+ const { tailLog, streamLog } = await Promise.resolve().then(() => require("./logger-C3ZCDSkc.js"));
3694
3697
  if (opts.follow) await streamLog();
3695
3698
  else {
3696
3699
  await tailLog(parseInt(opts.lines));
@@ -3698,7 +3701,7 @@ logsCmd.action(async (opts) => {
3698
3701
  }
3699
3702
  });
3700
3703
  program.command("gateway:serve").description("Start the gateway server in the foreground (used by daemon)").action(async () => {
3701
- const { startGateway } = await Promise.resolve().then(() => require("./server-MpkM9aIZ.js"));
3704
+ const { startGateway } = await Promise.resolve().then(() => require("./server-ha59nA8a.js"));
3702
3705
  await startGateway();
3703
3706
  process.on("SIGINT", () => process.exit(0));
3704
3707
  process.on("SIGTERM", () => process.exit(0));
@@ -3755,9 +3758,9 @@ const authCmd = program.command("auth").description("OAuth and provider credenti
3755
3758
  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) => {
3756
3759
  const chalk$11 = require("chalk");
3757
3760
  const inquirer$2 = require("inquirer");
3758
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-DU2cVTiY.js"));
3761
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-BFxEJR00.js"));
3759
3762
  const { getHyperClawDir: getHyperClawDir$1, getEnvFilePath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3760
- const { getApiKeyGuide, GENERIC_API_KEY_STEPS } = await Promise.resolve().then(() => require("./api-keys-guide-BdT2lfX6.js"));
3763
+ const { getApiKeyGuide, GENERIC_API_KEY_STEPS } = await Promise.resolve().then(() => require("./api-keys-guide-DqRGa4x7.js"));
3761
3764
  const fs$7 = await import("fs-extra");
3762
3765
  const path$5 = await import("path");
3763
3766
  const guide = getApiKeyGuide(serviceId);
@@ -3810,7 +3813,7 @@ authCmd.command("add <service_id>").description("Add API key for a service (any
3810
3813
  });
3811
3814
  authCmd.command("remove <service_id>").description("Remove API key for a service from credentials and .env").action(async (serviceId) => {
3812
3815
  const chalk$11 = require("chalk");
3813
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-DU2cVTiY.js"));
3816
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-BFxEJR00.js"));
3814
3817
  const { getHyperClawDir: getHyperClawDir$1, getEnvFilePath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3815
3818
  const fs$7 = await import("fs-extra");
3816
3819
  const safeId = serviceId.replace(/[^a-zA-Z0-9_-]/g, "_").toLowerCase();
@@ -3830,7 +3833,7 @@ authCmd.command("oauth <provider>").description("Run full OAuth flow. Providers:
3830
3833
  const chalk$11 = require("chalk");
3831
3834
  const ora$4 = (await import("ora")).default;
3832
3835
  try {
3833
- const { runOAuthFlow } = await Promise.resolve().then(() => require("./oauth-flow-CJ7dFXKT.js"));
3836
+ const { runOAuthFlow } = await Promise.resolve().then(() => require("./oauth-flow-Bt-LaRHV.js"));
3834
3837
  const spinner = ora$4("Starting OAuth flow...").start();
3835
3838
  spinner.text = "Opening browser — complete the consent and return here.";
3836
3839
  const tokens = await runOAuthFlow(provider, {
@@ -3838,7 +3841,7 @@ authCmd.command("oauth <provider>").description("Run full OAuth flow. Providers:
3838
3841
  clientSecret: opts.clientSecret
3839
3842
  });
3840
3843
  spinner.stop();
3841
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-B2RBpiXg.js"));
3844
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-CVTKgj35.js"));
3842
3845
  const now = Math.floor(Date.now() / 1e3);
3843
3846
  const expires_at = tokens.expires_in ? now + tokens.expires_in : void 0;
3844
3847
  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;
@@ -3873,7 +3876,7 @@ authCmd.command("setup-token <provider>").description("Save setup token (Anthrop
3873
3876
  console.log(chalk$11.red("\n ✖ No token provided.\n"));
3874
3877
  process.exit(1);
3875
3878
  }
3876
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-B2RBpiXg.js"));
3879
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-CVTKgj35.js"));
3877
3880
  await writeOAuthToken("anthropic-setup", {
3878
3881
  access_token: token.trim(),
3879
3882
  token_url: "https://api.anthropic.com"
@@ -3884,7 +3887,7 @@ authCmd.command("setup-token <provider>").description("Save setup token (Anthrop
3884
3887
  });
3885
3888
  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) => {
3886
3889
  const chalk$11 = require("chalk");
3887
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-B2RBpiXg.js"));
3890
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-CVTKgj35.js"));
3888
3891
  const access_token = opts.token || process.env.OAUTH_ACCESS_TOKEN;
3889
3892
  if (!access_token) {
3890
3893
  console.log(chalk$11.red("\n ✖ Provide --token <access_token> or set OAUTH_ACCESS_TOKEN\n"));
@@ -3951,13 +3954,13 @@ workspaceCmd.command("show [dir]").description("Show workspace files summary").a
3951
3954
  });
3952
3955
  const botCmd = program.command("bot").description("HyperClaw Bot — companion bot for remote gateway control");
3953
3956
  botCmd.command("status").action(async () => {
3954
- const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-PfthmAly.js"));
3957
+ const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-DzP_v3iA.js"));
3955
3958
  await showBotStatus();
3956
3959
  process.exit(0);
3957
3960
  });
3958
3961
  botCmd.command("setup").description("Configure HyperClaw Bot (Telegram token, allowed users)").action(async () => {
3959
3962
  const inquirer$2 = require("inquirer");
3960
- const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-PfthmAly.js"));
3963
+ const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-DzP_v3iA.js"));
3961
3964
  const chalk$11 = require("chalk");
3962
3965
  console.log(chalk$11.bold.hex("#06b6d4")("\n 🦅 HYPERCLAW BOT SETUP\n"));
3963
3966
  console.log(chalk$11.gray(" Create a bot at t.me/BotFather, then paste the token below.\n"));
@@ -4019,14 +4022,14 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
4019
4022
  cwd: process.cwd()
4020
4023
  });
4021
4024
  child.unref();
4022
- const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-PfthmAly.js"));
4025
+ const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-DzP_v3iA.js"));
4023
4026
  await writeBotPid(child.pid);
4024
4027
  console.log(require("chalk").green(`\n ✔ HyperClaw Bot started in background (PID ${child.pid})`));
4025
4028
  console.log(require("chalk").gray(" Stop with: hyperclaw bot stop\n"));
4026
4029
  process.exit(0);
4027
4030
  return;
4028
4031
  }
4029
- const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-PfthmAly.js"));
4032
+ const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-DzP_v3iA.js"));
4030
4033
  const cfg = await loadBotConfig();
4031
4034
  if (!cfg) {
4032
4035
  console.log(require("chalk").red("\n ✖ HyperClaw Bot not configured. Run: hyperclaw bot setup\n"));
@@ -4053,41 +4056,41 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
4053
4056
  });
4054
4057
  botCmd.command("stop").description("Stop HyperClaw Bot (when running in background)").action(async () => {
4055
4058
  const chalk$11 = require("chalk");
4056
- const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-PfthmAly.js"));
4059
+ const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-DzP_v3iA.js"));
4057
4060
  const stopped = await stopBotProcess();
4058
4061
  if (stopped) console.log(chalk$11.green("\n ✔ HyperClaw Bot stopped\n"));
4059
4062
  else console.log(chalk$11.gray("\n Bot not running in background (no PID file). Use Ctrl+C to stop foreground bot.\n"));
4060
4063
  process.exit(stopped ? 0 : 1);
4061
4064
  });
4062
4065
  memCmd.command("search <query>").description("Search MEMORY.md").action(async (query) => {
4063
- const { searchMemory } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
4066
+ const { searchMemory } = await Promise.resolve().then(() => require("./src-B8LzGLSY.js"));
4064
4067
  await searchMemory(query);
4065
4068
  process.exit(0);
4066
4069
  });
4067
4070
  memCmd.command("auto-show").description("Show auto-extracted memories from MEMORY.md").action(async () => {
4068
- const { showMemory } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
4071
+ const { showMemory } = await Promise.resolve().then(() => require("./src-B8LzGLSY.js"));
4069
4072
  await showMemory();
4070
4073
  process.exit(0);
4071
4074
  });
4072
4075
  memCmd.command("clear").description("Clear all auto-extracted memories").action(async () => {
4073
- const { clearMemory } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
4076
+ const { clearMemory } = await Promise.resolve().then(() => require("./src-B8LzGLSY.js"));
4074
4077
  await clearMemory();
4075
4078
  process.exit(0);
4076
4079
  });
4077
4080
  memCmd.command("save <text>").description("Manually save a fact to MEMORY.md").action(async (text) => {
4078
- const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
4081
+ const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-B8LzGLSY.js"));
4079
4082
  await saveMemoryDirect(text);
4080
4083
  console.log(chalk.default.hex("#06b6d4")(` ✅ Saved: ${text}\n`));
4081
4084
  process.exit(0);
4082
4085
  });
4083
4086
  const pcCmd = program.command("pc").description("PC access — give the AI access to your computer");
4084
4087
  pcCmd.command("status").description("Show PC access status and config").action(async () => {
4085
- const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
4088
+ const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-B8LzGLSY.js"));
4086
4089
  await showPCAccessStatus();
4087
4090
  process.exit(0);
4088
4091
  });
4089
4092
  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) => {
4090
- const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
4093
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-B8LzGLSY.js"));
4091
4094
  const level = opts.level;
4092
4095
  const allowed = [
4093
4096
  "read-only",
@@ -4114,7 +4117,7 @@ pcCmd.command("enable").description("Enable PC access for the AI").option("--lev
4114
4117
  process.exit(0);
4115
4118
  });
4116
4119
  pcCmd.command("disable").description("Disable PC access").action(async () => {
4117
- const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
4120
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-B8LzGLSY.js"));
4118
4121
  await savePCAccessConfig({ enabled: false });
4119
4122
  console.log(chalk.default.hex("#06b6d4")("\n ✅ PC access disabled\n"));
4120
4123
  process.exit(0);
@@ -4139,7 +4142,7 @@ pcCmd.command("log").description("Show PC access audit log").option("-n, --lines
4139
4142
  process.exit(0);
4140
4143
  });
4141
4144
  pcCmd.command("run <command>").description("Run a shell command via PC access (must be enabled)").action(async (command) => {
4142
- const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
4145
+ const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-B8LzGLSY.js"));
4143
4146
  const cfg = await loadPCAccessConfig();
4144
4147
  if (!cfg.enabled) {
4145
4148
  console.log(chalk.default.red("\n ✖ PC access disabled. Run: hyperclaw pc enable\n"));
@@ -4197,7 +4200,7 @@ if (process.argv.length === 2) (async () => {
4197
4200
  console.log(` ${t.c("hyperclaw --help")} — all commands\n`);
4198
4201
  } else {
4199
4202
  await new require_onboard.Banner().showNeonBanner(false);
4200
- const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-BbJROE0s.js"));
4203
+ const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-BV5Poocl.js"));
4201
4204
  await new HyperClawWizard$1().run({ wizard: true });
4202
4205
  }
4203
4206
  await runUpdateCheck();