@bluefly/openstandardagents 0.4.9 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.version.json +3 -3
- package/CHANGELOG.md +35 -4
- package/README.md +77 -62
- package/dist/.version.json +3 -3
- package/dist/adapters/a2a/a2a-protocol.js +4 -2
- package/dist/adapters/a2a/a2a-tool.js +4 -2
- package/dist/adapters/a2a/mcp-integration.d.ts +2 -1
- package/dist/adapters/a2a/mcp-integration.js +6 -3
- package/dist/adapters/browser/browser-exporter.d.ts +26 -0
- package/dist/adapters/browser/browser-exporter.js +73 -0
- package/dist/adapters/browser/browser-runner.d.ts +23 -0
- package/dist/adapters/browser/browser-runner.js +46 -0
- package/dist/adapters/browser/index.d.ts +9 -0
- package/dist/adapters/browser/index.js +9 -0
- package/dist/adapters/claude-code/adapter.js +2 -2
- package/dist/adapters/docker/generators.js +19 -19
- package/dist/adapters/docker/index.d.ts +2 -0
- package/dist/adapters/docker/index.js +2 -0
- package/dist/adapters/docker/openclaw-bridge.d.ts +57 -0
- package/dist/adapters/docker/openclaw-bridge.js +173 -0
- package/dist/adapters/drupal/generator.js +76 -76
- package/dist/adapters/drupal/index.d.ts +1 -0
- package/dist/adapters/drupal/index.js +2 -0
- package/dist/adapters/drupal/twig-renderer.d.ts +23 -0
- package/dist/adapters/drupal/twig-renderer.js +99 -0
- package/dist/adapters/gitlab/agent-generator.js +2 -1
- package/dist/adapters/openai-agents/adapter.js +2 -2
- package/dist/api/index.js +2 -1
- package/dist/api/routes/mcp.router.js +3 -1
- package/dist/api/routes/wizard.router.js +3 -1
- package/dist/cli/commands/agent/discover-type.command.js +1 -1
- package/dist/cli/commands/agent-card.command.js +37 -10
- package/dist/cli/commands/agents-sync.command.d.ts +2 -2
- package/dist/cli/commands/agents-sync.command.js +27 -17
- package/dist/cli/commands/catalog/config.js +1 -1
- package/dist/cli/commands/catalog/validate.command.js +2 -2
- package/dist/cli/commands/config.command.js +2 -2
- package/dist/cli/commands/daemon.command.js +32 -8
- package/dist/cli/commands/discover.d.ts +1 -1
- package/dist/cli/commands/discover.js +16 -8
- package/dist/cli/commands/economics.command.d.ts +9 -0
- package/dist/cli/commands/economics.command.js +113 -0
- package/dist/cli/commands/export.command.js +6 -3
- package/dist/cli/commands/mcp.command.js +3 -1
- package/dist/cli/commands/memory.command.d.ts +18 -0
- package/dist/cli/commands/memory.command.js +168 -0
- package/dist/cli/commands/publish.command.js +7 -4
- package/dist/cli/commands/serve-builder-routes.js +1 -1
- package/dist/cli/commands/usie-skills.command.d.ts +24 -0
- package/dist/cli/commands/usie-skills.command.js +297 -0
- package/dist/cli/commands/validate.command.js +8 -1
- package/dist/cli/commands/verify.d.ts +3 -3
- package/dist/cli/commands/verify.js +12 -6
- package/dist/cli/commands/workspace.command.d.ts +1 -0
- package/dist/cli/commands/workspace.command.js +28 -4
- package/dist/cli/index.js +12 -0
- package/dist/cli/schema-driven/schema-loader.js +5 -5
- package/dist/cli/workspace-validate.d.ts +23 -0
- package/dist/cli/workspace-validate.js +117 -0
- package/dist/data/platform-matrix.js +1 -4
- package/dist/generated/types.d.ts +97 -97
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/mcp-server/index.js +658 -982
- package/dist/mesh/discovery-gkg.d.ts +26 -0
- package/dist/mesh/discovery-gkg.js +92 -0
- package/dist/messenger/Handler/AgentBatchHandler.js +3 -2
- package/dist/messenger/Handler/AgentExecutionHandler.js +6 -1
- package/dist/package.json +43 -14
- package/dist/sdks/shared/types.d.ts +1 -1
- package/dist/services/agent-card-generator.js +6 -2
- package/dist/services/daemon/audit-log.service.js +3 -1
- package/dist/services/daemon/execution.service.js +8 -4
- package/dist/services/daemon/fs-watcher.service.js +6 -7
- package/dist/services/daemon/pairing.service.js +2 -1
- package/dist/services/daemon/skill-aggregator.service.js +105 -21
- package/dist/services/daemon/sse-endpoints.js +1 -1
- package/dist/services/daemon/ws-server.js +10 -3
- package/dist/services/export/langchain/langchain-exporter.js +2 -2
- package/dist/services/export/langchain/memory-generator.js +2 -2
- package/dist/services/export/testing/test-generator.js +1 -1
- package/dist/services/governance/cedar-provider.js +12 -8
- package/dist/services/governance/cedar-validator.service.js +1 -1
- package/dist/services/mcp/bridge.service.js +40 -9
- package/dist/services/openapi-extensions-validation.d.ts +20 -0
- package/dist/services/openapi-extensions-validation.js +193 -0
- package/dist/services/release-automation/merge-request.service.d.ts +4 -4
- package/dist/services/release-automation/release-buttons.js +3 -3
- package/dist/services/release-automation/schemas/release.schema.d.ts +3 -3
- package/dist/services/runtime/openai.adapter.d.ts +46 -13
- package/dist/services/runtime/openai.adapter.js +169 -131
- package/dist/services/skill-registry.service.d.ts +1 -1
- package/dist/services/skills-pipeline/skills-research.service.js +47 -7
- package/dist/services/taxonomy-service.d.ts +3 -3
- package/dist/services/trust/trust.service.js +6 -4
- package/dist/services/validation-zod.service.js +3 -22
- package/dist/services/validators/index.d.ts +1 -0
- package/dist/services/validators/index.js +1 -0
- package/dist/services/validators/registry.d.ts +21 -0
- package/dist/services/validators/registry.js +42 -0
- package/dist/skills/test-skill/package.json +1 -1
- package/dist/spec/extensions/cognition.schema.json +87 -0
- package/dist/spec/extensions/role-manifest.md +188 -0
- package/dist/spec/layer4-economics/duadp-examples.json +44 -0
- package/dist/spec/v0.4/agent.schema.json +14 -0
- package/dist/spec/v0.4/extensions/mcp/README.md +1 -1
- package/dist/spec/v0.5/agent-builder-openapi.yaml +230 -0
- package/dist/spec/v0.5/agent.schema.json +34 -2
- package/dist/spec/v0.5/extensions/cognition/cognition.schema.json +78 -1
- package/dist/spec/v0.5/extensions/economics/context-pack.schema.json +91 -0
- package/dist/spec/v0.5/extensions/economics/execution-profile.schema.json +148 -0
- package/dist/spec/v0.5/extensions/economics/failure-semantics.schema.json +32 -0
- package/dist/spec/v0.5/extensions/economics/replay-packet.schema.json +120 -0
- package/dist/spec/v0.5/memory-hierarchy.yaml +120 -0
- package/dist/spec/v0.5/role.schema.json +268 -0
- package/dist/spec/v1/agent-card.schema.json +254 -0
- package/dist/types/cognition.zod.d.ts +312 -0
- package/dist/types/cognition.zod.js +223 -0
- package/dist/types/identity.zod.d.ts +5 -5
- package/dist/types/index.d.ts +54 -6
- package/dist/types/index.js +6 -2
- package/dist/types/personality.zod.d.ts +3 -3
- package/dist/types/role.d.ts +126 -0
- package/dist/types/role.js +38 -0
- package/dist/utils/http-client.d.ts +22 -0
- package/dist/utils/http-client.js +51 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/proxy-resolver.d.ts +36 -0
- package/dist/utils/proxy-resolver.js +59 -0
- package/dist/utils/user-agent.d.ts +11 -0
- package/dist/utils/user-agent.js +17 -0
- package/dist/validation/validator.js +1 -1
- package/dist/validation/version-compliance.js +1 -1
- package/examples/agents/01-customer-support-bot/agent.ossa.yaml +24 -31
- package/examples/agents/05-sales-assistant/agent.ossa.yaml +35 -23
- package/examples/agents/07-research-assistant/agent.ossa.yaml +27 -21
- package/examples/agents/10-meeting-assistant/agent.ossa.yaml +27 -35
- package/examples/agents/security-audit-agent.ossa.yaml +234 -0
- package/examples/agentscope/react-assistant/README.md +1 -1
- package/examples/agentscope/react-assistant/agent.ossa.yaml +37 -33
- package/examples/drupal/content-moderator.ossa.yaml +2 -2
- package/examples/drupal/drupal-contributor-agent/.eslintrc.json +58 -0
- package/examples/drupal/drupal-contributor-agent/.prettierrc.json +10 -0
- package/examples/drupal/drupal-contributor-agent/package.json +55 -0
- package/examples/drupal/drupal-contributor-agent/src/core/index.ts +10 -0
- package/examples/drupal/drupal-contributor-agent/src/index.ts +17 -0
- package/examples/drupal/drupal-contributor-agent/src/types/index.ts +180 -0
- package/examples/drupal/drupal-contributor-agent/tsconfig.json +36 -0
- package/examples/drupal/drupal-contributor.ossa.yaml +247 -0
- package/examples/export/langchain/production-agent-with-memory/README.md +1 -1
- package/examples/export/langchain/production-agent-with-memory/agent.ossa.yaml +13 -23
- package/examples/export/langchain/production-agent-with-streaming/agent.ossa.yaml +1 -15
- package/examples/export/langchain/production-agent-with-tools/agent.ossa.yaml +28 -29
- package/examples/getting-started/01-minimal-agent.ossa.yaml +1 -1
- package/examples/getting-started/02-agent-with-tools.ossa.yaml +1 -1
- package/examples/getting-started/03-agent-with-safety.ossa.yaml +1 -1
- package/examples/getting-started/04-agent-with-messaging.ossa.yaml +1 -1
- package/examples/getting-started/05-workflow-composition.ossa.yaml +1 -1
- package/examples/getting-started/README.md +3 -3
- package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
- package/examples/gitlab-agents/gitlab-ci-agent.ossa.yaml +221 -0
- package/examples/hierarchical-agent.ossa.yaml +10 -53
- package/examples/kagent/ossa-kagent-anthropic.ossa.yaml +2 -25
- package/examples/kagent/ossa-kagent-mcp-tools.ossa.yaml +2 -30
- package/examples/kagent/ossa-kagent-multi-tool.ossa.yaml +2 -18
- package/examples/kagent/ossa-kagent-poc.ossa.yaml +2 -16
- package/examples/pipeline-agent.ossa.yaml +3 -3
- package/examples/platform-specific/claude-code-subagent.yaml +1 -1
- package/examples/platform-specific/cursor-coding-agent.yaml +1 -1
- package/examples/platform-specific/warp-terminal-agent.yaml +1 -1
- package/examples/production-ready/01-customer-support-bot/agent.ossa.yaml +24 -31
- package/examples/production-ready/05-sales-assistant/agent.ossa.yaml +35 -23
- package/examples/production-ready/07-research-assistant/agent.ossa.yaml +27 -19
- package/examples/production-ready/10-meeting-assistant/agent.ossa.yaml +27 -35
- package/examples/roles/drupal-developer.role.yaml +37 -0
- package/examples/roles/platform-operator.role.yaml +28 -0
- package/examples/roles/security-auditor.role.yaml +27 -0
- package/examples/swarm-agent.ossa.yaml +13 -51
- package/examples/team-agent.ossa.yaml +12 -61
- package/examples/team-lead-teammate.ossa.yaml +12 -17
- package/openapi/agent-cognition-sessions.yaml +580 -0
- package/openapi/agent-communication.yaml +260 -212
- package/openapi/agent-crud.yaml +237 -207
- package/openapi/agent-discovery.yaml +119 -81
- package/openapi/agent-identity.yaml +219 -187
- package/openapi/agent-taxonomy.yaml +95 -38
- package/openapi/agents-md-service.yaml +103 -30
- package/openapi/cli/openapi.yaml +147 -40
- package/openapi/core/ossa-core-api.openapi.yaml +327 -271
- package/openapi/core/ossa-registry-api.openapi.yaml +299 -236
- package/openapi/core/ossa-registry.openapi.yaml +299 -159
- package/openapi/core/unified-agent-gateway.openapi.yaml +234 -170
- package/openapi/daemon-api.openapi.yaml +323 -181
- package/openapi/dev-cli/openapi.yaml +137 -113
- package/openapi/github-sync.yaml +62 -19
- package/openapi/marketplace-plugin.openapi.yaml +539 -466
- package/openapi/ossa-api.openapi.yaml +354 -213
- package/openapi/ossa-cli-enhancements.openapi.yaml +109 -90
- package/openapi/ossa-cli.yaml +260 -184
- package/openapi/protocols/sse-streams.yaml +66 -74
- package/openapi/protocols/websocket-events.yaml +61 -54
- package/openapi/reference-implementations/aiflow-bridge-api.openapi.yaml +37 -20
- package/openapi/reference-implementations/compliance-agent-api.openapi.yaml +35 -23
- package/openapi/reference-implementations/crewai-agent-api.openapi.yaml +29 -18
- package/openapi/reference-implementations/critic-agent-api.openapi.yaml +45 -19
- package/openapi/reference-implementations/document-analyzer-api.openapi.yaml +30 -24
- package/openapi/reference-implementations/drupal-agent-api.openapi.yaml +101 -50
- package/openapi/reference-implementations/getting-started-hello-world-api.openapi.yaml +33 -22
- package/openapi/reference-implementations/gitlab-ml-recommender-api.openapi.yaml +20 -16
- package/openapi/reference-implementations/governor-agent-api.openapi.yaml +41 -23
- package/openapi/reference-implementations/helm-generator.openapi.yaml +88 -46
- package/openapi/reference-implementations/integrator-agent-api.openapi.yaml +30 -20
- package/openapi/reference-implementations/judge-agent-api.openapi.yaml +22 -16
- package/openapi/reference-implementations/k8s-troubleshooter-api.openapi.yaml +32 -18
- package/openapi/reference-implementations/langchain-agent-api.openapi.yaml +32 -21
- package/openapi/reference-implementations/monitor-agent-api.openapi.yaml +34 -21
- package/openapi/reference-implementations/orchestrator-agent-api.openapi.yaml +49 -27
- package/openapi/reference-implementations/quickstart-support-agent-api.openapi.yaml +27 -19
- package/openapi/reference-implementations/self-evolving-ecosystem.openapi.yaml +427 -293
- package/openapi/reference-implementations/worker-agent-api.openapi.yaml +34 -23
- package/openapi/reference-implementations/workflow-orchestrator-api.openapi.yaml +35 -21
- package/openapi/release-automation.openapi.yaml +48 -14
- package/openapi/schemas/common/agent.yaml +30 -29
- package/openapi/schemas/common/economics.yaml +98 -0
- package/openapi/schemas/common/errors.yaml +13 -3
- package/openapi/schemas/common/metadata.yaml +22 -7
- package/openapi/schemas/common/pagination.yaml +18 -6
- package/openapi/schemas/common/security.yaml +13 -5
- package/openapi/schemas/index.yaml +49 -42
- package/openapi/uadp-asyncapi.yaml +5 -3
- package/openapi/uadp-openapi.yaml +243 -165
- package/openapi/version-management.openapi.yaml +142 -135
- package/package.json +43 -14
- package/spec/extensions/cognition.schema.json +87 -0
- package/spec/extensions/role-manifest.md +188 -0
- package/spec/layer4-economics/duadp-examples.json +44 -0
- package/spec/v0.4/agent.schema.json +14 -0
- package/spec/v0.4/extensions/mcp/README.md +1 -1
- package/spec/v0.5/agent-builder-openapi.yaml +230 -0
- package/spec/v0.5/agent.schema.json +34 -2
- package/spec/v0.5/extensions/cognition/cognition.schema.json +78 -1
- package/spec/v0.5/extensions/economics/context-pack.schema.json +91 -0
- package/spec/v0.5/extensions/economics/execution-profile.schema.json +148 -0
- package/spec/v0.5/extensions/economics/failure-semantics.schema.json +32 -0
- package/spec/v0.5/extensions/economics/replay-packet.schema.json +120 -0
- package/spec/v0.5/memory-hierarchy.yaml +120 -0
- package/spec/v0.5/role.schema.json +268 -0
- package/spec/v1/agent-card.schema.json +254 -0
- package/dist/adapters/a2a/__tests__/mcp-integration.spec.d.ts +0 -5
- package/dist/adapters/a2a/__tests__/mcp-integration.spec.js +0 -268
- package/dist/adapters/a2a/__tests__/mcp-transport.spec.d.ts +0 -5
- package/dist/adapters/a2a/__tests__/mcp-transport.spec.js +0 -203
- package/dist/mcp-server/__tests__/mcp-server.spec.d.ts +0 -8
- package/dist/mcp-server/__tests__/mcp-server.spec.js +0 -557
- package/dist/validation/__tests__/error-codes.test.d.ts +0 -5
- package/dist/validation/__tests__/error-codes.test.js +0 -252
- package/dist/version-management/core/version-manager.test.d.ts +0 -2
- package/dist/version-management/core/version-manager.test.js +0 -210
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Transport Manager Tests
|
|
3
|
-
*/
|
|
4
|
-
import { describe, it, expect, beforeEach, afterEach, } from '@jest/globals';
|
|
5
|
-
import { MCPTransportManager } from '../mcp-transport.js';
|
|
6
|
-
describe('MCPTransportManager', () => {
|
|
7
|
-
let transportManager;
|
|
8
|
-
beforeEach(() => {
|
|
9
|
-
transportManager = new MCPTransportManager();
|
|
10
|
-
});
|
|
11
|
-
afterEach(async () => {
|
|
12
|
-
await transportManager.disconnectAll();
|
|
13
|
-
});
|
|
14
|
-
describe('URI Parsing', () => {
|
|
15
|
-
it('should parse stdio URI correctly', async () => {
|
|
16
|
-
const uri = 'stdio://python/path/to/script.py?arg1=value1&arg2=value2';
|
|
17
|
-
try {
|
|
18
|
-
await transportManager.getClient(uri);
|
|
19
|
-
}
|
|
20
|
-
catch (error) {
|
|
21
|
-
// Expected to fail (no actual server), but parsing should work
|
|
22
|
-
expect(error).toBeDefined();
|
|
23
|
-
}
|
|
24
|
-
// Check that connection attempt was made
|
|
25
|
-
const connections = transportManager.getConnections();
|
|
26
|
-
expect(connections.length).toBeLessThanOrEqual(1);
|
|
27
|
-
});
|
|
28
|
-
it('should parse HTTP URI correctly', async () => {
|
|
29
|
-
const uri = 'http://localhost:3000/mcp';
|
|
30
|
-
try {
|
|
31
|
-
await transportManager.getClient(uri);
|
|
32
|
-
}
|
|
33
|
-
catch (error) {
|
|
34
|
-
// Expected to fail (no actual server)
|
|
35
|
-
expect(error).toBeDefined();
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
it('should parse HTTPS URI correctly', async () => {
|
|
39
|
-
const uri = 'https://api.example.com/mcp';
|
|
40
|
-
try {
|
|
41
|
-
await transportManager.getClient(uri);
|
|
42
|
-
}
|
|
43
|
-
catch (error) {
|
|
44
|
-
// Expected to fail (no actual server)
|
|
45
|
-
expect(error).toBeDefined();
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
it('should reject unsupported protocols', async () => {
|
|
49
|
-
const uri = 'ftp://example.com/mcp';
|
|
50
|
-
await expect(transportManager.getClient(uri)).rejects.toThrow('Unsupported protocol');
|
|
51
|
-
});
|
|
52
|
-
it('should reject invalid URIs', async () => {
|
|
53
|
-
const uri = 'not-a-valid-uri';
|
|
54
|
-
await expect(transportManager.getClient(uri)).rejects.toThrow('Invalid MCP URI');
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
describe('Connection Pooling', () => {
|
|
58
|
-
it('should reuse existing connections', async () => {
|
|
59
|
-
const uri = 'http://localhost:3000/mcp';
|
|
60
|
-
// First connection attempt
|
|
61
|
-
try {
|
|
62
|
-
await transportManager.getClient(uri);
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
65
|
-
// Ignore connection error
|
|
66
|
-
}
|
|
67
|
-
const stats1 = transportManager.getStats();
|
|
68
|
-
const initialConnections = stats1.totalConnections;
|
|
69
|
-
// Second connection attempt (should reuse)
|
|
70
|
-
try {
|
|
71
|
-
await transportManager.getClient(uri);
|
|
72
|
-
}
|
|
73
|
-
catch (error) {
|
|
74
|
-
// Ignore connection error
|
|
75
|
-
}
|
|
76
|
-
const stats2 = transportManager.getStats();
|
|
77
|
-
expect(stats2.totalConnections).toBe(initialConnections);
|
|
78
|
-
});
|
|
79
|
-
it('should track request count', async () => {
|
|
80
|
-
const uri = 'http://localhost:3000/mcp';
|
|
81
|
-
try {
|
|
82
|
-
const wrapper = await transportManager.getClient(uri);
|
|
83
|
-
expect(wrapper.requestCount).toBe(0);
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
// Connection will fail, but wrapper should be tracked
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
it('should update last activity timestamp', async () => {
|
|
90
|
-
const uri = 'http://localhost:3000/mcp';
|
|
91
|
-
try {
|
|
92
|
-
const wrapper1 = await transportManager.getClient(uri);
|
|
93
|
-
const firstActivity = wrapper1.lastActivity;
|
|
94
|
-
// Wait a bit
|
|
95
|
-
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
96
|
-
const wrapper2 = await transportManager.getClient(uri);
|
|
97
|
-
expect(wrapper2.lastActivity.getTime()).toBeGreaterThanOrEqual(firstActivity.getTime());
|
|
98
|
-
}
|
|
99
|
-
catch (error) {
|
|
100
|
-
// Ignore connection errors
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
describe('Connection Management', () => {
|
|
105
|
-
it('should disconnect specific connection', async () => {
|
|
106
|
-
const uri = 'http://localhost:3000/mcp';
|
|
107
|
-
try {
|
|
108
|
-
await transportManager.getClient(uri);
|
|
109
|
-
}
|
|
110
|
-
catch (error) {
|
|
111
|
-
// Ignore connection error
|
|
112
|
-
}
|
|
113
|
-
await transportManager.disconnect(uri);
|
|
114
|
-
const connections = transportManager.getConnections();
|
|
115
|
-
expect(connections.find((c) => c.config.url === uri)).toBeUndefined();
|
|
116
|
-
});
|
|
117
|
-
it('should disconnect all connections', async () => {
|
|
118
|
-
const uri1 = 'http://localhost:3000/mcp';
|
|
119
|
-
const uri2 = 'http://localhost:3001/mcp';
|
|
120
|
-
try {
|
|
121
|
-
await transportManager.getClient(uri1);
|
|
122
|
-
await transportManager.getClient(uri2);
|
|
123
|
-
}
|
|
124
|
-
catch (error) {
|
|
125
|
-
// Ignore connection errors
|
|
126
|
-
}
|
|
127
|
-
await transportManager.disconnectAll();
|
|
128
|
-
const connections = transportManager.getConnections();
|
|
129
|
-
expect(connections.length).toBe(0);
|
|
130
|
-
});
|
|
131
|
-
it('should handle disconnect of non-existent connection gracefully', async () => {
|
|
132
|
-
await expect(transportManager.disconnect('http://nonexistent:3000/mcp')).resolves.not.toThrow();
|
|
133
|
-
});
|
|
134
|
-
});
|
|
135
|
-
describe('Statistics', () => {
|
|
136
|
-
it('should track connection statistics', async () => {
|
|
137
|
-
const uri = 'http://localhost:3000/mcp';
|
|
138
|
-
try {
|
|
139
|
-
await transportManager.getClient(uri);
|
|
140
|
-
}
|
|
141
|
-
catch (error) {
|
|
142
|
-
// Ignore connection error
|
|
143
|
-
}
|
|
144
|
-
const stats = transportManager.getStats();
|
|
145
|
-
expect(stats).toHaveProperty('totalConnections');
|
|
146
|
-
expect(stats).toHaveProperty('totalRequests');
|
|
147
|
-
expect(stats).toHaveProperty('connections');
|
|
148
|
-
expect(Array.isArray(stats.connections)).toBe(true);
|
|
149
|
-
});
|
|
150
|
-
it('should return empty stats when no connections', () => {
|
|
151
|
-
const stats = transportManager.getStats();
|
|
152
|
-
expect(stats.totalConnections).toBe(0);
|
|
153
|
-
expect(stats.totalRequests).toBe(0);
|
|
154
|
-
expect(stats.connections.length).toBe(0);
|
|
155
|
-
});
|
|
156
|
-
});
|
|
157
|
-
describe('Error Handling', () => {
|
|
158
|
-
it('should handle connection timeout gracefully', async () => {
|
|
159
|
-
const uri = 'http://192.0.2.1:9999/mcp'; // Non-routable IP
|
|
160
|
-
await expect(transportManager.getClient(uri)).rejects.toThrow();
|
|
161
|
-
}, 35000); // Longer timeout for connection attempt
|
|
162
|
-
it('should handle request errors', async () => {
|
|
163
|
-
const uri = 'http://localhost:9999/mcp';
|
|
164
|
-
await expect(transportManager.sendRequest(uri, 'test/method', {})).rejects.toThrow();
|
|
165
|
-
}, 35000);
|
|
166
|
-
});
|
|
167
|
-
describe('Transport Types', () => {
|
|
168
|
-
it('should support STDIO transport type', async () => {
|
|
169
|
-
const uri = 'stdio://node/script.js';
|
|
170
|
-
try {
|
|
171
|
-
await transportManager.getClient(uri);
|
|
172
|
-
}
|
|
173
|
-
catch (error) {
|
|
174
|
-
// Connection will fail, but transport type should be parsed
|
|
175
|
-
expect(error).toBeDefined();
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
it('should support HTTP transport type', async () => {
|
|
179
|
-
const uri = 'http://localhost:3000/mcp';
|
|
180
|
-
try {
|
|
181
|
-
await transportManager.getClient(uri);
|
|
182
|
-
}
|
|
183
|
-
catch (error) {
|
|
184
|
-
expect(error).toBeDefined();
|
|
185
|
-
}
|
|
186
|
-
});
|
|
187
|
-
it('should support HTTPS transport type', async () => {
|
|
188
|
-
const uri = 'https://api.example.com/mcp';
|
|
189
|
-
try {
|
|
190
|
-
await transportManager.getClient(uri);
|
|
191
|
-
}
|
|
192
|
-
catch (error) {
|
|
193
|
-
expect(error).toBeDefined();
|
|
194
|
-
}
|
|
195
|
-
});
|
|
196
|
-
it('should accept WebSocket URI and use SSE fallback', async () => {
|
|
197
|
-
const uri = 'ws://localhost:3000/mcp';
|
|
198
|
-
await expect(transportManager.getClient(uri)).rejects.toThrow();
|
|
199
|
-
// Connection fails (no server) but WebSocket path is handled via SSE fallback
|
|
200
|
-
});
|
|
201
|
-
});
|
|
202
|
-
});
|
|
203
|
-
//# sourceMappingURL=mcp-transport.spec.js.map
|