@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,146 @@
1
+ /**
2
+ * MCP Client Adapter
3
+ *
4
+ * Provides real MCP tool execution via the claude-flow CLI with retry logic,
5
+ * timeout handling, and graceful fallback to in-memory storage when CLI is unavailable.
6
+ *
7
+ * @module mcp/clients/mcp-client-adapter
8
+ */
9
+ /**
10
+ * MCP Client Configuration
11
+ */
12
+ export interface McpClientConfig {
13
+ /** Maximum number of retry attempts (default: 3) */
14
+ maxRetries: number;
15
+ /** Initial delay in milliseconds between retries (default: 1000) */
16
+ retryDelayMs: number;
17
+ /** Command execution timeout in milliseconds (default: 30000) */
18
+ timeoutMs: number;
19
+ /** Whether to fallback to in-memory storage when CLI unavailable (default: true) */
20
+ fallbackEnabled: boolean;
21
+ /** Claude-flow CLI command (default: 'npx claude-flow@alpha') */
22
+ cliCommand: string;
23
+ /** Whether to use JSON output format from CLI when available */
24
+ useJsonOutput: boolean;
25
+ }
26
+ /**
27
+ * Result of a memory operation
28
+ */
29
+ export interface MemoryOperationResult {
30
+ /** Whether the operation succeeded */
31
+ success: boolean;
32
+ /** Result data (if successful) */
33
+ data?: unknown;
34
+ /** Error message (if failed) */
35
+ error?: string;
36
+ /** Whether the result came from fallback storage */
37
+ fromFallback: boolean;
38
+ /** Number of attempts made */
39
+ attempts: number;
40
+ }
41
+ /**
42
+ * MCP Client Adapter
43
+ *
44
+ * Executes real claude-flow CLI commands with robust retry logic and fallback.
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * const adapter = new McpClientAdapter({
49
+ * maxRetries: 3,
50
+ * timeoutMs: 30000,
51
+ * });
52
+ *
53
+ * // Store value
54
+ * await adapter.memoryStore('myKey', 'myValue', 'myNamespace');
55
+ *
56
+ * // Retrieve value
57
+ * const value = await adapter.memoryRetrieve('myKey', 'myNamespace');
58
+ * ```
59
+ */
60
+ export declare class McpClientAdapter {
61
+ private config;
62
+ private fallbackStore;
63
+ private cliAvailable;
64
+ private lastCliCheck;
65
+ private readonly CLI_CHECK_INTERVAL;
66
+ constructor(config?: Partial<McpClientConfig>);
67
+ /**
68
+ * Store a value in memory
69
+ *
70
+ * @param key - Memory key
71
+ * @param value - Value to store (will be JSON stringified if object)
72
+ * @param namespace - Memory namespace (default: 'default')
73
+ * @param ttl - Time to live in seconds (optional)
74
+ * @returns Whether the operation succeeded
75
+ */
76
+ memoryStore(key: string, value: string | object, namespace?: string, ttl?: number): Promise<boolean>;
77
+ /**
78
+ * Retrieve a value from memory
79
+ *
80
+ * @param key - Memory key
81
+ * @param namespace - Memory namespace (default: 'default')
82
+ * @returns The stored value or null if not found
83
+ */
84
+ memoryRetrieve(key: string, namespace?: string): Promise<string | null>;
85
+ /**
86
+ * Search memory by pattern
87
+ *
88
+ * @param pattern - Search pattern (supports glob-like matching)
89
+ * @param namespace - Memory namespace (default: 'default')
90
+ * @param limit - Maximum number of results (default: 10)
91
+ * @returns Array of matching keys
92
+ */
93
+ memorySearch(pattern: string, namespace?: string, limit?: number): Promise<string[]>;
94
+ /**
95
+ * Delete a value from memory
96
+ *
97
+ * @param key - Memory key
98
+ * @param namespace - Memory namespace (default: 'default')
99
+ * @returns Whether the operation succeeded
100
+ */
101
+ memoryDelete(key: string, namespace?: string): Promise<boolean>;
102
+ /**
103
+ * List all keys in a namespace
104
+ *
105
+ * @param namespace - Memory namespace (default: 'default')
106
+ * @returns Array of keys
107
+ */
108
+ memoryList(namespace?: string): Promise<string[]>;
109
+ /**
110
+ * Check if CLI is available
111
+ */
112
+ isCliAvailable(): Promise<boolean>;
113
+ /**
114
+ * Get current configuration
115
+ */
116
+ getConfig(): Readonly<McpClientConfig>;
117
+ /**
118
+ * Get fallback store size for a namespace
119
+ */
120
+ getFallbackSize(namespace?: string): number;
121
+ /**
122
+ * Clear fallback store
123
+ */
124
+ clearFallback(namespace?: string): void;
125
+ private executeWithRetry;
126
+ private executeCli;
127
+ private buildStoreCommand;
128
+ private buildQueryCommand;
129
+ private buildSearchCommand;
130
+ private buildDeleteCommand;
131
+ private parseQueryOutput;
132
+ private parseSearchOutput;
133
+ private parseListOutput;
134
+ private escapeShellArg;
135
+ private getOrCreateNamespace;
136
+ private storeFallback;
137
+ private retrieveFallback;
138
+ private searchFallback;
139
+ private deleteFallback;
140
+ private listFallback;
141
+ }
142
+ /**
143
+ * Create a configured MCP client adapter
144
+ */
145
+ export declare function createMcpClientAdapter(config?: Partial<McpClientConfig>): McpClientAdapter;
146
+ //# sourceMappingURL=mcp-client-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-client-adapter.d.ts","sourceRoot":"","sources":["../../../src/mcp/clients/mcp-client-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAuBH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;IAEnB,oEAAoE;IACpE,YAAY,EAAE,MAAM,CAAC;IAErB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAElB,oFAAoF;IACpF,eAAe,EAAE,OAAO,CAAC;IAEzB,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IAEnB,gEAAgE;IAChE,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IAEjB,kCAAkC;IAClC,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,oDAAoD;IACpD,YAAY,EAAE,OAAO,CAAC;IAEtB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAYD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,aAAa,CAA0C;IAC/D,OAAO,CAAC,YAAY,CAAwB;IAC5C,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;gBAEhC,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM;IAYjD;;;;;;;;OAQG;IACG,WAAW,CACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,SAAS,GAAE,MAAkB,EAC7B,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,CAAC;IAyBnB;;;;;;OAMG;IACG,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,GAAE,MAAkB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAyBxF;;;;;;;OAOG;IACG,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAkB,EAC7B,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC;IAuBpB;;;;;;OAMG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,GAAE,MAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBhF;;;;;OAKG;IACG,UAAU,CAAC,SAAS,GAAE,MAAkB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAsBlE;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAoBxC;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,eAAe,CAAC;IAItC;;OAEG;IACH,eAAe,CAAC,SAAS,GAAE,MAAkB,GAAG,MAAM;IAItD;;OAEG;IACH,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;YAUzB,gBAAgB;YA2BhB,UAAU;IA+BxB,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,YAAY;CAkBrB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,gBAAgB,CAE1F"}
@@ -0,0 +1,372 @@
1
+ import { exec } from "child_process";
2
+ import { promisify } from "util";
3
+ import { withRetry } from "../../utils/error-recovery.js";
4
+ import { createLogger } from "../../utils/logger.js";
5
+ const execAsync = promisify(exec);
6
+ const logger = createLogger("mcp-client-adapter");
7
+ class McpClientAdapter {
8
+ config;
9
+ fallbackStore;
10
+ cliAvailable = null;
11
+ lastCliCheck = 0;
12
+ CLI_CHECK_INTERVAL = 6e4;
13
+ // Re-check CLI availability every 60s
14
+ constructor(config = {}) {
15
+ this.config = {
16
+ maxRetries: config.maxRetries ?? 3,
17
+ retryDelayMs: config.retryDelayMs ?? 1e3,
18
+ timeoutMs: config.timeoutMs ?? 3e4,
19
+ fallbackEnabled: config.fallbackEnabled ?? true,
20
+ cliCommand: config.cliCommand ?? "npx claude-flow@alpha",
21
+ useJsonOutput: config.useJsonOutput ?? true
22
+ };
23
+ this.fallbackStore = /* @__PURE__ */ new Map();
24
+ }
25
+ /**
26
+ * Store a value in memory
27
+ *
28
+ * @param key - Memory key
29
+ * @param value - Value to store (will be JSON stringified if object)
30
+ * @param namespace - Memory namespace (default: 'default')
31
+ * @param ttl - Time to live in seconds (optional)
32
+ * @returns Whether the operation succeeded
33
+ */
34
+ async memoryStore(key, value, namespace = "default", ttl) {
35
+ const stringValue = typeof value === "string" ? value : JSON.stringify(value);
36
+ const result = await this.executeWithRetry(async () => {
37
+ const command = this.buildStoreCommand(key, stringValue, namespace, ttl);
38
+ await this.executeCli(command);
39
+ return true;
40
+ });
41
+ if (result.success) {
42
+ logger.debug("Memory store succeeded via CLI", { key, namespace });
43
+ return true;
44
+ }
45
+ if (this.config.fallbackEnabled) {
46
+ this.storeFallback(key, stringValue, namespace, ttl);
47
+ logger.warn("Memory store fell back to in-memory", { key, namespace, error: result.error });
48
+ return true;
49
+ }
50
+ logger.error("Memory store failed", void 0, { key, namespace, error: result.error });
51
+ return false;
52
+ }
53
+ /**
54
+ * Retrieve a value from memory
55
+ *
56
+ * @param key - Memory key
57
+ * @param namespace - Memory namespace (default: 'default')
58
+ * @returns The stored value or null if not found
59
+ */
60
+ async memoryRetrieve(key, namespace = "default") {
61
+ const result = await this.executeWithRetry(async () => {
62
+ const command = this.buildQueryCommand(key, namespace);
63
+ const output = await this.executeCli(command);
64
+ return this.parseQueryOutput(output, key);
65
+ });
66
+ if (result.success && result.value !== void 0) {
67
+ logger.debug("Memory retrieve succeeded via CLI", { key, namespace });
68
+ return result.value;
69
+ }
70
+ if (this.config.fallbackEnabled) {
71
+ const fallbackValue = this.retrieveFallback(key, namespace);
72
+ if (fallbackValue !== null) {
73
+ logger.debug("Memory retrieve fell back to in-memory", { key, namespace });
74
+ return fallbackValue;
75
+ }
76
+ }
77
+ logger.debug("Memory retrieve returned null", { key, namespace });
78
+ return null;
79
+ }
80
+ /**
81
+ * Search memory by pattern
82
+ *
83
+ * @param pattern - Search pattern (supports glob-like matching)
84
+ * @param namespace - Memory namespace (default: 'default')
85
+ * @param limit - Maximum number of results (default: 10)
86
+ * @returns Array of matching keys
87
+ */
88
+ async memorySearch(pattern, namespace = "default", limit = 10) {
89
+ const result = await this.executeWithRetry(async () => {
90
+ const command = this.buildSearchCommand(pattern, namespace, limit);
91
+ const output = await this.executeCli(command);
92
+ return this.parseSearchOutput(output);
93
+ });
94
+ if (result.success && result.value) {
95
+ logger.debug("Memory search succeeded via CLI", { pattern, namespace, count: result.value.length });
96
+ return result.value;
97
+ }
98
+ if (this.config.fallbackEnabled) {
99
+ const fallbackResults = this.searchFallback(pattern, namespace, limit);
100
+ logger.debug("Memory search fell back to in-memory", { pattern, namespace, count: fallbackResults.length });
101
+ return fallbackResults;
102
+ }
103
+ logger.debug("Memory search returned empty", { pattern, namespace });
104
+ return [];
105
+ }
106
+ /**
107
+ * Delete a value from memory
108
+ *
109
+ * @param key - Memory key
110
+ * @param namespace - Memory namespace (default: 'default')
111
+ * @returns Whether the operation succeeded
112
+ */
113
+ async memoryDelete(key, namespace = "default") {
114
+ const result = await this.executeWithRetry(async () => {
115
+ const command = this.buildDeleteCommand(key, namespace);
116
+ await this.executeCli(command);
117
+ return true;
118
+ });
119
+ if (result.success) {
120
+ logger.debug("Memory delete succeeded via CLI", { key, namespace });
121
+ }
122
+ if (this.config.fallbackEnabled) {
123
+ this.deleteFallback(key, namespace);
124
+ }
125
+ return result.success || this.config.fallbackEnabled;
126
+ }
127
+ /**
128
+ * List all keys in a namespace
129
+ *
130
+ * @param namespace - Memory namespace (default: 'default')
131
+ * @returns Array of keys
132
+ */
133
+ async memoryList(namespace = "default") {
134
+ const result = await this.executeWithRetry(async () => {
135
+ const command = `${this.config.cliCommand} memory list --namespace "${namespace}"`;
136
+ const output = await this.executeCli(command);
137
+ return this.parseListOutput(output);
138
+ });
139
+ if (result.success && result.value) {
140
+ logger.debug("Memory list succeeded via CLI", { namespace, count: result.value.length });
141
+ return result.value;
142
+ }
143
+ if (this.config.fallbackEnabled) {
144
+ const fallbackKeys = this.listFallback(namespace);
145
+ logger.debug("Memory list fell back to in-memory", { namespace, count: fallbackKeys.length });
146
+ return fallbackKeys;
147
+ }
148
+ return [];
149
+ }
150
+ /**
151
+ * Check if CLI is available
152
+ */
153
+ async isCliAvailable() {
154
+ const now = Date.now();
155
+ if (this.cliAvailable !== null && now - this.lastCliCheck < this.CLI_CHECK_INTERVAL) {
156
+ return this.cliAvailable;
157
+ }
158
+ try {
159
+ await this.executeCli(`${this.config.cliCommand} --version`, 5e3);
160
+ this.cliAvailable = true;
161
+ this.lastCliCheck = now;
162
+ return true;
163
+ } catch {
164
+ this.cliAvailable = false;
165
+ this.lastCliCheck = now;
166
+ return false;
167
+ }
168
+ }
169
+ /**
170
+ * Get current configuration
171
+ */
172
+ getConfig() {
173
+ return { ...this.config };
174
+ }
175
+ /**
176
+ * Get fallback store size for a namespace
177
+ */
178
+ getFallbackSize(namespace = "default") {
179
+ return this.fallbackStore.get(namespace)?.size ?? 0;
180
+ }
181
+ /**
182
+ * Clear fallback store
183
+ */
184
+ clearFallback(namespace) {
185
+ if (namespace) {
186
+ this.fallbackStore.delete(namespace);
187
+ } else {
188
+ this.fallbackStore.clear();
189
+ }
190
+ }
191
+ // Private methods
192
+ async executeWithRetry(operation) {
193
+ const retryOptions = {
194
+ maxRetries: this.config.maxRetries,
195
+ initialDelay: this.config.retryDelayMs,
196
+ backoffFactor: 2,
197
+ jitter: true,
198
+ onRetry: (error, attempt, delay) => {
199
+ logger.debug("Retrying MCP operation", {
200
+ attempt,
201
+ delay,
202
+ error: error.message
203
+ });
204
+ }
205
+ };
206
+ const result = await withRetry(operation, retryOptions);
207
+ return {
208
+ success: result.success,
209
+ value: result.value,
210
+ error: result.error?.message,
211
+ attempts: result.attempts
212
+ };
213
+ }
214
+ async executeCli(command, timeout) {
215
+ const effectiveTimeout = timeout ?? this.config.timeoutMs;
216
+ logger.debug("Executing CLI command", { command: command.substring(0, 100) });
217
+ try {
218
+ const { stdout, stderr } = await execAsync(command, {
219
+ timeout: effectiveTimeout,
220
+ maxBuffer: 10 * 1024 * 1024,
221
+ // 10MB buffer
222
+ shell: "/bin/bash"
223
+ });
224
+ if (stderr && !stderr.includes("DeprecationWarning")) {
225
+ logger.warn("CLI stderr output", { stderr: stderr.substring(0, 500) });
226
+ }
227
+ return stdout.trim();
228
+ } catch (error) {
229
+ const execError = error;
230
+ if (execError.code === "ETIMEDOUT" || execError.killed) {
231
+ throw new Error(`CLI command timed out after ${effectiveTimeout}ms`);
232
+ }
233
+ const message = execError.message || "CLI execution failed";
234
+ const details = execError.stderr || execError.stdout || "";
235
+ throw new Error(`${message}${details ? `: ${details.substring(0, 200)}` : ""}`);
236
+ }
237
+ }
238
+ buildStoreCommand(key, value, namespace, ttl) {
239
+ const escapedValue = this.escapeShellArg(value);
240
+ let command = `${this.config.cliCommand} memory store "${key}" ${escapedValue} --namespace "${namespace}"`;
241
+ if (ttl !== void 0 && ttl > 0) {
242
+ command += ` --ttl ${ttl}`;
243
+ }
244
+ return command;
245
+ }
246
+ buildQueryCommand(key, namespace) {
247
+ return `${this.config.cliCommand} memory query "${key}" --namespace "${namespace}"`;
248
+ }
249
+ buildSearchCommand(pattern, namespace, limit) {
250
+ return `${this.config.cliCommand} memory query "${pattern}" --namespace "${namespace}"`;
251
+ }
252
+ buildDeleteCommand(key, namespace) {
253
+ return `${this.config.cliCommand} memory clear --namespace "${namespace}"`;
254
+ }
255
+ parseQueryOutput(output, key) {
256
+ if (!output || output.includes("not found") || output.includes("No results")) {
257
+ return null;
258
+ }
259
+ try {
260
+ const parsed = JSON.parse(output);
261
+ if (typeof parsed === "object" && parsed !== null) {
262
+ if (key in parsed) {
263
+ return typeof parsed[key] === "string" ? parsed[key] : JSON.stringify(parsed[key]);
264
+ }
265
+ return JSON.stringify(parsed);
266
+ }
267
+ return String(parsed);
268
+ } catch {
269
+ return output;
270
+ }
271
+ }
272
+ parseSearchOutput(output) {
273
+ if (!output || output.includes("No results")) {
274
+ return [];
275
+ }
276
+ try {
277
+ const parsed = JSON.parse(output);
278
+ if (Array.isArray(parsed)) {
279
+ return parsed.map((item) => typeof item === "string" ? item : JSON.stringify(item));
280
+ }
281
+ if (typeof parsed === "object" && parsed !== null) {
282
+ return Object.keys(parsed);
283
+ }
284
+ } catch {
285
+ return output.split("\n").map((line) => line.trim()).filter((line) => line.length > 0 && !line.startsWith("#"));
286
+ }
287
+ return [];
288
+ }
289
+ parseListOutput(output) {
290
+ return this.parseSearchOutput(output);
291
+ }
292
+ escapeShellArg(arg) {
293
+ const escaped = arg.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/`/g, "\\`").replace(/\$/g, "\\$").replace(/\n/g, "\\n");
294
+ return `"${escaped}"`;
295
+ }
296
+ // Fallback storage methods
297
+ getOrCreateNamespace(namespace) {
298
+ let ns = this.fallbackStore.get(namespace);
299
+ if (!ns) {
300
+ ns = /* @__PURE__ */ new Map();
301
+ this.fallbackStore.set(namespace, ns);
302
+ }
303
+ return ns;
304
+ }
305
+ storeFallback(key, value, namespace, ttl) {
306
+ const ns = this.getOrCreateNamespace(namespace);
307
+ const now = Date.now();
308
+ ns.set(key, {
309
+ value,
310
+ ttl,
311
+ createdAt: now,
312
+ expiresAt: ttl ? now + ttl * 1e3 : void 0
313
+ });
314
+ }
315
+ retrieveFallback(key, namespace) {
316
+ const ns = this.fallbackStore.get(namespace);
317
+ if (!ns) return null;
318
+ const entry = ns.get(key);
319
+ if (!entry) return null;
320
+ if (entry.expiresAt && Date.now() > entry.expiresAt) {
321
+ ns.delete(key);
322
+ return null;
323
+ }
324
+ return entry.value;
325
+ }
326
+ searchFallback(pattern, namespace, limit) {
327
+ const ns = this.fallbackStore.get(namespace);
328
+ if (!ns) return [];
329
+ const now = Date.now();
330
+ const results = [];
331
+ const regexPattern = pattern.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*").replace(/\?/g, ".");
332
+ const regex = new RegExp(`^${regexPattern}$`, "i");
333
+ for (const [key, entry] of ns) {
334
+ if (results.length >= limit) break;
335
+ if (entry.expiresAt && now > entry.expiresAt) {
336
+ ns.delete(key);
337
+ continue;
338
+ }
339
+ if (regex.test(key)) {
340
+ results.push(key);
341
+ }
342
+ }
343
+ return results;
344
+ }
345
+ deleteFallback(key, namespace) {
346
+ const ns = this.fallbackStore.get(namespace);
347
+ if (!ns) return false;
348
+ return ns.delete(key);
349
+ }
350
+ listFallback(namespace) {
351
+ const ns = this.fallbackStore.get(namespace);
352
+ if (!ns) return [];
353
+ const now = Date.now();
354
+ const keys = [];
355
+ for (const [key, entry] of ns) {
356
+ if (entry.expiresAt && now > entry.expiresAt) {
357
+ ns.delete(key);
358
+ continue;
359
+ }
360
+ keys.push(key);
361
+ }
362
+ return keys;
363
+ }
364
+ }
365
+ function createMcpClientAdapter(config) {
366
+ return new McpClientAdapter(config);
367
+ }
368
+ export {
369
+ McpClientAdapter,
370
+ createMcpClientAdapter
371
+ };
372
+ //# sourceMappingURL=mcp-client-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-client-adapter.js","sources":["../../../src/mcp/clients/mcp-client-adapter.ts"],"sourcesContent":["/**\n * MCP Client Adapter\n *\n * Provides real MCP tool execution via the claude-flow CLI with retry logic,\n * timeout handling, and graceful fallback to in-memory storage when CLI is unavailable.\n *\n * @module mcp/clients/mcp-client-adapter\n */\n\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\nimport {\n createLogger,\n withRetry,\n type RetryOptions,\n} from '../../utils/index.js';\n\nconst execAsync = promisify(exec);\n\n/**\n * Extended exec error type with additional properties\n */\ninterface ExecError extends Error {\n code?: string | number;\n killed?: boolean;\n stderr?: string;\n stdout?: string;\n}\nconst logger = createLogger('mcp-client-adapter');\n\n/**\n * MCP Client Configuration\n */\nexport interface McpClientConfig {\n /** Maximum number of retry attempts (default: 3) */\n maxRetries: number;\n\n /** Initial delay in milliseconds between retries (default: 1000) */\n retryDelayMs: number;\n\n /** Command execution timeout in milliseconds (default: 30000) */\n timeoutMs: number;\n\n /** Whether to fallback to in-memory storage when CLI unavailable (default: true) */\n fallbackEnabled: boolean;\n\n /** Claude-flow CLI command (default: 'npx claude-flow@alpha') */\n cliCommand: string;\n\n /** Whether to use JSON output format from CLI when available */\n useJsonOutput: boolean;\n}\n\n/**\n * Result of a memory operation\n */\nexport interface MemoryOperationResult {\n /** Whether the operation succeeded */\n success: boolean;\n\n /** Result data (if successful) */\n data?: unknown;\n\n /** Error message (if failed) */\n error?: string;\n\n /** Whether the result came from fallback storage */\n fromFallback: boolean;\n\n /** Number of attempts made */\n attempts: number;\n}\n\n/**\n * Memory entry stored in fallback\n */\ninterface FallbackEntry {\n value: string;\n ttl?: number;\n createdAt: number;\n expiresAt?: number;\n}\n\n/**\n * MCP Client Adapter\n *\n * Executes real claude-flow CLI commands with robust retry logic and fallback.\n *\n * @example\n * ```typescript\n * const adapter = new McpClientAdapter({\n * maxRetries: 3,\n * timeoutMs: 30000,\n * });\n *\n * // Store value\n * await adapter.memoryStore('myKey', 'myValue', 'myNamespace');\n *\n * // Retrieve value\n * const value = await adapter.memoryRetrieve('myKey', 'myNamespace');\n * ```\n */\nexport class McpClientAdapter {\n private config: McpClientConfig;\n private fallbackStore: Map<string, Map<string, FallbackEntry>>;\n private cliAvailable: boolean | null = null;\n private lastCliCheck: number = 0;\n private readonly CLI_CHECK_INTERVAL = 60000; // Re-check CLI availability every 60s\n\n constructor(config: Partial<McpClientConfig> = {}) {\n this.config = {\n maxRetries: config.maxRetries ?? 3,\n retryDelayMs: config.retryDelayMs ?? 1000,\n timeoutMs: config.timeoutMs ?? 30000,\n fallbackEnabled: config.fallbackEnabled ?? true,\n cliCommand: config.cliCommand ?? 'npx claude-flow@alpha',\n useJsonOutput: config.useJsonOutput ?? true,\n };\n this.fallbackStore = new Map();\n }\n\n /**\n * Store a value in memory\n *\n * @param key - Memory key\n * @param value - Value to store (will be JSON stringified if object)\n * @param namespace - Memory namespace (default: 'default')\n * @param ttl - Time to live in seconds (optional)\n * @returns Whether the operation succeeded\n */\n async memoryStore(\n key: string,\n value: string | object,\n namespace: string = 'default',\n ttl?: number\n ): Promise<boolean> {\n const stringValue = typeof value === 'string' ? value : JSON.stringify(value);\n\n const result = await this.executeWithRetry(async () => {\n const command = this.buildStoreCommand(key, stringValue, namespace, ttl);\n await this.executeCli(command);\n return true;\n });\n\n if (result.success) {\n logger.debug('Memory store succeeded via CLI', { key, namespace });\n return true;\n }\n\n // Fallback to in-memory storage\n if (this.config.fallbackEnabled) {\n this.storeFallback(key, stringValue, namespace, ttl);\n logger.warn('Memory store fell back to in-memory', { key, namespace, error: result.error });\n return true;\n }\n\n logger.error('Memory store failed', undefined, { key, namespace, error: result.error });\n return false;\n }\n\n /**\n * Retrieve a value from memory\n *\n * @param key - Memory key\n * @param namespace - Memory namespace (default: 'default')\n * @returns The stored value or null if not found\n */\n async memoryRetrieve(key: string, namespace: string = 'default'): Promise<string | null> {\n const result = await this.executeWithRetry(async () => {\n const command = this.buildQueryCommand(key, namespace);\n const output = await this.executeCli(command);\n return this.parseQueryOutput(output, key);\n });\n\n if (result.success && result.value !== undefined) {\n logger.debug('Memory retrieve succeeded via CLI', { key, namespace });\n return result.value;\n }\n\n // Fallback to in-memory storage\n if (this.config.fallbackEnabled) {\n const fallbackValue = this.retrieveFallback(key, namespace);\n if (fallbackValue !== null) {\n logger.debug('Memory retrieve fell back to in-memory', { key, namespace });\n return fallbackValue;\n }\n }\n\n logger.debug('Memory retrieve returned null', { key, namespace });\n return null;\n }\n\n /**\n * Search memory by pattern\n *\n * @param pattern - Search pattern (supports glob-like matching)\n * @param namespace - Memory namespace (default: 'default')\n * @param limit - Maximum number of results (default: 10)\n * @returns Array of matching keys\n */\n async memorySearch(\n pattern: string,\n namespace: string = 'default',\n limit: number = 10\n ): Promise<string[]> {\n const result = await this.executeWithRetry(async () => {\n const command = this.buildSearchCommand(pattern, namespace, limit);\n const output = await this.executeCli(command);\n return this.parseSearchOutput(output);\n });\n\n if (result.success && result.value) {\n logger.debug('Memory search succeeded via CLI', { pattern, namespace, count: result.value.length });\n return result.value;\n }\n\n // Fallback to in-memory search\n if (this.config.fallbackEnabled) {\n const fallbackResults = this.searchFallback(pattern, namespace, limit);\n logger.debug('Memory search fell back to in-memory', { pattern, namespace, count: fallbackResults.length });\n return fallbackResults;\n }\n\n logger.debug('Memory search returned empty', { pattern, namespace });\n return [];\n }\n\n /**\n * Delete a value from memory\n *\n * @param key - Memory key\n * @param namespace - Memory namespace (default: 'default')\n * @returns Whether the operation succeeded\n */\n async memoryDelete(key: string, namespace: string = 'default'): Promise<boolean> {\n const result = await this.executeWithRetry(async () => {\n // Use clear command with specific key pattern\n const command = this.buildDeleteCommand(key, namespace);\n await this.executeCli(command);\n return true;\n });\n\n if (result.success) {\n logger.debug('Memory delete succeeded via CLI', { key, namespace });\n }\n\n // Also delete from fallback (regardless of CLI success)\n if (this.config.fallbackEnabled) {\n this.deleteFallback(key, namespace);\n }\n\n return result.success || this.config.fallbackEnabled;\n }\n\n /**\n * List all keys in a namespace\n *\n * @param namespace - Memory namespace (default: 'default')\n * @returns Array of keys\n */\n async memoryList(namespace: string = 'default'): Promise<string[]> {\n const result = await this.executeWithRetry(async () => {\n const command = `${this.config.cliCommand} memory list --namespace \"${namespace}\"`;\n const output = await this.executeCli(command);\n return this.parseListOutput(output);\n });\n\n if (result.success && result.value) {\n logger.debug('Memory list succeeded via CLI', { namespace, count: result.value.length });\n return result.value;\n }\n\n // Fallback\n if (this.config.fallbackEnabled) {\n const fallbackKeys = this.listFallback(namespace);\n logger.debug('Memory list fell back to in-memory', { namespace, count: fallbackKeys.length });\n return fallbackKeys;\n }\n\n return [];\n }\n\n /**\n * Check if CLI is available\n */\n async isCliAvailable(): Promise<boolean> {\n const now = Date.now();\n\n // Use cached result if recent\n if (this.cliAvailable !== null && now - this.lastCliCheck < this.CLI_CHECK_INTERVAL) {\n return this.cliAvailable;\n }\n\n try {\n await this.executeCli(`${this.config.cliCommand} --version`, 5000);\n this.cliAvailable = true;\n this.lastCliCheck = now;\n return true;\n } catch {\n this.cliAvailable = false;\n this.lastCliCheck = now;\n return false;\n }\n }\n\n /**\n * Get current configuration\n */\n getConfig(): Readonly<McpClientConfig> {\n return { ...this.config };\n }\n\n /**\n * Get fallback store size for a namespace\n */\n getFallbackSize(namespace: string = 'default'): number {\n return this.fallbackStore.get(namespace)?.size ?? 0;\n }\n\n /**\n * Clear fallback store\n */\n clearFallback(namespace?: string): void {\n if (namespace) {\n this.fallbackStore.delete(namespace);\n } else {\n this.fallbackStore.clear();\n }\n }\n\n // Private methods\n\n private async executeWithRetry<T>(\n operation: () => Promise<T>\n ): Promise<{ success: boolean; value?: T; error?: string; attempts: number }> {\n const retryOptions: RetryOptions = {\n maxRetries: this.config.maxRetries,\n initialDelay: this.config.retryDelayMs,\n backoffFactor: 2,\n jitter: true,\n onRetry: (error, attempt, delay) => {\n logger.debug('Retrying MCP operation', {\n attempt,\n delay,\n error: error.message,\n });\n },\n };\n\n const result = await withRetry(operation, retryOptions);\n\n return {\n success: result.success,\n value: result.value,\n error: result.error?.message,\n attempts: result.attempts,\n };\n }\n\n private async executeCli(command: string, timeout?: number): Promise<string> {\n const effectiveTimeout = timeout ?? this.config.timeoutMs;\n\n logger.debug('Executing CLI command', { command: command.substring(0, 100) });\n\n try {\n const { stdout, stderr } = await execAsync(command, {\n timeout: effectiveTimeout,\n maxBuffer: 10 * 1024 * 1024, // 10MB buffer\n shell: '/bin/bash',\n });\n\n if (stderr && !stderr.includes('DeprecationWarning')) {\n logger.warn('CLI stderr output', { stderr: stderr.substring(0, 500) });\n }\n\n return stdout.trim();\n } catch (error) {\n const execError = error as ExecError;\n\n if (execError.code === 'ETIMEDOUT' || execError.killed) {\n throw new Error(`CLI command timed out after ${effectiveTimeout}ms`);\n }\n\n // Include any output in the error for debugging\n const message = execError.message || 'CLI execution failed';\n const details = execError.stderr || execError.stdout || '';\n throw new Error(`${message}${details ? `: ${details.substring(0, 200)}` : ''}`);\n }\n }\n\n private buildStoreCommand(\n key: string,\n value: string,\n namespace: string,\n ttl?: number\n ): string {\n const escapedValue = this.escapeShellArg(value);\n let command = `${this.config.cliCommand} memory store \"${key}\" ${escapedValue} --namespace \"${namespace}\"`;\n\n if (ttl !== undefined && ttl > 0) {\n command += ` --ttl ${ttl}`;\n }\n\n return command;\n }\n\n private buildQueryCommand(key: string, namespace: string): string {\n // Use query command to search for exact key\n return `${this.config.cliCommand} memory query \"${key}\" --namespace \"${namespace}\"`;\n }\n\n private buildSearchCommand(pattern: string, namespace: string, limit: number): string {\n return `${this.config.cliCommand} memory query \"${pattern}\" --namespace \"${namespace}\"`;\n }\n\n private buildDeleteCommand(key: string, namespace: string): string {\n // claude-flow uses 'clear' for deletion\n return `${this.config.cliCommand} memory clear --namespace \"${namespace}\"`;\n }\n\n private parseQueryOutput(output: string, key: string): string | null {\n if (!output || output.includes('not found') || output.includes('No results')) {\n return null;\n }\n\n // Try to parse as JSON first\n try {\n const parsed = JSON.parse(output);\n if (typeof parsed === 'object' && parsed !== null) {\n // Look for the key in the result\n if (key in parsed) {\n return typeof parsed[key] === 'string' ? parsed[key] : JSON.stringify(parsed[key]);\n }\n // Return the whole object as JSON string\n return JSON.stringify(parsed);\n }\n return String(parsed);\n } catch {\n // Return raw output\n return output;\n }\n }\n\n private parseSearchOutput(output: string): string[] {\n if (!output || output.includes('No results')) {\n return [];\n }\n\n // Try to parse as JSON array\n try {\n const parsed = JSON.parse(output);\n if (Array.isArray(parsed)) {\n return parsed.map((item) => (typeof item === 'string' ? item : JSON.stringify(item)));\n }\n if (typeof parsed === 'object' && parsed !== null) {\n return Object.keys(parsed);\n }\n } catch {\n // Parse line by line\n return output\n .split('\\n')\n .map((line) => line.trim())\n .filter((line) => line.length > 0 && !line.startsWith('#'));\n }\n\n return [];\n }\n\n private parseListOutput(output: string): string[] {\n return this.parseSearchOutput(output);\n }\n\n private escapeShellArg(arg: string): string {\n // Escape for shell and wrap in quotes\n const escaped = arg\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/`/g, '\\\\`')\n .replace(/\\$/g, '\\\\$')\n .replace(/\\n/g, '\\\\n');\n return `\"${escaped}\"`;\n }\n\n // Fallback storage methods\n\n private getOrCreateNamespace(namespace: string): Map<string, FallbackEntry> {\n let ns = this.fallbackStore.get(namespace);\n if (!ns) {\n ns = new Map();\n this.fallbackStore.set(namespace, ns);\n }\n return ns;\n }\n\n private storeFallback(key: string, value: string, namespace: string, ttl?: number): void {\n const ns = this.getOrCreateNamespace(namespace);\n const now = Date.now();\n\n ns.set(key, {\n value,\n ttl,\n createdAt: now,\n expiresAt: ttl ? now + ttl * 1000 : undefined,\n });\n }\n\n private retrieveFallback(key: string, namespace: string): string | null {\n const ns = this.fallbackStore.get(namespace);\n if (!ns) return null;\n\n const entry = ns.get(key);\n if (!entry) return null;\n\n // Check expiration\n if (entry.expiresAt && Date.now() > entry.expiresAt) {\n ns.delete(key);\n return null;\n }\n\n return entry.value;\n }\n\n private searchFallback(pattern: string, namespace: string, limit: number): string[] {\n const ns = this.fallbackStore.get(namespace);\n if (!ns) return [];\n\n const now = Date.now();\n const results: string[] = [];\n\n // Convert glob pattern to regex\n const regexPattern = pattern\n .replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/\\?/g, '.');\n const regex = new RegExp(`^${regexPattern}$`, 'i');\n\n for (const [key, entry] of ns) {\n if (results.length >= limit) break;\n\n // Skip expired entries\n if (entry.expiresAt && now > entry.expiresAt) {\n ns.delete(key);\n continue;\n }\n\n if (regex.test(key)) {\n results.push(key);\n }\n }\n\n return results;\n }\n\n private deleteFallback(key: string, namespace: string): boolean {\n const ns = this.fallbackStore.get(namespace);\n if (!ns) return false;\n return ns.delete(key);\n }\n\n private listFallback(namespace: string): string[] {\n const ns = this.fallbackStore.get(namespace);\n if (!ns) return [];\n\n const now = Date.now();\n const keys: string[] = [];\n\n for (const [key, entry] of ns) {\n // Skip expired entries\n if (entry.expiresAt && now > entry.expiresAt) {\n ns.delete(key);\n continue;\n }\n keys.push(key);\n }\n\n return keys;\n }\n}\n\n/**\n * Create a configured MCP client adapter\n */\nexport function createMcpClientAdapter(config?: Partial<McpClientConfig>): McpClientAdapter {\n return new McpClientAdapter(config);\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * MCP Module
3
+ *
4
+ * Provides MCP client adapters and utilities for integrating
5
+ * the knowledge graph agent with claude-flow and other MCP tools.
6
+ *
7
+ * @module mcp
8
+ */
9
+ export * from './clients/index.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,cAAc,oBAAoB,CAAC"}
@@ -9,6 +9,7 @@
9
9
  import { type RetryOptions } from '../utils/index.js';
