triad-plus 1.9.0 → 1.11.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 (34) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +39 -0
  3. package/adapters/antigravity/README.md +1 -1
  4. package/adapters/antigravity/install.sh +1 -1
  5. package/adapters/claude-code/README.md +1 -1
  6. package/adapters/claude-code/install.sh +1 -1
  7. package/adapters/codex/README.md +1 -1
  8. package/adapters/codex/install.sh +3 -3
  9. package/adapters/hermes/install.sh +1 -1
  10. package/adapters/opencode/.opencode/agents/triad-developer.md +14 -0
  11. package/adapters/opencode/.opencode/agents/triad-orchestrator.md +1 -0
  12. package/adapters/opencode/.opencode/agents/triad-reviewer.md +15 -0
  13. package/adapters/opencode/README.md +15 -6
  14. package/adapters/opencode/install.sh +1 -1
  15. package/adapters/registry.mjs +22 -2
  16. package/bin/triad-plus.js +767 -56
  17. package/docs/configuration.md +57 -6
  18. package/docs/npx-installation.md +77 -4
  19. package/docs/opencode-replication.md +8 -0
  20. package/docs/runtimes.md +1 -1
  21. package/docs/troubleshooting.md +41 -0
  22. package/package.json +2 -2
  23. package/runtime/lib/assignment-packet.mjs +38 -1
  24. package/runtime/lib/installation-manifest.mjs +269 -0
  25. package/runtime/lib/model-config.mjs +165 -0
  26. package/runtime/lib/repository-context.mjs +192 -0
  27. package/runtime/lib/terminal.mjs +86 -0
  28. package/runtime/triad-runtime-context.mjs +88 -0
  29. package/runtime/triad-verify.mjs +26 -18
  30. package/skills/triad-loop-developer/SKILL.md +14 -0
  31. package/skills/triad-loop-orchestrator/SKILL.md +13 -0
  32. package/skills/triad-loop-reviewer/SKILL.md +16 -0
  33. package/skills/triad-model-configuration/SKILL.md +98 -0
  34. package/skills/triad-model-configuration/agents/openai.yaml +4 -0
@@ -30,6 +30,22 @@ mismatched, or unreported required repository skill is a `blocked` result until
30
30
  the Orchestrator creates a valid assignment; external context never substitutes
31
31
  for the repository skill policy.
32
32
 
33
+ Before inspecting the candidate, prove the actual Reviewer runtime context by
34
+ running this command from the activation cwd:
35
+
36
+ ```bash
37
+ node /absolute/path/to/control-workspace/.triad-runtime/triad-runtime-context.mjs \
38
+ --project /absolute/path/to/control-workspace \
39
+ --assignment /absolute/path/to/control-workspace/.loop/runtime/assignments/<assignment-file>.json
40
+ ```
41
+
42
+ Record packet `cwd`, process `cwd`, `pwd`, `git rev-parse --show-toplevel`, and
43
+ each repository-skill path, resolved path, and SHA-256. Compare the actual cwd
44
+ and Git root with the assigned product worktree, and resolve every relative
45
+ skill path under that worktree only. On `NotFound`, hash mismatch, mixed Git
46
+ roots, or cwd inconsistency, return `blocked` / invalid runtime context; never
47
+ fall back to a copy in the control workspace or a global skill.
48
+
33
49
  Use native `read`, `grep`, `glob`, and `list` primitives for simple reads when
34
50
  the host provides them. Use shell/Bash for builds, tests, git, scripts, and
35
51
  system commands, not as the default filesystem API.
