hyperclaw 4.0.2 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/README.md +246 -60
  2. package/dist/a2ui-protocol-CfBI44-Q.js +75 -0
  3. package/dist/agents-routing-ChHiZp36.js +327 -0
  4. package/dist/agents-routing-ChqZ6l2S.js +4 -0
  5. package/dist/api-keys-guide-BCcOl0Q7.js +149 -0
  6. package/dist/api-keys-guide-CGn5BSF7.js +149 -0
  7. package/dist/audit-BJohI_vC.js +441 -0
  8. package/dist/audit-BaIiyWFu.js +441 -0
  9. package/dist/bounty-tools-CY_i91DU.js +211 -0
  10. package/dist/bounty-tools-DWudyZie.js +211 -0
  11. package/dist/browser-tools-BsTeGMnX.js +5 -0
  12. package/dist/browser-tools-D8_rLe2p.js +179 -0
  13. package/dist/claw-tasks-CgTsiNE8.js +80 -0
  14. package/dist/claw-tasks-Cyzdbhz_.js +80 -0
  15. package/dist/connector-5N0-X_xs.js +194 -0
  16. package/dist/connector-B3v0qcXg.js +425 -0
  17. package/dist/connector-B8R3iBY1.js +280 -0
  18. package/dist/connector-BAM-08NN.js +189 -0
  19. package/dist/connector-BC8FIVu4.js +181 -0
  20. package/dist/connector-BDmwwaVc.js +213 -0
  21. package/dist/connector-BGjbBy69.js +225 -0
  22. package/dist/connector-BO2SRzfG.js +218 -0
  23. package/dist/connector-BfXky0L3.js +167 -0
  24. package/dist/connector-BiiSJpx3.js +192 -0
  25. package/dist/connector-BnDmIhIu.js +85 -0
  26. package/dist/connector-C1HSoUyk.js +189 -0
  27. package/dist/connector-CKQHZOXg.js +568 -0
  28. package/dist/connector-CRl-iidy.js +239 -0
  29. package/dist/connector-Ci9glMD-.js +340 -0
  30. package/dist/connector-CjtZIEDj.js +181 -0
  31. package/dist/connector-Ck6JtOsX.js +531 -0
  32. package/dist/connector-D8Kelee0.js +286 -0
  33. package/dist/connector-DAnRJ0oP.js +162 -0
  34. package/dist/connector-DXTp5PE8.js +508 -0
  35. package/dist/connector-Dih6dUPP.js +173 -0
  36. package/dist/connector-DqTH_tPX.js +182 -0
  37. package/dist/connector-DrnEiiyP.js +419 -0
  38. package/dist/connector-DtR5GGTX.js +167 -0
  39. package/dist/connector-Tky_qS_K.js +350 -0
  40. package/dist/connector-ZSc3oTTy.js +305 -0
  41. package/dist/connector-sW5yhU1m.js +498 -0
  42. package/dist/connector-u3ICd3Ic.js +552 -0
  43. package/dist/cost-tracker-Ca1UPZ33.js +103 -0
  44. package/dist/cost-tracker-DD9wtWsr.js +103 -0
  45. package/dist/credentials-store-C6ir0Dae.js +4 -0
  46. package/dist/credentials-store-CA8UtK0T.js +77 -0
  47. package/dist/credentials-store-Cm7DH-kh.js +4 -0
  48. package/dist/credentials-store-H13LqOwJ.js +77 -0
  49. package/dist/cron-tasks-Bli7Kzd2.js +82 -0
  50. package/dist/cron-tasks-_pqQCmxc.js +82 -0
  51. package/dist/daemon-7ViroziB.js +5 -0
  52. package/dist/daemon-BfyKmZhr.js +318 -0
  53. package/dist/daemon-Bg4GtCmc.js +318 -0
  54. package/dist/daemon-DhmwY8k4.js +5 -0
  55. package/dist/delivery-BmIYy9VQ.js +4 -0
  56. package/dist/delivery-DVHmv1IR.js +4 -0
  57. package/dist/delivery-DpMX0Yyc.js +95 -0
  58. package/dist/delivery-pWUPBp1F.js +95 -0
  59. package/dist/destructive-gate-D6vWOdEl.js +101 -0
  60. package/dist/destructive-gate-DZt71UZR.js +101 -0
  61. package/dist/developer-keys-CPWT7Q6S.js +8 -0
  62. package/dist/developer-keys-DrrcUqFa.js +127 -0
  63. package/dist/doctor-BvCe8BBk.js +230 -0
  64. package/dist/doctor-CxyPLYsJ.js +6 -0
  65. package/dist/engine-B0kLfRL0.js +256 -0
  66. package/dist/engine-BJUpRUOv.js +7 -0
  67. package/dist/engine-CEDSqXfw.js +256 -0
  68. package/dist/engine-Da4JMNpI.js +7 -0
  69. package/dist/env-resolve-17ekEU6p.js +10 -0
  70. package/dist/env-resolve-CiXbWYwe.js +10 -0
  71. package/dist/env-resolve-CmGWhWXJ.js +115 -0
  72. package/dist/env-resolve-Z2XF6leB.js +115 -0
  73. package/dist/extraction-tools-HOZstZ0y.js +91 -0
  74. package/dist/extraction-tools-m4lmAv7l.js +5 -0
  75. package/dist/form_data-Cz040rio.js +8657 -0
  76. package/dist/gmail-watch-setup-Du7DVV7S.js +40 -0
  77. package/dist/health-B-asI__D.js +6 -0
  78. package/dist/health-Ds2YlpTB.js +152 -0
  79. package/dist/heartbeat-engine-BYT5ayQH.js +83 -0
  80. package/dist/heartbeat-engine-Ut6pXBD6.js +83 -0
  81. package/dist/hub-9LaKnLjY.js +6 -0
  82. package/dist/hub-CfwUz9YW.js +515 -0
  83. package/dist/hub-D0XwdjM-.js +515 -0
  84. package/dist/hub-LiD5Iztb.js +6 -0
  85. package/dist/hyperclawbot-CBiDSKsa.js +505 -0
  86. package/dist/hyperclawbot-zvczQgKx.js +505 -0
  87. package/dist/inference-0mlFQqIm.js +922 -0
  88. package/dist/inference-BKVkBREb.js +6 -0
  89. package/dist/inference-DCXH4Q3x.js +922 -0
  90. package/dist/inference-SzqFe_nk.js +6 -0
  91. package/dist/knowledge-graph-DE5lSF02.js +131 -0
  92. package/dist/knowledge-graph-iBG76fvm.js +131 -0
  93. package/dist/loader-BkDi8MD9.js +400 -0
  94. package/dist/loader-CC45xGpC.js +4 -0
  95. package/dist/loader-CnEdOyjT.js +400 -0
  96. package/dist/loader-DI2qDRPC.js +4 -0
  97. package/dist/logger-Cp8wC7F8.js +83 -0
  98. package/dist/logger-ybOp7VOC.js +83 -0
  99. package/dist/manager-03ipO9R0.js +105 -0
  100. package/dist/manager-B2Gls5RG.js +218 -0
  101. package/dist/manager-BpDfbDjg.js +117 -0
  102. package/dist/manager-Bxl0sqlh.js +4 -0
  103. package/dist/manager-CWNSML5D.js +117 -0
  104. package/dist/manager-CrVDn6eN.js +6 -0
  105. package/dist/manager-FCgF1plu.js +218 -0
  106. package/dist/manager-SJe9gt-q.js +4 -0
  107. package/dist/manager-rgCsaWT1.js +40 -0
  108. package/dist/mcp-CfoSU4Uz.js +139 -0
  109. package/dist/mcp-loader-CvxRDtPC.js +94 -0
  110. package/dist/mcp-loader-DkRBsLpk.js +94 -0
  111. package/dist/memory-BlHL7JCO.js +4 -0
  112. package/dist/memory-DsS_eFvJ.js +270 -0
  113. package/dist/memory-auto-BkvtSFUw.js +5 -0
  114. package/dist/memory-auto-Bnz_-1wP.js +306 -0
  115. package/dist/memory-auto-CpQHZlEJ.js +306 -0
  116. package/dist/memory-auto-Z6LCf-iK.js +5 -0
  117. package/dist/memory-integration-cSYkZyEo.js +91 -0
  118. package/dist/memory-integration-g2vxwgoE.js +91 -0
  119. package/dist/moltbook-BtLDZTfM.js +81 -0
  120. package/dist/moltbook-Cl8cQfxJ.js +81 -0
  121. package/dist/node-Dw2Gi-cP.js +222 -0
  122. package/dist/nodes-registry-B8dmrlLv.js +52 -0
  123. package/dist/nodes-registry-C9dCFwjh.js +52 -0
  124. package/dist/oauth-flow-CeaaGAz0.js +150 -0
  125. package/dist/oauth-flow-DQPvMHRH.js +150 -0
  126. package/dist/oauth-provider-B4dzn56l.js +110 -0
  127. package/dist/oauth-provider-Uo4Nib_c.js +110 -0
  128. package/dist/observability-BV-Yx0V9.js +89 -0
  129. package/dist/observability-nZ3CBIxG.js +89 -0
  130. package/dist/onboard-0WoDxbv_.js +10 -0
  131. package/dist/onboard-BBBWcfhp.js +10 -0
  132. package/dist/onboard-BXNXCQp4.js +4070 -0
  133. package/dist/onboard-Bw28IRQ3.js +4070 -0
  134. package/dist/orchestrator-BovkM63z.js +6 -0
  135. package/dist/orchestrator-DSbpkP1X.js +189 -0
  136. package/dist/orchestrator-DmnEvMaL.js +189 -0
  137. package/dist/orchestrator-RI3bpqqc.js +6 -0
  138. package/dist/osint-B4_m3VHQ.js +277 -0
  139. package/dist/pairing-6iM27aD8.js +196 -0
  140. package/dist/pairing-dGoiGepK.js +4 -0
  141. package/dist/pc-access-CgCsYrpt.js +8 -0
  142. package/dist/pc-access-_iH2aorG.js +819 -0
  143. package/dist/pending-approval-BgNjjuI2.js +22 -0
  144. package/dist/pending-approval-CUXjysAo.js +22 -0
  145. package/dist/reminders-store-Drjed_-h.js +58 -0
  146. package/dist/renderer-BVQrd0_g.js +225 -0
  147. package/dist/rules-BE4GV6cV.js +103 -0
  148. package/dist/run-main.js +1639 -460
  149. package/dist/runner-CJFJUtPm.js +1271 -0
  150. package/dist/runner-DatMMYYE.js +1271 -0
  151. package/dist/sdk/index.js +2 -2
  152. package/dist/sdk/index.mjs +2 -2
  153. package/dist/security-BqNyT4ID.js +4 -0
  154. package/dist/security-tpgqPWWH.js +73 -0
  155. package/dist/server-Brl_HQUB.js +1255 -0
  156. package/dist/server-D4wVHiX9.js +4 -0
  157. package/dist/server-Dh3JlBFB.js +1255 -0
  158. package/dist/server-DhfipkwN.js +4 -0
  159. package/dist/session-store-BUiPz0Vv.js +5 -0
  160. package/dist/session-store-is4B6qmD.js +113 -0
  161. package/dist/sessions-tools-CbUTFe4i.js +5 -0
  162. package/dist/sessions-tools-CeqD7iil.js +95 -0
  163. package/dist/skill-loader-BaNLVmJy.js +7 -0
  164. package/dist/skill-loader-HgpF6Vqs.js +159 -0
  165. package/dist/skill-runtime-BXWd-Ktf.js +102 -0
  166. package/dist/skill-runtime-CJN24QPW.js +102 -0
  167. package/dist/skill-runtime-jgklm02e.js +5 -0
  168. package/dist/skill-runtime-w1ig_lcw.js +5 -0
  169. package/dist/src-Bhybpk1J.js +63 -0
  170. package/dist/src-BxPHKO5x.js +63 -0
  171. package/dist/src-DIc-L2IG.js +20 -0
  172. package/dist/src-DMJ4-uqk.js +458 -0
  173. package/dist/src-g_rNx5rh.js +458 -0
  174. package/dist/sub-agent-tools-CHQoHz9c.js +39 -0
  175. package/dist/sub-agent-tools-DHY-4WWM.js +39 -0
  176. package/dist/theme-DcxwcUgZ.js +180 -0
  177. package/dist/theme-cx0fkgWC.js +8 -0
  178. package/dist/tool-policy-CNT-mF2Z.js +189 -0
  179. package/dist/tool-policy-DZvF8xlQ.js +189 -0
  180. package/dist/tts-elevenlabs-BRosZv-f.js +61 -0
  181. package/dist/tts-elevenlabs-C06nUxMK.js +61 -0
  182. package/dist/update-check-C2Dz85wJ.js +81 -0
  183. package/dist/update-check-w4XuxVl7.js +81 -0
  184. package/dist/vision-BMmiIKy7.js +121 -0
  185. package/dist/vision-JOtOS1Br.js +121 -0
  186. package/dist/vision-tools-CB28ZCO_.js +5 -0
  187. package/dist/vision-tools-DVuYc17I.js +51 -0
  188. package/dist/vision-tools-U3YC4L-g.js +5 -0
  189. package/dist/vision-tools-vPPwQ-0N.js +51 -0
  190. package/dist/voice-transcription-B555DbWR.js +138 -0
  191. package/dist/voice-transcription-DBo5hXmu.js +138 -0
  192. package/dist/website-watch-tools-DFMrJU-R.js +139 -0
  193. package/dist/website-watch-tools-Du3W5sN7.js +5 -0
  194. package/package.json +1 -1
