@ruvector/ruvllm 2.7.0 → 4.0.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/GPU-LOOP.md +229 -0
- package/LICENSE +201 -0
- package/NOTICE +9 -0
- package/README.md +157 -263
- package/examples/gpu-loop.example.json +26 -0
- package/package.json +50 -120
- package/src/adapters-cli.mjs +23 -0
- package/src/adapters.mjs +91 -0
- package/src/cli.mjs +30 -0
- package/src/engine.mjs +238 -0
- package/src/fixture.mjs +38 -0
- package/src/gpu-host.mjs +47 -0
- package/src/gpu-loop-cli.mjs +67 -0
- package/src/gpu-loop.mjs +184 -0
- package/src/gpu-spool-adapter.mjs +80 -0
- package/src/vast-host-adapter.mjs +274 -0
- package/bin/cli.js +0 -1020
- package/dist/cjs/benchmarks/embedding-benchmark.d.ts +0 -102
- package/dist/cjs/benchmarks/embedding-benchmark.d.ts.map +0 -1
- package/dist/cjs/benchmarks/embedding-benchmark.js +0 -436
- package/dist/cjs/benchmarks/index.d.ts +0 -34
- package/dist/cjs/benchmarks/index.d.ts.map +0 -1
- package/dist/cjs/benchmarks/index.js +0 -132
- package/dist/cjs/benchmarks/model-comparison.d.ts +0 -71
- package/dist/cjs/benchmarks/model-comparison.d.ts.map +0 -1
- package/dist/cjs/benchmarks/model-comparison.js +0 -476
- package/dist/cjs/benchmarks/routing-benchmark.d.ts +0 -70
- package/dist/cjs/benchmarks/routing-benchmark.d.ts.map +0 -1
- package/dist/cjs/benchmarks/routing-benchmark.js +0 -289
- package/dist/cjs/contrastive.d.ts +0 -229
- package/dist/cjs/contrastive.d.ts.map +0 -1
- package/dist/cjs/contrastive.js +0 -589
- package/dist/cjs/engine.d.ts +0 -95
- package/dist/cjs/engine.d.ts.map +0 -1
- package/dist/cjs/engine.js +0 -372
- package/dist/cjs/export.d.ts +0 -182
- package/dist/cjs/export.d.ts.map +0 -1
- package/dist/cjs/export.js +0 -422
- package/dist/cjs/federated.d.ts +0 -233
- package/dist/cjs/federated.d.ts.map +0 -1
- package/dist/cjs/federated.js +0 -525
- package/dist/cjs/index.d.ts +0 -68
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/index.js +0 -104
- package/dist/cjs/intelligence.d.ts +0 -136
- package/dist/cjs/intelligence.d.ts.map +0 -1
- package/dist/cjs/intelligence.js +0 -226
- package/dist/cjs/lora.d.ts +0 -251
- package/dist/cjs/lora.d.ts.map +0 -1
- package/dist/cjs/lora.js +0 -509
- package/dist/cjs/models.d.ts +0 -129
- package/dist/cjs/models.d.ts.map +0 -1
- package/dist/cjs/models.js +0 -323
- package/dist/cjs/native.d.ts +0 -92
- package/dist/cjs/native.d.ts.map +0 -1
- package/dist/cjs/native.js +0 -77
- package/dist/cjs/session.d.ts +0 -80
- package/dist/cjs/session.d.ts.map +0 -1
- package/dist/cjs/session.js +0 -203
- package/dist/cjs/simd.d.ts +0 -90
- package/dist/cjs/simd.d.ts.map +0 -1
- package/dist/cjs/simd.js +0 -209
- package/dist/cjs/sona.d.ts +0 -223
- package/dist/cjs/sona.d.ts.map +0 -1
- package/dist/cjs/sona.js +0 -562
- package/dist/cjs/streaming.d.ts +0 -55
- package/dist/cjs/streaming.d.ts.map +0 -1
- package/dist/cjs/streaming.js +0 -131
- package/dist/cjs/training.d.ts +0 -312
- package/dist/cjs/training.d.ts.map +0 -1
- package/dist/cjs/training.js +0 -610
- package/dist/cjs/types.d.ts +0 -615
- package/dist/cjs/types.d.ts.map +0 -1
- package/dist/cjs/types.js +0 -6
- package/dist/esm/benchmarks/embedding-benchmark.d.ts +0 -102
- package/dist/esm/benchmarks/embedding-benchmark.d.ts.map +0 -1
- package/dist/esm/benchmarks/embedding-benchmark.js +0 -427
- package/dist/esm/benchmarks/index.d.ts +0 -34
- package/dist/esm/benchmarks/index.d.ts.map +0 -1
- package/dist/esm/benchmarks/index.js +0 -110
- package/dist/esm/benchmarks/model-comparison.d.ts +0 -71
- package/dist/esm/benchmarks/model-comparison.d.ts.map +0 -1
- package/dist/esm/benchmarks/model-comparison.js +0 -434
- package/dist/esm/benchmarks/routing-benchmark.d.ts +0 -70
- package/dist/esm/benchmarks/routing-benchmark.d.ts.map +0 -1
- package/dist/esm/benchmarks/routing-benchmark.js +0 -283
- package/dist/esm/contrastive.d.ts +0 -229
- package/dist/esm/contrastive.d.ts.map +0 -1
- package/dist/esm/contrastive.js +0 -578
- package/dist/esm/engine.d.ts +0 -95
- package/dist/esm/engine.d.ts.map +0 -1
- package/dist/esm/engine.js +0 -368
- package/dist/esm/export.d.ts +0 -182
- package/dist/esm/export.d.ts.map +0 -1
- package/dist/esm/export.js +0 -414
- package/dist/esm/federated.d.ts +0 -233
- package/dist/esm/federated.d.ts.map +0 -1
- package/dist/esm/federated.js +0 -520
- package/dist/esm/index.d.ts +0 -68
- package/dist/esm/index.d.ts.map +0 -1
- package/dist/esm/index.js +0 -84
- package/dist/esm/intelligence.d.ts +0 -136
- package/dist/esm/intelligence.d.ts.map +0 -1
- package/dist/esm/intelligence.js +0 -188
- package/dist/esm/lora.d.ts +0 -251
- package/dist/esm/lora.d.ts.map +0 -1
- package/dist/esm/lora.js +0 -504
- package/dist/esm/models.d.ts +0 -129
- package/dist/esm/models.d.ts.map +0 -1
- package/dist/esm/models.js +0 -282
- package/dist/esm/native.d.ts +0 -92
- package/dist/esm/native.d.ts.map +0 -1
- package/dist/esm/native.js +0 -72
- package/dist/esm/session.d.ts +0 -80
- package/dist/esm/session.d.ts.map +0 -1
- package/dist/esm/session.js +0 -199
- package/dist/esm/simd.d.ts +0 -90
- package/dist/esm/simd.d.ts.map +0 -1
- package/dist/esm/simd.js +0 -205
- package/dist/esm/sona.d.ts +0 -223
- package/dist/esm/sona.d.ts.map +0 -1
- package/dist/esm/sona.js +0 -556
- package/dist/esm/streaming.d.ts +0 -55
- package/dist/esm/streaming.d.ts.map +0 -1
- package/dist/esm/streaming.js +0 -126
- package/dist/esm/training.d.ts +0 -312
- package/dist/esm/training.d.ts.map +0 -1
- package/dist/esm/training.js +0 -603
- package/dist/esm/types.d.ts +0 -615
- package/dist/esm/types.d.ts.map +0 -1
- package/dist/esm/types.js +0 -5
- package/scripts/ensemble-model-compare.js +0 -287
- package/scripts/fix-esm-extensions.mjs +0 -181
- package/scripts/huggingface/README.md +0 -537
- package/scripts/huggingface/publish.sh +0 -112
- package/scripts/hybrid-model-compare.js +0 -373
- package/scripts/improved-model-compare.js +0 -288
- package/scripts/optimized-model-compare.js +0 -364
- package/scripts/real-model-compare.js +0 -280
- package/scripts/smoke-esm.mjs +0 -82
- package/scripts/training/agentic-flow-capabilities.json +0 -329
- package/scripts/training/claude-code-synth.js +0 -505
- package/scripts/training/claude-flow-capabilities.json +0 -1322
- package/scripts/training/claude-hard-negatives.js +0 -222
- package/scripts/training/contrastive-finetune.js +0 -517
- package/scripts/training/ecosystem-triplets.jsonl +0 -1467
- package/scripts/training/generate-ecosystem-triplets.js +0 -1324
- package/scripts/training/routing-dataset.js +0 -634
- package/scripts/training/ruvector-capabilities.json +0 -798
- package/scripts/training/validate-ecosystem.js +0 -381
- package/scripts/training/validation-results.json +0 -23
package/dist/cjs/native.js
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Native bindings loader for RuvLLM
|
|
4
|
-
*
|
|
5
|
-
* Automatically loads the correct native binary for the current platform.
|
|
6
|
-
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.getNativeModule = getNativeModule;
|
|
9
|
-
exports.version = version;
|
|
10
|
-
exports.hasSimdSupport = hasSimdSupport;
|
|
11
|
-
const path_1 = require("path");
|
|
12
|
-
// Try to load the native module
|
|
13
|
-
let nativeModule = null;
|
|
14
|
-
// Platform-specific package names
|
|
15
|
-
const PLATFORM_PACKAGES = {
|
|
16
|
-
'darwin-x64': '@ruvector/ruvllm-darwin-x64',
|
|
17
|
-
'darwin-arm64': '@ruvector/ruvllm-darwin-arm64',
|
|
18
|
-
'linux-x64': '@ruvector/ruvllm-linux-x64-gnu',
|
|
19
|
-
'linux-arm64': '@ruvector/ruvllm-linux-arm64-gnu',
|
|
20
|
-
'win32-x64': '@ruvector/ruvllm-win32-x64-msvc',
|
|
21
|
-
};
|
|
22
|
-
function getPlatformKey() {
|
|
23
|
-
const platform = process.platform;
|
|
24
|
-
const arch = process.arch;
|
|
25
|
-
return `${platform}-${arch}`;
|
|
26
|
-
}
|
|
27
|
-
function loadNativeModule() {
|
|
28
|
-
if (nativeModule) {
|
|
29
|
-
return nativeModule;
|
|
30
|
-
}
|
|
31
|
-
const platformKey = getPlatformKey();
|
|
32
|
-
const packageName = PLATFORM_PACKAGES[platformKey];
|
|
33
|
-
if (!packageName) {
|
|
34
|
-
// Silently fail - JS fallback will be used
|
|
35
|
-
return null;
|
|
36
|
-
}
|
|
37
|
-
// Try loading from optional dependencies
|
|
38
|
-
const attempts = [
|
|
39
|
-
// Try the platform-specific package
|
|
40
|
-
() => require(packageName),
|
|
41
|
-
// Try loading from local .node file (CJS build)
|
|
42
|
-
() => require((0, path_1.join)(__dirname, '..', '..', 'ruvllm.node')),
|
|
43
|
-
// Try loading from local .node file (root)
|
|
44
|
-
() => require((0, path_1.join)(__dirname, '..', 'ruvllm.node')),
|
|
45
|
-
];
|
|
46
|
-
for (const attempt of attempts) {
|
|
47
|
-
try {
|
|
48
|
-
const raw = attempt();
|
|
49
|
-
// Normalize: native exports RuvLlmEngine, we expose as RuvLLMEngine
|
|
50
|
-
nativeModule = {
|
|
51
|
-
RuvLLMEngine: raw.RuvLLMEngine ?? raw.RuvLlmEngine,
|
|
52
|
-
SimdOperations: raw.SimdOperations,
|
|
53
|
-
version: raw.version,
|
|
54
|
-
hasSimdSupport: raw.hasSimdSupport,
|
|
55
|
-
};
|
|
56
|
-
return nativeModule;
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
// Continue to next attempt
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
// Silently fall back to JS implementation
|
|
63
|
-
return null;
|
|
64
|
-
}
|
|
65
|
-
// Export functions to get native bindings
|
|
66
|
-
function getNativeModule() {
|
|
67
|
-
return loadNativeModule();
|
|
68
|
-
}
|
|
69
|
-
function version() {
|
|
70
|
-
const mod = loadNativeModule();
|
|
71
|
-
return mod?.version() ?? '0.1.0-js';
|
|
72
|
-
}
|
|
73
|
-
function hasSimdSupport() {
|
|
74
|
-
const mod = loadNativeModule();
|
|
75
|
-
return mod?.hasSimdSupport() ?? false;
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7QUE0S0gsMENBRUM7QUFFRCwwQkFHQztBQUVELHdDQUdDO0FBdExELCtCQUE0QjtBQUU1QixnQ0FBZ0M7QUFDaEMsSUFBSSxZQUFZLEdBQXdCLElBQUksQ0FBQztBQTRHN0Msa0NBQWtDO0FBQ2xDLE1BQU0saUJBQWlCLEdBQTJCO0lBQ2hELFlBQVksRUFBRSw2QkFBNkI7SUFDM0MsY0FBYyxFQUFFLCtCQUErQjtJQUMvQyxXQUFXLEVBQUUsZ0NBQWdDO0lBQzdDLGFBQWEsRUFBRSxrQ0FBa0M7SUFDakQsV0FBVyxFQUFFLGlDQUFpQztDQUMvQyxDQUFDO0FBRUYsU0FBUyxjQUFjO0lBQ3JCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDbEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztJQUMxQixPQUFPLEdBQUcsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO0FBQy9CLENBQUM7QUFFRCxTQUFTLGdCQUFnQjtJQUN2QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pCLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxjQUFjLEVBQUUsQ0FBQztJQUNyQyxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVuRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsMkNBQTJDO1FBQzNDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHlDQUF5QztJQUN6QyxNQUFNLFFBQVEsR0FBRztRQUNmLG9DQUFvQztRQUNwQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQzFCLGdEQUFnRDtRQUNoRCxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBQSxXQUFJLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDekQsMkNBQTJDO1FBQzNDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFBLFdBQUksRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0tBQ3BELENBQUM7SUFFRixLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxHQUFHLE9BQU8sRUFBcUIsQ0FBQztZQUN6QyxvRUFBb0U7WUFDcEUsWUFBWSxHQUFHO2dCQUNiLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQyxZQUFhO2dCQUNuRCxjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7Z0JBQ2xDLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztnQkFDcEIsY0FBYyxFQUFFLEdBQUcsQ0FBQyxjQUFjO2FBQ25DLENBQUM7WUFDRixPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsMkJBQTJCO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQsMENBQTBDO0lBQzFDLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELDBDQUEwQztBQUMxQyxTQUFnQixlQUFlO0lBQzdCLE9BQU8sZ0JBQWdCLEVBQUUsQ0FBQztBQUM1QixDQUFDO0FBRUQsU0FBZ0IsT0FBTztJQUNyQixNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBQy9CLE9BQU8sR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLFVBQVUsQ0FBQztBQUN0QyxDQUFDO0FBRUQsU0FBZ0IsY0FBYztJQUM1QixNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBQy9CLE9BQU8sR0FBRyxFQUFFLGNBQWMsRUFBRSxJQUFJLEtBQUssQ0FBQztBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBOYXRpdmUgYmluZGluZ3MgbG9hZGVyIGZvciBSdXZMTE1cbiAqXG4gKiBBdXRvbWF0aWNhbGx5IGxvYWRzIHRoZSBjb3JyZWN0IG5hdGl2ZSBiaW5hcnkgZm9yIHRoZSBjdXJyZW50IHBsYXRmb3JtLlxuICovXG5cbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcblxuLy8gVHJ5IHRvIGxvYWQgdGhlIG5hdGl2ZSBtb2R1bGVcbmxldCBuYXRpdmVNb2R1bGU6IE5hdGl2ZVJ1dkxMTSB8IG51bGwgPSBudWxsO1xuXG5pbnRlcmZhY2UgTmF0aXZlUnV2TExNIHtcbiAgLy8gTmF0aXZlIGV4cG9ydHMgUnV2TGxtRW5naW5lIChjYW1lbENhc2UpLCB3ZSBub3JtYWxpemUgdG8gUnV2TExNRW5naW5lXG4gIFJ1dkxMTUVuZ2luZTogbmV3IChjb25maWc/OiBOYXRpdmVDb25maWcpID0+IE5hdGl2ZUVuZ2luZTtcbiAgU2ltZE9wZXJhdGlvbnM6IG5ldyAoKSA9PiBOYXRpdmVTaW1kT3BzO1xuICB2ZXJzaW9uOiAoKSA9PiBzdHJpbmc7XG4gIGhhc1NpbWRTdXBwb3J0OiAoKSA9PiBib29sZWFuO1xufVxuXG4vLyBSYXcgbmF0aXZlIG1vZHVsZSBpbnRlcmZhY2UgKGFjdHVhbCBleHBvcnQgbmFtZXMpXG5pbnRlcmZhY2UgUmF3TmF0aXZlTW9kdWxlIHtcbiAgUnV2TGxtRW5naW5lPzogbmV3IChjb25maWc/OiBOYXRpdmVDb25maWcpID0+IE5hdGl2ZUVuZ2luZTtcbiAgUnV2TExNRW5naW5lPzogbmV3IChjb25maWc/OiBOYXRpdmVDb25maWcpID0+IE5hdGl2ZUVuZ2luZTtcbiAgU2ltZE9wZXJhdGlvbnM6IG5ldyAoKSA9PiBOYXRpdmVTaW1kT3BzO1xuICB2ZXJzaW9uOiAoKSA9PiBzdHJpbmc7XG4gIGhhc1NpbWRTdXBwb3J0OiAoKSA9PiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgTmF0aXZlQ29uZmlnIHtcbiAgZW1iZWRkaW5nX2RpbT86IG51bWJlcjtcbiAgcm91dGVyX2hpZGRlbl9kaW0/OiBudW1iZXI7XG4gIGhuc3dfbT86IG51bWJlcjtcbiAgaG5zd19lZl9jb25zdHJ1Y3Rpb24/OiBudW1iZXI7XG4gIGhuc3dfZWZfc2VhcmNoPzogbnVtYmVyO1xuICBsZWFybmluZ19lbmFibGVkPzogYm9vbGVhbjtcbiAgcXVhbGl0eV90aHJlc2hvbGQ/OiBudW1iZXI7XG4gIGV3Y19sYW1iZGE/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBOYXRpdmVFbmdpbmUge1xuICBxdWVyeSh0ZXh0OiBzdHJpbmcsIGNvbmZpZz86IE5hdGl2ZUdlbkNvbmZpZyk6IE5hdGl2ZVF1ZXJ5UmVzcG9uc2U7XG4gIGdlbmVyYXRlKHByb21wdDogc3RyaW5nLCBjb25maWc/OiBOYXRpdmVHZW5Db25maWcpOiBzdHJpbmc7XG4gIHJvdXRlKHRleHQ6IHN0cmluZyk6IE5hdGl2ZVJvdXRpbmdEZWNpc2lvbjtcbiAgc2VhcmNoTWVtb3J5KHRleHQ6IHN0cmluZywgaz86IG51bWJlcik6IE5hdGl2ZU1lbW9yeVJlc3VsdFtdO1xuICAvKiogQ3VycmVudCBuYXRpdmUgYnVpbGRzIHJldHVybiBhIFVVSUQgc3RyaW5nOyBvbGRlciBvbmVzIHJldHVybmVkIGEgbnVtYmVyLiAqL1xuICBhZGRNZW1vcnkoY29udGVudDogc3RyaW5nLCBtZXRhZGF0YT86IHN0cmluZyk6IHN0cmluZyB8IG51bWJlcjtcbiAgZmVlZGJhY2socmVxdWVzdElkOiBzdHJpbmcsIHJhdGluZzogbnVtYmVyLCBjb3JyZWN0aW9uPzogc3RyaW5nKTogYm9vbGVhbjtcbiAgc3RhdHMoKTogTmF0aXZlU3RhdHM7XG4gIGZvcmNlTGVhcm4oKTogc3RyaW5nO1xuICBlbWJlZCh0ZXh0OiBzdHJpbmcpOiBudW1iZXJbXTtcbiAgc2ltaWxhcml0eSh0ZXh0MTogc3RyaW5nLCB0ZXh0Mjogc3RyaW5nKTogbnVtYmVyO1xuICBoYXNTaW1kKCk6IGJvb2xlYW47XG4gIHNpbWRDYXBhYmlsaXRpZXMoKTogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBOYXRpdmVHZW5Db25maWcge1xuICBtYXhfdG9rZW5zPzogbnVtYmVyO1xuICB0ZW1wZXJhdHVyZT86IG51bWJlcjtcbiAgdG9wX3A/OiBudW1iZXI7XG4gIHRvcF9rPzogbnVtYmVyO1xuICByZXBldGl0aW9uX3BlbmFsdHk/OiBudW1iZXI7XG59XG5cbi8vIG5hcGktcnMgY2FtZWxDYXNlcyBSdXN0IHN0cnVjdCBmaWVsZHMgd2hlbiBpdCBidWlsZHMgdGhlIEpTIG9iamVjdCwgc28gdGhlXG4vLyByZWFsIG5hdGl2ZSBzaGFwZSBpcyBjYW1lbENhc2UuIFRoZXNlIGludGVyZmFjZXMgcHJldmlvdXNseSBkZWNsYXJlZCBvbmx5XG4vLyBzbmFrZV9jYXNlLCB3aGljaCBpcyB3aHkgdGhlIHdyYXBwZXIncyBzbmFrZV9jYXNlIHJlYWRzIHR5cGVjaGVja2VkIHdoaWxlXG4vLyBzaWxlbnRseSB5aWVsZGluZyB1bmRlZmluZWQgYXQgcnVudGltZS4gQm90aCBzcGVsbGluZ3MgYXJlIGRlY2xhcmVkIOKAlFxuLy8gY2FtZWxDYXNlIHJlcXVpcmVkLCBzbmFrZV9jYXNlIG9wdGlvbmFsIOKAlCBzbyBvbGRlciBuYXRpdmUgYnVpbGRzIHN0aWxsIGZpdC5cbmludGVyZmFjZSBOYXRpdmVRdWVyeVJlc3BvbnNlIHtcbiAgdGV4dDogc3RyaW5nO1xuICBjb25maWRlbmNlOiBudW1iZXI7XG4gIG1vZGVsOiBzdHJpbmc7XG4gIGNvbnRleHRTaXplOiBudW1iZXI7XG4gIGxhdGVuY3lNczogbnVtYmVyO1xuICByZXF1ZXN0SWQ6IHN0cmluZztcbiAgY29udGV4dF9zaXplPzogbnVtYmVyO1xuICBsYXRlbmN5X21zPzogbnVtYmVyO1xuICByZXF1ZXN0X2lkPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgTmF0aXZlUm91dGluZ0RlY2lzaW9uIHtcbiAgbW9kZWw6IHN0cmluZztcbiAgY29udGV4dFNpemU6IG51bWJlcjtcbiAgdGVtcGVyYXR1cmU6IG51bWJlcjtcbiAgdG9wX3A/OiBudW1iZXI7XG4gIHRvcFA6IG51bWJlcjtcbiAgY29uZmlkZW5jZTogbnVtYmVyO1xuICBjb250ZXh0X3NpemU/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBOYXRpdmVNZW1vcnlSZXN1bHQge1xuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xuICAvKiogRGlzdGFuY2UgKHNtYWxsZXIgaXMgY2xvc2VyKSBhcyByZXBvcnRlZCBieSB0aGUgY3VycmVudCBuYXRpdmUgYnVpbGQuICovXG4gIGRpc3RhbmNlPzogbnVtYmVyO1xuICAvKiogU2ltaWxhcml0eSwgZW1pdHRlZCBieSBvbGRlciBuYXRpdmUgYnVpbGRzLiAqL1xuICBzY29yZT86IG51bWJlcjtcbiAgY29udGVudDogc3RyaW5nO1xuICBtZXRhZGF0YTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgTmF0aXZlU3RhdHMge1xuICB0b3RhbF9xdWVyaWVzOiBudW1iZXI7XG4gIG1lbW9yeV9ub2RlczogbnVtYmVyO1xuICBwYXR0ZXJuc19sZWFybmVkOiBudW1iZXI7XG4gIGF2Z19sYXRlbmN5X21zOiBudW1iZXI7XG4gIGNhY2hlX2hpdF9yYXRlOiBudW1iZXI7XG4gIHJvdXRlcl9hY2N1cmFjeTogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgTmF0aXZlU2ltZE9wcyB7XG4gIGRvdFByb2R1Y3QoYTogbnVtYmVyW10sIGI6IG51bWJlcltdKTogbnVtYmVyO1xuICBjb3NpbmVTaW1pbGFyaXR5KGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlcjtcbiAgbDJEaXN0YW5jZShhOiBudW1iZXJbXSwgYjogbnVtYmVyW10pOiBudW1iZXI7XG4gIG1hdHZlYyhtYXRyaXg6IG51bWJlcltdW10sIHZlY3RvcjogbnVtYmVyW10pOiBudW1iZXJbXTtcbiAgc29mdG1heChpbnB1dDogbnVtYmVyW10pOiBudW1iZXJbXTtcbn1cblxuLy8gUGxhdGZvcm0tc3BlY2lmaWMgcGFja2FnZSBuYW1lc1xuY29uc3QgUExBVEZPUk1fUEFDS0FHRVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdkYXJ3aW4teDY0JzogJ0BydXZlY3Rvci9ydXZsbG0tZGFyd2luLXg2NCcsXG4gICdkYXJ3aW4tYXJtNjQnOiAnQHJ1dmVjdG9yL3J1dmxsbS1kYXJ3aW4tYXJtNjQnLFxuICAnbGludXgteDY0JzogJ0BydXZlY3Rvci9ydXZsbG0tbGludXgteDY0LWdudScsXG4gICdsaW51eC1hcm02NCc6ICdAcnV2ZWN0b3IvcnV2bGxtLWxpbnV4LWFybTY0LWdudScsXG4gICd3aW4zMi14NjQnOiAnQHJ1dmVjdG9yL3J1dmxsbS13aW4zMi14NjQtbXN2YycsXG59O1xuXG5mdW5jdGlvbiBnZXRQbGF0Zm9ybUtleSgpOiBzdHJpbmcge1xuICBjb25zdCBwbGF0Zm9ybSA9IHByb2Nlc3MucGxhdGZvcm07XG4gIGNvbnN0IGFyY2ggPSBwcm9jZXNzLmFyY2g7XG4gIHJldHVybiBgJHtwbGF0Zm9ybX0tJHthcmNofWA7XG59XG5cbmZ1bmN0aW9uIGxvYWROYXRpdmVNb2R1bGUoKTogTmF0aXZlUnV2TExNIHwgbnVsbCB7XG4gIGlmIChuYXRpdmVNb2R1bGUpIHtcbiAgICByZXR1cm4gbmF0aXZlTW9kdWxlO1xuICB9XG5cbiAgY29uc3QgcGxhdGZvcm1LZXkgPSBnZXRQbGF0Zm9ybUtleSgpO1xuICBjb25zdCBwYWNrYWdlTmFtZSA9IFBMQVRGT1JNX1BBQ0tBR0VTW3BsYXRmb3JtS2V5XTtcblxuICBpZiAoIXBhY2thZ2VOYW1lKSB7XG4gICAgLy8gU2lsZW50bHkgZmFpbCAtIEpTIGZhbGxiYWNrIHdpbGwgYmUgdXNlZFxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gVHJ5IGxvYWRpbmcgZnJvbSBvcHRpb25hbCBkZXBlbmRlbmNpZXNcbiAgY29uc3QgYXR0ZW1wdHMgPSBbXG4gICAgLy8gVHJ5IHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBwYWNrYWdlXG4gICAgKCkgPT4gcmVxdWlyZShwYWNrYWdlTmFtZSksXG4gICAgLy8gVHJ5IGxvYWRpbmcgZnJvbSBsb2NhbCAubm9kZSBmaWxlIChDSlMgYnVpbGQpXG4gICAgKCkgPT4gcmVxdWlyZShqb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ3J1dmxsbS5ub2RlJykpLFxuICAgIC8vIFRyeSBsb2FkaW5nIGZyb20gbG9jYWwgLm5vZGUgZmlsZSAocm9vdClcbiAgICAoKSA9PiByZXF1aXJlKGpvaW4oX19kaXJuYW1lLCAnLi4nLCAncnV2bGxtLm5vZGUnKSksXG4gIF07XG5cbiAgZm9yIChjb25zdCBhdHRlbXB0IG9mIGF0dGVtcHRzKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJhdyA9IGF0dGVtcHQoKSBhcyBSYXdOYXRpdmVNb2R1bGU7XG4gICAgICAvLyBOb3JtYWxpemU6IG5hdGl2ZSBleHBvcnRzIFJ1dkxsbUVuZ2luZSwgd2UgZXhwb3NlIGFzIFJ1dkxMTUVuZ2luZVxuICAgICAgbmF0aXZlTW9kdWxlID0ge1xuICAgICAgICBSdXZMTE1FbmdpbmU6IHJhdy5SdXZMTE1FbmdpbmUgPz8gcmF3LlJ1dkxsbUVuZ2luZSEsXG4gICAgICAgIFNpbWRPcGVyYXRpb25zOiByYXcuU2ltZE9wZXJhdGlvbnMsXG4gICAgICAgIHZlcnNpb246IHJhdy52ZXJzaW9uLFxuICAgICAgICBoYXNTaW1kU3VwcG9ydDogcmF3Lmhhc1NpbWRTdXBwb3J0LFxuICAgICAgfTtcbiAgICAgIHJldHVybiBuYXRpdmVNb2R1bGU7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBDb250aW51ZSB0byBuZXh0IGF0dGVtcHRcbiAgICB9XG4gIH1cblxuICAvLyBTaWxlbnRseSBmYWxsIGJhY2sgdG8gSlMgaW1wbGVtZW50YXRpb25cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8vIEV4cG9ydCBmdW5jdGlvbnMgdG8gZ2V0IG5hdGl2ZSBiaW5kaW5nc1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5hdGl2ZU1vZHVsZSgpOiBOYXRpdmVSdXZMTE0gfCBudWxsIHtcbiAgcmV0dXJuIGxvYWROYXRpdmVNb2R1bGUoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcnNpb24oKTogc3RyaW5nIHtcbiAgY29uc3QgbW9kID0gbG9hZE5hdGl2ZU1vZHVsZSgpO1xuICByZXR1cm4gbW9kPy52ZXJzaW9uKCkgPz8gJzAuMS4wLWpzJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1NpbWRTdXBwb3J0KCk6IGJvb2xlYW4ge1xuICBjb25zdCBtb2QgPSBsb2FkTmF0aXZlTW9kdWxlKCk7XG4gIHJldHVybiBtb2Q/Lmhhc1NpbWRTdXBwb3J0KCkgPz8gZmFsc2U7XG59XG5cbi8vIEV4cG9ydCB0eXBlcyBmb3IgaW50ZXJuYWwgdXNlXG5leHBvcnQgdHlwZSB7XG4gIE5hdGl2ZVJ1dkxMTSxcbiAgTmF0aXZlQ29uZmlnLFxuICBOYXRpdmVFbmdpbmUsXG4gIE5hdGl2ZUdlbkNvbmZpZyxcbiAgTmF0aXZlUXVlcnlSZXNwb25zZSxcbiAgTmF0aXZlUm91dGluZ0RlY2lzaW9uLFxuICBOYXRpdmVNZW1vcnlSZXN1bHQsXG4gIE5hdGl2ZVN0YXRzLFxuICBOYXRpdmVTaW1kT3BzLFxufTtcbiJdfQ==
|
package/dist/cjs/session.d.ts
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Session Management for multi-turn conversations
|
|
3
|
-
*/
|
|
4
|
-
import { ConversationSession, ConversationMessage, QueryResponse, GenerationConfig } from './types';
|
|
5
|
-
/**
|
|
6
|
-
* Session Manager for multi-turn conversations
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```typescript
|
|
10
|
-
* import { RuvLLM, SessionManager } from '@ruvector/ruvllm';
|
|
11
|
-
*
|
|
12
|
-
* const llm = new RuvLLM();
|
|
13
|
-
* const sessions = new SessionManager(llm);
|
|
14
|
-
*
|
|
15
|
-
* // Create a new session
|
|
16
|
-
* const session = sessions.create();
|
|
17
|
-
*
|
|
18
|
-
* // Chat with context
|
|
19
|
-
* const response1 = sessions.chat(session.id, 'What is Python?');
|
|
20
|
-
* const response2 = sessions.chat(session.id, 'How do I install it?');
|
|
21
|
-
* // Second query automatically has context from first
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
export declare class SessionManager {
|
|
25
|
-
private sessions;
|
|
26
|
-
private llm;
|
|
27
|
-
constructor(llm: {
|
|
28
|
-
query: (text: string, config?: GenerationConfig) => QueryResponse;
|
|
29
|
-
addMemory: (content: string, metadata?: Record<string, unknown>) => number;
|
|
30
|
-
});
|
|
31
|
-
/**
|
|
32
|
-
* Create a new conversation session
|
|
33
|
-
*/
|
|
34
|
-
create(metadata?: Record<string, unknown>): ConversationSession;
|
|
35
|
-
/**
|
|
36
|
-
* Get session by ID
|
|
37
|
-
*/
|
|
38
|
-
get(sessionId: string): ConversationSession | undefined;
|
|
39
|
-
/**
|
|
40
|
-
* Chat within a session (maintains context)
|
|
41
|
-
*/
|
|
42
|
-
chat(sessionId: string, message: string, config?: GenerationConfig): QueryResponse;
|
|
43
|
-
/**
|
|
44
|
-
* Add system message to session
|
|
45
|
-
*/
|
|
46
|
-
addSystemMessage(sessionId: string, content: string): void;
|
|
47
|
-
/**
|
|
48
|
-
* Add context to session (persisted to memory)
|
|
49
|
-
*/
|
|
50
|
-
addContext(sessionId: string, context: string): number;
|
|
51
|
-
/**
|
|
52
|
-
* Get conversation history
|
|
53
|
-
*/
|
|
54
|
-
getHistory(sessionId: string, limit?: number): ConversationMessage[];
|
|
55
|
-
/**
|
|
56
|
-
* Clear session history (keep session active)
|
|
57
|
-
*/
|
|
58
|
-
clearHistory(sessionId: string): void;
|
|
59
|
-
/**
|
|
60
|
-
* End and delete session
|
|
61
|
-
*/
|
|
62
|
-
end(sessionId: string): boolean;
|
|
63
|
-
/**
|
|
64
|
-
* List all active sessions
|
|
65
|
-
*/
|
|
66
|
-
list(): ConversationSession[];
|
|
67
|
-
/**
|
|
68
|
-
* Export session as JSON
|
|
69
|
-
*/
|
|
70
|
-
export(sessionId: string): string | null;
|
|
71
|
-
/**
|
|
72
|
-
* Import session from JSON
|
|
73
|
-
*/
|
|
74
|
-
import(json: string): ConversationSession;
|
|
75
|
-
/**
|
|
76
|
-
* Build context string from recent messages
|
|
77
|
-
*/
|
|
78
|
-
private buildContext;
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,GAAG,CAAoJ;gBAEnJ,GAAG,EAAE;QAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,KAAK,aAAa,CAAC;QAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAA;KAAE;IAIlK;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB;IAe/D;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAIvD;;OAEG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,aAAa;IAiClF;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAc1D;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAmBtD;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAUpE;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IASrC;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI/B;;OAEG;IACH,IAAI,IAAI,mBAAmB,EAAE;IAI7B;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IASxC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB;IAezC;;OAEG;IACH,OAAO,CAAC,YAAY;CA2BrB"}
|
package/dist/cjs/session.js
DELETED
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Session Management for multi-turn conversations
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.SessionManager = void 0;
|
|
7
|
-
/**
|
|
8
|
-
* Session Manager for multi-turn conversations
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```typescript
|
|
12
|
-
* import { RuvLLM, SessionManager } from '@ruvector/ruvllm';
|
|
13
|
-
*
|
|
14
|
-
* const llm = new RuvLLM();
|
|
15
|
-
* const sessions = new SessionManager(llm);
|
|
16
|
-
*
|
|
17
|
-
* // Create a new session
|
|
18
|
-
* const session = sessions.create();
|
|
19
|
-
*
|
|
20
|
-
* // Chat with context
|
|
21
|
-
* const response1 = sessions.chat(session.id, 'What is Python?');
|
|
22
|
-
* const response2 = sessions.chat(session.id, 'How do I install it?');
|
|
23
|
-
* // Second query automatically has context from first
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
class SessionManager {
|
|
27
|
-
constructor(llm) {
|
|
28
|
-
this.sessions = new Map();
|
|
29
|
-
this.llm = llm;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Create a new conversation session
|
|
33
|
-
*/
|
|
34
|
-
create(metadata) {
|
|
35
|
-
const id = `session-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
36
|
-
const session = {
|
|
37
|
-
id,
|
|
38
|
-
createdAt: new Date(),
|
|
39
|
-
messageCount: 0,
|
|
40
|
-
messages: [],
|
|
41
|
-
context: [],
|
|
42
|
-
activeMemoryIds: [],
|
|
43
|
-
metadata: metadata ?? {},
|
|
44
|
-
};
|
|
45
|
-
this.sessions.set(id, session);
|
|
46
|
-
return session;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Get session by ID
|
|
50
|
-
*/
|
|
51
|
-
get(sessionId) {
|
|
52
|
-
return this.sessions.get(sessionId);
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Chat within a session (maintains context)
|
|
56
|
-
*/
|
|
57
|
-
chat(sessionId, message, config) {
|
|
58
|
-
const session = this.sessions.get(sessionId);
|
|
59
|
-
if (!session) {
|
|
60
|
-
throw new Error(`Session not found: ${sessionId}`);
|
|
61
|
-
}
|
|
62
|
-
// Add user message
|
|
63
|
-
session.messages.push({
|
|
64
|
-
role: 'user',
|
|
65
|
-
content: message,
|
|
66
|
-
timestamp: new Date(),
|
|
67
|
-
});
|
|
68
|
-
// Build context from recent messages
|
|
69
|
-
const contextWindow = this.buildContext(session);
|
|
70
|
-
// Query with context
|
|
71
|
-
const prompt = contextWindow ? `${contextWindow}\n\nUser: ${message}` : message;
|
|
72
|
-
const response = this.llm.query(prompt, config);
|
|
73
|
-
// Add assistant response
|
|
74
|
-
session.messages.push({
|
|
75
|
-
role: 'assistant',
|
|
76
|
-
content: response.text,
|
|
77
|
-
timestamp: new Date(),
|
|
78
|
-
requestId: response.requestId,
|
|
79
|
-
});
|
|
80
|
-
session.messageCount = session.messages.length;
|
|
81
|
-
return response;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Add system message to session
|
|
85
|
-
*/
|
|
86
|
-
addSystemMessage(sessionId, content) {
|
|
87
|
-
const session = this.sessions.get(sessionId);
|
|
88
|
-
if (!session) {
|
|
89
|
-
throw new Error(`Session not found: ${sessionId}`);
|
|
90
|
-
}
|
|
91
|
-
session.messages.push({
|
|
92
|
-
role: 'system',
|
|
93
|
-
content,
|
|
94
|
-
timestamp: new Date(),
|
|
95
|
-
});
|
|
96
|
-
session.messageCount = session.messages.length;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Add context to session (persisted to memory)
|
|
100
|
-
*/
|
|
101
|
-
addContext(sessionId, context) {
|
|
102
|
-
const session = this.sessions.get(sessionId);
|
|
103
|
-
if (!session) {
|
|
104
|
-
throw new Error(`Session not found: ${sessionId}`);
|
|
105
|
-
}
|
|
106
|
-
session.context.push(context);
|
|
107
|
-
// Also store in memory for retrieval
|
|
108
|
-
const memoryId = this.llm.addMemory(context, {
|
|
109
|
-
sessionId,
|
|
110
|
-
type: 'context',
|
|
111
|
-
timestamp: new Date().toISOString(),
|
|
112
|
-
});
|
|
113
|
-
session.activeMemoryIds.push(memoryId);
|
|
114
|
-
return memoryId;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Get conversation history
|
|
118
|
-
*/
|
|
119
|
-
getHistory(sessionId, limit) {
|
|
120
|
-
const session = this.sessions.get(sessionId);
|
|
121
|
-
if (!session) {
|
|
122
|
-
return [];
|
|
123
|
-
}
|
|
124
|
-
const messages = session.messages;
|
|
125
|
-
return limit ? messages.slice(-limit) : messages;
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Clear session history (keep session active)
|
|
129
|
-
*/
|
|
130
|
-
clearHistory(sessionId) {
|
|
131
|
-
const session = this.sessions.get(sessionId);
|
|
132
|
-
if (session) {
|
|
133
|
-
session.messages = [];
|
|
134
|
-
session.context = [];
|
|
135
|
-
session.messageCount = 0;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* End and delete session
|
|
140
|
-
*/
|
|
141
|
-
end(sessionId) {
|
|
142
|
-
return this.sessions.delete(sessionId);
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* List all active sessions
|
|
146
|
-
*/
|
|
147
|
-
list() {
|
|
148
|
-
return Array.from(this.sessions.values());
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Export session as JSON
|
|
152
|
-
*/
|
|
153
|
-
export(sessionId) {
|
|
154
|
-
const session = this.sessions.get(sessionId);
|
|
155
|
-
if (!session) {
|
|
156
|
-
return null;
|
|
157
|
-
}
|
|
158
|
-
return JSON.stringify(session, null, 2);
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Import session from JSON
|
|
162
|
-
*/
|
|
163
|
-
import(json) {
|
|
164
|
-
const data = JSON.parse(json);
|
|
165
|
-
const session = {
|
|
166
|
-
...data,
|
|
167
|
-
createdAt: new Date(data.createdAt),
|
|
168
|
-
messages: data.messages.map((m) => ({
|
|
169
|
-
...m,
|
|
170
|
-
timestamp: new Date(m.timestamp),
|
|
171
|
-
})),
|
|
172
|
-
};
|
|
173
|
-
this.sessions.set(session.id, session);
|
|
174
|
-
return session;
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Build context string from recent messages
|
|
178
|
-
*/
|
|
179
|
-
buildContext(session, maxMessages = 10) {
|
|
180
|
-
const recent = session.messages.slice(-maxMessages);
|
|
181
|
-
if (recent.length === 0) {
|
|
182
|
-
return '';
|
|
183
|
-
}
|
|
184
|
-
const contextParts = [];
|
|
185
|
-
// Add persistent context
|
|
186
|
-
if (session.context.length > 0) {
|
|
187
|
-
contextParts.push('Context:\n' + session.context.join('\n'));
|
|
188
|
-
}
|
|
189
|
-
// Add conversation history
|
|
190
|
-
const history = recent
|
|
191
|
-
.map(m => {
|
|
192
|
-
const role = m.role === 'user' ? 'User' : m.role === 'assistant' ? 'Assistant' : 'System';
|
|
193
|
-
return `${role}: ${m.content}`;
|
|
194
|
-
})
|
|
195
|
-
.join('\n');
|
|
196
|
-
if (history) {
|
|
197
|
-
contextParts.push('Conversation:\n' + history);
|
|
198
|
-
}
|
|
199
|
-
return contextParts.join('\n\n');
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
exports.SessionManager = SessionManager;
|
|
203
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBU0g7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQWEsY0FBYztJQUl6QixZQUFZLEdBQXNKO1FBSDFKLGFBQVEsR0FBcUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUk3RCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsUUFBa0M7UUFDdkMsTUFBTSxFQUFFLEdBQUcsV0FBVyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDN0UsTUFBTSxPQUFPLEdBQXdCO1lBQ25DLEVBQUU7WUFDRixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDckIsWUFBWSxFQUFFLENBQUM7WUFDZixRQUFRLEVBQUUsRUFBRTtZQUNaLE9BQU8sRUFBRSxFQUFFO1lBQ1gsZUFBZSxFQUFFLEVBQUU7WUFDbkIsUUFBUSxFQUFFLFFBQVEsSUFBSSxFQUFFO1NBQ3pCLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDL0IsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsR0FBRyxDQUFDLFNBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxDQUFDLFNBQWlCLEVBQUUsT0FBZSxFQUFFLE1BQXlCO1FBQ2hFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxR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QyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUMxRixPQUFPLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQyxDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFZCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQS9NRCx3Q0ErTUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlc3Npb24gTWFuYWdlbWVudCBmb3IgbXVsdGktdHVybiBjb252ZXJzYXRpb25zXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29udmVyc2F0aW9uU2Vzc2lvbixcbiAgQ29udmVyc2F0aW9uTWVzc2FnZSxcbiAgUXVlcnlSZXNwb25zZSxcbiAgR2VuZXJhdGlvbkNvbmZpZyxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogU2Vzc2lvbiBNYW5hZ2VyIGZvciBtdWx0aS10dXJuIGNvbnZlcnNhdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgUnV2TExNLCBTZXNzaW9uTWFuYWdlciB9IGZyb20gJ0BydXZlY3Rvci9ydXZsbG0nO1xuICpcbiAqIGNvbnN0IGxsbSA9IG5ldyBSdXZMTE0oKTtcbiAqIGNvbnN0IHNlc3Npb25zID0gbmV3IFNlc3Npb25NYW5hZ2VyKGxsbSk7XG4gKlxuICogLy8gQ3JlYXRlIGEgbmV3IHNlc3Npb25cbiAqIGNvbnN0IHNlc3Npb24gPSBzZXNzaW9ucy5jcmVhdGUoKTtcbiAqXG4gKiAvLyBDaGF0IHdpdGggY29udGV4dFxuICogY29uc3QgcmVzcG9uc2UxID0gc2Vzc2lvbnMuY2hhdChzZXNzaW9uLmlkLCAnV2hhdCBpcyBQeXRob24/Jyk7XG4gKiBjb25zdCByZXNwb25zZTIgPSBzZXNzaW9ucy5jaGF0KHNlc3Npb24uaWQsICdIb3cgZG8gSSBpbnN0YWxsIGl0PycpO1xuICogLy8gU2Vjb25kIHF1ZXJ5IGF1dG9tYXRpY2FsbHkgaGFzIGNvbnRleHQgZnJvbSBmaXJzdFxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXNzaW9uTWFuYWdlciB7XG4gIHByaXZhdGUgc2Vzc2lvbnM6IE1hcDxzdHJpbmcsIENvbnZlcnNhdGlvblNlc3Npb24+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIGxsbTogeyBxdWVyeTogKHRleHQ6IHN0cmluZywgY29uZmlnPzogR2VuZXJhdGlvbkNvbmZpZykgPT4gUXVlcnlSZXNwb25zZTsgYWRkTWVtb3J5OiAoY29udGVudDogc3RyaW5nLCBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBudW1iZXIgfTtcblxuICBjb25zdHJ1Y3RvcihsbG06IHsgcXVlcnk6ICh0ZXh0OiBzdHJpbmcsIGNvbmZpZz86IEdlbmVyYXRpb25Db25maWcpID0+IFF1ZXJ5UmVzcG9uc2U7IGFkZE1lbW9yeTogKGNvbnRlbnQ6IHN0cmluZywgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gbnVtYmVyIH0pIHtcbiAgICB0aGlzLmxsbSA9IGxsbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgY29udmVyc2F0aW9uIHNlc3Npb25cbiAgICovXG4gIGNyZWF0ZShtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogQ29udmVyc2F0aW9uU2Vzc2lvbiB7XG4gICAgY29uc3QgaWQgPSBgc2Vzc2lvbi0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgOCl9YDtcbiAgICBjb25zdCBzZXNzaW9uOiBDb252ZXJzYXRpb25TZXNzaW9uID0ge1xuICAgICAgaWQsXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICBtZXNzYWdlQ291bnQ6IDAsXG4gICAgICBtZXNzYWdlczogW10sXG4gICAgICBjb250ZXh0OiBbXSxcbiAgICAgIGFjdGl2ZU1lbW9yeUlkczogW10sXG4gICAgICBtZXRhZGF0YTogbWV0YWRhdGEgPz8ge30sXG4gICAgfTtcbiAgICB0aGlzLnNlc3Npb25zLnNldChpZCwgc2Vzc2lvbik7XG4gICAgcmV0dXJuIHNlc3Npb247XG4gIH1cblxuICAvKipcbiAgICogR2V0IHNlc3Npb24gYnkgSURcbiAgICovXG4gIGdldChzZXNzaW9uSWQ6IHN0cmluZyk6IENvbnZlcnNhdGlvblNlc3Npb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNlc3Npb25zLmdldChzZXNzaW9uSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoYXQgd2l0aGluIGEgc2Vzc2lvbiAobWFpbnRhaW5zIGNvbnRleHQpXG4gICAqL1xuICBjaGF0KHNlc3Npb25JZDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIGNvbmZpZz86IEdlbmVyYXRpb25Db25maWcpOiBRdWVyeVJlc3BvbnNlIHtcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9ucy5nZXQoc2Vzc2lvbklkKTtcbiAgICBpZiAoIXNlc3Npb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU2Vzc2lvbiBub3QgZm91bmQ6ICR7c2Vzc2lvbklkfWApO1xuICAgIH1cblxuICAgIC8vIEFkZCB1c2VyIG1lc3NhZ2VcbiAgICBzZXNzaW9uLm1lc3NhZ2VzLnB1c2goe1xuICAgICAgcm9sZTogJ3VzZXInLFxuICAgICAgY29udGVudDogbWVzc2FnZSxcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcbiAgICB9KTtcblxuICAgIC8vIEJ1aWxkIGNvbnRleHQgZnJvbSByZWNlbnQgbWVzc2FnZXNcbiAgICBjb25zdCBjb250ZXh0V2luZG93ID0gdGhpcy5idWlsZENvbnRleHQoc2Vzc2lvbik7XG5cbiAgICAvLyBRdWVyeSB3aXRoIGNvbnRleHRcbiAgICBjb25zdCBwcm9tcHQgPSBjb250ZXh0V2luZG93ID8gYCR7Y29udGV4dFdpbmRvd31cXG5cXG5Vc2VyOiAke21lc3NhZ2V9YCA6IG1lc3NhZ2U7XG4gICAgY29uc3QgcmVzcG9uc2UgPSB0aGlzLmxsbS5xdWVyeShwcm9tcHQsIGNvbmZpZyk7XG5cbiAgICAvLyBBZGQgYXNzaXN0YW50IHJlc3BvbnNlXG4gICAgc2Vzc2lvbi5tZXNzYWdlcy5wdXNoKHtcbiAgICAgIHJvbGU6ICdhc3Npc3RhbnQnLFxuICAgICAgY29udGVudDogcmVzcG9uc2UudGV4dCxcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcbiAgICAgIHJlcXVlc3RJZDogcmVzcG9uc2UucmVxdWVzdElkLFxuICAgIH0pO1xuXG4gICAgc2Vzc2lvbi5tZXNzYWdlQ291bnQgPSBzZXNzaW9uLm1lc3NhZ2VzLmxlbmd0aDtcblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgc3lzdGVtIG1lc3NhZ2UgdG8gc2Vzc2lvblxuICAgKi9cbiAgYWRkU3lzdGVtTWVzc2FnZShzZXNzaW9uSWQ6IHN0cmluZywgY29udGVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZ2V0KHNlc3Npb25JZCk7XG4gICAgaWYgKCFzZXNzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlc3Npb24gbm90IGZvdW5kOiAke3Nlc3Npb25JZH1gKTtcbiAgICB9XG5cbiAgICBzZXNzaW9uLm1lc3NhZ2VzLnB1c2goe1xuICAgICAgcm9sZTogJ3N5c3RlbScsXG4gICAgICBjb250ZW50LFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICAgIH0pO1xuICAgIHNlc3Npb24ubWVzc2FnZUNvdW50ID0gc2Vzc2lvbi5tZXNzYWdlcy5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGNvbnRleHQgdG8gc2Vzc2lvbiAocGVyc2lzdGVkIHRvIG1lbW9yeSlcbiAgICovXG4gIGFkZENvbnRleHQoc2Vzc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZ2V0KHNlc3Npb25JZCk7XG4gICAgaWYgKCFzZXNzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlc3Npb24gbm90IGZvdW5kOiAke3Nlc3Npb25JZH1gKTtcbiAgICB9XG5cbiAgICBzZXNzaW9uLmNvbnRleHQucHVzaChjb250ZXh0KTtcblxuICAgIC8vIEFsc28gc3RvcmUgaW4gbWVtb3J5IGZvciByZXRyaWV2YWxcbiAgICBjb25zdCBtZW1vcnlJZCA9IHRoaXMubGxtLmFkZE1lbW9yeShjb250ZXh0LCB7XG4gICAgICBzZXNzaW9uSWQsXG4gICAgICB0eXBlOiAnY29udGV4dCcsXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9KTtcblxuICAgIHNlc3Npb24uYWN0aXZlTWVtb3J5SWRzLnB1c2gobWVtb3J5SWQpO1xuICAgIHJldHVybiBtZW1vcnlJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY29udmVyc2F0aW9uIGhpc3RvcnlcbiAgICovXG4gIGdldEhpc3Rvcnkoc2Vzc2lvbklkOiBzdHJpbmcsIGxpbWl0PzogbnVtYmVyKTogQ29udmVyc2F0aW9uTWVzc2FnZVtdIHtcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9ucy5nZXQoc2Vzc2lvbklkKTtcbiAgICBpZiAoIXNlc3Npb24pIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXNzYWdlcyA9IHNlc3Npb24ubWVzc2FnZXM7XG4gICAgcmV0dXJuIGxpbWl0ID8gbWVzc2FnZXMuc2xpY2UoLWxpbWl0KSA6IG1lc3NhZ2VzO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHNlc3Npb24gaGlzdG9yeSAoa2VlcCBzZXNzaW9uIGFjdGl2ZSlcbiAgICovXG4gIGNsZWFySGlzdG9yeShzZXNzaW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25zLmdldChzZXNzaW9uSWQpO1xuICAgIGlmIChzZXNzaW9uKSB7XG4gICAgICBzZXNzaW9uLm1lc3NhZ2VzID0gW107XG4gICAgICBzZXNzaW9uLmNvbnRleHQgPSBbXTtcbiAgICAgIHNlc3Npb24ubWVzc2FnZUNvdW50ID0gMDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW5kIGFuZCBkZWxldGUgc2Vzc2lvblxuICAgKi9cbiAgZW5kKHNlc3Npb25JZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbnMuZGVsZXRlKHNlc3Npb25JZCk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdCBhbGwgYWN0aXZlIHNlc3Npb25zXG4gICAqL1xuICBsaXN0KCk6IENvbnZlcnNhdGlvblNlc3Npb25bXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5zZXNzaW9ucy52YWx1ZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogRXhwb3J0IHNlc3Npb24gYXMgSlNPTlxuICAgKi9cbiAgZXhwb3J0KHNlc3Npb25JZDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZ2V0KHNlc3Npb25JZCk7XG4gICAgaWYgKCFzZXNzaW9uKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoc2Vzc2lvbiwgbnVsbCwgMik7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IHNlc3Npb24gZnJvbSBKU09OXG4gICAqL1xuICBpbXBvcnQoanNvbjogc3RyaW5nKTogQ29udmVyc2F0aW9uU2Vzc2lvbiB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoanNvbik7XG4gICAgY29uc3Qgc2Vzc2lvbjogQ29udmVyc2F0aW9uU2Vzc2lvbiA9IHtcbiAgICAgIC4uLmRhdGEsXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKGRhdGEuY3JlYXRlZEF0KSxcbiAgICAgIG1lc3NhZ2VzOiBkYXRhLm1lc3NhZ2VzLm1hcCgobTogQ29udmVyc2F0aW9uTWVzc2FnZSkgPT4gKHtcbiAgICAgICAgLi4ubSxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZShtLnRpbWVzdGFtcCksXG4gICAgICB9KSksXG4gICAgfTtcblxuICAgIHRoaXMuc2Vzc2lvbnMuc2V0KHNlc3Npb24uaWQsIHNlc3Npb24pO1xuICAgIHJldHVybiBzZXNzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGNvbnRleHQgc3RyaW5nIGZyb20gcmVjZW50IG1lc3NhZ2VzXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkQ29udGV4dChzZXNzaW9uOiBDb252ZXJzYXRpb25TZXNzaW9uLCBtYXhNZXNzYWdlcyA9IDEwKTogc3RyaW5nIHtcbiAgICBjb25zdCByZWNlbnQgPSBzZXNzaW9uLm1lc3NhZ2VzLnNsaWNlKC1tYXhNZXNzYWdlcyk7XG4gICAgaWYgKHJlY2VudC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZXh0UGFydHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBBZGQgcGVyc2lzdGVudCBjb250ZXh0XG4gICAgaWYgKHNlc3Npb24uY29udGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICBjb250ZXh0UGFydHMucHVzaCgnQ29udGV4dDpcXG4nICsgc2Vzc2lvbi5jb250ZXh0LmpvaW4oJ1xcbicpKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgY29udmVyc2F0aW9uIGhpc3RvcnlcbiAgICBjb25zdCBoaXN0b3J5ID0gcmVjZW50XG4gICAgICAubWFwKG0gPT4ge1xuICAgICAgICBjb25zdCByb2xlID0gbS5yb2xlID09PSAndXNlcicgPyAnVXNlcicgOiBtLnJvbGUgPT09ICdhc3Npc3RhbnQnID8gJ0Fzc2lzdGFudCcgOiAnU3lzdGVtJztcbiAgICAgICAgcmV0dXJuIGAke3JvbGV9OiAke20uY29udGVudH1gO1xuICAgICAgfSlcbiAgICAgIC5qb2luKCdcXG4nKTtcblxuICAgIGlmIChoaXN0b3J5KSB7XG4gICAgICBjb250ZXh0UGFydHMucHVzaCgnQ29udmVyc2F0aW9uOlxcbicgKyBoaXN0b3J5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGV4dFBhcnRzLmpvaW4oJ1xcblxcbicpO1xuICB9XG59XG4iXX0=
|
package/dist/cjs/simd.d.ts
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SIMD Operations for vector computations
|
|
3
|
-
*
|
|
4
|
-
* Uses native SIMD instructions (AVX2/AVX512/SSE4.1/NEON) when available,
|
|
5
|
-
* falls back to JavaScript implementations otherwise.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* SIMD Operations class
|
|
9
|
-
*
|
|
10
|
-
* Provides hardware-accelerated vector operations when native module is available.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```typescript
|
|
14
|
-
* import { SimdOps } from '@ruvector/ruvllm';
|
|
15
|
-
*
|
|
16
|
-
* const simd = new SimdOps();
|
|
17
|
-
*
|
|
18
|
-
* // Compute dot product
|
|
19
|
-
* const result = simd.dotProduct([1, 2, 3], [4, 5, 6]);
|
|
20
|
-
* console.log(result); // 32
|
|
21
|
-
*
|
|
22
|
-
* // Check capabilities
|
|
23
|
-
* console.log(simd.capabilities()); // ['AVX2', 'FMA']
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
export declare class SimdOps {
|
|
27
|
-
private native;
|
|
28
|
-
constructor();
|
|
29
|
-
/**
|
|
30
|
-
* Compute dot product of two vectors
|
|
31
|
-
*/
|
|
32
|
-
dotProduct(a: number[], b: number[]): number;
|
|
33
|
-
/**
|
|
34
|
-
* Compute cosine similarity between two vectors
|
|
35
|
-
*/
|
|
36
|
-
cosineSimilarity(a: number[], b: number[]): number;
|
|
37
|
-
/**
|
|
38
|
-
* Compute L2 (Euclidean) distance between two vectors
|
|
39
|
-
*/
|
|
40
|
-
l2Distance(a: number[], b: number[]): number;
|
|
41
|
-
/**
|
|
42
|
-
* Matrix-vector multiplication
|
|
43
|
-
*/
|
|
44
|
-
matvec(matrix: number[][], vector: number[]): number[];
|
|
45
|
-
/**
|
|
46
|
-
* Softmax activation function
|
|
47
|
-
*/
|
|
48
|
-
softmax(input: number[]): number[];
|
|
49
|
-
/**
|
|
50
|
-
* Element-wise addition
|
|
51
|
-
*/
|
|
52
|
-
add(a: number[], b: number[]): number[];
|
|
53
|
-
/**
|
|
54
|
-
* Element-wise multiplication
|
|
55
|
-
*/
|
|
56
|
-
mul(a: number[], b: number[]): number[];
|
|
57
|
-
/**
|
|
58
|
-
* Scale vector by scalar
|
|
59
|
-
*/
|
|
60
|
-
scale(a: number[], scalar: number): number[];
|
|
61
|
-
/**
|
|
62
|
-
* Normalize vector to unit length
|
|
63
|
-
*/
|
|
64
|
-
normalize(a: number[]): number[];
|
|
65
|
-
/**
|
|
66
|
-
* ReLU activation
|
|
67
|
-
*/
|
|
68
|
-
relu(input: number[]): number[];
|
|
69
|
-
/**
|
|
70
|
-
* GELU activation (approximate)
|
|
71
|
-
*/
|
|
72
|
-
gelu(input: number[]): number[];
|
|
73
|
-
/**
|
|
74
|
-
* Sigmoid activation
|
|
75
|
-
*/
|
|
76
|
-
sigmoid(input: number[]): number[];
|
|
77
|
-
/**
|
|
78
|
-
* Layer normalization
|
|
79
|
-
*/
|
|
80
|
-
layerNorm(input: number[], eps?: number): number[];
|
|
81
|
-
/**
|
|
82
|
-
* Check if native SIMD is available
|
|
83
|
-
*/
|
|
84
|
-
isNative(): boolean;
|
|
85
|
-
/**
|
|
86
|
-
* Get available SIMD capabilities
|
|
87
|
-
*/
|
|
88
|
-
capabilities(): string[];
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=simd.d.ts.map
|
package/dist/cjs/simd.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"simd.d.ts","sourceRoot":"","sources":["../../src/simd.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAA8B;;IAa5C;;OAEG;IACH,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;IAc5C;;OAEG;IACH,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;IAqBlD;;OAEG;IACH,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;IAe5C;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAStD;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAYlC;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IASvC;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IASvC;;OAEG;IACH,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAI5C;;OAEG;IACH,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAKhC;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAI/B;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAM/B;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAIlC;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,SAAO,GAAG,MAAM,EAAE;IAOhD;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;CAkBzB"}
|