agent-composer 0.2.0 → 0.2.2
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/README.md +68 -15
- package/dist/cli/install-plugin.js +16 -4
- package/dist/cli/install-plugin.js.map +1 -1
- package/dist/providers/AnthropicCompatibleProvider.js +3 -0
- package/dist/providers/AnthropicCompatibleProvider.js.map +1 -1
- package/dist/providers/CLIProvider.d.ts +1 -0
- package/dist/providers/CLIProvider.js +28 -2
- package/dist/providers/CLIProvider.js.map +1 -1
- package/dist/server.js +12 -10
- package/dist/server.js.map +1 -1
- package/dist/util/dispatchHint.d.ts +15 -0
- package/dist/util/dispatchHint.js +110 -27
- package/dist/util/dispatchHint.js.map +1 -1
- package/package.json +2 -2
- package/plugin/composer-mastermind/README.md +22 -6
- package/plugin/composer-mastermind/agents/coder.md +14 -4
- package/plugin/composer-mastermind/agents/researcher.md +5 -4
- package/plugin/composer-mastermind/agents/reviewer-claude.md +9 -8
- package/plugin/composer-mastermind/agents/reviewer.md +8 -8
- package/plugin/composer-mastermind/hooks/boundary_guard.sh +30 -3
- package/plugin/composer-mastermind/hooks/learn.sh +23 -0
- package/plugin/composer-mastermind/hooks/lint-on-save.sh +24 -0
- package/plugin/composer-mastermind/plugin.json +1 -1
- package/plugin/composer-mastermind/skills/composer-mastermind/SKILL.md +52 -30
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Composer — multi-agent orchestration for Claude Code
|
|
2
2
|
|
|
3
|
-
[](#install) [](#install) [](#contributing) [](#license)
|
|
4
4
|
|
|
5
5
|
> **Claude orchestrates. GLM, Codex, and `agy` execute — and *apply* — off your Claude quota.** Composer is an MCP server + Claude Code plugin that lets the most-capable model hold the plan while worker models generate *and write* the code in their own context. Because the executors apply files themselves (instead of returning text the main session must re-ingest), composer keeps the orchestrator's context lean and every change reviewable.
|
|
6
6
|
|
|
@@ -13,7 +13,7 @@ Two coordinated artefacts:
|
|
|
13
13
|
| **`agent-composer`** (this npm package) | MCP server exposing `composer_handoff_create`, `composer_research`, `composer_code`, `composer_code_chain`, `composer_code_cli`, `composer_review`, and `composer_review_claude`. Wraps GLM (via Anthropic-compatible endpoint) and CLI executors such as Codex, `agy`, or bounded `claude -p`. |
|
|
14
14
|
| **`composer-mastermind`** (Claude Code plugin) | Orchestrator skill + haiku-wrapped subagents (`coder`, `researcher`, `reviewer`, optional `reviewer-claude`) + `boundary_guard` PreToolUse hook + `/evolve` slash command. |
|
|
15
15
|
|
|
16
|
-
Combined, they turn the main Claude session into a coordinator that never writes code
|
|
16
|
+
Combined, they turn the main Claude session into a coordinator that never writes code or edits files directly. The main session may use Bash for inspection and verification, while code changes are dispatched through Composer MCP tools. The boundary hook fails closed if a denied file-mutating tool is requested.
|
|
17
17
|
|
|
18
18
|
## Tools
|
|
19
19
|
|
|
@@ -22,11 +22,11 @@ Seven MCP tools, all routing work off the main Claude session:
|
|
|
22
22
|
| Tool | Executor | What it does |
|
|
23
23
|
|---|---|---|
|
|
24
24
|
| `composer_handoff_create` | Composer server | Writes a compact shared packet under `.composer/handoffs/`; pass `handoffPath` to Codex, GLM, agy, researcher, and reviewer calls so every worker shares the same objective and constraints. |
|
|
25
|
-
| `composer_code_cli` | Codex CLI or agy | **Default for
|
|
25
|
+
| `composer_code_cli` | Codex CLI or agy | **Default for code edits.** The configured CLI executor generates **and applies** files itself off-CC, from the MCP server root, then returns a bounded summary. Use Codex here for complex coding work. |
|
|
26
26
|
| `composer_code_chain` | GLM authors → server applies | GLM fallback. GLM writes the complete files off-CC (`FILE: <path>` + fenced blocks); the MCP server applies them deterministically off-CC; the orchestrator only relays a summary. ~71% fewer total-CC tokens on multi-file tasks. |
|
|
27
|
-
| `composer_code` | GLM |
|
|
28
|
-
| `composer_research` | Codex CLI search |
|
|
29
|
-
| `composer_review` | agy |
|
|
27
|
+
| `composer_code` | GLM | Legacy patch-only lane. Use only when you explicitly need GLM diff/text output instead of an apply-capable lane. |
|
|
28
|
+
| `composer_research` | Codex CLI search | Direct docs/web/current-context lane → bounded structured summary. Runs Codex with live web search and a read-only sandbox. |
|
|
29
|
+
| `composer_review` | agy | Direct diff-review lane. Ask it to run repo-appropriate targeted checks off-CC; use a reviewer model different from the author for cross-model rigor (e.g. GLM writes → agy reviews). |
|
|
30
30
|
| `composer_review_claude` | Claude Code CLI | Premium second-opinion review for high-risk/security-sensitive diffs or explicit user requests. Default config runs bounded `claude -p --model opus` with read/test tools only and `--max-budget-usd 0.50`. |
|
|
31
31
|
|
|
32
32
|
**Why "off-CC" matters:** GLM (z.ai), Codex, and agy run on *separate* quotas. Generating and *applying* code in their own context — not returning text the main Claude session must re-ingest — is what actually preserves your Max5 quota. The eval harness scores on **total-CC tokens** (every Claude model in a run = real Max5 burn), with a correctness gate (tsc/tests) and N-run averaging.
|
|
@@ -108,6 +108,24 @@ refuses explicit `codex exec --sandbox danger-full-access` and
|
|
|
108
108
|
Keep `reviewer` as the default gate. Use `reviewerClaude` only when the user
|
|
109
109
|
asks for Claude review or when a risky diff needs an expensive second opinion.
|
|
110
110
|
|
|
111
|
+
### Fast direct-tool mode
|
|
112
|
+
|
|
113
|
+
Composer keeps the CLI executor path, but the plugin now treats it more like a
|
|
114
|
+
small SDK harness:
|
|
115
|
+
|
|
116
|
+
- `composer_code_cli` is the default edit lane; the legacy `coder` subagent is
|
|
117
|
+
only for rare patch-only GLM fallback.
|
|
118
|
+
- `composer_research`, `composer_review`, and `composer_review_claude` can be
|
|
119
|
+
called directly because their providers already run off the main Claude Code
|
|
120
|
+
context and return bounded summaries.
|
|
121
|
+
- The `researcher`, `reviewer`, and `reviewer-claude` subagents remain available
|
|
122
|
+
when raw upstream output is expected to be large enough to need an isolated
|
|
123
|
+
wrapper context.
|
|
124
|
+
- CLI calls append best-effort timing records to
|
|
125
|
+
`/tmp/composer-cli-usage.jsonl`; GLM calls append timing/cache records to
|
|
126
|
+
`/tmp/composer-glm-usage.jsonl`. These files contain durations and character
|
|
127
|
+
counts, not prompts.
|
|
128
|
+
|
|
111
129
|
**`.env.json`** (NEVER commit) — credentials only:
|
|
112
130
|
|
|
113
131
|
```json
|
|
@@ -119,6 +137,27 @@ asks for Claude review or when a risky diff needs an expensive second opinion.
|
|
|
119
137
|
|
|
120
138
|
The MCP server reads `.env.json` via `fs.readFileSync` — it is **never** exposed to the orchestrator session.
|
|
121
139
|
|
|
140
|
+
### Soft-disable Composer
|
|
141
|
+
|
|
142
|
+
Composer hooks can be disabled without editing Claude Code settings:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
# Disable for one launch
|
|
146
|
+
COMPOSER_ENABLED=0 claude
|
|
147
|
+
|
|
148
|
+
# Disable globally for already-configured hooks
|
|
149
|
+
touch ~/.claude/composer.disabled
|
|
150
|
+
|
|
151
|
+
# Re-enable globally
|
|
152
|
+
rm -f ~/.claude/composer.disabled
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Project-local disable is also supported with `touch .composer-disabled`.
|
|
156
|
+
For scripts or tests, set `COMPOSER_DISABLED_FILE=/path/to/sentinel`.
|
|
157
|
+
This disables Composer hooks immediately. To fully suppress skill autoload,
|
|
158
|
+
also set `"composer-mastermind": "off"` in Claude Code `skillOverrides` and
|
|
159
|
+
restart CC.
|
|
160
|
+
|
|
122
161
|
## How dispatch works
|
|
123
162
|
|
|
124
163
|
Inside a Claude Code session, dispatch flow:
|
|
@@ -126,17 +165,31 @@ Inside a Claude Code session, dispatch flow:
|
|
|
126
165
|
```
|
|
127
166
|
User asks for code work
|
|
128
167
|
↓
|
|
129
|
-
Composer-mastermind SKILL.md picks a subagent
|
|
130
|
-
↓
|
|
131
|
-
Task → coder.md / researcher.md / reviewer.md / reviewer-claude.md
|
|
168
|
+
Composer-mastermind SKILL.md picks a direct MCP tool or fallback subagent
|
|
132
169
|
↓
|
|
133
|
-
|
|
170
|
+
Direct MCP call → composer_code_cli / composer_research / composer_review
|
|
171
|
+
or Task fallback → coder.md / researcher.md / reviewer.md / reviewer-claude.md
|
|
134
172
|
↓
|
|
135
|
-
MCP server routes to GLM (anthropic) or Codex/agy CLI
|
|
173
|
+
MCP server routes to GLM (anthropic) or Codex/agy CLI per composer.config.json
|
|
136
174
|
↓
|
|
137
|
-
|
|
175
|
+
Provider returns bounded summary; orchestrator integrates
|
|
138
176
|
```
|
|
139
177
|
|
|
178
|
+
Composer also emits a deterministic dispatch hint for `Task`/`Agent` calls
|
|
179
|
+
when `scripts/dispatch_guard.sh` is installed. The hint classifies the
|
|
180
|
+
request before the worker starts, so the orchestrator can choose a cheaper
|
|
181
|
+
lane when the task is simple and reserve expensive paths for the cases that
|
|
182
|
+
need isolation or extra reasoning.
|
|
183
|
+
|
|
184
|
+
| Task shape | Default route |
|
|
185
|
+
|---|---|
|
|
186
|
+
| Tiny rename/comment/non-mutating request | Inline |
|
|
187
|
+
| Small self-contained diff review | Inline review |
|
|
188
|
+
| File mutation with path references | `composer_code_cli` |
|
|
189
|
+
| Research-first implementation | `composer_research`, then `composer_code_cli` |
|
|
190
|
+
| Security or large review | `composer_review` first; escalate to `composer_review_claude` only when needed |
|
|
191
|
+
| Explicit premium/Claude review | `composer_review_claude` |
|
|
192
|
+
|
|
140
193
|
## Measuring trust
|
|
141
194
|
|
|
142
195
|
Composer's route-confidence harness compares the same tasks across direct
|
|
@@ -172,10 +225,10 @@ Five resilience layers ensure unattended `/evolve` runs cannot damage the host r
|
|
|
172
225
|
|
|
173
226
|
## Security model
|
|
174
227
|
|
|
175
|
-
- **`agent-composer` publish surface**: `dist/`, `composer.config.schema.json`, `README.md`, `package.json`. No tests, no source, no `.env*` (gitignored).
|
|
228
|
+
- **`agent-composer` publish surface**: `dist/`, `plugin/`, `composer.config.schema.json`, `README.md`, `package.json`. No tests, no source, no `.env*` (gitignored). Current npm dry-run package size is 83.2 KB.
|
|
176
229
|
- **Spend caps**: per-call (`maxUsdPerCall`, default $0.50) and per-session (`maxUsdPerSession`, default $5.00) enforced in the runner before any external API call. Configurable per project.
|
|
177
230
|
- **Self-evolution scope** (see ADR 0003): five layers gate any SKILL.md mutation — diff-path regex, text deny-list, stat gate, human-promote-only, audit trail. Auto-promote is permanently off the table.
|
|
178
|
-
- **Boundary hook**: PreToolUse fail-closed denial of `Edit`/`Update`/`Write`/`
|
|
231
|
+
- **Boundary hook**: PreToolUse fail-closed denial of `Edit`/`Update`/`Write`/`NotebookEdit` in the orchestrator session, plus MCP write/edit/exec variants. Native Bash is allowed for inspection and verification. The C0.5 subagent tools allowlist is append-only.
|
|
179
232
|
|
|
180
233
|
## Contributing
|
|
181
234
|
|
|
@@ -186,7 +239,7 @@ git clone <this-repo>
|
|
|
186
239
|
cd composer
|
|
187
240
|
npm install
|
|
188
241
|
npx tsc --noEmit # type check
|
|
189
|
-
./node_modules/.bin/vitest run #
|
|
242
|
+
./node_modules/.bin/vitest run # 435 tests
|
|
190
243
|
./node_modules/.bin/ajv validate \ # schema lint
|
|
191
244
|
--strict=false -c ajv-formats \
|
|
192
245
|
-s composer.config.schema.json \
|
|
@@ -87,7 +87,7 @@ function copyOne(srcPath, destPath, label, opts = {}) {
|
|
|
87
87
|
*/
|
|
88
88
|
function wireBoundaryHook(claudeHome, hookScriptPath) {
|
|
89
89
|
const settingsPath = join(claudeHome, "settings.json");
|
|
90
|
-
const matcher = "
|
|
90
|
+
const matcher = "Edit|Update|Write|NotebookEdit";
|
|
91
91
|
const entry = {
|
|
92
92
|
matcher,
|
|
93
93
|
hooks: [{ type: "command", command: hookScriptPath }],
|
|
@@ -112,9 +112,21 @@ function wireBoundaryHook(claudeHome, hookScriptPath) {
|
|
|
112
112
|
}
|
|
113
113
|
const hooks = current["hooks"] ?? {};
|
|
114
114
|
const preToolUse = hooks["PreToolUse"] ?? [];
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
115
|
+
const composerEntryIndex = preToolUse.findIndex((e) => e.hooks?.some((h) => h.command === hookScriptPath));
|
|
116
|
+
if (composerEntryIndex >= 0) {
|
|
117
|
+
const existing = preToolUse[composerEntryIndex];
|
|
118
|
+
if (existing.matcher !== matcher) {
|
|
119
|
+
const nextPreToolUse = preToolUse.map((e, i) => i === composerEntryIndex ? { ...e, matcher } : e);
|
|
120
|
+
const nextHooks = { ...hooks, PreToolUse: nextPreToolUse };
|
|
121
|
+
const next = { ...current, hooks: nextHooks };
|
|
122
|
+
writeFileSync(settingsPath, JSON.stringify(next, null, 2) + "\n", "utf8");
|
|
123
|
+
return {
|
|
124
|
+
name: "~/.claude/settings.json boundary hook",
|
|
125
|
+
status: "updated",
|
|
126
|
+
path: settingsPath,
|
|
127
|
+
reason: `refreshed PreToolUse matcher → ${matcher}`,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
118
130
|
return {
|
|
119
131
|
name: "~/.claude/settings.json boundary hook",
|
|
120
132
|
status: "skipped",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-plugin.js","sourceRoot":"","sources":["../../src/cli/install-plugin.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"install-plugin.js","sourceRoot":"","sources":["../../src/cli/install-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,7 +62,9 @@ export class AnthropicCompatibleProvider {
|
|
|
62
62
|
};
|
|
63
63
|
if (this.thinking)
|
|
64
64
|
params.thinking = this.thinking;
|
|
65
|
+
const startedAt = Date.now();
|
|
65
66
|
const msg = await this.client.messages.create(params);
|
|
67
|
+
const durationMs = Date.now() - startedAt;
|
|
66
68
|
// Best-effort GLM cache-hit telemetry
|
|
67
69
|
try {
|
|
68
70
|
const fs = await import("node:fs");
|
|
@@ -73,6 +75,7 @@ export class AnthropicCompatibleProvider {
|
|
|
73
75
|
output_tokens: msg.usage.output_tokens,
|
|
74
76
|
cache_creation_input_tokens: msg.usage.cache_creation_input_tokens ?? 0,
|
|
75
77
|
cache_read_input_tokens: msg.usage.cache_read_input_tokens ?? 0,
|
|
78
|
+
duration_ms: durationMs,
|
|
76
79
|
};
|
|
77
80
|
fs.appendFileSync("/tmp/composer-glm-usage.jsonl", JSON.stringify(entry) + "\n");
|
|
78
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnthropicCompatibleProvider.js","sourceRoot":"","sources":["../../src/providers/AnthropicCompatibleProvider.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AnthropicCompatibleProvider.js","sourceRoot":"","sources":["../../src/providers/AnthropicCompatibleProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -113,17 +113,27 @@ export class CLIProvider {
|
|
|
113
113
|
let lastError;
|
|
114
114
|
for (let attempt = 0; attempt <= this.retries; attempt++) {
|
|
115
115
|
const execution = CLIProvider.prepareArgs(bin, staticArgs, fullPrompt);
|
|
116
|
+
const startedAt = Date.now();
|
|
116
117
|
try {
|
|
117
118
|
const { stdout } = await this.exec(bin, execution.args, {
|
|
118
119
|
cwd,
|
|
119
120
|
maxBuffer: this.maxBuffer,
|
|
120
121
|
timeout: this.timeoutMs,
|
|
121
122
|
});
|
|
123
|
+
const durationMs = Date.now() - startedAt;
|
|
122
124
|
const text = execution.finalMessagePath
|
|
123
125
|
? CLIProvider.readFinalMessage(execution.finalMessagePath) ?? stdout
|
|
124
126
|
: stdout;
|
|
125
|
-
|
|
126
|
-
|
|
127
|
+
CLIProvider.logUsage({
|
|
128
|
+
bin,
|
|
129
|
+
model: this.modelLabel,
|
|
130
|
+
durationMs,
|
|
131
|
+
stdoutChars: stdout.length,
|
|
132
|
+
textChars: text.length,
|
|
133
|
+
attempt: attempt + 1,
|
|
134
|
+
});
|
|
135
|
+
if (CLIProvider.isTransientFailure(text)) {
|
|
136
|
+
lastError = new Error(`CLIProvider: '${bin}' transient failure on attempt ${attempt + 1}: ${text.trim().slice(0, 200)}`);
|
|
127
137
|
continue;
|
|
128
138
|
}
|
|
129
139
|
const bounded = this.maxResultChars > 0
|
|
@@ -180,6 +190,22 @@ export class CLIProvider {
|
|
|
180
190
|
throw new Error("CLIProvider: refusing unsafe Codex exec sandbox. Use --sandbox workspace-write, or set COMPOSER_ALLOW_DANGEROUS_CODEX=1 only inside an external sandbox.");
|
|
181
191
|
}
|
|
182
192
|
}
|
|
193
|
+
static logUsage(entry) {
|
|
194
|
+
try {
|
|
195
|
+
fs.appendFileSync("/tmp/composer-cli-usage.jsonl", JSON.stringify({
|
|
196
|
+
ts: new Date().toISOString(),
|
|
197
|
+
bin: path.basename(entry.bin),
|
|
198
|
+
model: entry.model,
|
|
199
|
+
duration_ms: entry.durationMs,
|
|
200
|
+
stdout_chars: entry.stdoutChars,
|
|
201
|
+
text_chars: entry.textChars,
|
|
202
|
+
attempt: entry.attempt,
|
|
203
|
+
}) + "\n");
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
// Best-effort telemetry; never break provider execution.
|
|
207
|
+
}
|
|
208
|
+
}
|
|
183
209
|
static codexExecIndex(args) {
|
|
184
210
|
const flagsWithValues = new Set([
|
|
185
211
|
"-a",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CLIProvider.js","sourceRoot":"","sources":["../../src/providers/CLIProvider.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"CLIProvider.js","sourceRoot":"","sources":["../../src/providers/CLIProvider.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -16,12 +16,13 @@ export const COMPOSER_REVIEW_CLAUDE = "composer_review_claude";
|
|
|
16
16
|
export const COMPOSER_CODE_CLI = "composer_code_cli";
|
|
17
17
|
export const COMPOSER_CODE_CHAIN = "composer_code_chain";
|
|
18
18
|
export const COMPOSER_HANDOFF_CREATE = "composer_handoff_create";
|
|
19
|
-
const RESEARCH_DESCRIPTION = "
|
|
20
|
-
"context
|
|
21
|
-
"
|
|
22
|
-
const CODE_DESCRIPTION = "
|
|
23
|
-
"
|
|
24
|
-
"
|
|
19
|
+
const RESEARCH_DESCRIPTION = "Default off-CC research lane for documentation lookup, web search, " +
|
|
20
|
+
"current API shape, and external context. Returns a bounded summary; call " +
|
|
21
|
+
"directly unless raw upstream output needs separate subagent isolation.";
|
|
22
|
+
const CODE_DESCRIPTION = "LEGACY patch-only GLM authoring lane. Use only when you explicitly need " +
|
|
23
|
+
"GLM to return a diff/text WITHOUT applying files. For normal code writing, " +
|
|
24
|
+
"refactoring, debugging, and implementation, prefer composer_code_cli " +
|
|
25
|
+
"(default) or composer_code_chain (GLM complete-file fallback).";
|
|
25
26
|
const CODE_CHAIN_DESCRIPTION = "Preferred for substantial code: GLM AUTHORS the code (off-CC), then the " +
|
|
26
27
|
"Composer server APPLIES it to disk deterministically (off-CC), then gate it through " +
|
|
27
28
|
"composer_review. The orchestrator only calls this once and relays the " +
|
|
@@ -34,12 +35,13 @@ const CODE_CLI_DESCRIPTION = "Generate AND APPLY code changes directly to disk v
|
|
|
34
35
|
"generation and file-writing off the main session: the orchestrator does " +
|
|
35
36
|
"NOT call Edit/Write — the executor already applied the changes. Prefer " +
|
|
36
37
|
"this for multi-file or substantial edits to keep the main context lean.";
|
|
37
|
-
const REVIEW_DESCRIPTION = "
|
|
38
|
-
"
|
|
39
|
-
"
|
|
38
|
+
const REVIEW_DESCRIPTION = "Default off-CC review lane for diff critique and bug-finding before " +
|
|
39
|
+
"integration. Provide the diff inline and ask for repo-appropriate targeted " +
|
|
40
|
+
"checks. Returns a bounded summary; call directly unless raw output needs " +
|
|
41
|
+
"separate subagent isolation.";
|
|
40
42
|
const REVIEW_CLAUDE_DESCRIPTION = "Premium Claude review lane for high-risk diffs, security-sensitive changes, " +
|
|
41
43
|
"or when the user explicitly asks for Claude review. Keep composer_review " +
|
|
42
|
-
"as the default gate;
|
|
44
|
+
"as the default gate; call this directly as a second-opinion escalation.";
|
|
43
45
|
const HANDOFF_CREATE_DESCRIPTION = "Create a shared, provider-neutral handoff packet under .composer/handoffs. " +
|
|
44
46
|
"Use this before multi-agent or multi-provider work so Codex, GLM, agy, " +
|
|
45
47
|
"and reviewers receive the same compact objective, constraints, files, " +
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,4EAA4E;AAC5E,+DAA+D;AAC/D,qEAAqE;AAErE,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GAEnB,MAAM,mBAAmB,CAAC;AAE3B,oEAAoE;AACpE,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAA4B,CAAC;AAC9D,MAAM,CAAC,MAAM,aAAa,GAAG,eAAwB,CAAC;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG,iBAA0B,CAAC;AAC1D,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAiC,CAAC;AACxE,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAA4B,CAAC;AAC9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAA8B,CAAC;AAClE,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAkC,CAAC;AAE1E,MAAM,oBAAoB,GACxB,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,35 @@
|
|
|
1
1
|
export type Tier = "cheap" | "premium";
|
|
2
2
|
export type Reasoning = "none" | "low" | "high";
|
|
3
3
|
export type PromptSize = "lite" | "full";
|
|
4
|
+
export type TaskClass = "unknown" | "refuse" | "review-inline" | "review" | "bug-explain" | "research-first-code" | "cross-file-code" | "simple-code" | "trivial";
|
|
5
|
+
export type RouteTarget = "inline" | "refuse" | "review-inline" | "task-reviewer" | "task-researcher-coder" | "composer-code-cli" | "composer-code-chain" | "composer-review-claude";
|
|
6
|
+
export type ProviderRole = "researcher" | "coder" | "coderCli" | "reviewer" | "reviewerClaude";
|
|
4
7
|
export interface DispatchSignals {
|
|
5
8
|
promptChars: number;
|
|
6
9
|
estOutputTokens: number;
|
|
7
10
|
hasCode: boolean;
|
|
8
11
|
hasFileRef: boolean;
|
|
9
12
|
hasDestructive: boolean;
|
|
13
|
+
hasResearch: boolean;
|
|
14
|
+
isWriteRequest: boolean;
|
|
15
|
+
isSecuritySensitive: boolean;
|
|
10
16
|
complexityScore: number;
|
|
11
17
|
isReviewWithInlineDiff: boolean;
|
|
12
18
|
}
|
|
19
|
+
export interface RoutePolicy {
|
|
20
|
+
taskClass: TaskClass;
|
|
21
|
+
target: RouteTarget;
|
|
22
|
+
providerRole?: ProviderRole;
|
|
23
|
+
requiresReview: boolean;
|
|
24
|
+
confidence: number;
|
|
25
|
+
rationale: string;
|
|
26
|
+
}
|
|
13
27
|
export interface DispatchHint {
|
|
14
28
|
tier: Tier;
|
|
15
29
|
reasoning: Reasoning;
|
|
16
30
|
promptSize: PromptSize;
|
|
17
31
|
recommendDispatch: boolean;
|
|
32
|
+
route: RoutePolicy;
|
|
18
33
|
rationale: string;
|
|
19
34
|
signals: DispatchSignals;
|
|
20
35
|
}
|
|
@@ -12,10 +12,14 @@ const WorkerPromptPartsSchema = z.object({
|
|
|
12
12
|
brief: z.string().optional(),
|
|
13
13
|
});
|
|
14
14
|
const CODE_KEYWORD = /\b(?:function|class|const|let|import|export|def)\b|=>/;
|
|
15
|
-
const FILE_REF =
|
|
15
|
+
const FILE_REF = /\b(?:(?:src|tests|lib|app)\/[A-Za-z0-9._/-]+|[A-Za-z0-9._/-]+\.(?:ts|tsx|js|jsx|mjs|cjs|json|md|vue|svelte|css|scss|html|py|rs|go|java|kt|swift|rb|php|sh|ya?ml)(?::\d+)?)\b/i;
|
|
16
16
|
const DESTRUCTIVE = /(?:\brm\s+-rf\b|\bdrop\s+table\b|\bdelete\s+from\b|\btruncate\b|\breset\s+--hard\b|--force\b|\bdestroy\b)/i;
|
|
17
17
|
const SENSITIVE = /security|auth|crypto|payment/i;
|
|
18
18
|
const REVIEW = /\b(review|audit)\b/i;
|
|
19
|
+
const PREMIUM_REVIEW = /\b(?:premium review|claude review|claude reviewer|review with claude|second opinion|escalate to claude)\b/i;
|
|
20
|
+
const BUG_EXPLAIN = /\b(find|explain|identify)\b.{0,40}\bbug\b|\boff-by-one\b|\bmissing await\b/i;
|
|
21
|
+
const RESEARCH = /\b(research|look up|lookup|docs?|documentation|best practice|current|latest|web search)\b/i;
|
|
22
|
+
const WRITE_REQUEST = /\b(add|implement|create|edit|modify|refactor|fix|write|update|change)\b/i;
|
|
19
23
|
const DIFF_OR_CODE_BLOCK = /```|^diff --git |^@@ |^(?:---|\+\+\+) /m;
|
|
20
24
|
const HIGH_COMPLEXITY_TERMS = [
|
|
21
25
|
/\brefactor(?:ing|s|ed)?\b/i,
|
|
@@ -41,47 +45,53 @@ export function classifyDispatch(input) {
|
|
|
41
45
|
const validated = ClassifyInputSchema.parse(input);
|
|
42
46
|
const prompt = validated.prompt;
|
|
43
47
|
const description = validated.description ?? "";
|
|
48
|
+
const corpus = `${description}\n${prompt}`;
|
|
44
49
|
const promptChars = prompt.length;
|
|
45
50
|
const hasCode = detectCode(prompt);
|
|
46
51
|
const hasFileRef = FILE_REF.test(prompt);
|
|
47
52
|
const hasDestructive = DESTRUCTIVE.test(prompt);
|
|
53
|
+
const hasResearch = RESEARCH.test(corpus);
|
|
54
|
+
const isWriteRequest = WRITE_REQUEST.test(corpus);
|
|
55
|
+
const isSecuritySensitive = SENSITIVE.test(corpus);
|
|
48
56
|
const complexityScore = computeComplexityScore(prompt, {
|
|
49
57
|
hasCode,
|
|
50
58
|
hasFileRef,
|
|
51
59
|
});
|
|
52
60
|
const estOutputTokens = Math.round((promptChars / 4) * (1 + complexityScore * 2)) +
|
|
53
61
|
(hasCode ? 200 : 0);
|
|
54
|
-
const isReviewWithInlineDiff = REVIEW.test(
|
|
55
|
-
let recommendDispatch = estOutputTokens > 500 || (hasFileRef && complexityScore > 0.3);
|
|
56
|
-
if (isReviewWithInlineDiff && estOutputTokens <= 600) {
|
|
57
|
-
recommendDispatch = false;
|
|
58
|
-
}
|
|
59
|
-
if (hasDestructive && promptChars < 200) {
|
|
60
|
-
recommendDispatch = false;
|
|
61
|
-
}
|
|
62
|
-
const sensitive = SENSITIVE.test(`${description}\n${prompt}`);
|
|
63
|
-
const tier = complexityScore >= 0.6 || promptChars > 2000 || sensitive
|
|
64
|
-
? "premium"
|
|
65
|
-
: "cheap";
|
|
66
|
-
const reasoning = complexityScore >= 0.6 ? "high" : complexityScore >= 0.25 ? "low" : "none";
|
|
67
|
-
const promptSize = complexityScore >= 0.4 || (hasFileRef && estOutputTokens > 800)
|
|
68
|
-
? "full"
|
|
69
|
-
: "lite";
|
|
62
|
+
const isReviewWithInlineDiff = REVIEW.test(corpus) && DIFF_OR_CODE_BLOCK.test(prompt);
|
|
70
63
|
const signals = {
|
|
71
64
|
promptChars,
|
|
72
65
|
estOutputTokens,
|
|
73
66
|
hasCode,
|
|
74
67
|
hasFileRef,
|
|
75
68
|
hasDestructive,
|
|
69
|
+
hasResearch,
|
|
70
|
+
isWriteRequest,
|
|
71
|
+
isSecuritySensitive,
|
|
76
72
|
complexityScore,
|
|
77
73
|
isReviewWithInlineDiff,
|
|
78
74
|
};
|
|
75
|
+
const route = classifyRoute({ corpus, signals });
|
|
76
|
+
const recommendDispatch = route.target !== "inline" &&
|
|
77
|
+
route.target !== "refuse" &&
|
|
78
|
+
route.target !== "review-inline";
|
|
79
|
+
const tier = complexityScore >= 0.6 || promptChars > 2000 || route.target === "composer-review-claude"
|
|
80
|
+
? "premium"
|
|
81
|
+
: "cheap";
|
|
82
|
+
const reasoning = complexityScore >= 0.6 ? "high" : complexityScore >= 0.25 ? "low" : "none";
|
|
83
|
+
const promptSize = route.target === "task-researcher-coder" ||
|
|
84
|
+
complexityScore >= 0.4 ||
|
|
85
|
+
(hasFileRef && estOutputTokens > 800)
|
|
86
|
+
? "full"
|
|
87
|
+
: "lite";
|
|
79
88
|
return {
|
|
80
89
|
tier,
|
|
81
90
|
reasoning,
|
|
82
91
|
promptSize,
|
|
83
92
|
recommendDispatch,
|
|
84
|
-
|
|
93
|
+
route,
|
|
94
|
+
rationale: rationaleFor({ recommendDispatch, route, signals }),
|
|
85
95
|
signals,
|
|
86
96
|
};
|
|
87
97
|
}
|
|
@@ -145,21 +155,94 @@ function computeComplexityScore(prompt, signals) {
|
|
|
145
155
|
score += 0.2;
|
|
146
156
|
return roundScore(clamp(score, 0, 1));
|
|
147
157
|
}
|
|
148
|
-
function
|
|
149
|
-
const {
|
|
158
|
+
function classifyRoute(input) {
|
|
159
|
+
const { corpus, signals } = input;
|
|
160
|
+
const wantsPremiumReview = PREMIUM_REVIEW.test(corpus);
|
|
150
161
|
if (signals.hasDestructive && signals.promptChars < 200) {
|
|
151
|
-
return
|
|
162
|
+
return routePolicy({
|
|
163
|
+
taskClass: "refuse",
|
|
164
|
+
target: "refuse",
|
|
165
|
+
confidence: 0.95,
|
|
166
|
+
rationale: "Tiny destructive prompt should be refused inline, not delegated.",
|
|
167
|
+
});
|
|
152
168
|
}
|
|
153
169
|
if (signals.isReviewWithInlineDiff && signals.estOutputTokens <= 600) {
|
|
154
|
-
return
|
|
170
|
+
return routePolicy({
|
|
171
|
+
taskClass: "review-inline",
|
|
172
|
+
target: "review-inline",
|
|
173
|
+
confidence: 0.86,
|
|
174
|
+
rationale: "Self-contained small diff review is cheaper inline than a cold reviewer dispatch.",
|
|
175
|
+
});
|
|
155
176
|
}
|
|
156
|
-
if (
|
|
157
|
-
return
|
|
177
|
+
if (REVIEW.test(corpus) && (signals.isSecuritySensitive || signals.promptChars > 1200 || wantsPremiumReview)) {
|
|
178
|
+
return routePolicy({
|
|
179
|
+
taskClass: "review",
|
|
180
|
+
target: wantsPremiumReview ? "composer-review-claude" : "task-reviewer",
|
|
181
|
+
providerRole: wantsPremiumReview ? "reviewerClaude" : "reviewer",
|
|
182
|
+
confidence: wantsPremiumReview ? 0.85 : signals.isSecuritySensitive ? 0.8 : 0.78,
|
|
183
|
+
rationale: wantsPremiumReview
|
|
184
|
+
? "Explicit premium review request should use the Claude reviewer lane."
|
|
185
|
+
: signals.isSecuritySensitive
|
|
186
|
+
? "Security-sensitive review should start in the isolated reviewer lane before premium escalation."
|
|
187
|
+
: "Large review prompt should be isolated in the reviewer context.",
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
if (BUG_EXPLAIN.test(corpus) && !signals.hasFileRef && signals.estOutputTokens <= 700) {
|
|
191
|
+
return routePolicy({
|
|
192
|
+
taskClass: "bug-explain",
|
|
193
|
+
target: "inline",
|
|
194
|
+
confidence: 0.74,
|
|
195
|
+
rationale: "Small bug explanation can stay inline; no file mutation or broad context needed.",
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
if (signals.hasResearch && signals.isWriteRequest) {
|
|
199
|
+
return routePolicy({
|
|
200
|
+
taskClass: "research-first-code",
|
|
201
|
+
target: "task-researcher-coder",
|
|
202
|
+
providerRole: "researcher",
|
|
203
|
+
requiresReview: true,
|
|
204
|
+
confidence: 0.82,
|
|
205
|
+
rationale: "Research-first implementation needs a researcher brief before code execution.",
|
|
206
|
+
});
|
|
158
207
|
}
|
|
159
|
-
if (
|
|
160
|
-
return
|
|
208
|
+
if (signals.isWriteRequest && (signals.complexityScore >= 0.4 || signals.hasFileRef)) {
|
|
209
|
+
return routePolicy({
|
|
210
|
+
taskClass: signals.complexityScore >= 0.4 ? "cross-file-code" : "simple-code",
|
|
211
|
+
target: "composer-code-cli",
|
|
212
|
+
providerRole: "coderCli",
|
|
213
|
+
requiresReview: true,
|
|
214
|
+
confidence: signals.complexityScore >= 0.4 ? 0.8 : 0.68,
|
|
215
|
+
rationale: "Code mutation should be applied off the main session by the CLI executor.",
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
if (LOW_COMPLEXITY_TERMS.some((term) => term.test(corpus))) {
|
|
219
|
+
return routePolicy({
|
|
220
|
+
taskClass: "trivial",
|
|
221
|
+
target: "inline",
|
|
222
|
+
confidence: 0.7,
|
|
223
|
+
rationale: "Trivial non-mutating prompt is cheaper inline.",
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
return routePolicy({
|
|
227
|
+
taskClass: "unknown",
|
|
228
|
+
target: "inline",
|
|
229
|
+
confidence: 0.55,
|
|
230
|
+
rationale: "No strong route signal; default to inline to avoid unnecessary cold dispatch.",
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
function routePolicy(policy) {
|
|
234
|
+
return {
|
|
235
|
+
requiresReview: false,
|
|
236
|
+
...policy,
|
|
237
|
+
confidence: roundScore(clamp(policy.confidence, 0, 1)),
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
function rationaleFor(input) {
|
|
241
|
+
const { recommendDispatch, route, signals } = input;
|
|
242
|
+
if (recommendDispatch) {
|
|
243
|
+
return `Route ${route.target}: ${route.rationale} Estimated ${signals.estOutputTokens} tokens, complexity ${signals.complexityScore}.`;
|
|
161
244
|
}
|
|
162
|
-
return `
|
|
245
|
+
return `Route ${route.target}: ${route.rationale} Estimated ${signals.estOutputTokens} tokens, complexity ${signals.complexityScore}.`;
|
|
163
246
|
}
|
|
164
247
|
function nonEmptyItems(items) {
|
|
165
248
|
return items.filter((item) => item.trim().length > 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatchHint.js","sourceRoot":"","sources":["../../src/util/dispatchHint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"dispatchHint.js","sourceRoot":"","sources":["../../src/util/dispatchHint.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-composer",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Multi-agent orchestration MCP server. Claude orchestrates; GLM, Codex, and agy do the work.",
|
|
6
6
|
"bin": {
|
|
7
|
-
"agent-composer": "
|
|
7
|
+
"agent-composer": "dist/index.js"
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
10
|
"dist/",
|
|
@@ -4,19 +4,35 @@
|
|
|
4
4
|
|
|
5
5
|
## What it is
|
|
6
6
|
|
|
7
|
-
Composer-mastermind is a Claude Code plugin that turns the main session into a coordinator. The orchestrator never writes code
|
|
7
|
+
Composer-mastermind is a Claude Code plugin that turns the main session into a coordinator. The orchestrator never writes code or edits files directly; it may use Bash for inspection and verification. Work is dispatched through direct MCP tools and fallback subagents wired to the `agent-composer` MCP server:
|
|
8
8
|
|
|
9
9
|
| Subagent | Tool | Role |
|
|
10
10
|
|---|---|---|
|
|
11
11
|
| direct | `mcp__composer__composer_handoff_create` | Writes shared context packets for multi-provider work |
|
|
12
12
|
| direct | `mcp__composer__composer_code_cli` | Default coding path; CLI executor applies code directly from the MCP server root; configure as Codex or agy |
|
|
13
13
|
| direct | `mcp__composer__composer_code_chain` | GLM-authored fallback; server applies complete-file blocks deterministically |
|
|
14
|
+
| direct | `mcp__composer__composer_research` | Default docs lookup + web research lane via Codex CLI search in read-only mode |
|
|
15
|
+
| direct | `mcp__composer__composer_review` | Default code review lane via `agy` CLI; ask for repo-appropriate targeted checks |
|
|
16
|
+
| direct | `mcp__composer__composer_review_claude` | Premium Claude second-opinion review for explicit/risky cases |
|
|
14
17
|
| `coder` | `mcp__composer__composer_code` | Patch-only legacy path via GLM (Anthropic-compatible endpoint) |
|
|
15
|
-
| `researcher` | `mcp__composer__composer_research` |
|
|
16
|
-
| `reviewer` | `mcp__composer__composer_review` |
|
|
17
|
-
| `reviewer-claude` | `mcp__composer__composer_review_claude` |
|
|
18
|
+
| `researcher` | `mcp__composer__composer_research` | High-volume research wrapper when raw upstream output needs isolation |
|
|
19
|
+
| `reviewer` | `mcp__composer__composer_review` | High-volume review wrapper when raw upstream output needs isolation |
|
|
20
|
+
| `reviewer-claude` | `mcp__composer__composer_review_claude` | High-volume premium review wrapper when raw upstream output needs isolation |
|
|
18
21
|
|
|
19
|
-
The orchestrator's allowed-tool surface is enforced by `boundary_guard.sh` — `Edit`, `Update`, `Write`, `
|
|
22
|
+
The orchestrator's allowed-tool surface is enforced by `boundary_guard.sh` — `Edit`, `Update`, `Write`, `NotebookEdit`, and MCP write/edit/exec variants are denied; native Bash, composer MCP tools, `Read`, and `Glob` pass.
|
|
23
|
+
|
|
24
|
+
Soft-disable Composer hooks without editing Claude Code settings:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
COMPOSER_ENABLED=0 claude # one launch
|
|
28
|
+
touch ~/.claude/composer.disabled # global live toggle off
|
|
29
|
+
rm -f ~/.claude/composer.disabled # global live toggle on
|
|
30
|
+
touch .composer-disabled # project-local toggle off
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
The sentinel disables hooks immediately. To fully suppress skill autoload,
|
|
34
|
+
set `"composer-mastermind": "off"` in Claude Code `skillOverrides` and restart
|
|
35
|
+
CC.
|
|
20
36
|
|
|
21
37
|
## What's inside
|
|
22
38
|
|
|
@@ -48,7 +64,7 @@ composer-mastermind/
|
|
|
48
64
|
|
|
49
65
|
## Source of truth
|
|
50
66
|
|
|
51
|
-
This is the
|
|
67
|
+
This is the frozen release snapshot of the composer-monorepo's canonical assets. The development instance lives at the upstream repo's `.claude/` tree; releases re-sync via M0.5 (see `scripts/release-sync.mjs`).
|
|
52
68
|
|
|
53
69
|
## License
|
|
54
70
|
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: coder
|
|
3
|
-
description: Use when the orchestrator needs
|
|
3
|
+
description: Legacy patch-only fallback. Use only when the orchestrator explicitly needs GLM to return a diff/text through composer_code instead of using composer_code_cli or composer_code_chain.
|
|
4
4
|
tools: mcp__composer__composer_code, Read, Glob, Edit, Update, Write, Bash
|
|
5
5
|
model: haiku
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
You are the Composer **Coder** subagent.
|
|
8
|
+
You are the Composer **Coder** subagent. This is the legacy patch-only
|
|
9
|
+
fallback, not the default edit path. For normal file mutations the
|
|
10
|
+
orchestrator should call `composer_code_cli` or `composer_code_chain`
|
|
11
|
+
directly.
|
|
12
|
+
|
|
13
|
+
Your job is two-step:
|
|
9
14
|
1. Call `mcp__composer__composer_code` to get the code/patch from GLM.
|
|
10
15
|
2. Apply that patch to disk using `Edit` / `Update` or `Write`.
|
|
11
16
|
|
|
@@ -14,6 +19,9 @@ You are the Composer **Coder** subagent. Your job is two-step:
|
|
|
14
19
|
1. Receive the orchestrator's `{ prompt, context? }` brief.
|
|
15
20
|
2. Use `Read` / `Glob` to pin exact file paths, surrounding code, and imports — feed these into the `prompt` / `context` arguments. GLM cannot see the repo itself.
|
|
16
21
|
3. Call `mcp__composer__composer_code` ONCE with the assembled brief.
|
|
22
|
+
Ask GLM for a minimal unified diff by default. Do not ask for complete
|
|
23
|
+
final file contents unless the task creates a new file or replaces a whole
|
|
24
|
+
file.
|
|
17
25
|
4. Parse GLM's response:
|
|
18
26
|
- If GLM returns a unified diff → apply via `Edit` / `Update` (or multiple calls).
|
|
19
27
|
- If GLM returns full file content → use `Write`.
|
|
@@ -23,10 +31,12 @@ You are the Composer **Coder** subagent. Your job is two-step:
|
|
|
23
31
|
# Hard rules
|
|
24
32
|
|
|
25
33
|
- DO call `composer_code` exactly ONCE per task. If GLM's output is malformed, fail to the orchestrator with a short error.
|
|
34
|
+
- DO request a minimal unified diff for targeted edits. Whole-file output is
|
|
35
|
+
slower and should stay in the `composer_code_chain` lane.
|
|
26
36
|
- DO apply patches via Edit/Update/Write — that's why those tools are in your list.
|
|
27
|
-
- DO NOT re-Read after Edit/Update/Write — trust the tool's return value. PostToolUse hooks run lint
|
|
37
|
+
- DO NOT re-Read after Edit/Update/Write — trust the tool's return value. PostToolUse hooks run targeted lint/check gates when available. If a real bug shipped, `composer_review` catches it on the next pass.
|
|
28
38
|
- DO NOT write code yourself or modify GLM's output beyond mechanical patch application.
|
|
29
39
|
- DO NOT call composer_code more than once — if it fails, return the error.
|
|
30
|
-
- DO use `Bash` for filesystem setup and verification: `mkdir -p` before a Write, `ls`/`cat` to confirm a patch actually landed on disk, and
|
|
40
|
+
- DO use `Bash` for filesystem setup and verification: `mkdir -p` before a Write, `ls`/`cat` to confirm a patch actually landed on disk, and repo-appropriate targeted checks for changed files. This prevents the "wrote files" / "cannot access filesystem" contradiction.
|
|
31
41
|
- DO NOT hand-author code edits through Bash (no `sed`/`awk`/`perl` to rewrite source). Apply GLM's actual code via `Edit`/`Update`/`Write` only — Bash is for setup, inspection, and verification, never for authoring.
|
|
32
42
|
- DO NOT critique the returned code — that is the reviewer's job.
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: researcher
|
|
3
|
-
description:
|
|
3
|
+
description: High-volume research wrapper fallback. Use only when composer_research output is expected to be large enough to need subagent isolation; otherwise call composer_research directly.
|
|
4
4
|
tools: mcp__composer__composer_research, Read, Glob
|
|
5
5
|
model: haiku
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
You are the Composer **Researcher** subagent.
|
|
9
|
-
the
|
|
10
|
-
|
|
8
|
+
You are the Composer **Researcher** subagent. This is a high-volume wrapper
|
|
9
|
+
fallback, not the default research path. Your only job is to call the
|
|
10
|
+
`composer_research` MCP tool with the user's question and return its output
|
|
11
|
+
to the orchestrator.
|
|
11
12
|
|
|
12
13
|
# What you DO
|
|
13
14
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: reviewer-claude
|
|
3
|
-
description: Use when the user explicitly asks for Claude code review, or when
|
|
3
|
+
description: Premium review wrapper fallback. Use only when the user explicitly asks for Claude code review, or when high-risk/security-sensitive output is expected to need subagent isolation; otherwise call composer_review_claude directly.
|
|
4
4
|
tools: mcp__composer__composer_review_claude, Read, Glob
|
|
5
5
|
model: haiku
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
You are the Composer **Claude Reviewer** subagent.
|
|
9
|
-
the
|
|
10
|
-
findings.
|
|
8
|
+
You are the Composer **Claude Reviewer** subagent. This is a premium wrapper
|
|
9
|
+
fallback, not the default review path. Your only job is to call the
|
|
10
|
+
`composer_review_claude` MCP tool with `{ prompt, diff }` and return its findings.
|
|
11
11
|
|
|
12
12
|
# What you DO
|
|
13
13
|
|
|
@@ -16,15 +16,16 @@ findings.
|
|
|
16
16
|
- Use `Read` / `Glob` to load surrounding files when the diff alone is
|
|
17
17
|
insufficient context for the Claude reviewer provider.
|
|
18
18
|
- In the `prompt` to `composer_review_claude`, you MUST include the changed
|
|
19
|
-
file content or diff inline, and tell it explicitly to run
|
|
20
|
-
|
|
19
|
+
file content or diff inline, and tell it explicitly to run repo-appropriate
|
|
20
|
+
targeted checks for the changed files in the current directory and report
|
|
21
|
+
pass/fail with concise failure output.
|
|
21
22
|
- Call `mcp__composer__composer_review_claude` once.
|
|
22
23
|
- Return the tool output verbatim.
|
|
23
24
|
|
|
24
25
|
# What you DO NOT do
|
|
25
26
|
|
|
26
|
-
- DO NOT replace the default `
|
|
27
|
-
user requested Claude or the orchestrator asked for premium escalation.
|
|
27
|
+
- DO NOT replace the default `composer_review` gate for routine diffs unless
|
|
28
|
+
the user requested Claude or the orchestrator asked for premium escalation.
|
|
28
29
|
- DO NOT propose fixes; only flag issues.
|
|
29
30
|
- DO NOT edit or write files yourself, and do NOT run tests in YOUR context.
|
|
30
31
|
- DO NOT call any tool other than `composer_review_claude`, `Read`, or `Glob`.
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: reviewer
|
|
3
|
-
description:
|
|
3
|
+
description: High-volume review wrapper fallback. Use only when composer_review output is expected to be large enough to need subagent isolation; otherwise call composer_review directly.
|
|
4
4
|
tools: mcp__composer__composer_review, Read, Glob
|
|
5
5
|
model: haiku
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
You are the Composer **Reviewer** subagent.
|
|
9
|
-
the
|
|
10
|
-
findings.
|
|
8
|
+
You are the Composer **Reviewer** subagent. This is a high-volume wrapper
|
|
9
|
+
fallback, not the default review path. Your only job is to call the
|
|
10
|
+
`composer_review` MCP tool with `{ prompt, diff }` and return its findings.
|
|
11
11
|
|
|
12
12
|
# What you DO
|
|
13
13
|
|
|
@@ -18,10 +18,10 @@ findings.
|
|
|
18
18
|
- In the `prompt` to `composer_review`, you MUST (a) include the changed
|
|
19
19
|
file CONTENT or diff inline — never just a path (agy will otherwise search
|
|
20
20
|
the filesystem and time out), and (b) tell it explicitly to run
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
tests/types exist, say so. (Real repo only — a bare worktree
|
|
24
|
-
|
|
21
|
+
repo-appropriate targeted checks for the changed files **in the current
|
|
22
|
+
directory** and report pass/fail. Include concise failure output only; if no
|
|
23
|
+
tests/types exist, say so. (Real repo only — a bare worktree may lack
|
|
24
|
+
dependencies; tests may not run there.)
|
|
25
25
|
- Call `mcp__composer__composer_review` once.
|
|
26
26
|
- Return the tool output verbatim (findings, severity, line refs, test results).
|
|
27
27
|
|
|
@@ -9,6 +9,29 @@
|
|
|
9
9
|
|
|
10
10
|
set -u
|
|
11
11
|
|
|
12
|
+
composer_disabled() {
|
|
13
|
+
case "${COMPOSER_ENABLED:-}" in
|
|
14
|
+
0|false|FALSE|off|OFF|no|NO) return 0 ;;
|
|
15
|
+
esac
|
|
16
|
+
case "${COMPOSER_DISABLED:-}" in
|
|
17
|
+
1|true|TRUE|on|ON|yes|YES) return 0 ;;
|
|
18
|
+
esac
|
|
19
|
+
if [[ -n "${COMPOSER_DISABLED_FILE:-}" && -e "$COMPOSER_DISABLED_FILE" ]]; then
|
|
20
|
+
return 0
|
|
21
|
+
fi
|
|
22
|
+
if [[ -n "${CLAUDE_PROJECT_DIR:-}" && -e "$CLAUDE_PROJECT_DIR/.composer-disabled" ]]; then
|
|
23
|
+
return 0
|
|
24
|
+
fi
|
|
25
|
+
if [[ -n "${HOME:-}" && -e "$HOME/.claude/composer.disabled" ]]; then
|
|
26
|
+
return 0
|
|
27
|
+
fi
|
|
28
|
+
return 1
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if composer_disabled; then
|
|
32
|
+
exit 0
|
|
33
|
+
fi
|
|
34
|
+
|
|
12
35
|
emit_deny() {
|
|
13
36
|
local reason="$1"
|
|
14
37
|
# Claude Code v2.1.150+ requires the decision wrapped in hookSpecificOutput.
|
|
@@ -78,12 +101,16 @@ if [[ "$TRANSCRIPT" == */subagents/* ]] \
|
|
|
78
101
|
exit 0
|
|
79
102
|
fi
|
|
80
103
|
|
|
81
|
-
# 4. Block list — native dangerous tools + MCP-prefixed variants.
|
|
104
|
+
# 4. Block list — native dangerous file-mutating tools + MCP-prefixed variants.
|
|
105
|
+
# Native Bash is allowed on the main thread for inspection and verification;
|
|
106
|
+
# the orchestrator skill still forbids using Bash to author code or perform
|
|
107
|
+
# destructive state changes. MCP exec/bash wrappers stay blocked because they
|
|
108
|
+
# bypass Claude Code's native Bash permissions surface.
|
|
82
109
|
case "$TOOL" in
|
|
83
|
-
|
|
110
|
+
Edit|Update|Write|NotebookEdit \
|
|
84
111
|
| mcp__*__write_file | mcp__*__edit_file | mcp__*__bash \
|
|
85
112
|
| mcp__*__write | mcp__*__edit | mcp__*__exec)
|
|
86
|
-
emit_deny "DENY (main thread): route Edit/Update/Write via Task(subagent_type=\"coder\").
|
|
113
|
+
emit_deny "DENY (main thread): route Edit/Update/Write via Task(subagent_type=\"coder\"). Native Bash is allowed for inspection and verification."
|
|
87
114
|
;;
|
|
88
115
|
esac
|
|
89
116
|
|
|
@@ -8,6 +8,29 @@
|
|
|
8
8
|
|
|
9
9
|
set -u
|
|
10
10
|
|
|
11
|
+
composer_disabled() {
|
|
12
|
+
case "${COMPOSER_ENABLED:-}" in
|
|
13
|
+
0|false|FALSE|off|OFF|no|NO) return 0 ;;
|
|
14
|
+
esac
|
|
15
|
+
case "${COMPOSER_DISABLED:-}" in
|
|
16
|
+
1|true|TRUE|on|ON|yes|YES) return 0 ;;
|
|
17
|
+
esac
|
|
18
|
+
if [[ -n "${COMPOSER_DISABLED_FILE:-}" && -e "$COMPOSER_DISABLED_FILE" ]]; then
|
|
19
|
+
return 0
|
|
20
|
+
fi
|
|
21
|
+
if [[ -n "${CLAUDE_PROJECT_DIR:-}" && -e "$CLAUDE_PROJECT_DIR/.composer-disabled" ]]; then
|
|
22
|
+
return 0
|
|
23
|
+
fi
|
|
24
|
+
if [[ -n "${HOME:-}" && -e "$HOME/.claude/composer.disabled" ]]; then
|
|
25
|
+
return 0
|
|
26
|
+
fi
|
|
27
|
+
return 1
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if composer_disabled; then
|
|
31
|
+
exit 0
|
|
32
|
+
fi
|
|
33
|
+
|
|
11
34
|
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)}"
|
|
12
35
|
LEARN_DIR="$PROJECT_DIR/.claude/learnings"
|
|
13
36
|
MONTH="$(date +%Y-%m)"
|
|
@@ -1,6 +1,30 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# PostToolUse hook: auto-lint after Edit/Update/Write/NotebookEdit. Fail-soft.
|
|
3
3
|
set -u
|
|
4
|
+
|
|
5
|
+
composer_disabled() {
|
|
6
|
+
case "${COMPOSER_ENABLED:-}" in
|
|
7
|
+
0|false|FALSE|off|OFF|no|NO) return 0 ;;
|
|
8
|
+
esac
|
|
9
|
+
case "${COMPOSER_DISABLED:-}" in
|
|
10
|
+
1|true|TRUE|on|ON|yes|YES) return 0 ;;
|
|
11
|
+
esac
|
|
12
|
+
if [[ -n "${COMPOSER_DISABLED_FILE:-}" && -e "$COMPOSER_DISABLED_FILE" ]]; then
|
|
13
|
+
return 0
|
|
14
|
+
fi
|
|
15
|
+
if [[ -n "${CLAUDE_PROJECT_DIR:-}" && -e "$CLAUDE_PROJECT_DIR/.composer-disabled" ]]; then
|
|
16
|
+
return 0
|
|
17
|
+
fi
|
|
18
|
+
if [[ -n "${HOME:-}" && -e "$HOME/.claude/composer.disabled" ]]; then
|
|
19
|
+
return 0
|
|
20
|
+
fi
|
|
21
|
+
return 1
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if composer_disabled; then
|
|
25
|
+
exit 0
|
|
26
|
+
fi
|
|
27
|
+
|
|
4
28
|
command -v jq >/dev/null 2>&1 || exit 0
|
|
5
29
|
INPUT="$(cat || true)"
|
|
6
30
|
[[ -z "$INPUT" ]] && exit 0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "composer-mastermind",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Multi-agent orchestrator: Claude as brain, GLM/Codex/agy as executors. Dispatches code/research/review work to subagents wired through the @composer-mcp/server MCP server.",
|
|
5
5
|
"claudeCodeVersion": ">=4.6",
|
|
6
6
|
"requires": [
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: composer-mastermind
|
|
3
|
-
description: MUST USE for any code change request — edit, modify, add, remove, fix, refactor, implement, write, change, update files.
|
|
3
|
+
description: MUST USE for any code change request — edit, modify, add, remove, fix, refactor, implement, write, change, update files. For file mutations, call composer_code_cli directly by default, or composer_code_chain for GLM complete-file fallback. For research/review, call composer_research/composer_review directly unless raw upstream output needs subagent isolation. Main Claude does NOT call Edit/Update/Write/NotebookEdit directly; the boundary_guard hook will deny them. Main Claude may use Bash only for inspection and verification.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Composer Mastermind
|
|
7
7
|
|
|
8
8
|
You are the **orchestrator**. Your sole job is memory, planning,
|
|
9
|
-
delegation, and integration.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
output.
|
|
9
|
+
delegation, and integration. Composer MCP tools and fallback subagents
|
|
10
|
+
execute. Your context window is the most expensive resource in the entire
|
|
11
|
+
system — spend it on planning, not on raw worker output.
|
|
13
12
|
|
|
14
13
|
> **Note:** This is an orchestration *pattern*, not an external SDK or
|
|
15
14
|
> published framework. There is no library to install, no package to
|
|
@@ -18,12 +17,19 @@ output.
|
|
|
18
17
|
|
|
19
18
|
# Hard prohibitions
|
|
20
19
|
|
|
21
|
-
- **DO NOT** use `Edit`, `Update`, `Write`,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
- **DO NOT** use `Edit`, `Update`, `Write`, or `NotebookEdit`. For file
|
|
21
|
+
mutations, call `composer_code_cli` directly by default or
|
|
22
|
+
`composer_code_chain` when GLM complete-file authoring is required.
|
|
23
|
+
- **DO** use `Bash` for bounded inspection and verification: `git status`,
|
|
24
|
+
`git diff`, `ls`, `pwd`, `npm test`, and targeted type/test commands.
|
|
25
|
+
**DO NOT** use Bash to author code, rewrite files, install dependencies,
|
|
26
|
+
remove files, push, deploy, or mutate state outside the requested workflow.
|
|
27
|
+
- **DO NOT** call legacy `composer_code` directly from the main session.
|
|
28
|
+
Use `composer_code_cli` or `composer_code_chain` for file mutations.
|
|
29
|
+
`composer_research`, `composer_review`, and `composer_review_claude`
|
|
30
|
+
may be called directly because their providers already run off-CC and
|
|
31
|
+
return bounded summaries. Use the matching subagent only when raw
|
|
32
|
+
upstream output is expected to be large enough to need isolation.
|
|
27
33
|
- **DO** call `composer_handoff_create` directly before multi-provider
|
|
28
34
|
or multi-worker work. It writes a compact shared packet under
|
|
29
35
|
`.composer/handoffs/`; pass the returned `handoffPath` into Codex,
|
|
@@ -36,37 +42,53 @@ output.
|
|
|
36
42
|
**Default to `composer_code_cli`** for coding; the configured CLI executor
|
|
37
43
|
is Codex on this machine. Use `composer_code_chain` when you explicitly
|
|
38
44
|
want GLM to author complete files and the server to apply them.
|
|
39
|
-
- **NEVER** write code in the main session — not even a one-liner
|
|
40
|
-
|
|
41
|
-
-
|
|
42
|
-
|
|
45
|
+
- **NEVER** write code in the main session — not even a one-liner or a Bash
|
|
46
|
+
heredoc / `sed` / `awk` rewrite. Use `composer_code_cli` / `composer_code_chain`
|
|
47
|
+
so the executor writes off-CC; use `coder` only for rare patch-only fallback.
|
|
48
|
+
- **NEVER** speculate when a fact is needed. Use `composer_research`.
|
|
49
|
+
- **NEVER** integrate a candidate patch without review. Use
|
|
50
|
+
`composer_review` first.
|
|
43
51
|
|
|
44
|
-
#
|
|
52
|
+
# Routing rules (hard)
|
|
45
53
|
|
|
46
|
-
| If the user (or your plan) needs… |
|
|
54
|
+
| If the user (or your plan) needs… | Route |
|
|
47
55
|
|---|---|
|
|
48
|
-
| Information, docs, web search, current API shape, "what's the X best practice" | `researcher`
|
|
56
|
+
| Information, docs, web search, current API shape, "what's the X best practice" | `composer_research` directly; use `researcher` only for high-volume isolation |
|
|
49
57
|
| Shared context for complex / multi-provider work | `composer_handoff_create` directly; pass `handoffPath` to later tools |
|
|
50
58
|
| Writing / editing / refactoring code (DEFAULT) | **`composer_code_cli`** directly (Codex generates AND applies off-CC), then review |
|
|
51
59
|
| GLM-authored complete-file fallback | `composer_code_chain` directly (GLM authors off-CC → server applies off-CC → summary), then review |
|
|
52
|
-
| Generate a patch WITHOUT applying (rare) | `coder` subagent (`composer_code` →
|
|
53
|
-
| Reviewing a candidate patch / diff / implementation | `reviewer`
|
|
54
|
-
| Claude review explicitly requested, or high-risk/security-sensitive second opinion | `
|
|
60
|
+
| Generate a patch WITHOUT applying (rare) | `coder` subagent (`composer_code` → `coder` applies) |
|
|
61
|
+
| Reviewing a candidate patch / diff / implementation | `composer_review` directly; use `reviewer` only for high-volume isolation |
|
|
62
|
+
| Claude review explicitly requested, or high-risk/security-sensitive second opinion | `composer_review_claude` directly after the default review gate |
|
|
55
63
|
| Anything that mutates state outside the conversation (push, deploy, install) | Escalate to the user. Do not act. |
|
|
56
64
|
|
|
65
|
+
**Class-based route policy:** route by task class, not by a blanket
|
|
66
|
+
"always dispatch" rule.
|
|
67
|
+
|
|
68
|
+
| Task class | Route |
|
|
69
|
+
|---|---|
|
|
70
|
+
| Refusal / destructive request / secret hardcode / unsafe config | Inline refusal; do not dispatch |
|
|
71
|
+
| Tiny explanation or self-contained bug explanation | Inline answer |
|
|
72
|
+
| Small inline diff review | Inline review unless security-sensitive |
|
|
73
|
+
| Security-sensitive review | `composer_review`, then `composer_review_claude` if risk remains or user asks |
|
|
74
|
+
| Research-first implementation | `composer_research` brief → `composer_code_cli` → `composer_review` |
|
|
75
|
+
| Any file mutation | `composer_code_cli` by default; never Edit/Write in main session |
|
|
76
|
+
| GLM fallback requested or Codex unsuitable | `composer_code_chain` → `composer_review` |
|
|
77
|
+
|
|
57
78
|
For multi-step requests, run in order: `composer_handoff_create` →
|
|
58
|
-
`
|
|
59
|
-
|
|
60
|
-
|
|
79
|
+
`composer_research` if current external context is needed → plan →
|
|
80
|
+
`composer_code_cli` by default, or `composer_code_chain` (apply, passing
|
|
81
|
+
`handoffPath`) → `composer_review` on the `git diff` with the same
|
|
82
|
+
`handoffPath` → integrate.
|
|
61
83
|
**Code applied but not reviewed is NOT done** — always gate a code change
|
|
62
|
-
through `
|
|
84
|
+
through `composer_review` before reporting success.
|
|
63
85
|
Cross-model review: **Codex/GLM writes → agy reviews** by default (a different
|
|
64
86
|
model catches more). When the user explicitly asks for Claude review, or the
|
|
65
|
-
diff is high-risk/security-sensitive, run `
|
|
66
|
-
to `
|
|
67
|
-
instruct the reviewer to
|
|
68
|
-
changed files and report pass/fail
|
|
69
|
-
Reviewers execute
|
|
87
|
+
diff is high-risk/security-sensitive, run `composer_review` first and then
|
|
88
|
+
escalate to `composer_review_claude` for a premium second opinion. The review
|
|
89
|
+
`prompt` MUST instruct the reviewer to run repo-appropriate targeted checks on
|
|
90
|
+
the changed files and report pass/fail — an LLM read alone does not gate quality.
|
|
91
|
+
Reviewers execute checks off-CC in the repo; if no tests exist, they say so. Each
|
|
70
92
|
call returns only a summary.
|
|
71
93
|
|
|
72
94
|
**Dispatch calibration:** dispatch costs ~1.5k cache tokens for
|