@hecer/yoke 1.15.0 → 1.16.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 (44) hide show
  1. package/.claude-plugin/plugin.json +3 -3
  2. package/.codex-plugin/plugin.json +2 -2
  3. package/CHANGELOG.md +41 -0
  4. package/README.md +26 -21
  5. package/canon/AGENTS.md +7 -0
  6. package/canon/manifest.yaml +2 -2
  7. package/canon/skills/executing-plans/SKILL.md +1 -1
  8. package/canon/skills/requesting-code-review/SKILL.md +2 -2
  9. package/canon/skills/requesting-code-review/code-reviewer.md +12 -0
  10. package/canon/skills/subagent-driven-development/SKILL.md +7 -3
  11. package/canon/skills/subagent-driven-development/code-quality-reviewer-prompt.md +7 -0
  12. package/canon/skills/subagent-driven-development/implementer-prompt.md +7 -0
  13. package/canon/skills/subagent-driven-development/spec-reviewer-prompt.md +7 -0
  14. package/canon/skills/systematic-debugging/SKILL.md +7 -11
  15. package/canon/skills/systematic-debugging/condition-based-waiting.md +7 -0
  16. package/canon/skills/systematic-debugging/defense-in-depth.md +7 -0
  17. package/canon/skills/systematic-debugging/root-cause-tracing.md +9 -0
  18. package/canon/skills/tdd/SKILL.md +1 -1
  19. package/canon/skills/tdd/testing-anti-patterns.md +9 -0
  20. package/canon/skills/yoke-retrofit/SKILL.md +1 -1
  21. package/dist/agents/contracts.js +1 -1
  22. package/dist/agents/host.js +4 -0
  23. package/dist/agents/pi-telemetry.js +53 -0
  24. package/dist/agents/process-streams.js +13 -0
  25. package/dist/agents/providers.js +29 -5
  26. package/dist/agents/supervision.js +3 -1
  27. package/dist/agents/telemetry.js +38 -28
  28. package/dist/change/inbox.js +1 -1
  29. package/dist/estimation/schedule.js +40 -26
  30. package/dist/prd/command.js +2 -2
  31. package/dist/retrofit/detect.js +2 -0
  32. package/dist/retrofit/plan.js +2 -0
  33. package/dist/retrofit/planners/hermes.js +32 -0
  34. package/dist/retrofit/planners/pi.js +1 -1
  35. package/dist/retrofit/skill-actions.js +2 -1
  36. package/dist/review/command.js +1 -1
  37. package/dist/review/verdict.js +1 -1
  38. package/dist/routing/capability.js +1 -1
  39. package/dist/routing/router.js +1 -1
  40. package/dist/setup/command.js +3 -0
  41. package/docs/AGENT-HARDENING-2026-09-16.md +32 -0
  42. package/docs/HARNESSES.md +35 -14
  43. package/gemini-extension.json +2 -2
  44. package/package.json +3 -2
package/docs/HARNESSES.md CHANGED
@@ -1,17 +1,22 @@
1
- # OpenCode, Kilo and Pi
1
+ # OpenCode, Kilo, Pi and Hermes
2
2
 
3
- Yoke 1.13.0 adds first-class adapters for OpenCode, Kilo and Pi coding agent. The adapters share Yoke's invocation, routing, review, quality, telemetry and retrofit contracts, while preserving the controls each harness actually provides.
3
+ Yoke adds first-class adapters for OpenCode, Kilo, Pi coding agent, and Hermes Agent. The adapters share Yoke's invocation, routing, review, quality, telemetry and retrofit contracts, while preserving the controls each harness actually provides.
4
4
 
5
5
  This is a CLI integration, not an authentication bundle. Install the selected harness, log in or configure its API provider, and verify it independently before starting a Yoke loop.
6
6
 
7
+ For current Pi installations, the official package is `@earendil-works/pi-coding-agent` (the executable remains `pi`). Pi support has existed since Yoke 1.13.0; no additional adapter is required.
8
+
9
+ Pi project trust is separate from Yoke's permission profile. Current Pi ignores project-local settings and skills in headless mode unless the project is trusted. Review the project resources, open Pi interactively, use `/trust`, then restart before running Yoke. Yoke does not silently grant project trust or enable arbitrary project extensions. For isolated worktrees, review the applicable trust scope as well. See [Pi project trust](https://github.com/earendil-works/pi/blob/main/packages/coding-agent/README.md#project-trust).
10
+
7
11
  ## Setup and retrofit
8
12
 
9
- Select one of the new harnesses explicitly:
13
+ Select one of the harnesses explicitly:
10
14
 
11
15
  ```sh
12
16
  yoke setup . --yes --agent=opencode --runner=opencode
13
17
  yoke setup . --yes --agent=kilo --runner=kilo
14
18
  yoke setup . --yes --agent=pi --runner=pi
19
+ yoke setup . --yes --agent=hermes --runner=hermes
15
20
  ```
