@adhd/agent-mcp 0.0.9 → 1.0.1
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/0004_brief_shocker.sql +4 -0
- package/drizzle/0005_clear_lenny_balinger.sql +25 -0
- package/drizzle/meta/0004_snapshot.json +551 -0
- package/drizzle/meta/0005_snapshot.json +545 -0
- package/drizzle/meta/_journal.json +14 -0
- package/package.json +1 -1
- package/src/__tests__/integration/harness.d.ts +195 -0
- package/src/__tests__/integration/harness.d.ts.map +1 -0
- package/src/__tests__/integration/harness.js +401 -0
- package/src/__tests__/integration/harness.js.map +1 -0
- package/src/__tests__/integration/scripted-provider.d.ts +44 -0
- package/src/__tests__/integration/scripted-provider.d.ts.map +1 -0
- package/src/__tests__/integration/scripted-provider.js +82 -0
- package/src/__tests__/integration/scripted-provider.js.map +1 -0
- package/src/clients/http-client.d.ts +1 -1
- package/src/clients/http-client.d.ts.map +1 -1
- package/src/clients/http-client.js +4 -2
- package/src/clients/http-client.js.map +1 -1
- package/src/clients/in-process.d.ts +1 -1
- package/src/clients/in-process.d.ts.map +1 -1
- package/src/clients/in-process.js +6 -1
- package/src/clients/in-process.js.map +1 -1
- package/src/clients/registry.d.ts +17 -0
- package/src/clients/registry.d.ts.map +1 -1
- package/src/clients/registry.js +45 -6
- package/src/clients/registry.js.map +1 -1
- package/src/clients/stdio-client.d.ts +1 -1
- package/src/clients/stdio-client.d.ts.map +1 -1
- package/src/clients/stdio-client.js +9 -3
- package/src/clients/stdio-client.js.map +1 -1
- package/src/clients/tool-naming.d.ts +20 -0
- package/src/clients/tool-naming.d.ts.map +1 -0
- package/src/clients/tool-naming.js +22 -0
- package/src/clients/tool-naming.js.map +1 -0
- package/src/clients/types.d.ts +5 -1
- package/src/clients/types.d.ts.map +1 -1
- package/src/db/client.d.ts +1 -0
- package/src/db/client.d.ts.map +1 -1
- package/src/db/client.js +1 -1
- package/src/db/client.js.map +1 -1
- package/src/db/migrate-runner.d.ts +38 -0
- package/src/db/migrate-runner.d.ts.map +1 -0
- package/src/db/migrate-runner.js +41 -0
- package/src/db/migrate-runner.js.map +1 -0
- package/src/db/migrate.d.ts +3 -0
- package/src/db/migrate.d.ts.map +1 -1
- package/src/db/migrate.js +6 -5
- package/src/db/migrate.js.map +1 -1
- package/src/db/schema.d.ts +96 -3
- package/src/db/schema.d.ts.map +1 -1
- package/src/db/schema.js +16 -6
- package/src/db/schema.js.map +1 -1
- package/src/engine/dag-engine.d.ts +62 -0
- package/src/engine/dag-engine.d.ts.map +1 -0
- package/src/engine/dag-engine.js +158 -0
- package/src/engine/dag-engine.js.map +1 -0
- package/src/engine/orchestrator.d.ts +14 -0
- package/src/engine/orchestrator.d.ts.map +1 -1
- package/src/engine/orchestrator.js +206 -58
- package/src/engine/orchestrator.js.map +1 -1
- package/src/engine/queue.d.ts +6 -0
- package/src/engine/queue.d.ts.map +1 -1
- package/src/engine/queue.js +8 -0
- package/src/engine/queue.js.map +1 -1
- package/src/index.js +75 -0
- package/src/index.js.map +1 -1
- package/src/providers/anthropic.d.ts.map +1 -1
- package/src/providers/anthropic.js +22 -3
- package/src/providers/anthropic.js.map +1 -1
- package/src/server.d.ts +18 -0
- package/src/server.d.ts.map +1 -1
- package/src/server.js +25 -2
- package/src/server.js.map +1 -1
- package/src/store/task-store.d.ts +7 -1
- package/src/store/task-store.d.ts.map +1 -1
- package/src/store/task-store.js +37 -5
- package/src/store/task-store.js.map +1 -1
- package/src/streaming/event-bus.d.ts +28 -0
- package/src/streaming/event-bus.d.ts.map +1 -0
- package/src/streaming/event-bus.js +12 -0
- package/src/streaming/event-bus.js.map +1 -0
- package/src/streaming/sse-server.d.ts +16 -0
- package/src/streaming/sse-server.d.ts.map +1 -0
- package/src/streaming/sse-server.js +118 -0
- package/src/streaming/sse-server.js.map +1 -0
- package/src/tools/task.d.ts +35 -0
- package/src/tools/task.d.ts.map +1 -1
- package/src/tools/task.js +200 -36
- package/src/tools/task.js.map +1 -1
- package/src/validation/agent.d.ts +3 -0
- package/src/validation/agent.d.ts.map +1 -1
- package/src/validation/agent.js +7 -0
- 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 +1 -0
- package/src/validation/errors.js.map +1 -1
- package/src/validation/execution.d.ts +2 -0
- package/src/validation/execution.d.ts.map +1 -1
- package/src/validation/execution.js +5 -0
- package/src/validation/execution.js.map +1 -1
- package/src/validation/task.d.ts +31 -1
- package/src/validation/task.d.ts.map +1 -1
- package/src/validation/task.js +24 -1
- package/src/validation/task.js.map +1 -1
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ScriptedProvider — deterministic LLM provider for integration tests.
|
|
3
|
+
*
|
|
4
|
+
* Implements the real LLMProvider interface.
|
|
5
|
+
* Returns programmable responses per chat() call in sequence.
|
|
6
|
+
* After all scripted turns are exhausted, defaults to a "completed" response.
|
|
7
|
+
*
|
|
8
|
+
* Supported turn types:
|
|
9
|
+
* - "completed" → returns stopReason "completed" with given content
|
|
10
|
+
* - "tool_calls" → returns stopReason "tool_calls" with given tool calls
|
|
11
|
+
* - "hitl" → returns a single request_human_input tool call
|
|
12
|
+
*
|
|
13
|
+
* Supports a beforeCall hook so tool stubs can coordinate with Latches.
|
|
14
|
+
*/
|
|
15
|
+
import { generateId } from "../../utils/ids.js";
|
|
16
|
+
import { nowIso } from "../../utils/timestamps.js";
|
|
17
|
+
export class ScriptedProvider {
|
|
18
|
+
turns;
|
|
19
|
+
callIndex = 0;
|
|
20
|
+
/**
|
|
21
|
+
* Optional hook invoked at the START of each chat() call (before returning).
|
|
22
|
+
* Receives the call index (0-based) so tests can key on specific turns.
|
|
23
|
+
*/
|
|
24
|
+
beforeCall;
|
|
25
|
+
constructor(turns) {
|
|
26
|
+
this.turns = turns;
|
|
27
|
+
}
|
|
28
|
+
async chat() {
|
|
29
|
+
const idx = this.callIndex++;
|
|
30
|
+
if (this.beforeCall) {
|
|
31
|
+
await this.beforeCall(idx);
|
|
32
|
+
}
|
|
33
|
+
const turn = this.turns[idx] ?? { type: "completed", content: "done" };
|
|
34
|
+
const sessionId = generateId();
|
|
35
|
+
if (turn.type === "completed") {
|
|
36
|
+
const msg = {
|
|
37
|
+
id: generateId(),
|
|
38
|
+
sessionId,
|
|
39
|
+
role: "assistant",
|
|
40
|
+
content: turn.content,
|
|
41
|
+
createdAt: nowIso(),
|
|
42
|
+
};
|
|
43
|
+
return { message: msg, stopReason: "completed" };
|
|
44
|
+
}
|
|
45
|
+
if (turn.type === "hitl") {
|
|
46
|
+
const callId = generateId();
|
|
47
|
+
const msg = {
|
|
48
|
+
id: generateId(),
|
|
49
|
+
sessionId,
|
|
50
|
+
role: "assistant",
|
|
51
|
+
content: undefined,
|
|
52
|
+
toolCalls: [
|
|
53
|
+
{
|
|
54
|
+
id: callId,
|
|
55
|
+
server: "builtin",
|
|
56
|
+
tool: "request_human_input",
|
|
57
|
+
arguments: { prompt: turn.prompt },
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
createdAt: nowIso(),
|
|
61
|
+
};
|
|
62
|
+
return { message: msg, stopReason: "tool_calls" };
|
|
63
|
+
}
|
|
64
|
+
// type === "tool_calls"
|
|
65
|
+
const calls = turn.toolCalls.map((spec) => ({
|
|
66
|
+
id: spec.id ?? generateId(),
|
|
67
|
+
server: spec.server,
|
|
68
|
+
tool: spec.tool,
|
|
69
|
+
arguments: spec.arguments,
|
|
70
|
+
}));
|
|
71
|
+
const msg = {
|
|
72
|
+
id: generateId(),
|
|
73
|
+
sessionId,
|
|
74
|
+
role: "assistant",
|
|
75
|
+
content: undefined,
|
|
76
|
+
toolCalls: calls,
|
|
77
|
+
createdAt: nowIso(),
|
|
78
|
+
};
|
|
79
|
+
return { message: msg, stopReason: "tool_calls" };
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=scripted-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripted-provider.js","sourceRoot":"","sources":["../../../../../../../packages/ai/agent-mcp/src/__tests__/integration/scripted-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAenD,MAAM,OAAO,gBAAgB;IACR,KAAK,CAAiB;IAC/B,SAAS,GAAG,CAAC,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAwC;IAElD,YAAY,KAAqB;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,IAAI;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAE7B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAEvE,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;QAE/B,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAY;gBACjB,EAAE,EAAE,UAAU,EAAE;gBAChB,SAAS;gBACT,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,SAAS,EAAE,MAAM,EAAE;aACtB,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;QACrD,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAY;gBACjB,EAAE,EAAE,UAAU,EAAE;gBAChB,SAAS;gBACT,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,MAAM;wBACV,MAAM,EAAE,SAAS;wBACjB,IAAI,EAAE,qBAAqB;wBAC3B,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;qBACrC;iBACJ;gBACD,SAAS,EAAE,MAAM,EAAE;aACtB,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;QACtD,CAAC;QAED,wBAAwB;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACxC,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,UAAU,EAAE;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;SAC5B,CAAC,CAAC,CAAC;QAEJ,MAAM,GAAG,GAAY;YACjB,EAAE,EAAE,UAAU,EAAE;YAChB,SAAS;YACT,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,SAAS;YAClB,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE,MAAM,EAAE;SACtB,CAAC;QAEF,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;IACtD,CAAC;CACJ"}
|
|
@@ -7,7 +7,7 @@ declare abstract class BaseHttpMcpClient implements IMcpClient {
|
|
|
7
7
|
protected client: Client | null;
|
|
8
8
|
constructor(serverName: string);
|
|
9
9
|
listTools(): Promise<ToolDefinition[]>;
|
|
10
|
-
callTool(toolName: string, args: unknown): Promise<unknown>;
|
|
10
|
+
callTool(toolName: string, args: unknown, signal?: AbortSignal): Promise<unknown>;
|
|
11
11
|
close(): Promise<void>;
|
|
12
12
|
}
|
|
13
13
|
export declare class HttpMcpClient extends BaseHttpMcpClient {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/clients/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAInE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,uBAAe,iBAAkB,YAAW,UAAU;IAGtC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM;IAFjD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;gBAER,UAAU,EAAE,MAAM;IAE3C,SAAS,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/clients/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAInE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,uBAAe,iBAAkB,YAAW,UAAU;IAGtC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM;IAFjD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;gBAER,UAAU,EAAE,MAAM;IAE3C,SAAS,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BjF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ/B;AAED,qBAAa,aAAc,SAAQ,iBAAiB;IAG5C,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADvB,UAAU,EAAE,MAAM,EACD,MAAM,EAAE,aAAa;IAKpC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAmBjC;AAED,qBAAa,YAAa,SAAQ,iBAAiB;IAG3C,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADvB,UAAU,EAAE,MAAM,EACD,MAAM,EAAE,YAAY;IAKnC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CA0BjC"}
|
|
@@ -22,14 +22,16 @@ class BaseHttpMcpClient {
|
|
|
22
22
|
},
|
|
23
23
|
}));
|
|
24
24
|
}
|
|
25
|
-
async callTool(toolName, args) {
|
|
25
|
+
async callTool(toolName, args, signal) {
|
|
26
26
|
if (!this.client) {
|
|
27
27
|
throw new ToolError("MCP_CLIENT_ERROR", `Client '${this.serverName}' not connected`);
|
|
28
28
|
}
|
|
29
|
+
// Thread the caller's cancellation/timeout signal so a task cancel
|
|
30
|
+
// interrupts this in-flight call (DEBT-003).
|
|
29
31
|
const result = await this.client.callTool({
|
|
30
32
|
name: toolName,
|
|
31
33
|
arguments: args,
|
|
32
|
-
});
|
|
34
|
+
}, undefined, signal ? { signal } : undefined);
|
|
33
35
|
if (result.isError) {
|
|
34
36
|
throw new ToolError("MCP_CLIENT_ERROR", `Tool '${toolName}' on server '${this.serverName}' returned an error: ${JSON.stringify(result.content)}`);
|
|
35
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/clients/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAInG,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGpD,MAAe,iBAAiB;IAGG;IAFrB,MAAM,GAAkB,IAAI,CAAC;IAEvC,YAA+B,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAAG,CAAC;IAErD,KAAK,CAAC,SAAS;QACX,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,IAAI,SAAS,CAAC,kBAAkB,EAAE,WAAW,IAAI,CAAC,UAAU,iBAAiB,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAC/C,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;YACnC,WAAW,EAAG,IAAI,CAAC,WAAuC,IAAI;gBAC1D,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE;aACjB;SACJ,CAAC,CAAC,CAAC;IACR,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,IAAa;
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/clients/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAInG,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGpD,MAAe,iBAAiB;IAGG;IAFrB,MAAM,GAAkB,IAAI,CAAC;IAEvC,YAA+B,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAAG,CAAC;IAErD,KAAK,CAAC,SAAS;QACX,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,IAAI,SAAS,CAAC,kBAAkB,EAAE,WAAW,IAAI,CAAC,UAAU,iBAAiB,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAC/C,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;YACnC,WAAW,EAAG,IAAI,CAAC,WAAuC,IAAI;gBAC1D,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE;aACjB;SACJ,CAAC,CAAC,CAAC;IACR,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,IAAa,EAAE,MAAoB;QAChE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,IAAI,SAAS,CAAC,kBAAkB,EAAE,WAAW,IAAI,CAAC,UAAU,iBAAiB,CAAC,CAAC;QACzF,CAAC;QAED,mEAAmE;QACnE,6CAA6C;QAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CACrC;YACI,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,IAA+B;SAC7C,EACD,SAAS,EACT,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAClC,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,SAAS,CACf,kBAAkB,EAClB,SAAS,QAAQ,gBAAgB,IAAI,CAAC,UAAU,wBAAwB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAC3G,CAAC;QACN,CAAC;QAED,OAAO,MAAM,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,KAAK;QACP,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACL,sBAAsB;QAC1B,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;CACJ;AAED,MAAM,OAAO,aAAc,SAAQ,iBAAiB;IAG3B;IAFrB,YACI,UAAkB,EACD,MAAqB;QAEtC,KAAK,CAAC,UAAU,CAAC,CAAC;QAFD,WAAM,GAAN,MAAM,CAAe;IAG1C,CAAC;IAED,KAAK,CAAC,OAAO;QACT,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC,GAAG,EAAE;YACrD,WAAW,EAAE;gBACT,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAkC;gBACvD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;oBACzB,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;oBAC5C,CAAC,CAAC,SAAS;aAClB;SACJ,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,MAAM,CACrB,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,EAC9C,EAAE,YAAY,EAAE,EAAE,EAAE,CACvB,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;CACJ;AAED,MAAM,OAAO,YAAa,SAAQ,iBAAiB;IAG1B;IAFrB,YACI,UAAkB,EACD,MAAoB;QAErC,KAAK,CAAC,UAAU,CAAC,CAAC;QAFD,WAAM,GAAN,MAAM,CAAc;IAGzC,CAAC;IAED,KAAK,CAAC,OAAO;QACT,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,kBAAkB,CAAC,GAAG,EAAE;YAC1C,eAAe,EAAE;gBACb,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CACnB,KAAK,CAAC,KAAK,EAAE;oBACT,GAAG,IAAI;oBACP,OAAO,EAAE;wBACL,GAAI,IAAI,EAAE,OAAkC;wBAC5C,GAAI,IAAI,CAAC,MAAM,CAAC,OAAkC;qBACtC;oBAChB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;wBACzB,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;wBAC5C,CAAC,CAAC,SAAS;iBAClB,CAAC;aACT;SACJ,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,MAAM,CACrB,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,EAC9C,EAAE,YAAY,EAAE,EAAE,EAAE,CACvB,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;CACJ"}
|
|
@@ -21,7 +21,7 @@ export declare class InProcessMcpClient implements IMcpClient {
|
|
|
21
21
|
private readonly context;
|
|
22
22
|
constructor(tools: InProcessToolDescriptor[], handler: InProcessToolHandler, context: ExecutionContext);
|
|
23
23
|
listTools(): Promise<ToolDefinition[]>;
|
|
24
|
-
callTool(toolName: string, args: unknown): Promise<unknown>;
|
|
24
|
+
callTool(toolName: string, args: unknown, signal?: AbortSignal): Promise<unknown>;
|
|
25
25
|
close(): Promise<void>;
|
|
26
26
|
}
|
|
27
27
|
//# sourceMappingURL=in-process.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-process.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/clients/in-process.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,oBAAoB,GAAG,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,gBAAgB,KACpB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,MAAM,MAAM,uBAAuB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC,CAAC;AAEF;;;;;;;GAOG;AACH,qBAAa,kBAAmB,YAAW,UAAU;IAE7C,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFP,KAAK,EAAE,uBAAuB,EAAE,EAChC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,gBAAgB;IAGxC,SAAS,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAQtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"in-process.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/clients/in-process.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,oBAAoB,GAAG,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,gBAAgB,KACpB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,MAAM,MAAM,uBAAuB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC,CAAC;AAEF;;;;;;;GAOG;AACH,qBAAa,kBAAmB,YAAW,UAAU;IAE7C,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFP,KAAK,EAAE,uBAAuB,EAAE,EAChC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,gBAAgB;IAGxC,SAAS,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAQtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IASjF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -22,7 +22,12 @@ export class InProcessMcpClient {
|
|
|
22
22
|
inputSchema: t.inputSchema,
|
|
23
23
|
}));
|
|
24
24
|
}
|
|
25
|
-
async callTool(toolName, args) {
|
|
25
|
+
async callTool(toolName, args, signal) {
|
|
26
|
+
// If the task was already cancelled/timed out, don't start the in-process
|
|
27
|
+
// call (which would spin up a recursive sub-task). Mid-flight cancellation
|
|
28
|
+
// of an in-process sub-task is handled by that sub-task's own cancellation
|
|
29
|
+
// signal via the task registry, not by this signal. (DEBT-003)
|
|
30
|
+
signal?.throwIfAborted();
|
|
26
31
|
return this.handler(toolName, args, this.context);
|
|
27
32
|
}
|
|
28
33
|
async close() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-process.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/clients/in-process.ts"],"names":[],"mappings":"AAgBA;;;;;;;GAOG;AACH,MAAM,OAAO,kBAAkB;IAEN;IACA;IACA;IAHrB,YACqB,KAAgC,EAChC,OAA6B,EAC7B,OAAyB;QAFzB,UAAK,GAAL,KAAK,CAA2B;QAChC,YAAO,GAAP,OAAO,CAAsB;QAC7B,YAAO,GAAP,OAAO,CAAkB;IAC3C,CAAC;IAEJ,KAAK,CAAC,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;SAC7B,CAAC,CAAC,CAAC;IACR,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,IAAa;
|
|
1
|
+
{"version":3,"file":"in-process.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/clients/in-process.ts"],"names":[],"mappings":"AAgBA;;;;;;;GAOG;AACH,MAAM,OAAO,kBAAkB;IAEN;IACA;IACA;IAHrB,YACqB,KAAgC,EAChC,OAA6B,EAC7B,OAAyB;QAFzB,UAAK,GAAL,KAAK,CAA2B;QAChC,YAAO,GAAP,OAAO,CAAsB;QAC7B,YAAO,GAAP,OAAO,CAAkB;IAC3C,CAAC;IAEJ,KAAK,CAAC,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;SAC7B,CAAC,CAAC,CAAC;IACR,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,IAAa,EAAE,MAAoB;QAChE,0EAA0E;QAC1E,2EAA2E;QAC3E,2EAA2E;QAC3E,+DAA+D;QAC/D,MAAM,EAAE,cAAc,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,KAAK;QACP,2CAA2C;IAC/C,CAAC;CACJ"}
|
|
@@ -21,8 +21,15 @@ export declare class McpClientRegistry {
|
|
|
21
21
|
private readonly context;
|
|
22
22
|
private readonly clients;
|
|
23
23
|
private readonly connectPromises;
|
|
24
|
+
private readonly toolTargets;
|
|
24
25
|
constructor(mcpServers: Record<string, McpServerConfig>, selfUrl: string | undefined, inProcessDescriptors: InProcessToolDescriptor[], inProcessHandler: InProcessToolHandler, context: ExecutionContext);
|
|
25
26
|
private isSelfReferential;
|
|
27
|
+
/**
|
|
28
|
+
* Map a (possibly model-normalized) server name back to a configured key.
|
|
29
|
+
* OpenAI-compatible/local models rewrite '-' → '_', so a tool call to
|
|
30
|
+
* 'agent_mcp__…' must still resolve to the configured 'agent-mcp' server.
|
|
31
|
+
*/
|
|
32
|
+
private resolveServerName;
|
|
26
33
|
private getOrCreateClient;
|
|
27
34
|
/** Get a client for a specific server, connecting lazily if needed */
|
|
28
35
|
getClient(name: string): Promise<IMcpClient>;
|
|
@@ -31,6 +38,16 @@ export declare class McpClientRegistry {
|
|
|
31
38
|
* Prefixes each tool name with "<server>__<tool>" for disambiguation.
|
|
32
39
|
*/
|
|
33
40
|
listAllTools(): Promise<ToolDefinition[]>;
|
|
41
|
+
/**
|
|
42
|
+
* Resolve a tool name AS RETURNED BY A MODEL back to its real { server, tool }.
|
|
43
|
+
* Tries the exact advertised name, then the normalized form (handles models
|
|
44
|
+
* that rewrite '-' → '_'), then falls back to a literal `__` split for names
|
|
45
|
+
* the registry never advertised (preserves prior behavior).
|
|
46
|
+
*/
|
|
47
|
+
resolveToolName(advertised: string): {
|
|
48
|
+
server: string;
|
|
49
|
+
tool: string;
|
|
50
|
+
};
|
|
34
51
|
/** Tear down all clients — called from Orchestrator's finally block */
|
|
35
52
|
closeAll(): Promise<void>;
|
|
36
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/clients/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAIrF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/clients/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAIrF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C;;;;;;;;;;GAUG;AACH,qBAAa,iBAAiB;IAStB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZ5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoC;IAIpE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuD;gBAG9D,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAC3C,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,oBAAoB,EAAE,uBAAuB,EAAE,EAC/C,gBAAgB,EAAE,oBAAoB,EACtC,OAAO,EAAE,gBAAgB;IAG9C,OAAO,CAAC,iBAAiB;IAczB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;YAMX,iBAAiB;IAkD/B,sEAAsE;IAChE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAIlD;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IA4B/C;;;;;OAKG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAcrE,uEAAuE;IACjE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAgBlC"}
|
package/src/clients/registry.js
CHANGED
|
@@ -2,6 +2,7 @@ import { logger } from "../logger.js";
|
|
|
2
2
|
import { InProcessMcpClient } from "./in-process.js";
|
|
3
3
|
import { HttpMcpClient, SseMcpClient } from "./http-client.js";
|
|
4
4
|
import { StdioMcpClient } from "./stdio-client.js";
|
|
5
|
+
import { TOOL_NAME_SEPARATOR, normalizeToolName } from "./tool-naming.js";
|
|
5
6
|
/**
|
|
6
7
|
* McpClientRegistry — per-task lifetime.
|
|
7
8
|
*
|
|
@@ -21,6 +22,10 @@ export class McpClientRegistry {
|
|
|
21
22
|
context;
|
|
22
23
|
clients = new Map();
|
|
23
24
|
connectPromises = new Map();
|
|
25
|
+
// advertised tool name (and its normalized form) → real { server, tool }.
|
|
26
|
+
// Populated by listAllTools(); lets resolveToolName() recover the real target
|
|
27
|
+
// even when a model rewrites '-' → '_' in the name it calls back with.
|
|
28
|
+
toolTargets = new Map();
|
|
24
29
|
constructor(mcpServers, selfUrl, inProcessDescriptors, inProcessHandler, context) {
|
|
25
30
|
this.mcpServers = mcpServers;
|
|
26
31
|
this.selfUrl = selfUrl;
|
|
@@ -38,13 +43,25 @@ export class McpClientRegistry {
|
|
|
38
43
|
}
|
|
39
44
|
return false;
|
|
40
45
|
}
|
|
41
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Map a (possibly model-normalized) server name back to a configured key.
|
|
48
|
+
* OpenAI-compatible/local models rewrite '-' → '_', so a tool call to
|
|
49
|
+
* 'agent_mcp__…' must still resolve to the configured 'agent-mcp' server.
|
|
50
|
+
*/
|
|
51
|
+
resolveServerName(name) {
|
|
52
|
+
if (this.mcpServers[name])
|
|
53
|
+
return name;
|
|
54
|
+
const norm = normalizeToolName(name);
|
|
55
|
+
return Object.keys(this.mcpServers).find((k) => normalizeToolName(k) === norm) ?? name;
|
|
56
|
+
}
|
|
57
|
+
async getOrCreateClient(rawName) {
|
|
58
|
+
const name = this.resolveServerName(rawName);
|
|
42
59
|
const existing = this.clients.get(name);
|
|
43
60
|
if (existing)
|
|
44
61
|
return existing;
|
|
45
62
|
const config = this.mcpServers[name];
|
|
46
63
|
if (!config) {
|
|
47
|
-
throw new Error(`No MCP server config found for server: '${
|
|
64
|
+
throw new Error(`No MCP server config found for server: '${rawName}'`);
|
|
48
65
|
}
|
|
49
66
|
if (this.isSelfReferential(name, config)) {
|
|
50
67
|
const client = new InProcessMcpClient(this.inProcessDescriptors, this.inProcessHandler, this.context);
|
|
@@ -94,10 +111,13 @@ export class McpClientRegistry {
|
|
|
94
111
|
const client = await this.getOrCreateClient(serverName);
|
|
95
112
|
const tools = await client.listTools();
|
|
96
113
|
for (const tool of tools) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
114
|
+
const advertised = `${serverName}${TOOL_NAME_SEPARATOR}${tool.name}`;
|
|
115
|
+
const target = { server: serverName, tool: tool.name };
|
|
116
|
+
// Index both the advertised name and its normalized form so a
|
|
117
|
+
// model that rewrites '-' → '_' still resolves to the real target.
|
|
118
|
+
this.toolTargets.set(advertised, target);
|
|
119
|
+
this.toolTargets.set(normalizeToolName(advertised), target);
|
|
120
|
+
allTools.push({ ...tool, name: advertised });
|
|
101
121
|
}
|
|
102
122
|
}
|
|
103
123
|
catch (error) {
|
|
@@ -106,6 +126,25 @@ export class McpClientRegistry {
|
|
|
106
126
|
}
|
|
107
127
|
return allTools;
|
|
108
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Resolve a tool name AS RETURNED BY A MODEL back to its real { server, tool }.
|
|
131
|
+
* Tries the exact advertised name, then the normalized form (handles models
|
|
132
|
+
* that rewrite '-' → '_'), then falls back to a literal `__` split for names
|
|
133
|
+
* the registry never advertised (preserves prior behavior).
|
|
134
|
+
*/
|
|
135
|
+
resolveToolName(advertised) {
|
|
136
|
+
const hit = this.toolTargets.get(advertised) ??
|
|
137
|
+
this.toolTargets.get(normalizeToolName(advertised));
|
|
138
|
+
if (hit)
|
|
139
|
+
return hit;
|
|
140
|
+
const i = advertised.indexOf(TOOL_NAME_SEPARATOR);
|
|
141
|
+
return i === -1
|
|
142
|
+
? { server: advertised, tool: advertised }
|
|
143
|
+
: {
|
|
144
|
+
server: advertised.slice(0, i),
|
|
145
|
+
tool: advertised.slice(i + TOOL_NAME_SEPARATOR.length),
|
|
146
|
+
};
|
|
147
|
+
}
|
|
109
148
|
/** Tear down all clients — called from Orchestrator's finally block */
|
|
110
149
|
async closeAll() {
|
|
111
150
|
const closePromises = Array.from(this.clients.entries()).map(async ([name, client]) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/clients/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAItC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/clients/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ export declare class StdioMcpClient implements IMcpClient {
|
|
|
10
10
|
constructor(serverName: string, config: McpStdioConfig);
|
|
11
11
|
connect(): Promise<void>;
|
|
12
12
|
listTools(): Promise<ToolDefinition[]>;
|
|
13
|
-
callTool(toolName: string, args: unknown): Promise<unknown>;
|
|
13
|
+
callTool(toolName: string, args: unknown, callerSignal?: AbortSignal): Promise<unknown>;
|
|
14
14
|
close(): Promise<void>;
|
|
15
15
|
}
|
|
16
16
|
//# sourceMappingURL=stdio-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio-client.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/clients/stdio-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,qBAAa,cAAe,YAAW,UAAU;IAMzC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAN3B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,YAAY,CAA6B;gBAG5B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc;IAGrC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwCxB,SAAS,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"stdio-client.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/clients/stdio-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,qBAAa,cAAe,YAAW,UAAU;IAMzC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAN3B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,YAAY,CAA6B;gBAG5B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc;IAGrC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwCxB,SAAS,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAgCvF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAoB/B"}
|
|
@@ -55,14 +55,20 @@ export class StdioMcpClient {
|
|
|
55
55
|
},
|
|
56
56
|
}));
|
|
57
57
|
}
|
|
58
|
-
async callTool(toolName, args) {
|
|
58
|
+
async callTool(toolName, args, callerSignal) {
|
|
59
59
|
if (!this.client) {
|
|
60
60
|
throw new ToolError("MCP_CLIENT_ERROR", `Client '${this.serverName}' not connected`);
|
|
61
61
|
}
|
|
62
|
-
|
|
62
|
+
// Compose the caller's cancellation/timeout signal (DEBT-003 — lets a
|
|
63
|
+
// task cancel interrupt this in-flight call) with the client-level
|
|
64
|
+
// per-call timeout. Either may fire first.
|
|
65
|
+
const timeoutSignal = this.config.timeoutMs
|
|
63
66
|
? AbortSignal.timeout(this.config.timeoutMs)
|
|
64
67
|
: undefined;
|
|
65
|
-
const
|
|
68
|
+
const signal = callerSignal && timeoutSignal
|
|
69
|
+
? AbortSignal.any([callerSignal, timeoutSignal])
|
|
70
|
+
: (callerSignal ?? timeoutSignal);
|
|
71
|
+
const result = await this.client.callTool({ name: toolName, arguments: args }, undefined, signal ? { signal } : undefined);
|
|
66
72
|
if (result.isError) {
|
|
67
73
|
throw new ToolError("MCP_CLIENT_ERROR", `Tool '${toolName}' on server '${this.serverName}' returned an error: ${JSON.stringify(result.content)}`);
|
|
68
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio-client.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/clients/stdio-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAGjF,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGpD,MAAM,OAAO,cAAc;IAMF;IACA;IANb,MAAM,GAAkB,IAAI,CAAC;IAC7B,SAAS,GAAgC,IAAI,CAAC;IAC9C,YAAY,GAAwB,IAAI,CAAC;IAEjD,YACqB,UAAkB,EAClB,MAAsB;QADtB,eAAU,GAAV,UAAU,CAAQ;QAClB,WAAM,GAAN,MAAM,CAAgB;IACxC,CAAC;IAEJ,KAAK,CAAC,OAAO;QACT,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC;YACvC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE;YAC5B,GAAG,EAAE;gBACD,GAAG,OAAO,CAAC,GAAG;gBACd,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;aACK;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,4DAA4D;QAC5D,qDAAqD;QACrD,MAAM,MAAM,GAAG,IAAI,MAAM,CACrB,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,EAC9C,EAAE,YAAY,EAAE,EAAE,EAAE,CACvB,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEhC,uDAAuD;QACvD,0DAA0D;QAC1D,MAAM,SAAS,GAAI,SAAmD,CAAC,OAAO,CAAC;QAC/E,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC9B,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;gBAClC,MAAM,CAAC,IAAI,CACP;oBACI,MAAM,EAAE,IAAI,CAAC,UAAU;oBACvB,QAAQ,EAAE,IAAI;oBACd,MAAM;iBACT,EACD,uCAAuC,CAC1C,CAAC;YACN,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS;QACX,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,IAAI,SAAS,CAAC,kBAAkB,EAAE,WAAW,IAAI,CAAC,UAAU,iBAAiB,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAC/C,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;YACnC,WAAW,EAAG,IAAI,CAAC,WAAuC,IAAI;gBAC1D,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE;aACjB;SACJ,CAAC,CAAC,CAAC;IACR,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,IAAa;
|
|
1
|
+
{"version":3,"file":"stdio-client.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/clients/stdio-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool-name encoding shared across the registry and the orchestrator.
|
|
3
|
+
*
|
|
4
|
+
* Tools are advertised to the model as `<server>__<tool>`. Many OpenAI-compatible
|
|
5
|
+
* and local models (e.g. LM Studio / qwen) restrict function names to
|
|
6
|
+
* `[A-Za-z0-9_]` and silently rewrite other characters — notably `-` → `_` — so
|
|
7
|
+
* an advertised `agent-mcp__agent` comes back from the model as
|
|
8
|
+
* `agent_mcp__agent`. A literal lookup then fails ("No MCP server config found
|
|
9
|
+
* for server: 'agent_mcp'"), which breaks recursion (the `agent-mcp` key) and any
|
|
10
|
+
* MCP server whose name contains a hyphen. Anthropic preserves the name, so this
|
|
11
|
+
* only bites the OpenAI-compatible providers — but the round-trip must be robust
|
|
12
|
+
* for ALL of them.
|
|
13
|
+
*
|
|
14
|
+
* The fix: index both the advertised name and its normalized form, and normalize
|
|
15
|
+
* the model's returned name the same way before resolving.
|
|
16
|
+
*/
|
|
17
|
+
export declare const TOOL_NAME_SEPARATOR = "__";
|
|
18
|
+
/** Normalize a tool name to the charset models restrict function names to. */
|
|
19
|
+
export declare function normalizeToolName(name: string): string;
|
|
20
|
+
//# sourceMappingURL=tool-naming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-naming.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/clients/tool-naming.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool-name encoding shared across the registry and the orchestrator.
|
|
3
|
+
*
|
|
4
|
+
* Tools are advertised to the model as `<server>__<tool>`. Many OpenAI-compatible
|
|
5
|
+
* and local models (e.g. LM Studio / qwen) restrict function names to
|
|
6
|
+
* `[A-Za-z0-9_]` and silently rewrite other characters — notably `-` → `_` — so
|
|
7
|
+
* an advertised `agent-mcp__agent` comes back from the model as
|
|
8
|
+
* `agent_mcp__agent`. A literal lookup then fails ("No MCP server config found
|
|
9
|
+
* for server: 'agent_mcp'"), which breaks recursion (the `agent-mcp` key) and any
|
|
10
|
+
* MCP server whose name contains a hyphen. Anthropic preserves the name, so this
|
|
11
|
+
* only bites the OpenAI-compatible providers — but the round-trip must be robust
|
|
12
|
+
* for ALL of them.
|
|
13
|
+
*
|
|
14
|
+
* The fix: index both the advertised name and its normalized form, and normalize
|
|
15
|
+
* the model's returned name the same way before resolving.
|
|
16
|
+
*/
|
|
17
|
+
export const TOOL_NAME_SEPARATOR = "__";
|
|
18
|
+
/** Normalize a tool name to the charset models restrict function names to. */
|
|
19
|
+
export function normalizeToolName(name) {
|
|
20
|
+
return name.replace(/[^A-Za-z0-9_]/g, "_");
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=tool-naming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-naming.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/clients/tool-naming.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAExC,8EAA8E;AAC9E,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;AAC/C,CAAC"}
|
package/src/clients/types.d.ts
CHANGED
|
@@ -6,8 +6,12 @@ export interface IMcpClient {
|
|
|
6
6
|
* Call a single tool on this server.
|
|
7
7
|
* @param toolName the tool name (without server prefix)
|
|
8
8
|
* @param args the arguments to pass
|
|
9
|
+
* @param signal optional abort signal — when the task is cancelled (or
|
|
10
|
+
* times out) this fires, so an in-flight tool call is
|
|
11
|
+
* interrupted instead of running to completion. Composed
|
|
12
|
+
* with any client-level timeout.
|
|
9
13
|
*/
|
|
10
|
-
callTool(toolName: string, args: unknown): Promise<unknown>;
|
|
14
|
+
callTool(toolName: string, args: unknown, signal?: AbortSignal): Promise<unknown>;
|
|
11
15
|
/** Tear down the client (kill child processes, close connections) */
|
|
12
16
|
close(): Promise<void>;
|
|
13
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/clients/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,UAAU;IACvB,sDAAsD;IACtD,SAAS,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAEvC
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/clients/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,UAAU;IACvB,sDAAsD;IACtD,SAAS,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAEvC;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAElF,qEAAqE;IACrE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B"}
|
package/src/db/client.d.ts
CHANGED
package/src/db/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/db/client.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAGtC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/db/client.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAGtC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAkBtC,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,QACA,CAAC;AAK/B,eAAO,MAAM,EAAE;;CAA8B,CAAC"}
|
package/src/db/client.js
CHANGED
|
@@ -12,7 +12,7 @@ if (!fs.existsSync(directory)) {
|
|
|
12
12
|
recursive: true
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
|
-
const sqlite = new Database(resolvedPath);
|
|
15
|
+
export const sqlite = new Database(resolvedPath);
|
|
16
16
|
sqlite.pragma("journal_mode = WAL");
|
|
17
17
|
sqlite.pragma("foreign_keys = ON");
|
|
18
18
|
export const db = drizzle(sqlite, { schema });
|
package/src/db/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/db/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,MAAM,YAAY,GACd,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC5B,kBAAkB,CAAC;AAEvB,MAAM,YAAY,GACd,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAE/B,MAAM,SAAS,GACX,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAE/B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;IAC5B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;QACpB,SAAS,EAAE,IAAI;KAClB,CAAC,CAAC;AACP,CAAC;AAED,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/db/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,MAAM,YAAY,GACd,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC5B,kBAAkB,CAAC;AAEvB,MAAM,YAAY,GACd,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAE/B,MAAM,SAAS,GACX,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAE/B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;IAC5B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;QACpB,SAAS,EAAE,IAAI;KAClB,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GACf,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC;AAE/B,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAEnC,MAAM,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { migrate } from "drizzle-orm/better-sqlite3/migrator";
|
|
2
|
+
/**
|
|
3
|
+
* Folder holding the drizzle-kit generated migrations (../../drizzle relative
|
|
4
|
+
* to this compiled module). Kept here — with no `client.js` import — so test
|
|
5
|
+
* harnesses can reuse the FK-safe runner without dragging in the production
|
|
6
|
+
* singleton connection (which opens a DB file at import time).
|
|
7
|
+
*/
|
|
8
|
+
export declare const MIGRATIONS_FOLDER: string;
|
|
9
|
+
/**
|
|
10
|
+
* Minimal structural type for the bits of a better-sqlite3 connection we need.
|
|
11
|
+
* Avoids importing the better-sqlite3 type just to call `pragma`.
|
|
12
|
+
*/
|
|
13
|
+
interface PragmaConn {
|
|
14
|
+
pragma(source: string, options?: {
|
|
15
|
+
simple: boolean;
|
|
16
|
+
}): unknown;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Run Drizzle migrations against an explicit connection with foreign-key
|
|
20
|
+
* enforcement disabled for the duration of the run.
|
|
21
|
+
*
|
|
22
|
+
* WHY THIS WRAPPER EXISTS: SQLite silently ignores `PRAGMA foreign_keys`
|
|
23
|
+
* **inside a transaction**, and drizzle's migrator wraps each migration file in
|
|
24
|
+
* one. SQLite's only way to alter table constraints is the table-recreate dance
|
|
25
|
+
* (CREATE `__new_x` → INSERT-SELECT → DROP `x` → RENAME). When such a migration
|
|
26
|
+
* runs with FK enforcement ON (which both production `client.ts` and the test
|
|
27
|
+
* harness set), the `DROP TABLE` cascade-deletes every child row — e.g. all of
|
|
28
|
+
* `task_events`, which has `task_id … ON DELETE CASCADE` — even though
|
|
29
|
+
* drizzle-kit emits `PRAGMA foreign_keys=OFF` as the migration's first
|
|
30
|
+
* statement (that statement is the no-op described above). The 0005 migration
|
|
31
|
+
* recreates `tasks`, so without this wrapper a real upgrade wipes a user's
|
|
32
|
+
* entire task-event history. Disabling enforcement on the connection *before*
|
|
33
|
+
* migrate() — while no transaction is open — is the only way to make it hold
|
|
34
|
+
* for the whole run; we restore the prior setting afterwards.
|
|
35
|
+
*/
|
|
36
|
+
export declare function runMigrationsOn(conn: PragmaConn, drizzleDb: Parameters<typeof migrate>[0], migrationsFolder?: string): void;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=migrate-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-runner.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/db/migrate-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAE9D;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,QAGpB,CAAC;AAEX;;;GAGG;AACH,UAAU,UAAU;IAChB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;CAClE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAC3B,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,EACxC,gBAAgB,GAAE,MAA0B,GAC7C,IAAI,CAeN"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { migrate } from "drizzle-orm/better-sqlite3/migrator";
|
|
2
|
+
/**
|
|
3
|
+
* Folder holding the drizzle-kit generated migrations (../../drizzle relative
|
|
4
|
+
* to this compiled module). Kept here — with no `client.js` import — so test
|
|
5
|
+
* harnesses can reuse the FK-safe runner without dragging in the production
|
|
6
|
+
* singleton connection (which opens a DB file at import time).
|
|
7
|
+
*/
|
|
8
|
+
export const MIGRATIONS_FOLDER = new URL("../../drizzle", import.meta.url).pathname;
|
|
9
|
+
/**
|
|
10
|
+
* Run Drizzle migrations against an explicit connection with foreign-key
|
|
11
|
+
* enforcement disabled for the duration of the run.
|
|
12
|
+
*
|
|
13
|
+
* WHY THIS WRAPPER EXISTS: SQLite silently ignores `PRAGMA foreign_keys`
|
|
14
|
+
* **inside a transaction**, and drizzle's migrator wraps each migration file in
|
|
15
|
+
* one. SQLite's only way to alter table constraints is the table-recreate dance
|
|
16
|
+
* (CREATE `__new_x` → INSERT-SELECT → DROP `x` → RENAME). When such a migration
|
|
17
|
+
* runs with FK enforcement ON (which both production `client.ts` and the test
|
|
18
|
+
* harness set), the `DROP TABLE` cascade-deletes every child row — e.g. all of
|
|
19
|
+
* `task_events`, which has `task_id … ON DELETE CASCADE` — even though
|
|
20
|
+
* drizzle-kit emits `PRAGMA foreign_keys=OFF` as the migration's first
|
|
21
|
+
* statement (that statement is the no-op described above). The 0005 migration
|
|
22
|
+
* recreates `tasks`, so without this wrapper a real upgrade wipes a user's
|
|
23
|
+
* entire task-event history. Disabling enforcement on the connection *before*
|
|
24
|
+
* migrate() — while no transaction is open — is the only way to make it hold
|
|
25
|
+
* for the whole run; we restore the prior setting afterwards.
|
|
26
|
+
*/
|
|
27
|
+
export function runMigrationsOn(conn, drizzleDb, migrationsFolder = MIGRATIONS_FOLDER) {
|
|
28
|
+
const fkWasOn = conn.pragma("foreign_keys", { simple: true }) === 1;
|
|
29
|
+
if (fkWasOn) {
|
|
30
|
+
conn.pragma("foreign_keys = OFF");
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
migrate(drizzleDb, { migrationsFolder });
|
|
34
|
+
}
|
|
35
|
+
finally {
|
|
36
|
+
if (fkWasOn) {
|
|
37
|
+
conn.pragma("foreign_keys = ON");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=migrate-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-runner.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/db/migrate-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CACpC,eAAe,EACf,MAAM,CAAC,IAAI,CAAC,GAAG,CAClB,CAAC,QAAQ,CAAC;AAUX;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,eAAe,CAC3B,IAAgB,EAChB,SAAwC,EACxC,mBAA2B,iBAAiB;IAE5C,MAAM,OAAO,GACT,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;IAExD,IAAI,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC;QACD,OAAO,CAAC,SAAS,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC7C,CAAC;YAAS,CAAC;QACP,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;AACL,CAAC"}
|
package/src/db/migrate.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Runs pending Drizzle migrations synchronously before the server starts.
|
|
3
3
|
* Migrations are read from the ./drizzle folder (generated by drizzle-kit).
|
|
4
|
+
*
|
|
5
|
+
* Delegates to the FK-safe {@link runMigrationsOn} runner (see that module for
|
|
6
|
+
* why foreign-key enforcement must be toggled around the migration run).
|
|
4
7
|
*/
|
|
5
8
|
export declare function runMigrations(): void;
|
|
6
9
|
//# sourceMappingURL=migrate.d.ts.map
|
package/src/db/migrate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/db/migrate.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/db/migrate.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAEpC"}
|