@lobu/cli 3.0.4 → 3.0.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.
Files changed (74) hide show
  1. package/README.md +17 -221
  2. package/dist/api/context.d.ts +0 -2
  3. package/dist/api/context.d.ts.map +1 -1
  4. package/dist/api/context.js +2 -2
  5. package/dist/api/context.js.map +1 -1
  6. package/dist/commands/chat.d.ts +7 -2
  7. package/dist/commands/chat.d.ts.map +1 -1
  8. package/dist/commands/chat.js +111 -25
  9. package/dist/commands/chat.js.map +1 -1
  10. package/dist/commands/dev.d.ts +3 -2
  11. package/dist/commands/dev.d.ts.map +1 -1
  12. package/dist/commands/dev.js +17 -165
  13. package/dist/commands/dev.js.map +1 -1
  14. package/dist/commands/init.d.ts.map +1 -1
  15. package/dist/commands/init.js +132 -59
  16. package/dist/commands/init.js.map +1 -1
  17. package/dist/commands/skills/info.d.ts.map +1 -1
  18. package/dist/commands/skills/info.js +0 -9
  19. package/dist/commands/skills/info.js.map +1 -1
  20. package/dist/commands/skills/list.d.ts.map +1 -1
  21. package/dist/commands/skills/list.js +5 -6
  22. package/dist/commands/skills/list.js.map +1 -1
  23. package/dist/commands/skills/registry.d.ts +1 -11
  24. package/dist/commands/skills/registry.d.ts.map +1 -1
  25. package/dist/commands/skills/registry.js +0 -3
  26. package/dist/commands/skills/registry.js.map +1 -1
  27. package/dist/commands/status.js +1 -1
  28. package/dist/config/loader.d.ts +0 -18
  29. package/dist/config/loader.d.ts.map +1 -1
  30. package/dist/config/loader.js +2 -62
  31. package/dist/config/loader.js.map +1 -1
  32. package/dist/index.js +8 -15
  33. package/dist/index.js.map +1 -1
  34. package/dist/mcp-servers.json +8 -8
  35. package/dist/system-skills.json +52 -309
  36. package/dist/templates/README.md.tmpl +4 -4
  37. package/dist/templates/TESTING.md.tmpl +19 -19
  38. package/package.json +1 -2
  39. package/dist/__tests__/login.test.d.ts +0 -2
  40. package/dist/__tests__/login.test.d.ts.map +0 -1
  41. package/dist/__tests__/login.test.js +0 -173
  42. package/dist/__tests__/login.test.js.map +0 -1
  43. package/dist/api/client.d.ts +0 -11
  44. package/dist/api/client.d.ts.map +0 -1
  45. package/dist/api/client.js +0 -33
  46. package/dist/api/client.js.map +0 -1
  47. package/dist/commands/launch.d.ts +0 -6
  48. package/dist/commands/launch.d.ts.map +0 -1
  49. package/dist/commands/launch.js +0 -26
  50. package/dist/commands/launch.js.map +0 -1
  51. package/dist/config/agents-manifest.d.ts +0 -92
  52. package/dist/config/agents-manifest.d.ts.map +0 -1
  53. package/dist/config/agents-manifest.js +0 -7
  54. package/dist/config/agents-manifest.js.map +0 -1
  55. package/dist/config/platform-schemas.d.ts +0 -120
  56. package/dist/config/platform-schemas.d.ts.map +0 -1
  57. package/dist/config/platform-schemas.js +0 -97
  58. package/dist/config/platform-schemas.js.map +0 -1
  59. package/dist/config/transformer.d.ts +0 -14
  60. package/dist/config/transformer.d.ts.map +0 -1
  61. package/dist/config/transformer.js +0 -46
  62. package/dist/config/transformer.js.map +0 -1
  63. package/dist/mcp-servers.d.ts +0 -11
  64. package/dist/mcp-servers.d.ts.map +0 -1
  65. package/dist/mcp-servers.js +0 -27
  66. package/dist/mcp-servers.js.map +0 -1
  67. package/dist/types.d.ts +0 -76
  68. package/dist/types.d.ts.map +0 -1
  69. package/dist/types.js +0 -2
  70. package/dist/types.js.map +0 -1
  71. package/dist/utils/config.d.ts +0 -2
  72. package/dist/utils/config.d.ts.map +0 -1
  73. package/dist/utils/config.js +0 -13
  74. package/dist/utils/config.js.map +0 -1
