@adhd/agent-mcp 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -1
- package/src/engine/hooks.d.ts +7 -0
- package/src/engine/hooks.d.ts.map +1 -0
- package/src/engine/hooks.js +26 -0
- package/src/engine/hooks.js.map +1 -0
- package/src/engine/orchestrator.d.ts +2 -0
- package/src/engine/orchestrator.d.ts.map +1 -1
- package/src/engine/orchestrator.js +50 -1
- package/src/engine/orchestrator.js.map +1 -1
- package/src/index.js +6 -2
- package/src/index.js.map +1 -1
- package/src/providers/anthropic.d.ts +1 -1
- package/src/providers/anthropic.d.ts.map +1 -1
- package/src/providers/anthropic.js +133 -3
- package/src/providers/anthropic.js.map +1 -1
- package/src/providers/claudecli.d.ts +66 -0
- package/src/providers/claudecli.d.ts.map +1 -0
- package/src/providers/claudecli.js +331 -0
- package/src/providers/claudecli.js.map +1 -0
- package/src/providers/factory.d.ts +5 -2
- package/src/providers/factory.d.ts.map +1 -1
- package/src/providers/factory.js +7 -1
- package/src/providers/factory.js.map +1 -1
- package/src/providers/types.d.ts +14 -11
- package/src/providers/types.d.ts.map +1 -1
- package/src/server.d.ts +2 -0
- package/src/server.d.ts.map +1 -1
- package/src/server.js +95 -27
- package/src/server.js.map +1 -1
- package/src/store/agent-store.d.ts +3 -1
- package/src/store/agent-store.d.ts.map +1 -1
- package/src/store/agent-store.js +8 -5
- package/src/store/agent-store.js.map +1 -1
- package/src/store/session-store.d.ts +3 -1
- package/src/store/session-store.d.ts.map +1 -1
- package/src/store/session-store.js +6 -2
- package/src/store/session-store.js.map +1 -1
- package/src/tools/task.d.ts +7 -2
- package/src/tools/task.d.ts.map +1 -1
- package/src/tools/task.js +92 -3
- package/src/tools/task.js.map +1 -1
- package/src/validation/agent.d.ts +35 -3
- package/src/validation/agent.d.ts.map +1 -1
- package/src/validation/agent.js +19 -0
- package/src/validation/agent.js.map +1 -1
- package/src/validation/errors.d.ts +5 -3
- package/src/validation/errors.d.ts.map +1 -1
- package/src/validation/errors.js.map +1 -1
- package/src/validation/execution.d.ts +9 -1
- package/src/validation/execution.d.ts.map +1 -1
- package/src/validation/mcp.d.ts +1 -2
- package/src/validation/mcp.d.ts.map +1 -1
- package/src/validation/message.d.ts +1 -4
- package/src/validation/message.d.ts.map +1 -1
- package/src/validation/message.js.map +1 -1
- package/src/validation/session.d.ts +2 -2
- package/src/validation/session.d.ts.map +1 -1
- package/src/validation/task.d.ts +9 -6
- package/src/validation/task.d.ts.map +1 -1
- package/src/validation/task.js +8 -1
- package/src/validation/task.js.map +1 -1
- package/drizzle/0000_nifty_sasquatch.sql +0 -55
- package/drizzle/meta/0000_snapshot.json +0 -387
- package/drizzle/meta/_journal.json +0 -13
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClaudeCliProvider — drives the local `claude` CLI (Claude Code) as an LLM
|
|
3
|
+
* backend using a persistent subprocess with bidirectional stream-json I/O.
|
|
4
|
+
*
|
|
5
|
+
* Auth: uses whatever credentials Claude Code already has configured
|
|
6
|
+
* (subscription, API key, OAuth — whatever `claude auth status` shows).
|
|
7
|
+
*
|
|
8
|
+
* Flags applied on every invocation:
|
|
9
|
+
* --system-prompt Replace Claude Code's default prompt with the agent's prompt
|
|
10
|
+
* --mcp-config <tempfile> Writes the agent's mcpServers to a temp JSON file; path passed here
|
|
11
|
+
* --strict-mcp-config Ignore all other MCP configs; only load what we pass
|
|
12
|
+
* --input-format stream-json Accept NDJSON messages on stdin
|
|
13
|
+
* --output-format stream-json Emit NDJSON events on stdout
|
|
14
|
+
* --verbose Emit full event stream including tool calls and results
|
|
15
|
+
*
|
|
16
|
+
* --disallowedTools <name> (×N) — one pair per built-in not in allowedBuiltinTools.
|
|
17
|
+
* All Claude Code built-ins are blocked by default; only tools explicitly listed
|
|
18
|
+
* in the agent definition's allowedBuiltinTools field are permitted. MCP tools
|
|
19
|
+
* (from --mcp-config) are unaffected.
|
|
20
|
+
*
|
|
21
|
+
* ⚠️ --tools "" is NOT used — it disables MCP tools as well as built-ins.
|
|
22
|
+
* ⚠️ --bare is NOT used — it blocks --mcp-config from loading entirely.
|
|
23
|
+
*
|
|
24
|
+
* Tool loop: when Claude Code emits a tool_use block, we execute it via the
|
|
25
|
+
* request.executeTool callback (wired by the orchestrator to the McpClientRegistry)
|
|
26
|
+
* and write a tool_result message back to stdin. This continues until Claude
|
|
27
|
+
* emits a "result" event, at which point chat() resolves with stopReason "completed".
|
|
28
|
+
*
|
|
29
|
+
* ⚠️ KNOWN ISSUE: Claude Code may crash with
|
|
30
|
+
* "Z is not an Object. (evaluating '"tool_use_id"in Z')"
|
|
31
|
+
* when a tool_result is written to stdin. This is a suspected Claude Code bug
|
|
32
|
+
* (github.com/anthropics/claude-code/issues/24594). If you hit this, the
|
|
33
|
+
* provider will throw PROVIDER_ERROR and the task will fail. Fall back to the
|
|
34
|
+
* anthropic provider with useClaudeOauth: true for a fully supported path.
|
|
35
|
+
*/
|
|
36
|
+
import { spawn, execFile } from "child_process";
|
|
37
|
+
import readline from "readline";
|
|
38
|
+
import { promisify } from "util";
|
|
39
|
+
import { writeFile, unlink } from "fs/promises";
|
|
40
|
+
import { tmpdir } from "os";
|
|
41
|
+
import { join } from "path";
|
|
42
|
+
const execFileAsync = promisify(execFile);
|
|
43
|
+
import { generateId } from "../utils/ids.js";
|
|
44
|
+
import { nowIso } from "../utils/timestamps.js";
|
|
45
|
+
// ─── history encoding (for multi-task sessions) ───────────────────────────────
|
|
46
|
+
/**
|
|
47
|
+
* Encodes prior session messages as a text block prepended to the current prompt.
|
|
48
|
+
* Only needed when the session has history from prior tasks — within a single task,
|
|
49
|
+
* Claude Code handles its own context via the stream-json tool loop.
|
|
50
|
+
*
|
|
51
|
+
* If there is only one non-system message, it is returned verbatim.
|
|
52
|
+
*/
|
|
53
|
+
function buildUserMessage(messages) {
|
|
54
|
+
const nonSystem = messages.filter(m => m.role !== "system");
|
|
55
|
+
if (nonSystem.length === 0)
|
|
56
|
+
return "";
|
|
57
|
+
if (nonSystem.length === 1)
|
|
58
|
+
return nonSystem[0].content ?? "";
|
|
59
|
+
const history = nonSystem.slice(0, -1);
|
|
60
|
+
const last = nonSystem[nonSystem.length - 1];
|
|
61
|
+
const lines = ["[Conversation history]"];
|
|
62
|
+
for (const msg of history) {
|
|
63
|
+
const label = msg.role === "user" ? "User" :
|
|
64
|
+
msg.role === "assistant" ? "Assistant" :
|
|
65
|
+
msg.role === "tool" ? "Tool result" : "System";
|
|
66
|
+
const body = msg.content ??
|
|
67
|
+
(msg.toolCalls ? `[called tools: ${msg.toolCalls.map(tc => tc.tool).join(", ")}]` : "");
|
|
68
|
+
lines.push(`${label}: ${body}`);
|
|
69
|
+
}
|
|
70
|
+
lines.push("", "[Current message]", last.content ?? "");
|
|
71
|
+
return lines.join("\n");
|
|
72
|
+
}
|
|
73
|
+
// ─── built-in tool list ───────────────────────────────────────────────────────
|
|
74
|
+
/**
|
|
75
|
+
* Complete list of Claude Code built-in tool names (as of Claude Code 1.x).
|
|
76
|
+
* All of these are disallowed by default for claudecli agents; only tools
|
|
77
|
+
* listed in the agent's `allowedBuiltinTools` are permitted. MCP tools
|
|
78
|
+
* (loaded via --mcp-config) are unaffected by this list.
|
|
79
|
+
*/
|
|
80
|
+
const CLAUDE_CODE_BUILTIN_TOOLS = [
|
|
81
|
+
"Bash",
|
|
82
|
+
"Edit",
|
|
83
|
+
"MultiEdit",
|
|
84
|
+
"Read",
|
|
85
|
+
"Write",
|
|
86
|
+
"Glob",
|
|
87
|
+
"Grep",
|
|
88
|
+
"LS",
|
|
89
|
+
"WebFetch",
|
|
90
|
+
"WebSearch",
|
|
91
|
+
"TodoRead",
|
|
92
|
+
"TodoWrite",
|
|
93
|
+
"NotebookRead",
|
|
94
|
+
"NotebookEdit",
|
|
95
|
+
"Task",
|
|
96
|
+
];
|
|
97
|
+
// ─── provider ────────────────────────────────────────────────────────────────
|
|
98
|
+
export class ClaudeCliProvider {
|
|
99
|
+
config;
|
|
100
|
+
mcpServers;
|
|
101
|
+
constructor(config, mcpServers = {}) {
|
|
102
|
+
this.config = config;
|
|
103
|
+
this.mcpServers = mcpServers;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Build the subprocess environment. Inherits the parent process env and,
|
|
107
|
+
* on macOS, tries to inject ANTHROPIC_AUTH_TOKEN from the Claude Code keychain.
|
|
108
|
+
* This is required when --bare is set, because --bare skips the settings
|
|
109
|
+
* discovery that normally loads Claude Code's auth configuration.
|
|
110
|
+
*/
|
|
111
|
+
async buildSubprocessEnv() {
|
|
112
|
+
const env = { ...process.env };
|
|
113
|
+
// If an explicit auth token env var is already present, nothing to do
|
|
114
|
+
if (env["ANTHROPIC_AUTH_TOKEN"] || env["ANTHROPIC_API_KEY"]) {
|
|
115
|
+
return env;
|
|
116
|
+
}
|
|
117
|
+
// Try macOS keychain — same store as useClaudeOauth in AnthropicProvider
|
|
118
|
+
try {
|
|
119
|
+
const { stdout } = await execFileAsync("security", ["find-generic-password", "-s", "Claude Code-credentials", "-w"], { encoding: "utf8" });
|
|
120
|
+
const parsed = JSON.parse(stdout.trim());
|
|
121
|
+
const token = parsed.claudeAiOauth?.accessToken;
|
|
122
|
+
if (token)
|
|
123
|
+
env["ANTHROPIC_AUTH_TOKEN"] = token;
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
// Keychain unavailable or not macOS — inherit env as-is and let
|
|
127
|
+
// Claude Code surface its own auth error if credentials are missing
|
|
128
|
+
}
|
|
129
|
+
return env;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Write the agent's McpServerConfig map to a temp JSON file in the format
|
|
133
|
+
* Claude Code's --mcp-config flag expects. Inline JSON strings are not parsed
|
|
134
|
+
* by the CLI — a file path is required.
|
|
135
|
+
*
|
|
136
|
+
* Maps our `transport` field to Claude Code's `type`. The caller is responsible
|
|
137
|
+
* for deleting the file (use the finally block in chat()).
|
|
138
|
+
*
|
|
139
|
+
* Returns undefined if there are no servers to configure.
|
|
140
|
+
*/
|
|
141
|
+
async writeMcpConfigFile() {
|
|
142
|
+
const entries = Object.entries(this.mcpServers);
|
|
143
|
+
if (entries.length === 0)
|
|
144
|
+
return undefined;
|
|
145
|
+
const mapped = {};
|
|
146
|
+
for (const [name, cfg] of entries) {
|
|
147
|
+
if (cfg.transport === "stdio") {
|
|
148
|
+
const entry = {
|
|
149
|
+
type: "stdio",
|
|
150
|
+
command: cfg.command,
|
|
151
|
+
};
|
|
152
|
+
if (cfg.args?.length)
|
|
153
|
+
entry.args = cfg.args;
|
|
154
|
+
if (cfg.env && Object.keys(cfg.env).length)
|
|
155
|
+
entry.env = cfg.env;
|
|
156
|
+
mapped[name] = entry;
|
|
157
|
+
}
|
|
158
|
+
else if (cfg.transport === "http" || cfg.transport === "sse") {
|
|
159
|
+
const entry = {
|
|
160
|
+
type: cfg.transport,
|
|
161
|
+
url: cfg.url,
|
|
162
|
+
};
|
|
163
|
+
if (cfg.headers && Object.keys(cfg.headers).length)
|
|
164
|
+
entry.headers = cfg.headers;
|
|
165
|
+
mapped[name] = entry;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
const filePath = join(tmpdir(), `agent-mcp-claudecli-${Date.now()}.json`);
|
|
169
|
+
await writeFile(filePath, JSON.stringify({ mcpServers: mapped }), "utf8");
|
|
170
|
+
return filePath;
|
|
171
|
+
}
|
|
172
|
+
async chat(request) {
|
|
173
|
+
const claudePath = this.config.claudePath ?? "claude";
|
|
174
|
+
const systemMessages = request.messages.filter(m => m.role === "system");
|
|
175
|
+
const systemPrompt = systemMessages.map(m => m.content ?? "").join("\n") || undefined;
|
|
176
|
+
const userMessage = buildUserMessage(request.messages);
|
|
177
|
+
// Write MCP config to a temp file.
|
|
178
|
+
// Note: --bare blocks ALL MCP loading including explicit --mcp-config, so
|
|
179
|
+
// we do NOT use --bare. CLAUDE.md will be injected but --system-prompt
|
|
180
|
+
// replaces the full default system prompt, keeping the agent's identity.
|
|
181
|
+
const mcpConfigPath = await this.writeMcpConfigFile();
|
|
182
|
+
// Compute the disallowed built-in list: everything in CLAUDE_CODE_BUILTIN_TOOLS
|
|
183
|
+
// that is NOT listed in the agent's allowedBuiltinTools allowlist.
|
|
184
|
+
const allowed = new Set(this.config.allowedBuiltinTools ?? []);
|
|
185
|
+
const disallowed = CLAUDE_CODE_BUILTIN_TOOLS.filter(t => !allowed.has(t));
|
|
186
|
+
const args = [
|
|
187
|
+
"-p",
|
|
188
|
+
"--dangerously-skip-permissions", // no interactive permission prompts
|
|
189
|
+
"--input-format", "stream-json",
|
|
190
|
+
"--output-format", "stream-json",
|
|
191
|
+
"--verbose",
|
|
192
|
+
];
|
|
193
|
+
// Block every built-in that the agent definition doesn't explicitly allow.
|
|
194
|
+
// --disallowedTools accepts individual tool names as separate flag pairs.
|
|
195
|
+
// MCP tools are not affected — they're loaded via --mcp-config separately.
|
|
196
|
+
for (const tool of disallowed) {
|
|
197
|
+
args.push("--disallowedTools", tool);
|
|
198
|
+
}
|
|
199
|
+
if (systemPrompt)
|
|
200
|
+
args.push("--system-prompt", systemPrompt);
|
|
201
|
+
if (this.config.model)
|
|
202
|
+
args.push("--model", this.config.model);
|
|
203
|
+
if (mcpConfigPath) {
|
|
204
|
+
// --strict-mcp-config prevents auto-discovered .mcp.json from loading
|
|
205
|
+
// alongside our explicit config (avoids double-spawning agent-mcp)
|
|
206
|
+
args.push("--mcp-config", mcpConfigPath, "--strict-mcp-config");
|
|
207
|
+
}
|
|
208
|
+
const subEnv = await this.buildSubprocessEnv();
|
|
209
|
+
const proc = spawn(claudePath, args, {
|
|
210
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
211
|
+
env: subEnv,
|
|
212
|
+
});
|
|
213
|
+
const rl = readline.createInterface({
|
|
214
|
+
input: proc.stdout,
|
|
215
|
+
crlfDelay: Infinity,
|
|
216
|
+
});
|
|
217
|
+
// Kill subprocess on abort/timeout
|
|
218
|
+
const onAbort = () => { proc.kill("SIGTERM"); };
|
|
219
|
+
request.signal?.addEventListener("abort", onAbort, { once: true });
|
|
220
|
+
try {
|
|
221
|
+
// Write initial user message as first stream-json line
|
|
222
|
+
proc.stdin.write(JSON.stringify({
|
|
223
|
+
type: "user",
|
|
224
|
+
message: { role: "user", content: userMessage },
|
|
225
|
+
}) + "\n");
|
|
226
|
+
let procError;
|
|
227
|
+
proc.on("error", (err) => { procError = err; });
|
|
228
|
+
let finalResult = "";
|
|
229
|
+
for await (const line of rl) {
|
|
230
|
+
if (request.signal?.aborted) {
|
|
231
|
+
throw new Error("PROVIDER_ERROR: request aborted");
|
|
232
|
+
}
|
|
233
|
+
if (procError) {
|
|
234
|
+
throw new Error(`PROVIDER_ERROR: claude CLI error: ${procError.message}`);
|
|
235
|
+
}
|
|
236
|
+
let event;
|
|
237
|
+
try {
|
|
238
|
+
event = JSON.parse(line);
|
|
239
|
+
}
|
|
240
|
+
catch {
|
|
241
|
+
continue; // skip non-JSON lines (e.g. blank lines, debug output)
|
|
242
|
+
}
|
|
243
|
+
// ── Final result ─────────────────────────────────────────────
|
|
244
|
+
if (event.type === "result") {
|
|
245
|
+
const r = event;
|
|
246
|
+
if (r.is_error) {
|
|
247
|
+
throw new Error(`PROVIDER_ERROR: claude CLI returned error: ${r.result ?? "(no message)"}`);
|
|
248
|
+
}
|
|
249
|
+
finalResult = r.result ?? "";
|
|
250
|
+
break;
|
|
251
|
+
}
|
|
252
|
+
// ── Tool calls ───────────────────────────────────────────────
|
|
253
|
+
if (event.type === "assistant") {
|
|
254
|
+
const assistantEvent = event;
|
|
255
|
+
const toolUseBlocks = (assistantEvent.message?.content ?? []).filter((b) => b.type === "tool_use");
|
|
256
|
+
for (const block of toolUseBlocks) {
|
|
257
|
+
let toolResultText;
|
|
258
|
+
let isError = false;
|
|
259
|
+
if (request.executeTool) {
|
|
260
|
+
// Claude Code prefixes MCP tool names with "mcp__":
|
|
261
|
+
// mcp__agent-mcp__task → agent-mcp__task → server=agent-mcp, tool=task
|
|
262
|
+
let qualifiedName = block.name;
|
|
263
|
+
if (qualifiedName.startsWith("mcp__")) {
|
|
264
|
+
qualifiedName = qualifiedName.slice(5);
|
|
265
|
+
}
|
|
266
|
+
const sepIdx = qualifiedName.indexOf("__");
|
|
267
|
+
if (sepIdx === -1) {
|
|
268
|
+
toolResultText = `Invalid tool name (missing server prefix): ${block.name}`;
|
|
269
|
+
isError = true;
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
const server = qualifiedName.slice(0, sepIdx);
|
|
273
|
+
const tool = qualifiedName.slice(sepIdx + 2);
|
|
274
|
+
try {
|
|
275
|
+
const { result, isError: err } = await request.executeTool(server, tool, block.input);
|
|
276
|
+
toolResultText = typeof result === "string"
|
|
277
|
+
? result
|
|
278
|
+
: JSON.stringify(result);
|
|
279
|
+
isError = err;
|
|
280
|
+
}
|
|
281
|
+
catch (err) {
|
|
282
|
+
toolResultText = err instanceof Error ? err.message : String(err);
|
|
283
|
+
isError = true;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
toolResultText = "Tool execution not available (no executeTool callback)";
|
|
289
|
+
isError = true;
|
|
290
|
+
}
|
|
291
|
+
// ⚠️ tool_result injection — see module-level warning about
|
|
292
|
+
// the suspected Claude Code crash on this path.
|
|
293
|
+
proc.stdin.write(JSON.stringify({
|
|
294
|
+
type: "user",
|
|
295
|
+
message: {
|
|
296
|
+
role: "user",
|
|
297
|
+
content: [{
|
|
298
|
+
type: "tool_result",
|
|
299
|
+
tool_use_id: block.id,
|
|
300
|
+
content: [{ type: "text", text: toolResultText }],
|
|
301
|
+
is_error: isError,
|
|
302
|
+
}],
|
|
303
|
+
},
|
|
304
|
+
}) + "\n");
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
proc.stdin.end();
|
|
309
|
+
const message = {
|
|
310
|
+
id: generateId(),
|
|
311
|
+
sessionId: "",
|
|
312
|
+
role: "assistant",
|
|
313
|
+
content: finalResult,
|
|
314
|
+
createdAt: nowIso(),
|
|
315
|
+
};
|
|
316
|
+
return { message, stopReason: "completed" };
|
|
317
|
+
}
|
|
318
|
+
finally {
|
|
319
|
+
request.signal?.removeEventListener("abort", onAbort);
|
|
320
|
+
rl.close();
|
|
321
|
+
if (proc.exitCode === null && !proc.killed) {
|
|
322
|
+
proc.kill("SIGTERM");
|
|
323
|
+
}
|
|
324
|
+
// Clean up the temp MCP config file
|
|
325
|
+
if (mcpConfigPath) {
|
|
326
|
+
unlink(mcpConfigPath).catch(() => { });
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
//# sourceMappingURL=claudecli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudecli.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/providers/claudecli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import type { ProviderConfig } from "../validation/index.js";
|
|
1
|
+
import type { McpServerConfig, ProviderConfig } from "../validation/index.js";
|
|
2
2
|
import type { LLMProvider } from "./types.js";
|
|
3
3
|
/**
|
|
4
4
|
* Creates an LLM provider from a ProviderConfig discriminated union.
|
|
5
|
+
*
|
|
6
|
+
* @param mcpServers - The agent's MCP server configs. Only used by ClaudeCliProvider
|
|
7
|
+
* to build the --mcp-config inline JSON passed to the claude subprocess.
|
|
5
8
|
*/
|
|
6
|
-
export declare function createProvider(config: ProviderConfig): LLMProvider;
|
|
9
|
+
export declare function createProvider(config: ProviderConfig, mcpServers?: Record<string, McpServerConfig>): LLMProvider;
|
|
7
10
|
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/providers/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/providers/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAK9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;GAKG;AACH,wBAAgB,cAAc,CAC1B,MAAM,EAAE,cAAc,EACtB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAC7C,WAAW,CAeb"}
|
package/src/providers/factory.js
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { AnthropicProvider } from "./anthropic.js";
|
|
2
|
+
import { ClaudeCliProvider } from "./claudecli.js";
|
|
2
3
|
import { LMStudioProvider } from "./lmstudio.js";
|
|
3
4
|
import { OpenAIProvider } from "./openai.js";
|
|
4
5
|
/**
|
|
5
6
|
* Creates an LLM provider from a ProviderConfig discriminated union.
|
|
7
|
+
*
|
|
8
|
+
* @param mcpServers - The agent's MCP server configs. Only used by ClaudeCliProvider
|
|
9
|
+
* to build the --mcp-config inline JSON passed to the claude subprocess.
|
|
6
10
|
*/
|
|
7
|
-
export function createProvider(config) {
|
|
11
|
+
export function createProvider(config, mcpServers) {
|
|
8
12
|
switch (config.type) {
|
|
9
13
|
case "anthropic":
|
|
10
14
|
return new AnthropicProvider(config);
|
|
15
|
+
case "claudecli":
|
|
16
|
+
return new ClaudeCliProvider(config, mcpServers ?? {});
|
|
11
17
|
case "openai":
|
|
12
18
|
return new OpenAIProvider(config);
|
|
13
19
|
case "lmstudio":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/providers/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/providers/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC1B,MAAsB,EACtB,UAA4C;IAE5C,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,WAAW;YACZ,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACzC,KAAK,WAAW;YACZ,OAAO,IAAI,iBAAiB,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;QAC3D,KAAK,QAAQ;YACT,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,KAAK,UAAU;YACX,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,CAAC,CAAC,CAAC;YACN,MAAM,UAAU,GAAU,MAAM,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,0BAA2B,UAA+B,CAAC,IAAI,EAAE,CAAC,CAAC;QACvF,CAAC;IACL,CAAC;AACL,CAAC"}
|
package/src/providers/types.d.ts
CHANGED
|
@@ -1,15 +1,6 @@
|
|
|
1
1
|
import type { Message } from "../validation/index.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* The name is encoded as `<server>__<tool>` for disambiguation.
|
|
5
|
-
*/
|
|
6
|
-
export interface ToolDefinition {
|
|
7
|
-
/** Fully-qualified name: "<server>__<toolName>" */
|
|
8
|
-
name: string;
|
|
9
|
-
description: string;
|
|
10
|
-
/** JSON Schema object for the tool's input parameters */
|
|
11
|
-
inputSchema: Record<string, unknown>;
|
|
12
|
-
}
|
|
2
|
+
import type { ToolDefinition } from "@adhd/agent-mcp-types";
|
|
3
|
+
export type { ToolDefinition };
|
|
13
4
|
export interface ProviderChatRequest {
|
|
14
5
|
messages: Message[];
|
|
15
6
|
tools?: ToolDefinition[];
|
|
@@ -21,6 +12,18 @@ export interface ProviderChatRequest {
|
|
|
21
12
|
* Providers must NOT reapply their own timeout internally.
|
|
22
13
|
*/
|
|
23
14
|
signal?: AbortSignal;
|
|
15
|
+
/**
|
|
16
|
+
* Callback for providers that run their own internal tool loop (e.g. claudecli).
|
|
17
|
+
* The orchestrator builds this from the per-task McpClientRegistry so the
|
|
18
|
+
* provider can execute MCP tools without owning the registry itself.
|
|
19
|
+
*
|
|
20
|
+
* Providers that return stopReason "tool_calls" (anthropic, openai, lmstudio)
|
|
21
|
+
* do NOT use this — the orchestrator handles tool execution for them.
|
|
22
|
+
*/
|
|
23
|
+
executeTool?: (server: string, tool: string, args: unknown) => Promise<{
|
|
24
|
+
result: unknown;
|
|
25
|
+
isError: boolean;
|
|
26
|
+
}>;
|
|
24
27
|
}
|
|
25
28
|
export interface ProviderChatResponse {
|
|
26
29
|
message: Message;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/providers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/providers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,CACV,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,KACZ,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,WAAW,GAAG,YAAY,CAAC;CAC1C;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACrE"}
|
package/src/server.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import type { TaskStore } from "./store/task-store.js";
|
|
|
6
6
|
import { BackgroundQueue } from "./engine/queue.js";
|
|
7
7
|
import { Orchestrator } from "./engine/orchestrator.js";
|
|
8
8
|
import type { PolicyEngine } from "./engine/policy.js";
|
|
9
|
+
import type { IHookRegistry } from "@adhd/agent-mcp-types";
|
|
9
10
|
export interface ServerDeps {
|
|
10
11
|
agentStore: AgentStore;
|
|
11
12
|
sessionStore: SessionStore;
|
|
@@ -13,6 +14,7 @@ export interface ServerDeps {
|
|
|
13
14
|
queue: BackgroundQueue;
|
|
14
15
|
policy: PolicyEngine;
|
|
15
16
|
orchestrator: Orchestrator;
|
|
17
|
+
hooks: IHookRegistry;
|
|
16
18
|
selfUrl?: string;
|
|
17
19
|
}
|
|
18
20
|
export declare function createServer(deps: ServerDeps): Server;
|
package/src/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../../packages/ai/agent-mcp/src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAQnE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../../packages/ai/agent-mcp/src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAQnE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AA2B3D,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAiTD,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAuRrD;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;IACzD,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,UAAU,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;CAC5B,CAAC,CAsED"}
|