hyperclaw 4.0.0 → 4.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.
- package/README.md +49 -17
- package/dist/api-keys-guide-Bzig1R5W.js +149 -0
- package/dist/connector-DRv1ahC_.js +343 -0
- package/dist/delivery-B-SJqXLn.js +95 -0
- package/dist/delivery-VgFeuu2J.js +5 -0
- package/dist/hyperclawbot-DfMGowZC.js +480 -0
- package/dist/onboard-3q20ZyHj.js +9 -0
- package/dist/onboard-DnegOHMh.js +3026 -0
- package/dist/run-main.js +93 -94
- package/dist/runner-Bu--_RXw.js +810 -0
- package/dist/sdk/index.js +2 -2
- package/dist/sdk/index.mjs +2 -2
- package/dist/server-CCI1hv45.js +1047 -0
- package/dist/server-RBqwE_GN.js +4 -0
- package/dist/voice-transcription-CbQBToY0.js +138 -0
- package/package.json +1 -1
package/dist/run-main.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
1
|
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
3
2
|
const require_paths = require('./paths-AIyBxIzm.js');
|
|
4
3
|
const require_paths$1 = require('./paths-DPovhojT.js');
|
|
5
4
|
require('./env-resolve-BzDlV2CS.js');
|
|
6
|
-
const require_onboard = require('./onboard-
|
|
7
|
-
require('./server-
|
|
5
|
+
const require_onboard = require('./onboard-DnegOHMh.js');
|
|
6
|
+
require('./server-CCI1hv45.js');
|
|
8
7
|
require('./theme-LUTKWUWd.js');
|
|
9
8
|
const require_manager = require('./manager-DWQSp1oL.js');
|
|
10
9
|
const require_manager$1 = require('./manager-C4ZdCiPx.js');
|
|
@@ -110,7 +109,7 @@ function fetchBuffer(url) {
|
|
|
110
109
|
port: parsed.port || (parsed.protocol === "https:" ? 443 : 80),
|
|
111
110
|
path: parsed.pathname + parsed.search,
|
|
112
111
|
method: "GET",
|
|
113
|
-
headers: { "User-Agent": "HyperClaw/4.0.
|
|
112
|
+
headers: { "User-Agent": "HyperClaw/4.0.1" }
|
|
114
113
|
}, (res) => {
|
|
115
114
|
const chunks = [];
|
|
116
115
|
res.on("data", (c) => chunks.push(c));
|
|
@@ -132,7 +131,7 @@ function fetchJson(url) {
|
|
|
132
131
|
port: 443,
|
|
133
132
|
path: parsed.pathname + parsed.search,
|
|
134
133
|
method: "GET",
|
|
135
|
-
headers: { "User-Agent": "HyperClaw/4.0.
|
|
134
|
+
headers: { "User-Agent": "HyperClaw/4.0.1" }
|
|
136
135
|
}, (res) => {
|
|
137
136
|
let data = "";
|
|
138
137
|
res.on("data", (c) => data += c);
|
|
@@ -553,7 +552,7 @@ var Dashboard = class {
|
|
|
553
552
|
return c(`║ `) + content + " ".repeat(pad) + c(`║`);
|
|
554
553
|
};
|
|
555
554
|
console.log(c(`╔${line}╗`));
|
|
556
|
-
console.log(c(`║`) + chalk.default.bold.hex("#06b6d4")(`${"🦅 HYPERCLAW v4.0.
|
|
555
|
+
console.log(c(`║`) + chalk.default.bold.hex("#06b6d4")(`${"🦅 HYPERCLAW v4.0.1 — GATEWAY DASHBOARD".padStart(45).padEnd(w)}`) + c(`║`));
|
|
557
556
|
console.log(c(`╠${line}╣`));
|
|
558
557
|
console.log(row(`${statusDot} Gateway ${statusText} ${chalk.default.gray("│")} ws://localhost:${port} ${chalk.default.gray("│")} Agent: ${c(agent)}`));
|
|
559
558
|
console.log(row(`${c("◆")} Model ${chalk.default.gray(model.slice(0, 30))} ${chalk.default.gray("│")} User: ${c(user)}`));
|
|
@@ -700,8 +699,8 @@ var VoiceEngine = class {
|
|
|
700
699
|
console.log(chalk.default.gray(` Gateway: ${GATEWAY_URL}`));
|
|
701
700
|
console.log(chalk.default.gray(` Status: ${chalk.default.green("Ready")}`));
|
|
702
701
|
if (this.lang === "el") {
|
|
703
|
-
console.log(chalk.default.cyan("\n🇬🇷
|
|
704
|
-
console.log(chalk.default.gray(`
|
|
702
|
+
console.log(chalk.default.cyan("\n🇬🇷 Greek language support enabled!"));
|
|
703
|
+
console.log(chalk.default.gray(` Say "${this.wakeWord}" to wake up the assistant.`));
|
|
705
704
|
}
|
|
706
705
|
console.log();
|
|
707
706
|
if (hasRec && hasApiKey) {
|
|
@@ -1117,11 +1116,11 @@ const CHANNELS = [
|
|
|
1117
1116
|
tokenLabel: "Telegram Bot Token",
|
|
1118
1117
|
tokenHint: "Get from @BotFather → /newbot",
|
|
1119
1118
|
setupSteps: [
|
|
1120
|
-
"1.
|
|
1121
|
-
"2.
|
|
1122
|
-
"3.
|
|
1123
|
-
"4.
|
|
1124
|
-
"5.
|
|
1119
|
+
"1. Open Telegram and search for @BotFather (the official bot for creating bots).",
|
|
1120
|
+
"2. Start a conversation with /start and type /newbot to create a new bot.",
|
|
1121
|
+
"3. Give the bot a name (e.g. \"My HyperClaw Bot\") and a username ending in \"bot\" (e.g. my_hyperclaw_bot).",
|
|
1122
|
+
"4. @BotFather will send you the Bot Token — a string starting with 7xxxxxx:AAH... Keep it secret!",
|
|
1123
|
+
"5. Copy the token and paste it below.",
|
|
1125
1124
|
"",
|
|
1126
1125
|
" 🔗 t.me/BotFather"
|
|
1127
1126
|
],
|
|
@@ -1138,19 +1137,19 @@ const CHANNELS = [
|
|
|
1138
1137
|
tokenLabel: "Discord Bot Token",
|
|
1139
1138
|
tokenHint: "discord.com/developers/applications",
|
|
1140
1139
|
setupSteps: [
|
|
1141
|
-
"1.
|
|
1142
|
-
"2.
|
|
1143
|
-
"3.
|
|
1144
|
-
"4.
|
|
1145
|
-
"5.
|
|
1146
|
-
"6.
|
|
1140
|
+
"1. Go to Discord Developer Portal: https://discord.com/developers/applications",
|
|
1141
|
+
"2. Click \"New Application\", give it a name and create it.",
|
|
1142
|
+
"3. Left menu: Bot → Add Bot.",
|
|
1143
|
+
"4. Click \"Reset Token\" and copy the token (keep it secret!).",
|
|
1144
|
+
"5. Settings → OAuth2 → General, copy the Application ID (Client ID).",
|
|
1145
|
+
"6. Optional: To add the bot to a server, Bot → OAuth2 → URL Generator, scope: bot.",
|
|
1147
1146
|
"",
|
|
1148
1147
|
" 🔗 discord.com/developers/applications"
|
|
1149
1148
|
],
|
|
1150
1149
|
extraFields: [{
|
|
1151
1150
|
name: "clientId",
|
|
1152
1151
|
label: "Client ID (Application ID)",
|
|
1153
|
-
hint: "
|
|
1152
|
+
hint: "From OAuth2 → General",
|
|
1154
1153
|
required: true
|
|
1155
1154
|
}],
|
|
1156
1155
|
status: "recommended",
|
|
@@ -1166,11 +1165,11 @@ const CHANNELS = [
|
|
|
1166
1165
|
tokenLabel: "WhatsApp Business API key",
|
|
1167
1166
|
tokenHint: "business.whatsapp.com",
|
|
1168
1167
|
setupSteps: [
|
|
1169
|
-
"1.
|
|
1168
|
+
"1. Go to Meta for Developers: https://developers.facebook.com/",
|
|
1170
1169
|
"2. My Apps → Create App → Business type.",
|
|
1171
|
-
"3.
|
|
1172
|
-
"4.
|
|
1173
|
-
"5.
|
|
1170
|
+
"3. Add product: WhatsApp → Get started.",
|
|
1171
|
+
"4. WhatsApp → API Setup: copy the Temporary access token or create a permanent one.",
|
|
1172
|
+
"5. You also need a Phone Number ID and WhatsApp Business Account ID.",
|
|
1174
1173
|
"",
|
|
1175
1174
|
" 🔗 developers.facebook.com — business.whatsapp.com"
|
|
1176
1175
|
],
|
|
@@ -1185,11 +1184,11 @@ const CHANNELS = [
|
|
|
1185
1184
|
supportsDM: true,
|
|
1186
1185
|
platforms: ["all"],
|
|
1187
1186
|
setupSteps: [
|
|
1188
|
-
"1.
|
|
1189
|
-
"2.
|
|
1190
|
-
"3.
|
|
1191
|
-
"4.
|
|
1192
|
-
"5.
|
|
1187
|
+
"1. No Meta Business API needed — uses WhatsApp Web.",
|
|
1188
|
+
"2. Make sure you have installed: npm install @whiskeysockets/baileys",
|
|
1189
|
+
"3. Start the gateway. On first connection a QR code will appear.",
|
|
1190
|
+
"4. Scan the QR with your phone (WhatsApp → Linked Devices → Link a device).",
|
|
1191
|
+
"5. After connecting, the session is saved — no QR needed again.",
|
|
1193
1192
|
"",
|
|
1194
1193
|
" 📖 docs: github.com/WhiskeySockets/Baileys"
|
|
1195
1194
|
],
|
|
@@ -1211,11 +1210,11 @@ const CHANNELS = [
|
|
|
1211
1210
|
required: true
|
|
1212
1211
|
}],
|
|
1213
1212
|
setupSteps: [
|
|
1214
|
-
"1.
|
|
1215
|
-
"2.
|
|
1216
|
-
"3. OAuth & Permissions:
|
|
1217
|
-
"4. Install App
|
|
1218
|
-
"5. Basic Information → App Credentials → Signing Secret —
|
|
1213
|
+
"1. Go to api.slack.com/apps → Create New App → From scratch.",
|
|
1214
|
+
"2. Give it a name and choose a workspace.",
|
|
1215
|
+
"3. OAuth & Permissions: Add Bot Token Scopes (chat:write, users:read, im:read, im:history, etc.).",
|
|
1216
|
+
"4. Install App to workspace — copy the \"Bot User OAuth Token\" (starts with xoxb-).",
|
|
1217
|
+
"5. Basic Information → App Credentials → Signing Secret — copy it.",
|
|
1219
1218
|
"",
|
|
1220
1219
|
" 🔗 api.slack.com/apps"
|
|
1221
1220
|
],
|
|
@@ -1232,10 +1231,10 @@ const CHANNELS = [
|
|
|
1232
1231
|
tokenLabel: "Signal phone number",
|
|
1233
1232
|
tokenHint: "Requires signal-cli installed",
|
|
1234
1233
|
setupSteps: [
|
|
1235
|
-
"1.
|
|
1236
|
-
"2.
|
|
1237
|
-
"3.
|
|
1238
|
-
"4.
|
|
1234
|
+
"1. Install signal-cli: https://github.com/AsamK/signal-cli",
|
|
1235
|
+
"2. Register number: signal-cli -a +1XXXXXXXXX register",
|
|
1236
|
+
"3. Verify electronically (if available) or via SMS code.",
|
|
1237
|
+
"4. Enter your phone number here (e.g. +1XXXXXXXXX).",
|
|
1239
1238
|
"",
|
|
1240
1239
|
" 🔗 github.com/AsamK/signal-cli"
|
|
1241
1240
|
],
|
|
@@ -1250,10 +1249,10 @@ const CHANNELS = [
|
|
|
1250
1249
|
supportsDM: true,
|
|
1251
1250
|
platforms: ["darwin"],
|
|
1252
1251
|
setupSteps: [
|
|
1253
|
-
"1. macOS
|
|
1254
|
-
"2. BlueBubbles:
|
|
1255
|
-
"3.
|
|
1256
|
-
"4.
|
|
1252
|
+
"1. macOS only. You need BlueBubbles (bluebubbles.app) or Beeper bridge.",
|
|
1253
|
+
"2. BlueBubbles: install on Mac, check server URL and API key.",
|
|
1254
|
+
"3. Or Beeper: connect to iMessage via Beeper desktop app.",
|
|
1255
|
+
"4. Set server URL and token in the channel configuration.",
|
|
1257
1256
|
"",
|
|
1258
1257
|
" 🔗 bluebubbles.app — beeper.com"
|
|
1259
1258
|
],
|
|
@@ -1280,10 +1279,10 @@ const CHANNELS = [
|
|
|
1280
1279
|
required: true
|
|
1281
1280
|
}],
|
|
1282
1281
|
setupSteps: [
|
|
1283
|
-
"1.
|
|
1282
|
+
"1. Create a bot account on matrix.org or another homeserver.",
|
|
1284
1283
|
"2. Access token: Element/SchildiChat → Settings → Help & About → Access Token.",
|
|
1285
|
-
"3.
|
|
1286
|
-
"4. Homeserver URL: https://matrix.org
|
|
1284
|
+
"3. Or via API: POST /_matrix/client/r0/login with type=m.login.password.",
|
|
1285
|
+
"4. Homeserver URL: https://matrix.org or your server URL.",
|
|
1287
1286
|
"",
|
|
1288
1287
|
" 🔗 matrix.org — element.io"
|
|
1289
1288
|
],
|
|
@@ -1317,9 +1316,9 @@ const CHANNELS = [
|
|
|
1317
1316
|
}
|
|
1318
1317
|
],
|
|
1319
1318
|
setupSteps: [
|
|
1320
|
-
"1.
|
|
1321
|
-
"2.
|
|
1322
|
-
"3.
|
|
1319
|
+
"1. Choose an IRC server (e.g. irc.libera.chat, irc.oftc.net).",
|
|
1320
|
+
"2. You need a nickname for the bot and optionally a channel to join.",
|
|
1321
|
+
"3. Some servers require authentication before /join.",
|
|
1323
1322
|
"",
|
|
1324
1323
|
" 🔗 libera.chat — oftc.net"
|
|
1325
1324
|
],
|
|
@@ -1336,11 +1335,11 @@ const CHANNELS = [
|
|
|
1336
1335
|
tokenLabel: "Personal Access Token (or Bot token)",
|
|
1337
1336
|
tokenHint: "Account Settings > Security > Personal Access Tokens",
|
|
1338
1337
|
setupSteps: [
|
|
1339
|
-
"1.
|
|
1340
|
-
"2. Create token —
|
|
1338
|
+
"1. In Mattermost: Profile → Account Settings → Security → Personal Access Tokens.",
|
|
1339
|
+
"2. Create token — copy it (not shown again).",
|
|
1341
1340
|
"3. Integrations → Outgoing Webhooks → Add outgoing webhook.",
|
|
1342
|
-
"4.
|
|
1343
|
-
"5. Webhook URL
|
|
1341
|
+
"4. Note the webhook URL and Trigger Word. The webhook token is needed for verification.",
|
|
1342
|
+
"5. Webhook URL for gateway: https://<gateway>/webhook/mattermost",
|
|
1344
1343
|
"",
|
|
1345
1344
|
" 🔗 docs.mattermost.com"
|
|
1346
1345
|
],
|
|
@@ -1368,9 +1367,9 @@ const CHANNELS = [
|
|
|
1368
1367
|
platforms: ["all"],
|
|
1369
1368
|
tokenLabel: "Google Chat webhook URL",
|
|
1370
1369
|
setupSteps: [
|
|
1371
|
-
"1.
|
|
1372
|
-
"2.
|
|
1373
|
-
"3.
|
|
1370
|
+
"1. In Google Chat: Room → Manage webhooks → Add webhook.",
|
|
1371
|
+
"2. Give it a name and copy the Webhook URL.",
|
|
1372
|
+
"3. Paste the URL below.",
|
|
1374
1373
|
"",
|
|
1375
1374
|
" 🔗 chat.google.com"
|
|
1376
1375
|
],
|
|
@@ -1385,9 +1384,9 @@ const CHANNELS = [
|
|
|
1385
1384
|
platforms: ["all"],
|
|
1386
1385
|
tokenLabel: "Teams incoming webhook URL",
|
|
1387
1386
|
setupSteps: [
|
|
1388
|
-
"1.
|
|
1389
|
-
"2.
|
|
1390
|
-
"3.
|
|
1387
|
+
"1. In Teams: Channel → Connectors → Incoming Webhook → Configure.",
|
|
1388
|
+
"2. Give it a name and copy the Webhook URL.",
|
|
1389
|
+
"3. Paste the URL below.",
|
|
1391
1390
|
"",
|
|
1392
1391
|
" 🔗 docs.microsoft.com/microsoftteams/platform/webhooks-and-connectors"
|
|
1393
1392
|
],
|
|
@@ -1408,9 +1407,9 @@ const CHANNELS = [
|
|
|
1408
1407
|
required: true
|
|
1409
1408
|
}],
|
|
1410
1409
|
setupSteps: [
|
|
1411
|
-
"1.
|
|
1412
|
-
"2.
|
|
1413
|
-
"3.
|
|
1410
|
+
"1. You need a Nostr private key (nsec1...). Create one with Damus, Amethyst or iris.to.",
|
|
1411
|
+
"2. Choose a Relay: e.g. wss://relay.damus.io, wss://relay.nostr.band.",
|
|
1412
|
+
"3. NEVER share your nsec — it is your private key.",
|
|
1414
1413
|
"",
|
|
1415
1414
|
" 🔗 nostr.com — damus.io"
|
|
1416
1415
|
],
|
|
@@ -1431,10 +1430,10 @@ const CHANNELS = [
|
|
|
1431
1430
|
required: true
|
|
1432
1431
|
}],
|
|
1433
1432
|
setupSteps: [
|
|
1434
|
-
"1.
|
|
1435
|
-
"2. Messaging API channel →
|
|
1436
|
-
"3. Channel access token: Issue
|
|
1437
|
-
"4. Channel secret:
|
|
1433
|
+
"1. Go to developers.line.biz → Console → Create provider & channel.",
|
|
1434
|
+
"2. Messaging API channel → Configure Basic settings.",
|
|
1435
|
+
"3. Channel access token: Issue or Regenerate — copy it.",
|
|
1436
|
+
"4. Channel secret: from Basic settings — copy it.",
|
|
1438
1437
|
"",
|
|
1439
1438
|
" 🔗 developers.line.biz"
|
|
1440
1439
|
],
|
|
@@ -1455,9 +1454,9 @@ const CHANNELS = [
|
|
|
1455
1454
|
required: true
|
|
1456
1455
|
}],
|
|
1457
1456
|
setupSteps: [
|
|
1458
|
-
"1.
|
|
1459
|
-
"2. Credentials:
|
|
1460
|
-
"3.
|
|
1457
|
+
"1. Go to open.feishu.cn → Create enterprise app.",
|
|
1458
|
+
"2. Credentials: copy App ID and App Secret.",
|
|
1459
|
+
"3. Enable permissions: im:message, im:message.group_at_msg etc.",
|
|
1461
1460
|
"",
|
|
1462
1461
|
" 🔗 open.feishu.cn"
|
|
1463
1462
|
],
|
|
@@ -1702,8 +1701,8 @@ const CHANNELS = [
|
|
|
1702
1701
|
required: true
|
|
1703
1702
|
}],
|
|
1704
1703
|
setupSteps: [
|
|
1705
|
-
"1.
|
|
1706
|
-
"2.
|
|
1704
|
+
"1. Create App Password: Nextcloud → Profile → Security → App passwords.",
|
|
1705
|
+
"2. You need the Nextcloud URL, username and App Password.",
|
|
1707
1706
|
"",
|
|
1708
1707
|
" 🔗 nextcloud.com"
|
|
1709
1708
|
],
|
|
@@ -1719,8 +1718,8 @@ const CHANNELS = [
|
|
|
1719
1718
|
tokenLabel: "Zalo OA Access Token",
|
|
1720
1719
|
setupSteps: [
|
|
1721
1720
|
"1. Zalo Official Account (OA): developers.zalo.me → My Apps.",
|
|
1722
|
-
"2.
|
|
1723
|
-
"3. Access Token
|
|
1721
|
+
"2. Create an app and connect it to your OA.",
|
|
1722
|
+
"3. Access Token from Zalo API (OAuth flow or test token for development).",
|
|
1724
1723
|
"",
|
|
1725
1724
|
" 🔗 developers.zalo.me"
|
|
1726
1725
|
],
|
|
@@ -1762,10 +1761,10 @@ const CHANNELS = [
|
|
|
1762
1761
|
}
|
|
1763
1762
|
],
|
|
1764
1763
|
setupSteps: [
|
|
1765
|
-
"1.
|
|
1766
|
-
"2. Gmail:
|
|
1767
|
-
"3. SMTP host: smtp.gmail.com, smtp.office365.com,
|
|
1768
|
-
"4.
|
|
1764
|
+
"1. You need an SMTP server (Gmail, Outlook, SendGrid, Mailgun, or custom).",
|
|
1765
|
+
"2. Gmail: enable 2FA, create App Password (myaccount.google.com/apppasswords).",
|
|
1766
|
+
"3. SMTP host: smtp.gmail.com, smtp.office365.com, or your provider host.",
|
|
1767
|
+
"4. For IMAP (reading email): imap.gmail.com etc.",
|
|
1769
1768
|
"",
|
|
1770
1769
|
" 🔗 support.google.com/accounts/answer/185833"
|
|
1771
1770
|
],
|
|
@@ -1816,10 +1815,10 @@ const ZALO_PERSONAL = {
|
|
|
1816
1815
|
tokenLabel: "Zalo Personal cookie token",
|
|
1817
1816
|
tokenHint: "Extract from browser",
|
|
1818
1817
|
setupSteps: [
|
|
1819
|
-
"1. Unofficial API —
|
|
1820
|
-
"2.
|
|
1821
|
-
"3.
|
|
1822
|
-
"4.
|
|
1818
|
+
"1. Unofficial API — uses browser cookies. May break with Zalo updates.",
|
|
1819
|
+
"2. Open Zalo Web in browser, Developer Tools → Application → Cookies.",
|
|
1820
|
+
"3. Look for the token/cookie Zalo uses for auth.",
|
|
1821
|
+
"4. See docs/channels/zalo-personal.md for details.",
|
|
1823
1822
|
"",
|
|
1824
1823
|
" ⚠️ Unofficial — use at your own risk"
|
|
1825
1824
|
],
|
|
@@ -1850,14 +1849,14 @@ async function channelsAdd(channelId) {
|
|
|
1850
1849
|
const ch = getChannel(id);
|
|
1851
1850
|
if (!ch) {
|
|
1852
1851
|
console.log(chalk.default.red(` ✖ Unknown channel: ${id}`));
|
|
1853
|
-
console.log(chalk.default.gray("
|
|
1854
|
-
console.log(chalk.default.gray("
|
|
1852
|
+
console.log(chalk.default.gray(" Available: " + CHANNELS.map((c) => c.id).join(", ")));
|
|
1853
|
+
console.log(chalk.default.gray(" Command: hyperclaw channels add <id>\n"));
|
|
1855
1854
|
return;
|
|
1856
1855
|
}
|
|
1857
1856
|
console.log(chalk.default.cyan(`\n ${ch.emoji} Configuring ${ch.name}\n`));
|
|
1858
1857
|
if (ch.notes) console.log(chalk.default.gray(` ℹ ${ch.notes}\n`));
|
|
1859
1858
|
if (ch.setupSteps && ch.setupSteps.length > 0) {
|
|
1860
|
-
console.log(chalk.default.bold("
|
|
1859
|
+
console.log(chalk.default.bold(" Setup steps:\n"));
|
|
1861
1860
|
for (const step of ch.setupSteps) {
|
|
1862
1861
|
if (step.trim() === "") continue;
|
|
1863
1862
|
if (step.startsWith(" 🔗")) console.log(chalk.default.cyan(step));
|
|
@@ -2267,7 +2266,7 @@ var init_queue = require_chunk.__esm({ "src/delivery/queue.ts"() {
|
|
|
2267
2266
|
//#endregion
|
|
2268
2267
|
//#region src/cli/run-main.ts
|
|
2269
2268
|
const program = new commander.Command();
|
|
2270
|
-
program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("4.0.
|
|
2269
|
+
program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("4.0.1");
|
|
2271
2270
|
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) => {
|
|
2272
2271
|
await new require_onboard.Banner().showNeonBanner(false);
|
|
2273
2272
|
await new require_onboard.HyperClawWizard().run(opts);
|
|
@@ -2628,7 +2627,7 @@ cfgCmd.command("set-service-key <serviceId> [apiKey]").description("Set API key
|
|
|
2628
2627
|
cfgCmd.command("schema").description("Show configuration schema").action(() => {
|
|
2629
2628
|
console.log(chalk.default.bold.hex("#06b6d4")("\n Config schema: ~/.hyperclaw/config.json\n"));
|
|
2630
2629
|
const schema = {
|
|
2631
|
-
version: "string (e.g. \"4.0.
|
|
2630
|
+
version: "string (e.g. \"4.0.1\")",
|
|
2632
2631
|
workspaceName: "string",
|
|
2633
2632
|
provider: {
|
|
2634
2633
|
providerId: "string",
|
|
@@ -3118,7 +3117,7 @@ logsCmd.action(async (opts) => {
|
|
|
3118
3117
|
}
|
|
3119
3118
|
});
|
|
3120
3119
|
program.command("gateway:serve").description("Start the gateway server in the foreground (used by daemon)").action(async () => {
|
|
3121
|
-
const { startGateway } = await Promise.resolve().then(() => require("./server-
|
|
3120
|
+
const { startGateway } = await Promise.resolve().then(() => require("./server-RBqwE_GN.js"));
|
|
3122
3121
|
await startGateway();
|
|
3123
3122
|
process.on("SIGINT", () => process.exit(0));
|
|
3124
3123
|
process.on("SIGTERM", () => process.exit(0));
|
|
@@ -3173,13 +3172,13 @@ authCmd.command("add <service_id>").description("Add API key for a service (any
|
|
|
3173
3172
|
const inquirer$3 = require("inquirer");
|
|
3174
3173
|
const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-B3anVuZD.js"));
|
|
3175
3174
|
const { getHyperClawDir: getHyperClawDir$1, getEnvFilePath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
|
|
3176
|
-
const { getApiKeyGuide, GENERIC_API_KEY_STEPS } = await Promise.resolve().then(() => require("./api-keys-guide-
|
|
3175
|
+
const { getApiKeyGuide, GENERIC_API_KEY_STEPS } = await Promise.resolve().then(() => require("./api-keys-guide-Bzig1R5W.js"));
|
|
3177
3176
|
const fs$10 = await import("fs-extra");
|
|
3178
3177
|
const path$10 = await import("path");
|
|
3179
3178
|
const guide = getApiKeyGuide(serviceId);
|
|
3180
3179
|
const steps = guide?.setupSteps ?? GENERIC_API_KEY_STEPS;
|
|
3181
3180
|
console.log(chalk$13.bold.hex("#06b6d4")(`\n 🔑 Add API key: ${guide?.name ?? serviceId}\n`));
|
|
3182
|
-
console.log(chalk$13.bold("
|
|
3181
|
+
console.log(chalk$13.bold(" Steps:\n"));
|
|
3183
3182
|
for (const step of steps) if (step.startsWith(" 🔗")) console.log(chalk$13.hex("#06b6d4")(step));
|
|
3184
3183
|
else if (step.startsWith(" 💡")) console.log(chalk$13.gray(step));
|
|
3185
3184
|
else console.log(chalk$13.gray(` ${step}`));
|
|
@@ -3366,13 +3365,13 @@ workspaceCmd.command("show [dir]").description("Show workspace files summary").a
|
|
|
3366
3365
|
});
|
|
3367
3366
|
const botCmd = program.command("bot").description("HyperClaw Bot — companion bot for remote gateway control");
|
|
3368
3367
|
botCmd.command("status").action(async () => {
|
|
3369
|
-
const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-
|
|
3368
|
+
const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-DfMGowZC.js"));
|
|
3370
3369
|
await showBotStatus();
|
|
3371
3370
|
process.exit(0);
|
|
3372
3371
|
});
|
|
3373
3372
|
botCmd.command("setup").description("Configure HyperClaw Bot (Telegram token, allowed users)").action(async () => {
|
|
3374
3373
|
const inquirer$3 = require("inquirer");
|
|
3375
|
-
const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-
|
|
3374
|
+
const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-DfMGowZC.js"));
|
|
3376
3375
|
const chalk$13 = require("chalk");
|
|
3377
3376
|
console.log(chalk$13.bold.hex("#06b6d4")("\n 🦅 HYPERCLAW BOT SETUP\n"));
|
|
3378
3377
|
console.log(chalk$13.gray(" Create a bot at t.me/BotFather, then paste the token below.\n"));
|
|
@@ -3434,14 +3433,14 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
|
|
|
3434
3433
|
cwd: process.cwd()
|
|
3435
3434
|
});
|
|
3436
3435
|
child.unref();
|
|
3437
|
-
const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-
|
|
3436
|
+
const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-DfMGowZC.js"));
|
|
3438
3437
|
await writeBotPid(child.pid);
|
|
3439
3438
|
console.log(require("chalk").green(`\n ✔ HyperClaw Bot started in background (PID ${child.pid})`));
|
|
3440
3439
|
console.log(require("chalk").gray(" Stop with: hyperclaw bot stop\n"));
|
|
3441
3440
|
process.exit(0);
|
|
3442
3441
|
return;
|
|
3443
3442
|
}
|
|
3444
|
-
const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-
|
|
3443
|
+
const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-DfMGowZC.js"));
|
|
3445
3444
|
const cfg = await loadBotConfig();
|
|
3446
3445
|
if (!cfg) {
|
|
3447
3446
|
console.log(require("chalk").red("\n ✖ HyperClaw Bot not configured. Run: hyperclaw bot setup\n"));
|
|
@@ -3468,7 +3467,7 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
|
|
|
3468
3467
|
});
|
|
3469
3468
|
botCmd.command("stop").description("Stop HyperClaw Bot (when running in background)").action(async () => {
|
|
3470
3469
|
const chalk$13 = require("chalk");
|
|
3471
|
-
const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-
|
|
3470
|
+
const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-DfMGowZC.js"));
|
|
3472
3471
|
const stopped = await stopBotProcess();
|
|
3473
3472
|
if (stopped) console.log(chalk$13.green("\n ✔ HyperClaw Bot stopped\n"));
|
|
3474
3473
|
else console.log(chalk$13.gray("\n Bot not running in background (no PID file). Use Ctrl+C to stop foreground bot.\n"));
|
|
@@ -3585,7 +3584,7 @@ if (process.argv.length === 2) (async () => {
|
|
|
3585
3584
|
console.log(` ${t.c("hyperclaw --help")} — all commands\n`);
|
|
3586
3585
|
} else {
|
|
3587
3586
|
await new require_onboard.Banner().showNeonBanner(false);
|
|
3588
|
-
const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-
|
|
3587
|
+
const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-3q20ZyHj.js"));
|
|
3589
3588
|
await new HyperClawWizard$1().run({ wizard: true });
|
|
3590
3589
|
}
|
|
3591
3590
|
process.exit(0);
|