@pyxmate/memory 0.0.1-beta

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.
@@ -0,0 +1,216 @@
1
+ import { MemoryType, MemoryEntry, MemoryStats, GraphRelationship, GraphNode } from '@pyx-memory/shared';
2
+ import { MemoryClient } from '@pyx-memory/client';
3
+
4
+ interface RawHealthResponse {
5
+ status: string;
6
+ uptime: number;
7
+ memoryStatus: string;
8
+ embeddingProvider: string;
9
+ version: string;
10
+ stats?: {
11
+ totalEntries: number;
12
+ vectorCount: number;
13
+ storageUsedBytes: number;
14
+ };
15
+ }
16
+ interface HealthData {
17
+ status: 'ok' | 'degraded' | 'unreachable';
18
+ uptime: number;
19
+ uptimeFormatted: string;
20
+ storageMB: number;
21
+ isHealthy: boolean;
22
+ embeddingProvider: string;
23
+ stats?: {
24
+ totalEntries: number;
25
+ vectorCount: number;
26
+ storageUsedBytes: number;
27
+ };
28
+ }
29
+ interface TypeDistribution {
30
+ counts: Record<string, number>;
31
+ percentages: Record<string, number>;
32
+ total: number;
33
+ dominant: string;
34
+ }
35
+ interface EntryFilters {
36
+ page?: number;
37
+ limit?: number;
38
+ type?: MemoryType;
39
+ agentId?: string;
40
+ query?: string;
41
+ }
42
+ interface PaginatedEntries {
43
+ entries: MemoryEntry[];
44
+ page: number;
45
+ limit: number;
46
+ totalCount: number;
47
+ totalPages: number;
48
+ hasNextPage: boolean;
49
+ hasPreviousPage: boolean;
50
+ }
51
+ interface ConsolidationLogEntry {
52
+ id: number;
53
+ runAt: string;
54
+ entriesProcessed: number;
55
+ entriesMerged: number;
56
+ entriesArchived: number;
57
+ durationMs: number;
58
+ }
59
+ interface ConsolidationAnalytics {
60
+ entries: ConsolidationLogEntry[];
61
+ totalRuns: number;
62
+ avgDurationMs: number;
63
+ avgEntriesProcessed: number;
64
+ avgEntriesMerged: number;
65
+ avgEntriesArchived: number;
66
+ lastRunAt: string | null;
67
+ consolidationTrend: 'increasing' | 'decreasing' | 'stable' | 'insufficient_data';
68
+ }
69
+ interface MemoryMetrics {
70
+ totalEntries: number;
71
+ vectorCount: number;
72
+ storageUsedBytes: number;
73
+ storageMB: number;
74
+ avgImportance: number;
75
+ staleCandidates: number;
76
+ graphNodeCount: number;
77
+ graphEdgeCount: number;
78
+ }
79
+ interface GraphVizNode {
80
+ id: string;
81
+ label: string;
82
+ type: string;
83
+ memoryCount: number;
84
+ degree: number;
85
+ properties: Record<string, unknown>;
86
+ }
87
+ interface GraphVizEdge {
88
+ id: string;
89
+ source: string;
90
+ target: string;
91
+ label: string;
92
+ weight: number;
93
+ }
94
+ interface GraphVizData {
95
+ nodes: GraphVizNode[];
96
+ edges: GraphVizEdge[];
97
+ nodeCount: number;
98
+ edgeCount: number;
99
+ nodeTypes: Record<string, number>;
100
+ edgeTypes: Record<string, number>;
101
+ }
102
+ interface GraphologyNode {
103
+ key: string;
104
+ attributes: {
105
+ label: string;
106
+ type: string;
107
+ memoryCount: number;
108
+ degree: number;
109
+ [key: string]: unknown;
110
+ };
111
+ }
112
+ interface GraphologyEdge {
113
+ key: string;
114
+ source: string;
115
+ target: string;
116
+ attributes: {
117
+ label: string;
118
+ weight: number;
119
+ };
120
+ }
121
+ interface GraphologyData {
122
+ nodes: GraphologyNode[];
123
+ edges: GraphologyEdge[];
124
+ }
125
+ interface D3ForceNode {
126
+ id: string;
127
+ label: string;
128
+ type: string;
129
+ memoryCount: number;
130
+ degree: number;
131
+ }
132
+ interface D3ForceLink {
133
+ source: string;
134
+ target: string;
135
+ label: string;
136
+ weight: number;
137
+ }
138
+ interface D3ForceData {
139
+ nodes: D3ForceNode[];
140
+ links: D3ForceLink[];
141
+ }
142
+ interface PollerOptions {
143
+ intervalMs: number;
144
+ immediate?: boolean;
145
+ }
146
+ interface PollerState<T> {
147
+ data: T | null;
148
+ error: Error | null;
149
+ isLoading: boolean;
150
+ lastUpdated: Date | null;
151
+ }
152
+ interface HookResult<T> {
153
+ data: T | null;
154
+ error: Error | null;
155
+ isLoading: boolean;
156
+ lastUpdated: Date | null;
157
+ refetch: () => void;
158
+ }
159
+
160
+ declare function analyzeConsolidationLog(entries: ConsolidationLogEntry[]): ConsolidationAnalytics;
161
+
162
+ declare function formatUptime(seconds: number): string;
163
+ declare function formatBytes(bytes: number): string;
164
+ declare function enrichHealth(raw: RawHealthResponse): HealthData;
165
+ declare function unreachableHealth(_error?: Error): HealthData;
166
+
167
+ declare function computeMetrics(stats: MemoryStats, entries: MemoryEntry[]): MemoryMetrics;
168
+
169
+ declare function computeTypeDistribution(entries: MemoryEntry[]): TypeDistribution;
170
+
171
+ declare class DashboardClient extends MemoryClient {
172
+ consolidationLog(limit?: number): Promise<ConsolidationLogEntry[]>;
173
+ listEntriesPaginated(filters?: EntryFilters): Promise<PaginatedEntries>;
174
+ graphRelationships(limit?: number): Promise<{
175
+ relationships: GraphRelationship[];
176
+ totalCount: number;
177
+ }>;
178
+ graphFull(limit?: number): Promise<{
179
+ nodes: GraphNode[];
180
+ relationships: GraphRelationship[];
181
+ }>;
182
+ fetchHealthRaw(): Promise<RawHealthResponse>;
183
+ }
184
+
185
+ interface TransformOptions {
186
+ minWeight?: number;
187
+ maxNodes?: number;
188
+ }
189
+ declare function transformGraphData(nodes: GraphNode[], relationships: GraphRelationship[], opts?: TransformOptions): GraphVizData;
190
+
191
+ declare function toGraphologyFormat(data: GraphVizData): GraphologyData;
192
+ declare function toD3ForceFormat(data: GraphVizData): D3ForceData;
193
+
194
+ type Listener<T> = (state: PollerState<T>) => void;
195
+ type ErrorListener = (error: Error) => void;
196
+ declare class Poller<T> {
197
+ private fetcher;
198
+ private options;
199
+ private timer;
200
+ private state;
201
+ private updateListeners;
202
+ private errorListeners;
203
+ constructor(fetcher: () => Promise<T>, options: PollerOptions);
204
+ on(event: 'update', listener: Listener<T>): this;
205
+ on(event: 'error', listener: ErrorListener): this;
206
+ off(event: 'update', listener: Listener<T>): this;
207
+ off(event: 'error', listener: ErrorListener): this;
208
+ start(): Promise<void>;
209
+ stop(): void;
210
+ getState(): PollerState<T>;
211
+ isRunning(): boolean;
212
+ poll(): Promise<void>;
213
+ private emit;
214
+ }
215
+
216
+ export { type ConsolidationAnalytics, type ConsolidationLogEntry, type D3ForceData, type D3ForceLink, type D3ForceNode, DashboardClient, type EntryFilters, type GraphVizData, type GraphVizEdge, type GraphVizNode, type GraphologyData, type GraphologyEdge, type GraphologyNode, type HealthData, type HookResult, type MemoryMetrics, type PaginatedEntries, Poller, type PollerOptions, type PollerState, type RawHealthResponse, type TransformOptions, type TypeDistribution, analyzeConsolidationLog, computeMetrics, computeTypeDistribution, enrichHealth, formatBytes, formatUptime, toD3ForceFormat, toGraphologyFormat, transformGraphData, unreachableHealth };
@@ -0,0 +1,29 @@
1
+ import {
2
+ DashboardClient,
3
+ Poller,
4
+ analyzeConsolidationLog,
5
+ computeMetrics,
6
+ computeTypeDistribution,
7
+ enrichHealth,
8
+ formatBytes,
9
+ formatUptime,
10
+ toD3ForceFormat,
11
+ toGraphologyFormat,
12
+ transformGraphData,
13
+ unreachableHealth
14
+ } from "./chunk-EDIYGMT2.mjs";
15
+ import "./chunk-Q4QIILKH.mjs";
16
+ export {
17
+ DashboardClient,
18
+ Poller,
19
+ analyzeConsolidationLog,
20
+ computeMetrics,
21
+ computeTypeDistribution,
22
+ enrichHealth,
23
+ formatBytes,
24
+ formatUptime,
25
+ toD3ForceFormat,
26
+ toGraphologyFormat,
27
+ transformGraphData,
28
+ unreachableHealth
29
+ };
@@ -0,0 +1,270 @@
1
+ import { MemoryEntry as MemoryEntry$1, MemorySearchParams as MemorySearchParams$1, MemorySearchResult as MemorySearchResult$1, MemoryType as MemoryType$1, MemoryStats as MemoryStats$1, GraphNode as GraphNode$1, GraphTraversalResult as GraphTraversalResult$1 } from '@pyx-memory/shared';
2
+
3
+ /** Parameters for paginated entry listing. */
4
+ interface MemoryListParams {
5
+ /** 1-based page number. Default: 1 */
6
+ page?: number;
7
+ /** Entries per page (1–100). Default: 20 */
8
+ limit?: number;
9
+ /** Filter by memory type. */
10
+ type?: MemoryType$1;
11
+ /** Filter by agent ID. */
12
+ agentId?: string;
13
+ }
14
+ /** Result of a paginated entry listing. */
15
+ interface MemoryListResult {
16
+ entries: MemoryEntry$1[];
17
+ totalCount: number;
18
+ page: number;
19
+ limit: number;
20
+ }
21
+ /** Abstract interface for memory systems (local or remote). */
22
+ interface MemoryInterface {
23
+ initialize(): Promise<void>;
24
+ store(entry: Omit<MemoryEntry$1, 'id' | 'createdAt'> & {
25
+ id?: string;
26
+ createdAt?: string;
27
+ }): Promise<MemoryEntry$1>;
28
+ search(params: MemorySearchParams$1): Promise<MemorySearchResult$1>;
29
+ /** List entries with SQL LIMIT/OFFSET pagination. */
30
+ list(params?: MemoryListParams): Promise<MemoryListResult>;
31
+ get(id: string): Promise<MemoryEntry$1 | null>;
32
+ delete(id: string): Promise<boolean>;
33
+ clearSession(sessionId: string): Promise<number>;
34
+ stats(): Promise<MemoryStats$1>;
35
+ shutdown(): Promise<void>;
36
+ }
37
+ /** Consolidation run result. */
38
+ interface ConsolidationRunResult {
39
+ entriesProcessed: number;
40
+ entriesMerged: number;
41
+ entriesArchived: number;
42
+ durationMs: number;
43
+ }
44
+ /** Extended interface with lifecycle operations. Non-breaking for existing consumers. */
45
+ interface ExtendedMemoryInterface extends MemoryInterface {
46
+ /** Run consolidation: score, dedup, decay, and summarize memories. */
47
+ consolidate(): Promise<ConsolidationRunResult>;
48
+ /** Soft-delete a memory with a reason (marks as archived). */
49
+ forget(id: string, reason?: string): Promise<boolean>;
50
+ /** Summarize a session's memories into a long-term entry. */
51
+ summarizeSession(sessionId: string): Promise<MemoryEntry$1 | null>;
52
+ /** Run decay on all entries, archiving those below threshold. */
53
+ runDecay(): Promise<number>;
54
+ /** Reindex the FTS5 full-text search index. */
55
+ reindex(): Promise<void>;
56
+ /** Delete all entries matching a source, cleaning up all stores. */
57
+ deleteBySource(source: string): Promise<number>;
58
+ }
59
+
60
+ interface IngestionResult {
61
+ filename: string;
62
+ chunks: number;
63
+ totalCharacters: number;
64
+ }
65
+
66
+ /** Error thrown by MemoryClient when the server returns a non-success response. */
67
+ declare class MemoryServerError extends Error {
68
+ readonly status: number;
69
+ constructor(message: string, status: number);
70
+ /** True when the server returned HTTP 404 (not found). */
71
+ get isNotFound(): boolean;
72
+ }
73
+ declare class MemoryClient implements ExtendedMemoryInterface {
74
+ protected baseUrl: string;
75
+ constructor(memoryUrl: string);
76
+ /** Encode a path segment to prevent URL injection */
77
+ private encodePathSegment;
78
+ initialize(): Promise<void>;
79
+ store(entry: Omit<MemoryEntry$1, 'id' | 'createdAt'> & {
80
+ id?: string;
81
+ createdAt?: string;
82
+ }): Promise<MemoryEntry$1>;
83
+ search(params: MemorySearchParams$1): Promise<MemorySearchResult$1>;
84
+ get(id: string): Promise<MemoryEntry$1 | null>;
85
+ delete(id: string): Promise<boolean>;
86
+ clearSession(sessionId: string): Promise<number>;
87
+ stats(): Promise<MemoryStats$1>;
88
+ shutdown(): Promise<void>;
89
+ list(params?: MemoryListParams): Promise<MemoryListResult>;
90
+ ingestFile(file: File): Promise<IngestionResult>;
91
+ /** @deprecated Use {@link list} instead. Kept for backwards compatibility. */
92
+ listEntries(params?: {
93
+ page?: number;
94
+ limit?: number;
95
+ }): Promise<MemoryEntry$1[]>;
96
+ graphNodes(): Promise<GraphNode$1[]>;
97
+ graphEdges(): Promise<{
98
+ stats: {
99
+ nodeCount: number;
100
+ edgeCount: number;
101
+ };
102
+ }>;
103
+ graphQuery(query: {
104
+ nodeId: string;
105
+ depth?: number;
106
+ }): Promise<GraphTraversalResult$1>;
107
+ consolidate(): Promise<ConsolidationRunResult>;
108
+ forget(id: string, reason?: string): Promise<boolean>;
109
+ summarizeSession(sessionId: string): Promise<MemoryEntry$1 | null>;
110
+ runDecay(): Promise<number>;
111
+ reindex(): Promise<void>;
112
+ deleteBySource(source: string): Promise<number>;
113
+ protected fetchApi<T>(path: string, options?: RequestInit): Promise<T>;
114
+ }
115
+
116
+ declare const DEFAULTS: {
117
+ readonly DATA_DIR: "./data";
118
+ readonly VECTOR_PROVIDER: "lancedb";
119
+ readonly EMBEDDING_PROVIDER: "stub";
120
+ readonly MEMORY_SERVER_PORT: 7822;
121
+ };
122
+
123
+ interface ApiResponse<T> {
124
+ success: boolean;
125
+ data?: T;
126
+ error?: string;
127
+ }
128
+
129
+ /** ISO 8601 timestamp string */
130
+ type Timestamp = string;
131
+ /** Unique agent identifier */
132
+ type AgentId = string;
133
+
134
+ declare const MemoryType: {
135
+ readonly SHORT_TERM: "short-term";
136
+ readonly LONG_TERM: "long-term";
137
+ readonly WORKING: "working";
138
+ readonly EPISODIC: "episodic";
139
+ readonly SUMMARY: "summary";
140
+ };
141
+ type MemoryType = (typeof MemoryType)[keyof typeof MemoryType];
142
+ declare const RAGStrategy: {
143
+ readonly NAIVE: "naive";
144
+ readonly GRAPH: "graph";
145
+ readonly AGENTIC: "agentic";
146
+ readonly HYBRID: "hybrid";
147
+ };
148
+ type RAGStrategy = (typeof RAGStrategy)[keyof typeof RAGStrategy];
149
+ declare const VectorProvider: {
150
+ readonly LANCEDB: "lancedb";
151
+ readonly QDRANT: "qdrant";
152
+ };
153
+ type VectorProvider = (typeof VectorProvider)[keyof typeof VectorProvider];
154
+ declare const EmbeddingProviderName: {
155
+ readonly STUB: "stub";
156
+ readonly ANTHROPIC: "anthropic";
157
+ readonly OPENAI: "openai";
158
+ readonly LOCAL: "local";
159
+ };
160
+ type EmbeddingProviderName = (typeof EmbeddingProviderName)[keyof typeof EmbeddingProviderName];
161
+ interface MemoryEntry {
162
+ id: string;
163
+ content: string;
164
+ type: MemoryType;
165
+ agentId?: AgentId;
166
+ sessionId?: string;
167
+ metadata: Record<string, unknown>;
168
+ embedding?: number[];
169
+ createdAt: Timestamp;
170
+ /** SHA-256 hash of content for deduplication. */
171
+ contentHash?: string;
172
+ /** Importance score (1-10). */
173
+ importance?: number;
174
+ /** Number of times this entry has been accessed via search. */
175
+ accessCount?: number;
176
+ /** ISO timestamp of last access via search. */
177
+ lastAccessed?: string;
178
+ /** Parent entry ID for hierarchical storage (e.g., doc → section → chunk). */
179
+ parentId?: string;
180
+ /** Source identifier (e.g., filename, URL, session). */
181
+ source?: string;
182
+ /** When the event described by this memory occurred. */
183
+ eventTime?: string;
184
+ /** When this entry was ingested into the system. */
185
+ ingestTime?: string;
186
+ }
187
+ interface SearchFilters {
188
+ /** Filter by source identifier. */
189
+ source?: string;
190
+ /** Minimum importance score. */
191
+ importanceMin?: number;
192
+ /** Event time range [start, end] as ISO timestamps. */
193
+ eventTimeRange?: [string, string];
194
+ /** Filter by parent entry ID. */
195
+ parentId?: string;
196
+ /** Filter by content type in metadata. */
197
+ contentType?: string;
198
+ }
199
+ interface MemorySearchParams {
200
+ query: string;
201
+ type?: MemoryType;
202
+ agentId?: AgentId;
203
+ limit?: number;
204
+ strategy?: RAGStrategy;
205
+ /** Extended filters for Phase 1+ features. */
206
+ filters?: SearchFilters;
207
+ /** Enable Hypothetical Document Embedding for query expansion. */
208
+ enableHyDE?: boolean;
209
+ /** Enable reranking of results. */
210
+ enableRerank?: boolean;
211
+ }
212
+ interface MemorySearchResult {
213
+ entries: MemoryEntry[];
214
+ totalCount: number;
215
+ strategy: RAGStrategy;
216
+ /** Optional scored entries with relevance scores for ranked results. */
217
+ scoredEntries?: Array<{
218
+ entry: MemoryEntry;
219
+ score: number;
220
+ }>;
221
+ }
222
+ interface MemoryIngestRequest {
223
+ content?: string;
224
+ type?: MemoryType;
225
+ fileType?: 'pdf' | 'csv' | 'txt';
226
+ metadata?: Record<string, unknown>;
227
+ }
228
+ interface MemoryStats {
229
+ totalEntries: number;
230
+ storageUsedBytes: number;
231
+ vectorCount: number;
232
+ recentAccessCount: number;
233
+ graphNodeCount?: number;
234
+ graphEdgeCount?: number;
235
+ /** Whether the memory service is connected. False when using DisabledMemory. */
236
+ connected?: boolean;
237
+ }
238
+ interface GraphEdge {
239
+ id: string;
240
+ sourceEntity: string;
241
+ targetEntity: string;
242
+ relation: string;
243
+ weight: number;
244
+ memoryEntryId: string;
245
+ }
246
+ interface GraphNode {
247
+ id: string;
248
+ name: string;
249
+ type: string;
250
+ properties: Record<string, unknown>;
251
+ memoryEntryIds: string[];
252
+ }
253
+ interface GraphRelationship {
254
+ id: string;
255
+ sourceId: string;
256
+ targetId: string;
257
+ type: string;
258
+ properties: Record<string, unknown>;
259
+ memoryEntryId?: string;
260
+ }
261
+ interface GraphTraversalResult {
262
+ nodes: GraphNode[];
263
+ relationships: GraphRelationship[];
264
+ paths: Array<{
265
+ nodeIds: string[];
266
+ relationshipIds: string[];
267
+ }>;
268
+ }
269
+
270
+ export { type AgentId, type ApiResponse, type ConsolidationRunResult, DEFAULTS, EmbeddingProviderName, type ExtendedMemoryInterface, type GraphEdge, type GraphNode, type GraphRelationship, type GraphTraversalResult, type IngestionResult, MemoryClient, type MemoryEntry, type MemoryIngestRequest, type MemoryInterface, type MemoryListParams, type MemoryListResult, type MemorySearchParams, type MemorySearchResult, MemoryServerError, type MemoryStats, MemoryType, RAGStrategy, type SearchFilters, type Timestamp, VectorProvider };
package/dist/index.mjs ADDED
@@ -0,0 +1,46 @@
1
+ import {
2
+ MemoryClient,
3
+ MemoryServerError
4
+ } from "./chunk-Q4QIILKH.mjs";
5
+
6
+ // ../shared/src/constants/defaults.ts
7
+ var DEFAULTS = {
8
+ DATA_DIR: "./data",
9
+ VECTOR_PROVIDER: "lancedb",
10
+ EMBEDDING_PROVIDER: "stub",
11
+ MEMORY_SERVER_PORT: 7822
12
+ };
13
+
14
+ // ../shared/src/types/memory.ts
15
+ var MemoryType = {
16
+ SHORT_TERM: "short-term",
17
+ LONG_TERM: "long-term",
18
+ WORKING: "working",
19
+ EPISODIC: "episodic",
20
+ SUMMARY: "summary"
21
+ };
22
+ var RAGStrategy = {
23
+ NAIVE: "naive",
24
+ GRAPH: "graph",
25
+ AGENTIC: "agentic",
26
+ HYBRID: "hybrid"
27
+ };
28
+ var VectorProvider = {
29
+ LANCEDB: "lancedb",
30
+ QDRANT: "qdrant"
31
+ };
32
+ var EmbeddingProviderName = {
33
+ STUB: "stub",
34
+ ANTHROPIC: "anthropic",
35
+ OPENAI: "openai",
36
+ LOCAL: "local"
37
+ };
38
+ export {
39
+ DEFAULTS,
40
+ EmbeddingProviderName,
41
+ MemoryClient,
42
+ MemoryServerError,
43
+ MemoryType,
44
+ RAGStrategy,
45
+ VectorProvider
46
+ };
@@ -0,0 +1,28 @@
1
+ import { HookResult, ConsolidationAnalytics, TransformOptions, GraphVizData, EntryFilters, PaginatedEntries, HealthData, TypeDistribution } from './dashboard.js';
2
+ export { ConsolidationLogEntry, D3ForceData, D3ForceLink, D3ForceNode, DashboardClient, GraphVizEdge, GraphVizNode, GraphologyData, GraphologyEdge, GraphologyNode, MemoryMetrics, Poller, PollerOptions, PollerState, RawHealthResponse, analyzeConsolidationLog, computeMetrics, computeTypeDistribution, enrichHealth, formatBytes, formatUptime, toD3ForceFormat, toGraphologyFormat, transformGraphData, unreachableHealth } from './dashboard.js';
3
+ import { MemoryStats } from '@pyx-memory/shared';
4
+ import '@pyx-memory/client';
5
+
6
+ declare function useConsolidationLog(serverUrl: string, limit?: number, intervalMs?: number): HookResult<ConsolidationAnalytics>;
7
+
8
+ interface UseKnowledgeGraphOptions extends TransformOptions {
9
+ intervalMs?: number;
10
+ limit?: number;
11
+ }
12
+ declare function useKnowledgeGraph(serverUrl: string, opts?: UseKnowledgeGraphOptions): HookResult<GraphVizData>;
13
+
14
+ declare function useMemoryEntries(serverUrl: string, filters?: EntryFilters, intervalMs?: number): HookResult<PaginatedEntries>;
15
+
16
+ declare function useMemoryHealth(serverUrl: string, intervalMs?: number): HookResult<HealthData>;
17
+
18
+ declare function useMemoryStats(serverUrl: string, intervalMs?: number): HookResult<MemoryStats>;
19
+
20
+ interface UsePollingOptions {
21
+ intervalMs: number;
22
+ enabled?: boolean;
23
+ }
24
+ declare function usePolling<T>(fetcher: () => Promise<T>, options: UsePollingOptions): HookResult<T>;
25
+
26
+ declare function useTypeDistribution(serverUrl: string, intervalMs?: number): HookResult<TypeDistribution>;
27
+
28
+ export { ConsolidationAnalytics, EntryFilters, GraphVizData, HealthData, HookResult, PaginatedEntries, TransformOptions, TypeDistribution, type UseKnowledgeGraphOptions, type UsePollingOptions, useConsolidationLog, useKnowledgeGraph, useMemoryEntries, useMemoryHealth, useMemoryStats, usePolling, useTypeDistribution };