@openenthrium/oe-runtime 1.6.8 → 1.7.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 (2) hide show
  1. package/README.md +144 -17
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -19,16 +19,21 @@ Open Enthrium AI Agent Runtime (OE Runtime) is a standalone, cross-platform bina
19
19
  - **No LangChain. No Python. No code.** Agents are plain YAML files.
20
20
  - **No install.** Single binary for Windows, Linux, and macOS. No Node.js, no Docker on the target machine.
21
21
  - **45+ connector categories.** PostgreSQL, MySQL, MongoDB, S3, Slack, GitHub, SSH, REST API, Kafka, and more — all built in.
22
+ - **Agent chains.** Chain agents together in YAML — auto chains fire in sequence; manual chains pause for human approval in CLI (y/n prompt), HTTP (`/approve-chain`), or any MCP-enabled AI chat (`approve_chain` tool).
22
23
  - **HTTP server mode.** `--serve` turns the runtime into a persistent API server any app can call.
24
+ - **Messaging platform integration.** Receive messages from Telegram, Slack, WhatsApp, Teams and run agents in response — same YAML agents, same connectors, universal command language (`/run`, `/agents`, `/approve`, `/status`).
25
+ - **Project system.** `oe-project.json` registers multiple agents by name, sets a default agent, and links projects together — one config, many agents.
23
26
  - **Self-hosted.** Runs entirely on your own machine. No call-home. Own your data.
24
27
 
25
28
  ---
26
29
 
27
30
  ## Sample Library
28
31
 