10
10
  import { type FileChange } from '../core/cache.js';
11
11
  import { KnowledgeGraphDatabase } from '../core/database.js';
12
+ import { ClaudeFlowMemoryClient, type ClaudeFlowMemoryClientConfig } from '../mcp/clients/index.js';
12
13
  /**
13
14
  * Sync direction
14
15
  */
@@ -92,6 +93,8 @@ export interface VaultSyncOptions {
92
93
  includeContent?: boolean;
93
94
  /** Maximum content length to store */
94
95
  maxContentLength?: number;
96
+ /** MCP client configuration */
97
+ mcpClientConfig?: Partial<ClaudeFlowMemoryClientConfig>;
95
98
  }
96
99
  /**
97
100
  * Sync result for a single operation
@@ -152,6 +155,7 @@ export declare class VaultMemorySync {
152
155
  private isSyncing;
153
156
  private syncErrors;
154
157
  private autoSyncTimer;
158
+ private mcpClient;
155
159
  constructor(options: VaultSyncOptions);
156
160
  /**
157
161
  * Initialize the sync system with database
@@ -189,6 +193,14 @@ export declare class VaultMemorySync {
189
193
  * Stop the sync system
190
194
  */
191
195
  stop(): void;
196
+ /**
197
+ * Check if the claude-flow CLI is available
198
+ */
199
+ isCliAvailable(): Promise<boolean>;
200
+ /**
201
+ * Get the MCP client for advanced usage
202
+ */
203
+ getMcpClient(): ClaudeFlowMemoryClient;
192
204
  private startAutoSync;
