hyperclaw 5.0.0 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/LICENSE +2 -1
  2. package/README.md +449 -99
  3. package/dist/a2ui-protocol-Gzm29Gaw.js +75 -0
  4. package/dist/agents-routing-Biy5ew4a.js +4 -0
  5. package/dist/agents-routing-CL3HQNoM.js +327 -0
  6. package/dist/api-keys-guide-CGn5BSF7.js +149 -0
  7. package/dist/api-keys-guide-ChbThbPj.js +149 -0
  8. package/dist/audit-BJohI_vC.js +441 -0
  9. package/dist/audit-NPIMmOSq.js +441 -0
  10. package/dist/bounty-tools-BUqUKjt0.js +211 -0
  11. package/dist/bounty-tools-CY_i91DU.js +211 -0
  12. package/dist/browser-tools-CxJY6pAn.js +5 -0
  13. package/dist/browser-tools-JZ9ji6AW.js +179 -0
  14. package/dist/chat-qVuqhlPu.js +258 -0
  15. package/dist/claw-tasks-B-8RRMdq.js +80 -0
  16. package/dist/claw-tasks-Cyzdbhz_.js +80 -0
  17. package/dist/connector-1x1rCBHz.js +162 -0
  18. package/dist/connector-B4jeCULG.js +305 -0
  19. package/dist/connector-B7qngfkT.js +286 -0
  20. package/dist/connector-B8BK0GBo.js +531 -0
  21. package/dist/connector-BE9eJs8-.js +182 -0
  22. package/dist/connector-BEe-DTGQ.js +189 -0
  23. package/dist/connector-BU7p5ZgB.js +167 -0
  24. package/dist/connector-BUzzq7Ij.js +568 -0
  25. package/dist/connector-BpDqLgnW.js +419 -0
  26. package/dist/connector-BpW88ut2.js +189 -0
  27. package/dist/connector-Bxv-gy8U.js +167 -0
  28. package/dist/connector-Bz14zcJv.js +213 -0
  29. package/dist/connector-C1zP5-5q.js +85 -0
  30. package/dist/connector-CAcpcovF.js +498 -0
  31. package/dist/connector-CJgVjS58.js +181 -0
  32. package/dist/connector-Cf53D6qV.js +425 -0
  33. package/dist/connector-CyHmlbNz.js +508 -0
  34. package/dist/connector-D22mJGVu.js +340 -0
  35. package/dist/connector-D6RtMmlL.js +225 -0
  36. package/dist/connector-D9EnT8A4.js +280 -0
  37. package/dist/connector-DNDwIh37.js +239 -0
  38. package/dist/connector-Di27MeO4.js +350 -0
  39. package/dist/connector-Do0BPiHt.js +194 -0
  40. package/dist/connector-DvLwOfJy.js +192 -0
  41. package/dist/connector-DvU83NSq.js +181 -0
  42. package/dist/connector-DxskpDc_.js +173 -0
  43. package/dist/connector-byy3eISx.js +552 -0
  44. package/dist/connector-vV89hsyd.js +218 -0
  45. package/dist/cost-tracker-Ca1UPZ33.js +103 -0
  46. package/dist/cost-tracker-fnaj_6M9.js +103 -0
  47. package/dist/credentials-store-BxijEirw.js +77 -0
  48. package/dist/credentials-store-CA8UtK0T.js +77 -0
  49. package/dist/credentials-store-CPkVO6-z.js +4 -0
  50. package/dist/credentials-store-Cm7DH-kh.js +4 -0
  51. package/dist/cron-tasks-L0mz1yyU.js +82 -0
  52. package/dist/cron-tasks-_pqQCmxc.js +82 -0
  53. package/dist/daemon-7ViroziB.js +5 -0
  54. package/dist/daemon-BfyKmZhr.js +318 -0
  55. package/dist/daemon-CNyunwkR.js +5 -0
  56. package/dist/daemon-CindY8OK.js +318 -0
  57. package/dist/delivery-DVHmv1IR.js +4 -0
  58. package/dist/delivery-DgiZcJBp.js +4 -0
  59. package/dist/delivery-DpMX0Yyc.js +95 -0
  60. package/dist/delivery-otAU4alM.js +95 -0
  61. package/dist/destructive-gate-CA0DtA5K.js +101 -0
  62. package/dist/destructive-gate-DZt71UZR.js +101 -0
  63. package/dist/developer-keys-Cnd1kswV.js +127 -0
  64. package/dist/developer-keys-DENo3ZA6.js +8 -0
  65. package/dist/doctor-Dgjoc3DG.js +230 -0
  66. package/dist/doctor-RwsOhtAl.js +6 -0
  67. package/dist/engine-B0kLfRL0.js +256 -0
  68. package/dist/engine-BJUpRUOv.js +7 -0
  69. package/dist/engine-D_VeoZHw.js +305 -0
  70. package/dist/engine-JjRnhlsE.js +7 -0
  71. package/dist/env-resolve-17ekEU6p.js +10 -0
  72. package/dist/env-resolve-BFJXWl94.js +115 -0
  73. package/dist/env-resolve-Z2XF6leB.js +115 -0
  74. package/dist/env-resolve-bDYssfih.js +10 -0
  75. package/dist/extraction-tools-DbxnxIco.js +5 -0
  76. package/dist/extraction-tools-Dg7AHS35.js +91 -0
  77. package/dist/form_data-CGAy4HE0.js +8657 -0
  78. package/dist/gmail-watch-setup-C3uSWznp.js +40 -0
  79. package/dist/health-DUjluWHQ.js +6 -0
  80. package/dist/health-DVfkpUQW.js +152 -0
  81. package/dist/heartbeat-engine-CrgL4mrP.js +83 -0
  82. package/dist/heartbeat-engine-Ut6pXBD6.js +83 -0
  83. package/dist/hub-9LaKnLjY.js +6 -0
  84. package/dist/hub-BO6bj8Yj.js +515 -0
  85. package/dist/hub-Bu52YZqW.js +6 -0
  86. package/dist/hub-CfwUz9YW.js +515 -0
  87. package/dist/hyperclawbot-BrcoYLOp.js +505 -0
  88. package/dist/hyperclawbot-CBiDSKsa.js +505 -0
  89. package/dist/inference-0mlFQqIm.js +922 -0
  90. package/dist/inference-DHR82Gh7.js +6 -0
  91. package/dist/inference-DhA8jpfH.js +2692 -0
  92. package/dist/inference-SzqFe_nk.js +6 -0
  93. package/dist/knowledge-graph-BrYpSgxW.js +131 -0
  94. package/dist/knowledge-graph-DE5lSF02.js +131 -0
  95. package/dist/loader-9JqY6Nlq.js +4 -0
  96. package/dist/loader-BkDi8MD9.js +400 -0
  97. package/dist/loader-Cjdd1kw4.js +400 -0
  98. package/dist/loader-DI2qDRPC.js +4 -0
  99. package/dist/logger-Cp8wC7F8.js +83 -0
  100. package/dist/logger-DCT2l9GV.js +83 -0
  101. package/dist/manager-3cq3DydI.js +4 -0
  102. package/dist/manager-B2Gls5RG.js +218 -0
  103. package/dist/manager-BUrFrPuq.js +117 -0
  104. package/dist/manager-Bi9UYyVR.js +105 -0
  105. package/dist/manager-Biz9ixWJ.js +40 -0
  106. package/dist/manager-CBUHJiY7.js +6 -0
  107. package/dist/manager-CVLLaKmq.js +218 -0
  108. package/dist/manager-CWNSML5D.js +117 -0
  109. package/dist/manager-SJe9gt-q.js +4 -0
  110. package/dist/mcp-CUoTCMw-.js +139 -0
  111. package/dist/mcp-loader-BIz-450x.js +94 -0
  112. package/dist/mcp-loader-CvxRDtPC.js +94 -0
  113. package/dist/memory-OL77OMOr.js +270 -0
  114. package/dist/memory-auto-CpQHZlEJ.js +306 -0
  115. package/dist/memory-auto-D-L2q21G.js +306 -0
  116. package/dist/memory-auto-DTcy5VBy.js +5 -0
  117. package/dist/memory-auto-Z6LCf-iK.js +5 -0
  118. package/dist/memory-gUi4VaIf.js +4 -0
  119. package/dist/memory-integration-B8RSN4pr.js +91 -0
  120. package/dist/memory-integration-g2vxwgoE.js +91 -0
  121. package/dist/moltbook-B-40gQOL.js +81 -0
  122. package/dist/moltbook-Cl8cQfxJ.js +81 -0
  123. package/dist/node-TWxRm84k.js +222 -0
  124. package/dist/nodes-registry-C9dCFwjh.js +52 -0
  125. package/dist/nodes-registry-DKRtsbNg.js +52 -0
  126. package/dist/oauth-flow-CeaaGAz0.js +150 -0
  127. package/dist/oauth-flow-JCfporKq.js +150 -0
  128. package/dist/oauth-provider-4R0EJlsT.js +110 -0
  129. package/dist/oauth-provider-B4dzn56l.js +110 -0
  130. package/dist/observability-CDZmeHfa.js +89 -0
  131. package/dist/observability-nZ3CBIxG.js +89 -0
  132. package/dist/onboard-BBBWcfhp.js +10 -0
  133. package/dist/onboard-BVOtKQdh.js +3641 -0
  134. package/dist/onboard-Bw28IRQ3.js +4070 -0
  135. package/dist/onboard-CGNIw27w.js +11 -0
  136. package/dist/orchestrator-BovkM63z.js +6 -0
  137. package/dist/orchestrator-CcKx1Ovk.js +189 -0
  138. package/dist/orchestrator-DSbpkP1X.js +189 -0
  139. package/dist/orchestrator-DcFfDLTX.js +6 -0
  140. package/dist/osint-B4_m3VHQ.js +277 -0
  141. package/dist/osint-B6BZKQAD.js +277 -0
  142. package/dist/pairing-B6RArWhD.js +196 -0
  143. package/dist/pairing-BsQ08DLq.js +4 -0
  144. package/dist/pc-access-B0KocJNe.js +819 -0
  145. package/dist/pc-access-DkzmugZ7.js +8 -0
  146. package/dist/pending-approval-BgNjjuI2.js +22 -0
  147. package/dist/pending-approval-C_HkX1QL.js +22 -0
  148. package/dist/providers-DxiamZSL.js +5 -0
  149. package/dist/providers-Dy15rDb7.js +657 -0
  150. package/dist/reminders-store-CzUY0zYx.js +58 -0
  151. package/dist/renderer-ANNfXsHn.js +225 -0
  152. package/dist/rules-BSQwwAYC.js +103 -0
  153. package/dist/run-main.js +142 -132
  154. package/dist/runner-BHRSOPEU.js +1271 -0
  155. package/dist/runner-CJFJUtPm.js +1271 -0
  156. package/dist/sdk/index.js +2 -2
  157. package/dist/sdk/index.mjs +2 -2
  158. package/dist/security--oQObeJO.js +4 -0
  159. package/dist/security-wBOg0TA8.js +73 -0
  160. package/dist/server-Brl_HQUB.js +1255 -0
  161. package/dist/server-CbTTpB5m.js +1255 -0
  162. package/dist/server-DP_bPzvI.js +4 -0
  163. package/dist/server-DhfipkwN.js +4 -0
  164. package/dist/session-store-B09r5HgB.js +5 -0
  165. package/dist/session-store-DCTQIVur.js +113 -0
  166. package/dist/sessions-tools-BdlN6Pb6.js +95 -0
  167. package/dist/sessions-tools-JVLDKSJ_.js +5 -0
  168. package/dist/skill-loader-B5oeliGu.js +7 -0
  169. package/dist/skill-loader-Wf3brNOj.js +160 -0
  170. package/dist/skill-runtime-BGlvly2s.js +102 -0
  171. package/dist/skill-runtime-BXWd-Ktf.js +102 -0
  172. package/dist/skill-runtime-DhL2T76p.js +5 -0
  173. package/dist/skill-runtime-jgklm02e.js +5 -0
  174. package/dist/src-BbPa6Q8p.js +63 -0
  175. package/dist/src-BeXtfkK2.js +458 -0
  176. package/dist/src-Bhybpk1J.js +63 -0
  177. package/dist/src-CGQjRI4N.js +20 -0
  178. package/dist/src-DMJ4-uqk.js +458 -0
  179. package/dist/sub-agent-tools-CmE345s_.js +39 -0
  180. package/dist/sub-agent-tools-DHY-4WWM.js +39 -0
  181. package/dist/theme-D0smfC_l.js +8 -0
  182. package/dist/theme-DajRRZbA.js +180 -0
  183. package/dist/tool-policy-DZvF8xlQ.js +189 -0
  184. package/dist/tool-policy-DgNqFWYn.js +189 -0
  185. package/dist/tts-elevenlabs-C06nUxMK.js +61 -0
  186. package/dist/tts-elevenlabs-JeFaGNJU.js +61 -0
  187. package/dist/update-check-BVEqHhFY.js +83 -0
  188. package/dist/update-check-w4XuxVl7.js +81 -0
  189. package/dist/vision-JOtOS1Br.js +121 -0
  190. package/dist/vision-fky3elEo.js +121 -0
  191. package/dist/vision-tools-C8B3776g.js +5 -0
  192. package/dist/vision-tools-CB28ZCO_.js +5 -0
  193. package/dist/vision-tools-dwn9p4el.js +51 -0
  194. package/dist/vision-tools-vPPwQ-0N.js +51 -0
  195. package/dist/voice-transcription-B6RtplmN.js +138 -0
  196. package/dist/voice-transcription-DBo5hXmu.js +138 -0
  197. package/dist/website-watch-tools-B-jRAeTe.js +139 -0
  198. package/dist/website-watch-tools-BC9xAL67.js +5 -0
  199. package/package.json +1 -1
