hyperclaw 5.3.3 → 5.3.45

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 (70) hide show
  1. package/dist/banner-3jmKGq6t.js +143 -0
  2. package/dist/banner-BhOid_rp.js +7 -0
  3. package/dist/banner-C5D09Afq.js +7 -0
  4. package/dist/banner-CP4LeLsu.js +143 -0
  5. package/dist/banner-D14weGVJ.js +7 -0
  6. package/dist/banner-DG3v43xA.js +143 -0
  7. package/dist/banner-mu7p6UkV.js +143 -0
  8. package/dist/banner-nRaqjrSN.js +7 -0
  9. package/dist/chat-BTJoZxtU.js +523 -0
  10. package/dist/chat-BYqxftlU.js +523 -0
  11. package/dist/chat-D-i8bqTf.js +523 -0
  12. package/dist/daemon-BXfbyPBf.js +7 -0
  13. package/dist/daemon-BtQqCfEH.js +7 -0
  14. package/dist/daemon-C4j0wqxz.js +421 -0
  15. package/dist/daemon-CUNaq2Ls.js +421 -0
  16. package/dist/daemon-IU5UIMJo.js +7 -0
  17. package/dist/daemon-WOoAWS-0.js +421 -0
  18. package/dist/engine-2Tc-z0e4.js +7 -0
  19. package/dist/engine-C88DJeLD.js +327 -0
  20. package/dist/engine-D9BvbJxu.js +7 -0
  21. package/dist/engine-DQ3hT5JD.js +327 -0
  22. package/dist/hyperclawbot-DC9nGl99.js +516 -0
  23. package/dist/hyperclawbot-DcQt62PL.js +516 -0
  24. package/dist/mcp-loader-Bd7MNj5-.js +93 -0
  25. package/dist/mcp-loader-CPlsbcja.js +93 -0
  26. package/dist/onboard-BF29mNbC.js +14 -0
  27. package/dist/onboard-BRN9NLFk.js +14 -0
  28. package/dist/onboard-C7vJegQc.js +3812 -0
  29. package/dist/onboard-CJKxKPBH.js +3812 -0
  30. package/dist/onboard-Cxjlal2t.js +14 -0
  31. package/dist/onboard-CytL65jh.js +14 -0
  32. package/dist/onboard-i20xz3_O.js +3812 -0
  33. package/dist/onboard-x4I788gj.js +3812 -0
  34. package/dist/orchestrator-B9gd0u_r.js +6 -0
  35. package/dist/orchestrator-CfswFK1w.js +189 -0
  36. package/dist/orchestrator-DcEHTInR.js +6 -0
  37. package/dist/orchestrator-PQY07fH7.js +189 -0
  38. package/dist/osint-BXu9NVcF.js +283 -0
  39. package/dist/osint-D3OoMs9I.js +283 -0
  40. package/dist/osint-DsUwGzgP.js +283 -0
  41. package/dist/osint-DtRd_A_O.js +283 -0
  42. package/dist/osint-chat-BJfbgXwk.js +789 -0
  43. package/dist/osint-chat-CY2ODmY-.js +789 -0
  44. package/dist/osint-chat-CfexqWop.js +789 -0
  45. package/dist/osint-chat-DdclrVa6.js +789 -0
  46. package/dist/run-main.js +198 -50
  47. package/dist/server-C9f6qtEW.js +1366 -0
  48. package/dist/server-CSu5UPl3.js +4 -0
  49. package/dist/server-CdlilrcS.js +4 -0
  50. package/dist/server-DfrmKeE6.js +1356 -0
  51. package/dist/server-jkSNOitC.js +1366 -0
  52. package/dist/server-rHap51o6.js +4 -0
  53. package/dist/skill-runtime-249xckq3.js +5 -0
  54. package/dist/skill-runtime-Bv59FUVu.js +104 -0
  55. package/dist/skill-runtime-CdR3YMFp.js +5 -0
  56. package/dist/skill-runtime-CxL0PxyP.js +104 -0
  57. package/dist/src-CboISwpv.js +63 -0
  58. package/dist/src-ClYgvXAj.js +63 -0
  59. package/dist/src-DiYkDVnn.js +458 -0
  60. package/dist/src-PutqGezt.js +458 -0
  61. package/dist/sub-agent-tools-8-Imp1B5.js +39 -0
  62. package/dist/sub-agent-tools-DNbBE93o.js +39 -0
  63. package/dist/update-check-B-wd-tpa.js +7 -0
  64. package/dist/update-check-DlUFL81n.js +118 -0
  65. package/package.json +2 -2
  66. package/static/chat.html +764 -764
  67. package/static/web/assets/index-BeAuHLb2.js +75 -0
  68. package/static/web/assets/index-D2RfO0dG.css +1 -0
  69. package/static/web/icon.png +0 -0
  70. package/static/web/index.html +14 -0
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-O4Zv8s74.js');
7
- const require_daemon = require('./daemon-Bi0rcsh5.js');
6
+ require('./server-DfrmKeE6.js');
7
+ const require_daemon = require('./daemon-C4j0wqxz.js');
8
8
  const require_gateway = require('./gateway-CzI8dnlS.js');
