@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,46 +0,0 @@
1
- /**
2
- * Transform lobu.toml config into docker-compose environment variables
3
- * and MCP config JSON for local dev mode.
4
- *
5
- * Platform connection credentials are managed via the settings page /
6
- * connections API and stored in Redis — they are NOT emitted as env vars.
7
- */
8
- export function transformConfig(config) {
9
- const envVars = {};
10
- // Agent name as compose project name (only in single-agent mode)
11
- if (config.agent) {
12
- envVars.COMPOSE_PROJECT_NAME = config.agent.name;
13
- }
14
- // Network config
15
- if (config.network?.allowed) {
16
- envVars.WORKER_ALLOWED_DOMAINS = config.network.allowed.join(",");
17
- }
18
- if (config.network?.denied) {
19
- envVars.WORKER_DISALLOWED_DOMAINS = config.network.denied.join(",");
20
- }
21
- // Worker config
22
- if (config.worker?.timeout_minutes) {
23
- envVars.WORKER_TIMEOUT_MINUTES = String(config.worker.timeout_minutes);
24
- }
25
- if (config.worker?.nix_packages?.length) {
26
- envVars.WORKER_NIX_PACKAGES = config.worker.nix_packages.join(",");
27
- }
28
- // Provider config - stored as JSON for gateway to parse
29
- if (config.providers.length > 0) {
30
- envVars.AGENT_PROVIDERS = JSON.stringify(config.providers.map((p) => ({
31
- id: p.id,
32
- model: p.model,
33
- })));
34
- }
35
- // Skills config
36
- if (config.skills.enabled.length > 0) {
37
- envVars.AGENT_SKILLS = config.skills.enabled.join(",");
38
- }
39
- // MCP servers from skills.mcp section
40
- let mcpConfig = null;
41
- if (config.skills.mcp && Object.keys(config.skills.mcp).length > 0) {
42
- mcpConfig = config.skills.mcp;
43
- }
44
- return { envVars, mcpConfig };
45
- }
46
- //# sourceMappingURL=transformer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transformer.js","sourceRoot":"","sources":["../../src/config/transformer.ts"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,MAAsB;IACpD,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,iEAAiE;IACjE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,oBAAoB,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;IACnD,CAAC;IAED,iBAAiB;IACjB,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QAC5B,OAAO,CAAC,sBAAsB,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,yBAAyB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtE,CAAC;IAED,gBAAgB;IAChB,IAAI,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC;QACnC,OAAO,CAAC,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;QACxC,OAAO,CAAC,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrE,CAAC;IAED,wDAAwD;IACxD,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CACtC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3B,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CAAC,CACJ,CAAC;IACJ,CAAC;IAED,gBAAgB;IAChB,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC;IAED,sCAAsC;IACtC,IAAI,SAAS,GAA0C,IAAI,CAAC;IAC5D,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnE,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;IAChC,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC"}
@@ -1,11 +0,0 @@
1
- export interface McpServerDefinition {
2
- id: string;
3
- name: string;
4
- description: string;
5
- type: "oauth" | "api-key" | "command" | "none";
6
- config: any;
7
- setupInstructions?: string;
8
- }
9
- export declare const MCP_SERVERS: McpServerDefinition[];
10
- export declare function getRequiredEnvVars(servers: McpServerDefinition[]): string[];
11
- //# sourceMappingURL=mcp-servers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-servers.d.ts","sourceRoot":"","sources":["../src/mcp-servers.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IAC/C,MAAM,EAAE,GAAG,CAAC;IACZ,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AASD,eAAO,MAAM,WAAW,EAAE,mBAAmB,EAA2B,CAAC;AAIzE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,MAAM,EAAE,CAiB3E"}
@@ -1,27 +0,0 @@
1
- import { readFileSync } from "node:fs";
2
- import { dirname, join } from "node:path";
3
- import { fileURLToPath } from "node:url";
4
- const __dirname = dirname(fileURLToPath(import.meta.url));
5
- // Load MCP servers from JSON file
6
- const mcpServersJson = readFileSync(join(__dirname, "mcp-servers.json"), "utf-8");
7
- const mcpServersData = JSON.parse(mcpServersJson);
8
- export const MCP_SERVERS = mcpServersData.servers;
9
- // Helper function to get OAuth servers
10
- // Helper function to generate env variable names
11
- export function getRequiredEnvVars(servers) {
12
- const envVars = new Set();
13
- servers.forEach((server) => {
14
- const configStr = JSON.stringify(server.config);
15
- // Extract all ${VARIABLE} and ${env:VARIABLE} patterns
16
- const matches = configStr.match(/\$\{(?:env:)?([A-Z_]+)\}/g) || [];
17
- matches.forEach((match) => {
18
- const varName = match.replace(/\$\{(?:env:)?([A-Z_]+)\}/, "$1");
19
- if (varName !== "PUBLIC_URL") {
20
- // PUBLIC_URL is handled separately
21
- envVars.add(varName);
22
- }
23
- });
24
- });
25
- return Array.from(envVars);
26
- }
27
- //# sourceMappingURL=mcp-servers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-servers.js","sourceRoot":"","sources":["../src/mcp-servers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAW1D,kCAAkC;AAClC,MAAM,cAAc,GAAG,YAAY,CACjC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,EACnC,OAAO,CACR,CAAC;AACF,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAElD,MAAM,CAAC,MAAM,WAAW,GAA0B,cAAc,CAAC,OAAO,CAAC;AAEzE,uCAAuC;AACvC,iDAAiD;AACjD,MAAM,UAAU,kBAAkB,CAAC,OAA8B;IAC/D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAChD,uDAAuD;QACvD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,2BAA2B,CAAC,IAAI,EAAE,CAAC;QACnE,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;YAChE,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;gBAC7B,mCAAmC;gBACnC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC"}
package/dist/types.d.ts DELETED
@@ -1,76 +0,0 @@
1
- export interface LobuConfig {
2
- worker: WorkerConfig;
3
- gateway: GatewayConfig;
4
- credentials: CredentialsConfig;
5
- targets?: TargetsConfig;
6
- }
7
- export type WorkerImageSource = {
8
- source: "base";
9
- } | {
10
- source: "dockerfile";
11
- dockerfile?: string;
12
- } | {
13
- source: "registry";
14
- image: string;
15
- };
16
- export interface WorkerConfig {
17
- image?: string | WorkerImageSource;
18
- resources: ResourceConfig;
19
- environment?: Record<string, string>;
20
- volumes?: VolumeMount[];
21
- storage?: StorageConfig;
22
- scaling?: ScalingConfig;
23
- }
24
- export interface ResourceConfig {
25
- cpu: string;
26
- memory: string;
27
- }
28
- export interface VolumeMount {
29
- host: string;
30
- container: string;
31
- readOnly?: boolean;
32
- }
33
- export interface StorageConfig {
34
- workspace?: {
35
- type: "persistent" | "ephemeral";
36
- size?: string;
37
- };
38
- }
39
- export interface ScalingConfig {
40
- max?: number;
41
- idleTimeout?: string;
42
- }
43
- export interface GatewayConfig {
44
- port: number;
45
- publicUrl?: string;
46
- }
47
- export interface CredentialsConfig {
48
- slack: {
49
- signingSecret: string;
50
- botToken: string;
51
- appToken: string;
52
- };
53
- anthropic: {
54
- apiKey: string;
55
- };
56
- }
57
- export interface TargetsConfig {
58
- docker?: DockerTargetConfig;
59
- }
60
- export interface DockerTargetConfig {
61
- network?: string;
62
- compose?: {
63
- projectName?: string;
64
- };
65
- }
66
- export type DeploymentTarget = "docker";
67
- export interface InitOptions {
68
- target: DeploymentTarget;
69
- projectName: string;
70
- customize: boolean;
71
- }
72
- export interface DeployOptions {
73
- target?: DeploymentTarget;
74
- values?: string;
75
- }
76
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1C,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACnC,SAAS,EAAE,cAAc,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE;QACV,IAAI,EAAE,YAAY,GAAG,WAAW,CAAC;QACjC,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE;QACL,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,SAAS,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
package/dist/types.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export declare function checkConfigExists(cwd: string): Promise<boolean>;
2
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAIA,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOrE"}
@@ -1,13 +0,0 @@
1
- import { constants } from "node:fs";
2
- import { access } from "node:fs/promises";
3
- import { join } from "node:path";
4
- export async function checkConfigExists(cwd) {
5
- try {
6
- await access(join(cwd, ".lobu"), constants.F_OK);
7
- return true;
8
- }
9
- catch {
10
- return false;
11
- }
12
- }
13
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAW;IACjD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}