ennodia 0.1.0-rc.0 → 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.
Files changed (76) hide show
  1. package/CONTRIBUTING.md +159 -5
  2. package/README.md +107 -50
  3. package/bench/README.md +7 -5
  4. package/bench/bug-recall/run.ts +13 -5
  5. package/bin/ennodia +23 -0
  6. package/docs/assets/agent-font/ennodia-agents.css +44 -0
  7. package/docs/assets/agent-font/ennodia-agents.json +13 -0
  8. package/docs/assets/agent-font/ennodia-agents.woff +0 -0
  9. package/docs/assets/agent-font/ennodia-agents.woff2 +0 -0
  10. package/docs/assets/agents/amp-color.svg +1 -0
  11. package/docs/assets/agents/cline.svg +1 -0
  12. package/docs/assets/agents/codex-transparent.svg +1 -0
  13. package/docs/assets/agents/cursor.svg +1 -0
  14. package/docs/assets/agents/hermesagent.svg +1 -0
  15. package/docs/assets/agents/kilocode.svg +1 -0
  16. package/docs/assets/agents/kiro-color.svg +1 -0
  17. package/docs/assets/agents/kiro.svg +1 -0
  18. package/docs/assets/agents/langgraph.svg +1 -0
  19. package/docs/assets/agents/mcp.svg +1 -0
  20. package/docs/assets/agents/openhands-color.svg +1 -0
  21. package/docs/assets/agents/openrouter.svg +1 -0
  22. package/docs/assets/audio/mouse-down.mp3 +0 -0
  23. package/docs/assets/audio/mouse-up.mp3 +0 -0
  24. package/docs/assets/orchestration-pipeline.svg +4 -3
  25. package/docs/assets/terminal.png +0 -0
  26. package/docs/comparisons/agent-frameworks.md +42 -0
  27. package/docs/comparisons/autogen.md +42 -0
  28. package/docs/comparisons/chathub.md +37 -0
  29. package/docs/comparisons/index.md +79 -0
  30. package/docs/comparisons/langgraph.md +43 -0
  31. package/docs/comparisons/mixture-of-agents.md +40 -0
  32. package/docs/comparisons/model-merging.md +37 -0
  33. package/docs/comparisons/openrouter.md +55 -0
  34. package/docs/concepts/compositional-audits.md +170 -0
  35. package/docs/concepts/data-governance.md +70 -0
  36. package/docs/concepts/how-ennodia-works.md +121 -0
  37. package/docs/concepts/interfaces-and-core.md +56 -0
  38. package/docs/concepts/second-opinions.md +120 -0
  39. package/docs/getting-started.md +81 -47
  40. package/docs/guides/agent-skills.md +86 -0
  41. package/docs/guides/budgets-and-limits.md +105 -0
  42. package/docs/guides/running-better-audits.md +123 -0
  43. package/docs/index.md +98 -10
  44. package/docs/install.md +126 -0
  45. package/docs/reference/benchmarks.md +64 -0
  46. package/docs/reference/controlled-english.md +130 -0
  47. package/docs/reference/ennodia-io.md +254 -0
  48. package/docs/reference/mcp-tools.md +498 -43
  49. package/docs/reference/supported-harnesses.md +71 -0
  50. package/package.json +32 -9
  51. package/skills/benchmark-critic/SKILL.md +20 -0
  52. package/skills/compositional-audit/SKILL.md +27 -0
  53. package/skills/release-readiness/SKILL.md +19 -0
  54. package/skills/rigorous-review/SKILL.md +18 -0
  55. package/skills/source-grounded-audit/SKILL.md +19 -0
  56. package/src/advisor.ts +685 -0
  57. package/src/budget.ts +312 -0
  58. package/src/cli.ts +85 -0
  59. package/src/compare.ts +358 -109
  60. package/src/compositional.ts +331 -0
  61. package/src/core.ts +1149 -0
  62. package/src/diagnosis.ts +1 -8
  63. package/src/harnesses.ts +148 -3
  64. package/src/history.ts +175 -0
  65. package/src/index.ts +195 -52
  66. package/src/internal.ts +32 -0
  67. package/src/plan-advice.ts +601 -0
  68. package/src/planner.ts +44 -28
  69. package/src/priority.ts +83 -0
  70. package/src/runs.ts +300 -65
  71. package/src/server.ts +690 -228
  72. package/src/skills.ts +947 -0
  73. package/src/tasks.ts +255 -58
  74. package/src/version.ts +1 -1
  75. package/docs/in-depth/architecture.md +0 -53
  76. package/docs/in-depth/releasing.md +0 -120
package/CONTRIBUTING.md CHANGED
@@ -1,21 +1,175 @@
1
1
  # Contributing to Ennodia
2
2
 
3
+ Thanks for helping make Ennodia better. Keep changes small, tested, and easy to
4
+ review.
5
+
3
6
  ## Prerequisites
4
7
 
5
- - **Bun** 1.3.14+
6
- - Local AI tools are optional unless you are changing their adapters
8
+ - Bun `1.3.14` or newer
9
+ - Local artificial intelligence (AI) tools only when you change or test their adapters
7
10
 
8
- ## Quickstart
11
+ ## Local workflow
9
12
 
10
13
  ```sh
11
14
  bun install
12
15
  bun run verify
13
16
  ```
14
17
 
15
- `verify` runs typechecking, Oxlint, unit tests, and local MCP smoke checks.
18
+ `bun run verify` runs:
19
+
20
+ - TypeScript typechecking
21
+ - Oxlint
22
+ - Bun tests
23
+ - website build
24
+ - controlled-English deterministic checks
25
+ - task smoke test
26
+ - Model Context Protocol (MCP) smoke test
16
27
 
17
- Before changing release metadata or package contents, also run:
28
+ Before changing release metadata, package contents, or registry config, also run:
18
29
 
19
30
  ```sh
20
31
  bun run release:check
21
32
  ```
