swarmdo 1.4.8 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/.claude/helpers/statusline.cjs +7 -7
  2. package/README.md +9 -6
  3. package/package.json +5 -3
  4. package/v3/@swarmdo/cli/dist/src/commands/compact.d.ts +16 -0
  5. package/v3/@swarmdo/cli/dist/src/commands/compact.js +106 -0
  6. package/v3/@swarmdo/cli/dist/src/commands/hooks.js +26 -24
  7. package/v3/@swarmdo/cli/dist/src/commands/index.js +10 -3
  8. package/v3/@swarmdo/cli/dist/src/commands/integrations.d.ts +14 -0
  9. package/v3/@swarmdo/cli/dist/src/commands/integrations.js +158 -0
  10. package/v3/@swarmdo/cli/dist/src/commands/memory.js +50 -1
  11. package/v3/@swarmdo/cli/dist/src/commands/providers.js +3 -0
  12. package/v3/@swarmdo/cli/dist/src/commands/release.d.ts +15 -0
  13. package/v3/@swarmdo/cli/dist/src/commands/release.js +241 -0
  14. package/v3/@swarmdo/cli/dist/src/commands/security.js +14 -0
  15. package/v3/@swarmdo/cli/dist/src/commands/transcript.js +82 -1
  16. package/v3/@swarmdo/cli/dist/src/commands/usage.js +80 -1
  17. package/v3/@swarmdo/cli/dist/src/compact/compact.d.ts +60 -0
  18. package/v3/@swarmdo/cli/dist/src/compact/compact.js +170 -0
  19. package/v3/@swarmdo/cli/dist/src/config-lint/lint.js +11 -1
  20. package/v3/@swarmdo/cli/dist/src/index.js +4 -2
  21. package/v3/@swarmdo/cli/dist/src/init/statusline-generator.js +6 -6
  22. package/v3/@swarmdo/cli/dist/src/integrations/integrations.d.ts +54 -0
  23. package/v3/@swarmdo/cli/dist/src/integrations/integrations.js +162 -0
  24. package/v3/@swarmdo/cli/dist/src/mcp-tools/agent-execute-core.js +25 -3
  25. package/v3/@swarmdo/cli/dist/src/mcp-tools/agentdb-tools.js +8 -8
  26. package/v3/@swarmdo/cli/dist/src/memory/graph-edge-writer.d.ts +12 -0
  27. package/v3/@swarmdo/cli/dist/src/memory/graph-edge-writer.js +32 -1
  28. package/v3/@swarmdo/cli/dist/src/memory-vault/watch.d.ts +32 -0
  29. package/v3/@swarmdo/cli/dist/src/memory-vault/watch.js +66 -0
  30. package/v3/@swarmdo/cli/dist/src/providers/openrouter-config.d.ts +91 -0
  31. package/v3/@swarmdo/cli/dist/src/providers/openrouter-config.js +186 -0
  32. package/v3/@swarmdo/cli/dist/src/release/release.d.ts +72 -0
  33. package/v3/@swarmdo/cli/dist/src/release/release.js +86 -0
  34. package/v3/@swarmdo/cli/dist/src/resilience/backoff.d.ts +23 -0
  35. package/v3/@swarmdo/cli/dist/src/resilience/backoff.js +30 -0
  36. package/v3/@swarmdo/cli/dist/src/swarmvector/model-router.js +14 -0
  37. package/v3/@swarmdo/cli/dist/src/transcript/search.d.ts +39 -0
  38. package/v3/@swarmdo/cli/dist/src/transcript/search.js +67 -0
  39. package/v3/@swarmdo/cli/dist/src/usage/diff.d.ts +69 -0
  40. package/v3/@swarmdo/cli/dist/src/usage/diff.js +112 -0
  41. package/v3/@swarmdo/cli/package.json +4 -4
  42. package/v3/@swarmdo/cli-core/dist/src/index.js +1 -1
  43. package/v3/@swarmdo/codex/dist/cli.js +0 -0
  44. package/v3/@swarmdo/hooks/dist/cli/guidance-cli.js +0 -0
  45. package/v3/@swarmdo/hooks/dist/statusline/index.d.ts +3 -3
  46. package/v3/@swarmdo/hooks/dist/statusline/index.js +3 -3
  47. package/v3/@swarmdo/integration/dist/__tests__/agentic-flow-agent.test.js +4 -1
  48. package/v3/@swarmdo/neural/dist/flash-attention.d.ts +1 -1
  49. package/v3/@swarmdo/neural/dist/flash-attention.js +1 -1
  50. package/v3/@swarmdo/plugin-agent-federation/dist/plugin.js +1 -1
  51. package/v3/@swarmdo/plugin-agent-federation/dist/transport/midstream-aware-loader.js +2 -2
  52. package/v3/@swarmdo/providers/dist/swarmvector-provider.d.ts +1 -1
  53. package/v3/@swarmdo/providers/dist/swarmvector-provider.js +1 -1
  54. package/v3/@swarmdo/security/dist/input-validator.d.ts +6 -6
  55. package/v3/@swarmdo/shared/dist/hooks/safety/git-commit.js +1 -1
  56. package/v3/@swarmdo/shared/dist/mcp/transport/http.js +8 -1
  57. package/v3/vendor/agentdb/package.json +0 -1
  58. package/v3/vendor/agentic-flow/package.json +0 -1
  59. package/.claude/scheduled_tasks.lock +0 -1
  60. package/.claude/skills/sdo-caveman-compress/scripts/__pycache__/__init__.cpython-314.pyc +0 -0
  61. package/.claude/skills/sdo-caveman-compress/scripts/__pycache__/__main__.cpython-314.pyc +0 -0
  62. package/.claude/skills/sdo-caveman-compress/scripts/__pycache__/cli.cpython-314.pyc +0 -0
  63. package/.claude/skills/sdo-caveman-compress/scripts/__pycache__/compress.cpython-314.pyc +0 -0
  64. package/.claude/skills/sdo-caveman-compress/scripts/__pycache__/detect.cpython-314.pyc +0 -0
  65. package/.claude/skills/sdo-caveman-compress/scripts/__pycache__/validate.cpython-314.pyc +0 -0
  66. package/v3/@swarmdo/plugin-iot-cognitum/dist/application/index.d.ts +0 -2
  67. package/v3/@swarmdo/plugin-iot-cognitum/dist/application/index.js +0 -2
  68. package/v3/@swarmdo/plugin-iot-cognitum/dist/application/iot-coordinator.d.ts +0 -138
  69. package/v3/@swarmdo/plugin-iot-cognitum/dist/application/iot-coordinator.js +0 -418
  70. package/v3/@swarmdo/plugin-iot-cognitum/dist/bin.d.ts +0 -15
  71. package/v3/@swarmdo/plugin-iot-cognitum/dist/bin.js +0 -240
  72. package/v3/@swarmdo/plugin-iot-cognitum/dist/cli-commands.d.ts +0 -7
  73. package/v3/@swarmdo/plugin-iot-cognitum/dist/cli-commands.js +0 -508
  74. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/entities/device-agent.d.ts +0 -54
  75. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/entities/device-agent.js +0 -2
  76. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/entities/device-fleet.d.ts +0 -46
  77. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/entities/device-fleet.js +0 -2
  78. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/entities/device-trust-level.d.ts +0 -18
  79. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/entities/device-trust-level.js +0 -28
  80. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/entities/index.d.ts +0 -5
  81. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/entities/index.js +0 -2
  82. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/entities/telemetry.d.ts +0 -35
  83. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/entities/telemetry.js +0 -2
  84. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/repositories/device-repository.d.ts +0 -11
  85. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/repositories/device-repository.js +0 -2
  86. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/repositories/fleet-repository.d.ts +0 -9
  87. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/repositories/fleet-repository.js +0 -2
  88. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/repositories/index.d.ts +0 -5
  89. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/repositories/index.js +0 -2
  90. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/repositories/telemetry-repository.d.ts +0 -12
  91. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/repositories/telemetry-repository.js +0 -2
  92. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/repositories/trust-history-repository.d.ts +0 -19
  93. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/repositories/trust-history-repository.js +0 -2
  94. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/services/anomaly-detection-service.d.ts +0 -44
  95. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/services/anomaly-detection-service.js +0 -117
  96. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/services/device-lifecycle-service.d.ts +0 -70
  97. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/services/device-lifecycle-service.js +0 -194
  98. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/services/firmware-orchestration-service.d.ts +0 -69
  99. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/services/firmware-orchestration-service.js +0 -139
  100. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/services/fleet-topology-service.d.ts +0 -34
  101. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/services/fleet-topology-service.js +0 -101
  102. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/services/index.d.ts +0 -10
  103. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/services/index.js +0 -10
  104. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/services/mesh-service.d.ts +0 -64
  105. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/services/mesh-service.js +0 -70
  106. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/services/sona-integration-service.d.ts +0 -44
  107. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/services/sona-integration-service.js +0 -79
  108. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/services/telemetry-ingestion-service.d.ts +0 -37
  109. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/services/telemetry-ingestion-service.js +0 -39
  110. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/services/telemetry-service.d.ts +0 -67
  111. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/services/telemetry-service.js +0 -58
  112. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/services/witness-verification-service.d.ts +0 -45
  113. package/v3/@swarmdo/plugin-iot-cognitum/dist/domain/services/witness-verification-service.js +0 -63
  114. package/v3/@swarmdo/plugin-iot-cognitum/dist/index.d.ts +0 -26
  115. package/v3/@swarmdo/plugin-iot-cognitum/dist/index.js +0 -17
  116. package/v3/@swarmdo/plugin-iot-cognitum/dist/infrastructure/agentdb-telemetry-repository.d.ts +0 -51
  117. package/v3/@swarmdo/plugin-iot-cognitum/dist/infrastructure/agentdb-telemetry-repository.js +0 -110
  118. package/v3/@swarmdo/plugin-iot-cognitum/dist/infrastructure/in-memory-device-repository.d.ts +0 -13
  119. package/v3/@swarmdo/plugin-iot-cognitum/dist/infrastructure/in-memory-device-repository.js +0 -25
  120. package/v3/@swarmdo/plugin-iot-cognitum/dist/infrastructure/in-memory-fleet-repository.d.ts +0 -11
  121. package/v3/@swarmdo/plugin-iot-cognitum/dist/infrastructure/in-memory-fleet-repository.js +0 -19
  122. package/v3/@swarmdo/plugin-iot-cognitum/dist/infrastructure/in-memory-trust-history-repository.d.ts +0 -11
  123. package/v3/@swarmdo/plugin-iot-cognitum/dist/infrastructure/in-memory-trust-history-repository.js +0 -27
  124. package/v3/@swarmdo/plugin-iot-cognitum/dist/infrastructure/index.d.ts +0 -6
  125. package/v3/@swarmdo/plugin-iot-cognitum/dist/infrastructure/index.js +0 -6
  126. package/v3/@swarmdo/plugin-iot-cognitum/dist/infrastructure/seed-client-factory.d.ts +0 -41
  127. package/v3/@swarmdo/plugin-iot-cognitum/dist/infrastructure/seed-client-factory.js +0 -64
  128. package/v3/@swarmdo/plugin-iot-cognitum/dist/mcp-tools.d.ts +0 -8
  129. package/v3/@swarmdo/plugin-iot-cognitum/dist/mcp-tools.js +0 -703
  130. package/v3/@swarmdo/plugin-iot-cognitum/dist/plugin.d.ts +0 -23
  131. package/v3/@swarmdo/plugin-iot-cognitum/dist/plugin.js +0 -239
  132. package/v3/@swarmdo/plugin-iot-cognitum/dist/workers/anomaly-scan-worker.d.ts +0 -17
  133. package/v3/@swarmdo/plugin-iot-cognitum/dist/workers/anomaly-scan-worker.js +0 -42
  134. package/v3/@swarmdo/plugin-iot-cognitum/dist/workers/firmware-watch-worker.d.ts +0 -18
  135. package/v3/@swarmdo/plugin-iot-cognitum/dist/workers/firmware-watch-worker.js +0 -45
  136. package/v3/@swarmdo/plugin-iot-cognitum/dist/workers/health-probe-worker.d.ts +0 -19
  137. package/v3/@swarmdo/plugin-iot-cognitum/dist/workers/health-probe-worker.js +0 -50
  138. package/v3/@swarmdo/plugin-iot-cognitum/dist/workers/mesh-sync-worker.d.ts +0 -19
  139. package/v3/@swarmdo/plugin-iot-cognitum/dist/workers/mesh-sync-worker.js +0 -47
  140. package/v3/@swarmdo/plugin-iot-cognitum/dist/workers/telemetry-ingest-worker.d.ts +0 -17
  141. package/v3/@swarmdo/plugin-iot-cognitum/dist/workers/telemetry-ingest-worker.js +0 -40
  142. package/v3/@swarmdo/plugin-iot-cognitum/dist/workers/witness-audit-worker.d.ts +0 -18
  143. package/v3/@swarmdo/plugin-iot-cognitum/dist/workers/witness-audit-worker.js +0 -51
  144. package/v3/@swarmdo/testing/dist/fixtures/agent-fixtures.d.ts +0 -214
  145. package/v3/@swarmdo/testing/dist/fixtures/agent-fixtures.js +0 -595
  146. package/v3/@swarmdo/testing/dist/fixtures/agents.d.ts +0 -76
  147. package/v3/@swarmdo/testing/dist/fixtures/agents.js +0 -158
  148. package/v3/@swarmdo/testing/dist/fixtures/configurations.d.ts +0 -157
  149. package/v3/@swarmdo/testing/dist/fixtures/configurations.js +0 -337
  150. package/v3/@swarmdo/testing/dist/fixtures/index.d.ts +0 -10
  151. package/v3/@swarmdo/testing/dist/fixtures/index.js +0 -17
  152. package/v3/@swarmdo/testing/dist/fixtures/mcp-fixtures.d.ts +0 -329
  153. package/v3/@swarmdo/testing/dist/fixtures/mcp-fixtures.js +0 -714
  154. package/v3/@swarmdo/testing/dist/fixtures/memory-entries.d.ts +0 -159
  155. package/v3/@swarmdo/testing/dist/fixtures/memory-entries.js +0 -262
  156. package/v3/@swarmdo/testing/dist/fixtures/memory-fixtures.d.ts +0 -290
  157. package/v3/@swarmdo/testing/dist/fixtures/memory-fixtures.js +0 -547
  158. package/v3/@swarmdo/testing/dist/fixtures/swarm-fixtures.d.ts +0 -289
  159. package/v3/@swarmdo/testing/dist/fixtures/swarm-fixtures.js +0 -534
  160. package/v3/@swarmdo/testing/dist/fixtures/tasks.d.ts +0 -106
  161. package/v3/@swarmdo/testing/dist/fixtures/tasks.js +0 -229
  162. package/v3/@swarmdo/testing/dist/helpers/assertion-helpers.d.ts +0 -213
  163. package/v3/@swarmdo/testing/dist/helpers/assertion-helpers.js +0 -435
  164. package/v3/@swarmdo/testing/dist/helpers/assertions.d.ts +0 -135
  165. package/v3/@swarmdo/testing/dist/helpers/assertions.js +0 -217
  166. package/v3/@swarmdo/testing/dist/helpers/create-mock.d.ts +0 -96
  167. package/v3/@swarmdo/testing/dist/helpers/create-mock.js +0 -164
  168. package/v3/@swarmdo/testing/dist/helpers/index.d.ts +0 -14
  169. package/v3/@swarmdo/testing/dist/helpers/index.js +0 -22
  170. package/v3/@swarmdo/testing/dist/helpers/mock-factory.d.ts +0 -323
  171. package/v3/@swarmdo/testing/dist/helpers/mock-factory.js +0 -350
  172. package/v3/@swarmdo/testing/dist/helpers/setup-teardown.d.ts +0 -271
  173. package/v3/@swarmdo/testing/dist/helpers/setup-teardown.js +0 -446
  174. package/v3/@swarmdo/testing/dist/helpers/swarm-instance.d.ts +0 -142
  175. package/v3/@swarmdo/testing/dist/helpers/swarm-instance.js +0 -205
  176. package/v3/@swarmdo/testing/dist/helpers/test-application.d.ts +0 -190
  177. package/v3/@swarmdo/testing/dist/helpers/test-application.js +0 -138
  178. package/v3/@swarmdo/testing/dist/helpers/test-utils.d.ts +0 -274
  179. package/v3/@swarmdo/testing/dist/helpers/test-utils.js +0 -456
  180. package/v3/@swarmdo/testing/dist/index.d.ts +0 -42
  181. package/v3/@swarmdo/testing/dist/index.js +0 -66
  182. package/v3/@swarmdo/testing/dist/mocks/index.d.ts +0 -8
  183. package/v3/@swarmdo/testing/dist/mocks/index.js +0 -10
  184. package/v3/@swarmdo/testing/dist/mocks/mock-mcp-client.d.ts +0 -206
  185. package/v3/@swarmdo/testing/dist/mocks/mock-mcp-client.js +0 -575
  186. package/v3/@swarmdo/testing/dist/mocks/mock-services.d.ts +0 -287
  187. package/v3/@swarmdo/testing/dist/mocks/mock-services.js +0 -563
  188. package/v3/@swarmdo/testing/dist/regression/api-contract.d.ts +0 -109
  189. package/v3/@swarmdo/testing/dist/regression/api-contract.js +0 -374
  190. package/v3/@swarmdo/testing/dist/regression/index.d.ts +0 -18
  191. package/v3/@swarmdo/testing/dist/regression/index.js +0 -18
  192. package/v3/@swarmdo/testing/dist/regression/integration-regression.d.ts +0 -67
  193. package/v3/@swarmdo/testing/dist/regression/integration-regression.js +0 -334
  194. package/v3/@swarmdo/testing/dist/regression/performance-baseline.d.ts +0 -106
  195. package/v3/@swarmdo/testing/dist/regression/performance-baseline.js +0 -268
  196. package/v3/@swarmdo/testing/dist/regression/regression-runner.d.ts +0 -124
  197. package/v3/@swarmdo/testing/dist/regression/regression-runner.js +0 -227
  198. package/v3/@swarmdo/testing/dist/regression/security-regression.d.ts +0 -73
  199. package/v3/@swarmdo/testing/dist/regression/security-regression.js +0 -258
  200. package/v3/@swarmdo/testing/dist/setup.d.ts +0 -43
  201. package/v3/@swarmdo/testing/dist/setup.js +0 -91
  202. package/v3/@swarmdo/testing/dist/v2-compat/api-compat.test.d.ts +0 -10
  203. package/v3/@swarmdo/testing/dist/v2-compat/api-compat.test.js +0 -433
  204. package/v3/@swarmdo/testing/dist/v2-compat/cli-compat.test.d.ts +0 -10
  205. package/v3/@swarmdo/testing/dist/v2-compat/cli-compat.test.js +0 -352
  206. package/v3/@swarmdo/testing/dist/v2-compat/compatibility-validator.d.ts +0 -206
  207. package/v3/@swarmdo/testing/dist/v2-compat/compatibility-validator.js +0 -839
  208. package/v3/@swarmdo/testing/dist/v2-compat/hooks-compat.test.d.ts +0 -10
  209. package/v3/@swarmdo/testing/dist/v2-compat/hooks-compat.test.js +0 -428
  210. package/v3/@swarmdo/testing/dist/v2-compat/index.d.ts +0 -38
  211. package/v3/@swarmdo/testing/dist/v2-compat/index.js +0 -41
  212. package/v3/@swarmdo/testing/dist/v2-compat/mcp-compat.test.d.ts +0 -10
  213. package/v3/@swarmdo/testing/dist/v2-compat/mcp-compat.test.js +0 -419
  214. package/v3/@swarmdo/testing/dist/v2-compat/report-generator.d.ts +0 -34
  215. package/v3/@swarmdo/testing/dist/v2-compat/report-generator.js +0 -372
