hyperclaw 5.2.7 → 5.2.9

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 (207) hide show
  1. package/dist/a2ui-protocol-DEsfqO7h.js +75 -0
  2. package/dist/agents-routing-Cee7wrfi.js +398 -0
  3. package/dist/agents-routing-ChorJKFL.js +6 -0
  4. package/dist/agents-routing-Cpg20-1e.js +398 -0
  5. package/dist/agents-routing-uNzqjgOr.js +6 -0
  6. package/dist/api-key-validation-DgOBmp8Y.js +64 -0
  7. package/dist/api-key-validation-DydlUth1.js +64 -0
  8. package/dist/api-keys-guide--73Bq0Ey.js +149 -0
  9. package/dist/api-keys-guide-DqRGa4x7.js +149 -0
  10. package/dist/audit-CX5poVMR.js +445 -0
  11. package/dist/audit-Dntx9fG9.js +445 -0
  12. package/dist/banner-B_rR7FPO.js +7 -0
  13. package/dist/banner-Bb7CderS.js +143 -0
  14. package/dist/bounty-tools-BoU1NN5N.js +211 -0
  15. package/dist/bounty-tools-Dn9Yq7V1.js +211 -0
  16. package/dist/browser-tools-CJ9M9o22.js +179 -0
  17. package/dist/browser-tools-CXxWxA1c.js +5 -0
  18. package/dist/chat-C07wF0mM.js +494 -0
  19. package/dist/chat-D1Zc73I5.js +513 -0
  20. package/dist/claw-tasks-BLqd1a0Q.js +80 -0
  21. package/dist/claw-tasks-ChqkHdFs.js +80 -0
  22. package/dist/config-BlLlJ6Er.js +7 -0
  23. package/dist/config-Bzues-G2.js +7 -0
  24. package/dist/config-DGAAJ49A.js +261 -0
  25. package/dist/config-SgDxKyfV.js +261 -0
  26. package/dist/connector-1efnZgQN.js +566 -0
  27. package/dist/connector-B5q1_srT.js +286 -0
  28. package/dist/connector-BMFLJ4fr.js +508 -0
  29. package/dist/connector-BZYv9siY.js +189 -0
  30. package/dist/connector-B_XkXm-j.js +218 -0
  31. package/dist/connector-BkY1I6gf.js +189 -0
  32. package/dist/connector-C2Z3RN1z.js +350 -0
  33. package/dist/connector-C7aYvVzU.js +225 -0
  34. package/dist/connector-CXXYOyHw.js +164 -0
  35. package/dist/connector-Ca1J23HX.js +167 -0
  36. package/dist/connector-Cjqc656I.js +181 -0
  37. package/dist/connector-CluRienN.js +425 -0
  38. package/dist/connector-CuNz2eP-.js +305 -0
  39. package/dist/connector-DHL_oeHy.js +552 -0
  40. package/dist/connector-DJ79rd1L.js +173 -0
  41. package/dist/connector-DcLE6xCZ.js +239 -0
  42. package/dist/connector-DcyQTJnJ.js +162 -0
  43. package/dist/connector-DgyX9qSc.js +192 -0
  44. package/dist/connector-DnDXXZ7L.js +182 -0
  45. package/dist/connector-DqUslg-X.js +213 -0
  46. package/dist/connector-Duc-HmRZ.js +85 -0
  47. package/dist/connector-IV0QFer8.js +498 -0
  48. package/dist/connector-OnsLxE8G.js +194 -0
  49. package/dist/connector-UYu_TS0X.js +204 -0
  50. package/dist/connector-cCA5ffmp.js +340 -0
  51. package/dist/connector-fbNfx4_L.js +568 -0
  52. package/dist/connector-fi2vlwbO.js +276 -0
  53. package/dist/connector-l3LD8IDN.js +419 -0
  54. package/dist/cost-tracker-CgEXyEtz.js +103 -0
  55. package/dist/cost-tracker-DCXDUzBI.js +103 -0
  56. package/dist/credentials-store-1LDtNReY.js +89 -0
  57. package/dist/credentials-store-BFxEJR00.js +7 -0
  58. package/dist/credentials-store-Bmm9e1SS.js +7 -0
  59. package/dist/credentials-store-D8ERbGR2.js +89 -0
  60. package/dist/cron-tasks-1E6wKpTv.js +85 -0
  61. package/dist/cron-tasks-OQbgmenS.js +85 -0
  62. package/dist/daemon-B13UIqvL.js +7 -0
  63. package/dist/daemon-CzOW-1PS.js +421 -0
  64. package/dist/daemon-aVX-WGz1.js +421 -0
  65. package/dist/daemon-iFmVBPXN.js +7 -0
  66. package/dist/delivery-B8YGmrq5.js +4 -0
  67. package/dist/delivery-DWsU6gx-.js +95 -0
  68. package/dist/delivery-Pko6sSkt.js +4 -0
  69. package/dist/delivery-hMHFRZwy.js +95 -0
  70. package/dist/destructive-gate-C2TrWsp2.js +101 -0
  71. package/dist/destructive-gate-bnkroJWG.js +101 -0
  72. package/dist/developer-keys-BWXHaWxY.js +127 -0
  73. package/dist/developer-keys-CzDxVczE.js +8 -0
  74. package/dist/device-auth-store-C1bCwXO2.js +7 -0
  75. package/dist/device-auth-store-DIZTOz4V.js +88 -0
  76. package/dist/doctor-C6nAGdH8.js +233 -0
  77. package/dist/doctor-mgWumA25.js +6 -0
  78. package/dist/engine-BGRTi0fo.js +327 -0
  79. package/dist/engine-BvCEhaUn.js +7 -0
  80. package/dist/engine-ByQ-0sWM.js +7 -0
  81. package/dist/engine-gnMjO743.js +327 -0
  82. package/dist/env-resolve-BdagnXhK.js +151 -0
  83. package/dist/env-resolve-CHxjGo8u.js +151 -0
  84. package/dist/env-resolve-NEtsGacw.js +10 -0
  85. package/dist/env-resolve-pIETNTpQ.js +10 -0
  86. package/dist/extraction-tools-BE6z_Yw5.js +91 -0
  87. package/dist/extraction-tools-CJsdyBST.js +5 -0
  88. package/dist/form_data-B2_0EoWj.js +8657 -0
  89. package/dist/gmail-watch-setup-1RGIHNdu.js +42 -0
  90. package/dist/gmail-watch-setup-Brkj94Sy.js +42 -0
  91. package/dist/health-BMUmUNoe.js +152 -0
  92. package/dist/health-C8n9RH5O.js +6 -0
  93. package/dist/heartbeat-engine-D6oSpgxx.js +89 -0
  94. package/dist/heartbeat-engine-aRbab8a5.js +89 -0
  95. package/dist/hub-BJM2KXLO.js +6 -0
  96. package/dist/hub-Bb_dYECE.js +512 -0
  97. package/dist/hyperclawbot-CgrV46DA.js +516 -0
  98. package/dist/hyperclawbot-DzP_v3iA.js +516 -0
  99. package/dist/inference-BHJFPEKL.js +8 -0
  100. package/dist/inference-CFBkvLpE.js +2854 -0
  101. package/dist/inference-G4MbdErG.js +8 -0
  102. package/dist/inference-vweXyh27.js +2854 -0
  103. package/dist/knowledge-graph-9UNrsiIY.js +134 -0
  104. package/dist/knowledge-graph-yeMPBPP8.js +134 -0
  105. package/dist/loader-BXYJl25e.js +6 -0
  106. package/dist/loader-DIPs649t.js +410 -0
  107. package/dist/loader-Dq_cDlOW.js +6 -0
  108. package/dist/loader-gTdKBwiI.js +410 -0
  109. package/dist/logger-C3ZCDSkc.js +86 -0
  110. package/dist/logger-CG38Idq4.js +86 -0
  111. package/dist/manager--wG9JdFW.js +120 -0
  112. package/dist/manager-BI3izlRG.js +120 -0
  113. package/dist/manager-BNc21xgG.js +6 -0
  114. package/dist/manager-CQ3MWNHY.js +250 -0
  115. package/dist/manager-DWJ7WZcY.js +250 -0
  116. package/dist/manager-DYfzqckn.js +35 -0
  117. package/dist/mcp-CklaYr_6.js +142 -0
  118. package/dist/mcp-SsMEvl28.js +142 -0
  119. package/dist/mcp-loader-9v8eUsNI.js +93 -0
  120. package/dist/mcp-loader-DLrp_oZJ.js +93 -0
  121. package/dist/memory-BCYvdqwo.js +273 -0
  122. package/dist/memory-BGgCBSx1.js +6 -0
  123. package/dist/memory-auto-Bh52cQJP.js +5 -0
  124. package/dist/memory-auto-Bow9u_L7.js +306 -0
  125. package/dist/memory-auto-BupvVwNd.js +306 -0
  126. package/dist/memory-auto-CgBAI8mm.js +5 -0
  127. package/dist/memory-integration-4oGqX6rr.js +91 -0
  128. package/dist/memory-integration-CveUEI3V.js +91 -0
  129. package/dist/moltbook-B3DNdh40.js +81 -0
  130. package/dist/moltbook-xP7VXKlX.js +81 -0
  131. package/dist/node-C4esBfbX.js +226 -0
  132. package/dist/node-urDjajMt.js +226 -0
  133. package/dist/nodes-registry-Cd4eWw80.js +52 -0
  134. package/dist/nodes-registry-DLUZhEMS.js +52 -0
  135. package/dist/oauth-flow-BbLQTzZk.js +148 -0
  136. package/dist/oauth-flow-Bt-LaRHV.js +148 -0
  137. package/dist/oauth-provider-CVTKgj35.js +111 -0
  138. package/dist/oauth-provider-UZyG84s7.js +111 -0
  139. package/dist/observability-BtLyuxcz.js +89 -0
  140. package/dist/observability-lwYm4aoB.js +89 -0
  141. package/dist/onboard-B3drurt-.js +3812 -0
  142. package/dist/onboard-BV5Poocl.js +13 -0
  143. package/dist/onboard-DEwuHrMj.js +14 -0
  144. package/dist/onboard-UiynbNQy.js +3909 -0
  145. package/dist/orchestrator-BXyIgAeH.js +189 -0
  146. package/dist/orchestrator-DMZkAVa5.js +189 -0
  147. package/dist/orchestrator-MLTc4NYu.js +6 -0
  148. package/dist/orchestrator-rVGu7yYr.js +6 -0
  149. package/dist/osint-Bsf6RGPv.js +283 -0
  150. package/dist/osint-chat-Ark94iFc.js +789 -0
  151. package/dist/osint-chat-Hn8qpsC1.js +836 -0
  152. package/dist/osint-f9DeXT6j.js +283 -0
  153. package/dist/pairing-2vAiDBjN.js +6 -0
  154. package/dist/pairing-B4NoBvyE.js +207 -0
  155. package/dist/pc-access-BLnc-DYp.js +858 -0
  156. package/dist/pc-access-CTNtG2LD.js +8 -0
  157. package/dist/pending-approval-C4ZaHHWl.js +22 -0
  158. package/dist/pending-approval-CHUZ_qT6.js +22 -0
  159. package/dist/reminders-store-BixTWL1h.js +58 -0
  160. package/dist/renderer-B1ToXngl.js +228 -0
  161. package/dist/rules-Cqen1Mpt.js +106 -0
  162. package/dist/run-main.js +98 -94
  163. package/dist/runner-B9xANekJ.js +1274 -0
  164. package/dist/runner-Cr1_mwnU.js +1274 -0
  165. package/dist/security--17Fxo5Z.js +4 -0
  166. package/dist/security-B4vH02lO.js +4 -0
  167. package/dist/security-DP1qtJfL.js +90 -0
  168. package/dist/security-HOOGCw5z.js +90 -0
  169. package/dist/server-CRhXiGI9.js +4 -0
  170. package/dist/server-DUDXqJSo.js +1365 -0
  171. package/dist/server-De4H45Ju.js +1365 -0
  172. package/dist/server-ha59nA8a.js +4 -0
  173. package/dist/session-store-7sEPyV16.js +5 -0
  174. package/dist/session-store-Ce2QMSL_.js +141 -0
  175. package/dist/sessions-tools-CWr_pDtp.js +5 -0
  176. package/dist/sessions-tools-DKVu9aIN.js +95 -0
  177. package/dist/skill-loader-DK19Jm4e.js +7 -0
  178. package/dist/skill-loader-Dfs9VNM-.js +160 -0
  179. package/dist/skill-runtime-BRp2D8Jb.js +5 -0
  180. package/dist/skill-runtime-BeKh2rD_.js +5 -0
  181. package/dist/skill-runtime-C8bNwKwz.js +104 -0
  182. package/dist/skill-runtime-CcpC2Zfc.js +104 -0
  183. package/dist/src-B8LzGLSY.js +63 -0
  184. package/dist/src-BxmkZ9RH.js +63 -0
  185. package/dist/src-DUoc6_kn.js +458 -0
  186. package/dist/src-DjTtmSRg.js +20 -0
  187. package/dist/src-n_46LPDi.js +458 -0
  188. package/dist/sub-agent-tools-CldaMfd5.js +39 -0
  189. package/dist/sub-agent-tools-q5JqEze_.js +39 -0
  190. package/dist/tool-policy-DtGf3Ifq.js +189 -0
  191. package/dist/tool-policy-QXF3MMxu.js +189 -0
  192. package/dist/tts-elevenlabs-1zWD3QJw.js +64 -0
  193. package/dist/tts-elevenlabs-y6HGWWDS.js +64 -0
  194. package/dist/update-check-C4te7JmY.js +6 -0
  195. package/dist/update-check-GDue_it1.js +98 -0
  196. package/dist/vision-DV2ubVjr.js +167 -0
  197. package/dist/vision-tools-Cb86uMdh.js +5 -0
  198. package/dist/vision-tools-CbVfyTZT.js +5 -0
  199. package/dist/vision-tools-DieVQp6s.js +51 -0
  200. package/dist/vision-tools-DlnxaZjg.js +51 -0
  201. package/dist/vision-u4kMThdo.js +167 -0
  202. package/dist/voice-transcription-BolTT_HG.js +170 -0
  203. package/dist/voice-transcription-DgON5qaF.js +170 -0
  204. package/dist/website-watch-tools-B8L_NgwT.js +5 -0
  205. package/dist/website-watch-tools-Drm5HjIX.js +176 -0
  206. package/package.json +4 -1
  207. package/static/chat.html +9 -3
