hyperclaw 5.0.0 → 5.0.1

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 (65) hide show
  1. package/README.md +204 -69
  2. package/dist/api-keys-guide-CGn5BSF7.js +149 -0
  3. package/dist/audit-BJohI_vC.js +441 -0
  4. package/dist/bounty-tools-CY_i91DU.js +211 -0
  5. package/dist/claw-tasks-Cyzdbhz_.js +80 -0
  6. package/dist/cost-tracker-Ca1UPZ33.js +103 -0
  7. package/dist/credentials-store-CA8UtK0T.js +77 -0
  8. package/dist/credentials-store-Cm7DH-kh.js +4 -0
  9. package/dist/cron-tasks-_pqQCmxc.js +82 -0
  10. package/dist/daemon-7ViroziB.js +5 -0
  11. package/dist/daemon-BfyKmZhr.js +318 -0
  12. package/dist/delivery-DVHmv1IR.js +4 -0
  13. package/dist/delivery-DpMX0Yyc.js +95 -0
  14. package/dist/destructive-gate-DZt71UZR.js +101 -0
  15. package/dist/engine-B0kLfRL0.js +256 -0
  16. package/dist/engine-BJUpRUOv.js +7 -0
  17. package/dist/env-resolve-17ekEU6p.js +10 -0
  18. package/dist/env-resolve-Z2XF6leB.js +115 -0
  19. package/dist/heartbeat-engine-Ut6pXBD6.js +83 -0
  20. package/dist/hub-9LaKnLjY.js +6 -0
  21. package/dist/hub-CfwUz9YW.js +515 -0
  22. package/dist/hyperclawbot-CBiDSKsa.js +505 -0
  23. package/dist/inference-0mlFQqIm.js +922 -0
  24. package/dist/inference-SzqFe_nk.js +6 -0
  25. package/dist/knowledge-graph-DE5lSF02.js +131 -0
  26. package/dist/loader-BkDi8MD9.js +400 -0
  27. package/dist/loader-DI2qDRPC.js +4 -0
  28. package/dist/logger-Cp8wC7F8.js +83 -0
  29. package/dist/manager-B2Gls5RG.js +218 -0
  30. package/dist/manager-CWNSML5D.js +117 -0
  31. package/dist/manager-SJe9gt-q.js +4 -0
  32. package/dist/mcp-loader-CvxRDtPC.js +94 -0
  33. package/dist/memory-auto-CpQHZlEJ.js +306 -0
  34. package/dist/memory-auto-Z6LCf-iK.js +5 -0
  35. package/dist/memory-integration-g2vxwgoE.js +91 -0
  36. package/dist/moltbook-Cl8cQfxJ.js +81 -0
  37. package/dist/nodes-registry-C9dCFwjh.js +52 -0
  38. package/dist/oauth-flow-CeaaGAz0.js +150 -0
  39. package/dist/oauth-provider-B4dzn56l.js +110 -0
  40. package/dist/observability-nZ3CBIxG.js +89 -0
  41. package/dist/onboard-BBBWcfhp.js +10 -0
  42. package/dist/onboard-Bw28IRQ3.js +4070 -0
  43. package/dist/orchestrator-BovkM63z.js +6 -0
  44. package/dist/orchestrator-DSbpkP1X.js +189 -0
  45. package/dist/osint-B4_m3VHQ.js +277 -0
  46. package/dist/pending-approval-BgNjjuI2.js +22 -0
  47. package/dist/run-main.js +82 -67
  48. package/dist/runner-CJFJUtPm.js +1271 -0
  49. package/dist/sdk/index.js +2 -2
  50. package/dist/sdk/index.mjs +2 -2
  51. package/dist/server-Brl_HQUB.js +1255 -0
  52. package/dist/server-DhfipkwN.js +4 -0
  53. package/dist/skill-runtime-BXWd-Ktf.js +102 -0
  54. package/dist/skill-runtime-jgklm02e.js +5 -0
  55. package/dist/src-Bhybpk1J.js +63 -0
  56. package/dist/src-DMJ4-uqk.js +458 -0
  57. package/dist/sub-agent-tools-DHY-4WWM.js +39 -0
  58. package/dist/tool-policy-DZvF8xlQ.js +189 -0
  59. package/dist/tts-elevenlabs-C06nUxMK.js +61 -0
  60. package/dist/update-check-w4XuxVl7.js +81 -0
  61. package/dist/vision-JOtOS1Br.js +121 -0
  62. package/dist/vision-tools-CB28ZCO_.js +5 -0
  63. package/dist/vision-tools-vPPwQ-0N.js +51 -0
  64. package/dist/voice-transcription-DBo5hXmu.js +138 -0
  65. package/package.json +1 -1