package/dist/run-main.js CHANGED
@@ -1,22 +1,23 @@
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');
8
- require('./theme-DcxwcUgZ.js');
9
- const require_hub = require('./hub-D0XwdjM-.js');
10
- const require_manager = require('./manager-rgCsaWT1.js');
11
- const require_manager$1 = require('./manager-03ipO9R0.js');
12
- const require_memory = require('./memory-DsS_eFvJ.js');
13
- const require_loader = require('./loader-CnEdOyjT.js');
14
- const require_agents_routing = require('./agents-routing-ChHiZp36.js');
15
- const require_pairing = require('./pairing-6iM27aD8.js');
16
- const require_doctor = require('./doctor-BvCe8BBk.js');
17
- const require_health = require('./health-Ds2YlpTB.js');
18
- const require_security = require('./security-tpgqPWWH.js');
19
- const require_developer_keys = require('./developer-keys-DrrcUqFa.js');
4
+ require('./env-resolve-BFJXWl94.js');
5
+ const require_onboard = require('./onboard-BVOtKQdh.js');
6
+ require('./server-CbTTpB5m.js');
7
+ const require_daemon = require('./daemon-CindY8OK.js');
8
+ require('./providers-Dy15rDb7.js');
9
+ require('./theme-DajRRZbA.js');
10
+ const require_hub = require('./hub-BO6bj8Yj.js');
11
+ const require_manager = require('./manager-Biz9ixWJ.js');
12
+ const require_manager$1 = require('./manager-Bi9UYyVR.js');
13
+ const require_memory = require('./memory-OL77OMOr.js');
14
+ const require_loader = require('./loader-Cjdd1kw4.js');
15
+ const require_agents_routing = require('./agents-routing-CL3HQNoM.js');
16
+ const require_pairing = require('./pairing-B6RArWhD.js');
17
+ const require_doctor = require('./doctor-Dgjoc3DG.js');
18
+ const require_health = require('./health-DVfkpUQW.js');
19
+ const require_security = require('./security-wBOg0TA8.js');
20
+ const require_developer_keys = require('./developer-keys-Cnd1kswV.js');
20
21
  const commander = require_chunk.__toESM(require("commander"));
