@lobu/cli 4.3.0 → 6.0.0
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 +11 -26
- package/dist/__tests__/chat.integration.test.js +19 -19
- package/dist/__tests__/chat.integration.test.js.map +1 -1
- package/dist/__tests__/dev.test.d.ts +2 -0
- package/dist/__tests__/dev.test.d.ts.map +1 -0
- package/dist/__tests__/dev.test.js +25 -0
- package/dist/__tests__/dev.test.js.map +1 -0
- package/dist/__tests__/init-memory.test.js +1 -14
- package/dist/__tests__/init-memory.test.js.map +1 -1
- package/dist/__tests__/token.test.d.ts +2 -0
- package/dist/__tests__/token.test.d.ts.map +1 -0
- package/dist/__tests__/token.test.js +52 -0
- package/dist/__tests__/token.test.js.map +1 -0
- package/dist/bundled-skills/lobu/SKILL.md +95 -7
- package/dist/commands/_lib/apply/__tests__/client.test.d.ts +2 -0
- package/dist/commands/_lib/apply/__tests__/client.test.d.ts.map +1 -0
- package/dist/commands/_lib/apply/__tests__/client.test.js +23 -0
- package/dist/commands/_lib/apply/__tests__/client.test.js.map +1 -0
- package/dist/commands/_lib/apply/__tests__/desired-state.test.d.ts +2 -0
- package/dist/commands/_lib/apply/__tests__/desired-state.test.d.ts.map +1 -0
- package/dist/commands/_lib/apply/__tests__/desired-state.test.js +140 -0
- package/dist/commands/_lib/apply/__tests__/desired-state.test.js.map +1 -0
- package/dist/commands/_lib/apply/__tests__/diff.test.d.ts +2 -0
- package/dist/commands/_lib/apply/__tests__/diff.test.d.ts.map +1 -0
- package/dist/commands/_lib/apply/__tests__/diff.test.js +378 -0
- package/dist/commands/_lib/apply/__tests__/diff.test.js.map +1 -0
- package/dist/commands/_lib/apply/apply-cmd.d.ts +12 -0
- package/dist/commands/_lib/apply/apply-cmd.d.ts.map +1 -0
- package/dist/commands/_lib/apply/apply-cmd.js +183 -0
- package/dist/commands/_lib/apply/apply-cmd.js.map +1 -0
- package/dist/commands/_lib/apply/client.d.ts +130 -0
- package/dist/commands/_lib/apply/client.d.ts.map +1 -0
- package/dist/commands/_lib/apply/client.js +243 -0
- package/dist/commands/_lib/apply/client.js.map +1 -0
- package/dist/commands/_lib/apply/desired-state.d.ts +71 -0
- package/dist/commands/_lib/apply/desired-state.d.ts.map +1 -0
- package/dist/commands/_lib/apply/desired-state.js +600 -0
- package/dist/commands/_lib/apply/desired-state.js.map +1 -0
- package/dist/commands/_lib/apply/diff.d.ts +76 -0
- package/dist/commands/_lib/apply/diff.d.ts.map +1 -0
- package/dist/commands/_lib/apply/diff.js +323 -0
- package/dist/commands/_lib/apply/diff.js.map +1 -0
- package/dist/commands/_lib/apply/prompt.d.ts +13 -0
- package/dist/commands/_lib/apply/prompt.d.ts.map +1 -0
- package/dist/commands/_lib/apply/prompt.js +19 -0
- package/dist/commands/_lib/apply/prompt.js.map +1 -0
- package/dist/commands/_lib/apply/render.d.ts +9 -0
- package/dist/commands/_lib/apply/render.d.ts.map +1 -0
- package/dist/commands/_lib/apply/render.js +92 -0
- package/dist/commands/_lib/apply/render.js.map +1 -0
- package/dist/commands/agent.d.ts +27 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +111 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/apply.d.ts +3 -0
- package/dist/commands/apply.d.ts.map +1 -0
- package/dist/commands/apply.js +5 -0
- package/dist/commands/apply.js.map +1 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +5 -5
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/dev.d.ts +8 -3
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +128 -124
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/doctor.d.ts +6 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +75 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/eval.d.ts +1 -0
- package/dist/commands/eval.d.ts.map +1 -1
- package/dist/commands/eval.js +7 -4
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/init.d.ts +2 -9
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +35 -249
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts +11 -3
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +109 -251
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +12 -11
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/memory/_lib/agent-detect.d.ts +9 -0
- package/dist/commands/memory/_lib/agent-detect.d.ts.map +1 -0
- package/dist/commands/memory/_lib/agent-detect.js +82 -0
- package/dist/commands/memory/_lib/agent-detect.js.map +1 -0
- package/dist/commands/memory/_lib/browser-auth-cmd.d.ts +19 -0
- package/dist/commands/memory/_lib/browser-auth-cmd.d.ts.map +1 -0
- package/dist/commands/memory/_lib/browser-auth-cmd.js +635 -0
- package/dist/commands/memory/_lib/browser-auth-cmd.js.map +1 -0
- package/dist/commands/memory/_lib/browser.d.ts +2 -0
- package/dist/commands/memory/_lib/browser.d.ts.map +1 -0
- package/dist/commands/memory/_lib/browser.js +26 -0
- package/dist/commands/memory/_lib/browser.js.map +1 -0
- package/dist/commands/memory/_lib/errors.d.ts +13 -0
- package/dist/commands/memory/_lib/errors.d.ts.map +1 -0
- package/dist/commands/memory/_lib/errors.js +23 -0
- package/dist/commands/memory/_lib/errors.js.map +1 -0
- package/dist/commands/memory/_lib/init-wizard.d.ts +12 -0
- package/dist/commands/memory/_lib/init-wizard.d.ts.map +1 -0
- package/dist/commands/memory/_lib/init-wizard.js +182 -0
- package/dist/commands/memory/_lib/init-wizard.js.map +1 -0
- package/dist/commands/memory/_lib/install-targets.d.ts +15 -0
- package/dist/commands/memory/_lib/install-targets.d.ts.map +1 -0
- package/dist/commands/memory/_lib/install-targets.js +209 -0
- package/dist/commands/memory/_lib/install-targets.js.map +1 -0
- package/dist/commands/memory/_lib/mcp.d.ts +20 -0
- package/dist/commands/memory/_lib/mcp.d.ts.map +1 -0
- package/dist/commands/memory/_lib/mcp.js +182 -0
- package/dist/commands/memory/_lib/mcp.js.map +1 -0
- package/dist/commands/memory/_lib/openclaw-auth.d.ts +41 -0
- package/dist/commands/memory/_lib/openclaw-auth.d.ts.map +1 -0
- package/dist/commands/memory/_lib/openclaw-auth.js +133 -0
- package/dist/commands/memory/_lib/openclaw-auth.js.map +1 -0
- package/dist/commands/memory/_lib/openclaw-auth.test.d.ts +2 -0
- package/dist/commands/memory/_lib/openclaw-auth.test.d.ts.map +1 -0
- package/dist/commands/memory/_lib/openclaw-auth.test.js +9 -0
- package/dist/commands/memory/_lib/openclaw-auth.test.js.map +1 -0
- package/dist/commands/memory/_lib/openclaw-cmd.d.ts +15 -0
- package/dist/commands/memory/_lib/openclaw-cmd.d.ts.map +1 -0
- package/dist/commands/memory/_lib/openclaw-cmd.js +208 -0
- package/dist/commands/memory/_lib/openclaw-cmd.js.map +1 -0
- package/dist/commands/memory/_lib/output.d.ts +5 -0
- package/dist/commands/memory/_lib/output.d.ts.map +1 -0
- package/dist/commands/memory/_lib/output.js +17 -0
- package/dist/commands/memory/_lib/output.js.map +1 -0
- package/dist/commands/memory/_lib/schema.d.ts +93 -0
- package/dist/commands/memory/_lib/schema.d.ts.map +1 -0
- package/dist/commands/memory/_lib/schema.js +192 -0
- package/dist/commands/memory/_lib/schema.js.map +1 -0
- package/dist/commands/memory/_lib/seed-cmd.d.ts +9 -0
- package/dist/commands/memory/_lib/seed-cmd.d.ts.map +1 -0
- package/dist/commands/memory/_lib/seed-cmd.js +516 -0
- package/dist/commands/memory/_lib/seed-cmd.js.map +1 -0
- package/dist/commands/memory/browser-auth.d.ts +3 -0
- package/dist/commands/memory/browser-auth.d.ts.map +1 -0
- package/dist/commands/memory/browser-auth.js +5 -0
- package/dist/commands/memory/browser-auth.js.map +1 -0
- package/dist/commands/memory/configure.d.ts +3 -0
- package/dist/commands/memory/configure.d.ts.map +1 -0
- package/dist/commands/memory/configure.js +5 -0
- package/dist/commands/memory/configure.js.map +1 -0
- package/dist/commands/memory/health.d.ts +3 -0
- package/dist/commands/memory/health.d.ts.map +1 -0
- package/dist/commands/memory/health.js +5 -0
- package/dist/commands/memory/health.js.map +1 -0
- package/dist/commands/memory/init.d.ts +8 -0
- package/dist/commands/memory/init.d.ts.map +1 -0
- package/dist/commands/memory/init.js +65 -0
- package/dist/commands/memory/init.js.map +1 -0
- package/dist/commands/memory/org.d.ts +7 -0
- package/dist/commands/memory/org.d.ts.map +1 -0
- package/dist/commands/memory/org.js +22 -0
- package/dist/commands/memory/org.js.map +1 -0
- package/dist/commands/memory/run.d.ts +8 -0
- package/dist/commands/memory/run.d.ts.map +1 -0
- package/dist/commands/memory/run.js +58 -0
- package/dist/commands/memory/run.js.map +1 -0
- package/dist/commands/memory/seed.d.ts +3 -0
- package/dist/commands/memory/seed.d.ts.map +1 -0
- package/dist/commands/memory/seed.js +5 -0
- package/dist/commands/memory/seed.js.map +1 -0
- package/dist/commands/org.d.ts +10 -0
- package/dist/commands/org.d.ts.map +1 -0
- package/dist/commands/org.js +34 -0
- package/dist/commands/org.js.map +1 -0
- package/dist/commands/{connections/platforms.d.ts → platforms/platform-prompts.d.ts} +5 -5
- package/dist/commands/platforms/platform-prompts.d.ts.map +1 -0
- package/dist/commands/{connections/platforms.js → platforms/platform-prompts.js} +24 -24
- package/dist/commands/platforms/platform-prompts.js.map +1 -0
- package/dist/commands/status.d.ts +4 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +15 -84
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/token.d.ts +17 -0
- package/dist/commands/token.d.ts.map +1 -0
- package/dist/commands/token.js +55 -0
- package/dist/commands/token.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +303 -88
- package/dist/index.js.map +1 -1
- package/dist/internal/__tests__/api-client.test.d.ts +2 -0
- package/dist/internal/__tests__/api-client.test.d.ts.map +1 -0
- package/dist/internal/__tests__/api-client.test.js +95 -0
- package/dist/internal/__tests__/api-client.test.js.map +1 -0
- package/dist/internal/__tests__/context.test.d.ts +2 -0
- package/dist/internal/__tests__/context.test.d.ts.map +1 -0
- package/dist/internal/__tests__/context.test.js +77 -0
- package/dist/internal/__tests__/context.test.js.map +1 -0
- package/dist/internal/api-client.d.ts +39 -0
- package/dist/internal/api-client.d.ts.map +1 -0
- package/dist/internal/api-client.js +217 -0
- package/dist/internal/api-client.js.map +1 -0
- package/dist/internal/context.d.ts +10 -1
- package/dist/internal/context.d.ts.map +1 -1
- package/dist/internal/context.js +109 -2
- package/dist/internal/context.js.map +1 -1
- package/dist/internal/credentials.d.ts +12 -2
- package/dist/internal/credentials.d.ts.map +1 -1
- package/dist/internal/credentials.js +47 -54
- package/dist/internal/credentials.js.map +1 -1
- package/dist/internal/gateway-url.d.ts +4 -4
- package/dist/internal/gateway-url.d.ts.map +1 -1
- package/dist/internal/gateway-url.js +6 -5
- package/dist/internal/gateway-url.js.map +1 -1
- package/dist/internal/index.d.ts +5 -3
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +3 -2
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/local-env.d.ts +2 -0
- package/dist/internal/local-env.d.ts.map +1 -0
- package/dist/internal/local-env.js +32 -0
- package/dist/internal/local-env.js.map +1 -0
- package/dist/internal/oauth.d.ts +82 -0
- package/dist/internal/oauth.d.ts.map +1 -0
- package/dist/internal/oauth.js +234 -0
- package/dist/internal/oauth.js.map +1 -0
- package/dist/server.bundle.mjs +72219 -0
- package/dist/templates/.env.tmpl +7 -3
- package/dist/templates/README.md.tmpl +20 -53
- package/package.json +60 -6
- package/dist/__tests__/skills.test.d.ts +0 -2
- package/dist/__tests__/skills.test.d.ts.map +0 -1
- package/dist/__tests__/skills.test.js +0 -33
- package/dist/__tests__/skills.test.js.map +0 -1
- package/dist/commands/connections/add.d.ts +0 -2
- package/dist/commands/connections/add.d.ts.map +0 -1
- package/dist/commands/connections/add.js +0 -46
- package/dist/commands/connections/add.js.map +0 -1
- package/dist/commands/connections/list.d.ts +0 -2
- package/dist/commands/connections/list.d.ts.map +0 -1
- package/dist/commands/connections/list.js +0 -25
- package/dist/commands/connections/list.js.map +0 -1
- package/dist/commands/connections/platforms.d.ts.map +0 -1
- package/dist/commands/connections/platforms.js.map +0 -1
- package/dist/commands/providers/add.d.ts +0 -2
- package/dist/commands/providers/add.d.ts.map +0 -1
- package/dist/commands/providers/add.js +0 -50
- package/dist/commands/providers/add.js.map +0 -1
- package/dist/commands/providers/list.d.ts +0 -2
- package/dist/commands/providers/list.d.ts.map +0 -1
- package/dist/commands/providers/list.js +0 -22
- package/dist/commands/providers/list.js.map +0 -1
- package/dist/commands/secrets.d.ts +0 -8
- package/dist/commands/secrets.d.ts.map +0 -1
- package/dist/commands/secrets.js +0 -98
- package/dist/commands/secrets.js.map +0 -1
- package/dist/commands/skills/add.d.ts +0 -5
- package/dist/commands/skills/add.d.ts.map +0 -1
- package/dist/commands/skills/add.js +0 -27
- package/dist/commands/skills/add.js.map +0 -1
- package/dist/commands/skills/list.d.ts +0 -2
- package/dist/commands/skills/list.d.ts.map +0 -1
- package/dist/commands/skills/list.js +0 -19
- package/dist/commands/skills/list.js.map +0 -1
- package/dist/commands/skills/registry.d.ts +0 -19
- package/dist/commands/skills/registry.d.ts.map +0 -1
- package/dist/commands/skills/registry.js +0 -76
- package/dist/commands/skills/registry.js.map +0 -1
- package/dist/config/agent-helpers.d.ts +0 -38
- package/dist/config/agent-helpers.d.ts.map +0 -1
- package/dist/config/agent-helpers.js +0 -58
- package/dist/config/agent-helpers.js.map +0 -1
- package/dist/templates/Dockerfile.worker.tmpl +0 -29
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { checkMemoryHealth } from "./memory/_lib/openclaw-cmd.js";
|
|
4
|
+
import { resolveServerUrl } from "./memory/_lib/openclaw-auth.js";
|
|
5
|
+
function checkBinaryExists(name) {
|
|
6
|
+
const cmd = process.platform === "win32" ? "where" : "which";
|
|
7
|
+
try {
|
|
8
|
+
const out = execFileSync(cmd, [name], {
|
|
9
|
+
encoding: "utf-8",
|
|
10
|
+
timeout: 5000,
|
|
11
|
+
}).trim();
|
|
12
|
+
const first = out.split("\n")[0]?.trim();
|
|
13
|
+
if (!first)
|
|
14
|
+
return { name, status: "fail", detail: "not found" };
|
|
15
|
+
return { name, status: "ok", detail: first };
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return { name, status: "fail", detail: "not found" };
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function checkNodeVersion() {
|
|
22
|
+
const version = process.version;
|
|
23
|
+
const major = Number.parseInt(version.slice(1), 10);
|
|
24
|
+
return {
|
|
25
|
+
name: "node",
|
|
26
|
+
status: major >= 22 ? "ok" : "warn",
|
|
27
|
+
detail: version,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
async function checkServerReachable(url) {
|
|
31
|
+
const origin = new URL(url).origin;
|
|
32
|
+
try {
|
|
33
|
+
const controller = new AbortController();
|
|
34
|
+
const timer = setTimeout(() => controller.abort(), 5000);
|
|
35
|
+
const res = await fetch(origin, { signal: controller.signal });
|
|
36
|
+
clearTimeout(timer);
|
|
37
|
+
return {
|
|
38
|
+
name: "server",
|
|
39
|
+
status: res.ok ? "ok" : "warn",
|
|
40
|
+
detail: `${res.status} ${origin}`,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return { name: "server", status: "fail", detail: `unreachable: ${origin}` };
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export async function doctorCommand(options = {}) {
|
|
48
|
+
if (options.memoryOnly) {
|
|
49
|
+
await checkMemoryHealth();
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const checks = [];
|
|
53
|
+
checks.push(checkNodeVersion());
|
|
54
|
+
checks.push(checkBinaryExists("git"));
|
|
55
|
+
const serverUrl = await resolveServerUrl();
|
|
56
|
+
if (serverUrl)
|
|
57
|
+
checks.push(await checkServerReachable(serverUrl));
|
|
58
|
+
const icons = {
|
|
59
|
+
ok: chalk.green("✓"),
|
|
60
|
+
warn: chalk.yellow("!"),
|
|
61
|
+
fail: chalk.red("✗"),
|
|
62
|
+
};
|
|
63
|
+
for (const c of checks) {
|
|
64
|
+
console.log(` ${icons[c.status]} ${chalk.bold(c.name)}: ${chalk.dim(c.detail)}`);
|
|
65
|
+
}
|
|
66
|
+
const fails = checks.filter((c) => c.status === "fail");
|
|
67
|
+
if (fails.length > 0) {
|
|
68
|
+
console.log(`\n${fails.length} issue(s) found.`);
|
|
69
|
+
process.exitCode = 1;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
console.log(`\n${chalk.green("All checks passed.")}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/eval.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/commands/eval.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/commands/eval.ts"],"names":[],"mappings":"AAqBA,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,IAAI,CAAC,CAgMf"}
|
package/dist/commands/eval.js
CHANGED
|
@@ -2,7 +2,7 @@ import { readFile } from "node:fs/promises";
|
|
|
2
2
|
import { basename, join } from "node:path";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import { parse as parseYaml } from "yaml";
|
|
5
|
-
import { getToken, resolveGatewayUrl } from "../internal/index.js";
|
|
5
|
+
import { apiBaseFromContextUrl, getToken, resolveContext, resolveGatewayUrl, } from "../internal/index.js";
|
|
6
6
|
import { isLoadError, loadConfig } from "../config/loader.js";
|
|
7
7
|
import { CURRENT_EVAL_VERSION, evalDefinitionSchema } from "../eval/types.js";
|
|
8
8
|
import { runEval } from "../eval/runner.js";
|
|
@@ -72,10 +72,13 @@ export async function evalCommand(cwd, name, options) {
|
|
|
72
72
|
return;
|
|
73
73
|
}
|
|
74
74
|
// Auth and gateway required from here (not needed for --list)
|
|
75
|
-
const gatewayUrl = (options.gateway ??
|
|
76
|
-
|
|
75
|
+
const gatewayUrl = (options.gateway ??
|
|
76
|
+
(options.context
|
|
77
|
+
? apiBaseFromContextUrl((await resolveContext(options.context)).apiUrl)
|
|
78
|
+
: await resolveGatewayUrl({ cwd }))).replace(/\/$/, "");
|
|
79
|
+
const authToken = await getToken(options.context);
|
|
77
80
|
if (!authToken) {
|
|
78
|
-
console.error(chalk.red("\n Authentication required. Run `lobu login
|
|
81
|
+
console.error(chalk.red("\n Authentication required. Run `lobu login`.\n"));
|
|
79
82
|
process.exit(1);
|
|
80
83
|
}
|
|
81
84
|
// Parse eval definitions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eval.js","sourceRoot":"","sources":["../../src/commands/eval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"eval.js","sourceRoot":"","sources":["../../src/commands/eval.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -5,18 +5,11 @@ export declare function generateLobuToml(projectDir: string, options: {
|
|
|
5
5
|
providerId?: string;
|
|
6
6
|
providerEnvVar?: string;
|
|
7
7
|
providerModel?: string;
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
platformType?: string;
|
|
9
|
+
platformConfig?: Record<string, string>;
|
|
10
10
|
includeOwlettoMemory?: boolean;
|
|
11
11
|
owlettoOrg?: string;
|
|
12
12
|
owlettoName?: string;
|
|
13
13
|
owlettoDescription?: string;
|
|
14
14
|
}): Promise<void>;
|
|
15
|
-
export declare function generateDockerCompose(options: {
|
|
16
|
-
projectName: string;
|
|
17
|
-
gatewayPort: string;
|
|
18
|
-
dockerfilePath: string;
|
|
19
|
-
deploymentMode: "embedded" | "docker";
|
|
20
|
-
includeOwlettoLocal?: boolean;
|
|
21
|
-
}): string;
|
|
22
15
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAkBA,wBAAsB,WAAW,CAC/B,GAAG,GAAE,MAAsB,EAC3B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC,CA+bf;AAUD,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IACP,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,GACA,OAAO,CAAC,IAAI,CAAC,CAqGf"}
|
package/dist/commands/init.js
CHANGED
|
@@ -5,12 +5,11 @@ import { join } from "node:path";
|
|
|
5
5
|
import { confirm, input, password, select } from "@inquirer/prompts";
|
|
6
6
|
import chalk from "chalk";
|
|
7
7
|
import ora from "ora";
|
|
8
|
-
import { promptPlatformConfig } from "../commands/
|
|
9
|
-
import {
|
|
8
|
+
import { promptPlatformConfig } from "../commands/platforms/platform-prompts.js";
|
|
9
|
+
import { setLocalEnvValue } from "../internal/local-env.js";
|
|
10
10
|
import { getProviderById, loadProviderRegistry, } from "../commands/providers/registry.js";
|
|
11
11
|
import { renderTemplate } from "../utils/template.js";
|
|
12
|
-
const DEFAULT_OWLETTO_MCP_URL = "https://
|
|
13
|
-
const LOCAL_OWLETTO_MCP_URL = "http://owletto:8787/mcp";
|
|
12
|
+
const DEFAULT_OWLETTO_MCP_URL = "https://lobu.ai/mcp";
|
|
14
13
|
export async function initCommand(cwd = process.cwd(), projectNameArg) {
|
|
15
14
|
console.log(chalk.bold.cyan("\n🤖 Welcome to Lobu!\n"));
|
|
16
15
|
// Get CLI version
|
|
@@ -43,25 +42,10 @@ export async function initCommand(cwd = process.cwd(), projectNameArg) {
|
|
|
43
42
|
await mkdir(projectDir, { recursive: true });
|
|
44
43
|
console.log(chalk.dim(`\nCreating project in: ${chalk.cyan(projectDir)}\n`));
|
|
45
44
|
}
|
|
46
|
-
// Deployment mode selection
|
|
47
|
-
const deploymentMode = await select({
|
|
48
|
-
message: "How should workers run?",
|
|
49
|
-
choices: [
|
|
50
|
-
{
|
|
51
|
-
name: "Embedded — virtual bash & filesystem, no package installs, lower resource usage",
|
|
52
|
-
value: "embedded",
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
name: "Docker — isolated containers per user, full OS access, heavier but more capable",
|
|
56
|
-
value: "docker",
|
|
57
|
-
},
|
|
58
|
-
],
|
|
59
|
-
default: "embedded",
|
|
60
|
-
});
|
|
61
45
|
// Gateway port selection
|
|
62
46
|
const gatewayPort = await input({
|
|
63
47
|
message: "Gateway port?",
|
|
64
|
-
default: "
|
|
48
|
+
default: "8787",
|
|
65
49
|
validate: (value) => {
|
|
66
50
|
const port = Number(value);
|
|
67
51
|
if (!Number.isInteger(port) || port < 1 || port > 65535) {
|
|
@@ -75,17 +59,6 @@ export async function initCommand(cwd = process.cwd(), projectNameArg) {
|
|
|
75
59
|
message: "Public gateway URL? (leave empty for local dev, set for OAuth/webhooks)",
|
|
76
60
|
default: "",
|
|
77
61
|
});
|
|
78
|
-
// Admin password
|
|
79
|
-
const adminPassword = await password({
|
|
80
|
-
message: "Admin password?",
|
|
81
|
-
mask: true,
|
|
82
|
-
validate: (value) => {
|
|
83
|
-
if (!value || value.length < 4) {
|
|
84
|
-
return "Password must be at least 4 characters";
|
|
85
|
-
}
|
|
86
|
-
return true;
|
|
87
|
-
},
|
|
88
|
-
});
|
|
89
62
|
// Worker network access policy
|
|
90
63
|
const networkPolicy = await select({
|
|
91
64
|
message: "Worker network access?",
|
|
@@ -133,7 +106,7 @@ export async function initCommand(cwd = process.cwd(), projectNameArg) {
|
|
|
133
106
|
}
|
|
134
107
|
// Define skills locally via skills/<name>/SKILL.md or
|
|
135
108
|
// agents/<id>/skills/<name>/SKILL.md.
|
|
136
|
-
//
|
|
109
|
+
// Chat platform selection
|
|
137
110
|
const platformChoices = [
|
|
138
111
|
{ name: "Skip — I'll connect a platform later", value: "" },
|
|
139
112
|
{ name: "Telegram", value: "telegram" },
|
|
@@ -144,47 +117,29 @@ export async function initCommand(cwd = process.cwd(), projectNameArg) {
|
|
|
144
117
|
{ name: "Google Chat", value: "gchat" },
|
|
145
118
|
];
|
|
146
119
|
const platformType = await select({
|
|
147
|
-
message: "Connect a
|
|
120
|
+
message: "Connect a chat platform?",
|
|
148
121
|
choices: platformChoices,
|
|
149
122
|
default: "",
|
|
150
123
|
});
|
|
151
|
-
const {
|
|
124
|
+
const { platformConfig, platformSecrets } = platformType
|
|
152
125
|
? await promptPlatformConfig(platformType)
|
|
153
|
-
: {
|
|
126
|
+
: { platformConfig: {}, platformSecrets: [] };
|
|
154
127
|
// Memory
|
|
155
128
|
const memoryChoice = await select({
|
|
156
129
|
message: "Memory:",
|
|
157
130
|
choices: [
|
|
158
131
|
{ name: "None (filesystem memory)", value: "none" },
|
|
159
132
|
{ name: "Lobu Cloud (app.lobu.ai)", value: "owletto-cloud" },
|
|
160
|
-
{
|
|
161
|
-
name: "Lobu memory Local (runs alongside gateway)",
|
|
162
|
-
value: "owletto-local",
|
|
163
|
-
},
|
|
164
133
|
{ name: "Custom Lobu memory URL", value: "owletto-custom" },
|
|
165
134
|
],
|
|
166
135
|
default: "none",
|
|
167
136
|
});
|
|
168
137
|
const envSecrets = [];
|
|
169
138
|
const includeOwlettoMemory = memoryChoice !== "none";
|
|
170
|
-
let includeOwlettoLocal = false;
|
|
171
139
|
let owlettoUrl = "";
|
|
172
140
|
if (memoryChoice === "owletto-cloud") {
|
|
173
141
|
owlettoUrl = DEFAULT_OWLETTO_MCP_URL;
|
|
174
142
|
}
|
|
175
|
-
else if (memoryChoice === "owletto-local") {
|
|
176
|
-
includeOwlettoLocal = true;
|
|
177
|
-
owlettoUrl = LOCAL_OWLETTO_MCP_URL;
|
|
178
|
-
envSecrets.push({ envVar: "MEMORY_URL", value: owlettoUrl });
|
|
179
|
-
envSecrets.push({
|
|
180
|
-
envVar: "OWLETTO_AUTH_SECRET",
|
|
181
|
-
value: randomBytes(32).toString("hex"),
|
|
182
|
-
});
|
|
183
|
-
envSecrets.push({
|
|
184
|
-
envVar: "OWLETTO_DB_PASSWORD",
|
|
185
|
-
value: randomBytes(16).toString("hex"),
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
143
|
else if (memoryChoice === "owletto-custom") {
|
|
189
144
|
owlettoUrl = await input({
|
|
190
145
|
message: "Lobu memory MCP URL:",
|
|
@@ -192,7 +147,7 @@ export async function initCommand(cwd = process.cwd(), projectNameArg) {
|
|
|
192
147
|
});
|
|
193
148
|
envSecrets.push({ envVar: "MEMORY_URL", value: owlettoUrl });
|
|
194
149
|
}
|
|
195
|
-
// "none" — no
|
|
150
|
+
// "none" — no memory scaffold, gateway defaults to filesystem memory
|
|
196
151
|
// Observability — OTEL tracing endpoint
|
|
197
152
|
const otelEndpoint = await input({
|
|
198
153
|
message: "OpenTelemetry collector endpoint? (leave empty to disable tracing)",
|
|
@@ -243,13 +198,10 @@ export async function initCommand(cwd = process.cwd(), projectNameArg) {
|
|
|
243
198
|
}
|
|
244
199
|
const encryptionKey = randomBytes(32).toString("hex");
|
|
245
200
|
const answers = {
|
|
246
|
-
deploymentMode: deploymentMode,
|
|
247
201
|
encryptionKey,
|
|
248
202
|
allowedDomains,
|
|
249
203
|
disallowedDomains,
|
|
250
204
|
};
|
|
251
|
-
// docker-compose.yml will be created in new directory, no need to check
|
|
252
|
-
const composeFilename = "docker-compose.yml";
|
|
253
205
|
const spinner = ora("Creating Lobu project...").start();
|
|
254
206
|
try {
|
|
255
207
|
// Create data directory in project directory
|
|
@@ -271,8 +223,8 @@ export async function initCommand(cwd = process.cwd(), projectNameArg) {
|
|
|
271
223
|
providerId: providerId || undefined,
|
|
272
224
|
providerEnvVar: selectedProvider?.providers?.[0]?.envVarName,
|
|
273
225
|
providerModel: selectedProvider?.providers?.[0]?.defaultModel,
|
|
274
|
-
|
|
275
|
-
|
|
226
|
+
platformType: platformType || undefined,
|
|
227
|
+
platformConfig: Object.keys(platformConfig).length > 0 ? platformConfig : undefined,
|
|
276
228
|
includeOwlettoMemory,
|
|
277
229
|
owlettoOrg: includeOwlettoMemory ? projectName : undefined,
|
|
278
230
|
owlettoName: includeOwlettoMemory ? humanizeSlug(projectName) : undefined,
|
|
@@ -280,8 +232,6 @@ export async function initCommand(cwd = process.cwd(), projectNameArg) {
|
|
|
280
232
|
const variables = {
|
|
281
233
|
PROJECT_NAME: projectName,
|
|
282
234
|
CLI_VERSION: cliVersion,
|
|
283
|
-
DEPLOYMENT_MODE: answers.deploymentMode,
|
|
284
|
-
ADMIN_PASSWORD: adminPassword,
|
|
285
235
|
ENCRYPTION_KEY: answers.encryptionKey,
|
|
286
236
|
GATEWAY_PORT: gatewayPort,
|
|
287
237
|
WORKER_ALLOWED_DOMAINS: answers.allowedDomains,
|
|
@@ -291,19 +241,19 @@ export async function initCommand(cwd = process.cwd(), projectNameArg) {
|
|
|
291
241
|
await renderTemplate(".env.tmpl", variables, join(projectDir, ".env"));
|
|
292
242
|
// Save public gateway URL if explicitly set
|
|
293
243
|
if (publicGatewayUrl) {
|
|
294
|
-
await
|
|
244
|
+
await setLocalEnvValue(projectDir, "PUBLIC_GATEWAY_URL", publicGatewayUrl);
|
|
295
245
|
}
|
|
296
246
|
// Save provider API key to .env
|
|
297
247
|
if (providerApiKey && selectedProvider?.providers?.[0]?.envVarName) {
|
|
298
|
-
await
|
|
248
|
+
await setLocalEnvValue(projectDir, selectedProvider.providers[0].envVarName, providerApiKey);
|
|
299
249
|
}
|
|
300
|
-
// Save
|
|
301
|
-
for (const secret of
|
|
302
|
-
await
|
|
250
|
+
// Save platform secrets to .env
|
|
251
|
+
for (const secret of platformSecrets) {
|
|
252
|
+
await setLocalEnvValue(projectDir, secret.envVar, secret.value);
|
|
303
253
|
}
|
|
304
254
|
// Save OAuth secrets to .env
|
|
305
255
|
for (const secret of envSecrets) {
|
|
306
|
-
await
|
|
256
|
+
await setLocalEnvValue(projectDir, secret.envVar, secret.value);
|
|
307
257
|
}
|
|
308
258
|
// Create .gitignore
|
|
309
259
|
await renderTemplate(".gitignore.tmpl", {}, join(projectDir, ".gitignore"));
|
|
@@ -345,19 +295,6 @@ turns:
|
|
|
345
295
|
await renderTemplate("AGENTS.md.tmpl", variables, join(projectDir, "AGENTS.md"));
|
|
346
296
|
// Create TESTING.md
|
|
347
297
|
await renderTemplate("TESTING.md.tmpl", variables, join(projectDir, "TESTING.md"));
|
|
348
|
-
if (answers.deploymentMode === "docker") {
|
|
349
|
-
// Create Dockerfile.worker for docker mode
|
|
350
|
-
await renderTemplate("Dockerfile.worker.tmpl", variables, join(projectDir, "Dockerfile.worker"));
|
|
351
|
-
}
|
|
352
|
-
// Always generate docker-compose.yml (Redis is needed for all modes)
|
|
353
|
-
const composeContent = generateDockerCompose({
|
|
354
|
-
projectName,
|
|
355
|
-
gatewayPort,
|
|
356
|
-
dockerfilePath: "./Dockerfile.worker",
|
|
357
|
-
deploymentMode: answers.deploymentMode,
|
|
358
|
-
includeOwlettoLocal,
|
|
359
|
-
});
|
|
360
|
-
await writeFile(join(projectDir, composeFilename), composeContent);
|
|
361
298
|
spinner.succeed("Project created successfully!");
|
|
362
299
|
// Print next steps
|
|
363
300
|
console.log(chalk.green("\n✓ Lobu initialized!\n"));
|
|
@@ -369,38 +306,29 @@ turns:
|
|
|
369
306
|
console.log(chalk.dim(` - agents/${projectName}/ (IDENTITY.md, SOUL.md, USER.md, skills/)`));
|
|
370
307
|
console.log(chalk.dim(" - skills/ (shared skills — all agents)"));
|
|
371
308
|
if (includeOwlettoMemory) {
|
|
372
|
-
console.log(chalk.dim(" - models/ (
|
|
373
|
-
console.log(chalk.dim(" - data/ (
|
|
309
|
+
console.log(chalk.dim(" - models/ (memory model files)"));
|
|
310
|
+
console.log(chalk.dim(" - data/ (memory seed data)"));
|
|
374
311
|
}
|
|
375
312
|
console.log(chalk.dim(" - .env (secrets)"));
|
|
376
|
-
console.log(chalk.dim(` - ${composeFilename}`));
|
|
377
|
-
if (answers.deploymentMode === "docker") {
|
|
378
|
-
console.log(chalk.dim(" - Dockerfile.worker"));
|
|
379
|
-
}
|
|
380
313
|
console.log();
|
|
381
314
|
const gatewayUrl = `http://localhost:${gatewayPort}`;
|
|
315
|
+
console.log(chalk.cyan(" 3. Set DATABASE_URL in .env:"));
|
|
316
|
+
console.log(chalk.dim(" Lobu connects to a user-provided Postgres. Run one yourself"));
|
|
317
|
+
console.log(chalk.dim(" (managed instance or local: e.g. `brew services start postgresql`)\n"));
|
|
382
318
|
if (owlettoUrl) {
|
|
383
|
-
const displayUrl = includeOwlettoLocal
|
|
384
|
-
? "http://localhost:8787"
|
|
385
|
-
: owlettoUrl;
|
|
386
319
|
console.log(chalk.cyan(" Lobu memory:"));
|
|
387
|
-
console.log(chalk.dim(` ${
|
|
388
|
-
|
|
389
|
-
console.log(chalk.cyan(" 3. Start the services:"));
|
|
390
|
-
console.log(chalk.dim(" npx @lobu/cli@latest run -d\n"));
|
|
391
|
-
if (includeOwlettoLocal) {
|
|
392
|
-
console.log(chalk.cyan(" 4. Set up Lobu memory (first run):"));
|
|
393
|
-
console.log(chalk.dim(" Visit http://localhost:8787 to create your account\n"));
|
|
320
|
+
console.log(chalk.dim(` ${owlettoUrl}`));
|
|
321
|
+
console.log(chalk.dim(" Run `lobu memory init` to configure local MCP clients.\n"));
|
|
394
322
|
}
|
|
395
|
-
console.log(chalk.cyan(
|
|
323
|
+
console.log(chalk.cyan(" 4. Start the services:"));
|
|
324
|
+
console.log(chalk.dim(" npx @lobu/cli@latest run\n"));
|
|
325
|
+
console.log(chalk.cyan(" 5. Open the API docs:"));
|
|
396
326
|
console.log(chalk.dim(` ${gatewayUrl}/api/docs\n`));
|
|
397
|
-
console.log(chalk.cyan(
|
|
327
|
+
console.log(chalk.cyan(" 6. Build with a coding agent:"));
|
|
398
328
|
console.log(chalk.dim(" Ask Codex or Claude Code to read AGENTS.md, lobu.toml, and agents/*/{IDENTITY,SOUL,USER}.md"));
|
|
399
329
|
console.log(chalk.dim(" Optional external skill: lobu-builder\n"));
|
|
400
|
-
console.log(chalk.cyan(
|
|
401
|
-
console.log(chalk.dim("
|
|
402
|
-
console.log(chalk.cyan(` ${includeOwlettoLocal ? "8" : "7"}. Stop the services:`));
|
|
403
|
-
console.log(chalk.dim(" docker compose down\n"));
|
|
330
|
+
console.log(chalk.cyan(" 7. Stop the services:"));
|
|
331
|
+
console.log(chalk.dim(" Ctrl+C in the terminal running `lobu run`\n"));
|
|
404
332
|
}
|
|
405
333
|
catch (error) {
|
|
406
334
|
spinner.fail("Failed to create project");
|
|
@@ -438,15 +366,15 @@ export async function generateLobuToml(projectDir, options) {
|
|
|
438
366
|
lines.push("# Add providers via the gateway configuration APIs or uncomment below:", `# [[agents.${id}.providers]]`, '# id = "anthropic"', '# key = "$ANTHROPIC_API_KEY"');
|
|
439
367
|
}
|
|
440
368
|
lines.push("");
|
|
441
|
-
if (options.
|
|
442
|
-
lines.push(`[[agents.${id}.
|
|
443
|
-
lines.push(`[agents.${id}.
|
|
444
|
-
for (const [key, value] of Object.entries(options.
|
|
369
|
+
if (options.platformType && options.platformConfig) {
|
|
370
|
+
lines.push(`[[agents.${id}.platforms]]`, `type = "${options.platformType}"`);
|
|
371
|
+
lines.push(`[agents.${id}.platforms.config]`);
|
|
372
|
+
for (const [key, value] of Object.entries(options.platformConfig)) {
|
|
445
373
|
lines.push(`${key} = "${value}"`);
|
|
446
374
|
}
|
|
447
375
|
}
|
|
448
376
|
else {
|
|
449
|
-
lines.push("#
|
|
377
|
+
lines.push("# Chat platform (add via the gateway configuration APIs or uncomment below):", `# [[agents.${id}.platforms]]`, '# type = "telegram"', `# [agents.${id}.platforms.config]`, '# botToken = "$TELEGRAM_BOT_TOKEN"');
|
|
450
378
|
}
|
|
451
379
|
lines.push("", "# Local skills live in skills/<name>/SKILL.md or agents/<id>/skills/<name>/SKILL.md", `[agents.${id}.skills]`, "", "# MCP servers (add custom tool servers with optional OAuth):", `# [agents.${id}.skills.mcp.my-mcp]`, '# url = "https://my-mcp.example.com"', `# [agents.${id}.skills.mcp.my-mcp.oauth]`, '# auth_url = "https://auth.example.com/authorize"', '# token_url = "https://auth.example.com/token"', '# client_id = "$MY_MCP_CLIENT_ID"');
|
|
452
380
|
// Network
|
|
@@ -477,146 +405,4 @@ async function getCliVersion() {
|
|
|
477
405
|
const pkg = JSON.parse(pkgContent);
|
|
478
406
|
return pkg.version || "0.1.0";
|
|
479
407
|
}
|
|
480
|
-
export function generateDockerCompose(options) {
|
|
481
|
-
const { projectName, gatewayPort, deploymentMode, includeOwlettoLocal } = options;
|
|
482
|
-
const gatewayImage = `ghcr.io/lobu-ai/lobu-gateway:latest`;
|
|
483
|
-
const workerImage = `ghcr.io/lobu-ai/lobu-worker-base:latest`;
|
|
484
|
-
const dockerSocketMount = deploymentMode === "docker"
|
|
485
|
-
? `
|
|
486
|
-
- /var/run/docker.sock:/var/run/docker.sock`
|
|
487
|
-
: "";
|
|
488
|
-
const workerImageEnv = deploymentMode === "docker"
|
|
489
|
-
? `
|
|
490
|
-
WORKER_IMAGE: ${workerImage}`
|
|
491
|
-
: "";
|
|
492
|
-
const proxyPort = deploymentMode === "docker"
|
|
493
|
-
? `
|
|
494
|
-
- "127.0.0.1:8118:8118" # HTTP proxy for workers`
|
|
495
|
-
: "";
|
|
496
|
-
const owlettoServices = includeOwlettoLocal
|
|
497
|
-
? `
|
|
498
|
-
owletto-postgres:
|
|
499
|
-
image: pgvector/pgvector:pg17
|
|
500
|
-
environment:
|
|
501
|
-
POSTGRES_USER: owletto
|
|
502
|
-
POSTGRES_PASSWORD: \${OWLETTO_DB_PASSWORD}
|
|
503
|
-
POSTGRES_DB: owletto
|
|
504
|
-
volumes:
|
|
505
|
-
- owletto-pgdata:/var/lib/postgresql/data
|
|
506
|
-
healthcheck:
|
|
507
|
-
test: ["CMD-SHELL", "pg_isready -U owletto -d owletto"]
|
|
508
|
-
interval: 10s
|
|
509
|
-
timeout: 3s
|
|
510
|
-
retries: 5
|
|
511
|
-
networks:
|
|
512
|
-
- lobu-internal
|
|
513
|
-
restart: unless-stopped
|
|
514
|
-
|
|
515
|
-
owletto:
|
|
516
|
-
image: ghcr.io/lobu-ai/owletto-app:latest
|
|
517
|
-
pull_policy: always
|
|
518
|
-
ports:
|
|
519
|
-
- "127.0.0.1:8787:8787"
|
|
520
|
-
environment:
|
|
521
|
-
DATABASE_URL: postgresql://owletto:\${OWLETTO_DB_PASSWORD}@owletto-postgres:5432/owletto
|
|
522
|
-
BETTER_AUTH_SECRET: \${OWLETTO_AUTH_SECRET}
|
|
523
|
-
PORT: "8787"
|
|
524
|
-
HOST: 0.0.0.0
|
|
525
|
-
networks:
|
|
526
|
-
- lobu-internal
|
|
527
|
-
depends_on:
|
|
528
|
-
owletto-postgres:
|
|
529
|
-
condition: service_healthy
|
|
530
|
-
healthcheck:
|
|
531
|
-
test: ["CMD-SHELL", "curl -f http://127.0.0.1:8787/health || exit 1"]
|
|
532
|
-
interval: 10s
|
|
533
|
-
timeout: 10s
|
|
534
|
-
retries: 10
|
|
535
|
-
start_period: 20s
|
|
536
|
-
restart: unless-stopped
|
|
537
|
-
`
|
|
538
|
-
: "";
|
|
539
|
-
const owlettoDependsOn = includeOwlettoLocal
|
|
540
|
-
? `
|
|
541
|
-
owletto:
|
|
542
|
-
condition: service_healthy`
|
|
543
|
-
: "";
|
|
544
|
-
const owlettoVolumes = includeOwlettoLocal
|
|
545
|
-
? `
|
|
546
|
-
volumes:
|
|
547
|
-
owletto-pgdata:
|
|
548
|
-
`
|
|
549
|
-
: "";
|
|
550
|
-
return `# Generated by @lobu/cli
|
|
551
|
-
# Deployment mode: ${deploymentMode}
|
|
552
|
-
|
|
553
|
-
name: ${projectName}
|
|
554
|
-
|
|
555
|
-
services:
|
|
556
|
-
redis:
|
|
557
|
-
image: redis:7-alpine
|
|
558
|
-
command: redis-server --maxmemory 256mb --maxmemory-policy noeviction --save 60 1 --dir /data
|
|
559
|
-
working_dir: /tmp
|
|
560
|
-
volumes:
|
|
561
|
-
- ./data:/data
|
|
562
|
-
healthcheck:
|
|
563
|
-
test: ["CMD", "redis-cli", "ping"]
|
|
564
|
-
interval: 10s
|
|
565
|
-
timeout: 3s
|
|
566
|
-
retries: 3
|
|
567
|
-
networks:
|
|
568
|
-
- lobu-internal
|
|
569
|
-
restart: unless-stopped
|
|
570
|
-
${owlettoServices}
|
|
571
|
-
gateway:
|
|
572
|
-
image: ${gatewayImage}
|
|
573
|
-
pull_policy: always
|
|
574
|
-
ports:
|
|
575
|
-
- "127.0.0.1:\${GATEWAY_PORT:-${gatewayPort}}:8080"${proxyPort}
|
|
576
|
-
environment:
|
|
577
|
-
DEPLOYMENT_MODE: ${deploymentMode}${workerImageEnv}
|
|
578
|
-
QUEUE_URL: redis://redis:6379/0
|
|
579
|
-
PUBLIC_GATEWAY_URL: \${PUBLIC_GATEWAY_URL:-}
|
|
580
|
-
GATEWAY_PORT: \${GATEWAY_PORT:-${gatewayPort}}
|
|
581
|
-
NODE_ENV: production
|
|
582
|
-
COMPOSE_PROJECT_NAME: ${projectName}
|
|
583
|
-
ADMIN_PASSWORD: \${ADMIN_PASSWORD}
|
|
584
|
-
ENCRYPTION_KEY: \${ENCRYPTION_KEY}
|
|
585
|
-
WORKER_ALLOWED_DOMAINS: \${WORKER_ALLOWED_DOMAINS:-}
|
|
586
|
-
WORKER_DISALLOWED_DOMAINS: \${WORKER_DISALLOWED_DOMAINS:-}
|
|
587
|
-
# Optional Lobu memory base MCP URL override. File-first projects derive scoped
|
|
588
|
-
# memory from [memory.owletto] in lobu.toml.
|
|
589
|
-
MEMORY_URL: \${MEMORY_URL:-}
|
|
590
|
-
LOBU_WORKSPACE_ROOT: /workspace/project
|
|
591
|
-
# Provider API keys — passthrough any that are set in the host env so
|
|
592
|
-
# agents can reference them as \`$VAR\` in lobu.toml. Unset vars expand
|
|
593
|
-
# to empty strings and are ignored by the agent runtime.
|
|
594
|
-
ANTHROPIC_API_KEY: \${ANTHROPIC_API_KEY:-}
|
|
595
|
-
GEMINI_API_KEY: \${GEMINI_API_KEY:-}
|
|
596
|
-
OPENAI_API_KEY: \${OPENAI_API_KEY:-}
|
|
597
|
-
OPENROUTER_API_KEY: \${OPENROUTER_API_KEY:-}
|
|
598
|
-
Z_AI_API_KEY: \${Z_AI_API_KEY:-}
|
|
599
|
-
# Platform credentials — same pattern: set only the ones your agents use.
|
|
600
|
-
SLACK_BOT_TOKEN: \${SLACK_BOT_TOKEN:-}
|
|
601
|
-
SLACK_SIGNING_SECRET: \${SLACK_SIGNING_SECRET:-}
|
|
602
|
-
TELEGRAM_BOT_TOKEN: \${TELEGRAM_BOT_TOKEN:-}
|
|
603
|
-
volumes:${dockerSocketMount}
|
|
604
|
-
- .:/workspace/project:ro
|
|
605
|
-
networks:
|
|
606
|
-
- lobu-public
|
|
607
|
-
- lobu-internal
|
|
608
|
-
depends_on:
|
|
609
|
-
redis:
|
|
610
|
-
condition: service_healthy${owlettoDependsOn}
|
|
611
|
-
restart: unless-stopped
|
|
612
|
-
|
|
613
|
-
networks:
|
|
614
|
-
lobu-public:
|
|
615
|
-
driver: bridge
|
|
616
|
-
lobu-internal:
|
|
617
|
-
internal: true
|
|
618
|
-
driver: bridge
|
|
619
|
-
${owlettoVolumes}
|
|
620
|
-
`;
|
|
621
|
-
}
|
|
622
408
|
//# sourceMappingURL=init.js.map
|