@adhd/agent-mcp 1.1.4 → 2.0.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 (119) hide show
  1. package/drizzle/0006_composed_prompts_cache.sql +24 -0
  2. package/drizzle/meta/0006_snapshot.json +651 -0
  3. package/drizzle/meta/_journal.json +8 -1
  4. package/package.json +5 -1
  5. package/src/__tests__/integration/harness.d.ts.map +1 -1
  6. package/src/__tests__/integration/harness.js +10 -8
  7. package/src/__tests__/integration/harness.js.map +1 -1
  8. package/src/clients/stdio-client.d.ts.map +1 -1
  9. package/src/clients/stdio-client.js +2 -1
  10. package/src/clients/stdio-client.js.map +1 -1
  11. package/src/config.d.ts +114 -0
  12. package/src/config.d.ts.map +1 -0
  13. package/src/config.js +287 -0
  14. package/src/config.js.map +1 -0
  15. package/src/db/client.d.ts.map +1 -1
  16. package/src/db/client.js +2 -3
  17. package/src/db/client.js.map +1 -1
  18. package/src/db/schema.d.ts +242 -0
  19. package/src/db/schema.d.ts.map +1 -1
  20. package/src/db/schema.js +38 -1
  21. package/src/db/schema.js.map +1 -1
  22. package/src/engine/orchestrator.d.ts.map +1 -1
  23. package/src/engine/orchestrator.js +3 -2
  24. package/src/engine/orchestrator.js.map +1 -1
  25. package/src/engine/policy.d.ts +24 -0
  26. package/src/engine/policy.d.ts.map +1 -1
  27. package/src/engine/policy.js +73 -6
  28. package/src/engine/policy.js.map +1 -1
  29. package/src/engine/prompt-resolver.d.ts +89 -0
  30. package/src/engine/prompt-resolver.d.ts.map +1 -0
  31. package/src/engine/prompt-resolver.js +96 -0
  32. package/src/engine/prompt-resolver.js.map +1 -0
  33. package/src/engine/queue.d.ts.map +1 -1
  34. package/src/engine/queue.js +2 -2
  35. package/src/engine/queue.js.map +1 -1
  36. package/src/index.d.ts +31 -3
  37. package/src/index.d.ts.map +1 -1
  38. package/src/index.js +131 -20
  39. package/src/index.js.map +1 -1
  40. package/src/logger.d.ts.map +1 -1
  41. package/src/logger.js +2 -1
  42. package/src/logger.js.map +1 -1
  43. package/src/plugins/loader.d.ts +19 -6
  44. package/src/plugins/loader.d.ts.map +1 -1
  45. package/src/plugins/loader.js +23 -13
  46. package/src/plugins/loader.js.map +1 -1
  47. package/src/providers/anthropic.d.ts +5 -5
  48. package/src/providers/anthropic.d.ts.map +1 -1
  49. package/src/providers/anthropic.js +53 -188
  50. package/src/providers/anthropic.js.map +1 -1
  51. package/src/providers/claudecli.d.ts +92 -5
  52. package/src/providers/claudecli.d.ts.map +1 -1
  53. package/src/providers/claudecli.js +224 -47
  54. package/src/providers/claudecli.js.map +1 -1
  55. package/src/providers/factory.d.ts +1 -1
  56. package/src/providers/factory.d.ts.map +1 -1
  57. package/src/providers/factory.js +6 -9
  58. package/src/providers/factory.js.map +1 -1
  59. package/src/providers/index.d.ts +1 -1
  60. package/src/providers/index.d.ts.map +1 -1
  61. package/src/providers/index.js +1 -1
  62. package/src/providers/index.js.map +1 -1
  63. package/src/providers/openai.d.ts +4 -2
  64. package/src/providers/openai.d.ts.map +1 -1
  65. package/src/providers/openai.js +29 -18
  66. package/src/providers/openai.js.map +1 -1
  67. package/src/providers/types.d.ts +1 -1
  68. package/src/server.d.ts +8 -0
  69. package/src/server.d.ts.map +1 -1
  70. package/src/server.js +19 -12
  71. package/src/server.js.map +1 -1
  72. package/src/store/agent-store.d.ts +13 -0
  73. package/src/store/agent-store.d.ts.map +1 -1
  74. package/src/store/agent-store.js +16 -3
  75. package/src/store/agent-store.js.map +1 -1
  76. package/src/store/composed-prompt-store.d.ts +24 -0
  77. package/src/store/composed-prompt-store.d.ts.map +1 -0
  78. package/src/store/composed-prompt-store.js +75 -0
  79. package/src/store/composed-prompt-store.js.map +1 -0
  80. package/src/store/index.d.ts +1 -0
  81. package/src/store/index.d.ts.map +1 -1
  82. package/src/store/index.js +1 -0
  83. package/src/store/index.js.map +1 -1
  84. package/src/store/session-store.d.ts +8 -0
  85. package/src/store/session-store.d.ts.map +1 -1
  86. package/src/store/session-store.js +3 -2
  87. package/src/store/session-store.js.map +1 -1
  88. package/src/streaming/sse-server.d.ts +2 -2
  89. package/src/streaming/sse-server.d.ts.map +1 -1
  90. package/src/streaming/sse-server.js +4 -4
  91. package/src/streaming/sse-server.js.map +1 -1
  92. package/src/tools/session.d.ts +12 -0
  93. package/src/tools/session.d.ts.map +1 -1
  94. package/src/tools/session.js +33 -1
  95. package/src/tools/session.js.map +1 -1
  96. package/src/tools/task.d.ts.map +1 -1
  97. package/src/tools/task.js +2 -2
  98. package/src/tools/task.js.map +1 -1
  99. package/src/tools/usage.d.ts.map +1 -1
  100. package/src/tools/usage.js +10 -3
  101. package/src/tools/usage.js.map +1 -1
  102. package/src/utils/load-env.d.ts +16 -0
  103. package/src/utils/load-env.d.ts.map +1 -0
  104. package/src/utils/load-env.js +27 -0
  105. package/src/utils/load-env.js.map +1 -0
  106. package/src/validation/agent.d.ts +150 -62
  107. package/src/validation/agent.d.ts.map +1 -1
  108. package/src/validation/agent.js +152 -37
  109. package/src/validation/agent.js.map +1 -1
  110. package/src/validation/errors.d.ts +1 -0
  111. package/src/validation/errors.d.ts.map +1 -1
  112. package/src/validation/errors.js +2 -0
  113. package/src/validation/errors.js.map +1 -1
  114. package/src/validation/execution.d.ts +13 -20
  115. package/src/validation/execution.d.ts.map +1 -1
  116. package/src/providers/lmstudio.d.ts +0 -8
  117. package/src/providers/lmstudio.d.ts.map +0 -1
  118. package/src/providers/lmstudio.js +0 -15
  119. package/src/providers/lmstudio.js.map +0 -1
