@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.
- package/README.md +144 -17
- 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
|
|
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
|
-
|
|
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
|
-
"
|
|
187
|
-
"params": {},
|
|
207
|
+
"file": "/path/to/agent.yaml",
|
|
208
|
+
"params": { "topic": "AI trends" },
|
|
188
209
|
"input": "Run"
|
|
189
210
|
}
|
|
190
211
|
```
|
|
191
212
|
|
|
192
|
-
**
|
|
213
|
+
**Response** (both /run and /run-file):
|
|
193
214
|
```json
|
|
194
215
|
{
|
|
195
|
-
"
|
|
196
|
-
"
|
|
197
|
-
"
|
|
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
|
-
**
|
|
228
|
+
**POST /approve-chain** — approve or reject a manual chain:
|
|
202
229
|
```json
|
|
203
|
-
{ "
|
|
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
|
|
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 '{"
|
|
247
|
+
-d '{"file":"/path/to/agent.yaml"}'
|
|
216
248
|
|
|
217
|
-
#
|
|
218
|
-
curl -X POST http://localhost:3333/
|
|
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 '{"
|
|
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.
|
|
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": {
|