package/dist/run-main.js CHANGED
@@ -1,16 +1,16 @@
1
1
  const require_chunk = require('./chunk-jS-bbMI5.js');
2
2
  require('./paths-AIyBxIzm.js');
3
3
  require('./paths-DPovhojT.js');
4
- require('./env-resolve-CmGWhWXJ.js');
5
- const require_onboard = require('./onboard-BXNXCQp4.js');
6
- require('./server-Dh3JlBFB.js');
7
- const require_daemon = require('./daemon-Bg4GtCmc.js');
4
+ require('./env-resolve-Z2XF6leB.js');
5
+ const require_onboard = require('./onboard-Bw28IRQ3.js');
6
+ require('./server-Brl_HQUB.js');
7
+ const require_daemon = require('./daemon-BfyKmZhr.js');
8
8
  require('./theme-DcxwcUgZ.js');
9
- const require_hub = require('./hub-D0XwdjM-.js');
9
+ const require_hub = require('./hub-CfwUz9YW.js');
10
10
  const require_manager = require('./manager-rgCsaWT1.js');
11
11
  const require_manager$1 = require('./manager-03ipO9R0.js');
12
12
  const require_memory = require('./memory-DsS_eFvJ.js');
13
- const require_loader = require('./loader-CnEdOyjT.js');
13
+ const require_loader = require('./loader-BkDi8MD9.js');
14
14
  const require_agents_routing = require('./agents-routing-ChHiZp36.js');
15
15
  const require_pairing = require('./pairing-6iM27aD8.js');
16
16
  const require_doctor = require('./doctor-BvCe8BBk.js');
@@ -38,7 +38,7 @@ var Dashboard = class {
38
38
  console.clear();
39
39
  await this.drawDashboard();
40
40
  if (live) {
41
- console.log(chalk.default.hex("#06b6d4")("🔴 LIVE MODE Ctrl+C to exit\n"));
41
+ console.log(chalk.default.hex("#06b6d4")("?? LIVE MODE Ctrl+C to exit\n"));
42
42
  this.startLiveUpdates();
43
43
  }
44
44
  }
