hyperclaw 5.3.1 → 5.3.3

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 (48) hide show
  1. package/README.md +2 -0
  2. package/dist/banner-B8OcbGCR.js +143 -0
  3. package/dist/banner-BIOxqoND.js +7 -0
  4. package/dist/banner-BT9llPVP.js +7 -0
  5. package/dist/banner-DNSYi9N-.js +143 -0
  6. package/dist/chat-CKLXvJjd.js +545 -0
  7. package/dist/chat-CvZyAfqV.js +545 -0
  8. package/dist/daemon-Bi0rcsh5.js +421 -0
  9. package/dist/daemon-DL5zfvZd.js +7 -0
  10. package/dist/daemon-DkK4j69t.js +421 -0
  11. package/dist/daemon-DnWIgRUn.js +7 -0
  12. package/dist/engine-BZ44Vuhh.js +7 -0
  13. package/dist/engine-C1osvhmq.js +327 -0
  14. package/dist/engine-EA8vevRJ.js +327 -0
  15. package/dist/engine-SjHViH0c.js +7 -0
  16. package/dist/hyperclawbot-CyIGak-G.js +516 -0
  17. package/dist/hyperclawbot-DC3jGsoA.js +516 -0
  18. package/dist/mcp-loader-BBlqPFQl.js +93 -0
  19. package/dist/mcp-loader-DyklUhL2.js +93 -0
  20. package/dist/onboard-BriaGw6G.js +3812 -0
  21. package/dist/onboard-Bu3xDVur.js +14 -0
  22. package/dist/onboard-DRgSPOuY.js +3812 -0
  23. package/dist/onboard-qPUG8PBU.js +14 -0
  24. package/dist/orchestrator-BURpEF0U.js +6 -0
  25. package/dist/orchestrator-C0_UaVsn.js +6 -0
  26. package/dist/orchestrator-CnEDItE1.js +189 -0
  27. package/dist/orchestrator-CqXGMcxd.js +189 -0
  28. package/dist/osint-BC5eNzVi.js +283 -0
  29. package/dist/osint-BiZZ_d-g.js +283 -0
  30. package/dist/osint-chat-DaRWDl3X.js +789 -0
  31. package/dist/osint-chat-myilxKVw.js +789 -0
  32. package/dist/run-main.js +128 -45
  33. package/dist/server-B5wYaa-U.js +4 -0
  34. package/dist/server-DBXhcGiq.js +4 -0
  35. package/dist/server-O4Zv8s74.js +1366 -0
  36. package/dist/server-viuRgDlF.js +1365 -0
  37. package/dist/skill-runtime-B7U9JxNS.js +5 -0
  38. package/dist/skill-runtime-DXKqnJos.js +104 -0
  39. package/dist/skill-runtime-IFk6whV0.js +104 -0
  40. package/dist/skill-runtime-vylCVHmD.js +5 -0
  41. package/dist/src-BA04v4CG.js +458 -0
  42. package/dist/src-BWpeRe8J.js +63 -0
  43. package/dist/src-Czb6-Nkc.js +458 -0
  44. package/dist/src-DSZTfNdO.js +63 -0
  45. package/dist/sub-agent-tools-Dzh0nVzy.js +39 -0
  46. package/dist/sub-agent-tools-zyfsZ8k0.js +39 -0
  47. package/package.json +1 -1
  48. package/static/chat.html +581 -163
package/dist/run-main.js CHANGED
@@ -3,13 +3,13 @@ const require_paths = require('./paths-AIyBxIzm.js');
3
3
  const require_paths$1 = require('./paths-DPovhojT.js');
4
4
  require('./env-resolve-CHxjGo8u.js');
5
5
  const require_config = require('./config-DGAAJ49A.js');
6
- require('./server-CrZ_WVSf.js');
7
- const require_daemon = require('./daemon-CckV-o_V.js');
6
+ require('./server-O4Zv8s74.js');
7
+ const require_daemon = require('./daemon-Bi0rcsh5.js');
8
8
  const require_gateway = require('./gateway-CzI8dnlS.js');
9
9
  require('./providers-DP8T0QCR.js');
