ennodia 0.1.1 → 0.2.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/CONTRIBUTING.md +60 -36
- package/README.md +74 -58
- package/bench/README.md +7 -5
- package/bench/bug-recall/run.ts +12 -4
- package/bin/ennodia +23 -2
- package/docs/assets/agents/mcp.svg +1 -1
- package/docs/assets/orchestration-pipeline.svg +4 -3
- package/docs/comparisons/agent-frameworks.md +15 -10
- package/docs/comparisons/autogen.md +20 -15
- package/docs/comparisons/chathub.md +15 -14
- package/docs/comparisons/index.md +30 -22
- package/docs/comparisons/langgraph.md +19 -12
- package/docs/comparisons/mixture-of-agents.md +20 -17
- package/docs/comparisons/model-merging.md +7 -5
- package/docs/comparisons/openrouter.md +30 -22
- package/docs/concepts/compositional-audits.md +16 -13
- package/docs/concepts/data-governance.md +31 -15
- package/docs/concepts/how-ennodia-works.md +48 -22
- package/docs/concepts/interfaces-and-core.md +19 -6
- package/docs/concepts/second-opinions.md +20 -20
- package/docs/getting-started.md +55 -27
- package/docs/guides/agent-skills.md +16 -13
- package/docs/guides/budgets-and-limits.md +30 -20
- package/docs/guides/running-better-audits.md +50 -44
- package/docs/index.md +60 -37
- package/docs/install.md +41 -32
- package/docs/reference/benchmarks.md +6 -4
- package/docs/reference/controlled-english.md +130 -0
- package/docs/reference/ennodia-io.md +28 -22
- package/docs/reference/mcp-tools.md +244 -87
- package/docs/reference/supported-harnesses.md +9 -9
- package/package.json +7 -5
- package/src/advisor.ts +685 -0
- package/src/budget.ts +25 -6
- package/src/cli.ts +1 -1
- package/src/compare.ts +248 -52
- package/src/compositional.ts +18 -0
- package/src/core.ts +547 -16
- package/src/harnesses.ts +33 -2
- package/src/index.ts +38 -0
- package/src/plan-advice.ts +601 -0
- package/src/runs.ts +74 -9
- package/src/server.ts +312 -46
- package/src/skills.ts +131 -11
- package/src/tasks.ts +192 -22
- package/src/version.ts +1 -1
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Ennodia IO
|
|
3
|
-
description: The local interface for app-facing AI provider options and chat calls.
|
|
3
|
+
description: The local interface for app-facing artificial intelligence (AI) provider options and chat calls.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Ennodia IO is a local
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
Ennodia IO is a local Hypertext Transfer Protocol (HTTP) server for artificial
|
|
7
|
+
intelligence (AI) provider options. It uses the same Ennodia Core as the Model
|
|
8
|
+
Context Protocol (MCP) tools. It supports a bring your own key (BYOK) setup
|
|
9
|
+
without requiring a provider application programming interface (API) key.
|
|
10
|
+
The app can show runnable local agents in its user interface (UI). It can then
|
|
11
|
+
send chat-style requests to one option.
|
|
11
12
|
|
|
12
13
|
It is not a hosted model router. Ennodia does not sell model access, proxy
|
|
13
14
|
provider billing, or hide which local agents ran. IO ships as the separate
|
|
14
15
|
`@cherninlab/ennodia-io` package.
|
|
15
16
|
|
|
17
|
+
When Compare is enabled, Ennodia keeps the roles explicit. The Judge evaluates
|
|
18
|
+
candidate results. The Result Advisor combines the Judge analysis and candidate
|
|
19
|
+
evidence into the final answer.
|
|
20
|
+
|
|
16
21
|
## Start IO
|
|
17
22
|
|
|
18
23
|
```sh
|
|
@@ -57,10 +62,10 @@ Environment variables:
|
|
|
57
62
|
IO binds to loopback by default and refuses non-loopback hosts unless an API key
|
|
58
63
|
is configured. Bearer tokens are compared with a timing-safe comparison.
|
|
59
64
|
|
|
60
|
-
IO intentionally sends no CORS headers by
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
65
|
+
IO intentionally sends no Cross-Origin Resource Sharing (CORS) headers by
|
|
66
|
+
default. The browser blocks local apps unless they use their own local proxy.
|
|
67
|
+
There is no `--cors-origin` flag. Add one only when an app needs that trust
|
|
68
|
+
boundary.
|
|
64
69
|
|
|
65
70
|
## Routes
|
|
66
71
|
|
|
@@ -108,7 +113,7 @@ Option statuses:
|
|
|
108
113
|
| Status | Meaning |
|
|
109
114
|
| --- | --- |
|
|
110
115
|
| `ready` | The local agent is runnable now. |
|
|
111
|
-
| `installed` | An app or partial install was detected, but Ennodia cannot run it through a supported CLI surface yet. |
|
|
116
|
+
| `installed` | An app or partial install was detected, but Ennodia cannot run it through a supported command-line interface (CLI) surface yet. |
|
|
112
117
|
| `missing` | The supported local agent was not found. |
|
|
113
118
|
|
|
114
119
|
Add `?includeUnavailable=false` to return only ready options.
|
|
@@ -120,11 +125,11 @@ Add `?includeUnavailable=false` to return only ready options.
|
|
|
120
125
|
| Model | Meaning |
|
|
121
126
|
| --- | --- |
|
|
122
127
|
| `local/auto` | Let Ennodia choose the local harness. |
|
|
123
|
-
| `local/compare` | Run parallel local harnesses and
|
|
128
|
+
| `local/compare` | Run parallel local harnesses, evaluate them with the Judge, and combine the result with the Result Advisor. |
|
|
124
129
|
| `local/<harness-id>` | Force a specific harness, such as `local/codex` or `local/claude-code`. |
|
|
125
130
|
|
|
126
131
|
Older aliases `ennodia-auto`, `ennodia/auto`, and `ennodia/compare` are accepted
|
|
127
|
-
for compatibility
|
|
132
|
+
for compatibility. Prefer `local/*` IDs in new app integrations.
|
|
128
133
|
|
|
129
134
|
## Chat Completions
|
|
130
135
|
|
|
@@ -183,31 +188,32 @@ Supported `ennodia` fields:
|
|
|
183
188
|
| `timeoutMs` | Per-child timeout, capped at one hour. |
|
|
184
189
|
| `refresh` | Re-scan harnesses before planning. |
|
|
185
190
|
| `judgeHarnessId`, `judgeModel` | Compare judge overrides. |
|
|
186
|
-
| `
|
|
191
|
+
| `advisorHarnessId`, `advisorModel` | Compare Result Advisor overrides. |
|
|
192
|
+
| `synthesizerHarnessId`, `synthesizerModel` | Deprecated aliases for `advisorHarnessId` and `advisorModel`. If both forms are supplied, their values must match. |
|
|
187
193
|
| `maxOutputChars` | Candidate output cap for Compare. |
|
|
188
194
|
| `maxWaitMs` | HTTP request wait cap, capped at one hour. |
|
|
189
195
|
|
|
190
196
|
Chat completions are non-streaming. A request waits until the Ennodia run
|
|
191
|
-
finishes or `maxWaitMs` elapses
|
|
197
|
+
finishes or `maxWaitMs` elapses. The default is 10 minutes. Disable streaming in
|
|
192
198
|
OpenAI-compatible clients and set `ennodia.maxWaitMs` when the client or proxy
|
|
193
199
|
needs a shorter or longer hold time.
|
|
194
200
|
|
|
195
201
|
The response includes the normal OpenAI-style `choices[0].message.content` plus
|
|
196
|
-
an `ennodia` object
|
|
197
|
-
Compare ID when present, and budget estimate.
|
|
202
|
+
an `ennodia` object. The object contains the run ID, status, selected harnesses,
|
|
203
|
+
task IDs, Compare ID when present, and budget estimate.
|
|
198
204
|
|
|
199
205
|
Limits and failures are returned as JSON with `cache-control: no-store`:
|
|
200
206
|
|
|
201
207
|
- request body above the configured cap -> `413 request_too_large`
|
|
202
208
|
- saturated chat completions -> `429 rate_limit_error` with `retry-after: 1`
|
|
203
|
-
- client abort after the run starts -> `499 client_closed_request
|
|
209
|
+
- client abort after the run starts -> `499 client_closed_request`. IO cancels
|
|
204
210
|
the Ennodia run when Core exposes cancellation
|
|
205
211
|
- timeout, disappeared run, or start failure -> `502 ennodia_run_error`
|
|
206
|
-
- failed or cancelled
|
|
212
|
+
- failed run or run with `cancelled` status -> `502 ennodia_run_failed` plus run metadata
|
|
207
213
|
|
|
208
214
|
## Library Use
|
|
209
215
|
|
|
210
|
-
Apps can import the same primitives
|
|
216
|
+
Apps can import the same primitives without running the HTTP server:
|
|
211
217
|
|
|
212
218
|
```ts
|
|
213
219
|
import { createDefaultEnnodiaCore } from "ennodia";
|
|
@@ -244,5 +250,5 @@ IO deliberately rejects or omits:
|
|
|
244
250
|
- IO-specific history endpoints. Terminal run history is written by Core when
|
|
245
251
|
history is enabled, but IO does not expose a read API for it.
|
|
246
252
|
|
|
247
|
-
Use MCP
|
|
248
|
-
work is
|
|
253
|
+
Use MCP to inspect detailed run, task, Judge, Result Advisor, and Compare state
|
|
254
|
+
while work is in progress. Use IO when a local app needs a small HTTP bridge.
|