@@ -53,44 +53,44 @@ var Dashboard = class {
53
53
  const model = cfg?.provider?.modelId || "openrouter/auto";
54
54
  const channels = (cfg?.channels ?? cfg?.gateway?.enabledChannels ?? ["cli"]).join(", ");
55
55
  const isRunning = await gm.isRunning(port);
56
- const statusDot = isRunning ? chalk.default.hex("#06b6d4")("") : chalk.default.gray("");
56
+ const statusDot = isRunning ? chalk.default.hex("#06b6d4")("?") : chalk.default.gray("0");
57
57
  const statusText = isRunning ? chalk.default.hex("#06b6d4")("ONLINE") : chalk.default.gray("OFFLINE");
58
58
  const w = 72;
59
- const line = "".repeat(w);
59
+ const line = "=".repeat(w);
60
60
  const c = chalk.default.hex("#06b6d4");
61
61
  const row = (content) => {
62
62
  const stripped = content.replace(/\x1b\[[0-9;]*m/g, "");
63
63
  const pad = Math.max(0, w - stripped.length - 1);
64
- return c(`║ `) + content + " ".repeat(pad) + c(`║`);
64
+ return c(`� `) + content + " ".repeat(pad) + c(`�`);
65
65
  };
66
- console.log(c(`╔${line}╗`));
67
- console.log(c(`║`) + chalk.default.bold.hex("#06b6d4")(`${"🦅 HYPERCLAW v5.0.0 GATEWAY DASHBOARD".padStart(45).padEnd(w)}`) + c(`║`));
68
- console.log(c(`╠${line}╣`));
69
- console.log(row(`${statusDot} Gateway ${statusText} ${chalk.default.gray("")} ws://localhost:${port} ${chalk.default.gray("")} Agent: ${c(agent)}`));
70
- console.log(row(`${c("")} Model ${chalk.default.gray(model.slice(0, 30))} ${chalk.default.gray("")} User: ${c(user)}`));
71
- console.log(c(`╠${"".repeat(w)}╣`));
66
+ console.log(c(`-${line}�`));
67
+ console.log(c(`�`) + chalk.default.bold.hex("#06b6d4")(`${"?? HYPERCLAW v5.0.1 GATEWAY DASHBOARD".padStart(45).padEnd(w)}`) + c(`�`));
68
+ console.log(c(`�${line}�`));
69
+ console.log(row(`${statusDot} Gateway ${statusText} ${chalk.default.gray("")} ws://localhost:${port} ${chalk.default.gray("")} Agent: ${c(agent)}`));
70
+ console.log(row(`${c("?")} Model ${chalk.default.gray(model.slice(0, 30))} ${chalk.default.gray("")} User: ${c(user)}`));
71
+ console.log(c(`�${"-".repeat(w)}�`));
72
72
  console.log(row(chalk.default.bold("ACTIVE CHANNELS")));
73
73
  const chList = (channels || "cli").split(", ");
74
74
  for (let i = 0; i < chList.length; i += 3) {
75
- const group = chList.slice(i, i + 3).map((ch) => ` ${c("")} ${ch.padEnd(12)}`).join("");
75
+ const group = chList.slice(i, i + 3).map((ch) => ` ${c("?")} ${ch.padEnd(12)}`).join("");
76
76
  console.log(row(group));
77
77
  }
78
- console.log(c(`╠${"".repeat(w)}╣`));
78
+ console.log(c(`�${"-".repeat(w)}�`));
79
79
  console.log(row(chalk.default.bold("INSTALLED SKILLS")));
80
80
  if (installed.length === 0) console.log(row(chalk.default.gray(" No skills installed. Run: hyperclaw hub")));
81
81
  else for (let i = 0; i < installed.length; i += 3) {
82
- const group = installed.slice(i, i + 3).map((s) => ` ${c("")} ${s.name.slice(0, 14).padEnd(14)}`).join("");
82
+ const group = installed.slice(i, i + 3).map((s) => ` ${c("?")} ${s.name.slice(0, 14).padEnd(14)}`).join("");
83
83
  console.log(row(group));
84
84
  }
85
- console.log(c(`╠${"".repeat(w)}╣`));
85
+ console.log(c(`�${"-".repeat(w)}�`));
86
86
  console.log(row(chalk.default.bold("RECENT ACTIVITY")));
87
87
  const now = (/* @__PURE__ */ new Date()).toLocaleTimeString();
88
88
  console.log(row(` [${now}] Gateway heartbeat: ${c("OK")}`));
89
- console.log(row(` [${now}] AGENTS.md loaded rules active`));
89
+ console.log(row(` [${now}] AGENTS.md loaded rules active`));
90
90
  console.log(row(` [${now}] Channels monitoring...`));
91
- console.log(c(`╠${"".repeat(w)}╣`));
92
- console.log(row(chalk.default.gray("Commands: [d] ") + chalk.default.red("🩸 daemon") + chalk.default.gray(" [h] hub [g] gateway [m] memory [q] quit")));
93
- console.log(c(`╚${line}╝\n`));
91
+ console.log(c(`�${"-".repeat(w)}�`));
92
+ console.log(row(chalk.default.gray("Commands: [d] ") + chalk.default.red("?? daemon") + chalk.default.gray(" [h] hub [g] gateway [m] memory [q] quit")));
93
+ console.log(c(`L${line}-\n`));
94
94
  }
95
95
  startLiveUpdates() {
96
96
  let tick = 0;
@@ -2426,7 +2426,7 @@ var init_queue = require_chunk.__esm({ "src/delivery/queue.ts"() {
2426
2426
  //#endregion
2427
2427
  //#region src/cli/run-main.ts
2428
2428
  const program = new commander.Command();
2429
- program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("5.0.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) => {
2429
+ program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("5.0.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) => {
2430
2430
  const profile = thisCommand.opts().profile;
2431
2431
  if (profile) {
2432
2432
  const os$8 = require("os");
@@ -2568,8 +2568,8 @@ sandboxCmd.command("explain").description("Show effective sandbox mode, tool pol
2568
2568
  } catch {}
2569
2569
  const sandboxMode = cfg?.agents?.defaults?.sandbox?.mode ?? "non-main";
2570
2570
  const toolsCfg = cfg?.tools ?? {};
2571
- const { describeToolPolicy, applyToolPolicy } = await Promise.resolve().then(() => require("./tool-policy-CNT-mF2Z.js"));
2572
- const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-BxPHKO5x.js"));
2571
+ const { describeToolPolicy, applyToolPolicy } = await Promise.resolve().then(() => require("./tool-policy-DZvF8xlQ.js"));
2572
+ const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
2573
2573
  const allTools = [
2574
2574
  ...getBuiltinTools(),
2575
2575
  ...getSessionsTools(() => null),
@@ -2912,7 +2912,7 @@ cfgCmd.command("set-service-key <serviceId> [apiKey]").description("Set API key
2912
2912
  cfgCmd.command("schema").description("Show configuration schema").action(() => {
2913
2913
  console.log(chalk.default.bold.hex("#06b6d4")("\n Config schema: ~/.hyperclaw/config.json\n"));
2914
2914
  const schema = {
2915
- version: "string (e.g. \"5.0.0\")",
2915
+ version: "string (e.g. \"5.0.1\")",
2916
2916
  workspaceName: "string",
2917
2917
  provider: {
2918
2918
  providerId: "string",
@@ -3183,39 +3183,39 @@ themeCmd.command("preview").description("Preview all themes side-by-side").actio
3183
3183
  });
3184
3184
  const secretsCmd = program.command("secrets").description("External secrets management");
3185
3185
  secretsCmd.command("audit").description("Audit all required secrets").option("--required-by <ids>", "Filter by skill/provider IDs (comma-separated)").action(async (opts) => {
3186
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-FCgF1plu.js"));
3186
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-B2Gls5RG.js"));
3187
3187
  const filter = opts.requiredBy?.split(",");
3188
3188
  await new SecretsManager().audit(filter);
3189
3189
  process.exit(0);
3190
3190
  });
3191
3191
  secretsCmd.command("set <KEY=value>").description("Set a secret in .env file").action(async (kv) => {
3192
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-FCgF1plu.js"));
3192
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-B2Gls5RG.js"));
3193
3193
  await new SecretsManager().set(kv);
3194
3194
  process.exit(0);
3195
3195
  });
3196
3196
  secretsCmd.command("apply").description("Write secrets from .env to shell config (~/.bashrc, ~/.zshrc)").action(async () => {
3197
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-FCgF1plu.js"));
3197
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-B2Gls5RG.js"));
3198
3198
  await new SecretsManager().apply();
3199
3199
  process.exit(0);
3200
3200
  });
3201
3201
  secretsCmd.command("reload").description("Reload secrets into running gateway").action(async () => {
3202
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-FCgF1plu.js"));
3202
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-B2Gls5RG.js"));
3203
3203
  await new SecretsManager().reload();
3204
3204
  process.exit(0);
3205
3205
  });
3206
3206
  secretsCmd.command("remove <key>").description("Remove a secret from .env").action(async (key) => {
3207
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-FCgF1plu.js"));
3207
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-B2Gls5RG.js"));
3208
3208
  await new SecretsManager().remove(key);
3209
3209
  process.exit(0);
3210
3210
  });
3211
3211
  secretsCmd.command("credentials").description("List provider credential files (credentials/*.json)").action(async () => {
3212
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-C6ir0Dae.js"));
3212
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-Cm7DH-kh.js"));
3213
3213
  await new CredentialsStore().showList();
3214
3214
  process.exit(0);
3215
3215
  });
3216
3216
  const securityCmd = program.command("security").description("Security tools");
3217
3217
  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) => {
3218
- const { runSecurityAudit } = await Promise.resolve().then(() => require("./audit-BaIiyWFu.js"));
3218
+ const { runSecurityAudit } = await Promise.resolve().then(() => require("./audit-BJohI_vC.js"));
3219
3219
  await runSecurityAudit({
3220
3220
  deep: opts.deep,
3221
3221
  fix: opts.fix,
@@ -3223,9 +3223,24 @@ securityCmd.command("audit").description("Security audit — file permissions, D
3223
3223
  });
3224
3224
  process.exit(0);
3225
3225
  });
3226
+ program.command("osint").description("OSINT / Ethical Hacking mode — configure HyperClaw for security research").argument("[workflow]", "Workflow preset: recon | bugbounty | pentest | footprint | custom").option("--show", "Show current OSINT profile").option("--reset", "Clear OSINT profile and disable OSINT mode").action(async (workflow, opts) => {
3227
+ const { osintSetup, osintQuickStart } = await Promise.resolve().then(() => require("./osint-B4_m3VHQ.js"));
3228
+ if (opts.show || opts.reset) await osintSetup({
3229
+ show: opts.show,
3230
+ reset: opts.reset
3231
+ });
3232
+ else if (workflow === "setup" || workflow) await osintSetup({ mode: workflow });
3233
+ else await osintQuickStart();
3234
+ process.exit(0);
3235
+ });
3236
+ program.command("osint setup").description("Interactive OSINT session setup wizard").action(async () => {
3237
+ const { osintSetup } = await Promise.resolve().then(() => require("./osint-B4_m3VHQ.js"));
3238
+ await osintSetup({});
3239
+ process.exit(0);
3240
+ });
3226
3241
  const agentRunCmd = program.command("agent").description("Run agent with thinking control");
3227
3242
  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) => {
3228
- const { runAgent } = await Promise.resolve().then(() => require("./src-BxPHKO5x.js"));
3243
+ const { runAgent } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3229
3244
  await runAgent({
3230
3245
  message: opts.message,
3231
3246
  thinking: opts.thinking,
@@ -3241,7 +3256,7 @@ agentRunCmd.requiredOption("-m, --message <text>", "Message to send to the agent
3241
3256
  });
3242
3257
  const threadsCmd = program.command("threads").description("ACP thread-bound agent sessions");
3243
3258
  threadsCmd.command("list").description("List agent threads").option("--channel <id>", "Filter by channel").option("--active", "Show only active threads").action(async (opts) => {
3244
- const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BxPHKO5x.js"));
3259
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3245
3260
  const mgr = new ACPThreadManager();
3246
3261
  const threads = await mgr.list({
3247
3262
  channelId: opts.channel,
@@ -3251,7 +3266,7 @@ threadsCmd.command("list").description("List agent threads").option("--channel <
3251
3266
  process.exit(0);
3252
3267
  });
3253
3268
  threadsCmd.command("terminate <id>").description("Terminate a thread").action(async (id) => {
3254
- const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BxPHKO5x.js"));
3269
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3255
3270
  await new ACPThreadManager().terminate(id);
3256
3271
  console.log(require("chalk").green(`\n ✔ Thread terminated: ${id}\n`));
3257
3272
  process.exit(0);
@@ -3378,7 +3393,7 @@ gmailCmd.command("watch-setup").description("Register Gmail watch for push notif
3378
3393
  const cronCmd = program.command("cron").description("Scheduled tasks (cron → agent prompt)");
3379
3394
  cronCmd.command("list").action(async () => {
3380
3395
  const chalk$11 = require("chalk");
3381
- const { loadCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-Bli7Kzd2.js"));
3396
+ const { loadCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-_pqQCmxc.js"));
3382
3397
  const tasks = await loadCronTasks();
3383
3398
  console.log(chalk$11.bold.cyan("\n ⏰ CRON TASKS\n"));
3384
3399
  if (tasks.length === 0) {
@@ -3398,7 +3413,7 @@ cronCmd.command("list").action(async () => {
3398
3413
  });
3399
3414
  cronCmd.command("add").arguments("<schedule> <prompt>").option("-n, --name <name>", "Task name").action(async (schedule, prompt, opts) => {
3400
3415
  const chalk$11 = require("chalk");
3401
- const { loadCronTasks, addCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-Bli7Kzd2.js"));
3416
+ const { loadCronTasks, addCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-_pqQCmxc.js"));
3402
3417
  await loadCronTasks();
3403
3418
  addCronTask(schedule, prompt, opts.name);
3404
3419
  await saveCronTasks();
@@ -3408,7 +3423,7 @@ cronCmd.command("add").arguments("<schedule> <prompt>").option("-n, --name <name
3408
3423
  });
3409
3424
  cronCmd.command("remove <id>").action(async (id) => {
3410
3425
  const chalk$11 = require("chalk");
3411
- const { loadCronTasks, removeCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-Bli7Kzd2.js"));
3426
+ const { loadCronTasks, removeCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-_pqQCmxc.js"));
3412
3427
  await loadCronTasks();
3413
3428
  if (removeCronTask(id)) {
3414
3429
  await saveCronTasks();
@@ -3465,20 +3480,20 @@ program.command("nodes").description("List connected mobile nodes (iOS/Android C
3465
3480
  });
3466
3481
  const whCmd = program.command("webhooks").description("Webhook endpoint management");
3467
3482
  whCmd.command("list").action(async () => {
3468
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BpDfbDjg.js"));
3483
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager-CWNSML5D.js"));
3469
3484
  const m = new WebhookManager();
3470
3485
  await m.load();
3471
3486
  m.showList();
3472
3487
  process.exit(0);
3473
3488
  });
3474
3489
  whCmd.command("remove <id>").action(async (id) => {
3475
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BpDfbDjg.js"));
3490
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager-CWNSML5D.js"));
3476
3491
  const m = new WebhookManager();
3477
3492
  await m.remove(id);
3478
3493
  process.exit(0);
3479
3494
  });
3480
3495
  whCmd.command("toggle <id>").action(async (id) => {
3481
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BpDfbDjg.js"));
3496
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager-CWNSML5D.js"));
3482
3497
  const m = new WebhookManager();
3483
3498
  await m.toggle(id);
3484
3499
  process.exit(0);
@@ -3487,7 +3502,7 @@ const logsCmd = program.command("logs").description("View gateway logs");
3487
3502
  logsCmd.option("-n, --lines <n>", "Number of lines to show", "50");
3488
3503
  logsCmd.option("-f, --follow", "Stream logs in real time");
3489
3504
  logsCmd.action(async (opts) => {
3490
- const { tailLog, streamLog } = await Promise.resolve().then(() => require("./logger-ybOp7VOC.js"));
3505
+ const { tailLog, streamLog } = await Promise.resolve().then(() => require("./logger-Cp8wC7F8.js"));
3491
3506
  if (opts.follow) await streamLog();
3492
3507
  else {
3493
3508
  await tailLog(parseInt(opts.lines));
@@ -3495,7 +3510,7 @@ logsCmd.action(async (opts) => {
3495
3510
  }
3496
3511
  });
3497
3512
  program.command("gateway:serve").description("Start the gateway server in the foreground (used by daemon)").action(async () => {
3498
- const { startGateway } = await Promise.resolve().then(() => require("./server-D4wVHiX9.js"));
3513
+ const { startGateway } = await Promise.resolve().then(() => require("./server-DhfipkwN.js"));
3499
3514
  await startGateway();
3500
3515
  process.on("SIGINT", () => process.exit(0));
3501
3516
  process.on("SIGTERM", () => process.exit(0));
@@ -3548,9 +3563,9 @@ const authCmd = program.command("auth").description("OAuth and provider credenti
3548
3563
  authCmd.command("add <service_id>").description("Add API key for a service (any provider we do not ship). Stored in credentials/ and .env.").option("--key <api_key>", "API key (prompts if omitted)").option("--base-url <url>", "Base URL (optional, e.g. https://api.example.com)").option("--env-var <name>", "Env var name (default: <SERVICE_ID>_API_KEY)").action(async (serviceId, opts) => {
3549
3564
  const chalk$11 = require("chalk");
3550
3565
  const inquirer$2 = require("inquirer");
3551
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-C6ir0Dae.js"));
3566
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-Cm7DH-kh.js"));
3552
3567
  const { getHyperClawDir, getEnvFilePath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3553
- const { getApiKeyGuide, GENERIC_API_KEY_STEPS } = await Promise.resolve().then(() => require("./api-keys-guide-BCcOl0Q7.js"));
3568
+ const { getApiKeyGuide, GENERIC_API_KEY_STEPS } = await Promise.resolve().then(() => require("./api-keys-guide-CGn5BSF7.js"));
3554
3569
  const fs$7 = await import("fs-extra");
3555
3570
  const path$7 = await import("path");
3556
3571
  const guide = getApiKeyGuide(serviceId);
@@ -3602,7 +3617,7 @@ authCmd.command("add <service_id>").description("Add API key for a service (any
3602
3617
  });
3603
3618
  authCmd.command("remove <service_id>").description("Remove API key for a service from credentials and .env").action(async (serviceId) => {
3604
3619
  const chalk$11 = require("chalk");
3605
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-C6ir0Dae.js"));
3620
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-Cm7DH-kh.js"));
3606
3621
  const { getHyperClawDir, getEnvFilePath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3607
3622
  const fs$7 = await import("fs-extra");
3608
3623
  const safeId = serviceId.replace(/[^a-zA-Z0-9_-]/g, "_").toLowerCase();
@@ -3622,7 +3637,7 @@ authCmd.command("oauth <provider>").description("Run full OAuth flow. Providers:
3622
3637
  const chalk$11 = require("chalk");
3623
3638
  const ora$4 = (await import("ora")).default;
3624
3639
  try {
3625
- const { runOAuthFlow } = await Promise.resolve().then(() => require("./oauth-flow-DQPvMHRH.js"));
3640
+ const { runOAuthFlow } = await Promise.resolve().then(() => require("./oauth-flow-CeaaGAz0.js"));
3626
3641
  const spinner = ora$4("Starting OAuth flow...").start();
3627
3642
  spinner.text = "Opening browser — complete the consent and return here.";
3628
3643
  const tokens = await runOAuthFlow(provider, {
@@ -3630,7 +3645,7 @@ authCmd.command("oauth <provider>").description("Run full OAuth flow. Providers:
3630
3645
  clientSecret: opts.clientSecret
3631
3646
  });
3632
3647
  spinner.stop();
3633
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-Uo4Nib_c.js"));
3648
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-B4dzn56l.js"));
3634
3649
  const now = Math.floor(Date.now() / 1e3);
3635
3650
  const expires_at = tokens.expires_in ? now + tokens.expires_in : void 0;
3636
3651
  const tokenUrl = provider === "google" || provider === "google-gmail" ? "https://oauth2.googleapis.com/token" : provider === "microsoft" ? "https://login.microsoftonline.com/common/oauth2/v2.0/token" : void 0;
@@ -3665,7 +3680,7 @@ authCmd.command("setup-token <provider>").description("Save setup token (Anthrop
3665
3680
  console.log(chalk$11.red("\n ✖ No token provided.\n"));
3666
3681
  process.exit(1);
3667
3682
  }
3668
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-Uo4Nib_c.js"));
3683
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-B4dzn56l.js"));
3669
3684
  await writeOAuthToken("anthropic-setup", {
3670
3685
  access_token: token.trim(),
3671
3686
  token_url: "https://api.anthropic.com"
@@ -3676,7 +3691,7 @@ authCmd.command("setup-token <provider>").description("Save setup token (Anthrop
3676
3691
  });
3677
3692
  authCmd.command("oauth-set <provider>").description("Save OAuth tokens manually (access_token, refresh_token, etc.) to ~/.hyperclaw/oauth-<provider>.json").option("--token <access_token>", "Access token").option("--refresh <refresh_token>", "Refresh token (optional)").option("--expires-in <seconds>", "Token lifetime in seconds (optional)").option("--token-url <url>", "Refresh endpoint URL (optional)").action(async (provider, opts) => {
3678
3693
  const chalk$11 = require("chalk");
3679
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-Uo4Nib_c.js"));
3694
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-B4dzn56l.js"));
3680
3695
  const access_token = opts.token || process.env.OAUTH_ACCESS_TOKEN;
3681
3696
  if (!access_token) {
3682
3697
  console.log(chalk$11.red("\n ✖ Provide --token <access_token> or set OAUTH_ACCESS_TOKEN\n"));
@@ -3743,13 +3758,13 @@ workspaceCmd.command("show [dir]").description("Show workspace files summary").a
3743
3758
  });
3744
3759
  const botCmd = program.command("bot").description("HyperClaw Bot — companion bot for remote gateway control");
3745
3760
  botCmd.command("status").action(async () => {
3746
- const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-zvczQgKx.js"));
3761
+ const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-CBiDSKsa.js"));
3747
3762
  await showBotStatus();
3748
3763
  process.exit(0);
3749
3764
  });
3750
3765
  botCmd.command("setup").description("Configure HyperClaw Bot (Telegram token, allowed users)").action(async () => {
3751
3766
  const inquirer$2 = require("inquirer");
3752
- const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-zvczQgKx.js"));
3767
+ const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-CBiDSKsa.js"));
3753
3768
  const chalk$11 = require("chalk");
3754
3769
  console.log(chalk$11.bold.hex("#06b6d4")("\n 🦅 HYPERCLAW BOT SETUP\n"));
3755
3770
  console.log(chalk$11.gray(" Create a bot at t.me/BotFather, then paste the token below.\n"));
@@ -3811,14 +3826,14 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
3811
3826
  cwd: process.cwd()
3812
3827
  });
3813
3828
  child.unref();
3814
- const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-zvczQgKx.js"));
3829
+ const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-CBiDSKsa.js"));
3815
3830
  await writeBotPid(child.pid);
3816
3831
  console.log(require("chalk").green(`\n ✔ HyperClaw Bot started in background (PID ${child.pid})`));
3817
3832
  console.log(require("chalk").gray(" Stop with: hyperclaw bot stop\n"));
3818
3833
  process.exit(0);
3819
3834
  return;
3820
3835
  }
3821
- const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-zvczQgKx.js"));
3836
+ const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-CBiDSKsa.js"));
3822
3837
  const cfg = await loadBotConfig();
3823
3838
  if (!cfg) {
3824
3839
  console.log(require("chalk").red("\n ✖ HyperClaw Bot not configured. Run: hyperclaw bot setup\n"));
@@ -3845,41 +3860,41 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
3845
3860
  });
3846
3861
  botCmd.command("stop").description("Stop HyperClaw Bot (when running in background)").action(async () => {
3847
3862
  const chalk$11 = require("chalk");
3848
- const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-zvczQgKx.js"));
3863
+ const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-CBiDSKsa.js"));
3849
3864
  const stopped = await stopBotProcess();
3850
3865
  if (stopped) console.log(chalk$11.green("\n ✔ HyperClaw Bot stopped\n"));
3851
3866
  else console.log(chalk$11.gray("\n Bot not running in background (no PID file). Use Ctrl+C to stop foreground bot.\n"));
3852
3867
  process.exit(stopped ? 0 : 0);
3853
3868
  });
3854
3869
  memCmd.command("search <query>").description("Search MEMORY.md").action(async (query) => {
3855
- const { searchMemory } = await Promise.resolve().then(() => require("./src-BxPHKO5x.js"));
3870
+ const { searchMemory } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3856
3871
  await searchMemory(query);
3857
3872
  process.exit(0);
3858
3873
  });
3859
3874
  memCmd.command("auto-show").description("Show auto-extracted memories from MEMORY.md").action(async () => {
3860
- const { showMemory } = await Promise.resolve().then(() => require("./src-BxPHKO5x.js"));
3875
+ const { showMemory } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3861
3876
  await showMemory();
3862
3877
  process.exit(0);
3863
3878
  });
3864
3879
  memCmd.command("clear").description("Clear all auto-extracted memories").action(async () => {
3865
- const { clearMemory } = await Promise.resolve().then(() => require("./src-BxPHKO5x.js"));
3880
+ const { clearMemory } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3866
3881
  await clearMemory();
3867
3882
  process.exit(0);
3868
3883
  });
3869
3884
  memCmd.command("save <text>").description("Manually save a fact to MEMORY.md").action(async (text) => {
3870
- const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-BxPHKO5x.js"));
3885
+ const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3871
3886
  await saveMemoryDirect(text);
3872
3887
  console.log(chalk.default.hex("#06b6d4")(` ✅ Saved: ${text}\n`));
3873
3888
  process.exit(0);
3874
3889
  });
3875
3890
  const pcCmd = program.command("pc").description("PC access — give the AI access to your computer");
3876
3891
  pcCmd.command("status").description("Show PC access status and config").action(async () => {
3877
- const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-BxPHKO5x.js"));
3892
+ const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3878
3893
  await showPCAccessStatus();
3879
3894
  process.exit(0);
3880
3895
  });
3881
3896
  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) => {
3882
- const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BxPHKO5x.js"));
3897
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3883
3898
  const level = opts.level;
3884
3899
  const allowed = [
3885
3900
  "read-only",
@@ -3906,7 +3921,7 @@ pcCmd.command("enable").description("Enable PC access for the AI").option("--lev
3906
3921
  process.exit(0);
3907
3922
  });
3908
3923
  pcCmd.command("disable").description("Disable PC access").action(async () => {
3909
- const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BxPHKO5x.js"));
3924
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3910
3925
  await savePCAccessConfig({ enabled: false });
3911
3926
  console.log(chalk.default.hex("#06b6d4")("\n ✅ PC access disabled\n"));
3912
3927
  process.exit(0);
@@ -3930,7 +3945,7 @@ pcCmd.command("log").description("Show PC access audit log").option("-n, --lines
3930
3945
  process.exit(0);
3931
3946
  });
3932
3947
  pcCmd.command("run <command>").description("Run a shell command via PC access (must be enabled)").action(async (command) => {
3933
- const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-BxPHKO5x.js"));
3948
+ const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-Bhybpk1J.js"));
3934
3949
  const cfg = await loadPCAccessConfig();
3935
3950
  if (!cfg.enabled) {
3936
3951
  console.log(chalk.default.red("\n ✖ PC access disabled. Run: hyperclaw pc enable\n"));
@@ -4006,7 +4021,7 @@ if (process.argv.length === 2) (async () => {
4006
4021
  console.log(` ${t.c("hyperclaw --help")} — all commands\n`);
4007
4022
  } else {
4008
4023
  await new require_onboard.Banner().showNeonBanner(false);
4009
- const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-0WoDxbv_.js"));
4024
+ const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-BBBWcfhp.js"));
4010
4025
  await new HyperClawWizard$1().run({ wizard: true });
4011
4026
  }
4012
4027
  process.exit(0);