hyperclaw 5.2.5 → 5.2.6

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 (51) hide show
  1. package/dist/audit-NPINyRh4.js +445 -0
  2. package/dist/chat-8E4H6nqx.js +325 -0
  3. package/dist/connector-1_9a4Mhv.js +276 -0
  4. package/dist/connector-BeHsEhpz.js +164 -0
  5. package/dist/connector-DJ63fLj9.js +555 -0
  6. package/dist/connector-Ic8H84de.js +204 -0
  7. package/dist/daemon-DRhU750_.js +7 -0
  8. package/dist/daemon-bJ8IYnkd.js +421 -0
  9. package/dist/delivery-1vTBQ0a0.js +95 -0
  10. package/dist/delivery-BbOfKejh.js +4 -0
  11. package/dist/engine-BjzV25HS.js +7 -0
  12. package/dist/engine-DJSr69DF.js +327 -0
  13. package/dist/heartbeat-engine-0swQl6wg.js +89 -0
  14. package/dist/hub-BuUwiTxh.js +6 -0
  15. package/dist/hub-DIoASRn6.js +512 -0
  16. package/dist/hyperclawbot-CIvGq2IG.js +516 -0
  17. package/dist/inference-BSWFHqzs.js +2854 -0
  18. package/dist/inference-DQiqWbqu.js +8 -0
  19. package/dist/loader-Bpju2Xqs.js +6 -0
  20. package/dist/loader-DRfmh8hU.js +410 -0
  21. package/dist/logger-CnxILOPV.js +86 -0
  22. package/dist/mcp-loader-D-uIqYwB.js +93 -0
  23. package/dist/memory-auto-CK5M1YV8.js +5 -0
  24. package/dist/memory-auto-Cs6XiIxb.js +306 -0
  25. package/dist/node-4_wJsNEN.js +226 -0
  26. package/dist/oauth-flow-CJ7dFXKT.js +148 -0
  27. package/dist/onboard-C1RArB82.js +3865 -0
  28. package/dist/onboard-CQkUrkNk.js +13 -0
  29. package/dist/orchestrator-D9R2u9yL.js +6 -0
  30. package/dist/orchestrator-DMDgfB8j.js +189 -0
  31. package/dist/pairing-CNNtZ8JR.js +6 -0
  32. package/dist/pairing-fGaxBlgG.js +207 -0
  33. package/dist/pc-access-CaE4x3Vt.js +8 -0
  34. package/dist/pc-access-OIwXRyAD.js +858 -0
  35. package/dist/run-main.js +50 -44
  36. package/dist/runner-CFvEFt23.js +1274 -0
  37. package/dist/server-BSCeWSlZ.js +1304 -0
  38. package/dist/server-DIwR4tT3.js +4 -0
  39. package/dist/skill-runtime-CCwGR7iX.js +5 -0
  40. package/dist/skill-runtime-vmBIhuVk.js +104 -0
  41. package/dist/src-3dXyf5GQ.js +458 -0
  42. package/dist/src-BVeLalMV.js +63 -0
  43. package/dist/sub-agent-tools-C1dWyUAR.js +39 -0
  44. package/dist/tts-elevenlabs-F_xjKQ-I.js +64 -0
  45. package/dist/vision-BR5Gdb2s.js +169 -0
  46. package/dist/vision-tools-DuB1QtlE.js +51 -0
  47. package/dist/vision-tools-LvL8RMWR.js +5 -0
  48. package/dist/voice-transcription-D6dK7b9A.js +171 -0
  49. package/dist/website-watch-tools-Cqp7RPvn.js +176 -0
  50. package/dist/website-watch-tools-UPSrnBk2.js +5 -0
  51. package/package.json +1 -1
package/dist/run-main.js CHANGED
@@ -3,19 +3,19 @@ const require_paths = require('./paths-AIyBxIzm.js');
3
3
  const require_paths$1 = require('./paths-DPovhojT.js');
4
4
  require('./env-resolve-DS92g2fk.js');
5
5
  const require_config = require('./config-Br73VMLb.js');
6
- require('./server-CRqwlLX9.js');
7
- const require_daemon = require('./daemon-rXG1-sEx.js');
6
+ require('./server-BSCeWSlZ.js');
7
+ const require_daemon = require('./daemon-bJ8IYnkd.js');
8
8
  const require_gateway = require('./gateway-CzI8dnlS.js');
