agent-composer 0.3.1 → 0.4.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 (180) hide show
  1. package/README.md +495 -180
  2. package/composer.config.schema.json +206 -2
  3. package/dist/cli/cleanup.d.ts +24 -0
  4. package/dist/cli/cleanup.js +151 -0
  5. package/dist/cli/cleanup.js.map +1 -0
  6. package/dist/cli/doctor.d.ts +12 -0
  7. package/dist/cli/doctor.js +244 -4
  8. package/dist/cli/doctor.js.map +1 -1
  9. package/dist/cli/goal.d.ts +28 -0
  10. package/dist/cli/goal.js +251 -0
  11. package/dist/cli/goal.js.map +1 -0
  12. package/dist/cli/help.d.ts +3 -0
  13. package/dist/cli/help.js +31 -0
  14. package/dist/cli/help.js.map +1 -0
  15. package/dist/cli/init.d.ts +5 -0
  16. package/dist/cli/init.js +116 -21
  17. package/dist/cli/init.js.map +1 -1
  18. package/dist/cli/initArgs.d.ts +16 -0
  19. package/dist/cli/initArgs.js +19 -0
  20. package/dist/cli/initArgs.js.map +1 -0
  21. package/dist/cli/installGitHook.d.ts +7 -0
  22. package/dist/cli/installGitHook.js +61 -0
  23. package/dist/cli/installGitHook.js.map +1 -0
  24. package/dist/cli/mode.d.ts +6 -0
  25. package/dist/cli/mode.js +25 -0
  26. package/dist/cli/mode.js.map +1 -0
  27. package/dist/cli/status.d.ts +105 -0
  28. package/dist/cli/status.js +400 -0
  29. package/dist/cli/status.js.map +1 -0
  30. package/dist/config/env.d.ts +1 -1
  31. package/dist/config/modes.d.ts +10 -0
  32. package/dist/config/modes.js +26 -0
  33. package/dist/config/modes.js.map +1 -0
  34. package/dist/config/oracleRole.d.ts +10 -0
  35. package/dist/config/oracleRole.js +11 -0
  36. package/dist/config/oracleRole.js.map +1 -0
  37. package/dist/config/schema.d.ts +246 -0
  38. package/dist/config/schema.js +127 -2
  39. package/dist/config/schema.js.map +1 -1
  40. package/dist/evolve/reflection.d.ts +9 -0
  41. package/dist/evolve/reflection.js +14 -0
  42. package/dist/evolve/reflection.js.map +1 -1
  43. package/dist/evolve/runner.d.ts +2 -1
  44. package/dist/evolve/runner.js +2 -1
  45. package/dist/evolve/runner.js.map +1 -1
  46. package/dist/index.js +115 -6
  47. package/dist/index.js.map +1 -1
  48. package/dist/providers/AnthropicCompatibleProvider.d.ts +13 -1
  49. package/dist/providers/AnthropicCompatibleProvider.js +115 -9
  50. package/dist/providers/AnthropicCompatibleProvider.js.map +1 -1
  51. package/dist/providers/CLIProvider.d.ts +18 -0
  52. package/dist/providers/CLIProvider.js +265 -62
  53. package/dist/providers/CLIProvider.js.map +1 -1
  54. package/dist/providers/IProvider.d.ts +12 -0
  55. package/dist/providers/SpendGuardProvider.d.ts +32 -0
  56. package/dist/providers/SpendGuardProvider.js +98 -0
  57. package/dist/providers/SpendGuardProvider.js.map +1 -0
  58. package/dist/registry.d.ts +5 -2
  59. package/dist/registry.js +17 -2
  60. package/dist/registry.js.map +1 -1
  61. package/dist/server/activeRuns.d.ts +17 -0
  62. package/dist/server/activeRuns.js +114 -0
  63. package/dist/server/activeRuns.js.map +1 -0
  64. package/dist/server/codexLifecycleRunner.d.ts +29 -0
  65. package/dist/server/codexLifecycleRunner.js +188 -0
  66. package/dist/server/codexLifecycleRunner.js.map +1 -0
  67. package/dist/server/configMutation.d.ts +22 -0
  68. package/dist/server/configMutation.js +121 -0
  69. package/dist/server/configMutation.js.map +1 -0
  70. package/dist/server/handoffContext.d.ts +1 -0
  71. package/dist/server/handoffContext.js +12 -0
  72. package/dist/server/handoffContext.js.map +1 -0
  73. package/dist/server/progress.d.ts +24 -0
  74. package/dist/server/progress.js +109 -0
  75. package/dist/server/progress.js.map +1 -0
  76. package/dist/server/toolDescriptions.d.ts +60 -0
  77. package/dist/server/toolDescriptions.js +134 -0
  78. package/dist/server/toolDescriptions.js.map +1 -0
  79. package/dist/server.d.ts +19 -25
  80. package/dist/server.js +87 -377
  81. package/dist/server.js.map +1 -1
  82. package/dist/tools/audit.d.ts +2 -0
  83. package/dist/tools/audit.js +66 -0
  84. package/dist/tools/audit.js.map +1 -0
  85. package/dist/tools/code.d.ts +2 -0
  86. package/dist/tools/code.js +160 -0
  87. package/dist/tools/code.js.map +1 -0
  88. package/dist/tools/codexLifecycle.d.ts +2 -0
  89. package/dist/tools/codexLifecycle.js +206 -0
  90. package/dist/tools/codexLifecycle.js.map +1 -0
  91. package/dist/tools/config.d.ts +2 -0
  92. package/dist/tools/config.js +183 -0
  93. package/dist/tools/config.js.map +1 -0
  94. package/dist/tools/context.d.ts +31 -0
  95. package/dist/tools/context.js +2 -0
  96. package/dist/tools/context.js.map +1 -0
  97. package/dist/tools/goal.d.ts +2 -0
  98. package/dist/tools/goal.js +159 -0
  99. package/dist/tools/goal.js.map +1 -0
  100. package/dist/tools/handoff.d.ts +2 -0
  101. package/dist/tools/handoff.js +57 -0
  102. package/dist/tools/handoff.js.map +1 -0
  103. package/dist/tools/oracle.d.ts +2 -0
  104. package/dist/tools/oracle.js +248 -0
  105. package/dist/tools/oracle.js.map +1 -0
  106. package/dist/tools/research.d.ts +2 -0
  107. package/dist/tools/research.js +51 -0
  108. package/dist/tools/research.js.map +1 -0
  109. package/dist/tools/review.d.ts +2 -0
  110. package/dist/tools/review.js +233 -0
  111. package/dist/tools/review.js.map +1 -0
  112. package/dist/tools/route.d.ts +2 -0
  113. package/dist/tools/route.js +69 -0
  114. package/dist/tools/route.js.map +1 -0
  115. package/dist/tools/session.d.ts +2 -0
  116. package/dist/tools/session.js +37 -0
  117. package/dist/tools/session.js.map +1 -0
  118. package/dist/tools/status.d.ts +2 -0
  119. package/dist/tools/status.js +34 -0
  120. package/dist/tools/status.js.map +1 -0
  121. package/dist/tools/workflow.d.ts +2 -0
  122. package/dist/tools/workflow.js +27 -0
  123. package/dist/tools/workflow.js.map +1 -0
  124. package/dist/util/applyFileBlocks.d.ts +18 -0
  125. package/dist/util/applyFileBlocks.js +163 -0
  126. package/dist/util/applyFileBlocks.js.map +1 -0
  127. package/dist/util/asyncControl.d.ts +14 -0
  128. package/dist/util/asyncControl.js +106 -0
  129. package/dist/util/asyncControl.js.map +1 -0
  130. package/dist/util/auditLog.d.ts +56 -0
  131. package/dist/util/auditLog.js +232 -0
  132. package/dist/util/auditLog.js.map +1 -0
  133. package/dist/util/codexLifecycle.d.ts +55 -0
  134. package/dist/util/codexLifecycle.js +102 -0
  135. package/dist/util/codexLifecycle.js.map +1 -0
  136. package/dist/util/codexLifecycleJob.d.ts +209 -0
  137. package/dist/util/codexLifecycleJob.js +360 -0
  138. package/dist/util/codexLifecycleJob.js.map +1 -0
  139. package/dist/util/composerDisabled.d.ts +6 -0
  140. package/dist/util/composerDisabled.js +27 -0
  141. package/dist/util/composerDisabled.js.map +1 -0
  142. package/dist/util/dispatchHint.d.ts +5 -3
  143. package/dist/util/dispatchHint.js +62 -2
  144. package/dist/util/dispatchHint.js.map +1 -1
  145. package/dist/util/goal.d.ts +132 -0
  146. package/dist/util/goal.js +616 -0
  147. package/dist/util/goal.js.map +1 -0
  148. package/dist/util/goalReport.d.ts +51 -0
  149. package/dist/util/goalReport.js +164 -0
  150. package/dist/util/goalReport.js.map +1 -0
  151. package/dist/util/jobPolling.d.ts +9 -0
  152. package/dist/util/jobPolling.js +17 -0
  153. package/dist/util/jobPolling.js.map +1 -0
  154. package/dist/util/oracleJob.d.ts +66 -0
  155. package/dist/util/oracleJob.js +295 -0
  156. package/dist/util/oracleJob.js.map +1 -0
  157. package/dist/util/oracleLock.d.ts +38 -0
  158. package/dist/util/oracleLock.js +182 -0
  159. package/dist/util/oracleLock.js.map +1 -0
  160. package/dist/util/reviewDiff.d.ts +8 -0
  161. package/dist/util/reviewDiff.js +29 -0
  162. package/dist/util/reviewDiff.js.map +1 -0
  163. package/dist/util/reviewJob.d.ts +57 -0
  164. package/dist/util/reviewJob.js +207 -0
  165. package/dist/util/reviewJob.js.map +1 -0
  166. package/dist/util/workflowPlan.d.ts +24 -0
  167. package/dist/util/workflowPlan.js +49 -0
  168. package/dist/util/workflowPlan.js.map +1 -0
  169. package/package.json +8 -1
  170. package/plugin/composer-mastermind/commands/evolve.md +4 -0
  171. package/plugin/composer-mastermind/hooks/boundary_guard.sh +43 -2
  172. package/plugin/composer-mastermind/hooks/codex_warm_review.sh +161 -9
  173. package/plugin/composer-mastermind/hooks/learn.sh +172 -32
  174. package/plugin/composer-mastermind/hooks/precommit_codex_review.sh +430 -62
  175. package/plugin/composer-mastermind/skills/composer-mastermind/SKILL.md +184 -4
  176. package/scripts/composer-oracle-router-safe.sh +47 -0
  177. package/scripts/composer-statusline-segment.mjs +40 -0
  178. package/scripts/oracle-codex-handoff-safe.sh +49 -0
  179. package/scripts/oracle-plan-mcp.sh +66 -0
  180. package/scripts/oracle-pro-safe.sh +471 -0