16
21
 
17
22
  To add one to an existing project without changing the other generated artifacts:
@@ -20,9 +25,10 @@ To add one to an existing project without changing the other generated artifacts
20
25
  yoke retrofit . --agent=opencode
21
26
  yoke retrofit . --agent=kilo
22
27
  yoke retrofit . --agent=pi
28
+ yoke retrofit . --agent=hermes
23
29
  ```
24
30
 
25
- `--agent=all` now includes all seven supported harnesses. Retrofit is merge-aware for the native config files and backs up Yoke-managed overwrites under `.yoke/backup/`.
31
+ `--agent=all` includes all eight supported harnesses. Retrofit is merge-aware for the native config files and backs up Yoke-managed overwrites under `.yoke/backup/`.
26
32
 
27
33
  ## Native artifacts
28
34
 
@@ -31,8 +37,9 @@ yoke retrofit . --agent=pi
31
37
  | OpenCode | `AGENTS.md`, `.opencode/skills/`, `opencode.json`, `.opencode/agents/yoke-reviewer.md` | `run --format json`, provider/model selection, variants, plan agent, local MCP servers |
32
38
  | Kilo | `AGENTS.md`, `.kilo/skills/`, `kilo.jsonc`, `.kilo/agents/yoke-reviewer.md` | OpenCode-compatible `run --format json`, provider/model selection, variants, plan agent, local MCP servers |
33
39
  | Pi | `AGENTS.md`, `.pi/skills/`, `.pi/settings.json` | JSONL mode, provider/model selection, thinking level, explicit tool allowlists |
40
+ | Hermes | `AGENTS.md`, `.hermes/skills/`, `.hermes/agents/yoke-reviewer.md` | `chat --format stream-json`, `--query-file -`, provider/model selection, reasoning effort, toolsets |
34
41
 
35
- All three consume the shared `AGENTS.md` and `.yoke/context/*.md` context. OpenCode and Kilo also receive the configured local MCP servers from the Yoke code-graph choice. Pi has no native MCP or sub-agent layer, so its integration intentionally uses the portable skills and Yoke's own loop rather than pretending those features exist.
42
+ All consume the shared `AGENTS.md` and `.yoke/context/*.md` context. OpenCode and Kilo also receive the configured local MCP servers from the Yoke code-graph choice. Pi and Hermes integrations use portable skills and Yoke's loop boundaries.
36
43
 
37
44
  ## Provider, model and variant selection
38
45
 
@@ -58,24 +65,38 @@ runner:
58
65
 
59
66
  This becomes `--provider openai --model gpt-5.6 --thinking high`. Pi calls `variant` and `reasoningEffort` the same underlying thinking-level selection; configuring both with different values is rejected.
60
67
 
68
+ OpenCode and Kilo likewise map these two fields to a single `--variant`: matching values are emitted once and conflicting values are rejected before spawning a process.
69
+
70
+ For Hermes the equivalent is:
71
+
72
+ ```yaml
73
+ runner:
74
+ agent: hermes
75
+ provider: openrouter
76
+ model: anthropic/claude-sonnet-4
77
+ reasoningEffort: high
78
+ ```
79
+
80
+ This becomes `--provider openrouter --model anthropic/claude-sonnet-4 --reasoning-effort high`. Hermes accepts `--reasoning-effort`; configuring conflicting `variant` and `reasoningEffort` values is rejected.
81
+
61
82
  The same fields are available on routing workers and quality critic/repair roles. Routing evidence is keyed by harness, provider, model, reasoning effort and variant, so a model profile does not inherit another profile's success history.
62
83
 
63
84
  ## Permission profiles and honest limits
64
85
 
65
- | Yoke profile | OpenCode / Kilo | Pi |
66
- |---|---|---|
67
- | `safe` | Headless `--auto` run; Yoke still verifies the resulting tree and gates the commit | `read,bash,edit,write` tool allowlist so the implementer can test and modify the project |
68
- | `read-only` | `--agent plan` plus JSON output | `read,grep,find,ls` only |
69
- | `unsafe` | Explicit `--dangerously-skip-permissions` | Harness default tool set; no Yoke-added allowlist |
86
+ | Yoke profile | OpenCode / Kilo | Pi | Hermes |
87
+ |---|---|---|---|
88
+ | `safe` | Headless `--auto` run; Yoke still verifies the resulting tree and gates the commit | `read,bash,edit,write` tool allowlist so the implementer can test and modify the project | `--toolsets file,terminal` restricts tools to local filesystem and shell execution |
89
+ | `read-only` | `--agent plan` plus JSON output | `read,grep,find,ls` only | `--toolsets file` allows inspection without terminal or write execution |
90
+ | `unsafe` | Explicit `--dangerously-skip-permissions` | Harness default tool set; no Yoke-added allowlist | `--yolo` skips dangerous command approvals |
70
91
 
71
- OpenCode, Kilo and Pi do not provide the same OS-level sandbox boundary as Codex or Gemini. The Yoke `safe` label therefore describes the selected harness controls and Yoke's mechanical gates, not a universal filesystem sandbox. Use `read-only` for review and do not use `unsafe` unless the project owner accepts the boundary.
92
+ OpenCode, Kilo, Pi and Hermes do not provide the same OS-level sandbox boundary as Codex or Gemini. The Yoke `safe` label therefore describes the selected harness controls and Yoke's mechanical gates, not a universal filesystem sandbox. Use `read-only` for review and do not use `unsafe` unless the project owner accepts the boundary.
72
93
 
73
- The Yoke loop disables native delegation where the harness exposes it, so Yoke's worker budget remains the authority. OpenCode and Kilo native agents are installed as a read-only reviewer artifact; Yoke's review runner still validates the structured verdict itself. Pi has no native sub-agent or plan mode by design.
94
+ The Yoke loop disables native delegation where the harness exposes it, so Yoke's worker budget remains the authority. OpenCode and Kilo native agents are installed as a read-only reviewer artifact; Hermes uses a read-only agent configuration with `toolsets: [file]`; Yoke's review runner still validates the structured verdict itself. Pi has no native sub-agent or plan mode by design.
74
95
 
75
96
  ## Telemetry and validation limits
76
97
 
77
- Yoke parses OpenCode/Kilo JSON text events and `step_finish` token/cost events, and Pi `message_end` plus `message_update.usage` events. Missing provider events produce partial or unknown measurements; they are never reported as zero-cost success. Provider-reported model and usage remain provider claims.
98
+ Yoke parses OpenCode/Kilo JSON text events and `step_finish` token/cost events, Pi `message_end` plus `message_update.usage` events, and Hermes `result` (tokens, cost, model) and `text` streaming events. Missing provider events produce partial or unknown measurements; they are never reported as zero-cost success. Provider-reported model and usage remain provider claims.
78
99
 
79
100
  The release test suite covers argument construction, provider/variant propagation, routing and quality configuration, retrofit plans, host detection, JSON result parsing, and representative telemetry fixtures. It does not authenticate against every provider or claim equal model quality. Run a small project-specific smoke task after installing a harness and configuring credentials.
80
101
 
81
- Official CLI references: [OpenCode CLI](https://dev.opencode.ai/docs/cli), [OpenCode configuration](https://opencode.ai/docs/config), [OpenCode skills](https://opencode.ai/docs/skills), [Kilo CLI reference](https://github.com/Kilo-Org/kilocode/blob/main/packages/kilo-docs/pages/code-with-ai/platforms/cli-reference.md), and [Pi coding agent](https://github.com/badlogic/pi-mono/blob/main/packages/coding-agent/README.md).
102
+ Official CLI references: [OpenCode CLI](https://dev.opencode.ai/docs/cli), [OpenCode configuration](https://opencode.ai/docs/config), [OpenCode skills](https://opencode.ai/docs/skills), [Kilo CLI reference](https://github.com/Kilo-Org/kilocode/blob/main/packages/kilo-docs/pages/code-with-ai/platforms/cli-reference.md), [Pi coding agent](https://github.com/badlogic/pi-mono/blob/main/packages/coding-agent/README.md), and [Hermes Agent](https://github.com/NousResearch/hermes-agent).
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yoke",
3
- "version": "1.14.0",
4
- "description": "Cross-agent coding harness for seven supported CLIs: curated skill canon, mechanical safety gates, autonomous loop with proof artifacts. CLI: npm i -g @hecer/yoke",
3
+ "version": "1.16.0",
4
+ "description": "Cross-agent coding harness for eight supported CLIs: curated skill canon, mechanical safety gates, autonomous loop with proof artifacts. CLI: npm i -g @hecer/yoke",
5
5
  "contextFileName": "GEMINI-EXTENSION.md"
6
6
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hecer/yoke",
3
- "version": "1.15.0",
4
- "description": "One harness, seven agents, zero trust in \"done\" — cross-agent coding harness for Claude Code, Codex CLI, Gemini CLI, Qwen Code, OpenCode, Kilo and Pi: one skill canon, mechanical safety gates, an autonomous loop with screenshot/video proofs.",
3
+ "version": "1.16.0",
4
+ "description": "One harness, eight agents, zero trust in \"done\" — cross-agent coding harness for Claude Code, Codex CLI, Gemini CLI, Qwen Code, OpenCode, Kilo, Pi and Hermes: one skill canon, mechanical safety gates, an autonomous loop with screenshot/video proofs.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "yoke": "dist/cli.js"
@@ -49,6 +49,7 @@
49
49
  "opencode",
50
50
  "kilo",
51
51
  "pi-coding-agent",
52
+ "hermes-agent",
52
53
  "agents",
53
54
  "agentic-coding",
54
55
  "harness",