hyperclaw 5.3.0 → 5.3.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 (50) hide show
  1. package/README.md +2 -0
  2. package/dist/banner-7G-bEcQg.js +143 -0
  3. package/dist/banner-B8OcbGCR.js +143 -0
  4. package/dist/banner-BIOxqoND.js +7 -0
  5. package/dist/banner-DXWl0t8M.js +7 -0
  6. package/dist/chat-2cf--psT.js +545 -0
  7. package/dist/chat-CvZyAfqV.js +545 -0
  8. package/dist/daemon-CckV-o_V.js +421 -0
  9. package/dist/daemon-DL5zfvZd.js +7 -0
  10. package/dist/daemon-DkK4j69t.js +421 -0
  11. package/dist/daemon-OqS7Ohda.js +7 -0
  12. package/dist/engine-BUqmNzOL.js +7 -0
  13. package/dist/engine-Co38wljj.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-ukhzbWGk.js +516 -0
  18. package/dist/mcp-loader-DyklUhL2.js +93 -0
  19. package/dist/mcp-loader-u-tt6BEx.js +93 -0
  20. package/dist/onboard-BriaGw6G.js +3812 -0
  21. package/dist/onboard-Bu3xDVur.js +14 -0
  22. package/dist/onboard-D6afaGWd.js +3812 -0
  23. package/dist/onboard-gr80CpYU.js +14 -0
  24. package/dist/orchestrator-BwBZ5iON.js +189 -0
  25. package/dist/orchestrator-C0_UaVsn.js +6 -0
  26. package/dist/orchestrator-CjZos0wH.js +6 -0
  27. package/dist/orchestrator-CqXGMcxd.js +189 -0
  28. package/dist/osint-B6mHZP10.js +283 -0
  29. package/dist/osint-BC5eNzVi.js +283 -0
  30. package/dist/osint-chat-DPHec6BB.js +789 -0
  31. package/dist/osint-chat-myilxKVw.js +789 -0
  32. package/dist/run-main.js +99 -31
  33. package/dist/server-B5wYaa-U.js +4 -0
  34. package/dist/server-CrZ_WVSf.js +1365 -0
  35. package/dist/server-viuRgDlF.js +1365 -0
  36. package/dist/server-zXVY2lfd.js +4 -0
  37. package/dist/skill-runtime-B7U9JxNS.js +5 -0
  38. package/dist/skill-runtime-CxDPbEuj.js +104 -0
  39. package/dist/skill-runtime-DXEKaHRd.js +5 -0
  40. package/dist/skill-runtime-DXKqnJos.js +104 -0
  41. package/dist/src-CSriPfaE.js +63 -0
  42. package/dist/src-CYUaLsXl.js +458 -0
  43. package/dist/src-Czb6-Nkc.js +458 -0
  44. package/dist/src-DSZTfNdO.js +63 -0
  45. package/dist/sub-agent-tools-CFlCWrhp.js +39 -0
  46. package/dist/sub-agent-tools-zyfsZ8k0.js +39 -0
  47. package/dist/update-check-CApy4DTc.js +117 -0
  48. package/dist/update-check-CCMXnjxr.js +7 -0
  49. package/package.json +1 -1
  50. package/static/chat.html +112 -5
package/dist/run-main.js CHANGED
@@ -3,15 +3,15 @@ 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-DMC1wOsc.js');
7
- const require_daemon = require('./daemon-BgT541y-.js');
6
+ require('./server-viuRgDlF.js');
7
+ const require_daemon = require('./daemon-DkK4j69t.js');
8
8
  const require_gateway = require('./gateway-CzI8dnlS.js');
9
9
  require('./providers-DP8T0QCR.js');
10
- const require_onboard = require('./onboard-eIxjVYKi.js');
10
+ const require_onboard = require('./onboard-BriaGw6G.js');
11
11
  require('./theme-CLXvI6Hr.js');
12
- const require_banner = require('./banner-DupxNjxh.js');
12
+ const require_banner = require('./banner-B8OcbGCR.js');
13
13
  const require_hub = require('./hub-Bb_dYECE.js');
14
- const require_update_check = require('./update-check-GDue_it1.js');
14
+ const require_update_check = require('./update-check-CApy4DTc.js');
15
15
  const require_manager = require('./manager-DYfzqckn.js');
16
16
  const require_memory = require('./memory-BCYvdqwo.js');
