@namzu/sdk 3.0.0 → 3.2.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/CHANGELOG.md +223 -0
- package/dist/advisory/__tests__/consultation-context.test.d.ts +2 -0
- package/dist/advisory/__tests__/consultation-context.test.d.ts.map +1 -0
- package/dist/advisory/__tests__/consultation-context.test.js +124 -0
- package/dist/advisory/__tests__/consultation-context.test.js.map +1 -0
- package/dist/advisory/context.d.ts +25 -0
- package/dist/advisory/context.d.ts.map +1 -1
- package/dist/advisory/context.js +18 -0
- package/dist/advisory/context.js.map +1 -1
- package/dist/advisory/executor.d.ts.map +1 -1
- package/dist/advisory/executor.js +25 -3
- package/dist/advisory/executor.js.map +1 -1
- package/dist/compaction/__tests__/context-reducer.test.d.ts +2 -0
- package/dist/compaction/__tests__/context-reducer.test.d.ts.map +1 -0
- package/dist/compaction/__tests__/context-reducer.test.js +197 -0
- package/dist/compaction/__tests__/context-reducer.test.js.map +1 -0
- package/dist/compaction/factory.d.ts +7 -0
- package/dist/compaction/factory.d.ts.map +1 -1
- package/dist/compaction/factory.js +7 -0
- package/dist/compaction/factory.js.map +1 -1
- package/dist/compaction/index.d.ts +2 -0
- package/dist/compaction/index.d.ts.map +1 -1
- package/dist/compaction/index.js +1 -0
- package/dist/compaction/index.js.map +1 -1
- package/dist/compaction/interface.d.ts +13 -0
- package/dist/compaction/interface.d.ts.map +1 -1
- package/dist/compaction/managers/null.d.ts +3 -0
- package/dist/compaction/managers/null.d.ts.map +1 -1
- package/dist/compaction/managers/null.js +3 -0
- package/dist/compaction/managers/null.js.map +1 -1
- package/dist/compaction/managers/slidingWindow.d.ts +6 -0
- package/dist/compaction/managers/slidingWindow.d.ts.map +1 -1
- package/dist/compaction/managers/slidingWindow.js +6 -0
- package/dist/compaction/managers/slidingWindow.js.map +1 -1
- package/dist/compaction/managers/structured.d.ts +10 -0
- package/dist/compaction/managers/structured.d.ts.map +1 -1
- package/dist/compaction/managers/structured.js +10 -0
- package/dist/compaction/managers/structured.js.map +1 -1
- package/dist/compaction/reducer.d.ts +86 -0
- package/dist/compaction/reducer.d.ts.map +1 -0
- package/dist/compaction/reducer.js +77 -0
- package/dist/compaction/reducer.js.map +1 -0
- package/dist/connector/builtins/__tests__/oauth2-auth.test.d.ts +2 -0
- package/dist/connector/builtins/__tests__/oauth2-auth.test.d.ts.map +1 -0
- package/dist/connector/builtins/__tests__/oauth2-auth.test.js +54 -0
- package/dist/connector/builtins/__tests__/oauth2-auth.test.js.map +1 -0
- package/dist/connector/builtins/http.d.ts.map +1 -1
- package/dist/connector/builtins/http.js +24 -2
- package/dist/connector/builtins/http.js.map +1 -1
- package/dist/connector/builtins/http.test.js +18 -2
- package/dist/connector/builtins/http.test.js.map +1 -1
- package/dist/connector/index.d.ts +2 -2
- package/dist/connector/index.d.ts.map +1 -1
- package/dist/connector/index.js +1 -1
- package/dist/connector/index.js.map +1 -1
- package/dist/connector/mcp/__tests__/prompts-and-lifecycle.test.d.ts +2 -0
- package/dist/connector/mcp/__tests__/prompts-and-lifecycle.test.d.ts.map +1 -0
- package/dist/connector/mcp/__tests__/prompts-and-lifecycle.test.js +214 -0
- package/dist/connector/mcp/__tests__/prompts-and-lifecycle.test.js.map +1 -0
- package/dist/connector/mcp/client.d.ts +52 -1
- package/dist/connector/mcp/client.d.ts.map +1 -1
- package/dist/connector/mcp/client.js +86 -0
- package/dist/connector/mcp/client.js.map +1 -1
- package/dist/connector/mcp/discovery.d.ts +12 -1
- package/dist/connector/mcp/discovery.d.ts.map +1 -1
- package/dist/connector/mcp/discovery.js +19 -4
- package/dist/connector/mcp/discovery.js.map +1 -1
- package/dist/connector/mcp/index.d.ts +2 -2
- package/dist/connector/mcp/index.d.ts.map +1 -1
- package/dist/connector/mcp/index.js +1 -1
- package/dist/connector/mcp/index.js.map +1 -1
- package/dist/connector/mcp/server.d.ts +42 -1
- package/dist/connector/mcp/server.d.ts.map +1 -1
- package/dist/connector/mcp/server.js +77 -4
- package/dist/connector/mcp/server.js.map +1 -1
- package/dist/manager/agent/__tests__/depth-limit-authority.test.d.ts +2 -0
- package/dist/manager/agent/__tests__/depth-limit-authority.test.d.ts.map +1 -0
- package/dist/manager/agent/__tests__/depth-limit-authority.test.js +58 -0
- package/dist/manager/agent/__tests__/depth-limit-authority.test.js.map +1 -0
- package/dist/plugin/__tests__/discovery-scopes.test.d.ts +2 -0
- package/dist/plugin/__tests__/discovery-scopes.test.d.ts.map +1 -0
- package/dist/plugin/__tests__/discovery-scopes.test.js +97 -0
- package/dist/plugin/__tests__/discovery-scopes.test.js.map +1 -0
- package/dist/plugin/__tests__/enable-contributions.test.js +5 -1
- package/dist/plugin/__tests__/enable-contributions.test.js.map +1 -1
- package/dist/plugin/__tests__/mcp-admission.test.d.ts +2 -0
- package/dist/plugin/__tests__/mcp-admission.test.d.ts.map +1 -0
- package/dist/plugin/__tests__/mcp-admission.test.js +192 -0
- package/dist/plugin/__tests__/mcp-admission.test.js.map +1 -0
- package/dist/plugin/lifecycle.d.ts +41 -0
- package/dist/plugin/lifecycle.d.ts.map +1 -1
- package/dist/plugin/lifecycle.js +29 -1
- package/dist/plugin/lifecycle.js.map +1 -1
- package/dist/plugin/loader.d.ts +39 -3
- package/dist/plugin/loader.d.ts.map +1 -1
- package/dist/plugin/loader.js +37 -4
- package/dist/plugin/loader.js.map +1 -1
- package/dist/public-runtime.d.ts +5 -3
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +11 -3
- package/dist/public-runtime.js.map +1 -1
- package/dist/public-types.d.ts +2 -2
- package/dist/public-types.d.ts.map +1 -1
- package/dist/rag/__tests__/namespace-isolation.test.d.ts +2 -0
- package/dist/rag/__tests__/namespace-isolation.test.d.ts.map +1 -0
- package/dist/rag/__tests__/namespace-isolation.test.js +80 -0
- package/dist/rag/__tests__/namespace-isolation.test.js.map +1 -0
- package/dist/rag/ingestion.d.ts.map +1 -1
- package/dist/rag/ingestion.js +1 -0
- package/dist/rag/ingestion.js.map +1 -1
- package/dist/rag/retriever.d.ts.map +1 -1
- package/dist/rag/retriever.js +2 -0
- package/dist/rag/retriever.js.map +1 -1
- package/dist/rag/vector-store.d.ts.map +1 -1
- package/dist/rag/vector-store.js +6 -0
- package/dist/rag/vector-store.js.map +1 -1
- package/dist/registry/tool/execute.d.ts.map +1 -1
- package/dist/registry/tool/execute.js +113 -109
- package/dist/registry/tool/execute.js.map +1 -1
- package/dist/runtime/query/__tests__/capability-negotiation.test.js +59 -0
- package/dist/runtime/query/__tests__/capability-negotiation.test.js.map +1 -1
- package/dist/runtime/query/__tests__/per-step-skills.test.d.ts +10 -0
- package/dist/runtime/query/__tests__/per-step-skills.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/per-step-skills.test.js +122 -0
- package/dist/runtime/query/__tests__/per-step-skills.test.js.map +1 -0
- package/dist/runtime/query/__tests__/per-step-tool-choice.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/per-step-tool-choice.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/per-step-tool-choice.test.js +153 -0
- package/dist/runtime/query/__tests__/per-step-tool-choice.test.js.map +1 -0
- package/dist/runtime/query/__tests__/resume-run.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/resume-run.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/resume-run.test.js +211 -0
- package/dist/runtime/query/__tests__/resume-run.test.js.map +1 -0
- package/dist/runtime/query/executor.d.ts +1 -0
- package/dist/runtime/query/executor.d.ts.map +1 -1
- package/dist/runtime/query/executor.js +10 -1
- package/dist/runtime/query/executor.js.map +1 -1
- package/dist/runtime/query/index.d.ts +10 -0
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +26 -0
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/iteration/index.d.ts.map +1 -1
- package/dist/runtime/query/iteration/index.js +118 -34
- package/dist/runtime/query/iteration/index.js.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction-model-routing.test.d.ts +2 -0
- package/dist/runtime/query/iteration/phases/compaction-model-routing.test.d.ts.map +1 -0
- package/dist/runtime/query/iteration/phases/compaction-model-routing.test.js +96 -0
- package/dist/runtime/query/iteration/phases/compaction-model-routing.test.js.map +1 -0
- package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction.js +95 -5
- package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
- package/dist/runtime/query/iteration/phases/context-reducer-dispatch.test.d.ts +2 -0
- package/dist/runtime/query/iteration/phases/context-reducer-dispatch.test.d.ts.map +1 -0
- package/dist/runtime/query/iteration/phases/context-reducer-dispatch.test.js +180 -0
- package/dist/runtime/query/iteration/phases/context-reducer-dispatch.test.js.map +1 -0
- package/dist/runtime/query/iteration/phases/context.d.ts +9 -0
- package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/context.js.map +1 -1
- package/dist/runtime/query/resume-run.d.ts +70 -0
- package/dist/runtime/query/resume-run.d.ts.map +1 -0
- package/dist/runtime/query/resume-run.js +46 -0
- package/dist/runtime/query/resume-run.js.map +1 -0
- package/dist/telemetry/__tests__/model-call-span.test.d.ts +2 -0
- package/dist/telemetry/__tests__/model-call-span.test.d.ts.map +1 -0
- package/dist/telemetry/__tests__/model-call-span.test.js +147 -0
- package/dist/telemetry/__tests__/model-call-span.test.js.map +1 -0
- package/dist/telemetry/__tests__/span-closure.test.d.ts +2 -0
- package/dist/telemetry/__tests__/span-closure.test.d.ts.map +1 -0
- package/dist/telemetry/__tests__/span-closure.test.js +124 -0
- package/dist/telemetry/__tests__/span-closure.test.js.map +1 -0
- package/dist/tools/advisory/index.js +1 -1
- package/dist/tools/advisory/index.js.map +1 -1
- package/dist/tools/builtins/__tests__/edit-commits-atomically.test.d.ts +2 -0
- package/dist/tools/builtins/__tests__/edit-commits-atomically.test.d.ts.map +1 -0
- package/dist/tools/builtins/__tests__/edit-commits-atomically.test.js +78 -0
- package/dist/tools/builtins/__tests__/edit-commits-atomically.test.js.map +1 -0
- package/dist/tools/builtins/__tests__/edit.test.js +242 -1
- package/dist/tools/builtins/__tests__/edit.test.js.map +1 -1
- package/dist/tools/builtins/__tests__/stale-file-refusal.test.d.ts +2 -0
- package/dist/tools/builtins/__tests__/stale-file-refusal.test.d.ts.map +1 -0
- package/dist/tools/builtins/__tests__/stale-file-refusal.test.js +187 -0
- package/dist/tools/builtins/__tests__/stale-file-refusal.test.js.map +1 -0
- package/dist/tools/builtins/atomic-write-file.d.ts +1 -1
- package/dist/tools/builtins/atomic-write-file.d.ts.map +1 -1
- package/dist/tools/builtins/atomic-write-file.js +31 -2
- package/dist/tools/builtins/atomic-write-file.js.map +1 -1
- package/dist/tools/builtins/content-fingerprint.d.ts +23 -0
- package/dist/tools/builtins/content-fingerprint.d.ts.map +1 -0
- package/dist/tools/builtins/content-fingerprint.js +30 -0
- package/dist/tools/builtins/content-fingerprint.js.map +1 -0
- package/dist/tools/builtins/edit.d.ts.map +1 -1
- package/dist/tools/builtins/edit.js +172 -31
- package/dist/tools/builtins/edit.js.map +1 -1
- package/dist/tools/builtins/read-file.d.ts.map +1 -1
- package/dist/tools/builtins/read-file.js +5 -2
- package/dist/tools/builtins/read-file.js.map +1 -1
- package/dist/tools/builtins/write-file.d.ts.map +1 -1
- package/dist/tools/builtins/write-file.js +75 -27
- package/dist/tools/builtins/write-file.js.map +1 -1
- package/dist/tools/coordinator/__tests__/ask-user-question.test.js +55 -0
- package/dist/tools/coordinator/__tests__/ask-user-question.test.js.map +1 -1
- package/dist/tools/coordinator/__tests__/plan-dependencies.test.d.ts +2 -0
- package/dist/tools/coordinator/__tests__/plan-dependencies.test.d.ts.map +1 -0
- package/dist/tools/coordinator/__tests__/plan-dependencies.test.js +126 -0
- package/dist/tools/coordinator/__tests__/plan-dependencies.test.js.map +1 -0
- package/dist/tools/coordinator/index.d.ts.map +1 -1
- package/dist/tools/coordinator/index.js +75 -5
- package/dist/tools/coordinator/index.js.map +1 -1
- package/dist/tools/coordinator/plan-dependencies.d.ts +43 -0
- package/dist/tools/coordinator/plan-dependencies.d.ts.map +1 -0
- package/dist/tools/coordinator/plan-dependencies.js +148 -0
- package/dist/tools/coordinator/plan-dependencies.js.map +1 -0
- package/dist/types/agent/supervisor.d.ts +15 -0
- package/dist/types/agent/supervisor.d.ts.map +1 -1
- package/dist/types/connector/core.d.ts +34 -0
- package/dist/types/connector/core.d.ts.map +1 -1
- package/dist/types/connector/definition.d.ts +10 -0
- package/dist/types/connector/definition.d.ts.map +1 -1
- package/dist/types/connector/mcp.d.ts +13 -0
- package/dist/types/connector/mcp.d.ts.map +1 -1
- package/dist/types/rag/retrieval.d.ts +16 -0
- package/dist/types/rag/retrieval.d.ts.map +1 -1
- package/dist/types/rag/storage.d.ts +9 -0
- package/dist/types/rag/storage.d.ts.map +1 -1
- package/dist/types/rag/vector.d.ts +11 -0
- package/dist/types/rag/vector.d.ts.map +1 -1
- package/dist/types/router/task-router.d.ts +19 -0
- package/dist/types/router/task-router.d.ts.map +1 -1
- package/dist/types/run/prepare-step.d.ts +56 -3
- package/dist/types/run/prepare-step.d.ts.map +1 -1
- package/dist/types/tool/index.d.ts +17 -1
- package/dist/types/tool/index.d.ts.map +1 -1
- package/dist/types/tool/index.js.map +1 -1
- package/dist/types/toolset/index.d.ts +22 -0
- package/dist/types/toolset/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/advisory/__tests__/consultation-context.test.ts +191 -0
- package/src/advisory/context.ts +32 -0
- package/src/advisory/executor.ts +30 -3
- package/src/compaction/__tests__/context-reducer.test.ts +239 -0
- package/src/compaction/factory.ts +7 -0
- package/src/compaction/index.ts +8 -0
- package/src/compaction/interface.ts +13 -0
- package/src/compaction/managers/null.ts +3 -0
- package/src/compaction/managers/slidingWindow.ts +6 -0
- package/src/compaction/managers/structured.ts +10 -0
- package/src/compaction/reducer.ts +154 -0
- package/src/connector/builtins/__tests__/oauth2-auth.test.ts +73 -0
- package/src/connector/builtins/http.test.ts +28 -2
- package/src/connector/builtins/http.ts +26 -2
- package/src/connector/index.ts +6 -2
- package/src/connector/mcp/__tests__/prompts-and-lifecycle.test.ts +286 -0
- package/src/connector/mcp/client.ts +95 -0
- package/src/connector/mcp/discovery.ts +19 -4
- package/src/connector/mcp/index.ts +6 -2
- package/src/connector/mcp/server.ts +101 -3
- package/src/manager/agent/__tests__/depth-limit-authority.test.ts +74 -0
- package/src/plugin/__tests__/discovery-scopes.test.ts +133 -0
- package/src/plugin/__tests__/enable-contributions.test.ts +5 -1
- package/src/plugin/__tests__/mcp-admission.test.ts +242 -0
- package/src/plugin/lifecycle.ts +57 -1
- package/src/plugin/loader.ts +57 -3
- package/src/public-runtime.ts +16 -1
- package/src/public-types.ts +5 -0
- package/src/rag/__tests__/namespace-isolation.test.ts +109 -0
- package/src/rag/ingestion.ts +1 -0
- package/src/rag/retriever.ts +2 -0
- package/src/rag/vector-store.ts +5 -0
- package/src/registry/tool/execute.ts +123 -119
- package/src/runtime/query/__tests__/capability-negotiation.test.ts +69 -0
- package/src/runtime/query/__tests__/per-step-skills.test.ts +154 -0
- package/src/runtime/query/__tests__/per-step-tool-choice.test.ts +180 -0
- package/src/runtime/query/__tests__/resume-run.test.ts +262 -0
- package/src/runtime/query/executor.ts +9 -1
- package/src/runtime/query/index.ts +39 -0
- package/src/runtime/query/iteration/index.ts +130 -34
- package/src/runtime/query/iteration/phases/compaction-model-routing.test.ts +125 -0
- package/src/runtime/query/iteration/phases/compaction.ts +106 -5
- package/src/runtime/query/iteration/phases/context-reducer-dispatch.test.ts +238 -0
- package/src/runtime/query/iteration/phases/context.ts +11 -0
- package/src/runtime/query/resume-run.ts +93 -0
- package/src/telemetry/__tests__/model-call-span.test.ts +189 -0
- package/src/telemetry/__tests__/span-closure.test.ts +153 -0
- package/src/tools/advisory/index.ts +1 -1
- package/src/tools/builtins/__tests__/edit-commits-atomically.test.ts +103 -0
- package/src/tools/builtins/__tests__/edit.test.ts +324 -1
- package/src/tools/builtins/__tests__/stale-file-refusal.test.ts +258 -0
- package/src/tools/builtins/atomic-write-file.ts +30 -2
- package/src/tools/builtins/content-fingerprint.ts +33 -0
- package/src/tools/builtins/edit.ts +188 -36
- package/src/tools/builtins/read-file.ts +5 -2
- package/src/tools/builtins/write-file.ts +79 -28
- package/src/tools/coordinator/__tests__/ask-user-question.test.ts +68 -0
- package/src/tools/coordinator/__tests__/plan-dependencies.test.ts +186 -0
- package/src/tools/coordinator/index.ts +116 -42
- package/src/tools/coordinator/plan-dependencies.ts +175 -0
- package/src/types/agent/supervisor.ts +15 -0
- package/src/types/connector/core.ts +34 -0
- package/src/types/connector/definition.ts +10 -0
- package/src/types/connector/mcp.ts +14 -0
- package/src/types/rag/retrieval.ts +16 -0
- package/src/types/rag/storage.ts +9 -0
- package/src/types/rag/vector.ts +11 -0
- package/src/types/router/task-router.ts +19 -0
- package/src/types/run/prepare-step.ts +58 -3
- package/src/types/tool/index.ts +17 -1
- package/src/types/toolset/index.ts +22 -0
|
@@ -20,6 +20,7 @@ export class MCPClient {
|
|
|
20
20
|
pendingRequests = new Map();
|
|
21
21
|
nextRequestId = 1;
|
|
22
22
|
notificationHandlers = [];
|
|
23
|
+
lifecycleListeners = [];
|
|
23
24
|
log;
|
|
24
25
|
config;
|
|
25
26
|
constructor(config) {
|
|
@@ -38,12 +39,14 @@ export class MCPClient {
|
|
|
38
39
|
this.transport.onClose(() => {
|
|
39
40
|
this.status = 'disconnected';
|
|
40
41
|
this.log.info('MCP transport closed');
|
|
42
|
+
this.emitLifecycle({ type: 'mcp_client_disconnected', clientId: this.id });
|
|
41
43
|
this.rejectAllPending(`MCP transport to "${this.config.serverName}" closed`);
|
|
42
44
|
});
|
|
43
45
|
this.transport.onError((err) => {
|
|
44
46
|
this.status = 'error';
|
|
45
47
|
this.error = err.message;
|
|
46
48
|
this.log.error('MCP transport error', { error: err.message });
|
|
49
|
+
this.emitLifecycle({ type: 'mcp_client_error', clientId: this.id, error: err.message });
|
|
47
50
|
this.rejectAllPending(`MCP transport to "${this.config.serverName}" failed: ${err.message}`);
|
|
48
51
|
});
|
|
49
52
|
await this.transport.connect();
|
|
@@ -72,6 +75,11 @@ export class MCPClient {
|
|
|
72
75
|
await this.notify('notifications/initialized', {});
|
|
73
76
|
this.status = 'connected';
|
|
74
77
|
this.connectedAt = Date.now();
|
|
78
|
+
this.emitLifecycle({
|
|
79
|
+
type: 'mcp_client_connected',
|
|
80
|
+
clientId: this.id,
|
|
81
|
+
serverName: this.config.serverName,
|
|
82
|
+
});
|
|
75
83
|
this.log.info(`Connected to MCP server: ${result.serverInfo.name}`);
|
|
76
84
|
return result;
|
|
77
85
|
}
|
|
@@ -79,6 +87,7 @@ export class MCPClient {
|
|
|
79
87
|
this.status = 'error';
|
|
80
88
|
this.error = toErrorMessage(err);
|
|
81
89
|
this.log.error('MCP connection failed', { error: this.error });
|
|
90
|
+
this.emitLifecycle({ type: 'mcp_client_error', clientId: this.id, error: this.error });
|
|
82
91
|
throw err;
|
|
83
92
|
}
|
|
84
93
|
}
|
|
@@ -90,6 +99,7 @@ export class MCPClient {
|
|
|
90
99
|
this.status = 'disconnected';
|
|
91
100
|
this.connectedAt = undefined;
|
|
92
101
|
this.log.info('MCP client disconnected');
|
|
102
|
+
this.emitLifecycle({ type: 'mcp_client_disconnected', clientId: this.id });
|
|
93
103
|
}
|
|
94
104
|
isConnected() {
|
|
95
105
|
return this.status === 'connected';
|
|
@@ -126,6 +136,43 @@ export class MCPClient {
|
|
|
126
136
|
const result = (await this.request('resources/read', { uri }));
|
|
127
137
|
return result.contents;
|
|
128
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* The prompts a server publishes.
|
|
141
|
+
*
|
|
142
|
+
* A prompt is the server's own wording for a task it knows how to set
|
|
143
|
+
* up — the half of MCP that is not tools. `MCPPromptDefinition` and
|
|
144
|
+
* `MCPPromptArgument` were declared when the types were written and no
|
|
145
|
+
* method ever asked for one, so a server offering prompts had them
|
|
146
|
+
* silently ignored.
|
|
147
|
+
*
|
|
148
|
+
* Paged through the same reader as every other list, which is the point
|
|
149
|
+
* of it being generic: a server that pages its prompts does not get
|
|
150
|
+
* silently truncated to page one the way the tool list once was.
|
|
151
|
+
*/
|
|
152
|
+
async listPrompts() {
|
|
153
|
+
this.requireConnected();
|
|
154
|
+
return await this.listAllPages('prompts/list', 'prompts');
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Fetch one prompt, with its arguments filled in.
|
|
158
|
+
*
|
|
159
|
+
* Returns the messages the SERVER composed. They are data to be shown to
|
|
160
|
+
* a model, never instructions to this client: a prompt arriving from a
|
|
161
|
+
* remote server is exactly the untrusted-content case, and treating its
|
|
162
|
+
* text as direction would let a server steer the agent by publishing a
|
|
163
|
+
* prompt nobody asked to run.
|
|
164
|
+
*/
|
|
165
|
+
async getPrompt(name, args) {
|
|
166
|
+
this.requireConnected();
|
|
167
|
+
const result = (await this.request('prompts/get', {
|
|
168
|
+
name,
|
|
169
|
+
arguments: args ?? {},
|
|
170
|
+
}));
|
|
171
|
+
return {
|
|
172
|
+
...(result.description !== undefined ? { description: result.description } : {}),
|
|
173
|
+
messages: result.messages ?? [],
|
|
174
|
+
};
|
|
175
|
+
}
|
|
129
176
|
async listResourceTemplates() {
|
|
130
177
|
this.requireConnected();
|
|
131
178
|
return await this.listAllPages('resources/templates/list', 'resourceTemplates');
|
|
@@ -167,6 +214,45 @@ export class MCPClient {
|
|
|
167
214
|
onNotification(handler) {
|
|
168
215
|
this.notificationHandlers.push(handler);
|
|
169
216
|
}
|
|
217
|
+
/**
|
|
218
|
+
* Watch this client come up, go down, or fail.
|
|
219
|
+
*
|
|
220
|
+
* `MCPLifecycleEvent` and `MCPEventListener` were declared with the rest
|
|
221
|
+
* of the MCP types and nothing ever emitted one, so a host could observe
|
|
222
|
+
* a server dying only by noticing that calls had started failing. The
|
|
223
|
+
* four transitions below already existed and already mutated `status`;
|
|
224
|
+
* this adds no state, it just says out loud what the client already
|
|
225
|
+
* knew.
|
|
226
|
+
*
|
|
227
|
+
* Returns an unsubscribe. `onNotification` above does not, which is the
|
|
228
|
+
* bug this avoids repeating: a listener that cannot be removed keeps a
|
|
229
|
+
* disposed host object alive for as long as the client lives.
|
|
230
|
+
*/
|
|
231
|
+
onLifecycle(listener) {
|
|
232
|
+
this.lifecycleListeners.push(listener);
|
|
233
|
+
return () => {
|
|
234
|
+
const index = this.lifecycleListeners.indexOf(listener);
|
|
235
|
+
if (index >= 0)
|
|
236
|
+
this.lifecycleListeners.splice(index, 1);
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* A listener that throws must not take the transport down with it.
|
|
241
|
+
*
|
|
242
|
+
* These fire from inside transport callbacks and from the failure path
|
|
243
|
+
* of `connect`, so an exception here would surface as a connection
|
|
244
|
+
* error — blaming the server for a bug in the host's own observer.
|
|
245
|
+
*/
|
|
246
|
+
emitLifecycle(event) {
|
|
247
|
+
for (const listener of this.lifecycleListeners) {
|
|
248
|
+
try {
|
|
249
|
+
listener(event);
|
|
250
|
+
}
|
|
251
|
+
catch (err) {
|
|
252
|
+
this.log.warn('MCP lifecycle listener threw', { error: toErrorMessage(err) });
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
170
256
|
createTransport(config) {
|
|
171
257
|
switch (config.type) {
|
|
172
258
|
case 'stdio':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/connector/mcp/client.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAe,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAO,EACN,8BAA8B,EAC9B,yBAAyB,EACzB,oBAAoB,EACpB,+BAA+B,GAC/B,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE1C,0DAA0D;AAC1D,MAAM,cAAc,GAAG,GAAG,CAAA;AAE1B,MAAM,iBAAiB,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;AAEjE,MAAM,OAAO,SAAS;IACZ,EAAE,CAAa;IAChB,SAAS,CAAc;IACvB,MAAM,GAAwB,cAAc,CAAA;IAC5C,UAAU,CAAqC;IAC/C,kBAAkB,CAAwB;IAC1C,WAAW,CAAS;IACpB,KAAK,CAAS;IACd,eAAe,GAAG,IAAI,GAAG,EAM9B,CAAA;IACK,aAAa,GAAG,CAAC,CAAA;IACjB,oBAAoB,GAC3B,EAAE,CAAA;IACK,GAAG,CAAQ;IACF,MAAM,CAAiB;IAExC,YAAY,MAAuB;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,IAAI,mBAAmB,EAAE,CAAA;QAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACvD,IAAI,CAAC,GAAG,GAAG,aAAa,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;IAC1F,CAAC;IAED,KAAK,CAAC,OAAO;QACZ,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAA;QAC9E,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,YAAY,CAAA;QAE1B,IAAI,CAAC;YACJ,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;YAC1D,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE;gBAC3B,IAAI,CAAC,MAAM,GAAG,cAAc,CAAA;gBAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;gBACrC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,IAAI,CAAC,MAAM,CAAC,UAAU,UAAU,CAAC,CAAA;YAC7E,CAAC,CAAC,CAAA;YACF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC9B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAA;gBACrB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAAA;gBACxB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;gBAC7D,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,IAAI,CAAC,MAAM,CAAC,UAAU,aAAa,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;YAC7F,CAAC,CAAC,CAAA;YAEF,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;YAE9B,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;gBAChD,eAAe,EAAE,oBAAoB;gBACrC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE;gBAC5C,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,iBAAiB;aACvD,CAAC,CAAwB,CAAA;YAE1B,gEAAgE;YAChE,kEAAkE;YAClE,gEAAgE;YAChE,wDAAwD;YACxD,MAAM,UAAU,GAAG,MAAM,CAAC,eAAe,CAAA;YACzC,IAAI,UAAU,IAAI,CAAC,+BAA+B,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzE,MAAM,IAAI,KAAK,CACd,eAAe,IAAI,CAAC,MAAM,CAAC,UAAU,kCAAkC,UAAU,KAAK;oBACrF,8CAA8C,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAC7F,CAAA;YACF,CAAC;YACD,IAAI,UAAU,IAAI,UAAU,KAAK,oBAAoB,EAAE,CAAC;gBACvD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oDAAoD,EAAE;oBACnE,SAAS,EAAE,oBAAoB;oBAC/B,UAAU;iBACV,CAAC,CAAA;YACH,CAAC;YAED,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAA;YACnC,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,YAAY,CAAA;YAE7C,MAAM,IAAI,CAAC,MAAM,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAA;YAElD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAA;YACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAA;YAEnE,OAAO,MAAM,CAAA;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,GAAG,OAAO,CAAA;YACrB,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;YAChC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;YAC9D,MAAM,GAAG,CAAA;QACV,CAAC;IACF,CAAC;IAED,KAAK,CAAC,UAAU;QACf,IAAI,IAAI,CAAC,MAAM,KAAK,cAAc;YAAE,OAAM;QAE1C,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,CAAA;QAEhD,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG,cAAc,CAAA;QAC5B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;QAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;IACzC,CAAC;IAED,WAAW;QACV,OAAO,IAAI,CAAC,MAAM,KAAK,WAAW,CAAA;IACnC,CAAC;IAED,QAAQ;QACP,OAAO;YACN,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;SACjB,CAAA;IACF,CAAC;IAED,KAAK,CAAC,SAAS;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IACtD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,IAA8B;QAC1D,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YAChD,IAAI;YACJ,SAAS,EAAE,IAAI,IAAI,EAAE;SACrB,CAAC,CAAkB,CAAA;QACpB,OAAO,MAAM,CAAA;IACd,CAAC;IAED,KAAK,CAAC,aAAa;QAClB,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAA;IAC9D,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW;QAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,GAAG,EAAE,CAAC,CAE5D,CAAA;QACD,OAAO,MAAM,CAAC,QAAQ,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,qBAAqB;QAC1B,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,0BAA0B,EAAE,mBAAmB,CAAC,CAAA;IAChF,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACK,KAAK,CAAC,YAAY,CAAI,MAAc,EAAE,KAAa;QAC1D,MAAM,KAAK,GAAQ,EAAE,CAAA;QACrB,IAAI,MAA0B,CAAA;QAE9B,KAAK,IAAI,IAAI,GAAG,CAAC,GAAI,IAAI,EAAE,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAGjF,CAAA;YAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;YAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAI,KAAa,CAAC,CAAA;YAEvD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAA;YAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAA;YAC/D,IAAI,IAAI,IAAI,cAAc,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CACd,GAAG,MAAM,8BAA8B,cAAc,WAAW,KAAK,CAAC,MAAM,6GAA6G,CACzL,CAAA;YACF,CAAC;YACD,MAAM,GAAG,IAAI,CAAA;QACd,CAAC;IACF,CAAC;IAED,cAAc,CAAC,OAAmE;QACjF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxC,CAAC;IAEO,eAAe,CAAC,MAAyB;QAChD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,OAAO;gBACX,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAA;YAClC,KAAK,UAAU;gBACd,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAA;YACpC,KAAK,iBAAiB,CAAC;YACvB,KAAK,iBAAiB;gBACrB,OAAO,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAA;YAC3C;gBACC,MAAM,IAAI,KAAK,CAAC,mCAAoC,MAA4B,CAAC,IAAI,EAAE,CAAC,CAAA;QAC1F,CAAC;IACF,CAAC;IAED;;;;;;;;;;;OAWG;IACK,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,MAA+B;QACpE,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;QAC/B,MAAM,OAAO,GAAsB;YAClC,OAAO,EAAE,KAAK;YACd,EAAE;YACF,MAAM;YACN,MAAM;SACN,CAAA;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,8BAA8B,CAAA;QAEhF,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC7B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;gBAC/B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE;oBACtC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;oBAC9B,MAAM;oBACN,SAAS;iBACT,CAAC,CAAA;gBACF,MAAM,CACL,IAAI,KAAK,CACR,gBAAgB,MAAM,SAAS,IAAI,CAAC,MAAM,CAAC,UAAU,qBAAqB,SAAS,IAAI,CACvF,CACD,CAAA;YACF,CAAC,EAAE,SAAS,CAAC,CAAA;YAEb,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE;gBAC5B,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,YAAY,CAAC,KAAK,CAAC,CAAA;oBACnB,OAAO,CAAC,KAAK,CAAC,CAAA;gBACf,CAAC;gBACD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;oBACf,YAAY,CAAC,KAAK,CAAC,CAAA;oBACnB,MAAM,CAAC,GAAG,CAAC,CAAA;gBACZ,CAAC;aACD,CAAC,CAAA;YAEF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC1C,YAAY,CAAC,KAAK,CAAC,CAAA;gBACnB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;gBAC/B,MAAM,CAAC,GAAG,CAAC,CAAA;YACZ,CAAC,CAAC,CAAA;QACH,CAAC,CAAC,CAAA;IACH,CAAC;IAED;;;;;;OAMG;IACK,gBAAgB,CAAC,MAAc;QACtC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC;YAAE,OAAM;QAC3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gCAAgC,EAAE;YAC/C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAC9B,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI;YAChC,MAAM;SACN,CAAC,CAAA;QACF,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAChD,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QAClC,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;IAC7B,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAA+B;QACnE,MAAM,OAAO,GAAsB;YAClC,OAAO,EAAE,KAAK;YACd,MAAM;YACN,MAAM;SACN,CAAA;QACD,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACnC,CAAC;IAEO,aAAa,CAAC,OAA0B;QAC/C,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YACpD,IAAI,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;gBACvC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBACnB,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;gBACvF,CAAC;qBAAM,CAAC;oBACP,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;gBAChC,CAAC;gBACD,OAAM;YACP,CAAC;QACF,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAChD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBACjD,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;YACxC,CAAC;YACD,OAAM;QACP,CAAC;QAED,iEAAiE;QACjE,4DAA4D;QAC5D,gEAAgE;QAChE,mEAAmE;QACnE,gEAAgE;QAChE,kDAAkD;QAClD,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAChD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oDAAoD,EAAE;gBACnE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;gBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;aACtB,CAAC,CAAA;YACF,KAAK,IAAI,CAAC,SAAS;iBACjB,IAAI,CAAC;gBACL,OAAO,EAAE,KAAK;gBACd,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,KAAK,EAAE;oBACN,IAAI,EAAE,yBAAyB;oBAC/B,OAAO,EAAE,qBAAqB,OAAO,CAAC,MAAM,EAAE;iBAC9C;aACD,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACd,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uCAAuC,EAAE;oBACvD,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC;iBAC1B,CAAC,CAAA;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;IACF,CAAC;IAEO,gBAAgB;QACvB,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACd,cAAc,IAAI,CAAC,MAAM,CAAC,UAAU,+BAA+B,IAAI,CAAC,MAAM,GAAG,CACjF,CAAA;QACF,CAAC;IACF,CAAC;CACD"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/connector/mcp/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,7 +32,18 @@ export declare class MCPToolDiscovery {
|
|
|
32
32
|
private clients;
|
|
33
33
|
private log;
|
|
34
34
|
private options;
|
|
35
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Last admitted tool set per SERVER, for drift detection.
|
|
37
|
+
*
|
|
38
|
+
* Keyed by server name rather than client id, and the difference is the
|
|
39
|
+
* whole point. A client id is minted per connection, so on the path a
|
|
40
|
+
* real MCP server actually takes — a plugin enabling, connecting, and
|
|
41
|
+
* being disabled again — every discovery was the first one that id had
|
|
42
|
+
* ever seen, and drift could not fire however many times the server
|
|
43
|
+
* changed underneath. The threat is a server that advertises something
|
|
44
|
+
* benign when a host approves it and something else afterwards, which is
|
|
45
|
+
* a property of the SERVER across connections.
|
|
46
|
+
*/
|
|
36
47
|
private lastSeen;
|
|
37
48
|
constructor(clients: MCPClient[], options?: MCPToolDiscoveryOptions);
|
|
38
49
|
addClient(client: MCPClient): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/connector/mcp/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAqB,MAAM,gCAAgC,CAAA;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE/D,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,uBAAuB,CAAA;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,aAAa,EAIlB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,uBAAuB;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;IAC3D;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,YAAY,CAAA;KAAE,KAAK,IAAI,CAAA;IACjG,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,OAAO,CAAyB;IACxC
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/connector/mcp/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAqB,MAAM,gCAAgC,CAAA;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE/D,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,uBAAuB,CAAA;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,aAAa,EAIlB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,uBAAuB;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;IAC3D;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,YAAY,CAAA;KAAE,KAAK,IAAI,CAAA;IACjG,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,OAAO,CAAyB;IACxC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,QAAQ,CAAyC;gBAE7C,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,GAAE,uBAA4B;IAMvE,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAIlC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAS9B,WAAW,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAuB3C,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA4B7D,iBAAiB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAWpD,OAAO,CAAC,WAAW;CAiBnB"}
|
|
@@ -6,7 +6,18 @@ export class MCPToolDiscovery {
|
|
|
6
6
|
clients;
|
|
7
7
|
log;
|
|
8
8
|
options;
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Last admitted tool set per SERVER, for drift detection.
|
|
11
|
+
*
|
|
12
|
+
* Keyed by server name rather than client id, and the difference is the
|
|
13
|
+
* whole point. A client id is minted per connection, so on the path a
|
|
14
|
+
* real MCP server actually takes — a plugin enabling, connecting, and
|
|
15
|
+
* being disabled again — every discovery was the first one that id had
|
|
16
|
+
* ever seen, and drift could not fire however many times the server
|
|
17
|
+
* changed underneath. The threat is a server that advertises something
|
|
18
|
+
* benign when a host approves it and something else afterwards, which is
|
|
19
|
+
* a property of the SERVER across connections.
|
|
20
|
+
*/
|
|
10
21
|
lastSeen = new Map();
|
|
11
22
|
constructor(clients, options = {}) {
|
|
12
23
|
this.clients = clients;
|
|
@@ -18,7 +29,11 @@ export class MCPToolDiscovery {
|
|
|
18
29
|
}
|
|
19
30
|
removeClient(clientId) {
|
|
20
31
|
this.clients = this.clients.filter((c) => c.id !== clientId);
|
|
21
|
-
|
|
32
|
+
// The remembered tool set is deliberately NOT forgotten. Dropping it on
|
|
33
|
+
// disconnect is what made the rug pull invisible: disable, swap the
|
|
34
|
+
// server's tools, enable again, and the next discovery had nothing to
|
|
35
|
+
// compare against. What is remembered is a name and a list of tool
|
|
36
|
+
// shapes, so keeping it costs almost nothing.
|
|
22
37
|
}
|
|
23
38
|
async discoverAll() {
|
|
24
39
|
const results = [];
|
|
@@ -74,8 +89,8 @@ export class MCPToolDiscovery {
|
|
|
74
89
|
});
|
|
75
90
|
}
|
|
76
91
|
detectDrift(clientId, serverName, admitted) {
|
|
77
|
-
const previous = this.lastSeen.get(
|
|
78
|
-
this.lastSeen.set(
|
|
92
|
+
const previous = this.lastSeen.get(serverName);
|
|
93
|
+
this.lastSeen.set(serverName, admitted);
|
|
79
94
|
if (!previous)
|
|
80
95
|
return;
|
|
81
96
|
const drift = diffTools(previous, admitted);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/connector/mcp/discovery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAe,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AAEtD,OAAO,EAGN,eAAe,EACf,SAAS,EACT,QAAQ,GACR,MAAM,aAAa,CAAA;AAwBpB,MAAM,OAAO,gBAAgB;IACpB,OAAO,CAAa;IACpB,GAAG,CAAQ;IACX,OAAO,CAAyB;IACxC
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/connector/mcp/discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,8 @@ export { MCPClient } from './client.js';
|
|
|
5
5
|
export { mcpToolToToolDefinition, toolDefinitionToMCPTool, mcpJsonSchemaToZod, zodToMCPJsonSchema, mcpToolResultToToolResult, toolResultToMCPToolResult, } from './adapter.js';
|
|
6
6
|
export { MCPToolDiscovery } from './discovery.js';
|
|
7
7
|
export { MCPConnectorBridge } from '../../bridge/mcp/connector/adapter.js';
|
|
8
|
-
export { MCPServer } from './server.js';
|
|
9
|
-
export type { MCPServerToolProvider, MCPServerResourceProvider } from './server.js';
|
|
8
|
+
export { MCPServer, MCPMethodNotFound } from './server.js';
|
|
9
|
+
export type { MCPServerToolProvider, MCPServerResourceProvider, MCPServerPromptProvider, } from './server.js';
|
|
10
10
|
export type { MCPToolDiscoveryOptions } from './discovery.js';
|
|
11
11
|
export { applyToolPolicy, diffTools, hasDrift, toolsHash } from './policy.js';
|
|
12
12
|
export type { MCPToolDrift, MCPToolPolicy, MCPToolPolicyDecision } from './policy.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connector/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EACN,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,GACzB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAE1E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connector/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EACN,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,GACzB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAE1E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC1D,YAAY,EACX,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,GACvB,MAAM,aAAa,CAAA;AAEpB,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC7E,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -5,6 +5,6 @@ export { MCPClient } from './client.js';
|
|
|
5
5
|
export { mcpToolToToolDefinition, toolDefinitionToMCPTool, mcpJsonSchemaToZod, zodToMCPJsonSchema, mcpToolResultToToolResult, toolResultToMCPToolResult, } from './adapter.js';
|
|
6
6
|
export { MCPToolDiscovery } from './discovery.js';
|
|
7
7
|
export { MCPConnectorBridge } from '../../bridge/mcp/connector/adapter.js';
|
|
8
|
-
export { MCPServer } from './server.js';
|
|
8
|
+
export { MCPServer, MCPMethodNotFound } from './server.js';
|
|
9
9
|
export { applyToolPolicy, diffTools, hasDrift, toolsHash } from './policy.js';
|
|
10
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connector/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EACN,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,GACzB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAE1E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connector/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EACN,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,GACzB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAE1E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAQ1D,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import type { MCPContentBlock, MCPResource, MCPServerConfig, MCPServerState, MCPToolDefinition, MCPToolResult, MCPTransport } from '../../types/connector/index.js';
|
|
2
|
+
import type { MCPPromptDefinition, MCPPromptMessage } from '../../types/connector/index.js';
|
|
2
3
|
import type { MCPServerId } from '../../types/ids/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* A method this server does not implement.
|
|
6
|
+
*
|
|
7
|
+
* Carried as its own error so the dispatcher can answer with the protocol's
|
|
8
|
+
* own code instead of a generic internal error. `-32603` tells a client the
|
|
9
|
+
* server broke; `-32601` tells it the server does not do this — and only the
|
|
10
|
+
* second lets a client stop asking rather than retry.
|
|
11
|
+
*/
|
|
12
|
+
export declare class MCPMethodNotFound extends Error {
|
|
13
|
+
readonly method: string;
|
|
14
|
+
constructor(method: string);
|
|
15
|
+
}
|
|
3
16
|
export interface MCPServerToolProvider {
|
|
4
17
|
listTools(): MCPToolDefinition[];
|
|
5
18
|
callTool(name: string, args?: Record<string, unknown>): Promise<MCPToolResult>;
|
|
@@ -8,17 +21,32 @@ export interface MCPServerResourceProvider {
|
|
|
8
21
|
listResources(): MCPResource[];
|
|
9
22
|
readResource(uri: string): Promise<MCPContentBlock[]>;
|
|
10
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Prompts this server publishes.
|
|
26
|
+
*
|
|
27
|
+
* Injected as an interface like the other two, so the server owns dispatch
|
|
28
|
+
* and the host owns content. `MCPPromptDefinition` existed in the types
|
|
29
|
+
* from the start with no way to serve one.
|
|
30
|
+
*/
|
|
31
|
+
export interface MCPServerPromptProvider {
|
|
32
|
+
listPrompts(): MCPPromptDefinition[];
|
|
33
|
+
getPrompt(name: string, args?: Record<string, string>): Promise<{
|
|
34
|
+
description?: string;
|
|
35
|
+
messages: MCPPromptMessage[];
|
|
36
|
+
}>;
|
|
37
|
+
}
|
|
11
38
|
export declare class MCPServer {
|
|
12
39
|
readonly id: MCPServerId;
|
|
13
40
|
private config;
|
|
14
41
|
private toolProvider;
|
|
15
42
|
private resourceProvider?;
|
|
43
|
+
private promptProvider?;
|
|
16
44
|
private transport;
|
|
17
45
|
private running;
|
|
18
46
|
private connectedClients;
|
|
19
47
|
private startedAt?;
|
|
20
48
|
private log;
|
|
21
|
-
constructor(config: MCPServerConfig, toolProvider: MCPServerToolProvider, resourceProvider?: MCPServerResourceProvider);
|
|
49
|
+
constructor(config: MCPServerConfig, toolProvider: MCPServerToolProvider, resourceProvider?: MCPServerResourceProvider, promptProvider?: MCPServerPromptProvider);
|
|
22
50
|
start(transport: MCPTransport): Promise<void>;
|
|
23
51
|
stop(): Promise<void>;
|
|
24
52
|
isRunning(): boolean;
|
|
@@ -28,7 +56,20 @@ export declare class MCPServer {
|
|
|
28
56
|
private handleInitialize;
|
|
29
57
|
private handleToolsList;
|
|
30
58
|
private handleToolsCall;
|
|
59
|
+
/**
|
|
60
|
+
* An empty list is what a server with NO resources returns. A server
|
|
61
|
+
* that cannot serve resources at all has to say so differently.
|
|
62
|
+
*
|
|
63
|
+
* This used to answer `{ resources: [] }` when no provider was
|
|
64
|
+
* configured, for a capability `initialize` never advertised — so a
|
|
65
|
+
* client that asked anyway was told, in the protocol's own vocabulary,
|
|
66
|
+
* that the answer is "none" rather than "not here". The two send a
|
|
67
|
+
* client in opposite directions: one stops asking, the other looks for
|
|
68
|
+
* the resource somewhere else.
|
|
69
|
+
*/
|
|
31
70
|
private handleResourcesList;
|
|
71
|
+
private handlePromptsList;
|
|
72
|
+
private handlePromptsGet;
|
|
32
73
|
private handleResourcesRead;
|
|
33
74
|
private respond;
|
|
34
75
|
private respondError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/connector/mcp/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/connector/mcp/server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,eAAe,EAEf,WAAW,EAEX,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAC3F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAK3D;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;CAInC;AAED,MAAM,WAAW,qBAAqB;IACrC,SAAS,IAAI,iBAAiB,EAAE,CAAA;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;CAC9E;AAED,MAAM,WAAW,yBAAyB;IACzC,aAAa,IAAI,WAAW,EAAE,CAAA;IAC9B,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAA;CACrD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACvC,WAAW,IAAI,mBAAmB,EAAE,CAAA;IACpC,SAAS,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,OAAO,CAAC;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAC,CAAA;CAClE;AAED,qBAAa,SAAS;IACrB,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAA;IACxB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,gBAAgB,CAAC,CAA2B;IACpD,OAAO,CAAC,cAAc,CAAC,CAAyB;IAChD,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,gBAAgB,CAAI;IAC5B,OAAO,CAAC,SAAS,CAAC,CAAQ;IAC1B,OAAO,CAAC,GAAG,CAAQ;gBAGlB,MAAM,EAAE,eAAe,EACvB,YAAY,EAAE,qBAAqB,EACnC,gBAAgB,CAAC,EAAE,yBAAyB,EAC5C,cAAc,CAAC,EAAE,uBAAuB;IAUnC,KAAK,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB7C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B,SAAS,IAAI,OAAO;IAIpB,QAAQ,IAAI,cAAc;YAUZ,aAAa;YAYb,QAAQ;IAuBtB,OAAO,CAAC,gBAAgB;IAgCxB,OAAO,CAAC,eAAe;YAIT,eAAe;IAc7B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,iBAAiB;YAOX,gBAAgB;YAiChB,mBAAmB;YAanB,OAAO;YASP,YAAY;CAQ1B"}
|
|
@@ -1,21 +1,40 @@
|
|
|
1
|
+
import { JSON_RPC_METHOD_NOT_FOUND } from '../../constants/mcp/index.js';
|
|
1
2
|
import { toErrorMessage } from '../../utils/error.js';
|
|
2
3
|
import { generateMCPServerId } from '../../utils/id.js';
|
|
3
4
|
import { getRootLogger } from '../../utils/logger.js';
|
|
5
|
+
/**
|
|
6
|
+
* A method this server does not implement.
|
|
7
|
+
*
|
|
8
|
+
* Carried as its own error so the dispatcher can answer with the protocol's
|
|
9
|
+
* own code instead of a generic internal error. `-32603` tells a client the
|
|
10
|
+
* server broke; `-32601` tells it the server does not do this — and only the
|
|
11
|
+
* second lets a client stop asking rather than retry.
|
|
12
|
+
*/
|
|
13
|
+
export class MCPMethodNotFound extends Error {
|
|
14
|
+
method;
|
|
15
|
+
constructor(method) {
|
|
16
|
+
super(`Method not found: ${method}`);
|
|
17
|
+
this.method = method;
|
|
18
|
+
this.name = 'MCPMethodNotFound';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
4
21
|
export class MCPServer {
|
|
5
22
|
id;
|
|
6
23
|
config;
|
|
7
24
|
toolProvider;
|
|
8
25
|
resourceProvider;
|
|
26
|
+
promptProvider;
|
|
9
27
|
transport = null;
|
|
10
28
|
running = false;
|
|
11
29
|
connectedClients = 0;
|
|
12
30
|
startedAt;
|
|
13
31
|
log;
|
|
14
|
-
constructor(config, toolProvider, resourceProvider) {
|
|
32
|
+
constructor(config, toolProvider, resourceProvider, promptProvider) {
|
|
15
33
|
this.id = config.id ?? generateMCPServerId();
|
|
16
34
|
this.config = config;
|
|
17
35
|
this.toolProvider = toolProvider;
|
|
18
36
|
this.resourceProvider = resourceProvider;
|
|
37
|
+
this.promptProvider = promptProvider;
|
|
19
38
|
this.log = getRootLogger().child({ component: 'MCPServer', serverId: this.id });
|
|
20
39
|
}
|
|
21
40
|
async start(transport) {
|
|
@@ -66,7 +85,8 @@ export class MCPServer {
|
|
|
66
85
|
await this.respond(message.id, result);
|
|
67
86
|
}
|
|
68
87
|
catch (err) {
|
|
69
|
-
|
|
88
|
+
const code = err instanceof MCPMethodNotFound ? JSON_RPC_METHOD_NOT_FOUND : -32603;
|
|
89
|
+
await this.respondError(message.id, code, toErrorMessage(err));
|
|
70
90
|
}
|
|
71
91
|
}
|
|
72
92
|
async dispatch(method, params) {
|
|
@@ -81,10 +101,14 @@ export class MCPServer {
|
|
|
81
101
|
return this.handleResourcesList();
|
|
82
102
|
case 'resources/read':
|
|
83
103
|
return this.handleResourcesRead(params);
|
|
104
|
+
case 'prompts/list':
|
|
105
|
+
return this.handlePromptsList();
|
|
106
|
+
case 'prompts/get':
|
|
107
|
+
return this.handlePromptsGet(params);
|
|
84
108
|
case 'ping':
|
|
85
109
|
return {};
|
|
86
110
|
default:
|
|
87
|
-
throw new
|
|
111
|
+
throw new MCPMethodNotFound(method);
|
|
88
112
|
}
|
|
89
113
|
}
|
|
90
114
|
handleInitialize() {
|
|
@@ -96,6 +120,12 @@ export class MCPServer {
|
|
|
96
120
|
if (this.resourceProvider) {
|
|
97
121
|
capabilities.resources = { subscribe: false, listChanged: false };
|
|
98
122
|
}
|
|
123
|
+
// Declared only when there is something behind it, matching resources
|
|
124
|
+
// above. A capability advertised without a provider is a promise the
|
|
125
|
+
// next call breaks.
|
|
126
|
+
if (this.promptProvider) {
|
|
127
|
+
capabilities.prompts = { listChanged: false };
|
|
128
|
+
}
|
|
99
129
|
return {
|
|
100
130
|
protocolVersion: '2024-11-05',
|
|
101
131
|
capabilities,
|
|
@@ -119,12 +149,55 @@ export class MCPServer {
|
|
|
119
149
|
}
|
|
120
150
|
return this.toolProvider.callTool(name, args);
|
|
121
151
|
}
|
|
152
|
+
/**
|
|
153
|
+
* An empty list is what a server with NO resources returns. A server
|
|
154
|
+
* that cannot serve resources at all has to say so differently.
|
|
155
|
+
*
|
|
156
|
+
* This used to answer `{ resources: [] }` when no provider was
|
|
157
|
+
* configured, for a capability `initialize` never advertised — so a
|
|
158
|
+
* client that asked anyway was told, in the protocol's own vocabulary,
|
|
159
|
+
* that the answer is "none" rather than "not here". The two send a
|
|
160
|
+
* client in opposite directions: one stops asking, the other looks for
|
|
161
|
+
* the resource somewhere else.
|
|
162
|
+
*/
|
|
122
163
|
handleResourcesList() {
|
|
123
164
|
if (!this.resourceProvider) {
|
|
124
|
-
|
|
165
|
+
throw new MCPMethodNotFound('resources/list');
|
|
125
166
|
}
|
|
126
167
|
return { resources: this.resourceProvider.listResources() };
|
|
127
168
|
}
|
|
169
|
+
handlePromptsList() {
|
|
170
|
+
if (!this.promptProvider) {
|
|
171
|
+
throw new MCPMethodNotFound('prompts/list');
|
|
172
|
+
}
|
|
173
|
+
return { prompts: this.promptProvider.listPrompts() };
|
|
174
|
+
}
|
|
175
|
+
async handlePromptsGet(params) {
|
|
176
|
+
if (!this.promptProvider) {
|
|
177
|
+
throw new MCPMethodNotFound('prompts/get');
|
|
178
|
+
}
|
|
179
|
+
const name = params.name;
|
|
180
|
+
if (!name) {
|
|
181
|
+
throw new Error('prompts/get requires a "name"');
|
|
182
|
+
}
|
|
183
|
+
const args = params.arguments ?? {};
|
|
184
|
+
// Required arguments are checked HERE rather than left to the
|
|
185
|
+
// provider. A prompt declares them, so a missing one is answerable
|
|
186
|
+
// from the declaration alone, and every provider would otherwise
|
|
187
|
+
// re-implement the same check or forget to.
|
|
188
|
+
const declared = this.promptProvider.listPrompts().find((p) => p.name === name);
|
|
189
|
+
if (!declared) {
|
|
190
|
+
throw new Error(`Unknown prompt: ${name}`);
|
|
191
|
+
}
|
|
192
|
+
const missing = (declared.arguments ?? [])
|
|
193
|
+
.filter((a) => a.required === true)
|
|
194
|
+
.map((a) => a.name)
|
|
195
|
+
.filter((n) => args[n] === undefined);
|
|
196
|
+
if (missing.length > 0) {
|
|
197
|
+
throw new Error(`prompts/get "${name}" is missing required argument(s): ${missing.join(', ')}`);
|
|
198
|
+
}
|
|
199
|
+
return this.promptProvider.getPrompt(name, args);
|
|
200
|
+
}
|
|
128
201
|
async handleResourcesRead(params) {
|
|
129
202
|
const uri = params.uri;
|
|
130
203
|
if (!uri) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/connector/mcp/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/connector/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"depth-limit-authority.test.d.ts","sourceRoot":"","sources":["../../../../src/manager/agent/__tests__/depth-limit-authority.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
/**
|
|
3
|
+
* Which `maxDepth` is in force.
|
|
4
|
+
*
|
|
5
|
+
* Two exist. `AgentManagerConfig.maxDepth` is enforced in
|
|
6
|
+
* `AgentManager.sendMessage`; `SupervisorAgentConfig.maxDepth` is read by
|
|
7
|
+
* nothing. For a recursion bound that is the worst way to be wrong — the
|
|
8
|
+
* number a reviewer sees in the supervisor config is not the number
|
|
9
|
+
* stopping runaway delegation.
|
|
10
|
+
*
|
|
11
|
+
* The first version of these tests passed the config where the registry
|
|
12
|
+
* goes, so every case silently ran against the default of 3 — and the case
|
|
13
|
+
* that used 3 "passed" while proving nothing. Configuring a value the
|
|
14
|
+
* default is not is what makes this a test.
|
|
15
|
+
*/
|
|
16
|
+
async function manager(maxDepth) {
|
|
17
|
+
const { AgentManager } = await import('../lifecycle.js');
|
|
18
|
+
const registry = { resolve: vi.fn(), get: vi.fn(), getAll: vi.fn(() => []) };
|
|
19
|
+
const deps = { createAgent: vi.fn(), taskStore: undefined };
|
|
20
|
+
return new AgentManager(registry, { maxDepth }, deps);
|
|
21
|
+
}
|
|
22
|
+
function contextAtDepth(depth) {
|
|
23
|
+
return {
|
|
24
|
+
parentRunId: 'run_x',
|
|
25
|
+
parentAgentId: 'agent_x',
|
|
26
|
+
parentAbortController: new AbortController(),
|
|
27
|
+
depth,
|
|
28
|
+
tenantId: 'tnt_x',
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function send(m, depth) {
|
|
32
|
+
return m.sendMessage({ agentId: 'a', prompt: 'go', tenantId: 'tnt_x' }, contextAtDepth(depth));
|
|
33
|
+
}
|
|
34
|
+
describe('the manager owns the recursion bound', () => {
|
|
35
|
+
it('refuses a task at the configured depth', async () => {
|
|
36
|
+
// 5, deliberately not the default of 3: a limit that happens to equal
|
|
37
|
+
// the default cannot tell "configured" from "ignored".
|
|
38
|
+
const mgr = await manager(5);
|
|
39
|
+
await expect(send(mgr, 5)).rejects.toThrow(/Max task depth 5/);
|
|
40
|
+
});
|
|
41
|
+
it('refuses past it too, not only exactly at it', async () => {
|
|
42
|
+
const mgr = await manager(2);
|
|
43
|
+
await expect(send(mgr, 7)).rejects.toThrow(/Max task depth 2/);
|
|
44
|
+
});
|
|
45
|
+
it('reports the depth reached alongside the limit', async () => {
|
|
46
|
+
const mgr = await manager(2);
|
|
47
|
+
// A limit without the current value sends someone to instrument the
|
|
48
|
+
// run to learn how deep it actually got.
|
|
49
|
+
await expect(send(mgr, 4)).rejects.toThrow(/current: 4/);
|
|
50
|
+
});
|
|
51
|
+
it('allows a task below the bound to proceed past this check', async () => {
|
|
52
|
+
const mgr = await manager(5);
|
|
53
|
+
// It gets past the depth gate and fails later on the stubbed
|
|
54
|
+
// registry — which is the point: the gate did not stop it.
|
|
55
|
+
await expect(send(mgr, 1)).rejects.not.toThrow(/Max task depth/);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=depth-limit-authority.test.js.map
|