@lobu/cli 3.0.3 → 3.0.4
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 +8 -8
- package/dist/__tests__/login.test.d.ts +2 -0
- package/dist/__tests__/login.test.d.ts.map +1 -0
- package/dist/__tests__/login.test.js +173 -0
- package/dist/__tests__/login.test.js.map +1 -0
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +3 -5
- package/dist/api/client.js.map +1 -1
- package/dist/api/context.d.ts +22 -0
- package/dist/api/context.d.ts.map +1 -0
- package/dist/api/context.js +113 -0
- package/dist/api/context.js.map +1 -0
- package/dist/api/credentials.d.ts +9 -4
- package/dist/api/credentials.d.ts.map +1 -1
- package/dist/api/credentials.js +127 -15
- package/dist/api/credentials.js.map +1 -1
- package/dist/commands/chat.d.ts +11 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +195 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/context.d.ts +8 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +46 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/dev.d.ts +1 -8
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +236 -57
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +351 -676
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/launch.d.ts.map +1 -1
- package/dist/commands/launch.js +2 -8
- package/dist/commands/launch.js.map +1 -1
- package/dist/commands/login.d.ts +2 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +283 -14
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts +3 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +5 -3
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/providers/add.d.ts.map +1 -1
- package/dist/commands/providers/add.js +38 -14
- package/dist/commands/providers/add.js.map +1 -1
- package/dist/commands/providers/list.d.ts.map +1 -1
- package/dist/commands/providers/list.js +4 -2
- package/dist/commands/providers/list.js.map +1 -1
- package/dist/commands/skills/add.d.ts.map +1 -1
- package/dist/commands/skills/add.js +25 -7
- package/dist/commands/skills/add.js.map +1 -1
- package/dist/commands/skills/info.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/commands/skills/registry.d.ts +5 -0
- package/dist/commands/skills/registry.d.ts.map +1 -1
- package/dist/commands/skills/registry.js.map +1 -1
- package/dist/commands/skills/search.d.ts.map +1 -1
- package/dist/commands/skills/search.js +3 -1
- package/dist/commands/skills/search.js.map +1 -1
- package/dist/commands/status.d.ts +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +107 -4
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +9 -20
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/whoami.d.ts +3 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +17 -3
- package/dist/commands/whoami.js.map +1 -1
- package/dist/config/agents-manifest.d.ts +92 -0
- package/dist/config/agents-manifest.d.ts.map +1 -0
- package/dist/config/agents-manifest.js +7 -0
- package/dist/config/agents-manifest.js.map +1 -0
- package/dist/config/loader.d.ts +18 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +62 -2
- package/dist/config/loader.js.map +1 -1
- package/dist/config/platform-schemas.d.ts +120 -0
- package/dist/config/platform-schemas.d.ts.map +1 -0
- package/dist/config/platform-schemas.js +97 -0
- package/dist/config/platform-schemas.js.map +1 -0
- package/dist/config/schema.d.ts +546 -111
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +26 -19
- package/dist/config/schema.js.map +1 -1
- package/dist/config/transformer.d.ts +3 -0
- package/dist/config/transformer.d.ts.map +1 -1
- package/dist/config/transformer.js +7 -10
- package/dist/config/transformer.js.map +1 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +52 -10
- package/dist/index.js.map +1 -1
- package/dist/system-skills.json +89 -29
- package/dist/templates/.env.tmpl +3 -14
- package/dist/templates/.gitignore.tmpl +1 -0
- package/dist/templates/README.md.tmpl +7 -8
- package/dist/utils/markdown.d.ts +3 -0
- package/dist/utils/markdown.d.ts.map +1 -0
- package/dist/utils/markdown.js +10 -0
- package/dist/utils/markdown.js.map +1 -0
- package/package.json +4 -2
- package/dist/templates/lobu.toml.tmpl +0 -44
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,QAAA,MAAM,cAAc;;;;;;;;;;;;EAIlB,CAAC;AAGH,QAAA,MAAM,gBAAgB;;;;;;;;;EAGpB,CAAC;AAaH,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOnB,CAAC;AAEH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGhB,CAAC;AAGH,QAAA,MAAM,aAAa;;;;;;;;;EAGjB,CAAC;AAGH,QAAA,MAAM,YAAY;;;;;;EAEhB,CAAC;AAGH,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASpB,CAAC;AAGH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE3B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAC3D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC/D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACzD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
package/dist/config/schema.js
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
// Agent section — identity lives in IDENTITY.md, SOUL.md, USER.md files
|
|
3
|
-
const agentSchema = z.object({
|
|
4
|
-
name: z
|
|
5
|
-
.string()
|
|
6
|
-
.regex(/^[a-z0-9][a-z0-9-]*$/, "Agent name must be lowercase alphanumeric with hyphens, starting with alphanumeric"),
|
|
7
|
-
description: z.string().optional(),
|
|
8
|
-
});
|
|
9
2
|
// Provider entry
|
|
10
3
|
const providerSchema = z.object({
|
|
11
4
|
id: z.string(),
|
|
12
5
|
model: z.string().optional(),
|
|
6
|
+
key: z.string().optional(), // API key or $ENV_VAR reference
|
|
7
|
+
});
|
|
8
|
+
// Connection entry (platform-specific config is dynamic)
|
|
9
|
+
const connectionSchema = z.object({
|
|
10
|
+
type: z.string(), // "telegram" | "slack" | "discord" | "whatsapp" | "teams"
|
|
11
|
+
config: z.record(z.string()), // platform-specific config (e.g. { botToken: "$BOT_TOKEN" })
|
|
12
|
+
});
|
|
13
|
+
// MCP server OAuth configuration
|
|
14
|
+
const mcpOAuthSchema = z.object({
|
|
15
|
+
auth_url: z.string(),
|
|
16
|
+
token_url: z.string(),
|
|
17
|
+
client_id: z.string().optional(), // $ENV_VAR reference or literal
|
|
18
|
+
client_secret: z.string().optional(),
|
|
19
|
+
scopes: z.array(z.string()).optional(),
|
|
20
|
+
token_endpoint_auth_method: z.string().optional(), // "none", "client_secret_post", "client_secret_basic"
|
|
13
21
|
});
|
|
14
22
|
// Skills section
|
|
15
23
|
const mcpServerSchema = z.object({
|
|
@@ -18,6 +26,7 @@ const mcpServerSchema = z.object({
|
|
|
18
26
|
args: z.array(z.string()).optional(),
|
|
19
27
|
env: z.record(z.string()).optional(),
|
|
20
28
|
headers: z.record(z.string()).optional(),
|
|
29
|
+
oauth: mcpOAuthSchema.optional(),
|
|
21
30
|
});
|
|
22
31
|
const skillsSchema = z.object({
|
|
23
32
|
enabled: z.array(z.string()).default([]),
|
|
@@ -31,22 +40,20 @@ const networkSchema = z.object({
|
|
|
31
40
|
// Worker section
|
|
32
41
|
const workerSchema = z.object({
|
|
33
42
|
nix_packages: z.array(z.string()).optional(),
|
|
34
|
-
timeout_minutes: z.number().positive().optional(),
|
|
35
|
-
});
|
|
36
|
-
// Platforms section
|
|
37
|
-
const platformsSchema = z.object({
|
|
38
|
-
telegram: z.boolean().optional(),
|
|
39
|
-
slack: z.boolean().optional(),
|
|
40
|
-
whatsapp: z.boolean().optional(),
|
|
41
|
-
api: z.boolean().optional(),
|
|
42
43
|
});
|
|
43
|
-
//
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
// Each [agents.{id}] table
|
|
45
|
+
const agentEntrySchema = z.object({
|
|
46
|
+
name: z.string(),
|
|
47
|
+
description: z.string().optional(),
|
|
48
|
+
dir: z.string(), // path to agent content directory (IDENTITY.md, SOUL.md, USER.md, skills/)
|
|
46
49
|
providers: z.array(providerSchema).default([]),
|
|
50
|
+
connections: z.array(connectionSchema).default([]),
|
|
47
51
|
skills: skillsSchema.default({ enabled: [] }),
|
|
48
52
|
network: networkSchema.optional(),
|
|
49
53
|
worker: workerSchema.optional(),
|
|
50
|
-
|
|
54
|
+
});
|
|
55
|
+
// Full lobu.toml schema
|
|
56
|
+
export const lobuConfigSchema = z.object({
|
|
57
|
+
agents: z.record(z.string().regex(/^[a-z0-9][a-z0-9-]*$/), agentEntrySchema),
|
|
51
58
|
});
|
|
52
59
|
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,9 @@ export interface TransformResult {
|
|
|
6
6
|
/**
|
|
7
7
|
* Transform lobu.toml config into docker-compose environment variables
|
|
8
8
|
* and MCP config JSON for local dev mode.
|
|
9
|
+
*
|
|
10
|
+
* Platform connection credentials are managed via the settings page /
|
|
11
|
+
* connections API and stored in Redis — they are NOT emitted as env vars.
|
|
9
12
|
*/
|
|
10
13
|
export declare function transformConfig(config: LobuTomlConfig): TransformResult;
|
|
11
14
|
//# sourceMappingURL=transformer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../../src/config/transformer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC;CAClD;AAED
|
|
1
|
+
{"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../../src/config/transformer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC;CAClD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,CA8CvE"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Transform lobu.toml config into docker-compose environment variables
|
|
3
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.
|
|
4
7
|
*/
|
|
5
8
|
export function transformConfig(config) {
|
|
6
9
|
const envVars = {};
|
|
7
|
-
// Agent name as compose project name
|
|
8
|
-
|
|
9
|
-
|
|
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
|
+
}
|
|
10
14
|
// Network config
|
|
11
15
|
if (config.network?.allowed) {
|
|
12
16
|
envVars.WORKER_ALLOWED_DOMAINS = config.network.allowed.join(",");
|
|
@@ -21,13 +25,6 @@ export function transformConfig(config) {
|
|
|
21
25
|
if (config.worker?.nix_packages?.length) {
|
|
22
26
|
envVars.WORKER_NIX_PACKAGES = config.worker.nix_packages.join(",");
|
|
23
27
|
}
|
|
24
|
-
// Platform flags
|
|
25
|
-
if (config.platforms?.telegram) {
|
|
26
|
-
envVars.TELEGRAM_ENABLED = "true";
|
|
27
|
-
}
|
|
28
|
-
if (config.platforms?.api !== false) {
|
|
29
|
-
envVars.API_ENABLED = "true";
|
|
30
|
-
}
|
|
31
28
|
// Provider config - stored as JSON for gateway to parse
|
|
32
29
|
if (config.providers.length > 0) {
|
|
33
30
|
envVars.AGENT_PROVIDERS = JSON.stringify(config.providers.map((p) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformer.js","sourceRoot":"","sources":["../../src/config/transformer.ts"],"names":[],"mappings":"AAOA
|
|
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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
export { initCommand } from "./commands/init.js";
|
|
2
|
-
export * from "./types.js";
|
|
3
|
-
export { checkConfigExists } from "./utils/config.js";
|
|
4
|
-
export { renderTemplate } from "./utils/template.js";
|
|
5
1
|
export declare function runCli(argv?: readonly string[]): Promise<void>;
|
|
6
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,wBAAsB,MAAM,CAC1B,IAAI,GAAE,SAAS,MAAM,EAAiB,GACrC,OAAO,CAAC,IAAI,CAAC,CAsQf"}
|
package/dist/index.js
CHANGED
|
@@ -3,11 +3,6 @@ import { dirname, join } from "node:path";
|
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
4
|
import chalk from "chalk";
|
|
5
5
|
import { Command } from "commander";
|
|
6
|
-
// Re-exports for backward compatibility
|
|
7
|
-
export { initCommand } from "./commands/init.js";
|
|
8
|
-
export * from "./types.js";
|
|
9
|
-
export { checkConfigExists } from "./utils/config.js";
|
|
10
|
-
export { renderTemplate } from "./utils/template.js";
|
|
11
6
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
12
7
|
async function getPackageVersion() {
|
|
13
8
|
const pkgPath = join(__dirname, "..", "package.json");
|
|
@@ -37,6 +32,16 @@ export async function runCli(argv = process.argv) {
|
|
|
37
32
|
process.exit(1);
|
|
38
33
|
}
|
|
39
34
|
});
|
|
35
|
+
// ─── chat ──────────────────────────────────────────────────────────
|
|
36
|
+
program
|
|
37
|
+
.command("chat <prompt>")
|
|
38
|
+
.description("Send a prompt to an agent and stream the response")
|
|
39
|
+
.option("-a, --agent <id>", "Agent ID (defaults to first in lobu.toml)")
|
|
40
|
+
.option("-g, --gateway <url>", "Gateway URL (default: http://localhost:8080)")
|
|
41
|
+
.action(async (prompt, options) => {
|
|
42
|
+
const { chatCommand } = await import("./commands/chat.js");
|
|
43
|
+
await chatCommand(process.cwd(), prompt, options);
|
|
44
|
+
});
|
|
40
45
|
// ─── validate ───────────────────────────────────────────────────────
|
|
41
46
|
program
|
|
42
47
|
.command("validate")
|
|
@@ -75,6 +80,8 @@ export async function runCli(argv = process.argv) {
|
|
|
75
80
|
.command("login")
|
|
76
81
|
.description("Authenticate with Lobu Cloud")
|
|
77
82
|
.option("--token <token>", "Use API token directly (CI/CD)")
|
|
83
|
+
.option("--admin-password", "Use the development-only admin password fallback")
|
|
84
|
+
.option("-c, --context <name>", "Use a named context")
|
|
78
85
|
.action(async (options) => {
|
|
79
86
|
const { loginCommand } = await import("./commands/login.js");
|
|
80
87
|
await loginCommand(options);
|
|
@@ -83,17 +90,52 @@ export async function runCli(argv = process.argv) {
|
|
|
83
90
|
program
|
|
84
91
|
.command("logout")
|
|
85
92
|
.description("Clear stored credentials")
|
|
86
|
-
.
|
|
93
|
+
.option("-c, --context <name>", "Use a named context")
|
|
94
|
+
.action(async (options) => {
|
|
87
95
|
const { logoutCommand } = await import("./commands/logout.js");
|
|
88
|
-
await logoutCommand();
|
|
96
|
+
await logoutCommand(options);
|
|
89
97
|
});
|
|
90
98
|
// ─── whoami ─────────────────────────────────────────────────────────
|
|
91
99
|
program
|
|
92
100
|
.command("whoami")
|
|
93
101
|
.description("Show current user and linked agent")
|
|
94
|
-
.
|
|
102
|
+
.option("-c, --context <name>", "Use a named context")
|
|
103
|
+
.action(async (options) => {
|
|
95
104
|
const { whoamiCommand } = await import("./commands/whoami.js");
|
|
96
|
-
await whoamiCommand();
|
|
105
|
+
await whoamiCommand(options);
|
|
106
|
+
});
|
|
107
|
+
// ─── context ────────────────────────────────────────────────────────
|
|
108
|
+
const context = program
|
|
109
|
+
.command("context")
|
|
110
|
+
.description("Manage Lobu API contexts");
|
|
111
|
+
context
|
|
112
|
+
.command("list")
|
|
113
|
+
.description("List configured contexts")
|
|
114
|
+
.action(async () => {
|
|
115
|
+
const { contextListCommand } = await import("./commands/context.js");
|
|
116
|
+
await contextListCommand();
|
|
117
|
+
});
|
|
118
|
+
context
|
|
119
|
+
.command("current")
|
|
120
|
+
.description("Show the active context")
|
|
121
|
+
.action(async () => {
|
|
122
|
+
const { contextCurrentCommand } = await import("./commands/context.js");
|
|
123
|
+
await contextCurrentCommand();
|
|
124
|
+
});
|
|
125
|
+
context
|
|
126
|
+
.command("add <name>")
|
|
127
|
+
.description("Add a named context")
|
|
128
|
+
.requiredOption("--api-url <url>", "API base URL for this context")
|
|
129
|
+
.action(async (name, options) => {
|
|
130
|
+
const { contextAddCommand } = await import("./commands/context.js");
|
|
131
|
+
await contextAddCommand({ name, apiUrl: options.apiUrl });
|
|
132
|
+
});
|
|
133
|
+
context
|
|
134
|
+
.command("use <name>")
|
|
135
|
+
.description("Set the active context")
|
|
136
|
+
.action(async (name) => {
|
|
137
|
+
const { contextUseCommand } = await import("./commands/context.js");
|
|
138
|
+
await contextUseCommand(name);
|
|
97
139
|
});
|
|
98
140
|
// ─── status ─────────────────────────────────────────────────────────
|
|
99
141
|
program
|
|
@@ -101,7 +143,7 @@ export async function runCli(argv = process.argv) {
|
|
|
101
143
|
.description("Agent health and version info")
|
|
102
144
|
.action(async () => {
|
|
103
145
|
const { statusCommand } = await import("./commands/status.js");
|
|
104
|
-
await statusCommand();
|
|
146
|
+
await statusCommand(process.cwd());
|
|
105
147
|
});
|
|
106
148
|
// ─── secrets ────────────────────────────────────────────────────────
|
|
107
149
|
const secrets = program
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/system-skills.json
CHANGED
|
@@ -12,9 +12,11 @@
|
|
|
12
12
|
"oauth": {
|
|
13
13
|
"authUrl": "https://accounts.google.com/o/oauth2/v2/auth",
|
|
14
14
|
"tokenUrl": "https://oauth2.googleapis.com/token",
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
|
|
15
|
+
"incrementalAuth": true,
|
|
16
|
+
"extraAuthParams": {
|
|
17
|
+
"access_type": "offline",
|
|
18
|
+
"prompt": "consent"
|
|
19
|
+
}
|
|
18
20
|
},
|
|
19
21
|
"scopesConfig": {
|
|
20
22
|
"default": ["openid", "profile", "email"],
|
|
@@ -47,9 +49,7 @@
|
|
|
47
49
|
"authType": "oauth",
|
|
48
50
|
"oauth": {
|
|
49
51
|
"authUrl": "https://github.com/login/oauth/authorize",
|
|
50
|
-
"tokenUrl": "https://github.com/login/oauth/access_token"
|
|
51
|
-
"clientId": "${env:GITHUB_CLIENT_ID}",
|
|
52
|
-
"clientSecret": "${env:GITHUB_CLIENT_SECRET}"
|
|
52
|
+
"tokenUrl": "https://github.com/login/oauth/access_token"
|
|
53
53
|
},
|
|
54
54
|
"scopesConfig": {
|
|
55
55
|
"default": ["read:user", "user:email"],
|
|
@@ -78,9 +78,7 @@
|
|
|
78
78
|
"authType": "oauth",
|
|
79
79
|
"oauth": {
|
|
80
80
|
"authUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
|
|
81
|
-
"tokenUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/token"
|
|
82
|
-
"clientId": "${env:MICROSOFT_CLIENT_ID}",
|
|
83
|
-
"clientSecret": "${env:MICROSOFT_CLIENT_SECRET}"
|
|
81
|
+
"tokenUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/token"
|
|
84
82
|
},
|
|
85
83
|
"scopesConfig": {
|
|
86
84
|
"default": ["openid", "profile", "email", "offline_access"],
|
|
@@ -113,8 +111,6 @@
|
|
|
113
111
|
"oauth": {
|
|
114
112
|
"authUrl": "https://api.notion.com/v1/oauth/authorize",
|
|
115
113
|
"tokenUrl": "https://api.notion.com/v1/oauth/token",
|
|
116
|
-
"clientId": "${env:NOTION_CLIENT_ID}",
|
|
117
|
-
"clientSecret": "${env:NOTION_CLIENT_SECRET}",
|
|
118
114
|
"tokenEndpointAuthMethod": "client_secret_basic"
|
|
119
115
|
},
|
|
120
116
|
"apiDomains": ["api.notion.com"],
|
|
@@ -135,8 +131,6 @@
|
|
|
135
131
|
"oauth": {
|
|
136
132
|
"authUrl": "https://accounts.spotify.com/authorize",
|
|
137
133
|
"tokenUrl": "https://accounts.spotify.com/api/token",
|
|
138
|
-
"clientId": "${env:SPOTIFY_CLIENT_ID}",
|
|
139
|
-
"clientSecret": "${env:SPOTIFY_CLIENT_SECRET}",
|
|
140
134
|
"tokenEndpointAuthMethod": "client_secret_basic"
|
|
141
135
|
},
|
|
142
136
|
"scopesConfig": {
|
|
@@ -171,9 +165,7 @@
|
|
|
171
165
|
"authType": "oauth",
|
|
172
166
|
"oauth": {
|
|
173
167
|
"authUrl": "https://linear.app/oauth/authorize",
|
|
174
|
-
"tokenUrl": "https://api.linear.app/oauth/token"
|
|
175
|
-
"clientId": "${env:LINEAR_CLIENT_ID}",
|
|
176
|
-
"clientSecret": "${env:LINEAR_CLIENT_SECRET}"
|
|
168
|
+
"tokenUrl": "https://api.linear.app/oauth/token"
|
|
177
169
|
},
|
|
178
170
|
"scopesConfig": {
|
|
179
171
|
"default": ["read"],
|
|
@@ -196,9 +188,7 @@
|
|
|
196
188
|
"authType": "oauth",
|
|
197
189
|
"oauth": {
|
|
198
190
|
"authUrl": "https://auth.atlassian.com/authorize",
|
|
199
|
-
"tokenUrl": "https://auth.atlassian.com/oauth/token"
|
|
200
|
-
"clientId": "${env:ATLASSIAN_CLIENT_ID}",
|
|
201
|
-
"clientSecret": "${env:ATLASSIAN_CLIENT_SECRET}"
|
|
191
|
+
"tokenUrl": "https://auth.atlassian.com/oauth/token"
|
|
202
192
|
},
|
|
203
193
|
"scopesConfig": {
|
|
204
194
|
"default": ["read:me"],
|
|
@@ -226,9 +216,7 @@
|
|
|
226
216
|
"authType": "oauth",
|
|
227
217
|
"oauth": {
|
|
228
218
|
"authUrl": "https://sentry.io/oauth/authorize/",
|
|
229
|
-
"tokenUrl": "https://sentry.io/oauth/token/"
|
|
230
|
-
"clientId": "${env:SENTRY_CLIENT_ID}",
|
|
231
|
-
"clientSecret": "${env:SENTRY_CLIENT_SECRET}"
|
|
219
|
+
"tokenUrl": "https://sentry.io/oauth/token/"
|
|
232
220
|
},
|
|
233
221
|
"scopesConfig": {
|
|
234
222
|
"default": ["org:read", "project:read", "event:read"],
|
|
@@ -251,16 +239,89 @@
|
|
|
251
239
|
}
|
|
252
240
|
]
|
|
253
241
|
},
|
|
242
|
+
{
|
|
243
|
+
"id": "reddit",
|
|
244
|
+
"name": "Reddit",
|
|
245
|
+
"description": "Reddit posts, comments, subreddits, and user data",
|
|
246
|
+
"integrations": [
|
|
247
|
+
{
|
|
248
|
+
"id": "reddit",
|
|
249
|
+
"label": "Reddit",
|
|
250
|
+
"authType": "oauth",
|
|
251
|
+
"oauth": {
|
|
252
|
+
"authUrl": "https://www.reddit.com/api/v1/authorize?duration=permanent",
|
|
253
|
+
"tokenUrl": "https://www.reddit.com/api/v1/access_token",
|
|
254
|
+
"tokenEndpointAuthMethod": "client_secret_basic"
|
|
255
|
+
},
|
|
256
|
+
"scopesConfig": {
|
|
257
|
+
"default": ["identity", "read"],
|
|
258
|
+
"available": [
|
|
259
|
+
"submit",
|
|
260
|
+
"vote",
|
|
261
|
+
"edit",
|
|
262
|
+
"save",
|
|
263
|
+
"history",
|
|
264
|
+
"mysubreddits",
|
|
265
|
+
"subscribe",
|
|
266
|
+
"flair"
|
|
267
|
+
]
|
|
268
|
+
},
|
|
269
|
+
"apiDomains": ["oauth.reddit.com"],
|
|
270
|
+
"apiBase": "https://oauth.reddit.com",
|
|
271
|
+
"apiHints": "User: /api/v1/me; Subreddit posts: /r/{subreddit}/hot; Submit: /api/submit; Vote: /api/vote; Comments: /r/{subreddit}/comments/{article}"
|
|
272
|
+
}
|
|
273
|
+
]
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
"id": "twitter",
|
|
277
|
+
"name": "X (Twitter)",
|
|
278
|
+
"description": "Tweets, timelines, users, and direct messages",
|
|
279
|
+
"integrations": [
|
|
280
|
+
{
|
|
281
|
+
"id": "twitter",
|
|
282
|
+
"label": "X (Twitter)",
|
|
283
|
+
"authType": "oauth",
|
|
284
|
+
"oauth": {
|
|
285
|
+
"authUrl": "https://twitter.com/i/oauth2/authorize",
|
|
286
|
+
"tokenUrl": "https://api.twitter.com/2/oauth2/token",
|
|
287
|
+
"tokenEndpointAuthMethod": "client_secret_basic"
|
|
288
|
+
},
|
|
289
|
+
"scopesConfig": {
|
|
290
|
+
"default": ["tweet.read", "users.read", "offline.access"],
|
|
291
|
+
"available": [
|
|
292
|
+
"tweet.write",
|
|
293
|
+
"follows.read",
|
|
294
|
+
"follows.write",
|
|
295
|
+
"like.read",
|
|
296
|
+
"like.write",
|
|
297
|
+
"dm.read",
|
|
298
|
+
"dm.write"
|
|
299
|
+
]
|
|
300
|
+
},
|
|
301
|
+
"apiDomains": ["api.twitter.com"],
|
|
302
|
+
"apiBase": "https://api.twitter.com/2",
|
|
303
|
+
"apiHints": "User: /users/me; Tweets: /tweets/{id}; Timeline: /users/{id}/tweets; Post tweet: /tweets; Search: /tweets/search/recent?query={q}"
|
|
304
|
+
}
|
|
305
|
+
]
|
|
306
|
+
},
|
|
254
307
|
{
|
|
255
308
|
"id": "owletto",
|
|
256
309
|
"name": "Owletto Memory",
|
|
257
310
|
"description": "Long-term memory across conversations",
|
|
311
|
+
"hidden": true,
|
|
258
312
|
"mcpServers": [
|
|
259
313
|
{
|
|
260
314
|
"id": "owletto",
|
|
261
315
|
"name": "Owletto",
|
|
262
|
-
"url": "
|
|
263
|
-
"type": "sse"
|
|
316
|
+
"url": "${env:OWLETTO_MCP_URL}",
|
|
317
|
+
"type": "sse",
|
|
318
|
+
"oauth": {
|
|
319
|
+
"authUrl": "${env:OWLETTO_OAUTH_AUTH_URL}",
|
|
320
|
+
"tokenUrl": "${env:OWLETTO_OAUTH_TOKEN_URL}",
|
|
321
|
+
"clientId": "${env:OWLETTO_OAUTH_CLIENT_ID}",
|
|
322
|
+
"scopes": ["mcp:read", "mcp:write"],
|
|
323
|
+
"tokenEndpointAuthMethod": "none"
|
|
324
|
+
}
|
|
264
325
|
}
|
|
265
326
|
]
|
|
266
327
|
},
|
|
@@ -333,11 +394,12 @@
|
|
|
333
394
|
"displayName": "NVIDIA NIM (free)",
|
|
334
395
|
"iconUrl": "https://www.google.com/s2/favicons?domain=nvidia.com&sz=128",
|
|
335
396
|
"envVarName": "NVIDIA_API_KEY",
|
|
336
|
-
"upstreamBaseUrl": "https://integrate.api.nvidia.com",
|
|
397
|
+
"upstreamBaseUrl": "https://integrate.api.nvidia.com/v1",
|
|
337
398
|
"apiKeyInstructions": "Get your API key from <a href=\"https://build.nvidia.com/settings/api-keys\" target=\"_blank\" class=\"text-blue-600 hover:underline\">NVIDIA Build</a>",
|
|
338
399
|
"apiKeyPlaceholder": "nvapi-...",
|
|
339
400
|
"sdkCompat": "openai",
|
|
340
|
-
"modelsEndpoint": "/v1/models"
|
|
401
|
+
"modelsEndpoint": "/v1/models",
|
|
402
|
+
"defaultModel": "nvidia/moonshotai/kimi-k2.5"
|
|
341
403
|
}
|
|
342
404
|
]
|
|
343
405
|
},
|
|
@@ -438,9 +500,7 @@
|
|
|
438
500
|
"authType": "oauth",
|
|
439
501
|
"oauth": {
|
|
440
502
|
"authUrl": "https://openrouter.ai/auth",
|
|
441
|
-
"tokenUrl": "https://openrouter.ai/api/v1/auth/keys"
|
|
442
|
-
"clientId": "${env:OPENROUTER_CLIENT_ID}",
|
|
443
|
-
"clientSecret": "${env:OPENROUTER_CLIENT_SECRET}"
|
|
503
|
+
"tokenUrl": "https://openrouter.ai/api/v1/auth/keys"
|
|
444
504
|
},
|
|
445
505
|
"apiDomains": ["openrouter.ai"],
|
|
446
506
|
"apiBase": "https://openrouter.ai/api/v1",
|
package/dist/templates/.env.tmpl
CHANGED
|
@@ -1,20 +1,9 @@
|
|
|
1
|
-
# Slack Configuration
|
|
2
|
-
SLACK_SIGNING_SECRET={{SLACK_SIGNING_SECRET}}
|
|
3
|
-
SLACK_BOT_TOKEN={{SLACK_BOT_TOKEN}}
|
|
4
|
-
SLACK_APP_TOKEN={{SLACK_APP_TOKEN}}
|
|
5
|
-
|
|
6
|
-
# Telegram Configuration
|
|
7
|
-
TELEGRAM_ENABLED={{TELEGRAM_ENABLED}}
|
|
8
|
-
TELEGRAM_BOT_TOKEN={{TELEGRAM_BOT_TOKEN}}
|
|
9
|
-
TELEGRAM_ALLOW_FROM={{TELEGRAM_ALLOW_FROM}}
|
|
10
|
-
|
|
11
|
-
# Anthropic Configuration
|
|
12
|
-
ANTHROPIC_API_KEY={{ANTHROPIC_API_KEY}}
|
|
13
|
-
|
|
14
1
|
# Gateway Configuration
|
|
15
|
-
|
|
2
|
+
GATEWAY_PORT={{GATEWAY_PORT}}
|
|
3
|
+
DEPLOYMENT_MODE={{DEPLOYMENT_MODE}}
|
|
16
4
|
|
|
17
5
|
# Security
|
|
6
|
+
ADMIN_PASSWORD={{ADMIN_PASSWORD}}
|
|
18
7
|
ENCRYPTION_KEY={{ENCRYPTION_KEY}}
|
|
19
8
|
|
|
20
9
|
# Worker Network Access Control
|
|
@@ -7,8 +7,8 @@ Lobu instance created with `@lobu/cli` v{{CLI_VERSION}}
|
|
|
7
7
|
Make sure you have Docker CLI installed.
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
# Start the services
|
|
11
|
-
|
|
10
|
+
# Start the services
|
|
11
|
+
lobu dev -d
|
|
12
12
|
|
|
13
13
|
# View logs
|
|
14
14
|
docker compose logs -f
|
|
@@ -17,8 +17,6 @@ docker compose logs -f
|
|
|
17
17
|
docker compose down
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
**Note**: The first startup will take a few minutes to build the worker image. Subsequent starts will be much faster.
|
|
21
|
-
|
|
22
20
|
## Upgrading to Latest Version
|
|
23
21
|
|
|
24
22
|
### Update Gateway and Pre-built Images
|
|
@@ -48,11 +46,12 @@ Check for new environment variables in release notes or the [Lobu documentation]
|
|
|
48
46
|
### Environment Variables
|
|
49
47
|
|
|
50
48
|
Edit `.env` to configure:
|
|
51
|
-
- `SLACK_BOT_TOKEN` - Your Slack bot token
|
|
52
|
-
- `SLACK_APP_TOKEN` - Your Slack app token
|
|
53
|
-
- `SLACK_SIGNING_SECRET` - Your Slack signing secret
|
|
54
|
-
- `ANTHROPIC_API_KEY` - Your Anthropic API key (optional if users provide their own)
|
|
55
49
|
- `PUBLIC_GATEWAY_URL` - Public URL for OAuth callbacks
|
|
50
|
+
- `WORKER_ALLOWED_DOMAINS` - Allowed domains for worker network access
|
|
51
|
+
|
|
52
|
+
### Platform Connections
|
|
53
|
+
|
|
54
|
+
Platforms (Slack, Telegram, Discord, WhatsApp, Teams) are configured via the admin page at `{PUBLIC_GATEWAY_URL}/agents`. No platform-specific env vars needed — just paste your bot token in the UI.
|
|
56
55
|
|
|
57
56
|
### Worker Customization
|
|
58
57
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/utils/markdown.ts"],"names":[],"mappings":"AAMA,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGnD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { marked } from "marked";
|
|
2
|
+
// @ts-expect-error -- no type declarations
|
|
3
|
+
import { markedTerminal } from "marked-terminal";
|
|
4
|
+
marked.use(markedTerminal());
|
|
5
|
+
/** Parse markdown and return ANSI-styled terminal text. */
|
|
6
|
+
export function renderMarkdown(text) {
|
|
7
|
+
const result = marked.parse(text);
|
|
8
|
+
return result.replace(/\n+$/, "");
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/utils/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,MAAM,EAAE,MAAM,QAAQ,CAAC;AACtD,2CAA2C;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,GAAG,CAAC,cAAc,EAAqB,CAAC,CAAC;AAEhD,2DAA2D;AAC3D,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAW,CAAC;IAC5C,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lobu/cli",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.4",
|
|
4
4
|
"description": "CLI for deploying and managing AI agents on Lobu",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,9 +22,11 @@
|
|
|
22
22
|
"author": "Burak Emre",
|
|
23
23
|
"license": "Apache-2.0",
|
|
24
24
|
"dependencies": {
|
|
25
|
+
"chalk": "^5.3.0",
|
|
25
26
|
"commander": "^12.0.0",
|
|
26
27
|
"inquirer": "^9.2.14",
|
|
27
|
-
"
|
|
28
|
+
"marked": "^17.0.4",
|
|
29
|
+
"marked-terminal": "^7.3.0",
|
|
28
30
|
"open": "^10.1.0",
|
|
29
31
|
"ora": "^8.0.1",
|
|
30
32
|
"smol-toml": "^1.3.1",
|