@lobu/cli 4.3.0 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/README.md +11 -26
  2. package/dist/__tests__/chat.integration.test.js +19 -19
  3. package/dist/__tests__/chat.integration.test.js.map +1 -1
  4. package/dist/__tests__/dev.test.d.ts +2 -0
  5. package/dist/__tests__/dev.test.d.ts.map +1 -0
  6. package/dist/__tests__/dev.test.js +25 -0
  7. package/dist/__tests__/dev.test.js.map +1 -0
  8. package/dist/__tests__/init-memory.test.js +1 -14
  9. package/dist/__tests__/init-memory.test.js.map +1 -1
  10. package/dist/__tests__/token.test.d.ts +2 -0
  11. package/dist/__tests__/token.test.d.ts.map +1 -0
  12. package/dist/__tests__/token.test.js +52 -0
  13. package/dist/__tests__/token.test.js.map +1 -0
  14. package/dist/bundled-skills/lobu/SKILL.md +95 -7
  15. package/dist/commands/_lib/apply/__tests__/client.test.d.ts +2 -0
  16. package/dist/commands/_lib/apply/__tests__/client.test.d.ts.map +1 -0
  17. package/dist/commands/_lib/apply/__tests__/client.test.js +23 -0
  18. package/dist/commands/_lib/apply/__tests__/client.test.js.map +1 -0
  19. package/dist/commands/_lib/apply/__tests__/desired-state.test.d.ts +2 -0
  20. package/dist/commands/_lib/apply/__tests__/desired-state.test.d.ts.map +1 -0
  21. package/dist/commands/_lib/apply/__tests__/desired-state.test.js +140 -0
  22. package/dist/commands/_lib/apply/__tests__/desired-state.test.js.map +1 -0
  23. package/dist/commands/_lib/apply/__tests__/diff.test.d.ts +2 -0
  24. package/dist/commands/_lib/apply/__tests__/diff.test.d.ts.map +1 -0
  25. package/dist/commands/_lib/apply/__tests__/diff.test.js +378 -0
  26. package/dist/commands/_lib/apply/__tests__/diff.test.js.map +1 -0
  27. package/dist/commands/_lib/apply/apply-cmd.d.ts +12 -0
  28. package/dist/commands/_lib/apply/apply-cmd.d.ts.map +1 -0
  29. package/dist/commands/_lib/apply/apply-cmd.js +183 -0
  30. package/dist/commands/_lib/apply/apply-cmd.js.map +1 -0
  31. package/dist/commands/_lib/apply/client.d.ts +130 -0
  32. package/dist/commands/_lib/apply/client.d.ts.map +1 -0
  33. package/dist/commands/_lib/apply/client.js +243 -0
  34. package/dist/commands/_lib/apply/client.js.map +1 -0
  35. package/dist/commands/_lib/apply/desired-state.d.ts +71 -0
  36. package/dist/commands/_lib/apply/desired-state.d.ts.map +1 -0
  37. package/dist/commands/_lib/apply/desired-state.js +600 -0
  38. package/dist/commands/_lib/apply/desired-state.js.map +1 -0
  39. package/dist/commands/_lib/apply/diff.d.ts +76 -0
  40. package/dist/commands/_lib/apply/diff.d.ts.map +1 -0
  41. package/dist/commands/_lib/apply/diff.js +323 -0
  42. package/dist/commands/_lib/apply/diff.js.map +1 -0
  43. package/dist/commands/_lib/apply/prompt.d.ts +13 -0
  44. package/dist/commands/_lib/apply/prompt.d.ts.map +1 -0
  45. package/dist/commands/_lib/apply/prompt.js +19 -0
  46. package/dist/commands/_lib/apply/prompt.js.map +1 -0
  47. package/dist/commands/_lib/apply/render.d.ts +9 -0
  48. package/dist/commands/_lib/apply/render.d.ts.map +1 -0
  49. package/dist/commands/_lib/apply/render.js +92 -0
  50. package/dist/commands/_lib/apply/render.js.map +1 -0
  51. package/dist/commands/agent.d.ts +27 -0
  52. package/dist/commands/agent.d.ts.map +1 -0
  53. package/dist/commands/agent.js +111 -0
  54. package/dist/commands/agent.js.map +1 -0
  55. package/dist/commands/apply.d.ts +3 -0
  56. package/dist/commands/apply.d.ts.map +1 -0
  57. package/dist/commands/apply.js +5 -0
  58. package/dist/commands/apply.js.map +1 -0
  59. package/dist/commands/chat.d.ts.map +1 -1
  60. package/dist/commands/chat.js +5 -5
  61. package/dist/commands/chat.js.map +1 -1
  62. package/dist/commands/dev.d.ts +8 -3
  63. package/dist/commands/dev.d.ts.map +1 -1
  64. package/dist/commands/dev.js +128 -124
  65. package/dist/commands/dev.js.map +1 -1
  66. package/dist/commands/doctor.d.ts +6 -0
  67. package/dist/commands/doctor.d.ts.map +1 -0
  68. package/dist/commands/doctor.js +75 -0
  69. package/dist/commands/doctor.js.map +1 -0
  70. package/dist/commands/eval.d.ts +1 -0
  71. package/dist/commands/eval.d.ts.map +1 -1
  72. package/dist/commands/eval.js +7 -4
  73. package/dist/commands/eval.js.map +1 -1
  74. package/dist/commands/init.d.ts +2 -9
  75. package/dist/commands/init.d.ts.map +1 -1
  76. package/dist/commands/init.js +35 -249
  77. package/dist/commands/init.js.map +1 -1
  78. package/dist/commands/login.d.ts +11 -3
  79. package/dist/commands/login.d.ts.map +1 -1
  80. package/dist/commands/login.js +109 -251
  81. package/dist/commands/login.js.map +1 -1
  82. package/dist/commands/logout.d.ts.map +1 -1
  83. package/dist/commands/logout.js +12 -11
  84. package/dist/commands/logout.js.map +1 -1
  85. package/dist/commands/memory/_lib/agent-detect.d.ts +9 -0
  86. package/dist/commands/memory/_lib/agent-detect.d.ts.map +1 -0
  87. package/dist/commands/memory/_lib/agent-detect.js +82 -0
  88. package/dist/commands/memory/_lib/agent-detect.js.map +1 -0
  89. package/dist/commands/memory/_lib/browser-auth-cmd.d.ts +19 -0
  90. package/dist/commands/memory/_lib/browser-auth-cmd.d.ts.map +1 -0
  91. package/dist/commands/memory/_lib/browser-auth-cmd.js +635 -0
  92. package/dist/commands/memory/_lib/browser-auth-cmd.js.map +1 -0
  93. package/dist/commands/memory/_lib/browser.d.ts +2 -0
  94. package/dist/commands/memory/_lib/browser.d.ts.map +1 -0
  95. package/dist/commands/memory/_lib/browser.js +26 -0
  96. package/dist/commands/memory/_lib/browser.js.map +1 -0
  97. package/dist/commands/memory/_lib/errors.d.ts +13 -0
  98. package/dist/commands/memory/_lib/errors.d.ts.map +1 -0
  99. package/dist/commands/memory/_lib/errors.js +23 -0
  100. package/dist/commands/memory/_lib/errors.js.map +1 -0
  101. package/dist/commands/memory/_lib/init-wizard.d.ts +12 -0
  102. package/dist/commands/memory/_lib/init-wizard.d.ts.map +1 -0
  103. package/dist/commands/memory/_lib/init-wizard.js +182 -0
  104. package/dist/commands/memory/_lib/init-wizard.js.map +1 -0
  105. package/dist/commands/memory/_lib/install-targets.d.ts +15 -0
  106. package/dist/commands/memory/_lib/install-targets.d.ts.map +1 -0
  107. package/dist/commands/memory/_lib/install-targets.js +209 -0
  108. package/dist/commands/memory/_lib/install-targets.js.map +1 -0
  109. package/dist/commands/memory/_lib/mcp.d.ts +20 -0
  110. package/dist/commands/memory/_lib/mcp.d.ts.map +1 -0
  111. package/dist/commands/memory/_lib/mcp.js +182 -0
  112. package/dist/commands/memory/_lib/mcp.js.map +1 -0
  113. package/dist/commands/memory/_lib/openclaw-auth.d.ts +41 -0
  114. package/dist/commands/memory/_lib/openclaw-auth.d.ts.map +1 -0
  115. package/dist/commands/memory/_lib/openclaw-auth.js +133 -0
  116. package/dist/commands/memory/_lib/openclaw-auth.js.map +1 -0
  117. package/dist/commands/memory/_lib/openclaw-auth.test.d.ts +2 -0
  118. package/dist/commands/memory/_lib/openclaw-auth.test.d.ts.map +1 -0
  119. package/dist/commands/memory/_lib/openclaw-auth.test.js +9 -0
  120. package/dist/commands/memory/_lib/openclaw-auth.test.js.map +1 -0
  121. package/dist/commands/memory/_lib/openclaw-cmd.d.ts +15 -0
  122. package/dist/commands/memory/_lib/openclaw-cmd.d.ts.map +1 -0
  123. package/dist/commands/memory/_lib/openclaw-cmd.js +208 -0
  124. package/dist/commands/memory/_lib/openclaw-cmd.js.map +1 -0
  125. package/dist/commands/memory/_lib/output.d.ts +5 -0
  126. package/dist/commands/memory/_lib/output.d.ts.map +1 -0
  127. package/dist/commands/memory/_lib/output.js +17 -0
  128. package/dist/commands/memory/_lib/output.js.map +1 -0
  129. package/dist/commands/memory/_lib/schema.d.ts +93 -0
  130. package/dist/commands/memory/_lib/schema.d.ts.map +1 -0
  131. package/dist/commands/memory/_lib/schema.js +192 -0
  132. package/dist/commands/memory/_lib/schema.js.map +1 -0
  133. package/dist/commands/memory/_lib/seed-cmd.d.ts +9 -0
  134. package/dist/commands/memory/_lib/seed-cmd.d.ts.map +1 -0
  135. package/dist/commands/memory/_lib/seed-cmd.js +516 -0
  136. package/dist/commands/memory/_lib/seed-cmd.js.map +1 -0
  137. package/dist/commands/memory/browser-auth.d.ts +3 -0
  138. package/dist/commands/memory/browser-auth.d.ts.map +1 -0
  139. package/dist/commands/memory/browser-auth.js +5 -0
  140. package/dist/commands/memory/browser-auth.js.map +1 -0
  141. package/dist/commands/memory/configure.d.ts +3 -0
  142. package/dist/commands/memory/configure.d.ts.map +1 -0
  143. package/dist/commands/memory/configure.js +5 -0
  144. package/dist/commands/memory/configure.js.map +1 -0
  145. package/dist/commands/memory/health.d.ts +3 -0
  146. package/dist/commands/memory/health.d.ts.map +1 -0
  147. package/dist/commands/memory/health.js +5 -0
  148. package/dist/commands/memory/health.js.map +1 -0
  149. package/dist/commands/memory/init.d.ts +8 -0
  150. package/dist/commands/memory/init.d.ts.map +1 -0
  151. package/dist/commands/memory/init.js +65 -0
  152. package/dist/commands/memory/init.js.map +1 -0
  153. package/dist/commands/memory/org.d.ts +7 -0
  154. package/dist/commands/memory/org.d.ts.map +1 -0
  155. package/dist/commands/memory/org.js +22 -0
  156. package/dist/commands/memory/org.js.map +1 -0
  157. package/dist/commands/memory/run.d.ts +8 -0
  158. package/dist/commands/memory/run.d.ts.map +1 -0
  159. package/dist/commands/memory/run.js +58 -0
  160. package/dist/commands/memory/run.js.map +1 -0
  161. package/dist/commands/memory/seed.d.ts +3 -0
  162. package/dist/commands/memory/seed.d.ts.map +1 -0
  163. package/dist/commands/memory/seed.js +5 -0
  164. package/dist/commands/memory/seed.js.map +1 -0
  165. package/dist/commands/org.d.ts +10 -0
  166. package/dist/commands/org.d.ts.map +1 -0
  167. package/dist/commands/org.js +34 -0
  168. package/dist/commands/org.js.map +1 -0
  169. package/dist/commands/{connections/platforms.d.ts → platforms/platform-prompts.d.ts} +5 -5
  170. package/dist/commands/platforms/platform-prompts.d.ts.map +1 -0
  171. package/dist/commands/{connections/platforms.js → platforms/platform-prompts.js} +24 -24
  172. package/dist/commands/platforms/platform-prompts.js.map +1 -0
  173. package/dist/commands/status.d.ts +4 -1
  174. package/dist/commands/status.d.ts.map +1 -1
  175. package/dist/commands/status.js +15 -84
  176. package/dist/commands/status.js.map +1 -1
  177. package/dist/commands/token.d.ts +17 -0
  178. package/dist/commands/token.d.ts.map +1 -0
  179. package/dist/commands/token.js +55 -0
  180. package/dist/commands/token.js.map +1 -0
  181. package/dist/index.d.ts.map +1 -1
  182. package/dist/index.js +303 -88
  183. package/dist/index.js.map +1 -1
  184. package/dist/internal/__tests__/api-client.test.d.ts +2 -0
  185. package/dist/internal/__tests__/api-client.test.d.ts.map +1 -0
  186. package/dist/internal/__tests__/api-client.test.js +95 -0
  187. package/dist/internal/__tests__/api-client.test.js.map +1 -0
  188. package/dist/internal/__tests__/context.test.d.ts +2 -0
  189. package/dist/internal/__tests__/context.test.d.ts.map +1 -0
  190. package/dist/internal/__tests__/context.test.js +77 -0
  191. package/dist/internal/__tests__/context.test.js.map +1 -0
  192. package/dist/internal/api-client.d.ts +39 -0
  193. package/dist/internal/api-client.d.ts.map +1 -0
  194. package/dist/internal/api-client.js +217 -0
  195. package/dist/internal/api-client.js.map +1 -0
  196. package/dist/internal/context.d.ts +10 -1
  197. package/dist/internal/context.d.ts.map +1 -1
  198. package/dist/internal/context.js +109 -2
  199. package/dist/internal/context.js.map +1 -1
  200. package/dist/internal/credentials.d.ts +12 -2
  201. package/dist/internal/credentials.d.ts.map +1 -1
  202. package/dist/internal/credentials.js +47 -54
  203. package/dist/internal/credentials.js.map +1 -1
  204. package/dist/internal/gateway-url.d.ts +4 -4
  205. package/dist/internal/gateway-url.d.ts.map +1 -1
  206. package/dist/internal/gateway-url.js +6 -5
  207. package/dist/internal/gateway-url.js.map +1 -1
  208. package/dist/internal/index.d.ts +5 -3
  209. package/dist/internal/index.d.ts.map +1 -1
  210. package/dist/internal/index.js +3 -2
  211. package/dist/internal/index.js.map +1 -1
  212. package/dist/internal/local-env.d.ts +2 -0
  213. package/dist/internal/local-env.d.ts.map +1 -0
  214. package/dist/internal/local-env.js +32 -0
  215. package/dist/internal/local-env.js.map +1 -0
  216. package/dist/internal/oauth.d.ts +82 -0
  217. package/dist/internal/oauth.d.ts.map +1 -0
  218. package/dist/internal/oauth.js +234 -0
  219. package/dist/internal/oauth.js.map +1 -0
  220. package/dist/server.bundle.mjs +72219 -0
  221. package/dist/templates/.env.tmpl +7 -3
  222. package/dist/templates/README.md.tmpl +20 -53
  223. package/package.json +60 -6
  224. package/dist/__tests__/skills.test.d.ts +0 -2
  225. package/dist/__tests__/skills.test.d.ts.map +0 -1
  226. package/dist/__tests__/skills.test.js +0 -33
  227. package/dist/__tests__/skills.test.js.map +0 -1
  228. package/dist/commands/connections/add.d.ts +0 -2
  229. package/dist/commands/connections/add.d.ts.map +0 -1
  230. package/dist/commands/connections/add.js +0 -46
  231. package/dist/commands/connections/add.js.map +0 -1
  232. package/dist/commands/connections/list.d.ts +0 -2
  233. package/dist/commands/connections/list.d.ts.map +0 -1
  234. package/dist/commands/connections/list.js +0 -25
  235. package/dist/commands/connections/list.js.map +0 -1
  236. package/dist/commands/connections/platforms.d.ts.map +0 -1
  237. package/dist/commands/connections/platforms.js.map +0 -1
  238. package/dist/commands/providers/add.d.ts +0 -2
  239. package/dist/commands/providers/add.d.ts.map +0 -1
  240. package/dist/commands/providers/add.js +0 -50
  241. package/dist/commands/providers/add.js.map +0 -1
  242. package/dist/commands/providers/list.d.ts +0 -2
  243. package/dist/commands/providers/list.d.ts.map +0 -1
  244. package/dist/commands/providers/list.js +0 -22
  245. package/dist/commands/providers/list.js.map +0 -1
  246. package/dist/commands/secrets.d.ts +0 -8
  247. package/dist/commands/secrets.d.ts.map +0 -1
  248. package/dist/commands/secrets.js +0 -98
  249. package/dist/commands/secrets.js.map +0 -1
  250. package/dist/commands/skills/add.d.ts +0 -5
  251. package/dist/commands/skills/add.d.ts.map +0 -1
  252. package/dist/commands/skills/add.js +0 -27
  253. package/dist/commands/skills/add.js.map +0 -1
  254. package/dist/commands/skills/list.d.ts +0 -2
  255. package/dist/commands/skills/list.d.ts.map +0 -1
  256. package/dist/commands/skills/list.js +0 -19
  257. package/dist/commands/skills/list.js.map +0 -1
  258. package/dist/commands/skills/registry.d.ts +0 -19
  259. package/dist/commands/skills/registry.d.ts.map +0 -1
  260. package/dist/commands/skills/registry.js +0 -76
  261. package/dist/commands/skills/registry.js.map +0 -1
  262. package/dist/config/agent-helpers.d.ts +0 -38
  263. package/dist/config/agent-helpers.d.ts.map +0 -1
  264. package/dist/config/agent-helpers.js +0 -58
  265. package/dist/config/agent-helpers.js.map +0 -1
  266. package/dist/templates/Dockerfile.worker.tmpl +0 -29
