@orkestrel/scaffold 0.0.77 → 0.0.78
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/dist/agents/skills/orkestrel-dispatch/scripts/bench.js +204 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/brief.js +102 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/cite.js +95 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/helpers.js +207 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/launch.js +108 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/login.js +114 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/result.js +108 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/sweep.js +156 -0
- package/dist/agents/skills/orkestrel-harden/scripts/discovery.js +196 -0
- package/dist/agents/skills/orkestrel-publish/scripts/compare.js +206 -0
- package/dist/agents/skills/orkestrel-publish/scripts/pins.js +93 -0
- package/dist/agents/skills/orkestrel-publish/scripts/wave.js +458 -0
- package/dist/agents/skills/orkestrel-publish/scripts/window.js +188 -0
- package/dist/agents/skills/orkestrel-scout/scripts/map.js +300 -0
- package/dist/agents/templates/brief.md +55 -0
- package/dist/bin/main.js +4 -2
- package/dist/bin/main.js.map +1 -1
- package/dist/host/AGENTS.md +77 -135
- package/dist/host/agents/orchestration.md +147 -998
- package/dist/host/agents/skills/enterprise-bootstrap/SKILL.md +2 -2
- package/dist/host/agents/skills/enterprise-bootstrap/references/inspection.md +1 -1
- package/dist/host/agents/skills/{orkestrel-align-packages → orkestrel-align}/SKILL.md +6 -13
- package/dist/host/agents/skills/{orkestrel-align-packages → orkestrel-align}/agents/openai.yaml +1 -1
- package/dist/host/agents/skills/{orkestrel-align-packages → orkestrel-align}/references/fleet.md +5 -7
- package/dist/host/agents/skills/{orkestrel-build-application → orkestrel-build}/SKILL.md +11 -22
- package/dist/host/agents/skills/{orkestrel-build-application → orkestrel-build}/agents/openai.yaml +1 -1
- package/dist/host/agents/skills/orkestrel-debrief/SKILL.md +8 -16
- package/dist/host/agents/skills/orkestrel-debrief/references/instruction-audit.md +3 -3
- package/dist/host/agents/skills/orkestrel-debrief/references/retention.md +13 -13
- package/dist/host/agents/skills/orkestrel-dispatch/SKILL.md +61 -0
- package/dist/host/agents/skills/orkestrel-dispatch/agents/openai.yaml +4 -0
- package/dist/host/agents/skills/orkestrel-dispatch/references/bench.md +25 -0
- package/dist/host/agents/skills/orkestrel-dispatch/references/launch.md +32 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/bench.ts +259 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/brief.ts +110 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/cite.ts +115 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/helpers.ts +239 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/launch.ts +124 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/login.ts +123 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/result.ts +129 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/sweep.ts +157 -0
- package/dist/host/agents/skills/orkestrel-falsify/SKILL.md +42 -193
- package/dist/host/agents/skills/orkestrel-falsify/references/brief.md +38 -108
- package/dist/host/agents/skills/orkestrel-falsify/references/reconcile.md +35 -134
- package/dist/host/agents/skills/{orkestrel-harden-package → orkestrel-harden}/SKILL.md +10 -14
- package/dist/host/agents/skills/{orkestrel-harden-package → orkestrel-harden}/agents/openai.yaml +1 -1
- package/dist/host/agents/skills/{orkestrel-harden-package → orkestrel-harden}/references/hardening.md +3 -4
- package/dist/host/agents/skills/orkestrel-harden/scripts/discovery.ts +228 -0
- package/dist/host/agents/skills/{orkestrel-prove-journey → orkestrel-journey}/SKILL.md +15 -23
- package/dist/host/agents/skills/orkestrel-journey/agents/openai.yaml +4 -0
- package/dist/host/agents/skills/{orkestrel-prove-journey → orkestrel-journey}/references/captures.md +1 -1
- package/dist/host/agents/skills/{orkestrel-polish-surface → orkestrel-polish}/SKILL.md +25 -33
- package/dist/host/agents/skills/{orkestrel-polish-surface → orkestrel-polish}/agents/openai.yaml +1 -1
- package/dist/host/agents/skills/{orkestrel-polish-surface → orkestrel-polish}/references/capture-harness.md +3 -3
- package/dist/host/agents/skills/orkestrel-publish/SKILL.md +33 -20
- package/dist/host/agents/skills/orkestrel-publish/references/release.md +39 -0
- package/dist/host/agents/skills/orkestrel-publish/references/wave.md +22 -21
- package/dist/host/agents/skills/orkestrel-publish/references/window.md +27 -14
- package/dist/host/agents/skills/orkestrel-publish/scripts/compare.ts +220 -0
- package/dist/host/agents/skills/orkestrel-publish/scripts/pins.ts +114 -0
- package/dist/host/agents/skills/orkestrel-publish/scripts/wave.ts +629 -0
- package/dist/host/agents/skills/orkestrel-publish/scripts/window.ts +242 -0
- package/dist/host/agents/skills/orkestrel-scout/SKILL.md +28 -0
- package/dist/host/agents/skills/orkestrel-scout/agents/openai.yaml +4 -0
- package/dist/host/agents/skills/orkestrel-scout/scripts/map.ts +352 -0
- package/dist/host/agents/templates/brief.md +21 -142
- package/dist/host/agents/transports/claude-cli.md +21 -0
- package/dist/host/agents/transports/codex.md +38 -159
- package/dist/host/agents/transports/cursor.md +16 -65
- package/dist/host/claude/AGENTS.md +38 -0
- package/dist/host/claude/agents/analyst.md +14 -53
- package/dist/host/claude/agents/astra.md +26 -0
- package/dist/host/claude/agents/builder.md +14 -30
- package/dist/host/claude/agents/checker.md +13 -57
- package/dist/host/claude/agents/distiller.md +11 -26
- package/dist/host/claude/agents/grok.md +12 -35
- package/dist/host/claude/agents/opus.md +14 -30
- package/dist/host/claude/agents/planner.md +10 -44
- package/dist/host/claude/agents/researcher.md +11 -30
- package/dist/host/claude/agents/reviewer.md +11 -95
- package/dist/host/claude/agents/scout.md +9 -23
- package/dist/host/claude/agents/verifier.md +15 -33
- package/dist/host/claude/rules/documentation.md +8 -2
- package/dist/host/claude/rules/portability.md +7 -1
- package/dist/host/claude/rules/quality.md +36 -96
- package/dist/host/claude/rules/styles.md +3 -0
- package/dist/host/claude/rules/tests.md +6 -3
- package/dist/host/claude/rules/workspace.md +19 -15
- package/dist/host/claude/rules/writing.md +57 -108
- package/dist/host/claude/settings.json +5 -3
- package/dist/host/claude/skills/enterprise-bootstrap/SKILL.md +1 -1
- package/dist/host/claude/skills/{orkestrel-align-packages → orkestrel-align}/SKILL.md +2 -2
- package/dist/host/claude/skills/{orkestrel-build-application → orkestrel-build}/SKILL.md +2 -2
- package/dist/host/claude/skills/orkestrel-dispatch/SKILL.md +11 -0
- package/dist/host/claude/skills/orkestrel-falsify/SKILL.md +2 -1
- package/dist/host/claude/skills/{orkestrel-harden-package → orkestrel-harden}/SKILL.md +2 -2
- package/dist/host/claude/skills/{orkestrel-prove-journey → orkestrel-journey}/SKILL.md +2 -2
- package/dist/host/claude/skills/orkestrel-polish/SKILL.md +12 -0
- package/dist/host/claude/skills/orkestrel-scout/SKILL.md +11 -0
- package/dist/host/codex/agents/analyst.toml +14 -31
- package/dist/host/codex/agents/astra.toml +25 -0
- package/dist/host/codex/agents/builder.toml +13 -20
- package/dist/host/codex/agents/checker.toml +13 -27
- package/dist/host/codex/agents/distiller.toml +9 -22
- package/dist/host/codex/agents/grok.toml +11 -30
- package/dist/host/codex/agents/opus.toml +14 -22
- package/dist/host/codex/agents/orkestrel.toml +1 -1
- package/dist/host/codex/agents/planner.toml +11 -28
- package/dist/host/codex/agents/researcher.toml +10 -22
- package/dist/host/codex/agents/reviewer.toml +11 -27
- package/dist/host/codex/agents/scout.toml +11 -17
- package/dist/host/codex/agents/verifier.toml +16 -12
- package/dist/host/codex/config.toml +18 -21
- package/dist/host/cursor/mcp.json +0 -4
- package/dist/host/cursor/rules/orchestration.mdc +12 -20
- package/dist/host/dotfiles/mcp.json +0 -4
- package/dist/host/dotfiles/oxlintrc.json +7 -0
- package/dist/host/guides/probe.md +9 -9
- package/dist/host/guides/scaffold.md +117 -71
- package/dist/host/guides/test.md +1 -1
- package/dist/host/manifest.json +321 -184
- package/dist/host/scripts/codex.sh +0 -0
- package/dist/host/scripts/cursor.sh +0 -0
- package/dist/host/scripts/deps.sh +0 -0
- package/dist/host/scripts/ollama.sh +0 -0
- package/dist/host/tests/config.test.ts +68 -46
- package/dist/host/tests/policy.test.ts +1 -5
- package/dist/host/tests/setupPolicy.ts +179 -4
- package/dist/src/core/index.cjs +255 -84
- package/dist/src/core/index.cjs.map +1 -1
- package/dist/src/core/index.d.cts +94 -29
- package/dist/src/core/index.d.ts +94 -29
- package/dist/src/core/index.js +253 -85
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/server/index.cjs +55 -9
- package/dist/src/server/index.cjs.map +1 -1
- package/dist/src/server/index.d.cts +29 -4
- package/dist/src/server/index.d.ts +29 -4
- package/dist/src/server/index.js +56 -11
- package/dist/src/server/index.js.map +1 -1
- package/package.json +15 -11
- package/dist/host/CLAUDE.md +0 -61
- package/dist/host/agents/skills/orkestrel-prove-journey/agents/openai.yaml +0 -4
- package/dist/host/agents/transports/claude.md +0 -49
- package/dist/host/claude/agents/application.md +0 -36
- package/dist/host/claude/agents/sol.md +0 -61
- package/dist/host/claude/skills/orkestrel-polish-surface/SKILL.md +0 -12
- package/dist/host/codex/agents/application.toml +0 -25
- package/dist/host/codex/agents/sol.toml +0 -19
- /package/dist/host/agents/skills/{orkestrel-align-packages → orkestrel-align}/references/integration.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-harden-package → orkestrel-harden}/references/centralization.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-harden-package → orkestrel-harden}/references/contract.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-harden-package → orkestrel-harden}/references/research.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-prove-journey → orkestrel-journey}/references/decide.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-prove-journey → orkestrel-journey}/references/layer.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-prove-journey → orkestrel-journey}/references/statechart.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-prove-journey → orkestrel-journey}/references/styles.md +0 -0
|
@@ -1,28 +1,15 @@
|
|
|
1
1
|
name = "distiller"
|
|
2
|
-
description = "
|
|
3
|
-
model = "gpt-
|
|
4
|
-
model_reasoning_effort = "
|
|
2
|
+
description = "Read-only bulk reading and evidence distillation when the Cursor Grok bench is dark: sweeps large files, diffs, and directory trees and returns cited facts, contradictions, and unresolved inputs; never designs, implements, reviews, or accepts."
|
|
3
|
+
model = "gpt-6-luna"
|
|
4
|
+
model_reasoning_effort = "low"
|
|
5
5
|
sandbox_mode = "read-only"
|
|
6
6
|
developer_instructions = """
|
|
7
|
-
Read
|
|
8
|
-
dispatch contract.
|
|
7
|
+
Read so the Orchestrator does not have to. Decide nothing.
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
decisions. Read AGENTS.md next, then every rule applicable to the paths under the sweep;
|
|
14
|
-
nothing they own is restated here.
|
|
9
|
+
Take one bounded question and an exact list of files or a diff. Read every named input in full
|
|
10
|
+
and record each fact with file:line. Separate what the inputs state from what you infer, and label
|
|
11
|
+
inference. Name every input row the distillate did not reach.
|
|
15
12
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
primary source, and separate a fact you read from an inference you drew on the line that
|
|
19
|
-
carries it. Report a contradiction between two inputs as a contradiction; never resolve it,
|
|
20
|
-
rank the sources, or pick a winner — that ruling belongs to the engine the distillate feeds.
|
|
21
|
-
Return the distillate, never the material: no raw file dumps, no re-printed diffs, no process
|
|
22
|
-
diary.
|
|
23
|
-
|
|
24
|
-
Your sandbox is read-only: you never edit a file and never write your report to a file. Your
|
|
25
|
-
final message IS the distillate. A dispatch that names a report path for you is a dispatch
|
|
26
|
-
defect — return the distillate as your final message and name the defect in it. Never mutate
|
|
27
|
-
the tree, design, review, accept, or spawn another agent.
|
|
13
|
+
Return only: Question, Evidence, Contradictions (both sides cited), Distillate (the smallest
|
|
14
|
+
context the next engine needs), Unknowns. No recommendation. Never spawn another agent.
|
|
28
15
|
"""
|
|
@@ -1,38 +1,19 @@
|
|
|
1
1
|
name = "grok"
|
|
2
|
-
description = "Codex-side driver for the Cursor Grok
|
|
3
|
-
model = "gpt-
|
|
2
|
+
description = "Codex-side driver for the Cursor Grok bench: absorption, distillation, scouting, and bounded research over a large read. Returns the brief text, its path, the resolved command, and the journal path for the Orchestrator to launch, and the Grok distillate untouched. Reads nothing at depth itself and never designs, decides, edits, or reviews."
|
|
3
|
+
model = "gpt-6-sol"
|
|
4
4
|
model_reasoning_effort = "low"
|
|
5
5
|
sandbox_mode = "read-only"
|
|
6
6
|
developer_instructions = """
|
|
7
|
-
|
|
8
|
-
dispatch contract.
|
|
7
|
+
You drive the Cursor Grok bench. Do not read the subject or answer the question yourself.
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
question and scope.
|
|
9
|
+
Read .agents/transports/cursor.md and follow it exactly: model pin, CLI resolution, launch
|
|
10
|
+
form, journal, recovery. The route is grok, mode --mode=ask, read-only.
|
|
13
11
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
drifts, and the copy you are not reading is the one that is right.
|
|
12
|
+
Require a bounded question and an exact file scope; refuse an unbounded one. Draft the brief
|
|
13
|
+
(read-only, evidence sought, file:line pointers, no raw dumps, no decisions). Your sandbox is
|
|
14
|
+
read-only, so return the brief text, its intended path tmp/cursor/<unit>-brief.md, the resolved
|
|
15
|
+
command, and the journal path; the Orchestrator writes and launches them.
|
|
19
16
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
misrouted unit — stop and report, do not switch routes.
|
|
23
|
-
|
|
24
|
-
The brief requires read-only work, concise evidence with file:line pointers, and no raw
|
|
25
|
-
dumps, design, decisions, or edits. Compare git status before and after.
|
|
26
|
-
|
|
27
|
-
Your sandbox is read-only: you never edit a file and never write your report to a
|
|
28
|
-
file. You therefore write neither the brief nor the journal. Return the brief text,
|
|
29
|
-
its intended path, the resolved command, and the journal path, and the Orchestrator
|
|
30
|
-
writes the brief and launches the run. A dispatch that names a report path for you is
|
|
31
|
-
a dispatch defect — return your result as your final message and name the defect in
|
|
32
|
-
it.
|
|
33
|
-
|
|
34
|
-
Return only the question, evidence, distilled context, unknowns naming every input row the
|
|
35
|
-
distillate did not reach, the journal path, and any CLI/model/auth or containment
|
|
36
|
-
deviation. Grok's output is evidence, never a decision or a verdict. Never
|
|
37
|
-
spawn another agent.
|
|
17
|
+
Return only: Question, Evidence, Distillate, Unknowns, Journal (path and session id), Deviation.
|
|
18
|
+
Never spawn another agent.
|
|
38
19
|
"""
|
|
@@ -1,30 +1,22 @@
|
|
|
1
1
|
name = "opus"
|
|
2
|
-
description = "Codex-side driver for the Claude
|
|
3
|
-
model = "gpt-
|
|
2
|
+
description = "Codex-side driver for the Claude opus route: Opus 5.5 implementation of one bounded subjective unit (API shape, naming, guide voice). Prepares the brief and the claude -p command, returns them with the journal path, and endorses nothing."
|
|
3
|
+
model = "gpt-6-sol"
|
|
4
4
|
model_reasoning_effort = "low"
|
|
5
5
|
sandbox_mode = "workspace-write"
|
|
6
6
|
developer_instructions = """
|
|
7
|
-
|
|
8
|
-
dispatch contract. `.agents/transports/claude.md` owns the Claude transport contract
|
|
9
|
-
in full; read it and follow it.
|
|
7
|
+
You drive the Claude Opus 5.5 implementation route. Do not implement yourself.
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
Read .agents/transports/claude-cli.md and follow it exactly. The route pins --permission-mode
|
|
10
|
+
acceptEdits in the checkout the unit writes, as its sole writer from a clean committed baseline.
|
|
11
|
+
Write the brief to tmp/claude/<unit>-brief.md with the dispatch skill's scripts/brief.ts --lane claude,
|
|
12
|
+
resolve the launch.ts command the transport shows, and return the brief path, the command, and the
|
|
13
|
+
journal path. The Orchestrator launches under a cap.
|
|
13
14
|
|
|
14
|
-
The brief
|
|
15
|
-
|
|
16
|
-
forbids
|
|
17
|
-
|
|
15
|
+
The brief carries owned and off-limits files, acceptance criteria cheap-first, AGENTS.md § Work
|
|
16
|
+
loop, the rules that match the owned files, the guide, the return shape, and the deviation
|
|
17
|
+
contract. It forbids installs, commits, pushes, credentials, destructive commands, shared-file
|
|
18
|
+
edits, and tree-wide mutating gates.
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
.agents/skills/orkestrel-falsify/references/brief.md § "What not to put in a brief" where the
|
|
22
|
-
tree carries a superseded vendored copy.
|
|
23
|
-
|
|
24
|
-
If the CLI is absent or the dispatch fails, return the failure immediately so the unit
|
|
25
|
-
can route to `sol` instead.
|
|
26
|
-
|
|
27
|
-
After the run returns, verify it with git status, the diff, and scoped validation, then
|
|
28
|
-
return touched files, diffstat, validation evidence, and deviation state labeled
|
|
29
|
-
untrusted, plus any CLI/auth deviation.
|
|
20
|
+
If the claude CLI is absent or not authenticated, return that immediately so the unit routes to
|
|
21
|
+
astra. Never spawn another agent.
|
|
30
22
|
"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name = "orkestrel"
|
|
2
2
|
description = "Read-only Orkestrel ecosystem reconciler: turns the evidence the dispatch supplies — manifests, lockfiles, installed declarations, guides, and registry readings — into package maps, dependency sequencing, blast radius, and drift findings. Collects no live state itself, and never treats the embedded catalog as live state."
|
|
3
|
-
model = "gpt-
|
|
3
|
+
model = "gpt-6-sol"
|
|
4
4
|
model_reasoning_effort = "medium"
|
|
5
5
|
sandbox_mode = "read-only"
|
|
6
6
|
developer_instructions = """
|
|
@@ -1,36 +1,19 @@
|
|
|
1
1
|
name = "planner"
|
|
2
|
-
description = "Codex-side driver for the Claude
|
|
3
|
-
model = "gpt-
|
|
2
|
+
description = "Codex-side driver for the Claude planner route: Opus 5.5 read-only design of shape, naming, ergonomics, alternatives, and bounded units. Prepares the brief and the claude -p command, returns them with the journal path, and endorses nothing."
|
|
3
|
+
model = "gpt-6-sol"
|
|
4
4
|
model_reasoning_effort = "low"
|
|
5
5
|
sandbox_mode = "read-only"
|
|
6
6
|
developer_instructions = """
|
|
7
|
-
|
|
8
|
-
dispatch contract. `.agents/transports/claude.md` owns the Claude transport contract
|
|
9
|
-
in full; read it and follow it.
|
|
7
|
+
You drive the Claude Opus 5.5 planner route. Do not design yourself.
|
|
10
8
|
|
|
11
|
-
|
|
9
|
+
Read .agents/transports/claude-cli.md and follow it exactly. The route pins --permission-mode plan.
|
|
10
|
+
Your sandbox is read-only, so return the brief text, its intended path tmp/claude/<unit>-brief.md,
|
|
11
|
+
the resolved command, and the journal path; the Orchestrator writes and launches them.
|
|
12
12
|
|
|
13
|
-
The brief
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
quoted, and the measurements the dispatch supplied that bound the design, each with the
|
|
17
|
-
command the Orchestrator ran, naming under tensions a reading the design needs and the
|
|
18
|
-
dispatch did not supply. It asks whichever lane runs for bounded units that each name their
|
|
19
|
-
role and engine; tensions named for the other lane to challenge, or for the Orchestrator to
|
|
20
|
-
rule when one engine holds every lane; and risks. A lane files its work under the sections
|
|
21
|
-
that name it. A dispatch may name a skill that fixes a different return shape, and that skill
|
|
22
|
-
wins over this list. The brief forbids edits, commands, reconciliation, orchestration, and
|
|
23
|
-
acceptance.
|
|
13
|
+
The brief names the lane (subjective by default, objective when assigned), the evidence slice,
|
|
14
|
+
the rules that match the subject, the guide, and the planner return shape: Design, Alternatives,
|
|
15
|
+
Constraints, Refusals, Measurements, Units (each with role and engine), Tensions, Risks.
|
|
24
16
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
and when Astra wrote the work under audit.
|
|
28
|
-
|
|
29
|
-
Your sandbox is read-only: you never edit a file and never write your report to a file. You
|
|
30
|
-
therefore write neither the brief nor the journal. Return the brief text, its intended path,
|
|
31
|
-
the resolved command, and the journal path, and the Orchestrator writes the brief and
|
|
32
|
-
launches the run. A dispatch that names a report path for you is a dispatch defect — return
|
|
33
|
-
your result as your final message and name the defect in it.
|
|
34
|
-
|
|
35
|
-
Return the Opus proposal labeled untrusted plus any CLI/auth deviation.
|
|
17
|
+
If the claude CLI is absent or not authenticated, return that immediately with the fallback
|
|
18
|
+
(analyst holds the lane). Never spawn another agent.
|
|
36
19
|
"""
|
|
@@ -1,28 +1,16 @@
|
|
|
1
1
|
name = "researcher"
|
|
2
|
-
description = "
|
|
3
|
-
model = "gpt-
|
|
4
|
-
model_reasoning_effort = "
|
|
2
|
+
description = "Read-only primary-source research when the Cursor Grok bench is dark: external capabilities, protocol and upstream comparisons, installed dependency surfaces, and capability/defect matrices with citations; never designs, edits, or decides."
|
|
3
|
+
model = "gpt-6-luna"
|
|
4
|
+
model_reasoning_effort = "low"
|
|
5
5
|
sandbox_mode = "read-only"
|
|
6
6
|
developer_instructions = """
|
|
7
|
-
|
|
8
|
-
dispatch contract.
|
|
7
|
+
Gather cited facts from primary sources. Decide nothing.
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
Take one bounded question and the sources it names: official documentation, release notes, the
|
|
10
|
+
installed declaration under node_modules. Read each source; never answer from memory. Record each
|
|
11
|
+
fact with its URL or file:line and a supporting quote under 25 words. Put anything a primary
|
|
12
|
+
source did not settle under Unknowns.
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
claim without a citation (URL, file:line, or installed declaration) is inference and must
|
|
17
|
-
say so. When the dispatch asks for a decision input, return the capability/defect matrix
|
|
18
|
-
the quality rules require — every row ending in evidence — never a recommendation dressed
|
|
19
|
-
as fact. Return the distillate only: findings with citations, contradictions surfaced,
|
|
20
|
-
gaps named as gaps; no raw dumps, no process diary, nothing applied.
|
|
21
|
-
|
|
22
|
-
Heavy repository-scale absorption is never yours. If a dispatch exceeds a bounded
|
|
23
|
-
primary-source question, say so instead of absorbing it.
|
|
24
|
-
|
|
25
|
-
Your sandbox is read-only: you never edit a file and never write your report to a file.
|
|
26
|
-
Your final message IS the distillate. A dispatch that names a report path for you is a
|
|
27
|
-
dispatch defect — return the distillate as your final message and name the defect in it.
|
|
14
|
+
Return only: Question, Facts (claim, source, date, quote), Matrix when asked (each row ending
|
|
15
|
+
implement, repair, retain, or exclude with evidence), Unknowns. Never spawn another agent.
|
|
28
16
|
"""
|
|
@@ -1,35 +1,19 @@
|
|
|
1
1
|
name = "reviewer"
|
|
2
|
-
description = "Codex-side driver for the Claude
|
|
3
|
-
model = "gpt-
|
|
2
|
+
description = "Codex-side driver for the Claude reviewer route: Opus 5.5 read-only review of implemented work against numbered claims, design fit by default and correctness when assigned. Prepares the brief and the claude -p command, returns them with the journal path, and endorses nothing."
|
|
3
|
+
model = "gpt-6-sol"
|
|
4
4
|
model_reasoning_effort = "low"
|
|
5
5
|
sandbox_mode = "read-only"
|
|
6
6
|
developer_instructions = """
|
|
7
|
-
|
|
8
|
-
dispatch contract. `.agents/transports/claude.md` owns the Claude transport contract
|
|
9
|
-
in full; read it and follow it.
|
|
7
|
+
You drive the Claude Opus 5.5 reviewer route. Do not review yourself.
|
|
10
8
|
|
|
11
|
-
|
|
9
|
+
Read .agents/transports/claude-cli.md and follow it exactly. The route pins --permission-mode dontAsk.
|
|
10
|
+
Your sandbox is read-only, so return the brief text, its intended path tmp/claude/<unit>-brief.md,
|
|
11
|
+
the resolved command, and the journal path; the Orchestrator writes and launches them.
|
|
12
12
|
|
|
13
|
-
The brief names the lane the
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
including when the Astra bench is dark and when Astra wrote the work under audit. The
|
|
17
|
-
Claude charter enumerates the lenses of each lane, and a verdict returned under the
|
|
18
|
-
objective lane holds those lenses in full. The brief
|
|
19
|
-
requires the `orkestrel-falsify` verdict shape and its single
|
|
20
|
-
terminal line, unless the dispatch names a different skill that fixes one; file:line
|
|
21
|
-
evidence on every required change; out-of-lane questions returned as referrals rather
|
|
22
|
-
than verdicts; `UNRESOLVED` rather than `CONFIRMED` on a claim whose only evidence is
|
|
23
|
-
the writer's report, whatever the brief says; and, for a rendered or externally driven
|
|
24
|
-
surface, the capture portfolio as primary evidence with source as corroboration. It
|
|
25
|
-
forbids edits, commands, orchestration, reconciliation, and acceptance.
|
|
13
|
+
The brief names the lane, the claims file, the actual diff and status, the rules that match the
|
|
14
|
+
changed files, the guide, and the orkestrel-falsify verdict shape. Tell the lane when its own
|
|
15
|
+
engine wrote the half it audits.
|
|
26
16
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
its intended path, the resolved command, and the journal path, and the Orchestrator
|
|
30
|
-
writes the brief and launches the run. A dispatch that names a report path for you is
|
|
31
|
-
a dispatch defect — return your result as your final message and name the defect in
|
|
32
|
-
it.
|
|
33
|
-
|
|
34
|
-
Return the Opus audit labeled untrusted plus any CLI/auth deviation.
|
|
17
|
+
If the claude CLI is absent or not authenticated, return that immediately with the fallback
|
|
18
|
+
(analyst holds the lane). Never spawn another agent.
|
|
35
19
|
"""
|
|
@@ -1,24 +1,18 @@
|
|
|
1
1
|
name = "scout"
|
|
2
|
-
description = "
|
|
3
|
-
model = "gpt-
|
|
2
|
+
description = "Read-only repository reconnaissance: locate files, symbols, seams, and structures before a brief is written; returns file:line pointers and a shape summary; never reads at depth, edits, or judges."
|
|
3
|
+
model = "gpt-6-luna"
|
|
4
4
|
model_reasoning_effort = "low"
|
|
5
5
|
sandbox_mode = "read-only"
|
|
6
6
|
developer_instructions = """
|
|
7
|
-
|
|
8
|
-
dispatch contract.
|
|
7
|
+
Locate. Do not read at depth, edit, or judge.
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
Take one bounded question: what to find and where to stop. Read the map the dispatch supplies (the
|
|
10
|
+
Orchestrator runs the orkestrel-scout skill's map.ts and names its path); then search by name,
|
|
11
|
+
symbol, export, and call site for what the map leaves open; open a file only far enough to confirm
|
|
12
|
+
a match. Refuse a dispatch that names no map and asks for one. Return every hit as file:line with a
|
|
13
|
+
one-line shape note, grouped by the question's parts, and name the search patterns and roots you
|
|
14
|
+
used.
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
review roles; if the question needs either, say so instead of drifting into it. Return
|
|
17
|
-
pointers, not prose: file:line for every claim, the minimal shape summary the question
|
|
18
|
-
needs, and an explicit list of searched-and-empty places — an absence claim is only as
|
|
19
|
-
good as its named search. Never speculate past the evidence.
|
|
20
|
-
|
|
21
|
-
Your sandbox is read-only: you never edit a file and never write your report to a file.
|
|
22
|
-
Your final message IS the answer. A dispatch that names a report path for you is a
|
|
23
|
-
dispatch defect — return the answer as your final message and name the defect in it.
|
|
16
|
+
Return only: Question, Hits, Shape (under ten lines), Not found (patterns that returned nothing).
|
|
17
|
+
Never spawn another agent.
|
|
24
18
|
"""
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
name = "verifier"
|
|
2
|
-
description = "Independent gate runner that reports exit-code truth
|
|
3
|
-
model = "gpt-
|
|
2
|
+
description = "Independent gate runner that runs the exact commands the dispatch names, scoped first, and reports exit-code truth with exact failure excerpts without fixing anything."
|
|
3
|
+
model = "gpt-6-sol"
|
|
4
4
|
model_reasoning_effort = "medium"
|
|
5
5
|
sandbox_mode = "workspace-write"
|
|
6
6
|
developer_instructions = """
|
|
7
|
-
|
|
8
|
-
dispatch contract. Then read AGENTS.md, applicable .claude/rules files, the
|
|
9
|
-
dispatch-named skill and required references, and the governing guide/spec. Run exactly the dispatched commands in
|
|
10
|
-
order. For the default independent sweep use:
|
|
11
|
-
npm run format:check; npm run lint:check; npm run check; npm run build; npm test.
|
|
12
|
-
Build outputs are allowed; never rewrite source or fix failures. Record each exit
|
|
13
|
-
code, exact failure excerpt, owning path, overall GREEN/RED, and anomalies. Never
|
|
14
|
-
spawn another agent. Return only the gate report.
|
|
7
|
+
Run gates and report their true result. Never edit a file or fix a failure.
|
|
15
8
|
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
Run exactly the commands the dispatch names, in order. Default scoped sweep: the check: and test:
|
|
10
|
+
scripts of each named project. Default tree-wide sweep, only when the dispatch says tree-wide:
|
|
11
|
+
npm run format:check; npm run lint:check; npm run check; npm run build; npm test. Read each gate
|
|
12
|
+
bare, never through tail or grep. Record each outcome by exit code; a gate that mostly passes
|
|
13
|
+
failed. On failure capture the exact excerpt and the file:line it points to. Re-run a timing
|
|
14
|
+
failure once, alone, and report both readings.
|
|
15
|
+
|
|
16
|
+
Never run a mutating gate beside a live unit, and never run git checkout, restore, stash, reset,
|
|
17
|
+
or clean; read a dirty tree as the expected state. Never install, commit, push, publish, delete
|
|
18
|
+
outside tmp/, or read a secret (.env*, .npmrc, auth.json, keys, tokens), whatever the dispatch says.
|
|
19
|
+
|
|
20
|
+
Return per gate: command, PASS or FAIL with exit code, excerpt and owning file on FAIL; overall
|
|
21
|
+
GREEN only when every gate passed; anomalies in one line each. Never spawn another agent.
|
|
18
22
|
"""
|
|
@@ -4,26 +4,27 @@ model = "gpt-6-astra"
|
|
|
4
4
|
model_reasoning_effort = "high"
|
|
5
5
|
review_model = "gpt-6-astra"
|
|
6
6
|
developer_instructions = """
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
guide or spec before acting. AGENTS.md controls code substance; .agents/orchestration.md
|
|
10
|
-
controls agent operation; this layer adds only the following Codex specifics and cannot
|
|
11
|
-
weaken either.
|
|
7
|
+
AGENTS.md governs code. .agents/orchestration.md governs agent operation. This layer adds Codex
|
|
8
|
+
mechanics only and cannot weaken either.
|
|
12
9
|
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
Act as the Orchestrator defined in .agents/orchestration.md, on Astra. When an invocation assigns a
|
|
11
|
+
bounded executor role, perform that role's brief and do not expand its scope.
|
|
15
12
|
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
Codex loads AGENTS.md itself. Read each .claude/rules/*.md file whose paths frontmatter matches the
|
|
14
|
+
files you touch; Codex does not load them for you. Follow a skill under .agents/skills when its
|
|
15
|
+
trigger fires.
|
|
18
16
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
-
|
|
26
|
-
|
|
17
|
+
Engine mapping for the roles in .agents/orchestration.md:
|
|
18
|
+
- Astra: this session, analyst, astra.
|
|
19
|
+
- Cursor Grok: the grok driver, read-only, through .agents/transports/cursor.md.
|
|
20
|
+
- Claude Opus 5.5: the planner and reviewer drivers (read-only) and the opus driver (writes),
|
|
21
|
+
through .agents/transports/claude-cli.md.
|
|
22
|
+
- Luna: distiller, researcher, scout, checker.
|
|
23
|
+
- Sol: drivers and fully specified units (builder, verifier, orkestrel).
|
|
24
|
+
|
|
25
|
+
Hooks: .codex/hooks.json runs the orkestrel-dispatch sweep script (node
|
|
26
|
+
.agents/skills/orkestrel-dispatch/scripts/sweep.ts --report) on SessionStart and git diff --check
|
|
27
|
+
on Stop. Every script an agent writes is TypeScript run by node, per AGENTS.md.
|
|
27
28
|
"""
|
|
28
29
|
|
|
29
30
|
[agents]
|
|
@@ -34,7 +35,3 @@ interrupt_message = true
|
|
|
34
35
|
[mcp_servers.probe]
|
|
35
36
|
command = "node"
|
|
36
37
|
args = ["node_modules/@orkestrel/probe/dist/bin/main.js"]
|
|
37
|
-
|
|
38
|
-
[mcp_servers.codex]
|
|
39
|
-
command = "codex"
|
|
40
|
-
args = ["mcp-server"]
|
|
@@ -5,29 +5,21 @@ alwaysApply: true
|
|
|
5
5
|
|
|
6
6
|
# Cursor bridge
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
dispatch-named `.agents/skills` workflow and its required references, and the governing guide or
|
|
10
|
-
spec before acting.
|
|
8
|
+
`AGENTS.md` governs code. `.agents/orchestration.md` governs agent operation. This file adds Cursor mechanics only.
|
|
11
9
|
|
|
12
|
-
|
|
13
|
-
rule, and they are not repeated here. This file adds only how a Cursor session invokes them.
|
|
10
|
+
## Posture
|
|
14
11
|
|
|
15
|
-
|
|
12
|
+
- Invoked through the `grok` bridge (`agent -p --mode=ask`): act as a read-only executor. Return distilled evidence with `file:line` pointers. Never edit, decide, or accept.
|
|
13
|
+
- Driven by the user: act as the Orchestrator per `.agents/orchestration.md`, on Grok.
|
|
16
14
|
|
|
17
|
-
|
|
15
|
+
## Reaching the other engines
|
|
18
16
|
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
|
|
17
|
+
- Reach Opus 5.5 through the `claude` MCP server (`claude mcp serve`) in `.cursor/mcp.json` for a short exchange, and through `claude -p` per `.agents/transports/claude-cli.md` for a unit.
|
|
18
|
+
- Reach Astra through `codex exec` per `.agents/transports/codex.md`. `codex mcp-server` no longer exists.
|
|
19
|
+
- Never select another provider's model from Cursor's own model list; Cursor is the Grok bench.
|
|
20
|
+
- Approve the `claude` MCP server once per machine with `agent mcp enable claude`.
|
|
23
21
|
|
|
24
|
-
##
|
|
22
|
+
## Rules and skills
|
|
25
23
|
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
- Never select another provider's model from Cursor's own model list. Cursor offers Opus, Astra, and
|
|
29
|
-
others, but running them here spends Cursor credits for work an MCP server does for free. Cursor
|
|
30
|
-
is the Grok bench and nothing else.
|
|
31
|
-
- Approve both servers once per machine: `agent mcp enable codex` and `agent mcp enable claude`.
|
|
32
|
-
- MCP serves short interactive exchanges only. Long work uses the journaled CLI under the bench
|
|
33
|
-
laws.
|
|
24
|
+
- Read the `.claude/rules/*.md` files whose `paths` frontmatter matches the files you touch; Cursor does not load them for you.
|
|
25
|
+
- Cursor discovers `.agents/skills/` natively. Follow a skill when its trigger fires.
|
|
@@ -82,6 +82,13 @@
|
|
|
82
82
|
"import/no-default-export": "off"
|
|
83
83
|
}
|
|
84
84
|
},
|
|
85
|
+
{
|
|
86
|
+
"files": [".agents/skills/*/scripts/*.ts"],
|
|
87
|
+
"rules": {
|
|
88
|
+
"policy/no-nested-functions": "error",
|
|
89
|
+
"policy/no-host-line-endings": "error"
|
|
90
|
+
}
|
|
91
|
+
},
|
|
85
92
|
{
|
|
86
93
|
"files": [
|
|
87
94
|
"src/**/*.{cjs,cts,js,jsx,mjs,mts,ts,tsx,vue}",
|
|
@@ -476,7 +476,7 @@ make a claim. A direct `Probe` runs its boot controls at construction. `ProbeSer
|
|
|
476
476
|
independent of the workspace toolchain and runs those controls when an admitted `prove` call
|
|
477
477
|
constructs the real probe.
|
|
478
478
|
|
|
479
|
-
- **A Vitest project whose name the test's path infers.** A test under `tmp/
|
|
479
|
+
- **A Vitest project whose name the test's path infers.** A test under `tmp/probes/` names the
|
|
480
480
|
`probe` project, and a test under `tests/src/<environment>/` names `src:<environment>`. Any other
|
|
481
481
|
path infers no project, and the runtime stage throws `origin: 'claimant'`, `code: 'missing'`, and
|
|
482
482
|
the declared path in `context` rather than reporting an issue:
|
|
@@ -495,7 +495,7 @@ constructs the real probe.
|
|
|
495
495
|
for the file it wrote, so a project whose glob matches nothing still serves a claim.
|
|
496
496
|
- **The directory the declared test path names can be created.** The runtime stage writes a real
|
|
497
497
|
file beside the declared test and creates that file's directory first, recursively, so a claim
|
|
498
|
-
naming a directory the workspace does not hold still runs. A fresh clone holds no `tmp/
|
|
498
|
+
naming a directory the workspace does not hold still runs. A fresh clone holds no `tmp/probes/`,
|
|
499
499
|
because `tmp` is ignored by version control, and a claim declaring a test there creates it. A
|
|
500
500
|
directory the host refuses to create — a file already occupies the path, or its parent denies
|
|
501
501
|
writing — reports an `origin: 'workspace'` issue:
|
|
@@ -656,7 +656,7 @@ const claim: Claim = {
|
|
|
656
656
|
},
|
|
657
657
|
],
|
|
658
658
|
test: {
|
|
659
|
-
path: 'tmp/
|
|
659
|
+
path: 'tmp/probes/greeting.test.ts',
|
|
660
660
|
text: "import { expect, test } from 'vitest'\nimport { createGreeting } from '../../src/core/factories.js'\ntest('greets', () => expect(createGreeting()).toBe('hi'))\n",
|
|
661
661
|
},
|
|
662
662
|
},
|
|
@@ -668,7 +668,7 @@ const claim: Claim = {
|
|
|
668
668
|
},
|
|
669
669
|
],
|
|
670
670
|
test: {
|
|
671
|
-
path: 'tmp/
|
|
671
|
+
path: 'tmp/probes/greeting.test.ts',
|
|
672
672
|
text: "import { expect, test } from 'vitest'\nimport { createGreeting } from '../../src/core/factories.js'\ntest('greets', () => expect(createGreeting()).toBe('hi'))\n",
|
|
673
673
|
},
|
|
674
674
|
stage: 'type',
|
|
@@ -895,10 +895,10 @@ already supply test code the runtime stage runs.
|
|
|
895
895
|
for.** Oxlint's language server honours `.gitignore`, and it does so for text supplied from memory
|
|
896
896
|
exactly as it does for a file on disk. The stage reports a clean check, not a skipped one.
|
|
897
897
|
|
|
898
|
-
This reaches the flagship claim stated earlier: its test lives at `tmp/
|
|
898
|
+
This reaches the flagship claim stated earlier: its test lives at `tmp/probes/greeting.test.ts`, and
|
|
899
899
|
`tmp` is ignored in this workspace, so the lint stage inspects the candidate `src/core/factories.ts`
|
|
900
900
|
and reports nothing about the test. Measured on 2026-08-20: the same three-line text carrying an
|
|
901
|
-
unused binding and a `debugger` statement returns 0 issues at `tmp/
|
|
901
|
+
unused binding and a `debugger` statement returns 0 issues at `tmp/probes/lint-ignored.test.ts` and 2
|
|
902
902
|
issues at `tests/src/core/lint-tracked.test.ts`.
|
|
903
903
|
|
|
904
904
|
`.gitignore` alone causes this: `tmp` appears there and in no other ignore file this workspace
|
|
@@ -1000,8 +1000,8 @@ than the probe's — it decides which process reads the stdio, not when the stag
|
|
|
1000
1000
|
`error` instead, carrying the arming refusal as the attempt raises it, so a host waiting on `arm`
|
|
1001
1001
|
reads the refusal rather than an event that never arrives. The attempt is still retained for
|
|
1002
1002
|
retry, so each attempt surfaces its own `error` and no `prove` reports one refusal twice. The
|
|
1003
|
-
controls run under `tmp/
|
|
1004
|
-
its composition in the root configuration, and a `tmp/
|
|
1003
|
+
controls run under `tmp/probes/` against the root `tsconfig.json`, which is why the Vitest project,
|
|
1004
|
+
its composition in the root configuration, and a `tmp/probes/` the host lets it create gate the
|
|
1005
1005
|
boot rather than a claim.
|
|
1006
1006
|
- **Freshness.** Every `prove` revalidates before it answers. The runtime stage re-reads each
|
|
1007
1007
|
workspace module and invalidates the ones whose contents moved; the type stage refreshes its
|
|
@@ -1113,7 +1113,7 @@ than the probe's — it decides which process reads the stdio, not when the stag
|
|
|
1113
1113
|
closes the file with the marker `// @orkestrel/probe generated specification <pid>-<uuid>`, and
|
|
1114
1114
|
the sweep requires that marker to name the same revision the file name does. The boot
|
|
1115
1115
|
dependencies carry the same marker, so nothing is attributed by its path and nothing under
|
|
1116
|
-
`tmp/
|
|
1116
|
+
`tmp/probes/` is deleted for sitting there. A file of yours that happens to carry the same name
|
|
1117
1117
|
shape is left where it is, wherever it sits, and so is a live neighbour's specification.
|
|
1118
1118
|
- **What the type stage leaves.** Its mirror is one directory under `TYPE_MIRROR`, named for the
|
|
1119
1119
|
writing host's process id and a fresh UUID, carrying that same marker at `.probe/mirror.txt`.
|