17
17
  const require_loader = require('./loader-DIPs649t.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.0").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.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").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-cowbRb9x.js"));
2714
+ const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-DSZTfNdO.js"));
2688
2715
  const allTools = [
2689
2716
  ...getBuiltinTools(),
2690
2717
  ...getSessionsTools(() => null),
@@ -2937,6 +2964,46 @@ 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
+ const root = path$5.join(process.cwd(), "apps", "web");
2972
+ const altRoot = path$5.join(__dirname, "..", "..", "apps", "web");
2973
+ const webDir = await fs$7.pathExists(root) ? root : await fs$7.pathExists(altRoot) ? altRoot : null;
2974
+ if (!webDir || !await fs$7.pathExists(path$5.join(webDir, "package.json"))) {
2975
+ console.log(chalk.default.gray("\n React Web UI not found. Run from HyperClaw repo root.\n"));
2976
+ process.exit(1);
2977
+ }
2978
+ console.log(chalk.default.bold.hex("#06b6d4")("\n 🦅 HyperClaw Web UI\n"));
2979
+ if (!opts.skipInstall) {
2980
+ console.log(chalk.default.gray(" Installing dependencies...\n"));
2981
+ await new Promise((resolve, reject) => {
2982
+ const child$1 = spawn$1("npm", ["install"], {
2983
+ cwd: webDir,
2984
+ stdio: "inherit",
2985
+ shell: true
2986
+ });
2987
+ child$1.on("error", reject);
2988
+ child$1.on("exit", (code) => code === 0 ? resolve() : reject(new Error("npm install failed")));
2989
+ });
2990
+ }
2991
+ const port = opts.port || "5173";
2992
+ console.log(chalk.default.gray(` Starting dev server at http://localhost:${port}\n`));
2993
+ const child = spawn$1("npm", [
2994
+ "run",
2995
+ "dev",
2996
+ "--",
2997
+ "--port",
2998
+ port
2999
+ ], {
3000
+ cwd: webDir,
3001
+ stdio: "inherit",
3002
+ shell: true
3003
+ });
3004
+ child.on("error", () => {});
3005
+ child.on("exit", (code) => process.exit(code ?? 0));
3006
+ });
2940
3007
  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
