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,30 +1,32 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: How Ennodia Works
|
|
3
|
-
description: A visible orchestration pipeline for routing, budget checks, task watching, recovery,
|
|
3
|
+
description: A visible orchestration pipeline for optional plan advice, routing, budget checks, task watching, recovery, Judge, and Result Advisor passes.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
When
|
|
7
|
-
visible orchestration. The normal entrypoint is
|
|
8
|
-
and Compare tools stay available for debugging
|
|
6
|
+
When a Model Context Protocol (MCP) client starts a high-level run, Ennodia
|
|
7
|
+
turns one request into a visible orchestration. The normal entrypoint is
|
|
8
|
+
`ennodia_run`. Lower-level task and Compare tools stay available for debugging
|
|
9
|
+
and manual control.
|
|
9
10
|
|
|
10
11
|
## Pipeline at a Glance
|
|
11
12
|
|
|
12
13
|
| Stage | What happens | Main tools |
|
|
13
14
|
| --- | --- | --- |
|
|
14
|
-
| Discover | Ennodia finds installed agent
|
|
15
|
+
| Discover | Ennodia finds installed agent command-line interface (CLI) programs and reports the runnable state of each harness. | `ennodia_list_harnesses` |
|
|
15
16
|
| Plan | The router uses a caller-provided category when supplied, otherwise a keyword fallback, then chooses candidate harnesses. | `ennodia_plan`, `ennodia_run` |
|
|
17
|
+
| Advise (optional) | A Plan Advisor proposes a bounded set of harness, model, and skill assignments as inert data. Ennodia validates it but does not launch it. | `ennodia_start_plan_advice`, `ennodia_get_plan_advice` |
|
|
16
18
|
| Budget | Ennodia estimates preflight input tokens and checks optional local limits on that estimate. | `ennodia_estimate_budget`, `ennodia_run` |
|
|
17
19
|
| Execute | Thin adapters start the selected local agent CLI commands. Each child has a default 5-minute timeout and a 1-hour maximum accepted by the public tools. | `ennodia_start`, `ennodia_run` |
|
|
18
20
|
| Watch | Child task status, stdout, stderr, timing, and failures stay inspectable. | `ennodia_get_task`, `ennodia_get_run` |
|
|
19
|
-
| Recover |
|
|
20
|
-
| Compare |
|
|
21
|
+
| Recover | Ennodia reports timeouts, cancellations, and failed children without hiding them. | `ennodia_cancel_task`, `ennodia_cancel_run` |
|
|
22
|
+
| Compare | The Judge maps successful outputs. The Result Advisor uses those findings to recommend an answer. Compare adds two serial model passes after child agents finish. | `ennodia_start_compare`, `ennodia_get_compare` |
|
|
21
23
|
| Return | The MCP client receives one final answer plus an inspectable run record and durable terminal receipt. | `ennodia_get_run`, `ennodia_history` |
|
|
22
24
|
|
|
23
25
|
## Discover
|
|
24
26
|
|
|
25
27
|
Ennodia maintains a registry of execution backends. Each adapter is intentionally
|
|
26
|
-
thin
|
|
27
|
-
|
|
28
|
+
thin. It reports tool availability, identifies the installed version, and starts
|
|
29
|
+
the tool through its supported command-line surface.
|
|
28
30
|
|
|
29
31
|
See [Supported Harnesses](/docs/reference/supported-harnesses/) for current
|
|
30
32
|
adapter IDs and setup notes.
|
|
@@ -33,23 +35,44 @@ adapter IDs and setup notes.
|
|
|
33
35
|
|
|
34
36
|
The router combines the currently available harnesses with either a
|
|
35
37
|
caller-provided category (`code`, `research`, `browser`, `image`, or `general`)
|
|
36
|
-
or a small keyword fallback.
|
|
37
|
-
|
|
38
|
+
or a small keyword fallback. Pass `category` when you know the work type. The
|
|
39
|
+
fallback is a convenience
|
|
38
40
|
path, not a claim of deep intent understanding.
|
|
39
41
|
|
|
42
|
+
## Plan Advisor
|
|
43
|
+
|
|
44
|
+
Plan Advisor is an optional suggestion path, not a more powerful router. It sees
|
|
45
|
+
a frozen, bounded inventory and proposes explicit worker slices with harness,
|
|
46
|
+
model, and skill assignments. Its response is untrusted plan data: it cannot set
|
|
47
|
+
working directories, environment variables, commands, permissions, timeouts,
|
|
48
|
+
or budgets. The Plan Advisor task itself runs in a separate empty temporary working
|
|
49
|
+
directory rather than inheriting the target project directory.
|
|
50
|
+
|
|
51
|
+
Ennodia parses the complete response as strict JSON and validates every
|
|
52
|
+
assignment. A valid result is still inert. The Plan Advisor never starts worker
|
|
53
|
+
tasks, retries them, or changes the plan after validation. The caller must make
|
|
54
|
+
a separate `ennodia_start_advised_plan` call with the exact plan digest. Each
|
|
55
|
+
advice result can authorize one launch.
|
|
56
|
+
|
|
57
|
+
Immediately before the first launch, Ennodia checks the digest, current
|
|
58
|
+
inventory, skills, caller model allowlists, and budget again. Any mismatch fails
|
|
59
|
+
closed with zero worker launches. Provider model availability remains
|
|
60
|
+
unverified until its harness runs.
|
|
61
|
+
|
|
40
62
|

