@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.
- package/README.md +17 -221
- package/dist/api/context.d.ts +0 -2
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +2 -2
- package/dist/api/context.js.map +1 -1
- package/dist/commands/chat.d.ts +7 -2
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +111 -25
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/dev.d.ts +3 -2
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +17 -165
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +132 -59
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/skills/info.d.ts.map +1 -1
- package/dist/commands/skills/info.js +0 -9
- package/dist/commands/skills/info.js.map +1 -1
- package/dist/commands/skills/list.d.ts.map +1 -1
- package/dist/commands/skills/list.js +5 -6
- package/dist/commands/skills/list.js.map +1 -1
- package/dist/commands/skills/registry.d.ts +1 -11
- package/dist/commands/skills/registry.d.ts.map +1 -1
- package/dist/commands/skills/registry.js +0 -3
- package/dist/commands/skills/registry.js.map +1 -1
- package/dist/commands/status.js +1 -1
- package/dist/config/loader.d.ts +0 -18
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +2 -62
- package/dist/config/loader.js.map +1 -1
- package/dist/index.js +8 -15
- package/dist/index.js.map +1 -1
- package/dist/mcp-servers.json +8 -8
- package/dist/system-skills.json +52 -309
- package/dist/templates/README.md.tmpl +4 -4
- package/dist/templates/TESTING.md.tmpl +19 -19
- package/package.json +1 -2
- package/dist/__tests__/login.test.d.ts +0 -2
- package/dist/__tests__/login.test.d.ts.map +0 -1
- package/dist/__tests__/login.test.js +0 -173
- package/dist/__tests__/login.test.js.map +0 -1
- package/dist/api/client.d.ts +0 -11
- package/dist/api/client.d.ts.map +0 -1
- package/dist/api/client.js +0 -33
- package/dist/api/client.js.map +0 -1
- package/dist/commands/launch.d.ts +0 -6
- package/dist/commands/launch.d.ts.map +0 -1
- package/dist/commands/launch.js +0 -26
- package/dist/commands/launch.js.map +0 -1
- package/dist/config/agents-manifest.d.ts +0 -92
- package/dist/config/agents-manifest.d.ts.map +0 -1
- package/dist/config/agents-manifest.js +0 -7
- package/dist/config/agents-manifest.js.map +0 -1
- package/dist/config/platform-schemas.d.ts +0 -120
- package/dist/config/platform-schemas.d.ts.map +0 -1
- package/dist/config/platform-schemas.js +0 -97
- package/dist/config/platform-schemas.js.map +0 -1
- package/dist/config/transformer.d.ts +0 -14
- package/dist/config/transformer.d.ts.map +0 -1
- package/dist/config/transformer.js +0 -46
- package/dist/config/transformer.js.map +0 -1
- package/dist/mcp-servers.d.ts +0 -11
- package/dist/mcp-servers.d.ts.map +0 -1
- package/dist/mcp-servers.js +0 -27
- package/dist/mcp-servers.js.map +0 -1
- package/dist/types.d.ts +0 -76
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/utils/config.d.ts +0 -2
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js +0 -13
- package/dist/utils/config.js.map +0 -1
package/README.md
CHANGED
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
CLI tool for initializing and managing Lobu projects.
|
|
4
4
|
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
### npx (Recommended)
|
|
5
|
+
## Quick Start
|
|
8
6
|
|
|
9
7
|
```bash
|
|
10
8
|
npx @lobu/cli init my-bot
|
|
@@ -12,106 +10,26 @@ cd my-bot
|
|
|
12
10
|
docker compose up -d
|
|
13
11
|
```
|
|
14
12
|
|
|
15
|
-
### Global Install
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
npm install -g @lobu/cli
|
|
19
|
-
|
|
20
|
-
lobu init my-bot
|
|
21
|
-
cd my-bot
|
|
22
|
-
docker compose up -d
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Worker Deployment Options
|
|
26
|
-
|
|
27
|
-
Lobu supports two deployment patterns for workers:
|
|
28
|
-
|
|
29
|
-
### Option 1: Base Image (Day 0 - Quick Start)
|
|
30
|
-
|
|
31
|
-
**Best for:** Beginners, tutorials, quick prototypes
|
|
32
|
-
|
|
33
|
-
```dockerfile
|
|
34
|
-
# Extends our curated base image
|
|
35
|
-
FROM ghcr.io/lobu-ai/lobu-worker-base:0.1.0
|
|
36
|
-
|
|
37
|
-
# Add your customizations
|
|
38
|
-
RUN pip install pandas
|
|
39
|
-
RUN apt-get install postgresql-client
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
**Pros:**
|
|
43
|
-
- Turnkey experience - just works
|
|
44
|
-
- All dependencies pre-installed
|
|
45
|
-
- Predictable environment
|
|
46
|
-
|
|
47
|
-
**Cons:**
|
|
48
|
-
- Stuck with our base OS choice
|
|
49
|
-
- May not meet compliance requirements
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
### Option 2: Package Installation (Day 2 - Advanced)
|
|
54
|
-
|
|
55
|
-
**Best for:** Enterprise, compliance-heavy environments, custom requirements
|
|
56
|
-
|
|
57
|
-
```dockerfile
|
|
58
|
-
# Use YOUR approved base image
|
|
59
|
-
FROM company-registry/ubuntu:22.04
|
|
60
|
-
|
|
61
|
-
# Install system dependencies
|
|
62
|
-
RUN apt-get update && apt-get install -y \
|
|
63
|
-
nodejs npm git docker.io python3 curl
|
|
64
|
-
|
|
65
|
-
# Install Claude CLI
|
|
66
|
-
RUN curl -L https://claude.ai/install.sh | sh
|
|
67
|
-
|
|
68
|
-
# Install Lobu worker as a package
|
|
69
|
-
RUN npm install -g @lobu/worker@^0.1.0
|
|
70
|
-
|
|
71
|
-
# Your customizations
|
|
72
|
-
COPY ./scripts /workspace/scripts
|
|
73
|
-
|
|
74
|
-
CMD ["lobu-worker"]
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
**Pros:**
|
|
78
|
-
- Full control over base OS
|
|
79
|
-
- Use company-approved images
|
|
80
|
-
- Smaller images (Alpine, Distroless)
|
|
81
|
-
- Meet security/compliance requirements
|
|
82
|
-
|
|
83
|
-
**Cons:**
|
|
84
|
-
- More setup required
|
|
85
|
-
- Must install system dependencies yourself
|
|
86
|
-
|
|
87
|
-
See [Worker Package Documentation](../worker/docs/custom-base-image.md) for details.
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
13
|
## Commands
|
|
92
14
|
|
|
93
|
-
### `lobu init`
|
|
94
|
-
|
|
95
|
-
Initialize a new Lobu project in the current directory.
|
|
15
|
+
### `lobu init [name]`
|
|
96
16
|
|
|
97
|
-
|
|
98
|
-
- **Worker mode:** Base image vs Package installation
|
|
99
|
-
- Slack credentials
|
|
100
|
-
- Anthropic API key
|
|
101
|
-
- Public gateway URL (for OAuth)
|
|
17
|
+
Scaffold a new Lobu project with interactive prompts:
|
|
102
18
|
|
|
103
|
-
**
|
|
104
|
-
-
|
|
105
|
-
-
|
|
106
|
-
-
|
|
107
|
-
-
|
|
19
|
+
- **Project name** and **deployment mode** (embedded/Docker workers)
|
|
20
|
+
- **Gateway port** and optional **public URL** (for OAuth callbacks)
|
|
21
|
+
- **Admin password**
|
|
22
|
+
- **Worker network access** (isolated, allowlist, or unrestricted)
|
|
23
|
+
- **AI provider** selection from the skills registry + API key
|
|
24
|
+
- **Skills** to enable (from `config/system-skills.json`)
|
|
25
|
+
- **Messaging platform** (Telegram, Slack, Discord, or none)
|
|
26
|
+
- **Auth provider** (Owletto, custom, or none)
|
|
27
|
+
- **Memory plugin** configuration
|
|
108
28
|
|
|
109
|
-
**
|
|
29
|
+
**Generates:** `docker-compose.yml`, `.env`, `Dockerfile.worker`, `lobu.toml`, `IDENTITY.md`, `.gitignore`, `README.md`
|
|
110
30
|
|
|
111
31
|
## Usage
|
|
112
32
|
|
|
113
|
-
After running `npx @lobu/cli init`:
|
|
114
|
-
|
|
115
33
|
```bash
|
|
116
34
|
# Start services
|
|
117
35
|
docker compose up -d
|
|
@@ -126,9 +44,9 @@ docker compose down
|
|
|
126
44
|
docker compose build worker
|
|
127
45
|
```
|
|
128
46
|
|
|
129
|
-
##
|
|
47
|
+
## Worker Customization
|
|
130
48
|
|
|
131
|
-
|
|
49
|
+
Extend the generated `Dockerfile.worker` to add tools:
|
|
132
50
|
|
|
133
51
|
```dockerfile
|
|
134
52
|
FROM ghcr.io/lobu-ai/lobu-worker-base:0.1.0
|
|
@@ -139,134 +57,12 @@ RUN apt-get update && apt-get install -y postgresql-client
|
|
|
139
57
|
# Add Python packages
|
|
140
58
|
RUN pip install pandas matplotlib
|
|
141
59
|
|
|
142
|
-
# Add Node.js packages
|
|
143
|
-
RUN bun add @octokit/rest
|
|
144
|
-
|
|
145
60
|
# Copy custom scripts
|
|
146
61
|
COPY ./scripts /workspace/scripts
|
|
147
62
|
```
|
|
148
63
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
```dockerfile
|
|
152
|
-
# Bring your own base
|
|
153
|
-
FROM node:20-alpine
|
|
154
|
-
|
|
155
|
-
# Install required system dependencies
|
|
156
|
-
RUN apk add --no-cache git docker-cli python3 py3-pip curl
|
|
157
|
-
|
|
158
|
-
# Install Claude CLI
|
|
159
|
-
RUN curl -L https://claude.ai/install.sh | sh
|
|
160
|
-
|
|
161
|
-
# Install worker package
|
|
162
|
-
RUN npm install -g @lobu/worker@^0.1.0
|
|
163
|
-
|
|
164
|
-
# Your customizations
|
|
165
|
-
RUN pip3 install pandas matplotlib
|
|
166
|
-
|
|
167
|
-
CMD ["lobu-worker"]
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
## Development Workflow
|
|
171
|
-
|
|
172
|
-
```bash
|
|
173
|
-
# 1. Create project
|
|
174
|
-
npx @lobu/cli init my-bot
|
|
175
|
-
|
|
176
|
-
# 2. Choose worker mode during init
|
|
177
|
-
# - Base image (recommended)
|
|
178
|
-
# - Package installation (advanced)
|
|
179
|
-
|
|
180
|
-
# 3. Customize worker (optional)
|
|
181
|
-
# Edit Dockerfile.worker
|
|
182
|
-
|
|
183
|
-
# 4. Start services
|
|
184
|
-
cd my-bot
|
|
185
|
-
docker compose up -d
|
|
186
|
-
|
|
187
|
-
# 5. View logs
|
|
188
|
-
docker compose logs -f
|
|
189
|
-
|
|
190
|
-
# 6. Rebuild after changes
|
|
191
|
-
docker compose build worker
|
|
192
|
-
|
|
193
|
-
# 7. Stop services
|
|
194
|
-
docker compose down
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
## Version Locking
|
|
198
|
-
|
|
199
|
-
The CLI version locks to base image versions:
|
|
200
|
-
|
|
201
|
-
- CLI `0.1.0` -> `ghcr.io/lobu-ai/lobu-worker-base:0.1.0`
|
|
202
|
-
- CLI `0.2.0` -> `ghcr.io/lobu-ai/lobu-worker-base:0.2.0`
|
|
203
|
-
|
|
204
|
-
This ensures compatibility between CLI and runtime images.
|
|
205
|
-
|
|
206
|
-
## Distribution Strategy
|
|
207
|
-
|
|
208
|
-
Lobu uses a dual distribution pattern:
|
|
209
|
-
|
|
210
|
-
**Day 0 (Quick Start):**
|
|
211
|
-
- Use `ghcr.io/lobu-ai/lobu-worker-base` Docker image
|
|
212
|
-
- Extend with Dockerfile
|
|
213
|
-
- Perfect for learning, prototypes
|
|
214
|
-
|
|
215
|
-
**Day 2+ (Production):**
|
|
216
|
-
- Install `@lobu/worker` npm package
|
|
217
|
-
- Use your own base image
|
|
218
|
-
- Perfect for enterprise, compliance
|
|
219
|
-
|
|
220
|
-
## Published Artifacts
|
|
221
|
-
|
|
222
|
-
**GHCR:**
|
|
223
|
-
```bash
|
|
224
|
-
# For production (gateway)
|
|
225
|
-
docker pull ghcr.io/lobu-ai/lobu-gateway:0.1.0
|
|
226
|
-
|
|
227
|
-
# For quick start (extend this)
|
|
228
|
-
docker pull ghcr.io/lobu-ai/lobu-worker-base:0.1.0
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
**NPM Registry:**
|
|
232
|
-
```bash
|
|
233
|
-
# CLI tool
|
|
234
|
-
npm install -g @lobu/cli
|
|
235
|
-
|
|
236
|
-
# Worker runtime (for custom base images)
|
|
237
|
-
npm install -g @lobu/worker@0.1.0
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
## Architecture
|
|
241
|
-
|
|
242
|
-
```
|
|
243
|
-
User creates project
|
|
244
|
-
|
|
|
245
|
-
npx @lobu/cli init my-bot
|
|
246
|
-
|
|
|
247
|
-
Choose: Base image or Package?
|
|
248
|
-
|
|
|
249
|
-
+---------------+----------------+
|
|
250
|
-
| Base Image Mode | Package Mode
|
|
251
|
-
| |
|
|
252
|
-
| FROM lobu-worker-base | FROM your-company/base
|
|
253
|
-
| RUN pip install pandas | RUN npm install -g @lobu/worker
|
|
254
|
-
| | RUN pip install pandas
|
|
255
|
-
+---------------+----------------+
|
|
256
|
-
|
|
|
257
|
-
CLI generates docker-compose.yml
|
|
258
|
-
|
|
|
259
|
-
User runs: docker compose up -d
|
|
260
|
-
|
|
|
261
|
-
Docker builds worker:latest
|
|
262
|
-
|
|
|
263
|
-
Gateway spawns workers dynamically
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
## Contributing
|
|
267
|
-
|
|
268
|
-
Lobu CLI generates Docker Compose configurations. To modify the generated setup, see `src/commands/init.ts`.
|
|
64
|
+
See [custom base image docs](../worker/docs/custom-base-image.md) for using your own base image.
|
|
269
65
|
|
|
270
66
|
## License
|
|
271
67
|
|
|
272
|
-
|
|
68
|
+
Apache-2.0
|
package/dist/api/context.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export declare const LOBU_CONFIG_DIR: string;
|
|
2
2
|
export declare const DEFAULT_CONTEXT_NAME = "community";
|
|
3
|
-
export declare const DEFAULT_API_URL = "https://community.lobu.ai/api/v1";
|
|
4
3
|
export interface LobuContextEntry {
|
|
5
4
|
apiUrl: string;
|
|
6
5
|
}
|
|
@@ -14,7 +13,6 @@ export interface ResolvedContext {
|
|
|
14
13
|
source: "default" | "config" | "env";
|
|
15
14
|
}
|
|
16
15
|
export declare function loadContextConfig(): Promise<LobuContextConfig>;
|
|
17
|
-
export declare function saveContextConfig(config: LobuContextConfig): Promise<void>;
|
|
18
16
|
export declare function getCurrentContextName(): Promise<string>;
|
|
19
17
|
export declare function resolveContext(preferredContext?: string): Promise<ResolvedContext>;
|
|
20
18
|
export declare function addContext(name: string, apiUrl: string): Promise<LobuContextConfig>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/api/context.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe,QAAqC,CAAC;AAClE,eAAO,MAAM,oBAAoB,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/api/context.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe,QAAqC,CAAC;AAClE,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAKhD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;CACtC;AAOD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAQpE;AASD,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAQ7D;AAED,wBAAsB,cAAc,CAClC,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,eAAe,CAAC,CA2B1B;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC,CAY5B;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,iBAAiB,CAAC,CAgB5B"}
|
package/dist/api/context.js
CHANGED
|
@@ -3,7 +3,7 @@ import { homedir } from "node:os";
|
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
export const LOBU_CONFIG_DIR = join(homedir(), ".config", "lobu");
|
|
5
5
|
export const DEFAULT_CONTEXT_NAME = "community";
|
|
6
|
-
|
|
6
|
+
const DEFAULT_API_URL = "https://community.lobu.ai/api/v1";
|
|
7
7
|
const CONTEXTS_FILE = join(LOBU_CONFIG_DIR, "config.json");
|
|
8
8
|
export async function loadContextConfig() {
|
|
9
9
|
try {
|
|
@@ -15,7 +15,7 @@ export async function loadContextConfig() {
|
|
|
15
15
|
return normalizeContextConfig({});
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
|
|
18
|
+
async function saveContextConfig(config) {
|
|
19
19
|
await mkdir(LOBU_CONFIG_DIR, { recursive: true });
|
|
20
20
|
await writeFile(CONTEXTS_FILE, JSON.stringify(config, null, 2), {
|
|
21
21
|
mode: 0o600,
|
package/dist/api/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/api/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAChD,MAAM,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/api/context.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/chat.d.ts
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `lobu chat "prompt"` — send a prompt to an agent and stream the response.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Without --user: API mode — creates a session, sends message, streams to terminal.
|
|
5
|
+
* With --user platform:id: Platform mode — sends through Telegram/Slack, response
|
|
6
|
+
* appears on the platform. Terminal shows the streamed response too.
|
|
6
7
|
*/
|
|
7
8
|
export declare function chatCommand(cwd: string, prompt: string, options: {
|
|
8
9
|
agent?: string;
|
|
9
10
|
gateway?: string;
|
|
11
|
+
user?: string;
|
|
12
|
+
thread?: string;
|
|
13
|
+
dryRun?: boolean;
|
|
14
|
+
new?: boolean;
|
|
10
15
|
}): Promise<void>;
|
|
11
16
|
//# sourceMappingURL=chat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"AAOA
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,GACA,OAAO,CAAC,IAAI,CAAC,CAuCf"}
|
package/dist/commands/chat.js
CHANGED
|
@@ -7,27 +7,121 @@ import { renderMarkdown } from "../utils/markdown.js";
|
|
|
7
7
|
/**
|
|
8
8
|
* `lobu chat "prompt"` — send a prompt to an agent and stream the response.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
10
|
+
* Without --user: API mode — creates a session, sends message, streams to terminal.
|
|
11
|
+
* With --user platform:id: Platform mode — sends through Telegram/Slack, response
|
|
12
|
+
* appears on the platform. Terminal shows the streamed response too.
|
|
12
13
|
*/
|
|
13
14
|
export async function chatCommand(cwd, prompt, options) {
|
|
14
15
|
const gatewayUrl = (options.gateway ?? (await resolveGatewayUrl(cwd))).replace(/\/$/, "");
|
|
15
|
-
// Resolve auth token: CLI JWT (from `lobu login`) → ADMIN_PASSWORD env var
|
|
16
16
|
const authToken = (await getToken()) ?? process.env.ADMIN_PASSWORD;
|
|
17
17
|
if (!authToken) {
|
|
18
18
|
console.error(chalk.red("\n Authentication required. Run `lobu login` or set ADMIN_PASSWORD.\n"));
|
|
19
19
|
process.exit(1);
|
|
20
20
|
}
|
|
21
|
-
// Resolve agent ID from flag or first agent in lobu.toml
|
|
22
21
|
const agentId = options.agent ?? (await resolveAgentId(cwd));
|
|
23
|
-
//
|
|
22
|
+
// Parse --user flag: "telegram:12345" → { platform: "telegram", userId: "12345" }
|
|
23
|
+
const platformUser = options.user ? parsePlatformUser(options.user) : null;
|
|
24
|
+
if (platformUser) {
|
|
25
|
+
// Platform mode: route through Telegram/Slack
|
|
26
|
+
await sendViaPlatform(gatewayUrl, authToken, {
|
|
27
|
+
agentId,
|
|
28
|
+
platform: platformUser.platform,
|
|
29
|
+
userId: platformUser.userId,
|
|
30
|
+
message: prompt,
|
|
31
|
+
thread: options.thread,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
// API mode: create session, send message, stream response
|
|
36
|
+
await sendViaApi(gatewayUrl, authToken, {
|
|
37
|
+
agentId,
|
|
38
|
+
message: prompt,
|
|
39
|
+
thread: options.thread,
|
|
40
|
+
dryRun: options.dryRun,
|
|
41
|
+
forceNew: options.new,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function parsePlatformUser(user) {
|
|
46
|
+
const colonIndex = user.indexOf(":");
|
|
47
|
+
if (colonIndex === -1) {
|
|
48
|
+
// No platform prefix — use as plain userId in API mode
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
platform: user.slice(0, colonIndex),
|
|
53
|
+
userId: user.slice(colonIndex + 1),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Platform mode: send message through Telegram/Slack via /api/v1/agents/{agentId}/messages.
|
|
58
|
+
* The response appears on the platform AND streams to terminal via eventsUrl.
|
|
59
|
+
*/
|
|
60
|
+
async function sendViaPlatform(gatewayUrl, authToken, opts) {
|
|
61
|
+
const agentId = opts.agentId || `test-${opts.platform}`;
|
|
62
|
+
const body = {
|
|
63
|
+
platform: opts.platform,
|
|
64
|
+
content: opts.message,
|
|
65
|
+
};
|
|
66
|
+
// Platform-specific routing
|
|
67
|
+
if (opts.platform === "telegram") {
|
|
68
|
+
body.telegram = { chatId: opts.userId };
|
|
69
|
+
}
|
|
70
|
+
else if (opts.platform === "slack") {
|
|
71
|
+
body.slack = {
|
|
72
|
+
channel: opts.userId,
|
|
73
|
+
thread: opts.thread,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
else if (opts.platform === "discord") {
|
|
77
|
+
body.discord = { channelId: opts.userId };
|
|
78
|
+
}
|
|
79
|
+
const res = await fetch(`${gatewayUrl}/api/v1/agents/${encodeURIComponent(agentId)}/messages`, {
|
|
80
|
+
method: "POST",
|
|
81
|
+
headers: {
|
|
82
|
+
"Content-Type": "application/json",
|
|
83
|
+
Authorization: `Bearer ${authToken}`,
|
|
84
|
+
},
|
|
85
|
+
body: JSON.stringify(body),
|
|
86
|
+
});
|
|
87
|
+
if (!res.ok) {
|
|
88
|
+
const resBody = await res.text().catch(() => "");
|
|
89
|
+
console.error(chalk.red(`\n Failed to send message (${res.status}): ${resBody}\n`));
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
const result = (await res.json());
|
|
93
|
+
if (result.eventsUrl) {
|
|
94
|
+
// Stream the response from the agent
|
|
95
|
+
const sseUrl = result.eventsUrl.startsWith("http")
|
|
96
|
+
? result.eventsUrl
|
|
97
|
+
: `${gatewayUrl}${result.eventsUrl}`;
|
|
98
|
+
const sseController = new AbortController();
|
|
99
|
+
await streamResponse(sseUrl, authToken, sseController);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
console.log(chalk.dim(` Message sent via ${opts.platform}. Response will appear on the platform.\n`));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* API mode: create session, send message, stream response to terminal.
|
|
107
|
+
*/
|
|
108
|
+
async function sendViaApi(gatewayUrl, authToken, opts) {
|
|
109
|
+
const createBody = {};
|
|
110
|
+
if (opts.agentId)
|
|
111
|
+
createBody.agentId = opts.agentId;
|
|
112
|
+
if (opts.thread)
|
|
113
|
+
createBody.thread = opts.thread;
|
|
114
|
+
if (opts.dryRun)
|
|
115
|
+
createBody.dryRun = true;
|
|
116
|
+
if (opts.forceNew)
|
|
117
|
+
createBody.forceNew = true;
|
|
24
118
|
const createRes = await fetch(`${gatewayUrl}/api/v1/agents`, {
|
|
25
119
|
method: "POST",
|
|
26
120
|
headers: {
|
|
27
121
|
"Content-Type": "application/json",
|
|
28
122
|
Authorization: `Bearer ${authToken}`,
|
|
29
123
|
},
|
|
30
|
-
body: JSON.stringify(
|
|
124
|
+
body: JSON.stringify(createBody),
|
|
31
125
|
});
|
|
32
126
|
if (!createRes.ok) {
|
|
33
127
|
const body = await createRes.text().catch(() => "");
|
|
@@ -39,21 +133,18 @@ export async function chatCommand(cwd, prompt, options) {
|
|
|
39
133
|
process.exit(1);
|
|
40
134
|
}
|
|
41
135
|
const session = (await createRes.json());
|
|
42
|
-
// Build URLs from gateway flag (returned URLs may point to a public domain)
|
|
43
136
|
const base = `${gatewayUrl}/api/v1/agents/${session.agentId}`;
|
|
44
137
|
const sseUrl = `${base}/events`;
|
|
45
138
|
const messagesUrl = `${base}/messages`;
|
|
46
|
-
// 2. Open SSE connection before sending message so we don't miss events
|
|
47
139
|
const sseController = new AbortController();
|
|
48
140
|
const streaming = streamResponse(sseUrl, session.token, sseController);
|
|
49
|
-
// 3. Send the prompt
|
|
50
141
|
const msgRes = await fetch(messagesUrl, {
|
|
51
142
|
method: "POST",
|
|
52
143
|
headers: {
|
|
53
144
|
"Content-Type": "application/json",
|
|
54
145
|
Authorization: `Bearer ${session.token}`,
|
|
55
146
|
},
|
|
56
|
-
body: JSON.stringify({ content:
|
|
147
|
+
body: JSON.stringify({ content: opts.message }),
|
|
57
148
|
});
|
|
58
149
|
if (!msgRes.ok) {
|
|
59
150
|
sseController.abort();
|
|
@@ -61,25 +152,15 @@ export async function chatCommand(cwd, prompt, options) {
|
|
|
61
152
|
console.error(chalk.red(`\n Failed to send message (${msgRes.status}): ${body}\n`));
|
|
62
153
|
process.exit(1);
|
|
63
154
|
}
|
|
64
|
-
// 4. Wait for streaming to complete
|
|
65
155
|
await streaming;
|
|
66
156
|
}
|
|
67
157
|
async function resolveAgentId(cwd) {
|
|
68
158
|
const result = await loadConfig(cwd);
|
|
69
|
-
if (isLoadError(result))
|
|
70
|
-
|
|
71
|
-
return process.exit(1);
|
|
72
|
-
}
|
|
159
|
+
if (isLoadError(result))
|
|
160
|
+
return undefined;
|
|
73
161
|
const ids = Object.keys(result.config.agents);
|
|
74
|
-
if (ids.length === 0) {
|
|
75
|
-
console.error(chalk.red("\n No agents found in lobu.toml\n"));
|
|
76
|
-
return process.exit(1);
|
|
77
|
-
}
|
|
78
162
|
return ids[0];
|
|
79
163
|
}
|
|
80
|
-
/**
|
|
81
|
-
* Connect to SSE, print deltas to stdout, resolve on complete/error.
|
|
82
|
-
*/
|
|
83
164
|
async function streamResponse(sseUrl, token, controller) {
|
|
84
165
|
const OVERALL_TIMEOUT_MS = 5 * 60 * 1000;
|
|
85
166
|
const IDLE_TIMEOUT_MS = 60 * 1000;
|
|
@@ -128,7 +209,13 @@ async function streamResponse(sseUrl, token, controller) {
|
|
|
128
209
|
console.error(`\n${renderMarkdown(data.content)}\n`);
|
|
129
210
|
}
|
|
130
211
|
controller.abort();
|
|
131
|
-
|
|
212
|
+
return;
|
|
213
|
+
case "link-button":
|
|
214
|
+
case "question":
|
|
215
|
+
case "grant-request":
|
|
216
|
+
case "package-request":
|
|
217
|
+
case "suggestion":
|
|
218
|
+
console.error(JSON.stringify({ event: currentEvent, ...data }));
|
|
132
219
|
break;
|
|
133
220
|
case "complete":
|
|
134
221
|
process.stdout.write("\n");
|
|
@@ -138,7 +225,7 @@ async function streamResponse(sseUrl, token, controller) {
|
|
|
138
225
|
process.stdout.write("\n");
|
|
139
226
|
console.error(chalk.red(`\n Agent error: ${String(data.error)}\n`));
|
|
140
227
|
controller.abort();
|
|
141
|
-
|
|
228
|
+
return;
|
|
142
229
|
}
|
|
143
230
|
currentEvent = "";
|
|
144
231
|
}
|
|
@@ -149,7 +236,6 @@ async function streamResponse(sseUrl, token, controller) {
|
|
|
149
236
|
}
|
|
150
237
|
}
|
|
151
238
|
catch (err) {
|
|
152
|
-
// AbortError is expected when we call controller.abort() on complete
|
|
153
239
|
if (err instanceof Error && err.name === "AbortError")
|
|
154
240
|
return;
|
|
155
241
|
throw err;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/dev.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `lobu
|
|
3
|
-
*
|
|
2
|
+
* `lobu run` — smart wrapper around `docker compose up`.
|
|
3
|
+
* Validates lobu.toml, seeds .env, then starts docker compose.
|
|
4
|
+
* The gateway reads lobu.toml directly from the mounted workspace.
|
|
4
5
|
*/
|
|
5
6
|
export declare function devCommand(cwd: string, passthroughArgs: string[]): Promise<void>;
|
|
6
7
|
//# sourceMappingURL=dev.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,eAAe,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,IAAI,CAAC,CAoIf"}
|