@ruvector/ruvllm 0.2.3 → 2.4.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 (94) hide show
  1. package/README.md +379 -739
  2. package/bin/cli.js +619 -2
  3. package/dist/cjs/benchmarks/embedding-benchmark.d.ts +102 -0
  4. package/dist/cjs/benchmarks/embedding-benchmark.d.ts.map +1 -0
  5. package/dist/cjs/benchmarks/embedding-benchmark.js +436 -0
  6. package/dist/cjs/benchmarks/index.d.ts +34 -0
  7. package/dist/cjs/benchmarks/index.d.ts.map +1 -0
  8. package/dist/cjs/benchmarks/index.js +132 -0
  9. package/dist/cjs/benchmarks/model-comparison.d.ts +71 -0
  10. package/dist/cjs/benchmarks/model-comparison.d.ts.map +1 -0
  11. package/dist/cjs/benchmarks/model-comparison.js +476 -0
  12. package/dist/cjs/benchmarks/routing-benchmark.d.ts +70 -0
  13. package/dist/cjs/benchmarks/routing-benchmark.d.ts.map +1 -0
  14. package/dist/cjs/benchmarks/routing-benchmark.js +289 -0
  15. package/dist/cjs/contrastive.d.ts +229 -0
  16. package/dist/cjs/contrastive.d.ts.map +1 -0
  17. package/dist/cjs/contrastive.js +589 -0
  18. package/dist/cjs/engine.d.ts +3 -0
  19. package/dist/cjs/engine.d.ts.map +1 -1
  20. package/dist/cjs/engine.js +29 -9
  21. package/dist/cjs/index.d.ts +4 -0
  22. package/dist/cjs/index.d.ts.map +1 -1
  23. package/dist/cjs/index.js +9 -1
  24. package/dist/cjs/models.d.ts +129 -0
  25. package/dist/cjs/models.d.ts.map +1 -0
  26. package/dist/cjs/models.js +323 -0
  27. package/dist/cjs/rlm/controller.d.ts +245 -0
  28. package/dist/cjs/rlm/controller.d.ts.map +1 -0
  29. package/dist/cjs/rlm/controller.js +554 -0
  30. package/dist/cjs/rlm/index.d.ts +62 -0
  31. package/dist/cjs/rlm/index.d.ts.map +1 -0
  32. package/dist/cjs/rlm/index.js +97 -0
  33. package/dist/cjs/rlm/training.d.ts +333 -0
  34. package/dist/cjs/rlm/training.d.ts.map +1 -0
  35. package/dist/cjs/rlm/training.js +680 -0
  36. package/dist/cjs/rlm/types.d.ts +189 -0
  37. package/dist/cjs/rlm/types.d.ts.map +1 -0
  38. package/dist/cjs/rlm/types.js +10 -0
  39. package/dist/esm/benchmarks/embedding-benchmark.d.ts +102 -0
  40. package/dist/esm/benchmarks/embedding-benchmark.d.ts.map +1 -0
  41. package/dist/esm/benchmarks/embedding-benchmark.js +427 -0
  42. package/dist/esm/benchmarks/index.d.ts +34 -0
  43. package/dist/esm/benchmarks/index.d.ts.map +1 -0
  44. package/dist/esm/benchmarks/index.js +110 -0
  45. package/dist/esm/benchmarks/model-comparison.d.ts +71 -0
  46. package/dist/esm/benchmarks/model-comparison.d.ts.map +1 -0
  47. package/dist/esm/benchmarks/model-comparison.js +434 -0
  48. package/dist/esm/benchmarks/routing-benchmark.d.ts +70 -0
  49. package/dist/esm/benchmarks/routing-benchmark.d.ts.map +1 -0
  50. package/dist/esm/benchmarks/routing-benchmark.js +283 -0
  51. package/dist/esm/contrastive.d.ts +229 -0
  52. package/dist/esm/contrastive.d.ts.map +1 -0
  53. package/dist/esm/contrastive.js +578 -0
  54. package/dist/esm/engine.d.ts +3 -0
  55. package/dist/esm/engine.d.ts.map +1 -1
  56. package/dist/esm/engine.js +29 -9
  57. package/dist/esm/index.d.ts +4 -0
  58. package/dist/esm/index.d.ts.map +1 -1
  59. package/dist/esm/index.js +9 -1
  60. package/dist/esm/models.d.ts +129 -0
  61. package/dist/esm/models.d.ts.map +1 -0
  62. package/dist/esm/models.js +282 -0
  63. package/dist/esm/rlm/controller.d.ts +245 -0
  64. package/dist/esm/rlm/controller.d.ts.map +1 -0
  65. package/dist/esm/rlm/controller.js +550 -0
  66. package/dist/esm/rlm/index.d.ts +62 -0
  67. package/dist/esm/rlm/index.d.ts.map +1 -0
  68. package/dist/esm/rlm/index.js +71 -0
  69. package/dist/esm/rlm/training.d.ts +333 -0
  70. package/dist/esm/rlm/training.d.ts.map +1 -0
  71. package/dist/esm/rlm/training.js +672 -0
  72. package/dist/esm/rlm/types.d.ts +189 -0
  73. package/dist/esm/rlm/types.d.ts.map +1 -0
  74. package/dist/esm/rlm/types.js +9 -0
  75. package/package.json +13 -11
  76. package/scripts/ensemble-model-compare.js +287 -0
  77. package/scripts/huggingface/README.md +537 -0
  78. package/scripts/huggingface/publish.sh +112 -0
  79. package/scripts/hybrid-model-compare.js +373 -0
  80. package/scripts/improved-model-compare.js +288 -0
  81. package/scripts/optimized-model-compare.js +364 -0
  82. package/scripts/real-model-compare.js +280 -0
  83. package/scripts/training/agentic-flow-capabilities.json +329 -0
  84. package/scripts/training/claude-code-synth.js +505 -0
  85. package/scripts/training/claude-flow-capabilities.json +1322 -0
  86. package/scripts/training/claude-hard-negatives.js +222 -0
  87. package/scripts/training/contrastive-finetune.js +517 -0
  88. package/scripts/training/ecosystem-triplets.jsonl +1467 -0
  89. package/scripts/training/generate-ecosystem-triplets.js +1324 -0
  90. package/scripts/training/rlm-dataset.js +671 -0
  91. package/scripts/training/routing-dataset.js +634 -0
  92. package/scripts/training/ruvector-capabilities.json +798 -0
  93. package/scripts/training/validate-ecosystem.js +381 -0
  94. package/scripts/training/validation-results.json +23 -0