21
22
  const chalk = require_chunk.__toESM(require("chalk"));
22
23
  const inquirer = require_chunk.__toESM(require("inquirer"));
@@ -38,7 +39,7 @@ var Dashboard = class {
38
39
  console.clear();
39
40
  await this.drawDashboard();
40
41
  if (live) {
41
- console.log(chalk.default.hex("#06b6d4")("🔴 LIVE MODE Ctrl+C to exit\n"));
42
+ console.log(chalk.default.hex("#06b6d4")("?? LIVE MODE Ctrl+C to exit\n"));
42
43
  this.startLiveUpdates();
43
44
  }
44
45
  }
@@ -53,44 +54,44 @@ var Dashboard = class {
53
54
  const model = cfg?.provider?.modelId || "openrouter/auto";
54
55
  const channels = (cfg?.channels ?? cfg?.gateway?.enabledChannels ?? ["cli"]).join(", ");
55
56
  const isRunning = await gm.isRunning(port);
56
- const statusDot = isRunning ? chalk.default.hex("#06b6d4")("") : chalk.default.gray("");
57
+ const statusDot = isRunning ? chalk.default.hex("#06b6d4")("?") : chalk.default.gray("0");
57
58
  const statusText = isRunning ? chalk.default.hex("#06b6d4")("ONLINE") : chalk.default.gray("OFFLINE");
58
59
  const w = 72;
59
- const line = "".repeat(w);
60
+ const line = "=".repeat(w);
60
61
  const c = chalk.default.hex("#06b6d4");
61
62
  const row = (content) => {
62
63
  const stripped = content.replace(/\x1b\[[0-9;]*m/g, "");
63
64
  const pad = Math.max(0, w - stripped.length - 1);
64
- return c(`║ `) + content + " ".repeat(pad) + c(`║`);
65
+ return c(`� `) + content + " ".repeat(pad) + c(`�`);
65
66
  };
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)}╣`));
67
+ console.log(c(`-${line}�`));
68
+ console.log(c(`�`) + chalk.default.bold.hex("#06b6d4")(`${"?? HYPERCLAW v5.0.2 GATEWAY DASHBOARD".padStart(45).padEnd(w)}`) + c(`�`));
69
+ console.log(c(`�${line}�`));
70
+ console.log(row(`${statusDot} Gateway ${statusText} ${chalk.default.gray("")} ws://localhost:${port} ${chalk.default.gray("")} Agent: ${c(agent)}`));
71
+ console.log(row(`${c("?")} Model ${chalk.default.gray(model.slice(0, 30))} ${chalk.default.gray("")} User: ${c(user)}`));
72
+ console.log(c(`�${"-".repeat(w)}�`));
72
73
  console.log(row(chalk.default.bold("ACTIVE CHANNELS")));
73
74
  const chList = (channels || "cli").split(", ");
74
75
  for (let i = 0; i < chList.length; i += 3) {
75
- const group = chList.slice(i, i + 3).map((ch) => ` ${c("")} ${ch.padEnd(12)}`).join("");
76
+ const group = chList.slice(i, i + 3).map((ch) => ` ${c("?")} ${ch.padEnd(12)}`).join("");
76
77
  console.log(row(group));
77
78
  }
78
- console.log(c(`╠${"".repeat(w)}╣`));
79
+ console.log(c(`�${"-".repeat(w)}�`));
79
80
  console.log(row(chalk.default.bold("INSTALLED SKILLS")));
80
81
  if (installed.length === 0) console.log(row(chalk.default.gray(" No skills installed. Run: hyperclaw hub")));
81
82
  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("");
83
+ const group = installed.slice(i, i + 3).map((s) => ` ${c("?")} ${s.name.slice(0, 14).padEnd(14)}`).join("");
83
84
  console.log(row(group));
84
85
  }
85
- console.log(c(`╠${"".repeat(w)}╣`));
86
+ console.log(c(`�${"-".repeat(w)}�`));
86
87
  console.log(row(chalk.default.bold("RECENT ACTIVITY")));
87
88
  const now = (/* @__PURE__ */ new Date()).toLocaleTimeString();
88
89
  console.log(row(` [${now}] Gateway heartbeat: ${c("OK")}`));
