agent-composer 0.1.14 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -15
- package/composer.config.schema.json +24 -1
- package/dist/cli/dispatch-hint.d.ts +2 -0
- package/dist/cli/dispatch-hint.js +63 -0
- package/dist/cli/dispatch-hint.js.map +1 -0
- package/dist/cli/init.js +41 -2
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/install-plugin.d.ts +3 -2
- package/dist/cli/install-plugin.js +19 -7
- package/dist/cli/install-plugin.js.map +1 -1
- package/dist/config/schema.d.ts +44 -0
- package/dist/config/schema.js +12 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/providers/CLIProvider.d.ts +16 -0
- package/dist/providers/CLIProvider.js +117 -3
- package/dist/providers/CLIProvider.js.map +1 -1
- package/dist/providers/IProvider.d.ts +1 -0
- package/dist/registry.js +4 -0
- package/dist/registry.js.map +1 -1
- package/dist/server.d.ts +6 -1
- package/dist/server.js +129 -15
- package/dist/server.js.map +1 -1
- package/dist/util/dispatchHint.d.ts +35 -0
- package/dist/util/dispatchHint.js +179 -0
- package/dist/util/dispatchHint.js.map +1 -0
- package/dist/util/handoff.d.ts +58 -0
- package/dist/util/handoff.js +107 -0
- package/dist/util/handoff.js.map +1 -0
- package/dist/util/projectToolResult.d.ts +13 -0
- package/dist/util/projectToolResult.js +169 -0
- package/dist/util/projectToolResult.js.map +1 -0
- package/package.json +3 -2
- package/plugin/composer-mastermind/README.md +11 -6
- package/plugin/composer-mastermind/agents/coder.md +8 -7
- package/plugin/composer-mastermind/agents/reviewer-claude.md +31 -0
- package/plugin/composer-mastermind/hooks/boundary_guard.sh +7 -4
- package/plugin/composer-mastermind/hooks/lint-on-save.sh +1 -1
- package/plugin/composer-mastermind/plugin.json +3 -2
- package/plugin/composer-mastermind/skills/composer-mastermind/SKILL.md +30 -18
|
@@ -4,6 +4,7 @@ export interface ExecFileResult {
|
|
|
4
4
|
stderr: string;
|
|
5
5
|
}
|
|
6
6
|
export type ExecFileFn = (file: string, args: ReadonlyArray<string>, options: {
|
|
7
|
+
cwd?: string;
|
|
7
8
|
maxBuffer?: number;
|
|
8
9
|
timeout?: number;
|
|
9
10
|
}) => Promise<ExecFileResult>;
|
|
@@ -12,10 +13,13 @@ export interface CLIProviderOptions {
|
|
|
12
13
|
cli: ReadonlyArray<string>;
|
|
13
14
|
/** Optional human-readable model label; defaults to the binary name. */
|
|
14
15
|
model?: string;
|
|
16
|
+
cwd?: string;
|
|
15
17
|
timeoutMs?: number;
|
|
16
18
|
maxBuffer?: number;
|
|
17
19
|
/** Retry attempts on transient failure (timeout / empty / rate-limit). Default 2. */
|
|
18
20
|
retries?: number;
|
|
21
|
+
/** Project (bound) returned text larger than this many chars. Default 16000. Set 0/Infinity-ish via large number to disable. */
|
|
22
|
+
maxResultChars?: number;
|
|
19
23
|
/** Override execFile for tests. */
|
|
20
24
|
execFn?: ExecFileFn;
|
|
21
25
|
}
|
|
@@ -24,12 +28,24 @@ export declare class CLIProvider implements IProvider {
|
|
|
24
28
|
readonly modelLabel: string;
|
|
25
29
|
private readonly argv;
|
|
26
30
|
private readonly exec;
|
|
31
|
+
private readonly cwd?;
|
|
27
32
|
private readonly timeoutMs;
|
|
28
33
|
private readonly maxBuffer;
|
|
29
34
|
private readonly retries;
|
|
35
|
+
private readonly maxResultChars;
|
|
30
36
|
constructor(opts: CLIProviderOptions);
|
|
31
37
|
healthCheck(): Promise<boolean>;
|
|
32
38
|
execute(input: IProviderExecuteInput): Promise<IProviderExecuteOutput>;
|
|
33
39
|
/** Output signalling a retryable transient failure (timeout / rate-limit / empty). */
|
|
34
40
|
static isTransientFailure(stdout: string): boolean;
|
|
41
|
+
static prepareArgs(bin: string, staticArgs: ReadonlyArray<string>, prompt: string): {
|
|
42
|
+
args: string[];
|
|
43
|
+
finalMessagePath?: string;
|
|
44
|
+
cleanup: () => void;
|
|
45
|
+
};
|
|
46
|
+
private static isCodexExec;
|
|
47
|
+
private static assertSafeCli;
|
|
48
|
+
private static codexExecIndex;
|
|
49
|
+
private static findFlagValue;
|
|
50
|
+
private static readFinalMessage;
|
|
35
51
|
}
|
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
// is appended as the LAST positional argument so quoting/backticks in the
|
|
6
6
|
// prompt cannot break out into the shell.
|
|
7
7
|
import { spawn } from "node:child_process";
|
|
8
|
+
import fs from "node:fs";
|
|
9
|
+
import os from "node:os";
|
|
10
|
+
import path from "node:path";
|
|
11
|
+
import { projectToolResult } from "../util/projectToolResult.js";
|
|
8
12
|
// Default executor uses spawn (not execFile) so we can explicitly ignore
|
|
9
13
|
// stdin. Some CLIs (notably `agy --print`) hang forever waiting on stdin
|
|
10
14
|
// when launched from a non-TTY parent if stdin is inherited.
|
|
@@ -12,6 +16,7 @@ const DEFAULT_EXEC = (file, args, options) => new Promise((resolve, reject) => {
|
|
|
12
16
|
const maxBuffer = options.maxBuffer ?? 32 * 1024 * 1024;
|
|
13
17
|
const timeoutMs = options.timeout;
|
|
14
18
|
const child = spawn(file, [...args], {
|
|
19
|
+
cwd: options.cwd,
|
|
15
20
|
stdio: ["ignore", "pipe", "pipe"],
|
|
16
21
|
});
|
|
17
22
|
let stdout = "";
|
|
@@ -65,25 +70,31 @@ const DEFAULT_EXEC = (file, args, options) => new Promise((resolve, reject) => {
|
|
|
65
70
|
const DEFAULT_TIMEOUT_MS = 5 * 60_000; // 5 min — matches tdd_plan.md §6 per-experiment budget cap.
|
|
66
71
|
const DEFAULT_MAX_BUFFER = 32 * 1024 * 1024; // 32 MB.
|
|
67
72
|
const DEFAULT_RETRIES = 2; // agy/CLI agents occasionally "time out waiting for response" — retry transient failures.
|
|
73
|
+
const DEFAULT_MAX_RESULT_CHARS = 16_000;
|
|
68
74
|
export class CLIProvider {
|
|
69
75
|
id = "cli";
|
|
70
76
|
modelLabel;
|
|
71
77
|
argv;
|
|
72
78
|
exec;
|
|
79
|
+
cwd;
|
|
73
80
|
timeoutMs;
|
|
74
81
|
maxBuffer;
|
|
75
82
|
retries;
|
|
83
|
+
maxResultChars;
|
|
76
84
|
constructor(opts) {
|
|
77
85
|
if (!opts.cli || opts.cli.length === 0) {
|
|
78
86
|
throw new Error("CLIProvider: cli argv must contain at least 1 element (binary path)");
|
|
79
87
|
}
|
|
88
|
+
CLIProvider.assertSafeCli(opts.cli);
|
|
80
89
|
this.argv = opts.cli;
|
|
81
90
|
const bin = opts.cli[0] ?? "cli";
|
|
82
91
|
this.modelLabel = opts.model ?? bin;
|
|
83
92
|
this.exec = opts.execFn ?? DEFAULT_EXEC;
|
|
93
|
+
this.cwd = opts.cwd;
|
|
84
94
|
this.timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
85
95
|
this.maxBuffer = opts.maxBuffer ?? DEFAULT_MAX_BUFFER;
|
|
86
96
|
this.retries = opts.retries ?? DEFAULT_RETRIES;
|
|
97
|
+
this.maxResultChars = opts.maxResultChars ?? DEFAULT_MAX_RESULT_CHARS;
|
|
87
98
|
}
|
|
88
99
|
async healthCheck() {
|
|
89
100
|
// Spawning the binary just to probe would block. Caller is expected
|
|
@@ -98,23 +109,34 @@ export class CLIProvider {
|
|
|
98
109
|
if (!bin) {
|
|
99
110
|
throw new Error("CLIProvider: argv missing binary");
|
|
100
111
|
}
|
|
101
|
-
const
|
|
112
|
+
const cwd = input.cwd ?? this.cwd;
|
|
102
113
|
let lastError;
|
|
103
114
|
for (let attempt = 0; attempt <= this.retries; attempt++) {
|
|
115
|
+
const execution = CLIProvider.prepareArgs(bin, staticArgs, fullPrompt);
|
|
104
116
|
try {
|
|
105
|
-
const { stdout } = await this.exec(bin, args, {
|
|
117
|
+
const { stdout } = await this.exec(bin, execution.args, {
|
|
118
|
+
cwd,
|
|
106
119
|
maxBuffer: this.maxBuffer,
|
|
107
120
|
timeout: this.timeoutMs,
|
|
108
121
|
});
|
|
122
|
+
const text = execution.finalMessagePath
|
|
123
|
+
? CLIProvider.readFinalMessage(execution.finalMessagePath) ?? stdout
|
|
124
|
+
: stdout;
|
|
109
125
|
if (CLIProvider.isTransientFailure(stdout)) {
|
|
110
126
|
lastError = new Error(`CLIProvider: '${bin}' transient failure on attempt ${attempt + 1}: ${stdout.trim().slice(0, 200)}`);
|
|
111
127
|
continue;
|
|
112
128
|
}
|
|
113
|
-
|
|
129
|
+
const bounded = this.maxResultChars > 0
|
|
130
|
+
? projectToolResult(text, { maxChars: this.maxResultChars }).text
|
|
131
|
+
: text;
|
|
132
|
+
return { text: bounded };
|
|
114
133
|
}
|
|
115
134
|
catch (err) {
|
|
116
135
|
lastError = err instanceof Error ? err : new Error(String(err));
|
|
117
136
|
}
|
|
137
|
+
finally {
|
|
138
|
+
execution.cleanup();
|
|
139
|
+
}
|
|
118
140
|
}
|
|
119
141
|
throw (lastError ??
|
|
120
142
|
new Error(`CLIProvider: '${bin}' failed after ${this.retries + 1} attempts`));
|
|
@@ -123,5 +145,97 @@ export class CLIProvider {
|
|
|
123
145
|
static isTransientFailure(stdout) {
|
|
124
146
|
return /timed out waiting for response|rate limit|temporarily unavailable|ECONNRESET|overloaded|503\b/i.test(stdout);
|
|
125
147
|
}
|
|
148
|
+
static prepareArgs(bin, staticArgs, prompt) {
|
|
149
|
+
const args = [...staticArgs];
|
|
150
|
+
let tempDir;
|
|
151
|
+
let finalMessagePath = CLIProvider.findFlagValue(args, "--output-last-message");
|
|
152
|
+
if (CLIProvider.isCodexExec(bin, args) && !finalMessagePath) {
|
|
153
|
+
tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "composer-codex-"));
|
|
154
|
+
finalMessagePath = path.join(tempDir, "last-message.txt");
|
|
155
|
+
args.push("--output-last-message", finalMessagePath);
|
|
156
|
+
}
|
|
157
|
+
args.push(prompt);
|
|
158
|
+
return {
|
|
159
|
+
args,
|
|
160
|
+
finalMessagePath,
|
|
161
|
+
cleanup: () => {
|
|
162
|
+
if (tempDir)
|
|
163
|
+
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
static isCodexExec(bin, args) {
|
|
168
|
+
return path.basename(bin) === "codex" && CLIProvider.codexExecIndex(args) >= 0;
|
|
169
|
+
}
|
|
170
|
+
static assertSafeCli(argv) {
|
|
171
|
+
const [bin, ...args] = argv;
|
|
172
|
+
if (!bin || !CLIProvider.isCodexExec(bin, args))
|
|
173
|
+
return;
|
|
174
|
+
if (process.env["COMPOSER_ALLOW_DANGEROUS_CODEX"] === "1")
|
|
175
|
+
return;
|
|
176
|
+
const sandboxIndex = args.indexOf("--sandbox");
|
|
177
|
+
const sandbox = sandboxIndex >= 0 ? args[sandboxIndex + 1] : undefined;
|
|
178
|
+
if (args.includes("--dangerously-bypass-approvals-and-sandbox") ||
|
|
179
|
+
sandbox === "danger-full-access") {
|
|
180
|
+
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
|
+
}
|
|
182
|
+
}
|
|
183
|
+
static codexExecIndex(args) {
|
|
184
|
+
const flagsWithValues = new Set([
|
|
185
|
+
"-a",
|
|
186
|
+
"--add-dir",
|
|
187
|
+
"--ask-for-approval",
|
|
188
|
+
"-c",
|
|
189
|
+
"--cd",
|
|
190
|
+
"--color",
|
|
191
|
+
"--config",
|
|
192
|
+
"--disable",
|
|
193
|
+
"--enable",
|
|
194
|
+
"-i",
|
|
195
|
+
"--image",
|
|
196
|
+
"--local-provider",
|
|
197
|
+
"-m",
|
|
198
|
+
"--model",
|
|
199
|
+
"-p",
|
|
200
|
+
"--profile",
|
|
201
|
+
"--remote",
|
|
202
|
+
"--remote-auth-token-env",
|
|
203
|
+
"-s",
|
|
204
|
+
"--sandbox",
|
|
205
|
+
]);
|
|
206
|
+
for (let i = 0; i < args.length; i++) {
|
|
207
|
+
const arg = args[i];
|
|
208
|
+
if (arg === "exec")
|
|
209
|
+
return i;
|
|
210
|
+
if (arg === "--")
|
|
211
|
+
return -1;
|
|
212
|
+
if (!arg)
|
|
213
|
+
continue;
|
|
214
|
+
if (arg.startsWith("--") && arg.includes("="))
|
|
215
|
+
continue;
|
|
216
|
+
if (flagsWithValues.has(arg)) {
|
|
217
|
+
i++;
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
if (arg.startsWith("-"))
|
|
221
|
+
continue;
|
|
222
|
+
return -1;
|
|
223
|
+
}
|
|
224
|
+
return -1;
|
|
225
|
+
}
|
|
226
|
+
static findFlagValue(args, flag) {
|
|
227
|
+
const index = args.indexOf(flag);
|
|
228
|
+
const value = index >= 0 ? args[index + 1] : undefined;
|
|
229
|
+
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
230
|
+
}
|
|
231
|
+
static readFinalMessage(filePath) {
|
|
232
|
+
try {
|
|
233
|
+
const text = fs.readFileSync(filePath, "utf8");
|
|
234
|
+
return text.length > 0 ? text : undefined;
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
return undefined;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
126
240
|
}
|
|
127
241
|
//# sourceMappingURL=CLIProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CLIProvider.js","sourceRoot":"","sources":["../../src/providers/CLIProvider.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,EAAE;AACF,+EAA+E;AAC/E,0EAA0E;AAC1E,0EAA0E;AAC1E,0CAA0C;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"CLIProvider.js","sourceRoot":"","sources":["../../src/providers/CLIProvider.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,EAAE;AACF,+EAA+E;AAC/E,0EAA0E;AAC1E,0EAA0E;AAC1E,0CAA0C;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAajE,yEAAyE;AACzE,yEAAyE;AACzE,6DAA6D;AAC7D,MAAM,YAAY,GAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CACvD,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IACxD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAElC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE;QACnC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;KAClC,CAAC,CAAC;IAEH,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,MAAM,KAAK,GACT,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,GAAG,CAAC;QAC5C,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;YACd,QAAQ,GAAG,IAAI,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC,EAAE,SAAS,CAAC;QACf,CAAC,CAAC,IAAI,CAAC;IAEX,MAAM,WAAW,GAAG,CAAC,IAAyB,EAAE,OAAe,EAAE,EAAE;QACjE,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YAC/B,cAAc,GAAG,IAAI,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,GAAG,OAAO,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,OAAO,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;QAClD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;QAClD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QAC1B,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QACnC,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,MAAM,CACX,IAAI,KAAK,CAAC,iBAAiB,IAAI,qBAAqB,SAAS,IAAI,CAAC,CACnE,CAAC;QACJ,CAAC;QACD,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,MAAM,CACX,IAAI,KAAK,CAAC,iBAAiB,IAAI,wBAAwB,SAAS,EAAE,CAAC,CACpE,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,OAAO,MAAM,CACX,IAAI,KAAK,CACP,iBAAiB,IAAI,iBAAiB,IAAI,WAAW,MAAM,IAAI,MAAM,aAAa,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACzG,CACF,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAkBL,MAAM,kBAAkB,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,4DAA4D;AACnG,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,SAAS;AACtD,MAAM,eAAe,GAAG,CAAC,CAAC,CAAC,0FAA0F;AACrH,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAExC,MAAM,OAAO,WAAW;IACb,EAAE,GAAe,KAAK,CAAC;IACvB,UAAU,CAAS;IAEX,IAAI,CAAwB;IAC5B,IAAI,CAAa;IACjB,GAAG,CAAU;IACb,SAAS,CAAS;IAClB,SAAS,CAAS;IAClB,OAAO,CAAS;IAChB,cAAc,CAAS;IAExC,YAAY,IAAwB;QAClC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACzF,CAAC;QACD,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC;QACxC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC;QACtD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,eAAe,CAAC;QAC/C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,wBAAwB,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,WAAW;QACf,oEAAoE;QACpE,kDAAkD;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CACX,KAA4B;QAE5B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO;YAC9B,CAAC,CAAC,aAAa,KAAK,CAAC,OAAO,cAAc,KAAK,CAAC,MAAM,EAAE;YACxD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QAEjB,MAAM,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QAElC,IAAI,SAA4B,CAAC;QACjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;YACzD,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YACvE,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE;oBACtD,GAAG;oBACH,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,OAAO,EAAE,IAAI,CAAC,SAAS;iBACxB,CAAC,CAAC;gBACH,MAAM,IAAI,GAAG,SAAS,CAAC,gBAAgB;oBACrC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,MAAM;oBACpE,CAAC,CAAC,MAAM,CAAC;gBACX,IAAI,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3C,SAAS,GAAG,IAAI,KAAK,CACnB,iBAAiB,GAAG,kCAAkC,OAAO,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACpG,CAAC;oBACF,SAAS;gBACX,CAAC;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC;oBACrC,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI;oBACjE,CAAC,CAAC,IAAI,CAAC;gBACT,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAC3B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,SAAS,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAClE,CAAC;oBAAS,CAAC;gBACT,SAAS,CAAC,OAAO,EAAE,CAAC;YACtB,CAAC;QACH,CAAC;QACD,MAAM,CACJ,SAAS;YACT,IAAI,KAAK,CAAC,iBAAiB,GAAG,kBAAkB,IAAI,CAAC,OAAO,GAAG,CAAC,WAAW,CAAC,CAC7E,CAAC;IACJ,CAAC;IAED,sFAAsF;IACtF,MAAM,CAAC,kBAAkB,CAAC,MAAc;QACtC,OAAO,gGAAgG,CAAC,IAAI,CAC1G,MAAM,CACP,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,CAChB,GAAW,EACX,UAAiC,EACjC,MAAc;QAEd,MAAM,IAAI,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;QAC7B,IAAI,OAA2B,CAAC;QAChC,IAAI,gBAAgB,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;QAEhF,IAAI,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5D,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;YACpE,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;YAC1D,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,OAAO;YACL,IAAI;YACJ,gBAAgB;YAChB,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,OAAO;oBAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpE,CAAC;SACF,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,WAAW,CACxB,GAAW,EACX,IAA2B;QAE3B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,OAAO,IAAI,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjF,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,IAA2B;QACtD,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC;YAAE,OAAO;QACxD,IAAI,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,KAAK,GAAG;YAAE,OAAO;QAElE,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,IACE,IAAI,CAAC,QAAQ,CAAC,4CAA4C,CAAC;YAC3D,OAAO,KAAK,oBAAoB,EAChC,CAAC;YACD,MAAM,IAAI,KAAK,CACb,0JAA0J,CAC3J,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,IAA2B;QACvD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;YAC9B,IAAI;YACJ,WAAW;YACX,oBAAoB;YACpB,IAAI;YACJ,MAAM;YACN,SAAS;YACT,UAAU;YACV,WAAW;YACX,UAAU;YACV,IAAI;YACJ,SAAS;YACT,kBAAkB;YAClB,IAAI;YACJ,SAAS;YACT,IAAI;YACJ,WAAW;YACX,UAAU;YACV,yBAAyB;YACzB,IAAI;YACJ,WAAW;SACZ,CAAC,CAAC;QAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,GAAG,KAAK,MAAM;gBAAE,OAAO,CAAC,CAAC;YAC7B,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,SAAS;YACxD,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,CAAC;YACD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAClC,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAEO,MAAM,CAAC,aAAa,CAC1B,IAA2B,EAC3B,IAAY;QAEZ,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,QAAgB;QAC9C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;CACF"}
|
package/dist/registry.js
CHANGED
|
@@ -75,6 +75,10 @@ export class ProviderRegistry {
|
|
|
75
75
|
return new CLIProvider({
|
|
76
76
|
cli: roleConfig.cli,
|
|
77
77
|
model: roleConfig.model,
|
|
78
|
+
timeoutMs: roleConfig.timeoutMs,
|
|
79
|
+
maxBuffer: roleConfig.maxBuffer,
|
|
80
|
+
retries: roleConfig.retries,
|
|
81
|
+
maxResultChars: roleConfig.maxResultChars,
|
|
78
82
|
});
|
|
79
83
|
}
|
|
80
84
|
case "openai_compatible":
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -3,8 +3,10 @@ import type { ProviderRegistry } from "./registry.js";
|
|
|
3
3
|
export declare const COMPOSER_RESEARCH: "composer_research";
|
|
4
4
|
export declare const COMPOSER_CODE: "composer_code";
|
|
5
5
|
export declare const COMPOSER_REVIEW: "composer_review";
|
|
6
|
+
export declare const COMPOSER_REVIEW_CLAUDE: "composer_review_claude";
|
|
6
7
|
export declare const COMPOSER_CODE_CLI: "composer_code_cli";
|
|
7
8
|
export declare const COMPOSER_CODE_CHAIN: "composer_code_chain";
|
|
9
|
+
export declare const COMPOSER_HANDOFF_CREATE: "composer_handoff_create";
|
|
8
10
|
/**
|
|
9
11
|
* Deterministically apply GLM-authored output of the form
|
|
10
12
|
* FILE: <relative/path>
|
|
@@ -17,4 +19,7 @@ export declare function applyFileBlocks(text: string, root: string): {
|
|
|
17
19
|
written: string[];
|
|
18
20
|
skipped: string[];
|
|
19
21
|
};
|
|
20
|
-
export
|
|
22
|
+
export interface ComposerServerOptions {
|
|
23
|
+
root?: string;
|
|
24
|
+
}
|
|
25
|
+
export declare function createComposerServer(registry: ProviderRegistry, options?: ComposerServerOptions): McpServer;
|
package/dist/server.js
CHANGED
|
@@ -6,13 +6,16 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import fs from "node:fs";
|
|
8
8
|
import path from "node:path";
|
|
9
|
+
import { HANDOFF_DIR, formatHandoffForPrompt, newHandoffPacket, readHandoffPacket, writeHandoffPacket, } from "./util/handoff.js";
|
|
9
10
|
// C0.3 — locked MCP tool names. Referenced by subagent allowlists +
|
|
10
11
|
// boundary_guard.sh; do not rename without a new ADR.
|
|
11
12
|
export const COMPOSER_RESEARCH = "composer_research";
|
|
12
13
|
export const COMPOSER_CODE = "composer_code";
|
|
13
14
|
export const COMPOSER_REVIEW = "composer_review";
|
|
15
|
+
export const COMPOSER_REVIEW_CLAUDE = "composer_review_claude";
|
|
14
16
|
export const COMPOSER_CODE_CLI = "composer_code_cli";
|
|
15
17
|
export const COMPOSER_CODE_CHAIN = "composer_code_chain";
|
|
18
|
+
export const COMPOSER_HANDOFF_CREATE = "composer_handoff_create";
|
|
16
19
|
const RESEARCH_DESCRIPTION = "MANDATORY for ALL research, documentation lookup, web search, and " +
|
|
17
20
|
"context gathering. The orchestrator MUST delegate research questions " +
|
|
18
21
|
"to this tool. Do not search or hypothesise in the main session.";
|
|
@@ -20,13 +23,13 @@ const CODE_DESCRIPTION = "MANDATORY for ALL code writing, refactoring, debugging
|
|
|
20
23
|
"implementation. The orchestrator MUST delegate implementation to this " +
|
|
21
24
|
"tool. Do not write code in the main session.";
|
|
22
25
|
const CODE_CHAIN_DESCRIPTION = "Preferred for substantial code: GLM AUTHORS the code (off-CC), then the " +
|
|
23
|
-
"
|
|
26
|
+
"Composer server APPLIES it to disk deterministically (off-CC), then gate it through " +
|
|
24
27
|
"composer_review. The orchestrator only calls this once and relays the " +
|
|
25
28
|
"summary — it never generates or writes code itself. Combines GLM code " +
|
|
26
29
|
"quality with off-CC application (keeps the main session lean). Returns a " +
|
|
27
30
|
"summary of files written.";
|
|
28
31
|
const CODE_CLI_DESCRIPTION = "Generate AND APPLY code changes directly to disk via the CLI executor " +
|
|
29
|
-
"(agy/Gemini), which runs in the server working directory and edits files " +
|
|
32
|
+
"(Codex/agy/Gemini), which runs in the server working directory and edits files " +
|
|
30
33
|
"itself. Returns ONLY a summary of what changed. Use this to offload BOTH " +
|
|
31
34
|
"generation and file-writing off the main session: the orchestrator does " +
|
|
32
35
|
"NOT call Edit/Write — the executor already applied the changes. Prefer " +
|
|
@@ -34,6 +37,13 @@ const CODE_CLI_DESCRIPTION = "Generate AND APPLY code changes directly to disk v
|
|
|
34
37
|
const REVIEW_DESCRIPTION = "MANDATORY for ALL code review, diff critique, and finding bugs in " +
|
|
35
38
|
"candidate patches. The orchestrator MUST delegate review to this tool " +
|
|
36
39
|
"before integrating worker output.";
|
|
40
|
+
const REVIEW_CLAUDE_DESCRIPTION = "Premium Claude review lane for high-risk diffs, security-sensitive changes, " +
|
|
41
|
+
"or when the user explicitly asks for Claude review. Keep composer_review " +
|
|
42
|
+
"as the default gate; use this as a second-opinion escalation.";
|
|
43
|
+
const HANDOFF_CREATE_DESCRIPTION = "Create a shared, provider-neutral handoff packet under .composer/handoffs. " +
|
|
44
|
+
"Use this before multi-agent or multi-provider work so Codex, GLM, agy, " +
|
|
45
|
+
"and reviewers receive the same compact objective, constraints, files, " +
|
|
46
|
+
"decisions, and acceptance criteria without copying the full transcript.";
|
|
37
47
|
/**
|
|
38
48
|
* Deterministically apply GLM-authored output of the form
|
|
39
49
|
* FILE: <relative/path>
|
|
@@ -63,7 +73,8 @@ export function applyFileBlocks(text, root) {
|
|
|
63
73
|
}
|
|
64
74
|
return { written, skipped };
|
|
65
75
|
}
|
|
66
|
-
export function createComposerServer(registry) {
|
|
76
|
+
export function createComposerServer(registry, options = {}) {
|
|
77
|
+
const root = path.resolve(options.root ?? process.cwd());
|
|
67
78
|
const server = new McpServer({
|
|
68
79
|
name: "composer",
|
|
69
80
|
version: "0.0.0",
|
|
@@ -76,6 +87,7 @@ export function createComposerServer(registry) {
|
|
|
76
87
|
inputSchema: {
|
|
77
88
|
prompt: z.string().min(1),
|
|
78
89
|
context: z.string().optional(),
|
|
90
|
+
handoffPath: z.string().optional(),
|
|
79
91
|
},
|
|
80
92
|
annotations: {
|
|
81
93
|
title: "Composer Research",
|
|
@@ -84,9 +96,12 @@ export function createComposerServer(registry) {
|
|
|
84
96
|
destructiveHint: false,
|
|
85
97
|
idempotentHint: false,
|
|
86
98
|
},
|
|
87
|
-
}, async ({ prompt, context }) => {
|
|
99
|
+
}, async ({ prompt, context, handoffPath }) => {
|
|
88
100
|
const provider = registry.getProviderForRole("researcher");
|
|
89
|
-
const result = await provider.execute({
|
|
101
|
+
const result = await provider.execute({
|
|
102
|
+
prompt,
|
|
103
|
+
context: contextWithHandoff(root, context, handoffPath),
|
|
104
|
+
});
|
|
90
105
|
return { content: [{ type: "text", text: result.text }] };
|
|
91
106
|
});
|
|
92
107
|
server.registerTool(COMPOSER_CODE, {
|
|
@@ -94,6 +109,7 @@ export function createComposerServer(registry) {
|
|
|
94
109
|
inputSchema: {
|
|
95
110
|
prompt: z.string().min(1),
|
|
96
111
|
context: z.string().optional(),
|
|
112
|
+
handoffPath: z.string().optional(),
|
|
97
113
|
},
|
|
98
114
|
annotations: {
|
|
99
115
|
title: "Composer Code",
|
|
@@ -102,9 +118,12 @@ export function createComposerServer(registry) {
|
|
|
102
118
|
destructiveHint: false,
|
|
103
119
|
idempotentHint: false,
|
|
104
120
|
},
|
|
105
|
-
}, async ({ prompt, context }) => {
|
|
121
|
+
}, async ({ prompt, context, handoffPath }) => {
|
|
106
122
|
const provider = registry.getProviderForRole("coder");
|
|
107
|
-
const result = await provider.execute({
|
|
123
|
+
const result = await provider.execute({
|
|
124
|
+
prompt,
|
|
125
|
+
context: contextWithHandoff(root, context, handoffPath),
|
|
126
|
+
});
|
|
108
127
|
return { content: [{ type: "text", text: result.text }] };
|
|
109
128
|
});
|
|
110
129
|
server.registerTool(COMPOSER_REVIEW, {
|
|
@@ -112,6 +131,7 @@ export function createComposerServer(registry) {
|
|
|
112
131
|
inputSchema: {
|
|
113
132
|
prompt: z.string().min(1),
|
|
114
133
|
diff: z.string().min(1),
|
|
134
|
+
handoffPath: z.string().optional(),
|
|
115
135
|
},
|
|
116
136
|
annotations: {
|
|
117
137
|
title: "Composer Review",
|
|
@@ -120,9 +140,35 @@ export function createComposerServer(registry) {
|
|
|
120
140
|
destructiveHint: false,
|
|
121
141
|
idempotentHint: true,
|
|
122
142
|
},
|
|
123
|
-
}, async ({ prompt, diff }) => {
|
|
143
|
+
}, async ({ prompt, diff, handoffPath }) => {
|
|
124
144
|
const provider = registry.getProviderForRole("reviewer");
|
|
125
|
-
const result = await provider.execute({
|
|
145
|
+
const result = await provider.execute({
|
|
146
|
+
prompt,
|
|
147
|
+
context: contextWithHandoff(root, diff, handoffPath),
|
|
148
|
+
});
|
|
149
|
+
return { content: [{ type: "text", text: result.text }] };
|
|
150
|
+
});
|
|
151
|
+
server.registerTool(COMPOSER_REVIEW_CLAUDE, {
|
|
152
|
+
description: REVIEW_CLAUDE_DESCRIPTION,
|
|
153
|
+
inputSchema: {
|
|
154
|
+
prompt: z.string().min(1),
|
|
155
|
+
diff: z.string().min(1),
|
|
156
|
+
handoffPath: z.string().optional(),
|
|
157
|
+
},
|
|
158
|
+
annotations: {
|
|
159
|
+
title: "Composer Review (Claude Premium)",
|
|
160
|
+
readOnlyHint: true,
|
|
161
|
+
openWorldHint: false,
|
|
162
|
+
destructiveHint: false,
|
|
163
|
+
idempotentHint: true,
|
|
164
|
+
},
|
|
165
|
+
}, async ({ prompt, diff, handoffPath }) => {
|
|
166
|
+
const provider = registry.getProviderForRole("reviewerClaude");
|
|
167
|
+
const result = await provider.execute({
|
|
168
|
+
prompt,
|
|
169
|
+
context: contextWithHandoff(root, diff, handoffPath),
|
|
170
|
+
cwd: root,
|
|
171
|
+
});
|
|
126
172
|
return { content: [{ type: "text", text: result.text }] };
|
|
127
173
|
});
|
|
128
174
|
server.registerTool(COMPOSER_CODE_CHAIN, {
|
|
@@ -130,6 +176,7 @@ export function createComposerServer(registry) {
|
|
|
130
176
|
inputSchema: {
|
|
131
177
|
prompt: z.string().min(1),
|
|
132
178
|
context: z.string().optional(),
|
|
179
|
+
handoffPath: z.string().optional(),
|
|
133
180
|
},
|
|
134
181
|
annotations: {
|
|
135
182
|
title: "Composer Code (GLM author -> CLI apply)",
|
|
@@ -138,7 +185,7 @@ export function createComposerServer(registry) {
|
|
|
138
185
|
destructiveHint: true,
|
|
139
186
|
idempotentHint: false,
|
|
140
187
|
},
|
|
141
|
-
}, async ({ prompt, context }) => {
|
|
188
|
+
}, async ({ prompt, context, handoffPath }) => {
|
|
142
189
|
// Stage 1: GLM authors the code off-CC (returns full file contents).
|
|
143
190
|
const gen = registry.getProviderForRole("coder");
|
|
144
191
|
const genPrompt = prompt +
|
|
@@ -146,16 +193,19 @@ export function createComposerServer(registry) {
|
|
|
146
193
|
"create or modify. For each file, write a line `FILE: <relative/path>` " +
|
|
147
194
|
"followed by a fenced code block with the full file content. No " +
|
|
148
195
|
"abbreviations, no placeholders, no commentary outside the blocks.";
|
|
149
|
-
const authored = await gen.execute({
|
|
196
|
+
const authored = await gen.execute({
|
|
197
|
+
prompt: genPrompt,
|
|
198
|
+
context: contextWithHandoff(root, context, handoffPath),
|
|
199
|
+
});
|
|
150
200
|
// Stage 2: server applies GLM's FILE: blocks deterministically (off-CC,
|
|
151
201
|
// no LLM transcription step — an executor cannot fabricate the apply).
|
|
152
|
-
const { written, skipped } = applyFileBlocks(authored.text,
|
|
202
|
+
const { written, skipped } = applyFileBlocks(authored.text, root);
|
|
153
203
|
const summary = written.length > 0
|
|
154
204
|
? `GLM authored + applied off-CC. Wrote ${written.length} file(s): ${written.join(", ")}.` +
|
|
155
205
|
(skipped.length ? ` Skipped: ${skipped.join(", ")}.` : "")
|
|
156
206
|
: "GLM authored but produced NO parseable FILE: blocks — nothing written. " +
|
|
157
207
|
"Re-issue with explicit 'FILE: <path>' + fenced-block formatting, or " +
|
|
158
|
-
"use composer_code_cli (
|
|
208
|
+
"use composer_code_cli (CLI executor authors+applies) instead.";
|
|
159
209
|
return { content: [{ type: "text", text: summary }] };
|
|
160
210
|
});
|
|
161
211
|
server.registerTool(COMPOSER_CODE_CLI, {
|
|
@@ -163,6 +213,7 @@ export function createComposerServer(registry) {
|
|
|
163
213
|
inputSchema: {
|
|
164
214
|
prompt: z.string().min(1),
|
|
165
215
|
context: z.string().optional(),
|
|
216
|
+
handoffPath: z.string().optional(),
|
|
166
217
|
},
|
|
167
218
|
annotations: {
|
|
168
219
|
title: "Composer Code (CLI apply)",
|
|
@@ -171,11 +222,74 @@ export function createComposerServer(registry) {
|
|
|
171
222
|
destructiveHint: true,
|
|
172
223
|
idempotentHint: false,
|
|
173
224
|
},
|
|
174
|
-
}, async ({ prompt, context }) => {
|
|
225
|
+
}, async ({ prompt, context, handoffPath }) => {
|
|
175
226
|
const provider = registry.getProviderForRole("coderCli");
|
|
176
|
-
const result = await provider.execute({
|
|
227
|
+
const result = await provider.execute({
|
|
228
|
+
prompt,
|
|
229
|
+
context: contextWithHandoff(root, context, handoffPath),
|
|
230
|
+
cwd: root,
|
|
231
|
+
});
|
|
177
232
|
return { content: [{ type: "text", text: result.text }] };
|
|
178
233
|
});
|
|
234
|
+
server.registerTool(COMPOSER_HANDOFF_CREATE, {
|
|
235
|
+
description: HANDOFF_CREATE_DESCRIPTION,
|
|
236
|
+
inputSchema: {
|
|
237
|
+
objective: z.string().min(1),
|
|
238
|
+
contextSummary: z.string().optional(),
|
|
239
|
+
constraints: z.array(z.string().min(1)).optional(),
|
|
240
|
+
relevantFiles: z.array(z.string().min(1)).optional(),
|
|
241
|
+
acceptanceCriteria: z.array(z.string().min(1)).optional(),
|
|
242
|
+
decisions: z.array(z.string().min(1)).optional(),
|
|
243
|
+
openQuestions: z.array(z.string().min(1)).optional(),
|
|
244
|
+
artifacts: z
|
|
245
|
+
.array(z.object({
|
|
246
|
+
kind: z.enum(["research", "code", "review", "test", "note"]),
|
|
247
|
+
summary: z.string().min(1),
|
|
248
|
+
path: z.string().min(1).optional(),
|
|
249
|
+
source: z.string().min(1).optional(),
|
|
250
|
+
}))
|
|
251
|
+
.optional(),
|
|
252
|
+
briefPath: z.string().optional(),
|
|
253
|
+
},
|
|
254
|
+
annotations: {
|
|
255
|
+
title: "Composer Handoff Create",
|
|
256
|
+
readOnlyHint: false,
|
|
257
|
+
openWorldHint: false,
|
|
258
|
+
destructiveHint: false,
|
|
259
|
+
idempotentHint: false,
|
|
260
|
+
},
|
|
261
|
+
}, async ({ objective, contextSummary, constraints, relevantFiles, acceptanceCriteria, decisions, openQuestions, artifacts, briefPath, }) => {
|
|
262
|
+
const packet = newHandoffPacket({
|
|
263
|
+
objective,
|
|
264
|
+
contextSummary,
|
|
265
|
+
constraints,
|
|
266
|
+
relevantFiles,
|
|
267
|
+
acceptanceCriteria,
|
|
268
|
+
decisions,
|
|
269
|
+
openQuestions,
|
|
270
|
+
artifacts: artifacts,
|
|
271
|
+
briefPath,
|
|
272
|
+
});
|
|
273
|
+
const handoffPath = writeHandoffPacket(packet, path.resolve(root, HANDOFF_DIR));
|
|
274
|
+
const response = {
|
|
275
|
+
runId: packet.runId,
|
|
276
|
+
handoffPath,
|
|
277
|
+
objective: packet.objective,
|
|
278
|
+
};
|
|
279
|
+
return {
|
|
280
|
+
content: [{ type: "text", text: JSON.stringify(response, null, 2) }],
|
|
281
|
+
};
|
|
282
|
+
});
|
|
179
283
|
return server;
|
|
180
284
|
}
|
|
285
|
+
function contextWithHandoff(root, context, handoffPath) {
|
|
286
|
+
const blocks = [];
|
|
287
|
+
if (handoffPath) {
|
|
288
|
+
const handoff = readHandoffPacket(handoffPath, root);
|
|
289
|
+
blocks.push(formatHandoffForPrompt(handoff));
|
|
290
|
+
}
|
|
291
|
+
if (context)
|
|
292
|
+
blocks.push(context);
|
|
293
|
+
return blocks.length > 0 ? blocks.join("\n\n") : undefined;
|
|
294
|
+
}
|
|
181
295
|
//# sourceMappingURL=server.js.map
|
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;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|