leedab 0.2.5 → 0.2.6
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/bin/leedab.js +25 -0
- package/dist/gateway.js +4 -3
- package/dist/onboard/steps/provider.js +2 -2
- package/package.json +2 -2
package/bin/leedab.js
CHANGED
|
@@ -174,10 +174,34 @@ program
|
|
|
174
174
|
.option("-c, --config <path>", "Path to config file", resolve(STATE_DIR, "config.json"))
|
|
175
175
|
.option("-p, --dashboard-port <port>", "Dashboard port", "3000")
|
|
176
176
|
.action(async (opts) => {
|
|
177
|
+
const startupMessages = [
|
|
178
|
+
"Loading skills...",
|
|
179
|
+
"Waking up the agent...",
|
|
180
|
+
"Connecting channels...",
|
|
181
|
+
"Warming up the model...",
|
|
182
|
+
"Syncing memory...",
|
|
183
|
+
"Checking in with the gateway...",
|
|
184
|
+
"Polishing the SOUL...",
|
|
185
|
+
"Calibrating heartbeat...",
|
|
186
|
+
"Reading the workspace...",
|
|
187
|
+
"Tuning the agent's instincts...",
|
|
188
|
+
"Pouring the coffee...",
|
|
189
|
+
"Almost there...",
|
|
190
|
+
];
|
|
177
191
|
const spinner = ora("Starting LeedAB agent...").start();
|
|
192
|
+
let lastIdx = -1;
|
|
193
|
+
const rotate = setInterval(() => {
|
|
194
|
+
let next;
|
|
195
|
+
do {
|
|
196
|
+
next = Math.floor(Math.random() * startupMessages.length);
|
|
197
|
+
} while (next === lastIdx && startupMessages.length > 1);
|
|
198
|
+
lastIdx = next;
|
|
199
|
+
spinner.text = startupMessages[next];
|
|
200
|
+
}, 4500);
|
|
178
201
|
try {
|
|
179
202
|
const config = await loadConfig(opts.config);
|
|
180
203
|
const { logPath } = await startGateway(config);
|
|
204
|
+
clearInterval(rotate);
|
|
181
205
|
spinner.succeed(chalk.green("LeedAB is live"));
|
|
182
206
|
await startDashboard(config, parseInt(opts.dashboardPort));
|
|
183
207
|
|
|
@@ -198,6 +222,7 @@ program
|
|
|
198
222
|
console.log(chalk.dim(` Logs: ${logPath}`));
|
|
199
223
|
console.log();
|
|
200
224
|
} catch (err) {
|
|
225
|
+
clearInterval(rotate);
|
|
201
226
|
spinner.fail(chalk.red(`Failed to start: ${err.message}`));
|
|
202
227
|
process.exit(1);
|
|
203
228
|
}
|
package/dist/gateway.js
CHANGED
|
@@ -198,16 +198,17 @@ async function seedWorkspace() {
|
|
|
198
198
|
console.warn("[leedab] workspace seed failed:", err);
|
|
199
199
|
}
|
|
200
200
|
}
|
|
201
|
-
async function waitForGateway(port, timeoutMs =
|
|
201
|
+
async function waitForGateway(port, timeoutMs = 90000) {
|
|
202
202
|
const bin = resolveOpenClawBin();
|
|
203
203
|
const stateDir = STATE_DIR;
|
|
204
204
|
const start = Date.now();
|
|
205
205
|
while (Date.now() - start < timeoutMs) {
|
|
206
206
|
try {
|
|
207
|
-
// Use openclaw's own health check which knows the WS protocol
|
|
207
|
+
// Use openclaw's own health check which knows the WS protocol.
|
|
208
|
+
// Child timeout must exceed openclaw CLI cold-start time (~15s).
|
|
208
209
|
await execFileAsync(bin, ["gateway", "health"], {
|
|
209
210
|
env: openclawEnv(stateDir),
|
|
210
|
-
timeout:
|
|
211
|
+
timeout: 30000,
|
|
211
212
|
});
|
|
212
213
|
return;
|
|
213
214
|
}
|
|
@@ -12,7 +12,7 @@ const PROVIDERS = [
|
|
|
12
12
|
name: "Anthropic (Claude)", value: "anthropic", flag: "--anthropic-api-key", envVar: "ANTHROPIC_API_KEY",
|
|
13
13
|
defaultModelIndex: 1,
|
|
14
14
|
models: [
|
|
15
|
-
{ name: "Claude Opus 4.
|
|
15
|
+
{ name: "Claude Opus 4.7 — most capable", value: "claude-opus-4-7", openclaw: "anthropic/claude-opus-4-7" },
|
|
16
16
|
{ name: "Claude Sonnet 4.6 — fast, capable (recommended)", value: "claude-sonnet-4-6", openclaw: "anthropic/claude-sonnet-4-6" },
|
|
17
17
|
{ name: "Claude Haiku 4.5 — fastest, cheapest", value: "claude-haiku-4-5", openclaw: "anthropic/claude-haiku-4-5" },
|
|
18
18
|
],
|
|
@@ -55,7 +55,7 @@ const PROVIDERS = [
|
|
|
55
55
|
defaultModelIndex: 0,
|
|
56
56
|
models: [
|
|
57
57
|
{ name: "Claude Sonnet 4.6 via Bedrock", value: "anthropic.claude-sonnet-4-6", openclaw: "anthropic/claude-sonnet-4-6" },
|
|
58
|
-
{ name: "Claude Opus 4.
|
|
58
|
+
{ name: "Claude Opus 4.7 via Bedrock", value: "anthropic.claude-opus-4-7", openclaw: "anthropic/claude-opus-4-7" },
|
|
59
59
|
{ name: "Claude Haiku 4.5 via Bedrock", value: "anthropic.claude-haiku-4-5", openclaw: "anthropic/claude-haiku-4-5" },
|
|
60
60
|
],
|
|
61
61
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "leedab",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"description": "LeedAB — Your enterprise AI agent. Local-first, private by default.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": "LeedAB <hello@leedab.com>",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"conf": "^13.0.0",
|
|
32
32
|
"grammy": "^1.41.1",
|
|
33
33
|
"inquirer": "^12.11.1",
|
|
34
|
-
"openclaw": "
|
|
34
|
+
"openclaw": "2026.4.15",
|
|
35
35
|
"ora": "^8.1.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|