33
+
34
+ ## Project rules
35
+
36
+ - Keep adapters thin. Put shared routing, tracing, task lifecycle, recovery, and
37
+ Compare behavior in core modules.
38
+ - Do not add permission-bypass flags to harness commands by default.
39
+ - Do not call provider-private application programming interfaces (APIs).
40
+ Use supported command-line interface (CLI) or API surfaces.
41
+ - Keep progress and status output compact and factual.
42
+ - Keep docs, website copy, package metadata, and MCP behavior aligned in the
43
+ same change when public behavior changes.
44
+ - Edit the version in root `package.json`, then run `bun run version:sync` to
45
+ refresh generated version fields.
46
+
47
+ ## Package surfaces
48
+
49
+ `bin/ennodia` is the executable used by npm, `bunx`, and `npx`.
50
+ `src/cli.ts` starts the stdio MCP server only.
51
+ `src/index.ts` is the side-effect-free TypeScript export surface for the
52
+ JavaScript Registry (JSR) and imports.
53
+ `packages/ennodia-io` is the experimental local Hypertext Transfer Protocol
54
+ (HTTP) package. It owns the
55
+ `ennodia-io` binary and imports Core from the `ennodia` package surface. The
56
+ root package must not ship the HTTP server.
57
+
58
+ ## Releasing
59
+
60
+ Releases are cut by a maintainer, not part of a normal contribution. This
61
+ section exists so the process is written down.
62
+
63
+ **Versioning.** Prerelease versions use SemVer suffixes such as `0.1.0-rc.1`.
64
+ stable versions omit the suffix, such as `0.1.0`. The source of truth is the
65
+ root `package.json` version.
66
+
67
+ `bun run version:sync` derives `jsr.json`,
68
+ `src/version.ts`, `server.json`, `manifest.json`, and the IO package version.
69
+ It also derives the IO dependency on the core version. `bun test` verifies
70
+ that the versions match.
71
+
72
+ **Dist-tags.** Tags containing a hyphen publish to npm's `next` dist-tag.
73
+ tags without a hyphen publish to `latest`:
74
+
75
+ ```bash
76
+ git tag v0.1.0-rc.1 && git push origin v0.1.0-rc.1 # publishes to next
77
+ git tag v0.1.0 && git push origin v0.1.0 # publishes to latest
78
+ ```
79
+
80
+ Since `v0.1.0`, docs recommend the unqualified `ennodia` install, which npm
81
+ resolves to the `latest` dist-tag. Prerelease work between stable releases
82
+ still publishes to `next`. Recommend `ennodia@next` in docs only while a fix
83
+ exists solely on that channel.
84
+
85
+ **Release checklist.**
86
+
87
+ 1. Update the root `package.json` version, then run `bun run version:sync`.
88
+ 2. Run `bun run release:check`. It chains `bun run version:sync`,
89
+ `bun run verify`,
90
+ `npm pack --dry-run`, `npm publish --dry-run --tag next`,
91
+ `npx jsr publish --dry-run --allow-dirty`, and a package smoke test that
92
+ packs a real tarball and MCP-handshakes it through `bunx`, `npm exec`,
93
+ and `npx`. It also runs the `@cherninlab/ennodia-io` typecheck, tests,
94
+ pack dry-run, and npm publish dry-run.
95
+ 3. Commit the version change.
96
+ 4. Push a matching tag, for example `v0.1.0-rc.1`.
97
+ 5. The `Release` GitHub Actions workflow publishes the core `ennodia` package
98
+ to npm and JSR, then `@cherninlab/ennodia-io` to npm, the MCP Registry
99
+ listing, and the GitHub release asset. Re-running a release is safe when a
100
+ prior attempt published one of these immutable versions.
101
+
102
+ **Package contents.** The core npm package must include these items:
103
+
104
+ - `bin/ennodia`
105
+ - source files that the Bun runtime needs
106
+ - README, LICENSE, CONTRIBUTING, and documentation files
107
+ - benchmark fixtures
108
+
109
+ The core npm package must not include these items:
110
+
111
+ - `.github/`, `AGENTS.md`, or `CLAUDE.md`
112
+ - `bun.lock`, `src/dev/`, or `src/io.ts`
113
+ - `*.test.ts`, `packages/`, or `website/`
114
+
115
+ JSR publishes the TypeScript source and docs, but not benchmark fixtures.
116
+ The IO npm package must include `bin/ennodia-io`, its `src/` files, and its
117
+ README. It has an exact runtime dependency on the matching `ennodia` version.
118
+ The release workflow publishes the core package first. The IO package stays
119
+ outside the root Bun workspace so an unpublished next version does not block
120
+ the root install. `bun run release:check` enforces these rules.
121
+
122
+ **Registry publishing.** npm publishes use the repository `NPM_TOKEN` secret.
123
+ The workflow passes it to npm as `NODE_AUTH_TOKEN`. JSR uses GitHub Actions
124
+ OpenID Connect (OIDC) without a JSR token.
125
+
126
+ Link scope `@cherninlab`, package `ennodia`, to
127
+ `cherninlab/ennodia` in JSR package settings. The workflow's `id-token: write`
128
+ permission enables that authentication. To reconfigure npm, ensure the token
129
+ can publish both `ennodia` and `@cherninlab/ennodia-io` with public access.
130
+
131
+ **MCP registry listing.** The official MCP Registry
132
+ (`registry.modelcontextprotocol.io`) hosts metadata only. npm remains the
133
+ artifact source. The listing is defined by `server.json` at the repo root,
134
+ and npm-side ownership is verified through the `mcpName` field in
135
+ `package.json`. Its value must match `io.github.cherninlab/ennodia` in
136
+ `server.json`.
137
+ To publish or update the listing after the npm package is live:
138
+
139
+ ```sh
140
+ brew install mcp-publisher # or download from the registry's releases
141
+ mcp-publisher login github # interactive local login; grants io.github.cherninlab/*
142
+ mcp-publisher publish # validates and submits server.json
143
+ ```
144
+
145
+ The release workflow uses the non-interactive GitHub Actions OIDC equivalent:
146
+ `mcp-publisher login github-oidc --registry=https://registry.modelcontextprotocol.io`.
147
+ This also requires the workflow's `id-token: write` permission.
148
+
149
+ Keep the `version` fields in `server.json` in step with releases. The
150
+ listing is per-version, so re-run `mcp-publisher publish` after each release.
151
+ Community aggregators (Glama, PulseMCP, mcp.so, Smithery) index
152
+ GitHub and the official registry automatically or accept one-time
153
+ submissions. They do not need per-release updates.
154
+
155
+ ## Benchmarks
156
+
157
+ The deterministic benchmark suite is:
158
+
159
+ ```sh
160
+ bun run bench:bug-recall
161
+ ```
162
+
163
+ Live harness benchmarks use:
164
+
165
+ ```sh
166
+ bun run bench:bug-recall:live
167
+ ```
168
+
169
+ Live runs are intentionally not part of `bun run verify`.
170
+
171
+ ## Security
172
+
173
+ Do not commit credentials, provider tokens, `.env` files, or private tool
174
+ configuration. If you suspect a secret was committed, stop and rotate the secret
175
+ before continuing.
package/README.md CHANGED
@@ -1,89 +1,142 @@
1
1
  <div align="center">
2
2
 
3
3
  <a href="https://ennodia.cherninlab.com">
4
- <picture>
5
- <source media="(prefers-color-scheme: dark)" srcset="docs/assets/logo-dark.svg">
6
- <source media="(prefers-color-scheme: light)" srcset="docs/assets/logo.svg">
7
- <img alt="Ennodia" src="docs/assets/logo.svg" width="235" height="50">
4
+ <picture>
5
+ <source media="(prefers-color-scheme: dark)" srcset="https://github.com/cherninlab/ennodia/raw/main/docs/assets/logo-dark.svg">
6
+ <source media="(prefers-color-scheme: light)" srcset="https://github.com/cherninlab/ennodia/raw/main/docs/assets/logo.svg">
7
+ <img alt="Ennodia" src="https://github.com/cherninlab/ennodia/raw/main/docs/assets/logo.svg" width="235" height="50">
8
8
  </picture>
9
9
  </a>
10
10
 
11
- <p><strong>MCP server that lets one AI agent ask other agents for help</strong></p>
11
+ <p><strong>Model Context Protocol (MCP) server for multi-agent review with Compare and traceable receipts</strong></p>
12
12
 
13
13
  <p>
14
14
  <a href="LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-informational"></a>
15
- <img alt="CI" src="https://github.com/cherninlab/ennodia/actions/workflows/ci.yml/badge.svg" />
15
+ <img alt="Continuous integration" src="https://github.com/cherninlab/ennodia/actions/workflows/ci.yml/badge.svg" />
16
+ <a href="https://smithery.ai/servers/cherninlab/ennodia"><img alt="Smithery: Ennodia" src="https://img.shields.io/badge/Smithery-Ennodia-FF5601"></a>
17
+ </p>
18
+
19
+ <p align="center">
20
+ <img alt="Ennodia terminal with three completed artificial intelligence reviews" src="https://github.com/cherninlab/ennodia/raw/main/docs/assets/terminal.png" width="600">
16
21
  </p>
17
22
 
18
23
  </div>
19
24
 
20
- Ennodia is a local MCP server that lets one AI agent ask other agents for help while a task is still in progress. It routes the request, runs selected command line tools, tracks status and output, and can compare several answers before returning one result.
25
+ Ennodia gives your primary agent access to installed agent command-line
26
+ interfaces (CLIs). It tracks each child task and uses model-led Compare to show
27
+ agreements, disagreements, omissions, and one recommended answer with receipts.
21
28
 
22
- It is built for workflows where no single model or agent should be trusted as the only reviewer.
29
+ Before work, an optional Plan Advisor can propose a bounded set of harnesses,
30
+ models, and skills. It does not start the proposed work.
23
31
 
24
- ## Local Setup
32
+ ## Install
25
33
 
26
- From a checkout:
34
+ Send this address to your primary agent. The agent can then complete the
35
+ installation:
36
+
37
+ ```text
38
+ try-ennodia.cherninlab.com
39
+ ```
40
+ To run Ennodia directly as a standard input/output (stdio) MCP server, use:
27
41
 
28
42
  ```sh
29
- git clone https://github.com/cherninlab/ennodia
30
- cd ennodia
31
- bun install
32
- bun run verify
43
+ npx -y ennodia
33
44
  ```
