@ruvector/ruvllm 3.0.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/GPU-LOOP.md +229 -0
  2. package/LICENSE +201 -0
  3. package/NOTICE +9 -0
  4. package/README.md +159 -360
  5. package/examples/gpu-loop.example.json +26 -0
  6. package/package.json +50 -121
  7. package/src/adapters-cli.mjs +23 -0
  8. package/src/adapters.mjs +91 -0
  9. package/src/cli.mjs +30 -0
  10. package/src/engine.mjs +238 -0
  11. package/src/fixture.mjs +38 -0
  12. package/src/gpu-host.mjs +47 -0
  13. package/src/gpu-loop-cli.mjs +67 -0
  14. package/src/gpu-loop.mjs +184 -0
  15. package/src/gpu-spool-adapter.mjs +80 -0
  16. package/src/vast-host-adapter.mjs +274 -0
  17. package/bin/cli.js +0 -1040
  18. package/dist/cjs/benchmarks/embedding-benchmark.d.ts +0 -102
  19. package/dist/cjs/benchmarks/embedding-benchmark.d.ts.map +0 -1
  20. package/dist/cjs/benchmarks/embedding-benchmark.js +0 -436
  21. package/dist/cjs/benchmarks/index.d.ts +0 -34
  22. package/dist/cjs/benchmarks/index.d.ts.map +0 -1
  23. package/dist/cjs/benchmarks/index.js +0 -132
  24. package/dist/cjs/benchmarks/model-comparison.d.ts +0 -71
  25. package/dist/cjs/benchmarks/model-comparison.d.ts.map +0 -1
  26. package/dist/cjs/benchmarks/model-comparison.js +0 -476
  27. package/dist/cjs/benchmarks/routing-benchmark.d.ts +0 -70
  28. package/dist/cjs/benchmarks/routing-benchmark.d.ts.map +0 -1
  29. package/dist/cjs/benchmarks/routing-benchmark.js +0 -289
  30. package/dist/cjs/contrastive.d.ts +0 -229
  31. package/dist/cjs/contrastive.d.ts.map +0 -1
  32. package/dist/cjs/contrastive.js +0 -589
  33. package/dist/cjs/engine.d.ts +0 -160
  34. package/dist/cjs/engine.d.ts.map +0 -1
  35. package/dist/cjs/engine.js +0 -552
  36. package/dist/cjs/export.d.ts +0 -182
  37. package/dist/cjs/export.d.ts.map +0 -1
  38. package/dist/cjs/export.js +0 -422
  39. package/dist/cjs/federated.d.ts +0 -233
  40. package/dist/cjs/federated.d.ts.map +0 -1
  41. package/dist/cjs/federated.js +0 -525
  42. package/dist/cjs/index.d.ts +0 -68
  43. package/dist/cjs/index.d.ts.map +0 -1
  44. package/dist/cjs/index.js +0 -104
  45. package/dist/cjs/intelligence.d.ts +0 -136
  46. package/dist/cjs/intelligence.d.ts.map +0 -1
  47. package/dist/cjs/intelligence.js +0 -226
  48. package/dist/cjs/lora.d.ts +0 -251
  49. package/dist/cjs/lora.d.ts.map +0 -1
  50. package/dist/cjs/lora.js +0 -509
  51. package/dist/cjs/models.d.ts +0 -129
  52. package/dist/cjs/models.d.ts.map +0 -1
  53. package/dist/cjs/models.js +0 -323
  54. package/dist/cjs/native.d.ts +0 -140
  55. package/dist/cjs/native.d.ts.map +0 -1
  56. package/dist/cjs/native.js +0 -98
  57. package/dist/cjs/session.d.ts +0 -80
  58. package/dist/cjs/session.d.ts.map +0 -1
  59. package/dist/cjs/session.js +0 -203
  60. package/dist/cjs/simd.d.ts +0 -90
  61. package/dist/cjs/simd.d.ts.map +0 -1
  62. package/dist/cjs/simd.js +0 -209
  63. package/dist/cjs/sona.d.ts +0 -223
  64. package/dist/cjs/sona.d.ts.map +0 -1
  65. package/dist/cjs/sona.js +0 -562
  66. package/dist/cjs/streaming.d.ts +0 -55
  67. package/dist/cjs/streaming.d.ts.map +0 -1
  68. package/dist/cjs/streaming.js +0 -131
  69. package/dist/cjs/training.d.ts +0 -312
  70. package/dist/cjs/training.d.ts.map +0 -1
  71. package/dist/cjs/training.js +0 -610
  72. package/dist/cjs/types.d.ts +0 -696
  73. package/dist/cjs/types.d.ts.map +0 -1
  74. package/dist/cjs/types.js +0 -6
  75. package/dist/esm/benchmarks/embedding-benchmark.d.ts +0 -102
  76. package/dist/esm/benchmarks/embedding-benchmark.d.ts.map +0 -1
  77. package/dist/esm/benchmarks/embedding-benchmark.js +0 -427
  78. package/dist/esm/benchmarks/index.d.ts +0 -34
  79. package/dist/esm/benchmarks/index.d.ts.map +0 -1
  80. package/dist/esm/benchmarks/index.js +0 -110
  81. package/dist/esm/benchmarks/model-comparison.d.ts +0 -71
  82. package/dist/esm/benchmarks/model-comparison.d.ts.map +0 -1
  83. package/dist/esm/benchmarks/model-comparison.js +0 -434
  84. package/dist/esm/benchmarks/routing-benchmark.d.ts +0 -70
  85. package/dist/esm/benchmarks/routing-benchmark.d.ts.map +0 -1
  86. package/dist/esm/benchmarks/routing-benchmark.js +0 -283
  87. package/dist/esm/contrastive.d.ts +0 -229
  88. package/dist/esm/contrastive.d.ts.map +0 -1
  89. package/dist/esm/contrastive.js +0 -578
  90. package/dist/esm/engine.d.ts +0 -160
  91. package/dist/esm/engine.d.ts.map +0 -1
  92. package/dist/esm/engine.js +0 -548
  93. package/dist/esm/export.d.ts +0 -182
  94. package/dist/esm/export.d.ts.map +0 -1
  95. package/dist/esm/export.js +0 -414
  96. package/dist/esm/federated.d.ts +0 -233
  97. package/dist/esm/federated.d.ts.map +0 -1
  98. package/dist/esm/federated.js +0 -520
  99. package/dist/esm/index.d.ts +0 -68
  100. package/dist/esm/index.d.ts.map +0 -1
  101. package/dist/esm/index.js +0 -84
  102. package/dist/esm/intelligence.d.ts +0 -136
  103. package/dist/esm/intelligence.d.ts.map +0 -1
  104. package/dist/esm/intelligence.js +0 -188
  105. package/dist/esm/lora.d.ts +0 -251
  106. package/dist/esm/lora.d.ts.map +0 -1
  107. package/dist/esm/lora.js +0 -504
  108. package/dist/esm/models.d.ts +0 -129
  109. package/dist/esm/models.d.ts.map +0 -1
  110. package/dist/esm/models.js +0 -282
  111. package/dist/esm/native.d.ts +0 -140
  112. package/dist/esm/native.d.ts.map +0 -1
  113. package/dist/esm/native.js +0 -93
  114. package/dist/esm/session.d.ts +0 -80
  115. package/dist/esm/session.d.ts.map +0 -1
  116. package/dist/esm/session.js +0 -199
  117. package/dist/esm/simd.d.ts +0 -90
  118. package/dist/esm/simd.d.ts.map +0 -1
  119. package/dist/esm/simd.js +0 -205
  120. package/dist/esm/sona.d.ts +0 -223
  121. package/dist/esm/sona.d.ts.map +0 -1
  122. package/dist/esm/sona.js +0 -556
  123. package/dist/esm/streaming.d.ts +0 -55
  124. package/dist/esm/streaming.d.ts.map +0 -1
  125. package/dist/esm/streaming.js +0 -126
  126. package/dist/esm/training.d.ts +0 -312
  127. package/dist/esm/training.d.ts.map +0 -1
  128. package/dist/esm/training.js +0 -603
  129. package/dist/esm/types.d.ts +0 -696
  130. package/dist/esm/types.d.ts.map +0 -1
  131. package/dist/esm/types.js +0 -5
  132. package/scripts/ensemble-model-compare.js +0 -287
  133. package/scripts/fix-esm-extensions.mjs +0 -181
  134. package/scripts/huggingface/README.md +0 -537
  135. package/scripts/huggingface/publish.sh +0 -112
  136. package/scripts/hybrid-model-compare.js +0 -373
  137. package/scripts/improved-model-compare.js +0 -288
  138. package/scripts/optimized-model-compare.js +0 -364
  139. package/scripts/real-model-compare.js +0 -280
  140. package/scripts/smoke-esm.mjs +0 -82
  141. package/scripts/training/agentic-flow-capabilities.json +0 -329
  142. package/scripts/training/claude-code-synth.js +0 -505
  143. package/scripts/training/claude-flow-capabilities.json +0 -1322
  144. package/scripts/training/claude-hard-negatives.js +0 -222
  145. package/scripts/training/contrastive-finetune.js +0 -517
  146. package/scripts/training/ecosystem-triplets.jsonl +0 -1467
  147. package/scripts/training/generate-ecosystem-triplets.js +0 -1324
  148. package/scripts/training/routing-dataset.js +0 -634
  149. package/scripts/training/ruvector-capabilities.json +0 -798
  150. package/scripts/training/validate-ecosystem.js +0 -381
  151. package/scripts/training/validation-results.json +0 -23