package/dist/run-main.js CHANGED
@@ -1,26 +1,27 @@
1
1
  const require_chunk = require('./chunk-jS-bbMI5.js');
2
2
  const require_paths = require('./paths-AIyBxIzm.js');
3
3
  const require_paths$1 = require('./paths-DPovhojT.js');
4
- require('./env-resolve-DS92g2fk.js');
5
- const require_config = require('./config-Br73VMLb.js');
6
- require('./server-CnZ-Y6L-.js');
7
- const require_daemon = require('./daemon-Dhy9qq9P.js');
4
+ require('./env-resolve-CHxjGo8u.js');
5
+ const require_config = require('./config-DGAAJ49A.js');
6
+ require('./server-De4H45Ju.js');
7
+ const require_daemon = require('./daemon-aVX-WGz1.js');
8
8
  const require_gateway = require('./gateway-CzI8dnlS.js');
9
9
  require('./providers-DP8T0QCR.js');
10
- const require_onboard = require('./onboard-BFuPscDx.js');
10
+ const require_onboard = require('./onboard-B3drurt-.js');
11
11
  require('./theme-CLXvI6Hr.js');
12
- const require_hub = require('./hub-DIoASRn6.js');
13
- const require_update_check = require('./update-check-BeAPt4-f.js');
14
- const require_manager = require('./manager-Jd0qSzVe.js');
15
- const require_memory = require('./memory-D-Py-cz5.js');
16
- const require_loader = require('./loader-DRfmh8hU.js');
17
- const require_agents_routing = require('./agents-routing-Bz3SstlK.js');
18
- const require_pairing = require('./pairing-fGaxBlgG.js');
19
- const require_doctor = require('./doctor-BcfmNAGV.js');
20
- const require_health = require('./health-CBy1PfzC.js');
21
- const require_security = require('./security-BhhX8wJx.js');
22
- const require_device_auth_store = require('./device-auth-store-LKgpU74c.js');
23
- const require_developer_keys = require('./developer-keys-CSmzA-dl.js');
12
+ const require_banner = require('./banner-Bb7CderS.js');
13
+ const require_hub = require('./hub-Bb_dYECE.js');
14
+ const require_update_check = require('./update-check-GDue_it1.js');
15
+ const require_manager = require('./manager-DYfzqckn.js');
16
+ const require_memory = require('./memory-BCYvdqwo.js');
17
+ const require_loader = require('./loader-DIPs649t.js');
18
+ const require_agents_routing = require('./agents-routing-Cpg20-1e.js');
19
+ const require_pairing = require('./pairing-B4NoBvyE.js');
20
+ const require_doctor = require('./doctor-C6nAGdH8.js');
21
+ const require_health = require('./health-BMUmUNoe.js');
22
+ const require_security = require('./security-HOOGCw5z.js');
23
+ const require_device_auth_store = require('./device-auth-store-DIZTOz4V.js');
24
+ const require_developer_keys = require('./developer-keys-BWXHaWxY.js');
24
25
  const commander = require_chunk.__toESM(require("commander"));
