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/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-BVG2PEum.js');
7
- require('./server-CTpJ8K5n.js');
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.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.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.0 — GATEWAY DASHBOARD".padStart(45).padEnd(w)}`) + c(`║`));
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(` Πείτε "${this.wakeWord}" για να ξυπνήσετε τον βοηθό.`));
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. Άνοιξε το Telegram και ψάξε για @BotFather (είναι ο επίσημος bot για δημιουργία bots).",
1121
- "2. Ξεκίνα συνομιλία με /start και πληκτρολόγησε /newbot για να δημιουργήσεις νέο bot.",
1122
- "3. Δώσε ένα όνομα στο bot (π.χ. \"My HyperClaw Bot\") και μετά ένα username που να τελειώνει σε \"bot\" (π.χ. my_hyperclaw_bot).",
1123
- "4. Ο @BotFather θα σου στείλει το Bot Token — μια συμβολοσειρά που ξεκινά με 7xxxxxx:AAH... Κράτα το μυστικό!",
1124
- "5. Αντιγράψε το token και κολλήστε το παρακάτω.",
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. Πήγαινε στο Discord Developer Portal: https://discord.com/developers/applications",
1142
- "2. Κλικ \"New Application\", δώσε όνομα και δημιούργησέ το.",
1143
- "3. Στο μενού αριστερά: Bot → Add Bot.",
1144
- "4. Κλικ \"Reset Token\" και αντιγράψε το token (Κράτα το μυστικό!).",
1145
- "5. Στο Settings → OAuth2 → General, αντιγράψε το Application ID (Client ID).",
1146
- "6. Προαιρετικά: Για να προσθέσεις το bot σε server, Bot → OAuth2 → URL Generator, scope: bot.",
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: "Από OAuth2 → General",
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. Πήγαινε στο Meta for Developers: https://developers.facebook.com/",
1168
+ "1. Go to Meta for Developers: https://developers.facebook.com/",
1170
1169
  "2. My Apps → Create App → Business type.",