@@ -1,9 +1,13 @@
1
1
  # Gateway Configuration
2
2
  GATEWAY_PORT={{GATEWAY_PORT}}
3
- DEPLOYMENT_MODE={{DEPLOYMENT_MODE}}
3
+
4
+ # Required external services
5
+ # Lobu connects to a user-provided Postgres. Run one yourself
6
+ # (managed instance, local docker, brew services, whatever you prefer)
7
+ # and point this URL at it.
8
+ DATABASE_URL=
4
9
 
5
10
  # Security
6
- ADMIN_PASSWORD={{ADMIN_PASSWORD}}
7
11
  ENCRYPTION_KEY={{ENCRYPTION_KEY}}
8
12
 
9
13
  # Worker Network Access Control
@@ -14,5 +18,5 @@ ENCRYPTION_KEY={{ENCRYPTION_KEY}}
14
18
  WORKER_ALLOWED_DOMAINS={{WORKER_ALLOWED_DOMAINS}}
15
19
  WORKER_DISALLOWED_DOMAINS={{WORKER_DISALLOWED_DOMAINS}}
16
20
 
17
- # CLI Version (used for image tags)
21
+ # CLI Version (used for diagnostics)
18
22
  CLI_VERSION={{CLI_VERSION}}
@@ -4,84 +4,51 @@ Lobu instance created with `@lobu/cli` v{{CLI_VERSION}}
4
4
 