25
26
  const chalk = require_chunk.__toESM(require("chalk"));
26
27
  const inquirer = require_chunk.__toESM(require("inquirer"));
@@ -193,7 +194,7 @@ async function recordAudio(outFile, seconds) {
193
194
  async function transcribeWhisper(filePath, lang) {
194
195
  const apiKey = process.env.OPENAI_API_KEY || process.env.ANTHROPIC_API_KEY;
195
196
  if (!apiKey) throw new Error("No OPENAI_API_KEY set");
196
- const FormData = (await Promise.resolve().then(() => require_chunk.__toDynamicImportESM()(require("./form_data-DgWnyuDn.js"))).catch(() => null))?.default;
197
+ const FormData = (await Promise.resolve().then(() => require_chunk.__toDynamicImportESM()(require("./form_data-B2_0EoWj.js"))).catch(() => null))?.default;
197
198
  if (!FormData) throw new Error("form-data not installed");
198
199
  const form = new FormData();
199
200
  form.append("file", fs.createReadStream(filePath), {
@@ -2538,7 +2539,7 @@ function sanitizeForLog(value) {
2538
2539
  return String(value ?? "").replace(/[\r\n\t]+/g, " ").replace(/[^\x20-\x7e]+/g, "?").slice(0, 200);
2539
2540
  }
2540
2541
  const program = new commander.Command();
2541
- program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("5.2.7").option("--profile <name>", "Use an isolated gateway profile. Auto-scopes HYPERCLAW_STATE_DIR and HYPERCLAW_CONFIG_PATH. Required for multi-gateway setups (rescue bot, staging, etc.). Example: hyperclaw --profile rescue gateway --port 19001").hook("preAction", (thisCommand) => {
2542
+ program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("5.2.9").option("--profile <name>", "Use an isolated gateway profile. Auto-scopes HYPERCLAW_STATE_DIR and HYPERCLAW_CONFIG_PATH. Required for multi-gateway setups (rescue bot, staging, etc.). Example: hyperclaw --profile rescue gateway --port 19001").hook("preAction", (thisCommand) => {
2542
2543
  const profile = thisCommand.opts().profile;
2543
2544
  if (profile) {
2544
2545
  const os$2 = require("os");
@@ -2549,12 +2550,12 @@ program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. Th
2549
2550
  }
2550
2551
  });
2551
2552
  program.command("init").description("Initialize HyperClaw with interactive wizard").option("-a, --auto-config", "Auto-configure with defaults").option("-d, --daemon", "Install as system daemon").option("-s, --start-now", "Start gateway after setup").action(async (opts) => {
2552
- await new require_onboard.Banner().showNeonBanner(false);
2553
+ await new require_banner.Banner().showNeonBanner(false);
2553
2554
  await new require_onboard.HyperClawWizard().run(opts);
2554
2555
  process.exit(0);
2555
2556
  });
2556
2557
  program.command("onboard").description("Full onboarding wizard — preferred setup path").option("--install-daemon", "Auto-install system daemon (starts on boot, grants full PC access)").option("--quick", "Use QuickStart mode (skip advanced options)").option("--reset", "Reset config before running wizard (sends to trash, not deleted)").option("--reset-scope <scope>", "What to reset: config | config+creds | full", "config").option("--non-interactive", "Run in non-interactive mode (use flags for all options)").option("--json", "Output result as JSON (use with --non-interactive)").option("--anthropic-api-key <key>", "Anthropic API key (non-interactive)").option("--openai-api-key <key>", "OpenAI API key (non-interactive)").option("--gateway-port <port>", "Gateway port (non-interactive)", "18789").option("--gateway-bind <bind>", "Gateway bind: loopback | all (non-interactive)", "loopback").option("--daemon-runtime <runtime>", "Daemon runtime: node | bun (non-interactive)", "node").option("--skip-skills", "Skip skills setup (non-interactive)").option("--skip-search", "Skip web search setup (non-interactive)").action(async (opts) => {
2557
- await new require_onboard.Banner().showNeonBanner(false);
2558
+ await new require_banner.Banner().showNeonBanner(false);
2558
2559
  if (opts.reset) {
2559
2560
  const fs$7 = require("fs-extra");
2560
2561
  const path$5 = require("path");
@@ -2629,7 +2630,7 @@ program.command("onboard").description("Full onboarding wizard — preferred set
2629
2630
  process.exit(0);
2630
2631
  });
2631
2632
  program.command("quickstart").description("Zero-config quick start").option("-c, --channels <channels>", "Channels to enable", "telegram,discord").option("-v, --voice <on|off>", "Voice enabled", "on").action(async (opts) => {
2632
- await new require_onboard.Banner().showMiniBanner();
2633
+ await new require_banner.Banner().showMiniBanner();
2633
2634
  await new require_onboard.HyperClawWizard().quickstart(opts);
2634
2635
  process.exit(0);
2635
2636
  });
@@ -2661,7 +2662,7 @@ gatewayCmd.command("restart").description("Restart the gateway service").action(
2661
2662
  });
2662
2663
  program.command("daemon").description("Manage gateway: start/stop (foreground) or install (auto-start on boot). Same process as gateway start.").argument("<action>", "start|stop|restart|status|logs|install|uninstall").action(async (action) => {
2663
2664
  const dm = new require_daemon.DaemonManager();
2664
- if (action === "start") await new require_onboard.Banner().showNeonBanner(true);
2665
+ if (action === "start") await new require_banner.Banner().showNeonBanner(true);
2665
2666
  await dm.handle(action);
2666
2667
  if (action === "start" || action === "restart") return;
2667
2668
  process.exit(0);
@@ -2682,8 +2683,8 @@ sandboxCmd.command("explain").description("Show effective sandbox mode, tool pol
2682
2683
  }
2683
2684
  const sandboxMode = cfg?.agents?.defaults?.sandbox?.mode ?? "non-main";
2684
2685
  const toolsCfg = cfg?.tools ?? {};
2685
- const { describeToolPolicy, applyToolPolicy } = await Promise.resolve().then(() => require("./tool-policy-TmXx_fpp.js"));
2686
- const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
2686
+ const { describeToolPolicy, applyToolPolicy } = await Promise.resolve().then(() => require("./tool-policy-QXF3MMxu.js"));
2687
+ const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-BxmkZ9RH.js"));
2687
2688
  const allTools = [
2688
2689
  ...getBuiltinTools(),
2689
2690
  ...getSessionsTools(() => null),
@@ -3022,7 +3023,7 @@ cfgCmd.command("set-key <KEY=value>").description("Set provider API key or confi
3022
3023
  xai: "xai"
3023
3024
  };
3024
3025
  const pid = keyToProvider[key] ?? keyToProvider[key.toLowerCase()] ?? cfg?.provider?.providerId ?? key.toLowerCase();
3025
- const { validateApiKeyFormat } = await Promise.resolve().then(() => require("./api-key-validation-BeQ2MZAT.js"));
3026
+ const { validateApiKeyFormat } = await Promise.resolve().then(() => require("./api-key-validation-DgOBmp8Y.js"));
3026
3027
  const formatErr = validateApiKeyFormat(pid, value);
3027
3028
  if (formatErr) {
3028
3029
  console.log(chalk.default.yellow(`\n ⚠ ${formatErr}\n`));
@@ -3084,7 +3085,7 @@ cfgCmd.command("set-service-key <serviceId> [apiKey]").description("Set API key
3084
3085
  cfgCmd.command("schema").description("Show configuration schema").action(() => {
3085
3086
  console.log(chalk.default.bold.hex("#06b6d4")("\n Config schema: ~/.hyperclaw/hyperclaw.json\n"));
3086
3087
  const schema = {
3087
- version: "string (e.g. \"5.2.7\")",
3088
+ version: "string (e.g. \"5.2.9\")",
3088
3089
  workspaceName: "string",
3089
3090
  provider: {
3090
3091
  providerId: "string",
@@ -3227,7 +3228,7 @@ program.command("dashboard").description("Launch live terminal dashboard").optio
3227
3228
  await new Promise(() => {});
3228
3229
  });
3229
3230
  program.command("status").description("System overview").option("--all", "Full local diagnosis (read-only)").option("--deep", "Also probe the running gateway").action(async (opts) => {
3230
- await new require_onboard.Banner().showStatus();
3231
+ await new require_banner.Banner().showStatus();
3231
3232
  if (opts.all || opts.deep) {
3232
3233
  const fs$7 = await import("fs-extra");
3233
3234
  const { getConfigPath: getConfigPath$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
@@ -3243,7 +3244,7 @@ program.command("status").description("System overview").option("--all", "Full l
3243
3244
  }
3244
3245
  if (opts.deep) {
3245
3246
  const http$2 = await import("http");
3246
- const { resolveGatewayUrl } = await Promise.resolve().then(() => require("./health-Cq_yE5Ln.js"));
3247
+ const { resolveGatewayUrl } = await Promise.resolve().then(() => require("./health-C8n9RH5O.js"));
3247
3248
  const cfg = await new require_manager.ConfigManager().load();
3248
3249
  const { gatewayUrl } = resolveGatewayUrl(cfg);
3249
3250
  const u = new URL(gatewayUrl);
@@ -3362,40 +3363,40 @@ themeCmd.command("preview").description("Preview all themes side-by-side").actio
3362
3363
  });
3363
3364
  const secretsCmd = program.command("secrets").description("External secrets management");
3364
3365
  secretsCmd.command("audit").description("Audit all required secrets").option("--required-by <ids>", "Filter by skill/provider IDs (comma-separated)").action(async (opts) => {
3365
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-Yo6ZAofG.js"));
3366
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-DWJ7WZcY.js"));
3366
3367
  const filter = opts.requiredBy?.split(",");
3367
3368
  await new SecretsManager().audit(filter);
3368
3369
  process.exit(0);
3369
3370
  });
3370
3371
  secretsCmd.command("set <KEY=value>").description("Set a secret in .env file").action(async (kv) => {
3371
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-Yo6ZAofG.js"));
3372
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-DWJ7WZcY.js"));
3372
3373
  await new SecretsManager().set(kv);
3373
3374
  process.exit(0);
3374
3375
  });
3375
3376
  secretsCmd.command("apply").description("Write secrets from .env to shell config (~/.bashrc, ~/.zshrc)").action(async () => {
3376
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-Yo6ZAofG.js"));
3377
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-DWJ7WZcY.js"));
3377
3378
  await new SecretsManager().apply();
3378
3379
  process.exit(0);
3379
3380
  });
3380
3381
  secretsCmd.command("reload").description("Reload secrets into running gateway").action(async () => {
3381
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-Yo6ZAofG.js"));
3382
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-DWJ7WZcY.js"));
3382
3383
  await new SecretsManager().reload();
3383
3384
  process.exit(0);
3384
3385
  });
3385
3386
  secretsCmd.command("remove <key>").description("Remove a secret from .env").action(async (key) => {
3386
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-Yo6ZAofG.js"));
3387
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-DWJ7WZcY.js"));
3387
3388
  await new SecretsManager().remove(key);
3388
3389
  process.exit(0);
3389
3390
  });
3390
3391
  secretsCmd.command("credentials").description("List provider credential files (credentials/*.json)").action(async () => {
3391
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-DU2cVTiY.js"));
3392
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-Bmm9e1SS.js"));
3392
3393
  const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3393
3394
  await new CredentialsStore(getHyperClawDir$1()).showList();
3394
3395
  process.exit(0);
3395
3396
  });
3396
3397
  const securityCmd = program.command("security").description("Security tools");
3397
3398
  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) => {
3398
- const { runSecurityAudit } = await Promise.resolve().then(() => require("./audit-NPINyRh4.js"));
3399
+ const { runSecurityAudit } = await Promise.resolve().then(() => require("./audit-Dntx9fG9.js"));
3399
3400
  await runSecurityAudit({
3400
3401
  deep: opts.deep,
3401
3402
  fix: opts.fix,
@@ -3403,18 +3404,21 @@ securityCmd.command("audit").description("Security audit — file permissions, D
3403
3404
  });
3404
3405
  process.exit(0);
3405
3406
  });
3406
- 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) => {
3407
- const { osintSetup, osintQuickStart } = await Promise.resolve().then(() => require("./osint-Cg3-CYHx.js"));
3407
+ program.command("osint").description("OSINT / Ethical Hacking mode — configure HyperClaw for security research").argument("[workflow]", "Workflow preset: recon | bugbounty | pentest | footprint | custom | chat").option("--show", "Show current OSINT profile").option("--reset", "Clear OSINT profile and disable OSINT mode").option("--model <model>", "Override model for OSINT chat").action(async (workflow, opts) => {
3408
+ const { osintSetup, osintQuickStart } = await Promise.resolve().then(() => require("./osint-Bsf6RGPv.js"));
3408
3409
  if (opts.show || opts.reset) await osintSetup({
3409
3410
  show: opts.show,
3410
3411
  reset: opts.reset
3411
3412
  });
3412
- else if (workflow === "setup" || workflow) await osintSetup({ mode: workflow });
3413
+ else if (workflow === "chat") {
3414
+ const { runOsintChat } = await Promise.resolve().then(() => require("./osint-chat-Ark94iFc.js"));
3415
+ await runOsintChat({ model: opts.model });
3416
+ } else if (workflow === "setup" || workflow) await osintSetup({ mode: workflow });
3413
3417
  else await osintQuickStart();
3414
3418
  process.exit(0);
3415
3419
  });
3416
3420
  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) => {
3417
- const { runChat } = await Promise.resolve().then(() => require("./chat-B5Y8u68o.js"));
3421
+ const { runChat } = await Promise.resolve().then(() => require("./chat-D1Zc73I5.js"));
3418
3422
  await runChat({
3419
3423
  sessionId: opts.session,
3420
3424
  model: opts.model,
@@ -3424,7 +3428,7 @@ program.command("chat").description("Interactive terminal chat with the agent").
3424
3428
  });
3425
3429
  const agentRunCmd = program.command("agent").description("Run agent with thinking control");
3426
3430
  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) => {
3427
- const { runAgent } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
3431
+ const { runAgent } = await Promise.resolve().then(() => require("./src-BxmkZ9RH.js"));
3428
3432
  await runAgent({
3429
3433
  message: opts.message,
3430
3434
  thinking: opts.thinking,
@@ -3440,7 +3444,7 @@ agentRunCmd.requiredOption("-m, --message <text>", "Message to send to the agent
3440
3444
  });
3441
3445
  const threadsCmd = program.command("threads").description("ACP thread-bound agent sessions");
3442
3446
  threadsCmd.command("list").description("List agent threads").option("--channel <id>", "Filter by channel").option("--active", "Show only active threads").action(async (opts) => {
3443
- const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
3447
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BxmkZ9RH.js"));
3444
3448
  const mgr = new ACPThreadManager();
3445
3449
  const threads = await mgr.list({
3446
3450
  channelId: opts.channel,
@@ -3450,29 +3454,29 @@ threadsCmd.command("list").description("List agent threads").option("--channel <
3450
3454
  process.exit(0);
3451
3455
  });
3452
3456
  threadsCmd.command("terminate <id>").description("Terminate a thread").action(async (id) => {
3453
- const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
3457
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BxmkZ9RH.js"));
3454
3458
  await new ACPThreadManager().terminate(id);
3455
3459
  console.log(require("chalk").green(`\n ✔ Thread terminated: ${id}\n`));
3456
3460
  process.exit(0);
3457
3461
  });
3458
3462
  const canvasCmd = program.command("canvas").description("Live AI-driven UI canvas");
3459
3463
  canvasCmd.command("show").description("Show current canvas components").action(async () => {
3460
- const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-h3ar94cf.js"));
3464
+ const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-B1ToXngl.js"));
3461
3465
  await new CanvasRenderer().show();
3462
3466
  process.exit(0);
3463
3467
  });
3464
3468
  canvasCmd.command("add <type> <title>").description("Add a canvas component (type: chart|table|form|markdown|image|custom)").action(async (type, title) => {
3465
- const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-h3ar94cf.js"));
3469
+ const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-B1ToXngl.js"));
3466
3470
  await new CanvasRenderer().addComponent(type, title);
3467
3471
  process.exit(0);
3468
3472
  });
3469
3473
  canvasCmd.command("clear").description("Clear all canvas components").action(async () => {
3470
- const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-h3ar94cf.js"));
3474
+ const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-B1ToXngl.js"));
3471
3475
  await new CanvasRenderer().clear();
3472
3476
  process.exit(0);
3473
3477
  });
3474
3478
  canvasCmd.command("export").description("Export canvas as HTML file").action(async () => {
3475
- const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-h3ar94cf.js"));
3479
+ const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-B1ToXngl.js"));
3476
3480
  const fs$7 = require("fs-extra");
3477
3481
  const html = await new CanvasRenderer().exportHtml();
3478
3482
  const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
@@ -3494,62 +3498,62 @@ deliveryCmd.command("retry <id>").description("Retry a dead-lettered delivery it
3494
3498
  });
3495
3499
  const mcpCmd = program.command("mcp").description("MCP (Model Context Protocol) server management");
3496
3500
  mcpCmd.command("list").description("List configured MCP servers").action(async () => {
3497
- const { mcpList } = await Promise.resolve().then(() => require("./mcp-GWnLTVi-.js"));
3501
+ const { mcpList } = await Promise.resolve().then(() => require("./mcp-SsMEvl28.js"));
3498
3502
  await mcpList();
3499
3503
  process.exit(0);
3500
3504
  });
3501
3505
  mcpCmd.command("add").description("Add MCP server").action(async () => {
3502
- const { mcpAdd } = await Promise.resolve().then(() => require("./mcp-GWnLTVi-.js"));
3506
+ const { mcpAdd } = await Promise.resolve().then(() => require("./mcp-SsMEvl28.js"));
3503
3507
  await mcpAdd();
3504
3508
  process.exit(0);
3505
3509
  });
3506
3510
  mcpCmd.command("remove <id>").description("Remove MCP server").action(async (id) => {
3507
- const { mcpRemove } = await Promise.resolve().then(() => require("./mcp-GWnLTVi-.js"));
3511
+ const { mcpRemove } = await Promise.resolve().then(() => require("./mcp-SsMEvl28.js"));
3508
3512
  await mcpRemove(id);
3509
3513
  process.exit(0);
3510
3514
  });
3511
3515
  mcpCmd.command("probe [id]").description("Test MCP server connection").action(async (id) => {
3512
- const { mcpProbe } = await Promise.resolve().then(() => require("./mcp-GWnLTVi-.js"));
3516
+ const { mcpProbe } = await Promise.resolve().then(() => require("./mcp-SsMEvl28.js"));
3513
3517
  await mcpProbe(id);
3514
3518
  process.exit(0);
3515
3519
  });
3516
3520
  const nodeCmd = program.command("node").description("HyperClaw node management (local, remote, android)");
3517
3521
  nodeCmd.command("list").description("List paired nodes").action(async () => {
3518
- const { nodeList } = await Promise.resolve().then(() => require("./node-4_wJsNEN.js"));
3522
+ const { nodeList } = await Promise.resolve().then(() => require("./node-C4esBfbX.js"));
3519
3523
  await nodeList();
3520
3524
  process.exit(0);
3521
3525
  });
3522
3526
  nodeCmd.command("add").description("Add or pair a node").action(async () => {
3523
- const { nodeAdd } = await Promise.resolve().then(() => require("./node-4_wJsNEN.js"));
3527
+ const { nodeAdd } = await Promise.resolve().then(() => require("./node-C4esBfbX.js"));
3524
3528
  await nodeAdd();
3525
3529
  process.exit(0);
3526
3530
  });
3527
3531
  nodeCmd.command("probe [id]").description("Probe node connection").action(async (id) => {
3528
- const { nodeProbe } = await Promise.resolve().then(() => require("./node-4_wJsNEN.js"));
3532
+ const { nodeProbe } = await Promise.resolve().then(() => require("./node-C4esBfbX.js"));
3529
3533
  await nodeProbe(id);
3530
3534
  process.exit(0);
3531
3535
  });
3532
3536
  nodeCmd.command("remove <id>").description("Remove paired node").action(async (id) => {
3533
- const { nodeRemove } = await Promise.resolve().then(() => require("./node-4_wJsNEN.js"));
3537
+ const { nodeRemove } = await Promise.resolve().then(() => require("./node-C4esBfbX.js"));
3534
3538
  await nodeRemove(id);
3535
3539
  process.exit(0);
3536
3540
  });
3537
3541
  const arCmd = program.command("auto-reply").description("Auto-reply rule engine");
3538
3542
  arCmd.command("list").action(async () => {
3539
- const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-eJw9i4RF.js"));
3543
+ const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-Cqen1Mpt.js"));
3540
3544
  const e = new AutoReplyEngine();
3541
3545
  await e.load();
3542
3546
  e.showList();
3543
3547
  process.exit(0);
3544
3548
  });
3545
3549
  arCmd.command("toggle <id>").action(async (id) => {
3546
- const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-eJw9i4RF.js"));
3550
+ const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-Cqen1Mpt.js"));
3547
3551
  const e = new AutoReplyEngine();
3548
3552
  await e.toggle(id);
3549
3553
  process.exit(0);
3550
3554
  });
3551
3555
  arCmd.command("remove <id>").action(async (id) => {
3552
- const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-eJw9i4RF.js"));
3556
+ const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-Cqen1Mpt.js"));
3553
3557
  const e = new AutoReplyEngine();
3554
3558
  await e.remove(id);
3555
3559
  process.exit(0);
@@ -3558,7 +3562,7 @@ const gmailCmd = program.command("gmail").description("Gmail Pub/Sub real-time n
3558
3562
  gmailCmd.command("watch-setup").description("Register Gmail watch for push notifications. Requires: hyperclaw auth oauth google-gmail").requiredOption("-t, --topic <name>", "Pub/Sub topic (e.g. projects/myproject/topics/gmail-push)").option("-l, --labels <ids>", "Label IDs to watch (comma-separated)", "INBOX").action(async (opts) => {
3559
3563
  const chalk$11 = require("chalk");
3560
3564
  try {
3561
- const { setupGmailWatch } = await Promise.resolve().then(() => require("./gmail-watch-setup-xG9GkPwr.js"));
3565
+ const { setupGmailWatch } = await Promise.resolve().then(() => require("./gmail-watch-setup-1RGIHNdu.js"));
3562
3566
  const labelIds = opts.labels.split(",").map((s) => s.trim()).filter(Boolean);
3563
3567
  const result = await setupGmailWatch({
3564
3568
  topicName: opts.topic,
@@ -3578,7 +3582,7 @@ gmailCmd.command("watch-setup").description("Register Gmail watch for push notif
3578
3582
  const cronCmd = program.command("cron").description("Scheduled tasks (cron → agent prompt)");
3579
3583
  cronCmd.command("list").action(async () => {
3580
3584
  const chalk$11 = require("chalk");
3581
- const { loadCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-4my0PJce.js"));
3585
+ const { loadCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-OQbgmenS.js"));
3582
3586
  const tasks = await loadCronTasks();
3583
3587
  console.log(chalk$11.bold.cyan("\n ⏰ CRON TASKS\n"));
3584
3588
  if (tasks.length === 0) {
@@ -3598,7 +3602,7 @@ cronCmd.command("list").action(async () => {
3598
3602
  });
3599
3603
  cronCmd.command("add").arguments("<schedule> <prompt>").option("-n, --name <name>", "Task name").action(async (schedule, prompt, opts) => {
3600
3604
  const chalk$11 = require("chalk");
3601
- const { loadCronTasks, addCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-4my0PJce.js"));
3605
+ const { loadCronTasks, addCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-OQbgmenS.js"));
3602
3606
  await loadCronTasks();
3603
3607
  addCronTask(schedule, prompt, opts.name);
3604
3608
  await saveCronTasks();
@@ -3608,7 +3612,7 @@ cronCmd.command("add").arguments("<schedule> <prompt>").option("-n, --name <name
3608
3612
  });
3609
3613
  cronCmd.command("remove <id>").action(async (id) => {
3610
3614
  const chalk$11 = require("chalk");
3611
- const { loadCronTasks, removeCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-4my0PJce.js"));
3615
+ const { loadCronTasks, removeCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-OQbgmenS.js"));
3612
3616
  await loadCronTasks();
3613
3617
  if (removeCronTask(id)) {
3614
3618
  await saveCronTasks();
@@ -3668,20 +3672,20 @@ program.command("nodes").description("List connected mobile nodes (iOS/Android C
3668
3672
  });
3669
3673
  const whCmd = program.command("webhooks").description("Webhook endpoint management");
3670
3674
  whCmd.command("list").action(async () => {
3671
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BQf9drst.js"));
3675
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager--wG9JdFW.js"));
3672
3676
  const m = new WebhookManager();
3673
3677
  await m.load();
3674
3678
  m.showList();
3675
3679
  process.exit(0);
3676
3680
  });
3677
3681
  whCmd.command("remove <id>").action(async (id) => {
3678
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BQf9drst.js"));
3682
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager--wG9JdFW.js"));
3679
3683
  const m = new WebhookManager();
3680
3684
  await m.remove(id);
3681
3685
  process.exit(0);
3682
3686
  });
3683
3687
  whCmd.command("toggle <id>").action(async (id) => {
3684
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BQf9drst.js"));
3688
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager--wG9JdFW.js"));
3685
3689
  const m = new WebhookManager();
3686
3690
  await m.toggle(id);
3687
3691
  process.exit(0);
@@ -3690,7 +3694,7 @@ const logsCmd = program.command("logs").description("View gateway logs");
3690
3694
  logsCmd.option("-n, --lines <n>", "Number of lines to show", "50");
3691
3695
  logsCmd.option("-f, --follow", "Stream logs in real time");
3692
3696
  logsCmd.action(async (opts) => {
3693
- const { tailLog, streamLog } = await Promise.resolve().then(() => require("./logger-CnxILOPV.js"));
3697
+ const { tailLog, streamLog } = await Promise.resolve().then(() => require("./logger-CG38Idq4.js"));
3694
3698
  if (opts.follow) await streamLog();
3695
3699
  else {
3696
3700
  await tailLog(parseInt(opts.lines));
@@ -3698,7 +3702,7 @@ logsCmd.action(async (opts) => {
3698
3702
  }
3699
3703
  });
3700
3704
  program.command("gateway:serve").description("Start the gateway server in the foreground (used by daemon)").action(async () => {
3701
- const { startGateway } = await Promise.resolve().then(() => require("./server-MpkM9aIZ.js"));
3705
+ const { startGateway } = await Promise.resolve().then(() => require("./server-CRhXiGI9.js"));
3702
3706
  await startGateway();
3703
3707
  process.on("SIGINT", () => process.exit(0));
3704
3708
  process.on("SIGTERM", () => process.exit(0));
@@ -3755,9 +3759,9 @@ const authCmd = program.command("auth").description("OAuth and provider credenti
3755
3759
  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) => {
3756
3760
  const chalk$11 = require("chalk");
3757
3761
  const inquirer$2 = require("inquirer");
3758
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-DU2cVTiY.js"));
3762
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-Bmm9e1SS.js"));
3759
3763
  const { getHyperClawDir: getHyperClawDir$1, getEnvFilePath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3760
- const { getApiKeyGuide, GENERIC_API_KEY_STEPS } = await Promise.resolve().then(() => require("./api-keys-guide-BdT2lfX6.js"));
3764
+ const { getApiKeyGuide, GENERIC_API_KEY_STEPS } = await Promise.resolve().then(() => require("./api-keys-guide--73Bq0Ey.js"));
3761
3765
  const fs$7 = await import("fs-extra");
3762
3766
  const path$5 = await import("path");
3763
3767
  const guide = getApiKeyGuide(serviceId);
@@ -3810,7 +3814,7 @@ authCmd.command("add <service_id>").description("Add API key for a service (any
3810
3814
  });
3811
3815
  authCmd.command("remove <service_id>").description("Remove API key for a service from credentials and .env").action(async (serviceId) => {
3812
3816
  const chalk$11 = require("chalk");
3813
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-DU2cVTiY.js"));
3817
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-Bmm9e1SS.js"));
3814
3818
  const { getHyperClawDir: getHyperClawDir$1, getEnvFilePath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3815
3819
  const fs$7 = await import("fs-extra");
3816
3820
  const safeId = serviceId.replace(/[^a-zA-Z0-9_-]/g, "_").toLowerCase();
@@ -3830,7 +3834,7 @@ authCmd.command("oauth <provider>").description("Run full OAuth flow. Providers:
3830
3834
  const chalk$11 = require("chalk");
3831
3835
  const ora$4 = (await import("ora")).default;
3832
3836
  try {
3833
- const { runOAuthFlow } = await Promise.resolve().then(() => require("./oauth-flow-CJ7dFXKT.js"));
3837
+ const { runOAuthFlow } = await Promise.resolve().then(() => require("./oauth-flow-BbLQTzZk.js"));
3834
3838
  const spinner = ora$4("Starting OAuth flow...").start();
3835
3839
  spinner.text = "Opening browser — complete the consent and return here.";
3836
3840
  const tokens = await runOAuthFlow(provider, {
@@ -3838,7 +3842,7 @@ authCmd.command("oauth <provider>").description("Run full OAuth flow. Providers:
3838
3842
  clientSecret: opts.clientSecret
3839
3843
  });
3840
3844
  spinner.stop();
3841
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-B2RBpiXg.js"));
3845
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-UZyG84s7.js"));
3842
3846
  const now = Math.floor(Date.now() / 1e3);
3843
3847
  const expires_at = tokens.expires_in ? now + tokens.expires_in : void 0;
3844
3848
  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;
@@ -3873,7 +3877,7 @@ authCmd.command("setup-token <provider>").description("Save setup token (Anthrop
3873
3877
  console.log(chalk$11.red("\n ✖ No token provided.\n"));
3874
3878
  process.exit(1);
3875
3879
  }
3876
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-B2RBpiXg.js"));
3880
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-UZyG84s7.js"));
3877
3881
  await writeOAuthToken("anthropic-setup", {
3878
3882
  access_token: token.trim(),
3879
3883
  token_url: "https://api.anthropic.com"
@@ -3884,7 +3888,7 @@ authCmd.command("setup-token <provider>").description("Save setup token (Anthrop
3884
3888
  });
3885
3889
  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) => {
3886
3890
  const chalk$11 = require("chalk");
3887
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-B2RBpiXg.js"));
3891
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-UZyG84s7.js"));
3888
3892
  const access_token = opts.token || process.env.OAUTH_ACCESS_TOKEN;
3889
3893
  if (!access_token) {
3890
3894
  console.log(chalk$11.red("\n ✖ Provide --token <access_token> or set OAUTH_ACCESS_TOKEN\n"));
@@ -3912,7 +3916,7 @@ workspaceCmd.command("init [dir]").description("Initialize workspace files (SOUL
3912
3916
  try {
3913
3917
  cfg = await fs$7.readJson(getConfigPath$1());
3914
3918
  } catch {}
3915
- const { initWorkspaceFiles } = await Promise.resolve().then(() => require("./memory-D991eoj7.js"));
3919
+ const { initWorkspaceFiles } = await Promise.resolve().then(() => require("./memory-BGgCBSx1.js"));
3916
3920
  await initWorkspaceFiles({
3917
3921
  agentName: cfg.identity?.agentName || "Hyper",
3918
3922
  personality: cfg.identity?.personality || "helpful and concise",
@@ -3951,13 +3955,13 @@ workspaceCmd.command("show [dir]").description("Show workspace files summary").a
3951
3955
  });
3952
3956
  const botCmd = program.command("bot").description("HyperClaw Bot — companion bot for remote gateway control");
3953
3957
  botCmd.command("status").action(async () => {
3954
- const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-PfthmAly.js"));
3958
+ const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-CgrV46DA.js"));
3955
3959
  await showBotStatus();
3956
3960
  process.exit(0);
3957
3961
  });
3958
3962
  botCmd.command("setup").description("Configure HyperClaw Bot (Telegram token, allowed users)").action(async () => {
3959
3963
  const inquirer$2 = require("inquirer");
3960
- const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-PfthmAly.js"));
3964
+ const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-CgrV46DA.js"));
3961
3965
  const chalk$11 = require("chalk");
3962
3966
  console.log(chalk$11.bold.hex("#06b6d4")("\n 🦅 HYPERCLAW BOT SETUP\n"));
3963
3967
  console.log(chalk$11.gray(" Create a bot at t.me/BotFather, then paste the token below.\n"));
@@ -4019,14 +4023,14 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
4019
4023
  cwd: process.cwd()
4020
4024
  });
4021
4025
  child.unref();
4022
- const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-PfthmAly.js"));
4026
+ const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-CgrV46DA.js"));
4023
4027
  await writeBotPid(child.pid);
4024
4028
  console.log(require("chalk").green(`\n ✔ HyperClaw Bot started in background (PID ${child.pid})`));
4025
4029
  console.log(require("chalk").gray(" Stop with: hyperclaw bot stop\n"));
4026
4030
  process.exit(0);
4027
4031
  return;
4028
4032
  }
4029
- const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-PfthmAly.js"));
4033
+ const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-CgrV46DA.js"));
4030
4034
  const cfg = await loadBotConfig();
4031
4035
  if (!cfg) {
4032
4036
  console.log(require("chalk").red("\n ✖ HyperClaw Bot not configured. Run: hyperclaw bot setup\n"));
@@ -4053,41 +4057,41 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
4053
4057
  });
4054
4058
  botCmd.command("stop").description("Stop HyperClaw Bot (when running in background)").action(async () => {
4055
4059
  const chalk$11 = require("chalk");
4056
- const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-PfthmAly.js"));
4060
+ const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-CgrV46DA.js"));
4057
4061
  const stopped = await stopBotProcess();
4058
4062
  if (stopped) console.log(chalk$11.green("\n ✔ HyperClaw Bot stopped\n"));
4059
4063
  else console.log(chalk$11.gray("\n Bot not running in background (no PID file). Use Ctrl+C to stop foreground bot.\n"));
4060
4064
  process.exit(stopped ? 0 : 1);
4061
4065
  });
4062
4066
  memCmd.command("search <query>").description("Search MEMORY.md").action(async (query) => {
4063
- const { searchMemory } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
4067
+ const { searchMemory } = await Promise.resolve().then(() => require("./src-BxmkZ9RH.js"));
4064
4068
  await searchMemory(query);
4065
4069
  process.exit(0);
4066
4070
  });
4067
4071
  memCmd.command("auto-show").description("Show auto-extracted memories from MEMORY.md").action(async () => {
4068
- const { showMemory } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
4072
+ const { showMemory } = await Promise.resolve().then(() => require("./src-BxmkZ9RH.js"));
4069
4073
  await showMemory();
4070
4074
  process.exit(0);
4071
4075
  });
4072
4076
  memCmd.command("clear").description("Clear all auto-extracted memories").action(async () => {
4073
- const { clearMemory } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
4077
+ const { clearMemory } = await Promise.resolve().then(() => require("./src-BxmkZ9RH.js"));
4074
4078
  await clearMemory();
4075
4079
  process.exit(0);
4076
4080
  });
4077
4081
  memCmd.command("save <text>").description("Manually save a fact to MEMORY.md").action(async (text) => {
4078
- const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
4082
+ const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-BxmkZ9RH.js"));
4079
4083
  await saveMemoryDirect(text);
4080
4084
  console.log(chalk.default.hex("#06b6d4")(` ✅ Saved: ${text}\n`));
4081
4085
  process.exit(0);
4082
4086
  });
4083
4087
  const pcCmd = program.command("pc").description("PC access — give the AI access to your computer");
4084
4088
  pcCmd.command("status").description("Show PC access status and config").action(async () => {
4085
- const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
4089
+ const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-BxmkZ9RH.js"));
4086
4090
  await showPCAccessStatus();
4087
4091
  process.exit(0);
4088
4092
  });
4089
4093
  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) => {
4090
- const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
4094
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BxmkZ9RH.js"));
4091
4095
  const level = opts.level;
4092
4096
  const allowed = [
4093
4097
  "read-only",
@@ -4114,7 +4118,7 @@ pcCmd.command("enable").description("Enable PC access for the AI").option("--lev
4114
4118
  process.exit(0);
4115
4119
  });
4116
4120
  pcCmd.command("disable").description("Disable PC access").action(async () => {
4117
- const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
4121
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BxmkZ9RH.js"));
4118
4122
  await savePCAccessConfig({ enabled: false });
4119
4123
  console.log(chalk.default.hex("#06b6d4")("\n ✅ PC access disabled\n"));
4120
4124
  process.exit(0);
@@ -4139,7 +4143,7 @@ pcCmd.command("log").description("Show PC access audit log").option("-n, --lines
4139
4143
  process.exit(0);
4140
4144
  });
4141
4145
  pcCmd.command("run <command>").description("Run a shell command via PC access (must be enabled)").action(async (command) => {
4142
- const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-BRDu1tbl.js"));
4146
+ const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-BxmkZ9RH.js"));
4143
4147
  const cfg = await loadPCAccessConfig();
4144
4148
  if (!cfg.enabled) {
4145
4149
  console.log(chalk.default.red("\n ✖ PC access disabled. Run: hyperclaw pc enable\n"));
@@ -4153,7 +4157,7 @@ pcCmd.command("run <command>").description("Run a shell command via PC access (m
4153
4157
  process.exit(0);
4154
4158
  });
4155
4159
  program.command("setup").description("Setup wizard — alias for `hyperclaw onboard`").option("--install-daemon", "Auto-install system daemon").option("--reset", "Reset config before running wizard").option("--non-interactive", "Non-interactive mode").option("--json", "Output result as JSON (use with --non-interactive)").option("--anthropic-api-key <key>", "Anthropic API key (non-interactive)").option("--openai-api-key <key>", "OpenAI API key (non-interactive)").option("--gateway-port <port>", "Gateway port (non-interactive)", "18789").option("--gateway-bind <bind>", "Gateway bind: loopback | all", "loopback").action(async (opts) => {
4156
- await new require_onboard.Banner().showNeonBanner(false);
4160
+ await new require_banner.Banner().showNeonBanner(false);
4157
4161
  const wizardOpts = {
4158
4162
  wizard: true,
4159
4163
  installDaemon: opts.installDaemon ?? false,
@@ -4170,7 +4174,7 @@ program.command("setup").description("Setup wizard — alias for `hyperclaw onbo
4170
4174
  });
4171
4175
  async function runUpdateCheck() {
4172
4176
  try {
4173
- const { checkForUpdates: checkForUpdates$1, notifyUpdateAvailable } = await Promise.resolve().then(() => require("./update-check-CaHNCDqe.js"));
4177
+ const { checkForUpdates: checkForUpdates$1, notifyUpdateAvailable } = await Promise.resolve().then(() => require("./update-check-C4te7JmY.js"));
4174
4178
  const path$5 = require("path");
4175
4179
  const { readFileSync } = require("fs");
4176
4180
  const pkgPath = path$5.resolve(__dirname, "../package.json");
@@ -4180,10 +4184,10 @@ async function runUpdateCheck() {
4180
4184
  } catch {}
4181
4185
  }
4182
4186
  if (process.argv.length === 2) (async () => {
4183
- const { ConfigManager: ConfigManager$1 } = await Promise.resolve().then(() => require("./manager-B90HEHxe.js"));
4187
+ const { ConfigManager: ConfigManager$1 } = await Promise.resolve().then(() => require("./manager-BNc21xgG.js"));
4184
4188
  const cfg = await new ConfigManager$1().load().catch(() => null);
4185
4189
  if (cfg?.provider?.apiKey || cfg?.provider?.providerId) {
4186
- await new require_onboard.Banner().showNeonBanner(false);
4190
+ await new require_banner.Banner().showNeonBanner(false);
4187
4191
  const { getTheme } = await Promise.resolve().then(() => require("./theme-DdZT-Bq4.js"));
4188
4192
  const t = getTheme(false);
4189
4193
  const chalk$11 = require("chalk");
@@ -4196,8 +4200,8 @@ if (process.argv.length === 2) (async () => {
4196
4200
  console.log(` ${t.c("hyperclaw doctor")} — health check & fix issues`);
4197
4201
  console.log(` ${t.c("hyperclaw --help")} — all commands\n`);
4198
4202
  } else {
4199
- await new require_onboard.Banner().showNeonBanner(false);
4200
- const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-BbJROE0s.js"));
4203
+ await new require_banner.Banner().showNeonBanner(false);
4204
+ const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-DEwuHrMj.js"));
4201
4205
  await new HyperClawWizard$1().run({ wizard: true });
4202
4206
  }
4203
4207
  await runUpdateCheck();