29
- Download [oe-runtime-samples.zip](https://github.com/enthrium/open-enthrium-ai-agent-runtime/releases/latest/download/oe-runtime-samples.zip) for 21 ready-to-run starter kits — each with a complete `agent.yaml` + `oe-config.json`:
32
+ Download [oe-runtime-samples.zip](https://github.com/enthrium/open-enthrium-ai-agent-runtime/releases/latest/download/oe-runtime-samples.zip) for 24 ready-to-run starter kits — each with a complete `agent.yaml` + `oe-config.json`:
30
33
 
31
- `sql-databases` · `nosql-cache` · `file-storage` · `cloud-drives` · `email` · `team-messaging` · `telegram` · `productivity-crm` · `rest-api` · `graphql` · `ssh` · `message-queues` · `iot-messaging` · `web-search` · `ocr-vision` · `image-generation` · `speech-audio` · `video-generation` · `music-generation` · `blockchain-web3` · `directory-identity`
34
+ **Getting started** `hello-world` · `chains` · `my-ai-project`
35
+
36
+ **By connector** — `sql-databases` · `nosql-cache` · `file-storage` · `cloud-drives` · `email` · `team-messaging` · `telegram` · `productivity-crm` · `rest-api` · `graphql` · `ssh` · `message-queues` · `iot-messaging` · `web-search` · `ocr-vision` · `image-generation` · `speech-audio` · `video-generation` · `music-generation` · `blockchain-web3` · `directory-identity`
32
37
 
33
38
  ---
34
39
 
@@ -119,6 +124,17 @@ connectors:
119
124
  | `connectors` | No | Connector references matched to credentials in `oe-config.json` |
120
125
  | `steps` | No | Named workflow steps injected sequentially into the system prompt |
121
126
  | `maxRounds` | No | Max LLM tool-call iterations (default: 25) |
127
+ | `chains` | No | Agents to run after this one completes — see Agent Chains below |
128
+
129
+ **`chains` syntax:**
130
+ ```yaml
131
+ chains:
132
+ - next_agent: ./followup.yaml # relative path from this agent file
133
+ trigger_type: auto # fires immediately, output passed as context
134
+
135
+ - next_agent: ./notify.yaml
136
+ trigger_type: manual # CLI: y/n prompt · HTTP: /approve-chain · MCP: approve_chain tool
137
+ ```
122
138
 
123
139
  **3. Run it**
124
140
 
@@ -177,30 +193,46 @@ All endpoints require the `x-api-key` header when `server.apiKey` is set in your
177
193
  | Method | Path | Description |
178
194
  |---|---|---|
179
195
  | `GET` | `/health` | Liveness check — returns `{ "status": "ok", "version": "..." }` |
196
+ | `GET` | `/status` | Health + project info + connector list + uptime |
197
+ | `POST` | `/command` | Universal command endpoint — `{ text: "/run agent-name" }` |
180
198
  | `POST` | `/run` | Run an agent from an inline YAML string |
181
199
  | `POST` | `/run-file` | Run an agent from a YAML file path on disk |
200
+ | `POST` | `/approve-chain` | Approve or reject a pending manual chain |
201
+ | `POST` | `/webhook/telegram` | Telegram webhook receiver (enabled via `server.webhook`) |
202
+ | `POST` | `/webhook/slack` | Slack webhook receiver (enabled via `server.webhook`) |
182
203
 
183
- **POST /run** — body:
204
+ **POST /run-file** — body:
184
205
  ```json
185
206
  {
186
- "yaml": "name: Hi\nsteps:\n - name: Greet\n content: Say hi!",
187
- "params": {},
207
+ "file": "/path/to/agent.yaml",
208
+ "params": { "topic": "AI trends" },
188
209
  "input": "Run"
189
210
  }
190
211
  ```
191
212
 
192
- **POST /run-file** — body:
213
+ **Response** (both /run and /run-file):
193
214
  ```json
194
215
  {
195
- "file": "/path/to/agent.yaml",
196
- "params": { "topic": "AI trends" },
197
- "input": "Run"
216
+ "success": true,
217
+ "output": "Agent output...",
218
+ "chains": [
219
+ { "agent": "Follow-up Agent", "output": "Chain complete ✅", "chains": [], "pending_chains": [] }
220
+ ],
221
+ "pending_chains": [
222
+ { "chain_id": "abc123xyz", "next_agent": "./notify.yaml", "output_preview": "Agent output..." }
223
+ ],
224
+ "duration_ms": 1234
198
225
  }
199
226
  ```
200
227
 
201
- **Response** (both /run and /run-file):
228
+ **POST /approve-chain** approve or reject a manual chain:
202
229
  ```json
203
- { "success": true, "output": "...", "duration_ms": 1234 }
230
+ { "chain_id": "abc123xyz", "approved": true }
231
+ ```
232
+
233
+ Response:
234
+ ```json
235
+ { "success": true, "approved": true, "output": "...", "chains": [], "pending_chains": [], "duration_ms": 890 }
204
236
  ```
205
237
 
206
238
  **Example curl:**
@@ -208,19 +240,114 @@ All endpoints require the `x-api-key` header when `server.apiKey` is set in your
208
240
  # Health check
209
241
  curl http://localhost:3333/health -H "x-api-key: your-secret"
210
242
 
211
- # Run inline agent
212
- curl -X POST http://localhost:3333/run \
243
+ # Run agent from file (with chain support)
244
+ curl -X POST http://localhost:3333/run-file \
213
245
  -H "x-api-key: your-secret" \
214
246
  -H "Content-Type: application/json" \
215
- -d '{"yaml":"name: Hi\nsteps:\n - name: Greet\n content: Say hi!","input":"Run"}'
247
+ -d '{"file":"/path/to/agent.yaml"}'
216
248
 
217
- # Run agent from file
218
- curl -X POST http://localhost:3333/run-file \
249
+ # Approve a pending manual chain
250
+ curl -X POST http://localhost:3333/approve-chain \
251
+ -H "x-api-key: your-secret" \
252
+ -H "Content-Type: application/json" \
253
+ -d '{"chain_id":"abc123xyz","approved":true}'
254
+ ```
255
+
256
+ ---
257
+
258
+ ## Project System
259
+
260
+ `oe-project.json` sits alongside `oe-config.json` and registers multiple agents by name — so any interface (Telegram, Slack, HTTP, MCP) can invoke them by name rather than file path.
261
+
262
+ ```json
263
+ {
264
+ "name": "Sales Pipeline",
265
+ "version": "1.0.0",
266
+ "description": "Outbound sales automation",
267
+ "author": "Your Name",
268
+ "tags": ["sales", "outbound"],
269
+ "agents": [
270
+ { "name": "prospecting", "file": "./prospecting.yaml", "description": "Find and qualify leads" },
271
+ { "name": "outreach", "file": "./outreach.yaml", "description": "Send personalised emails" },
272
+ { "name": "chat", "file": "./chat-bot.yaml", "description": "Conversational assistant", "default": true }
273
+ ],
274
+ "links": [
275
+ { "name": "support", "project": "../support-project/oe-project.json" }
276
+ ]
277
+ }
278
+ ```
279
+
280
+ | Field | Description |
281
+ |---|---|
282
+ | `name`, `version`, `author`, `tags` | Project metadata |
283
+ | `agents[].name` | Short name used to invoke the agent (`/run prospecting`) |
284
+ | `agents[].file` | Path to the YAML agent file (relative to `oe-project.json`) |
285
+ | `agents[].default` | `true` — runs this agent when user sends a plain message (no command) |
286
+ | `links` | Cross-project references — run agents from linked projects |
287
+
288
+ ---
289
+
290
+ ## Messaging Platforms (Telegram, Slack, WhatsApp, Teams)
291
+
292
+ OE Runtime's HTTP server can receive messages from any webhook-based messaging platform and run agents in response — no separate bot framework needed.
293
+
294
+ **`oe-config.json` — enable webhook receiver:**
295
+
296
+ ```json
297
+ {
298
+ "llm": { "provider": "openai", "apiKey": "sk-...", "model": "gpt-4o" },
299
+ "server": {
300
+ "enabled": true,
301
+ "port": 3333,
302
+ "publicUrl": "https://your-public-domain.com",
303
+ "webhook": {
304
+ "enabled": true,
305
+ "auto_reply": true
306
+ }
307
+ },
308
+ "connectors": [
309
+ {
310
+ "connection_name": "My Telegram Bot",
311
+ "connection_type": "telegram",
312
+ "baseUrl": "https://api.telegram.org/botYOUR_BOT_TOKEN"
313
+ }
314
+ ]
315
+ }
316
+ ```
317
+
318
+ OE Runtime automatically calls Telegram's `setWebhook` on startup. For Slack, paste the URL shown in the terminal into your Slack app's Event Subscriptions.
319
+
320
+ **Universal command language** — same commands work from Telegram, Slack, HTTP, or MCP:
321
+
322
+ | Command | Action |
323
+ |---|---|
324
+ | `/run <name>` | Run agent by name (from `oe-project.json`) |
325
+ | `/run <path>` | Run agent by file path |
326
+ | `/agents` | List all registered agents |
327
+ | `/approve` | Approve a pending manual chain |
328
+ | `/cancel` | Cancel a pending chain |
329
+ | `/status` | Health check — LLM, connectors, uptime |
330
+ | `/projects` | List linked projects |
331
+ | `/help` | Show all commands |
332
+ | Any message | Runs the `"default": true` agent |
333
+
334
+ **POST /command** — same commands from HTTP clients:
335
+ ```bash
336
+ curl -X POST http://localhost:3333/command \
219
337
  -H "x-api-key: your-secret" \
220
338
  -H "Content-Type: application/json" \
221
- -d '{"file":"/path/to/agent.yaml","params":{"topic":"AI trends"},"input":"Run"}'
339
+ -d '{"text": "/run prospecting"}'
222
340
  ```
223
341
 
342
+ **Supported platforms:**
343
+
344
+ | Platform | Webhook endpoint | Auto-registers |
345
+ |---|---|---|
346
+ | Telegram | `POST /webhook/telegram` | ✅ Yes — calls `setWebhook` on startup |
347
+ | Slack | `POST /webhook/slack` | No — paste URL in Slack Event Subscriptions |
348
+ | WhatsApp (Meta) | `POST /webhook/whatsapp` | No — paste URL in Meta Developer dashboard |
349
+ | GitHub | `POST /webhook/github` | No — paste URL in repo webhook settings |
350
+
224
351
  ---
225
352
 
226
353
  ## Binary vs Node.js Mode
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openenthrium/oe-runtime",
3
- "version": "1.6.8",
3
+ "version": "1.7.0",
4
4
  "description": "OE Runtime - run AI agents against enterprise data sources. One binary, one YAML agent, one config file.",
5
5
  "homepage": "https://www.openenthrium.com/runtime.html",
6
6
  "repository": {