@@ -33,6 +33,7 @@ import { homedir } from "node:os";
33
33
  import { pathToFileURL } from "node:url";
34
34
  import { z } from "zod";
35
35
  import { logger } from "../logger.js";
36
+ import { config } from "../config.js";
36
37
  // ── Config file schema ────────────────────────────────────────────────────────
37
38
  const pluginEntrySchema = z.object({
38
39
  /** npm package name or absolute file path */
@@ -48,12 +49,19 @@ export const agentMcpConfigFileSchema = z.object({
48
49
  /**
49
50
  * Returns the path to the active agent-mcp config file, or `null` if none is
50
51
  * found. Search order:
51
- * 1. `AGENT_MCP_CONFIG` env varabsolute path to any JSON file
52
+ * 1. `configPathOverride` (when provided directly used by tests)
53
+ * or `ADHD_AGENT_CONFIG` singleton value — absolute path to any JSON file
52
54
  * 2. `{cwd}/agent-mcp.config.json` — project-local (next to package.json)
53
55
  * 3. `{HOME}/.agent-mcp/config.json` — global user config
56
+ *
57
+ * @param configPathOverride — explicit path that takes priority over the
58
+ * singleton value; pass `null` to force "no explicit path" (skip the env
59
+ * lookup) without passing an actual file path.
54
60
  */
55
- export function findConfigFile() {
56
- const explicit = process.env["AGENT_MCP_CONFIG"];
61
+ export function findConfigFile(configPathOverride) {
62
+ const explicit = configPathOverride !== undefined
63
+ ? configPathOverride
64
+ : config.plugins.configPath;
57
65
  if (explicit) {
58
66
  if (!existsSync(explicit)) {
59
67
  logger.warn({ path: explicit }, "AGENT_MCP_CONFIG points to a file that does not exist — ignoring");
@@ -72,9 +80,11 @@ export function findConfigFile() {
72
80
  /**
73
81
  * Reads, parses, and validates the agent-mcp config file. Returns
74
82
  * `{ plugins: [] }` on any failure so the caller can always destructure safely.
83
+ *
84
+ * @param configPathOverride — forwarded to `findConfigFile`; used in tests.
75
85
  */
76
- export function loadConfigFile() {
77
- const configPath = findConfigFile();
86
+ export function loadConfigFile(configPathOverride) {
87
+ const configPath = findConfigFile(configPathOverride);
78
88
  if (!configPath)
79
89
  return { plugins: [] };
80
90
  let raw;
@@ -188,19 +198,19 @@ async function loadOnePlugin(hooks, db, entry) {
188
198
  *
189
199
  * Processing order:
190
200
  * 1. Plugins from the agent-mcp config file (with optional validated `config` blocks).
191
- * 2. Specifiers from `AGENT_MCP_PLUGINS` env var (comma-separated, no per-plugin
192
- * options — legacy shorthand for simple activations or CI environments).
201
+ * 2. Specifiers from `ADHD_AGENT_PLUGINS` (comma-separated, no per-plugin options).
193
202
  *
194
203
  * All failures (bad config file, unresolvable module, failed schema validation,
195
204
  * factory errors) are logged at `error` level and skipped — a broken plugin
196
205
  * never prevents the server from starting.
206
+ *
207
+ * @param overrides — explicit values for testability; production code omits this.
208
+ * `configPath` — forwarded to `findConfigFile`
209
+ * `pluginEntries` — explicit module list (replaces `config.plugins.entries`)
197
210
  */
198
- export async function loadExternalPlugins(hooks, db) {
199
- const configFile = loadConfigFile();
200
- const legacyEntries = (process.env["AGENT_MCP_PLUGINS"] ?? "")
201
- .split(",")
202
- .map(s => s.trim())
203
- .filter(Boolean)
211
+ export async function loadExternalPlugins(hooks, db, overrides) {
212
+ const configFile = loadConfigFile(overrides?.configPath);
213
+ const legacyEntries = (overrides?.pluginEntries ?? config.plugins.entries)
204
214
  .map(module => ({ module, config: {} }));
205
215
  const allEntries = [...configFile.plugins, ...legacyEntries];
206
216
  if (allEntries.length === 0)
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/plugins/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/plugins/loader.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import type { ProviderConfig } from "../validation/index.js";
2
2
  import type { LLMProvider, ProviderChatRequest, ProviderChatResponse } from "./types.js";
3
3
  export declare class AnthropicProvider implements LLMProvider {
4
- private client;
5
- private readonly config;
6
- /** True when the active client was built with a sk-ant-oat OAuth token. */
7
- private _useOauthIdentity;
8
- constructor(config: Extract<ProviderConfig, {
4
+ private readonly client;
5
+ private readonly providerConfig;
6
+ /** True when the resolved secret is a sk-ant-oat OAuth token. */
7
+ private readonly useOauthIdentity;
8
+ constructor(providerConfig: Extract<ProviderConfig, {
9
9
  type: "anthropic";
10
10
  }>);
11
11
  chat(request: ProviderChatRequest): Promise<ProviderChatResponse>;
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/providers/anthropic.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,wBAAwB,CAAC;AAIhF,OAAO,KAAK,EACR,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EAEvB,MAAM,YAAY,CAAC;AA+PpB,qBAAa,iBAAkB,YAAW,WAAW;IACjD,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiD;IACxE,2EAA2E;IAC3E,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,MAAM,EAAE,OAAO,CAAC,cAAc,EAAE;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;IAuC5D,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA4J1E"}
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/providers/anthropic.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,wBAAwB,CAAC;AAKhF,OAAO,KAAK,EACR,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EAEvB,MAAM,YAAY,CAAC;AAsJpB,qBAAa,iBAAkB,YAAW,WAAW;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiD;IAChF,kEAAkE;IAClE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;gBAE/B,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;IA+BpE,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA0H1E"}
@@ -1,18 +1,16 @@
1
1
  import Anthropic from "@anthropic-ai/sdk";
2
- import { execFile } from "child_process";
3
- import { promisify } from "util";
4
2
  import pRetry from "p-retry";
5
- const execFileAsync = promisify(execFile);
6
3
  import { generateId } from "../utils/ids.js";
7
4
  import { nowIso } from "../utils/timestamps.js";
8
5
  import { resolveToolCallName } from "../clients/tool-naming.js";
9
6
  import { ToolError } from "../validation/errors.js";
10
7
  import { logger } from "../logger.js";
8
+ import { config } from "../config.js";
11
9
  // ─── Model max-output token table ────────────────────────────────────────────
12
10
  // Maps model-name prefix → documented max output tokens (standard sync API,
13
11
  // no beta headers). Checked longest-prefix-first so "claude-opus-4-5" (64k)
14
12
  // wins over "claude-opus-4" (128k). Source: docs.anthropic.com/models/overview.
15
- // AGENT_MCP_DEFAULT_MAX_TOKENS env var overrides for unlisted / future models.
13
+ // config.server.defaultMaxTokens is used as the fallback for unknown / future models.
16
14
  const MODEL_MAX_TOKENS = [
17
15
  // Claude 5 (GA 2026-06)
18
16
  ["claude-fable-5", 128_000],
@@ -38,115 +36,31 @@ const MODEL_MAX_TOKENS = [
38
36
  ["claude-3-haiku", 4_096],
39
37
  ];
40
38
  function defaultMaxTokens(model) {
41
- const envOverride = process.env["AGENT_MCP_DEFAULT_MAX_TOKENS"];
42
- if (envOverride)
43
- return parseInt(envOverride, 10);
44
39
  for (const [prefix, maxTokens] of MODEL_MAX_TOKENS) {
45
40
  if (model.startsWith(prefix))
46
41
  return maxTokens;
47
42
  }
48
- return 32_000; // unknown/future model — conservative but not restrictive
43
+ // Unknown / future model — fall back to the global default
44
+ return config.server.defaultMaxTokens;
49
45
  }
50
- // ─── OAuth keychain helpers ───────────────────────────────────────────────────
51
- const KEYCHAIN_SERVICE = "Claude Code-credentials";
52
- const OAUTH_TOKEN_URL = "https://platform.claude.com/v1/oauth/token";
53
- const OAUTH_CLIENT_ID = "9d1c250a-e61b-44d9-88ed-5944d1962f5e";
54
- /** Refresh when fewer than this many ms remain on the access token. */
55
- const REFRESH_BUFFER_MS = 5 * 60 * 1000; // 5 min
56
- async function readKeychainCreds() {
57
- const { stdout } = await execFileAsync("security", ["find-generic-password", "-s", KEYCHAIN_SERVICE, "-w"], { encoding: "utf8" });
58
- const parsed = JSON.parse(stdout.trim());
59
- return parsed.claudeAiOauth;
60
- }
61
- async function writeKeychainCreds(creds) {
62
- // Read the full existing keychain entry so we preserve any other fields
63
- const { stdout } = await execFileAsync("security", ["find-generic-password", "-s", KEYCHAIN_SERVICE, "-w"], { encoding: "utf8" });
64
- const existing = JSON.parse(stdout.trim());
65
- existing["claudeAiOauth"] = creds;
66
- // -U updates the existing entry in place
67
- await execFileAsync("security", [
68
- "add-generic-password",
69
- "-U",
70
- "-s", KEYCHAIN_SERVICE,
71
- "-a", KEYCHAIN_SERVICE,
72
- "-w", JSON.stringify(existing),
73
- ], { encoding: "utf8" });
74
- }
75
- async function refreshOauthToken(refreshToken) {
76
- // ⚠️ UNVERIFIED PATH — refresh confirmed blocked (HTTP 429) while the access token
77
- // is still valid; the endpoint appears to enforce "no early refresh" as an OAuth
78
- // policy. This function will only be called when the token is within
79
- // REFRESH_BUFFER_MS of expiry (see getAccessToken below), which is the correct
80
- // window. To confirm it actually works end-to-end:
81
- //
82
- // 1. Check the current expiry:
83
- // security find-generic-password -s "Claude Code-credentials" -w \
84
- // | python3 -c "import sys,json,time; d=json.load(sys.stdin);
85
- // exp=d['claudeAiOauth']['expiresAt']/1000;
86
- // print(time.strftime('%Y-%m-%d %H:%M:%S UTC', time.gmtime(exp)),
87
- // f'({round((exp-time.time())/60,1)} min remaining)')"
88
- //
89
- // 2. Wait until ≤5 min remain (or temporarily lower REFRESH_BUFFER_MS to
90
- // something large like 7*60*60*1000 to force the code path immediately).
91
- //
92
- // 3. Call getAccessToken() and confirm a new token is returned.
93
- //
94
- // If this ever returns a 429 in production it means the token expired and the
95
- // refresh endpoint itself is down — the fallback in getAccessToken() will use
96
- // the stored (expired) token and let the SDK surface a 401.
97
- const body = new URLSearchParams({
98
- grant_type: "refresh_token",
99
- refresh_token: refreshToken,
100
- client_id: OAUTH_CLIENT_ID,
101
- });
102
- const res = await fetch(OAUTH_TOKEN_URL, {
103
- method: "POST",
104
- headers: { "Content-Type": "application/x-www-form-urlencoded" },
105
- body: body.toString(),
106
- });
107
- const rawBody = await res.text();
108
- let json = {};
109
- try {
110
- json = JSON.parse(rawBody);
111
- }
112
- catch {
113
- throw new Error(`OAuth refresh failed: response was not JSON\n` +
114
- ` status: ${res.status} ${res.statusText}\n` +
115
- ` body: ${rawBody}`);
116
- }
117
- if (!res.ok || !json.access_token) {
118
- throw new Error(`OAuth refresh failed\n` +
119
- ` status: ${res.status} ${res.statusText}\n` +
120
- ` body: ${rawBody}`);
46
+ function buildAnthropicClient(secret, timeoutMs) {
47
+ if (secret.startsWith("sk-ant-api")) {
48
+ return {
49
+ client: new Anthropic({ apiKey: secret, timeout: timeoutMs }),
50
+ useOauthIdentity: false,
51
+ };
121
52
  }
122
- const fresh = {
123
- accessToken: json.access_token,
124
- refreshToken: json.refresh_token ?? refreshToken, // some providers rotate it
125
- expiresAt: Date.now() + (json.expires_in ?? 3600) * 1000,
53
+ // OAuth / subscription token — requires the oauth-2025-04-20 beta header and
54
+ // the Claude Code identity block in the system prompt (see below).
55
+ const isOauth = secret.startsWith("sk-ant-oat");
56
+ return {
57
+ client: new Anthropic({
58
+ authToken: secret,
59
+ timeout: timeoutMs,
60
+ ...(isOauth ? { defaultHeaders: { "anthropic-beta": "oauth-2025-04-20" } } : {}),
61
+ }),
62
+ useOauthIdentity: isOauth,
126
63
  };
127
- // Persist rotated credentials back to the keychain so Claude Code stays in sync
128
- await writeKeychainCreds(fresh);
129
- return fresh;
130
- }
131
- /**
132
- * Returns a fresh access token, refreshing via OAuth if the stored one is
133
- * within REFRESH_BUFFER_MS of expiry. Falls back to the stored token on
134
- * refresh failure (it may still be valid).
135
- */
136
- async function getAccessToken() {
137
- const creds = await readKeychainCreds();
138
- if (Date.now() < creds.expiresAt - REFRESH_BUFFER_MS) {
139
- return creds.accessToken; // still good
140
- }
141
- // Token is expired or nearly so — refresh
142
- try {
143
- const fresh = await refreshOauthToken(creds.refreshToken);
144
- return fresh.accessToken;
145
- }
146
- catch {
147
- // Refresh failed — fall back to stored token and let the SDK surface the 401
148
- return creds.accessToken;
149
- }
150
64
  }
151
65
  function toAnthropicTools(tools) {
152
66
  if (!tools)
@@ -218,85 +132,31 @@ function toAnthropicMessages(messages) {
218
132
  const CLAUDE_CODE_IDENTITY = "You are Claude Code, Anthropic's official CLI for Claude.";
219
133
  export class AnthropicProvider {
220
134
  client;
221
- config;
222
- /** True when the active client was built with a sk-ant-oat OAuth token. */
223
- _useOauthIdentity = false;
224
- constructor(config) {
225
- this.config = config;
226
- if (config.useClaudeOauth) {
227
- // Deferred: client is built per-request in chat() after fetching a fresh token.
228
- // Set a placeholder that will be replaced before any real call.
229
- this.client = null;
230
- return;
231
- }
232
- // Resolve credentials in priority order:
233
- // 1. Explicit API key env var (e.g. ANTHROPIC_API_KEY)
234
- // 2. Explicit auth token env var (e.g. ANTHROPIC_AUTH_TOKEN, for subscription users)
235
- // 3. Neither let SDK auto-detect from its own ANTHROPIC_API_KEY / ANTHROPIC_AUTH_TOKEN
236
- // env fallbacks (throws AuthenticationError if neither is set)
237
- const apiKey = process.env[config.apiKeyEnv ?? "ANTHROPIC_API_KEY"] || undefined;
238
- const authToken = process.env[config.authTokenEnv ?? "ANTHROPIC_AUTH_TOKEN"] || undefined;
239
- if (apiKey) {
240
- this.client = new Anthropic({ apiKey, timeout: config.timeoutMs });
241
- }
242
- else if (authToken) {
243
- // OAuth tokens (sk-ant-oat…) require the oauth-2025-04-20 beta header;
244
- // without it the Messages API returns 429. API keys (sk-ant-api…) do not.
245
- const isOauth = authToken.startsWith("sk-ant-oat");
246
- this._useOauthIdentity = isOauth;
247
- this.client = new Anthropic({
248
- authToken,
249
- timeout: config.timeoutMs,
250
- ...(isOauth ? { defaultHeaders: { "anthropic-beta": "oauth-2025-04-20" } } : {}),
251
- });
252
- }
253
- else {
254
- // No credentials found via env — SDK will throw a clear AuthenticationError
255
- // DEBT-005: pass timeoutMs so SDK timeout aligns with our AbortSignal.
256
- // Less critical than OpenAI: Anthropic uses .stream() which bypasses the
257
- // SDK's synchronous 10-minute limit, but we align for consistency.
258
- this.client = new Anthropic({ timeout: config.timeoutMs });
135
+ providerConfig;
136
+ /** True when the resolved secret is a sk-ant-oat OAuth token. */
137
+ useOauthIdentity;
138
+ constructor(providerConfig) {
139
+ this.providerConfig = providerConfig;
140
+ // Resolve the single unified secret via config (§3 / §3c)
141
+ const resolved = config.getProviderConfig({
142
+ provider: "anthropic",
143
+ secret: providerConfig.env?.secret,
144
+ model: providerConfig.env?.model,
145
+ inlineModel: providerConfig.model,
146
+ });
147
+ if (!resolved.secret) {
148
+ // No secret found and we're not a localhost server (anthropic has no localhost exemption)
149
+ throw new ToolError("PROVIDER_AUTH_ERROR", `Anthropic requires a credential. ` +
150
+ `Set ADHD_AGENT_ANTHROPIC_SECRET in your ~/.adhd/.env ` +
151
+ `(run \`claude setup-token\` to obtain an OAuth access token, ` +
152
+ `or use your console.anthropic.com API key).`);
259
153
  }
154
+ const { client, useOauthIdentity } = buildAnthropicClient(resolved.secret, providerConfig.timeoutMs);
155
+ this.client = client;
156
+ this.useOauthIdentity = useOauthIdentity;
260
157
  }
261
158
  async chat(request) {
262
- // For useClaudeOauth mode, fetch a fresh token on every chat() call so
263
- // long-running servers never hold a stale client across token expiry.
264
- if (this.config.useClaudeOauth) {
265
- try {
266
- const authToken = await getAccessToken();
267
- // Subscription OAuth tokens always require the beta header + Claude Code identity in system prompt
268
- this._useOauthIdentity = true;
269
- this.client = new Anthropic({
270
- authToken,
271
- timeout: this.config.timeoutMs,
272
- defaultHeaders: { "anthropic-beta": "oauth-2025-04-20" },
273
- });
274
- }
275
- catch (keychainErr) {
276
- const keychainMsg = keychainErr instanceof Error ? keychainErr.message : String(keychainErr);
277
- logger.warn({ keychainMsg }, "AnthropicProvider: keychain read failed, trying env var fallbacks");
278
- const apiKey = process.env["ANTHROPIC_API_KEY"] || undefined;
279
- const authToken = process.env["ANTHROPIC_AUTH_TOKEN"] || undefined;
280
- if (apiKey) {
281
- this._useOauthIdentity = false;
282
- this.client = new Anthropic({ apiKey, timeout: this.config.timeoutMs });
283
- }
284
- else if (authToken) {
285
- const isOauth = authToken.startsWith("sk-ant-oat");
286
- this._useOauthIdentity = isOauth;
287
- this.client = new Anthropic({
288
- authToken,
289
- timeout: this.config.timeoutMs,
290
- ...(isOauth ? { defaultHeaders: { "anthropic-beta": "oauth-2025-04-20" } } : {}),
291
- });
292
- }
293
- else {
294
- throw new ToolError("PROVIDER_AUTH_ERROR", `Anthropic keychain read failed: ${keychainMsg}. ` +
295
- `Set ANTHROPIC_AUTH_TOKEN (run \`claude setup-token\` to obtain an OAuth access token) or use authTokenEnv in the provider config`);
296
- }
297
- }
298
- }
299
- const retryConfig = this.config.retryConfig;
159
+ const retryConfig = this.providerConfig.retryConfig;
300
160
  const systemMessages = request.messages.filter(m => m.role === "system");
301
161
  const systemPrompt = systemMessages.map(m => m.content || "").join("\n") || undefined;
302
162
  const run = async () => {
@@ -307,7 +167,7 @@ export class AnthropicProvider {
307
167
  // has its own system prompt fails unless the identity is its own block.
308
168
  // (Proven by bisect: array form → 200; identity+prompt joined string → 429.)
309
169
  // API-key mode keeps the plain string.
310
- const effectiveSystem = this._useOauthIdentity
170
+ const effectiveSystem = this.useOauthIdentity
311
171
  ? [
312
172
  { type: "text", text: CLAUDE_CODE_IDENTITY },
313
173
  ...(systemPrompt
@@ -315,14 +175,18 @@ export class AnthropicProvider {
315
175
  : []),
316
176
  ]
317
177
  : systemPrompt;
178
+ const effectiveModel = this.providerConfig.model ?? "";
179
+ if (!effectiveModel) {
180
+ logger.warn("AnthropicProvider: no model configured; API will likely reject");
181
+ }
318
182
  // Use streaming to avoid the SDK's synchronous "Streaming is required
319
183
  // for operations that may take longer than 10 minutes" throw that fires
320
184
  // when max_tokens is large (e.g. 64k on haiku-4-5) with messages.create().
321
185
  const stream = this.client.messages.stream({
322
- model: this.config.model,
186
+ model: effectiveModel,
323
187
  system: effectiveSystem,
324
- temperature: this.config.temperature,
325
- max_tokens: this.config.maxTokens ?? defaultMaxTokens(this.config.model),
188
+ temperature: this.providerConfig.temperature,
189
+ max_tokens: this.providerConfig.maxTokens ?? defaultMaxTokens(effectiveModel),
326
190
  messages: toAnthropicMessages(request.messages),
327
191
  tools: toAnthropicTools(request.tools),
328
192
  }, { signal: request.signal });
@@ -365,7 +229,7 @@ export class AnthropicProvider {
365
229
  inputTokens: sdkUsage.input_tokens,
366
230
  outputTokens: sdkUsage.output_tokens,
367
231
  stopReason: normalisedStopReason,
368
- maxTokens: this.config.maxTokens ?? defaultMaxTokens(this.config.model),
232
+ maxTokens: this.providerConfig.maxTokens ?? defaultMaxTokens(effectiveModel),
369
233
  cacheReadTokens: sdkUsage.cache_read_input_tokens ?? undefined,
370
234
  cacheCreationTokens: sdkUsage.cache_creation_input_tokens ?? undefined,
371
235
  },
@@ -384,7 +248,8 @@ export class AnthropicProvider {
384
248
  // Don't retry auth failures — credentials won't change between attempts
385
249
  if ("status" in error && error.status === 401) {
386
250
  throw new ToolError("PROVIDER_AUTH_ERROR", `Anthropic authentication failed. ` +
387
- `Set ANTHROPIC_AUTH_TOKEN (run \`claude setup-token\` to obtain an OAuth access token) or use authTokenEnv in the provider config`);
251
+ `Check ADHD_AGENT_ANTHROPIC_SECRET in your ~/.adhd/.env ` +
252
+ `(run \`claude setup-token\` to obtain a fresh OAuth access token).`);
388
253
  }
389
254
  },
390
255
  });
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/providers/anthropic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/providers/anthropic.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,18 @@
21
21
  * ⚠️ --tools "" is NOT used — it disables MCP tools as well as built-ins.
22
22
  * ⚠️ --bare is NOT used — it blocks --mcp-config from loading entirely.
23
23
  *
24
+ * Agent-spec mode (config.systemPromptIsAgentSpec === true):
25
+ * The agent's systemPrompt is treated as a complete Claude Code agent markdown
26
+ * file (YAML frontmatter + body). Instead of --system-prompt + --disallowedTools,
27
+ * the provider writes it to an isolated temp project dir and passes
28
+ * --add-dir <tmpdir> --setting-sources project --agent <frontmatterName>
29
+ * so Claude *internally parses the frontmatter header* — including the `tools:`
30
+ * field — which then governs tool access and TAKES PRECEDENCE over the built-in
31
+ * disallow enumeration. `--agent` matches the frontmatter `name:`, not the
32
+ * filename; cwd is preserved so file/Bash tools keep their working root. Omit
33
+ * `tools:` in the header to inherit all tools; list `mcp__<server>__<tool>`
34
+ * entries to expose specific MCP tools. allowedBuiltinTools is ignored in this mode.
35
+ *
24
36
  * Tool loop: when Claude Code emits a tool_use block, we execute it via the
25
37
  * request.executeTool callback (wired by the orchestrator to the McpClientRegistry)
26
38
  * and write a tool_result message back to stdin. This continues until Claude
@@ -38,15 +50,81 @@ import type { McpServerConfig, ProviderConfig } from "../validation/index.js";
38
50
  type ClaudeCliConfig = Extract<ProviderConfig, {
39
51
  type: "claudecli";
40
52
  }>;
53
+ /**
54
+ * Compute the effective allowed built-in set and the `--disallowedTools` argv
55
+ * entries that must be passed to the `claude` CLI subprocess.
56
+ *
57
+ * This is the single source of truth for [inv:no-third-tool-model]: the
58
+ * allowed set is resolved in priority order:
59
+ * 1. `compiledTools` (AGENT_TOOL / compile.tools model) — wins when present.
60
+ * 2. `config.allowedBuiltinTools` — legacy / transition-window fallback.
61
+ *
62
+ * Extracted here so tests can assert the REAL produced argv without spawning
63
+ * a subprocess. `chat()` must call this function; no divergence allowed.
64
+ *
65
+ * @param compiledTools - Platform-alias array from `compileAgent().tools`, or
66
+ * `undefined` when the compiler integration is not available yet.
67
+ * @param allowedBuiltinTools - Per-agent legacy allowlist from config.
68
+ * @returns `{ effectiveAllowed, disallowedArgv }` where `disallowedArgv` is the
69
+ * flat `["--disallowedTools", "<name>", ...]` fragment ready to push into args.
70
+ */
71
+ export declare function computeClaudeBuiltinArgs(params: {
72
+ compiledTools: string[] | undefined;
73
+ allowedBuiltinTools: string[] | undefined;
74
+ }): {
75
+ effectiveAllowed: string[];
76
+ disallowedArgv: string[];
77
+ };
78
+ /**
79
+ * Extracts the `name:` field from the leading YAML frontmatter block of a Claude
80
+ * Code agent markdown system prompt. Only the first `---`-delimited block at the
81
+ * very top of the string is considered. Returns undefined when there is no leading
82
+ * frontmatter block or no `name:` key.
83
+ *
84
+ * Claude Code selects an agent (`--agent <name>`) by this frontmatter name — not
85
+ * the on-disk filename — so the provider must read it to build the correct flag.
86
+ */
87
+ export declare function extractAgentSpecName(md: string): string | undefined;
88
+ /**
89
+ * Ensures an agent-spec markdown carries a frontmatter `name:` so the subprocess
90
+ * can select it with `--agent`. Returns the markdown to write and the agent name
91
+ * to pass to `--agent`.
92
+ *
93
+ * - If the prompt already names the agent, it is used verbatim and the markdown is
94
+ * returned unchanged (the spec author's `tools:` header is the source of truth).
95
+ * - If a frontmatter block exists but lacks `name:`, a generated name is injected
96
+ * into it.
97
+ * - If there is no frontmatter at all, the prompt is wrapped in a minimal block
98
+ * (no `tools:` → Claude inherits all tools, matching pre-spec-mode behavior).
99
+ */
100
+ export declare function normalizeAgentSpec(md: string): {
101
+ content: string;
102
+ agentName: string;
103
+ };
41
104
  export declare class ClaudeCliProvider implements LLMProvider {
42
105
  private readonly config;
43
106
  private readonly mcpServers;
44
- constructor(config: ClaudeCliConfig, mcpServers?: Record<string, McpServerConfig>);
45
107
  /**
46
- * Build the subprocess environment. Inherits the parent process env and,
47
- * on macOS, tries to inject ANTHROPIC_AUTH_TOKEN from the Claude Code keychain.
48
- * This is required when --bare is set, because --bare skips the settings
49
- * discovery that normally loads Claude Code's auth configuration.
108
+ * Platform-alias tool list derived from the AGENT_TOOL / compiled.tools model.
109
+ *
110
+ * When supplied (via `compileAgent({ platform: "claude_code" }).tools`), this
111
+ * array is the single source of truth for which Claude Code built-ins are
112
+ * permitted — config.allowedBuiltinTools is ignored. When absent, the provider
113
+ * falls back to config.allowedBuiltinTools (legacy / transition-window path).
114
+ *
115
+ * [inv:no-third-tool-model] — one tool-permission source, not two.
116
+ */
117
+ private readonly compiledTools;
118
+ constructor(config: ClaudeCliConfig, mcpServers?: Record<string, McpServerConfig>, compiledTools?: string[]);
119
+ /**
120
+ * Build the subprocess environment for the claude CLI subprocess.
121
+ *
122
+ * Merges the live process.env (PATH, HOME, call-time vars) with the
123
+ * config snapshot (ADHD_AGENT_* vars loaded from the .env hierarchy at
124
+ * startup), with the config snapshot winning on conflicts. This ensures
125
+ * the subprocess inherits both the user's shell context and any overrides
126
+ * loaded via the .env hierarchy — and allows test-injected env vars (e.g.
127
+ * CAPTURE_FILE) to flow through to the subprocess without a module reload.
50
128
  */
51
129
  private buildSubprocessEnv;
52
130
  /**
@@ -60,6 +138,15 @@ export declare class ClaudeCliProvider implements LLMProvider {
60
138
  * Returns undefined if there are no servers to configure.
61
139
  */
62
140
  private writeMcpConfigFile;
141
+ /**
142
+ * Writes an agent-spec markdown system prompt to an isolated temp project dir
143
+ * as `<dir>/.claude/agents/<name>.md`, so the subprocess can discover and
144
+ * parse it via `--add-dir <dir> --setting-sources project --agent <name>`.
145
+ *
146
+ * Returns the temp dir (for `--add-dir`) and the frontmatter agent name (for
147
+ * `--agent`). The caller MUST delete the dir in its finally block.
148
+ */
149
+ private writeAgentSpecDir;
63
150
  chat(request: ProviderChatRequest): Promise<ProviderChatResponse>;
64
151
  }
65
152
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"claudecli.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/providers/claudecli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAcH,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAW,MAAM,wBAAwB,CAAC;AAIvF,KAAK,eAAe,GAAG,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC;AA4GtE,qBAAa,iBAAkB,YAAW,WAAW;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;gBAEjD,MAAM,EAAE,eAAe,EAAE,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAM;IAKrF;;;;;OAKG;YACW,kBAAkB;IA8BhC;;;;;;;;;OASG;YACW,kBAAkB;IA8B1B,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA6L1E"}
1
+ {"version":3,"file":"claudecli.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/providers/claudecli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAWH,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAW,MAAM,wBAAwB,CAAC;AAKvF,KAAK,eAAe,GAAG,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC;AAkItE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAC7C,aAAa,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACpC,mBAAmB,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAC7C,GAAG;IAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAAE,CAe3D;AAQD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMnE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAgBrF;AAID,qBAAa,iBAAkB,YAAW,WAAW;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;IAC7D;;;;;;;;;OASG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;gBAGjD,MAAM,EAAE,eAAe,EACvB,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAM,EAChD,aAAa,CAAC,EAAE,MAAM,EAAE;IAO5B;;;;;;;;;OASG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;;;;;;;;OASG;YACW,kBAAkB;IA8BhC;;;;;;;OAOG;YACW,iBAAiB;IAYzB,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAwO1E"}