9
9
  require('./providers-DP8T0QCR.js');
10
- const require_onboard = require('./onboard-DRgSPOuY.js');
10
+ const require_onboard = require('./onboard-C7vJegQc.js');
11
11
  require('./theme-CLXvI6Hr.js');
12
- const require_banner = require('./banner-DNSYi9N-.js');
12
+ const require_banner = require('./banner-DG3v43xA.js');
13
13
  const require_hub = require('./hub-Bb_dYECE.js');
14
- const require_update_check = require('./update-check-CApy4DTc.js');
14
+ const require_update_check = require('./update-check-DlUFL81n.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');
@@ -115,7 +115,7 @@ var Dashboard = class {
115
115
  };
116
116
  const logRow = (content) => console.log(row(content));
117
117
  console.log(c("├" + line + "┤"));
118
- console.log(c("│") + chalk.default.bold.hex("#06b6d4")(`${"🦅 HYPERCLAW v5.2.1 — GATEWAY DASHBOARD".padStart(45).padEnd(w)}`) + c("│"));
118
+ console.log(c("│") + chalk.default.bold.hex("#06b6d4")(`${"🦅 HYPERCLAW v5.3.45 — GATEWAY DASHBOARD".padStart(45).padEnd(w)}`) + c("│"));
119
119
  console.log(c("├" + line + "┤"));
120
120
  logRow(`${statusDot} Gateway ${statusText} ${chalk.default.gray("│")} ws://localhost:${port} ${chalk.default.gray("│")} Agent: ${c(agent)}`);
121
121
  logRow(`${c("●")} Model ${chalk.default.gray(model.slice(0, 30))} ${chalk.default.gray("│")} User: ${c(user)}`);
@@ -2539,7 +2539,7 @@ 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.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", `
2542
+ program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("5.3.45").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
2543
  Full commands reference: READMECOMMAND.md (all commands and options)
2544
2544
 
2545
2545
  Main command groups:
