@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.
- package/LICENSE +21 -0
- package/README.md +70 -3
- package/dist/_virtual/__vite-browser-external.js +2 -2
- package/dist/_virtual/__vite-browser-external.js.map +1 -1
- package/dist/_virtual/index12.js +7 -0
- package/dist/_virtual/index12.js.map +1 -0
- package/dist/_virtual/ort-web.min.js +8 -0
- package/dist/_virtual/ort-web.min.js.map +1 -0
- package/dist/_virtual/ort-web.min2.js +5 -0
- package/dist/_virtual/ort-web.min2.js.map +1 -0
- package/dist/agents/base-agent.d.ts +63 -0
- package/dist/agents/base-agent.d.ts.map +1 -1
- package/dist/agents/base-agent.js +139 -0
- package/dist/agents/base-agent.js.map +1 -1
- package/dist/agents/coordinator-agent.d.ts +422 -0
- package/dist/agents/coordinator-agent.d.ts.map +1 -0
- package/dist/agents/documenter-agent.d.ts +298 -0
- package/dist/agents/documenter-agent.d.ts.map +1 -0
- package/dist/agents/index.d.ts +11 -1
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +4 -0
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/mixins/index.d.ts +9 -0
- package/dist/agents/mixins/index.d.ts.map +1 -0
- package/dist/agents/mixins/trajectory-mixin.d.ts +112 -0
- package/dist/agents/mixins/trajectory-mixin.d.ts.map +1 -0
- package/dist/agents/optimizer-agent.d.ts +388 -0
- package/dist/agents/optimizer-agent.d.ts.map +1 -0
- package/dist/agents/planner-agent.d.ts +395 -0
- package/dist/agents/planner-agent.d.ts.map +1 -0
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +5 -0
- package/dist/agents/registry.js.map +1 -1
- package/dist/agents/reviewer-agent.d.ts +330 -0
- package/dist/agents/reviewer-agent.d.ts.map +1 -0
- package/dist/agents/types.d.ts +12 -1
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/types.js +1 -0
- package/dist/agents/types.js.map +1 -1
- package/dist/cli/commands/hive-mind/add-frontmatter.d.ts +102 -0
- package/dist/cli/commands/hive-mind/add-frontmatter.d.ts.map +1 -0
- package/dist/cli/commands/hive-mind/add-frontmatter.js +439 -0
- package/dist/cli/commands/hive-mind/add-frontmatter.js.map +1 -0
- package/dist/cli/commands/hive-mind/analyze-links.d.ts +80 -0
- package/dist/cli/commands/hive-mind/analyze-links.d.ts.map +1 -0
- package/dist/cli/commands/hive-mind/analyze-links.js +367 -0
- package/dist/cli/commands/hive-mind/analyze-links.js.map +1 -0
- package/dist/cli/commands/hive-mind/find-connections.d.ts +75 -0
- package/dist/cli/commands/hive-mind/find-connections.d.ts.map +1 -0
- package/dist/cli/commands/hive-mind/find-connections.js +347 -0
- package/dist/cli/commands/hive-mind/find-connections.js.map +1 -0
- package/dist/cli/commands/hive-mind/index.d.ts +37 -0
- package/dist/cli/commands/hive-mind/index.d.ts.map +1 -0
- package/dist/cli/commands/hive-mind/index.js +33 -0
- package/dist/cli/commands/hive-mind/index.js.map +1 -0
- package/dist/cli/commands/hive-mind/validate-names.d.ts +79 -0
- package/dist/cli/commands/hive-mind/validate-names.d.ts.map +1 -0
- package/dist/cli/commands/hive-mind/validate-names.js +353 -0
- package/dist/cli/commands/hive-mind/validate-names.js.map +1 -0
- package/dist/cli/commands/vector.js +2 -0
- package/dist/cli/commands/vector.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +7 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/equilibrium/agent-equilibrium.d.ts +194 -0
- package/dist/equilibrium/agent-equilibrium.d.ts.map +1 -0
- package/dist/equilibrium/agent-equilibrium.js +304 -0
- package/dist/equilibrium/agent-equilibrium.js.map +1 -0
- package/dist/equilibrium/graph-equilibrium.d.ts +177 -0
- package/dist/equilibrium/graph-equilibrium.d.ts.map +1 -0
- package/dist/equilibrium/index.d.ts +11 -0
- package/dist/equilibrium/index.d.ts.map +1 -0
- package/dist/equilibrium/memory-equilibrium.d.ts +153 -0
- package/dist/equilibrium/memory-equilibrium.d.ts.map +1 -0
- package/dist/graphql/resolvers/index.d.ts.map +1 -1
- package/dist/graphql/resolvers/queries.d.ts +11 -0
- package/dist/graphql/resolvers/queries.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -4
- package/dist/index.js.map +1 -1
- package/dist/inference/index.d.ts +9 -0
- package/dist/inference/index.d.ts.map +1 -0
- package/dist/inference/model-selection.d.ts +131 -0
- package/dist/inference/model-selection.d.ts.map +1 -0
- package/dist/integrations/agentic-flow/adapters/agent-booster-adapter.d.ts +265 -0
- package/dist/integrations/agentic-flow/adapters/agent-booster-adapter.d.ts.map +1 -0
- package/dist/integrations/agentic-flow/adapters/agentdb-adapter.d.ts +197 -0
- package/dist/integrations/agentic-flow/adapters/agentdb-adapter.d.ts.map +1 -0
- package/dist/integrations/agentic-flow/adapters/agentdb-vector-store.d.ts +249 -0
- package/dist/integrations/agentic-flow/adapters/agentdb-vector-store.d.ts.map +1 -0
- package/dist/integrations/agentic-flow/adapters/base-adapter.d.ts +120 -0
- package/dist/integrations/agentic-flow/adapters/base-adapter.d.ts.map +1 -0
- package/dist/integrations/agentic-flow/adapters/federation-hub-adapter.d.ts +444 -0
- package/dist/integrations/agentic-flow/adapters/federation-hub-adapter.d.ts.map +1 -0
- package/dist/integrations/agentic-flow/adapters/index.d.ts +17 -0
- package/dist/integrations/agentic-flow/adapters/index.d.ts.map +1 -0
- package/dist/integrations/agentic-flow/adapters/model-router-adapter.d.ts +242 -0
- package/dist/integrations/agentic-flow/adapters/model-router-adapter.d.ts.map +1 -0
- package/dist/integrations/agentic-flow/adapters/quic-transport-adapter.d.ts +364 -0
- package/dist/integrations/agentic-flow/adapters/quic-transport-adapter.d.ts.map +1 -0
- package/dist/integrations/agentic-flow/adapters/reasoning-bank-adapter.d.ts +209 -0
- package/dist/integrations/agentic-flow/adapters/reasoning-bank-adapter.d.ts.map +1 -0
- package/dist/integrations/agentic-flow/benchmark/index.d.ts +9 -0
- package/dist/integrations/agentic-flow/benchmark/index.d.ts.map +1 -0
- package/dist/integrations/agentic-flow/benchmark/vector-benchmark.d.ts +253 -0
- package/dist/integrations/agentic-flow/benchmark/vector-benchmark.d.ts.map +1 -0
- package/dist/integrations/agentic-flow/config.d.ts +109 -0
- package/dist/integrations/agentic-flow/config.d.ts.map +1 -0
- package/dist/integrations/agentic-flow/feature-flags.d.ts +140 -0
- package/dist/integrations/agentic-flow/feature-flags.d.ts.map +1 -0
- package/dist/integrations/agentic-flow/index.d.ts +22 -0
- package/dist/integrations/agentic-flow/index.d.ts.map +1 -0
- package/dist/integrations/agentic-flow/migration/index.d.ts +9 -0
- package/dist/integrations/agentic-flow/migration/index.d.ts.map +1 -0
- package/dist/integrations/agentic-flow/migration/migrate-to-agentdb.d.ts +242 -0
- package/dist/integrations/agentic-flow/migration/migrate-to-agentdb.d.ts.map +1 -0
- package/dist/learning/index.d.ts +91 -0
- package/dist/learning/index.d.ts.map +1 -0
- package/dist/learning/learning-loop.d.ts +176 -0
- package/dist/learning/learning-loop.d.ts.map +1 -0
- package/dist/learning/services/ab-testing-framework.d.ts +135 -0
- package/dist/learning/services/ab-testing-framework.d.ts.map +1 -0
- package/dist/learning/services/agent-priming-service.d.ts +207 -0
- package/dist/learning/services/agent-priming-service.d.ts.map +1 -0
- package/dist/learning/services/daily-log-generator.d.ts +113 -0
- package/dist/learning/services/daily-log-generator.d.ts.map +1 -0
- package/dist/learning/services/index.d.ts +14 -0
- package/dist/learning/services/index.d.ts.map +1 -0
- package/dist/learning/services/memory-extraction-service.d.ts +87 -0
- package/dist/learning/services/memory-extraction-service.d.ts.map +1 -0
- package/dist/learning/services/task-completion-consumer.d.ts +162 -0
- package/dist/learning/services/task-completion-consumer.d.ts.map +1 -0
- package/dist/learning/services/trajectory-tracker.d.ts +174 -0
- package/dist/learning/services/trajectory-tracker.d.ts.map +1 -0
- package/dist/learning/types.d.ts +516 -0
- package/dist/learning/types.d.ts.map +1 -0
- package/dist/mcp/clients/claude-flow-memory-client.d.ts +259 -0
- package/dist/mcp/clients/claude-flow-memory-client.d.ts.map +1 -0
- package/dist/mcp/clients/claude-flow-memory-client.js +305 -0
- package/dist/mcp/clients/claude-flow-memory-client.js.map +1 -0
- package/dist/mcp/clients/index.d.ts +11 -0
- package/dist/mcp/clients/index.d.ts.map +1 -0
- package/dist/mcp/clients/mcp-client-adapter.d.ts +146 -0
- package/dist/mcp/clients/mcp-client-adapter.d.ts.map +1 -0
- package/dist/mcp/clients/mcp-client-adapter.js +372 -0
- package/dist/mcp/clients/mcp-client-adapter.js.map +1 -0
- package/dist/mcp/index.d.ts +10 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/memory/vault-sync.d.ts +12 -0
- package/dist/memory/vault-sync.d.ts.map +1 -1
- package/dist/memory/vault-sync.js +94 -11
- package/dist/memory/vault-sync.js.map +1 -1
- package/dist/node_modules/@huggingface/jinja/dist/index.js +118 -0
- package/dist/node_modules/@huggingface/jinja/dist/index.js.map +1 -0
- package/dist/node_modules/@typescript-eslint/project-service/dist/index.js +1 -1
- package/dist/node_modules/@xenova/transformers/src/backends/onnx.js +24 -0
- package/dist/node_modules/@xenova/transformers/src/backends/onnx.js.map +1 -0
- package/dist/node_modules/@xenova/transformers/src/configs.js +52 -0
- package/dist/node_modules/@xenova/transformers/src/configs.js.map +1 -0
- package/dist/node_modules/@xenova/transformers/src/env.js +35 -0
- package/dist/node_modules/@xenova/transformers/src/env.js.map +1 -0
- package/dist/node_modules/@xenova/transformers/src/models.js +3852 -0
- package/dist/node_modules/@xenova/transformers/src/models.js.map +1 -0
- package/dist/node_modules/@xenova/transformers/src/tokenizers.js +144 -0
- package/dist/node_modules/@xenova/transformers/src/tokenizers.js.map +1 -0
- package/dist/node_modules/@xenova/transformers/src/utils/core.js +52 -0
- package/dist/node_modules/@xenova/transformers/src/utils/core.js.map +1 -0
- package/dist/node_modules/@xenova/transformers/src/utils/generation.js +623 -0
- package/dist/node_modules/@xenova/transformers/src/utils/generation.js.map +1 -0
- package/dist/node_modules/@xenova/transformers/src/utils/hub.js +395 -0
- package/dist/node_modules/@xenova/transformers/src/utils/hub.js.map +1 -0
- package/dist/node_modules/@xenova/transformers/src/utils/image.js +12 -0
- package/dist/node_modules/@xenova/transformers/src/utils/image.js.map +1 -0
- package/dist/node_modules/@xenova/transformers/src/utils/maths.js +89 -0
- package/dist/node_modules/@xenova/transformers/src/utils/maths.js.map +1 -0
- package/dist/node_modules/@xenova/transformers/src/utils/tensor.js +750 -0
- package/dist/node_modules/@xenova/transformers/src/utils/tensor.js.map +1 -0
- package/dist/node_modules/fdir/dist/index.js +13 -13
- package/dist/node_modules/fdir/dist/index.js.map +1 -1
- package/dist/node_modules/onnxruntime-common/dist/lib/backend-impl.js +67 -0
- package/dist/node_modules/onnxruntime-common/dist/lib/backend-impl.js.map +1 -0
- package/dist/node_modules/onnxruntime-common/dist/lib/env-impl.js +24 -0
- package/dist/node_modules/onnxruntime-common/dist/lib/env-impl.js.map +1 -0
- package/dist/node_modules/onnxruntime-common/dist/lib/env.js +6 -0
- package/dist/node_modules/onnxruntime-common/dist/lib/env.js.map +1 -0
- package/dist/node_modules/onnxruntime-common/dist/lib/index.js +11 -0
- package/dist/node_modules/onnxruntime-common/dist/lib/index.js.map +1 -0
- package/dist/node_modules/onnxruntime-common/dist/lib/inference-session-impl.js +162 -0
- package/dist/node_modules/onnxruntime-common/dist/lib/inference-session-impl.js.map +1 -0
- package/dist/node_modules/onnxruntime-common/dist/lib/inference-session.js +6 -0
- package/dist/node_modules/onnxruntime-common/dist/lib/inference-session.js.map +1 -0
- package/dist/node_modules/onnxruntime-common/dist/lib/tensor-impl.js +393 -0
- package/dist/node_modules/onnxruntime-common/dist/lib/tensor-impl.js.map +1 -0
- package/dist/node_modules/onnxruntime-common/dist/lib/tensor.js +6 -0
- package/dist/node_modules/onnxruntime-common/dist/lib/tensor.js.map +1 -0
- package/dist/node_modules/onnxruntime-web/dist/ort-web.min.js +12919 -0
- package/dist/node_modules/onnxruntime-web/dist/ort-web.min.js.map +1 -0
- package/dist/node_modules/tinyglobby/dist/index.js +14 -14
- package/dist/node_modules/tinyglobby/dist/index.js.map +1 -1
- package/dist/node_modules/typescript/lib/typescript.js +24 -24
- package/dist/node_modules/typescript/lib/typescript.js.map +1 -1
- package/dist/transport/agent-transport.d.ts +269 -0
- package/dist/transport/agent-transport.d.ts.map +1 -0
- package/dist/transport/index.d.ts +10 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/vector/index.d.ts +1 -1
- package/dist/vector/index.d.ts.map +1 -1
- package/dist/vector/services/embedding-service.d.ts +244 -0
- package/dist/vector/services/embedding-service.d.ts.map +1 -0
- package/dist/vector/services/embedding-service.js +10 -0
- package/dist/vector/services/embedding-service.js.map +1 -0
- package/dist/vector/services/hybrid-search.d.ts +320 -0
- package/dist/vector/services/hybrid-search.d.ts.map +1 -0
- package/dist/vector/services/hybrid-search.js +3 -0
- package/dist/vector/services/hybrid-search.js.map +1 -0
- package/dist/vector/services/index.d.ts +4 -0
- package/dist/vector/services/index.d.ts.map +1 -1
- 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"}
|