package/dist/server.js CHANGED
@@ -3,122 +3,62 @@
3
3
  // with the three C0.3 tools registered. Test code connects via
4
4
  // InMemoryTransport; src/index.ts connects via StdioServerTransport.
5
5
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
- import { z } from "zod";
7
6
  import fs from "node:fs";
8
7
  import path from "node:path";
9
- import { HANDOFF_DIR, formatHandoffForPrompt, newHandoffPacket, readHandoffPacket, writeHandoffPacket, } from "./util/handoff.js";
10
- // C0.3 locked MCP tool names. Referenced by subagent allowlists +
11
- // boundary_guard.sh; do not rename without a new ADR.
12
- export const COMPOSER_RESEARCH = "composer_research";
13
- export const COMPOSER_CODE = "composer_code";
14
- export const COMPOSER_REVIEW = "composer_review";
15
- export const COMPOSER_REVIEW_CLAUDE = "composer_review_claude";
16
- export const COMPOSER_CODE_CLI = "composer_code_cli";
17
- export const COMPOSER_CODE_CHAIN = "composer_code_chain";
18
- export const COMPOSER_HANDOFF_CREATE = "composer_handoff_create";
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).";
26
- const CODE_CHAIN_DESCRIPTION = "Preferred for substantial code: GLM AUTHORS the code (off-CC), then the " +
27
- "Composer server APPLIES it to disk deterministically (off-CC), then gate it through " +
28
- "composer_review. The orchestrator only calls this once and relays the " +
29
- "summary — it never generates or writes code itself. Combines GLM code " +
30
- "quality with off-CC application (keeps the main session lean). Returns a " +
31
- "summary of files written.";
32
- const CODE_CLI_DESCRIPTION = "Generate AND APPLY code changes directly to disk via the CLI executor " +
33
- "(Codex/agy/Gemini), which runs in the server working directory and edits files " +
34
- "itself. Returns ONLY a summary of what changed. Use this to offload BOTH " +
35
- "generation and file-writing off the main session: the orchestrator does " +
36
- "NOT call Edit/Write — the executor already applied the changes. Prefer " +
37
- "this for multi-file or substantial edits to keep the main context lean.";
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.";
42
- const REVIEW_CLAUDE_DESCRIPTION = "Premium Claude review lane for high-risk diffs, security-sensitive changes, " +
43
- "or when the user explicitly asks for Claude review. Keep composer_review " +
44
- "as the default gate; call this directly as a second-opinion escalation.";
45
- const HANDOFF_CREATE_DESCRIPTION = "Create a shared, provider-neutral handoff packet under .composer/handoffs. " +
46
- "Use this before multi-agent or multi-provider work so Codex, GLM, agy, " +
47
- "and reviewers receive the same compact objective, constraints, files, " +
48
- "decisions, and acceptance criteria without copying the full transcript.";
49
- /**
50
- * Deterministically apply GLM-authored output of the form
51
- * FILE: <relative/path>
52
- * ```lang
53
- * <content>
54
- * ```
55
- * Writes each file under `root` (cwd/projectDir). Guards against path
56
- * traversal, including symlink escapes through existing parent directories.
57
- */
58
- export function applyFileBlocks(text, root) {
59
- const projectRoot = fs.realpathSync(root);
60
- const parsed = [];
61
- const rejected = [];
62
- const re = /FILE:\s*(\S+)[^\n]*\n```[^\n]*\n([\s\S]*?)```/g;
63
- let m;
64
- while ((m = re.exec(text)) !== null) {
65
- const rel = (m[1] ?? "").trim();
66
- const content = m[2] ?? "";
67
- if (!rel)
68
- continue;
69
- const abs = path.resolve(projectRoot, rel);
70
- if (!isPathInside(abs, projectRoot)) {
71
- rejected.push(`${rel} (outside projectDir)`);
72
- continue;
73
- }
74
- const nearestParent = nearestExistingParent(path.dirname(abs));
75
- const parentReal = fs.realpathSync(nearestParent);
76
- if (!isPathInside(parentReal, projectRoot)) {
77
- rejected.push(`${rel} (parent resolves outside projectDir)`);
78
- continue;
79
- }
80
- parsed.push({ rel, abs, content });
8
+ import { loadConfig as loadComposerConfig } from "./config/loader.js";
9
+ import { registerResearchTools } from "./tools/research.js";
10
+ import { registerCodeTools } from "./tools/code.js";
11
+ import { registerReviewTools } from "./tools/review.js";
12
+ import { registerOracleTools } from "./tools/oracle.js";
13
+ import { registerHandoffTools } from "./tools/handoff.js";
14
+ import { registerCodexLifecycleTools } from "./tools/codexLifecycle.js";
15
+ import { registerConfigTools } from "./tools/config.js";
16
+ import { registerRouteTools } from "./tools/route.js";
17
+ import { registerAuditTools } from "./tools/audit.js";
18
+ import { registerWorkflowTools } from "./tools/workflow.js";
19
+ import { registerStatusTools } from "./tools/status.js";
20
+ import { registerSessionTools } from "./tools/session.js";
21
+ import { registerGoalTools } from "./tools/goal.js";
22
+ import { createActiveRunTracker } from "./server/activeRuns.js";
23
+ export { applyFileBlocks } from "./util/applyFileBlocks.js";
24
+ export * from "./server/toolDescriptions.js";
25
+ export function refreshConfigIfChanged({ configPath, registry, getActiveConfig, setActiveConfig, state, statSync = fs.statSync, loadConfig = loadComposerConfig, log = (message) => process.stderr.write(`${message}\n`), }) {
26
+ if (!configPath)
27
+ return;
28
+ let mtimeMs;
29
+ try {
30
+ mtimeMs = statSync(configPath).mtimeMs;
81
31
  }
82
- if (rejected.length > 0) {
83
- throw new Error(`composer_code_chain: refusing to apply paths outside projectDir ${projectRoot}: ${rejected.join(", ")}`);
32
+ catch (error) {
33
+ const detail = error instanceof Error ? error.message : String(error);
34
+ log(`composer config hot-reload skipped: failed to stat ${configPath}: ${detail}`);
35
+ return;
84
36
  }
85
- const files = [];
86
- for (const { rel, abs, content } of parsed) {
87
- const previous = fs.existsSync(abs) ? fs.readFileSync(abs, "utf8") : undefined;
88
- const status = previous === content ? "unchanged" : "changed";
89
- fs.mkdirSync(path.dirname(abs), { recursive: true });
90
- if (status === "changed") {
91
- fs.writeFileSync(abs, content, "utf8");
92
- }
93
- files.push({ path: rel, status });
37
+ if (state.lastConfigMtimeMs !== undefined &&
38
+ mtimeMs <= state.lastConfigMtimeMs) {
39
+ return;
94
40
  }
95
- return { files, rejected };
96
- }
97
- function isPathInside(candidate, root) {
98
- return candidate === root || candidate.startsWith(root + path.sep);
99
- }
100
- function nearestExistingParent(dir) {
101
- let current = dir;
102
- while (!fs.existsSync(current)) {
103
- const parent = path.dirname(current);
104
- if (parent === current)
105
- return current;
106
- current = parent;
107
- }
108
- return current;
109
- }
110
- function resolveProjectDir(projectDir, root) {
111
- const resolved = projectDir === undefined ? root : path.resolve(projectDir);
112
- if (projectDir !== undefined && !path.isAbsolute(projectDir)) {
113
- throw new Error(`projectDir must be an absolute path: ${projectDir}`);
41
+ try {
42
+ const nextConfig = loadConfig(configPath);
43
+ if (nextConfig === getActiveConfig()) {
44
+ state.lastConfigMtimeMs = mtimeMs;
45
+ return;
46
+ }
47
+ setActiveConfig(nextConfig);
48
+ registry.setConfig(nextConfig);
49
+ state.lastConfigMtimeMs = mtimeMs;
114
50
  }
115
- if (!fs.existsSync(resolved) || !fs.statSync(resolved).isDirectory()) {
116
- throw new Error(`projectDir must be an existing directory: ${resolved}`);
51
+ catch (error) {
52
+ const detail = error instanceof Error ? error.message : String(error);
53
+ log(`composer config hot-reload skipped: failed to load ${configPath}: ${detail}`);
117
54
  }
118
- return fs.realpathSync(resolved);
119
55
  }
120
56
  export function createComposerServer(registry, options = {}) {
121
57
  const root = path.resolve(options.root ?? process.cwd());
58
+ let activeConfig = options.config;
59
+ const configRefreshState = {};
60
+ let session = {};
61
+ const activeRuns = createActiveRunTracker();
122
62
  const server = new McpServer({
123
63
  name: "composer",
124
64
  version: "0.0.0",
@@ -126,281 +66,51 @@ export function createComposerServer(registry, options = {}) {
126
66
  // Per advisor pass 2026-05-23: tool annotations signal behaviour to the
127
67
  // orchestrator without changing execution. readOnlyHint / openWorldHint /
128
68
  // destructiveHint / idempotentHint are append-only per ADR 0001.
129
- server.registerTool(COMPOSER_RESEARCH, {
130
- description: RESEARCH_DESCRIPTION,
131
- inputSchema: {
132
- prompt: z.string().min(1),
133
- context: z.string().optional(),
134
- handoffPath: z.string().optional(),
135
- },
136
- annotations: {
137
- title: "Composer Research",
138
- readOnlyHint: true,
139
- openWorldHint: true,
140
- destructiveHint: false,
141
- idempotentHint: false,
142
- },
143
- }, async ({ prompt, context, handoffPath }, extra) => {
144
- const provider = registry.getProviderForRole("researcher");
145
- const result = await withProgress(extra, COMPOSER_RESEARCH, () => provider.execute({
146
- prompt,
147
- context: contextWithHandoff(root, context, handoffPath),
148
- signal: extra.signal,
149
- }));
150
- return { content: [{ type: "text", text: result.text }] };
151
- });
152
- server.registerTool(COMPOSER_CODE, {
153
- description: CODE_DESCRIPTION,
154
- inputSchema: {
155
- prompt: z.string().min(1),
156
- context: z.string().optional(),
157
- handoffPath: z.string().optional(),
158
- },
159
- annotations: {
160
- title: "Composer Code",
161
- readOnlyHint: false,
162
- openWorldHint: false,
163
- destructiveHint: false,
164
- idempotentHint: false,
165
- },
166
- }, async ({ prompt, context, handoffPath }, extra) => {
167
- const provider = registry.getProviderForRole("coder");
168
- const result = await withProgress(extra, COMPOSER_CODE, () => provider.execute({
169
- prompt,
170
- context: contextWithHandoff(root, context, handoffPath),
171
- signal: extra.signal,
172
- }));
173
- return { content: [{ type: "text", text: result.text }] };
174
- });
175
- server.registerTool(COMPOSER_REVIEW, {
176
- description: REVIEW_DESCRIPTION,
177
- inputSchema: {
178
- prompt: z.string().min(1),
179
- diff: z.string().min(1),
180
- handoffPath: z.string().optional(),
181
- },
182
- annotations: {
183
- title: "Composer Review",
184
- readOnlyHint: true,
185
- openWorldHint: false,
186
- destructiveHint: false,
187
- idempotentHint: true,
188
- },
189
- }, async ({ prompt, diff, handoffPath }, extra) => {
190
- const provider = registry.getProviderForRole("reviewer");
191
- const result = await withProgress(extra, COMPOSER_REVIEW, () => provider.execute({
192
- prompt,
193
- context: contextWithHandoff(root, diff, handoffPath),
194
- signal: extra.signal,
195
- }));
196
- return { content: [{ type: "text", text: result.text }] };
197
- });
198
- server.registerTool(COMPOSER_REVIEW_CLAUDE, {
199
- description: REVIEW_CLAUDE_DESCRIPTION,
200
- inputSchema: {
201
- prompt: z.string().min(1),
202
- diff: z.string().min(1),
203
- handoffPath: z.string().optional(),
204
- },
205
- annotations: {
206
- title: "Composer Review (Claude Premium)",
207
- readOnlyHint: true,
208
- openWorldHint: false,
209
- destructiveHint: false,
210
- idempotentHint: true,
211
- },
212
- }, async ({ prompt, diff, handoffPath }, extra) => {
213
- const provider = registry.getProviderForRole("reviewerClaude");
214
- const result = await withProgress(extra, COMPOSER_REVIEW_CLAUDE, () => provider.execute({
215
- prompt,
216
- context: contextWithHandoff(root, diff, handoffPath),
217
- cwd: root,
218
- signal: extra.signal,
219
- }));
220
- return { content: [{ type: "text", text: result.text }] };
221
- });
222
- server.registerTool(COMPOSER_CODE_CHAIN, {
223
- description: CODE_CHAIN_DESCRIPTION,
224
- inputSchema: {
225
- prompt: z.string().min(1),
226
- context: z.string().optional(),
227
- handoffPath: z.string().optional(),
228
- projectDir: z.string().optional(),
229
- },
230
- annotations: {
231
- title: "Composer Code (GLM author -> CLI apply)",
232
- readOnlyHint: false,
233
- openWorldHint: false,
234
- destructiveHint: true,
235
- idempotentHint: false,
69
+ const ctx = {
70
+ server,
71
+ registry,
72
+ root,
73
+ options,
74
+ getActiveConfig: () => activeConfig,
75
+ setActiveConfig: (c) => {
76
+ activeConfig = c;
236
77
  },
237
- }, async ({ prompt, context, handoffPath, projectDir }, extra) => {
238
- const targetRoot = resolveProjectDir(projectDir, root);
239
- // Stage 1: GLM authors the code off-CC (returns full file contents).
240
- const gen = registry.getProviderForRole("coder");
241
- const genPrompt = prompt +
242
- `\n\nTARGET PROJECT DIR: ${targetRoot}. All FILE paths must be relative to this directory.` +
243
- "\n\nOUTPUT FORMAT: give the COMPLETE contents of every file to " +
244
- "create or modify. For each file, write a line `FILE: <relative/path>` " +
245
- "followed by a fenced code block with the full file content. No " +
246
- "abbreviations, no placeholders, no commentary outside the blocks.";
247
- const authored = await withProgress(extra, COMPOSER_CODE_CHAIN, () => gen.execute({
248
- prompt: genPrompt,
249
- context: contextWithHandoff(root, context, handoffPath),
250
- cwd: root,
251
- signal: extra.signal,
252
- }));
253
- // Stage 2: server applies GLM's FILE: blocks deterministically (off-CC,
254
- // no LLM transcription step — an executor cannot fabricate the apply).
255
- const { files } = applyFileBlocks(authored.text, targetRoot);
256
- const changed = files.filter((file) => file.status === "changed");
257
- if (changed.length === 0) {
258
- throw new Error(`composer_code_chain: apply produced no changes — check projectDir (server cwd is ${process.cwd()}, target was ${targetRoot}); nothing was modified`);
259
- }
260
- const summary = `GLM authored + applied off-CC in projectDir ${targetRoot}. ` +
261
- `Changed ${changed.length}/${files.length} file(s): ` +
262
- files.map((file) => `${file.path}=${file.status}`).join(", ") + ".";
263
- return { content: [{ type: "text", text: summary }] };
264
- });
265
- server.registerTool(COMPOSER_CODE_CLI, {
266
- description: CODE_CLI_DESCRIPTION,
267
- inputSchema: {
268
- prompt: z.string().min(1),
269
- context: z.string().optional(),
270
- handoffPath: z.string().optional(),
271
- projectDir: z.string().optional(),
272
- },
273
- annotations: {
274
- title: "Composer Code (CLI apply)",
275
- readOnlyHint: false,
276
- openWorldHint: false,
277
- destructiveHint: true,
278
- idempotentHint: false,
279
- },
280
- }, async ({ prompt, context, handoffPath, projectDir }, extra) => {
281
- const targetRoot = resolveProjectDir(projectDir, root);
282
- const provider = registry.getProviderForRole("coderCli");
283
- const result = await withProgress(extra, COMPOSER_CODE_CLI, () => provider.execute({
284
- prompt,
285
- context: contextWithHandoff(root, context, handoffPath),
286
- cwd: root,
287
- projectDir: projectDir === undefined ? undefined : targetRoot,
288
- signal: extra.signal,
289
- }));
290
- return { content: [{ type: "text", text: result.text }] };
291
- });
292
- server.registerTool(COMPOSER_HANDOFF_CREATE, {
293
- description: HANDOFF_CREATE_DESCRIPTION,
294
- inputSchema: {
295
- objective: z.string().min(1),
296
- contextSummary: z.string().optional(),
297
- constraints: z.array(z.string().min(1)).optional(),
298
- relevantFiles: z.array(z.string().min(1)).optional(),
299
- acceptanceCriteria: z.array(z.string().min(1)).optional(),
300
- decisions: z.array(z.string().min(1)).optional(),
301
- openQuestions: z.array(z.string().min(1)).optional(),
302
- artifacts: z
303
- .array(z.object({
304
- kind: z.enum(["research", "code", "review", "test", "note"]),
305
- summary: z.string().min(1),
306
- path: z.string().min(1).optional(),
307
- source: z.string().min(1).optional(),
308
- }))
309
- .optional(),
310
- briefPath: z.string().optional(),
311
- },
312
- annotations: {
313
- title: "Composer Handoff Create",
314
- readOnlyHint: false,
315
- openWorldHint: false,
316
- destructiveHint: false,
317
- idempotentHint: false,
318
- },
319
- }, async ({ objective, contextSummary, constraints, relevantFiles, acceptanceCriteria, decisions, openQuestions, artifacts, briefPath, }) => {
320
- const packet = newHandoffPacket({
321
- objective,
322
- contextSummary,
323
- constraints,
324
- relevantFiles,
325
- acceptanceCriteria,
326
- decisions,
327
- openQuestions,
328
- artifacts: artifacts,
329
- briefPath,
330
- });
331
- const handoffPath = writeHandoffPacket(packet, path.resolve(root, HANDOFF_DIR));
332
- const response = {
333
- runId: packet.runId,
334
- handoffPath,
335
- objective: packet.objective,
336
- };
337
- return {
338
- content: [{ type: "text", text: JSON.stringify(response, null, 2) }],
339
- };
340
- });
341
- return server;
342
- }
343
- function contextWithHandoff(root, context, handoffPath) {
344
- const blocks = [];
345
- if (handoffPath) {
346
- const handoff = readHandoffPacket(handoffPath, root);
347
- blocks.push(formatHandoffForPrompt(handoff));
348
- }
349
- if (context)
350
- blocks.push(context);
351
- return blocks.length > 0 ? blocks.join("\n\n") : undefined;
352
- }
353
- async function withProgress(extra, label, work) {
354
- const reporter = createProgressReporter(extra, label);
355
- await reporter.report("started");
356
- try {
357
- const result = await work();
358
- await reporter.report("completed");
359
- return result;
360
- }
361
- catch (error) {
362
- await reporter.report("failed");
363
- throw error;
364
- }
365
- finally {
366
- reporter.stop();
367
- }
368
- }
369
- function createProgressReporter(extra, label) {
370
- const progressToken = extra._meta?.progressToken;
371
- let progress = 0;
372
- let active = true;
373
- const report = async (state) => {
374
- if (!active || progressToken === undefined || !extra.sendNotification) {
375
- return;
376
- }
377
- progress += 1;
378
- try {
379
- await extra.sendNotification({
380
- method: "notifications/progress",
381
- params: {
382
- progressToken,
383
- progress,
384
- message: `${label} ${state}`,
78
+ refreshConfigIfChanged: () => {
79
+ refreshConfigIfChanged({
80
+ configPath: options.configPath,
81
+ registry,
82
+ getActiveConfig: () => activeConfig,
83
+ setActiveConfig: (c) => {
84
+ activeConfig = c;
385
85
  },
86
+ state: configRefreshState,
386
87
  });
387
- }
388
- catch {
389
- // Progress is advisory; never fail the tool because a client ignores it.
390
- }
391
- };
392
- const timer = progressToken !== undefined && extra.sendNotification
393
- ? setInterval(() => {
394
- void report("still running");
395
- }, 30_000)
396
- : undefined;
397
- return {
398
- report,
399
- stop: () => {
400
- active = false;
401
- if (timer)
402
- clearInterval(timer);
403
88
  },
89
+ getSession: () => ({ ...session, ...(session.oracle ? { oracle: { ...session.oracle } } : {}) }),
90
+ setSession: (patch) => {
91
+ session = {
92
+ ...session,
93
+ ...patch,
94
+ ...(patch.oracle ? { oracle: { ...session.oracle, ...patch.oracle } } : {}),
95
+ };
96
+ return { ...session, ...(session.oracle ? { oracle: { ...session.oracle } } : {}) };
97
+ },
98
+ resetSession: () => { session = {}; },
99
+ activeRuns,
404
100
  };
101
+ registerResearchTools(ctx);
102
+ registerCodeTools(ctx);
103
+ registerReviewTools(ctx);
104
+ registerOracleTools(ctx);
105
+ registerHandoffTools(ctx);
106
+ registerCodexLifecycleTools(ctx);
107
+ registerConfigTools(ctx);
108
+ registerRouteTools(ctx);
109
+ registerAuditTools(ctx);
110
+ registerSessionTools(ctx);
111
+ registerWorkflowTools(ctx);
112
+ registerGoalTools(ctx);
113
+ registerStatusTools(ctx);
114
+ return server;
405
115
  }
406
116
  //# 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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"}
@@ -0,0 +1,2 @@
1
+ import type { ServerToolContext } from "./context.js";
2
+ export declare function registerAuditTools(ctx: ServerToolContext): void;
@@ -0,0 +1,66 @@
1
+ import { z } from "zod";
2
+ import { appendAuditEvent, readAuditEvents, renderAuditMarkdown, summarizeAudit } from "../util/auditLog.js";
3
+ import { COMPOSER_AUDIT_RECORD, COMPOSER_AUDIT_READ, AUDIT_RECORD_DESCRIPTION, AUDIT_READ_DESCRIPTION, COMPOSER_AUDIT_SUMMARY, AUDIT_SUMMARY_DESCRIPTION } from "../server/toolDescriptions.js";
4
+ export function registerAuditTools(ctx) {
5
+ const { server } = ctx;
6
+ server.registerTool(COMPOSER_AUDIT_RECORD, {
7
+ description: AUDIT_RECORD_DESCRIPTION,
8
+ inputSchema: {
9
+ kind: z.enum(["route-decision", "tool-call", "review", "test", "outcome", "note"]),
10
+ runId: z.string().optional(),
11
+ objective: z.string().optional(),
12
+ taskClass: z.string().optional(),
13
+ route: z.string().optional(),
14
+ tool: z.string().optional(),
15
+ provider: z.string().optional(),
16
+ expectedOutputTokens: z.number().int().nonnegative().optional(),
17
+ changedFiles: z.number().int().nonnegative().optional(),
18
+ diffLines: z.number().int().nonnegative().optional(),
19
+ reviewVerdict: z.string().optional(),
20
+ testsPassed: z.boolean().optional(),
21
+ userCorrection: z.boolean().optional(),
22
+ status: z.enum(["succeeded", "failed", "partial"]).optional(),
23
+ note: z.string().optional(),
24
+ },
25
+ annotations: {
26
+ title: "Composer Audit Record",
27
+ readOnlyHint: false,
28
+ destructiveHint: false,
29
+ idempotentHint: false,
30
+ openWorldHint: false,
31
+ },
32
+ }, async (input) => {
33
+ const event = appendAuditEvent(ctx.root, input);
34
+ return { content: [{ type: "text", text: JSON.stringify(event, null, 2) }] };
35
+ });
36
+ server.registerTool(COMPOSER_AUDIT_READ, {
37
+ description: AUDIT_READ_DESCRIPTION,
38
+ inputSchema: {
39
+ runId: z.string().optional(),
40
+ limit: z.number().int().min(1).max(1000).optional(),
41
+ format: z.enum(["json", "markdown"]).optional(),
42
+ },
43
+ annotations: {
44
+ title: "Composer Audit Read",
45
+ readOnlyHint: true,
46
+ idempotentHint: true,
47
+ openWorldHint: false,
48
+ destructiveHint: false,
49
+ },
50
+ }, async ({ runId, limit, format }) => {
51
+ const events = readAuditEvents(ctx.root, { limit, runId });
52
+ const text = format === "markdown"
53
+ ? renderAuditMarkdown(events)
54
+ : JSON.stringify(events, null, 2);
55
+ return { content: [{ type: "text", text }] };
56
+ });
57
+ server.registerTool(COMPOSER_AUDIT_SUMMARY, {
58
+ description: AUDIT_SUMMARY_DESCRIPTION,
59
+ inputSchema: { limit: z.number().int().min(1).max(10000).optional() },
60
+ annotations: { title: "Composer Audit Summary", readOnlyHint: true, openWorldHint: false, destructiveHint: false, idempotentHint: true },
61
+ }, async ({ limit }) => {
62
+ const events = readAuditEvents(ctx.root, { limit: limit ?? 1000 });
63
+ return { content: [{ type: "text", text: JSON.stringify(summarizeAudit(events), null, 2) }] };
64
+ });
65
+ }
66
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/tools/audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ServerToolContext } from "./context.js";
2
+ export declare function registerCodeTools(ctx: ServerToolContext): void;