193
205
  private nodeToMemoryEntry;
194
206
  private extractSummary;
@@ -1 +1 @@
1
- {"version":3,"file":"vault-sync.d.ts","sourceRoot":"","sources":["../../src/memory/vault-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vault-sync.d.ts","sourceRoot":"","sources":["../../src/memory/vault-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAA2B,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAkC,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,sBAAsB,EAItB,KAAK,4BAA4B,EAClC,MAAM,yBAAyB,CAAC;AAIjC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,aAAa,GAAG,eAAe,CAAC;AAE1E;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,YAAY,GACZ,aAAa,GACb,OAAO,GACP,QAAQ,CAAC;AAEb;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,qCAAqC;IACrC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,wCAAwC;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,yCAAyC;IACzC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,0CAA0C;IAC1C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,yBAAyB;IACzB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,IAAI,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,aAAa,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,IAAI,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC3C,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2CAA2C;IAC3C,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sCAAsC;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+BAA+B;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC,4BAA4B,CAAC,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,MAAM,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,UAAU,EAAE,mBAAmB,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAoH;IACnI,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,EAAE,CAAuC;IACjD,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,SAAS,CAAyB;gBAE9B,OAAO,EAAE,gBAAgB;IA6BrC;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB3D;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,mBAAmB,CAAC;IA6ElD;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAwEpD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IAezC;;OAEG;IACH,SAAS,IAAI,UAAU;IAwBvB;;OAEG;IACH,YAAY,IAAI,YAAY,EAAE;IAI9B;;OAEG;IACG,uBAAuB,CAC3B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,OAAO,GAAG,QAAQ,GAC7B,OAAO,CAAC,OAAO,CAAC;IAyBnB;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAW5C;;OAEG;IACH,IAAI,IAAI,IAAI;IAUZ;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAIxC;;OAEG;IACH,YAAY,IAAI,sBAAsB;IAMtC,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,kBAAkB;YAIZ,aAAa;YAgCb,kBAAkB;YA8BlB,mBAAmB;YAgDnB,cAAc;IAyB5B,OAAO,CAAC,oBAAoB;YAkBd,eAAe;IA0C7B,OAAO,CAAC,wBAAwB;IAqBhC,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,aAAa;YAQP,eAAe;YAwBf,eAAe;CAK9B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAEhF"}