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.
- package/CHANGELOG.md +25 -0
- package/README.md +39 -0
- package/adapters/antigravity/README.md +1 -1
- package/adapters/antigravity/install.sh +1 -1
- package/adapters/claude-code/README.md +1 -1
- package/adapters/claude-code/install.sh +1 -1
- package/adapters/codex/README.md +1 -1
- package/adapters/codex/install.sh +3 -3
- package/adapters/hermes/install.sh +1 -1
- package/adapters/opencode/.opencode/agents/triad-developer.md +14 -0
- package/adapters/opencode/.opencode/agents/triad-orchestrator.md +1 -0
- package/adapters/opencode/.opencode/agents/triad-reviewer.md +15 -0
- package/adapters/opencode/README.md +15 -6
- package/adapters/opencode/install.sh +1 -1
- package/adapters/registry.mjs +22 -2
- package/bin/triad-plus.js +767 -56
- package/docs/configuration.md +57 -6
- package/docs/npx-installation.md +77 -4
- package/docs/opencode-replication.md +8 -0
- package/docs/runtimes.md +1 -1
- package/docs/troubleshooting.md +41 -0
- package/package.json +2 -2
- package/runtime/lib/assignment-packet.mjs +38 -1
- package/runtime/lib/installation-manifest.mjs +269 -0
- package/runtime/lib/model-config.mjs +165 -0
- package/runtime/lib/repository-context.mjs +192 -0
- package/runtime/lib/terminal.mjs +86 -0
- package/runtime/triad-runtime-context.mjs +88 -0
- package/runtime/triad-verify.mjs +26 -18
- package/skills/triad-loop-developer/SKILL.md +14 -0
- package/skills/triad-loop-orchestrator/SKILL.md +13 -0
- package/skills/triad-loop-reviewer/SKILL.md +16 -0
- package/skills/triad-model-configuration/SKILL.md +98 -0
- 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.
|