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.
Files changed (41) hide show
  1. package/README.md +62 -15
  2. package/composer.config.schema.json +24 -1
  3. package/dist/cli/dispatch-hint.d.ts +2 -0
  4. package/dist/cli/dispatch-hint.js +63 -0
  5. package/dist/cli/dispatch-hint.js.map +1 -0
  6. package/dist/cli/init.js +41 -2
  7. package/dist/cli/init.js.map +1 -1
  8. package/dist/cli/install-plugin.d.ts +3 -2
  9. package/dist/cli/install-plugin.js +19 -7
  10. package/dist/cli/install-plugin.js.map +1 -1
  11. package/dist/config/schema.d.ts +44 -0
  12. package/dist/config/schema.js +12 -1
  13. package/dist/config/schema.js.map +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/providers/CLIProvider.d.ts +16 -0
  17. package/dist/providers/CLIProvider.js +117 -3
  18. package/dist/providers/CLIProvider.js.map +1 -1
  19. package/dist/providers/IProvider.d.ts +1 -0
  20. package/dist/registry.js +4 -0
  21. package/dist/registry.js.map +1 -1
  22. package/dist/server.d.ts +6 -1
  23. package/dist/server.js +129 -15
  24. package/dist/server.js.map +1 -1
  25. package/dist/util/dispatchHint.d.ts +35 -0
  26. package/dist/util/dispatchHint.js +179 -0
  27. package/dist/util/dispatchHint.js.map +1 -0
  28. package/dist/util/handoff.d.ts +58 -0
  29. package/dist/util/handoff.js +107 -0
  30. package/dist/util/handoff.js.map +1 -0
  31. package/dist/util/projectToolResult.d.ts +13 -0
  32. package/dist/util/projectToolResult.js +169 -0
  33. package/dist/util/projectToolResult.js.map +1 -0
  34. package/package.json +3 -2
  35. package/plugin/composer-mastermind/README.md +11 -6
  36. package/plugin/composer-mastermind/agents/coder.md +8 -7
  37. package/plugin/composer-mastermind/agents/reviewer-claude.md +31 -0
  38. package/plugin/composer-mastermind/hooks/boundary_guard.sh +7 -4
  39. package/plugin/composer-mastermind/hooks/lint-on-save.sh +1 -1
  40. package/plugin/composer-mastermind/plugin.json +3 -2
  41. 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 args = [...staticArgs, fullPrompt];
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
- return { text: stdout };
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;AAmB3C,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,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;AAeL,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;AAErH,MAAM,OAAO,WAAW;IACb,EAAE,GAAe,KAAK,CAAC;IACvB,UAAU,CAAS;IAEX,IAAI,CAAwB;IAC5B,IAAI,CAAa;IACjB,SAAS,CAAS;IAClB,SAAS,CAAS;IAClB,OAAO,CAAS;IAEjC,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,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,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;IACjD,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,IAAI,GAAG,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,CAAC;QAEzC,IAAI,SAA4B,CAAC;QACjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;YACzD,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE;oBAC5C,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,OAAO,EAAE,IAAI,CAAC,SAAS;iBACxB,CAAC,CAAC;gBACH,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,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC1B,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;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;CACF"}
1
+ {"version":3,"file":"CLIProvider.js","sourceRoot":"","sources":["../../src/providers/CLIProvider.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export interface IProviderExecuteInput {
3
3
  prompt: string;
4
4
  context?: string;
5
5
  maxTokens?: number;
6
+ cwd?: string;
6
7
  }
7
8
  export interface IProviderExecuteOutput {
8
9
  text: string;
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":
@@ -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 declare function createComposerServer(registry: ProviderRegistry): McpServer;
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
- "CLI executor (agy) APPLIES it to disk (off-CC), then you gate it through " +
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({ prompt, context });
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({ prompt, context });
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({ prompt, context: diff });
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({ prompt: genPrompt, context });
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, process.cwd());
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 (agy authors+applies) instead.";
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({ prompt, context });
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
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}