@@ -0,0 +1,196 @@
1
+ const require_chunk = require('./chunk-jS-bbMI5.js');
2
+ const chalk = require_chunk.__toESM(require("chalk"));
3
+ const fs_extra = require_chunk.__toESM(require("fs-extra"));
4
+ const path = require_chunk.__toESM(require("path"));
5
+ const os = require_chunk.__toESM(require("os"));
6
+ const crypto = require_chunk.__toESM(require("crypto"));
7
+
8
+ //#region src/channels/pairing.ts
9
+ const CREDENTIALS_DIR = path.default.join(os.default.homedir(), ".hyperclaw", "credentials");
10
+ const CODE_ALPHABET = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789";
11
+ const CODE_LENGTH = 8;
12
+ const EXPIRY_MS = 60 * 60 * 1e3;
13
+ const MAX_PENDING_PER_CHANNEL = 3;
14
+ function generateCode() {
15
+ const bytes = crypto.default.randomBytes(CODE_LENGTH);
16
+ return Array.from(bytes).map((b) => CODE_ALPHABET[b % CODE_ALPHABET.length]).join("");
17
+ }
18
+ function pendingFile(channelId) {
19
+ return path.default.join(CREDENTIALS_DIR, `${channelId}-pairing.json`);
20
+ }
21
+ function allowFromFile(channelId, accountId = "default") {
22
+ const suffix = accountId === "default" ? "" : `-${accountId}`;
23
+ return path.default.join(CREDENTIALS_DIR, `${channelId}${suffix}-allowFrom.json`);
24
+ }
25
+ async function readPending(channelId) {
26
+ try {
27
+ const data = await fs_extra.default.readJson(pendingFile(channelId));
28
+ return Array.isArray(data) ? data : [];
29
+ } catch {
30
+ return [];
31
+ }
32
+ }
33
+ async function writePending(channelId, entries) {
34
+ await fs_extra.default.ensureDir(CREDENTIALS_DIR);
35
+ await fs_extra.default.writeJson(pendingFile(channelId), entries, {
36
+ spaces: 2,
37
+ mode: 384
38
+ });
39
+ }
40
+ async function readAllowFrom(channelId, accountId = "default") {
41
+ try {
42
+ return await fs_extra.default.readJson(allowFromFile(channelId, accountId));
43
+ } catch {
44
+ return {
45
+ senderIds: [],
46
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
47
+ };
48
+ }
49
+ }
50
+ async function writeAllowFrom(channelId, store, accountId = "default") {
51
+ await fs_extra.default.ensureDir(CREDENTIALS_DIR);
52
+ await fs_extra.default.writeJson(allowFromFile(channelId, accountId), store, {
53
+ spaces: 2,
54
+ mode: 384
55
+ });
56
+ }
57
+ var PairingStore = class {
58
+ channelId;
59
+ accountId;
60
+ constructor(channelId, accountId = "default") {
61
+ this.channelId = channelId;
62
+ this.accountId = accountId;
63
+ }
64
+ async isApproved(senderId) {
65
+ const store = await readAllowFrom(this.channelId, this.accountId);
66
+ return store.senderIds.includes(senderId);
67
+ }
68
+ /**
69
+ * Returns the pairing code to send to the user, or null if already pending
70
+ * (code is resent only once per hour per sender).
71
+ */
72
+ async createRequest(senderId) {
73
+ const now = Date.now();
74
+ const entries = (await readPending(this.channelId)).filter((e) => {
75
+ return new Date(e.expiresAt).getTime() > now;
76
+ });
77
+ const existing = entries.find((e) => e.senderId === senderId && e.channelId === this.channelId);
78
+ if (existing) return existing.code;
79
+ const channelPending = entries.filter((e) => e.channelId === this.channelId && e.accountId === this.accountId);
80
+ if (channelPending.length >= MAX_PENDING_PER_CHANNEL) return null;
81
+ const code = generateCode();
82
+ const entry = {
83
+ code,
84
+ channelId: this.channelId,
85
+ accountId: this.accountId,
86
+ senderId,
87
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
88
+ expiresAt: new Date(now + EXPIRY_MS).toISOString()
89
+ };
90
+ entries.push(entry);
91
+ await writePending(this.channelId, entries);
92
+ return code;
93
+ }
94
+ /**
95
+ * Called when a sender submits a code.
96
+ * Returns true if the code was valid and the sender is now approved.
97
+ */
98
+ async verify(code, senderId) {
99
+ const now = Date.now();
100
+ const entries = await readPending(this.channelId);
101
+ const idx = entries.findIndex((e) => e.code === code.toUpperCase() && e.channelId === this.channelId && e.accountId === this.accountId && new Date(e.expiresAt).getTime() > now);
102
+ if (idx === -1) return false;
103
+ const entry = entries[idx];
104
+ entries.splice(idx, 1);
105
+ await writePending(this.channelId, entries);
106
+ const store = await readAllowFrom(this.channelId, this.accountId);
107
+ if (!store.senderIds.includes(entry.senderId)) store.senderIds.push(entry.senderId);
108
+ store.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
109
+ await writeAllowFrom(this.channelId, store, this.accountId);
110
+ return true;
111
+ }
112
+ async listPending() {
113
+ const now = Date.now();
114
+ const entries = await readPending(this.channelId);
115
+ return entries.filter((e) => e.channelId === this.channelId && e.accountId === this.accountId && new Date(e.expiresAt).getTime() > now);
116
+ }
117
+ async cliApprove(code) {
118
+ const now = Date.now();
119
+ const entries = await readPending(this.channelId);
120
+ const idx = entries.findIndex((e) => e.code === code.toUpperCase() && e.channelId === this.channelId && e.accountId === this.accountId && new Date(e.expiresAt).getTime() > now);
121
+ if (idx === -1) return false;
122
+ const entry = entries[idx];
123
+ entries.splice(idx, 1);
124
+ await writePending(this.channelId, entries);
125
+ const store = await readAllowFrom(this.channelId, this.accountId);
126
+ if (!store.senderIds.includes(entry.senderId)) store.senderIds.push(entry.senderId);
127
+ store.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
128
+ await writeAllowFrom(this.channelId, store, this.accountId);
129
+ return true;
130
+ }
131
+ };
132
+ const SUPPORTED_CHANNELS = [
133
+ "telegram",
134
+ "whatsapp",
135
+ "signal",
136
+ "imessage",
137
+ "discord",
138
+ "slack",
139
+ "feishu"
140
+ ];
141
+ var GlobalPairingManager = class {
142
+ async showList(channelFilter) {
143
+ const now = Date.now();
144
+ const channels = channelFilter ? [channelFilter] : SUPPORTED_CHANNELS;
145
+ console.log(chalk.default.bold.cyan("\n 🔑 PAIRING CODES\n"));
146
+ let total = 0;
147
+ for (const ch of channels) {
148
+ let pending = [];
149
+ try {
150
+ const raw = await readPending(ch);
151
+ pending = raw.filter((e) => new Date(e.expiresAt).getTime() > now);
152
+ } catch {}
153
+ if (pending.length === 0) continue;
154
+ total += pending.length;
155
+ console.log(chalk.default.yellow(` ─── ${ch} ───`));
156
+ for (const e of pending) {
157
+ const expiresIn = Math.round((new Date(e.expiresAt).getTime() - now) / 6e4);
158
+ const acctSuffix = e.accountId !== "default" ? chalk.default.gray(` [${e.accountId}]`) : "";
159
+ console.log(` ${chalk.default.yellow("○")} ${chalk.default.bold(e.code)} sender: ${chalk.default.white(e.senderId)}${acctSuffix} expires: ${chalk.default.gray(`${expiresIn}m`)}`);
160
+ }
161
+ console.log();
162
+ }
163
+ if (total === 0) console.log(chalk.default.gray(` No pending pairing requests${channelFilter ? ` for ${channelFilter}` : ""}.\n`));
164
+ }
165
+ async cliApprove(channelId, code, accountId = "default") {
166
+ if (!SUPPORTED_CHANNELS.includes(channelId)) {
167
+ console.log(chalk.default.red(`\n ✖ Unknown channel: ${channelId}`));
168
+ console.log(chalk.default.gray(` Supported: ${SUPPORTED_CHANNELS.join(", ")}\n`));
169
+ return;
170
+ }
171
+ const store = new PairingStore(channelId, accountId);
172
+ const ok = await store.cliApprove(code);
173
+ if (ok) {
174
+ console.log(chalk.default.green(`\n ✔ Pairing approved — ${channelId} code ${code.toUpperCase()}`));
175
+ console.log(chalk.default.gray(` Sender added to ${channelId}${accountId !== "default" ? `-${accountId}` : ""}-allowFrom.json\n`));
176
+ } else console.log(chalk.default.red(`\n ✖ Code not found, expired, or already used: ${channelId} ${code.toUpperCase()}\n`));
177
+ }
178
+ async getApprovedSenders(channelId, accountId = "default") {
179
+ const store = await readAllowFrom(channelId, accountId);
180
+ return store.senderIds;
181
+ }
182
+ };
183
+
184
+ //#endregion
185
+ Object.defineProperty(exports, 'GlobalPairingManager', {
186
+ enumerable: true,
187
+ get: function () {
188
+ return GlobalPairingManager;
189
+ }
190
+ });
191
+ Object.defineProperty(exports, 'PairingStore', {
192
+ enumerable: true,
193
+ get: function () {
194
+ return PairingStore;
195
+ }
196
+ });
@@ -0,0 +1,4 @@
1
+ const require_chunk = require('./chunk-jS-bbMI5.js');
2
+ const require_pairing = require('./pairing-6iM27aD8.js');
3
+
4
+ exports.PairingStore = require_pairing.PairingStore;
@@ -0,0 +1,8 @@
1
+ const require_chunk = require('./chunk-jS-bbMI5.js');
2
+ require('./paths-AIyBxIzm.js');
3
+ require('./src-DIc-L2IG.js');
4
+ const require_pc_access = require('./pc-access-_iH2aorG.js');
5
+
6
+ require_pc_access.init_pc_access();
7
+ exports.getPCAccessTools = require_pc_access.getPCAccessTools;
8
+ exports.loadPCAccessConfig = require_pc_access.loadPCAccessConfig;