@weavelogic/knowledge-graph-agent 0.6.0 → 0.7.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.
Files changed (219) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +70 -3
  3. package/dist/_virtual/__vite-browser-external.js +2 -2
  4. package/dist/_virtual/__vite-browser-external.js.map +1 -1
  5. package/dist/_virtual/index12.js +7 -0
  6. package/dist/_virtual/index12.js.map +1 -0
  7. package/dist/_virtual/ort-web.min.js +8 -0
  8. package/dist/_virtual/ort-web.min.js.map +1 -0
  9. package/dist/_virtual/ort-web.min2.js +5 -0
  10. package/dist/_virtual/ort-web.min2.js.map +1 -0
  11. package/dist/agents/base-agent.d.ts +63 -0
  12. package/dist/agents/base-agent.d.ts.map +1 -1
  13. package/dist/agents/base-agent.js +139 -0
  14. package/dist/agents/base-agent.js.map +1 -1
  15. package/dist/agents/coordinator-agent.d.ts +422 -0
  16. package/dist/agents/coordinator-agent.d.ts.map +1 -0
  17. package/dist/agents/documenter-agent.d.ts +298 -0
  18. package/dist/agents/documenter-agent.d.ts.map +1 -0
  19. package/dist/agents/index.d.ts +11 -1
  20. package/dist/agents/index.d.ts.map +1 -1
  21. package/dist/agents/index.js +4 -0
  22. package/dist/agents/index.js.map +1 -1
  23. package/dist/agents/mixins/index.d.ts +9 -0
  24. package/dist/agents/mixins/index.d.ts.map +1 -0
  25. package/dist/agents/mixins/trajectory-mixin.d.ts +112 -0
  26. package/dist/agents/mixins/trajectory-mixin.d.ts.map +1 -0
  27. package/dist/agents/optimizer-agent.d.ts +388 -0
  28. package/dist/agents/optimizer-agent.d.ts.map +1 -0
  29. package/dist/agents/planner-agent.d.ts +395 -0
  30. package/dist/agents/planner-agent.d.ts.map +1 -0
  31. package/dist/agents/registry.d.ts.map +1 -1
  32. package/dist/agents/registry.js +5 -0
  33. package/dist/agents/registry.js.map +1 -1
  34. package/dist/agents/reviewer-agent.d.ts +330 -0
  35. package/dist/agents/reviewer-agent.d.ts.map +1 -0
  36. package/dist/agents/types.d.ts +12 -1
  37. package/dist/agents/types.d.ts.map +1 -1
  38. package/dist/agents/types.js +1 -0
  39. package/dist/agents/types.js.map +1 -1
  40. package/dist/cli/commands/hive-mind/add-frontmatter.d.ts +102 -0
  41. package/dist/cli/commands/hive-mind/add-frontmatter.d.ts.map +1 -0
  42. package/dist/cli/commands/hive-mind/add-frontmatter.js +439 -0
  43. package/dist/cli/commands/hive-mind/add-frontmatter.js.map +1 -0
  44. package/dist/cli/commands/hive-mind/analyze-links.d.ts +80 -0
  45. package/dist/cli/commands/hive-mind/analyze-links.d.ts.map +1 -0
  46. package/dist/cli/commands/hive-mind/analyze-links.js +367 -0
  47. package/dist/cli/commands/hive-mind/analyze-links.js.map +1 -0
  48. package/dist/cli/commands/hive-mind/find-connections.d.ts +75 -0
  49. package/dist/cli/commands/hive-mind/find-connections.d.ts.map +1 -0
  50. package/dist/cli/commands/hive-mind/find-connections.js +347 -0
  51. package/dist/cli/commands/hive-mind/find-connections.js.map +1 -0
  52. package/dist/cli/commands/hive-mind/index.d.ts +37 -0
  53. package/dist/cli/commands/hive-mind/index.d.ts.map +1 -0
  54. package/dist/cli/commands/hive-mind/index.js +33 -0
  55. package/dist/cli/commands/hive-mind/index.js.map +1 -0
  56. package/dist/cli/commands/hive-mind/validate-names.d.ts +79 -0
  57. package/dist/cli/commands/hive-mind/validate-names.d.ts.map +1 -0
  58. package/dist/cli/commands/hive-mind/validate-names.js +353 -0
  59. package/dist/cli/commands/hive-mind/validate-names.js.map +1 -0
  60. package/dist/cli/commands/vector.js +2 -0
  61. package/dist/cli/commands/vector.js.map +1 -1
  62. package/dist/cli/index.d.ts.map +1 -1
  63. package/dist/cli/index.js +7 -0
  64. package/dist/cli/index.js.map +1 -1
  65. package/dist/equilibrium/agent-equilibrium.d.ts +194 -0
  66. package/dist/equilibrium/agent-equilibrium.d.ts.map +1 -0
  67. package/dist/equilibrium/agent-equilibrium.js +304 -0
  68. package/dist/equilibrium/agent-equilibrium.js.map +1 -0
  69. package/dist/equilibrium/graph-equilibrium.d.ts +177 -0
  70. package/dist/equilibrium/graph-equilibrium.d.ts.map +1 -0
  71. package/dist/equilibrium/index.d.ts +11 -0
  72. package/dist/equilibrium/index.d.ts.map +1 -0
  73. package/dist/equilibrium/memory-equilibrium.d.ts +153 -0
  74. package/dist/equilibrium/memory-equilibrium.d.ts.map +1 -0
  75. package/dist/graphql/resolvers/index.d.ts.map +1 -1
  76. package/dist/graphql/resolvers/queries.d.ts +11 -0
  77. package/dist/graphql/resolvers/queries.d.ts.map +1 -1
  78. package/dist/index.d.ts +2 -0
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +10 -4
  81. package/dist/index.js.map +1 -1
  82. package/dist/inference/index.d.ts +9 -0
  83. package/dist/inference/index.d.ts.map +1 -0
  84. package/dist/inference/model-selection.d.ts +131 -0
  85. package/dist/inference/model-selection.d.ts.map +1 -0
  86. package/dist/integrations/agentic-flow/adapters/agent-booster-adapter.d.ts +265 -0
  87. package/dist/integrations/agentic-flow/adapters/agent-booster-adapter.d.ts.map +1 -0
  88. package/dist/integrations/agentic-flow/adapters/agentdb-adapter.d.ts +197 -0
  89. package/dist/integrations/agentic-flow/adapters/agentdb-adapter.d.ts.map +1 -0
  90. package/dist/integrations/agentic-flow/adapters/agentdb-vector-store.d.ts +249 -0
  91. package/dist/integrations/agentic-flow/adapters/agentdb-vector-store.d.ts.map +1 -0
  92. package/dist/integrations/agentic-flow/adapters/base-adapter.d.ts +120 -0
  93. package/dist/integrations/agentic-flow/adapters/base-adapter.d.ts.map +1 -0
  94. package/dist/integrations/agentic-flow/adapters/federation-hub-adapter.d.ts +444 -0
  95. package/dist/integrations/agentic-flow/adapters/federation-hub-adapter.d.ts.map +1 -0
  96. package/dist/integrations/agentic-flow/adapters/index.d.ts +17 -0
  97. package/dist/integrations/agentic-flow/adapters/index.d.ts.map +1 -0
  98. package/dist/integrations/agentic-flow/adapters/model-router-adapter.d.ts +242 -0
  99. package/dist/integrations/agentic-flow/adapters/model-router-adapter.d.ts.map +1 -0
  100. package/dist/integrations/agentic-flow/adapters/quic-transport-adapter.d.ts +364 -0
  101. package/dist/integrations/agentic-flow/adapters/quic-transport-adapter.d.ts.map +1 -0
  102. package/dist/integrations/agentic-flow/adapters/reasoning-bank-adapter.d.ts +209 -0
  103. package/dist/integrations/agentic-flow/adapters/reasoning-bank-adapter.d.ts.map +1 -0
  104. package/dist/integrations/agentic-flow/benchmark/index.d.ts +9 -0
  105. package/dist/integrations/agentic-flow/benchmark/index.d.ts.map +1 -0
  106. package/dist/integrations/agentic-flow/benchmark/vector-benchmark.d.ts +253 -0
  107. package/dist/integrations/agentic-flow/benchmark/vector-benchmark.d.ts.map +1 -0
  108. package/dist/integrations/agentic-flow/config.d.ts +109 -0
  109. package/dist/integrations/agentic-flow/config.d.ts.map +1 -0
  110. package/dist/integrations/agentic-flow/feature-flags.d.ts +140 -0
  111. package/dist/integrations/agentic-flow/feature-flags.d.ts.map +1 -0
  112. package/dist/integrations/agentic-flow/index.d.ts +22 -0
  113. package/dist/integrations/agentic-flow/index.d.ts.map +1 -0
  114. package/dist/integrations/agentic-flow/migration/index.d.ts +9 -0
  115. package/dist/integrations/agentic-flow/migration/index.d.ts.map +1 -0
  116. package/dist/integrations/agentic-flow/migration/migrate-to-agentdb.d.ts +242 -0
  117. package/dist/integrations/agentic-flow/migration/migrate-to-agentdb.d.ts.map +1 -0
  118. package/dist/learning/index.d.ts +91 -0
  119. package/dist/learning/index.d.ts.map +1 -0
  120. package/dist/learning/learning-loop.d.ts +176 -0
  121. package/dist/learning/learning-loop.d.ts.map +1 -0
  122. package/dist/learning/services/ab-testing-framework.d.ts +135 -0
  123. package/dist/learning/services/ab-testing-framework.d.ts.map +1 -0
  124. package/dist/learning/services/agent-priming-service.d.ts +207 -0
  125. package/dist/learning/services/agent-priming-service.d.ts.map +1 -0
  126. package/dist/learning/services/daily-log-generator.d.ts +113 -0
  127. package/dist/learning/services/daily-log-generator.d.ts.map +1 -0
  128. package/dist/learning/services/index.d.ts +14 -0
  129. package/dist/learning/services/index.d.ts.map +1 -0
  130. package/dist/learning/services/memory-extraction-service.d.ts +87 -0
  131. package/dist/learning/services/memory-extraction-service.d.ts.map +1 -0
  132. package/dist/learning/services/task-completion-consumer.d.ts +162 -0
  133. package/dist/learning/services/task-completion-consumer.d.ts.map +1 -0
  134. package/dist/learning/services/trajectory-tracker.d.ts +174 -0
  135. package/dist/learning/services/trajectory-tracker.d.ts.map +1 -0
  136. package/dist/learning/types.d.ts +516 -0
  137. package/dist/learning/types.d.ts.map +1 -0
  138. package/dist/mcp/clients/claude-flow-memory-client.d.ts +259 -0
  139. package/dist/mcp/clients/claude-flow-memory-client.d.ts.map +1 -0
  140. package/dist/mcp/clients/claude-flow-memory-client.js +305 -0
  141. package/dist/mcp/clients/claude-flow-memory-client.js.map +1 -0
  142. package/dist/mcp/clients/index.d.ts +11 -0
  143. package/dist/mcp/clients/index.d.ts.map +1 -0
  144. package/dist/mcp/clients/mcp-client-adapter.d.ts +146 -0
  145. package/dist/mcp/clients/mcp-client-adapter.d.ts.map +1 -0
  146. package/dist/mcp/clients/mcp-client-adapter.js +372 -0
  147. package/dist/mcp/clients/mcp-client-adapter.js.map +1 -0
  148. package/dist/mcp/index.d.ts +10 -0
  149. package/dist/mcp/index.d.ts.map +1 -0
  150. package/dist/memory/vault-sync.d.ts +12 -0
  151. package/dist/memory/vault-sync.d.ts.map +1 -1
  152. package/dist/memory/vault-sync.js +94 -11
  153. package/dist/memory/vault-sync.js.map +1 -1
  154. package/dist/node_modules/@huggingface/jinja/dist/index.js +118 -0
  155. package/dist/node_modules/@huggingface/jinja/dist/index.js.map +1 -0
  156. package/dist/node_modules/@typescript-eslint/project-service/dist/index.js +1 -1
  157. package/dist/node_modules/@xenova/transformers/src/backends/onnx.js +24 -0
  158. package/dist/node_modules/@xenova/transformers/src/backends/onnx.js.map +1 -0
  159. package/dist/node_modules/@xenova/transformers/src/configs.js +52 -0
  160. package/dist/node_modules/@xenova/transformers/src/configs.js.map +1 -0
  161. package/dist/node_modules/@xenova/transformers/src/env.js +35 -0
  162. package/dist/node_modules/@xenova/transformers/src/env.js.map +1 -0
  163. package/dist/node_modules/@xenova/transformers/src/models.js +3852 -0
  164. package/dist/node_modules/@xenova/transformers/src/models.js.map +1 -0
  165. package/dist/node_modules/@xenova/transformers/src/tokenizers.js +144 -0
  166. package/dist/node_modules/@xenova/transformers/src/tokenizers.js.map +1 -0
  167. package/dist/node_modules/@xenova/transformers/src/utils/core.js +52 -0
  168. package/dist/node_modules/@xenova/transformers/src/utils/core.js.map +1 -0
  169. package/dist/node_modules/@xenova/transformers/src/utils/generation.js +623 -0
  170. package/dist/node_modules/@xenova/transformers/src/utils/generation.js.map +1 -0
  171. package/dist/node_modules/@xenova/transformers/src/utils/hub.js +395 -0
  172. package/dist/node_modules/@xenova/transformers/src/utils/hub.js.map +1 -0
  173. package/dist/node_modules/@xenova/transformers/src/utils/image.js +12 -0
  174. package/dist/node_modules/@xenova/transformers/src/utils/image.js.map +1 -0
  175. package/dist/node_modules/@xenova/transformers/src/utils/maths.js +89 -0
  176. package/dist/node_modules/@xenova/transformers/src/utils/maths.js.map +1 -0
  177. package/dist/node_modules/@xenova/transformers/src/utils/tensor.js +750 -0
  178. package/dist/node_modules/@xenova/transformers/src/utils/tensor.js.map +1 -0
  179. package/dist/node_modules/fdir/dist/index.js +13 -13
  180. package/dist/node_modules/fdir/dist/index.js.map +1 -1
  181. package/dist/node_modules/onnxruntime-common/dist/lib/backend-impl.js +67 -0
  182. package/dist/node_modules/onnxruntime-common/dist/lib/backend-impl.js.map +1 -0
  183. package/dist/node_modules/onnxruntime-common/dist/lib/env-impl.js +24 -0
  184. package/dist/node_modules/onnxruntime-common/dist/lib/env-impl.js.map +1 -0
  185. package/dist/node_modules/onnxruntime-common/dist/lib/env.js +6 -0
  186. package/dist/node_modules/onnxruntime-common/dist/lib/env.js.map +1 -0
  187. package/dist/node_modules/onnxruntime-common/dist/lib/index.js +11 -0
  188. package/dist/node_modules/onnxruntime-common/dist/lib/index.js.map +1 -0
  189. package/dist/node_modules/onnxruntime-common/dist/lib/inference-session-impl.js +162 -0
  190. package/dist/node_modules/onnxruntime-common/dist/lib/inference-session-impl.js.map +1 -0
  191. package/dist/node_modules/onnxruntime-common/dist/lib/inference-session.js +6 -0
  192. package/dist/node_modules/onnxruntime-common/dist/lib/inference-session.js.map +1 -0
  193. package/dist/node_modules/onnxruntime-common/dist/lib/tensor-impl.js +393 -0
  194. package/dist/node_modules/onnxruntime-common/dist/lib/tensor-impl.js.map +1 -0
  195. package/dist/node_modules/onnxruntime-common/dist/lib/tensor.js +6 -0
  196. package/dist/node_modules/onnxruntime-common/dist/lib/tensor.js.map +1 -0
  197. package/dist/node_modules/onnxruntime-web/dist/ort-web.min.js +12919 -0
  198. package/dist/node_modules/onnxruntime-web/dist/ort-web.min.js.map +1 -0
  199. package/dist/node_modules/tinyglobby/dist/index.js +14 -14
  200. package/dist/node_modules/tinyglobby/dist/index.js.map +1 -1
  201. package/dist/node_modules/typescript/lib/typescript.js +24 -24
  202. package/dist/node_modules/typescript/lib/typescript.js.map +1 -1
  203. package/dist/transport/agent-transport.d.ts +269 -0
  204. package/dist/transport/agent-transport.d.ts.map +1 -0
  205. package/dist/transport/index.d.ts +10 -0
  206. package/dist/transport/index.d.ts.map +1 -0
  207. package/dist/vector/index.d.ts +1 -1
  208. package/dist/vector/index.d.ts.map +1 -1
  209. package/dist/vector/services/embedding-service.d.ts +244 -0
  210. package/dist/vector/services/embedding-service.d.ts.map +1 -0
  211. package/dist/vector/services/embedding-service.js +10 -0
  212. package/dist/vector/services/embedding-service.js.map +1 -0
  213. package/dist/vector/services/hybrid-search.d.ts +320 -0
  214. package/dist/vector/services/hybrid-search.d.ts.map +1 -0
  215. package/dist/vector/services/hybrid-search.js +3 -0
  216. package/dist/vector/services/hybrid-search.js.map +1 -0
  217. package/dist/vector/services/index.d.ts +4 -0
  218. package/dist/vector/services/index.d.ts.map +1 -1
  219. package/package.json +10 -1
