@ruvector/ruvllm 4.0.1 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/README.md +447 -160
  2. package/bin/cli.js +1066 -0
  3. package/bin/gpu-delegate.js +67 -0
  4. package/bin/ruvllm-adapters.js +5 -0
  5. package/bin/ruvllm-gpu-loop.js +5 -0
  6. package/bin/serve.js +265 -0
  7. package/dist/cjs/benchmarks/embedding-benchmark.d.ts +102 -0
  8. package/dist/cjs/benchmarks/embedding-benchmark.d.ts.map +1 -0
  9. package/dist/cjs/benchmarks/embedding-benchmark.js +436 -0
  10. package/dist/cjs/benchmarks/index.d.ts +34 -0
  11. package/dist/cjs/benchmarks/index.d.ts.map +1 -0
  12. package/dist/cjs/benchmarks/index.js +132 -0
  13. package/dist/cjs/benchmarks/model-comparison.d.ts +71 -0
  14. package/dist/cjs/benchmarks/model-comparison.d.ts.map +1 -0
  15. package/dist/cjs/benchmarks/model-comparison.js +476 -0
  16. package/dist/cjs/benchmarks/routing-benchmark.d.ts +70 -0
  17. package/dist/cjs/benchmarks/routing-benchmark.d.ts.map +1 -0
  18. package/dist/cjs/benchmarks/routing-benchmark.js +289 -0
  19. package/dist/cjs/contrastive.d.ts +229 -0
  20. package/dist/cjs/contrastive.d.ts.map +1 -0
  21. package/dist/cjs/contrastive.js +589 -0
  22. package/dist/cjs/engine.d.ts +160 -0
  23. package/dist/cjs/engine.d.ts.map +1 -0
  24. package/dist/cjs/engine.js +552 -0
  25. package/dist/cjs/export.d.ts +182 -0
  26. package/dist/cjs/export.d.ts.map +1 -0
  27. package/dist/cjs/export.js +422 -0
  28. package/dist/cjs/federated.d.ts +233 -0
  29. package/dist/cjs/federated.d.ts.map +1 -0
  30. package/dist/cjs/federated.js +525 -0
  31. package/dist/cjs/index.d.ts +68 -0
  32. package/dist/cjs/index.d.ts.map +1 -0
  33. package/dist/cjs/index.js +104 -0
  34. package/dist/cjs/intelligence.d.ts +136 -0
  35. package/dist/cjs/intelligence.d.ts.map +1 -0
  36. package/dist/cjs/intelligence.js +226 -0
  37. package/dist/cjs/lora.d.ts +251 -0
  38. package/dist/cjs/lora.d.ts.map +1 -0
  39. package/dist/cjs/lora.js +509 -0
  40. package/dist/cjs/models.d.ts +129 -0
  41. package/dist/cjs/models.d.ts.map +1 -0
  42. package/dist/cjs/models.js +323 -0
  43. package/dist/cjs/native.d.ts +140 -0
  44. package/dist/cjs/native.d.ts.map +1 -0
  45. package/dist/cjs/native.js +98 -0
  46. package/dist/cjs/session.d.ts +80 -0
  47. package/dist/cjs/session.d.ts.map +1 -0
  48. package/dist/cjs/session.js +203 -0
  49. package/dist/cjs/simd.d.ts +90 -0
  50. package/dist/cjs/simd.d.ts.map +1 -0
  51. package/dist/cjs/simd.js +209 -0
  52. package/dist/cjs/sona.d.ts +223 -0
  53. package/dist/cjs/sona.d.ts.map +1 -0
  54. package/dist/cjs/sona.js +562 -0
  55. package/dist/cjs/streaming.d.ts +55 -0
  56. package/dist/cjs/streaming.d.ts.map +1 -0
  57. package/dist/cjs/streaming.js +131 -0
  58. package/dist/cjs/training.d.ts +312 -0
  59. package/dist/cjs/training.d.ts.map +1 -0
  60. package/dist/cjs/training.js +610 -0
  61. package/dist/cjs/types.d.ts +696 -0
  62. package/dist/cjs/types.d.ts.map +1 -0
  63. package/dist/cjs/types.js +6 -0
  64. package/dist/esm/benchmarks/embedding-benchmark.d.ts +102 -0
  65. package/dist/esm/benchmarks/embedding-benchmark.d.ts.map +1 -0
  66. package/dist/esm/benchmarks/embedding-benchmark.js +427 -0
  67. package/dist/esm/benchmarks/index.d.ts +34 -0
  68. package/dist/esm/benchmarks/index.d.ts.map +1 -0
  69. package/dist/esm/benchmarks/index.js +110 -0
  70. package/dist/esm/benchmarks/model-comparison.d.ts +71 -0
  71. package/dist/esm/benchmarks/model-comparison.d.ts.map +1 -0
  72. package/dist/esm/benchmarks/model-comparison.js +434 -0
  73. package/dist/esm/benchmarks/routing-benchmark.d.ts +70 -0
  74. package/dist/esm/benchmarks/routing-benchmark.d.ts.map +1 -0
  75. package/dist/esm/benchmarks/routing-benchmark.js +283 -0
  76. package/dist/esm/contrastive.d.ts +229 -0
  77. package/dist/esm/contrastive.d.ts.map +1 -0
  78. package/dist/esm/contrastive.js +578 -0
  79. package/dist/esm/engine.d.ts +160 -0
  80. package/dist/esm/engine.d.ts.map +1 -0
  81. package/dist/esm/engine.js +548 -0
  82. package/dist/esm/export.d.ts +182 -0
  83. package/dist/esm/export.d.ts.map +1 -0
  84. package/dist/esm/export.js +414 -0
  85. package/dist/esm/federated.d.ts +233 -0
  86. package/dist/esm/federated.d.ts.map +1 -0
  87. package/dist/esm/federated.js +520 -0
  88. package/dist/esm/index.d.ts +68 -0
  89. package/dist/esm/index.d.ts.map +1 -0
  90. package/dist/esm/index.js +84 -0
  91. package/dist/esm/intelligence.d.ts +136 -0
  92. package/dist/esm/intelligence.d.ts.map +1 -0
  93. package/dist/esm/intelligence.js +188 -0
  94. package/dist/esm/lora.d.ts +251 -0
  95. package/dist/esm/lora.d.ts.map +1 -0
  96. package/dist/esm/lora.js +504 -0
  97. package/dist/esm/models.d.ts +129 -0
  98. package/dist/esm/models.d.ts.map +1 -0
  99. package/dist/esm/models.js +282 -0
  100. package/dist/esm/native.d.ts +140 -0
  101. package/dist/esm/native.d.ts.map +1 -0
  102. package/dist/esm/native.js +100 -0
  103. package/dist/esm/session.d.ts +80 -0
  104. package/dist/esm/session.d.ts.map +1 -0
  105. package/dist/esm/session.js +199 -0
  106. package/dist/esm/simd.d.ts +90 -0
  107. package/dist/esm/simd.d.ts.map +1 -0
  108. package/dist/esm/simd.js +205 -0
  109. package/dist/esm/sona.d.ts +223 -0
  110. package/dist/esm/sona.d.ts.map +1 -0
  111. package/dist/esm/sona.js +556 -0
  112. package/dist/esm/streaming.d.ts +55 -0
  113. package/dist/esm/streaming.d.ts.map +1 -0
  114. package/dist/esm/streaming.js +126 -0
  115. package/dist/esm/training.d.ts +312 -0
  116. package/dist/esm/training.d.ts.map +1 -0
  117. package/dist/esm/training.js +603 -0
  118. package/dist/esm/types.d.ts +696 -0
  119. package/dist/esm/types.d.ts.map +1 -0
  120. package/dist/esm/types.js +5 -0
  121. package/gpu/_load.cjs +38 -0
  122. package/gpu/_load.mjs +33 -0
  123. package/gpu/adapters.cjs +3 -0
  124. package/gpu/adapters.mjs +5 -0
  125. package/gpu/engine.cjs +3 -0
  126. package/gpu/engine.mjs +5 -0
  127. package/gpu/fixture.cjs +3 -0
  128. package/gpu/fixture.mjs +5 -0
  129. package/gpu/gpu-host.cjs +3 -0
  130. package/gpu/gpu-host.mjs +5 -0
  131. package/gpu/gpu-loop.cjs +3 -0
  132. package/gpu/gpu-loop.mjs +5 -0
  133. package/gpu/gpu-spool-adapter.cjs +3 -0
  134. package/gpu/gpu-spool-adapter.mjs +5 -0
  135. package/gpu/vast-host-adapter.cjs +3 -0
  136. package/gpu/vast-host-adapter.mjs +5 -0
  137. package/package.json +159 -49
  138. package/scripts/ensemble-model-compare.js +287 -0
  139. package/scripts/fix-esm-extensions.mjs +220 -0
  140. package/scripts/huggingface/README.md +537 -0
  141. package/scripts/huggingface/publish.sh +112 -0
  142. package/scripts/hybrid-model-compare.js +373 -0
  143. package/scripts/improved-model-compare.js +288 -0
  144. package/scripts/optimized-model-compare.js +364 -0
  145. package/scripts/real-model-compare.js +280 -0
  146. package/scripts/smoke-esm.mjs +82 -0
  147. package/scripts/training/agentic-flow-capabilities.json +329 -0
  148. package/scripts/training/claude-code-synth.js +505 -0
  149. package/scripts/training/claude-flow-capabilities.json +1322 -0
  150. package/scripts/training/claude-hard-negatives.js +222 -0
  151. package/scripts/training/contrastive-finetune.js +517 -0
  152. package/scripts/training/ecosystem-triplets.jsonl +1467 -0
  153. package/scripts/training/generate-ecosystem-triplets.js +1324 -0
  154. package/scripts/training/routing-dataset.js +634 -0
  155. package/scripts/training/ruvector-capabilities.json +798 -0
  156. package/scripts/training/validate-ecosystem.js +381 -0
  157. package/scripts/training/validation-results.json +23 -0
  158. package/GPU-LOOP.md +0 -229
  159. package/LICENSE +0 -201
  160. package/NOTICE +0 -9
  161. package/examples/gpu-loop.example.json +0 -26
  162. package/src/adapters-cli.mjs +0 -23
  163. package/src/adapters.mjs +0 -91
  164. package/src/cli.mjs +0 -30
  165. package/src/engine.mjs +0 -238
  166. package/src/fixture.mjs +0 -38
  167. package/src/gpu-host.mjs +0 -47
  168. package/src/gpu-loop-cli.mjs +0 -67
  169. package/src/gpu-loop.mjs +0 -184
  170. package/src/gpu-spool-adapter.mjs +0 -80
  171. package/src/vast-host-adapter.mjs +0 -274