5
5
  ## Quick Start
6
6
 
7
- Make sure you have Docker CLI installed.
7
+ Lobu boots as a single Node process. Bring your own Postgres (managed instance or local — `brew services start postgresql` works for dev) and point `.env` at it.
8
8
 
9
9
  ```bash
10
- # Start the services
11
- npx @lobu/cli@latest run -d
10
+ # 1. Edit .env and set DATABASE_URL
12
11
 
13
- # View logs
14
- docker compose logs -f
12
+ # 2. Boot Lobu (gateway + workers + memory backend in one Node process)
13
+ npx @lobu/cli@latest run
15
14
 
16
- # Stop the services
17
- docker compose down
15
+ # 3. Stop with Ctrl+C
18
16
  ```
19
17
 
18
+ Logs go to stdout — pipe to your supervisor of choice (`pm2`, `systemd`, etc.) for production.
19
+
20
20
  ## Upgrading to Latest Version
21
21
 
22
- ### Update Gateway and Pre-built Images
23
- Pull the latest images and restart services:
24
- ```bash
25
- docker compose pull
26
- docker compose up -d
27
- ```
22
+ Pull the latest CLI to pick up gateway + worker improvements:
28
23
 
29
- ### Rebuild Worker (when Dockerfile.worker changes)
30
- If you modified your `Dockerfile.worker` or want to use the latest base image:
31
24
  ```bash
32
- docker compose build worker
33
- docker compose restart gateway
25
+ # The CLI ships the embedded backend it boots, so updating the CLI
26
+ # updates Lobu itself. No image pull, no compose restart.
27
+ npx @lobu/cli@latest run
34
28
  ```