@@ -0,0 +1,98 @@
1
+ ---
2
+ name: triad-model-configuration
3
+ description: Inspect and safely configure Triad+ role models through the canonical team configuration and the selected host adapter.
4
+ ---
5
+
6
+ # Triad+ model configuration
7
+
8
+ Use this skill when the owner asks to inspect, explain, or change the models
9
+ used by Triad+ roles in a control workspace. Keep the operation small,
10
+ deterministic, and reversible.
11
+
12
+ ## Source of truth
13
+
14
+ 1. Identify the requested project-control workspace. Do not guess a workspace
15
+ from the current directory when more than one is visible.
16
+ 2. Read `.triad-runtime/adapter.json` and `.triad-plus/team.json` from that
17
+ workspace. The team file is the canonical source of role configuration.
18
+ 3. Validate the schema version, role IDs, and model/reasoning value types before
19
+ proposing or applying a change. A malformed team file is a blocker; do not
20
+ repair it by inference.
21
+ 4. Show the current values and the adapter binding mode before changing them.
22
+
23
+ Never edit generated host files as the first step. Preserve every field in
24
+ `team.json` that the owner did not request, including display names, personas,
25
+ interaction settings, Evaluator+ enablement, and policy fields. Do not put
26
+ tokens, API keys, credentials, or private deployment data in the team file.
27
+
28
+ ## Requested changes
29
+
30
+ Interpret only an explicit owner request. A request may set a role `model`, a
31
+ role `reasoning_effort`, clear either value to `null` (host default), or ask for
32
+ an inspection without changing anything. Do not invent model IDs from a
33
+ marketing name or from memory. If the host exposes a reliable native model
34
+ list, present only IDs from that list; otherwise ask for an explicit ID or keep
35
+ the host default.
36
+
37
+ Reject unknown fields, malformed values, ambiguous role names, and requests for
38
+ a host-native field that the selected adapter cannot materialize. Explain the
39
+ limitation instead of silently substituting another model or pretending that a
40
+ field was applied.
41
+
42
+ When a change is authorized, update only the requested keys in
43
+ `.triad-plus/team.json`, preserving its JSON structure and all other values.
44
+ Use the existing managed binding path to materialize the result (normally an
45
+ `upgrade --apply` for the selected host). Do not duplicate frontmatter/TOML
46
+ parsing in a shell command or in this skill. Preview the change first when the
47
+ host workflow offers a dry run, then apply it only after the requested values
48
+ are clear.
49
+
50
+ After applying, reread `team.json`, verify that only requested fields changed,
51
+ and inspect the generated host assets. A failed materialization is a failed
52
+ operation; do not claim success from the team file alone.
53
+
54
+ ## Adapter binding modes
55
+
56
+ Read the adapter metadata rather than branching on a host name:
57
+
58
+ - `global-profiles`: the adapter writes supported role values to its native
59
+ user-level profiles (for example Codex). Verify the resulting profile files.
60
+ - `project-frontmatter`: the adapter writes only the fields listed by its
61
+ metadata to managed project agent definitions. OpenCode supports `model` and
62
+ its native `variant` field (the canonical `team.json.reasoning_effort` value
63
+ is materialized as that variant); Copilot supports `model` and
64
+ `reasoningEffort`; Claude Code currently materializes `model` only for its
65
+ supported roles. A field not listed by the adapter remains host/session
66
+ managed and must be reported as such.
67
+ - `team-record`: the adapter records the owner's intent in `team.json` but has
68
+ no native model file to update. Report “recorded in team.json; host-native
69
+ materialization unavailable” and do not fabricate an agent binding.
70
+
71
+ For every requested role/field, classify the result as **host-native applied**,
72
+ **recorded only**, **host/session default**, or **unsupported**. Null or blank
73
+ values mean host default and should not create artificial frontmatter/profile
74
+ values. Reasoning levels are not portable across hosts; never translate a
75
+ level or model ID from another provider. For OpenCode, inspect the host's
76
+ available model variants (for example with `opencode models`) before requesting
77
+ one; a role profile's `variant` is separate from the primary OpenCode session
78
+ default.
79
+
80
+ OpenCode's managed binding is the only writer for `.opencode/agents/*.md`.
81
+ Never patch `reasoningEffort` into those profiles by analogy with Copilot. The
82
+ same binding is reapplied after `upgrade --apply`, while null values remove
83
+ stale managed fields and restore the host default.
84
+
85
+ ## Safe completion report
86
+
87
+ Report:
88
+
89
+ - control workspace and selected adapter;
90
+ - fields inspected and fields changed (or “no changes”);
91
+ - binding mode and host-native fields supported;
92
+ - generated assets checked and their result;
93
+ - any unsupported/recorded-only limitation;
94
+ - confirmation that unrelated `team.json` fields and secrets were preserved.
95
+
96
+ This skill configures role models only. It does not change Triad authority,
97
+ retry policy, verification, Evaluator+ behavior, host routing, or workflow
98
+ state, and it does not perform releases or publish packages.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Triad Model Configuration"
3
+ short_description: "Inspect and safely configure Triad role models"
4
+ default_prompt: "Use $triad-model-configuration to inspect or change the requested Triad+ role models in a control workspace."