3008
  await require_doctor.runDoctor(opts.fix || opts.repair, {
2942
3009
  fix: opts.fix,
@@ -3085,7 +3152,7 @@ cfgCmd.command("set-service-key <serviceId> [apiKey]").description("Set API key
3085
3152
  cfgCmd.command("schema").description("Show configuration schema").action(() => {
3086
3153
  console.log(chalk.default.bold.hex("#06b6d4")("\n Config schema: ~/.hyperclaw/hyperclaw.json\n"));
3087
3154
  const schema = {
3088
- version: "string (e.g. \"5.3.0\")",
3155
+ version: "string (e.g. \"5.3.2\")",
3089
3156
  workspaceName: "string",
3090
3157
  provider: {
3091
3158
  providerId: "string",
@@ -3405,20 +3472,20 @@ securityCmd.command("audit").description("Security audit — file permissions, D
3405
3472
  process.exit(0);
3406
3473
  });
3407
3474
  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-CMyamX3_.js"));
3475
+ const { osintSetup, osintQuickStart } = await Promise.resolve().then(() => require("./osint-BC5eNzVi.js"));
3409
3476
  if (opts.show || opts.reset) await osintSetup({
3410
3477
  show: opts.show,
3411
3478
  reset: opts.reset
3412
3479
  });
3413
3480
  else if (workflow === "chat") {
3414
- const { runOsintChat } = await Promise.resolve().then(() => require("./osint-chat-D_6Fb27C.js"));
3481
+ const { runOsintChat } = await Promise.resolve().then(() => require("./osint-chat-myilxKVw.js"));
3415
3482
  await runOsintChat({ model: opts.model });
3416
3483
  } else if (workflow === "setup" || workflow) await osintSetup({ mode: workflow });
3417
3484
  else await osintQuickStart();
3418
3485
  process.exit(0);
3419
3486
  });
3420
3487
  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-TGA-UO46.js"));
3488
+ const { runChat } = await Promise.resolve().then(() => require("./chat-CvZyAfqV.js"));
3422
3489
  const cfg = await new require_manager.ConfigManager().load().catch(() => null);
3423
3490
  const port = cfg?.gateway?.port ?? 18789;
3424
3491
  const gm = new GatewayManager$1();
@@ -3433,7 +3500,7 @@ program.command("chat").description("Interactive terminal chat with the agent").
3433
3500
  });
3434
3501
  const agentRunCmd = program.command("agent").description("Run agent with thinking control");
3435
3502
  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-cowbRb9x.js"));
3503
+ const { runAgent } = await Promise.resolve().then(() => require("./src-DSZTfNdO.js"));
3437
3504
  await runAgent({
3438
3505
  message: opts.message,
3439
3506
  thinking: opts.thinking,
@@ -3449,7 +3516,7 @@ agentRunCmd.requiredOption("-m, --message <text>", "Message to send to the agent
3449
3516
  });
3450
3517
  const threadsCmd = program.command("threads").description("ACP thread-bound agent sessions");
3451
3518
  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-cowbRb9x.js"));
3519
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-DSZTfNdO.js"));
3453
3520
  const mgr = new ACPThreadManager();
3454
3521
  const threads = await mgr.list({
3455
3522
  channelId: opts.channel,
@@ -3459,7 +3526,7 @@ threadsCmd.command("list").description("List agent threads").option("--channel <
3459
3526
  process.exit(0);
3460
3527
  });
3461
3528
  threadsCmd.command("terminate <id>").description("Terminate a thread").action(async (id) => {
3462
- const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-cowbRb9x.js"));
3529
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-DSZTfNdO.js"));
3463
3530
  await new ACPThreadManager().terminate(id);
3464
3531
  console.log(require("chalk").green(`\n ✔ Thread terminated: ${id}\n`));
3465
3532
  process.exit(0);
@@ -3707,7 +3774,7 @@ logsCmd.action(async (opts) => {
3707
3774
  }
3708
3775
  });
3709
3776
  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-B9rMYJwV.js"));
3777
+ const { startGateway } = await Promise.resolve().then(() => require("./server-B5wYaa-U.js"));
3711
3778
  await startGateway();
3712
3779
  process.on("SIGINT", () => process.exit(0));
3713
3780
  process.on("SIGTERM", () => process.exit(0));
@@ -3960,13 +4027,13 @@ workspaceCmd.command("show [dir]").description("Show workspace files summary").a
3960
4027
  });
3961
4028
  const botCmd = program.command("bot").description("HyperClaw Bot — companion bot for remote gateway control");
3962
4029
  botCmd.command("status").action(async () => {
3963
- const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-CZ4DjvO-.js"));
4030
+ const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-CyIGak-G.js"));
3964
4031
  await showBotStatus();
3965
4032
  process.exit(0);
3966
4033
  });
3967
4034
  botCmd.command("setup").description("Configure HyperClaw Bot (Telegram token, allowed users)").action(async () => {
3968
4035
  const inquirer$2 = require("inquirer");
3969
- const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-CZ4DjvO-.js"));
4036
+ const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-CyIGak-G.js"));
3970
4037
  const chalk$11 = require("chalk");
3971
4038
  console.log(chalk$11.bold.hex("#06b6d4")("\n 🦅 HYPERCLAW BOT SETUP\n"));
3972
4039
  console.log(chalk$11.gray(" Create a bot at t.me/BotFather, then paste the token below.\n"));
@@ -4028,14 +4095,14 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
4028
4095
  cwd: process.cwd()
4029
4096
  });
4030
4097
  child.unref();
4031
- const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-CZ4DjvO-.js"));
4098
+ const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-CyIGak-G.js"));
4032
4099
  await writeBotPid(child.pid);
4033
4100
  console.log(require("chalk").green(`\n ✔ HyperClaw Bot started in background (PID ${child.pid})`));
4034
4101
  console.log(require("chalk").gray(" Stop with: hyperclaw bot stop\n"));
4035
4102
  process.exit(0);
4036
4103
  return;
4037
4104
  }
4038
- const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-CZ4DjvO-.js"));
4105
+ const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-CyIGak-G.js"));
4039
4106
  const cfg = await loadBotConfig();
4040
4107
  if (!cfg) {
4041
4108
  console.log(require("chalk").red("\n ✖ HyperClaw Bot not configured. Run: hyperclaw bot setup\n"));
@@ -4062,41 +4129,41 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
4062
4129
  });
4063
4130
  botCmd.command("stop").description("Stop HyperClaw Bot (when running in background)").action(async () => {
4064
4131
  const chalk$11 = require("chalk");
4065
- const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-CZ4DjvO-.js"));
4132
+ const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-CyIGak-G.js"));
4066
4133
  const stopped = await stopBotProcess();
4067
4134
  if (stopped) console.log(chalk$11.green("\n ✔ HyperClaw Bot stopped\n"));
4068
4135
  else console.log(chalk$11.gray("\n Bot not running in background (no PID file). Use Ctrl+C to stop foreground bot.\n"));
4069
4136
  process.exit(stopped ? 0 : 1);
4070
4137
  });
4071
4138
  memCmd.command("search <query>").description("Search MEMORY.md").action(async (query) => {
4072
- const { searchMemory } = await Promise.resolve().then(() => require("./src-cowbRb9x.js"));
4139
+ const { searchMemory } = await Promise.resolve().then(() => require("./src-DSZTfNdO.js"));
4073
4140
  await searchMemory(query);
4074
4141
  process.exit(0);
4075
4142
  });
4076
4143
  memCmd.command("auto-show").description("Show auto-extracted memories from MEMORY.md").action(async () => {
4077
- const { showMemory } = await Promise.resolve().then(() => require("./src-cowbRb9x.js"));
4144
+ const { showMemory } = await Promise.resolve().then(() => require("./src-DSZTfNdO.js"));
4078
4145
  await showMemory();
4079
4146
  process.exit(0);
4080
4147
  });
4081
4148
  memCmd.command("clear").description("Clear all auto-extracted memories").action(async () => {
4082
- const { clearMemory } = await Promise.resolve().then(() => require("./src-cowbRb9x.js"));
4149
+ const { clearMemory } = await Promise.resolve().then(() => require("./src-DSZTfNdO.js"));
4083
4150
  await clearMemory();
4084
4151
  process.exit(0);
4085
4152
  });
4086
4153
  memCmd.command("save <text>").description("Manually save a fact to MEMORY.md").action(async (text) => {
4087
- const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-cowbRb9x.js"));
4154
+ const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-DSZTfNdO.js"));
4088
4155
  await saveMemoryDirect(text);
4089
4156
  console.log(chalk.default.hex("#06b6d4")(` ✅ Saved: ${text}\n`));
4090
4157
  process.exit(0);
4091
4158
  });
4092
4159
  const pcCmd = program.command("pc").description("PC access — give the AI access to your computer");
4093
4160
  pcCmd.command("status").description("Show PC access status and config").action(async () => {
4094
- const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-cowbRb9x.js"));
4161
+ const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-DSZTfNdO.js"));
4095
4162
  await showPCAccessStatus();
4096
4163
  process.exit(0);
4097
4164
  });
4098
4165
  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-cowbRb9x.js"));
4166
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-DSZTfNdO.js"));
4100
4167
  const level = opts.level;
4101
4168
  const allowed = [
4102
4169
  "read-only",
@@ -4123,7 +4190,7 @@ pcCmd.command("enable").description("Enable PC access for the AI").option("--lev
4123
4190
  process.exit(0);
4124
4191
  });
4125
4192
  pcCmd.command("disable").description("Disable PC access").action(async () => {
4126
- const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-cowbRb9x.js"));
4193
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-DSZTfNdO.js"));
4127
4194
  await savePCAccessConfig({ enabled: false });
4128
4195
  console.log(chalk.default.hex("#06b6d4")("\n ✅ PC access disabled\n"));
4129
4196
  process.exit(0);
@@ -4148,7 +4215,7 @@ pcCmd.command("log").description("Show PC access audit log").option("-n, --lines
4148
4215
  process.exit(0);
4149
4216
  });
4150
4217
  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-cowbRb9x.js"));
4218
+ const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-DSZTfNdO.js"));
4152
4219
  const cfg = await loadPCAccessConfig();
4153
4220
  if (!cfg.enabled) {
4154
4221
  console.log(chalk.default.red("\n ✖ PC access disabled. Run: hyperclaw pc enable\n"));
@@ -4179,7 +4246,7 @@ program.command("setup").description("Setup wizard — alias for `hyperclaw onbo
4179
4246
  });
4180
4247
  async function runUpdateCheck() {
4181
4248
  try {
4182
- const { checkForUpdates: checkForUpdates$1, notifyUpdateAvailable } = await Promise.resolve().then(() => require("./update-check-C4te7JmY.js"));
4249
+ const { checkForUpdates: checkForUpdates$1, notifyUpdateAvailable } = await Promise.resolve().then(() => require("./update-check-CCMXnjxr.js"));
4183
4250
  const path$5 = require("path");
4184
4251
  const { readFileSync } = require("fs");
4185
4252
  const pkgPath = path$5.resolve(__dirname, "../package.json");
@@ -4197,7 +4264,8 @@ if (process.argv.length === 2) (async () => {
4197
4264
  const t = getTheme(false);
4198
4265
  const chalk$11 = require("chalk");
4199
4266
  console.log(t.bold(" Quick actions:\n"));
4200
- console.log(` ${t.c("hyperclaw chat")} chat with agent (terminal)`);
4267
+ console.log(` ${t.c("hyperclaw web")} React Web UI (auto install + start)`);
4268
+ console.log(` ${t.c("hyperclaw chat")} — terminal chat`);
4201
4269
  console.log(` ${t.c("hyperclaw onboard")} — re-run setup wizard`);
4202
4270
  console.log(` ${t.c("hyperclaw daemon start")} — start background service`);
4203
4271
  console.log(` ${t.c("hyperclaw daemon status")} — service status`);
@@ -4206,7 +4274,7 @@ if (process.argv.length === 2) (async () => {
4206
4274
  console.log(` ${t.c("hyperclaw --help")} — all commands\n`);
4207
4275
  } else {
4208
4276
  await new require_banner.Banner().showNeonBanner(false);
4209
- const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-CSJuvkMN.js"));
4277
+ const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-Bu3xDVur.js"));
4210
4278
  await new HyperClawWizard$1().run({ wizard: true });
4211
4279
  }
4212
4280
  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;