35
29
 
36
- ### Update Environment Variables
37
- Check for new environment variables in release notes or the [Lobu documentation](https://github.com/lobu-ai/lobu):
38
- 1. Compare your `.env` with the latest `.env.example` from the repository
39
- 2. Add any new required variables
40
- 3. Restart services: `docker compose restart`
41
-
42
- **Tip**: Always use `latest` tags to ensure gateway and worker versions stay in sync.
30
+ Compare your `.env` with the latest `.env.example` in the [Lobu repo](https://github.com/lobu-ai/lobu) when upgrading and add any new required variables.
43
31
 
44
32
  ## Configuration
45
33
 
46
34
  ### Environment Variables
47
35
 
48
36
  Edit `.env` to configure:
49
- - `PUBLIC_GATEWAY_URL` - Public URL for OAuth callbacks
50
- - `WORKER_ALLOWED_DOMAINS` - Allowed domains for worker network access
37
+
38
+ - `DATABASE_URL` Postgres connection string (with pgvector)
39
+ - `PUBLIC_GATEWAY_URL` — Public URL for OAuth callbacks
40
+ - `WORKER_ALLOWED_DOMAINS` — Allowed domains for worker network access
51
41
 
52
42
  ### Platform Connections
53
43
 
54
- Platforms (Slack, Telegram, Discord, WhatsApp, Teams) are configured through the gateway APIs. No platform-specific env vars are required in `docker-compose.yml`; manage connections against `{PUBLIC_GATEWAY_URL}/api/v1/connections` and related auth/config endpoints.
44
+ Platforms (Slack, Telegram, Discord, WhatsApp, Teams) are configured through the gateway APIs no per-platform env vars are required in `.env`. Manage connections against `{PUBLIC_GATEWAY_URL}/api/v1/connections` and related auth/config endpoints.
55
45
 
56
46
  ### Worker Customization
57
47
 
58
- Edit `Dockerfile.worker` to add custom tools and dependencies.
59
-
60
- Example customizations:
61
- ```dockerfile
62
- # Add system packages
63
- RUN apt-get update && apt-get install -y postgresql-client
64
-
65
- # Add Python packages
66
- RUN pip install pandas matplotlib
67
-
68
- # Add Node.js packages
69
- RUN bun add @octokit/rest
70
- ```
71
-
72
- When you modify `Dockerfile.worker` or context files, rebuild the worker image:
73
- ```bash
74
- docker compose build worker
75
- ```
76
-
77
- The gateway will automatically pick up the latest worker image.
78
-
79
- ## Services
48
+ Worker behavior is controlled by:
80
49
 
81
- The docker-compose.yml defines these services:
82
- - **redis** - Redis cache and queue
83
- - **gateway** - Platform connections and worker orchestration
84
- - **worker** - Agent worker (build-only, spawned dynamically)
50
+ - `[agents.<id>.skills]` blocks in `lobu.toml` declare MCP servers, OAuth, and tool policy.
51
+ - `nixPackages` per agent — pulls binaries onto the worker's `PATH` via `nix-shell`. The worker uses [just-bash](https://github.com/nicholasgasior/just-bash) to wrap shell commands; interpreters and package managers are excluded from the allowlist by default. Set `LOBU_ALLOW_UNSANDBOXED_EXEC=1` per-agent to opt back in if you genuinely need them.
85
52
 
86
53
  ## Learn More
87
54
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobu/cli",
3
- "version": "4.3.0",
3
+ "version": "6.0.0",
4
4
  "description": "CLI for deploying and managing AI agents on Lobu",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -8,7 +8,7 @@
8
8
  "lobu": "bin/lobu.js"
9
9
  },
10
10
  "scripts": {
11
- "build": "tsc && node scripts/build.cjs",
11
+ "build": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc && node scripts/build.cjs",
12
12
  "dev": "tsc --watch"
13
13
  },
14
14
  "keywords": [
@@ -26,16 +26,67 @@
26
26
  "directory": "packages/cli"
27
27
  },
28
28
  "dependencies": {
29
+ "@anthropic-ai/sdk": "^0.90.0",
30
+ "@aws-sdk/client-bedrock": "^3.1028.0",
31
+ "@aws-sdk/client-secrets-manager": "^3.1028.0",
32
+ "@chat-adapter/discord": "4.26.0",
33
+ "@chat-adapter/gchat": "4.26.0",
34
+ "@chat-adapter/slack": "4.26.0",
35
+ "@chat-adapter/teams": "4.26.0",
36
+ "@chat-adapter/telegram": "4.26.0",
37
+ "@chat-adapter/whatsapp": "4.26.0",
38
+ "@hono/node-server": "^1.19.9",
39
+ "@clack/prompts": "^1.2.0",
40
+ "@hono/zod-openapi": "^1.2.1",
29
41
  "@inquirer/prompts": "^7.10.1",
30
- "@lobu/core": "4.3.0",
42
+ "@lobu/core": "6.0.0",
43
+ "@lobu/owletto-sdk": "6.0.0",
44
+ "@lobu/worker": "6.0.0",
45
+ "@mariozechner/pi-ai": "^0.51.6",
46
+ "@modelcontextprotocol/sdk": "^1.27.1",
47
+ "@opentelemetry/api": "^1.9.0",
48
+ "@opentelemetry/exporter-trace-otlp-grpc": "^0.57.0",
49
+ "@opentelemetry/resources": "^1.30.0",
50
+ "@opentelemetry/sdk-trace-node": "^1.30.0",
51
+ "@opentelemetry/semantic-conventions": "^1.28.0",
52
+ "@polyglot-sql/sdk": "^0.1.13",
53
+ "@react-email/components": "^1.0.12",
54
+ "@react-email/render": "^2.0.7",
55
+ "@scalar/hono-api-reference": "^0.9.39",
56
+ "@sentry/node": "^10.23.0",
57
+ "@sinclair/typebox": "^0.34.41",
58
+ "@slack/socket-mode": "^2.0.6",
59
+ "ajv": "^8.17.1",
60
+ "ajv-formats": "^3.0.1",
61
+ "better-auth": "^1.4.10",
31
62
  "chalk": "^5.3.0",
32
- "commander": "^12.0.0",
63
+ "chat": "^4.26.0",
64
+ "commander": "^14.0.1",
65
+ "cron-parser": "^5.5.0",
66
+ "dotenv": "^17.2.1",
67
+ "esbuild": "^0.27.0",
68
+ "handlebars": "^4.7.9",
69
+ "hono": "^4.11.7",
70
+ "hono-pino": "^0.10.3",
71
+ "ky": "^1.14.0",
72
+ "kysely": "^0.28.0",
73
+ "kysely-postgres-js": "^2.0.0",
33
74
  "marked": "^17.0.4",
34
75
  "marked-terminal": "^7.3.0",
76
+ "node-sql-parser": "^5.4.0",
35
77
  "open": "^10.1.0",
36
78
  "ora": "^8.0.1",
79
+ "p-retry": "^7.1.0",
80
+ "pg": "^8.16.3",
81
+ "pino": "^10.1.0",
82
+ "postgres": "^3.4.7",
83
+ "react": "^19.2.5",
84
+ "resend": "^6.6.0",
85
+ "playwright": "npm:patchright@^1.57.0",
37
86
  "smol-toml": "^1.3.1",
38
- "yaml": "^2.7.0",
87
+ "vite": "^6.0.0",
88
+ "winston": "^3.17.0",
89
+ "yaml": "^2.7.1",
39
90
  "zod": "^4.1.12"
40
91
  },
41
92
  "devDependencies": {
@@ -48,6 +99,9 @@
48
99
  "README.md"
49
100
  ],
50
101
  "engines": {
51
- "node": ">=18.0.0"
102
+ "node": ">=22.0.0"
103
+ },
104
+ "optionalDependencies": {
105
+ "isolated-vm": "^6.1.2"
52
106
  }
53
107
  }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=skills.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/skills.test.ts"],"names":[],"mappings":""}