@@ -1,575 +0,0 @@
1
- /**
2
- * @swarmdo/testing - Mock MCP Client
3
- *
4
- * Comprehensive mock MCP client for testing CLI and server interactions.
5
- * Simulates full MCP protocol behavior with request/response tracking.
6
- */
7
- import { vi } from 'vitest';
8
- /**
9
- * Mock MCP Client with full protocol simulation
10
- */
11
- export class MockMCPClient {
12
- _connected = false;
13
- _session = null;
14
- _tools = new Map();
15
- _resources = new Map();
16
- _prompts = new Map();
17
- _requestHistory = [];
18
- _responseHistory = [];
19
- _toolHandlers = new Map();
20
- _errorSimulation = null;
21
- _latencySimulation = 0;
22
- // Mock methods for verification
23
- connect = vi.fn(async () => {
24
- if (this._errorSimulation?.onConnect) {
25
- throw new Error(this._errorSimulation.onConnect);
26
- }
27
- await this.simulateLatency();
28
- this._connected = true;
29
- this._session = {
30
- sessionId: `session-${Date.now()}`,
31
- clientInfo: {
32
- name: 'mock-client',
33
- version: '1.0.0',
34
- },
35
- capabilities: {
36
- tools: true,
37
- resources: true,
38
- prompts: true,
39
- },
40
- startedAt: new Date(),
41
- lastActivity: new Date(),
42
- requestCount: 0,
43
- };
44
- });
45
- disconnect = vi.fn(async () => {
46
- if (this._errorSimulation?.onDisconnect) {
47
- throw new Error(this._errorSimulation.onDisconnect);
48
- }
49
- this._connected = false;
50
- this._session = null;
51
- });
52
- callTool = vi.fn(async (name, params) => {
53
- this.ensureConnected();
54
- const request = {
55
- id: `req-${Date.now()}`,
56
- method: 'tools/call',
57
- params: { name, arguments: params },
58
- timestamp: new Date(),
59
- };
60
- this._requestHistory.push(request);
61
- if (this._session) {
62
- this._session.requestCount++;
63
- this._session.lastActivity = new Date();
64
- }
65
- await this.simulateLatency();
66
- // Check for error simulation
67
- if (this._errorSimulation?.onToolCall?.[name]) {
68
- const error = this._errorSimulation.onToolCall[name];
69
- const response = {
70
- id: request.id,
71
- error: typeof error === 'string' ? { code: -32000, message: error } : error,
72
- timestamp: new Date(),
73
- };
74
- this._responseHistory.push(response);
75
- throw new MCPClientError(response.error.message, response.error.code);
76
- }
77
- // Check for custom handler
78
- const handler = this._toolHandlers.get(name);
79
- if (handler) {
80
- const result = await handler(params);
81
- const response = {
82
- id: request.id,
83
- result,
84
- timestamp: new Date(),
85
- };
86
- this._responseHistory.push(response);
87
- return result;
88
- }
89
- // Check for registered tool
90
- const tool = this._tools.get(name);
91
- if (!tool) {
92
- const response = {
93
- id: request.id,
94
- error: { code: -32601, message: `Tool not found: ${name}` },
95
- timestamp: new Date(),
96
- };
97
- this._responseHistory.push(response);
98
- throw new MCPClientError(`Tool not found: ${name}`, -32601);
99
- }
100
- // Default success response
101
- const result = {
102
- content: [{ type: 'text', text: JSON.stringify({ success: true, tool: name, params }) }],
103
- };
104
- const response = {
105
- id: request.id,
106
- result,
107
- timestamp: new Date(),
108
- };
109
- this._responseHistory.push(response);
110
- return result;
111
- });
112
- listTools = vi.fn(async () => {
113
- this.ensureConnected();
114
- await this.simulateLatency();
115
- return Array.from(this._tools.values());
116
- });
117
- readResource = vi.fn(async (uri) => {
118
- this.ensureConnected();
119
- const request = {
120
- id: `req-${Date.now()}`,
121
- method: 'resources/read',
122
- params: { uri },
123
- timestamp: new Date(),
124
- };
125
- this._requestHistory.push(request);
126
- await this.simulateLatency();
127
- const resource = this._resources.get(uri);
128
- if (!resource) {
129
- throw new MCPClientError(`Resource not found: ${uri}`, -32002);
130
- }
131
- return {
132
- type: 'resource',
133
- resource: {
134
- uri,
135
- mimeType: resource.mimeType,
136
- text: JSON.stringify({ name: resource.name, description: resource.description }),
137
- },
138
- };
139
- });
140
- listResources = vi.fn(async () => {
141
- this.ensureConnected();
142
- await this.simulateLatency();
143
- return Array.from(this._resources.values());
144
- });
145
- getPrompt = vi.fn(async (name, args) => {
146
- this.ensureConnected();
147
- const prompt = this._prompts.get(name);
148
- if (!prompt) {
149
- throw new MCPClientError(`Prompt not found: ${name}`, -32003);
150
- }
151
- await this.simulateLatency();
152
- return {
153
- messages: [
154
- {
155
- role: 'user',
156
- content: { type: 'text', text: `Prompt: ${name}\nArgs: ${JSON.stringify(args)}` },
157
- },
158
- ],
159
- };
160
- });
161
- listPrompts = vi.fn(async () => {
162
- this.ensureConnected();
163
- await this.simulateLatency();
164
- return Array.from(this._prompts.values());
165
- });
166
- isConnected = vi.fn(() => this._connected);
167
- getSession = vi.fn(() => this._session);
168
- /**
169
- * Register a tool
170
- */
171
- registerTool(tool) {
172
- this._tools.set(tool.name, tool);
173
- }
174
- /**
175
- * Register multiple tools
176
- */
177
- registerTools(tools) {
178
- for (const tool of tools) {
179
- this.registerTool(tool);
180
- }
181
- }
182
- /**
183
- * Register a custom tool handler
184
- */
185
- setToolHandler(name, handler) {
186
- this._toolHandlers.set(name, handler);
187
- }
188
- /**
189
- * Register a resource
190
- */
191
- registerResource(resource) {
192
- this._resources.set(resource.uri, resource);
193
- }
194
- /**
195
- * Register multiple resources
196
- */
197
- registerResources(resources) {
198
- for (const resource of resources) {
199
- this.registerResource(resource);
200
- }
201
- }
202
- /**
203
- * Register a prompt
204
- */
205
- registerPrompt(prompt) {
206
- this._prompts.set(prompt.name, prompt);
207
- }
208
- /**
209
- * Register multiple prompts
210
- */
211
- registerPrompts(prompts) {
212
- for (const prompt of prompts) {
213
- this.registerPrompt(prompt);
214
- }
215
- }
216
- /**
217
- * Configure error simulation
218
- */
219
- simulateErrors(config) {
220
- this._errorSimulation = config;
221
- }
222
- /**
223
- * Configure latency simulation
224
- */
225
- setLatency(ms) {
226
- this._latencySimulation = ms;
227
- }
228
- /**
229
- * Get request history
230
- */
231
- getRequestHistory() {
232
- return [...this._requestHistory];
233
- }
234
- /**
235
- * Get response history
236
- */
237
- getResponseHistory() {
238
- return [...this._responseHistory];
239
- }
240
- /**
241
- * Get last request
242
- */
243
- getLastRequest() {
244
- return this._requestHistory[this._requestHistory.length - 1];
245
- }
246
- /**
247
- * Get last response
248
- */
249
- getLastResponse() {
250
- return this._responseHistory[this._responseHistory.length - 1];
251
- }
252
- /**
253
- * Clear history
254
- */
255
- clearHistory() {
256
- this._requestHistory = [];
257
- this._responseHistory = [];
258
- }
259
- /**
260
- * Reset client to initial state
261
- */
262
- reset() {
263
- this._connected = false;
264
- this._session = null;
265
- this._tools.clear();
266
- this._resources.clear();
267
- this._prompts.clear();
268
- this._requestHistory = [];
269
- this._responseHistory = [];
270
- this._toolHandlers.clear();
271
- this._errorSimulation = null;
272
- this._latencySimulation = 0;
273
- vi.clearAllMocks();
274
- }
275
- ensureConnected() {
276
- if (!this._connected) {
277
- throw new MCPClientError('Not connected', -32000);
278
- }
279
- }
280
- async simulateLatency() {
281
- if (this._latencySimulation > 0) {
282
- await new Promise(resolve => setTimeout(resolve, this._latencySimulation));
283
- }
284
- }
285
- }
286
- /**
287
- * Mock MCP Server for testing server-side behavior
288
- */
289
- export class MockMCPServer {
290
- _running = false;
291
- _config = null;
292
- _tools = new Map();
293
- _resources = new Map();
294
- _prompts = new Map();
295
- _connections = [];
296
- _requestLog = [];
297
- _errorCount = 0;
298
- start = vi.fn(async (config) => {
299
- this._config = config;
300
- this._running = true;
301
- // Register configured tools/resources/prompts
302
- if (config.tools) {
303
- for (const tool of config.tools) {
304
- this._tools.set(tool.name, tool);
305
- }
306
- }
307
- if (config.resources) {
308
- for (const resource of config.resources) {
309
- this._resources.set(resource.uri, resource);
310
- }
311
- }
312
- if (config.prompts) {
313
- for (const prompt of config.prompts) {
314
- this._prompts.set(prompt.name, prompt);
315
- }
316
- }
317
- });
318
- stop = vi.fn(async () => {
319
- for (const conn of this._connections) {
320
- await conn.close();
321
- }
322
- this._connections = [];
323
- this._running = false;
324
- });
325
- handleRequest = vi.fn(async (request) => {
326
- this._requestLog.push(request);
327
- try {
328
- switch (request.method) {
329
- case 'tools/call':
330
- return this.handleToolCall(request);
331
- case 'resources/read':
332
- return this.handleResourceRead(request);
333
- case 'prompts/get':
334
- return this.handlePromptGet(request);
335
- case 'tools/list':
336
- return { id: request.id, result: Array.from(this._tools.values()), timestamp: new Date() };
337
- case 'resources/list':
338
- return { id: request.id, result: Array.from(this._resources.values()), timestamp: new Date() };
339
- case 'prompts/list':
340
- return { id: request.id, result: Array.from(this._prompts.values()), timestamp: new Date() };
341
- default:
342
- throw new MCPClientError(`Unknown method: ${request.method}`, -32601);
343
- }
344
- }
345
- catch (error) {
346
- this._errorCount++;
347
- return {
348
- id: request.id,
349
- error: { code: -32000, message: error.message },
350
- timestamp: new Date(),
351
- };
352
- }
353
- });
354
- registerTool = vi.fn((tool) => {
355
- this._tools.set(tool.name, tool);
356
- });
357
- registerResource = vi.fn((resource) => {
358
- this._resources.set(resource.uri, resource);
359
- });
360
- registerPrompt = vi.fn((prompt) => {
361
- this._prompts.set(prompt.name, prompt);
362
- });
363
- getStatus = vi.fn(() => ({
364
- running: this._running,
365
- transport: this._config?.transport.type ?? 'stdio',
366
- connectedClients: this._connections.length,
367
- toolsRegistered: this._tools.size,
368
- resourcesRegistered: this._resources.size,
369
- promptsRegistered: this._prompts.size,
370
- requestsHandled: this._requestLog.length,
371
- errorsCount: this._errorCount,
372
- uptime: this._running ? Date.now() : 0,
373
- }));
374
- /**
375
- * Simulate a client connection
376
- */
377
- acceptConnection() {
378
- const conn = new MockMCPConnection(this);
379
- this._connections.push(conn);
380
- return conn;
381
- }
382
- /**
383
- * Get request log
384
- */
385
- getRequestLog() {
386
- return [...this._requestLog];
387
- }
388
- /**
389
- * Reset server
390
- */
391
- reset() {
392
- this._running = false;
393
- this._config = null;
394
- this._tools.clear();
395
- this._resources.clear();
396
- this._prompts.clear();
397
- this._connections = [];
398
- this._requestLog = [];
399
- this._errorCount = 0;
400
- vi.clearAllMocks();
401
- }
402
- handleToolCall(request) {
403
- const { name, arguments: params } = request.params;
404
- const tool = this._tools.get(name);
405
- if (!tool) {
406
- return {
407
- id: request.id,
408
- error: { code: -32601, message: `Tool not found: ${name}` },
409
- timestamp: new Date(),
410
- };
411
- }
412
- return {
413
- id: request.id,
414
- result: {
415
- content: [{ type: 'text', text: JSON.stringify({ success: true, tool: name }) }],
416
- },
417
- timestamp: new Date(),
418
- };
419
- }
420
- handleResourceRead(request) {
421
- const { uri } = request.params;
422
- const resource = this._resources.get(uri);
423
- if (!resource) {
424
- return {
425
- id: request.id,
426
- error: { code: -32002, message: `Resource not found: ${uri}` },
427
- timestamp: new Date(),
428
- };
429
- }
430
- return {
431
- id: request.id,
432
- result: {
433
- type: 'resource',
434
- resource: { uri, mimeType: resource.mimeType, text: '{}' },
435
- },
436
- timestamp: new Date(),
437
- };
438
- }
439
- handlePromptGet(request) {
440
- const { name } = request.params;
441
- const prompt = this._prompts.get(name);
442
- if (!prompt) {
443
- return {
444
- id: request.id,
445
- error: { code: -32003, message: `Prompt not found: ${name}` },
446
- timestamp: new Date(),
447
- };
448
- }
449
- return {
450
- id: request.id,
451
- result: {
452
- messages: [{ role: 'user', content: { type: 'text', text: `Prompt: ${name}` } }],
453
- },
454
- timestamp: new Date(),
455
- };
456
- }
457
- }
458
- /**
459
- * Mock MCP Connection
460
- */
461
- export class MockMCPConnection {
462
- _open = true;
463
- _server;
464
- constructor(server) {
465
- this._server = server;
466
- }
467
- send = vi.fn(async (request) => {
468
- if (!this._open) {
469
- throw new MCPClientError('Connection closed', -32000);
470
- }
471
- return this._server.handleRequest(request);
472
- });
473
- close = vi.fn(async () => {
474
- this._open = false;
475
- });
476
- isOpen() {
477
- return this._open;
478
- }
479
- }
480
- /**
481
- * MCP Client Error
482
- */
483
- export class MCPClientError extends Error {
484
- code;
485
- constructor(message, code) {
486
- super(message);
487
- this.code = code;
488
- this.name = 'MCPClientError';
489
- }
490
- }
491
- /**
492
- * Create a pre-configured mock MCP client with standard tools
493
- */
494
- export function createStandardMockMCPClient() {
495
- const client = new MockMCPClient();
496
- // Register standard Swarmdo tools
497
- client.registerTool({
498
- name: 'swarm_init',
499
- description: 'Initialize a new swarm',
500
- inputSchema: {
501
- type: 'object',
502
- properties: {
503
- topology: { type: 'string' },
504
- maxAgents: { type: 'number' },
505
- },
506
- required: ['topology'],
507
- },
508
- });
509
- client.registerTool({
510
- name: 'agent_spawn',
511
- description: 'Spawn a new agent',
512
- inputSchema: {
513
- type: 'object',
514
- properties: {
515
- type: { type: 'string' },
516
- name: { type: 'string' },
517
- },
518
- required: ['type'],
519
- },
520
- });
521
- client.registerTool({
522
- name: 'task_orchestrate',
523
- description: 'Orchestrate a task',
524
- inputSchema: {
525
- type: 'object',
526
- properties: {
527
- taskName: { type: 'string' },
528
- taskType: { type: 'string' },
529
- },
530
- required: ['taskName', 'taskType'],
531
- },
532
- });
533
- client.registerTool({
534
- name: 'memory_store',
535
- description: 'Store a value in memory',
536
- inputSchema: {
537
- type: 'object',
538
- properties: {
539
- key: { type: 'string' },
540
- value: { type: 'object' },
541
- },
542
- required: ['key', 'value'],
543
- },
544
- });
545
- client.registerTool({
546
- name: 'memory_search',
547
- description: 'Search memory',
548
- inputSchema: {
549
- type: 'object',
550
- properties: {
551
- query: { type: 'string' },
552
- topK: { type: 'number' },
553
- },
554
- required: ['query'],
555
- },
556
- });
557
- return client;
558
- }
559
- /**
560
- * Create a mock MCP client that simulates failures
561
- */
562
- export function createFailingMockMCPClient(errorConfig) {
563
- const client = new MockMCPClient();
564
- client.simulateErrors(errorConfig);
565
- return client;
566
- }
567
- /**
568
- * Create a mock MCP client with latency
569
- */
570
- export function createSlowMockMCPClient(latencyMs) {
571
- const client = new MockMCPClient();
572
- client.setLatency(latencyMs);
573
- return client;
574
- }
575
- //# sourceMappingURL=mock-mcp-client.js.map