|
|
41
63
|
|
|
42
64
|
## Budget
|
|
43
65
|
|
|
44
66
|
Before a high-level run starts child tasks, Ennodia can estimate the input-token
|
|
45
67
|
budget. The estimate includes selected child task count, prompt input, planned
|
|
46
|
-
Compare input, and the effective candidate bound used in the
|
|
68
|
+
Compare input, and the effective candidate bound used in the Judge prompt.
|
|
47
69
|
|
|
48
70
|
Budget checks are intentionally honest. Ennodia can enforce local preflight
|
|
49
71
|
limits such as `maxChildTasks` and `maxEstimatedInputTokens` on that estimate.
|
|
50
72
|
Child-task estimates exclude harness system prompts, file reads, tool loops, and
|
|
51
73
|
provider-side context, so real usage can be higher. Ennodia only reports
|
|
52
|
-
subscription quota as known when a supported local CLI
|
|
74
|
+
subscription quota as known when a supported local CLI or application
|
|
75
|
+
programming interface (API) surface exposes it.
|
|
53
76
|
|
|
54
77
|
See [Budgets and Limits](/docs/guides/budgets-and-limits/) for request shapes.
|
|
55
78
|
|
|
@@ -70,21 +93,24 @@ the child process exits and captured output has drained.
|
|
|
70
93
|
|
|
71
94
|
## Recover
|
|
72
95
|
|
|
73
|
-
Failure handling is part of the execution plan. Nodes can time out, fail,
|
|
74
|
-
cancelled, or return partial output without hiding
|
|
96
|
+
Failure handling is part of the execution plan. Nodes can time out, fail, enter
|
|
97
|
+
the `cancelled` state, or return partial output without hiding the result.
|
|
75
98
|
|
|
76
99
|
## Compare
|
|
77
100
|
|
|
78
|
-
When
|
|
101
|
+
When multiple agents produce answers, Ennodia does not concatenate them. A Judge
|
|
79
102
|
can produce a structured comparison: agreements, contradictions, unique
|
|
80
|
-
insights, blind spots, and risks.
|
|
81
|
-
the original outputs to create the
|
|
103
|
+
insights, blind spots, and risks. The Result Advisor then uses that comparison
|
|
104
|
+
and the original outputs to create the recommended result.
|
|
82
105
|
|
|
83
|
-
Compare
|
|
106
|
+
Compare uses model judgment. It does not use formal voting or consensus.
|
|
84
107
|
|
|
85
|
-
Compare is also serial:
|
|
86
|
-
after
|
|
87
|
-
|
|
108
|
+
Compare is also serial: the Judge task runs first, then the Result Advisor task
|
|
109
|
+
runs after it completes. If the Judge fails or returns unusable structured
|
|
110
|
+
analysis, the Result Advisor can continue directly from the candidate outputs.
|
|
111
|
+
The result records `basis: "candidates-only"` so the degraded path stays
|
|
112
|
+
visible. For a parallel run with N child agents, count N child runs plus the two
|
|
113
|
+
Compare passes when estimating budget and latency.
|
|
88
114
|
|
|
89
115
|
## Return
|
|
90
116
|
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Interfaces and Core
|
|
3
|
-
description: How Ennodia's MCP interface and shared core behavior relate to each other.
|
|
3
|
+
description: How Ennodia's Model Context Protocol (MCP) interface and shared core behavior relate to each other.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
## Current Shape
|
|
7
7
|
|
|
8
|
+
Ennodia has a Model Context Protocol (MCP) interface and a shared Core.
|
|
9
|
+
|
|
8
10
|
| Name | Status | What it means |
|
|
9
11
|
| --- | --- | --- |
|
|
10
12
|
| <span class="agent-logo agent-logo--mcp" aria-hidden="true"></span>Ennodia MCP | Available | The shipped MCP tool interface for agents. Use this today. |
|
|
@@ -14,10 +16,12 @@ description: How Ennodia's MCP interface and shared core behavior relate to each
|
|
|
14
16
|
|
|
15
17
|
Ennodia MCP is the supported public surface in the current release. It exposes
|
|
16
18
|
tools such as `ennodia_list_harnesses`, `ennodia_estimate_budget`,
|
|
17
|
-
`ennodia_run`, `ennodia_get_run`, and
|
|
18
|
-
schema plus one Core call — nothing
|
|
19
|
+
`ennodia_run`, `ennodia_start_plan_advice`, `ennodia_get_run`, and
|
|
20
|
+
`ennodia_start_compare`. Each tool is a schema plus one Core call — nothing
|
|
21
|
+
more.
|
|
19
22
|
|
|
20
|
-
Use MCP when a primary agent
|
|
23
|
+
Use MCP when a primary agent needs help from installed local agent
|
|
24
|
+
command-line interface (CLI) programs.
|
|
21
25
|
|
|
22
26
|
## Ennodia Core
|
|
23
27
|
|
|
@@ -26,14 +30,23 @@ Core is responsible for:
|
|
|
26
30
|
- discovering supported local harnesses
|
|
27
31
|
- planning routes with caller-provided categories or keyword fallback
|
|
28
32
|
- estimating preflight budgets and enforcing local caps on that estimate
|
|
33
|
+
- running the optional Plan Advisor against a bounded inventory, validating its
|
|
34
|
+
inert proposal, and requiring a separate digest-bound call before execution
|
|
29
35
|
- starting child tasks through thin adapters
|
|
30
36
|
- capturing status, output, failures, and timing
|
|
31
37
|
- resolving compositional slices and reporting Compare readiness
|
|
32
|
-
-
|
|
38
|
+
- running the Judge and Result Advisor over successful outputs when Compare is
|
|
39
|
+
requested
|
|
40
|
+
|
|
41
|
+
The roles do not own runtime policy. Plan Advisor proposes harness, model, and
|
|
42
|
+
skill assignments but never executes them. Result Advisor combines Judge
|
|
43
|
+
findings after Compare. If Judge analysis is unavailable, its candidates-only
|
|
44
|
+
basis is exposed rather than hidden.
|
|
33
45
|
|
|
34
46
|
## Ennodia IO
|
|
35
47
|
|
|
36
|
-
Ennodia IO is a local app interface. Start the
|
|
48
|
+
Ennodia IO is a local app interface. Start the Hypertext Transfer Protocol
|
|
49
|
+
(HTTP) server with:
|
|
37
50
|
|
|
38
51
|
```sh
|
|
39
52
|
npx -y @cherninlab/ennodia-io
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Second Opinions as Infrastructure
|
|
3
|
-
description: How to use Ennodia for independent AI panels, decomposed reviews, and red-team prompts.
|
|
3
|
+
description: How to use Ennodia for independent artificial intelligence (AI) panels, decomposed reviews, and red-team prompts.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Ennodia convenes independent AI panels for judgments
|
|
7
|
-
|
|
6
|
+
Ennodia convenes independent artificial intelligence (AI) panels for judgments
|
|
7
|
+
that are too important for one model. It shows you exactly where they disagree.
|
|
8
8
|
|
|
9
9
|
Code review is the first strong use case, not the category. The core pattern is
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
delegation to installed local agents with a visible trace. Compare turns
|
|
11
|
+
multiple answers into a disagreement map and one usable result. The Judge maps
|
|
12
|
+
the evidence, and the Result Advisor recommends the answer.
|
|
13
13
|
|
|
14
14
|
## Three Patterns
|
|
15
15
|
|
|
16
16
|
### Replicate
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
Send the same question to multiple agents, then compare the answers.
|
|
19
19
|
|
|
20
20
|
```json
|
|
21
21
|
{
|
|
@@ -37,7 +37,7 @@ issue is high.
|
|
|
37
37
|
|
|
38
38
|
### Decompose
|
|
39
39
|
|
|
40
|
-
Split a broad review into focused slices, then
|
|
40
|
+
Split a broad review into focused slices, then combine the useful completed
|
|
41
41
|
outputs.
|
|
42
42
|
|
|
43
43
|
```json
|
|
@@ -76,7 +76,7 @@ Fan out prompts that argue against a proposal from different angles.
|
|
|
76
76
|
}
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
-
Use this when the primary agent
|
|
79
|
+
Use this when the primary agent has a plausible plan and you want
|
|
80
80
|
independent pressure before committing.
|
|
81
81
|
|
|
82
82
|
## Staging Pattern
|
|
@@ -84,7 +84,7 @@ independent pressure before committing.
|
|
|
84
84
|
For larger reviews, have the primary agent stage a folder containing the case
|
|
85
85
|
file: relevant paths, screenshots, dataset summaries, contracts, or decision
|
|
86
86
|
criteria. Then pass `cwd` to Ennodia so child agents can inspect the same local
|
|
87
|
-
context independently. Keep staged material deliberate
|
|
87
|
+
context independently. Keep staged material deliberate. Do not give every agent
|
|
88
88
|
an unbounded workspace when a smaller evidence bundle will do.
|
|
89
89
|
|
|
90
90
|
## Skills Carry Expertise
|
|
@@ -92,7 +92,7 @@ an unbounded workspace when a smaller evidence bundle will do.
|
|
|
92
92
|
Use Agent Skills as reusable rubrics. A skill can define the review standard,
|
|
93
93
|
expected evidence, output shape, and escalation rules. Ennodia installs bundled
|
|
94
94
|
skills as harness-visible `SKILL.md` folders, then passes skill IDs through a
|
|
95
|
-
run
|
|
95
|
+
run without inlining the full instructions into every prompt.
|
|
96
96
|
|
|
97
97
|
## Examples
|
|
98
98
|
|
|
@@ -101,19 +101,19 @@ run instead of inlining the full instructions into every prompt.
|
|
|
101
101
|
- Contract comparison: decompose obligations, termination, liability, and data
|
|
102
102
|
handling into focused slices.
|
|
103
103
|
- Pre-mortems: red-team a roadmap, launch, or migration plan before work starts.
|
|
104
|
-
- Exam or rubric QA:
|
|
105
|
-
|
|
104
|
+
- Exam or rubric QA: send the same staged rubric to multiple agents. Compare
|
|
105
|
+
where their grading differs.
|
|
106
106
|
|
|
107
107
|
## Honest Constraints
|
|
108
108
|
|
|
109
|
-
Ennodia
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
109
|
+
Ennodia supports careful review. A run usually takes minutes, not seconds.
|
|
110
|
+
Compare adds two serial model passes after the child agents finish.
|
|
111
|
+
Parallel review with Compare costs roughly N child runs, a Judge, and a Result
|
|
112
|
+
Advisor.
|
|
113
113
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
disagreements, and uncertainty
|
|
114
|
+
Ennodia uses installed agent CLIs and local tools. It does not use specialist
|
|
115
|
+
models for one domain. Ennodia supports decisions by showing evidence,
|
|
116
|
+
disagreements, and uncertainty. It does not make regulated, legal, financial,
|
|
117
117
|
medical, or operational decisions for the user.
|
|
118
118
|
|
|
119
119
|
For storage and data movement boundaries, read
|
package/docs/getting-started.md
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Quickstart
|
|
3
|
-
description:
|
|
3
|
+
description: Install Ennodia manually, perform the first checks, and find the next documentation page.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
This page
|
|
7
|
-
|
|
8
|
-
[Installation for Agents](/docs/install/)
|
|
6
|
+
This page gives manual installation instructions for a Model Context Protocol
|
|
7
|
+
(MCP) client. To use an agent for installation and configuration, see
|
|
8
|
+
[Installation for Agents](/docs/install/).
|
|
9
9
|
|
|
10
10
|
## Requirements
|
|
11
11
|
|
|
12
12
|
- Bun `1.3.14` or newer
|
|
13
|
-
- An MCP client that can launch a stdio server
|
|
14
|
-
- At least one supported AI command-line tool
|
|
15
|
-
|
|
13
|
+
- An MCP client that can launch a standard input/output (stdio) server
|
|
14
|
+
- At least one supported artificial intelligence (AI) command-line tool for
|
|
15
|
+
real agent execution
|
|
16
|
+
|
|
17
|
+
See [Supported Harnesses](/docs/reference/supported-harnesses/).
|
|
16
18
|
|
|
17
19
|
## Install from npm
|
|
18
20
|
|
|
@@ -22,15 +24,15 @@ Install the stable release from npm:
|
|
|
22
24
|
npx -y ennodia
|
|
23
25
|
```
|
|
24
26
|
|
|
25
|
-
|
|
26
|
-
Bun directly
|
|
27
|
+
Ennodia requires Bun `1.3.14` or newer. `npx` downloads Ennodia. Bun runs it.
|
|
28
|
+
To use Bun directly, run `bunx ennodia`.
|
|
27
29
|
|
|
28
30
|
The JSR package `@cherninlab/ennodia` exposes TypeScript modules for import.
|
|
29
31
|
Use the npm package for the stdio MCP executable.
|
|
30
32
|
|
|
31
33
|
## Local Checkout
|
|
32
34
|
|
|
33
|
-
Use a checkout
|
|
35
|
+
Use a checkout to modify Ennodia:
|
|
34
36
|
|
|
35
37
|
```sh
|
|
36
38
|
git clone https://github.com/cherninlab/ennodia
|
|
@@ -52,7 +54,7 @@ bun run verify
|
|
|
52
54
|
}
|
|
53
55
|
```
|
|
54
56
|
|
|
55
|
-
For a local checkout,
|
|
57
|
+
For a local checkout, use the source file:
|
|
56
58
|
|
|
57
59
|
```json
|
|
58
60
|
{
|
|
@@ -65,11 +67,11 @@ For a local checkout, point at the source file instead:
|
|
|
65
67
|
}
|
|
66
68
|
```
|
|
67
69
|
|
|
68
|
-
Replace `/absolute/path/to/ennodia` with your local
|
|
70
|
+
Replace `/absolute/path/to/ennodia` with your local repository path.
|
|
69
71
|
|
|
70
72
|
## First Checks
|
|
71
73
|
|
|
72
|
-
From the
|
|
74
|
+
From the repository:
|
|
73
75
|
|
|
74
76
|
```bash
|
|
75
77
|
bun install
|
|
@@ -77,37 +79,63 @@ bun run mcp:smoke
|
|
|
77
79
|
bun run verify
|
|
78
80
|
```
|
|
79
81
|
|
|
80
|
-
From an MCP client, call
|
|
81
|
-
`ennodia_estimate_budget
|
|
82
|
-
|
|
83
|
-
the
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
From an MCP client, call `ennodia_list_harnesses`. Then call
|
|
83
|
+
`ennodia_estimate_budget`. To inspect the route, call `ennodia_plan`.
|
|
84
|
+
|
|
85
|
+
Start the work with `ennodia_run`. This tool plans the route and starts the
|
|
86
|
+
selected tasks. It can also compare successful outputs. It returns a run
|
|
87
|
+
identifier (ID).
|
|
88
|
+
|
|
89
|
+
Poll `ennodia_get_run` with that ID. Stop when the status is `succeeded`,
|
|
90
|
+
`failed`, or `cancelled`.
|
|
91
|
+
|
|
92
|
+
Expect real runs to take minutes. Compare adds a Judge pass and a Result
|
|
93
|
+
Advisor pass after child agents finish.
|
|
94
|
+
|
|
95
|
+
## Optional Team Advice
|
|
96
|
+
|
|
97
|
+
For a proposed work split, call `ennodia_start_plan_advice`. The Plan Advisor
|
|
98
|
+
proposes explicit harness, model, and skill assignments. It cannot execute them.
|
|
99
|
+
|
|
100
|
+
Poll `ennodia_get_plan_advice`. Stop when the status is `ready`, `consumed`,
|
|
101
|
+
`invalid`, `failed`, or `cancelled`.
|
|
102
|
+
|
|
103
|
+
Ennodia parses the response as strict plan data. It validates the data against
|
|
104
|
+
the frozen harness, model, and skill inventory.
|
|
105
|
+
|
|
106
|
+
To start a ready plan once, call `ennodia_start_advised_plan`. Pass the returned
|
|
107
|
+
`planDigest` as `expectedPlanDigest`. Ennodia validates the current inventory
|
|
108
|
+
and budget again before authorizing the plan. A mismatch stops the operation
|
|
109
|
+
before any worker task starts. Authorization consumes the advice, so a second
|
|
110
|
+
launch with the same advice fails before any worker task starts.
|
|
111
|
+
|
|
112
|
+
Compare is a separate operation after worker completion. The Judge maps the
|
|
113
|
+
completed answers. Then the Result Advisor recommends one answer.
|
|
86
114
|
|
|
87
|
-
|
|
88
|
-
|
|
115
|
+
If Judge analysis is not available, the Result Advisor can use only the
|
|
116
|
+
candidate outputs. The Compare result shows this condition.
|
|
89
117
|
|
|
90
118
|
## Next Pages
|
|
91
119
|
|
|
92
120
|
- [Budgets and Limits](/docs/guides/budgets-and-limits/) explains
|
|
93
121
|
`ennodia_estimate_budget` and run limits.
|
|
94
|
-
- [
|
|
122
|
+
- [Agent Skills](/docs/guides/agent-skills/) explains `skillIds` and
|
|
95
123
|
native `SKILL.md` installation.
|
|
96
124
|
- [Supported Harnesses](/docs/reference/supported-harnesses/) lists adapter IDs
|
|
97
|
-
and
|
|
125
|
+
and installation notes.
|
|
98
126
|
- [MCP Tools](/docs/reference/mcp-tools/) is the full parameter reference.
|
|
99
127
|
|
|
100
128
|
## Expected Behavior
|
|
101
129
|
|
|
102
|
-
An Ennodia run is
|
|
130
|
+
An Ennodia run is visible. You can inspect:
|
|
103
131
|
|
|
104
132
|
- selected harnesses
|
|
105
133
|
- child task IDs
|
|
106
134
|
- task status
|
|
107
|
-
- stdout and stderr previews
|
|
135
|
+
- standard output (stdout) and standard error (stderr) previews
|
|
108
136
|
- elapsed time and per-task timeout
|
|
109
137
|
- Compare state, if Compare was used
|
|
110
138
|
- final answer or explicit failure reason
|
|
111
139
|
|
|
112
|
-
If a child tool times out or fails, Ennodia
|
|
113
|
-
|
|
140
|
+
If a child tool times out or fails, Ennodia must report that state. It must not
|
|
141
|
+
conceal the failure.
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
3
|
-
description: Install bundled Ennodia skills
|
|
2
|
+
title: Agent Skills
|
|
3
|
+
description: Install bundled Ennodia skills in native harness locations and tell child agents to use them during a run.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Ennodia uses native Agent Skills. A skill is a folder
|
|
7
|
-
|
|
6
|
+
Ennodia uses native Agent Skills. A skill is a folder that contains `SKILL.md`.
|
|
7
|
+
Install it where each harness can find skills.
|
|
8
8
|
|
|
9
|
-
Ennodia does not
|
|
10
|
-
instructions
|
|
11
|
-
|
|
9
|
+
Ennodia does not use a private skill format. It does not put the full skill
|
|
10
|
+
instructions in each delegated prompt.
|
|
11
|
+
|
|
12
|
+
Ennodia installs or discovers the native skill folder. It then passes the
|
|
13
|
+
selected `skillIds` into the run.
|
|
12
14
|
|
|
13
15
|
## List Available Skills
|
|
14
16
|
|
|
@@ -26,8 +28,8 @@ directories, and load warnings.
|
|
|
26
28
|
|
|
27
29
|
## Preview Installation
|
|
28
30
|
|
|
29
|
-
Bundled skills
|
|
30
|
-
writes before
|
|
31
|
+
Bundled skills use dry-run installation by default. The caller can inspect the
|
|
32
|
+
planned writes before any change:
|
|
31
33
|
|
|
32
34
|
```json
|
|
33
35
|
{
|
|
@@ -50,7 +52,7 @@ Review the planned paths. If they are correct, repeat with `dryRun: false`.
|
|
|
50
52
|
{
|
|
51
53
|
"tool": "ennodia_run",
|
|
52
54
|
"arguments": {
|
|
53
|
-
"prompt": "Audit
|
|
55
|
+
"prompt": "Audit this documentation against the linked sources and recommend exact edits.",
|
|
54
56
|
"mode": "parallel",
|
|
55
57
|
"compare": true,
|
|
56
58
|
"skillIds": ["source-grounded-audit"]
|
|
@@ -65,8 +67,8 @@ Bundled skills include:
|
|
|
65
67
|
|
|
66
68
|
| Skill | Use it for |
|
|
67
69
|
| --- | --- |
|
|
68
|
-
| `source-grounded-audit` |
|
|
69
|
-
| `compositional-audit` |
|
|
70
|
+
| `source-grounded-audit` | Check claims against repository files, standards, or product documentation. |
|
|
71
|
+
| `compositional-audit` | Limit one shard of a large review to one clear scope. |
|
|
70
72
|
| `rigorous-review` | General correctness and risk review. |
|
|
71
73
|
| `release-readiness` | Public release candidate checks. |
|
|
72
74
|
| `benchmark-critic` | Benchmark credibility and reproducibility review. |
|
|
@@ -80,4 +82,5 @@ Bundled skills include:
|
|
|
80
82
|
| OpenCode | `.opencode/skills` | `~/.config/opencode/skills` |
|
|
81
83
|
| Antigravity | `.agent/skills` | `~/.gemini/antigravity/skills` |
|
|
82
84
|
|
|
83
|
-
See [MCP Tools](/docs/reference/mcp-tools/) for the
|
|
85
|
+
See [Model Context Protocol (MCP) Tools](/docs/reference/mcp-tools/) for the
|
|
86
|
+
exact tool parameters.
|
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Budgets and Limits
|
|
3
|
-
description: How Ennodia estimates preflight input-token budgets and enforces local run limits before
|
|
3
|
+
description: How Ennodia estimates preflight input-token budgets and enforces local run limits before child agents start.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
Ennodia can estimate the input-token budget before a costly run starts. The
|
|
7
|
-
estimate is a
|
|
8
|
-
|
|
9
|
-
calls, and provider-side context are not visible before the run.
|
|
7
|
+
estimate is a budget limit check, not a provider invoice. Child-task estimates
|
|
8
|
+
are lower bounds.
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
Harness system prompts, file reads, tool calls, and provider-side context are
|
|
11
|
+
not visible before the run.
|
|
12
|
+
|
|
13
|
+
Use it before parallel work or long reviews. Also use it when the user limits
|
|
14
|
+
cost, subscription use, or child-task count.
|
|
13
15
|
|
|
14
16
|
## What the Estimate Includes
|
|
15
17
|
|
|
16
18
|
`ennodia_estimate_budget` reports:
|
|
17
19
|
|
|
18
20
|
- selected harness count
|
|
19
|
-
- selected harness IDs
|
|
20
|
-
-
|
|
21
|
+
- selected harness identifiers (IDs)
|
|
22
|
+
- if Compare is planned
|
|
21
23
|
- prompt input estimate
|
|
22
24
|
- potential Compare input from bounded candidate outputs, capped by the same
|
|
23
25
|
24,000-character per-candidate truncation used in the judge prompt
|
|
@@ -27,7 +29,7 @@ cost, subscription pressure, or the number of child agents started.
|
|
|
27
29
|
The estimate does not claim to know provider billing, output tokens, tool-call
|
|
28
30
|
cost, cache behavior, harness-internal context, or private subscription quota.
|
|
29
31
|
|
|
30
|
-
## Estimate Before
|
|
32
|
+
## Estimate Before a Run
|
|
31
33
|
|
|
32
34
|
```json
|
|
33
35
|
{
|
|
@@ -45,8 +47,12 @@ cost, cache behavior, harness-internal context, or private subscription quota.
|
|
|
45
47
|
}
|
|
46
48
|
```
|
|
47
49
|
|
|
48
|
-
If the estimate is too high,
|
|
49
|
-
|
|
50
|
+
If the estimate is too high, use one or more of these changes:
|
|
51
|
+
|
|
52
|
+
- Select fewer harnesses.
|
|
53
|
+
- Make the prompt shorter.
|
|
54
|
+
- Decrease `maxOutputChars`.
|
|
55
|
+
- Use a narrower first pass.
|
|
50
56
|
|
|
51
57
|
## Enforce Limits on a Run
|
|
52
58
|
|
|
@@ -68,16 +74,19 @@ The same budget object can be passed to `ennodia_run`:
|
|
|
68
74
|
}
|
|
69
75
|
```
|
|
70
76
|
|
|
71
|
-
Ennodia checks these local limits before
|
|
72
|
-
input tokens or
|
|
73
|
-
|
|
77
|
+
Ennodia checks these local limits before child tasks start. The run fails early
|
|
78
|
+
if estimated input tokens or the child-task count exceed a cap. Ennodia does
|
|
79
|
+
not start the excess model work.
|
|
74
80
|
|
|
75
81
|
## Subscription Limits
|
|
76
82
|
|
|
77
|
-
Subscription quota checks are
|
|
78
|
-
supported local
|
|
79
|
-
|
|
80
|
-
|
|
83
|
+
Subscription quota checks are conservative by design. Ennodia uses only
|
|
84
|
+
supported local command-line interface (CLI) and application programming
|
|
85
|
+
interface (API) surfaces.
|
|
86
|
+
|
|
87
|
+
If a provider does not expose account quota through a supported surface,
|
|
88
|
+
Ennodia reports the limit as unknown. It does not inspect private account pages
|
|
89
|
+
or create an unsupported value.
|
|
81
90
|
|
|
82
91
|
Today every built-in harness reports subscription quota as unknown because no
|
|
83
92
|
supported local surface exposes a reliable account limit. An older fail-closed
|
|
@@ -86,10 +95,11 @@ supported quota surface.
|
|
|
86
95
|
|
|
87
96
|
## Practical Defaults
|
|
88
97
|
|
|
89
|
-
- For a first
|
|
98
|
+
- For a first documentation or code audit, start with two or three harnesses.
|
|
90
99
|
- Use `maxOutputChars` to keep Compare input bounded.
|
|
91
100
|
- Keep `maxChildTasks` set when the prompt may route to many adapters.
|
|
92
101
|
- Treat unknown subscription-limit status as a transparency signal, not proof
|
|
93
102
|
that a run is cheap or expensive.
|
|
94
103
|
|
|
95
|
-
See the exact tool schema in
|
|
104
|
+
See the exact tool schema in
|
|
105
|
+
[Model Context Protocol (MCP) Tools](/docs/reference/mcp-tools/).
|