@@ -1,33 +0,0 @@
1
- import { afterEach, describe, expect, test } from "bun:test";
2
- import { existsSync, mkdtempSync, readFileSync, rmSync } from "node:fs";
3
- import { tmpdir } from "node:os";
4
- import { join } from "node:path";
5
- import { installBundledSkill, listBundledSkills, } from "../commands/skills/registry.js";
6
- describe("bundled starter skills", () => {
7
- const tempDirs = [];
8
- afterEach(() => {
9
- while (tempDirs.length > 0) {
10
- const dir = tempDirs.pop();
11
- if (dir)
12
- rmSync(dir, { recursive: true, force: true });
13
- }
14
- });
15
- test("lists the public Lobu starter skill", () => {
16
- const skills = listBundledSkills();
17
- expect(skills.map((skill) => skill.id)).toContain("lobu");
18
- const lobu = skills.find((skill) => skill.id === "lobu");
19
- expect(lobu?.files).toContain("SKILL.md");
20
- expect(lobu?.description.length).toBeGreaterThan(0);
21
- });
22
- test("installs the Lobu starter skill into skills/<id>", () => {
23
- const cwd = mkdtempSync(join(tmpdir(), "lobu-skill-install-"));
24
- tempDirs.push(cwd);
25
- const { destinationDir } = installBundledSkill("lobu", cwd);
26
- expect(destinationDir).toBe(join(cwd, "skills", "lobu"));
27
- expect(existsSync(join(destinationDir, "SKILL.md"))).toBe(true);
28
- const content = readFileSync(join(destinationDir, "SKILL.md"), "utf-8");
29
- expect(content).toContain("# Lobu");
30
- expect(content).toContain("Owletto");
31
- });
32
- });
33
- //# sourceMappingURL=skills.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills.test.js","sourceRoot":"","sources":["../../src/__tests__/skills.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,gCAAgC,CAAC;AAExC,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;YAC3B,IAAI,GAAG;gBAAE,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC/C,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE1D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;QACzD,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC5D,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAC/D,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEnB,MAAM,EAAE,cAAc,EAAE,GAAG,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAE5D,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhE,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;QACxE,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function connectionsAddCommand(cwd: string, platform: string): Promise<void>;
2
- //# sourceMappingURL=add.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/commands/connections/add.ts"],"names":[],"mappings":"AAkBA,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CA2Df"}
@@ -1,46 +0,0 @@
1
- import chalk from "chalk";
2
- import { appendTomlBlock, loadAgentContext, setSecrets, } from "../../config/agent-helpers.js";
3
- import { CONFIG_FILENAME } from "../../config/loader.js";
4
- import { PLATFORM_LABELS, promptPlatformConfig } from "./platforms.js";
5
- const SUPPORTED = [
6
- "telegram",
7
- "slack",
8
- "discord",
9
- "whatsapp",
10
- "teams",
11
- "gchat",
12
- ];
13
- export async function connectionsAddCommand(cwd, platform) {
14
- if (!SUPPORTED.includes(platform)) {
15
- console.log(chalk.red(`\n Platform "${platform}" is not supported.`));
16
- console.log(chalk.dim(` Supported: ${SUPPORTED.join(", ")}\n`));
17
- return;
18
- }
19
- const ctx = await loadAgentContext(cwd);
20
- if (!ctx)
21
- return;
22
- const existing = (ctx.agent.connections ?? []);
23
- if (existing.some((c) => c.type === platform)) {
24
- console.log(chalk.yellow(`\n Connection "${platform}" is already configured for agent "${ctx.agentId}".\n`));
25
- return;
26
- }
27
- console.log(chalk.dim(`\n Adding ${PLATFORM_LABELS[platform]} connection to agent "${ctx.agentId}".\n`));
28
- const { connectionConfig, connectionSecrets } = await promptPlatformConfig(platform);
29
- if (Object.keys(connectionConfig).length === 0) {
30
- console.log(chalk.yellow("\n No credentials provided. Aborting.\n"));
31
- return;
32
- }
33
- const lines = [
34
- "",
35
- `[[agents.${ctx.agentId}.connections]]`,
36
- `type = "${platform}"`,
37
- "",
38
- `[agents.${ctx.agentId}.connections.config]`,
39
- ...Object.entries(connectionConfig).map(([key, value]) => `${key} = "${value}"`),
40
- ];
41
- await appendTomlBlock(ctx, lines);
42
- await setSecrets(cwd, connectionSecrets);
43
- console.log(chalk.green(`\n Added ${PLATFORM_LABELS[platform]} connection to ${CONFIG_FILENAME}`));
44
- console.log(chalk.dim(" Run `lobu run -d` to start the stack with the new connection.\n"));
45
- }
46
- //# sourceMappingURL=add.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/commands/connections/add.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,UAAU,GACX,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEvE,MAAM,SAAS,GAAG;IAChB,UAAU;IACV,OAAO;IACP,SAAS;IACT,UAAU;IACV,OAAO;IACP,OAAO;CACR,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAW,EACX,QAAgB;IAEhB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,QAAQ,qBAAqB,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,GAAG;QAAE,OAAO;IAEjB,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAE5C,CAAC;IACF,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC9C,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,mBAAmB,QAAQ,sCAAsC,GAAG,CAAC,OAAO,MAAM,CACnF,CACF,CAAC;QACF,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,cAAc,eAAe,CAAC,QAAQ,CAAC,yBAAyB,GAAG,CAAC,OAAO,MAAM,CAClF,CACF,CAAC;IAEF,MAAM,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,GAC3C,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAEvC,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,EAAE;QACF,YAAY,GAAG,CAAC,OAAO,gBAAgB;QACvC,WAAW,QAAQ,GAAG;QACtB,EAAE;QACF,WAAW,GAAG,CAAC,OAAO,sBAAsB;QAC5C,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CACrC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,KAAK,GAAG,CACxC;KACF,CAAC;IACF,MAAM,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAClC,MAAM,UAAU,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAEzC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,aAAa,eAAe,CAAC,QAAQ,CAAC,kBAAkB,eAAe,EAAE,CAC1E,CACF,CAAC;IACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,mEAAmE,CACpE,CACF,CAAC;AACJ,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function connectionsListCommand(cwd: string): Promise<void>;
2
- //# sourceMappingURL=list.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/connections/list.ts"],"names":[],"mappings":"AAIA,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBvE"}
@@ -1,25 +0,0 @@
1
- import chalk from "chalk";
2
- import { loadAgentContext } from "../../config/agent-helpers.js";
3
- import { PLATFORM_LABELS } from "./platforms.js";
4
- export async function connectionsListCommand(cwd) {
5
- const ctx = await loadAgentContext(cwd);
6
- if (!ctx)
7
- return;
8
- console.log();
9
- for (const [agentId, agent] of Object.entries(ctx.agents)) {
10
- const connections = (agent.connections ?? []);
11
- console.log(chalk.bold(` ${agentId}`));
12
- if (connections.length === 0) {
13
- console.log(chalk.dim(" (no connections configured)"));
14
- }
15
- else {
16
- for (const c of connections) {
17
- const type = c.type;
18
- const label = PLATFORM_LABELS[type] ?? type;
19
- console.log(` ${chalk.cyan("●")} ${label} ${chalk.dim(`(${type})`)}`);
20
- }
21
- }
22
- console.log();
23
- }
24
- }
25
- //# sourceMappingURL=list.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/connections/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,GAAW;IACtD,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,GAAG;QAAE,OAAO;IAEjB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1D,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAE3C,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;QACxC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAc,CAAC;gBAC9B,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;gBAC5C,OAAO,CAAC,GAAG,CACT,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAC5D,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACH,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"platforms.d.ts","sourceRoot":"","sources":["../../../src/commands/connections/platforms.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,UAAU,oBAAoB;IAC5B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,iBAAiB,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7D;AAED,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOlD,CAAC;AAEF,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC,CAgI/B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"platforms.js","sourceRoot":"","sources":["../../../src/commands/connections/platforms.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function providersAddCommand(cwd: string, providerId: string): Promise<void>;
2
- //# sourceMappingURL=add.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/commands/providers/add.ts"],"names":[],"mappings":"AAUA,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CA6Df"}
@@ -1,50 +0,0 @@
1
- import { password } from "@inquirer/prompts";
2
- import chalk from "chalk";
3
- import { appendTomlBlock, loadAgentContext, setSecrets, } from "../../config/agent-helpers.js";
4
- import { CONFIG_FILENAME } from "../../config/loader.js";
5
- import { getProviderById } from "./registry.js";
6
- export async function providersAddCommand(cwd, providerId) {
7
- const providerEntry = getProviderById(providerId);
8
- if (!providerEntry) {
9
- console.log(chalk.red(`\n Provider "${providerId}" not found.`));
10
- console.log(chalk.dim(" Run `npx @lobu/cli@latest providers list` to see available providers.\n"));
11
- return;
12
- }
13
- const ctx = await loadAgentContext(cwd);
14
- if (!ctx)
15
- return;
16
- const providers = (ctx.agent.providers ?? []);
17
- if (providers.some((p) => p.id === providerId)) {
18
- console.log(chalk.yellow(`\n Provider "${providerId}" is already configured.\n`));
19
- return;
20
- }
21
- const provider = providerEntry.providers?.[0];
22
- if (!provider)
23
- return;
24
- const defaultModel = provider.defaultModel;
25
- const envVar = provider.envVarName;
26
- const apiKey = await password({
27
- message: `${provider.displayName} API key:`,
28
- mask: true,
29
- });
30
- await appendTomlBlock(ctx, [
31
- "",
32
- `[[agents.${ctx.agentId}.providers]]`,
33
- `id = "${providerId}"`,
34
- ...(defaultModel ? [`model = "${defaultModel}"`] : []),
35
- `key = "$${envVar}"`,
36
- ]);
37
- if (apiKey) {
38
- await setSecrets(cwd, [{ envVar, value: apiKey }]);
39
- }
40
- console.log(chalk.green(`\n Added provider "${providerId}" to ${CONFIG_FILENAME}`));
41
- if (defaultModel) {
42
- console.log(chalk.dim(` Default model: ${defaultModel}`));
43
- }
44
- if (!apiKey) {
45
- console.log(chalk.dim("\n Set the API key:"));
46
- console.log(chalk.cyan(` npx @lobu/cli@latest secrets set ${envVar} <your-key>`));
47
- }
48
- console.log();
49
- }
50
- //# sourceMappingURL=add.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/commands/providers/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,UAAU,GACX,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAW,EACX,UAAkB;IAElB,MAAM,aAAa,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAClD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,UAAU,cAAc,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,2EAA2E,CAC5E,CACF,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,GAAG;QAAE,OAAO;IAEjB,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAE3C,CAAC;IACF,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,iBAAiB,UAAU,4BAA4B,CAAC,CACtE,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ;QAAE,OAAO;IAEtB,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;IAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC;IAEnC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;QAC5B,OAAO,EAAE,GAAG,QAAQ,CAAC,WAAW,WAAW;QAC3C,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,MAAM,eAAe,CAAC,GAAG,EAAE;QACzB,EAAE;QACF,YAAY,GAAG,CAAC,OAAO,cAAc;QACrC,SAAS,UAAU,GAAG;QACtB,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,WAAW,MAAM,GAAG;KACrB,CAAC,CAAC;IAEH,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,uBAAuB,UAAU,QAAQ,eAAe,EAAE,CAAC,CACxE,CAAC;IACF,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,YAAY,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,wCAAwC,MAAM,aAAa,CAAC,CACxE,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function providersListCommand(): Promise<void>;
2
- //# sourceMappingURL=list.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/providers/list.ts"],"names":[],"mappings":"AAGA,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CA8B1D"}
@@ -1,22 +0,0 @@
1
- import chalk from "chalk";
2
- import { loadProviderRegistry } from "./registry.js";
3
- export async function providersListCommand() {
4
- const providers = loadProviderRegistry();
5
- if (providers.length === 0) {
6
- console.log(chalk.yellow("\n No providers found in the bundled registry.\n"));
7
- return;
8
- }
9
- console.log(chalk.bold("\n Available LLM Providers:\n"));
10
- const maxIdLen = Math.max(...providers.map((provider) => provider.id.length));
11
- for (const provider of providers) {
12
- const meta = provider.providers[0];
13
- if (!meta)
14
- continue;
15
- const model = meta.defaultModel
16
- ? chalk.dim(` default: ${meta.defaultModel}`)
17
- : "";
18
- console.log(` ${chalk.cyan(provider.id.padEnd(maxIdLen))} ${meta.displayName}${model}`);
19
- }
20
- console.log(chalk.dim("\n Use `npx @lobu/cli@latest providers add <id>` to add a provider to lobu.toml.\n"));
21
- }
22
- //# sourceMappingURL=list.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/providers/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,SAAS,GAAG,oBAAoB,EAAE,CAAC;IAEzC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,mDAAmD,CAAC,CAClE,CAAC;QACF,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAE1D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAE9E,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY;YAC7B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7C,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,GAAG,KAAK,EAAE,CAC7E,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,qFAAqF,CACtF,CACF,CAAC;AACJ,CAAC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Local .env file management for dev mode secrets.
3
- * Cloud secrets will use the API when available.
4
- */
5
- export declare function secretsSetCommand(cwd: string, key: string, value: string): Promise<void>;
6
- export declare function secretsListCommand(cwd: string): Promise<void>;
7
- export declare function secretsDeleteCommand(cwd: string, key: string): Promise<void>;
8
- //# sourceMappingURL=secrets.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/commands/secrets.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDnE;AAED,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAuBf"}
@@ -1,98 +0,0 @@
1
- import { readFile, writeFile } from "node:fs/promises";
2
- import { join } from "node:path";
3
- import chalk from "chalk";
4
- /**
5
- * Local .env file management for dev mode secrets.
6
- * Cloud secrets will use the API when available.
7
- */
8
- export async function secretsSetCommand(cwd, key, value) {
9
- const envPath = join(cwd, ".env");
10
- let content = "";
11
- try {
12
- content = await readFile(envPath, "utf-8");
13
- }
14
- catch {
15
- // No .env yet
16
- }
17
- const lines = content.split("\n");
18
- let found = false;
19
- const updated = lines.map((line) => {
20
- const trimmed = line.trim();
21
- if (trimmed.startsWith(`${key}=`)) {
22
- found = true;
23
- return `${key}=${value}`;
24
- }
25
- return line;
26
- });
27
- if (!found) {
28
- updated.push(`${key}=${value}`);
29
- }
30
- await writeFile(envPath, updated.join("\n"));
31
- console.log(chalk.green(`\n Set ${key} in .env\n`));
32
- }
33
- export async function secretsListCommand(cwd) {
34
- const envPath = join(cwd, ".env");
35
- let content = "";
36
- try {
37
- content = await readFile(envPath, "utf-8");
38
- }
39
- catch {
40
- console.log(chalk.dim("\n No .env file found.\n"));
41
- return;
42
- }
43
- const secrets = [];
44
- for (const line of content.split("\n")) {
45
- const trimmed = line.trim();
46
- if (!trimmed || trimmed.startsWith("#"))
47
- continue;
48
- const eqIdx = trimmed.indexOf("=");
49
- if (eqIdx === -1)
50
- continue;
51
- const key = trimmed.slice(0, eqIdx);
52
- const value = trimmed.slice(eqIdx + 1);
53
- // Redact values that look like secrets
54
- const isSecret = key.includes("KEY") ||
55
- key.includes("SECRET") ||
56
- key.includes("TOKEN") ||
57
- key.includes("PASSWORD");
58
- const preview = isSecret
59
- ? value.length > 4
60
- ? `${value.slice(0, 4)}${"*".repeat(Math.min(value.length - 4, 20))}`
61
- : "****"
62
- : value;
63
- secrets.push({ key, preview });
64
- }
65
- if (secrets.length === 0) {
66
- console.log(chalk.dim("\n No secrets found in .env\n"));
67
- return;
68
- }
69
- console.log(chalk.bold("\n Secrets (.env):"));
70
- const maxKeyLen = Math.max(...secrets.map((s) => s.key.length));
71
- for (const { key, preview } of secrets) {
72
- console.log(` ${chalk.cyan(key.padEnd(maxKeyLen))} ${chalk.dim(preview)}`);
73
- }
74
- console.log();
75
- }
76
- export async function secretsDeleteCommand(cwd, key) {
77
- const envPath = join(cwd, ".env");
78
- let content = "";
79
- try {
80
- content = await readFile(envPath, "utf-8");
81
- }
82
- catch {
83
- console.log(chalk.dim("\n No .env file found.\n"));
84
- return;
85
- }
86
- const lines = content.split("\n");
87
- const filtered = lines.filter((line) => {
88
- const trimmed = line.trim();
89
- return !trimmed.startsWith(`${key}=`);
90
- });
91
- if (lines.length === filtered.length) {
92
- console.log(chalk.yellow(`\n Key "${key}" not found in .env\n`));
93
- return;
94
- }
95
- await writeFile(envPath, filtered.join("\n"));
96
- console.log(chalk.green(`\n Removed ${key} from .env\n`));
97
- }
98
- //# sourceMappingURL=secrets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/commands/secrets.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export declare function skillsAddCommand(cwd: string, skillId: string, options?: {
2
- dir?: string;
3
- force?: boolean;
4
- }): Promise<void>;
5
- //# sourceMappingURL=add.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/add.ts"],"names":[],"mappings":"AAGA,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1C,OAAO,CAAC,IAAI,CAAC,CA8Bf"}