89
- console.log(row(` [${now}] AGENTS.md loaded rules active`));
90
+ console.log(row(` [${now}] AGENTS.md loaded rules active`));
90
91
  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`));
92
+ console.log(c(`�${"-".repeat(w)}�`));
93
+ console.log(row(chalk.default.gray("Commands: [d] ") + chalk.default.red("?? daemon") + chalk.default.gray(" [h] hub [g] gateway [m] memory [q] quit")));
94
+ console.log(c(`L${line}-\n`));
94
95
  }
95
96
  startLiveUpdates() {
96
97
  let tick = 0;
@@ -145,7 +146,7 @@ async function recordAudio(outFile, seconds) {
145
146
  async function transcribeWhisper(filePath, lang) {
146
147
  const apiKey = process.env.OPENAI_API_KEY || process.env.ANTHROPIC_API_KEY;
147
148
  if (!apiKey) throw new Error("No OPENAI_API_KEY set");
148
- const FormData = (await Promise.resolve().then(() => require_chunk.__toDynamicImportESM()(require("./form_data-Cz040rio.js"))).catch(() => null))?.default;
149
+ const FormData = (await Promise.resolve().then(() => require_chunk.__toDynamicImportESM()(require("./form_data-CGAy4HE0.js"))).catch(() => null))?.default;
149
150
  if (!FormData) throw new Error("form-data not installed");
150
151
  const form = new FormData();
151
152
  form.append("file", fs.createReadStream(filePath), {
@@ -2426,7 +2427,7 @@ var init_queue = require_chunk.__esm({ "src/delivery/queue.ts"() {
2426
2427
  //#endregion
2427
2428
  //#region src/cli/run-main.ts
2428
2429
  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) => {
2430
+ program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("5.0.2").option("--profile <name>", "Use an isolated gateway profile. Auto-scopes HYPERCLAW_STATE_DIR and HYPERCLAW_CONFIG_PATH. Required for multi-gateway setups (rescue bot, staging, etc.). Example: hyperclaw --profile rescue gateway --port 19001").hook("preAction", (thisCommand) => {
2430
2431
  const profile = thisCommand.opts().profile;
2431
2432
  if (profile) {
2432
2433
  const os$8 = require("os");
@@ -2568,8 +2569,8 @@ sandboxCmd.command("explain").description("Show effective sandbox mode, tool pol
2568
2569
  } catch {}
2569
2570
  const sandboxMode = cfg?.agents?.defaults?.sandbox?.mode ?? "non-main";
2570
2571
  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"));
2572
+ const { describeToolPolicy, applyToolPolicy } = await Promise.resolve().then(() => require("./tool-policy-DgNqFWYn.js"));
2573
+ const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
2573
2574
  const allTools = [
2574
2575
  ...getBuiltinTools(),
2575
2576
  ...getSessionsTools(() => null),
@@ -2912,7 +2913,7 @@ cfgCmd.command("set-service-key <serviceId> [apiKey]").description("Set API key
2912
2913
  cfgCmd.command("schema").description("Show configuration schema").action(() => {
2913
2914
  console.log(chalk.default.bold.hex("#06b6d4")("\n Config schema: ~/.hyperclaw/config.json\n"));
2914
2915
  const schema = {
2915
- version: "string (e.g. \"5.0.0\")",
2916
+ version: "string (e.g. \"5.0.2\")",
2916
2917
  workspaceName: "string",
2917
2918
  provider: {
2918
2919
  providerId: "string",
@@ -3052,7 +3053,7 @@ program.command("status").description("System overview").option("--all", "Full l
3052
3053
  if (opts.all || opts.deep) {
3053
3054
  const fs$7 = await import("fs-extra");
3054
3055
  const { getConfigPath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3055
- const t = (await Promise.resolve().then(() => require("./theme-cx0fkgWC.js"))).getTheme(false);
3056
+ const t = (await Promise.resolve().then(() => require("./theme-D0smfC_l.js"))).getTheme(false);
3056
3057
  const configPath = getConfigPath();
3057
3058
  console.log(t.bold("\n ─── Deep status ───\n"));
3058
3059
  try {
@@ -3064,7 +3065,7 @@ program.command("status").description("System overview").option("--all", "Full l
3064
3065
  }
3065
3066
  if (opts.deep) {
3066
3067
  const http$2 = await import("http");
3067
- const { resolveGatewayUrl } = await Promise.resolve().then(() => require("./health-B-asI__D.js"));
3068
+ const { resolveGatewayUrl } = await Promise.resolve().then(() => require("./health-DUjluWHQ.js"));
3068
3069
  const cfg = await new require_manager.ConfigManager().load();
3069
3070
  const { gatewayUrl } = resolveGatewayUrl(cfg);
3070
3071
  const u = new URL(gatewayUrl);
@@ -3142,7 +3143,7 @@ program.command("health").description("Quick gateway health probe (Runtime, RPC
3142
3143
  });
3143
3144
  const themeCmd = program.command("theme").description("Switch CLI color theme");
3144
3145
  themeCmd.command("list").description("List available themes").action(async () => {
3145
- const { allThemes, getThemeName } = await Promise.resolve().then(() => require("./theme-cx0fkgWC.js"));
3146
+ const { allThemes, getThemeName } = await Promise.resolve().then(() => require("./theme-D0smfC_l.js"));
3146
3147
  const current = getThemeName();
3147
3148
  console.log(chalk.default.bold.hex("#06b6d4")("\n 🎨 AVAILABLE THEMES\n"));
3148
3149
  for (const { name, label } of allThemes()) {
@@ -3154,7 +3155,7 @@ themeCmd.command("list").description("List available themes").action(async () =>
3154
3155
  process.exit(0);
3155
3156
  });
3156
3157
  themeCmd.command("set <theme>").description("Set theme: dark | grey | white").action(async (name) => {
3157
- const { setThemeName, allThemes } = await Promise.resolve().then(() => require("./theme-cx0fkgWC.js"));
3158
+ const { setThemeName, allThemes } = await Promise.resolve().then(() => require("./theme-D0smfC_l.js"));
3158
3159
  const valid = allThemes().map((t) => t.name);
3159
3160
  if (!valid.includes(name)) {
3160
3161
  console.log(chalk.default.red(`\n ✖ Unknown theme: "${name}". Use: ${valid.join(" | ")}\n`));
@@ -3166,7 +3167,7 @@ themeCmd.command("set <theme>").description("Set theme: dark | grey | white").ac
3166
3167
  process.exit(0);
3167
3168
  });
3168
3169
  themeCmd.command("preview").description("Preview all themes side-by-side").action(async () => {
3169
- const { allThemes, getTheme, setThemeName, getThemeName } = await Promise.resolve().then(() => require("./theme-cx0fkgWC.js"));
3170
+ const { allThemes, getTheme, setThemeName, getThemeName } = await Promise.resolve().then(() => require("./theme-D0smfC_l.js"));
3170
3171
  const current = getThemeName();
3171
3172
  console.log(chalk.default.bold("\n 🎨 THEME PREVIEW\n"));
3172
3173
  for (const { name, label } of allThemes()) {
@@ -3183,39 +3184,39 @@ themeCmd.command("preview").description("Preview all themes side-by-side").actio
3183
3184
  });
3184
3185
  const secretsCmd = program.command("secrets").description("External secrets management");
3185
3186
  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"));
3187
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-CVLLaKmq.js"));
3187
3188
  const filter = opts.requiredBy?.split(",");
3188
3189
  await new SecretsManager().audit(filter);
3189
3190
  process.exit(0);
3190
3191
  });
3191
3192
  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"));
3193
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-CVLLaKmq.js"));
3193
3194
  await new SecretsManager().set(kv);
3194
3195
  process.exit(0);
3195
3196
  });
3196
3197
  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"));
3198
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-CVLLaKmq.js"));
3198
3199
  await new SecretsManager().apply();
3199
3200
  process.exit(0);
3200
3201
  });
3201
3202
  secretsCmd.command("reload").description("Reload secrets into running gateway").action(async () => {
3202
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-FCgF1plu.js"));
3203
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-CVLLaKmq.js"));
3203
3204
  await new SecretsManager().reload();
3204
3205
  process.exit(0);
3205
3206
  });
3206
3207
  secretsCmd.command("remove <key>").description("Remove a secret from .env").action(async (key) => {
3207
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-FCgF1plu.js"));
3208
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-CVLLaKmq.js"));
3208
3209
  await new SecretsManager().remove(key);
3209
3210
  process.exit(0);
3210
3211
  });
3211
3212
  secretsCmd.command("credentials").description("List provider credential files (credentials/*.json)").action(async () => {
3212
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-C6ir0Dae.js"));
3213
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-CPkVO6-z.js"));
3213
3214
  await new CredentialsStore().showList();
3214
3215
  process.exit(0);
3215
3216
  });
3216
3217
  const securityCmd = program.command("security").description("Security tools");
3217
3218
  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"));
3219
+ const { runSecurityAudit } = await Promise.resolve().then(() => require("./audit-NPIMmOSq.js"));
3219
3220
  await runSecurityAudit({
3220
3221
  deep: opts.deep,
3221
3222
  fix: opts.fix,
@@ -3223,9 +3224,33 @@ securityCmd.command("audit").description("Security audit — file permissions, D
3223
3224
  });
3224
3225
  process.exit(0);
3225
3226
  });
3227
+ 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) => {
3228
+ const { osintSetup, osintQuickStart } = await Promise.resolve().then(() => require("./osint-B6BZKQAD.js"));
3229
+ if (opts.show || opts.reset) await osintSetup({
3230
+ show: opts.show,
3231
+ reset: opts.reset
3232
+ });
3233
+ else if (workflow === "setup" || workflow) await osintSetup({ mode: workflow });
3234
+ else await osintQuickStart();
3235
+ process.exit(0);
3236
+ });
3237
+ program.command("osint setup").description("Interactive OSINT session setup wizard").action(async () => {
3238
+ const { osintSetup } = await Promise.resolve().then(() => require("./osint-B6BZKQAD.js"));
3239
+ await osintSetup({});
3240
+ process.exit(0);
3241
+ });
3242
+ 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) => {
3243
+ const { runChat } = await Promise.resolve().then(() => require("./chat-qVuqhlPu.js"));
3244
+ await runChat({
3245
+ sessionId: opts.session,
3246
+ model: opts.model,
3247
+ thinking: opts.thinking,
3248
+ workspace: opts.workspace
3249
+ });
3250
+ });
3226
3251
  const agentRunCmd = program.command("agent").description("Run agent with thinking control");
3227
3252
  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"));
3253
+ const { runAgent } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3229
3254
  await runAgent({
3230
3255
  message: opts.message,
3231
3256
  thinking: opts.thinking,
@@ -3241,7 +3266,7 @@ agentRunCmd.requiredOption("-m, --message <text>", "Message to send to the agent
3241
3266
  });
3242
3267
  const threadsCmd = program.command("threads").description("ACP thread-bound agent sessions");
3243
3268
  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"));
3269
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3245
3270
  const mgr = new ACPThreadManager();
3246
3271
  const threads = await mgr.list({
3247
3272
  channelId: opts.channel,
@@ -3251,29 +3276,29 @@ threadsCmd.command("list").description("List agent threads").option("--channel <
3251
3276
  process.exit(0);
3252
3277
  });
3253
3278
  threadsCmd.command("terminate <id>").description("Terminate a thread").action(async (id) => {
3254
- const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BxPHKO5x.js"));
3279
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3255
3280
  await new ACPThreadManager().terminate(id);
3256
3281
  console.log(require("chalk").green(`\n ✔ Thread terminated: ${id}\n`));
3257
3282
  process.exit(0);
3258
3283
  });
3259
3284
  const canvasCmd = program.command("canvas").description("Live AI-driven UI canvas");
3260
3285
  canvasCmd.command("show").description("Show current canvas components").action(async () => {
3261
- const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-BVQrd0_g.js"));
3286
+ const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-ANNfXsHn.js"));
3262
3287
  await new CanvasRenderer().show();
3263
3288
  process.exit(0);
3264
3289
  });
3265
3290
  canvasCmd.command("add <type> <title>").description("Add a canvas component (type: chart|table|form|markdown|image|custom)").action(async (type, title) => {
3266
- const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-BVQrd0_g.js"));
3291
+ const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-ANNfXsHn.js"));
3267
3292
  await new CanvasRenderer().addComponent(type, title);
3268
3293
  process.exit(0);
3269
3294
  });
3270
3295
  canvasCmd.command("clear").description("Clear all canvas components").action(async () => {
3271
- const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-BVQrd0_g.js"));
3296
+ const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-ANNfXsHn.js"));
3272
3297
  await new CanvasRenderer().clear();
3273
3298
  process.exit(0);
3274
3299
  });
3275
3300
  canvasCmd.command("export").description("Export canvas as HTML file").action(async () => {
3276
- const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-BVQrd0_g.js"));
3301
+ const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-ANNfXsHn.js"));
3277
3302
  const fs$7 = require("fs-extra");
3278
3303
  const html = await new CanvasRenderer().exportHtml();
3279
3304
  const outFile = require("path").join(require("os").homedir(), ".hyperclaw", "canvas", "export.html");
@@ -3294,62 +3319,62 @@ deliveryCmd.command("retry <id>").description("Retry a dead-lettered delivery it
3294
3319
  });
3295
3320
  const mcpCmd = program.command("mcp").description("MCP (Model Context Protocol) server management");
3296
3321
  mcpCmd.command("list").action(async () => {
3297
- const { mcpList } = await Promise.resolve().then(() => require("./mcp-CfoSU4Uz.js"));
3322
+ const { mcpList } = await Promise.resolve().then(() => require("./mcp-CUoTCMw-.js"));
3298
3323
  await mcpList();
3299
3324
  process.exit(0);
3300
3325
  });
3301
3326
  mcpCmd.command("add").action(async () => {
3302
- const { mcpAdd } = await Promise.resolve().then(() => require("./mcp-CfoSU4Uz.js"));
3327
+ const { mcpAdd } = await Promise.resolve().then(() => require("./mcp-CUoTCMw-.js"));
3303
3328
  await mcpAdd();
3304
3329
  process.exit(0);
3305
3330
  });
3306
3331
  mcpCmd.command("remove <id>").action(async (id) => {
3307
- const { mcpRemove } = await Promise.resolve().then(() => require("./mcp-CfoSU4Uz.js"));
3332
+ const { mcpRemove } = await Promise.resolve().then(() => require("./mcp-CUoTCMw-.js"));
3308
3333
  await mcpRemove(id);
3309
3334
  process.exit(0);
3310
3335
  });
3311
3336
  mcpCmd.command("probe [id]").action(async (id) => {
3312
- const { mcpProbe } = await Promise.resolve().then(() => require("./mcp-CfoSU4Uz.js"));
3337
+ const { mcpProbe } = await Promise.resolve().then(() => require("./mcp-CUoTCMw-.js"));
3313
3338
  await mcpProbe(id);
3314
3339
  process.exit(0);
3315
3340
  });
3316
3341
  const nodeCmd = program.command("node").description("HyperClaw node management (local, remote, android)");
3317
3342
  nodeCmd.command("list").action(async () => {
3318
- const { nodeList } = await Promise.resolve().then(() => require("./node-Dw2Gi-cP.js"));
3343
+ const { nodeList } = await Promise.resolve().then(() => require("./node-TWxRm84k.js"));
3319
3344
  await nodeList();
3320
3345
  process.exit(0);
3321
3346
  });
3322
3347
  nodeCmd.command("add").action(async () => {
3323
- const { nodeAdd } = await Promise.resolve().then(() => require("./node-Dw2Gi-cP.js"));
3348
+ const { nodeAdd } = await Promise.resolve().then(() => require("./node-TWxRm84k.js"));
3324
3349
  await nodeAdd();
3325
3350
  process.exit(0);
3326
3351
  });
3327
3352
  nodeCmd.command("probe [id]").action(async (id) => {
3328
- const { nodeProbe } = await Promise.resolve().then(() => require("./node-Dw2Gi-cP.js"));
3353
+ const { nodeProbe } = await Promise.resolve().then(() => require("./node-TWxRm84k.js"));
3329
3354
  await nodeProbe(id);
3330
3355
  process.exit(0);
3331
3356
  });
3332
3357
  nodeCmd.command("remove <id>").action(async (id) => {
3333
- const { nodeRemove } = await Promise.resolve().then(() => require("./node-Dw2Gi-cP.js"));
3358
+ const { nodeRemove } = await Promise.resolve().then(() => require("./node-TWxRm84k.js"));
3334
3359
  await nodeRemove(id);
3335
3360
  process.exit(0);
3336
3361
  });
3337
3362
  const arCmd = program.command("auto-reply").description("Auto-reply rule engine");
3338
3363
  arCmd.command("list").action(async () => {
3339
- const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-BE4GV6cV.js"));
3364
+ const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-BSQwwAYC.js"));
3340
3365
  const e = new AutoReplyEngine();
3341
3366
  await e.load();
3342
3367
  e.showList();
3343
3368
  process.exit(0);
3344
3369
  });
3345
3370
  arCmd.command("toggle <id>").action(async (id) => {
3346
- const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-BE4GV6cV.js"));
3371
+ const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-BSQwwAYC.js"));
3347
3372
  const e = new AutoReplyEngine();
3348
3373
  await e.toggle(id);
3349
3374
  process.exit(0);
3350
3375
  });
3351
3376
  arCmd.command("remove <id>").action(async (id) => {
3352
- const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-BE4GV6cV.js"));
3377
+ const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-BSQwwAYC.js"));
3353
3378
  const e = new AutoReplyEngine();
3354
3379
  await e.remove(id);
3355
3380
  process.exit(0);
@@ -3358,7 +3383,7 @@ const gmailCmd = program.command("gmail").description("Gmail Pub/Sub real-time n
3358
3383
  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) => {
3359
3384
  const chalk$11 = require("chalk");
3360
3385
  try {
3361
- const { setupGmailWatch } = await Promise.resolve().then(() => require("./gmail-watch-setup-Du7DVV7S.js"));
3386
+ const { setupGmailWatch } = await Promise.resolve().then(() => require("./gmail-watch-setup-C3uSWznp.js"));
3362
3387
  const labelIds = opts.labels.split(",").map((s) => s.trim()).filter(Boolean);
3363
3388
  const result = await setupGmailWatch({
3364
3389
  topicName: opts.topic,
@@ -3378,7 +3403,7 @@ gmailCmd.command("watch-setup").description("Register Gmail watch for push notif
3378
3403
  const cronCmd = program.command("cron").description("Scheduled tasks (cron → agent prompt)");
3379
3404
  cronCmd.command("list").action(async () => {
3380
3405
  const chalk$11 = require("chalk");
3381
- const { loadCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-Bli7Kzd2.js"));
3406
+ const { loadCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-L0mz1yyU.js"));
3382
3407
  const tasks = await loadCronTasks();
3383
3408
  console.log(chalk$11.bold.cyan("\n ⏰ CRON TASKS\n"));
3384
3409
  if (tasks.length === 0) {
@@ -3398,7 +3423,7 @@ cronCmd.command("list").action(async () => {
3398
3423
  });
3399
3424
  cronCmd.command("add").arguments("<schedule> <prompt>").option("-n, --name <name>", "Task name").action(async (schedule, prompt, opts) => {
3400
3425
  const chalk$11 = require("chalk");
3401
- const { loadCronTasks, addCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-Bli7Kzd2.js"));
3426
+ const { loadCronTasks, addCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-L0mz1yyU.js"));
3402
3427
  await loadCronTasks();
3403
3428
  addCronTask(schedule, prompt, opts.name);
3404
3429
  await saveCronTasks();
@@ -3408,7 +3433,7 @@ cronCmd.command("add").arguments("<schedule> <prompt>").option("-n, --name <name
3408
3433
  });
3409
3434
  cronCmd.command("remove <id>").action(async (id) => {
3410
3435
  const chalk$11 = require("chalk");
3411
- const { loadCronTasks, removeCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-Bli7Kzd2.js"));
3436
+ const { loadCronTasks, removeCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-L0mz1yyU.js"));
3412
3437
  await loadCronTasks();
3413
3438
  if (removeCronTask(id)) {
3414
3439
  await saveCronTasks();
@@ -3465,20 +3490,20 @@ program.command("nodes").description("List connected mobile nodes (iOS/Android C
3465
3490
  });
3466
3491
  const whCmd = program.command("webhooks").description("Webhook endpoint management");
3467
3492
  whCmd.command("list").action(async () => {
3468
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BpDfbDjg.js"));
3493
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BUrFrPuq.js"));
3469
3494
  const m = new WebhookManager();
3470
3495
  await m.load();
3471
3496
  m.showList();
3472
3497
  process.exit(0);
3473
3498
  });
3474
3499
  whCmd.command("remove <id>").action(async (id) => {
3475
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BpDfbDjg.js"));
3500
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BUrFrPuq.js"));
3476
3501
  const m = new WebhookManager();
3477
3502
  await m.remove(id);
3478
3503
  process.exit(0);
3479
3504
  });
3480
3505
  whCmd.command("toggle <id>").action(async (id) => {
3481
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BpDfbDjg.js"));
3506
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BUrFrPuq.js"));
3482
3507
  const m = new WebhookManager();
3483
3508
  await m.toggle(id);
3484
3509
  process.exit(0);
@@ -3487,7 +3512,7 @@ const logsCmd = program.command("logs").description("View gateway logs");
3487
3512
  logsCmd.option("-n, --lines <n>", "Number of lines to show", "50");
3488
3513
  logsCmd.option("-f, --follow", "Stream logs in real time");
3489
3514
  logsCmd.action(async (opts) => {
3490
- const { tailLog, streamLog } = await Promise.resolve().then(() => require("./logger-ybOp7VOC.js"));
3515
+ const { tailLog, streamLog } = await Promise.resolve().then(() => require("./logger-DCT2l9GV.js"));
3491
3516
  if (opts.follow) await streamLog();
3492
3517
  else {
3493
3518
  await tailLog(parseInt(opts.lines));
@@ -3495,7 +3520,7 @@ logsCmd.action(async (opts) => {
3495
3520
  }
3496
3521
  });
3497
3522
  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"));
3523
+ const { startGateway } = await Promise.resolve().then(() => require("./server-DP_bPzvI.js"));
3499
3524
  await startGateway();
3500
3525
  process.on("SIGINT", () => process.exit(0));
3501
3526
  process.on("SIGTERM", () => process.exit(0));
@@ -3548,9 +3573,9 @@ const authCmd = program.command("auth").description("OAuth and provider credenti
3548
3573
  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
3574
  const chalk$11 = require("chalk");
3550
3575
  const inquirer$2 = require("inquirer");
3551
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-C6ir0Dae.js"));
3576
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-CPkVO6-z.js"));
3552
3577
  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"));
3578
+ const { getApiKeyGuide, GENERIC_API_KEY_STEPS } = await Promise.resolve().then(() => require("./api-keys-guide-ChbThbPj.js"));
3554
3579
  const fs$7 = await import("fs-extra");
3555
3580
  const path$7 = await import("path");
3556
3581
  const guide = getApiKeyGuide(serviceId);
@@ -3602,7 +3627,7 @@ authCmd.command("add <service_id>").description("Add API key for a service (any
3602
3627
  });
3603
3628
  authCmd.command("remove <service_id>").description("Remove API key for a service from credentials and .env").action(async (serviceId) => {
3604
3629
  const chalk$11 = require("chalk");
3605
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-C6ir0Dae.js"));
3630
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-CPkVO6-z.js"));
3606
3631
  const { getHyperClawDir, getEnvFilePath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3607
3632
  const fs$7 = await import("fs-extra");
3608
3633
  const safeId = serviceId.replace(/[^a-zA-Z0-9_-]/g, "_").toLowerCase();
@@ -3622,7 +3647,7 @@ authCmd.command("oauth <provider>").description("Run full OAuth flow. Providers:
3622
3647
  const chalk$11 = require("chalk");
3623
3648
  const ora$4 = (await import("ora")).default;
3624
3649
  try {
3625
- const { runOAuthFlow } = await Promise.resolve().then(() => require("./oauth-flow-DQPvMHRH.js"));
3650
+ const { runOAuthFlow } = await Promise.resolve().then(() => require("./oauth-flow-JCfporKq.js"));
3626
3651
  const spinner = ora$4("Starting OAuth flow...").start();
3627
3652
  spinner.text = "Opening browser — complete the consent and return here.";
3628
3653
  const tokens = await runOAuthFlow(provider, {
@@ -3630,7 +3655,7 @@ authCmd.command("oauth <provider>").description("Run full OAuth flow. Providers:
3630
3655
  clientSecret: opts.clientSecret
3631
3656
  });
3632
3657
  spinner.stop();
3633
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-Uo4Nib_c.js"));
3658
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-4R0EJlsT.js"));
3634
3659
  const now = Math.floor(Date.now() / 1e3);
3635
3660
  const expires_at = tokens.expires_in ? now + tokens.expires_in : void 0;
3636
3661
  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 +3690,7 @@ authCmd.command("setup-token <provider>").description("Save setup token (Anthrop
3665
3690
  console.log(chalk$11.red("\n ✖ No token provided.\n"));
3666
3691
  process.exit(1);
3667
3692
  }
3668
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-Uo4Nib_c.js"));
3693
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-4R0EJlsT.js"));
3669
3694
  await writeOAuthToken("anthropic-setup", {
3670
3695
  access_token: token.trim(),
3671
3696
  token_url: "https://api.anthropic.com"
@@ -3676,7 +3701,7 @@ authCmd.command("setup-token <provider>").description("Save setup token (Anthrop
3676
3701
  });
3677
3702
  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
3703
  const chalk$11 = require("chalk");
3679
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-Uo4Nib_c.js"));
3704
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-4R0EJlsT.js"));
3680
3705
  const access_token = opts.token || process.env.OAUTH_ACCESS_TOKEN;
3681
3706
  if (!access_token) {
3682
3707
  console.log(chalk$11.red("\n ✖ Provide --token <access_token> or set OAUTH_ACCESS_TOKEN\n"));
@@ -3704,7 +3729,7 @@ workspaceCmd.command("init [dir]").description("Initialize workspace files (SOUL
3704
3729
  try {
3705
3730
  cfg = await fs$7.readJson(path$7.join(os$8.homedir(), ".hyperclaw", "hyperclaw.json"));
3706
3731
  } catch {}
3707
- const { initWorkspaceFiles } = await Promise.resolve().then(() => require("./memory-BlHL7JCO.js"));
3732
+ const { initWorkspaceFiles } = await Promise.resolve().then(() => require("./memory-gUi4VaIf.js"));
3708
3733
  await initWorkspaceFiles({
3709
3734
  agentName: cfg.identity?.agentName || "Hyper",
3710
3735
  personality: cfg.identity?.personality || "helpful and concise",
@@ -3743,13 +3768,13 @@ workspaceCmd.command("show [dir]").description("Show workspace files summary").a
3743
3768
  });
3744
3769
  const botCmd = program.command("bot").description("HyperClaw Bot — companion bot for remote gateway control");
3745
3770
  botCmd.command("status").action(async () => {
3746
- const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-zvczQgKx.js"));
3771
+ const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-BrcoYLOp.js"));
3747
3772
  await showBotStatus();
3748
3773
  process.exit(0);
3749
3774
  });
3750
3775
  botCmd.command("setup").description("Configure HyperClaw Bot (Telegram token, allowed users)").action(async () => {
3751
3776
  const inquirer$2 = require("inquirer");
3752
- const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-zvczQgKx.js"));
3777
+ const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-BrcoYLOp.js"));
3753
3778
  const chalk$11 = require("chalk");
3754
3779
  console.log(chalk$11.bold.hex("#06b6d4")("\n 🦅 HYPERCLAW BOT SETUP\n"));
3755
3780
  console.log(chalk$11.gray(" Create a bot at t.me/BotFather, then paste the token below.\n"));
@@ -3811,14 +3836,14 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
3811
3836
  cwd: process.cwd()
3812
3837
  });
3813
3838
  child.unref();
3814
- const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-zvczQgKx.js"));
3839
+ const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-BrcoYLOp.js"));
3815
3840
  await writeBotPid(child.pid);
3816
3841
  console.log(require("chalk").green(`\n ✔ HyperClaw Bot started in background (PID ${child.pid})`));
3817
3842
  console.log(require("chalk").gray(" Stop with: hyperclaw bot stop\n"));
3818
3843
  process.exit(0);
3819
3844
  return;
3820
3845
  }
3821
- const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-zvczQgKx.js"));
3846
+ const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-BrcoYLOp.js"));
3822
3847
  const cfg = await loadBotConfig();
3823
3848
  if (!cfg) {
3824
3849
  console.log(require("chalk").red("\n ✖ HyperClaw Bot not configured. Run: hyperclaw bot setup\n"));
@@ -3845,41 +3870,41 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
3845
3870
  });
3846
3871
  botCmd.command("stop").description("Stop HyperClaw Bot (when running in background)").action(async () => {
3847
3872
  const chalk$11 = require("chalk");
3848
- const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-zvczQgKx.js"));
3873
+ const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-BrcoYLOp.js"));
3849
3874
  const stopped = await stopBotProcess();
3850
3875
  if (stopped) console.log(chalk$11.green("\n ✔ HyperClaw Bot stopped\n"));
3851
3876
  else console.log(chalk$11.gray("\n Bot not running in background (no PID file). Use Ctrl+C to stop foreground bot.\n"));
3852
3877
  process.exit(stopped ? 0 : 0);
3853
3878
  });
3854
3879
  memCmd.command("search <query>").description("Search MEMORY.md").action(async (query) => {
3855
- const { searchMemory } = await Promise.resolve().then(() => require("./src-BxPHKO5x.js"));
3880
+ const { searchMemory } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3856
3881
  await searchMemory(query);
3857
3882
  process.exit(0);
3858
3883
  });
3859
3884
  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"));
3885
+ const { showMemory } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3861
3886
  await showMemory();
3862
3887
  process.exit(0);
3863
3888
  });
3864
3889
  memCmd.command("clear").description("Clear all auto-extracted memories").action(async () => {
3865
- const { clearMemory } = await Promise.resolve().then(() => require("./src-BxPHKO5x.js"));
3890
+ const { clearMemory } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3866
3891
  await clearMemory();
3867
3892
  process.exit(0);
3868
3893
  });
3869
3894
  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"));
3895
+ const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3871
3896
  await saveMemoryDirect(text);
3872
3897
  console.log(chalk.default.hex("#06b6d4")(` ✅ Saved: ${text}\n`));
3873
3898
  process.exit(0);
3874
3899
  });
3875
3900
  const pcCmd = program.command("pc").description("PC access — give the AI access to your computer");
3876
3901
  pcCmd.command("status").description("Show PC access status and config").action(async () => {
3877
- const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-BxPHKO5x.js"));
3902
+ const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3878
3903
  await showPCAccessStatus();
3879
3904
  process.exit(0);
3880
3905
  });
3881
3906
  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"));
3907
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3883
3908
  const level = opts.level;
3884
3909
  const allowed = [
3885
3910
  "read-only",
@@ -3906,7 +3931,7 @@ pcCmd.command("enable").description("Enable PC access for the AI").option("--lev
3906
3931
  process.exit(0);
3907
3932
  });
3908
3933
  pcCmd.command("disable").description("Disable PC access").action(async () => {
3909
- const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BxPHKO5x.js"));
3934
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3910
3935
  await savePCAccessConfig({ enabled: false });
3911
3936
  console.log(chalk.default.hex("#06b6d4")("\n ✅ PC access disabled\n"));
3912
3937
  process.exit(0);
@@ -3930,7 +3955,7 @@ pcCmd.command("log").description("Show PC access audit log").option("-n, --lines
3930
3955
  process.exit(0);
3931
3956
  });
3932
3957
  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"));
3958
+ const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-BbPa6Q8p.js"));
3934
3959
  const cfg = await loadPCAccessConfig();
3935
3960
  if (!cfg.enabled) {
3936
3961
  console.log(chalk.default.red("\n ✖ PC access disabled. Run: hyperclaw pc enable\n"));
@@ -3943,33 +3968,6 @@ pcCmd.command("run <command>").description("Run a shell command via PC access (m
3943
3968
  console.log(result);
3944
3969
  process.exit(0);
3945
3970
  });
3946
- function checkForUpdate() {
3947
- const { execFile: execFile$1 } = require("child_process");
3948
- const { readFileSync } = require("fs");
3949
- const path$7 = require("path");
3950
- try {
3951
- const pkgPath = path$7.resolve(__dirname, "../../package.json");
3952
- const current = JSON.parse(readFileSync(pkgPath, "utf8")).version;
3953
- execFile$1("npm", [
3954
- "view",
3955
- "hyperclaw",
3956
- "version",
3957
- "--json"
3958
- ], { timeout: 5e3 }, (_err, stdout) => {
3959
- if (_err || !stdout) return;
3960
- try {
3961
- const latest = JSON.parse(stdout.trim());
3962
- if (latest && latest !== current) {
3963
- const semver = (v) => v.split(".").map(Number);
3964
- const [lMaj, lMin, lPat] = semver(latest);
3965
- const [cMaj, cMin, cPat] = semver(current);
3966
- const isNewer = lMaj > cMaj || lMaj === cMaj && lMin > cMin || lMaj === cMaj && lMin === cMin && lPat > cPat;
3967
- if (isNewer) process.stdout.write(chalk.default.yellow(`\n ⬆ Update available: ${chalk.default.dim(current)} → ${chalk.default.green(latest)}\n`) + chalk.default.gray(` npm install -g hyperclaw@latest\n\n`));
3968
- }
3969
- } catch {}
3970
- });
3971
- } catch {}
3972
- }
3973
3971
  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) => {
3974
3972
  await new require_onboard.Banner().showNeonBanner(false);
3975
3973
  const wizardOpts = {
@@ -3986,13 +3984,23 @@ program.command("setup").description("Setup wizard — alias for `hyperclaw onbo
3986
3984
  await new require_onboard.HyperClawWizard().run(wizardOpts);