@@ -1,13 +1,13 @@
1
1
  import { spawn } from "node:child_process";
2
- import { mkdir, readFile, writeFile } from "node:fs/promises";
3
- import { basename, join, resolve } from "node:path";
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 { loadSkillsRegistry } from "../commands/skills/registry.js";
7
- import { isLoadError, loadAgentMarkdown, loadConfig, loadSkillFiles, } from "../config/loader.js";
6
+ import { isLoadError, loadConfig } from "../config/loader.js";
8
7
  /**
9
- * `lobu dev` — smart wrapper around `docker compose up`.
10
- * Reads lobu.toml, seeds .env + agents manifest, then passes all args through.
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
- const lobuDir = join(cwd, ".lobu");
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 { manifest, envVars } = await buildManifest(cwd, config.agents, dotenvVars);
40
- await writeFile(join(lobuDir, "agents.json"), JSON.stringify(manifest, null, 2));
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 ${manifest.agents.length} agent(s)...\n`));
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(` Admin page: ${gatewayUrl}/agents`));
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")) {
@@ -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":"AAgBA,wBAAsB,WAAW,CAC/B,GAAG,GAAE,MAAsB,EAC3B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC,CAuhBf"}
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"}
@@ -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 (integration skills from registry, excluding provider-only skills)
167
- const integrationSkills = loadSkillsRegistry().filter((s) => isIntegrationSkill(s) && !isProviderSkill(s) && !s.hidden);
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 integration skills?",
173
- choices: integrationSkills.map((s) => ({
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: integrationSkills.length > 0,
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
- // Settings page OAuth login (optional)
265
- const { oauthIssuer } = await inquirer.prompt([
264
+ // Memory
265
+ const { memoryChoice } = await inquirer.prompt([
266
266
  {
267
- type: "input",
268
- name: "oauthIssuer",
269
- message: "Settings page OAuth issuer URL (leave empty to skip):",
270
- default: "",
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 oauthSecrets = [];
274
- if (oauthIssuer) {
275
- const oauthAnswers = await inquirer.prompt([
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: "clientId",
279
- message: "OAuth client ID (leave empty for dynamic registration):",
280
- default: "",
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
- oauthSecrets.push({
291
- envVar: "SETTINGS_OAUTH_ISSUER_URL",
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 .lobu and data directories in project directory
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 oauthSecrets) {
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 dev -d\n"));
438
- console.log(chalk.cyan(" 4. Open the admin page:"));
439
- console.log(chalk.dim(` ${gatewayUrl}/agents\n`));
440
- console.log(chalk.cyan(" 5. View logs:"));
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(" 6. Stop the services:"));
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 admin page or uncomment below:", `# [[agents.${id}.providers]]`, '# id = "anthropic"', '# key = "$ANTHROPIC_API_KEY"');
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 admin page or uncomment below):", `# [[agents.${id}.connections]]`, '# type = "telegram"', `# [agents.${id}.connections.config]`, '# botToken = "$TELEGRAM_BOT_TOKEN"');
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
- SETTINGS_OAUTH_ISSUER_URL: \${SETTINGS_OAUTH_ISSUER_URL:-}
559
- SETTINGS_OAUTH_CLIENT_ID: \${SETTINGS_OAUTH_CLIENT_ID:-}
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
- - ./.lobu:/app/.lobu
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