10
- const require_onboard = require('./onboard-D6afaGWd.js');
10
+ const require_onboard = require('./onboard-DRgSPOuY.js');
11
11
  require('./theme-CLXvI6Hr.js');
12
- const require_banner = require('./banner-7G-bEcQg.js');
12
+ const require_banner = require('./banner-DNSYi9N-.js');
13
13
  const require_hub = require('./hub-Bb_dYECE.js');
14
14
  const require_update_check = require('./update-check-CApy4DTc.js');
15
15
  const require_manager = require('./manager-DYfzqckn.js');
@@ -2539,7 +2539,34 @@ function sanitizeForLog(value) {
2539
2539
  return String(value ?? "").replace(/[\r\n\t]+/g, " ").replace(/[^\x20-\x7e]+/g, "?").slice(0, 200);
2540
2540
  }
2541
2541
  const program = new commander.Command();
2542
- program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("5.3.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) => {
2542
+ program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("5.3.3").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").addHelpText("after", `
2543
+ Full commands reference: READMECOMMAND.md (all commands and options)
2544
+
2545
+ Main command groups:
2546
+ ✓ init, onboard, quickstart, setup
2547
+ ✓ gateway status|start|stop|restart, daemon start|stop|restart|status|logs
2548
+ ✓ web — 🌐 React Web UI (auto npm install + dev server)
2549
+ ✓ chat — 💬 terminal chat
2550
+ ✓ agent -m "message"
2551
+ ✓ channels list|add|remove|login|status
2552
+ ✓ hooks list|enable|disable|info
2553
+ ✓ pairing list|approve, devices list|pair|approve|reject|unpair
2554
+ ✓ hub, skill search|list|install
2555
+ ✓ memory show|add-rule|add-fact|search|clear|save
2556
+ ✓ config show|set-key|schema, secrets audit|set|apply|reload
2557
+ ✓ doctor [--fix], health, security audit
2558
+ ✓ status, dashboard
2559
+ ✓ threads list|terminate, canvas show|add|clear|export
2560
+ ✓ mcp list|add|remove|probe, node list|add|probe|remove
2561
+ ✓ cron list|add|remove, webhooks list|remove|toggle, logs
2562
+ ✓ voice, theme list|set|preview, workspace init|show
2563
+ ✓ pc status|enable|disable|log|run
2564
+ ✓ bot status|setup|start|stop
2565
+ ✓ auth add|remove|oauth|setup-token
2566
+ ✓ osint [workflow], deploy, update, message send
2567
+
2568
+ Examples: hyperclaw onboard | hyperclaw chat | hyperclaw gateway status
2569
+ Run "hyperclaw" with no args for quick actions, or see READMECOMMAND.md for full list.`).hook("preAction", (thisCommand) => {
2543
2570
  const profile = thisCommand.opts().profile;
2544
2571
  if (profile) {
2545
2572
  const os$2 = require("os");
@@ -2684,7 +2711,7 @@ sandboxCmd.command("explain").description("Show effective sandbox mode, tool pol
2684
2711
  const sandboxMode = cfg?.agents?.defaults?.sandbox?.mode ?? "non-main";
2685
2712
  const toolsCfg = cfg?.tools ?? {};
2686
2713
  const { describeToolPolicy, applyToolPolicy } = await Promise.resolve().then(() => require("./tool-policy-QXF3MMxu.js"));
2687
- const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-CSriPfaE.js"));
2714
+ const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
2688
2715
  const allTools = [
2689
2716
  ...getBuiltinTools(),
2690
2717
  ...getSessionsTools(() => null),
@@ -2937,6 +2964,61 @@ program.command("update").description("Update HyperClaw").option("-c, --channel
2937
2964
  await performUpdate(effective.channel, installKind);
2938
2965
  process.exit(0);
2939
2966
  });
2967
+ program.command("web").description("Launch React Web UI — auto npm install and npm run dev").option("--skip-install", "Skip npm install (use if deps already installed)").option("--port <port>", "Vite dev server port", "5173").action(async (opts) => {
2968
+ const path$5 = await import("path");
2969
+ const fs$7 = await import("fs-extra");
2970
+ const { spawn: spawn$1 } = await import("child_process");
2971
+ async function findWebDir() {
2972
+ const candidates = [];
2973
+ if (process.env.HYPERCLAW_ROOT) candidates.push(path$5.join(process.env.HYPERCLAW_ROOT, "apps", "web"));
2974
+ candidates.push(path$5.join(process.cwd(), "apps", "web"));
2975
+ let dir = process.cwd();
2976
+ for (let i = 0; i < 6; i++) {
2977
+ const parent = path$5.dirname(dir);
2978
+ if (parent === dir) break;
2979
+ dir = parent;
2980
+ candidates.push(path$5.join(dir, "apps", "web"));
2981
+ }
2982
+ candidates.push(path$5.join(__dirname, "..", "..", "apps", "web"));
2983
+ candidates.push(path$5.join(__dirname, "..", "..", "..", "apps", "web"));
2984
+ for (const candidate of candidates) if (await fs$7.pathExists(path$5.join(candidate, "package.json"))) return candidate;
2985
+ return null;
2986
+ }
2987
+ const webDir = await findWebDir();
2988
+ if (!webDir) {
2989
+ console.log(chalk.default.gray("\n React Web UI not found. Set HYPERCLAW_ROOT to your repo path or run from the repo directory.\n"));
2990
+ console.log(chalk.default.gray(" Example: HYPERCLAW_ROOT=/path/to/hyperclaw hyperclaw web\n"));
2991
+ process.exit(1);
2992
+ }
2993
+ console.log(chalk.default.bold.hex("#06b6d4")("\n 🦅 HyperClaw Web UI\n"));
2994
+ if (!opts.skipInstall) {
2995
+ console.log(chalk.default.gray(" Installing dependencies...\n"));
2996
+ await new Promise((resolve, reject) => {
2997
+ const child$1 = spawn$1("npm", ["install"], {
2998
+ cwd: webDir,
2999
+ stdio: "inherit",
3000
+ shell: true
3001
+ });
3002
+ child$1.on("error", reject);
3003
+ child$1.on("exit", (code) => code === 0 ? resolve() : reject(new Error("npm install failed")));
3004
+ });
3005
+ }
3006
+ const port = opts.port || "5173";
3007
+ console.log(chalk.default.gray(` Starting dev server at http://localhost:${port}\n`));
3008
+ const child = spawn$1("npm", [
3009
+ "run",
3010
+ "dev",
3011
+ "--",
3012
+ "--port",
3013
+ port
3014
+ ], {
3015
+ cwd: webDir,
3016
+ stdio: "inherit",
3017
+ shell: true
3018
+ });
3019
+ child.on("error", () => {});
3020
+ child.on("exit", (code) => process.exit(code ?? 0));
3021
+ });
2940
3022
  program.command("doctor").description("Health check — surfaces misconfigs, risky DM policies, and repairs").option("--fix", "Auto-repair fixable issues").option("--repair", "Apply recommended repairs (same as --fix)").option("--force", "Apply aggressive repairs (use with --repair)").option("-y, --yes", "Accept defaults without prompting").option("--non-interactive", "Skip prompts; only run safe migrations").option("--deep", "Scan system services for extra gateway installs").action(async (opts) => {
2941
3023
  await require_doctor.runDoctor(opts.fix || opts.repair, {
2942
3024
  fix: opts.fix,
@@ -3085,7 +3167,7 @@ cfgCmd.command("set-service-key <serviceId> [apiKey]").description("Set API key
3085
3167
  cfgCmd.command("schema").description("Show configuration schema").action(() => {
3086
3168
  console.log(chalk.default.bold.hex("#06b6d4")("\n Config schema: ~/.hyperclaw/hyperclaw.json\n"));
3087
3169
  const schema = {
3088
- version: "string (e.g. \"5.3.1\")",
3170
+ version: "string (e.g. \"5.3.3\")",
3089
3171
  workspaceName: "string",
3090
3172
  provider: {
3091
3173
  providerId: "string",
@@ -3237,10 +3319,10 @@ program.command("status").description("System overview").option("--all", "Full l
3237
3319
  console.log(t.bold("\n ─── Deep status ───\n"));
3238
3320
  try {
3239
3321
  const cfg = await fs$7.readJson(configPath);
3240
- console.log(t.muted(" Config: ") + (cfg ? t.success("loaded") : t.error("missing")));
3322
+ console.log(t.muted(" Config: ") + (cfg ? t.success("loaded") : t.error("missing")));
3241
3323
  console.log(t.muted(" Channels: ") + JSON.stringify(cfg?.gateway?.enabledChannels || cfg?.channels || []));
3242
3324
  } catch {
3243
- console.log(t.muted(" Config: ") + t.error("unreadable"));
3325
+ console.log(t.muted(" Config: ") + t.error("unreadable"));
3244
3326
  }
3245
3327
  if (opts.deep) {
3246
3328
  const http$2 = await import("http");
@@ -3264,20 +3346,20 @@ program.command("status").description("System overview").option("--all", "Full l
3264
3346
  res.on("end", () => {
3265
3347
  try {
3266
3348
  const j = JSON.parse(d);
3267
- console.log(t.muted(" Gateway: ") + t.success("reachable") + ` (sessions: ${j.sessions ?? "-"}, uptime: ${j.uptime ?? "-"})`);
3349
+ console.log(t.muted(" Gateway: ") + t.success("reachable") + ` (sessions: ${j.sessions ?? "-"}, uptime: ${j.uptime ?? "-"})`);
3268
3350
  } catch {
3269
- console.log(t.muted(" Gateway: ") + t.error("unreachable or invalid response"));
3351
+ console.log(t.muted(" Gateway: ") + t.error("unreachable or invalid response"));
3270
3352
  }
3271
3353
  resolve();
3272
3354
  });
3273
3355
  });
3274
3356
  req.on("error", () => {
3275
- console.log(t.muted(" Gateway: ") + t.error("unreachable"));
3357
+ console.log(t.muted(" Gateway: ") + t.error("unreachable"));
3276
3358
  resolve();
3277
3359
  });
3278
3360
  req.on("timeout", () => {
3279
3361
  req.destroy();
3280
- console.log(t.muted(" Gateway: ") + t.error("timeout"));
3362
+ console.log(t.muted(" Gateway: ") + t.error("timeout"));
3281
3363
  resolve();
3282
3364
  });
3283
3365
  req.end();
@@ -3289,20 +3371,20 @@ program.command("status").description("System overview").option("--all", "Full l
3289
3371
  res.on("end", () => {
3290
3372
  try {
3291
3373
  const j = JSON.parse(d);
3292
- console.log(t.muted(" Gateway: ") + t.success("reachable") + ` (sessions: ${j.sessions ?? "-"}, uptime: ${j.uptime ?? "-"})`);
3374
+ console.log(t.muted(" Gateway: ") + t.success("reachable") + ` (sessions: ${j.sessions ?? "-"}, uptime: ${j.uptime ?? "-"})`);
3293
3375
  } catch {
3294
- console.log(t.muted(" Gateway: ") + t.error("unreachable or invalid response"));
3376
+ console.log(t.muted(" Gateway: ") + t.error("unreachable or invalid response"));
3295
3377
  }
3296
3378
  resolve();
3297
3379
  });
3298
3380
  });
3299
3381
  req.on("error", () => {
3300
- console.log(t.muted(" Gateway: ") + t.error("unreachable"));
3382
+ console.log(t.muted(" Gateway: ") + t.error("unreachable"));
3301
3383
  resolve();
3302
3384
  });
3303
3385
  req.on("timeout", () => {
3304
3386
  req.destroy();
3305
- console.log(t.muted(" Gateway: ") + t.error("timeout"));
3387
+ console.log(t.muted(" Gateway: ") + t.error("timeout"));
3306
3388
  resolve();
3307
3389
  });
3308
3390
  req.end();
@@ -3405,20 +3487,20 @@ securityCmd.command("audit").description("Security audit — file permissions, D
3405
3487
  process.exit(0);
3406
3488
  });
3407
3489
  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) => {
3408
- const { osintSetup, osintQuickStart } = await Promise.resolve().then(() => require("./osint-B6mHZP10.js"));
3490
+ const { osintSetup, osintQuickStart } = await Promise.resolve().then(() => require("./osint-BiZZ_d-g.js"));
3409
3491
  if (opts.show || opts.reset) await osintSetup({
3410
3492
  show: opts.show,
3411
3493
  reset: opts.reset
3412
3494
  });
3413
3495
  else if (workflow === "chat") {
3414
- const { runOsintChat } = await Promise.resolve().then(() => require("./osint-chat-DPHec6BB.js"));
3496
+ const { runOsintChat } = await Promise.resolve().then(() => require("./osint-chat-DaRWDl3X.js"));
3415
3497
  await runOsintChat({ model: opts.model });
3416
3498
  } else if (workflow === "setup" || workflow) await osintSetup({ mode: workflow });
3417
3499
  else await osintQuickStart();
3418
3500
  process.exit(0);
3419
3501
  });
3420
3502
  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").option("--daemon", "Use daemon theme (red borders & prompt)").action(async (opts) => {
3421
- const { runChat } = await Promise.resolve().then(() => require("./chat-2cf--psT.js"));
3503
+ const { runChat } = await Promise.resolve().then(() => require("./chat-CKLXvJjd.js"));
3422
3504
  const cfg = await new require_manager.ConfigManager().load().catch(() => null);
3423
3505
  const port = cfg?.gateway?.port ?? 18789;
3424
3506
  const gm = new GatewayManager$1();
@@ -3433,7 +3515,7 @@ program.command("chat").description("Interactive terminal chat with the agent").
3433
3515
  });
3434
3516
  const agentRunCmd = program.command("agent").description("Run agent with thinking control");
3435
3517
  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) => {
3436
- const { runAgent } = await Promise.resolve().then(() => require("./src-CSriPfaE.js"));
3518
+ const { runAgent } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
3437
3519
  await runAgent({
3438
3520
  message: opts.message,
3439
3521
  thinking: opts.thinking,
@@ -3449,7 +3531,7 @@ agentRunCmd.requiredOption("-m, --message <text>", "Message to send to the agent
3449
3531
  });
3450
3532
  const threadsCmd = program.command("threads").description("ACP thread-bound agent sessions");
3451
3533
  threadsCmd.command("list").description("List agent threads").option("--channel <id>", "Filter by channel").option("--active", "Show only active threads").action(async (opts) => {
3452
- const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-CSriPfaE.js"));
3534
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
3453
3535
  const mgr = new ACPThreadManager();
3454
3536
  const threads = await mgr.list({
3455
3537
  channelId: opts.channel,
@@ -3459,7 +3541,7 @@ threadsCmd.command("list").description("List agent threads").option("--channel <
3459
3541
  process.exit(0);
3460
3542
  });
3461
3543
  threadsCmd.command("terminate <id>").description("Terminate a thread").action(async (id) => {
3462
- const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-CSriPfaE.js"));
3544
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
3463
3545
  await new ACPThreadManager().terminate(id);
3464
3546
  console.log(require("chalk").green(`\n ✔ Thread terminated: ${id}\n`));
3465
3547
  process.exit(0);
@@ -3707,7 +3789,7 @@ logsCmd.action(async (opts) => {
3707
3789
  }
3708
3790
  });
3709
3791
  program.command("gateway:serve").description("Start the gateway server in the foreground (used by daemon)").action(async () => {
3710
- const { startGateway } = await Promise.resolve().then(() => require("./server-zXVY2lfd.js"));
3792
+ const { startGateway } = await Promise.resolve().then(() => require("./server-DBXhcGiq.js"));
3711
3793
  await startGateway();
3712
3794
  process.on("SIGINT", () => process.exit(0));
3713
3795
  process.on("SIGTERM", () => process.exit(0));
@@ -3960,13 +4042,13 @@ workspaceCmd.command("show [dir]").description("Show workspace files summary").a
3960
4042
  });
3961
4043
  const botCmd = program.command("bot").description("HyperClaw Bot — companion bot for remote gateway control");
3962
4044
  botCmd.command("status").action(async () => {
3963
- const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-ukhzbWGk.js"));
4045
+ const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-DC3jGsoA.js"));
3964
4046
  await showBotStatus();
3965
4047
  process.exit(0);
3966
4048
  });
3967
4049
  botCmd.command("setup").description("Configure HyperClaw Bot (Telegram token, allowed users)").action(async () => {
3968
4050
  const inquirer$2 = require("inquirer");
3969
- const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-ukhzbWGk.js"));
4051
+ const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-DC3jGsoA.js"));
3970
4052
  const chalk$11 = require("chalk");
3971
4053
  console.log(chalk$11.bold.hex("#06b6d4")("\n 🦅 HYPERCLAW BOT SETUP\n"));
3972
4054
  console.log(chalk$11.gray(" Create a bot at t.me/BotFather, then paste the token below.\n"));
@@ -4028,14 +4110,14 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
4028
4110
  cwd: process.cwd()
4029
4111
  });
4030
4112
  child.unref();
4031
- const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-ukhzbWGk.js"));
4113
+ const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-DC3jGsoA.js"));
4032
4114
  await writeBotPid(child.pid);
4033
4115
  console.log(require("chalk").green(`\n ✔ HyperClaw Bot started in background (PID ${child.pid})`));
4034
4116
  console.log(require("chalk").gray(" Stop with: hyperclaw bot stop\n"));
4035
4117
  process.exit(0);
4036
4118
  return;
4037
4119
  }
4038
- const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-ukhzbWGk.js"));
4120
+ const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-DC3jGsoA.js"));
4039
4121
  const cfg = await loadBotConfig();
4040
4122
  if (!cfg) {
4041
4123
  console.log(require("chalk").red("\n ✖ HyperClaw Bot not configured. Run: hyperclaw bot setup\n"));
@@ -4062,41 +4144,41 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
4062
4144
  });
4063
4145
  botCmd.command("stop").description("Stop HyperClaw Bot (when running in background)").action(async () => {
4064
4146
  const chalk$11 = require("chalk");
4065
- const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-ukhzbWGk.js"));
4147
+ const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-DC3jGsoA.js"));
4066
4148
  const stopped = await stopBotProcess();
4067
4149
  if (stopped) console.log(chalk$11.green("\n ✔ HyperClaw Bot stopped\n"));
4068
4150
  else console.log(chalk$11.gray("\n Bot not running in background (no PID file). Use Ctrl+C to stop foreground bot.\n"));
4069
4151
  process.exit(stopped ? 0 : 1);
4070
4152
  });
4071
4153
  memCmd.command("search <query>").description("Search MEMORY.md").action(async (query) => {
4072
- const { searchMemory } = await Promise.resolve().then(() => require("./src-CSriPfaE.js"));
4154
+ const { searchMemory } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
4073
4155
  await searchMemory(query);
4074
4156
  process.exit(0);
4075
4157
  });
4076
4158
  memCmd.command("auto-show").description("Show auto-extracted memories from MEMORY.md").action(async () => {
4077
- const { showMemory } = await Promise.resolve().then(() => require("./src-CSriPfaE.js"));
4159
+ const { showMemory } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
4078
4160
  await showMemory();
4079
4161
  process.exit(0);
4080
4162
  });
4081
4163
  memCmd.command("clear").description("Clear all auto-extracted memories").action(async () => {
4082
- const { clearMemory } = await Promise.resolve().then(() => require("./src-CSriPfaE.js"));
4164
+ const { clearMemory } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
4083
4165
  await clearMemory();
4084
4166
  process.exit(0);
4085
4167
  });
4086
4168
  memCmd.command("save <text>").description("Manually save a fact to MEMORY.md").action(async (text) => {
4087
- const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-CSriPfaE.js"));
4169
+ const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
4088
4170
  await saveMemoryDirect(text);
4089
4171
  console.log(chalk.default.hex("#06b6d4")(` ✅ Saved: ${text}\n`));
4090
4172
  process.exit(0);
4091
4173
  });
4092
4174
  const pcCmd = program.command("pc").description("PC access — give the AI access to your computer");
4093
4175
  pcCmd.command("status").description("Show PC access status and config").action(async () => {
4094
- const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-CSriPfaE.js"));
4176
+ const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
4095
4177
  await showPCAccessStatus();
4096
4178
  process.exit(0);
4097
4179
  });
4098
4180
  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) => {
4099
- const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-CSriPfaE.js"));
4181
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
4100
4182
  const level = opts.level;
4101
4183
  const allowed = [
4102
4184
  "read-only",
@@ -4123,7 +4205,7 @@ pcCmd.command("enable").description("Enable PC access for the AI").option("--lev
4123
4205
  process.exit(0);
4124
4206
  });
4125
4207
  pcCmd.command("disable").description("Disable PC access").action(async () => {
4126
- const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-CSriPfaE.js"));
4208
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
4127
4209
  await savePCAccessConfig({ enabled: false });
4128
4210
  console.log(chalk.default.hex("#06b6d4")("\n ✅ PC access disabled\n"));
4129
4211
  process.exit(0);
@@ -4148,7 +4230,7 @@ pcCmd.command("log").description("Show PC access audit log").option("-n, --lines
4148
4230
  process.exit(0);
4149
4231
  });
4150
4232
  pcCmd.command("run <command>").description("Run a shell command via PC access (must be enabled)").action(async (command) => {
4151
- const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-CSriPfaE.js"));
4233
+ const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
4152
4234
  const cfg = await loadPCAccessConfig();
4153
4235
  if (!cfg.enabled) {
4154
4236
  console.log(chalk.default.red("\n ✖ PC access disabled. Run: hyperclaw pc enable\n"));
@@ -4197,16 +4279,17 @@ if (process.argv.length === 2) (async () => {
4197
4279
  const t = getTheme(false);
4198
4280
  const chalk$11 = require("chalk");
4199
4281
  console.log(t.bold(" Quick actions:\n"));
4200
- console.log(` ${t.c("hyperclaw chat")} chat with agent (terminal)`);
4201
- console.log(` ${t.c("hyperclaw onboard")} re-run setup wizard`);
4202
- console.log(` ${t.c("hyperclaw daemon start")} start background service`);
4203
- console.log(` ${t.c("hyperclaw daemon status")} — service status`);
4204
- console.log(` ${t.c("hyperclaw status")} system overview`);
4205
- console.log(` ${t.c("hyperclaw doctor")} — health check & fix issues`);
4206
- console.log(` ${t.c("hyperclaw --help")} — all commands\n`);
4282
+ console.log(` ${t.c("hyperclaw web")} 🌐 React Web UI (auto install + start)`);
4283
+ console.log(` ${t.c("hyperclaw chat")} 💬 terminal chat`);
4284
+ console.log(` ${t.c("hyperclaw onboard")} ⚙️ re-run setup wizard`);
4285
+ console.log(` ${t.c("hyperclaw daemon start")} 🚀 start background service`);
4286
+ console.log(` ${t.c("hyperclaw daemon status")} 📊 service status`);
4287
+ console.log(` ${t.c("hyperclaw status")} — 📋 system overview`);
4288
+ console.log(` ${t.c("hyperclaw doctor")} — 🔧 health check & fix issues`);
4289
+ console.log(` ✓ ${t.c("hyperclaw --help")} — 📖 all commands\n`);
4207
4290
  } else {
4208
4291
  await new require_banner.Banner().showNeonBanner(false);
4209
- const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-gr80CpYU.js"));
4292
+ const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-qPUG8PBU.js"));
4210
4293
  await new HyperClawWizard$1().run({ wizard: true });
4211
4294
  }
4212
4295
  await runUpdateCheck();
@@ -0,0 +1,4 @@
1
+ const require_chunk = require('./chunk-jS-bbMI5.js');
2
+ const require_server = require('./server-viuRgDlF.js');
3
+
4
+ exports.startGateway = require_server.startGateway;
@@ -0,0 +1,4 @@
1
+ const require_chunk = require('./chunk-jS-bbMI5.js');
2
+ const require_server = require('./server-O4Zv8s74.js');
3
+
4
+ exports.startGateway = require_server.startGateway;