3987
3985
  process.exit(0);
3988
3986
  });
3989
- checkForUpdate();
3987
+ async function runUpdateCheck() {
3988
+ try {
3989
+ const { checkForUpdates, notifyUpdateAvailable } = await Promise.resolve().then(() => require("./update-check-BVEqHhFY.js"));
3990
+ const path$7 = require("path");
3991
+ const { readFileSync } = require("fs");
3992
+ const pkgPath = path$7.resolve(__dirname, "../../package.json");
3993
+ const current = JSON.parse(readFileSync(pkgPath, "utf8")).version;
3994
+ const result = await checkForUpdates(current);
3995
+ if (result?.available) notifyUpdateAvailable(current, result.latest);
3996
+ } catch {}
3997
+ }
3990
3998
  if (process.argv.length === 2) (async () => {
3991
- const { ConfigManager: ConfigManager$1 } = await Promise.resolve().then(() => require("./manager-CrVDn6eN.js"));
3999
+ const { ConfigManager: ConfigManager$1 } = await Promise.resolve().then(() => require("./manager-CBUHJiY7.js"));
3992
4000
  const cfg = await new ConfigManager$1().load().catch(() => null);
3993
4001
  if (cfg?.provider?.apiKey || cfg?.provider?.providerId) {
3994
4002
  await new require_onboard.Banner().showNeonBanner(false);
3995
- const { getTheme } = await Promise.resolve().then(() => require("./theme-cx0fkgWC.js"));
4003
+ const { getTheme } = await Promise.resolve().then(() => require("./theme-D0smfC_l.js"));
3996
4004
  const t = getTheme(false);
3997
4005
  const chalk$11 = require("chalk");
3998
4006
  console.log(t.bold(" Quick actions:\n"));
@@ -4006,13 +4014,15 @@ if (process.argv.length === 2) (async () => {
4006
4014
  console.log(` ${t.c("hyperclaw --help")} — all commands\n`);
4007
4015
  } else {
4008
4016
  await new require_onboard.Banner().showNeonBanner(false);
4009
- const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-0WoDxbv_.js"));
4017
+ const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-CGNIw27w.js"));
4010
4018
  await new HyperClawWizard$1().run({ wizard: true });
4011
4019
  }
4020
+ await runUpdateCheck();
4012
4021
  process.exit(0);
4013
4022
  })();
4014
- else program.parseAsync(process.argv).then(() => {
4015
- setTimeout(() => process.exit(0), 500);
4023
+ else program.parseAsync(process.argv).then(async () => {
4024
+ await runUpdateCheck();
4025
+ process.exit(0);
4016
4026
  }).catch((e) => {
4017
4027
  console.error(e.message);
4018
4028
  process.exit(1);