9
9
  require('./providers-DP8T0QCR.js');
10
- const require_onboard = require('./onboard-cY-Emhr7.js');
10
+ const require_onboard = require('./onboard-C1RArB82.js');
11
11
  require('./theme-CLXvI6Hr.js');
12
- const require_hub = require('./hub-CI4qcd1b.js');
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-Ckvv7vHF.js');
16
+ const require_loader = require('./loader-DRfmh8hU.js');
17
17
  const require_agents_routing = require('./agents-routing-Bz3SstlK.js');
18
- const require_pairing = require('./pairing-BRPzVXzQ.js');
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
21
  const require_security = require('./security-BhhX8wJx.js');
@@ -400,8 +400,10 @@ var GatewayManager$1 = class {
400
400
  async applyTailscaleExposure(exposure, port) {
401
401
  if (exposure === "off") return;
402
402
  try {
403
- if (exposure === "serve") await execAsync$1(`tailscale serve ${port}`);
404
- else if (exposure === "funnel") await execAsync$1(`tailscale funnel ${port}`);
403
+ const safePort = Math.trunc(Number(port));
404
+ if (!Number.isInteger(safePort) || safePort < 1 || safePort > 65535) throw new Error(`Invalid port: ${port}`);
405
+ if (exposure === "serve") await execAsync$1(`tailscale serve ${safePort}`);
406
+ else if (exposure === "funnel") await execAsync$1(`tailscale funnel ${safePort}`);
405
407
  } catch {
406
408
  console.log(chalk.default.yellow("⚠️ Tailscale exposure failed — check tailscale is running"));
407
409
  }
@@ -2532,8 +2534,11 @@ process.on("uncaughtException", (err) => {
2532
2534
  console.error("[hyperclaw] Uncaught exception:", err?.message ?? String(err));
2533
2535
  process.exit(1);
2534
2536
  });
2537
+ function sanitizeForLog(value) {
2538
+ return String(value ?? "").replace(/[\r\n\t]+/g, " ").replace(/[^\x20-\x7e]+/g, "?").slice(0, 200);
2539
+ }
2535
2540
  const program = new commander.Command();
2536
- program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("5.2.5").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.6").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) => {
2537
2542
  const profile = thisCommand.opts().profile;
2538
2543
  if (profile) {
2539
2544
  const os$2 = require("os");
@@ -2678,7 +2683,7 @@ sandboxCmd.command("explain").description("Show effective sandbox mode, tool pol
2678
2683
  const sandboxMode = cfg?.agents?.defaults?.sandbox?.mode ?? "non-main";
2679
2684
  const toolsCfg = cfg?.tools ?? {};
2680
2685
  const { describeToolPolicy, applyToolPolicy } = await Promise.resolve().then(() => require("./tool-policy-TmXx_fpp.js"));
2681
- const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-sWcDdkdR.js"));
2686
+ const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-BVeLalMV.js"));
2682
2687
  const allTools = [
2683
2688
  ...getBuiltinTools(),
2684
2689
  ...getSessionsTools(() => null),
@@ -3079,7 +3084,7 @@ cfgCmd.command("set-service-key <serviceId> [apiKey]").description("Set API key
3079
3084
  cfgCmd.command("schema").description("Show configuration schema").action(() => {
3080
3085
  console.log(chalk.default.bold.hex("#06b6d4")("\n Config schema: ~/.hyperclaw/hyperclaw.json\n"));
3081
3086
  const schema = {
3082
- version: "string (e.g. \"5.2.5\")",
3087
+ version: "string (e.g. \"5.2.6\")",
3083
3088
  workspaceName: "string",
3084
3089
  provider: {
3085
3090
  providerId: "string",
@@ -3390,7 +3395,7 @@ secretsCmd.command("credentials").description("List provider credential files (c
3390
3395
  });
3391
3396
  const securityCmd = program.command("security").description("Security tools");
3392
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) => {
3393
- const { runSecurityAudit } = await Promise.resolve().then(() => require("./audit-CV0gLGaL.js"));
3398
+ const { runSecurityAudit } = await Promise.resolve().then(() => require("./audit-NPINyRh4.js"));
3394
3399
  await runSecurityAudit({
3395
3400
  deep: opts.deep,
3396
3401
  fix: opts.fix,
@@ -3409,7 +3414,7 @@ program.command("osint").description("OSINT / Ethical Hacking mode — configure
3409
3414
  process.exit(0);
3410
3415
  });
3411
3416
  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) => {
3412
- const { runChat } = await Promise.resolve().then(() => require("./chat-CbntPqAD.js"));
3417
+ const { runChat } = await Promise.resolve().then(() => require("./chat-8E4H6nqx.js"));
3413
3418
  await runChat({
3414
3419
  sessionId: opts.session,
3415
3420
  model: opts.model,
@@ -3419,7 +3424,7 @@ program.command("chat").description("Interactive terminal chat with the agent").
3419
3424
  });
3420
3425
  const agentRunCmd = program.command("agent").description("Run agent with thinking control");
3421
3426
  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) => {
3422
- const { runAgent } = await Promise.resolve().then(() => require("./src-sWcDdkdR.js"));
3427
+ const { runAgent } = await Promise.resolve().then(() => require("./src-BVeLalMV.js"));
3423
3428
  await runAgent({
3424
3429
  message: opts.message,
3425
3430
  thinking: opts.thinking,
@@ -3435,7 +3440,7 @@ agentRunCmd.requiredOption("-m, --message <text>", "Message to send to the agent
3435
3440
  });
3436
3441
  const threadsCmd = program.command("threads").description("ACP thread-bound agent sessions");
3437
3442
  threadsCmd.command("list").description("List agent threads").option("--channel <id>", "Filter by channel").option("--active", "Show only active threads").action(async (opts) => {
3438
- const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-sWcDdkdR.js"));
3443
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BVeLalMV.js"));
3439
3444
  const mgr = new ACPThreadManager();
3440
3445
  const threads = await mgr.list({
3441
3446
  channelId: opts.channel,
@@ -3445,7 +3450,7 @@ threadsCmd.command("list").description("List agent threads").option("--channel <
3445
3450
  process.exit(0);
3446
3451
  });
3447
3452
  threadsCmd.command("terminate <id>").description("Terminate a thread").action(async (id) => {
3448
- const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-sWcDdkdR.js"));
3453
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BVeLalMV.js"));
3449
3454
  await new ACPThreadManager().terminate(id);
3450
3455
  console.log(require("chalk").green(`\n ✔ Thread terminated: ${id}\n`));
3451
3456
  process.exit(0);
@@ -3510,22 +3515,22 @@ mcpCmd.command("probe [id]").description("Test MCP server connection").action(as
3510
3515
  });
3511
3516
  const nodeCmd = program.command("node").description("HyperClaw node management (local, remote, android)");
3512
3517
  nodeCmd.command("list").description("List paired nodes").action(async () => {
3513
- const { nodeList } = await Promise.resolve().then(() => require("./node-CRaZw_av.js"));
3518
+ const { nodeList } = await Promise.resolve().then(() => require("./node-4_wJsNEN.js"));
3514
3519
  await nodeList();
3515
3520
  process.exit(0);
3516
3521
  });
3517
3522
  nodeCmd.command("add").description("Add or pair a node").action(async () => {
3518
- const { nodeAdd } = await Promise.resolve().then(() => require("./node-CRaZw_av.js"));
3523
+ const { nodeAdd } = await Promise.resolve().then(() => require("./node-4_wJsNEN.js"));
3519
3524
  await nodeAdd();
3520
3525
  process.exit(0);
3521
3526
  });
3522
3527
  nodeCmd.command("probe [id]").description("Probe node connection").action(async (id) => {
3523
- const { nodeProbe } = await Promise.resolve().then(() => require("./node-CRaZw_av.js"));
3528
+ const { nodeProbe } = await Promise.resolve().then(() => require("./node-4_wJsNEN.js"));
3524
3529
  await nodeProbe(id);
3525
3530
  process.exit(0);
3526
3531
  });
3527
3532
  nodeCmd.command("remove <id>").description("Remove paired node").action(async (id) => {
3528
- const { nodeRemove } = await Promise.resolve().then(() => require("./node-CRaZw_av.js"));
3533
+ const { nodeRemove } = await Promise.resolve().then(() => require("./node-4_wJsNEN.js"));
3529
3534
  await nodeRemove(id);
3530
3535
  process.exit(0);
3531
3536
  });
@@ -3685,7 +3690,7 @@ const logsCmd = program.command("logs").description("View gateway logs");
3685
3690
  logsCmd.option("-n, --lines <n>", "Number of lines to show", "50");
3686
3691
  logsCmd.option("-f, --follow", "Stream logs in real time");
3687
3692
  logsCmd.action(async (opts) => {
3688
- const { tailLog, streamLog } = await Promise.resolve().then(() => require("./logger-ry2oCfdf.js"));
3693
+ const { tailLog, streamLog } = await Promise.resolve().then(() => require("./logger-CnxILOPV.js"));
3689
3694
  if (opts.follow) await streamLog();
3690
3695
  else {
3691
3696
  await tailLog(parseInt(opts.lines));
@@ -3693,7 +3698,7 @@ logsCmd.action(async (opts) => {
3693
3698
  }
3694
3699
  });
3695
3700
  program.command("gateway:serve").description("Start the gateway server in the foreground (used by daemon)").action(async () => {
3696
- const { startGateway } = await Promise.resolve().then(() => require("./server-DqXe03-t.js"));
3701
+ const { startGateway } = await Promise.resolve().then(() => require("./server-DIwR4tT3.js"));
3697
3702
  await startGateway();
3698
3703
  process.on("SIGINT", () => process.exit(0));
3699
3704
  process.on("SIGTERM", () => process.exit(0));
@@ -3791,7 +3796,8 @@ authCmd.command("add <service_id>").description("Add API key for a service (any
3791
3796
  let envContent = "";
3792
3797
  if (await fs$7.pathExists(envPath)) envContent = await fs$7.readFile(envPath, "utf8");
3793
3798
  const envLine = `${envVar}=${apiKey}`;
3794
- const re = new RegExp(`^${envVar}=.*$`, "m");
3799
+ const escapedEnvVar = envVar.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
3800
+ const re = new RegExp(`^${escapedEnvVar}=.*$`, "m");
3795
3801
  if (re.test(envContent)) envContent = envContent.replace(re, envLine);
3796
3802
  else envContent = envContent.trimEnd() + (envContent ? "\n" : "") + envLine + "\n";
3797
3803
  await fs$7.writeFile(envPath, envContent, { mode: 384 });
@@ -3824,7 +3830,7 @@ authCmd.command("oauth <provider>").description("Run full OAuth flow. Providers:
3824
3830
  const chalk$11 = require("chalk");
3825
3831
  const ora$4 = (await import("ora")).default;
3826
3832
  try {
3827
- const { runOAuthFlow } = await Promise.resolve().then(() => require("./oauth-flow-B3S4T_SJ.js"));
3833
+ const { runOAuthFlow } = await Promise.resolve().then(() => require("./oauth-flow-CJ7dFXKT.js"));
3828
3834
  const spinner = ora$4("Starting OAuth flow...").start();
3829
3835
  spinner.text = "Opening browser — complete the consent and return here.";
3830
3836
  const tokens = await runOAuthFlow(provider, {
@@ -3842,10 +3848,10 @@ authCmd.command("oauth <provider>").description("Run full OAuth flow. Providers:
3842
3848
  expires_at,
3843
3849
  token_url: tokenUrl
3844
3850
  });
3845
- console.log(chalk$11.hex("#06b6d4")(`\n ✔ OAuth tokens saved for: ${provider}`));
3846
- console.log(chalk$11.gray(" Set in hyperclaw.json: \"provider\": { \"authType\": \"oauth\", \"providerId\": \"" + provider + "\" }\n"));
3851
+ console.log(chalk$11.hex("#06b6d4")(`\n ✔ OAuth tokens saved for: ${sanitizeForLog(provider)}`));
3852
+ console.log(chalk$11.gray(" Set in hyperclaw.json: \"provider\": { \"authType\": \"oauth\", \"providerId\": \"" + sanitizeForLog(provider) + "\" }\n"));
3847
3853
  } catch (e) {
3848
- console.error(chalk$11.red("\n ✖ OAuth failed: " + e.message + "\n"));
3854
+ console.error(chalk$11.red("\n ✖ OAuth failed: " + sanitizeForLog(e?.message) + "\n"));
3849
3855
  process.exit(1);
3850
3856
  }
3851
3857
  process.exit(0);
@@ -3891,8 +3897,8 @@ authCmd.command("oauth-set <provider>").description("Save OAuth tokens manually
3891
3897
  expires_at,
3892
3898
  token_url: opts.tokenUrl || void 0
3893
3899
  });
3894
- console.log(chalk$11.hex("#06b6d4")(`\n ✔ OAuth tokens saved for provider: ${provider}`));
3895
- console.log(chalk$11.gray(" Set in hyperclaw.json: \"provider\": { \"authType\": \"oauth\", \"providerId\": \"" + provider + "\" }\n"));
3900
+ console.log(chalk$11.hex("#06b6d4")(`\n ✔ OAuth tokens saved for provider: ${sanitizeForLog(provider)}`));
3901
+ console.log(chalk$11.gray(" Set in hyperclaw.json: \"provider\": { \"authType\": \"oauth\", \"providerId\": \"" + sanitizeForLog(provider) + "\" }\n"));
3896
3902
  process.exit(0);
3897
3903
  });
3898
3904
  const workspaceCmd = program.command("workspace").description("Manage agent workspace files");
@@ -3945,13 +3951,13 @@ workspaceCmd.command("show [dir]").description("Show workspace files summary").a
3945
3951
  });
3946
3952
  const botCmd = program.command("bot").description("HyperClaw Bot — companion bot for remote gateway control");
3947
3953
  botCmd.command("status").action(async () => {
3948
- const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-CFz_TKkS.js"));
3954
+ const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-CIvGq2IG.js"));
3949
3955
  await showBotStatus();
3950
3956
  process.exit(0);
3951
3957
  });
3952
3958
  botCmd.command("setup").description("Configure HyperClaw Bot (Telegram token, allowed users)").action(async () => {
3953
3959
  const inquirer$2 = require("inquirer");
3954
- const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-CFz_TKkS.js"));
3960
+ const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-CIvGq2IG.js"));
3955
3961
  const chalk$11 = require("chalk");
3956
3962
  console.log(chalk$11.bold.hex("#06b6d4")("\n 🦅 HYPERCLAW BOT SETUP\n"));
3957
3963
  console.log(chalk$11.gray(" Create a bot at t.me/BotFather, then paste the token below.\n"));
@@ -4013,14 +4019,14 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
4013
4019
  cwd: process.cwd()
4014
4020
  });
4015
4021
  child.unref();
4016
- const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-CFz_TKkS.js"));
4022
+ const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-CIvGq2IG.js"));
4017
4023
  await writeBotPid(child.pid);
4018
4024
  console.log(require("chalk").green(`\n ✔ HyperClaw Bot started in background (PID ${child.pid})`));
4019
4025
  console.log(require("chalk").gray(" Stop with: hyperclaw bot stop\n"));
4020
4026
  process.exit(0);
4021
4027
  return;
4022
4028
  }
4023
- const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-CFz_TKkS.js"));
4029
+ const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-CIvGq2IG.js"));
4024
4030
  const cfg = await loadBotConfig();
4025
4031
  if (!cfg) {
4026
4032
  console.log(require("chalk").red("\n ✖ HyperClaw Bot not configured. Run: hyperclaw bot setup\n"));
@@ -4047,41 +4053,41 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
4047
4053
  });
4048
4054
  botCmd.command("stop").description("Stop HyperClaw Bot (when running in background)").action(async () => {
4049
4055
  const chalk$11 = require("chalk");
4050
- const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-CFz_TKkS.js"));
4056
+ const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-CIvGq2IG.js"));
4051
4057
  const stopped = await stopBotProcess();
4052
4058
  if (stopped) console.log(chalk$11.green("\n ✔ HyperClaw Bot stopped\n"));
4053
4059
  else console.log(chalk$11.gray("\n Bot not running in background (no PID file). Use Ctrl+C to stop foreground bot.\n"));
4054
4060
  process.exit(stopped ? 0 : 1);
4055
4061
  });
4056
4062
  memCmd.command("search <query>").description("Search MEMORY.md").action(async (query) => {
4057
- const { searchMemory } = await Promise.resolve().then(() => require("./src-sWcDdkdR.js"));
4063
+ const { searchMemory } = await Promise.resolve().then(() => require("./src-BVeLalMV.js"));
4058
4064
  await searchMemory(query);
4059
4065
  process.exit(0);
4060
4066
  });
4061
4067
  memCmd.command("auto-show").description("Show auto-extracted memories from MEMORY.md").action(async () => {
4062
- const { showMemory } = await Promise.resolve().then(() => require("./src-sWcDdkdR.js"));
4068
+ const { showMemory } = await Promise.resolve().then(() => require("./src-BVeLalMV.js"));
4063
4069
  await showMemory();
4064
4070
  process.exit(0);
4065
4071
  });
4066
4072
  memCmd.command("clear").description("Clear all auto-extracted memories").action(async () => {
4067
- const { clearMemory } = await Promise.resolve().then(() => require("./src-sWcDdkdR.js"));
4073
+ const { clearMemory } = await Promise.resolve().then(() => require("./src-BVeLalMV.js"));
4068
4074
  await clearMemory();
4069
4075
  process.exit(0);
4070
4076
  });
4071
4077
  memCmd.command("save <text>").description("Manually save a fact to MEMORY.md").action(async (text) => {
4072
- const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-sWcDdkdR.js"));
4078
+ const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-BVeLalMV.js"));
4073
4079
  await saveMemoryDirect(text);
4074
4080
  console.log(chalk.default.hex("#06b6d4")(` ✅ Saved: ${text}\n`));
4075
4081
  process.exit(0);
4076
4082
  });
4077
4083
  const pcCmd = program.command("pc").description("PC access — give the AI access to your computer");
4078
4084
  pcCmd.command("status").description("Show PC access status and config").action(async () => {
4079
- const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-sWcDdkdR.js"));
4085
+ const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-BVeLalMV.js"));
4080
4086
  await showPCAccessStatus();
4081
4087
  process.exit(0);
4082
4088
  });
4083
4089
  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) => {
4084
- const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-sWcDdkdR.js"));
4090
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BVeLalMV.js"));
4085
4091
  const level = opts.level;
4086
4092
  const allowed = [
4087
4093
  "read-only",
@@ -4108,7 +4114,7 @@ pcCmd.command("enable").description("Enable PC access for the AI").option("--lev
4108
4114
  process.exit(0);
4109
4115
  });
4110
4116
  pcCmd.command("disable").description("Disable PC access").action(async () => {
4111
- const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-sWcDdkdR.js"));
4117
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BVeLalMV.js"));
4112
4118
  await savePCAccessConfig({ enabled: false });
4113
4119
  console.log(chalk.default.hex("#06b6d4")("\n ✅ PC access disabled\n"));
4114
4120
  process.exit(0);
@@ -4133,7 +4139,7 @@ pcCmd.command("log").description("Show PC access audit log").option("-n, --lines
4133
4139
  process.exit(0);
4134
4140
  });
4135
4141
  pcCmd.command("run <command>").description("Run a shell command via PC access (must be enabled)").action(async (command) => {
4136
- const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-sWcDdkdR.js"));
4142
+ const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-BVeLalMV.js"));
4137
4143
  const cfg = await loadPCAccessConfig();
4138
4144
  if (!cfg.enabled) {
4139
4145
  console.log(chalk.default.red("\n ✖ PC access disabled. Run: hyperclaw pc enable\n"));
@@ -4191,7 +4197,7 @@ if (process.argv.length === 2) (async () => {
4191
4197
  console.log(` ${t.c("hyperclaw --help")} — all commands\n`);
4192
4198
  } else {
4193
4199
  await new require_onboard.Banner().showNeonBanner(false);
4194
- const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-CO0j5jJ1.js"));
4200
+ const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-CQkUrkNk.js"));
4195
4201
  await new HyperClawWizard$1().run({ wizard: true });
4196
4202
  }
4197
4203
  await runUpdateCheck();
@@ -4201,7 +4207,7 @@ else program.parseAsync(process.argv).then(async () => {
4201
4207
  await runUpdateCheck();
4202
4208
  process.exit(0);
4203
4209
  }).catch((e) => {
4204
- console.error(e.message);
4210
+ console.error(sanitizeForLog(e?.message));
4205
4211
  process.exit(1);
4206
4212
  });
4207
4213