@ruvector/ruvllm 2.4.1 → 2.5.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.
- package/README.md +158 -398
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -3
- package/dist/cjs/intelligence.d.ts +136 -0
- package/dist/cjs/intelligence.d.ts.map +1 -0
- package/dist/cjs/intelligence.js +162 -0
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -3
- package/dist/esm/intelligence.d.ts +136 -0
- package/dist/esm/intelligence.d.ts.map +1 -0
- package/dist/esm/intelligence.js +157 -0
- package/package.json +3 -7
- package/scripts/training/validation-results.json +1 -1
- package/dist/cjs/rlm/controller.d.ts +0 -245
- package/dist/cjs/rlm/controller.d.ts.map +0 -1
- package/dist/cjs/rlm/controller.js +0 -554
- package/dist/cjs/rlm/index.d.ts +0 -62
- package/dist/cjs/rlm/index.d.ts.map +0 -1
- package/dist/cjs/rlm/index.js +0 -97
- package/dist/cjs/rlm/training.d.ts +0 -333
- package/dist/cjs/rlm/training.d.ts.map +0 -1
- package/dist/cjs/rlm/training.js +0 -680
- package/dist/cjs/rlm/types.d.ts +0 -189
- package/dist/cjs/rlm/types.d.ts.map +0 -1
- package/dist/cjs/rlm/types.js +0 -10
- package/dist/esm/rlm/controller.d.ts +0 -245
- package/dist/esm/rlm/controller.d.ts.map +0 -1
- package/dist/esm/rlm/controller.js +0 -550
- package/dist/esm/rlm/index.d.ts +0 -62
- package/dist/esm/rlm/index.d.ts.map +0 -1
- package/dist/esm/rlm/index.js +0 -71
- package/dist/esm/rlm/training.d.ts +0 -333
- package/dist/esm/rlm/training.d.ts.map +0 -1
- package/dist/esm/rlm/training.js +0 -672
- package/dist/esm/rlm/types.d.ts +0 -189
- package/dist/esm/rlm/types.d.ts.map +0 -1
- package/dist/esm/rlm/types.js +0 -9
- package/scripts/training/rlm-dataset.js +0 -671
package/dist/cjs/index.js
CHANGED
|
@@ -92,8 +92,8 @@ __exportStar(require("./contrastive"), exports);
|
|
|
92
92
|
__exportStar(require("./models"), exports);
|
|
93
93
|
// Benchmarks for Claude Code use cases
|
|
94
94
|
__exportStar(require("./benchmarks"), exports);
|
|
95
|
-
//
|
|
96
|
-
__exportStar(require("./
|
|
95
|
+
// External Intelligence Providers (ADR-043)
|
|
96
|
+
__exportStar(require("./intelligence"), exports);
|
|
97
97
|
// Native bindings utilities
|
|
98
98
|
var native_1 = require("./native");
|
|
99
99
|
Object.defineProperty(exports, "version", { enumerable: true, get: function () { return native_1.version; } });
|
|
@@ -101,4 +101,4 @@ Object.defineProperty(exports, "hasSimdSupport", { enumerable: true, get: functi
|
|
|
101
101
|
// Default export
|
|
102
102
|
var engine_1 = require("./engine");
|
|
103
103
|
Object.defineProperty(exports, "default", { enumerable: true, get: function () { return engine_1.RuvLLM; } });
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtERzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxhQUFhO0FBQ2IsMENBQXdCO0FBRXhCLGNBQWM7QUFDZCwyQ0FBeUI7QUFFekIsa0JBQWtCO0FBQ2xCLHlDQUF1QjtBQUV2QixxQkFBcUI7QUFDckIsNENBQTBCO0FBRTFCLG9CQUFvQjtBQUNwQiw4Q0FBNEI7QUFFNUIsdUJBQXVCO0FBQ3ZCLHlDQUF1QjtBQUV2QixxQkFBcUI7QUFDckIsOENBQTRCO0FBRTVCLGdCQUFnQjtBQUNoQix5Q0FBdUI7QUFFdkIsdUJBQXVCO0FBQ3ZCLDJDQUF5QjtBQUV6QixvQkFBb0I7QUFDcEIsNkNBQTJCO0FBRTNCLDBCQUEwQjtBQUMxQixnREFBOEI7QUFFOUIsZ0NBQWdDO0FBQ2hDLDJDQUF5QjtBQUV6Qix1Q0FBdUM7QUFDdkMsK0NBQTZCO0FBRTdCLDRDQUE0QztBQUM1QyxpREFBK0I7QUFFL0IsNEJBQTRCO0FBQzVCLG1DQUFtRDtBQUExQyxpR0FBQSxPQUFPLE9BQUE7QUFBRSx3R0FBQSxjQUFjLE9BQUE7QUFFaEMsaUJBQWlCO0FBQ2pCLG1DQUE2QztBQUFwQyxpR0FBQSxNQUFNLE9BQVciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBydXZlY3Rvci9ydXZsbG0gLSBTZWxmLWxlYXJuaW5nIExMTSBvcmNoZXN0cmF0aW9uXG4gKlxuICogUnV2TExNIGNvbWJpbmVzIFNPTkEgYWRhcHRpdmUgbGVhcm5pbmcgd2l0aCBITlNXIG1lbW9yeSxcbiAqIEZhc3RHUk5OIHJvdXRpbmcsIGFuZCBTSU1ELW9wdGltaXplZCBpbmZlcmVuY2UuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IFJ1dkxMTSwgU2Vzc2lvbk1hbmFnZXIsIFNvbmFDb29yZGluYXRvciB9IGZyb20gJ0BydXZlY3Rvci9ydXZsbG0nO1xuICpcbiAqIGNvbnN0IGxsbSA9IG5ldyBSdXZMTE0oeyBsZWFybmluZ0VuYWJsZWQ6IHRydWUgfSk7XG4gKiBjb25zdCBzZXNzaW9ucyA9IG5ldyBTZXNzaW9uTWFuYWdlcihsbG0pO1xuICogY29uc3Qgc29uYSA9IG5ldyBTb25hQ29vcmRpbmF0b3IoKTtcbiAqXG4gKiAvLyBRdWVyeSB3aXRoIHNlc3Npb24gY29udGV4dFxuICogY29uc3Qgc2Vzc2lvbiA9IHNlc3Npb25zLmNyZWF0ZSgpO1xuICogY29uc3QgcmVzcG9uc2UgPSBzZXNzaW9ucy5jaGF0KHNlc3Npb24uaWQsICdXaGF0IGlzIEFJPycpO1xuICpcbiAqIC8vIFRyYWNrIGxlYXJuaW5nIHRyYWplY3RvcnlcbiAqIGNvbnN0IHRyYWplY3RvcnkgPSBuZXcgVHJhamVjdG9yeUJ1aWxkZXIoKVxuICogICAuc3RhcnRTdGVwKCdxdWVyeScsICdXaGF0IGlzIEFJPycpXG4gKiAgIC5lbmRTdGVwKHJlc3BvbnNlLnRleHQsIHJlc3BvbnNlLmNvbmZpZGVuY2UpXG4gKiAgIC5jb21wbGV0ZSgnc3VjY2VzcycpO1xuICpcbiAqIHNvbmEucmVjb3JkVHJhamVjdG9yeSh0cmFqZWN0b3J5KTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIEZlZGVyYXRlZCBMZWFybmluZ1xuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgRXBoZW1lcmFsQWdlbnQsIEZlZGVyYXRlZENvb3JkaW5hdG9yIH0gZnJvbSAnQHJ1dmVjdG9yL3J1dmxsbSc7XG4gKlxuICogLy8gQ2VudHJhbCBjb29yZGluYXRvclxuICogY29uc3QgY29vcmRpbmF0b3IgPSBuZXcgRmVkZXJhdGVkQ29vcmRpbmF0b3IoJ2Nvb3JkLTEnKTtcbiAqXG4gKiAvLyBFcGhlbWVyYWwgYWdlbnRzIHByb2Nlc3MgdGFza3MgYW5kIGV4cG9ydFxuICogY29uc3QgYWdlbnQgPSBuZXcgRXBoZW1lcmFsQWdlbnQoJ2FnZW50LTEnKTtcbiAqIGFnZW50LnByb2Nlc3NUYXNrKGVtYmVkZGluZywgMC45KTtcbiAqIGNvbnN0IGV4cG9ydERhdGEgPSBhZ2VudC5leHBvcnRTdGF0ZSgpO1xuICpcbiAqIC8vIEFnZ3JlZ2F0ZSBsZWFybmluZ1xuICogY29vcmRpbmF0b3IuYWdncmVnYXRlKGV4cG9ydERhdGEpO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGUgTG9SQSBBZGFwdGVyc1xuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgTG9yYUFkYXB0ZXIsIExvcmFNYW5hZ2VyIH0gZnJvbSAnQHJ1dmVjdG9yL3J1dmxsbSc7XG4gKlxuICogY29uc3QgYWRhcHRlciA9IG5ldyBMb3JhQWRhcHRlcih7IHJhbms6IDgsIGFscGhhOiAxNiB9KTtcbiAqIGNvbnN0IG91dHB1dCA9IGFkYXB0ZXIuZm9yd2FyZChpbnB1dCk7XG4gKiBgYGBcbiAqL1xuXG4vLyBDb3JlIHR5cGVzXG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcblxuLy8gTWFpbiBlbmdpbmVcbmV4cG9ydCAqIGZyb20gJy4vZW5naW5lJztcblxuLy8gU0lNRCBvcGVyYXRpb25zXG5leHBvcnQgKiBmcm9tICcuL3NpbWQnO1xuXG4vLyBTZXNzaW9uIG1hbmFnZW1lbnRcbmV4cG9ydCAqIGZyb20gJy4vc2Vzc2lvbic7XG5cbi8vIFN0cmVhbWluZyBzdXBwb3J0XG5leHBvcnQgKiBmcm9tICcuL3N0cmVhbWluZyc7XG5cbi8vIFNPTkEgbGVhcm5pbmcgc3lzdGVtXG5leHBvcnQgKiBmcm9tICcuL3NvbmEnO1xuXG4vLyBGZWRlcmF0ZWQgbGVhcm5pbmdcbmV4cG9ydCAqIGZyb20gJy4vZmVkZXJhdGVkJztcblxuLy8gTG9SQSBhZGFwdGVyc1xuZXhwb3J0ICogZnJvbSAnLi9sb3JhJztcblxuLy8gRXhwb3J0L3NlcmlhbGl6YXRpb25cbmV4cG9ydCAqIGZyb20gJy4vZXhwb3J0JztcblxuLy8gVHJhaW5pbmcgcGlwZWxpbmVcbmV4cG9ydCAqIGZyb20gJy4vdHJhaW5pbmcnO1xuXG4vLyBDb250cmFzdGl2ZSBmaW5lLXR1bmluZ1xuZXhwb3J0ICogZnJvbSAnLi9jb250cmFzdGl2ZSc7XG5cbi8vIE1vZGVsIGRvd25sb2FkZXIgYW5kIHJlZ2lzdHJ5XG5leHBvcnQgKiBmcm9tICcuL21vZGVscyc7XG5cbi8vIEJlbmNobWFya3MgZm9yIENsYXVkZSBDb2RlIHVzZSBjYXNlc1xuZXhwb3J0ICogZnJvbSAnLi9iZW5jaG1hcmtzJztcblxuLy8gRXh0ZXJuYWwgSW50ZWxsaWdlbmNlIFByb3ZpZGVycyAoQURSLTA0MylcbmV4cG9ydCAqIGZyb20gJy4vaW50ZWxsaWdlbmNlJztcblxuLy8gTmF0aXZlIGJpbmRpbmdzIHV0aWxpdGllc1xuZXhwb3J0IHsgdmVyc2lvbiwgaGFzU2ltZFN1cHBvcnQgfSBmcm9tICcuL25hdGl2ZSc7XG5cbi8vIERlZmF1bHQgZXhwb3J0XG5leHBvcnQgeyBSdXZMTE0gYXMgZGVmYXVsdCB9IGZyb20gJy4vZW5naW5lJztcbiJdfQ==
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External Intelligence Providers for SONA Learning (ADR-043)
|
|
3
|
+
*
|
|
4
|
+
* TypeScript bindings for the IntelligenceProvider trait, enabling
|
|
5
|
+
* external systems to feed quality signals into RuvLLM's learning loops.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { IntelligenceLoader, FileSignalProvider, QualitySignal } from '@ruvector/ruvllm';
|
|
10
|
+
*
|
|
11
|
+
* const loader = new IntelligenceLoader();
|
|
12
|
+
* loader.registerProvider(new FileSignalProvider('./signals.json'));
|
|
13
|
+
*
|
|
14
|
+
* const { signals, errors } = loader.loadAllSignals();
|
|
15
|
+
* console.log(`Loaded ${signals.length} signals`);
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* A quality signal from an external system.
|
|
20
|
+
*
|
|
21
|
+
* Represents one completed task with quality assessment data
|
|
22
|
+
* that can feed into SONA trajectories, the embedding classifier,
|
|
23
|
+
* and model router calibration.
|
|
24
|
+
*/
|
|
25
|
+
export interface QualitySignal {
|
|
26
|
+
/** Unique identifier for this signal */
|
|
27
|
+
id: string;
|
|
28
|
+
/** Human-readable task description (used for embedding generation) */
|
|
29
|
+
taskDescription: string;
|
|
30
|
+
/** Execution outcome */
|
|
31
|
+
outcome: 'success' | 'partial_success' | 'failure';
|
|
32
|
+
/** Composite quality score (0.0 - 1.0) */
|
|
33
|
+
qualityScore: number;
|
|
34
|
+
/** Optional human verdict */
|
|
35
|
+
humanVerdict?: 'approved' | 'rejected';
|
|
36
|
+
/** Optional structured quality factors for detailed analysis */
|
|
37
|
+
qualityFactors?: QualityFactors;
|
|
38
|
+
/** ISO 8601 timestamp of task completion */
|
|
39
|
+
completedAt: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Granular quality factor breakdown.
|
|
43
|
+
*
|
|
44
|
+
* Not all providers will have all factors. Undefined fields mean
|
|
45
|
+
* "not assessed" (distinct from 0.0, which means "assessed as zero").
|
|
46
|
+
*/
|
|
47
|
+
export interface QualityFactors {
|
|
48
|
+
acceptanceCriteriaMet?: number;
|
|
49
|
+
testsPassing?: number;
|
|
50
|
+
noRegressions?: number;
|
|
51
|
+
lintClean?: number;
|
|
52
|
+
typeCheckClean?: number;
|
|
53
|
+
followsPatterns?: number;
|
|
54
|
+
contextRelevance?: number;
|
|
55
|
+
reasoningCoherence?: number;
|
|
56
|
+
executionEfficiency?: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Quality weight overrides from a provider.
|
|
60
|
+
*
|
|
61
|
+
* Weights should sum to approximately 1.0.
|
|
62
|
+
*/
|
|
63
|
+
export interface ProviderQualityWeights {
|
|
64
|
+
taskCompletion: number;
|
|
65
|
+
codeQuality: number;
|
|
66
|
+
process: number;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Error from a single provider during batch loading.
|
|
70
|
+
*/
|
|
71
|
+
export interface ProviderError {
|
|
72
|
+
providerName: string;
|
|
73
|
+
message: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Result from a single provider during grouped loading.
|
|
77
|
+
*/
|
|
78
|
+
export interface ProviderResult {
|
|
79
|
+
providerName: string;
|
|
80
|
+
signals: QualitySignal[];
|
|
81
|
+
weights?: ProviderQualityWeights;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Interface for external systems that supply quality signals to RuvLLM.
|
|
85
|
+
*
|
|
86
|
+
* Implement this interface and register with IntelligenceLoader.
|
|
87
|
+
*/
|
|
88
|
+
export interface IntelligenceProvider {
|
|
89
|
+
/** Human-readable name for this provider */
|
|
90
|
+
name(): string;
|
|
91
|
+
/** Load quality signals from this provider's data source */
|
|
92
|
+
loadSignals(): QualitySignal[];
|
|
93
|
+
/** Optional quality weight overrides */
|
|
94
|
+
qualityWeights?(): ProviderQualityWeights | undefined;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Built-in file-based intelligence provider.
|
|
98
|
+
*
|
|
99
|
+
* Reads quality signals from a JSON file. This is the default provider
|
|
100
|
+
* for non-Rust integrations that write signal files.
|
|
101
|
+
*/
|
|
102
|
+
export declare class FileSignalProvider implements IntelligenceProvider {
|
|
103
|
+
private readonly filePath;
|
|
104
|
+
constructor(filePath: string);
|
|
105
|
+
name(): string;
|
|
106
|
+
loadSignals(): QualitySignal[];
|
|
107
|
+
qualityWeights(): ProviderQualityWeights | undefined;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Aggregates quality signals from multiple registered providers.
|
|
111
|
+
*
|
|
112
|
+
* If no providers are registered, loadAllSignals returns empty arrays
|
|
113
|
+
* with zero overhead.
|
|
114
|
+
*/
|
|
115
|
+
export declare class IntelligenceLoader {
|
|
116
|
+
private providers;
|
|
117
|
+
/** Register an external intelligence provider */
|
|
118
|
+
registerProvider(provider: IntelligenceProvider): void;
|
|
119
|
+
/** Returns the number of registered providers */
|
|
120
|
+
get providerCount(): number;
|
|
121
|
+
/** Returns the names of all registered providers */
|
|
122
|
+
get providerNames(): string[];
|
|
123
|
+
/**
|
|
124
|
+
* Load signals from all registered providers.
|
|
125
|
+
*
|
|
126
|
+
* Non-fatal: if a provider fails, its error is captured but
|
|
127
|
+
* other providers continue loading.
|
|
128
|
+
*/
|
|
129
|
+
loadAllSignals(): {
|
|
130
|
+
signals: QualitySignal[];
|
|
131
|
+
errors: ProviderError[];
|
|
132
|
+
};
|
|
133
|
+
/** Load signals grouped by provider with weight overrides */
|
|
134
|
+
loadGrouped(): ProviderResult[];
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=intelligence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intelligence.d.ts","sourceRoot":"","sources":["../../src/intelligence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,sEAAsE;IACtE,eAAe,EAAE,MAAM,CAAC;IACxB,wBAAwB;IACxB,OAAO,EAAE,SAAS,GAAG,iBAAiB,GAAG,SAAS,CAAC;IACnD,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,YAAY,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACvC,gEAAgE;IAChE,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,4CAA4C;IAC5C,IAAI,IAAI,MAAM,CAAC;IACf,4DAA4D;IAC5D,WAAW,IAAI,aAAa,EAAE,CAAC;IAC/B,wCAAwC;IACxC,cAAc,CAAC,IAAI,sBAAsB,GAAG,SAAS,CAAC;CACvD;AAED;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,oBAAoB;IAC7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,QAAQ,EAAE,MAAM;IAI5B,IAAI,IAAI,MAAM;IAId,WAAW,IAAI,aAAa,EAAE;IA8B9B,cAAc,IAAI,sBAAsB,GAAG,SAAS;CAiBrD;AAgBD;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,SAAS,CAA8B;IAE/C,iDAAiD;IACjD,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAItD,iDAAiD;IACjD,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,oDAAoD;IACpD,IAAI,aAAa,IAAI,MAAM,EAAE,CAE5B;IAED;;;;;OAKG;IACH,cAAc,IAAI;QAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QAAC,MAAM,EAAE,aAAa,EAAE,CAAA;KAAE;IAmBvE,6DAA6D;IAC7D,WAAW,IAAI,cAAc,EAAE;CAehC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* External Intelligence Providers for SONA Learning (ADR-043)
|
|
4
|
+
*
|
|
5
|
+
* TypeScript bindings for the IntelligenceProvider trait, enabling
|
|
6
|
+
* external systems to feed quality signals into RuvLLM's learning loops.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { IntelligenceLoader, FileSignalProvider, QualitySignal } from '@ruvector/ruvllm';
|
|
11
|
+
*
|
|
12
|
+
* const loader = new IntelligenceLoader();
|
|
13
|
+
* loader.registerProvider(new FileSignalProvider('./signals.json'));
|
|
14
|
+
*
|
|
15
|
+
* const { signals, errors } = loader.loadAllSignals();
|
|
16
|
+
* console.log(`Loaded ${signals.length} signals`);
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.IntelligenceLoader = exports.FileSignalProvider = void 0;
|
|
21
|
+
/**
|
|
22
|
+
* Built-in file-based intelligence provider.
|
|
23
|
+
*
|
|
24
|
+
* Reads quality signals from a JSON file. This is the default provider
|
|
25
|
+
* for non-Rust integrations that write signal files.
|
|
26
|
+
*/
|
|
27
|
+
class FileSignalProvider {
|
|
28
|
+
constructor(filePath) {
|
|
29
|
+
this.filePath = filePath;
|
|
30
|
+
}
|
|
31
|
+
name() {
|
|
32
|
+
return 'file-signals';
|
|
33
|
+
}
|
|
34
|
+
loadSignals() {
|
|
35
|
+
try {
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
37
|
+
const fs = require('fs');
|
|
38
|
+
if (!fs.existsSync(this.filePath)) {
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
const raw = fs.readFileSync(this.filePath, 'utf-8');
|
|
42
|
+
const data = JSON.parse(raw);
|
|
43
|
+
if (!Array.isArray(data)) {
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
return data.map((item) => ({
|
|
47
|
+
id: String(item.id ?? ''),
|
|
48
|
+
taskDescription: String(item.task_description ?? item.taskDescription ?? ''),
|
|
49
|
+
outcome: String(item.outcome ?? 'failure'),
|
|
50
|
+
qualityScore: Number(item.quality_score ?? item.qualityScore ?? 0),
|
|
51
|
+
humanVerdict: item.human_verdict ?? item.humanVerdict
|
|
52
|
+
? String(item.human_verdict ?? item.humanVerdict)
|
|
53
|
+
: undefined,
|
|
54
|
+
qualityFactors: (item.quality_factors || item.qualityFactors)
|
|
55
|
+
? mapQualityFactors((item.quality_factors ?? item.qualityFactors))
|
|
56
|
+
: undefined,
|
|
57
|
+
completedAt: String(item.completed_at ?? item.completedAt ?? new Date().toISOString()),
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return [];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
qualityWeights() {
|
|
65
|
+
try {
|
|
66
|
+
const fs = require('fs');
|
|
67
|
+
const path = require('path');
|
|
68
|
+
const weightsPath = path.join(path.dirname(this.filePath), 'quality-weights.json');
|
|
69
|
+
if (!fs.existsSync(weightsPath))
|
|
70
|
+
return undefined;
|
|
71
|
+
const raw = fs.readFileSync(weightsPath, 'utf-8');
|
|
72
|
+
const data = JSON.parse(raw);
|
|
73
|
+
return {
|
|
74
|
+
taskCompletion: Number(data.task_completion ?? data.taskCompletion ?? 0.5),
|
|
75
|
+
codeQuality: Number(data.code_quality ?? data.codeQuality ?? 0.3),
|
|
76
|
+
process: Number(data.process ?? 0.2),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.FileSignalProvider = FileSignalProvider;
|
|
85
|
+
function mapQualityFactors(raw) {
|
|
86
|
+
return {
|
|
87
|
+
acceptanceCriteriaMet: raw.acceptance_criteria_met,
|
|
88
|
+
testsPassing: raw.tests_passing,
|
|
89
|
+
noRegressions: raw.no_regressions,
|
|
90
|
+
lintClean: raw.lint_clean,
|
|
91
|
+
typeCheckClean: raw.type_check_clean,
|
|
92
|
+
followsPatterns: raw.follows_patterns,
|
|
93
|
+
contextRelevance: raw.context_relevance,
|
|
94
|
+
reasoningCoherence: raw.reasoning_coherence,
|
|
95
|
+
executionEfficiency: raw.execution_efficiency,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Aggregates quality signals from multiple registered providers.
|
|
100
|
+
*
|
|
101
|
+
* If no providers are registered, loadAllSignals returns empty arrays
|
|
102
|
+
* with zero overhead.
|
|
103
|
+
*/
|
|
104
|
+
class IntelligenceLoader {
|
|
105
|
+
constructor() {
|
|
106
|
+
this.providers = [];
|
|
107
|
+
}
|
|
108
|
+
/** Register an external intelligence provider */
|
|
109
|
+
registerProvider(provider) {
|
|
110
|
+
this.providers.push(provider);
|
|
111
|
+
}
|
|
112
|
+
/** Returns the number of registered providers */
|
|
113
|
+
get providerCount() {
|
|
114
|
+
return this.providers.length;
|
|
115
|
+
}
|
|
116
|
+
/** Returns the names of all registered providers */
|
|
117
|
+
get providerNames() {
|
|
118
|
+
return this.providers.map(p => p.name());
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Load signals from all registered providers.
|
|
122
|
+
*
|
|
123
|
+
* Non-fatal: if a provider fails, its error is captured but
|
|
124
|
+
* other providers continue loading.
|
|
125
|
+
*/
|
|
126
|
+
loadAllSignals() {
|
|
127
|
+
const signals = [];
|
|
128
|
+
const errors = [];
|
|
129
|
+
for (const provider of this.providers) {
|
|
130
|
+
try {
|
|
131
|
+
const providerSignals = provider.loadSignals();
|
|
132
|
+
signals.push(...providerSignals);
|
|
133
|
+
}
|
|
134
|
+
catch (e) {
|
|
135
|
+
errors.push({
|
|
136
|
+
providerName: provider.name(),
|
|
137
|
+
message: e instanceof Error ? e.message : String(e),
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return { signals, errors };
|
|
142
|
+
}
|
|
143
|
+
/** Load signals grouped by provider with weight overrides */
|
|
144
|
+
loadGrouped() {
|
|
145
|
+
return this.providers.map(provider => {
|
|
146
|
+
let providerSignals = [];
|
|
147
|
+
try {
|
|
148
|
+
providerSignals = provider.loadSignals();
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
// Non-fatal
|
|
152
|
+
}
|
|
153
|
+
return {
|
|
154
|
+
providerName: provider.name(),
|
|
155
|
+
signals: providerSignals,
|
|
156
|
+
weights: provider.qualityWeights?.(),
|
|
157
|
+
};
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
exports.IntelligenceLoader = IntelligenceLoader;
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWxsaWdlbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludGVsbGlnZW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7OztBQXNGSDs7Ozs7R0FLRztBQUNILE1BQWEsa0JBQWtCO0lBRzdCLFlBQVksUUFBZ0I7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUk7UUFDRixPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQztZQUNILDhEQUE4RDtZQUM5RCxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztZQUNELE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNwRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQTZCLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2xELEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQ3pCLGVBQWUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDO2dCQUM1RSxPQUFPLEVBQUUsTUFB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QW9CLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUM7Z0JBQ0gsZUFBZSxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMzQyxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLFlBQVk7WUFDZCxDQUFDO1lBQ0QsT0FBTztnQkFDTCxZQUFZLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRTtnQkFDN0IsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLE9BQU8sRUFBRSxRQUFRLENBQUMsY0FBYyxFQUFFLEVBQUU7YUFDckMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBM0RELGdEQTJEQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRXh0ZXJuYWwgSW50ZWxsaWdlbmNlIFByb3ZpZGVycyBmb3IgU09OQSBMZWFybmluZyAoQURSLTA0MylcbiAqXG4gKiBUeXBlU2NyaXB0IGJpbmRpbmdzIGZvciB0aGUgSW50ZWxsaWdlbmNlUHJvdmlkZXIgdHJhaXQsIGVuYWJsaW5nXG4gKiBleHRlcm5hbCBzeXN0ZW1zIHRvIGZlZWQgcXVhbGl0eSBzaWduYWxzIGludG8gUnV2TExNJ3MgbGVhcm5pbmcgbG9vcHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IEludGVsbGlnZW5jZUxvYWRlciwgRmlsZVNpZ25hbFByb3ZpZGVyLCBRdWFsaXR5U2lnbmFsIH0gZnJvbSAnQHJ1dmVjdG9yL3J1dmxsbSc7XG4gKlxuICogY29uc3QgbG9hZGVyID0gbmV3IEludGVsbGlnZW5jZUxvYWRlcigpO1xuICogbG9hZGVyLnJlZ2lzdGVyUHJvdmlkZXIobmV3IEZpbGVTaWduYWxQcm92aWRlcignLi9zaWduYWxzLmpzb24nKSk7XG4gKlxuICogY29uc3QgeyBzaWduYWxzLCBlcnJvcnMgfSA9IGxvYWRlci5sb2FkQWxsU2lnbmFscygpO1xuICogY29uc29sZS5sb2coYExvYWRlZCAke3NpZ25hbHMubGVuZ3RofSBzaWduYWxzYCk7XG4gKiBgYGBcbiAqL1xuXG4vKipcbiAqIEEgcXVhbGl0eSBzaWduYWwgZnJvbSBhbiBleHRlcm5hbCBzeXN0ZW0uXG4gKlxuICogUmVwcmVzZW50cyBvbmUgY29tcGxldGVkIHRhc2sgd2l0aCBxdWFsaXR5IGFzc2Vzc21lbnQgZGF0YVxuICogdGhhdCBjYW4gZmVlZCBpbnRvIFNPTkEgdHJhamVjdG9yaWVzLCB0aGUgZW1iZWRkaW5nIGNsYXNzaWZpZXIsXG4gKiBhbmQgbW9kZWwgcm91dGVyIGNhbGlicmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1YWxpdHlTaWduYWwge1xuICAvKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgc2lnbmFsICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSB0YXNrIGRlc2NyaXB0aW9uICh1c2VkIGZvciBlbWJlZGRpbmcgZ2VuZXJhdGlvbikgKi9cbiAgdGFza0Rlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKiBFeGVjdXRpb24gb3V0Y29tZSAqL1xuICBvdXRjb21lOiAnc3VjY2VzcycgfCAncGFydGlhbF9zdWNjZXNzJyB8ICdmYWlsdXJlJztcbiAgLyoqIENvbXBvc2l0ZSBxdWFsaXR5IHNjb3JlICgwLjAgLSAxLjApICovXG4gIHF1YWxpdHlTY29yZTogbnVtYmVyO1xuICAvKiogT3B0aW9uYWwgaHVtYW4gdmVyZGljdCAqL1xuICBodW1hblZlcmRpY3Q/OiAnYXBwcm92ZWQnIHwgJ3JlamVjdGVkJztcbiAgLyoqIE9wdGlvbmFsIHN0cnVjdHVyZWQgcXVhbGl0eSBmYWN0b3JzIGZvciBkZXRhaWxlZCBhbmFseXNpcyAqL1xuICBxdWFsaXR5RmFjdG9ycz86IFF1YWxpdHlGYWN0b3JzO1xuICAvKiogSVNPIDg2MDEgdGltZXN0YW1wIG9mIHRhc2sgY29tcGxldGlvbiAqL1xuICBjb21wbGV0ZWRBdDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEdyYW51bGFyIHF1YWxpdHkgZmFjdG9yIGJyZWFrZG93bi5cbiAqXG4gKiBOb3QgYWxsIHByb3ZpZGVycyB3aWxsIGhhdmUgYWxsIGZhY3RvcnMuIFVuZGVmaW5lZCBmaWVsZHMgbWVhblxuICogXCJub3QgYXNzZXNzZWRcIiAoZGlzdGluY3QgZnJvbSAwLjAsIHdoaWNoIG1lYW5zIFwiYXNzZXNzZWQgYXMgemVyb1wiKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWFsaXR5RmFjdG9ycyB7XG4gIGFjY2VwdGFuY2VDcml0ZXJpYU1ldD86IG51bWJlcjtcbiAgdGVzdHNQYXNzaW5nPzogbnVtYmVyO1xuICBub1JlZ3Jlc3Npb25zPzogbnVtYmVyO1xuICBsaW50Q2xlYW4/OiBudW1iZXI7XG4gIHR5cGVDaGVja0NsZWFuPzogbnVtYmVyO1xuICBmb2xsb3dzUGF0dGVybnM/OiBudW1iZXI7XG4gIGNvbnRleHRSZWxldmFuY2U/OiBudW1iZXI7XG4gIHJlYXNvbmluZ0NvaGVyZW5jZT86IG51bWJlcjtcbiAgZXhlY3V0aW9uRWZmaWNpZW5jeT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBRdWFsaXR5IHdlaWdodCBvdmVycmlkZXMgZnJvbSBhIHByb3ZpZGVyLlxuICpcbiAqIFdlaWdodHMgc2hvdWxkIHN1bSB0byBhcHByb3hpbWF0ZWx5IDEuMC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm92aWRlclF1YWxpdHlXZWlnaHRzIHtcbiAgdGFza0NvbXBsZXRpb246IG51bWJlcjtcbiAgY29kZVF1YWxpdHk6IG51bWJlcjtcbiAgcHJvY2VzczogbnVtYmVyO1xufVxuXG4vKipcbiAqIEVycm9yIGZyb20gYSBzaW5nbGUgcHJvdmlkZXIgZHVyaW5nIGJhdGNoIGxvYWRpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZXJFcnJvciB7XG4gIHByb3ZpZGVyTmFtZTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzdWx0IGZyb20gYSBzaW5nbGUgcHJvdmlkZXIgZHVyaW5nIGdyb3VwZWQgbG9hZGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm92aWRlclJlc3VsdCB7XG4gIHByb3ZpZGVyTmFtZTogc3RyaW5nO1xuICBzaWduYWxzOiBRdWFsaXR5U2lnbmFsW107XG4gIHdlaWdodHM/OiBQcm92aWRlclF1YWxpdHlXZWlnaHRzO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgZXh0ZXJuYWwgc3lzdGVtcyB0aGF0IHN1cHBseSBxdWFsaXR5IHNpZ25hbHMgdG8gUnV2TExNLlxuICpcbiAqIEltcGxlbWVudCB0aGlzIGludGVyZmFjZSBhbmQgcmVnaXN0ZXIgd2l0aCBJbnRlbGxpZ2VuY2VMb2FkZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZWxsaWdlbmNlUHJvdmlkZXIge1xuICAvKiogSHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhpcyBwcm92aWRlciAqL1xuICBuYW1lKCk6IHN0cmluZztcbiAgLyoqIExvYWQgcXVhbGl0eSBzaWduYWxzIGZyb20gdGhpcyBwcm92aWRlcidzIGRhdGEgc291cmNlICovXG4gIGxvYWRTaWduYWxzKCk6IFF1YWxpdHlTaWduYWxbXTtcbiAgLyoqIE9wdGlvbmFsIHF1YWxpdHkgd2VpZ2h0IG92ZXJyaWRlcyAqL1xuICBxdWFsaXR5V2VpZ2h0cz8oKTogUHJvdmlkZXJRdWFsaXR5V2VpZ2h0cyB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBCdWlsdC1pbiBmaWxlLWJhc2VkIGludGVsbGlnZW5jZSBwcm92aWRlci5cbiAqXG4gKiBSZWFkcyBxdWFsaXR5IHNpZ25hbHMgZnJvbSBhIEpTT04gZmlsZS4gVGhpcyBpcyB0aGUgZGVmYXVsdCBwcm92aWRlclxuICogZm9yIG5vbi1SdXN0IGludGVncmF0aW9ucyB0aGF0IHdyaXRlIHNpZ25hbCBmaWxlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEZpbGVTaWduYWxQcm92aWRlciBpbXBsZW1lbnRzIEludGVsbGlnZW5jZVByb3ZpZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBmaWxlUGF0aDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZpbGVQYXRoID0gZmlsZVBhdGg7XG4gIH1cblxuICBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdmaWxlLXNpZ25hbHMnO1xuICB9XG5cbiAgbG9hZFNpZ25hbHMoKTogUXVhbGl0eVNpZ25hbFtdIHtcbiAgICB0cnkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXNcbiAgICAgIGNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLmZpbGVQYXRoKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBjb25zdCByYXcgPSBmcy5yZWFkRmlsZVN5bmModGhpcy5maWxlUGF0aCwgJ3V0Zi04Jyk7XG4gICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShyYXcpO1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkYXRhLm1hcCgoaXRlbTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+ICh7XG4gICAgICAgIGlkOiBTdHJpbmcoaXRlbS5pZCA/PyAnJyksXG4gICAgICAgIHRhc2tEZXNjcmlwdGlvbjogU3RyaW5nKGl0ZW0udGFza19kZXNjcmlwdGlvbiA/PyBpdGVtLnRhc2tEZXNjcmlwdGlvbiA/PyAnJyksXG4gICAgICAgIG91dGNvbWU6IFN0cmluZyhpdGVtLm91dGNvbWUgPz8gJ2ZhaWx1cmUnKSBhcyBRdWFsaXR5U2lnbmFsWydvdXRjb21lJ10sXG4gICAgICAgIHF1YWxpdHlTY29yZTogTnVtYmVyKGl0ZW0ucXVhbGl0eV9zY29yZSA/PyBpdGVtLnF1YWxpdHlTY29yZSA/PyAwKSxcbiAgICAgICAgaHVtYW5WZXJkaWN0OiBpdGVtLmh1bWFuX3ZlcmRpY3QgPz8gaXRlbS5odW1hblZlcmRpY3RcbiAgICAgICAgICA/IFN0cmluZyhpdGVtLmh1bWFuX3ZlcmRpY3QgPz8gaXRlbS5odW1hblZlcmRpY3QpIGFzIFF1YWxpdHlTaWduYWxbJ2h1bWFuVmVyZGljdCddXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIHF1YWxpdHlGYWN0b3JzOiAoaXRlbS5xdWFsaXR5X2ZhY3RvcnMgfHwgaXRlbS5xdWFsaXR5RmFjdG9ycylcbiAgICAgICAgICA/IG1hcFF1YWxpdHlGYWN0b3JzKChpdGVtLnF1YWxpdHlfZmFjdG9ycyA/PyBpdGVtLnF1YWxpdHlGYWN0b3JzKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgY29tcGxldGVkQXQ6IFN0cmluZyhpdGVtLmNvbXBsZXRlZF9hdCA/PyBpdGVtLmNvbXBsZXRlZEF0ID8/IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSksXG4gICAgICB9KSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgcXVhbGl0eVdlaWdodHMoKTogUHJvdmlkZXJRdWFsaXR5V2VpZ2h0cyB8IHVuZGVmaW5lZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcbiAgICAgIGNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG4gICAgICBjb25zdCB3ZWlnaHRzUGF0aCA9IHBhdGguam9pbihwYXRoLmRpcm5hbWUodGhpcy5maWxlUGF0aCksICdxdWFsaXR5LXdlaWdodHMuanNvbicpO1xuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHdlaWdodHNQYXRoKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IHJhdyA9IGZzLnJlYWRGaWxlU3luYyh3ZWlnaHRzUGF0aCwgJ3V0Zi04Jyk7XG4gICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShyYXcpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGFza0NvbXBsZXRpb246IE51bWJlcihkYXRhLnRhc2tfY29tcGxldGlvbiA/PyBkYXRhLnRhc2tDb21wbGV0aW9uID8/IDAuNSksXG4gICAgICAgIGNvZGVRdWFsaXR5OiBOdW1iZXIoZGF0YS5jb2RlX3F1YWxpdHkgPz8gZGF0YS5jb2RlUXVhbGl0eSA/PyAwLjMpLFxuICAgICAgICBwcm9jZXNzOiBOdW1iZXIoZGF0YS5wcm9jZXNzID8/IDAuMiksXG4gICAgICB9O1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFwUXVhbGl0eUZhY3RvcnMocmF3OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFF1YWxpdHlGYWN0b3JzIHtcbiAgcmV0dXJuIHtcbiAgICBhY2NlcHRhbmNlQ3JpdGVyaWFNZXQ6IHJhdy5hY2NlcHRhbmNlX2NyaXRlcmlhX21ldCBhcyBudW1iZXIgfCB1bmRlZmluZWQsXG4gICAgdGVzdHNQYXNzaW5nOiByYXcudGVzdHNfcGFzc2luZyBhcyBudW1iZXIgfCB1bmRlZmluZWQsXG4gICAgbm9SZWdyZXNzaW9uczogcmF3Lm5vX3JlZ3Jlc3Npb25zIGFzIG51bWJlciB8IHVuZGVmaW5lZCxcbiAgICBsaW50Q2xlYW46IHJhdy5saW50X2NsZWFuIGFzIG51bWJlciB8IHVuZGVmaW5lZCxcbiAgICB0eXBlQ2hlY2tDbGVhbjogcmF3LnR5cGVfY2hlY2tfY2xlYW4gYXMgbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgIGZvbGxvd3NQYXR0ZXJuczogcmF3LmZvbGxvd3NfcGF0dGVybnMgYXMgbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgIGNvbnRleHRSZWxldmFuY2U6IHJhdy5jb250ZXh0X3JlbGV2YW5jZSBhcyBudW1iZXIgfCB1bmRlZmluZWQsXG4gICAgcmVhc29uaW5nQ29oZXJlbmNlOiByYXcucmVhc29uaW5nX2NvaGVyZW5jZSBhcyBudW1iZXIgfCB1bmRlZmluZWQsXG4gICAgZXhlY3V0aW9uRWZmaWNpZW5jeTogcmF3LmV4ZWN1dGlvbl9lZmZpY2llbmN5IGFzIG51bWJlciB8IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBZ2dyZWdhdGVzIHF1YWxpdHkgc2lnbmFscyBmcm9tIG11bHRpcGxlIHJlZ2lzdGVyZWQgcHJvdmlkZXJzLlxuICpcbiAqIElmIG5vIHByb3ZpZGVycyBhcmUgcmVnaXN0ZXJlZCwgbG9hZEFsbFNpZ25hbHMgcmV0dXJucyBlbXB0eSBhcnJheXNcbiAqIHdpdGggemVybyBvdmVyaGVhZC5cbiAqL1xuZXhwb3J0IGNsYXNzIEludGVsbGlnZW5jZUxvYWRlciB7XG4gIHByaXZhdGUgcHJvdmlkZXJzOiBJbnRlbGxpZ2VuY2VQcm92aWRlcltdID0gW107XG5cbiAgLyoqIFJlZ2lzdGVyIGFuIGV4dGVybmFsIGludGVsbGlnZW5jZSBwcm92aWRlciAqL1xuICByZWdpc3RlclByb3ZpZGVyKHByb3ZpZGVyOiBJbnRlbGxpZ2VuY2VQcm92aWRlcik6IHZvaWQge1xuICAgIHRoaXMucHJvdmlkZXJzLnB1c2gocHJvdmlkZXIpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIG51bWJlciBvZiByZWdpc3RlcmVkIHByb3ZpZGVycyAqL1xuICBnZXQgcHJvdmlkZXJDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnByb3ZpZGVycy5sZW5ndGg7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgbmFtZXMgb2YgYWxsIHJlZ2lzdGVyZWQgcHJvdmlkZXJzICovXG4gIGdldCBwcm92aWRlck5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5wcm92aWRlcnMubWFwKHAgPT4gcC5uYW1lKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgc2lnbmFscyBmcm9tIGFsbCByZWdpc3RlcmVkIHByb3ZpZGVycy5cbiAgICpcbiAgICogTm9uLWZhdGFsOiBpZiBhIHByb3ZpZGVyIGZhaWxzLCBpdHMgZXJyb3IgaXMgY2FwdHVyZWQgYnV0XG4gICAqIG90aGVyIHByb3ZpZGVycyBjb250aW51ZSBsb2FkaW5nLlxuICAgKi9cbiAgbG9hZEFsbFNpZ25hbHMoKTogeyBzaWduYWxzOiBRdWFsaXR5U2lnbmFsW107IGVycm9yczogUHJvdmlkZXJFcnJvcltdIH0ge1xuICAgIGNvbnN0IHNpZ25hbHM6IFF1YWxpdHlTaWduYWxbXSA9IFtdO1xuICAgIGNvbnN0IGVycm9yczogUHJvdmlkZXJFcnJvcltdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIHRoaXMucHJvdmlkZXJzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwcm92aWRlclNpZ25hbHMgPSBwcm92aWRlci5sb2FkU2lnbmFscygpO1xuICAgICAgICBzaWduYWxzLnB1c2goLi4ucHJvdmlkZXJTaWduYWxzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goe1xuICAgICAgICAgIHByb3ZpZGVyTmFtZTogcHJvdmlkZXIubmFtZSgpLFxuICAgICAgICAgIG1lc3NhZ2U6IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFN0cmluZyhlKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgc2lnbmFscywgZXJyb3JzIH07XG4gIH1cblxuICAvKiogTG9hZCBzaWduYWxzIGdyb3VwZWQgYnkgcHJvdmlkZXIgd2l0aCB3ZWlnaHQgb3ZlcnJpZGVzICovXG4gIGxvYWRHcm91cGVkKCk6IFByb3ZpZGVyUmVzdWx0W10ge1xuICAgIHJldHVybiB0aGlzLnByb3ZpZGVycy5tYXAocHJvdmlkZXIgPT4ge1xuICAgICAgbGV0IHByb3ZpZGVyU2lnbmFsczogUXVhbGl0eVNpZ25hbFtdID0gW107XG4gICAgICB0cnkge1xuICAgICAgICBwcm92aWRlclNpZ25hbHMgPSBwcm92aWRlci5sb2FkU2lnbmFscygpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIE5vbi1mYXRhbFxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcHJvdmlkZXJOYW1lOiBwcm92aWRlci5uYW1lKCksXG4gICAgICAgIHNpZ25hbHM6IHByb3ZpZGVyU2lnbmFscyxcbiAgICAgICAgd2VpZ2h0czogcHJvdmlkZXIucXVhbGl0eVdlaWdodHM/LigpLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -62,7 +62,7 @@ export * from './training';
|
|
|
62
62
|
export * from './contrastive';
|
|
63
63
|
export * from './models';
|
|
64
64
|
export * from './benchmarks';
|
|
65
|
-
export * from './
|
|
65
|
+
export * from './intelligence';
|
|
66
66
|
export { version, hasSimdSupport } from './native';
|
|
67
67
|
export { RuvLLM as default } from './engine';
|
|
68
68
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAGH,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC;AAGzB,cAAc,QAAQ,CAAC;AAGvB,cAAc,WAAW,CAAC;AAG1B,cAAc,aAAa,CAAC;AAG5B,cAAc,QAAQ,CAAC;AAGvB,cAAc,aAAa,CAAC;AAG5B,cAAc,QAAQ,CAAC;AAGvB,cAAc,UAAU,CAAC;AAGzB,cAAc,YAAY,CAAC;AAG3B,cAAc,eAAe,CAAC;AAG9B,cAAc,UAAU,CAAC;AAGzB,cAAc,cAAc,CAAC;AAG7B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAGH,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC;AAGzB,cAAc,QAAQ,CAAC;AAGvB,cAAc,WAAW,CAAC;AAG1B,cAAc,aAAa,CAAC;AAG5B,cAAc,QAAQ,CAAC;AAGvB,cAAc,aAAa,CAAC;AAG5B,cAAc,QAAQ,CAAC;AAGvB,cAAc,UAAU,CAAC;AAGzB,cAAc,YAAY,CAAC;AAG3B,cAAc,eAAe,CAAC;AAG9B,cAAc,UAAU,CAAC;AAGzB,cAAc,cAAc,CAAC;AAG7B,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAGnD,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -75,10 +75,10 @@ export * from './contrastive';
|
|
|
75
75
|
export * from './models';
|
|
76
76
|
// Benchmarks for Claude Code use cases
|
|
77
77
|
export * from './benchmarks';
|
|
78
|
-
//
|
|
79
|
-
export * from './
|
|
78
|
+
// External Intelligence Providers (ADR-043)
|
|
79
|
+
export * from './intelligence';
|
|
80
80
|
// Native bindings utilities
|
|
81
81
|
export { version, hasSimdSupport } from './native';
|
|
82
82
|
// Default export
|
|
83
83
|
export { RuvLLM as default } from './engine';
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0RHO0FBRUgsYUFBYTtBQUNiLGNBQWMsU0FBUyxDQUFDO0FBRXhCLGNBQWM7QUFDZCxjQUFjLFVBQVUsQ0FBQztBQUV6QixrQkFBa0I7QUFDbEIsY0FBYyxRQUFRLENBQUM7QUFFdkIscUJBQXFCO0FBQ3JCLGNBQWMsV0FBVyxDQUFDO0FBRTFCLG9CQUFvQjtBQUNwQixjQUFjLGFBQWEsQ0FBQztBQUU1Qix1QkFBdUI7QUFDdkIsY0FBYyxRQUFRLENBQUM7QUFFdkIscUJBQXFCO0FBQ3JCLGNBQWMsYUFBYSxDQUFDO0FBRTVCLGdCQUFnQjtBQUNoQixjQUFjLFFBQVEsQ0FBQztBQUV2Qix1QkFBdUI7QUFDdkIsY0FBYyxVQUFVLENBQUM7QUFFekIsb0JBQW9CO0FBQ3BCLGNBQWMsWUFBWSxDQUFDO0FBRTNCLDBCQUEwQjtBQUMxQixjQUFjLGVBQWUsQ0FBQztBQUU5QixnQ0FBZ0M7QUFDaEMsY0FBYyxVQUFVLENBQUM7QUFFekIsdUNBQXVDO0FBQ3ZDLGNBQWMsY0FBYyxDQUFDO0FBRTdCLDRDQUE0QztBQUM1QyxjQUFjLGdCQUFnQixDQUFDO0FBRS9CLDRCQUE0QjtBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVuRCxpQkFBaUI7QUFDakIsT0FBTyxFQUFFLE1BQU0sSUFBSSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBydXZlY3Rvci9ydXZsbG0gLSBTZWxmLWxlYXJuaW5nIExMTSBvcmNoZXN0cmF0aW9uXG4gKlxuICogUnV2TExNIGNvbWJpbmVzIFNPTkEgYWRhcHRpdmUgbGVhcm5pbmcgd2l0aCBITlNXIG1lbW9yeSxcbiAqIEZhc3RHUk5OIHJvdXRpbmcsIGFuZCBTSU1ELW9wdGltaXplZCBpbmZlcmVuY2UuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IFJ1dkxMTSwgU2Vzc2lvbk1hbmFnZXIsIFNvbmFDb29yZGluYXRvciB9IGZyb20gJ0BydXZlY3Rvci9ydXZsbG0nO1xuICpcbiAqIGNvbnN0IGxsbSA9IG5ldyBSdXZMTE0oeyBsZWFybmluZ0VuYWJsZWQ6IHRydWUgfSk7XG4gKiBjb25zdCBzZXNzaW9ucyA9IG5ldyBTZXNzaW9uTWFuYWdlcihsbG0pO1xuICogY29uc3Qgc29uYSA9IG5ldyBTb25hQ29vcmRpbmF0b3IoKTtcbiAqXG4gKiAvLyBRdWVyeSB3aXRoIHNlc3Npb24gY29udGV4dFxuICogY29uc3Qgc2Vzc2lvbiA9IHNlc3Npb25zLmNyZWF0ZSgpO1xuICogY29uc3QgcmVzcG9uc2UgPSBzZXNzaW9ucy5jaGF0KHNlc3Npb24uaWQsICdXaGF0IGlzIEFJPycpO1xuICpcbiAqIC8vIFRyYWNrIGxlYXJuaW5nIHRyYWplY3RvcnlcbiAqIGNvbnN0IHRyYWplY3RvcnkgPSBuZXcgVHJhamVjdG9yeUJ1aWxkZXIoKVxuICogICAuc3RhcnRTdGVwKCdxdWVyeScsICdXaGF0IGlzIEFJPycpXG4gKiAgIC5lbmRTdGVwKHJlc3BvbnNlLnRleHQsIHJlc3BvbnNlLmNvbmZpZGVuY2UpXG4gKiAgIC5jb21wbGV0ZSgnc3VjY2VzcycpO1xuICpcbiAqIHNvbmEucmVjb3JkVHJhamVjdG9yeSh0cmFqZWN0b3J5KTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIEZlZGVyYXRlZCBMZWFybmluZ1xuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgRXBoZW1lcmFsQWdlbnQsIEZlZGVyYXRlZENvb3JkaW5hdG9yIH0gZnJvbSAnQHJ1dmVjdG9yL3J1dmxsbSc7XG4gKlxuICogLy8gQ2VudHJhbCBjb29yZGluYXRvclxuICogY29uc3QgY29vcmRpbmF0b3IgPSBuZXcgRmVkZXJhdGVkQ29vcmRpbmF0b3IoJ2Nvb3JkLTEnKTtcbiAqXG4gKiAvLyBFcGhlbWVyYWwgYWdlbnRzIHByb2Nlc3MgdGFza3MgYW5kIGV4cG9ydFxuICogY29uc3QgYWdlbnQgPSBuZXcgRXBoZW1lcmFsQWdlbnQoJ2FnZW50LTEnKTtcbiAqIGFnZW50LnByb2Nlc3NUYXNrKGVtYmVkZGluZywgMC45KTtcbiAqIGNvbnN0IGV4cG9ydERhdGEgPSBhZ2VudC5leHBvcnRTdGF0ZSgpO1xuICpcbiAqIC8vIEFnZ3JlZ2F0ZSBsZWFybmluZ1xuICogY29vcmRpbmF0b3IuYWdncmVnYXRlKGV4cG9ydERhdGEpO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGUgTG9SQSBBZGFwdGVyc1xuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgTG9yYUFkYXB0ZXIsIExvcmFNYW5hZ2VyIH0gZnJvbSAnQHJ1dmVjdG9yL3J1dmxsbSc7XG4gKlxuICogY29uc3QgYWRhcHRlciA9IG5ldyBMb3JhQWRhcHRlcih7IHJhbms6IDgsIGFscGhhOiAxNiB9KTtcbiAqIGNvbnN0IG91dHB1dCA9IGFkYXB0ZXIuZm9yd2FyZChpbnB1dCk7XG4gKiBgYGBcbiAqL1xuXG4vLyBDb3JlIHR5cGVzXG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcblxuLy8gTWFpbiBlbmdpbmVcbmV4cG9ydCAqIGZyb20gJy4vZW5naW5lJztcblxuLy8gU0lNRCBvcGVyYXRpb25zXG5leHBvcnQgKiBmcm9tICcuL3NpbWQnO1xuXG4vLyBTZXNzaW9uIG1hbmFnZW1lbnRcbmV4cG9ydCAqIGZyb20gJy4vc2Vzc2lvbic7XG5cbi8vIFN0cmVhbWluZyBzdXBwb3J0XG5leHBvcnQgKiBmcm9tICcuL3N0cmVhbWluZyc7XG5cbi8vIFNPTkEgbGVhcm5pbmcgc3lzdGVtXG5leHBvcnQgKiBmcm9tICcuL3NvbmEnO1xuXG4vLyBGZWRlcmF0ZWQgbGVhcm5pbmdcbmV4cG9ydCAqIGZyb20gJy4vZmVkZXJhdGVkJztcblxuLy8gTG9SQSBhZGFwdGVyc1xuZXhwb3J0ICogZnJvbSAnLi9sb3JhJztcblxuLy8gRXhwb3J0L3NlcmlhbGl6YXRpb25cbmV4cG9ydCAqIGZyb20gJy4vZXhwb3J0JztcblxuLy8gVHJhaW5pbmcgcGlwZWxpbmVcbmV4cG9ydCAqIGZyb20gJy4vdHJhaW5pbmcnO1xuXG4vLyBDb250cmFzdGl2ZSBmaW5lLXR1bmluZ1xuZXhwb3J0ICogZnJvbSAnLi9jb250cmFzdGl2ZSc7XG5cbi8vIE1vZGVsIGRvd25sb2FkZXIgYW5kIHJlZ2lzdHJ5XG5leHBvcnQgKiBmcm9tICcuL21vZGVscyc7XG5cbi8vIEJlbmNobWFya3MgZm9yIENsYXVkZSBDb2RlIHVzZSBjYXNlc1xuZXhwb3J0ICogZnJvbSAnLi9iZW5jaG1hcmtzJztcblxuLy8gRXh0ZXJuYWwgSW50ZWxsaWdlbmNlIFByb3ZpZGVycyAoQURSLTA0MylcbmV4cG9ydCAqIGZyb20gJy4vaW50ZWxsaWdlbmNlJztcblxuLy8gTmF0aXZlIGJpbmRpbmdzIHV0aWxpdGllc1xuZXhwb3J0IHsgdmVyc2lvbiwgaGFzU2ltZFN1cHBvcnQgfSBmcm9tICcuL25hdGl2ZSc7XG5cbi8vIERlZmF1bHQgZXhwb3J0XG5leHBvcnQgeyBSdXZMTE0gYXMgZGVmYXVsdCB9IGZyb20gJy4vZW5naW5lJztcbiJdfQ==
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External Intelligence Providers for SONA Learning (ADR-043)
|
|
3
|
+
*
|
|
4
|
+
* TypeScript bindings for the IntelligenceProvider trait, enabling
|
|
5
|
+
* external systems to feed quality signals into RuvLLM's learning loops.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { IntelligenceLoader, FileSignalProvider, QualitySignal } from '@ruvector/ruvllm';
|
|
10
|
+
*
|
|
11
|
+
* const loader = new IntelligenceLoader();
|
|
12
|
+
* loader.registerProvider(new FileSignalProvider('./signals.json'));
|
|
13
|
+
*
|
|
14
|
+
* const { signals, errors } = loader.loadAllSignals();
|
|
15
|
+
* console.log(`Loaded ${signals.length} signals`);
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* A quality signal from an external system.
|
|
20
|
+
*
|
|
21
|
+
* Represents one completed task with quality assessment data
|
|
22
|
+
* that can feed into SONA trajectories, the embedding classifier,
|
|
23
|
+
* and model router calibration.
|
|
24
|
+
*/
|
|
25
|
+
export interface QualitySignal {
|
|
26
|
+
/** Unique identifier for this signal */
|
|
27
|
+
id: string;
|
|
28
|
+
/** Human-readable task description (used for embedding generation) */
|
|
29
|
+
taskDescription: string;
|
|
30
|
+
/** Execution outcome */
|
|
31
|
+
outcome: 'success' | 'partial_success' | 'failure';
|
|
32
|
+
/** Composite quality score (0.0 - 1.0) */
|
|
33
|
+
qualityScore: number;
|
|
34
|
+
/** Optional human verdict */
|
|
35
|
+
humanVerdict?: 'approved' | 'rejected';
|
|
36
|
+
/** Optional structured quality factors for detailed analysis */
|
|
37
|
+
qualityFactors?: QualityFactors;
|
|
38
|
+
/** ISO 8601 timestamp of task completion */
|
|
39
|
+
completedAt: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Granular quality factor breakdown.
|
|
43
|
+
*
|
|
44
|
+
* Not all providers will have all factors. Undefined fields mean
|
|
45
|
+
* "not assessed" (distinct from 0.0, which means "assessed as zero").
|
|
46
|
+
*/
|
|
47
|
+
export interface QualityFactors {
|
|
48
|
+
acceptanceCriteriaMet?: number;
|
|
49
|
+
testsPassing?: number;
|
|
50
|
+
noRegressions?: number;
|
|
51
|
+
lintClean?: number;
|
|
52
|
+
typeCheckClean?: number;
|
|
53
|
+
followsPatterns?: number;
|
|
54
|
+
contextRelevance?: number;
|
|
55
|
+
reasoningCoherence?: number;
|
|
56
|
+
executionEfficiency?: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Quality weight overrides from a provider.
|
|
60
|
+
*
|
|
61
|
+
* Weights should sum to approximately 1.0.
|
|
62
|
+
*/
|
|
63
|
+
export interface ProviderQualityWeights {
|
|
64
|
+
taskCompletion: number;
|
|
65
|
+
codeQuality: number;
|
|
66
|
+
process: number;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Error from a single provider during batch loading.
|
|
70
|
+
*/
|
|
71
|
+
export interface ProviderError {
|
|
72
|
+
providerName: string;
|
|
73
|
+
message: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Result from a single provider during grouped loading.
|
|
77
|
+
*/
|
|
78
|
+
export interface ProviderResult {
|
|
79
|
+
providerName: string;
|
|
80
|
+
signals: QualitySignal[];
|
|
81
|
+
weights?: ProviderQualityWeights;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Interface for external systems that supply quality signals to RuvLLM.
|
|
85
|
+
*
|
|
86
|
+
* Implement this interface and register with IntelligenceLoader.
|
|
87
|
+
*/
|
|
88
|
+
export interface IntelligenceProvider {
|
|
89
|
+
/** Human-readable name for this provider */
|
|
90
|
+
name(): string;
|
|
91
|
+
/** Load quality signals from this provider's data source */
|
|
92
|
+
loadSignals(): QualitySignal[];
|
|
93
|
+
/** Optional quality weight overrides */
|
|
94
|
+
qualityWeights?(): ProviderQualityWeights | undefined;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Built-in file-based intelligence provider.
|
|
98
|
+
*
|
|
99
|
+
* Reads quality signals from a JSON file. This is the default provider
|
|
100
|
+
* for non-Rust integrations that write signal files.
|
|
101
|
+
*/
|
|
102
|
+
export declare class FileSignalProvider implements IntelligenceProvider {
|
|
103
|
+
private readonly filePath;
|
|
104
|
+
constructor(filePath: string);
|
|
105
|
+
name(): string;
|
|
106
|
+
loadSignals(): QualitySignal[];
|
|
107
|
+
qualityWeights(): ProviderQualityWeights | undefined;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Aggregates quality signals from multiple registered providers.
|
|
111
|
+
*
|
|
112
|
+
* If no providers are registered, loadAllSignals returns empty arrays
|
|
113
|
+
* with zero overhead.
|
|
114
|
+
*/
|
|
115
|
+
export declare class IntelligenceLoader {
|
|
116
|
+
private providers;
|
|
117
|
+
/** Register an external intelligence provider */
|
|
118
|
+
registerProvider(provider: IntelligenceProvider): void;
|
|
119
|
+
/** Returns the number of registered providers */
|
|
120
|
+
get providerCount(): number;
|
|
121
|
+
/** Returns the names of all registered providers */
|
|
122
|
+
get providerNames(): string[];
|
|
123
|
+
/**
|
|
124
|
+
* Load signals from all registered providers.
|
|
125
|
+
*
|
|
126
|
+
* Non-fatal: if a provider fails, its error is captured but
|
|
127
|
+
* other providers continue loading.
|
|
128
|
+
*/
|
|
129
|
+
loadAllSignals(): {
|
|
130
|
+
signals: QualitySignal[];
|
|
131
|
+
errors: ProviderError[];
|
|
132
|
+
};
|
|
133
|
+
/** Load signals grouped by provider with weight overrides */
|
|
134
|
+
loadGrouped(): ProviderResult[];
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=intelligence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intelligence.d.ts","sourceRoot":"","sources":["../../src/intelligence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,sEAAsE;IACtE,eAAe,EAAE,MAAM,CAAC;IACxB,wBAAwB;IACxB,OAAO,EAAE,SAAS,GAAG,iBAAiB,GAAG,SAAS,CAAC;IACnD,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,YAAY,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACvC,gEAAgE;IAChE,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,4CAA4C;IAC5C,IAAI,IAAI,MAAM,CAAC;IACf,4DAA4D;IAC5D,WAAW,IAAI,aAAa,EAAE,CAAC;IAC/B,wCAAwC;IACxC,cAAc,CAAC,IAAI,sBAAsB,GAAG,SAAS,CAAC;CACvD;AAED;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,oBAAoB;IAC7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,QAAQ,EAAE,MAAM;IAI5B,IAAI,IAAI,MAAM;IAId,WAAW,IAAI,aAAa,EAAE;IA8B9B,cAAc,IAAI,sBAAsB,GAAG,SAAS;CAiBrD;AAgBD;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,SAAS,CAA8B;IAE/C,iDAAiD;IACjD,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAItD,iDAAiD;IACjD,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,oDAAoD;IACpD,IAAI,aAAa,IAAI,MAAM,EAAE,CAE5B;IAED;;;;;OAKG;IACH,cAAc,IAAI;QAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QAAC,MAAM,EAAE,aAAa,EAAE,CAAA;KAAE;IAmBvE,6DAA6D;IAC7D,WAAW,IAAI,cAAc,EAAE;CAehC"}
|