@polka-codes/cli 0.10.23 → 0.10.24
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/index.js +1 -1
- package/package.json +3 -3
- package/dist/ApiProviderConfig.js +0 -57
- package/dist/ApiProviderConfig.js.map +0 -1
- package/dist/ApiProviderConfig.test.js +0 -278
- package/dist/ApiProviderConfig.test.js.map +0 -1
- package/dist/agent/advanced-discovery.js +0 -604
- package/dist/agent/advanced-discovery.js.map +0 -1
- package/dist/agent/config.js +0 -139
- package/dist/agent/config.js.map +0 -1
- package/dist/agent/config.test.js +0 -140
- package/dist/agent/config.test.js.map +0 -1
- package/dist/agent/constants.js +0 -172
- package/dist/agent/constants.js.map +0 -1
- package/dist/agent/constants.test.js +0 -132
- package/dist/agent/constants.test.js.map +0 -1
- package/dist/agent/debug-logger.js +0 -281
- package/dist/agent/debug-logger.js.map +0 -1
- package/dist/agent/debug-logger.test.js +0 -294
- package/dist/agent/debug-logger.test.js.map +0 -1
- package/dist/agent/error-handling.js +0 -114
- package/dist/agent/error-handling.js.map +0 -1
- package/dist/agent/error-handling.test.js +0 -191
- package/dist/agent/error-handling.test.js.map +0 -1
- package/dist/agent/errors.js +0 -301
- package/dist/agent/errors.js.map +0 -1
- package/dist/agent/executor.js +0 -206
- package/dist/agent/executor.js.map +0 -1
- package/dist/agent/executor.test.js +0 -228
- package/dist/agent/executor.test.js.map +0 -1
- package/dist/agent/goal-decomposer.js +0 -281
- package/dist/agent/goal-decomposer.js.map +0 -1
- package/dist/agent/goal-decomposer.test.js +0 -225
- package/dist/agent/goal-decomposer.test.js.map +0 -1
- package/dist/agent/health-monitor.js +0 -89
- package/dist/agent/health-monitor.js.map +0 -1
- package/dist/agent/improvement-loop.js +0 -177
- package/dist/agent/improvement-loop.js.map +0 -1
- package/dist/agent/index.js +0 -38
- package/dist/agent/index.js.map +0 -1
- package/dist/agent/metrics.js +0 -158
- package/dist/agent/metrics.js.map +0 -1
- package/dist/agent/metrics.test.js +0 -311
- package/dist/agent/metrics.test.js.map +0 -1
- package/dist/agent/orchestrator.js +0 -438
- package/dist/agent/orchestrator.js.map +0 -1
- package/dist/agent/planner.js +0 -199
- package/dist/agent/planner.js.map +0 -1
- package/dist/agent/planner.test.js +0 -135
- package/dist/agent/planner.test.js.map +0 -1
- package/dist/agent/progress.js +0 -298
- package/dist/agent/progress.js.map +0 -1
- package/dist/agent/progress.test.js +0 -255
- package/dist/agent/progress.test.js.map +0 -1
- package/dist/agent/resource-monitor.js +0 -114
- package/dist/agent/resource-monitor.js.map +0 -1
- package/dist/agent/safety/approval.js +0 -178
- package/dist/agent/safety/approval.js.map +0 -1
- package/dist/agent/safety/approval.test.js +0 -142
- package/dist/agent/safety/approval.test.js.map +0 -1
- package/dist/agent/safety/checks.js +0 -152
- package/dist/agent/safety/checks.js.map +0 -1
- package/dist/agent/safety/checks.test.js +0 -89
- package/dist/agent/safety/checks.test.js.map +0 -1
- package/dist/agent/safety/interrupt.js +0 -92
- package/dist/agent/safety/interrupt.js.map +0 -1
- package/dist/agent/safety/interrupt.test.js +0 -53
- package/dist/agent/safety/interrupt.test.js.map +0 -1
- package/dist/agent/session.js +0 -117
- package/dist/agent/session.js.map +0 -1
- package/dist/agent/session.test.js +0 -213
- package/dist/agent/session.test.js.map +0 -1
- package/dist/agent/state-manager.js +0 -287
- package/dist/agent/state-manager.js.map +0 -1
- package/dist/agent/task-discovery.js +0 -433
- package/dist/agent/task-discovery.js.map +0 -1
- package/dist/agent/task-discovery.test.js +0 -40
- package/dist/agent/task-discovery.test.js.map +0 -1
- package/dist/agent/task-history.js +0 -128
- package/dist/agent/task-history.js.map +0 -1
- package/dist/agent/task-prioritizer.js +0 -286
- package/dist/agent/task-prioritizer.js.map +0 -1
- package/dist/agent/test-fixtures.js +0 -112
- package/dist/agent/test-fixtures.js.map +0 -1
- package/dist/agent/types.js +0 -15
- package/dist/agent/types.js.map +0 -1
- package/dist/agent/workflow-adapter.js +0 -219
- package/dist/agent/workflow-adapter.js.map +0 -1
- package/dist/agent/workflow-adapter.test.js +0 -11
- package/dist/agent/workflow-adapter.test.js.map +0 -1
- package/dist/agent/working-dir-discovery.js +0 -54
- package/dist/agent/working-dir-discovery.js.map +0 -1
- package/dist/agent/working-space.js +0 -484
- package/dist/agent/working-space.js.map +0 -1
- package/dist/agent/working-space.test.js +0 -436
- package/dist/agent/working-space.test.js.map +0 -1
- package/dist/api.js +0 -279
- package/dist/api.js.map +0 -1
- package/dist/builtin-commands.js +0 -20
- package/dist/builtin-commands.js.map +0 -1
- package/dist/commandSummarizer.js +0 -96
- package/dist/commandSummarizer.js.map +0 -1
- package/dist/commands/__tests__/command-detection.integration.test.js +0 -238
- package/dist/commands/__tests__/command-detection.integration.test.js.map +0 -1
- package/dist/commands/__tests__/script-generator.integration.test.js +0 -271
- package/dist/commands/__tests__/script-generator.integration.test.js.map +0 -1
- package/dist/commands/agent.js +0 -218
- package/dist/commands/agent.js.map +0 -1
- package/dist/commands/code.js +0 -102
- package/dist/commands/code.js.map +0 -1
- package/dist/commands/command.constants.js +0 -13
- package/dist/commands/command.constants.js.map +0 -1
- package/dist/commands/commit.js +0 -17
- package/dist/commands/commit.js.map +0 -1
- package/dist/commands/fix.js +0 -17
- package/dist/commands/fix.js.map +0 -1
- package/dist/commands/init.js +0 -501
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/mcp-server.js +0 -122
- package/dist/commands/mcp-server.js.map +0 -1
- package/dist/commands/memory.js +0 -410
- package/dist/commands/memory.js.map +0 -1
- package/dist/commands/memory.test.js +0 -453
- package/dist/commands/memory.test.js.map +0 -1
- package/dist/commands/meta.js +0 -142
- package/dist/commands/meta.js.map +0 -1
- package/dist/commands/plan.js +0 -39
- package/dist/commands/plan.js.map +0 -1
- package/dist/commands/pr.js +0 -14
- package/dist/commands/pr.js.map +0 -1
- package/dist/commands/review-json.test.js +0 -33
- package/dist/commands/review-json.test.js.map +0 -1
- package/dist/commands/review.js +0 -137
- package/dist/commands/review.js.map +0 -1
- package/dist/commands/review.usage.test.js +0 -41
- package/dist/commands/review.usage.test.js.map +0 -1
- package/dist/commands/run.js +0 -107
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/skills.js +0 -175
- package/dist/commands/skills.js.map +0 -1
- package/dist/commands/task.js +0 -34
- package/dist/commands/task.js.map +0 -1
- package/dist/commands/workflow.js +0 -117
- package/dist/commands/workflow.js.map +0 -1
- package/dist/configPrompt.js +0 -39
- package/dist/configPrompt.js.map +0 -1
- package/dist/env.js +0 -22
- package/dist/env.js.map +0 -1
- package/dist/errors.js +0 -132
- package/dist/errors.js.map +0 -1
- package/dist/errors.test.js +0 -21
- package/dist/errors.test.js.map +0 -1
- package/dist/file-attachments.js +0 -77
- package/dist/file-attachments.js.map +0 -1
- package/dist/file-attachments.test.js +0 -214
- package/dist/file-attachments.test.js.map +0 -1
- package/dist/getModel.js +0 -229
- package/dist/getModel.js.map +0 -1
- package/dist/getModel.test.js +0 -67
- package/dist/getModel.test.js.map +0 -1
- package/dist/getProviderOptions.js +0 -58
- package/dist/getProviderOptions.js.map +0 -1
- package/dist/git-operations.js +0 -363
- package/dist/git-operations.js.map +0 -1
- package/dist/git-operations.test.js +0 -81
- package/dist/git-operations.test.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/logger.js +0 -41
- package/dist/logger.js.map +0 -1
- package/dist/mcp/client.js +0 -11
- package/dist/mcp/client.js.map +0 -1
- package/dist/mcp/error-scenarios.test.js +0 -206
- package/dist/mcp/error-scenarios.test.js.map +0 -1
- package/dist/mcp/errors.js +0 -63
- package/dist/mcp/errors.js.map +0 -1
- package/dist/mcp/index.js +0 -9
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/manager.js +0 -231
- package/dist/mcp/manager.js.map +0 -1
- package/dist/mcp/manager.test.js +0 -40
- package/dist/mcp/manager.test.js.map +0 -1
- package/dist/mcp/sdk-client.js +0 -166
- package/dist/mcp/sdk-client.js.map +0 -1
- package/dist/mcp/shared-types.js +0 -3
- package/dist/mcp/shared-types.js.map +0 -1
- package/dist/mcp/tools-integration.test.js +0 -198
- package/dist/mcp/tools-integration.test.js.map +0 -1
- package/dist/mcp/tools.js +0 -60
- package/dist/mcp/tools.js.map +0 -1
- package/dist/mcp/transport.js +0 -257
- package/dist/mcp/transport.js.map +0 -1
- package/dist/mcp/types.js +0 -3
- package/dist/mcp/types.js.map +0 -1
- package/dist/mcp-server/index.js +0 -5
- package/dist/mcp-server/index.js.map +0 -1
- package/dist/mcp-server/plan-formatting.test.js +0 -74
- package/dist/mcp-server/plan-formatting.test.js.map +0 -1
- package/dist/mcp-server/sdk-server.js +0 -102
- package/dist/mcp-server/sdk-server.js.map +0 -1
- package/dist/mcp-server/sdk-server.test.js +0 -363
- package/dist/mcp-server/sdk-server.test.js.map +0 -1
- package/dist/mcp-server/tools.js +0 -785
- package/dist/mcp-server/tools.js.map +0 -1
- package/dist/mcp-server/types.js +0 -3
- package/dist/mcp-server/types.js.map +0 -1
- package/dist/options.js +0 -85
- package/dist/options.js.map +0 -1
- package/dist/options.test.js +0 -177
- package/dist/options.test.js.map +0 -1
- package/dist/prices.js +0 -61
- package/dist/prices.js.map +0 -1
- package/dist/prices.test.js +0 -148
- package/dist/prices.test.js.map +0 -1
- package/dist/runWorkflow.js +0 -313
- package/dist/runWorkflow.js.map +0 -1
- package/dist/script/__tests__/execution.integration.test.js +0 -274
- package/dist/script/__tests__/execution.integration.test.js.map +0 -1
- package/dist/script/__tests__/runner.test.js +0 -176
- package/dist/script/__tests__/runner.test.js.map +0 -1
- package/dist/script/__tests__/validator.test.js +0 -180
- package/dist/script/__tests__/validator.test.js.map +0 -1
- package/dist/script/executor.js +0 -127
- package/dist/script/executor.js.map +0 -1
- package/dist/script/index.js +0 -4
- package/dist/script/index.js.map +0 -1
- package/dist/script/runner.js +0 -258
- package/dist/script/runner.js.map +0 -1
- package/dist/skillIntegration.js +0 -46
- package/dist/skillIntegration.js.map +0 -1
- package/dist/skillIntegration.test.js +0 -128
- package/dist/skillIntegration.test.js.map +0 -1
- package/dist/test/utils.js +0 -200
- package/dist/test/utils.js.map +0 -1
- package/dist/test/workflow-fixtures.js +0 -120
- package/dist/test/workflow-fixtures.js.map +0 -1
- package/dist/tool-implementations.js +0 -521
- package/dist/tool-implementations.js.map +0 -1
- package/dist/tool-implementations.skill-tools.test.js +0 -106
- package/dist/tool-implementations.skill-tools.test.js.map +0 -1
- package/dist/tools/getTodoItem.js +0 -33
- package/dist/tools/getTodoItem.js.map +0 -1
- package/dist/tools/gitDiff.js +0 -108
- package/dist/tools/gitDiff.js.map +0 -1
- package/dist/tools/index.js +0 -8
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/listMemoryTopics.js +0 -24
- package/dist/tools/listMemoryTopics.js.map +0 -1
- package/dist/tools/listTodoItems.js +0 -35
- package/dist/tools/listTodoItems.js.map +0 -1
- package/dist/tools/listTodoItems.test.js +0 -89
- package/dist/tools/listTodoItems.test.js.map +0 -1
- package/dist/tools/readMemory.js +0 -33
- package/dist/tools/readMemory.js.map +0 -1
- package/dist/tools/updateMemory.js +0 -62
- package/dist/tools/updateMemory.js.map +0 -1
- package/dist/tools/updateMemory.test.js +0 -109
- package/dist/tools/updateMemory.test.js.map +0 -1
- package/dist/tools/updateTodoItem.js +0 -31
- package/dist/tools/updateTodoItem.js.map +0 -1
- package/dist/tools/utils/diffLineNumbers.js +0 -178
- package/dist/tools/utils/diffLineNumbers.js.map +0 -1
- package/dist/utils/cacheControl.js +0 -59
- package/dist/utils/cacheControl.js.map +0 -1
- package/dist/utils/cacheControl.test.js +0 -128
- package/dist/utils/cacheControl.test.js.map +0 -1
- package/dist/utils/command.js +0 -50
- package/dist/utils/command.js.map +0 -1
- package/dist/utils/shell.js +0 -56
- package/dist/utils/shell.js.map +0 -1
- package/dist/utils/userInput.js +0 -47
- package/dist/utils/userInput.js.map +0 -1
- package/dist/workflow-tools.js +0 -21
- package/dist/workflow-tools.js.map +0 -1
- package/dist/workflows/agent-builder.js +0 -90
- package/dist/workflows/agent-builder.js.map +0 -1
- package/dist/workflows/agent-builder.test.js +0 -115
- package/dist/workflows/agent-builder.test.js.map +0 -1
- package/dist/workflows/code.workflow.js +0 -145
- package/dist/workflows/code.workflow.js.map +0 -1
- package/dist/workflows/commit.workflow.js +0 -111
- package/dist/workflows/commit.workflow.js.map +0 -1
- package/dist/workflows/commit.workflow.test.js +0 -141
- package/dist/workflows/commit.workflow.test.js.map +0 -1
- package/dist/workflows/fix.workflow.js +0 -172
- package/dist/workflows/fix.workflow.js.map +0 -1
- package/dist/workflows/fix.workflow.test.js +0 -137
- package/dist/workflows/fix.workflow.test.js.map +0 -1
- package/dist/workflows/git-file-tools.js +0 -408
- package/dist/workflows/git-file-tools.js.map +0 -1
- package/dist/workflows/index.js +0 -12
- package/dist/workflows/index.js.map +0 -1
- package/dist/workflows/init-interactive.workflow.js +0 -198
- package/dist/workflows/init-interactive.workflow.js.map +0 -1
- package/dist/workflows/init.workflow.js +0 -41
- package/dist/workflows/init.workflow.js.map +0 -1
- package/dist/workflows/meta.workflow.js +0 -107
- package/dist/workflows/meta.workflow.js.map +0 -1
- package/dist/workflows/plan.workflow.js +0 -275
- package/dist/workflows/plan.workflow.js.map +0 -1
- package/dist/workflows/plan.workflow.test.js +0 -419
- package/dist/workflows/plan.workflow.test.js.map +0 -1
- package/dist/workflows/pr.workflow.js +0 -54
- package/dist/workflows/pr.workflow.js.map +0 -1
- package/dist/workflows/pr.workflow.test.js +0 -98
- package/dist/workflows/pr.workflow.test.js.map +0 -1
- package/dist/workflows/prompts/coder.js +0 -85
- package/dist/workflows/prompts/coder.js.map +0 -1
- package/dist/workflows/prompts/commit.js +0 -16
- package/dist/workflows/prompts/commit.js.map +0 -1
- package/dist/workflows/prompts/fix.js +0 -44
- package/dist/workflows/prompts/fix.js.map +0 -1
- package/dist/workflows/prompts/index.js +0 -10
- package/dist/workflows/prompts/index.js.map +0 -1
- package/dist/workflows/prompts/init.js +0 -48
- package/dist/workflows/prompts/init.js.map +0 -1
- package/dist/workflows/prompts/meta.js +0 -17
- package/dist/workflows/prompts/meta.js.map +0 -1
- package/dist/workflows/prompts/plan.js +0 -212
- package/dist/workflows/prompts/plan.js.map +0 -1
- package/dist/workflows/prompts/pr.js +0 -15
- package/dist/workflows/prompts/pr.js.map +0 -1
- package/dist/workflows/prompts/review.js +0 -145
- package/dist/workflows/prompts/review.js.map +0 -1
- package/dist/workflows/prompts/shared.js +0 -93
- package/dist/workflows/prompts/shared.js.map +0 -1
- package/dist/workflows/review.workflow.js +0 -357
- package/dist/workflows/review.workflow.js.map +0 -1
- package/dist/workflows/task.workflow.js +0 -47
- package/dist/workflows/task.workflow.js.map +0 -1
- package/dist/workflows/testing/helper.js +0 -41
- package/dist/workflows/testing/helper.js.map +0 -1
- package/dist/workflows/workflow.utils.js +0 -351
- package/dist/workflows/workflow.utils.js.map +0 -1
- package/dist/workflows/workflow.utils.test.js +0 -45
- package/dist/workflows/workflow.utils.test.js.map +0 -1
package/dist/mcp/sdk-client.js
DELETED
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
// generated by polka.codes
|
|
2
|
-
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
3
|
-
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
4
|
-
import { McpConnectionError, McpToolError } from './errors';
|
|
5
|
-
/**
|
|
6
|
-
* SDK-based MCP Client implementation
|
|
7
|
-
*
|
|
8
|
-
* Wraps the official @modelcontextprotocol/sdk Client to provide
|
|
9
|
-
* the IMcpClient interface used by the rest of polka-codes.
|
|
10
|
-
*/
|
|
11
|
-
export class SdkMcpClient {
|
|
12
|
-
serverName;
|
|
13
|
-
config;
|
|
14
|
-
client = null;
|
|
15
|
-
transport = null;
|
|
16
|
-
initialized = false;
|
|
17
|
-
constructor(serverName, config) {
|
|
18
|
-
this.serverName = serverName;
|
|
19
|
-
this.config = config;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Connect to the MCP server and initialize
|
|
23
|
-
*/
|
|
24
|
-
async connect() {
|
|
25
|
-
if (!this.config.command) {
|
|
26
|
-
throw new McpConnectionError(this.serverName, new Error('No command specified for MCP server'));
|
|
27
|
-
}
|
|
28
|
-
try {
|
|
29
|
-
// Create transport
|
|
30
|
-
this.transport = new StdioClientTransport({
|
|
31
|
-
command: this.config.command,
|
|
32
|
-
args: this.config.args || [],
|
|
33
|
-
env: this.config.env,
|
|
34
|
-
});
|
|
35
|
-
// Create client
|
|
36
|
-
this.client = new Client({
|
|
37
|
-
name: `polka-codes-${this.serverName}`,
|
|
38
|
-
version: '1.0.0',
|
|
39
|
-
}, {
|
|
40
|
-
capabilities: {},
|
|
41
|
-
});
|
|
42
|
-
// Connect and initialize (SDK handles initialization automatically)
|
|
43
|
-
await this.client.connect(this.transport);
|
|
44
|
-
this.initialized = true;
|
|
45
|
-
}
|
|
46
|
-
catch (error) {
|
|
47
|
-
throw new McpConnectionError(this.serverName, error instanceof Error ? error : new Error(String(error)));
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Check if connected
|
|
52
|
-
*/
|
|
53
|
-
isConnected() {
|
|
54
|
-
return this.initialized && this.client !== null;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Disconnect from the server
|
|
58
|
-
*/
|
|
59
|
-
async disconnect() {
|
|
60
|
-
if (this.client) {
|
|
61
|
-
await this.client.close();
|
|
62
|
-
this.client = null;
|
|
63
|
-
}
|
|
64
|
-
this.transport = null;
|
|
65
|
-
this.initialized = false;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* List available tools from the server
|
|
69
|
-
*/
|
|
70
|
-
async listTools() {
|
|
71
|
-
if (!this.client || !this.isConnected()) {
|
|
72
|
-
throw new McpConnectionError(this.serverName, new Error('Client not connected'));
|
|
73
|
-
}
|
|
74
|
-
try {
|
|
75
|
-
const response = await this.client.listTools({});
|
|
76
|
-
return response.tools.map((tool) => ({
|
|
77
|
-
name: tool.name,
|
|
78
|
-
description: tool.description || '',
|
|
79
|
-
inputSchema: tool.inputSchema,
|
|
80
|
-
}));
|
|
81
|
-
}
|
|
82
|
-
catch (error) {
|
|
83
|
-
throw new McpConnectionError(this.serverName, error instanceof Error ? error : new Error(String(error)));
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Call a tool on the server
|
|
88
|
-
*/
|
|
89
|
-
async callTool(name, args) {
|
|
90
|
-
if (!this.client || !this.isConnected()) {
|
|
91
|
-
throw new McpConnectionError(this.serverName, new Error('Client not connected'));
|
|
92
|
-
}
|
|
93
|
-
try {
|
|
94
|
-
const response = await this.client.callTool({
|
|
95
|
-
name,
|
|
96
|
-
arguments: args,
|
|
97
|
-
});
|
|
98
|
-
const content = 'content' in response ? response.content : [];
|
|
99
|
-
const textParts = content.filter((c) => c.type === 'text').map((c) => c.text);
|
|
100
|
-
const text = textParts.length > 0 ? textParts.join('\n') : JSON.stringify(response, null, 2);
|
|
101
|
-
return {
|
|
102
|
-
content: [
|
|
103
|
-
{
|
|
104
|
-
type: 'text',
|
|
105
|
-
text,
|
|
106
|
-
},
|
|
107
|
-
],
|
|
108
|
-
isError: ('isError' in response ? response.isError : undefined),
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
catch (error) {
|
|
112
|
-
// Errors from SDK are connection/protocol errors (tool errors are returned as isError: true)
|
|
113
|
-
if (error instanceof McpToolError) {
|
|
114
|
-
throw error;
|
|
115
|
-
}
|
|
116
|
-
// Wrap in connection error with context about which operation failed
|
|
117
|
-
const errorMessage = error instanceof Error ? `Failed to call tool '${name}': ${error.message}` : `Failed to call tool '${name}': ${String(error)}`;
|
|
118
|
-
throw new McpConnectionError(this.serverName, new Error(errorMessage));
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* List available resources from the server
|
|
123
|
-
*/
|
|
124
|
-
async listResources() {
|
|
125
|
-
if (!this.client || !this.isConnected()) {
|
|
126
|
-
throw new McpConnectionError(this.serverName, new Error('Client not connected'));
|
|
127
|
-
}
|
|
128
|
-
try {
|
|
129
|
-
const response = await this.client.listResources({});
|
|
130
|
-
return response.resources.map((resource) => ({
|
|
131
|
-
uri: resource.uri,
|
|
132
|
-
name: resource.name,
|
|
133
|
-
description: resource.description,
|
|
134
|
-
mimeType: resource.mimeType,
|
|
135
|
-
}));
|
|
136
|
-
}
|
|
137
|
-
catch (error) {
|
|
138
|
-
throw new McpConnectionError(this.serverName, error instanceof Error ? error : new Error(String(error)));
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Read a resource from the server
|
|
143
|
-
*/
|
|
144
|
-
async readResource(uri) {
|
|
145
|
-
if (!this.client || !this.isConnected()) {
|
|
146
|
-
throw new McpConnectionError(this.serverName, new Error('Client not connected'));
|
|
147
|
-
}
|
|
148
|
-
try {
|
|
149
|
-
const response = await this.client.readResource({ uri });
|
|
150
|
-
// Extract and join all text content from response
|
|
151
|
-
// ResourceContents has either 'text' or 'blob' property
|
|
152
|
-
const textParts = response.contents?.filter((c) => 'text' in c).map((c) => c.text) || [];
|
|
153
|
-
return textParts.length > 0 ? textParts.join('\n') : JSON.stringify(response, null, 2);
|
|
154
|
-
}
|
|
155
|
-
catch (error) {
|
|
156
|
-
throw new McpConnectionError(this.serverName, error instanceof Error ? error : new Error(String(error)));
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Get the server name
|
|
161
|
-
*/
|
|
162
|
-
getServerName() {
|
|
163
|
-
return this.serverName;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
//# sourceMappingURL=sdk-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-client.js","sourceRoot":"","sources":["../../src/mcp/sdk-client.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/shared-types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shared-types.js","sourceRoot":"","sources":["../../src/mcp/shared-types.ts"],"names":[],"mappings":"AAAA,2BAA2B"}
|
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
// Integration tests for MCP tools
|
|
2
|
-
// generated by polka.codes
|
|
3
|
-
import { describe, expect, test } from 'bun:test';
|
|
4
|
-
import { z } from 'zod';
|
|
5
|
-
import { adaptMcpSchemaToZod, createMcpTools, getMcpToolNames } from './tools';
|
|
6
|
-
describe('MCP Tools - Integration Tests', () => {
|
|
7
|
-
describe('adaptMcpSchemaToZod', () => {
|
|
8
|
-
test('should handle Zod schemas correctly', () => {
|
|
9
|
-
const zodSchema = z.object({
|
|
10
|
-
name: z.string(),
|
|
11
|
-
age: z.number().optional(),
|
|
12
|
-
});
|
|
13
|
-
const result = adaptMcpSchemaToZod(zodSchema);
|
|
14
|
-
// Should return the same Zod schema
|
|
15
|
-
expect(result).toBe(zodSchema);
|
|
16
|
-
});
|
|
17
|
-
test('should handle JSON Schema objects', () => {
|
|
18
|
-
const jsonSchema = {
|
|
19
|
-
type: 'object',
|
|
20
|
-
properties: {
|
|
21
|
-
name: { type: 'string' },
|
|
22
|
-
age: { type: 'number' },
|
|
23
|
-
},
|
|
24
|
-
required: ['name'],
|
|
25
|
-
};
|
|
26
|
-
const result = adaptMcpSchemaToZod(jsonSchema);
|
|
27
|
-
// Should return a valid Zod schema
|
|
28
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
29
|
-
});
|
|
30
|
-
test('should handle plain Record objects', () => {
|
|
31
|
-
const plainRecord = {
|
|
32
|
-
foo: 'bar',
|
|
33
|
-
baz: 123,
|
|
34
|
-
};
|
|
35
|
-
const result = adaptMcpSchemaToZod(plainRecord);
|
|
36
|
-
// Should return a flexible Zod schema
|
|
37
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
38
|
-
// Should validate various inputs
|
|
39
|
-
const validResult = result.safeParse({ key: 'value' });
|
|
40
|
-
expect(validResult.success).toBe(true);
|
|
41
|
-
});
|
|
42
|
-
test('should handle null and undefined', () => {
|
|
43
|
-
const nullResult = adaptMcpSchemaToZod(null);
|
|
44
|
-
expect(nullResult).toBeInstanceOf(z.ZodType);
|
|
45
|
-
const undefinedResult = adaptMcpSchemaToZod(undefined);
|
|
46
|
-
expect(undefinedResult).toBeInstanceOf(z.ZodType);
|
|
47
|
-
});
|
|
48
|
-
test('should handle primitive values', () => {
|
|
49
|
-
const stringResult = adaptMcpSchemaToZod('string');
|
|
50
|
-
expect(stringResult).toBeInstanceOf(z.ZodType);
|
|
51
|
-
const numberResult = adaptMcpSchemaToZod(123);
|
|
52
|
-
expect(numberResult).toBeInstanceOf(z.ZodType);
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
describe('createMcpTools', () => {
|
|
56
|
-
test('should create empty tool set when no tools available', () => {
|
|
57
|
-
const mockManager = {
|
|
58
|
-
getAllTools: () => new Map(),
|
|
59
|
-
};
|
|
60
|
-
const result = createMcpTools(mockManager);
|
|
61
|
-
expect(result).toEqual({});
|
|
62
|
-
});
|
|
63
|
-
test('should create tools with Zod schemas', () => {
|
|
64
|
-
const zodSchema = z.object({
|
|
65
|
-
input: z.string(),
|
|
66
|
-
});
|
|
67
|
-
const mockManager = {
|
|
68
|
-
getAllTools: () => new Map([
|
|
69
|
-
[
|
|
70
|
-
'test-server/test-tool',
|
|
71
|
-
{
|
|
72
|
-
tool: {
|
|
73
|
-
name: 'test-tool',
|
|
74
|
-
description: 'A test tool',
|
|
75
|
-
inputSchema: zodSchema,
|
|
76
|
-
},
|
|
77
|
-
},
|
|
78
|
-
],
|
|
79
|
-
]),
|
|
80
|
-
};
|
|
81
|
-
const result = createMcpTools(mockManager);
|
|
82
|
-
expect(result['test-server/test-tool']).toBeDefined();
|
|
83
|
-
expect(result['test-server/test-tool'].description).toBe('A test tool');
|
|
84
|
-
expect(result['test-server/test-tool'].inputSchema).toBe(zodSchema);
|
|
85
|
-
});
|
|
86
|
-
test('should create tools with JSON Schema objects', () => {
|
|
87
|
-
const jsonSchema = {
|
|
88
|
-
type: 'object',
|
|
89
|
-
properties: {
|
|
90
|
-
input: { type: 'string' },
|
|
91
|
-
},
|
|
92
|
-
};
|
|
93
|
-
const mockManager = {
|
|
94
|
-
getAllTools: () => new Map([
|
|
95
|
-
[
|
|
96
|
-
'test-server/json-tool',
|
|
97
|
-
{
|
|
98
|
-
tool: {
|
|
99
|
-
name: 'json-tool',
|
|
100
|
-
description: 'A JSON schema tool',
|
|
101
|
-
inputSchema: jsonSchema,
|
|
102
|
-
},
|
|
103
|
-
},
|
|
104
|
-
],
|
|
105
|
-
]),
|
|
106
|
-
};
|
|
107
|
-
const result = createMcpTools(mockManager);
|
|
108
|
-
expect(result['test-server/json-tool']).toBeDefined();
|
|
109
|
-
expect(result['test-server/json-tool'].description).toBe('A JSON schema tool');
|
|
110
|
-
expect(result['test-server/json-tool'].inputSchema).toBeInstanceOf(z.ZodType);
|
|
111
|
-
});
|
|
112
|
-
test('should use default description when none provided', () => {
|
|
113
|
-
const mockManager = {
|
|
114
|
-
getAllTools: () => new Map([
|
|
115
|
-
[
|
|
116
|
-
'test-server/no-desc-tool',
|
|
117
|
-
{
|
|
118
|
-
tool: {
|
|
119
|
-
name: 'no-desc-tool',
|
|
120
|
-
description: '',
|
|
121
|
-
inputSchema: z.object({}),
|
|
122
|
-
},
|
|
123
|
-
},
|
|
124
|
-
],
|
|
125
|
-
]),
|
|
126
|
-
};
|
|
127
|
-
const result = createMcpTools(mockManager);
|
|
128
|
-
expect(result['test-server/no-desc-tool'].description).toBe('MCP tool: no-desc-tool');
|
|
129
|
-
});
|
|
130
|
-
test('should execute tools through manager', async () => {
|
|
131
|
-
let capturedToolName;
|
|
132
|
-
const mockCallTool = async (toolName, _args) => {
|
|
133
|
-
capturedToolName = toolName;
|
|
134
|
-
return { result: 'success' };
|
|
135
|
-
};
|
|
136
|
-
const mockManager = {
|
|
137
|
-
getAllTools: () => new Map([
|
|
138
|
-
[
|
|
139
|
-
'test-server/executable-tool',
|
|
140
|
-
{
|
|
141
|
-
tool: {
|
|
142
|
-
name: 'executable-tool',
|
|
143
|
-
description: 'An executable tool',
|
|
144
|
-
inputSchema: z.object({ input: z.string() }),
|
|
145
|
-
},
|
|
146
|
-
},
|
|
147
|
-
],
|
|
148
|
-
]),
|
|
149
|
-
callTool: mockCallTool,
|
|
150
|
-
};
|
|
151
|
-
const result = createMcpTools(mockManager);
|
|
152
|
-
const tool = result['test-server/executable-tool'];
|
|
153
|
-
expect(tool).toBeDefined();
|
|
154
|
-
expect(tool).toHaveProperty('execute');
|
|
155
|
-
// Call execute and verify it calls the manager
|
|
156
|
-
const execute = tool.execute;
|
|
157
|
-
const toolResult = await execute({ input: 'test' });
|
|
158
|
-
expect(capturedToolName).toBe('test-server/executable-tool');
|
|
159
|
-
expect(toolResult).toEqual({ result: 'success' });
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
describe('getMcpToolNames', () => {
|
|
163
|
-
test('should return all tool names when no server specified', () => {
|
|
164
|
-
const mockManager = {
|
|
165
|
-
getAllTools: () => new Map([
|
|
166
|
-
['server1/tool1', { tool: { name: 'tool1' } }],
|
|
167
|
-
['server1/tool2', { tool: { name: 'tool2' } }],
|
|
168
|
-
['server2/tool3', { tool: { name: 'tool3' } }],
|
|
169
|
-
]),
|
|
170
|
-
};
|
|
171
|
-
const result = getMcpToolNames(mockManager);
|
|
172
|
-
expect(result).toEqual(['server1/tool1', 'server1/tool2', 'server2/tool3']);
|
|
173
|
-
});
|
|
174
|
-
test('should return server-specific tools when server specified', () => {
|
|
175
|
-
const mockManager = {
|
|
176
|
-
getServerTools: (serverName) => {
|
|
177
|
-
if (serverName === 'server1') {
|
|
178
|
-
return new Map([
|
|
179
|
-
['tool1', { tool: { name: 'tool1' } }],
|
|
180
|
-
['tool2', { tool: { name: 'tool2' } }],
|
|
181
|
-
]);
|
|
182
|
-
}
|
|
183
|
-
return new Map();
|
|
184
|
-
},
|
|
185
|
-
};
|
|
186
|
-
const result = getMcpToolNames(mockManager, 'server1');
|
|
187
|
-
expect(result).toEqual(['tool1', 'tool2']);
|
|
188
|
-
});
|
|
189
|
-
test('should return empty array for non-existent server', () => {
|
|
190
|
-
const mockManager = {
|
|
191
|
-
getServerTools: () => new Map(),
|
|
192
|
-
};
|
|
193
|
-
const result = getMcpToolNames(mockManager, 'non-existent');
|
|
194
|
-
expect(result).toEqual([]);
|
|
195
|
-
});
|
|
196
|
-
});
|
|
197
|
-
});
|
|
198
|
-
//# sourceMappingURL=tools-integration.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tools-integration.test.js","sourceRoot":"","sources":["../../src/mcp/tools-integration.test.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/tools.js
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
// generated by polka.codes
|
|
2
|
-
import { z } from 'zod';
|
|
3
|
-
/**
|
|
4
|
-
* Validate and convert MCP input schema to Zod schema
|
|
5
|
-
*
|
|
6
|
-
* This function handles the type conversion between MCP tool schemas (which can be
|
|
7
|
-
* JSON Schema or Zod schemas) and the AI SDK's expected Zod schema format.
|
|
8
|
-
*
|
|
9
|
-
* The conversion is necessary because:
|
|
10
|
-
* 1. MCP tools can have either JSON Schema or Zod schemas as inputSchema
|
|
11
|
-
* 2. AI SDK expects Zod schemas for tool validation
|
|
12
|
-
* 3. We need to ensure type safety while handling both formats
|
|
13
|
-
*
|
|
14
|
-
* @param schema - The MCP tool input schema (JSON Schema, Zod schema, or Record)
|
|
15
|
-
* @returns A Zod schema compatible with AI SDK
|
|
16
|
-
*/
|
|
17
|
-
export function adaptMcpSchemaToZod(schema) {
|
|
18
|
-
// If it's already a Zod schema (has safeParse method), return it directly
|
|
19
|
-
if (typeof schema === 'object' && schema !== null && 'safeParse' in schema && typeof schema.safeParse === 'function') {
|
|
20
|
-
return schema;
|
|
21
|
-
}
|
|
22
|
-
// If it's a plain JSON Schema object or Record, wrap it in a dynamic schema
|
|
23
|
-
// This allows the MCP server to handle validation
|
|
24
|
-
if (typeof schema === 'object' && schema !== null) {
|
|
25
|
-
// Create a Zod schema that accepts any object and passes validation through
|
|
26
|
-
// The actual validation will be done by the MCP server
|
|
27
|
-
return z.record(z.string(), z.any()).or(z.object({}).passthrough());
|
|
28
|
-
}
|
|
29
|
-
// Fallback: accept any input and let MCP server validate
|
|
30
|
-
return z.any();
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Create AI SDK tools from MCP server connections
|
|
34
|
-
*/
|
|
35
|
-
export function createMcpTools(mcpManager) {
|
|
36
|
-
const tools = {};
|
|
37
|
-
const allMcpTools = mcpManager.getAllTools();
|
|
38
|
-
for (const [fullToolName, { tool }] of allMcpTools) {
|
|
39
|
-
tools[fullToolName] = {
|
|
40
|
-
description: tool.description || `MCP tool: ${tool.name}`,
|
|
41
|
-
inputSchema: adaptMcpSchemaToZod(tool.inputSchema),
|
|
42
|
-
execute: async (args) => {
|
|
43
|
-
return await mcpManager.callTool(fullToolName, args);
|
|
44
|
-
},
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
return tools;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Get list of MCP tool names for a given server
|
|
51
|
-
*/
|
|
52
|
-
export function getMcpToolNames(mcpManager, serverName) {
|
|
53
|
-
if (serverName) {
|
|
54
|
-
const serverTools = mcpManager.getServerTools(serverName);
|
|
55
|
-
return Array.from(serverTools.keys());
|
|
56
|
-
}
|
|
57
|
-
const allTools = mcpManager.getAllTools();
|
|
58
|
-
return Array.from(allTools.keys());
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=tools.js.map
|
package/dist/mcp/tools.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAG3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAe;IACjD,0EAA0E;IAC1E,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,WAAW,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;QACrH,OAAO,MAAsB,CAAA;IAC/B,CAAC;IAED,4EAA4E;IAC5E,kDAAkD;IAClD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClD,4EAA4E;QAC5E,uDAAuD;QACvD,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;IACrE,CAAC;IAED,yDAAyD;IACzD,OAAO,CAAC,CAAC,GAAG,EAAE,CAAA;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,UAAsB;IACnD,MAAM,KAAK,GAAY,EAAE,CAAA;IAEzB,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,EAAE,CAAA;IAE5C,KAAK,MAAM,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;QACnD,KAAK,CAAC,YAAY,CAAC,GAAG;YACpB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,aAAa,IAAI,CAAC,IAAI,EAAE;YACzD,WAAW,EAAE,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC;YAClD,OAAO,EAAE,KAAK,EAAE,IAA6B,EAAE,EAAE;gBAC/C,OAAO,MAAM,UAAU,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;YACtD,CAAC;SACF,CAAA;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,UAAsB,EAAE,UAAmB;IACzE,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;QACzD,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAE,CAAA;IACzC,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;AACpC,CAAC"}
|