@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.
- package/drizzle/0006_composed_prompts_cache.sql +24 -0
- package/drizzle/meta/0006_snapshot.json +651 -0
- package/drizzle/meta/_journal.json +8 -1
- package/package.json +5 -1
- package/src/__tests__/integration/harness.d.ts.map +1 -1
- package/src/__tests__/integration/harness.js +10 -8
- package/src/__tests__/integration/harness.js.map +1 -1
- package/src/clients/stdio-client.d.ts.map +1 -1
- package/src/clients/stdio-client.js +2 -1
- package/src/clients/stdio-client.js.map +1 -1
- package/src/config.d.ts +114 -0
- package/src/config.d.ts.map +1 -0
- package/src/config.js +287 -0
- package/src/config.js.map +1 -0
- package/src/db/client.d.ts.map +1 -1
- package/src/db/client.js +2 -3
- package/src/db/client.js.map +1 -1
- package/src/db/schema.d.ts +242 -0
- package/src/db/schema.d.ts.map +1 -1
- package/src/db/schema.js +38 -1
- package/src/db/schema.js.map +1 -1
- package/src/engine/orchestrator.d.ts.map +1 -1
- package/src/engine/orchestrator.js +3 -2
- package/src/engine/orchestrator.js.map +1 -1
- package/src/engine/policy.d.ts +24 -0
- package/src/engine/policy.d.ts.map +1 -1
- package/src/engine/policy.js +73 -6
- package/src/engine/policy.js.map +1 -1
- package/src/engine/prompt-resolver.d.ts +89 -0
- package/src/engine/prompt-resolver.d.ts.map +1 -0
- package/src/engine/prompt-resolver.js +96 -0
- package/src/engine/prompt-resolver.js.map +1 -0
- package/src/engine/queue.d.ts.map +1 -1
- package/src/engine/queue.js +2 -2
- package/src/engine/queue.js.map +1 -1
- package/src/index.d.ts +31 -3
- package/src/index.d.ts.map +1 -1
- package/src/index.js +131 -20
- package/src/index.js.map +1 -1
- package/src/logger.d.ts.map +1 -1
- package/src/logger.js +2 -1
- package/src/logger.js.map +1 -1
- package/src/plugins/loader.d.ts +19 -6
- package/src/plugins/loader.d.ts.map +1 -1
- package/src/plugins/loader.js +23 -13
- package/src/plugins/loader.js.map +1 -1
- package/src/providers/anthropic.d.ts +5 -5
- package/src/providers/anthropic.d.ts.map +1 -1
- package/src/providers/anthropic.js +53 -188
- package/src/providers/anthropic.js.map +1 -1
- package/src/providers/claudecli.d.ts +92 -5
- package/src/providers/claudecli.d.ts.map +1 -1
- package/src/providers/claudecli.js +224 -47
- package/src/providers/claudecli.js.map +1 -1
- package/src/providers/factory.d.ts +1 -1
- package/src/providers/factory.d.ts.map +1 -1
- package/src/providers/factory.js +6 -9
- package/src/providers/factory.js.map +1 -1
- package/src/providers/index.d.ts +1 -1
- package/src/providers/index.d.ts.map +1 -1
- package/src/providers/index.js +1 -1
- package/src/providers/index.js.map +1 -1
- package/src/providers/openai.d.ts +4 -2
- package/src/providers/openai.d.ts.map +1 -1
- package/src/providers/openai.js +29 -18
- package/src/providers/openai.js.map +1 -1
- package/src/providers/types.d.ts +1 -1
- package/src/server.d.ts +8 -0
- package/src/server.d.ts.map +1 -1
- package/src/server.js +19 -12
- package/src/server.js.map +1 -1
- package/src/store/agent-store.d.ts +13 -0
- package/src/store/agent-store.d.ts.map +1 -1
- package/src/store/agent-store.js +16 -3
- package/src/store/agent-store.js.map +1 -1
- package/src/store/composed-prompt-store.d.ts +24 -0
- package/src/store/composed-prompt-store.d.ts.map +1 -0
- package/src/store/composed-prompt-store.js +75 -0
- package/src/store/composed-prompt-store.js.map +1 -0
- package/src/store/index.d.ts +1 -0
- package/src/store/index.d.ts.map +1 -1
- package/src/store/index.js +1 -0
- package/src/store/index.js.map +1 -1
- package/src/store/session-store.d.ts +8 -0
- package/src/store/session-store.d.ts.map +1 -1
- package/src/store/session-store.js +3 -2
- package/src/store/session-store.js.map +1 -1
- package/src/streaming/sse-server.d.ts +2 -2
- package/src/streaming/sse-server.d.ts.map +1 -1
- package/src/streaming/sse-server.js +4 -4
- package/src/streaming/sse-server.js.map +1 -1
- package/src/tools/session.d.ts +12 -0
- package/src/tools/session.d.ts.map +1 -1
- package/src/tools/session.js +33 -1
- package/src/tools/session.js.map +1 -1
- package/src/tools/task.d.ts.map +1 -1
- package/src/tools/task.js +2 -2
- package/src/tools/task.js.map +1 -1
- package/src/tools/usage.d.ts.map +1 -1
- package/src/tools/usage.js +10 -3
- package/src/tools/usage.js.map +1 -1
- package/src/utils/load-env.d.ts +16 -0
- package/src/utils/load-env.d.ts.map +1 -0
- package/src/utils/load-env.js +27 -0
- package/src/utils/load-env.js.map +1 -0
- package/src/validation/agent.d.ts +150 -62
- package/src/validation/agent.d.ts.map +1 -1
- package/src/validation/agent.js +152 -37
- package/src/validation/agent.js.map +1 -1
- package/src/validation/errors.d.ts +1 -0
- package/src/validation/errors.d.ts.map +1 -1
- package/src/validation/errors.js +2 -0
- package/src/validation/errors.js.map +1 -1
- package/src/validation/execution.d.ts +13 -20
- package/src/validation/execution.d.ts.map +1 -1
- package/src/providers/lmstudio.d.ts +0 -8
- package/src/providers/lmstudio.d.ts.map +0 -1
- package/src/providers/lmstudio.js +0 -15
- package/src/providers/lmstudio.js.map +0 -1
package/src/plugins/loader.js
CHANGED
|
@@ -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. `
|
|
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 =
|
|
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 `
|
|
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 = (
|
|
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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,iFAAiF;AAEjF,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,6CAA6C;IAC7C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,mCAAmC,CAAC;IAC9D,8EAA8E;IAC9E,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CACnE,CAAC,CAAC;AAEH,6DAA6D;AAC7D,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC7D,CAAC,CAAC;AA2BH,iFAAiF;AAEjF
|
|
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
|
|
6
|
-
/** True when the
|
|
7
|
-
private
|
|
8
|
-
constructor(
|
|
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":"
|
|
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
|
-
//
|
|
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
|
-
|
|
43
|
+
// Unknown / future model — fall back to the global default
|
|
44
|
+
return config.server.defaultMaxTokens;
|
|
49
45
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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
|
-
|
|
222
|
-
/** True when the
|
|
223
|
-
|
|
224
|
-
constructor(
|
|
225
|
-
this.
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
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
|
-
|
|
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.
|
|
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:
|
|
186
|
+
model: effectiveModel,
|
|
323
187
|
system: effectiveSystem,
|
|
324
|
-
temperature: this.
|
|
325
|
-
max_tokens: this.
|
|
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.
|
|
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
|
-
`
|
|
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
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
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
|
|
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"}
|