@@ -0,0 +1,696 @@
1
+ /**
2
+ * RuvLLM Type Definitions
3
+ */
4
+ /**
5
+ * Configuration for RuvLLM engine
6
+ */
7
+ export interface RuvLLMConfig {
8
+ /** Embedding dimension (default: 768) */
9
+ embeddingDim?: number;
10
+ /** Router hidden dimension (default: 128) */
11
+ routerHiddenDim?: number;
12
+ /** HNSW M parameter (default: 16) */
13
+ hnswM?: number;
14
+ /** HNSW ef_construction (default: 100) */
15
+ hnswEfConstruction?: number;
16
+ /** HNSW ef_search (default: 64) */
17
+ hnswEfSearch?: number;
18
+ /** Enable learning (default: true) */
19
+ learningEnabled?: boolean;
20
+ /** Quality threshold for learning (default: 0.7) */
21
+ qualityThreshold?: number;
22
+ /** EWC lambda (default: 2000) */
23
+ ewcLambda?: number;
24
+ /**
25
+ * GGUF file (or a directory holding one) to load in the constructor, the
26
+ * same as calling `loadModel(modelPath)`. The constructor throws if the
27
+ * model cannot be loaded. Requires a native binary that supports model
28
+ * loading (see `RuvLLM.loadModel`).
29
+ */
30
+ modelPath?: string;
31
+ /** Options for loading `modelPath` */
32
+ modelOptions?: LoadModelOptions;
33
+ /**
34
+ * Return a clearly labelled placeholder string from `generate()`/`query()`
35
+ * when no model is loaded, instead of throwing `RUVLLM_NO_LANGUAGE_MODEL`.
36
+ * The placeholder is never model output. For demos and tests only; also
37
+ * enabled by the environment variable `RUVLLM_ALLOW_MOCK=1`. Default false.
38
+ */
39
+ allowPlaceholder?: boolean;
40
+ /**
41
+ * Throw instead of warning for unsupported options (`backend`). Generation
42
+ * without a loaded model always throws unless `allowPlaceholder` is set.
43
+ */
44
+ strict?: boolean;
45
+ }
46
+ /**
47
+ * Generation configuration
48
+ */
49
+ export interface GenerationConfig {
50
+ /** Maximum tokens to generate (default: 256) */
51
+ maxTokens?: number;
52
+ /** Temperature for sampling; 0 = greedy (default: 0.7) */
53
+ temperature?: number;
54
+ /** Top-p nucleus sampling, in (0, 1] (default: 0.9) */
55
+ topP?: number;
56
+ /** Top-k sampling; 0 disables it (default: 50) */
57
+ topK?: number;
58
+ /** Repetition penalty (default: 1.1) */
59
+ repetitionPenalty?: number;
60
+ /** Stop when any of these strings is generated; it is not included in the text */
61
+ stopSequences?: string[];
62
+ /** Sampling seed for reproducible output at temperature > 0 */
63
+ seed?: number;
64
+ }
65
+ /**
66
+ * Options for `RuvLLM.loadModel`
67
+ */
68
+ export interface LoadModelOptions {
69
+ /** Maximum context in tokens, prompt plus completion (default: 4096) */
70
+ maxContext?: number;
71
+ }
72
+ /**
73
+ * The language model loaded with `RuvLLM.loadModel`
74
+ */
75
+ export interface LoadedModelInfo {
76
+ /** Model name (file stem) */
77
+ name: string;
78
+ /** Architecture family, e.g. "Llama" or "Qwen" */
79
+ architecture: string;
80
+ /** Approximate parameter count */
81
+ numParameters: number;
82
+ /** Vocabulary size */
83
+ vocabSize: number;
84
+ /** Hidden dimension */
85
+ hiddenSize: number;
86
+ /** Number of layers */
87
+ numLayers: number;
88
+ /** Maximum context length in tokens */
89
+ maxContextLength: number;
90
+ /** Weight quantization, e.g. "Q4K", when known */
91
+ quantization?: string | null;
92
+ /** Approximate memory used by the weights, in bytes */
93
+ memoryUsageBytes: number;
94
+ /** Chat template used by `chat()` and `query()`, e.g. "Qwen" or "Llama3" */
95
+ chatTemplate?: string | null;
96
+ }
97
+ /**
98
+ * One message of a chat conversation
99
+ */
100
+ export interface ChatMessage {
101
+ role: 'system' | 'user' | 'assistant';
102
+ content: string;
103
+ }
104
+ /**
105
+ * Why generation ended: `stop` (end-of-sequence token or a stop sequence),
106
+ * `length` (`maxTokens` reached or the context is full) or `cancelled`.
107
+ */
108
+ export type FinishReason = 'stop' | 'length' | 'cancelled';
109
+ /**
110
+ * Text generated by the loaded model, with token accounting
111
+ */
112
+ export interface GenerationResult {
113
+ /** Generated text, excluding the prompt and any stop sequence */
114
+ text: string;
115
+ /** Prompt tokens, counted with the model's tokenizer (after the chat template for `chat()`) */
116
+ promptTokens: number;
117
+ /** Tokens generated, including an end-of-sequence token that ended generation */
118
+ completionTokens: number;
119
+ /** Why generation ended */
120
+ finishReason: FinishReason;
121
+ }
122
+ /**
123
+ * Query response from the LLM
124
+ */
125
+ export interface QueryResponse {
126
+ /** Text generated by the loaded model (or a labelled placeholder with `allowPlaceholder`) */
127
+ text: string;
128
+ /** Confidence score (0.0 - 1.0) */
129
+ confidence: number;
130
+ /** Model size recommended by the router (not the loaded model) */
131
+ model: string;
132
+ /** Context size used */
133
+ contextSize: number;
134
+ /** Latency in milliseconds */
135
+ latencyMs: number;
136
+ /** Request ID for feedback */
137
+ requestId: string;
138
+ /** Prompt tokens after the chat template (absent for placeholder responses) */
139
+ promptTokens?: number;
140
+ /** Tokens generated (absent for placeholder responses) */
141
+ completionTokens?: number;
142
+ /** Why generation ended (absent for placeholder responses) */
143
+ finishReason?: FinishReason;
144
+ }
145
+ /**
146
+ * Routing decision
147
+ */
148
+ export interface RoutingDecision {
149
+ /** Selected model size */
150
+ model: ModelSize;
151
+ /** Recommended context size */
152
+ contextSize: number;
153
+ /** Temperature */
154
+ temperature: number;
155
+ /** Top-p */
156
+ topP: number;
157
+ /** Confidence */
158
+ confidence: number;
159
+ }
160
+ /**
161
+ * Memory search result
162
+ */
163
+ /** Identifier for a stored memory node. */
164
+ export type MemoryId = string | number;
165
+ export interface MemoryResult {
166
+ /** Node ID — a UUID string on current native builds, a number on older ones. */
167
+ id: MemoryId;
168
+ /** Similarity score */
169
+ score: number;
170
+ /** Content text */
171
+ content: string;
172
+ /** Metadata */
173
+ metadata: Record<string, unknown>;
174
+ }
175
+ /**
176
+ * Engine statistics
177
+ */
178
+ export interface RuvLLMStats {
179
+ /** Total queries processed */
180
+ totalQueries: number;
181
+ /** Memory nodes stored */
182
+ memoryNodes: number;
183
+ /** Patterns learned */
184
+ patternsLearned: number;
185
+ /** Average latency in ms */
186
+ avgLatencyMs: number;
187
+ /** Cache hit rate (0.0 - 1.0) */
188
+ cacheHitRate: number;
189
+ /** Router accuracy (0.0 - 1.0) */
190
+ routerAccuracy: number;
191
+ }
192
+ /**
193
+ * Model size options
194
+ */
195
+ export type ModelSize = 'M350' | 'M700' | 'B1_2' | 'B2_6';
196
+ /**
197
+ * Feedback for learning
198
+ */
199
+ export interface Feedback {
200
+ /** Request ID from query response */
201
+ requestId: string;
202
+ /** Rating 1-5 */
203
+ rating: number;
204
+ /** Optional correction text */
205
+ correction?: string;
206
+ }
207
+ /**
208
+ * Session for multi-turn conversations
209
+ */
210
+ export interface Session {
211
+ /** Session ID */
212
+ id: string;
213
+ /** Created timestamp */
214
+ createdAt: Date;
215
+ /** Messages in session */
216
+ messageCount: number;
217
+ }
218
+ /**
219
+ * SIMD capabilities
220
+ */
221
+ export interface SimdCapabilities {
222
+ /** Has any SIMD support */
223
+ hasSimd: boolean;
224
+ /** Available SIMD instructions */
225
+ capabilities: string[];
226
+ }
227
+ /**
228
+ * Embedding result
229
+ */
230
+ export type Embedding = number[];
231
+ /**
232
+ * Batch query request
233
+ */
234
+ export interface BatchQueryRequest {
235
+ /** Queries to process */
236
+ queries: string[];
237
+ /** Optional generation config */
238
+ config?: GenerationConfig;
239
+ }
240
+ /**
241
+ * Batch query response
242
+ */
243
+ export interface BatchQueryResponse {
244
+ /** Responses for each query */
245
+ responses: QueryResponse[];
246
+ /** Total processing time in ms */
247
+ totalLatencyMs: number;
248
+ }
249
+ /**
250
+ * SONA Configuration for adaptive learning
251
+ */
252
+ export interface SonaConfig {
253
+ /** Enable instant loop (real-time learning) */
254
+ instantLoopEnabled?: boolean;
255
+ /** Enable background loop (batch learning) */
256
+ backgroundLoopEnabled?: boolean;
257
+ /** Learning rate for LoRA adapters */
258
+ loraLearningRate?: number;
259
+ /** LoRA rank (lower = faster, higher = more capacity) */
260
+ loraRank?: number;
261
+ /** EWC lambda for memory protection */
262
+ ewcLambda?: number;
263
+ /** Max trajectory buffer size */
264
+ maxTrajectorySize?: number;
265
+ /** Pattern similarity threshold */
266
+ patternThreshold?: number;
267
+ }
268
+ /**
269
+ * Learning signal from user feedback
270
+ */
271
+ export interface LearningSignal {
272
+ /** Request ID */
273
+ requestId: string;
274
+ /** Quality score (0-1) */
275
+ quality: number;
276
+ /** Signal type */
277
+ type: SignalType;
278
+ /** Optional correction */
279
+ correction?: string;
280
+ /** Timestamp */
281
+ timestamp: Date;
282
+ }
283
+ /**
284
+ * Signal types for learning
285
+ */
286
+ export type SignalType = 'positive' | 'negative' | 'correction' | 'implicit';
287
+ /**
288
+ * Query trajectory for learning
289
+ */
290
+ export interface QueryTrajectory {
291
+ /** Trajectory ID */
292
+ id: string;
293
+ /** Steps in the trajectory */
294
+ steps: TrajectoryStep[];
295
+ /** Final outcome */
296
+ outcome: TrajectoryOutcome;
297
+ /** Total duration */
298
+ durationMs: number;
299
+ }
300
+ /**
301
+ * Single step in a trajectory
302
+ */
303
+ export interface TrajectoryStep {
304
+ /** Step type */
305
+ type: 'query' | 'route' | 'generate' | 'memory' | 'feedback';
306
+ /** Input data */
307
+ input: string;
308
+ /** Output data */
309
+ output: string;
310
+ /** Duration of this step */
311
+ durationMs: number;
312
+ /** Confidence at this step */
313
+ confidence: number;
314
+ }
315
+ /**
316
+ * Trajectory outcome
317
+ */
318
+ export type TrajectoryOutcome = 'success' | 'partial' | 'failure' | 'unknown';
319
+ /**
320
+ * Learned pattern from ReasoningBank
321
+ */
322
+ export interface LearnedPattern {
323
+ /** Pattern ID */
324
+ id: string;
325
+ /** Pattern type */
326
+ type: PatternType;
327
+ /** Pattern embedding */
328
+ embedding: Embedding;
329
+ /** Success rate (0-1) */
330
+ successRate: number;
331
+ /** Times used */
332
+ useCount: number;
333
+ /** Last used timestamp */
334
+ lastUsed: Date;
335
+ }
336
+ /**
337
+ * Types of learned patterns
338
+ */
339
+ export type PatternType = 'query_response' | 'routing' | 'context_retrieval' | 'correction' | 'abstraction';
340
+ /**
341
+ * LoRA adapter configuration
342
+ */
343
+ export interface LoRAConfig {
344
+ /** Adapter rank (4, 8, 16, 32) */
345
+ rank: number;
346
+ /** Alpha scaling factor */
347
+ alpha: number;
348
+ /** Dropout rate */
349
+ dropout: number;
350
+ /** Target modules to adapt */
351
+ targetModules: string[];
352
+ }
353
+ /**
354
+ * EWC (Elastic Weight Consolidation) stats
355
+ */
356
+ export interface EwcStats {
357
+ /** Number of tasks learned */
358
+ tasksLearned: number;
359
+ /** Fisher information computed */
360
+ fisherComputed: boolean;
361
+ /** Memory protection strength */
362
+ protectionStrength: number;
363
+ /** Estimated forgetting rate */
364
+ forgettingRate: number;
365
+ }
366
+ /**
367
+ * Extended session with conversation history
368
+ */
369
+ export interface ConversationSession extends Session {
370
+ /** Conversation messages */
371
+ messages: ConversationMessage[];
372
+ /** Session context (accumulated) */
373
+ context: string[];
374
+ /** Active memory IDs */
375
+ activeMemoryIds: number[];
376
+ /** Session metadata */
377
+ metadata: Record<string, unknown>;
378
+ }
379
+ /**
380
+ * Single message in conversation
381
+ */
382
+ export interface ConversationMessage {
383
+ /** Message role */
384
+ role: 'user' | 'assistant' | 'system';
385
+ /** Message content */
386
+ content: string;
387
+ /** Timestamp */
388
+ timestamp: Date;
389
+ /** Associated request ID (if assistant) */
390
+ requestId?: string;
391
+ }
392
+ /**
393
+ * Streaming response chunk
394
+ */
395
+ export interface StreamChunk {
396
+ /** Chunk text */
397
+ text: string;
398
+ /** Is final chunk */
399
+ done: boolean;
400
+ /** Token count so far */
401
+ tokenCount: number;
402
+ /** Cumulative latency */
403
+ latencyMs: number;
404
+ }
405
+ /**
406
+ * Stream options
407
+ */
408
+ export interface StreamOptions extends GenerationConfig {
409
+ /** Callback for each chunk */
410
+ onChunk?: (chunk: StreamChunk) => void;
411
+ /** Callback on completion */
412
+ onComplete?: (response: QueryResponse) => void;
413
+ /** Callback on error */
414
+ onError?: (error: Error) => void;
415
+ }
416
+ /**
417
+ * Memory compression result
418
+ */
419
+ export interface CompressionResult {
420
+ /** Nodes compressed */
421
+ nodesCompressed: number;
422
+ /** Nodes archived */
423
+ nodesArchived: number;
424
+ /** Concepts created */
425
+ conceptsCreated: number;
426
+ /** Memory saved (bytes) */
427
+ memorySaved: number;
428
+ /** Duration */
429
+ durationMs: number;
430
+ }
431
+ /**
432
+ * Archive query result
433
+ */
434
+ export interface ArchiveResult {
435
+ /** Archived node ID */
436
+ id: number;
437
+ /** Original content (if available) */
438
+ content?: string;
439
+ /** Concept it belongs to */
440
+ conceptId?: string;
441
+ /** Archive timestamp */
442
+ archivedAt: Date;
443
+ }
444
+ /**
445
+ * Attention weights for interpretability
446
+ */
447
+ export interface AttentionWeights {
448
+ /** Query-key attention scores */
449
+ scores: number[][];
450
+ /** Head index */
451
+ headIndex: number;
452
+ /** Layer index */
453
+ layerIndex: number;
454
+ }
455
+ /**
456
+ * Attention analysis result
457
+ */
458
+ export interface AttentionAnalysis {
459
+ /** Most attended tokens */
460
+ topAttended: Array<{
461
+ token: string;
462
+ weight: number;
463
+ }>;
464
+ /** Attention entropy (uncertainty) */
465
+ entropy: number;
466
+ /** Focus score (0-1, higher = more focused) */
467
+ focusScore: number;
468
+ }
469
+ /**
470
+ * Federated learning configuration
471
+ */
472
+ export interface FederatedConfig {
473
+ /** Hidden dimension for embeddings */
474
+ hiddenDim?: number;
475
+ /** Embedding dimension */
476
+ embeddingDim?: number;
477
+ /** Micro-LoRA rank */
478
+ microLoraRank?: number;
479
+ /** Base LoRA rank */
480
+ baseLoraRank?: number;
481
+ /** Trajectory buffer capacity */
482
+ trajectoryCapacity?: number;
483
+ /** Pattern cluster count */
484
+ patternClusters?: number;
485
+ /** EWC lambda for regularization */
486
+ ewcLambda?: number;
487
+ /** Quality threshold for accepting trajectories */
488
+ qualityThreshold?: number;
489
+ }
490
+ /**
491
+ * Trajectory export for federation
492
+ */
493
+ export interface TrajectoryExport {
494
+ /** Query embedding */
495
+ embedding: Embedding;
496
+ /** Quality score */
497
+ quality: number;
498
+ /** Model route (if any) */
499
+ route?: string;
500
+ /** Context identifiers */
501
+ context: string[];
502
+ /** Timestamp */
503
+ timestamp: number;
504
+ }
505
+ /**
506
+ * Agent export statistics
507
+ */
508
+ export interface AgentExportStats {
509
+ /** Total trajectories processed */
510
+ totalTrajectories: number;
511
+ /** Average quality */
512
+ avgQuality: number;
513
+ /** Patterns learned locally */
514
+ patternsLearned: number;
515
+ }
516
+ /**
517
+ * Exported state from an ephemeral agent
518
+ */
519
+ export interface AgentExport {
520
+ /** Agent identifier */
521
+ agentId: string;
522
+ /** Exported trajectories */
523
+ trajectories: TrajectoryExport[];
524
+ /** Agent statistics */
525
+ stats: AgentExportStats;
526
+ /** Session duration in milliseconds */
527
+ sessionDurationMs: number;
528
+ /** Export timestamp */
529
+ timestamp: number;
530
+ }
531
+ /**
532
+ * Agent contribution record
533
+ */
534
+ export interface AgentContribution {
535
+ /** Number of trajectories contributed */
536
+ trajectoryCount: number;
537
+ /** Average quality of contributions */
538
+ avgQuality: number;
539
+ /** Contribution timestamp */
540
+ timestamp: number;
541
+ /** Session duration */
542
+ sessionDurationMs: number;
543
+ }
544
+ /**
545
+ * Result of aggregating an agent export
546
+ */
547
+ export interface AggregationResult {
548
+ /** Agent ID that was aggregated */
549
+ agentId: string;
550
+ /** Number of trajectories accepted */
551
+ trajectoriesAccepted: number;
552
+ /** Number of trajectories rejected (below quality threshold) */
553
+ trajectoriesRejected: number;
554
+ /** Whether consolidation was triggered */
555
+ consolidated: boolean;
556
+ /** Total number of contributing agents */
557
+ totalAgents: number;
558
+ /** Total trajectories in coordinator */
559
+ totalTrajectories: number;
560
+ }
561
+ /**
562
+ * Coordinator statistics
563
+ */
564
+ export interface CoordinatorStats {
565
+ /** Coordinator identifier */
566
+ coordinatorId: string;
567
+ /** Number of contributing agents */
568
+ totalAgents: number;
569
+ /** Total trajectories aggregated */
570
+ totalTrajectories: number;
571
+ /** Patterns learned */
572
+ patternsLearned: number;
573
+ /** Average quality across all contributions */
574
+ avgQuality: number;
575
+ /** Quality threshold */
576
+ qualityThreshold: number;
577
+ }
578
+ /**
579
+ * Federated learning topology
580
+ */
581
+ export type FederatedTopology = 'star' | 'hierarchical' | 'peer-to-peer';
582
+ /**
583
+ * Training configuration
584
+ */
585
+ export interface TrainingConfig {
586
+ /** Initial learning rate */
587
+ learningRate?: number;
588
+ /** Batch size */
589
+ batchSize?: number;
590
+ /** Number of epochs */
591
+ epochs?: number;
592
+ /** Learning rate scheduler */
593
+ scheduler?: 'constant' | 'linear' | 'cosine' | 'warmup';
594
+ /** Warmup steps (for warmup scheduler) */
595
+ warmupSteps?: number;
596
+ /** Weight decay */
597
+ weightDecay?: number;
598
+ /** Gradient clipping threshold */
599
+ gradientClip?: number;
600
+ /** Early stopping patience */
601
+ earlyStoppingPatience?: number;
602
+ /** Checkpoint interval (epochs) */
603
+ checkpointInterval?: number;
604
+ /** EWC lambda for continual learning */
605
+ ewcLambda?: number;
606
+ /** Validation split ratio */
607
+ validationSplit?: number;
608
+ /**
609
+ * File path for best-checkpoint retention. When set, the pipeline writes
610
+ * the current state to this path each time validation loss improves, so the
611
+ * best-validation model survives even if later epochs degrade. Empty string
612
+ * (the default) disables it; a no-op when validation never runs.
613
+ */
614
+ keepBestCheckpoint?: string;
615
+ }
616
+ /**
617
+ * Training metrics snapshot
618
+ */
619
+ export interface TrainingMetricsSnapshot {
620
+ /** Current epoch */
621
+ epoch: number;
622
+ /** Current step */
623
+ step: number;
624
+ /** Training loss */
625
+ trainLoss: number;
626
+ /** Validation loss */
627
+ valLoss: number;
628
+ /** Learning rate */
629
+ learningRate: number;
630
+ /** Gradient norm */
631
+ gradNorm: number;
632
+ /** Steps per second */
633
+ stepsPerSecond: number;
634
+ /** ETA in seconds */
635
+ etaSeconds: number;
636
+ }
637
+ /**
638
+ * Training result
639
+ */
640
+ export interface TrainingResult {
641
+ /** Total epochs completed */
642
+ epochs: number;
643
+ /** Total steps completed */
644
+ steps: number;
645
+ /** Final training loss */
646
+ finalLoss: number;
647
+ /** Best validation loss */
648
+ bestValLoss: number;
649
+ /** Training duration in ms */
650
+ durationMs: number;
651
+ /** Loss history */
652
+ lossHistory: number[];
653
+ /** Validation loss history */
654
+ valLossHistory: number[];
655
+ /** Early stopped */
656
+ earlyStopped: boolean;
657
+ }
658
+ /**
659
+ * Training checkpoint
660
+ */
661
+ export interface TrainingCheckpoint {
662
+ /** Epoch number */
663
+ epoch: number;
664
+ /** Step number */
665
+ step: number;
666
+ /** Training loss at checkpoint */
667
+ loss: number;
668
+ /** Model weights (serialized) */
669
+ weights: string;
670
+ /** Timestamp */
671
+ timestamp: number;
672
+ }
673
+ /**
674
+ * Export format options
675
+ */
676
+ export type ExportFormat = 'safetensors' | 'json' | 'binary' | 'onnx';
677
+ /**
678
+ * Model metadata for export
679
+ */
680
+ export interface ModelMetadata {
681
+ /** Model name */
682
+ name: string;
683
+ /** Model version */
684
+ version: string;
685
+ /** Architecture type */
686
+ architecture: string;
687
+ /** Training info */
688
+ training?: {
689
+ steps: number;
690
+ loss: number;
691
+ learningRate: number;
692
+ };
693
+ /** Custom metadata */
694
+ custom?: Record<string, unknown>;
695
+ }
696
+ //# sourceMappingURL=types.d.ts.map