agentfootprint 7.12.0 → 7.13.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/dist/core/Agent.js +39 -5
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/agent/AgentBuilder.js +59 -1
- package/dist/core/agent/AgentBuilder.js.map +1 -1
- package/dist/core/agent/buildAgentChart.js +6 -0
- package/dist/core/agent/buildAgentChart.js.map +1 -1
- package/dist/core/agent/buildDynamicAgentChart.js +14 -0
- package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/core/agent/stages/callLLM.js +10 -4
- package/dist/core/agent/stages/callLLM.js.map +1 -1
- package/dist/core/agent/stages/seed.js +16 -0
- package/dist/core/agent/stages/seed.js.map +1 -1
- package/dist/core/slots/buildSystemPromptSlot.js +2 -1
- package/dist/core/slots/buildSystemPromptSlot.js.map +1 -1
- package/dist/esm/core/Agent.d.ts +7 -3
- package/dist/esm/core/Agent.js +39 -5
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/agent/AgentBuilder.d.ts +48 -1
- package/dist/esm/core/agent/AgentBuilder.js +59 -1
- package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
- package/dist/esm/core/agent/buildAgentChart.js +6 -0
- package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
- package/dist/esm/core/agent/buildDynamicAgentChart.js +14 -0
- package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/esm/core/agent/stages/callLLM.d.ts +9 -0
- package/dist/esm/core/agent/stages/callLLM.js +10 -4
- package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
- package/dist/esm/core/agent/stages/seed.d.ts +10 -1
- package/dist/esm/core/agent/stages/seed.js +16 -0
- package/dist/esm/core/agent/stages/seed.js.map +1 -1
- package/dist/esm/core/agent/types.d.ts +44 -0
- package/dist/esm/core/slots/buildSystemPromptSlot.d.ts +19 -4
- package/dist/esm/core/slots/buildSystemPromptSlot.js +2 -1
- package/dist/esm/core/slots/buildSystemPromptSlot.js.map +1 -1
- package/dist/esm/lib/injection-engine/index.d.ts +1 -0
- package/dist/esm/lib/injection-engine/index.js +4 -0
- package/dist/esm/lib/injection-engine/index.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillsFromDir.d.ts +80 -0
- package/dist/esm/lib/injection-engine/skillsFromDir.js +243 -0
- package/dist/esm/lib/injection-engine/skillsFromDir.js.map +1 -0
- package/dist/esm/lib/mcp/index.d.ts +6 -5
- package/dist/esm/lib/mcp/index.js +5 -4
- package/dist/esm/lib/mcp/index.js.map +1 -1
- package/dist/esm/lib/mcp/mcpClient.js +21 -9
- package/dist/esm/lib/mcp/mcpClient.js.map +1 -1
- package/dist/esm/lib/mcp/mcpServe.d.ts +70 -0
- package/dist/esm/lib/mcp/mcpServe.js +374 -0
- package/dist/esm/lib/mcp/mcpServe.js.map +1 -0
- package/dist/esm/lib/mcp/types.d.ts +130 -17
- package/dist/esm/lib/mcp/types.js +10 -10
- package/dist/esm/tool-providers/index.d.ts +8 -2
- package/dist/esm/tool-providers/index.js +7 -1
- package/dist/esm/tool-providers/index.js.map +1 -1
- package/dist/lib/injection-engine/index.js +6 -1
- package/dist/lib/injection-engine/index.js.map +1 -1
- package/dist/lib/injection-engine/skillsFromDir.js +270 -0
- package/dist/lib/injection-engine/skillsFromDir.js.map +1 -0
- package/dist/lib/mcp/index.js +7 -5
- package/dist/lib/mcp/index.js.map +1 -1
- package/dist/lib/mcp/mcpClient.js +21 -9
- package/dist/lib/mcp/mcpClient.js.map +1 -1
- package/dist/lib/mcp/mcpServe.js +401 -0
- package/dist/lib/mcp/mcpServe.js.map +1 -0
- package/dist/lib/mcp/types.js +10 -10
- package/dist/tool-providers/index.js +8 -1
- package/dist/tool-providers/index.js.map +1 -1
- package/dist/types/core/Agent.d.ts +7 -3
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/agent/AgentBuilder.d.ts +48 -1
- package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
- package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/stages/callLLM.d.ts +9 -0
- package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
- package/dist/types/core/agent/stages/seed.d.ts +10 -1
- package/dist/types/core/agent/stages/seed.d.ts.map +1 -1
- package/dist/types/core/agent/types.d.ts +44 -0
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/core/slots/buildSystemPromptSlot.d.ts +19 -4
- package/dist/types/core/slots/buildSystemPromptSlot.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/index.d.ts +1 -0
- package/dist/types/lib/injection-engine/index.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillsFromDir.d.ts +81 -0
- package/dist/types/lib/injection-engine/skillsFromDir.d.ts.map +1 -0
- package/dist/types/lib/mcp/index.d.ts +6 -5
- package/dist/types/lib/mcp/index.d.ts.map +1 -1
- package/dist/types/lib/mcp/mcpClient.d.ts.map +1 -1
- package/dist/types/lib/mcp/mcpServe.d.ts +71 -0
- package/dist/types/lib/mcp/mcpServe.d.ts.map +1 -0
- package/dist/types/lib/mcp/types.d.ts +130 -17
- package/dist/types/lib/mcp/types.d.ts.map +1 -1
- package/dist/types/tool-providers/index.d.ts +8 -2
- package/dist/types/tool-providers/index.d.ts.map +1 -1
- package/package.json +2 -1
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* MCP — Model Context Protocol
|
|
2
|
+
* MCP — Model Context Protocol, in both directions.
|
|
3
3
|
*
|
|
4
4
|
* MCP (https://modelcontextprotocol.io) is an open standard for
|
|
5
|
-
* connecting LLMs to external tools and data sources.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* connecting LLMs to external tools and data sources. This module
|
|
6
|
+
* bridges it both ways:
|
|
7
|
+
*
|
|
8
|
+
* - `mcpClient(opts)` — consume an MCP server; its tools become
|
|
9
|
+
* agentfootprint `Tool[]` you can hand to `agent.tools(...)`.
|
|
10
|
+
* - `mcpServe(tools, opts)` — the other direction: expose your own
|
|
11
|
+
* `Tool[]` AS an MCP server, so any MCP client can call them.
|
|
9
12
|
*
|
|
10
13
|
* Pattern: Adapter (GoF) — translates MCP wire format ↔ agentfootprint
|
|
11
14
|
* `Tool` interface. The MCP SDK does the protocol work; we
|
|
@@ -14,11 +17,8 @@
|
|
|
14
17
|
* inline alternative for non-MCP tools).
|
|
15
18
|
* Emits: N/A directly — wrapped tools emit the standard
|
|
16
19
|
* `agentfootprint.stream.tool_start` / `tool_end` events
|
|
17
|
-
* when the agent calls them.
|
|
18
|
-
*
|
|
19
|
-
* Server-side support (exposing an agent or LLMCall as an MCP tool)
|
|
20
|
-
* is a separate concern not yet shipped. This module covers the
|
|
21
|
-
* 80% case: pulling an existing MCP server's tools INTO an agent.
|
|
20
|
+
* when the agent calls them. `mcpServe` runs OUTSIDE any
|
|
21
|
+
* agent run, so it emits nothing at all.
|
|
22
22
|
*/
|
|
23
23
|
import type { Tool } from '../../core/tools.js';
|
|
24
24
|
/**
|
|
@@ -32,7 +32,13 @@ export interface McpStdioTransport {
|
|
|
32
32
|
readonly command: string;
|
|
33
33
|
/** CLI args passed to the executable. */
|
|
34
34
|
readonly args?: readonly string[];
|
|
35
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Environment for the subprocess. Passed to the SDK as-is, and the SDK
|
|
37
|
+
* treats it as the WHOLE environment: set this and the child no longer
|
|
38
|
+
* inherits the safe default set (`PATH`, `HOME`, …). Omit it unless you
|
|
39
|
+
* mean to replace the environment; to merely add a variable, include the
|
|
40
|
+
* ones the child still needs.
|
|
41
|
+
*/
|
|
36
42
|
readonly env?: Readonly<Record<string, string>>;
|
|
37
43
|
/** Working directory for the subprocess. */
|
|
38
44
|
readonly cwd?: string;
|
|
@@ -107,22 +113,29 @@ export interface McpClient {
|
|
|
107
113
|
* a lazy peer-dep)
|
|
108
114
|
*
|
|
109
115
|
* The real SDK exports a richer surface; we narrow to what's needed.
|
|
116
|
+
*
|
|
117
|
+
* Argument POSITION matters here and is easy to get wrong: the SDK keeps
|
|
118
|
+
* per-request options (`signal`, `timeout`) in a SEPARATE trailing
|
|
119
|
+
* argument, never inside the JSON-RPC params. A `signal` smuggled into
|
|
120
|
+
* the params object is serialized onto the wire as `{}` and silently
|
|
121
|
+
* fails to cancel anything, so these signatures mirror the SDK's own
|
|
122
|
+
* shape rather than a flattened convenience version of it.
|
|
110
123
|
*/
|
|
111
124
|
export interface McpSdkClient {
|
|
112
|
-
connect(transport: unknown): Promise<void>;
|
|
113
|
-
listTools(): Promise<{
|
|
125
|
+
connect(transport: unknown, options?: McpRequestOptions): Promise<void>;
|
|
126
|
+
listTools(params?: undefined, options?: McpRequestOptions): Promise<{
|
|
114
127
|
readonly tools: ReadonlyArray<{
|
|
115
128
|
readonly name: string;
|
|
116
129
|
readonly description?: string;
|
|
117
130
|
readonly inputSchema: Readonly<Record<string, unknown>>;
|
|
118
131
|
}>;
|
|
119
132
|
}>;
|
|
120
|
-
callTool(
|
|
133
|
+
callTool(params: {
|
|
121
134
|
readonly name: string;
|
|
122
135
|
readonly arguments?: Readonly<Record<string, unknown>>;
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
136
|
+
},
|
|
137
|
+
/** The SDK's result schema. We always want its default, so we pass `undefined`. */
|
|
138
|
+
resultSchema?: undefined, options?: McpRequestOptions): Promise<{
|
|
126
139
|
readonly content: ReadonlyArray<{
|
|
127
140
|
readonly type: string;
|
|
128
141
|
readonly text?: string;
|
|
@@ -131,4 +144,104 @@ export interface McpSdkClient {
|
|
|
131
144
|
}>;
|
|
132
145
|
close(): Promise<void>;
|
|
133
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* The SDK's trailing per-request options argument, narrowed to the one
|
|
149
|
+
* field we forward from {@link McpClientOptions.signal}.
|
|
150
|
+
*/
|
|
151
|
+
export interface McpRequestOptions {
|
|
152
|
+
readonly signal?: AbortSignal;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* `stdio` transport — the server speaks MCP over its own stdin/stdout.
|
|
156
|
+
* This is how a desktop MCP host launches a server: it spawns your
|
|
157
|
+
* process and talks down the pipe. The default.
|
|
158
|
+
*
|
|
159
|
+
* One consequence worth stating out loud: stdout belongs to the
|
|
160
|
+
* protocol. Anything else your process prints there corrupts the
|
|
161
|
+
* stream, so log to stderr.
|
|
162
|
+
*/
|
|
163
|
+
export interface McpStdioServeTransport {
|
|
164
|
+
readonly transport: 'stdio';
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* `http` transport — the server listens on a port and speaks MCP over
|
|
168
|
+
* Streamable HTTP. Stateless (no session ids): every request is
|
|
169
|
+
* self-contained, which is what makes it safe to run several replicas
|
|
170
|
+
* behind a load balancer.
|
|
171
|
+
*/
|
|
172
|
+
export interface McpHttpServeTransport {
|
|
173
|
+
readonly transport: 'http';
|
|
174
|
+
/** TCP port to listen on. */
|
|
175
|
+
readonly port: number;
|
|
176
|
+
/** Interface to bind. Defaults to Node's own default (all interfaces). */
|
|
177
|
+
readonly host?: string;
|
|
178
|
+
/** URL path the MCP endpoint answers on. Default `'/mcp'`. */
|
|
179
|
+
readonly path?: string;
|
|
180
|
+
}
|
|
181
|
+
export type McpServeTransport = McpStdioServeTransport | McpHttpServeTransport;
|
|
182
|
+
export interface McpServeOptions {
|
|
183
|
+
/**
|
|
184
|
+
* Server name reported to clients on connect. Surfaces in the
|
|
185
|
+
* client's server list. Default `'agentfootprint'`.
|
|
186
|
+
*/
|
|
187
|
+
readonly name?: string;
|
|
188
|
+
/** Server version reported to clients. Default `'0.0.0'`. */
|
|
189
|
+
readonly version?: string;
|
|
190
|
+
/** Transport configuration. Default `{ transport: 'stdio' }`. */
|
|
191
|
+
readonly transport?: McpServeTransport;
|
|
192
|
+
/**
|
|
193
|
+
* Credential provider for served tools that declare `needs`. The
|
|
194
|
+
* credential is resolved BEFORE `execute` and injected as
|
|
195
|
+
* `ctx.credential`, exactly as the Agent's tool-call stage does it.
|
|
196
|
+
*
|
|
197
|
+
* Serving a `needs`-declaring tool without this is refused at
|
|
198
|
+
* construction: the tool would run with `ctx.credential` undefined
|
|
199
|
+
* and fail somewhere further in, or worse, not fail at all.
|
|
200
|
+
*/
|
|
201
|
+
readonly credentials?: import('../../identity/types.js').CredentialProvider;
|
|
202
|
+
/**
|
|
203
|
+
* @internal Pre-built SDK server for tests. Skips SDK import +
|
|
204
|
+
* transport construction. Mirrors `McpClientOptions._client`.
|
|
205
|
+
*/
|
|
206
|
+
readonly _server?: McpSdkServer;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* What `mcpServe(...)` returns. The server is already listening by the
|
|
210
|
+
* time you hold this; `close()` is the only thing left to do.
|
|
211
|
+
*/
|
|
212
|
+
export interface McpServeHandle {
|
|
213
|
+
/** Server name from options (or the default). */
|
|
214
|
+
readonly name: string;
|
|
215
|
+
/** Names of the tools being served, in the order clients will list them. */
|
|
216
|
+
readonly toolNames: readonly string[];
|
|
217
|
+
/**
|
|
218
|
+
* Stop serving: closes the transport (and, for `http`, the listening
|
|
219
|
+
* socket) and then the MCP server. Idempotent — calling it twice is
|
|
220
|
+
* not an error, so a shutdown hook and an explicit close can coexist.
|
|
221
|
+
*/
|
|
222
|
+
close(): Promise<void>;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Minimal structural type for the parts of the MCP SDK's low-level
|
|
226
|
+
* `Server` we touch. Defined locally for the same two reasons as
|
|
227
|
+
* {@link McpSdkClient}: test injection via `McpServeOptions._server`,
|
|
228
|
+
* and no hard import on the lazy peer-dep.
|
|
229
|
+
*/
|
|
230
|
+
export interface McpSdkServer {
|
|
231
|
+
setRequestHandler(schema: unknown, handler: (request: McpCallToolRequest, extra: {
|
|
232
|
+
readonly signal?: AbortSignal;
|
|
233
|
+
}) => unknown): void;
|
|
234
|
+
connect(transport: unknown): Promise<void>;
|
|
235
|
+
close(): Promise<void>;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* The shape `tools/call` requests arrive in. `tools/list` requests carry
|
|
239
|
+
* no params we read, so one request type covers both handlers.
|
|
240
|
+
*/
|
|
241
|
+
export interface McpCallToolRequest {
|
|
242
|
+
readonly params?: {
|
|
243
|
+
readonly name?: string;
|
|
244
|
+
readonly arguments?: unknown;
|
|
245
|
+
};
|
|
246
|
+
}
|
|
134
247
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/mcp/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAIhD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,iEAAiE;IACjE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/mcp/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,12 @@
|
|
|
13
13
|
* - `mcpClient(opts)` — connect to an MCP server (real)
|
|
14
14
|
* - `mockMcpClient({ tools })` — in-memory MCP source for dev / tests
|
|
15
15
|
*
|
|
16
|
+
* 3. Tool sink — the other direction
|
|
17
|
+
* - `mcpServe(tools, opts)` — expose your own `Tool[]` AS an MCP
|
|
18
|
+
* server, so any MCP client can call them. The served tool is the
|
|
19
|
+
* SAME object you pass in, so whatever governance you composed
|
|
20
|
+
* around it still runs.
|
|
21
|
+
*
|
|
16
22
|
* Compose freely. The dispatch layer is decorator-shaped (mirroring
|
|
17
23
|
* `withRetry` / `withFallback` over LLMProvider). Tool sources produce
|
|
18
24
|
* `Tool[]` that flow into a `staticTools(arr)` provider, which can
|
|
@@ -37,6 +43,6 @@ export { staticTools } from './staticTools.js';
|
|
|
37
43
|
export { gatedTools } from './gatedTools.js';
|
|
38
44
|
export { skillScopedTools } from './skillScopedTools.js';
|
|
39
45
|
export type { ToolProvider, ToolDispatchContext, ToolGatePredicate } from './types.js';
|
|
40
|
-
export { mcpClient, mockMcpClient } from '../lib/mcp/index.js';
|
|
41
|
-
export type { McpClient, McpClientOptions, McpSdkClient, McpTransport, McpStdioTransport, McpHttpTransport, MockMcpClientOptions, MockMcpTool, } from '../lib/mcp/index.js';
|
|
46
|
+
export { mcpClient, mcpServe, mockMcpClient } from '../lib/mcp/index.js';
|
|
47
|
+
export type { McpClient, McpClientOptions, McpSdkClient, McpTransport, McpStdioTransport, McpHttpTransport, MockMcpClientOptions, MockMcpTool, McpServeOptions, McpServeHandle, McpServeTransport, McpStdioServeTransport, McpHttpServeTransport, McpSdkServer, } from '../lib/mcp/index.js';
|
|
42
48
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tool-providers/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tool-providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKvF,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzE,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,YAAY,GACb,MAAM,qBAAqB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentfootprint",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.13.0",
|
|
4
4
|
"description": "The explainable agent framework — backtrack a wrong answer to the exact context that caused it (evidence, not guesses). Built on footprintjs.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Sanjay Krishna Anbalagan",
|
|
@@ -461,6 +461,7 @@
|
|
|
461
461
|
},
|
|
462
462
|
"devDependencies": {
|
|
463
463
|
"@arethetypeswrong/cli": "^0.18.1",
|
|
464
|
+
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
464
465
|
"@types/node": "^25.5.2",
|
|
465
466
|
"@typescript-eslint/eslint-plugin": "^5.61.0",
|
|
466
467
|
"@typescript-eslint/parser": "^5.61.0",
|