@@ -2711,7 +2711,7 @@ sandboxCmd.command("explain").description("Show effective sandbox mode, tool pol
2711
2711
  const sandboxMode = cfg?.agents?.defaults?.sandbox?.mode ?? "non-main";
2712
2712
  const toolsCfg = cfg?.tools ?? {};
2713
2713
  const { describeToolPolicy, applyToolPolicy } = await Promise.resolve().then(() => require("./tool-policy-QXF3MMxu.js"));
2714
- const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
2714
+ const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-ClYgvXAj.js"));
2715
2715
  const allTools = [
2716
2716
  ...getBuiltinTools(),
2717
2717
  ...getSessionsTools(() => null),
@@ -2933,7 +2933,7 @@ skillCmd.command("install <id>").description("Install skill from ClawHub (or bun
2933
2933
  program.command("menu-bar").description("Launch macOS menu bar companion (Electron tray app)").action(async () => {
2934
2934
  const path$5 = await import("path");
2935
2935
  const { spawn: spawn$1 } = await import("child_process");
2936
- const fs$7 = await import("fs-extra");
2936
+ const fs$7 = (await import("fs-extra")).default;
2937
2937
  const root = path$5.join(process.cwd(), "apps", "macos");
2938
2938
  const altRoot = path$5.join(__dirname, "..", "..", "apps", "macos");
2939
2939
  const macosDir = await fs$7.pathExists(root) ? root : await fs$7.pathExists(altRoot) ? altRoot : null;
@@ -2964,10 +2964,23 @@ program.command("update").description("Update HyperClaw").option("-c, --channel
2964
2964
  await performUpdate(effective.channel, installKind);
2965
2965
  process.exit(0);
2966
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) => {
2967
+ program.command("web").description("Launch React Web UI").option("--skip-install", "Skip npm install (use if deps already installed)").option("--port <port>", "Port to serve on", "3000").action(async (opts) => {
2968
2968
  const path$5 = await import("path");
2969
- const fs$7 = await import("fs-extra");
2969
+ const fs$7 = (await import("fs-extra")).default;
2970
2970
  const { spawn: spawn$1 } = await import("child_process");
2971
+ const http$2 = await import("http");
2972
+ const net$3 = await import("net");
2973
+ const PORT = parseInt(opts.port || "3000", 10);
2974
+ const GW_PORT = 18789;
2975
+ async function findBuiltDir() {
2976
+ const candidates = [
2977
+ process.env.HYPERCLAW_ROOT && path$5.join(process.env.HYPERCLAW_ROOT, "static", "web"),
2978
+ path$5.join(__dirname, "..", "static", "web"),
2979
+ path$5.join(__dirname, "..", "..", "static", "web")
2980
+ ].filter(Boolean);
2981
+ for (const c of candidates) if (await fs$7.pathExists(path$5.join(c, "index.html"))) return c;
2982
+ return null;
2983
+ }
2971
2984
  async function findWebDir() {
2972
2985
  const candidates = [];
2973
2986
  if (process.env.HYPERCLAW_ROOT) candidates.push(path$5.join(process.env.HYPERCLAW_ROOT, "apps", "web"));
@@ -2981,43 +2994,178 @@ program.command("web").description("Launch React Web UI — auto npm install and
2981
2994
  }
2982
2995
  candidates.push(path$5.join(__dirname, "..", "..", "apps", "web"));
2983
2996
  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;
2997
+ for (const c of candidates) if (await fs$7.pathExists(path$5.join(c, "package.json"))) return c;
2985
2998
  return null;
2986
2999
  }
3000
+ console.log(chalk.default.bold.hex("#06b6d4")("\n HyperClaw Web UI\n"));
3001
+ const builtDir = await findBuiltDir();
3002
+ if (builtDir) {
3003
+ console.log(chalk.default.gray(` Serving at http://localhost:${PORT}\n`));
3004
+ const MIME = {
3005
+ ".html": "text/html; charset=utf-8",
3006
+ ".js": "application/javascript",
3007
+ ".css": "text/css",
3008
+ ".json": "application/json",
3009
+ ".png": "image/png",
3010
+ ".svg": "image/svg+xml",
3011
+ ".ico": "image/x-icon",
3012
+ ".woff2": "font/woff2",
3013
+ ".woff": "font/woff",
3014
+ ".ttf": "font/ttf"
3015
+ };
3016
+ const server = http$2.createServer(async (req, res) => {
3017
+ const url = (req.url || "/").split("?")[0];
3018
+ if (url.startsWith("/api/") || url === "/api") {
3019
+ const pr = http$2.request({
3020
+ hostname: "localhost",
3021
+ port: GW_PORT,
3022
+ path: req.url,
3023
+ method: req.method,
3024
+ headers: {
3025
+ ...req.headers,
3026
+ host: `localhost:${GW_PORT}`
3027
+ }
3028
+ }, (proxyRes) => {
3029
+ res.writeHead(proxyRes.statusCode || 200, proxyRes.headers);
3030
+ proxyRes.pipe(res);
3031
+ });
3032
+ pr.on("error", () => {
3033
+ res.writeHead(502);
3034
+ res.end("{\"error\":\"Gateway unreachable\"}");
3035
+ });
3036
+ req.pipe(pr);
3037
+ return;
3038
+ }
3039
+ let filePath = path$5.join(builtDir, url === "/" ? "index.html" : url);
3040
+ if (!await fs$7.pathExists(filePath)) filePath = path$5.join(builtDir, "index.html");
3041
+ try {
3042
+ const content = await fs$7.readFile(filePath);
3043
+ const ext = path$5.extname(filePath).toLowerCase();
3044
+ res.writeHead(200, { "Content-Type": MIME[ext] || "application/octet-stream" });
3045
+ res.end(content);
3046
+ } catch {
3047
+ res.writeHead(404);
3048
+ res.end("Not found");
3049
+ }
3050
+ });
3051
+ server.on("upgrade", (req, socket, head) => {
3052
+ const target = net$3.createConnection(GW_PORT, "localhost", () => {
3053
+ target.write(`${req.method} ${req.url} HTTP/1.1\r\n`);
3054
+ Object.entries(req.headers).forEach(([k, v]) => target.write(`${k}: ${v}\r\n`));
3055
+ target.write("\r\n");
3056
+ if (head?.length) target.write(head);
3057
+ });
3058
+ target.on("error", () => socket.destroy());
3059
+ socket.on("error", () => target.destroy());
3060
+ target.pipe(socket);
3061
+ socket.pipe(target);
3062
+ });
3063
+ server.listen(PORT, () => {
3064
+ console.log(chalk.default.hex("#06b6d4")(` Open: http://localhost:${PORT}\n`));
3065
+ });
3066
+ await new Promise((resolve, reject) => {
3067
+ let settled = false;
3068
+ let closing = false;
3069
+ const cleanup = () => {
3070
+ server.off("close", onClose);
3071
+ server.off("error", onError);
3072
+ process.off("SIGINT", onSignal);
3073
+ process.off("SIGTERM", onSignal);
3074
+ };
3075
+ const finish = () => {
3076
+ if (settled) return;
3077
+ settled = true;
3078
+ cleanup();
3079
+ resolve();
3080
+ };
3081
+ const fail = (err) => {
3082
+ if (settled) return;
3083
+ settled = true;
3084
+ cleanup();
3085
+ reject(err);
3086
+ };
3087
+ const onClose = () => finish();
3088
+ const onError = (err) => fail(err);
3089
+ const onSignal = () => {
3090
+ if (closing) return;
3091
+ closing = true;
3092
+ server.close(() => finish());
3093
+ };
3094
+ server.on("close", onClose);
3095
+ server.on("error", onError);
3096
+ process.on("SIGINT", onSignal);
3097
+ process.on("SIGTERM", onSignal);
3098
+ });
3099
+ return;
3100
+ }
2987
3101
  const webDir = await findWebDir();
2988
3102
  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"));
3103
+ console.log(chalk.default.gray("\n Web UI not found (pre-built or source).\n"));
3104
+ console.log(chalk.default.gray(" Rebuild the UI from the repo:\n"));
3105
+ console.log(chalk.default.gray(" cd apps/web && npm install && npm run build\n"));
3106
+ console.log(chalk.default.gray(" Or set HYPERCLAW_ROOT=/path/to/your/hyperclaw/repo\n"));
2991
3107
  process.exit(1);
2992
3108
  }
2993
- console.log(chalk.default.bold.hex("#06b6d4")("\n 🦅 HyperClaw Web UI\n"));
2994
3109
  if (!opts.skipInstall) {
2995
3110
  console.log(chalk.default.gray(" Installing dependencies...\n"));
2996
3111
  await new Promise((resolve, reject) => {
2997
- const child$1 = spawn$1("npm", ["install"], {
3112
+ const c = spawn$1("npm", ["install"], {
2998
3113
  cwd: webDir,
2999
3114
  stdio: "inherit",
3000
3115
  shell: true
3001
3116
  });
3002
- child$1.on("error", reject);
3003
- child$1.on("exit", (code) => code === 0 ? resolve() : reject(new Error("npm install failed")));
3117
+ c.on("error", reject);
3118
+ c.on("exit", (code) => code === 0 ? resolve() : reject(new Error("npm install failed")));
3004
3119
  });
3005
3120
  }
3006
- const port = opts.port || "5173";
3007
- console.log(chalk.default.gray(` Starting dev server at http://localhost:${port}\n`));
3121
+ console.log(chalk.default.gray(` Starting Vite dev server at http://localhost:${PORT}\n`));
3008
3122
  const child = spawn$1("npm", [
3009
3123
  "run",
3010
3124
  "dev",
3011
3125
  "--",
3012
3126
  "--port",
3013
- port
3127
+ String(PORT)
3014
3128
  ], {
3015
3129
  cwd: webDir,
3016
3130
  stdio: "inherit",
3017
3131
  shell: true
3018
3132
  });
3019
- child.on("error", () => {});
3020
- child.on("exit", (code) => process.exit(code ?? 0));
3133
+ await new Promise((resolve, reject) => {
3134
+ let settled = false;
3135
+ const cleanup = () => {
3136
+ child.off("error", onError);
3137
+ child.off("exit", onExit);
3138
+ process.off("SIGINT", onSignal);
3139
+ process.off("SIGTERM", onSignal);
3140
+ };
3141
+ const finish = () => {
3142
+ if (settled) return;
3143
+ settled = true;
3144
+ cleanup();
3145
+ resolve();
3146
+ };
3147
+ const fail = (err) => {
3148
+ if (settled) return;
3149
+ settled = true;
3150
+ cleanup();
3151
+ reject(err);
3152
+ };
3153
+ const onError = (err) => fail(err);
3154
+ const onExit = (code, signal) => {
3155
+ if (signal || code === 0) {
3156
+ finish();
3157
+ return;
3158
+ }
3159
+ fail(new Error(`Vite dev server exited with code ${code}`));
3160
+ };
3161
+ const onSignal = (signal) => {
3162
+ if (!child.killed) child.kill(signal);
3163
+ };
3164
+ child.on("error", onError);
3165
+ child.on("exit", onExit);
3166
+ process.on("SIGINT", onSignal);
3167
+ process.on("SIGTERM", onSignal);
3168
+ });
3021
3169
  });
3022
3170
  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) => {
3023
3171
  await require_doctor.runDoctor(opts.fix || opts.repair, {
@@ -3167,7 +3315,7 @@ cfgCmd.command("set-service-key <serviceId> [apiKey]").description("Set API key
3167
3315
  cfgCmd.command("schema").description("Show configuration schema").action(() => {
3168
3316
  console.log(chalk.default.bold.hex("#06b6d4")("\n Config schema: ~/.hyperclaw/hyperclaw.json\n"));
3169
3317
  const schema = {
3170
- version: "string (e.g. \"5.3.3\")",
3318
+ version: "string (e.g. \"5.3.45\")",
3171
3319
  workspaceName: "string",
3172
3320
  provider: {
3173
3321
  providerId: "string",
@@ -3312,7 +3460,7 @@ program.command("dashboard").description("Launch live terminal dashboard").optio
3312
3460
  program.command("status").description("System overview").option("--all", "Full local diagnosis (read-only)").option("--deep", "Also probe the running gateway").action(async (opts) => {
3313
3461
  await new require_banner.Banner().showStatus();
3314
3462
  if (opts.all || opts.deep) {
3315
- const fs$7 = await import("fs-extra");
3463
+ const fs$7 = (await import("fs-extra")).default;
3316
3464
  const { getConfigPath: getConfigPath$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3317
3465
  const t = (await Promise.resolve().then(() => require("./theme-DdZT-Bq4.js"))).getTheme(false);
3318
3466
  const configPath = getConfigPath$1();
@@ -3487,20 +3635,20 @@ securityCmd.command("audit").description("Security audit — file permissions, D
3487
3635
  process.exit(0);
3488
3636
  });
3489
3637
  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) => {
3490
- const { osintSetup, osintQuickStart } = await Promise.resolve().then(() => require("./osint-BiZZ_d-g.js"));
3638
+ const { osintSetup, osintQuickStart } = await Promise.resolve().then(() => require("./osint-DtRd_A_O.js"));
3491
3639
  if (opts.show || opts.reset) await osintSetup({
3492
3640
  show: opts.show,
3493
3641
  reset: opts.reset
3494
3642
  });
3495
3643
  else if (workflow === "chat") {
3496
- const { runOsintChat } = await Promise.resolve().then(() => require("./osint-chat-DaRWDl3X.js"));
3644
+ const { runOsintChat } = await Promise.resolve().then(() => require("./osint-chat-CfexqWop.js"));
3497
3645
  await runOsintChat({ model: opts.model });
3498
3646
  } else if (workflow === "setup" || workflow) await osintSetup({ mode: workflow });
3499
3647
  else await osintQuickStart();
3500
3648
  process.exit(0);
3501
3649
  });
3502
3650
  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) => {
3503
- const { runChat } = await Promise.resolve().then(() => require("./chat-CKLXvJjd.js"));
3651
+ const { runChat } = await Promise.resolve().then(() => require("./chat-D-i8bqTf.js"));
3504
3652
  const cfg = await new require_manager.ConfigManager().load().catch(() => null);
3505
3653
  const port = cfg?.gateway?.port ?? 18789;
3506
3654
  const gm = new GatewayManager$1();
@@ -3515,7 +3663,7 @@ program.command("chat").description("Interactive terminal chat with the agent").
3515
3663
  });
3516
3664
  const agentRunCmd = program.command("agent").description("Run agent with thinking control");
3517
3665
  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) => {
3518
- const { runAgent } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
3666
+ const { runAgent } = await Promise.resolve().then(() => require("./src-ClYgvXAj.js"));
3519
3667
  await runAgent({
3520
3668
  message: opts.message,
3521
3669
  thinking: opts.thinking,
@@ -3531,7 +3679,7 @@ agentRunCmd.requiredOption("-m, --message <text>", "Message to send to the agent
3531
3679
  });
3532
3680
  const threadsCmd = program.command("threads").description("ACP thread-bound agent sessions");
3533
3681
  threadsCmd.command("list").description("List agent threads").option("--channel <id>", "Filter by channel").option("--active", "Show only active threads").action(async (opts) => {
3534
- const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
3682
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-ClYgvXAj.js"));
3535
3683
  const mgr = new ACPThreadManager();
3536
3684
  const threads = await mgr.list({
3537
3685
  channelId: opts.channel,
@@ -3541,7 +3689,7 @@ threadsCmd.command("list").description("List agent threads").option("--channel <
3541
3689
  process.exit(0);
3542
3690
  });
3543
3691
  threadsCmd.command("terminate <id>").description("Terminate a thread").action(async (id) => {
3544
- const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
3692
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-ClYgvXAj.js"));
3545
3693
  await new ACPThreadManager().terminate(id);
3546
3694
  console.log(require("chalk").green(`\n ✔ Thread terminated: ${id}\n`));
3547
3695
  process.exit(0);
@@ -3710,7 +3858,7 @@ cronCmd.command("remove <id>").action(async (id) => {
3710
3858
  program.command("nodes").description("List connected mobile nodes (iOS/Android Connect tab)").action(async () => {
3711
3859
  const chalk$11 = require("chalk");
3712
3860
  const http$2 = await import("http");
3713
- const fs$7 = await import("fs-extra");
3861
+ const fs$7 = (await import("fs-extra")).default;
3714
3862
  const { getConfigPath: getConfigPath$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3715
3863
  let port = 18789;
3716
3864
  try {
@@ -3789,7 +3937,7 @@ logsCmd.action(async (opts) => {
3789
3937
  }
3790
3938
  });
3791
3939
  program.command("gateway:serve").description("Start the gateway server in the foreground (used by daemon)").action(async () => {
3792
- const { startGateway } = await Promise.resolve().then(() => require("./server-DBXhcGiq.js"));
3940
+ const { startGateway } = await Promise.resolve().then(() => require("./server-rHap51o6.js"));
3793
3941
  await startGateway();
3794
3942
  process.on("SIGINT", () => process.exit(0));
3795
3943
  process.on("SIGTERM", () => process.exit(0));
@@ -3849,7 +3997,7 @@ authCmd.command("add <service_id>").description("Add API key for a service (any
3849
3997
  const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-Bmm9e1SS.js"));
3850
3998
  const { getHyperClawDir: getHyperClawDir$1, getEnvFilePath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3851
3999
  const { getApiKeyGuide, GENERIC_API_KEY_STEPS } = await Promise.resolve().then(() => require("./api-keys-guide--73Bq0Ey.js"));
3852
- const fs$7 = await import("fs-extra");
4000
+ const fs$7 = (await import("fs-extra")).default;
3853
4001
  const path$5 = await import("path");
3854
4002
  const guide = getApiKeyGuide(serviceId);
3855
4003
  const steps = guide?.setupSteps ?? GENERIC_API_KEY_STEPS;
@@ -3903,7 +4051,7 @@ authCmd.command("remove <service_id>").description("Remove API key for a service
3903
4051
  const chalk$11 = require("chalk");
3904
4052
  const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-Bmm9e1SS.js"));
3905
4053
  const { getHyperClawDir: getHyperClawDir$1, getEnvFilePath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3906
- const fs$7 = await import("fs-extra");
4054
+ const fs$7 = (await import("fs-extra")).default;
3907
4055
  const safeId = serviceId.replace(/[^a-zA-Z0-9_-]/g, "_").toLowerCase();
3908
4056
  const creds = new CredentialsStore(getHyperClawDir$1());
3909
4057
  await creds.remove(safeId);
@@ -4042,13 +4190,13 @@ workspaceCmd.command("show [dir]").description("Show workspace files summary").a
4042
4190
  });
4043
4191
  const botCmd = program.command("bot").description("HyperClaw Bot — companion bot for remote gateway control");
4044
4192
  botCmd.command("status").action(async () => {
4045
- const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-DC3jGsoA.js"));
4193
+ const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-DcQt62PL.js"));
4046
4194
  await showBotStatus();
4047
4195
  process.exit(0);
4048
4196
  });
4049
4197
  botCmd.command("setup").description("Configure HyperClaw Bot (Telegram token, allowed users)").action(async () => {
4050
4198
  const inquirer$2 = require("inquirer");
4051
- const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-DC3jGsoA.js"));
4199
+ const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-DcQt62PL.js"));
4052
4200
  const chalk$11 = require("chalk");
4053
4201
  console.log(chalk$11.bold.hex("#06b6d4")("\n 🦅 HYPERCLAW BOT SETUP\n"));
4054
4202
  console.log(chalk$11.gray(" Create a bot at t.me/BotFather, then paste the token below.\n"));
@@ -4110,14 +4258,14 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
4110
4258
  cwd: process.cwd()
4111
4259
  });
4112
4260
  child.unref();
4113
- const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-DC3jGsoA.js"));
4261
+ const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-DcQt62PL.js"));
4114
4262
  await writeBotPid(child.pid);
4115
4263
  console.log(require("chalk").green(`\n ✔ HyperClaw Bot started in background (PID ${child.pid})`));
4116
4264
  console.log(require("chalk").gray(" Stop with: hyperclaw bot stop\n"));
4117
4265
  process.exit(0);
4118
4266
  return;
4119
4267
  }
4120
- const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-DC3jGsoA.js"));
4268
+ const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-DcQt62PL.js"));
4121
4269
  const cfg = await loadBotConfig();
4122
4270
  if (!cfg) {
4123
4271
  console.log(require("chalk").red("\n ✖ HyperClaw Bot not configured. Run: hyperclaw bot setup\n"));
@@ -4144,41 +4292,41 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
4144
4292
  });
4145
4293
  botCmd.command("stop").description("Stop HyperClaw Bot (when running in background)").action(async () => {
4146
4294
  const chalk$11 = require("chalk");
4147
- const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-DC3jGsoA.js"));
4295
+ const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-DcQt62PL.js"));
4148
4296
  const stopped = await stopBotProcess();
4149
4297
  if (stopped) console.log(chalk$11.green("\n ✔ HyperClaw Bot stopped\n"));
4150
4298
  else console.log(chalk$11.gray("\n Bot not running in background (no PID file). Use Ctrl+C to stop foreground bot.\n"));
4151
4299
  process.exit(stopped ? 0 : 1);
4152
4300
  });
4153
4301
  memCmd.command("search <query>").description("Search MEMORY.md").action(async (query) => {
4154
- const { searchMemory } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
4302
+ const { searchMemory } = await Promise.resolve().then(() => require("./src-ClYgvXAj.js"));
4155
4303
  await searchMemory(query);
4156
4304
  process.exit(0);
4157
4305
  });
4158
4306
  memCmd.command("auto-show").description("Show auto-extracted memories from MEMORY.md").action(async () => {
4159
- const { showMemory } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
4307
+ const { showMemory } = await Promise.resolve().then(() => require("./src-ClYgvXAj.js"));
4160
4308
  await showMemory();
4161
4309
  process.exit(0);
4162
4310
  });
4163
4311
  memCmd.command("clear").description("Clear all auto-extracted memories").action(async () => {
4164
- const { clearMemory } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
4312
+ const { clearMemory } = await Promise.resolve().then(() => require("./src-ClYgvXAj.js"));
4165
4313
  await clearMemory();
4166
4314
  process.exit(0);
4167
4315
  });
4168
4316
  memCmd.command("save <text>").description("Manually save a fact to MEMORY.md").action(async (text) => {
4169
- const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
4317
+ const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-ClYgvXAj.js"));
4170
4318
  await saveMemoryDirect(text);
4171
4319
  console.log(chalk.default.hex("#06b6d4")(` ✅ Saved: ${text}\n`));
4172
4320
  process.exit(0);
4173
4321
  });
4174
4322
  const pcCmd = program.command("pc").description("PC access — give the AI access to your computer");
4175
4323
  pcCmd.command("status").description("Show PC access status and config").action(async () => {
4176
- const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
4324
+ const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-ClYgvXAj.js"));
4177
4325
  await showPCAccessStatus();
4178
4326
  process.exit(0);
4179
4327
  });
4180
4328
  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) => {
4181
- const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
4329
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-ClYgvXAj.js"));
4182
4330
  const level = opts.level;
4183
4331
  const allowed = [
4184
4332
  "read-only",
@@ -4205,7 +4353,7 @@ pcCmd.command("enable").description("Enable PC access for the AI").option("--lev
4205
4353
  process.exit(0);
4206
4354
  });
4207
4355
  pcCmd.command("disable").description("Disable PC access").action(async () => {
4208
- const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
4356
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-ClYgvXAj.js"));
4209
4357
  await savePCAccessConfig({ enabled: false });
4210
4358
  console.log(chalk.default.hex("#06b6d4")("\n ✅ PC access disabled\n"));
4211
4359
  process.exit(0);
@@ -4230,7 +4378,7 @@ pcCmd.command("log").description("Show PC access audit log").option("-n, --lines
4230
4378
  process.exit(0);
4231
4379
  });
4232
4380
  pcCmd.command("run <command>").description("Run a shell command via PC access (must be enabled)").action(async (command) => {
4233
- const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-BWpeRe8J.js"));
4381
+ const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-ClYgvXAj.js"));
4234
4382
  const cfg = await loadPCAccessConfig();
4235
4383
  if (!cfg.enabled) {
4236
4384
  console.log(chalk.default.red("\n ✖ PC access disabled. Run: hyperclaw pc enable\n"));
@@ -4261,7 +4409,7 @@ program.command("setup").description("Setup wizard — alias for `hyperclaw onbo
4261
4409
  });
4262
4410
  async function runUpdateCheck() {
4263
4411
  try {
4264
- const { checkForUpdates: checkForUpdates$1, notifyUpdateAvailable } = await Promise.resolve().then(() => require("./update-check-CCMXnjxr.js"));
4412
+ const { checkForUpdates: checkForUpdates$1, notifyUpdateAvailable } = await Promise.resolve().then(() => require("./update-check-B-wd-tpa.js"));
4265
4413
  const path$5 = require("path");
4266
4414
  const { readFileSync } = require("fs");
4267
4415
  const pkgPath = path$5.resolve(__dirname, "../package.json");
@@ -4289,7 +4437,7 @@ if (process.argv.length === 2) (async () => {
4289
4437
  console.log(` ✓ ${t.c("hyperclaw --help")} — 📖 all commands\n`);
4290
4438
  } else {
4291
4439
  await new require_banner.Banner().showNeonBanner(false);
4292
- const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-qPUG8PBU.js"));
4440
+ const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-BF29mNbC.js"));
4293
4441
  await new HyperClawWizard$1().run({ wizard: true });
4294
4442
  }
4295
4443
  await runUpdateCheck();