@@ -1,93 +0,0 @@
1
- /**
2
- * Native bindings loader for RuvLLM
3
- *
4
- * Automatically loads the correct native binary for the current platform.
5
- */
6
- import { join, resolve } from 'path';
7
- // Try to load the native module
8
- let nativeModule = null;
9
- // Platform-specific package names
10
- const PLATFORM_PACKAGES = {
11
- 'darwin-x64': '@ruvector/ruvllm-darwin-x64',
12
- 'darwin-arm64': '@ruvector/ruvllm-darwin-arm64',
13
- 'linux-x64': '@ruvector/ruvllm-linux-x64-gnu',
14
- 'linux-arm64': '@ruvector/ruvllm-linux-arm64-gnu',
15
- 'win32-x64': '@ruvector/ruvllm-win32-x64-msvc',
16
- };
17
- function getPlatformKey() {
18
- const platform = process.platform;
19
- const arch = process.arch;
20
- return `${platform}-${arch}`;
21
- }
22
- function loadNativeModule() {
23
- if (nativeModule) {
24
- return nativeModule;
25
- }
26
- // An explicit binary (e.g. one built locally with `npm run build:native`)
27
- // wins over the installed platform package. Failing to load it is an
28
- // error, not a silent fallback to a different binary.
29
- const override = process.env.RUVLLM_NATIVE_PATH;
30
- if (override) {
31
- try {
32
- // resolve(): a relative path means relative to the working directory,
33
- // not to this file.
34
- nativeModule = normalize(require(resolve(override)));
35
- return nativeModule;
36
- }
37
- catch (e) {
38
- throw new Error(`RUVLLM_NATIVE_PATH=${override} could not be loaded: ${e.message}`);
39
- }
40
- }
41
- const platformKey = getPlatformKey();
42
- const packageName = PLATFORM_PACKAGES[platformKey];
43
- if (!packageName) {
44
- // Silently fail - JS fallback will be used
45
- return null;
46
- }
47
- // `napi build --platform` names its output ruvllm.<platform>.node
48
- const platformFile = `ruvllm.${packageName.replace('@ruvector/ruvllm-', '')}.node`;
49
- // Try loading from optional dependencies
50
- const attempts = [
51
- // Try the platform-specific package
52
- () => require(packageName),
53
- // Try loading from local .node file (CJS build)
54
- () => require(join(__dirname, '..', '..', 'ruvllm.node')),
55
- // Try loading from local .node file (root)
56
- () => require(join(__dirname, '..', 'ruvllm.node')),
57
- // Output of `npm run build:native` in the package root
58
- () => require(join(__dirname, '..', '..', platformFile)),
59
- ];
60
- for (const attempt of attempts) {
61
- try {
62
- nativeModule = normalize(attempt());
63
- return nativeModule;
64
- }
65
- catch {
66
- // Continue to next attempt
67
- }
68
- }
69
- // Silently fall back to JS implementation
70
- return null;
71
- }
72
- // Normalize: native exports RuvLlmEngine, we expose as RuvLLMEngine
73
- function normalize(raw) {
74
- return {
75
- RuvLLMEngine: raw.RuvLLMEngine ?? raw.RuvLlmEngine,
76
- SimdOperations: raw.SimdOperations,
77
- version: raw.version,
78
- hasSimdSupport: raw.hasSimdSupport,
79
- };
80
- }
81
- // Export functions to get native bindings
82
- export function getNativeModule() {
83
- return loadNativeModule();
84
- }
85
- export function version() {
86
- const mod = loadNativeModule();
87
- return mod?.version() ?? '0.1.0-js';
88
- }
89
- export function hasSimdSupport() {
90
- const mod = loadNativeModule();
91
- return mod?.hasSimdSupport() ?? false;
92
- }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckMsZ0NBQWdDO0FBQ2hDLElBQUksWUFBWSxHQUF3QixJQUFJLENBQUM7QUFrSzdDLGtDQUFrQztBQUNsQyxNQUFNLGlCQUFpQixHQUEyQjtJQUNoRCxZQUFZLEVBQUUsNkJBQTZCO0lBQzNDLGNBQWMsRUFBRSwrQkFBK0I7SUFDL0MsV0FBVyxFQUFFLGdDQUFnQztJQUM3QyxhQUFhLEVBQUUsa0NBQWtDO0lBQ2pELFdBQVcsRUFBRSxpQ0FBaUM7Q0FDL0MsQ0FBQztBQUVGLFNBQVMsY0FBYztJQUNyQixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ2xDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDMUIsT0FBTyxHQUFHLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUMvQixDQUFDO0FBRUQsU0FBUyxnQkFBZ0I7SUFDdkIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQsMEVBQTBFO0lBQzFFLHFFQUFxRTtJQUNyRSxzREFBc0Q7SUFDdEQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztJQUNoRCxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDO1lBQ0gsc0VBQXNFO1lBQ3RFLG9CQUFvQjtZQUNwQixZQUFZLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQW9CLENBQUMsQ0FBQztZQUN4RSxPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxLQUFLLENBQ2Isc0JBQXNCLFFBQVEseUJBQTBCLENBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FDOUUsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsY0FBYyxFQUFFLENBQUM7SUFDckMsTUFBTSxXQUFXLEdBQUcsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFbkQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pCLDJDQUEyQztRQUMzQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxrRUFBa0U7SUFDbEUsTUFBTSxZQUFZLEdBQUcsVUFBVSxXQUFXLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUM7SUFFbkYseUNBQXlDO0lBQ3pDLE1BQU0sUUFBUSxHQUFHO1FBQ2Ysb0NBQW9DO1FBQ3BDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDMUIsZ0RBQWdEO1FBQ2hELEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDekQsMkNBQTJDO1FBQzNDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNuRCx1REFBdUQ7UUFDdkQsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztLQUN6RCxDQUFDO0lBRUYsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUM7WUFDSCxZQUFZLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBcUIsQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCwyQkFBMkI7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsb0VBQW9FO0FBQ3BFLFNBQVMsU0FBUyxDQUFDLEdBQW9CO0lBQ3JDLE9BQU87UUFDTCxZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVksSUFBSSxHQUFHLENBQUMsWUFBYTtRQUNuRCxjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7UUFDbEMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO1FBQ3BCLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYztLQUNuQyxDQUFDO0FBQ0osQ0FBQztBQUVELDBDQUEwQztBQUMxQyxNQUFNLFVBQVUsZUFBZTtJQUM3QixPQUFPLGdCQUFnQixFQUFFLENBQUM7QUFDNUIsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPO0lBQ3JCLE1BQU0sR0FBRyxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDL0IsT0FBTyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksVUFBVSxDQUFDO0FBQ3RDLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYztJQUM1QixNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBQy9CLE9BQU8sR0FBRyxFQUFFLGNBQWMsRUFBRSxJQUFJLEtBQUssQ0FBQztBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBOYXRpdmUgYmluZGluZ3MgbG9hZGVyIGZvciBSdXZMTE1cbiAqXG4gKiBBdXRvbWF0aWNhbGx5IGxvYWRzIHRoZSBjb3JyZWN0IG5hdGl2ZSBiaW5hcnkgZm9yIHRoZSBjdXJyZW50IHBsYXRmb3JtLlxuICovXG5cbmltcG9ydCB7IGpvaW4sIHJlc29sdmUgfSBmcm9tICdwYXRoJztcblxuLy8gVHJ5IHRvIGxvYWQgdGhlIG5hdGl2ZSBtb2R1bGVcbmxldCBuYXRpdmVNb2R1bGU6IE5hdGl2ZVJ1dkxMTSB8IG51bGwgPSBudWxsO1xuXG5pbnRlcmZhY2UgTmF0aXZlUnV2TExNIHtcbiAgLy8gTmF0aXZlIGV4cG9ydHMgUnV2TGxtRW5naW5lIChjYW1lbENhc2UpLCB3ZSBub3JtYWxpemUgdG8gUnV2TExNRW5naW5lXG4gIFJ1dkxMTUVuZ2luZTogbmV3IChjb25maWc/OiBOYXRpdmVDb25maWcpID0+IE5hdGl2ZUVuZ2luZTtcbiAgU2ltZE9wZXJhdGlvbnM6IG5ldyAoKSA9PiBOYXRpdmVTaW1kT3BzO1xuICB2ZXJzaW9uOiAoKSA9PiBzdHJpbmc7XG4gIGhhc1NpbWRTdXBwb3J0OiAoKSA9PiBib29sZWFuO1xufVxuXG4vLyBSYXcgbmF0aXZlIG1vZHVsZSBpbnRlcmZhY2UgKGFjdHVhbCBleHBvcnQgbmFtZXMpXG5pbnRlcmZhY2UgUmF3TmF0aXZlTW9kdWxlIHtcbiAgUnV2TGxtRW5naW5lPzogbmV3IChjb25maWc/OiBOYXRpdmVDb25maWcpID0+IE5hdGl2ZUVuZ2luZTtcbiAgUnV2TExNRW5naW5lPzogbmV3IChjb25maWc/OiBOYXRpdmVDb25maWcpID0+IE5hdGl2ZUVuZ2luZTtcbiAgU2ltZE9wZXJhdGlvbnM6IG5ldyAoKSA9PiBOYXRpdmVTaW1kT3BzO1xuICB2ZXJzaW9uOiAoKSA9PiBzdHJpbmc7XG4gIGhhc1NpbWRTdXBwb3J0OiAoKSA9PiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgTmF0aXZlQ29uZmlnIHtcbiAgZW1iZWRkaW5nX2RpbT86IG51bWJlcjtcbiAgcm91dGVyX2hpZGRlbl9kaW0/OiBudW1iZXI7XG4gIGhuc3dfbT86IG51bWJlcjtcbiAgaG5zd19lZl9jb25zdHJ1Y3Rpb24/OiBudW1iZXI7XG4gIGhuc3dfZWZfc2VhcmNoPzogbnVtYmVyO1xuICBsZWFybmluZ19lbmFibGVkPzogYm9vbGVhbjtcbiAgcXVhbGl0eV90aHJlc2hvbGQ/OiBudW1iZXI7XG4gIGV3Y19sYW1iZGE/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBOYXRpdmVFbmdpbmUge1xuICBxdWVyeSh0ZXh0OiBzdHJpbmcsIGNvbmZpZz86IE5hdGl2ZUdlbkNvbmZpZyk6IE5hdGl2ZVF1ZXJ5UmVzcG9uc2U7XG4gIC8qKlxuICAgKiBCdWlsZHMgd2l0aCBgbG9hZE1vZGVsYCByZXR1cm4gYSBnZW5lcmF0aW9uIHJlc3VsdCBhbmQgdGhyb3cgd2hpbGUgbm9cbiAgICogbW9kZWwgaXMgbG9hZGVkOyBvbGRlciBidWlsZHMgKHRoZSAyLjAueCBwbGF0Zm9ybSBwYWNrYWdlcykgcmV0dXJuIGFcbiAgICogc3RyaW5nIHRoYXQgaXMgbm90IG1vZGVsIG91dHB1dCwgc28gdGhlIHdyYXBwZXIgbmV2ZXIgY2FsbHMgdGhlbS5cbiAgICovXG4gIGdlbmVyYXRlKHByb21wdDogc3RyaW5nLCBjb25maWc/OiBOYXRpdmVHZW5Db25maWcpOiBOYXRpdmVHZW5lcmF0aW9uUmVzdWx0IHwgc3RyaW5nO1xuICAvKipcbiAgICogUHJlc2VudCBvbiBidWlsZHMgc2luY2UgbW9kZWwgbG9hZGluZyB3YXMgYWRkZWQuIFRob3NlIGJ1aWx0IHdpdGhvdXQgdGhlXG4gICAqIGBjYW5kbGVgIGZlYXR1cmUgdGhyb3cgYFJVVkxMTV9OT19JTkZFUkVOQ0VfQkFDS0VORGA7IHNlZVxuICAgKiBgc3VwcG9ydHNNb2RlbExvYWRpbmdgLlxuICAgKi9cbiAgbG9hZE1vZGVsPyhwYXRoOiBzdHJpbmcsIG9wdGlvbnM/OiBOYXRpdmVMb2FkTW9kZWxPcHRpb25zKTogTmF0aXZlTW9kZWxJbmZvO1xuICAvKiogV2hldGhlciB0aGUgYmluYXJ5IHdhcyBidWlsdCB3aXRoIHRoZSBgY2FuZGxlYCBmZWF0dXJlIChhYnNlbnQgb24gb2xkZXIgYnVpbGRzKS4gKi9cbiAgc3VwcG9ydHNNb2RlbExvYWRpbmc/KCk6IGJvb2xlYW47XG4gIHVubG9hZE1vZGVsPygpOiB2b2lkO1xuICBpc01vZGVsTG9hZGVkPygpOiBib29sZWFuO1xuICBtb2RlbEluZm8/KCk6IE5hdGl2ZU1vZGVsSW5mbyB8IG51bGw7XG4gIGNoYXQ/KG1lc3NhZ2VzOiBOYXRpdmVDaGF0TWVzc2FnZVtdLCBjb25maWc/OiBOYXRpdmVHZW5Db25maWcpOiBOYXRpdmVHZW5lcmF0aW9uUmVzdWx0O1xuICByb3V0ZSh0ZXh0OiBzdHJpbmcpOiBOYXRpdmVSb3V0aW5nRGVjaXNpb247XG4gIHNlYXJjaE1lbW9yeSh0ZXh0OiBzdHJpbmcsIGs/OiBudW1iZXIpOiBOYXRpdmVNZW1vcnlSZXN1bHRbXTtcbiAgLyoqIEN1cnJlbnQgbmF0aXZlIGJ1aWxkcyByZXR1cm4gYSBVVUlEIHN0cmluZzsgb2xkZXIgb25lcyByZXR1cm5lZCBhIG51bWJlci4gKi9cbiAgYWRkTWVtb3J5KGNvbnRlbnQ6IHN0cmluZywgbWV0YWRhdGE/OiBzdHJpbmcpOiBzdHJpbmcgfCBudW1iZXI7XG4gIGZlZWRiYWNrKHJlcXVlc3RJZDogc3RyaW5nLCByYXRpbmc6IG51bWJlciwgY29ycmVjdGlvbj86IHN0cmluZyk6IGJvb2xlYW47XG4gIHN0YXRzKCk6IE5hdGl2ZVN0YXRzO1xuICBmb3JjZUxlYXJuKCk6IHN0cmluZztcbiAgZW1iZWQodGV4dDogc3RyaW5nKTogbnVtYmVyW107XG4gIHNpbWlsYXJpdHkodGV4dDE6IHN0cmluZywgdGV4dDI6IHN0cmluZyk6IG51bWJlcjtcbiAgaGFzU2ltZCgpOiBib29sZWFuO1xuICBzaW1kQ2FwYWJpbGl0aWVzKCk6IHN0cmluZ1tdO1xufVxuXG4vLyBuYXBpLXJzIHJlYWRzIGAjW25hcGkob2JqZWN0KV1gIGZpZWxkcyBieSB0aGVpciBjYW1lbENhc2UgbmFtZXM7IHNuYWtlX2Nhc2Vcbi8vIGtleXMgYXJlIHNpbGVudGx5IGlnbm9yZWQgKHdoaWNoIGlzIGhvdyBgbWF4VG9rZW5zYCB1c2VkIHRvIGJlIGRyb3BwZWQpLlxuaW50ZXJmYWNlIE5hdGl2ZUdlbkNvbmZpZyB7XG4gIG1heFRva2Vucz86IG51bWJlcjtcbiAgdGVtcGVyYXR1cmU/OiBudW1iZXI7XG4gIHRvcFA/OiBudW1iZXI7XG4gIHRvcEs/OiBudW1iZXI7XG4gIHJlcGV0aXRpb25QZW5hbHR5PzogbnVtYmVyO1xuICBzdG9wU2VxdWVuY2VzPzogc3RyaW5nW107XG4gIHNlZWQ/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBOYXRpdmVMb2FkTW9kZWxPcHRpb25zIHtcbiAgbWF4Q29udGV4dD86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZUNoYXRNZXNzYWdlIHtcbiAgcm9sZTogc3RyaW5nO1xuICBjb250ZW50OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBOYXRpdmVHZW5lcmF0aW9uUmVzdWx0IHtcbiAgdGV4dDogc3RyaW5nO1xuICBwcm9tcHRUb2tlbnM6IG51bWJlcjtcbiAgY29tcGxldGlvblRva2VuczogbnVtYmVyO1xuICBmaW5pc2hSZWFzb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZU1vZGVsSW5mbyB7XG4gIG5hbWU6IHN0cmluZztcbiAgYXJjaGl0ZWN0dXJlOiBzdHJpbmc7XG4gIG51bVBhcmFtZXRlcnM6IG51bWJlcjtcbiAgdm9jYWJTaXplOiBudW1iZXI7XG4gIGhpZGRlblNpemU6IG51bWJlcjtcbiAgbnVtTGF5ZXJzOiBudW1iZXI7XG4gIG1heENvbnRleHRMZW5ndGg6IG51bWJlcjtcbiAgcXVhbnRpemF0aW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgbWVtb3J5VXNhZ2VCeXRlczogbnVtYmVyO1xuICBjaGF0VGVtcGxhdGU/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBuYXBpLXJzIGNhbWVsQ2FzZXMgUnVzdCBzdHJ1Y3QgZmllbGRzIHdoZW4gaXQgYnVpbGRzIHRoZSBKUyBvYmplY3QsIHNvIHRoZVxuLy8gcmVhbCBuYXRpdmUgc2hhcGUgaXMgY2FtZWxDYXNlLiBUaGVzZSBpbnRlcmZhY2VzIHByZXZpb3VzbHkgZGVjbGFyZWQgb25seVxuLy8gc25ha2VfY2FzZSwgd2hpY2ggaXMgd2h5IHRoZSB3cmFwcGVyJ3Mgc25ha2VfY2FzZSByZWFkcyB0eXBlY2hlY2tlZCB3aGlsZVxuLy8gc2lsZW50bHkgeWllbGRpbmcgdW5kZWZpbmVkIGF0IHJ1bnRpbWUuIEJvdGggc3BlbGxpbmdzIGFyZSBkZWNsYXJlZCDigJRcbi8vIGNhbWVsQ2FzZSByZXF1aXJlZCwgc25ha2VfY2FzZSBvcHRpb25hbCDigJQgc28gb2xkZXIgbmF0aXZlIGJ1aWxkcyBzdGlsbCBmaXQuXG5pbnRlcmZhY2UgTmF0aXZlUXVlcnlSZXNwb25zZSB7XG4gIHRleHQ6IHN0cmluZztcbiAgY29uZmlkZW5jZTogbnVtYmVyO1xuICBtb2RlbDogc3RyaW5nO1xuICBjb250ZXh0U2l6ZTogbnVtYmVyO1xuICBsYXRlbmN5TXM6IG51bWJlcjtcbiAgcmVxdWVzdElkOiBzdHJpbmc7XG4gIC8qKiBCdWlsZHMgd2l0aCBgbG9hZE1vZGVsYCBhbHNvIHJlcG9ydCB0b2tlbiB1c2FnZS4gKi9cbiAgcHJvbXB0VG9rZW5zPzogbnVtYmVyO1xuICBjb21wbGV0aW9uVG9rZW5zPzogbnVtYmVyO1xuICBmaW5pc2hSZWFzb24/OiBzdHJpbmc7XG4gIGNvbnRleHRfc2l6ZT86IG51bWJlcjtcbiAgbGF0ZW5jeV9tcz86IG51bWJlcjtcbiAgcmVxdWVzdF9pZD86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZVJvdXRpbmdEZWNpc2lvbiB7XG4gIG1vZGVsOiBzdHJpbmc7XG4gIGNvbnRleHRTaXplOiBudW1iZXI7XG4gIHRlbXBlcmF0dXJlOiBudW1iZXI7XG4gIHRvcF9wPzogbnVtYmVyO1xuICB0b3BQOiBudW1iZXI7XG4gIGNvbmZpZGVuY2U6IG51bWJlcjtcbiAgY29udGV4dF9zaXplPzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgTmF0aXZlTWVtb3J5UmVzdWx0IHtcbiAgaWQ6IHN0cmluZyB8IG51bWJlcjtcbiAgLyoqIERpc3RhbmNlIChzbWFsbGVyIGlzIGNsb3NlcikgYXMgcmVwb3J0ZWQgYnkgdGhlIGN1cnJlbnQgbmF0aXZlIGJ1aWxkLiAqL1xuICBkaXN0YW5jZT86IG51bWJlcjtcbiAgLyoqIFNpbWlsYXJpdHksIGVtaXR0ZWQgYnkgb2xkZXIgbmF0aXZlIGJ1aWxkcy4gKi9cbiAgc2NvcmU/OiBudW1iZXI7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgbWV0YWRhdGE6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZVN0YXRzIHtcbiAgdG90YWxfcXVlcmllczogbnVtYmVyO1xuICBtZW1vcnlfbm9kZXM6IG51bWJlcjtcbiAgcGF0dGVybnNfbGVhcm5lZDogbnVtYmVyO1xuICBhdmdfbGF0ZW5jeV9tczogbnVtYmVyO1xuICBjYWNoZV9oaXRfcmF0ZTogbnVtYmVyO1xuICByb3V0ZXJfYWNjdXJhY3k6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZVNpbWRPcHMge1xuICBkb3RQcm9kdWN0KGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlcjtcbiAgY29zaW5lU2ltaWxhcml0eShhOiBudW1iZXJbXSwgYjogbnVtYmVyW10pOiBudW1iZXI7XG4gIGwyRGlzdGFuY2UoYTogbnVtYmVyW10sIGI6IG51bWJlcltdKTogbnVtYmVyO1xuICBtYXR2ZWMobWF0cml4OiBudW1iZXJbXVtdLCB2ZWN0b3I6IG51bWJlcltdKTogbnVtYmVyW107XG4gIHNvZnRtYXgoaW5wdXQ6IG51bWJlcltdKTogbnVtYmVyW107XG59XG5cbi8vIFBsYXRmb3JtLXNwZWNpZmljIHBhY2thZ2UgbmFtZXNcbmNvbnN0IFBMQVRGT1JNX1BBQ0tBR0VTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnZGFyd2luLXg2NCc6ICdAcnV2ZWN0b3IvcnV2bGxtLWRhcndpbi14NjQnLFxuICAnZGFyd2luLWFybTY0JzogJ0BydXZlY3Rvci9ydXZsbG0tZGFyd2luLWFybTY0JyxcbiAgJ2xpbnV4LXg2NCc6ICdAcnV2ZWN0b3IvcnV2bGxtLWxpbnV4LXg2NC1nbnUnLFxuICAnbGludXgtYXJtNjQnOiAnQHJ1dmVjdG9yL3J1dmxsbS1saW51eC1hcm02NC1nbnUnLFxuICAnd2luMzIteDY0JzogJ0BydXZlY3Rvci9ydXZsbG0td2luMzIteDY0LW1zdmMnLFxufTtcblxuZnVuY3Rpb24gZ2V0UGxhdGZvcm1LZXkoKTogc3RyaW5nIHtcbiAgY29uc3QgcGxhdGZvcm0gPSBwcm9jZXNzLnBsYXRmb3JtO1xuICBjb25zdCBhcmNoID0gcHJvY2Vzcy5hcmNoO1xuICByZXR1cm4gYCR7cGxhdGZvcm19LSR7YXJjaH1gO1xufVxuXG5mdW5jdGlvbiBsb2FkTmF0aXZlTW9kdWxlKCk6IE5hdGl2ZVJ1dkxMTSB8IG51bGwge1xuICBpZiAobmF0aXZlTW9kdWxlKSB7XG4gICAgcmV0dXJuIG5hdGl2ZU1vZHVsZTtcbiAgfVxuXG4gIC8vIEFuIGV4cGxpY2l0IGJpbmFyeSAoZS5nLiBvbmUgYnVpbHQgbG9jYWxseSB3aXRoIGBucG0gcnVuIGJ1aWxkOm5hdGl2ZWApXG4gIC8vIHdpbnMgb3ZlciB0aGUgaW5zdGFsbGVkIHBsYXRmb3JtIHBhY2thZ2UuIEZhaWxpbmcgdG8gbG9hZCBpdCBpcyBhblxuICAvLyBlcnJvciwgbm90IGEgc2lsZW50IGZhbGxiYWNrIHRvIGEgZGlmZmVyZW50IGJpbmFyeS5cbiAgY29uc3Qgb3ZlcnJpZGUgPSBwcm9jZXNzLmVudi5SVVZMTE1fTkFUSVZFX1BBVEg7XG4gIGlmIChvdmVycmlkZSkge1xuICAgIHRyeSB7XG4gICAgICAvLyByZXNvbHZlKCk6IGEgcmVsYXRpdmUgcGF0aCBtZWFucyByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3RvcnksXG4gICAgICAvLyBub3QgdG8gdGhpcyBmaWxlLlxuICAgICAgbmF0aXZlTW9kdWxlID0gbm9ybWFsaXplKHJlcXVpcmUocmVzb2x2ZShvdmVycmlkZSkpIGFzIFJhd05hdGl2ZU1vZHVsZSk7XG4gICAgICByZXR1cm4gbmF0aXZlTW9kdWxlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFJVVkxMTV9OQVRJVkVfUEFUSD0ke292ZXJyaWRlfSBjb3VsZCBub3QgYmUgbG9hZGVkOiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBsYXRmb3JtS2V5ID0gZ2V0UGxhdGZvcm1LZXkoKTtcbiAgY29uc3QgcGFja2FnZU5hbWUgPSBQTEFURk9STV9QQUNLQUdFU1twbGF0Zm9ybUtleV07XG5cbiAgaWYgKCFwYWNrYWdlTmFtZSkge1xuICAgIC8vIFNpbGVudGx5IGZhaWwgLSBKUyBmYWxsYmFjayB3aWxsIGJlIHVzZWRcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBgbmFwaSBidWlsZCAtLXBsYXRmb3JtYCBuYW1lcyBpdHMgb3V0cHV0IHJ1dmxsbS48cGxhdGZvcm0+Lm5vZGVcbiAgY29uc3QgcGxhdGZvcm1GaWxlID0gYHJ1dmxsbS4ke3BhY2thZ2VOYW1lLnJlcGxhY2UoJ0BydXZlY3Rvci9ydXZsbG0tJywgJycpfS5ub2RlYDtcblxuICAvLyBUcnkgbG9hZGluZyBmcm9tIG9wdGlvbmFsIGRlcGVuZGVuY2llc1xuICBjb25zdCBhdHRlbXB0cyA9IFtcbiAgICAvLyBUcnkgdGhlIHBsYXRmb3JtLXNwZWNpZmljIHBhY2thZ2VcbiAgICAoKSA9PiByZXF1aXJlKHBhY2thZ2VOYW1lKSxcbiAgICAvLyBUcnkgbG9hZGluZyBmcm9tIGxvY2FsIC5ub2RlIGZpbGUgKENKUyBidWlsZClcbiAgICAoKSA9PiByZXF1aXJlKGpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAncnV2bGxtLm5vZGUnKSksXG4gICAgLy8gVHJ5IGxvYWRpbmcgZnJvbSBsb2NhbCAubm9kZSBmaWxlIChyb290KVxuICAgICgpID0+IHJlcXVpcmUoam9pbihfX2Rpcm5hbWUsICcuLicsICdydXZsbG0ubm9kZScpKSxcbiAgICAvLyBPdXRwdXQgb2YgYG5wbSBydW4gYnVpbGQ6bmF0aXZlYCBpbiB0aGUgcGFja2FnZSByb290XG4gICAgKCkgPT4gcmVxdWlyZShqb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgcGxhdGZvcm1GaWxlKSksXG4gIF07XG5cbiAgZm9yIChjb25zdCBhdHRlbXB0IG9mIGF0dGVtcHRzKSB7XG4gICAgdHJ5IHtcbiAgICAgIG5hdGl2ZU1vZHVsZSA9IG5vcm1hbGl6ZShhdHRlbXB0KCkgYXMgUmF3TmF0aXZlTW9kdWxlKTtcbiAgICAgIHJldHVybiBuYXRpdmVNb2R1bGU7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBDb250aW51ZSB0byBuZXh0IGF0dGVtcHRcbiAgICB9XG4gIH1cblxuICAvLyBTaWxlbnRseSBmYWxsIGJhY2sgdG8gSlMgaW1wbGVtZW50YXRpb25cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8vIE5vcm1hbGl6ZTogbmF0aXZlIGV4cG9ydHMgUnV2TGxtRW5naW5lLCB3ZSBleHBvc2UgYXMgUnV2TExNRW5naW5lXG5mdW5jdGlvbiBub3JtYWxpemUocmF3OiBSYXdOYXRpdmVNb2R1bGUpOiBOYXRpdmVSdXZMTE0ge1xuICByZXR1cm4ge1xuICAgIFJ1dkxMTUVuZ2luZTogcmF3LlJ1dkxMTUVuZ2luZSA/PyByYXcuUnV2TGxtRW5naW5lISxcbiAgICBTaW1kT3BlcmF0aW9uczogcmF3LlNpbWRPcGVyYXRpb25zLFxuICAgIHZlcnNpb246IHJhdy52ZXJzaW9uLFxuICAgIGhhc1NpbWRTdXBwb3J0OiByYXcuaGFzU2ltZFN1cHBvcnQsXG4gIH07XG59XG5cbi8vIEV4cG9ydCBmdW5jdGlvbnMgdG8gZ2V0IG5hdGl2ZSBiaW5kaW5nc1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5hdGl2ZU1vZHVsZSgpOiBOYXRpdmVSdXZMTE0gfCBudWxsIHtcbiAgcmV0dXJuIGxvYWROYXRpdmVNb2R1bGUoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcnNpb24oKTogc3RyaW5nIHtcbiAgY29uc3QgbW9kID0gbG9hZE5hdGl2ZU1vZHVsZSgpO1xuICByZXR1cm4gbW9kPy52ZXJzaW9uKCkgPz8gJzAuMS4wLWpzJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1NpbWRTdXBwb3J0KCk6IGJvb2xlYW4ge1xuICBjb25zdCBtb2QgPSBsb2FkTmF0aXZlTW9kdWxlKCk7XG4gIHJldHVybiBtb2Q/Lmhhc1NpbWRTdXBwb3J0KCkgPz8gZmFsc2U7XG59XG5cbi8vIEV4cG9ydCB0eXBlcyBmb3IgaW50ZXJuYWwgdXNlXG5leHBvcnQgdHlwZSB7XG4gIE5hdGl2ZVJ1dkxMTSxcbiAgTmF0aXZlQ29uZmlnLFxuICBOYXRpdmVFbmdpbmUsXG4gIE5hdGl2ZUdlbkNvbmZpZyxcbiAgTmF0aXZlTG9hZE1vZGVsT3B0aW9ucyxcbiAgTmF0aXZlQ2hhdE1lc3NhZ2UsXG4gIE5hdGl2ZUdlbmVyYXRpb25SZXN1bHQsXG4gIE5hdGl2ZU1vZGVsSW5mbyxcbiAgTmF0aXZlUXVlcnlSZXNwb25zZSxcbiAgTmF0aXZlUm91dGluZ0RlY2lzaW9uLFxuICBOYXRpdmVNZW1vcnlSZXN1bHQsXG4gIE5hdGl2ZVN0YXRzLFxuICBOYXRpdmVTaW1kT3BzLFxufTtcbiJdfQ==
@@ -1,80 +0,0 @@
1
- /**
2
- * Session Management for multi-turn conversations
3
- */
4
- import { ConversationSession, ConversationMessage, QueryResponse, GenerationConfig } from './types.js';
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"}
@@ -1,199 +0,0 @@
1
- /**
2
- * Session Management for multi-turn conversations
3
- */
4
- /**
5
- * Session Manager for multi-turn conversations
6
- *
7
- * @example
8
- * ```typescript
9
- * import { RuvLLM, SessionManager } from '@ruvector/ruvllm';
10
- *
11
- * const llm = new RuvLLM();
12
- * const sessions = new SessionManager(llm);
13
- *
14
- * // Create a new session
15
- * const session = sessions.create();
16
- *
17
- * // Chat with context
18
- * const response1 = sessions.chat(session.id, 'What is Python?');
19
- * const response2 = sessions.chat(session.id, 'How do I install it?');
20
- * // Second query automatically has context from first
21
- * ```
22
- */
23
- export class SessionManager {
24
- constructor(llm) {
25
- this.sessions = new Map();
26
- this.llm = llm;
27
- }
28
- /**
29
- * Create a new conversation session
30
- */
31
- create(metadata) {
32
- const id = `session-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
33
- const session = {
34
- id,
35
- createdAt: new Date(),
36
- messageCount: 0,
37
- messages: [],
38
- context: [],
39
- activeMemoryIds: [],
40
- metadata: metadata ?? {},
41
- };
42
- this.sessions.set(id, session);
43
- return session;
44
- }
45
- /**
46
- * Get session by ID
47
- */
48
- get(sessionId) {
49
- return this.sessions.get(sessionId);
50
- }
51
- /**
52
- * Chat within a session (maintains context)
53
- */
54
- chat(sessionId, message, config) {
55
- const session = this.sessions.get(sessionId);
56
- if (!session) {
57
- throw new Error(`Session not found: ${sessionId}`);
58
- }
59
- // Add user message
60
- session.messages.push({
61
- role: 'user',
62
- content: message,
63
- timestamp: new Date(),
64
- });
65
- // Build context from recent messages
66
- const contextWindow = this.buildContext(session);
67
- // Query with context
68
- const prompt = contextWindow ? `${contextWindow}\n\nUser: ${message}` : message;
69
- const response = this.llm.query(prompt, config);
70
- // Add assistant response
71
- session.messages.push({
72
- role: 'assistant',
73
- content: response.text,
74
- timestamp: new Date(),
75
- requestId: response.requestId,
76
- });
77
- session.messageCount = session.messages.length;
78
- return response;
79
- }
80
- /**
81
- * Add system message to session
82
- */
83
- addSystemMessage(sessionId, content) {
84
- const session = this.sessions.get(sessionId);
85
- if (!session) {
86
- throw new Error(`Session not found: ${sessionId}`);
87
- }
88
- session.messages.push({
89
- role: 'system',
90
- content,
91
- timestamp: new Date(),
92
- });
93
- session.messageCount = session.messages.length;
94
- }
95
- /**
96
- * Add context to session (persisted to memory)
97
- */
98
- addContext(sessionId, context) {
99
- const session = this.sessions.get(sessionId);
100
- if (!session) {
101
- throw new Error(`Session not found: ${sessionId}`);
102
- }
103
- session.context.push(context);
104
- // Also store in memory for retrieval
105
- const memoryId = this.llm.addMemory(context, {
106
- sessionId,
107
- type: 'context',
108
- timestamp: new Date().toISOString(),
109
- });
110
- session.activeMemoryIds.push(memoryId);
111
- return memoryId;
112
- }
113
- /**
114
- * Get conversation history
115
- */
116
- getHistory(sessionId, limit) {
117
- const session = this.sessions.get(sessionId);
118
- if (!session) {
119
- return [];
120
- }
121
- const messages = session.messages;
122
- return limit ? messages.slice(-limit) : messages;
123
- }
124
- /**
125
- * Clear session history (keep session active)
126
- */
127
- clearHistory(sessionId) {
128
- const session = this.sessions.get(sessionId);
129
- if (session) {
130
- session.messages = [];
131
- session.context = [];
132
- session.messageCount = 0;
133
- }
134
- }
135
- /**
136
- * End and delete session
137
- */
138
- end(sessionId) {
139
- return this.sessions.delete(sessionId);
140
- }
141
- /**
142
- * List all active sessions
143
- */
144
- list() {
145
- return Array.from(this.sessions.values());
146
- }
147
- /**
148
- * Export session as JSON
149
- */
150
- export(sessionId) {
151
- const session = this.sessions.get(sessionId);
152
- if (!session) {
153
- return null;
154
- }
155
- return JSON.stringify(session, null, 2);
156
- }
157
- /**
158
- * Import session from JSON
159
- */
160
- import(json) {
161
- const data = JSON.parse(json);
162
- const session = {
163
- ...data,
164
- createdAt: new Date(data.createdAt),
165
- messages: data.messages.map((m) => ({
166
- ...m,
167
- timestamp: new Date(m.timestamp),
168
- })),
169
- };
170
- this.sessions.set(session.id, session);
171
- return session;
172
- }
173
- /**
174
- * Build context string from recent messages
175
- */
176
- buildContext(session, maxMessages = 10) {
177
- const recent = session.messages.slice(-maxMessages);
178
- if (recent.length === 0) {
179
- return '';
180
- }
181
- const contextParts = [];
182
- // Add persistent context
183
- if (session.context.length > 0) {
184
- contextParts.push('Context:\n' + session.context.join('\n'));
185
- }
186
- // Add conversation history
187
- const history = recent
188
- .map(m => {
189
- const role = m.role === 'user' ? 'User' : m.role === 'assistant' ? 'Assistant' : 'System';
190
- return `${role}: ${m.content}`;
191
- })
192
- .join('\n');
193
- if (history) {
194
- contextParts.push('Conversation:\n' + history);
195
- }
196
- return contextParts.join('\n\n');
197
- }
198
- }
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBU0g7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBSXpCLFlBQVksR0FBc0o7UUFIMUosYUFBUSxHQUFxQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBSTdELElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxRQUFrQztRQUN2QyxNQUFNLEVBQUUsR0FBRyxXQUFXLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3RSxNQUFNLE9BQU8sR0FBd0I7WUFDbkMsRUFBRTtZQUNGLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRTtZQUNyQixZQUFZLEVBQUUsQ0FBQztZQUNmLFFBQVEsRUFBRSxFQUFFO1lBQ1osT0FBTyxFQUFFLEVBQUU7WUFDWCxlQUFlLEVBQUUsRUFBRTtZQUNuQixRQUFRLEVBQUUsUUFBUSxJQUFJLEVBQUU7U0FDekIsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvQixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxHQUFHLENBQUMsU0FBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLENBQUMsU0FBaUIsRUFBRSxPQUFlLEVBQUUsTUFBeUI7UUFDaEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFD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QUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQzFGLE9BQU8sR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVkLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZXNzaW9uIE1hbmFnZW1lbnQgZm9yIG11bHRpLXR1cm4gY29udmVyc2F0aW9uc1xuICovXG5cbmltcG9ydCB7XG4gIENvbnZlcnNhdGlvblNlc3Npb24sXG4gIENvbnZlcnNhdGlvbk1lc3NhZ2UsXG4gIFF1ZXJ5UmVzcG9uc2UsXG4gIEdlbmVyYXRpb25Db25maWcsXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFNlc3Npb24gTWFuYWdlciBmb3IgbXVsdGktdHVybiBjb252ZXJzYXRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IFJ1dkxMTSwgU2Vzc2lvbk1hbmFnZXIgfSBmcm9tICdAcnV2ZWN0b3IvcnV2bGxtJztcbiAqXG4gKiBjb25zdCBsbG0gPSBuZXcgUnV2TExNKCk7XG4gKiBjb25zdCBzZXNzaW9ucyA9IG5ldyBTZXNzaW9uTWFuYWdlcihsbG0pO1xuICpcbiAqIC8vIENyZWF0ZSBhIG5ldyBzZXNzaW9uXG4gKiBjb25zdCBzZXNzaW9uID0gc2Vzc2lvbnMuY3JlYXRlKCk7XG4gKlxuICogLy8gQ2hhdCB3aXRoIGNvbnRleHRcbiAqIGNvbnN0IHJlc3BvbnNlMSA9IHNlc3Npb25zLmNoYXQoc2Vzc2lvbi5pZCwgJ1doYXQgaXMgUHl0aG9uPycpO1xuICogY29uc3QgcmVzcG9uc2UyID0gc2Vzc2lvbnMuY2hhdChzZXNzaW9uLmlkLCAnSG93IGRvIEkgaW5zdGFsbCBpdD8nKTtcbiAqIC8vIFNlY29uZCBxdWVyeSBhdXRvbWF0aWNhbGx5IGhhcyBjb250ZXh0IGZyb20gZmlyc3RcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU2Vzc2lvbk1hbmFnZXIge1xuICBwcml2YXRlIHNlc3Npb25zOiBNYXA8c3RyaW5nLCBDb252ZXJzYXRpb25TZXNzaW9uPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBsbG06IHsgcXVlcnk6ICh0ZXh0OiBzdHJpbmcsIGNvbmZpZz86IEdlbmVyYXRpb25Db25maWcpID0+IFF1ZXJ5UmVzcG9uc2U7IGFkZE1lbW9yeTogKGNvbnRlbnQ6IHN0cmluZywgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gbnVtYmVyIH07XG5cbiAgY29uc3RydWN0b3IobGxtOiB7IHF1ZXJ5OiAodGV4dDogc3RyaW5nLCBjb25maWc/OiBHZW5lcmF0aW9uQ29uZmlnKSA9PiBRdWVyeVJlc3BvbnNlOyBhZGRNZW1vcnk6IChjb250ZW50OiBzdHJpbmcsIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IG51bWJlciB9KSB7XG4gICAgdGhpcy5sbG0gPSBsbG07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGNvbnZlcnNhdGlvbiBzZXNzaW9uXG4gICAqL1xuICBjcmVhdGUobWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IENvbnZlcnNhdGlvblNlc3Npb24ge1xuICAgIGNvbnN0IGlkID0gYHNlc3Npb24tJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsIDgpfWA7XG4gICAgY29uc3Qgc2Vzc2lvbjogQ29udmVyc2F0aW9uU2Vzc2lvbiA9IHtcbiAgICAgIGlkLFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgbWVzc2FnZUNvdW50OiAwLFxuICAgICAgbWVzc2FnZXM6IFtdLFxuICAgICAgY29udGV4dDogW10sXG4gICAgICBhY3RpdmVNZW1vcnlJZHM6IFtdLFxuICAgICAgbWV0YWRhdGE6IG1ldGFkYXRhID8/IHt9LFxuICAgIH07XG4gICAgdGhpcy5zZXNzaW9ucy5zZXQoaWQsIHNlc3Npb24pO1xuICAgIHJldHVybiBzZXNzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBzZXNzaW9uIGJ5IElEXG4gICAqL1xuICBnZXQoc2Vzc2lvbklkOiBzdHJpbmcpOiBDb252ZXJzYXRpb25TZXNzaW9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9ucy5nZXQoc2Vzc2lvbklkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGF0IHdpdGhpbiBhIHNlc3Npb24gKG1haW50YWlucyBjb250ZXh0KVxuICAgKi9cbiAgY2hhdChzZXNzaW9uSWQ6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCBjb25maWc/OiBHZW5lcmF0aW9uQ29uZmlnKTogUXVlcnlSZXNwb25zZSB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZ2V0KHNlc3Npb25JZCk7XG4gICAgaWYgKCFzZXNzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlc3Npb24gbm90IGZvdW5kOiAke3Nlc3Npb25JZH1gKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgdXNlciBtZXNzYWdlXG4gICAgc2Vzc2lvbi5tZXNzYWdlcy5wdXNoKHtcbiAgICAgIHJvbGU6ICd1c2VyJyxcbiAgICAgIGNvbnRlbnQ6IG1lc3NhZ2UsXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgfSk7XG5cbiAgICAvLyBCdWlsZCBjb250ZXh0IGZyb20gcmVjZW50IG1lc3NhZ2VzXG4gICAgY29uc3QgY29udGV4dFdpbmRvdyA9IHRoaXMuYnVpbGRDb250ZXh0KHNlc3Npb24pO1xuXG4gICAgLy8gUXVlcnkgd2l0aCBjb250ZXh0XG4gICAgY29uc3QgcHJvbXB0ID0gY29udGV4dFdpbmRvdyA/IGAke2NvbnRleHRXaW5kb3d9XFxuXFxuVXNlcjogJHttZXNzYWdlfWAgOiBtZXNzYWdlO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5sbG0ucXVlcnkocHJvbXB0LCBjb25maWcpO1xuXG4gICAgLy8gQWRkIGFzc2lzdGFudCByZXNwb25zZVxuICAgIHNlc3Npb24ubWVzc2FnZXMucHVzaCh7XG4gICAgICByb2xlOiAnYXNzaXN0YW50JyxcbiAgICAgIGNvbnRlbnQ6IHJlc3BvbnNlLnRleHQsXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgICByZXF1ZXN0SWQ6IHJlc3BvbnNlLnJlcXVlc3RJZCxcbiAgICB9KTtcblxuICAgIHNlc3Npb24ubWVzc2FnZUNvdW50ID0gc2Vzc2lvbi5tZXNzYWdlcy5sZW5ndGg7XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICAvKipcbiAgICogQWRkIHN5c3RlbSBtZXNzYWdlIHRvIHNlc3Npb25cbiAgICovXG4gIGFkZFN5c3RlbU1lc3NhZ2Uoc2Vzc2lvbklkOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25zLmdldChzZXNzaW9uSWQpO1xuICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXNzaW9uIG5vdCBmb3VuZDogJHtzZXNzaW9uSWR9YCk7XG4gICAgfVxuXG4gICAgc2Vzc2lvbi5tZXNzYWdlcy5wdXNoKHtcbiAgICAgIHJvbGU6ICdzeXN0ZW0nLFxuICAgICAgY29udGVudCxcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcbiAgICB9KTtcbiAgICBzZXNzaW9uLm1lc3NhZ2VDb3VudCA9IHNlc3Npb24ubWVzc2FnZXMubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBjb250ZXh0IHRvIHNlc3Npb24gKHBlcnNpc3RlZCB0byBtZW1vcnkpXG4gICAqL1xuICBhZGRDb250ZXh0KHNlc3Npb25JZDogc3RyaW5nLCBjb250ZXh0OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25zLmdldChzZXNzaW9uSWQpO1xuICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXNzaW9uIG5vdCBmb3VuZDogJHtzZXNzaW9uSWR9YCk7XG4gICAgfVxuXG4gICAgc2Vzc2lvbi5jb250ZXh0LnB1c2goY29udGV4dCk7XG5cbiAgICAvLyBBbHNvIHN0b3JlIGluIG1lbW9yeSBmb3IgcmV0cmlldmFsXG4gICAgY29uc3QgbWVtb3J5SWQgPSB0aGlzLmxsbS5hZGRNZW1vcnkoY29udGV4dCwge1xuICAgICAgc2Vzc2lvbklkLFxuICAgICAgdHlwZTogJ2NvbnRleHQnLFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfSk7XG5cbiAgICBzZXNzaW9uLmFjdGl2ZU1lbW9yeUlkcy5wdXNoKG1lbW9yeUlkKTtcbiAgICByZXR1cm4gbWVtb3J5SWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNvbnZlcnNhdGlvbiBoaXN0b3J5XG4gICAqL1xuICBnZXRIaXN0b3J5KHNlc3Npb25JZDogc3RyaW5nLCBsaW1pdD86IG51bWJlcik6IENvbnZlcnNhdGlvbk1lc3NhZ2VbXSB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZ2V0KHNlc3Npb25JZCk7XG4gICAgaWYgKCFzZXNzaW9uKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgbWVzc2FnZXMgPSBzZXNzaW9uLm1lc3NhZ2VzO1xuICAgIHJldHVybiBsaW1pdCA/IG1lc3NhZ2VzLnNsaWNlKC1saW1pdCkgOiBtZXNzYWdlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBzZXNzaW9uIGhpc3RvcnkgKGtlZXAgc2Vzc2lvbiBhY3RpdmUpXG4gICAqL1xuICBjbGVhckhpc3Rvcnkoc2Vzc2lvbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9ucy5nZXQoc2Vzc2lvbklkKTtcbiAgICBpZiAoc2Vzc2lvbikge1xuICAgICAgc2Vzc2lvbi5tZXNzYWdlcyA9IFtdO1xuICAgICAgc2Vzc2lvbi5jb250ZXh0ID0gW107XG4gICAgICBzZXNzaW9uLm1lc3NhZ2VDb3VudCA9IDA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVuZCBhbmQgZGVsZXRlIHNlc3Npb25cbiAgICovXG4gIGVuZChzZXNzaW9uSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlc3Npb25zLmRlbGV0ZShzZXNzaW9uSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgYWxsIGFjdGl2ZSBzZXNzaW9uc1xuICAgKi9cbiAgbGlzdCgpOiBDb252ZXJzYXRpb25TZXNzaW9uW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuc2Vzc2lvbnMudmFsdWVzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydCBzZXNzaW9uIGFzIEpTT05cbiAgICovXG4gIGV4cG9ydChzZXNzaW9uSWQ6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25zLmdldChzZXNzaW9uSWQpO1xuICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHNlc3Npb24sIG51bGwsIDIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBzZXNzaW9uIGZyb20gSlNPTlxuICAgKi9cbiAgaW1wb3J0KGpzb246IHN0cmluZyk6IENvbnZlcnNhdGlvblNlc3Npb24ge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGpzb24pO1xuICAgIGNvbnN0IHNlc3Npb246IENvbnZlcnNhdGlvblNlc3Npb24gPSB7XG4gICAgICAuLi5kYXRhLFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZShkYXRhLmNyZWF0ZWRBdCksXG4gICAgICBtZXNzYWdlczogZGF0YS5tZXNzYWdlcy5tYXAoKG06IENvbnZlcnNhdGlvbk1lc3NhZ2UpID0+ICh7XG4gICAgICAgIC4uLm0sXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUobS50aW1lc3RhbXApLFxuICAgICAgfSkpLFxuICAgIH07XG5cbiAgICB0aGlzLnNlc3Npb25zLnNldChzZXNzaW9uLmlkLCBzZXNzaW9uKTtcbiAgICByZXR1cm4gc2Vzc2lvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBjb250ZXh0IHN0cmluZyBmcm9tIHJlY2VudCBtZXNzYWdlc1xuICAgKi9cbiAgcHJpdmF0ZSBidWlsZENvbnRleHQoc2Vzc2lvbjogQ29udmVyc2F0aW9uU2Vzc2lvbiwgbWF4TWVzc2FnZXMgPSAxMCk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVjZW50ID0gc2Vzc2lvbi5tZXNzYWdlcy5zbGljZSgtbWF4TWVzc2FnZXMpO1xuICAgIGlmIChyZWNlbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dFBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLy8gQWRkIHBlcnNpc3RlbnQgY29udGV4dFxuICAgIGlmIChzZXNzaW9uLmNvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgY29udGV4dFBhcnRzLnB1c2goJ0NvbnRleHQ6XFxuJyArIHNlc3Npb24uY29udGV4dC5qb2luKCdcXG4nKSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIGNvbnZlcnNhdGlvbiBoaXN0b3J5XG4gICAgY29uc3QgaGlzdG9yeSA9IHJlY2VudFxuICAgICAgLm1hcChtID0+IHtcbiAgICAgICAgY29uc3Qgcm9sZSA9IG0ucm9sZSA9PT0gJ3VzZXInID8gJ1VzZXInIDogbS5yb2xlID09PSAnYXNzaXN0YW50JyA/ICdBc3Npc3RhbnQnIDogJ1N5c3RlbSc7XG4gICAgICAgIHJldHVybiBgJHtyb2xlfTogJHttLmNvbnRlbnR9YDtcbiAgICAgIH0pXG4gICAgICAuam9pbignXFxuJyk7XG5cbiAgICBpZiAoaGlzdG9yeSkge1xuICAgICAgY29udGV4dFBhcnRzLnB1c2goJ0NvbnZlcnNhdGlvbjpcXG4nICsgaGlzdG9yeSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRleHRQYXJ0cy5qb2luKCdcXG5cXG4nKTtcbiAgfVxufVxuIl19
@@ -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
@@ -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"}