@@ -0,0 +1,62 @@
1
+ /**
2
+ * RLM - Retrieval Language Model
3
+ *
4
+ * A recursive retrieval-augmented generation system that combines
5
+ * memory search with intelligent query decomposition and synthesis.
6
+ *
7
+ * @example Basic Usage
8
+ * ```typescript
9
+ * import { RlmController } from '@ruvector/ruvllm';
10
+ *
11
+ * const rlm = new RlmController({
12
+ * maxDepth: 3,
13
+ * enableCache: true,
14
+ * retrievalTopK: 10,
15
+ * });
16
+ *
17
+ * // Add knowledge
18
+ * await rlm.addMemory('TypeScript adds static typing to JavaScript.');
19
+ * await rlm.addMemory('React is a library for building user interfaces.');
20
+ *
21
+ * // Query with retrieval
22
+ * const answer = await rlm.query('Compare TypeScript and JavaScript');
23
+ * console.log(answer.text);
24
+ * console.log('Confidence:', answer.confidence);
25
+ * console.log('Sources:', answer.sources.length);
26
+ * ```
27
+ *
28
+ * @example Streaming
29
+ * ```typescript
30
+ * import { RlmController } from '@ruvector/ruvllm';
31
+ *
32
+ * const rlm = new RlmController();
33
+ *
34
+ * for await (const event of rlm.queryStream('Explain machine learning')) {
35
+ * if (event.type === 'token') {
36
+ * process.stdout.write(event.text);
37
+ * } else {
38
+ * console.log('\n\nQuality:', event.answer.qualityScore);
39
+ * }
40
+ * }
41
+ * ```
42
+ *
43
+ * @example With Reflection
44
+ * ```typescript
45
+ * import { RlmController } from '@ruvector/ruvllm';
46
+ *
47
+ * const rlm = new RlmController({
48
+ * enableReflection: true,
49
+ * maxReflectionIterations: 2,
50
+ * minQualityScore: 0.8,
51
+ * });
52
+ *
53
+ * // Answers will be iteratively refined until quality >= 0.8
54
+ * const answer = await rlm.query('Complex technical question...');
55
+ * ```
56
+ *
57
+ * @module rlm
58
+ */
59
+ export * from './types';
60
+ export { RlmController } from './controller';
61
+ export { type DecompositionStrategy, type SubQuery, type QueryDecomposition, type SubAnswer, type RlmTrajectoryMetadata, type RlmTrainingExample, type ContrastivePair, type RlmTrainingConfig, type TrainingResult as RlmTrainingResult, type EvaluationResult as RlmEvaluationResult, DEFAULT_RLM_CONFIG, FAST_RLM_CONFIG, THOROUGH_RLM_CONFIG, ROUTING_FOCUSED_CONFIG, AGENT_DEFINITIONS, HARD_NEGATIVE_PAIRS, RlmTrainer, createRlmTrainer, createEmptyExample, createSubQuery, createSubAnswer, } from './training';
62
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rlm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAGH,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,cAAc,IAAI,iBAAiB,EACxC,KAAK,gBAAgB,IAAI,mBAAmB,EAG5C,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EAGnB,UAAU,EAGV,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,eAAe,GAChB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ /**
3
+ * RLM - Retrieval Language Model
4
+ *
5
+ * A recursive retrieval-augmented generation system that combines
6
+ * memory search with intelligent query decomposition and synthesis.
7
+ *
8
+ * @example Basic Usage
9
+ * ```typescript
10
+ * import { RlmController } from '@ruvector/ruvllm';
11
+ *
12
+ * const rlm = new RlmController({
13
+ * maxDepth: 3,
14
+ * enableCache: true,
15
+ * retrievalTopK: 10,
16
+ * });
17
+ *
18
+ * // Add knowledge
19
+ * await rlm.addMemory('TypeScript adds static typing to JavaScript.');
20
+ * await rlm.addMemory('React is a library for building user interfaces.');
21
+ *
22
+ * // Query with retrieval
23
+ * const answer = await rlm.query('Compare TypeScript and JavaScript');
24
+ * console.log(answer.text);
25
+ * console.log('Confidence:', answer.confidence);
26
+ * console.log('Sources:', answer.sources.length);
27
+ * ```
28
+ *
29
+ * @example Streaming
30
+ * ```typescript
31
+ * import { RlmController } from '@ruvector/ruvllm';
32
+ *
33
+ * const rlm = new RlmController();
34
+ *
35
+ * for await (const event of rlm.queryStream('Explain machine learning')) {
36
+ * if (event.type === 'token') {
37
+ * process.stdout.write(event.text);
38
+ * } else {
39
+ * console.log('\n\nQuality:', event.answer.qualityScore);
40
+ * }
41
+ * }
42
+ * ```
43
+ *
44
+ * @example With Reflection
45
+ * ```typescript
46
+ * import { RlmController } from '@ruvector/ruvllm';
47
+ *
48
+ * const rlm = new RlmController({
49
+ * enableReflection: true,
50
+ * maxReflectionIterations: 2,
51
+ * minQualityScore: 0.8,
52
+ * });
53
+ *
54
+ * // Answers will be iteratively refined until quality >= 0.8
55
+ * const answer = await rlm.query('Complex technical question...');
56
+ * ```
57
+ *
58
+ * @module rlm
59
+ */
60
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
61
+ if (k2 === undefined) k2 = k;
62
+ var desc = Object.getOwnPropertyDescriptor(m, k);
63
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
64
+ desc = { enumerable: true, get: function() { return m[k]; } };
65
+ }
66
+ Object.defineProperty(o, k2, desc);
67
+ }) : (function(o, m, k, k2) {
68
+ if (k2 === undefined) k2 = k;
69
+ o[k2] = m[k];
70
+ }));
71
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
72
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
73
+ };
74
+ Object.defineProperty(exports, "__esModule", { value: true });
75
+ exports.createSubAnswer = exports.createSubQuery = exports.createEmptyExample = exports.createRlmTrainer = exports.RlmTrainer = exports.HARD_NEGATIVE_PAIRS = exports.AGENT_DEFINITIONS = exports.ROUTING_FOCUSED_CONFIG = exports.THOROUGH_RLM_CONFIG = exports.FAST_RLM_CONFIG = exports.DEFAULT_RLM_CONFIG = exports.RlmController = void 0;
76
+ // Export all types
77
+ __exportStar(require("./types"), exports);
78
+ // Export the controller
79
+ var controller_1 = require("./controller");
80
+ Object.defineProperty(exports, "RlmController", { enumerable: true, get: function () { return controller_1.RlmController; } });
81
+ // Export training module
82
+ var training_1 = require("./training");
83
+ // Constants
84
+ Object.defineProperty(exports, "DEFAULT_RLM_CONFIG", { enumerable: true, get: function () { return training_1.DEFAULT_RLM_CONFIG; } });
85
+ Object.defineProperty(exports, "FAST_RLM_CONFIG", { enumerable: true, get: function () { return training_1.FAST_RLM_CONFIG; } });
86
+ Object.defineProperty(exports, "THOROUGH_RLM_CONFIG", { enumerable: true, get: function () { return training_1.THOROUGH_RLM_CONFIG; } });
87
+ Object.defineProperty(exports, "ROUTING_FOCUSED_CONFIG", { enumerable: true, get: function () { return training_1.ROUTING_FOCUSED_CONFIG; } });
88
+ Object.defineProperty(exports, "AGENT_DEFINITIONS", { enumerable: true, get: function () { return training_1.AGENT_DEFINITIONS; } });
89
+ Object.defineProperty(exports, "HARD_NEGATIVE_PAIRS", { enumerable: true, get: function () { return training_1.HARD_NEGATIVE_PAIRS; } });
90
+ // Classes
91
+ Object.defineProperty(exports, "RlmTrainer", { enumerable: true, get: function () { return training_1.RlmTrainer; } });
92
+ // Factory functions
93
+ Object.defineProperty(exports, "createRlmTrainer", { enumerable: true, get: function () { return training_1.createRlmTrainer; } });
94
+ Object.defineProperty(exports, "createEmptyExample", { enumerable: true, get: function () { return training_1.createEmptyExample; } });
95
+ Object.defineProperty(exports, "createSubQuery", { enumerable: true, get: function () { return training_1.createSubQuery; } });
96
+ Object.defineProperty(exports, "createSubAnswer", { enumerable: true, get: function () { return training_1.createSubAnswer; } });
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmxtL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeURHOzs7Ozs7Ozs7Ozs7Ozs7OztBQUVILG1CQUFtQjtBQUNuQiwwQ0FBd0I7QUFFeEIsd0JBQXdCO0FBQ3hCLDJDQUE2QztBQUFwQywyR0FBQSxhQUFhLE9BQUE7QUFFdEIseUJBQXlCO0FBQ3pCLHVDQTZCb0I7QUFoQmxCLFlBQVk7QUFDWiw4R0FBQSxrQkFBa0IsT0FBQTtBQUNsQiwyR0FBQSxlQUFlLE9BQUE7QUFDZiwrR0FBQSxtQkFBbUIsT0FBQTtBQUNuQixrSEFBQSxzQkFBc0IsT0FBQTtBQUN0Qiw2R0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwrR0FBQSxtQkFBbUIsT0FBQTtBQUVuQixVQUFVO0FBQ1Ysc0dBQUEsVUFBVSxPQUFBO0FBRVYsb0JBQW9CO0FBQ3BCLDRHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDhHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLDBHQUFBLGNBQWMsT0FBQTtBQUNkLDJHQUFBLGVBQWUsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUkxNIC0gUmV0cmlldmFsIExhbmd1YWdlIE1vZGVsXG4gKlxuICogQSByZWN1cnNpdmUgcmV0cmlldmFsLWF1Z21lbnRlZCBnZW5lcmF0aW9uIHN5c3RlbSB0aGF0IGNvbWJpbmVzXG4gKiBtZW1vcnkgc2VhcmNoIHdpdGggaW50ZWxsaWdlbnQgcXVlcnkgZGVjb21wb3NpdGlvbiBhbmQgc3ludGhlc2lzLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIFVzYWdlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBSbG1Db250cm9sbGVyIH0gZnJvbSAnQHJ1dmVjdG9yL3J1dmxsbSc7XG4gKlxuICogY29uc3QgcmxtID0gbmV3IFJsbUNvbnRyb2xsZXIoe1xuICogICBtYXhEZXB0aDogMyxcbiAqICAgZW5hYmxlQ2FjaGU6IHRydWUsXG4gKiAgIHJldHJpZXZhbFRvcEs6IDEwLFxuICogfSk7XG4gKlxuICogLy8gQWRkIGtub3dsZWRnZVxuICogYXdhaXQgcmxtLmFkZE1lbW9yeSgnVHlwZVNjcmlwdCBhZGRzIHN0YXRpYyB0eXBpbmcgdG8gSmF2YVNjcmlwdC4nKTtcbiAqIGF3YWl0IHJsbS5hZGRNZW1vcnkoJ1JlYWN0IGlzIGEgbGlicmFyeSBmb3IgYnVpbGRpbmcgdXNlciBpbnRlcmZhY2VzLicpO1xuICpcbiAqIC8vIFF1ZXJ5IHdpdGggcmV0cmlldmFsXG4gKiBjb25zdCBhbnN3ZXIgPSBhd2FpdCBybG0ucXVlcnkoJ0NvbXBhcmUgVHlwZVNjcmlwdCBhbmQgSmF2YVNjcmlwdCcpO1xuICogY29uc29sZS5sb2coYW5zd2VyLnRleHQpO1xuICogY29uc29sZS5sb2coJ0NvbmZpZGVuY2U6JywgYW5zd2VyLmNvbmZpZGVuY2UpO1xuICogY29uc29sZS5sb2coJ1NvdXJjZXM6JywgYW5zd2VyLnNvdXJjZXMubGVuZ3RoKTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFN0cmVhbWluZ1xuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgUmxtQ29udHJvbGxlciB9IGZyb20gJ0BydXZlY3Rvci9ydXZsbG0nO1xuICpcbiAqIGNvbnN0IHJsbSA9IG5ldyBSbG1Db250cm9sbGVyKCk7XG4gKlxuICogZm9yIGF3YWl0IChjb25zdCBldmVudCBvZiBybG0ucXVlcnlTdHJlYW0oJ0V4cGxhaW4gbWFjaGluZSBsZWFybmluZycpKSB7XG4gKiAgIGlmIChldmVudC50eXBlID09PSAndG9rZW4nKSB7XG4gKiAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoZXZlbnQudGV4dCk7XG4gKiAgIH0gZWxzZSB7XG4gKiAgICAgY29uc29sZS5sb2coJ1xcblxcblF1YWxpdHk6JywgZXZlbnQuYW5zd2VyLnF1YWxpdHlTY29yZSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFdpdGggUmVmbGVjdGlvblxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgUmxtQ29udHJvbGxlciB9IGZyb20gJ0BydXZlY3Rvci9ydXZsbG0nO1xuICpcbiAqIGNvbnN0IHJsbSA9IG5ldyBSbG1Db250cm9sbGVyKHtcbiAqICAgZW5hYmxlUmVmbGVjdGlvbjogdHJ1ZSxcbiAqICAgbWF4UmVmbGVjdGlvbkl0ZXJhdGlvbnM6IDIsXG4gKiAgIG1pblF1YWxpdHlTY29yZTogMC44LFxuICogfSk7XG4gKlxuICogLy8gQW5zd2VycyB3aWxsIGJlIGl0ZXJhdGl2ZWx5IHJlZmluZWQgdW50aWwgcXVhbGl0eSA+PSAwLjhcbiAqIGNvbnN0IGFuc3dlciA9IGF3YWl0IHJsbS5xdWVyeSgnQ29tcGxleCB0ZWNobmljYWwgcXVlc3Rpb24uLi4nKTtcbiAqIGBgYFxuICpcbiAqIEBtb2R1bGUgcmxtXG4gKi9cblxuLy8gRXhwb3J0IGFsbCB0eXBlc1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5cbi8vIEV4cG9ydCB0aGUgY29udHJvbGxlclxuZXhwb3J0IHsgUmxtQ29udHJvbGxlciB9IGZyb20gJy4vY29udHJvbGxlcic7XG5cbi8vIEV4cG9ydCB0cmFpbmluZyBtb2R1bGVcbmV4cG9ydCB7XG4gIC8vIFR5cGVzXG4gIHR5cGUgRGVjb21wb3NpdGlvblN0cmF0ZWd5LFxuICB0eXBlIFN1YlF1ZXJ5LFxuICB0eXBlIFF1ZXJ5RGVjb21wb3NpdGlvbixcbiAgdHlwZSBTdWJBbnN3ZXIsXG4gIHR5cGUgUmxtVHJhamVjdG9yeU1ldGFkYXRhLFxuICB0eXBlIFJsbVRyYWluaW5nRXhhbXBsZSxcbiAgdHlwZSBDb250cmFzdGl2ZVBhaXIsXG4gIHR5cGUgUmxtVHJhaW5pbmdDb25maWcsXG4gIHR5cGUgVHJhaW5pbmdSZXN1bHQgYXMgUmxtVHJhaW5pbmdSZXN1bHQsXG4gIHR5cGUgRXZhbHVhdGlvblJlc3VsdCBhcyBSbG1FdmFsdWF0aW9uUmVzdWx0LFxuXG4gIC8vIENvbnN0YW50c1xuICBERUZBVUxUX1JMTV9DT05GSUcsXG4gIEZBU1RfUkxNX0NPTkZJRyxcbiAgVEhPUk9VR0hfUkxNX0NPTkZJRyxcbiAgUk9VVElOR19GT0NVU0VEX0NPTkZJRyxcbiAgQUdFTlRfREVGSU5JVElPTlMsXG4gIEhBUkRfTkVHQVRJVkVfUEFJUlMsXG5cbiAgLy8gQ2xhc3Nlc1xuICBSbG1UcmFpbmVyLFxuXG4gIC8vIEZhY3RvcnkgZnVuY3Rpb25zXG4gIGNyZWF0ZVJsbVRyYWluZXIsXG4gIGNyZWF0ZUVtcHR5RXhhbXBsZSxcbiAgY3JlYXRlU3ViUXVlcnksXG4gIGNyZWF0ZVN1YkFuc3dlcixcbn0gZnJvbSAnLi90cmFpbmluZyc7XG4iXX0=
@@ -0,0 +1,333 @@
1
+ /**
2
+ * RLM (Recursive Learning Machine) Training Module
3
+ *
4
+ * Provides training capabilities for RuvLTRA models on RLM task routing
5
+ * and decomposition, including query decomposition, answer synthesis,
6
+ * and agent routing optimization.
7
+ *
8
+ * @module rlm/training
9
+ */
10
+ /**
11
+ * Strategy for decomposing a complex query
12
+ */
13
+ export type DecompositionStrategy = 'sequential' | 'parallel' | 'hierarchical' | 'dag-based' | 'iterative' | 'none';
14
+ /**
15
+ * A sub-query in the decomposition
16
+ */
17
+ export interface SubQuery {
18
+ /** Unique identifier within the decomposition */
19
+ id: number;
20
+ /** The sub-query text */
21
+ query: string;
22
+ /** Expected output type (e.g., "code", "analysis", "data") */
23
+ expectedType: string;
24
+ /** Dependencies (IDs of sub-queries that must complete first) */
25
+ dependencies: number[];
26
+ /** Recommended agent type for this sub-query */
27
+ recommendedAgent?: string;
28
+ /** Estimated complexity (0.0-1.0) */
29
+ complexity: number;
30
+ /** Optional context from parent query */
31
+ context?: string;
32
+ }
33
+ /**
34
+ * Decomposition of a complex query into sub-queries
35
+ */
36
+ export interface QueryDecomposition {
37
+ /** Sub-queries in execution order */
38
+ subQueries: SubQuery[];
39
+ /** Decomposition strategy used */
40
+ strategy: DecompositionStrategy;
41
+ /** Reasoning for this decomposition */
42
+ rationale: string;
43
+ /** Total estimated complexity */
44
+ totalComplexity: number;
45
+ /** Whether decomposition was successful */
46
+ success: boolean;
47
+ /** Error message if decomposition failed */
48
+ error?: string;
49
+ }
50
+ /**
51
+ * Answer to a sub-query
52
+ */
53
+ export interface SubAnswer {
54
+ /** ID of the sub-query this answers */
55
+ subQueryId: number;
56
+ /** The answer content */
57
+ content: string;
58
+ /** Confidence in this answer (0.0-1.0) */
59
+ confidence: number;
60
+ /** Agent that produced this answer */
61
+ agent: string;
62
+ /** Latency in milliseconds */
63
+ latencyMs: number;
64
+ /** Quality score (0.0-1.0) */
65
+ quality: number;
66
+ /** Whether this answer was successful */
67
+ success: boolean;
68
+ /** Error message if failed */
69
+ error?: string;
70
+ /** Intermediate reasoning/chain-of-thought */
71
+ reasoning?: string;
72
+ }
73
+ /**
74
+ * Metadata about the RLM execution trajectory
75
+ */
76
+ export interface RlmTrajectoryMetadata {
77
+ /** Session ID */
78
+ sessionId?: string;
79
+ /** User ID */
80
+ userId?: string;
81
+ /** Total latency in milliseconds */
82
+ totalLatencyMs: number;
83
+ /** Number of retries */
84
+ retries: number;
85
+ /** Maximum parallel branches executed */
86
+ maxParallelism: number;
87
+ /** Models used during execution */
88
+ modelsUsed: string[];
89
+ /** Agents invoked */
90
+ agentsInvoked: string[];
91
+ /** Tools used */
92
+ toolsUsed: string[];
93
+ /** Custom attributes */
94
+ attributes: Record<string, string>;
95
+ }
96
+ /**
97
+ * A complete RLM training example
98
+ */
99
+ export interface RlmTrainingExample {
100
+ /** Unique identifier */
101
+ id: string;
102
+ /** Original complex query */
103
+ query: string;
104
+ /** Query embedding (optional) */
105
+ queryEmbedding?: number[];
106
+ /** How the query was decomposed */
107
+ decomposition: QueryDecomposition;
108
+ /** Answers to each sub-query */
109
+ subAnswers: SubAnswer[];
110
+ /** Final synthesized answer */
111
+ finalAnswer: string;
112
+ /** Final answer embedding (optional) */
113
+ finalEmbedding?: number[];
114
+ /** Overall quality score (0.0-1.0) */
115
+ qualityScore: number;
116
+ /** Execution trajectory metadata */
117
+ trajectory: RlmTrajectoryMetadata;
118
+ /** Whether this example was successful */
119
+ success: boolean;
120
+ /** Lessons learned from this example */
121
+ lessons: string[];
122
+ /** Source of this example */
123
+ source: string;
124
+ }
125
+ /**
126
+ * A contrastive pair for agent routing training
127
+ */
128
+ export interface ContrastivePair {
129
+ /** Anchor query */
130
+ anchor: string;
131
+ /** Anchor embedding (optional) */
132
+ anchorEmbedding?: number[];
133
+ /** Positive agent (correct routing) */
134
+ positiveAgent: string;
135
+ /** Negative agent (incorrect routing) */
136
+ negativeAgent: string;
137
+ /** Whether this is a hard negative */
138
+ isHardNegative: boolean;
139
+ /** Quality score of the anchor example */
140
+ quality: number;
141
+ /** Source example ID */
142
+ sourceId: string;
143
+ }
144
+ /**
145
+ * Configuration for RLM training
146
+ */
147
+ export interface RlmTrainingConfig {
148
+ /** Learning rate for decomposition training */
149
+ decompositionLr: number;
150
+ /** Learning rate for synthesis training */
151
+ synthesisLr: number;
152
+ /** Learning rate for contrastive fine-tuning */
153
+ contrastiveLr: number;
154
+ /** Batch size */
155
+ batchSize: number;
156
+ /** Number of epochs */
157
+ epochs: number;
158
+ /** Contrastive margin for triplet loss */
159
+ contrastiveMargin: number;
160
+ /** Temperature for InfoNCE loss */
161
+ infonceTemperature: number;
162
+ /** Weight for decomposition loss */
163
+ decompositionWeight: number;
164
+ /** Weight for synthesis loss */
165
+ synthesisWeight: number;
166
+ /** Weight for routing loss */
167
+ routingWeight: number;
168
+ /** Minimum quality for updates */
169
+ qualityThreshold: number;
170
+ /** Evaluation interval (epochs) */
171
+ evaluationInterval: number;
172
+ /** Warmup steps */
173
+ warmupSteps: number;
174
+ /** Early stopping patience */
175
+ earlyStoppingPatience: number;
176
+ /** Validation split ratio */
177
+ validationSplit: number;
178
+ /** Random seed */
179
+ seed: number;
180
+ }
181
+ /**
182
+ * Training result for a phase
183
+ */
184
+ export interface TrainingResult {
185
+ /** Training phase name */
186
+ phase: string;
187
+ /** Epochs completed */
188
+ epochsCompleted: number;
189
+ /** Total steps */
190
+ totalSteps: number;
191
+ /** Final training loss */
192
+ finalLoss: number;
193
+ /** Best validation loss */
194
+ bestValLoss: number;
195
+ /** Best epoch */
196
+ bestEpoch: number;
197
+ /** Final accuracy (for classification tasks) */
198
+ accuracy: number;
199
+ /** Loss history per epoch */
200
+ lossHistory: number[];
201
+ /** Validation loss history */
202
+ valLossHistory: number[];
203
+ /** Training duration in milliseconds */
204
+ durationMs: number;
205
+ /** Whether early stopping was triggered */
206
+ earlyStopped: boolean;
207
+ }
208
+ /**
209
+ * Evaluation result for the trained model
210
+ */
211
+ export interface EvaluationResult {
212
+ /** Decomposition accuracy */
213
+ decompositionAccuracy: number;
214
+ /** Synthesis quality */
215
+ synthesisQuality: number;
216
+ /** Routing accuracy */
217
+ routingAccuracy: number;
218
+ /** Hard negative accuracy */
219
+ hardNegativeAccuracy: number;
220
+ /** Average latency in ms */
221
+ avgLatencyMs: number;
222
+ /** Total examples evaluated */
223
+ totalExamples: number;
224
+ /** Per-agent accuracy */
225
+ perAgentAccuracy: Record<string, number>;
226
+ }
227
+ /**
228
+ * Default RLM training configuration
229
+ */
230
+ export declare const DEFAULT_RLM_CONFIG: RlmTrainingConfig;
231
+ /**
232
+ * Fast training configuration
233
+ */
234
+ export declare const FAST_RLM_CONFIG: RlmTrainingConfig;
235
+ /**
236
+ * Thorough training configuration
237
+ */
238
+ export declare const THOROUGH_RLM_CONFIG: RlmTrainingConfig;
239
+ /**
240
+ * Routing-focused training configuration
241
+ */
242
+ export declare const ROUTING_FOCUSED_CONFIG: RlmTrainingConfig;
243
+ /**
244
+ * Agent types with descriptions and keywords
245
+ */
246
+ export declare const AGENT_DEFINITIONS: Record<string, {
247
+ description: string;
248
+ keywords: string[];
249
+ }>;
250
+ /**
251
+ * Hard negative pairs (confusable agent combinations)
252
+ */
253
+ export declare const HARD_NEGATIVE_PAIRS: [string, string][];
254
+ /**
255
+ * RLM Trainer for RuvLTRA models
256
+ *
257
+ * Provides training capabilities for decomposition, synthesis, and routing tasks.
258
+ */
259
+ export declare class RlmTrainer {
260
+ private config;
261
+ private currentEpoch;
262
+ private currentStep;
263
+ private bestValLoss;
264
+ private patienceCounter;
265
+ private lossHistory;
266
+ private valLossHistory;
267
+ /**
268
+ * Create a new RLM trainer
269
+ */
270
+ constructor(config?: Partial<RlmTrainingConfig>);
271
+ /**
272
+ * Train on decomposition task
273
+ *
274
+ * Learns to break complex queries into manageable sub-queries.
275
+ */
276
+ trainDecomposition(dataset: RlmTrainingExample[]): Promise<TrainingResult>;
277
+ /**
278
+ * Train on synthesis task
279
+ *
280
+ * Learns to combine sub-answers into coherent final responses.
281
+ */
282
+ trainSynthesis(dataset: RlmTrainingExample[]): Promise<TrainingResult>;
283
+ /**
284
+ * Contrastive fine-tuning for agent routing
285
+ *
286
+ * Uses triplet loss and InfoNCE to improve routing accuracy.
287
+ */
288
+ trainContrastive(pairs: ContrastivePair[]): Promise<TrainingResult>;
289
+ /**
290
+ * Evaluate trained model on test set
291
+ */
292
+ evaluate(testSet: RlmTrainingExample[]): Promise<EvaluationResult>;
293
+ /**
294
+ * Generate contrastive pairs from dataset
295
+ */
296
+ generateContrastivePairs(dataset: RlmTrainingExample[], hardNegativeRatio?: number): ContrastivePair[];
297
+ private resetState;
298
+ private splitDataset;
299
+ private splitPairs;
300
+ private createBatches;
301
+ private createPairBatches;
302
+ private shuffle;
303
+ private trainDecompositionBatch;
304
+ private trainSynthesisBatch;
305
+ private trainContrastiveBatch;
306
+ private validateDecomposition;
307
+ private validateSynthesis;
308
+ private validateContrastive;
309
+ private computeTripletLoss;
310
+ private computeInfoNCELoss;
311
+ private agentDistance;
312
+ private predictAgent;
313
+ private isHardNegative;
314
+ private findBestEpoch;
315
+ }
316
+ /**
317
+ * Create an RLM trainer with default configuration
318
+ */
319
+ export declare function createRlmTrainer(config?: Partial<RlmTrainingConfig>): RlmTrainer;
320
+ /**
321
+ * Create an empty RLM training example
322
+ */
323
+ export declare function createEmptyExample(query: string): RlmTrainingExample;
324
+ /**
325
+ * Create a sub-query
326
+ */
327
+ export declare function createSubQuery(id: number, query: string, options?: Partial<SubQuery>): SubQuery;
328
+ /**
329
+ * Create a sub-answer
330
+ */
331
+ export declare function createSubAnswer(subQueryId: number, content: string, agent: string, options?: Partial<SubAnswer>): SubAnswer;
332
+ export default RlmTrainer;
333
+ //# sourceMappingURL=training.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"training.d.ts","sourceRoot":"","sources":["../../../src/rlm/training.ts"],"names":[],"mappings":"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"}