@polka-codes/cli 0.10.23 → 0.10.25
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/bin.cjs +143854 -0
- package/dist/bin.d.ts +2 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9201 -9195
- package/dist/program.d.ts +3 -0
- package/dist/program.d.ts.map +1 -0
- package/package.json +6 -7
- package/cli.mjs +0 -2
- 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
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
// Error scenario 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 } from './tools';
|
|
6
|
-
describe('MCP Tools - Error Scenarios', () => {
|
|
7
|
-
describe('adaptMcpSchemaToZod - Error Handling', () => {
|
|
8
|
-
test('should handle malformed schemas gracefully', () => {
|
|
9
|
-
const malformedSchema = {
|
|
10
|
-
type: 'invalid-type',
|
|
11
|
-
properties: null,
|
|
12
|
-
};
|
|
13
|
-
const result = adaptMcpSchemaToZod(malformedSchema);
|
|
14
|
-
// Should still return a valid Zod schema
|
|
15
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
16
|
-
// Should accept various inputs without throwing
|
|
17
|
-
const validResult = result.safeParse({ any: 'input' });
|
|
18
|
-
expect(validResult.success).toBe(true);
|
|
19
|
-
});
|
|
20
|
-
test('should handle circular references', () => {
|
|
21
|
-
const circular = { type: 'object' };
|
|
22
|
-
circular.self = circular;
|
|
23
|
-
const result = adaptMcpSchemaToZod(circular);
|
|
24
|
-
// Should not throw and should return a valid Zod schema
|
|
25
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
26
|
-
});
|
|
27
|
-
test('should handle arrays as schemas', () => {
|
|
28
|
-
const arraySchema = [{ type: 'string' }, { type: 'number' }];
|
|
29
|
-
const result = adaptMcpSchemaToZod(arraySchema);
|
|
30
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
31
|
-
});
|
|
32
|
-
test('should handle deeply nested objects', () => {
|
|
33
|
-
const deepSchema = {
|
|
34
|
-
level1: {
|
|
35
|
-
level2: {
|
|
36
|
-
level3: {
|
|
37
|
-
level4: {
|
|
38
|
-
type: 'string',
|
|
39
|
-
},
|
|
40
|
-
},
|
|
41
|
-
},
|
|
42
|
-
},
|
|
43
|
-
};
|
|
44
|
-
const result = adaptMcpSchemaToZod(deepSchema);
|
|
45
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
46
|
-
});
|
|
47
|
-
test('should handle schemas with special characters in keys', () => {
|
|
48
|
-
const specialKeySchema = {
|
|
49
|
-
'key-with-dash': { type: 'string' },
|
|
50
|
-
key_with_underscore: { type: 'number' },
|
|
51
|
-
'key.with.dots': { type: 'boolean' },
|
|
52
|
-
'key with spaces': { type: 'string' },
|
|
53
|
-
};
|
|
54
|
-
const result = adaptMcpSchemaToZod(specialKeySchema);
|
|
55
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
56
|
-
});
|
|
57
|
-
test('should handle empty schemas', () => {
|
|
58
|
-
const emptySchema = {};
|
|
59
|
-
const result = adaptMcpSchemaToZod(emptySchema);
|
|
60
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
61
|
-
// Should validate empty object
|
|
62
|
-
const validResult = result.safeParse({});
|
|
63
|
-
expect(validResult.success).toBe(true);
|
|
64
|
-
});
|
|
65
|
-
test('should handle schemas with conflicting types', () => {
|
|
66
|
-
const conflictSchema = {
|
|
67
|
-
type: ['string', 'number', 'boolean'],
|
|
68
|
-
properties: {
|
|
69
|
-
field1: { type: 'string' },
|
|
70
|
-
field2: { type: 'number' },
|
|
71
|
-
},
|
|
72
|
-
};
|
|
73
|
-
const result = adaptMcpSchemaToZod(conflictSchema);
|
|
74
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
75
|
-
});
|
|
76
|
-
test('should handle very large schemas', () => {
|
|
77
|
-
const largeSchema = {
|
|
78
|
-
type: 'object',
|
|
79
|
-
properties: {},
|
|
80
|
-
};
|
|
81
|
-
// Create 100 properties
|
|
82
|
-
for (let i = 0; i < 100; i++) {
|
|
83
|
-
largeSchema.properties[`field${i}`] = { type: 'string' };
|
|
84
|
-
}
|
|
85
|
-
const result = adaptMcpSchemaToZod(largeSchema);
|
|
86
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
87
|
-
});
|
|
88
|
-
test('should handle schemas with enum values', () => {
|
|
89
|
-
const enumSchema = {
|
|
90
|
-
type: 'string',
|
|
91
|
-
enum: ['value1', 'value2', 'value3'],
|
|
92
|
-
};
|
|
93
|
-
const result = adaptMcpSchemaToZod(enumSchema);
|
|
94
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
95
|
-
// Our adapter creates a flexible schema (record or passthrough object)
|
|
96
|
-
// that works with various input types since it can't fully parse JSON Schema
|
|
97
|
-
// The actual enum validation happens on the MCP server side
|
|
98
|
-
const objectResult = result.safeParse({ any: 'input' });
|
|
99
|
-
expect(objectResult.success).toBe(true);
|
|
100
|
-
});
|
|
101
|
-
test('should handle Zod schemas with complex transformations', () => {
|
|
102
|
-
const complexZodSchema = z
|
|
103
|
-
.object({
|
|
104
|
-
email: z.string().email(),
|
|
105
|
-
age: z.number().min(0).max(120),
|
|
106
|
-
name: z.string().min(1),
|
|
107
|
-
})
|
|
108
|
-
.transform((data) => ({
|
|
109
|
-
...data,
|
|
110
|
-
formatted: `${data.name} (${data.email})`,
|
|
111
|
-
}));
|
|
112
|
-
const result = adaptMcpSchemaToZod(complexZodSchema);
|
|
113
|
-
// Should detect it's a Zod schema and return it
|
|
114
|
-
expect(result).toBe(complexZodSchema);
|
|
115
|
-
});
|
|
116
|
-
test('should handle schemas with regex patterns', () => {
|
|
117
|
-
const regexSchema = {
|
|
118
|
-
type: 'string',
|
|
119
|
-
pattern: '^[a-zA-Z0-9]+$',
|
|
120
|
-
};
|
|
121
|
-
const result = adaptMcpSchemaToZod(regexSchema);
|
|
122
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
123
|
-
});
|
|
124
|
-
test('should handle schemas with $schema reference', () => {
|
|
125
|
-
const draft7Schema = {
|
|
126
|
-
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
127
|
-
type: 'object',
|
|
128
|
-
properties: {
|
|
129
|
-
name: { type: 'string' },
|
|
130
|
-
},
|
|
131
|
-
};
|
|
132
|
-
const result = adaptMcpSchemaToZod(draft7Schema);
|
|
133
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
134
|
-
});
|
|
135
|
-
test('should handle schemas with allOf', () => {
|
|
136
|
-
const allOfSchema = {
|
|
137
|
-
allOf: [
|
|
138
|
-
{ type: 'object', properties: { a: { type: 'string' } } },
|
|
139
|
-
{ type: 'object', properties: { b: { type: 'number' } } },
|
|
140
|
-
],
|
|
141
|
-
};
|
|
142
|
-
const result = adaptMcpSchemaToZod(allOfSchema);
|
|
143
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
144
|
-
});
|
|
145
|
-
test('should handle schemas with anyOf', () => {
|
|
146
|
-
const anyOfSchema = {
|
|
147
|
-
anyOf: [{ type: 'string' }, { type: 'number' }, { type: 'boolean' }],
|
|
148
|
-
};
|
|
149
|
-
const result = adaptMcpSchemaToZod(anyOfSchema);
|
|
150
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
151
|
-
});
|
|
152
|
-
test('should handle schemas with oneOf', () => {
|
|
153
|
-
const oneOfSchema = {
|
|
154
|
-
oneOf: [
|
|
155
|
-
{ type: 'string', enum: ['a', 'b'] },
|
|
156
|
-
{ type: 'number', minimum: 0 },
|
|
157
|
-
],
|
|
158
|
-
};
|
|
159
|
-
const result = adaptMcpSchemaToZod(oneOfSchema);
|
|
160
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
161
|
-
});
|
|
162
|
-
});
|
|
163
|
-
describe('Edge Cases', () => {
|
|
164
|
-
test('should handle functions as schemas (unusual but possible)', () => {
|
|
165
|
-
const functionSchema = () => ({ type: 'string' });
|
|
166
|
-
const result = adaptMcpSchemaToZod(functionSchema);
|
|
167
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
168
|
-
});
|
|
169
|
-
test('should handle Date objects', () => {
|
|
170
|
-
const dateSchema = new Date();
|
|
171
|
-
const result = adaptMcpSchemaToZod(dateSchema);
|
|
172
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
173
|
-
});
|
|
174
|
-
test('should handle Buffer objects', () => {
|
|
175
|
-
const bufferSchema = Buffer.from('test');
|
|
176
|
-
const result = adaptMcpSchemaToZod(bufferSchema);
|
|
177
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
178
|
-
});
|
|
179
|
-
test('should handle schema with null properties', () => {
|
|
180
|
-
const nullPropsSchema = {
|
|
181
|
-
type: 'object',
|
|
182
|
-
properties: {
|
|
183
|
-
validField: { type: 'string' },
|
|
184
|
-
nullField: null,
|
|
185
|
-
undefinedField: undefined,
|
|
186
|
-
},
|
|
187
|
-
};
|
|
188
|
-
const result = adaptMcpSchemaToZod(nullPropsSchema);
|
|
189
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
190
|
-
});
|
|
191
|
-
test('should handle schema with getter/setter', () => {
|
|
192
|
-
const accessorSchema = {
|
|
193
|
-
type: 'object',
|
|
194
|
-
get dynamicField() {
|
|
195
|
-
return 'string';
|
|
196
|
-
},
|
|
197
|
-
set dynamicField(_value) {
|
|
198
|
-
// noop
|
|
199
|
-
},
|
|
200
|
-
};
|
|
201
|
-
const result = adaptMcpSchemaToZod(accessorSchema);
|
|
202
|
-
expect(result).toBeInstanceOf(z.ZodType);
|
|
203
|
-
});
|
|
204
|
-
});
|
|
205
|
-
});
|
|
206
|
-
//# sourceMappingURL=error-scenarios.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-scenarios.test.js","sourceRoot":"","sources":["../../src/mcp/error-scenarios.test.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/errors.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
// generated by polka.codes
|
|
2
|
-
/**
|
|
3
|
-
* Base class for MCP-specific errors
|
|
4
|
-
*/
|
|
5
|
-
export class McpError extends Error {
|
|
6
|
-
serverName;
|
|
7
|
-
retryable;
|
|
8
|
-
constructor(serverName, message, retryable) {
|
|
9
|
-
super(message);
|
|
10
|
-
this.name = this.constructor.name;
|
|
11
|
-
this.serverName = serverName;
|
|
12
|
-
this.retryable = retryable;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Error when MCP server fails to start or connect
|
|
17
|
-
*/
|
|
18
|
-
export class McpConnectionError extends McpError {
|
|
19
|
-
cause;
|
|
20
|
-
constructor(serverName, cause) {
|
|
21
|
-
super(serverName, `Failed to connect to MCP server '${serverName}'. Please check the server configuration and ensure it is available.`, false);
|
|
22
|
-
this.cause = cause;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Error when MCP server times out
|
|
27
|
-
*/
|
|
28
|
-
export class McpTimeoutError extends McpError {
|
|
29
|
-
timeoutSeconds;
|
|
30
|
-
constructor(serverName, timeoutSeconds) {
|
|
31
|
-
super(serverName, `MCP server '${serverName}' timed out after ${timeoutSeconds} seconds. The server may be slow or unresponsive.`, true);
|
|
32
|
-
this.timeoutSeconds = timeoutSeconds;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Error when MCP protocol is violated
|
|
37
|
-
*/
|
|
38
|
-
export class McpProtocolError extends McpError {
|
|
39
|
-
constructor(serverName, message) {
|
|
40
|
-
super(serverName, `MCP protocol error with server '${serverName}': ${message}`, false);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Error when MCP tool call fails
|
|
45
|
-
*/
|
|
46
|
-
export class McpToolError extends McpError {
|
|
47
|
-
toolName;
|
|
48
|
-
cause;
|
|
49
|
-
constructor(serverName, toolName, message, cause) {
|
|
50
|
-
super(serverName, `Tool '${toolName}' on server '${serverName}' failed: ${message}`, false);
|
|
51
|
-
this.toolName = toolName;
|
|
52
|
-
this.cause = cause;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Error when MCP server is not found
|
|
57
|
-
*/
|
|
58
|
-
export class McpServerError extends McpError {
|
|
59
|
-
constructor(serverName) {
|
|
60
|
-
super(serverName, `MCP server '${serverName}' not found in configuration.`, false);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=errors.js.map
|
package/dist/mcp/errors.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/mcp/errors.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAE3B;;GAEG;AACH,MAAM,OAAgB,QAAS,SAAQ,KAAK;IAC1B,UAAU,CAAQ;IAClB,SAAS,CAAS;IAElC,YAAY,UAAkB,EAAE,OAAe,EAAE,SAAkB;QACjE,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;QACjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,QAAQ;IAG5B;IAFlB,YACE,UAAkB,EACF,KAAa;QAE7B,KAAK,CACH,UAAU,EACV,oCAAoC,UAAU,sEAAsE,EACpH,KAAK,CACN,CAAA;QANe,UAAK,GAAL,KAAK,CAAQ;IAO/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAGzB;IAFlB,YACE,UAAkB,EACF,cAAsB;QAEtC,KAAK,CAAC,UAAU,EAAE,eAAe,UAAU,qBAAqB,cAAc,mDAAmD,EAAE,IAAI,CAAC,CAAA;QAFxH,mBAAc,GAAd,cAAc,CAAQ;IAGxC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;IAC5C,YAAY,UAAkB,EAAE,OAAe;QAC7C,KAAK,CAAC,UAAU,EAAE,mCAAmC,UAAU,MAAM,OAAO,EAAE,EAAE,KAAK,CAAC,CAAA;IACxF,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,QAAQ;IAGtB;IAEA;IAJlB,YACE,UAAkB,EACF,QAAgB,EAChC,OAAe,EACC,KAAa;QAE7B,KAAK,CAAC,UAAU,EAAE,SAAS,QAAQ,gBAAgB,UAAU,aAAa,OAAO,EAAE,EAAE,KAAK,CAAC,CAAA;QAJ3E,aAAQ,GAAR,QAAQ,CAAQ;QAEhB,UAAK,GAAL,KAAK,CAAQ;IAG/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAC1C,YAAY,UAAkB;QAC5B,KAAK,CAAC,UAAU,EAAE,eAAe,UAAU,+BAA+B,EAAE,KAAK,CAAC,CAAA;IACpF,CAAC;CACF"}
|
package/dist/mcp/index.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
// generated by polka.codes
|
|
2
|
-
export * from './client';
|
|
3
|
-
export * from './errors';
|
|
4
|
-
export * from './manager';
|
|
5
|
-
export * from './shared-types';
|
|
6
|
-
export * from './tools';
|
|
7
|
-
export * from './transport';
|
|
8
|
-
export * from './types';
|
|
9
|
-
//# sourceMappingURL=index.js.map
|
package/dist/mcp/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAE3B,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA"}
|
package/dist/mcp/manager.js
DELETED
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
// generated by polka.codes
|
|
2
|
-
import { convertJsonSchemaToZod } from '@polka-codes/core';
|
|
3
|
-
import { createMcpClient } from './client';
|
|
4
|
-
import { McpConnectionError, McpServerError } from './errors';
|
|
5
|
-
/**
|
|
6
|
-
* Manages MCP server connections and tools
|
|
7
|
-
*/
|
|
8
|
-
export class McpManager {
|
|
9
|
-
logger;
|
|
10
|
-
connections = new Map();
|
|
11
|
-
tools = new Map();
|
|
12
|
-
constructor(logger) {
|
|
13
|
-
this.logger = logger;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Connect to all configured MCP servers
|
|
17
|
-
*/
|
|
18
|
-
async connectToServers(servers) {
|
|
19
|
-
for (const [serverName, serverConfig] of Object.entries(servers)) {
|
|
20
|
-
try {
|
|
21
|
-
await this.connectToServer(serverName, serverConfig);
|
|
22
|
-
}
|
|
23
|
-
catch (error) {
|
|
24
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
25
|
-
if (this.logger) {
|
|
26
|
-
this.logger.warn(`Failed to connect to MCP server '${serverName}': ${errorMessage}`);
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
console.warn(`Failed to connect to MCP server '${serverName}': ${errorMessage}`);
|
|
30
|
-
}
|
|
31
|
-
// Continue connecting to other servers even if one fails
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Connect to a single MCP server
|
|
37
|
-
*/
|
|
38
|
-
async connectToServer(serverName, serverConfig) {
|
|
39
|
-
if (this.connections.has(serverName)) {
|
|
40
|
-
if (this.logger) {
|
|
41
|
-
this.logger.warn(`MCP server '${serverName}' is already connected`);
|
|
42
|
-
}
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
if (!serverConfig.command) {
|
|
46
|
-
throw new McpConnectionError(serverName, new Error('No command specified for MCP server'));
|
|
47
|
-
}
|
|
48
|
-
try {
|
|
49
|
-
const client = await createMcpClient(serverName, {
|
|
50
|
-
command: serverConfig.command,
|
|
51
|
-
args: serverConfig.args,
|
|
52
|
-
env: serverConfig.env,
|
|
53
|
-
});
|
|
54
|
-
this.connections.set(serverName, client);
|
|
55
|
-
// List available tools from the server
|
|
56
|
-
const serverTools = await client.listTools();
|
|
57
|
-
// Register tools
|
|
58
|
-
for (const tool of serverTools) {
|
|
59
|
-
const fullToolName = `${serverName}/${tool.name}`;
|
|
60
|
-
this.tools.set(fullToolName, { serverName, tool });
|
|
61
|
-
}
|
|
62
|
-
if (this.logger) {
|
|
63
|
-
this.logger.info(`Connected to MCP server '${serverName}' with ${serverTools.length} tools`);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
throw new McpConnectionError(serverName, error instanceof Error ? error : new Error(String(error)));
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Disconnect from all MCP servers
|
|
72
|
-
*/
|
|
73
|
-
async disconnectAll() {
|
|
74
|
-
const disconnectPromises = [];
|
|
75
|
-
for (const [serverName, client] of this.connections.entries()) {
|
|
76
|
-
disconnectPromises.push(client.disconnect().catch((error) => {
|
|
77
|
-
if (this.logger) {
|
|
78
|
-
this.logger.warn(`Error disconnecting from MCP server '${serverName}': ${error}`);
|
|
79
|
-
}
|
|
80
|
-
}));
|
|
81
|
-
}
|
|
82
|
-
await Promise.all(disconnectPromises);
|
|
83
|
-
this.connections.clear();
|
|
84
|
-
this.tools.clear();
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Disconnect from a specific MCP server
|
|
88
|
-
*/
|
|
89
|
-
async disconnectServer(serverName) {
|
|
90
|
-
const client = this.connections.get(serverName);
|
|
91
|
-
if (!client) {
|
|
92
|
-
throw new McpServerError(serverName);
|
|
93
|
-
}
|
|
94
|
-
await client.disconnect();
|
|
95
|
-
this.connections.delete(serverName);
|
|
96
|
-
// Remove tools from this server
|
|
97
|
-
for (const [toolName, { serverName: s }] of this.tools.entries()) {
|
|
98
|
-
if (s === serverName) {
|
|
99
|
-
this.tools.delete(toolName);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Get all available tools from all connected MCP servers
|
|
105
|
-
*/
|
|
106
|
-
getAllTools() {
|
|
107
|
-
return new Map(this.tools);
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Get tools from a specific server
|
|
111
|
-
*/
|
|
112
|
-
getServerTools(serverName) {
|
|
113
|
-
const serverTools = new Map();
|
|
114
|
-
for (const [toolName, { serverName: s, tool }] of this.tools.entries()) {
|
|
115
|
-
if (s === serverName) {
|
|
116
|
-
serverTools.set(toolName, tool);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
return serverTools;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Call a tool on an MCP server
|
|
123
|
-
*/
|
|
124
|
-
async callTool(fullToolName, args) {
|
|
125
|
-
const toolInfo = this.tools.get(fullToolName);
|
|
126
|
-
if (!toolInfo) {
|
|
127
|
-
throw new Error(`Tool '${fullToolName}' not found`);
|
|
128
|
-
}
|
|
129
|
-
const { serverName, tool } = toolInfo;
|
|
130
|
-
const client = this.connections.get(serverName);
|
|
131
|
-
if (!client) {
|
|
132
|
-
throw new McpServerError(serverName);
|
|
133
|
-
}
|
|
134
|
-
const result = await client.callTool(tool.name, args);
|
|
135
|
-
// Check if the tool call returned an error
|
|
136
|
-
if (result.isError) {
|
|
137
|
-
throw new Error(`Tool '${fullToolName}' returned an error: ${JSON.stringify(result.content)}`);
|
|
138
|
-
}
|
|
139
|
-
// Return the text content from the tool result
|
|
140
|
-
if (result.content && result.content.length > 0) {
|
|
141
|
-
const textParts = result.content.filter((c) => c.type === 'text').map((c) => c.text);
|
|
142
|
-
return textParts.join('\n');
|
|
143
|
-
}
|
|
144
|
-
return undefined;
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Check if a tool exists
|
|
148
|
-
*/
|
|
149
|
-
hasTool(toolName) {
|
|
150
|
-
return this.tools.has(toolName);
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Get tool information
|
|
154
|
-
*/
|
|
155
|
-
getTool(toolName) {
|
|
156
|
-
return this.tools.get(toolName);
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* List all connected servers
|
|
160
|
-
*/
|
|
161
|
-
listConnectedServers() {
|
|
162
|
-
return Array.from(this.connections.keys());
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Check if a server is connected
|
|
166
|
-
*/
|
|
167
|
-
isServerConnected(serverName) {
|
|
168
|
-
return this.connections.has(serverName);
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Convert MCP tools to FullToolInfo format for use in workflows
|
|
172
|
-
* This allows MCP tools to be exposed to AI agents
|
|
173
|
-
*/
|
|
174
|
-
getFullToolInfos() {
|
|
175
|
-
const toolInfos = [];
|
|
176
|
-
for (const [fullToolName, { tool }] of this.tools.entries()) {
|
|
177
|
-
// Convert the MCP tool's inputSchema to a Zod schema
|
|
178
|
-
// MCP tools use JSON Schema, we need to convert to Zod
|
|
179
|
-
// Note: FullToolInfo.parameters expects z.ZodObject<any>, so we must use that type
|
|
180
|
-
let zodSchema;
|
|
181
|
-
try {
|
|
182
|
-
// MCP schemas are JSON Schema compatible, but use looser types
|
|
183
|
-
// Cast to any since convertJsonSchemaToZod doesn't have proper types and we need ZodObject<any>
|
|
184
|
-
zodSchema = convertJsonSchemaToZod(tool.inputSchema);
|
|
185
|
-
}
|
|
186
|
-
catch (error) {
|
|
187
|
-
// If schema conversion fails, skip the tool rather than using a dangerous fallback
|
|
188
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
189
|
-
if (this.logger) {
|
|
190
|
-
this.logger.error(`Skipping MCP tool '${fullToolName}' due to schema conversion error: ${errorMessage}. ` +
|
|
191
|
-
`The tool may have unsupported JSON Schema features. ` +
|
|
192
|
-
`Please report this if the tool should be supported.`);
|
|
193
|
-
}
|
|
194
|
-
continue; // Skip this tool entirely
|
|
195
|
-
}
|
|
196
|
-
const description = tool.description || `MCP tool: ${fullToolName}`;
|
|
197
|
-
toolInfos.push({
|
|
198
|
-
name: fullToolName,
|
|
199
|
-
description,
|
|
200
|
-
parameters: zodSchema,
|
|
201
|
-
handler: async (_provider, args) => {
|
|
202
|
-
try {
|
|
203
|
-
const result = await this.callTool(fullToolName, args);
|
|
204
|
-
// Return the result in the expected format
|
|
205
|
-
const response = {
|
|
206
|
-
success: true,
|
|
207
|
-
message: {
|
|
208
|
-
type: 'text',
|
|
209
|
-
value: typeof result === 'string' ? result : JSON.stringify(result, null, 2),
|
|
210
|
-
},
|
|
211
|
-
};
|
|
212
|
-
return response;
|
|
213
|
-
}
|
|
214
|
-
catch (error) {
|
|
215
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
216
|
-
const errorResponse = {
|
|
217
|
-
success: false,
|
|
218
|
-
message: {
|
|
219
|
-
type: 'error-text',
|
|
220
|
-
value: `Error calling MCP tool '${fullToolName}': ${errorMessage}`,
|
|
221
|
-
},
|
|
222
|
-
};
|
|
223
|
-
return errorResponse;
|
|
224
|
-
}
|
|
225
|
-
},
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
return toolInfos;
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
//# sourceMappingURL=manager.js.map
|
package/dist/mcp/manager.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/mcp/manager.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAG3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAK7D;;GAEG;AACH,MAAM,OAAO,UAAU;IAIQ;IAHrB,WAAW,GAAG,IAAI,GAAG,EAAsB,CAAA;IAC3C,KAAK,GAAG,IAAI,GAAG,EAAiD,CAAA;IAExE,YAA6B,MAAe;QAAf,WAAM,GAAN,MAAM,CAAS;IAAG,CAAC;IAEhD;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,OAA8C;QACnE,KAAK,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;YACtD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBAC3E,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,UAAU,MAAM,YAAY,EAAE,CAAC,CAAA;gBACtF,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,oCAAoC,UAAU,MAAM,YAAY,EAAE,CAAC,CAAA;gBAClF,CAAC;gBACD,yDAAyD;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,UAAkB,EAAE,YAAmC;QAC3E,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,UAAU,wBAAwB,CAAC,CAAA;YACrE,CAAC;YACD,OAAM;QACR,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,kBAAkB,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAA;QAC5F,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE;gBAC/C,OAAO,EAAE,YAAY,CAAC,OAAO;gBAC7B,IAAI,EAAE,YAAY,CAAC,IAAI;gBACvB,GAAG,EAAE,YAAY,CAAC,GAAG;aACtB,CAAC,CAAA;YAEF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;YAExC,uCAAuC;YACvC,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAA;YAE5C,iBAAiB;YACjB,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;gBAC/B,MAAM,YAAY,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,CAAA;gBACjD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;YACpD,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,UAAU,UAAU,WAAW,CAAC,MAAM,QAAQ,CAAC,CAAA;YAC9F,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,kBAAkB,CAAC,UAAU,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACrG,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,kBAAkB,GAAoB,EAAE,CAAA;QAE9C,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9D,kBAAkB,CAAC,IAAI,CACrB,MAAM,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBAClC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,UAAU,MAAM,KAAK,EAAE,CAAC,CAAA;gBACnF,CAAC;YACH,CAAC,CAAC,CACH,CAAA;QACH,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;QACrC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;QACxB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,UAAkB;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,cAAc,CAAC,UAAU,CAAC,CAAA;QACtC,CAAC;QAED,MAAM,MAAM,CAAC,UAAU,EAAE,CAAA;QACzB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAEnC,gCAAgC;QAChC,KAAK,MAAM,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YACjE,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;gBACrB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,UAAkB;QAC/B,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmB,CAAA;QAE9C,KAAK,MAAM,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YACvE,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;gBACrB,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;YACjC,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAA;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,YAAoB,EAAE,IAA6B;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAE7C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,SAAS,YAAY,aAAa,CAAC,CAAA;QACrD,CAAC;QAED,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAA;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAE/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,cAAc,CAAC,UAAU,CAAC,CAAA;QACtC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAErD,2CAA2C;QAC3C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,SAAS,YAAY,wBAAwB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAChG,CAAC;QAED,+CAA+C;QAC/C,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAsB,CAAC,IAAI,CAAC,CAAA;YAC1G,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7B,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,QAAgB;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACjC,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,QAAgB;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACjC,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;IAC5C,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,UAAkB;QAClC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACzC,CAAC;IAED;;;OAGG;IACH,gBAAgB;QACd,MAAM,SAAS,GAAmB,EAAE,CAAA;QAEpC,KAAK,MAAM,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5D,qDAAqD;YACrD,uDAAuD;YACvD,mFAAmF;YACnF,IAAI,SAAuC,CAAA;YAE3C,IAAI,CAAC;gBACH,+DAA+D;gBAC/D,gGAAgG;gBAChG,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,WAAkB,CAAqB,CAAA;YACjF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,mFAAmF;gBACnF,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBAC3E,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,sBAAsB,YAAY,qCAAqC,YAAY,IAAI;wBACrF,sDAAsD;wBACtD,qDAAqD,CACxD,CAAA;gBACH,CAAC;gBACD,SAAQ,CAAC,0BAA0B;YACrC,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,aAAa,YAAY,EAAE,CAAA;YAEnE,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,YAAY;gBAClB,WAAW;gBACX,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;oBACjC,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;wBAEtD,2CAA2C;wBAC3C,MAAM,QAAQ,GAAiB;4BAC7B,OAAO,EAAE,IAAI;4BACb,OAAO,EAAE;gCACP,IAAI,EAAE,MAAM;gCACZ,KAAK,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;6BAC7E;yBACF,CAAA;wBACD,OAAO,QAAQ,CAAA;oBACjB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;wBAC3E,MAAM,aAAa,GAAiB;4BAClC,OAAO,EAAE,KAAK;4BACd,OAAO,EAAE;gCACP,IAAI,EAAE,YAAY;gCAClB,KAAK,EAAE,2BAA2B,YAAY,MAAM,YAAY,EAAE;6BACnE;yBACF,CAAA;wBACD,OAAO,aAAa,CAAA;oBACtB,CAAC;gBACH,CAAC;aACF,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;CACF"}
|
package/dist/mcp/manager.test.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
// Unit tests for MCP manager
|
|
2
|
-
// generated by polka.codes
|
|
3
|
-
import { describe, expect, test } from 'bun:test';
|
|
4
|
-
import { McpConnectionError, McpServerError } from './errors';
|
|
5
|
-
import { McpManager } from './manager';
|
|
6
|
-
describe('McpManager', () => {
|
|
7
|
-
test('should initialize without servers', () => {
|
|
8
|
-
const manager = new McpManager();
|
|
9
|
-
expect(manager.listConnectedServers()).toEqual([]);
|
|
10
|
-
expect(manager.isServerConnected('test-server')).toBe(false);
|
|
11
|
-
});
|
|
12
|
-
test('should throw error when trying to disconnect non-existent server', async () => {
|
|
13
|
-
const manager = new McpManager();
|
|
14
|
-
expect(manager.disconnectServer('non-existent')).rejects.toThrow(McpServerError);
|
|
15
|
-
});
|
|
16
|
-
test('should return empty tools map when no servers connected', () => {
|
|
17
|
-
const manager = new McpManager();
|
|
18
|
-
expect(manager.getAllTools().size).toBe(0);
|
|
19
|
-
});
|
|
20
|
-
test('should return false for hasTool when no servers connected', () => {
|
|
21
|
-
const manager = new McpManager();
|
|
22
|
-
expect(manager.hasTool('some-tool')).toBe(false);
|
|
23
|
-
});
|
|
24
|
-
test('should return undefined for getTool when tool does not exist', () => {
|
|
25
|
-
const manager = new McpManager();
|
|
26
|
-
expect(manager.getTool('some-tool')).toBeUndefined();
|
|
27
|
-
});
|
|
28
|
-
test('should handle empty server config', async () => {
|
|
29
|
-
const manager = new McpManager();
|
|
30
|
-
await manager.connectToServers({});
|
|
31
|
-
expect(manager.listConnectedServers()).toEqual([]);
|
|
32
|
-
});
|
|
33
|
-
test('should fail to connect to server without command', async () => {
|
|
34
|
-
const manager = new McpManager();
|
|
35
|
-
expect(manager.connectToServer('test-server', {
|
|
36
|
-
command: undefined,
|
|
37
|
-
})).rejects.toThrow(McpConnectionError);
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
//# sourceMappingURL=manager.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manager.test.js","sourceRoot":"","sources":["../../src/mcp/manager.test.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,2BAA2B;AAE3B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEtC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC7C,MAAM,OAAO,GAAG,IAAI,UAAU,EAAE,CAAA;QAChC,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAClD,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,OAAO,GAAG,IAAI,UAAU,EAAE,CAAA;QAChC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAClF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACnE,MAAM,OAAO,GAAG,IAAI,UAAU,EAAE,CAAA;QAChC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACrE,MAAM,OAAO,GAAG,IAAI,UAAU,EAAE,CAAA;QAChC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACxE,MAAM,OAAO,GAAG,IAAI,UAAU,EAAE,CAAA;QAChC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,OAAO,GAAG,IAAI,UAAU,EAAE,CAAA;QAChC,MAAM,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;QAClC,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,OAAO,GAAG,IAAI,UAAU,EAAE,CAAA;QAChC,MAAM,CACJ,OAAO,CAAC,eAAe,CAAC,aAAa,EAAE;YACrC,OAAO,EAAE,SAAgB;SAC1B,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|