1171
- "3. Προσθήκη προϊόντος: WhatsApp → Get started.",
1172
- "4. Στο WhatsApp → API Setup: αντιγράψε το Temporary access token ή δημιούργησε μόνιμο.",
1173
- "5. Χρειάζεσαι επίσης Phone Number ID και WhatsApp Business Account ID.",
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. Δεν χρειάζεσαι Meta Business API — χρησιμοποιεί WhatsApp Web.",
1189
- "2. Βεβαιώσου ότι έχεις εγκατεστημένο: npm install @whiskeysockets/baileys",
1190
- "3. Ξεκίνα το gateway. Στην πρώτη σύνδεση θα εμφανιστεί QR code.",
1191
- "4. Σκάνε το QR με το κινητό σου (WhatsApp → Linked Devices → Link a device).",
1192
- "5. Μετά τη σύνδεση το session αποθηκεύεταιδεν χρειάζεται ξανά QR.",
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. Πήγαινε στο api.slack.com/apps → Create New App → From scratch.",
1215
- "2. Δώσε όνομα και διάλεξε workspace.",
1216
- "3. OAuth & Permissions: Προσθήκη Bot Token Scopes (chat:write, users:read, im:read, im:history κ.λπ.).",
1217
- "4. Install App στο workspace — αντιγράψε το \"Bot User OAuth Token\" (ξεκινά με xoxb-).",
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. Εγκατάσταση signal-cli: https://github.com/AsamK/signal-cli",
1236
- "2. Εγγραφή αριθμού: signal-cli -a +30XXXXXXXXX register",
1237
- "3. Ήλεκτρονική επαλήθευση (αν υπάρχει) ή κωδικός από SMS.",
1238
- "4. Εδώ γράψε τον αριθμό τηλεφώνου (π.χ. +30XXXXXXXXX).",
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 μόνο. Χρειάζεσαι BlueBubbles (bluebubbles.app) ή Beeper bridge.",
1254
- "2. BlueBubbles: εγκατάσταση στο Mac, έλεγχος server URL και API key.",
1255
- "3. Ή Beeper: σύνδεση με iMessage μέσω Beeper desktop app.",
1256
- "4. Ρύθμισε server URL και token στην διαμόρφωση του channel.",
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. Δημιούργησε λογαριασμό bot σε matrix.org ή άλλο homeserver.",
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. Ή μέσω API: POST /_matrix/client/r0/login με type=m.login.password.",
1286
- "4. Homeserver URL: https://matrix.org ή το URL του server σου.",
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. Διάλεξε IRC server (π.χ. irc.libera.chat, irc.oftc.net).",
1321
- "2. Χρειάζεσαι nickname για το bot και προαιρετικά channel για να μπεί.",
1322
- "3. Κάποιοι servers χρειάζονται επαλήθευση πριν το /join.",
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. Στο Mattermost: Προφίλ → Account Settings → Security → Personal Access Tokens.",
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. Σημείωσε το webhook URL και το Trigger Word. Το token από το webhook χρειάζεται για επαλήθευση.",
1343
- "5. Webhook URL για gateway: https://<gateway>/webhook/mattermost",
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. Στο Google Chat: Room → Manage webhooks → Add webhook.",
1372
- "2. Δώσε όνομα και αντιγράψε το Webhook URL.",
1373
- "3. Κόλλησε το URL παρακάτω.",
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. Στο Teams: Channel → Connectors → Incoming Webhook → Configure.",
1389
- "2. Δώσε όνομα και αντιγράψε το Webhook URL.",
1390
- "3. Κόλλησε το URL παρακάτω.",
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. Χρειάζεσαι Nostr private key (nsec1...). Μπορείς να δημιουργήσεις με Damus, Amethyst ή iris.to.",
1412
- "2. Επιλογή Relay: π.χ. wss://relay.damus.io, wss://relay.nostr.band.",
1413
- "3. ΜΗΝ μοιράζεσαι το nsec — είναι το ιδιωτικό κλειδί σου.",
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. Πήγαινε στο developers.line.biz → Console → Create provider & channel.",
1435
- "2. Messaging API channel → Ορισμός Basic settings.",
1436
- "3. Channel access token: Issue ή Regenerate — αντιγράψε το.",
1437
- "4. Channel secret: από Basic settings — αντιγράψε το.",
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. Πήγαινε στο open.feishu.cn → Create enterprise app.",
1459
- "2. Credentials: αντιγράψε App ID και App Secret.",
1460
- "3. Ενεργοποίηση δικαιωμάτων: im:message, im:message.group_at_msg κ.λπ.",
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. Δημιούργησε App Password: Nextcloud → Προφίλ → Security → App passwords.",
1706
- "2. Χρειάζεσαι URL του Nextcloud, username και App Password.",
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. Δημιουργία εφαρμογής και σύνδεση με OA.",
1723
- "3. Access Token από το Zalo API (OAuth flow ή test 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. Χρειάζεσαι SMTP server (Gmail, Outlook, SendGrid, Mailgun, ή custom).",
1766
- "2. Gmail: ενεργοποίηση 2FA, δημιουργία App Password (myaccount.google.com/apppasswords).",
1767
- "3. SMTP host: smtp.gmail.com, smtp.office365.com, ή το host του provider σου.",
1768
- "4. Για IMAP (ανάγνωση email): imap.gmail.com κ.λπ.",
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 — χρησιμοποιεί browser cookies. Μπορεί να χαλάσει με ενημερώσεις Zalo.",
1820
- "2. Άνοιξε Zalo Web στο browser, Developer Tools → Application → Cookies.",
1821
- "3. Ψάξε για token/cookie που χρησιμοποιεί το Zalo για auth.",
1822
- "4. Δες docs/channels/zalo-personal.md για λεπτομέρειες.",
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(" Διαθέσιμα: " + CHANNELS.map((c) => c.id).join(", ")));
1854
- console.log(chalk.default.gray(" Εντολή: hyperclaw channels add <id>\n"));
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(" Βήματα ρύθμισης:\n"));
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.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.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-CgpaaTw3.js"));
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-cXeIlxrF.js"));
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(" Βήματα:\n"));
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-CBYttrbA.js"));
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-CBYttrbA.js"));
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-CBYttrbA.js"));
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-CBYttrbA.js"));
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-CBYttrbA.js"));
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-DUHdDxZ-.js"));
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);