45
+ To use Bun directly, run `bunx ennodia`.
46
+
47
+ For a registry or client installer, use the
48
+ [Ennodia Smithery page](https://smithery.ai/servers/cherninlab/ennodia).
34
49
 
35
- After the npm package is published, the prerelease channel will be available as
36
- `bunx ennodia@next`. `npx` can also launch Ennodia, but only when `bun` is
37
- already available on `PATH`.
50
+ For manual installation or local development, see
51
+ [Quickstart](https://ennodia.cherninlab.com/docs/getting-started/).
38
52
 
39
- ## What Ennodia Does
53
+ ## What Ennodia does
40
54
 
41
- - Discovers available local AI tools
42
- - Plans which tool should handle a request
55
+ - Discovers available local artificial intelligence (AI) tools
56
+ - Plans a route with a caller-provided category or keyword fallback
57
+ - Estimates preflight input tokens and enforces local caps on that estimate
43
58
  - Starts and monitors child tasks
44
- - Shows status, timing, logs, and failures
59
+ - Shows status, elapsed time, logs, and failures
45
60
  - Cancels tasks and runs explicitly
46
- - Compares multiple completed outputs
47
- - Synthesizes one answer from the comparison
61
+ - Lets a Plan Advisor propose an inert, validated work plan
62
+ - Compares multiple completed outputs with a Judge
63
+ - Lets a Result Advisor combine the Judge findings into one answer
64
+
65
+ `ennodia_run` is the main entrypoint. It plans and starts tasks. It can also use
66
+ Compare. It returns a run identifier (ID) for use with `ennodia_get_run`.
67
+
68
+ See [MCP tools](https://ennodia.cherninlab.com/docs/reference/mcp-tools/) for
69
+ the full tool and parameter reference.
70
+
71
+ Use Ennodia for work that needs additional model analysis. A run usually takes
72
+ minutes. Compare adds two serial model passes after the child agents finish.
73
+
74
+ ## Judge, Plan Advisor, and Result Advisor
75
+
76
+ Each role has limited responsibilities:
48
77
 
49
- ## Supported Harnesses
78
+ - **Plan Advisor** runs before work when requested. It proposes explicit
79
+ harness, model, and skill assignments as inert data. Ennodia validates the
80
+ proposal against a frozen inventory. Plan Advisor cannot execute it. The
81
+ caller must use a separate call to start the validated plan once.
82
+ - **Judge** runs during Compare and maps agreements, contradictions, unique
83
+ evidence, omissions, and risks across completed outputs.
84
+ - **Result Advisor** follows the Judge. It uses the Judge findings and original
85
+ outputs to recommend an answer. If Judge analysis is not usable, it uses
86
+ `basis: "candidates-only"`. This status makes the degradation visible.
50
87
 
51
- Current adapters:
88
+ ## Ennodia IO
89
+
90
+ The separate `@cherninlab/ennodia-io` package provides a local Hypertext
91
+ Transfer Protocol (HTTP) and TypeScript interface. Apps can use it with
92
+ user-supplied keys and installed local agents:
93
+
94
+ ```sh
95
+ npx -y @cherninlab/ennodia-io
96
+ ```
97
+
98
+ See [Ennodia IO](https://ennodia.cherninlab.com/docs/reference/ennodia-io/) for
99
+ supported fields, authentication behavior, cross-origin resource sharing
100
+ rules, and current limits.
101
+
102
+ ## Supported harnesses
52
103
 
53
104
  - Codex CLI
54
105
  - Claude Code
55
106
  - OpenCode
107
+ - Kilo Code
108
+ - Kiro CLI
109
+ - Cline CLI
110
+ - Hermes Agent
56
111
  - Antigravity
57
112
 
58
- Adapters stay thin. Shared routing, tracing, task state, recovery, and Compare
59
- logic live in the core modules.
60
-
61
- ## MCP Tools
113
+ Adapters stay thin. Core modules contain shared routing, trace data, task state,
114
+ recovery, and Compare logic.
62
115
 
63
- Common entrypoints:
116
+ Evaluated candidates include Gemini CLI, GitHub Copilot CLI, Amp, Aider, Goose,
117
+ Qwen Code, and Cursor CLI. Ennodia does not include these candidates.
64
118
 
65
- - `ennodia_list_harnesses` - show detected tools
66
- - `ennodia_plan` - preview routing for a prompt
67
- - `ennodia_start` - start direct child tasks without run-level synthesis
68
- - `ennodia_run` - plan, execute, optionally Compare, and return a final answer
69
- - `ennodia_get_run` - inspect run state, events, ETA, and final output
70
- - `ennodia_cancel_run` - cancel a running orchestration
71
- - `ennodia_start_compare` - compare completed task outputs or supplied responses
72
-
73
- Lower-level task tools are available for polling and cancellation.
119
+ Ennodia can add a candidate after verification of a supported prompt-in and
120
+ text-out interface. Verification must not use permission-bypass flags or
121
+ provider-private APIs.
74
122
 
75
123
  ## Documentation
76
124
 
77
- - [Getting started](docs/getting-started.md)
78
- - [How Ennodia works](docs/in-depth/architecture.md)
79
- - [MCP tools](docs/reference/mcp-tools.md)
80
- - [Releasing Ennodia](docs/in-depth/releasing.md)
125
+ - [Installation for Agents](https://ennodia.cherninlab.com/docs/install/): agent-controlled installation
126
+ - [Quickstart](https://ennodia.cherninlab.com/docs/getting-started/): manual installation and local development
127
+ - [MCP Tools](https://ennodia.cherninlab.com/docs/reference/mcp-tools/): full tool parameter reference
128
+ - [How Ennodia Works](https://ennodia.cherninlab.com/docs/concepts/how-ennodia-works/): orchestration pipeline
129
+ - [Second Opinions](https://ennodia.cherninlab.com/docs/concepts/second-opinions/): replicate, decompose, and red-team patterns
130
+ - [Data Governance](https://ennodia.cherninlab.com/docs/concepts/data-governance/): local storage and data movement boundaries
131
+ - [Controlled English](https://ennodia.cherninlab.com/docs/reference/controlled-english/): ASD-STE100 rules and Ennodia technical terms
132
+ - [Comparisons](https://ennodia.cherninlab.com/docs/comparisons/): comparisons with adjacent tools
133
+ - [Benchmarks](https://ennodia.cherninlab.com/docs/reference/benchmarks/): deterministic bug-recall results
134
+ - [Better Audits](https://ennodia.cherninlab.com/docs/guides/running-better-audits/): prompt rubrics for Compare
81
135
 
82
136
  ## Benchmarks
83
137
 
84
- The first benchmark is `multi-model-bug-recall`: small TypeScript review
85
- fixtures scored against committed bug oracles. Run the deterministic fixture
86
- suite with:
138
+ The current benchmark is `multi-model-bug-recall`. It uses small TypeScript
139
+ review fixtures and committed bug oracles. Run the deterministic suite with:
87
140
 
88
141
  ```sh
89
142
  bun run bench:bug-recall
@@ -92,8 +145,12 @@ bun run bench:bug-recall
92
145
  Live harness runs are available through `bun run bench:bug-recall:live` and are
93
146
  kept out of `bun run verify`.
94
147
 
95
- ## Contributing
148
+ The current dated fixture snapshot is published in
149
+ [Benchmarks](https://ennodia.cherninlab.com/docs/reference/benchmarks/): 4
150
+ cases, with `ennodia-parallel-compare` at 100% recall and 100% precision.
151
+
152
+ ## Contribute
96
153
 
97
- Ennodia is under active development. Bug reports and small, focused pull requests
98
- are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for the local verification
99
- workflow.
154
+ Ennodia is under active development. You can submit bug reports and small,
155
+ focused pull requests. See [CONTRIBUTING.md](CONTRIBUTING.md) for the local
156
+ verification workflow.
package/bench/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Benchmarks
2
2
 
3
3
  Ennodia's first release-candidate benchmark is `multi-model-bug-recall`: small
4
- TypeScript review fixtures with committed oracles. It measures whether
4
+ TypeScript review fixtures with committed oracles. It measures if
5
5
  parallel peer review plus Compare recovers more required findings than a solo
6
6
  harness answer.
7
7
 
@@ -11,8 +11,8 @@ The default command is deterministic and uses committed reference outputs:
11
11
  bun run bench:bug-recall
12
12
  ```
13
13
 
14
- The live command starts a fresh Ennodia MCP server and runs real harnesses. It
15
- is intentionally not part of `bun run verify`.
14
+ The live command starts a fresh Ennodia Model Context Protocol (MCP) server and
15
+ runs real harnesses. It is intentionally not part of `bun run verify`.
16
16
 
17
17
  ```sh
18
18
  bun run bench:bug-recall:live -- --fixture 001-missing-await
@@ -20,10 +20,12 @@ bun run bench:bug-recall:live -- --fixture 001-missing-await
20
20
 
21
21
  Useful flags:
22
22
 
23
- - `--fixture <id>` runs one fixture; repeat it to select several.
23
+ - `--fixture <id>` runs one fixture. Repeat it to select multiple fixtures.
24
24
  - `--harness <id>` adds a solo baseline harness in live mode. Defaults to
25
25
  `codex` and `claude-code`.
26
- - `--judge-harness <id>` and `--synthesizer-harness <id>` pin Compare roles.
26
+ - `--judge-harness <id>` and `--advisor-harness <id>` select Compare roles.
27
+ - `--synthesizer-harness <id>` is a deprecated alias for
28
+ `--advisor-harness <id>`.
27
29
  - `--timeout-ms <ms>` sets the per-run timeout for live harness calls.
28
30
  - `--out <dir>` writes results to a specific directory.
29
31
 
@@ -21,7 +21,7 @@ type CliOptions = {
21
21
  timeoutMs: number;
22
22
  outDir?: string;
23
23
  judgeHarnessId?: string;
24
- synthesizerHarnessId?: string;
24
+ advisorHarnessId?: string;
25
25
  };
26
26
 
27
27
  type McpTextContent = {
@@ -97,7 +97,7 @@ async function runLiveBenchmark(
97
97
  });
98
98
  const transport = new StdioClientTransport({
99
99
  command: "bun",
100
- args: ["run", "src/index.ts"],
100
+ args: ["run", "src/cli.ts"],
101
101
  cwd: new URL("../../", import.meta.url).pathname,
102
102
  stderr: "pipe",
103
103
  });
@@ -129,7 +129,7 @@ async function runLiveBenchmark(
129
129
  compare: true,
130
130
  timeoutMs: options.timeoutMs,
131
131
  judgeHarnessId: options.judgeHarnessId,
132
- synthesizerHarnessId: options.synthesizerHarnessId,
132
+ advisorHarnessId: options.advisorHarnessId,
133
133
  maxOutputChars: 16_000,
134
134
  });
135
135
  outputs.push(runToOutput(
@@ -284,8 +284,16 @@ function parseArgs(args: string[]): CliOptions {
284
284
  options.outDir = requireValue(args, ++index, arg);
285
285
  } else if (arg === "--judge-harness") {
286
286
  options.judgeHarnessId = requireValue(args, ++index, arg);
287
- } else if (arg === "--synthesizer-harness") {
288
- options.synthesizerHarnessId = requireValue(args, ++index, arg);
287
+ } else if (
288
+ arg === "--advisor-harness" || arg === "--synthesizer-harness"
289
+ ) {
290
+ const value = requireValue(args, ++index, arg);
291
+ if (options.advisorHarnessId && options.advisorHarnessId !== value) {
292
+ throw new Error(
293
+ "--advisor-harness and --synthesizer-harness must match.",
294
+ );
295
+ }
296
+ options.advisorHarnessId = value;
289
297
  } else {
290
298
  throw new Error(`Unknown option: ${arg}`);
291
299
  }
package/bin/ennodia ADDED
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env node
2
+ import { spawnSync } from "node:child_process";
3
+ import path from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+
6
+ const cliPath = path.join(path.dirname(fileURLToPath(import.meta.url)), "..", "src", "cli.ts");
7
+
8
+ const bunCheck = spawnSync("bun", ["--version"], { stdio: "ignore" });
9
+
10
+ if (bunCheck.error) {
11
+ process.stderr.write(
12
+ "Ennodia requires Bun (1.3.14 or newer) to run, but it wasn't found on your PATH.\n" +
13
+ "Install Bun from https://bun.sh, then try again:\n" +
14
+ " curl -fsSL https://bun.sh/install | bash\n",
15
+ );
16
+ process.exit(1);
17
+ }
18
+
19
+ const result = spawnSync("bun", ["run", cliPath, ...process.argv.slice(2)], {
20
+ stdio: "inherit",
21
+ });
22
+
23
+ process.exit(result.status ?? 1);
@@ -0,0 +1,44 @@
1
+ @font-face {
2
+ font-family: "Ennodia Agent Logos";
3
+ src: url("./ennodia-agents.woff2") format("woff2"), url("./ennodia-agents.woff") format("woff");
4
+ font-display: block;
5
+ font-style: normal;
6
+ font-weight: 400;
7
+ }
8
+
9
+ .agent-logo {
10
+ font-family: "Ennodia Agent Logos";
11
+ display: inline-block;
12
+ width: 1em;
13
+ height: 1em;
14
+ color: currentColor;
15
+ direction: ltr;
16
+ font-feature-settings: normal;
17
+ font-size: 1em;
18
+ font-style: normal;
19
+ font-variant: normal;
20
+ font-weight: 400;
21
+ letter-spacing: 0;
22
+ line-height: 1;
23
+ text-rendering: geometricPrecision;
24
+ text-transform: none;
25
+ vertical-align: -0.12em;
26
+ -moz-osx-font-smoothing: grayscale;
27
+ -webkit-font-smoothing: antialiased;
28
+ }
29
+
30
+ .agent-logo::before {
31
+ display: block;
32
+ }
33
+
34
+ .agent-logo--antigravity::before { content: "\e001"; }
35
+ .agent-logo--claude-code::before { content: "\e002"; }
36
+ .agent-logo--cline::before { content: "\e003"; }
37
+ .agent-logo--codex::before { content: "\e004"; }
38
+ .agent-logo--hermes-agent::before { content: "\e005"; }
39
+ .agent-logo--kilo-code::before { content: "\e006"; }
40
+ .agent-logo--kiro::before { content: "\e007"; }
41
+ .agent-logo--opencode::before { content: "\e008"; }
42
+ .agent-logo--mcp::before { content: "\e009"; }
43
+ .agent-logo--langgraph::before { content: "\e00a"; }
44
+ .agent-logo--openrouter::before { content: "\e00b"; }
@@ -0,0 +1,13 @@
1
+ {
2
+ "antigravity": 57345,
3
+ "claude-code": 57346,
4
+ "cline": 57347,
5
+ "codex": 57348,
6
+ "hermes-agent": 57349,
7
+ "kilo-code": 57350,
8
+ "kiro": 57351,
9
+ "opencode": 57352,
10
+ "mcp": 57353,
11
+ "langgraph": 57354,
12
+ "openrouter": 57355
13
+ }
@@ -0,0 +1 @@
1
+ <svg height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Amp</title><path d="M15.087 23.18L12.03 24l-2.097-7.823-5.738 5.738-2.251-2.251 5.718-5.719-7.769-2.082.82-3.057 11.294 3.08 3.08 11.295z" fill="#F34E3F"></path><path d="M19.505 18.762l-3.057.82-2.564-9.573-9.572-2.564.819-3.057 11.295 3.079 3.08 11.295z" fill="#F34E3F"></path><path d="M23.893 14.374l-3.057.82-2.565-9.572L8.7 3.057 9.52 0l11.295 3.08 3.079 11.294z" fill="#F34E3F"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" style="flex:none;line-height:1" viewBox="0 0 24 24"><title>Cline</title><path d="M17.035 3.991c2.75 0 4.98 2.24 4.98 5.003v1.667l1.45 2.896a1.01 1.01 0 0 1-.002.909l-1.448 2.864v1.668c0 2.762-2.23 5.002-4.98 5.002H7.074c-2.751 0-4.98-2.24-4.98-5.002V17.33l-1.48-2.855a1.01 1.01 0 0 1-.003-.927l1.482-2.887V8.994c0-2.763 2.23-5.003 4.98-5.003zM8.265 9.6a2.274 2.274 0 0 0-2.274 2.274v4.042a2.274 2.274 0 0 0 4.547 0v-4.042A2.274 2.274 0 0 0 8.265 9.6m7.326 0a2.274 2.274 0 0 0-2.274 2.274v4.042a2.274 2.274 0 1 0 4.548 0v-4.042A2.274 2.274 0 0 0 15.59 9.6z"/><path d="M12.054 5.558a2.779 2.779 0 1 0 0-5.558 2.779 2.779 0 0 0 0 5.558"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24"><title>Codex</title><path fill="url(#lobe-icons-codex-_R_0_)" d="M9.064 3.344a4.6 4.6 0 0 1 2.285-.312q1.5.173 2.673 1.275.016.015.037.021a.1.1 0 0 0 .043 0 4.55 4.55 0 0 1 3.046.275l.047.022.116.057a4.58 4.58 0 0 1 2.188 2.399q.313.765.315 1.595a4.2 4.2 0 0 1-.134 1.223.12.12 0 0 0 .03.115q.89.91 1.183 2.17.433 2.138-.887 3.854l-.136.166a4.55 4.55 0 0 1-2.201 1.388.12.12 0 0 0-.081.076c-.191.551-.383 1.023-.74 1.494-.9 1.187-2.222 1.846-3.711 1.838q-1.78-.009-3.157-1.302a.11.11 0 0 0-.105-.024c-.388.125-.78.143-1.204.138a4.44 4.44 0 0 1-1.945-.466 4.54 4.54 0 0 1-1.61-1.335c-.152-.202-.303-.392-.414-.617a6 6 0 0 1-.37-.961 4.6 4.6 0 0 1-.014-2.298.1.1 0 0 0 .006-.056.1.1 0 0 0-.027-.048 4.5 4.5 0 0 1-1.034-1.651 3.9 3.9 0 0 1-.251-1.192 5.2 5.2 0 0 1 .141-1.6Q3.659 7.92 5.086 6.97q.318-.212.601-.33a6 6 0 0 1 .646-.227.1.1 0 0 0 .065-.066 4.5 4.5 0 0 1 .829-1.615 4.54 4.54 0 0 1 1.837-1.388m3.482 10.565a.637.637 0 0 0 0 1.272h3.636a.637.637 0 1 0 0-1.272zM8.462 9.23a.637.637 0 0 0-1.106.631l1.272 2.224-1.266 2.136a.636.636 0 1 0 1.095.649l1.454-2.455a.64.64 0 0 0 .005-.64z"/><defs><linearGradient id="lobe-icons-codex-_R_0_" x1="12" x2="12" y1="3" y2="21" gradientUnits="userSpaceOnUse"><stop stop-color="#b1a7ff"/><stop offset=".5" stop-color="#7a9dff"/><stop offset="1" stop-color="#3941ff"/></linearGradient></defs></svg>
@@ -0,0 +1 @@
1
+ <svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Cursor</title><path d="M22.106 5.68L12.5.135a.998.998 0 00-.998 0L1.893 5.68a.84.84 0 00-.419.726v11.186c0 .3.16.577.42.727l9.607 5.547a.999.999 0 00.998 0l9.608-5.547a.84.84 0 00.42-.727V6.407a.84.84 0 00-.42-.726zm-.603 1.176L12.228 22.92c-.063.108-.228.064-.228-.061V12.34a.59.59 0 00-.295-.51l-9.11-5.26c-.107-.062-.063-.228.062-.228h18.55c.264 0 .428.286.296.514z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" style="flex:none;line-height:1" viewBox="0 0 24 24"><title>Hermes Agent</title><path d="M5.938 12.835c.127-.039.285.02.373.143.028.038.036.092.046.14.003.014-.02.033-.04.05q-.184-.146-.354-.291c-.011-.01-.016-.027-.025-.042m2.458-3.423c.195-.032.39-.06.588-.05a.5.5 0 0 1 .148.026q.303.107.601.224c.028.01.05.036.075.055l-.013.027a9 9 0 0 1-.26-.089c-.115-.038-.213-.077-.315-.098-.25-.05-.25-.046-.292-.014l.574.144q.413.207.823.417c.042.022.09.057.107.098.026.06.063.076.117.072.066-.006.132-.017.213-.027l-.04.086c.051.08.142.02.216.064-.074.13-.247.09-.334.199l.061.074-.12.087c0 .106-.038.168-.306.243l.026.085-.196.042.07.124h-.25l-.007.137-.244-.027-.053.123c-.027-.008-.052-.011-.073-.023-.067-.038-.128-.056-.195.006-.019.017-.063.014-.093.008-.026-.006-.05-.029-.07-.042-.11.095-.11.095-.208.003-.057.046-.12.074-.186.011-.063.027-.123-.02-.178-.014-.07.007-.097-.035-.133-.07l-.13.033c-.013-.236-.194-.19-.34-.203.005-.072.05-.092.095-.094a.5.5 0 0 1 .159.022c.164.05.32.12.496.138.203.021.405.029.601-.015.265-.059.52-.149.707-.365.049-.056.083-.127.117-.195.019-.038.02-.084-.02-.116a1.4 1.4 0 0 0-.382-.217c.024.12-.031.182-.115.221 0 .014-.004.025 0 .03.08.115.084.16-.007.267a1.4 1.4 0 0 1-.218.211.477.477 0 0 1-.641-.05 1.4 1.4 0 0 1-.133-.152c-.078-.107-.076-.108-.033-.236-.165-.08-.128-.226-.104-.364.008-.05.028-.096.049-.163-.04.014-.067.017-.087.032a.9.9 0 0 0-.316.357c-.007.016-.01.034-.02.047-.012.015-.034.038-.045.035-.02-.006-.037-.027-.05-.045-.008-.012-.007-.032-.012-.057h-.126l.053-.172-.039-.049.11-.284c-.06.026-.091.044-.124.051-.03.007-.064 0-.095 0 0-.031-.01-.07.004-.092.149-.22.305-.428.593-.476"/><path d="M8.06 10.788c-.003-.038-.004-.075.037-.062.016.006.034.048.028.067-.01.04-.038.032-.064-.005z"/><path d="M11.981.009q.34-.017.679 0c.247.01.495.024.74.062q.602.097 1.19.273c.463.138.92.299 1.356.511a7.3 7.3 0 0 1 2.948 2.642q.436.704.739 1.479c.219.556.446 1.11.623 1.683.204.654.329 1.326.458 1.997.097.504.182 1.01.29 1.511.156.722.329 1.44.494 2.16.186.812.4 1.615.63 2.415.102.355.193.713.282 1.072.11.436.202.876.254 1.323.031.278.066.557.073.837a8 8 0 0 1-.017.88c-.037.413-.1.818-.226 1.212a5 5 0 0 1-.915 1.649l-.13.156.018.023c.043-.023.088-.041.127-.068.2-.138.373-.307.531-.49.4-.46.721-.973.975-1.529a3.6 3.6 0 0 0 .325-1.72c-.024-.424-.097-.834-.3-1.213-.013-.027-.015-.06-.03-.121.05.035.082.048.101.072.107.13.22.258.315.398.33.494.46 1.052.486 1.64a3.75 3.75 0 0 1-.47 1.97c-.36.655-.887 1.14-1.526 1.506-.193.111-.394.21-.595.308-.157.078-.248.211-.318.365a.52.52 0 0 0-.033.406.4.4 0 0 1 .013.139c-.005.077-.077.155-.14.162-.054.006-.125-.043-.15-.116a1.2 1.2 0 0 1-.06-.233c-.04-.314-.155-.6-.308-.87a3.9 3.9 0 0 0-.73-.91 2.1 2.1 0 0 0-.897-.524 4 4 0 0 0-.692-.131c-.075-.008-.15-.04-.22.01.18.06.363.11.538.18.434.173.82.43 1.18.728.308.255.58.543.794.884.098.155.186.315.227.496.027.123.042.25.067.375q.021.092-.053.144c-.047.033-.122.034-.163-.01a.5.5 0 0 1-.08-.14c-.03-.073-.038-.159-.078-.225a7.3 7.3 0 0 0-1.423-1.664c-.16-.137-.329-.26-.537-.323-.376-.114-.753-.203-1.15-.154-.213.025-.427.032-.64.053a1.6 1.6 0 0 0-.736.278 5 5 0 0 0-.834.72c-.329.342-.642.699-.955 1.055-.136.155-.264.319-.314.531l-.012.051a.096.096 0 0 1-.09.076h-.31c-.046 0-.082-.048-.072-.094q.033-.162.07-.324c.075-.325.19-.635.368-.917.024-.039.04-.088.104-.08l.01.049.027.077c.28-.435.571-.834.996-1.135.283-.204.584-.378.89-.55a.2.2 0 0 0-.098-.002c-.162.043-.325.084-.485.134-.402.124-.764.33-1.11.566-.147.1-.298.193-.414.333a7.3 7.3 0 0 0-1.07 1.767 1 1 0 0 0-.04.12.075.075 0 0 1-.072.056h-.494c-.04 0-.062-.051-.036-.082.123-.14.246-.282.377-.415.275-.281.58-.532.777-.884.027-.048.063-.09.095-.135.238-.333.54-.607.818-.902.082-.086.175-.16.26-.24q.042-.042.079-.085l-.018-.025-.135.041q-.053.023-.102.05c-.248.144-.494.292-.743.433-.408.23-.825.439-1.209.711-.281.2-.591.358-.889.533-.02.012-.044.015-.08.028-.015-.135.143-.201.108-.336-.033.014-.064.02-.085.038-.111.096-.227.19-.328.296-.148.157-.284.325-.425.488q-.188.214-.373.431A.15.15 0 0 1 9.89 24H8.762l.016-.042c.028-.09.085-.172.083-.28-.091-.018-.162.001-.212.077a5 5 0 0 0-.136.215c-.01.016-.024.03-.042.03h-.093c-.019 0-.029-.022-.017-.037q.106-.133.209-.268c.001-.002-.006-.012-.012-.024q-.022.004-.045.013-.264.135-.527.274a.4.4 0 0 1-.168.042H5.202c-.026 0-.039-.036-.019-.053a3 3 0 0 0 .558-.605c.335-.496.538-1.047.667-1.629.004-.02-.003-.043-.006-.091-.037.048-.059.072-.076.1a2 2 0 0 1-.334.415c-.28.258-.59.448-.983.464-.297.012-.588 0-.865-.127-.46-.21-.722-.57-.794-1.072-.025-.17-.017-.171-.182-.219A3.5 3.5 0 0 1 1.97 20.6a2.3 2.3 0 0 1-.808-1.13 3.6 3.6 0 0 1-.16-1.245c.002-.034.016-.067.024-.1.032.023.046.043.05.066.033.153.059.308.096.46q.128.534.516.92c.258.256.571.419.91.532.358.118.717.138 1.07-.016a1.9 1.9 0 0 0 .621-.452c.328-.348.533-.76.648-1.223.009-.034.005-.071.007-.11-.015.006-.026.006-.03.011q-.048.075-.093.152A2.7 2.7 0 0 1 3.625 19.6c-.351.17-.718.255-1.11.159a1.6 1.6 0 0 1-.971-.64 2 2 0 0 1-.368-.924 2.9 2.9 0 0 1 .02-.886c.05-.439.466-1.17.742-1.271-.02.063-.035.112-.053.16-.043.116-.097.227-.13.345a1.9 1.9 0 0 0-.05.82c.033.212.09.416.204.6.147.236.346.407.62.465.11.023.225.014.338.018a.58.58 0 0 0 .386-.131 1.2 1.2 0 0 0 .366-.481c.168-.375.24-.777.309-1.179q.074-.444.133-.893c.039-.281.071-.563.104-.845.026-.232.048-.464.074-.696l.076-.683q.036-.34.069-.683l.034-.42.037-.417q.031-.375.065-.748c.008-.082-.02-.132-.09-.177a2.5 2.5 0 0 1-.492-.418c-.1-.109-.188-.228-.282-.342-.035-.042-.056-.097-.116-.118a2.1 2.1 0 0 0 .275.597c.06.092.131.176.196.265.063.086.182.115.234.226-.028.003-.046.01-.06.006a5 5 0 0 1-.22-.057 2.7 2.7 0 0 1-1.287-.819c-.435-.487-.656-1.076-.71-1.723a5.2 5.2 0 0 1 .014-1.06q.106-.905.45-1.745c.155-.376.338-.741.526-1.102.205-.393.466-.75.765-1.076.512-.559 1.104-1.024 1.726-1.448a12.8 12.8 0 0 1 2.277-1.233A11 11 0 0 1 9.31.494c.655-.166 1.31-.33 1.982-.415.229-.03.458-.058.688-.07zm-1.847 22.82c-.07.06-.147.111-.207.18-.238.27-.464.549-.668.869l-.044.108a.2.2 0 0 0 .093-.057c.174-.19.351-.378.519-.574.104-.122.195-.255.288-.386.024-.034.03-.08.046-.12zm1.65-3.695a5.5 5.5 0 0 0-.653.593l-.37.386a.96.96 0 0 1-.377.25 1.4 1.4 0 0 1-.467.09c-.044 0-.087.006-.151.012.028.058.043.097.064.131l.45.724c.136.22.276.438.399.666.068.125.105.267.156.404.077.027.14-.018.202-.048q.435-.204.867-.412c.213-.101.437-.186.636-.31.347-.215.68-.455 1.018-.685.015-.01.026-.028.042-.046-.023-.019-.038-.037-.056-.044-.287-.111-.527-.3-.77-.482a5 5 0 0 1-.506-.42 1.8 1.8 0 0 1-.41-.653c-.019-.049-.045-.095-.075-.156zm-5.847.264c-.06.096-.097.194-.132.293a3.4 3.4 0 0 1-.555 1.01q-.3.373-.762.493c-.23.06-.464.076-.7.07-.048-.002-.097.002-.158.005.016.04.021.066.035.085.1.145.23.246.4.295.157.046.316.034.498.023q.272-.055.485-.234c.238-.199.402-.454.536-.732.175-.363.264-.751.342-1.144.01-.053.008-.11.011-.164m14.945-4.586c.008.029.016.057.027.107.024.155.051.31.072.464.03.219.067.437.078.657.017.344.027.689-.014 1.033-.037.315-.063.633-.116.946a6.2 6.2 0 0 1-.46 1.518c-.008.018-.01.039-.02.082.047-.03.077-.042.098-.064q.13-.124.248-.255c.271-.305.458-.66.596-1.043.18-.498.228-1.011.145-1.531-.103-.65-.33-1.263-.597-1.881l-.024-.055zM5.797 8.29a.26.26 0 0 0 .018.153q.186.376.379.75c.025.049.066.09.03.163-.284.06-.578.119-.88.255.059.038.097.06.132.087.042.032.112.058.09.12-.01.033-.075.048-.117.072.017.01.043.021.067.036.166.102.33.207.447.368.138.192.229.404.188.644-.079.469-.306.85-.69 1.132q-.08.062-.161.122a.24.24 0 0 0-.103.245.8.8 0 0 0 .055.195c.083.196.22.35.375.492q.126.116.222.257a.37.37 0 0 1 .025.377q-.036.075-.076.148c-.03.06-.028.111.022.162q.063.064.112.138c.038.058.078.079.147.05a.5.5 0 0 1 .333-.006c.16.046.302.126.444.21q.195.115.4.219c.067.035.14.05.219.026.071-.022.124.01.145.076q.031.094-.074.139c-.07.03-.137.063-.209.088-.1.035-.201.073-.314.077-.013-.107.11-.088.127-.159-.206-.126-.643-.145-.801-.034.063.112.035.21-.096.313-.13-.1-.025-.202.002-.3a.21.21 0 0 0-.249.17c-.015.101.067.216.178.224.108.007.218-.005.326-.012.06-.005.12-.027.199 0-.103.123-.248.127-.357.19.002.05.07.086.019.131-.053.048-.095-.001-.132-.03a3 3 0 0 1-.231-.197.47.47 0 0 1-.157-.311.5.5 0 0 0-.043-.172c-.032-.074-.032-.137.033-.19-.018-.03-.028-.053-.045-.072a1.2 1.2 0 0 1-.196-.369c-.053-.137-.046-.264.048-.381.024-.03.05-.06.064-.095a.7.7 0 0 0 .047-.168c.017-.165-.064-.287-.182-.387-.186-.156-.36-.322-.46-.551-.005-.011-.024-.017-.037-.026-.011.017-.024.027-.025.038-.019.185-.045.37-.052.557-.014.377.058.743.162 1.104.118.41.289.798.488 1.173q.4.753.812 1.5c.055.098.13.189.208.27.198.202.452.272.724.273q.303.002.605-.026c.295-.03.59-.073.884-.113.183-.025.365-.057.548-.08.21-.026.38.073.522.21.16.156.305.327.447.5.22.265.397.56.554.867.05.098.07.1.147.03q.194-.182.394-.36c.067-.059.088-.12.067-.213a3.5 3.5 0 0 1-.085-.796q.002-.236.018-.471c.015-.224.03-.45.06-.672a59 59 0 0 1 .362-2.298c.087-.493.182-.984.268-1.477.06-.347.118-.694.162-1.043q.051-.411.063-.825c.011-.332.003-.665.002-.998 0-.077.004-.155-.01-.23-.028-.142-.01-.155-.162-.19a6 6 0 0 0-.607-.107c-.146-.018-.207-.053-.221-.19-.006-.049-.025-.098-.041-.146-.009-.025-.024-.048-.046-.09l-.025.264c-.009.096-.029.116-.127.115-.055 0-.11-.008-.164-.008-.476 0-.952-.008-1.426.032-.095.008-.173-.015-.226-.103-.04-.066-.088-.126-.134-.186-.063-.084-.086-.093-.182-.06a31 31 0 0 0-.582.21 2.7 2.7 0 0 0-.675.394 1 1 0 0 1-.323.168c-.033.01-.07.008-.127.013.02-.066.024-.114.047-.15.064-.105.135-.205.205-.306l.073-.095-.015-.023-.201.037c-.146.04-.296.07-.437.122-.148.053-.266.023-.386-.072a3.6 3.6 0 0 1-.733-.786zm8.592 8.963-.147.09q-.33.2-.659.402-.14.087-.27.188c-.085.07-.124.161-.072.272.047.1.093.2.147.294.047.08.124.138.213.147.11.01.228.012.336-.012.217-.05.372-.205.528-.357a.29.29 0 0 0 .087-.308c-.046-.18-.079-.365-.118-.547-.011-.052-.027-.103-.045-.169m-.257-2.409c-.12.291-.205.597-.325.91-.151.433-.294.87-.435 1.323.036-.01.054-.01.067-.018.261-.16.522-.324.785-.484.054-.033.071-.078.065-.138q-.018-.196-.034-.393l-.068-.886-.029-.31q-.013 0-.026-.004m3.081-8.13.099.285c.08.231.159.463.24.714l.58 1.952q.28.946.558 1.893c.114.382.235.762.343 1.146.072.257.126.519.186.799.044.206.087.413.127.64.034.106.023.226.077.325l.025-.006-.068-.362c-.038-.206-.077-.412-.113-.638l-.046-.211c-.095-.396-.177-.796-.29-1.187-.196-.685-.413-1.364-.618-2.046-.165-.549-.322-1.1-.488-1.648-.069-.227-.15-.45-.226-.695l-.117-.336a12 12 0 0 0-.115-.322q-.061-.159-.127-.314l-.027.01zm-10.988 7.59c-.063-.001-.115.014-.134.083a.35.35 0 0 0 .41.012 5 5 0 0 0-.276-.095M5.23 11.98c-.026-.027-.057-.048-.075.002-.012.032-.007.07-.01.113.082-.037.082-.037.085-.115m.062-1.189a.14.14 0 0 0-.088.056.2.2 0 0 0-.025.11c.005.152.01.306.026.457a.8.8 0 0 0 .066.218q.091.202.288.101c.055-.027.06-.054.025-.11a5 5 0 0 1-.129-.211c-.015-.068-.066-.131-.033-.207.04-.09-.076-.116-.074-.19v-.141c-.003-.038-.006-.087-.056-.083m-.017-.968a.87.87 0 0 0-.467.127c-.076.045-.084.07-.05.158q.05.131.115.254c.064.117.09.125.21.077a.66.66 0 0 1 .336-.053c.202.022.357.136.504.264l.092.077q.01-.01.022-.018c-.019-.105-.035-.226-.149-.264-.157-.053-.324-.075-.508-.117l-.24-.005c.24-.169.452-.044.687.009-.063-.115-.153-.147-.23-.193-.082-.05-.17-.092-.25-.144-.06-.037-.12-.08-.072-.172m10.233.325c-.23-.01-.427.08-.608.211-.034.026-.06.065-.105.117.087.026.15.046.232.065q.066-.022.13-.046c.306-.114.61-.115.904.031.126.063.237.04.366-.005-.02-.031-.03-.054-.045-.071a1 1 0 0 0-.448-.273c-.14-.044-.284-.024-.426-.03zM7.99 6.483a.3.3 0 0 0 .002.133c.08.321.156.643.242.962.104.387.27.75.456 1.103.02.037.061.08.098.087a.4.4 0 0 0 .253-.051l-.472-.84c-.23-.448-.405-.92-.579-1.394M10.397.497c-.2-.008-.405.004-.603.034q-.355.054-.7.152c-.287.08-.569.18-.852.273-.04.013-.074.038-.11.058q.041.02.07.014c.287-.068.58-.085.873-.09.134-.002.269.009.402.025.19.024.382.048.57.09.456.104.874.3 1.265.556.464.306.888.66 1.257 1.078.205.232.395.475.56.739.17.274.315.561.449.856.273.601.456 1.232.6 1.876.04.173.07.348.1.524.017.104.065.167.17.19.122.028.2.105.22.251-.003.102-.06.174-.129.24a1.1 1.1 0 0 0-.268.358.16.16 0 0 0 .083-.039c.08-.086.162-.172.235-.265a.56.56 0 0 0 .13-.333c.009-.05.022-.1.024-.15.007-.124-.017-.15-.143-.168-.025-.004-.049-.014-.073-.015-.082-.007-.125-.063-.137-.131-.033-.198-.004-.355.247-.408q.13-.025.26-.042c.158-.023.315-.053.473-.067.14-.012.19.033.226.167.008.029.018.057.021.087.019.179-.008.225-.141.288-.027.013-.055.024-.078.042a.15.15 0 0 0-.051.067c-.039.144.073.382.206.445l.673.32c.023.011.05.015.075.023l.018-.026c-.015-.008-.032-.013-.044-.024a2.3 2.3 0 0 0-.544-.32l-.173-.075a.2.2 0 0 1-.126-.191.19.19 0 0 1 .128-.187l.059-.025c.099-.044.118-.076.112-.187a.4.4 0 0 0-.008-.063c-.067-.294-.123-.59-.205-.88a9.5 9.5 0 0 0-.826-2.036 7.5 7.5 0 0 0-1.39-1.805 4.5 4.5 0 0 0-1.177-.824 3.7 3.7 0 0 0-1.016-.328 6 6 0 0 0-.712-.074m6.719 5.955c.01.014.018.028.038.034l-.022-.044zM4.103 3.917a.1.1 0 0 1-.03.012l-.04.039c-.01.01-.02.02-.045.04l-.363.354c-.088.085-.17.178-.266.253-.284.22-.425.53-.544.855a.13.13 0 0 0-.007.071c.013.055.033.108.052.168l.074.026c-.017.056-.03.105-.047.152l-.175.491c-.005.015.008.036.019.077.08-.175.158-.33.225-.489.228-.544.484-1.074.819-1.561q.133-.199.283-.401c.004-.006.007-.013.022-.03.001-.016.003-.032.015-.04zm12.976 2.408a.02.02 0 0 1 .009.019l-.006.01.007.02.018.022c.002-.007.007-.016.005-.021-.003-.01-.012-.018-.02-.038zM4.199 4.48c-.003.004-.008.008-.027.014a.14.14 0 0 1-.031.047 2 2 0 0 1-.124.167c-.048.07-.116.055-.181.041-.134-.028-.228.016-.287.143-.089.187-.187.37-.273.56-.049.108-.11.216-.118.36.081.003.154.007.228.008h.228a3 3 0 0 1-.079.264l-.033.155.02.004c.018-.046.037-.092.067-.153.066-.142.13-.285.2-.426.02-.04.034-.1.116-.092 0 .043.004.084 0 .124-.005.045-.017.09-.028.143.141.043.086.174.115.269.102-.022.104-.195.248-.144v.205l.017.002.439-1.059c-.13 0-.246-.02-.358.033-.024.011-.058-.001-.108-.004.075-.15.139-.278.211-.417a.1.1 0 0 1 .025-.036c0-.015-.001-.03.008-.038l.006-.02c-.005.006-.01.011-.028.017a.1.1 0 0 1-.026.045.1.1 0 0 1-.032.033c-.123.157-.09.164-.258.106-.079-.027-.078-.028-.047-.144.028-.046.056-.093.098-.15 0-.016-.001-.032.007-.042L4.2 4.48zm2.073-.67c-.003.006-.007.011-.027.016-.094.125-.194.246-.28.377-.155.238-.301.481-.451.723-.14.224-.345.368-.575.481-.017.008-.04.006-.079.011.012-.059.016-.109.033-.153a6 6 0 0 1 .229-.518l-.007-.02a.1.1 0 0 1-.035.025c-.028.05-.055.1-.093.164-.26.424-.443.817-.442.95.024.004.048.011.073.013.177.013.188.007.26-.165a.27.27 0 0 1 .147-.15l.175-.07c.044-.018.085-.057.146-.032.003.05-.01.11.014.145.042.062.044.125.047.193.002.049.017.098.026.147.029-.034.039-.065.05-.097.142-.39.277-.782.428-1.17.1-.256.22-.504.33-.756.013-.03.013-.067.03-.092zm3.987-.34c0 .045.01.084.021.123.042.16.094.318.124.48.024.133.023.27.028.406 0 .033-.019.067-.032.11-.094-.058-.047-.158-.106-.215h-.125c-.015.072-.01.152-.046.2-.066.085-.155.154-.236.227-.043.038-.078.018-.103-.025l-.046-.087c-.065.035-.117.069-.172.093-.116.051-.235.095-.35.147-.085.038-.09.053-.07.147.014.075.034.148.047.223.013.072.05.109.123.124.233.05.462.115.657.265.058-.102.058-.102.168-.151q.044-.023.092-.042c.08-.03.115-.017.15.06.023.048.041.098.066.158.06-.14-.042-.267.017-.416.157.18.24.39.375.567a.2.2 0 0 0 .022-.098l.002-.371c0-.034.013-.067.02-.1l.032-.003c.11.155.13.354.226.52a3 3 0 0 0-.01-.392c-.004-.045 0-.074.05-.088.08.036.116.14.215.158-.03-.275-.423-1.137-.798-1.635-.114-.127-.2-.28-.34-.386zm-2.667.696c-.019.034-.03.05-.037.067-.061.185-.125.37-.18.556-.031.105-.087.169-.195.19-.09.019-.178.052-.268.073-.038.009-.089.015-.118-.003-.024-.016-.025-.069-.036-.106-.064.076-.082.087-.17.047-.133-.062-.262-.135-.393-.201-.048-.025-.093-.063-.17-.03l-.137.382c-.099.28-.087.242.095.453.046.048.102.03.154.023.054-.009.106-.03.16-.036.13-.013.26-.08.367-.015.204-.064.387-.122.571-.178q.076-.021.114.054c.022.042.034.093.082.121.038-.056-.013-.128.063-.178l.14.241zm.278.358c-.096-.01-.107.01-.11.108a1 1 0 0 0 .002.115c.03.2.099.386.174.57q.005.008.022.015l.078-.05c.052.036.081.088.153.088.205-.002.41.014.616.012.099-.001.158.042.205.12.018.03.024.077.088.066l-.08-.394c-.05-.195-.085-.395-.172-.589-.057.057-.114.068-.18.046a1 1 0 0 0-.135-.028c-.22-.028-.44-.059-.66-.08zm10.254-1.727c.089.163.155.316.139.491-.016.168.026.342-.044.516-.047-.033-.088-.082-.112-.075-.117.035-.164-.057-.227-.115a5 5 0 0 1-.286-.29l-.104-.113-.023.019c.035.046.07.093.11.156.04.064.084.127.122.193.034.058.065.118.031.205q-.123-.014-.246-.032c-.06-.01-.101 0-.124.07-.031.098-.037.096-.15.09.02.042.036.08.057.116q.06.11-.03.196l-.178.181a.18.18 0 0 1-.185.046c-.222-.061-.447-.113-.67-.174-.032-.009-.063-.04-.086-.068-.03-.04-.052-.087-.08-.13q-.067-.104-.136-.207a.2.2 0 0 0-.014.105c.012.127.03.253.035.38.005.1-.024.12-.121.104-.104-.017-.206-.04-.31-.058-.064-.012-.131-.028-.202.03l.081.208c.09 0 .166-.01.237.002a.82.82 0 0 1 .458.251c.078.083.154.168.241.26l.018-.005c-.004-.006-.008-.013-.01-.04.014-.056-.062-.118.018-.178.031.03.064.057.088.09.058.078.111.159.169.257l.089.141.024-.013-.427-.934c.055.007.083.007.108.016q.29.105.577.216.111.042.219.094.091.043.157-.033.076-.084.154-.167.076-.076.132.014c.016.025.026.053.04.08.071.138.143.277.217.433l.159.308.025-.011c-.044-.106-.07-.218-.138-.334-.057-.182-.168-.346-.206-.545.136.034.362.326.567.732l.057.074.018-.011a2 2 0 0 1-.052-.127c-.046-.145-.097-.29-.136-.436-.022-.083-.036-.173.022-.26l.109.058-.026-.207.027-.016c.022.02.05.036.065.06q.108.163.215.33c.01.016.029.029.043.043-.036-.217-.2-.38-.229-.626l.155.112c.014-.166.012-.319.042-.465.032-.158-.023-.297-.063-.445.024.004.036.006.055.025q.137.187.277.371c.02.027.05.047.069.087l.04.063.019-.015a.3.3 0 0 1-.053-.082 28 28 0 0 1-.332-.49c-.221-.311-.363-.467-.485-.521m-6.57.327c-.003.161.092.275.069.415l-.368.087c.09.139.032.237-.052.331-.05.057-.092.122-.143.178-.037.04-.046.078-.018.126l.16.275c.029.048.072.066.128.064.076-.003.152 0 .228-.001.116-.003.216.022.275.137.006.014.02.024.044.052.004-.059-.003-.098.01-.13.016-.04.04-.099.072-.108.084-.023.173-.024.26-.03.013-.001.027.018.04.029l.071.065c.019-.11-.082-.198-.024-.31l.126.04c-.026-.123-.07-.245-.071-.366a.8.8 0 0 1 .115-.36c.107.062.16.156.234.253.183.265.36.533.494.834.165-.078.27.068.407.088-.003-.106-.133-.441-.197-.492a.14.14 0 0 0-.102-.028c-.06.011-.119.039-.191.063-.025-.039-.056-.078-.077-.122a4 4 0 0 0-.473-.783c-.076-.094-.16-.182-.228-.26l-.391.285q-.074.053-.132-.017l-.169-.207c-.025-.03-.053-.059-.097-.108" clip-rule="evenodd"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" style="flex:none;line-height:1" viewBox="0 0 24 24"><title>Kilo Code</title><path d="M0 0v24h24V0zm22.222 22.222H1.778V1.778h20.444zm-7.555-4.964h2.222v1.778h-2.794L12.89 17.83v-2.794h1.778v2.222zm4 0h-1.778v-2.222h-2.222v-1.778h2.793l1.207 1.207zm-7.556-2.591H9.333v-1.778h1.778zm-5.778-1.778h1.778v4h4v1.778H6.54L5.333 17.46v-4.57zm13.334-3.556v1.778h-5.778V9.333h1.987V7.111h-1.987V5.333h2.558l1.206 1.207v2.793zm-11.556-2h2.222l1.778 1.778v2H9.333v-2H7.111v2H5.333V5.333h1.778zm4 0H9.333v-2h1.778z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24"><title>Kiro</title><path fill="#9046ff" d="M18.8 0H5.2A5.2 5.2 0 0 0 0 5.2v13.6A5.2 5.2 0 0 0 5.2 24h13.6a5.2 5.2 0 0 0 5.2-5.2V5.2A5.2 5.2 0 0 0 18.8 0"/><path fill="#fff" d="M7.97 16.376c-1.644 3.642 1.86 4.556 4.443 2.424.76 2.39 3.608.607 4.631-1.247 2.251-4.084 1.342-8.249 1.108-9.108-1.6-5.859-9.6-5.869-10.976.03-.323 1.033-.328 2.206-.507 3.423-.09.617-.16 1.009-.393 1.655-.139.373-.323.7-.62 1.257-.458.865-.264 2.53 2.101 1.665l.224-.1h-.01z"/><path d="M12.722 10.985c-.656 0-.755-.785-.755-1.252 0-.423.074-.756.218-.97a.61.61 0 0 1 .537-.283c.229 0 .428.095.567.289.159.218.243.55.243.964 0 .785-.303 1.252-.805 1.252zm2.703 0c-.656 0-.755-.785-.755-1.252 0-.423.074-.756.219-.97a.61.61 0 0 1 .536-.283c.229 0 .428.095.567.289.159.218.243.55.243.964 0 .785-.303 1.252-.805 1.252z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="56" height="56" fill="currentColor" fill-rule="evenodd" style="flex:0 0 auto;line-height:1" viewBox="0 0 24 24"><title>Kiro</title><path d="M4.594 6.677C6.67-2.226 18.746-2.211 21.16 6.632c.353 1.297 1.725 7.582-1.673 13.747-1.545 2.797-5.841 5.49-6.99 1.883C8.6 25.477 3.315 24.1 5.789 18.609l-.318.143c-3.57 1.305-3.863-1.208-3.173-2.513.45-.84.727-1.335.937-1.897.353-.975.458-1.568.593-2.498.27-1.837.277-3.607.765-5.167zm8.37.01a.92.92 0 0 0-.81.428c-.217.323-.33.825-.33 1.462 0 .705.15 1.89 1.14 1.89h.008c.757 0 1.214-.705 1.214-1.89 0-.622-.127-1.125-.367-1.455a1.01 1.01 0 0 0-.855-.435m4.08 0a.92.92 0 0 0-.81.428c-.217.323-.33.825-.33 1.462 0 .705.15 1.89 1.14 1.89h.008c.757 0 1.215-.705 1.215-1.89 0-.622-.128-1.125-.368-1.455a1.01 1.01 0 0 0-.855-.435"/></svg>
@@ -0,0 +1 @@
1
+ <svg fill="currentColor" fill-rule="evenodd" height="56" viewBox="0 0 24 24" width="56" xmlns="http://www.w3.org/2000/svg" style="flex: 0 0 auto; line-height: 1;"><title>LangGraph</title><path clip-rule="evenodd" d="M6.099 6H17.9C21.264 6 24 8.692 24 12s-2.736 6-6.099 6H6.1C2.736 18 0 15.308 0 12s2.736-6 6.099-6zm5.419 9.3c.148.154.367.146.561.106l.002.001c.09-.072-.038-.163-.16-.25-.074-.052-.145-.102-.166-.147.068-.08-.133-.265-.289-.408a1.52 1.52 0 01-.15-.148c-.11-.119-.155-.268-.2-.418-.03-.1-.06-.2-.11-.292-.304-.694-.653-1.383-1.143-1.97-.315-.39-.674-.74-1.033-1.09a19.384 19.384 0 01-.683-.688c-.226-.229-.362-.511-.499-.794-.114-.236-.228-.473-.396-.68-.507-.735-2.107-.936-2.342.104 0 .032-.01.052-.039.073-.13.094-.245.2-.342.327-.238.326-.274.877.022 1.17l.001-.019c.01-.147.02-.286.139-.391.228.193.576.262.841.117.32.45.422.995.525 1.54.085.456.17.912.382 1.316l.014.022c.124.203.25.41.41.587.059.089.178.184.297.279.157.125.314.25.329.359v.143c-.001.285-.002.58.184.813.103.205-.15.41-.352.385-.112.015-.233-.014-.354-.042-.165-.04-.329-.078-.462-.003-.038.04-.091.04-.145.042-.064.002-.129.004-.167.07-.008.019-.026.04-.045.063-.042.05-.087.105-.033.146l.015-.01c.082-.062.16-.12.27-.084-.014.08.039.102.092.123l.027.012a.344.344 0 01-.008.056c-.009.045-.017.088.018.127a.598.598 0 00.046-.054c.037-.046.073-.092.139-.11.144.19.289.111.471.013.206-.111.459-.248.81-.055-.135-.006-.255.01-.345.12-.023.024-.042.052-.002.084.207-.132.294-.085.375-.04.06.032.115.063.212.024l.07-.036c.155-.083.314-.166.499-.137-.139.039-.188.125-.242.218-.026.047-.054.095-.094.14-.021.021-.03.046-.007.08.29-.023.4-.095.548-.192.07-.046.15-.099.261-.154.124-.075.248-.027.368.02.13.05.255.098.371-.014.037-.033.083-.034.129-.034.016 0 .033 0 .05-.002-.037-.19-.24-.188-.448-.186-.24.003-.483.006-.475-.289.222-.149.224-.407.226-.651 0-.06 0-.117.005-.173.163.09.336.16.508.229.162.065.323.13.474.21.158.25.404.58.732.558.008-.026.016-.047.026-.073.019.004.039.008.059.014.086.02.178.044.223-.056zm6.429-2.829c.19.186.447.29.716.29.269 0 .526-.104.716-.29a.98.98 0 00.297-.7.98.98 0 00-.297-.7 1.024 1.024 0 00-1.08-.224l-.58-.831-.405.272.583.835a.978.978 0 00.05 1.348zm-1.817-2.69a1.03 1.03 0 001.056-.095.991.991 0 00.363-.507.97.97 0 00-.016-.62.994.994 0 00-.39-.488 1.028 1.028 0 00-1.298.14.987.987 0 00-.263.856.98.98 0 00.187.42c.095.125.218.225.36.294zm0 5.752a1.032 1.032 0 001.056-.095.991.991 0 00.363-.507.97.97 0 00-.016-.62.994.994 0 00-.39-.488 1.027 1.027 0 00-1.298.14.986.986 0 00-.263.856.98.98 0 00.187.42c.095.125.218.225.36.294zm.93-3.516v-.492h-1.55a.977.977 0 00-.217-.404l.584-.847-.425-.276-.583.847a1.023 1.023 0 00-1.047.23.973.973 0 00-.296.696c0 .261.107.512.296.696a1.023 1.023 0 001.047.23l.583.847.42-.276-.579-.847a.977.977 0 00.217-.404h1.55z"></path></svg>