@lobu/cli 3.0.4 → 3.0.5
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 +17 -221
- package/dist/api/context.d.ts +0 -2
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +2 -2
- package/dist/api/context.js.map +1 -1
- package/dist/commands/chat.d.ts +7 -2
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +111 -25
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/dev.d.ts +3 -2
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +17 -165
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +132 -59
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/skills/info.d.ts.map +1 -1
- package/dist/commands/skills/info.js +0 -9
- package/dist/commands/skills/info.js.map +1 -1
- package/dist/commands/skills/list.d.ts.map +1 -1
- package/dist/commands/skills/list.js +5 -6
- package/dist/commands/skills/list.js.map +1 -1
- package/dist/commands/skills/registry.d.ts +1 -11
- package/dist/commands/skills/registry.d.ts.map +1 -1
- package/dist/commands/skills/registry.js +0 -3
- package/dist/commands/skills/registry.js.map +1 -1
- package/dist/commands/status.js +1 -1
- package/dist/config/loader.d.ts +0 -18
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +2 -62
- package/dist/config/loader.js.map +1 -1
- package/dist/index.js +8 -15
- package/dist/index.js.map +1 -1
- package/package.json +1 -2
- package/dist/__tests__/login.test.d.ts +0 -2
- package/dist/__tests__/login.test.d.ts.map +0 -1
- package/dist/__tests__/login.test.js +0 -173
- package/dist/__tests__/login.test.js.map +0 -1
- package/dist/api/client.d.ts +0 -11
- package/dist/api/client.d.ts.map +0 -1
- package/dist/api/client.js +0 -33
- package/dist/api/client.js.map +0 -1
- package/dist/commands/launch.d.ts +0 -6
- package/dist/commands/launch.d.ts.map +0 -1
- package/dist/commands/launch.js +0 -26
- package/dist/commands/launch.js.map +0 -1
- package/dist/config/agents-manifest.d.ts +0 -92
- package/dist/config/agents-manifest.d.ts.map +0 -1
- package/dist/config/agents-manifest.js +0 -7
- package/dist/config/agents-manifest.js.map +0 -1
- package/dist/config/platform-schemas.d.ts +0 -120
- package/dist/config/platform-schemas.d.ts.map +0 -1
- package/dist/config/platform-schemas.js +0 -97
- package/dist/config/platform-schemas.js.map +0 -1
- package/dist/config/transformer.d.ts +0 -14
- package/dist/config/transformer.d.ts.map +0 -1
- package/dist/config/transformer.js +0 -46
- package/dist/config/transformer.js.map +0 -1
- package/dist/mcp-servers.d.ts +0 -11
- package/dist/mcp-servers.d.ts.map +0 -1
- package/dist/mcp-servers.js +0 -27
- package/dist/mcp-servers.js.map +0 -1
- package/dist/mcp-servers.json +0 -216
- package/dist/system-skills.json +0 -621
- package/dist/templates/.env.tmpl +0 -18
- package/dist/templates/.gitignore.tmpl +0 -33
- package/dist/templates/AGENTS.md.tmpl +0 -1
- package/dist/templates/Dockerfile.worker.tmpl +0 -29
- package/dist/templates/README.md.tmpl +0 -94
- package/dist/templates/TESTING.md.tmpl +0 -225
- package/dist/types.d.ts +0 -76
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/utils/config.d.ts +0 -2
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js +0 -13
- package/dist/utils/config.js.map +0 -1
package/dist/commands/dev.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
-
import {
|
|
3
|
-
import { basename, join
|
|
2
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
3
|
+
import { basename, join } from "node:path";
|
|
4
4
|
import chalk from "chalk";
|
|
5
5
|
import ora from "ora";
|
|
6
|
-
import {
|
|
7
|
-
import { isLoadError, loadAgentMarkdown, loadConfig, loadSkillFiles, } from "../config/loader.js";
|
|
6
|
+
import { isLoadError, loadConfig } from "../config/loader.js";
|
|
8
7
|
/**
|
|
9
|
-
* `lobu
|
|
10
|
-
*
|
|
8
|
+
* `lobu run` — smart wrapper around `docker compose up`.
|
|
9
|
+
* Validates lobu.toml, seeds .env, then starts docker compose.
|
|
10
|
+
* The gateway reads lobu.toml directly from the mounted workspace.
|
|
11
11
|
*/
|
|
12
12
|
export async function devCommand(cwd, passthroughArgs) {
|
|
13
13
|
const result = await loadConfig(cwd);
|
|
@@ -24,9 +24,7 @@ export async function devCommand(cwd, passthroughArgs) {
|
|
|
24
24
|
const { config } = result;
|
|
25
25
|
const spinner = ora("Preparing local dev environment...").start();
|
|
26
26
|
try {
|
|
27
|
-
|
|
28
|
-
await mkdir(lobuDir, { recursive: true });
|
|
29
|
-
// Parse .env first so we can resolve $VAR references in lobu.toml
|
|
27
|
+
// Parse .env to merge derived vars
|
|
30
28
|
const envPath = join(cwd, ".env");
|
|
31
29
|
let existingEnv = "";
|
|
32
30
|
try {
|
|
@@ -36,8 +34,14 @@ export async function devCommand(cwd, passthroughArgs) {
|
|
|
36
34
|
// No existing .env, start fresh
|
|
37
35
|
}
|
|
38
36
|
const dotenvVars = parseEnvFile(existingEnv);
|
|
39
|
-
const
|
|
40
|
-
|
|
37
|
+
const agentCount = Object.keys(config.agents).length;
|
|
38
|
+
// Derive env vars (compose project name from first agent or directory name)
|
|
39
|
+
const firstAgent = Object.values(config.agents)[0];
|
|
40
|
+
const envVars = {
|
|
41
|
+
COMPOSE_PROJECT_NAME: firstAgent?.name
|
|
42
|
+
? firstAgent.name.toLowerCase().replace(/\s+/g, "-")
|
|
43
|
+
: basename(cwd),
|
|
44
|
+
};
|
|
41
45
|
// Merge derived vars into existing .env (preserves comments and formatting)
|
|
42
46
|
await mergeEnvFile(envPath, existingEnv, envVars);
|
|
43
47
|
spinner.succeed("Environment prepared from lobu.toml");
|
|
@@ -50,7 +54,7 @@ export async function devCommand(cwd, passthroughArgs) {
|
|
|
50
54
|
process.exit(1);
|
|
51
55
|
}
|
|
52
56
|
const fallbackPort = dotenvVars.GATEWAY_PORT || "8080";
|
|
53
|
-
console.log(chalk.cyan(`\n Starting ${
|
|
57
|
+
console.log(chalk.cyan(`\n Starting ${agentCount} agent(s)...\n`));
|
|
54
58
|
const explicitDetach = passthroughArgs.includes("-d") || passthroughArgs.includes("--detach");
|
|
55
59
|
// Always start detached so we can print the banner before logs
|
|
56
60
|
const upArgs = explicitDetach
|
|
@@ -77,7 +81,7 @@ export async function devCommand(cwd, passthroughArgs) {
|
|
|
77
81
|
const port = match ? match[1] : fallbackPort;
|
|
78
82
|
const gatewayUrl = `http://localhost:${port}`;
|
|
79
83
|
console.log(chalk.green("\n Lobu is running!\n"));
|
|
80
|
-
console.log(chalk.cyan(`
|
|
84
|
+
console.log(chalk.cyan(` API docs: ${gatewayUrl}/api/docs`));
|
|
81
85
|
console.log(chalk.dim(`\n Stop: docker compose down`));
|
|
82
86
|
if (explicitDetach) {
|
|
83
87
|
console.log(chalk.dim(` View logs: docker compose logs -f gateway\n`));
|
|
@@ -101,158 +105,6 @@ export async function devCommand(cwd, passthroughArgs) {
|
|
|
101
105
|
process.exit(1);
|
|
102
106
|
}
|
|
103
107
|
}
|
|
104
|
-
/**
|
|
105
|
-
* Build agents manifest and merged env vars from [agents.*] config.
|
|
106
|
-
*/
|
|
107
|
-
async function buildManifest(cwd, agents, dotenvVars) {
|
|
108
|
-
const entries = [];
|
|
109
|
-
const rootSkillsDir = join(cwd, "skills");
|
|
110
|
-
const registrySkills = new Map(loadSkillsRegistry().map((skill) => [skill.id, skill]));
|
|
111
|
-
for (const [agentId, agentConfig] of Object.entries(agents)) {
|
|
112
|
-
const agentDir = resolve(cwd, agentConfig.dir);
|
|
113
|
-
const markdown = await loadAgentMarkdown(agentDir);
|
|
114
|
-
const skillFiles = await loadSkillFiles([
|
|
115
|
-
rootSkillsDir,
|
|
116
|
-
join(agentDir, "skills"),
|
|
117
|
-
]);
|
|
118
|
-
const systemSkills = agentConfig.skills.enabled
|
|
119
|
-
.map((skillId) => registrySkills.get(skillId))
|
|
120
|
-
.filter((skill) => !!skill)
|
|
121
|
-
.map((skill) => ({
|
|
122
|
-
repo: `system/${skill.id}`,
|
|
123
|
-
name: skill.name,
|
|
124
|
-
description: skill.description,
|
|
125
|
-
enabled: true,
|
|
126
|
-
system: true,
|
|
127
|
-
content: "",
|
|
128
|
-
integrations: skill.integrations?.map((integration) => ({
|
|
129
|
-
id: integration.id,
|
|
130
|
-
label: integration.label,
|
|
131
|
-
authType: integration.authType,
|
|
132
|
-
scopesConfig: integration.scopesConfig,
|
|
133
|
-
apiDomains: integration.apiDomains,
|
|
134
|
-
})),
|
|
135
|
-
mcpServers: skill.mcpServers?.map((mcp) => ({
|
|
136
|
-
id: mcp.id,
|
|
137
|
-
name: mcp.name,
|
|
138
|
-
url: mcp.url,
|
|
139
|
-
type: mcp.type,
|
|
140
|
-
command: mcp.command,
|
|
141
|
-
args: mcp.args,
|
|
142
|
-
})),
|
|
143
|
-
nixPackages: skill.nixPackages,
|
|
144
|
-
permissions: skill.permissions,
|
|
145
|
-
providers: skill.providers?.length ? [skill.id] : undefined,
|
|
146
|
-
}));
|
|
147
|
-
const localSkills = skillFiles.map((skillFile) => ({
|
|
148
|
-
repo: `local/${skillFile.name}`,
|
|
149
|
-
name: skillFile.name,
|
|
150
|
-
content: skillFile.content,
|
|
151
|
-
enabled: true,
|
|
152
|
-
}));
|
|
153
|
-
const entry = {
|
|
154
|
-
agentId,
|
|
155
|
-
name: agentConfig.name,
|
|
156
|
-
description: agentConfig.description,
|
|
157
|
-
settings: { ...markdown },
|
|
158
|
-
};
|
|
159
|
-
if (agentConfig.providers.length > 0) {
|
|
160
|
-
entry.settings.installedProviders = agentConfig.providers.map((p) => ({
|
|
161
|
-
providerId: p.id,
|
|
162
|
-
}));
|
|
163
|
-
entry.settings.modelSelection = { mode: "auto" };
|
|
164
|
-
const providerModelPreferences = Object.fromEntries(agentConfig.providers
|
|
165
|
-
.filter((provider) => !!provider.model?.trim())
|
|
166
|
-
.map((provider) => [provider.id, provider.model.trim()]));
|
|
167
|
-
if (Object.keys(providerModelPreferences).length > 0) {
|
|
168
|
-
entry.settings.providerModelPreferences = providerModelPreferences;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
if (systemSkills.length > 0 || localSkills.length > 0) {
|
|
172
|
-
entry.settings.skillsConfig = {
|
|
173
|
-
skills: [...systemSkills, ...localSkills],
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
if (agentConfig.network) {
|
|
177
|
-
entry.settings.networkConfig = {
|
|
178
|
-
allowedDomains: agentConfig.network.allowed,
|
|
179
|
-
deniedDomains: agentConfig.network.denied,
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
if (agentConfig.worker?.nix_packages?.length) {
|
|
183
|
-
entry.settings.nixConfig = {
|
|
184
|
-
packages: agentConfig.worker.nix_packages,
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
if (agentConfig.skills.mcp) {
|
|
188
|
-
const mcpServers = {};
|
|
189
|
-
for (const [id, mcp] of Object.entries(agentConfig.skills.mcp)) {
|
|
190
|
-
const mapped = { ...mcp };
|
|
191
|
-
if (mcp.oauth) {
|
|
192
|
-
mapped.oauth = {
|
|
193
|
-
authUrl: mcp.oauth.auth_url,
|
|
194
|
-
tokenUrl: mcp.oauth.token_url,
|
|
195
|
-
clientId: resolveEnvVar(mcp.oauth.client_id || "", dotenvVars),
|
|
196
|
-
clientSecret: resolveEnvVar(mcp.oauth.client_secret || "", dotenvVars),
|
|
197
|
-
scopes: mcp.oauth.scopes,
|
|
198
|
-
tokenEndpointAuthMethod: mcp.oauth.token_endpoint_auth_method,
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
// Resolve env vars in MCP env block
|
|
202
|
-
if (mcp.env) {
|
|
203
|
-
mapped.env = Object.fromEntries(Object.entries(mcp.env).map(([k, v]) => [
|
|
204
|
-
k,
|
|
205
|
-
resolveEnvVar(v, dotenvVars),
|
|
206
|
-
]));
|
|
207
|
-
}
|
|
208
|
-
mcpServers[id] = mapped;
|
|
209
|
-
}
|
|
210
|
-
entry.settings.mcpServers = mcpServers;
|
|
211
|
-
}
|
|
212
|
-
// Resolve provider credentials from $ENV_VAR references
|
|
213
|
-
const credentials = agentConfig.providers
|
|
214
|
-
.filter((p) => p.key)
|
|
215
|
-
.map((p) => ({
|
|
216
|
-
providerId: p.id,
|
|
217
|
-
key: resolveEnvVar(p.key, dotenvVars),
|
|
218
|
-
}))
|
|
219
|
-
.filter((c) => c.key); // skip if env var not found
|
|
220
|
-
if (credentials.length > 0) {
|
|
221
|
-
entry.credentials = credentials;
|
|
222
|
-
}
|
|
223
|
-
// Resolve connection configs from $ENV_VAR references
|
|
224
|
-
const connections = agentConfig.connections
|
|
225
|
-
.map((conn) => ({
|
|
226
|
-
type: conn.type,
|
|
227
|
-
config: Object.fromEntries(Object.entries(conn.config).map(([k, v]) => [
|
|
228
|
-
k,
|
|
229
|
-
resolveEnvVar(v, dotenvVars),
|
|
230
|
-
])),
|
|
231
|
-
}))
|
|
232
|
-
.filter((conn) => Object.values(conn.config).every((v) => v !== "")); // skip if any env var missing
|
|
233
|
-
if (connections.length > 0) {
|
|
234
|
-
entry.connections = connections;
|
|
235
|
-
}
|
|
236
|
-
entries.push(entry);
|
|
237
|
-
}
|
|
238
|
-
const envVars = {
|
|
239
|
-
COMPOSE_PROJECT_NAME: entries[0]?.name
|
|
240
|
-
? entries[0].name.toLowerCase().replace(/\s+/g, "-")
|
|
241
|
-
: basename(cwd),
|
|
242
|
-
};
|
|
243
|
-
return { manifest: { version: 1, agents: entries }, envVars };
|
|
244
|
-
}
|
|
245
|
-
/**
|
|
246
|
-
* Resolve a value that may be a $ENV_VAR reference.
|
|
247
|
-
* Returns the resolved value, or empty string if the env var is not set.
|
|
248
|
-
*/
|
|
249
|
-
function resolveEnvVar(value, envVars) {
|
|
250
|
-
if (value.startsWith("$")) {
|
|
251
|
-
const varName = value.slice(1);
|
|
252
|
-
return envVars[varName] || process.env[varName] || "";
|
|
253
|
-
}
|
|
254
|
-
return value;
|
|
255
|
-
}
|
|
256
108
|
function parseEnvFile(content) {
|
|
257
109
|
const vars = {};
|
|
258
110
|
for (const line of content.split("\n")) {
|
package/dist/commands/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"AAeA,wBAAsB,WAAW,CAC/B,GAAG,GAAE,MAAsB,EAC3B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC,CA8iBf"}
|
package/dist/commands/init.js
CHANGED
|
@@ -5,8 +5,8 @@ import { join } from "node:path";
|
|
|
5
5
|
import chalk from "chalk";
|
|
6
6
|
import inquirer from "inquirer";
|
|
7
7
|
import ora from "ora";
|
|
8
|
-
import { isIntegrationSkill, isProviderSkill, loadSkillsRegistry, } from "../commands/skills/registry.js";
|
|
9
8
|
import { secretsSetCommand } from "../commands/secrets.js";
|
|
9
|
+
import { isProviderSkill, loadSkillsRegistry, } from "../commands/skills/registry.js";
|
|
10
10
|
import { renderTemplate } from "../utils/template.js";
|
|
11
11
|
export async function initCommand(cwd = process.cwd(), projectNameArg) {
|
|
12
12
|
console.log(chalk.bold.cyan("\n🤖 Welcome to Lobu!\n"));
|
|
@@ -163,19 +163,19 @@ export async function initCommand(cwd = process.cwd(), projectNameArg) {
|
|
|
163
163
|
providerApiKey = apiKey || "";
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
|
-
// Skills selection (
|
|
167
|
-
const
|
|
166
|
+
// Skills selection (system skills from registry, excluding provider-only skills)
|
|
167
|
+
const systemSkills = loadSkillsRegistry().filter((s) => !isProviderSkill(s) && !s.hidden);
|
|
168
168
|
const { skillIds } = await inquirer.prompt([
|
|
169
169
|
{
|
|
170
170
|
type: "checkbox",
|
|
171
171
|
name: "skillIds",
|
|
172
|
-
message: "Enable
|
|
173
|
-
choices:
|
|
172
|
+
message: "Enable skills?",
|
|
173
|
+
choices: systemSkills.map((s) => ({
|
|
174
174
|
name: `${s.name} — ${s.description}`,
|
|
175
175
|
value: s.id,
|
|
176
176
|
checked: s.id === "github",
|
|
177
177
|
})),
|
|
178
|
-
when:
|
|
178
|
+
when: systemSkills.length > 0,
|
|
179
179
|
},
|
|
180
180
|
]);
|
|
181
181
|
const selectedSkillIds = skillIds || [];
|
|
@@ -261,49 +261,57 @@ export async function initCommand(cwd = process.cwd(), projectNameArg) {
|
|
|
261
261
|
});
|
|
262
262
|
}
|
|
263
263
|
}
|
|
264
|
-
//
|
|
265
|
-
const {
|
|
264
|
+
// Memory
|
|
265
|
+
const { memoryChoice } = await inquirer.prompt([
|
|
266
266
|
{
|
|
267
|
-
type: "
|
|
268
|
-
name: "
|
|
269
|
-
message: "
|
|
270
|
-
|
|
267
|
+
type: "list",
|
|
268
|
+
name: "memoryChoice",
|
|
269
|
+
message: "Memory:",
|
|
270
|
+
choices: [
|
|
271
|
+
{ name: "None (filesystem memory)", value: "none" },
|
|
272
|
+
{ name: "Owletto Cloud (owletto.com)", value: "owletto-cloud" },
|
|
273
|
+
{
|
|
274
|
+
name: "Owletto Local (runs alongside gateway)",
|
|
275
|
+
value: "owletto-local",
|
|
276
|
+
},
|
|
277
|
+
{ name: "Custom Owletto URL", value: "owletto-custom" },
|
|
278
|
+
],
|
|
279
|
+
default: "none",
|
|
271
280
|
},
|
|
272
281
|
]);
|
|
273
|
-
const
|
|
274
|
-
|
|
275
|
-
|
|
282
|
+
const envSecrets = [];
|
|
283
|
+
let includeOwlettoLocal = false;
|
|
284
|
+
let owlettoUrl = "";
|
|
285
|
+
if (memoryChoice === "owletto-cloud") {
|
|
286
|
+
owlettoUrl = "https://owletto.com/mcp";
|
|
287
|
+
envSecrets.push({ envVar: "MEMORY_URL", value: owlettoUrl });
|
|
288
|
+
}
|
|
289
|
+
else if (memoryChoice === "owletto-local") {
|
|
290
|
+
includeOwlettoLocal = true;
|
|
291
|
+
owlettoUrl = "http://owletto:8787/mcp";
|
|
292
|
+
envSecrets.push({ envVar: "MEMORY_URL", value: owlettoUrl });
|
|
293
|
+
envSecrets.push({
|
|
294
|
+
envVar: "OWLETTO_AUTH_SECRET",
|
|
295
|
+
value: randomBytes(32).toString("hex"),
|
|
296
|
+
});
|
|
297
|
+
envSecrets.push({
|
|
298
|
+
envVar: "OWLETTO_DB_PASSWORD",
|
|
299
|
+
value: randomBytes(16).toString("hex"),
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
else if (memoryChoice === "owletto-custom") {
|
|
303
|
+
const { customOwlettoUrl } = await inquirer.prompt([
|
|
276
304
|
{
|
|
277
305
|
type: "input",
|
|
278
|
-
name: "
|
|
279
|
-
message: "
|
|
280
|
-
|
|
281
|
-
},
|
|
282
|
-
{
|
|
283
|
-
type: "password",
|
|
284
|
-
name: "clientSecret",
|
|
285
|
-
message: "OAuth client secret (leave empty if public client):",
|
|
286
|
-
mask: "*",
|
|
287
|
-
default: "",
|
|
306
|
+
name: "customOwlettoUrl",
|
|
307
|
+
message: "Owletto MCP URL:",
|
|
308
|
+
validate: (v) => (v ? true : "URL is required"),
|
|
288
309
|
},
|
|
289
310
|
]);
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
value: oauthIssuer,
|
|
293
|
-
});
|
|
294
|
-
if (oauthAnswers.clientId) {
|
|
295
|
-
oauthSecrets.push({
|
|
296
|
-
envVar: "SETTINGS_OAUTH_CLIENT_ID",
|
|
297
|
-
value: oauthAnswers.clientId,
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
if (oauthAnswers.clientSecret) {
|
|
301
|
-
oauthSecrets.push({
|
|
302
|
-
envVar: "SETTINGS_OAUTH_CLIENT_SECRET",
|
|
303
|
-
value: oauthAnswers.clientSecret,
|
|
304
|
-
});
|
|
305
|
-
}
|
|
311
|
+
owlettoUrl = customOwlettoUrl;
|
|
312
|
+
envSecrets.push({ envVar: "MEMORY_URL", value: owlettoUrl });
|
|
306
313
|
}
|
|
314
|
+
// "none" — no env var needed, gateway defaults to filesystem memory
|
|
307
315
|
// Compute network domains from selected policy
|
|
308
316
|
let allowedDomains;
|
|
309
317
|
let disallowedDomains;
|
|
@@ -342,8 +350,7 @@ export async function initCommand(cwd = process.cwd(), projectNameArg) {
|
|
|
342
350
|
const composeFilename = "docker-compose.yml";
|
|
343
351
|
const spinner = ora("Creating Lobu project...").start();
|
|
344
352
|
try {
|
|
345
|
-
// Create
|
|
346
|
-
await mkdir(join(projectDir, ".lobu"), { recursive: true });
|
|
353
|
+
// Create data directory in project directory
|
|
347
354
|
await mkdir(join(projectDir, "data"), { recursive: true });
|
|
348
355
|
// Generate lobu.toml
|
|
349
356
|
await generateLobuToml(projectDir, {
|
|
@@ -381,7 +388,7 @@ export async function initCommand(cwd = process.cwd(), projectNameArg) {
|
|
|
381
388
|
await secretsSetCommand(projectDir, secret.envVar, secret.value);
|
|
382
389
|
}
|
|
383
390
|
// Save OAuth secrets to .env
|
|
384
|
-
for (const secret of
|
|
391
|
+
for (const secret of envSecrets) {
|
|
385
392
|
await secretsSetCommand(projectDir, secret.envVar, secret.value);
|
|
386
393
|
}
|
|
387
394
|
// Create .gitignore
|
|
@@ -414,6 +421,7 @@ export async function initCommand(cwd = process.cwd(), projectNameArg) {
|
|
|
414
421
|
gatewayPort,
|
|
415
422
|
dockerfilePath: "./Dockerfile.worker",
|
|
416
423
|
deploymentMode: answers.deploymentMode,
|
|
424
|
+
includeOwlettoLocal,
|
|
417
425
|
});
|
|
418
426
|
await writeFile(join(projectDir, composeFilename), composeContent);
|
|
419
427
|
spinner.succeed("Project created successfully!");
|
|
@@ -433,13 +441,24 @@ export async function initCommand(cwd = process.cwd(), projectNameArg) {
|
|
|
433
441
|
}
|
|
434
442
|
console.log();
|
|
435
443
|
const gatewayUrl = `http://localhost:${gatewayPort}`;
|
|
444
|
+
if (owlettoUrl) {
|
|
445
|
+
const displayUrl = includeOwlettoLocal
|
|
446
|
+
? "http://localhost:8787"
|
|
447
|
+
: owlettoUrl;
|
|
448
|
+
console.log(chalk.cyan(" Owletto:"));
|
|
449
|
+
console.log(chalk.dim(` ${displayUrl}\n`));
|
|
450
|
+
}
|
|
436
451
|
console.log(chalk.cyan(" 3. Start the services:"));
|
|
437
|
-
console.log(chalk.dim(" lobu
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
452
|
+
console.log(chalk.dim(" lobu run -d\n"));
|
|
453
|
+
if (includeOwlettoLocal) {
|
|
454
|
+
console.log(chalk.cyan(" 4. Set up Owletto (first run):"));
|
|
455
|
+
console.log(chalk.dim(" Visit http://localhost:8787 to create your account\n"));
|
|
456
|
+
}
|
|
457
|
+
console.log(chalk.cyan(` ${includeOwlettoLocal ? "5" : "4"}. Open the API docs:`));
|
|
458
|
+
console.log(chalk.dim(` ${gatewayUrl}/api/docs\n`));
|
|
459
|
+
console.log(chalk.cyan(` ${includeOwlettoLocal ? "6" : "5"}. View logs:`));
|
|
441
460
|
console.log(chalk.dim(" docker compose logs -f\n"));
|
|
442
|
-
console.log(chalk.cyan("
|
|
461
|
+
console.log(chalk.cyan(` ${includeOwlettoLocal ? "7" : "6"}. Stop the services:`));
|
|
443
462
|
console.log(chalk.dim(" docker compose down\n"));
|
|
444
463
|
}
|
|
445
464
|
catch (error) {
|
|
@@ -468,7 +487,7 @@ async function generateLobuToml(projectDir, options) {
|
|
|
468
487
|
lines.push(`[[agents.${id}.providers]]`, `id = "${options.providerId}"`, ...(options.providerModel ? [`model = "${options.providerModel}"`] : []), `key = "$${options.providerEnvVar}"`);
|
|
469
488
|
}
|
|
470
489
|
else {
|
|
471
|
-
lines.push("# Add providers via the
|
|
490
|
+
lines.push("# Add providers via the gateway configuration APIs or uncomment below:", `# [[agents.${id}.providers]]`, '# id = "anthropic"', '# key = "$ANTHROPIC_API_KEY"');
|
|
472
491
|
}
|
|
473
492
|
lines.push("");
|
|
474
493
|
if (options.connectionType && options.connectionConfig) {
|
|
@@ -479,7 +498,7 @@ async function generateLobuToml(projectDir, options) {
|
|
|
479
498
|
}
|
|
480
499
|
}
|
|
481
500
|
else {
|
|
482
|
-
lines.push("# Messaging platform (add via
|
|
501
|
+
lines.push("# Messaging platform (add via the gateway configuration APIs or uncomment below):", `# [[agents.${id}.connections]]`, '# type = "telegram"', `# [agents.${id}.connections.config]`, '# botToken = "$TELEGRAM_BOT_TOKEN"');
|
|
483
502
|
}
|
|
484
503
|
lines.push("", "# Skills from the registry", `[agents.${id}.skills]`, `enabled = [${(options.skillIds ?? []).map((s) => `"${s}"`).join(", ")}]`, "", "# 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"');
|
|
485
504
|
// Network
|
|
@@ -504,7 +523,7 @@ async function getCliVersion() {
|
|
|
504
523
|
return pkg.version || "0.1.0";
|
|
505
524
|
}
|
|
506
525
|
function generateDockerCompose(options) {
|
|
507
|
-
const { projectName, gatewayPort, deploymentMode } = options;
|
|
526
|
+
const { projectName, gatewayPort, deploymentMode, includeOwlettoLocal } = options;
|
|
508
527
|
const gatewayImage = `ghcr.io/lobu-ai/lobu-gateway:latest`;
|
|
509
528
|
const workerImage = `ghcr.io/lobu-ai/lobu-worker-base:latest`;
|
|
510
529
|
const dockerSocketMount = deploymentMode === "docker"
|
|
@@ -519,6 +538,60 @@ function generateDockerCompose(options) {
|
|
|
519
538
|
? `
|
|
520
539
|
- "127.0.0.1:8118:8118" # HTTP proxy for workers`
|
|
521
540
|
: "";
|
|
541
|
+
const owlettoServices = includeOwlettoLocal
|
|
542
|
+
? `
|
|
543
|
+
owletto-postgres:
|
|
544
|
+
image: pgvector/pgvector:pg17
|
|
545
|
+
environment:
|
|
546
|
+
POSTGRES_USER: owletto
|
|
547
|
+
POSTGRES_PASSWORD: \${OWLETTO_DB_PASSWORD}
|
|
548
|
+
POSTGRES_DB: owletto
|
|
549
|
+
volumes:
|
|
550
|
+
- owletto-pgdata:/var/lib/postgresql/data
|
|
551
|
+
healthcheck:
|
|
552
|
+
test: ["CMD-SHELL", "pg_isready -U owletto -d owletto"]
|
|
553
|
+
interval: 10s
|
|
554
|
+
timeout: 3s
|
|
555
|
+
retries: 5
|
|
556
|
+
networks:
|
|
557
|
+
- lobu-internal
|
|
558
|
+
restart: unless-stopped
|
|
559
|
+
|
|
560
|
+
owletto:
|
|
561
|
+
image: ghcr.io/lobu-ai/owletto-app:latest
|
|
562
|
+
pull_policy: always
|
|
563
|
+
ports:
|
|
564
|
+
- "127.0.0.1:8787:8787"
|
|
565
|
+
environment:
|
|
566
|
+
DATABASE_URL: postgresql://owletto:\${OWLETTO_DB_PASSWORD}@owletto-postgres:5432/owletto
|
|
567
|
+
BETTER_AUTH_SECRET: \${OWLETTO_AUTH_SECRET}
|
|
568
|
+
PORT: "8787"
|
|
569
|
+
HOST: 0.0.0.0
|
|
570
|
+
networks:
|
|
571
|
+
- lobu-internal
|
|
572
|
+
depends_on:
|
|
573
|
+
owletto-postgres:
|
|
574
|
+
condition: service_healthy
|
|
575
|
+
healthcheck:
|
|
576
|
+
test: ["CMD-SHELL", "curl -f http://127.0.0.1:8787/health || exit 1"]
|
|
577
|
+
interval: 10s
|
|
578
|
+
timeout: 10s
|
|
579
|
+
retries: 10
|
|
580
|
+
start_period: 20s
|
|
581
|
+
restart: unless-stopped
|
|
582
|
+
`
|
|
583
|
+
: "";
|
|
584
|
+
const owlettoDependsOn = includeOwlettoLocal
|
|
585
|
+
? `
|
|
586
|
+
owletto:
|
|
587
|
+
condition: service_healthy`
|
|
588
|
+
: "";
|
|
589
|
+
const owlettoVolumes = includeOwlettoLocal
|
|
590
|
+
? `
|
|
591
|
+
volumes:
|
|
592
|
+
owletto-pgdata:
|
|
593
|
+
`
|
|
594
|
+
: "";
|
|
522
595
|
return `# Generated by @lobu/cli
|
|
523
596
|
# Deployment mode: ${deploymentMode}
|
|
524
597
|
|
|
@@ -539,7 +612,7 @@ services:
|
|
|
539
612
|
networks:
|
|
540
613
|
- lobu-internal
|
|
541
614
|
restart: unless-stopped
|
|
542
|
-
|
|
615
|
+
${owlettoServices}
|
|
543
616
|
gateway:
|
|
544
617
|
image: ${gatewayImage}
|
|
545
618
|
pull_policy: always
|
|
@@ -549,23 +622,23 @@ services:
|
|
|
549
622
|
DEPLOYMENT_MODE: ${deploymentMode}${workerImageEnv}
|
|
550
623
|
QUEUE_URL: redis://redis:6379/0
|
|
551
624
|
PUBLIC_GATEWAY_URL: \${PUBLIC_GATEWAY_URL:-}
|
|
625
|
+
GATEWAY_PORT: \${GATEWAY_PORT:-${gatewayPort}}
|
|
552
626
|
NODE_ENV: production
|
|
553
627
|
COMPOSE_PROJECT_NAME: ${projectName}
|
|
554
628
|
ADMIN_PASSWORD: \${ADMIN_PASSWORD}
|
|
555
629
|
ENCRYPTION_KEY: \${ENCRYPTION_KEY}
|
|
556
630
|
WORKER_ALLOWED_DOMAINS: \${WORKER_ALLOWED_DOMAINS:-}
|
|
557
631
|
WORKER_DISALLOWED_DOMAINS: \${WORKER_DISALLOWED_DOMAINS:-}
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
SETTINGS_OAUTH_CLIENT_SECRET: \${SETTINGS_OAUTH_CLIENT_SECRET:-}
|
|
632
|
+
MEMORY_URL: \${MEMORY_URL:-}
|
|
633
|
+
LOBU_WORKSPACE_ROOT: /workspace/project
|
|
561
634
|
volumes:${dockerSocketMount}
|
|
562
|
-
-
|
|
635
|
+
- .:/workspace/project:ro
|
|
563
636
|
networks:
|
|
564
637
|
- lobu-public
|
|
565
638
|
- lobu-internal
|
|
566
639
|
depends_on:
|
|
567
640
|
redis:
|
|
568
|
-
condition: service_healthy
|
|
641
|
+
condition: service_healthy${owlettoDependsOn}
|
|
569
642
|
restart: unless-stopped
|
|
570
643
|
|
|
571
644
|
networks:
|
|
@@ -574,7 +647,7 @@ networks:
|
|
|
574
647
|
lobu-internal:
|
|
575
648
|
internal: true
|
|
576
649
|
driver: bridge
|
|
577
|
-
|
|
650
|
+
${owlettoVolumes}
|
|
578
651
|
`;
|
|
579
652
|
}
|
|
580
653
|
//# sourceMappingURL=init.js.map
|