@@ -0,0 +1,259 @@
1
+ /**
2
+ * Claude-Flow Memory Client
3
+ *
4
+ * High-level memory client that wraps McpClientAdapter with
5
+ * knowledge-graph-specific functionality and type safety.
6
+ *
7
+ * @module mcp/clients/claude-flow-memory-client
8
+ */
9
+ import { McpClientAdapter, type McpClientConfig } from './mcp-client-adapter.js';
10
+ /**
11
+ * Memory node entry for knowledge graph
12
+ */
13
+ export interface MemoryNodeEntry {
14
+ id: string;
15
+ title: string;
16
+ type: string;
17
+ status: string;
18
+ path: string;
19
+ tags: string[];
20
+ outgoingLinks: string[];
21
+ incomingLinks: string[];
22
+ summary: string;
23
+ contentHash: string;
24
+ lastModified: string;
25
+ syncedAt: string;
26
+ }
27
+ /**
28
+ * Memory index entry
29
+ */
30
+ export interface MemoryIndexEntry {
31
+ id: string;
32
+ title: string;
33
+ type: string;
34
+ path: string;
35
+ }
36
+ /**
37
+ * Memory metadata
38
+ */
39
+ export interface MemoryMetadata {
40
+ lastSync: string;
41
+ nodeCount: number;
42
+ namespace: string;
43
+ version?: string;
44
+ }
45
+ /**
46
+ * Graph stats stored in memory
47
+ */
48
+ export interface MemoryGraphStats {
49
+ totalNodes: number;
50
+ totalEdges: number;
51
+ nodesByType: Record<string, number>;
52
+ nodesByStatus: Record<string, number>;
53
+ averageLinksPerNode: number;
54
+ orphanNodes: number;
55
+ }
56
+ /**
57
+ * Client configuration
58
+ */
59
+ export interface ClaudeFlowMemoryClientConfig extends Partial<McpClientConfig> {
60
+ /** Memory namespace for knowledge graph (default: 'knowledge-graph') */
61
+ namespace?: string;
62
+ /** Key prefix for nodes (default: 'node/') */
63
+ nodeKeyPrefix?: string;
64
+ /** Key prefix for indexes (default: 'index/') */
65
+ indexKeyPrefix?: string;
66
+ }
67
+ /**
68
+ * Batch operation result
69
+ */
70
+ export interface BatchOperationResult {
71
+ total: number;
72
+ succeeded: number;
73
+ failed: number;
74
+ errors: Array<{
75
+ key: string;
76
+ error: string;
77
+ }>;
78
+ }
79
+ /**
80
+ * Claude-Flow Memory Client
81
+ *
82
+ * Provides high-level memory operations for the knowledge graph agent
83
+ * with proper typing and batch operations support.
84
+ *
85
+ * @example
86
+ * ```typescript
87
+ * const client = new ClaudeFlowMemoryClient({
88
+ * namespace: 'my-project-kg',
89
+ * });
90
+ *
91
+ * // Store a node
92
+ * await client.storeNode({
93
+ * id: 'abc123',
94
+ * title: 'My Node',
95
+ * type: 'document',
96
+ * // ...
97
+ * });
98
+ *
99
+ * // Retrieve a node
100
+ * const node = await client.getNode('abc123');
101
+ * ```
102
+ */
103
+ export declare class ClaudeFlowMemoryClient {
104
+ private adapter;
105
+ private namespace;
106
+ private nodeKeyPrefix;
107
+ private indexKeyPrefix;
108
+ constructor(config?: ClaudeFlowMemoryClientConfig);
109
+ /**
110
+ * Store a knowledge node in memory
111
+ *
112
+ * @param node - The node to store
113
+ * @param ttl - Optional TTL in seconds
114
+ * @returns Whether the operation succeeded
115
+ */
116
+ storeNode(node: MemoryNodeEntry, ttl?: number): Promise<boolean>;
117
+ /**
118
+ * Retrieve a knowledge node from memory
119
+ *
120
+ * @param nodeId - The node ID
121
+ * @returns The node or null if not found
122
+ */
123
+ getNode(nodeId: string): Promise<MemoryNodeEntry | null>;
124
+ /**
125
+ * Delete a knowledge node from memory
126
+ *
127
+ * @param nodeId - The node ID to delete
128
+ * @returns Whether the operation succeeded
129
+ */
130
+ deleteNode(nodeId: string): Promise<boolean>;
131
+ /**
132
+ * Store multiple nodes in batch
133
+ *
134
+ * @param nodes - Array of nodes to store
135
+ * @param ttl - Optional TTL in seconds
136
+ * @returns Batch operation result
137
+ */
138
+ storeNodesBatch(nodes: MemoryNodeEntry[], ttl?: number): Promise<BatchOperationResult>;
139
+ /**
140
+ * Search for nodes by pattern
141
+ *
142
+ * @param pattern - Search pattern (e.g., 'node/*', 'node/abc*')
143
+ * @param limit - Maximum results
144
+ * @returns Array of matching node keys
145
+ */
146
+ searchNodes(pattern: string, limit?: number): Promise<string[]>;
147
+ /**
148
+ * Store the node index
149
+ *
150
+ * @param entries - Index entries
151
+ * @returns Whether the operation succeeded
152
+ */
153
+ storeNodeIndex(entries: MemoryIndexEntry[]): Promise<boolean>;
154
+ /**
155
+ * Retrieve the node index
156
+ *
157
+ * @returns Array of index entries or null
158
+ */
159
+ getNodeIndex(): Promise<MemoryIndexEntry[] | null>;
160
+ /**
161
+ * Store the tag index
162
+ *
163
+ * @param tagIndex - Map of tags to node IDs
164
+ * @returns Whether the operation succeeded
165
+ */
166
+ storeTagIndex(tagIndex: Record<string, string[]>): Promise<boolean>;
167
+ /**
168
+ * Retrieve the tag index
169
+ *
170
+ * @returns Tag index or null
171
+ */
172
+ getTagIndex(): Promise<Record<string, string[]> | null>;
173
+ /**
174
+ * Store graph statistics
175
+ *
176
+ * @param stats - Graph stats
177
+ * @returns Whether the operation succeeded
178
+ */
179
+ storeStats(stats: MemoryGraphStats): Promise<boolean>;
180
+ /**
181
+ * Retrieve graph statistics
182
+ *
183
+ * @returns Graph stats or null
184
+ */
185
+ getStats(): Promise<MemoryGraphStats | null>;
186
+ /**
187
+ * Store metadata
188
+ *
189
+ * @param metadata - Metadata to store
190
+ * @returns Whether the operation succeeded
191
+ */
192
+ storeMetadata(metadata: MemoryMetadata): Promise<boolean>;
193
+ /**
194
+ * Retrieve metadata
195
+ *
196
+ * @returns Metadata or null
197
+ */
198
+ getMetadata(): Promise<MemoryMetadata | null>;
199
+ /**
200
+ * Store a custom key-value pair
201
+ *
202
+ * @param key - Storage key
203
+ * @param value - Value to store
204
+ * @param ttl - Optional TTL in seconds
205
+ * @returns Whether the operation succeeded
206
+ */
207
+ store(key: string, value: unknown, ttl?: number): Promise<boolean>;
208
+ /**
209
+ * Retrieve a custom key
210
+ *
211
+ * @param key - Storage key
212
+ * @returns Value or null
213
+ */
214
+ retrieve<T = unknown>(key: string): Promise<T | null>;
215
+ /**
216
+ * Delete a custom key
217
+ *
218
+ * @param key - Storage key
219
+ * @returns Whether the operation succeeded
220
+ */
221
+ delete(key: string): Promise<boolean>;
222
+ /**
223
+ * Search for keys by pattern
224
+ *
225
+ * @param pattern - Search pattern
226
+ * @param limit - Maximum results
227
+ * @returns Array of matching keys
228
+ */
229
+ search(pattern: string, limit?: number): Promise<string[]>;
230
+ /**
231
+ * List all keys in the namespace
232
+ *
233
+ * @returns Array of keys
234
+ */
235
+ listKeys(): Promise<string[]>;
236
+ /**
237
+ * Check if CLI is available
238
+ *
239
+ * @returns Whether CLI is available
240
+ */
241
+ isCliAvailable(): Promise<boolean>;
242
+ /**
243
+ * Get the configured namespace
244
+ */
245
+ getNamespace(): string;
246
+ /**
247
+ * Get the underlying adapter (for advanced usage)
248
+ */
249
+ getAdapter(): McpClientAdapter;
250
+ /**
251
+ * Clear all fallback storage
252
+ */
253
+ clearFallback(): void;
254
+ }
255
+ /**
256
+ * Create a configured Claude-Flow memory client
257
+ */
258
+ export declare function createClaudeFlowMemoryClient(config?: ClaudeFlowMemoryClientConfig): ClaudeFlowMemoryClient;
259
+ //# sourceMappingURL=claude-flow-memory-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-flow-memory-client.d.ts","sourceRoot":"","sources":["../../../src/mcp/clients/claude-flow-memory-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,305 @@
1
+ import { createLogger } from "../../utils/logger.js";
2
+ import { createMcpClientAdapter } from "./mcp-client-adapter.js";
3
+ const logger = createLogger("claude-flow-memory-client");
4
+ class ClaudeFlowMemoryClient {
5
+ adapter;
6
+ namespace;
7
+ nodeKeyPrefix;
8
+ indexKeyPrefix;
9
+ constructor(config = {}) {
10
+ this.adapter = createMcpClientAdapter({
11
+ maxRetries: config.maxRetries,
12
+ retryDelayMs: config.retryDelayMs,
13
+ timeoutMs: config.timeoutMs,
14
+ fallbackEnabled: config.fallbackEnabled,
15
+ cliCommand: config.cliCommand
16
+ });
17
+ this.namespace = config.namespace ?? "knowledge-graph";
18
+ this.nodeKeyPrefix = config.nodeKeyPrefix ?? "node/";
19
+ this.indexKeyPrefix = config.indexKeyPrefix ?? "index/";
20
+ }
21
+ /**
22
+ * Store a knowledge node in memory
23
+ *
24
+ * @param node - The node to store
25
+ * @param ttl - Optional TTL in seconds
26
+ * @returns Whether the operation succeeded
27
+ */
28
+ async storeNode(node, ttl) {
29
+ const key = `${this.nodeKeyPrefix}${node.id}`;
30
+ const success = await this.adapter.memoryStore(key, node, this.namespace, ttl);
31
+ if (success) {
32
+ logger.debug("Stored node in memory", { nodeId: node.id });
33
+ } else {
34
+ logger.error("Failed to store node in memory", void 0, { nodeId: node.id });
35
+ }
36
+ return success;
37
+ }
38
+ /**
39
+ * Retrieve a knowledge node from memory
40
+ *
41
+ * @param nodeId - The node ID
42
+ * @returns The node or null if not found
43
+ */
44
+ async getNode(nodeId) {
45
+ const key = `${this.nodeKeyPrefix}${nodeId}`;
46
+ const value = await this.adapter.memoryRetrieve(key, this.namespace);
47
+ if (!value) {
48
+ return null;
49
+ }
50
+ try {
51
+ return JSON.parse(value);
52
+ } catch {
53
+ logger.warn("Failed to parse node from memory", { nodeId, value: value.substring(0, 100) });
54
+ return null;
55
+ }
56
+ }
57
+ /**
58
+ * Delete a knowledge node from memory
59
+ *
60
+ * @param nodeId - The node ID to delete
61
+ * @returns Whether the operation succeeded
62
+ */
63
+ async deleteNode(nodeId) {
64
+ const key = `${this.nodeKeyPrefix}${nodeId}`;
65
+ return this.adapter.memoryDelete(key, this.namespace);
66
+ }
67
+ /**
68
+ * Store multiple nodes in batch
69
+ *
70
+ * @param nodes - Array of nodes to store
71
+ * @param ttl - Optional TTL in seconds
72
+ * @returns Batch operation result
73
+ */
74
+ async storeNodesBatch(nodes, ttl) {
75
+ const result = {
76
+ total: nodes.length,
77
+ succeeded: 0,
78
+ failed: 0,
79
+ errors: []
80
+ };
81
+ const batchSize = 10;
82
+ for (let i = 0; i < nodes.length; i += batchSize) {
83
+ const batch = nodes.slice(i, i + batchSize);
84
+ const promises = batch.map(async (node) => {
85
+ const success = await this.storeNode(node, ttl);
86
+ if (success) {
87
+ result.succeeded++;
88
+ } else {
89
+ result.failed++;
90
+ result.errors.push({ key: node.id, error: "Failed to store" });
91
+ }
92
+ });
93
+ await Promise.all(promises);
94
+ }
95
+ return result;
96
+ }
97
+ /**
98
+ * Search for nodes by pattern
99
+ *
100
+ * @param pattern - Search pattern (e.g., 'node/*', 'node/abc*')
101
+ * @param limit - Maximum results
102
+ * @returns Array of matching node keys
103
+ */
104
+ async searchNodes(pattern, limit = 100) {
105
+ const fullPattern = pattern.startsWith(this.nodeKeyPrefix) ? pattern : `${this.nodeKeyPrefix}${pattern}`;
106
+ return this.adapter.memorySearch(fullPattern, this.namespace, limit);
107
+ }
108
+ /**
109
+ * Store the node index
110
+ *
111
+ * @param entries - Index entries
112
+ * @returns Whether the operation succeeded
113
+ */
114
+ async storeNodeIndex(entries) {
115
+ const key = `${this.indexKeyPrefix}nodes`;
116
+ return this.adapter.memoryStore(key, entries, this.namespace);
117
+ }
118
+ /**
119
+ * Retrieve the node index
120
+ *
121
+ * @returns Array of index entries or null
122
+ */
123
+ async getNodeIndex() {
124
+ const key = `${this.indexKeyPrefix}nodes`;
125
+ const value = await this.adapter.memoryRetrieve(key, this.namespace);
126
+ if (!value) {
127
+ return null;
128
+ }
129
+ try {
130
+ return JSON.parse(value);
131
+ } catch {
132
+ logger.warn("Failed to parse node index from memory");
133
+ return null;
134
+ }
135
+ }
136
+ /**
137
+ * Store the tag index
138
+ *
139
+ * @param tagIndex - Map of tags to node IDs
140
+ * @returns Whether the operation succeeded
141
+ */
142
+ async storeTagIndex(tagIndex) {
143
+ const key = `${this.indexKeyPrefix}tags`;
144
+ return this.adapter.memoryStore(key, tagIndex, this.namespace);
145
+ }
146
+ /**
147
+ * Retrieve the tag index
148
+ *
149
+ * @returns Tag index or null
150
+ */
151
+ async getTagIndex() {
152
+ const key = `${this.indexKeyPrefix}tags`;
153
+ const value = await this.adapter.memoryRetrieve(key, this.namespace);
154
+ if (!value) {
155
+ return null;
156
+ }
157
+ try {
158
+ return JSON.parse(value);
159
+ } catch {
160
+ logger.warn("Failed to parse tag index from memory");
161
+ return null;
162
+ }
163
+ }
164
+ /**
165
+ * Store graph statistics
166
+ *
167
+ * @param stats - Graph stats
168
+ * @returns Whether the operation succeeded
169
+ */
170
+ async storeStats(stats) {
171
+ return this.adapter.memoryStore("stats", stats, this.namespace);
172
+ }
173
+ /**
174
+ * Retrieve graph statistics
175
+ *
176
+ * @returns Graph stats or null
177
+ */
178
+ async getStats() {
179
+ const value = await this.adapter.memoryRetrieve("stats", this.namespace);
180
+ if (!value) {
181
+ return null;
182
+ }
183
+ try {
184
+ return JSON.parse(value);
185
+ } catch {
186
+ logger.warn("Failed to parse stats from memory");
187
+ return null;
188
+ }
189
+ }
190
+ /**
191
+ * Store metadata
192
+ *
193
+ * @param metadata - Metadata to store
194
+ * @returns Whether the operation succeeded
195
+ */
196
+ async storeMetadata(metadata) {
197
+ return this.adapter.memoryStore("metadata", metadata, this.namespace);
198
+ }
199
+ /**
200
+ * Retrieve metadata
201
+ *
202
+ * @returns Metadata or null
203
+ */
204
+ async getMetadata() {
205
+ const value = await this.adapter.memoryRetrieve("metadata", this.namespace);
206
+ if (!value) {
207
+ return null;
208
+ }
209
+ try {
210
+ return JSON.parse(value);
211
+ } catch {
212
+ logger.warn("Failed to parse metadata from memory");
213
+ return null;
214
+ }
215
+ }
216
+ /**
217
+ * Store a custom key-value pair
218
+ *
219
+ * @param key - Storage key
220
+ * @param value - Value to store
221
+ * @param ttl - Optional TTL in seconds
222
+ * @returns Whether the operation succeeded
223
+ */
224
+ async store(key, value, ttl) {
225
+ return this.adapter.memoryStore(key, value, this.namespace, ttl);
226
+ }
227
+ /**
228
+ * Retrieve a custom key
229
+ *
230
+ * @param key - Storage key
231
+ * @returns Value or null
232
+ */
233
+ async retrieve(key) {
234
+ const value = await this.adapter.memoryRetrieve(key, this.namespace);
235
+ if (!value) {
236
+ return null;
237
+ }
238
+ try {
239
+ return JSON.parse(value);
240
+ } catch {
241
+ return value;
242
+ }
243
+ }
244
+ /**
245
+ * Delete a custom key
246
+ *
247
+ * @param key - Storage key
248
+ * @returns Whether the operation succeeded
249
+ */
250
+ async delete(key) {
251
+ return this.adapter.memoryDelete(key, this.namespace);
252
+ }
253
+ /**
254
+ * Search for keys by pattern
255
+ *
256
+ * @param pattern - Search pattern
257
+ * @param limit - Maximum results
258
+ * @returns Array of matching keys
259
+ */
260
+ async search(pattern, limit = 100) {
261
+ return this.adapter.memorySearch(pattern, this.namespace, limit);
262
+ }
263
+ /**
264
+ * List all keys in the namespace
265
+ *
266
+ * @returns Array of keys
267
+ */
268
+ async listKeys() {
269
+ return this.adapter.memoryList(this.namespace);
270
+ }
271
+ /**
272
+ * Check if CLI is available
273
+ *
274
+ * @returns Whether CLI is available
275
+ */
276
+ async isCliAvailable() {
277
+ return this.adapter.isCliAvailable();
278
+ }
279
+ /**
280
+ * Get the configured namespace
281
+ */
282
+ getNamespace() {
283
+ return this.namespace;
284
+ }
285
+ /**
286
+ * Get the underlying adapter (for advanced usage)
287
+ */
288
+ getAdapter() {
289
+ return this.adapter;
290
+ }
291
+ /**
292
+ * Clear all fallback storage
293
+ */
294
+ clearFallback() {
295
+ this.adapter.clearFallback(this.namespace);
296
+ }
297
+ }
298
+ function createClaudeFlowMemoryClient(config) {
299
+ return new ClaudeFlowMemoryClient(config);
300
+ }
301
+ export {
302
+ ClaudeFlowMemoryClient,
303
+ createClaudeFlowMemoryClient
304
+ };
305
+ //# sourceMappingURL=claude-flow-memory-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-flow-memory-client.js","sources":["../../../src/mcp/clients/claude-flow-memory-client.ts"],"sourcesContent":["/**\n * Claude-Flow Memory Client\n *\n * High-level memory client that wraps McpClientAdapter with\n * knowledge-graph-specific functionality and type safety.\n *\n * @module mcp/clients/claude-flow-memory-client\n */\n\nimport { createLogger } from '../../utils/index.js';\nimport { McpClientAdapter, createMcpClientAdapter, type McpClientConfig } from './mcp-client-adapter.js';\n\nconst logger = createLogger('claude-flow-memory-client');\n\n/**\n * Memory node entry for knowledge graph\n */\nexport interface MemoryNodeEntry {\n id: string;\n title: string;\n type: string;\n status: string;\n path: string;\n tags: string[];\n outgoingLinks: string[];\n incomingLinks: string[];\n summary: string;\n contentHash: string;\n lastModified: string;\n syncedAt: string;\n}\n\n/**\n * Memory index entry\n */\nexport interface MemoryIndexEntry {\n id: string;\n title: string;\n type: string;\n path: string;\n}\n\n/**\n * Memory metadata\n */\nexport interface MemoryMetadata {\n lastSync: string;\n nodeCount: number;\n namespace: string;\n version?: string;\n}\n\n/**\n * Graph stats stored in memory\n */\nexport interface MemoryGraphStats {\n totalNodes: number;\n totalEdges: number;\n nodesByType: Record<string, number>;\n nodesByStatus: Record<string, number>;\n averageLinksPerNode: number;\n orphanNodes: number;\n}\n\n/**\n * Client configuration\n */\nexport interface ClaudeFlowMemoryClientConfig extends Partial<McpClientConfig> {\n /** Memory namespace for knowledge graph (default: 'knowledge-graph') */\n namespace?: string;\n\n /** Key prefix for nodes (default: 'node/') */\n nodeKeyPrefix?: string;\n\n /** Key prefix for indexes (default: 'index/') */\n indexKeyPrefix?: string;\n}\n\n/**\n * Batch operation result\n */\nexport interface BatchOperationResult {\n total: number;\n succeeded: number;\n failed: number;\n errors: Array<{ key: string; error: string }>;\n}\n\n/**\n * Claude-Flow Memory Client\n *\n * Provides high-level memory operations for the knowledge graph agent\n * with proper typing and batch operations support.\n *\n * @example\n * ```typescript\n * const client = new ClaudeFlowMemoryClient({\n * namespace: 'my-project-kg',\n * });\n *\n * // Store a node\n * await client.storeNode({\n * id: 'abc123',\n * title: 'My Node',\n * type: 'document',\n * // ...\n * });\n *\n * // Retrieve a node\n * const node = await client.getNode('abc123');\n * ```\n */\nexport class ClaudeFlowMemoryClient {\n private adapter: McpClientAdapter;\n private namespace: string;\n private nodeKeyPrefix: string;\n private indexKeyPrefix: string;\n\n constructor(config: ClaudeFlowMemoryClientConfig = {}) {\n this.adapter = createMcpClientAdapter({\n maxRetries: config.maxRetries,\n retryDelayMs: config.retryDelayMs,\n timeoutMs: config.timeoutMs,\n fallbackEnabled: config.fallbackEnabled,\n cliCommand: config.cliCommand,\n });\n this.namespace = config.namespace ?? 'knowledge-graph';\n this.nodeKeyPrefix = config.nodeKeyPrefix ?? 'node/';\n this.indexKeyPrefix = config.indexKeyPrefix ?? 'index/';\n }\n\n /**\n * Store a knowledge node in memory\n *\n * @param node - The node to store\n * @param ttl - Optional TTL in seconds\n * @returns Whether the operation succeeded\n */\n async storeNode(node: MemoryNodeEntry, ttl?: number): Promise<boolean> {\n const key = `${this.nodeKeyPrefix}${node.id}`;\n const success = await this.adapter.memoryStore(key, node, this.namespace, ttl);\n\n if (success) {\n logger.debug('Stored node in memory', { nodeId: node.id });\n } else {\n logger.error('Failed to store node in memory', undefined, { nodeId: node.id });\n }\n\n return success;\n }\n\n /**\n * Retrieve a knowledge node from memory\n *\n * @param nodeId - The node ID\n * @returns The node or null if not found\n */\n async getNode(nodeId: string): Promise<MemoryNodeEntry | null> {\n const key = `${this.nodeKeyPrefix}${nodeId}`;\n const value = await this.adapter.memoryRetrieve(key, this.namespace);\n\n if (!value) {\n return null;\n }\n\n try {\n return JSON.parse(value) as MemoryNodeEntry;\n } catch {\n logger.warn('Failed to parse node from memory', { nodeId, value: value.substring(0, 100) });\n return null;\n }\n }\n\n /**\n * Delete a knowledge node from memory\n *\n * @param nodeId - The node ID to delete\n * @returns Whether the operation succeeded\n */\n async deleteNode(nodeId: string): Promise<boolean> {\n const key = `${this.nodeKeyPrefix}${nodeId}`;\n return this.adapter.memoryDelete(key, this.namespace);\n }\n\n /**\n * Store multiple nodes in batch\n *\n * @param nodes - Array of nodes to store\n * @param ttl - Optional TTL in seconds\n * @returns Batch operation result\n */\n async storeNodesBatch(nodes: MemoryNodeEntry[], ttl?: number): Promise<BatchOperationResult> {\n const result: BatchOperationResult = {\n total: nodes.length,\n succeeded: 0,\n failed: 0,\n errors: [],\n };\n\n // Process in batches to avoid overwhelming the CLI\n const batchSize = 10;\n for (let i = 0; i < nodes.length; i += batchSize) {\n const batch = nodes.slice(i, i + batchSize);\n const promises = batch.map(async (node) => {\n const success = await this.storeNode(node, ttl);\n if (success) {\n result.succeeded++;\n } else {\n result.failed++;\n result.errors.push({ key: node.id, error: 'Failed to store' });\n }\n });\n await Promise.all(promises);\n }\n\n return result;\n }\n\n /**\n * Search for nodes by pattern\n *\n * @param pattern - Search pattern (e.g., 'node/*', 'node/abc*')\n * @param limit - Maximum results\n * @returns Array of matching node keys\n */\n async searchNodes(pattern: string, limit: number = 100): Promise<string[]> {\n const fullPattern = pattern.startsWith(this.nodeKeyPrefix)\n ? pattern\n : `${this.nodeKeyPrefix}${pattern}`;\n\n return this.adapter.memorySearch(fullPattern, this.namespace, limit);\n }\n\n /**\n * Store the node index\n *\n * @param entries - Index entries\n * @returns Whether the operation succeeded\n */\n async storeNodeIndex(entries: MemoryIndexEntry[]): Promise<boolean> {\n const key = `${this.indexKeyPrefix}nodes`;\n return this.adapter.memoryStore(key, entries, this.namespace);\n }\n\n /**\n * Retrieve the node index\n *\n * @returns Array of index entries or null\n */\n async getNodeIndex(): Promise<MemoryIndexEntry[] | null> {\n const key = `${this.indexKeyPrefix}nodes`;\n const value = await this.adapter.memoryRetrieve(key, this.namespace);\n\n if (!value) {\n return null;\n }\n\n try {\n return JSON.parse(value) as MemoryIndexEntry[];\n } catch {\n logger.warn('Failed to parse node index from memory');\n return null;\n }\n }\n\n /**\n * Store the tag index\n *\n * @param tagIndex - Map of tags to node IDs\n * @returns Whether the operation succeeded\n */\n async storeTagIndex(tagIndex: Record<string, string[]>): Promise<boolean> {\n const key = `${this.indexKeyPrefix}tags`;\n return this.adapter.memoryStore(key, tagIndex, this.namespace);\n }\n\n /**\n * Retrieve the tag index\n *\n * @returns Tag index or null\n */\n async getTagIndex(): Promise<Record<string, string[]> | null> {\n const key = `${this.indexKeyPrefix}tags`;\n const value = await this.adapter.memoryRetrieve(key, this.namespace);\n\n if (!value) {\n return null;\n }\n\n try {\n return JSON.parse(value) as Record<string, string[]>;\n } catch {\n logger.warn('Failed to parse tag index from memory');\n return null;\n }\n }\n\n /**\n * Store graph statistics\n *\n * @param stats - Graph stats\n * @returns Whether the operation succeeded\n */\n async storeStats(stats: MemoryGraphStats): Promise<boolean> {\n return this.adapter.memoryStore('stats', stats, this.namespace);\n }\n\n /**\n * Retrieve graph statistics\n *\n * @returns Graph stats or null\n */\n async getStats(): Promise<MemoryGraphStats | null> {\n const value = await this.adapter.memoryRetrieve('stats', this.namespace);\n\n if (!value) {\n return null;\n }\n\n try {\n return JSON.parse(value) as MemoryGraphStats;\n } catch {\n logger.warn('Failed to parse stats from memory');\n return null;\n }\n }\n\n /**\n * Store metadata\n *\n * @param metadata - Metadata to store\n * @returns Whether the operation succeeded\n */\n async storeMetadata(metadata: MemoryMetadata): Promise<boolean> {\n return this.adapter.memoryStore('metadata', metadata, this.namespace);\n }\n\n /**\n * Retrieve metadata\n *\n * @returns Metadata or null\n */\n async getMetadata(): Promise<MemoryMetadata | null> {\n const value = await this.adapter.memoryRetrieve('metadata', this.namespace);\n\n if (!value) {\n return null;\n }\n\n try {\n return JSON.parse(value) as MemoryMetadata;\n } catch {\n logger.warn('Failed to parse metadata from memory');\n return null;\n }\n }\n\n /**\n * Store a custom key-value pair\n *\n * @param key - Storage key\n * @param value - Value to store\n * @param ttl - Optional TTL in seconds\n * @returns Whether the operation succeeded\n */\n async store(key: string, value: unknown, ttl?: number): Promise<boolean> {\n return this.adapter.memoryStore(key, value as object, this.namespace, ttl);\n }\n\n /**\n * Retrieve a custom key\n *\n * @param key - Storage key\n * @returns Value or null\n */\n async retrieve<T = unknown>(key: string): Promise<T | null> {\n const value = await this.adapter.memoryRetrieve(key, this.namespace);\n\n if (!value) {\n return null;\n }\n\n try {\n return JSON.parse(value) as T;\n } catch {\n return value as unknown as T;\n }\n }\n\n /**\n * Delete a custom key\n *\n * @param key - Storage key\n * @returns Whether the operation succeeded\n */\n async delete(key: string): Promise<boolean> {\n return this.adapter.memoryDelete(key, this.namespace);\n }\n\n /**\n * Search for keys by pattern\n *\n * @param pattern - Search pattern\n * @param limit - Maximum results\n * @returns Array of matching keys\n */\n async search(pattern: string, limit: number = 100): Promise<string[]> {\n return this.adapter.memorySearch(pattern, this.namespace, limit);\n }\n\n /**\n * List all keys in the namespace\n *\n * @returns Array of keys\n */\n async listKeys(): Promise<string[]> {\n return this.adapter.memoryList(this.namespace);\n }\n\n /**\n * Check if CLI is available\n *\n * @returns Whether CLI is available\n */\n async isCliAvailable(): Promise<boolean> {\n return this.adapter.isCliAvailable();\n }\n\n /**\n * Get the configured namespace\n */\n getNamespace(): string {\n return this.namespace;\n }\n\n /**\n * Get the underlying adapter (for advanced usage)\n */\n getAdapter(): McpClientAdapter {\n return this.adapter;\n }\n\n /**\n * Clear all fallback storage\n */\n clearFallback(): void {\n this.adapter.clearFallback(this.namespace);\n }\n}\n\n/**\n * Create a configured Claude-Flow memory client\n */\nexport function createClaudeFlowMemoryClient(\n config?: ClaudeFlowMemoryClientConfig\n): ClaudeFlowMemoryClient {\n return new ClaudeFlowMemoryClient(config);\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * MCP Clients Module
3
+ *
4
+ * Provides MCP client adapters for integrating with claude-flow
5
+ * and other MCP-compatible tools.
6
+ *
7
+ * @module mcp/clients
8
+ */
9
+ export { McpClientAdapter, createMcpClientAdapter, type McpClientConfig, type MemoryOperationResult, } from './mcp-client-adapter.js';
10
+ export { ClaudeFlowMemoryClient, createClaudeFlowMemoryClient, type ClaudeFlowMemoryClientConfig, type MemoryNodeEntry, type MemoryIndexEntry, type MemoryMetadata, type MemoryGraphStats, type BatchOperationResult, } from './claude-flow-memory-client.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/clients/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,qBAAqB,GAC3B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,KAAK,4BAA4B,EACjC,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,gCAAgC,CAAC"}