agent-composer 0.3.0 → 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 (181) 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 +23 -1
  52. package/dist/providers/CLIProvider.js +283 -65
  53. package/dist/providers/CLIProvider.js.map +1 -1
  54. package/dist/providers/IProvider.d.ts +13 -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 -21
  80. package/dist/server.js +90 -330
  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/plugin.json +1 -1
  176. package/plugin/composer-mastermind/skills/composer-mastermind/SKILL.md +190 -4
  177. package/scripts/composer-oracle-router-safe.sh +47 -0
  178. package/scripts/composer-statusline-segment.mjs +40 -0
  179. package/scripts/oracle-codex-handoff-safe.sh +49 -0
  180. package/scripts/oracle-plan-mcp.sh +66 -0
  181. package/scripts/oracle-pro-safe.sh +471 -0
package/dist/server.js CHANGED
@@ -3,80 +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). Guards against path traversal.
56
- */
57
- export function applyFileBlocks(text, root) {
58
- const written = [];
59
- const skipped = [];
60
- const re = /FILE:\s*(\S+)[^\n]*\n```[^\n]*\n([\s\S]*?)```/g;
61
- let m;
62
- while ((m = re.exec(text)) !== null) {
63
- const rel = (m[1] ?? "").trim();
64
- const content = m[2] ?? "";
65
- if (!rel)
66
- continue;
67
- const abs = path.resolve(root, rel);
68
- if (abs !== root && !abs.startsWith(root + path.sep)) {
69
- skipped.push(rel + " (outside root)");
70
- continue;
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;
31
+ }
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;
36
+ }
37
+ if (state.lastConfigMtimeMs !== undefined &&
38
+ mtimeMs <= state.lastConfigMtimeMs) {
39
+ return;
40
+ }
41
+ try {
42
+ const nextConfig = loadConfig(configPath);
43
+ if (nextConfig === getActiveConfig()) {
44
+ state.lastConfigMtimeMs = mtimeMs;
45
+ return;
71
46
  }
72
- fs.mkdirSync(path.dirname(abs), { recursive: true });
73
- fs.writeFileSync(abs, content, "utf8");
74
- written.push(rel);
47
+ setActiveConfig(nextConfig);
48
+ registry.setConfig(nextConfig);
49
+ state.lastConfigMtimeMs = mtimeMs;
50
+ }
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}`);
75
54
  }
76
- return { written, skipped };
77
55
  }
78
56
  export function createComposerServer(registry, options = {}) {
79
57
  const root = path.resolve(options.root ?? process.cwd());
58
+ let activeConfig = options.config;
59
+ const configRefreshState = {};
60
+ let session = {};
61
+ const activeRuns = createActiveRunTracker();
80
62
  const server = new McpServer({
81
63
  name: "composer",
82
64
  version: "0.0.0",
@@ -84,273 +66,51 @@ export function createComposerServer(registry, options = {}) {
84
66
  // Per advisor pass 2026-05-23: tool annotations signal behaviour to the
85
67
  // orchestrator without changing execution. readOnlyHint / openWorldHint /
86
68
  // destructiveHint / idempotentHint are append-only per ADR 0001.
87
- server.registerTool(COMPOSER_RESEARCH, {
88
- description: RESEARCH_DESCRIPTION,
89
- inputSchema: {
90
- prompt: z.string().min(1),
91
- context: z.string().optional(),
92
- handoffPath: z.string().optional(),
93
- },
94
- annotations: {
95
- title: "Composer Research",
96
- readOnlyHint: true,
97
- openWorldHint: true,
98
- destructiveHint: false,
99
- idempotentHint: false,
100
- },
101
- }, async ({ prompt, context, handoffPath }, extra) => {
102
- const provider = registry.getProviderForRole("researcher");
103
- const result = await withProgress(extra, COMPOSER_RESEARCH, () => provider.execute({
104
- prompt,
105
- context: contextWithHandoff(root, context, handoffPath),
106
- signal: extra.signal,
107
- }));
108
- return { content: [{ type: "text", text: result.text }] };
109
- });
110
- server.registerTool(COMPOSER_CODE, {
111
- description: CODE_DESCRIPTION,
112
- inputSchema: {
113
- prompt: z.string().min(1),
114
- context: z.string().optional(),
115
- handoffPath: z.string().optional(),
116
- },
117
- annotations: {
118
- title: "Composer Code",
119
- readOnlyHint: false,
120
- openWorldHint: false,
121
- destructiveHint: false,
122
- idempotentHint: false,
123
- },
124
- }, async ({ prompt, context, handoffPath }, extra) => {
125
- const provider = registry.getProviderForRole("coder");
126
- const result = await withProgress(extra, COMPOSER_CODE, () => provider.execute({
127
- prompt,
128
- context: contextWithHandoff(root, context, handoffPath),
129
- signal: extra.signal,
130
- }));
131
- return { content: [{ type: "text", text: result.text }] };
132
- });
133
- server.registerTool(COMPOSER_REVIEW, {
134
- description: REVIEW_DESCRIPTION,
135
- inputSchema: {
136
- prompt: z.string().min(1),
137
- diff: z.string().min(1),
138
- handoffPath: z.string().optional(),
139
- },
140
- annotations: {
141
- title: "Composer Review",
142
- readOnlyHint: true,
143
- openWorldHint: false,
144
- destructiveHint: false,
145
- idempotentHint: true,
146
- },
147
- }, async ({ prompt, diff, handoffPath }, extra) => {
148
- const provider = registry.getProviderForRole("reviewer");
149
- const result = await withProgress(extra, COMPOSER_REVIEW, () => provider.execute({
150
- prompt,
151
- context: contextWithHandoff(root, diff, handoffPath),
152
- signal: extra.signal,
153
- }));
154
- return { content: [{ type: "text", text: result.text }] };
155
- });
156
- server.registerTool(COMPOSER_REVIEW_CLAUDE, {
157
- description: REVIEW_CLAUDE_DESCRIPTION,
158
- inputSchema: {
159
- prompt: z.string().min(1),
160
- diff: z.string().min(1),
161
- handoffPath: z.string().optional(),
162
- },
163
- annotations: {
164
- title: "Composer Review (Claude Premium)",
165
- readOnlyHint: true,
166
- openWorldHint: false,
167
- destructiveHint: false,
168
- idempotentHint: true,
169
- },
170
- }, async ({ prompt, diff, handoffPath }, extra) => {
171
- const provider = registry.getProviderForRole("reviewerClaude");
172
- const result = await withProgress(extra, COMPOSER_REVIEW_CLAUDE, () => provider.execute({
173
- prompt,
174
- context: contextWithHandoff(root, diff, handoffPath),
175
- cwd: root,
176
- signal: extra.signal,
177
- }));
178
- return { content: [{ type: "text", text: result.text }] };
179
- });
180
- server.registerTool(COMPOSER_CODE_CHAIN, {
181
- description: CODE_CHAIN_DESCRIPTION,
182
- inputSchema: {
183
- prompt: z.string().min(1),
184
- context: z.string().optional(),
185
- handoffPath: z.string().optional(),
186
- },
187
- annotations: {
188
- title: "Composer Code (GLM author -> CLI apply)",
189
- readOnlyHint: false,
190
- openWorldHint: false,
191
- destructiveHint: true,
192
- idempotentHint: false,
193
- },
194
- }, async ({ prompt, context, handoffPath }, extra) => {
195
- // Stage 1: GLM authors the code off-CC (returns full file contents).
196
- const gen = registry.getProviderForRole("coder");
197
- const genPrompt = prompt +
198
- "\n\nOUTPUT FORMAT: give the COMPLETE contents of every file to " +
199
- "create or modify. For each file, write a line `FILE: <relative/path>` " +
200
- "followed by a fenced code block with the full file content. No " +
201
- "abbreviations, no placeholders, no commentary outside the blocks.";
202
- const authored = await withProgress(extra, COMPOSER_CODE_CHAIN, () => gen.execute({
203
- prompt: genPrompt,
204
- context: contextWithHandoff(root, context, handoffPath),
205
- signal: extra.signal,
206
- }));
207
- // Stage 2: server applies GLM's FILE: blocks deterministically (off-CC,
208
- // no LLM transcription step — an executor cannot fabricate the apply).
209
- const { written, skipped } = applyFileBlocks(authored.text, root);
210
- const summary = written.length > 0
211
- ? `GLM authored + applied off-CC. Wrote ${written.length} file(s): ${written.join(", ")}.` +
212
- (skipped.length ? ` Skipped: ${skipped.join(", ")}.` : "")
213
- : "GLM authored but produced NO parseable FILE: blocks — nothing written. " +
214
- "Re-issue with explicit 'FILE: <path>' + fenced-block formatting, or " +
215
- "use composer_code_cli (CLI executor authors+applies) instead.";
216
- return { content: [{ type: "text", text: summary }] };
217
- });
218
- server.registerTool(COMPOSER_CODE_CLI, {
219
- description: CODE_CLI_DESCRIPTION,
220
- inputSchema: {
221
- prompt: z.string().min(1),
222
- context: z.string().optional(),
223
- handoffPath: z.string().optional(),
224
- },
225
- annotations: {
226
- title: "Composer Code (CLI apply)",
227
- readOnlyHint: false,
228
- openWorldHint: false,
229
- destructiveHint: true,
230
- idempotentHint: false,
231
- },
232
- }, async ({ prompt, context, handoffPath }, extra) => {
233
- const provider = registry.getProviderForRole("coderCli");
234
- const result = await withProgress(extra, COMPOSER_CODE_CLI, () => provider.execute({
235
- prompt,
236
- context: contextWithHandoff(root, context, handoffPath),
237
- cwd: root,
238
- signal: extra.signal,
239
- }));
240
- return { content: [{ type: "text", text: result.text }] };
241
- });
242
- server.registerTool(COMPOSER_HANDOFF_CREATE, {
243
- description: HANDOFF_CREATE_DESCRIPTION,
244
- inputSchema: {
245
- objective: z.string().min(1),
246
- contextSummary: z.string().optional(),
247
- constraints: z.array(z.string().min(1)).optional(),
248
- relevantFiles: z.array(z.string().min(1)).optional(),
249
- acceptanceCriteria: z.array(z.string().min(1)).optional(),
250
- decisions: z.array(z.string().min(1)).optional(),
251
- openQuestions: z.array(z.string().min(1)).optional(),
252
- artifacts: z
253
- .array(z.object({
254
- kind: z.enum(["research", "code", "review", "test", "note"]),
255
- summary: z.string().min(1),
256
- path: z.string().min(1).optional(),
257
- source: z.string().min(1).optional(),
258
- }))
259
- .optional(),
260
- briefPath: z.string().optional(),
261
- },
262
- annotations: {
263
- title: "Composer Handoff Create",
264
- readOnlyHint: false,
265
- openWorldHint: false,
266
- destructiveHint: false,
267
- idempotentHint: false,
69
+ const ctx = {
70
+ server,
71
+ registry,
72
+ root,
73
+ options,
74
+ getActiveConfig: () => activeConfig,
75
+ setActiveConfig: (c) => {
76
+ activeConfig = c;
268
77
  },
269
- }, async ({ objective, contextSummary, constraints, relevantFiles, acceptanceCriteria, decisions, openQuestions, artifacts, briefPath, }) => {
270
- const packet = newHandoffPacket({
271
- objective,
272
- contextSummary,
273
- constraints,
274
- relevantFiles,
275
- acceptanceCriteria,
276
- decisions,
277
- openQuestions,
278
- artifacts: artifacts,
279
- briefPath,
280
- });
281
- const handoffPath = writeHandoffPacket(packet, path.resolve(root, HANDOFF_DIR));
282
- const response = {
283
- runId: packet.runId,
284
- handoffPath,
285
- objective: packet.objective,
286
- };
287
- return {
288
- content: [{ type: "text", text: JSON.stringify(response, null, 2) }],
289
- };
290
- });
291
- return server;
292
- }
293
- function contextWithHandoff(root, context, handoffPath) {
294
- const blocks = [];
295
- if (handoffPath) {
296
- const handoff = readHandoffPacket(handoffPath, root);
297
- blocks.push(formatHandoffForPrompt(handoff));
298
- }
299
- if (context)
300
- blocks.push(context);
301
- return blocks.length > 0 ? blocks.join("\n\n") : undefined;
302
- }
303
- async function withProgress(extra, label, work) {
304
- const reporter = createProgressReporter(extra, label);
305
- await reporter.report("started");
306
- try {
307
- const result = await work();
308
- await reporter.report("completed");
309
- return result;
310
- }
311
- catch (error) {
312
- await reporter.report("failed");
313
- throw error;
314
- }
315
- finally {
316
- reporter.stop();
317
- }
318
- }
319
- function createProgressReporter(extra, label) {
320
- const progressToken = extra._meta?.progressToken;
321
- let progress = 0;
322
- let active = true;
323
- const report = async (state) => {
324
- if (!active || progressToken === undefined || !extra.sendNotification) {
325
- return;
326
- }
327
- progress += 1;
328
- try {
329
- await extra.sendNotification({
330
- method: "notifications/progress",
331
- params: {
332
- progressToken,
333
- progress,
334
- message: `${label} ${state}`,
78
+ refreshConfigIfChanged: () => {
79
+ refreshConfigIfChanged({
80
+ configPath: options.configPath,
81
+ registry,
82
+ getActiveConfig: () => activeConfig,
83
+ setActiveConfig: (c) => {
84
+ activeConfig = c;
335
85
  },
86
+ state: configRefreshState,
336
87
  });
337
- }
338
- catch {
339
- // Progress is advisory; never fail the tool because a client ignores it.
340
- }
341
- };
342
- const timer = progressToken !== undefined && extra.sendNotification
343
- ? setInterval(() => {
344
- void report("still running");
345
- }, 30_000)
346
- : undefined;
347
- return {
348
- report,
349
- stop: () => {
350
- active = false;
351
- if (timer)
352
- clearInterval(timer);
353
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,
354
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;
355
115
  }
356
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;