@sparkleideas/cli 3.1.0-alpha.66 → 3.5.15-patch.14

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 (246) hide show
  1. package/.claude/agents/core/coder.md +1 -1
  2. package/.claude/agents/core/planner.md +2 -2
  3. package/.claude/agents/core/researcher.md +1 -1
  4. package/.claude/agents/core/reviewer.md +1 -1
  5. package/.claude/agents/core/tester.md +1 -1
  6. package/.claude/agents/data/data-ml-model.md +4 -4
  7. package/.claude/agents/development/dev-backend-api.md +4 -4
  8. package/.claude/agents/documentation/docs-api-openapi.md +4 -4
  9. package/.claude/agents/github/code-review-swarm.md +2 -2
  10. package/.claude/agents/github/issue-tracker.md +2 -2
  11. package/.claude/agents/github/pr-manager.md +2 -2
  12. package/.claude/agents/github/release-manager.md +2 -2
  13. package/.claude/agents/github/workflow-automation.md +2 -2
  14. package/.claude/agents/sparc/architecture.md +3 -3
  15. package/.claude/agents/sparc/pseudocode.md +2 -2
  16. package/.claude/agents/sparc/refinement.md +3 -3
  17. package/.claude/agents/sparc/specification.md +2 -2
  18. package/.claude/agents/swarm/adaptive-coordinator.md +1 -1
  19. package/.claude/agents/swarm/hierarchical-coordinator.md +1 -1
  20. package/.claude/agents/swarm/mesh-coordinator.md +1 -1
  21. package/.claude/agents/templates/base-template-generator.md +3 -3
  22. package/.claude/agents/templates/sparc-coordinator.md +3 -3
  23. package/.claude/helpers/auto-memory-hook.mjs +365 -0
  24. package/.claude/helpers/hook-handler.cjs +271 -0
  25. package/.claude/helpers/intelligence.cjs +916 -0
  26. package/.claude/helpers/learning-service.mjs +3 -3
  27. package/.claude/helpers/session.js +8 -0
  28. package/.claude/helpers/statusline.cjs +96 -28
  29. package/.claude/settings.json +86 -141
  30. package/.claude/skills/reasoningbank-intelligence/SKILL.md +2 -2
  31. package/.claude/skills/swarm-orchestration/SKILL.md +1 -1
  32. package/README.md +952 -481
  33. package/bin/preinstall.cjs +2 -0
  34. package/dist/src/appliance/gguf-engine.d.ts +91 -0
  35. package/dist/src/appliance/gguf-engine.d.ts.map +1 -0
  36. package/dist/src/appliance/gguf-engine.js +425 -0
  37. package/dist/src/appliance/gguf-engine.js.map +1 -0
  38. package/dist/src/appliance/ruvllm-bridge.d.ts +102 -0
  39. package/dist/src/appliance/ruvllm-bridge.d.ts.map +1 -0
  40. package/dist/src/appliance/ruvllm-bridge.js +292 -0
  41. package/dist/src/appliance/ruvllm-bridge.js.map +1 -0
  42. package/dist/src/appliance/rvfa-builder.d.ts +44 -0
  43. package/dist/src/appliance/rvfa-builder.d.ts.map +1 -0
  44. package/dist/src/appliance/rvfa-builder.js +329 -0
  45. package/dist/src/appliance/rvfa-builder.js.map +1 -0
  46. package/dist/src/appliance/rvfa-distribution.d.ts +97 -0
  47. package/dist/src/appliance/rvfa-distribution.d.ts.map +1 -0
  48. package/dist/src/appliance/rvfa-distribution.js +370 -0
  49. package/dist/src/appliance/rvfa-distribution.js.map +1 -0
  50. package/dist/src/appliance/rvfa-format.d.ts +111 -0
  51. package/dist/src/appliance/rvfa-format.d.ts.map +1 -0
  52. package/dist/src/appliance/rvfa-format.js +393 -0
  53. package/dist/src/appliance/rvfa-format.js.map +1 -0
  54. package/dist/src/appliance/rvfa-runner.d.ts +69 -0
  55. package/dist/src/appliance/rvfa-runner.d.ts.map +1 -0
  56. package/dist/src/appliance/rvfa-runner.js +237 -0
  57. package/dist/src/appliance/rvfa-runner.js.map +1 -0
  58. package/dist/src/appliance/rvfa-signing.d.ts +123 -0
  59. package/dist/src/appliance/rvfa-signing.d.ts.map +1 -0
  60. package/dist/src/appliance/rvfa-signing.js +347 -0
  61. package/dist/src/appliance/rvfa-signing.js.map +1 -0
  62. package/dist/src/commands/appliance-advanced.d.ts +9 -0
  63. package/dist/src/commands/appliance-advanced.d.ts.map +1 -0
  64. package/dist/src/commands/appliance-advanced.js +215 -0
  65. package/dist/src/commands/appliance-advanced.js.map +1 -0
  66. package/dist/src/commands/appliance.d.ts +8 -0
  67. package/dist/src/commands/appliance.d.ts.map +1 -0
  68. package/dist/src/commands/appliance.js +406 -0
  69. package/dist/src/commands/appliance.js.map +1 -0
  70. package/dist/src/commands/benchmark.js +2 -2
  71. package/dist/src/commands/benchmark.js.map +1 -1
  72. package/dist/src/commands/claims.js +1 -1
  73. package/dist/src/commands/claims.js.map +1 -1
  74. package/dist/src/commands/config.js +1 -1
  75. package/dist/src/commands/config.js.map +1 -1
  76. package/dist/src/commands/daemon.d.ts.map +1 -1
  77. package/dist/src/commands/daemon.js +28 -12
  78. package/dist/src/commands/daemon.js.map +1 -1
  79. package/dist/src/commands/deployment.js +1 -1
  80. package/dist/src/commands/deployment.js.map +1 -1
  81. package/dist/src/commands/doctor.d.ts.map +1 -1
  82. package/dist/src/commands/doctor.js +76 -45
  83. package/dist/src/commands/doctor.js.map +1 -1
  84. package/dist/src/commands/embeddings.js +1 -1
  85. package/dist/src/commands/embeddings.js.map +1 -1
  86. package/dist/src/commands/hooks.d.ts.map +1 -1
  87. package/dist/src/commands/hooks.js +84 -81
  88. package/dist/src/commands/hooks.js.map +1 -1
  89. package/dist/src/commands/index.d.ts +7 -2
  90. package/dist/src/commands/index.d.ts.map +1 -1
  91. package/dist/src/commands/index.js +11 -2
  92. package/dist/src/commands/index.js.map +1 -1
  93. package/dist/src/commands/init.d.ts.map +1 -1
  94. package/dist/src/commands/init.js +29 -34
  95. package/dist/src/commands/init.js.map +1 -1
  96. package/dist/src/commands/mcp.d.ts.map +1 -1
  97. package/dist/src/commands/mcp.js +18 -3
  98. package/dist/src/commands/mcp.js.map +1 -1
  99. package/dist/src/commands/memory.d.ts.map +1 -1
  100. package/dist/src/commands/memory.js +25 -1
  101. package/dist/src/commands/memory.js.map +1 -1
  102. package/dist/src/commands/neural.js +1 -1
  103. package/dist/src/commands/neural.js.map +1 -1
  104. package/dist/src/commands/performance.js +1 -1
  105. package/dist/src/commands/performance.js.map +1 -1
  106. package/dist/src/commands/plugins.js +1 -1
  107. package/dist/src/commands/plugins.js.map +1 -1
  108. package/dist/src/commands/providers.js +1 -1
  109. package/dist/src/commands/providers.js.map +1 -1
  110. package/dist/src/commands/security.js +1 -1
  111. package/dist/src/commands/security.js.map +1 -1
  112. package/dist/src/commands/start.js +11 -11
  113. package/dist/src/commands/start.js.map +1 -1
  114. package/dist/src/commands/status.d.ts.map +1 -1
  115. package/dist/src/commands/status.js +12 -5
  116. package/dist/src/commands/status.js.map +1 -1
  117. package/dist/src/commands/transfer-store.js +1 -1
  118. package/dist/src/commands/transfer-store.js.map +1 -1
  119. package/dist/src/index.d.ts +1 -1
  120. package/dist/src/index.js +5 -5
  121. package/dist/src/index.js.map +1 -1
  122. package/dist/src/init/claudemd-generator.js +1 -1
  123. package/dist/src/init/claudemd-generator.js.map +1 -1
  124. package/dist/src/init/executor.d.ts.map +1 -1
  125. package/dist/src/init/executor.js +233 -97
  126. package/dist/src/init/executor.js.map +1 -1
  127. package/dist/src/init/helpers-generator.d.ts +18 -0
  128. package/dist/src/init/helpers-generator.d.ts.map +1 -1
  129. package/dist/src/init/helpers-generator.js +587 -15
  130. package/dist/src/init/helpers-generator.js.map +1 -1
  131. package/dist/src/init/mcp-generator.d.ts +0 -1
  132. package/dist/src/init/mcp-generator.d.ts.map +1 -1
  133. package/dist/src/init/mcp-generator.js +33 -17
  134. package/dist/src/init/mcp-generator.js.map +1 -1
  135. package/dist/src/init/settings-generator.d.ts.map +1 -1
  136. package/dist/src/init/settings-generator.js +140 -137
  137. package/dist/src/init/settings-generator.js.map +1 -1
  138. package/dist/src/init/statusline-generator.d.ts +16 -8
  139. package/dist/src/init/statusline-generator.d.ts.map +1 -1
  140. package/dist/src/init/statusline-generator.js +506 -930
  141. package/dist/src/init/statusline-generator.js.map +1 -1
  142. package/dist/src/init/types.d.ts +8 -0
  143. package/dist/src/init/types.d.ts.map +1 -1
  144. package/dist/src/init/types.js +8 -1
  145. package/dist/src/init/types.js.map +1 -1
  146. package/dist/src/mcp-client.d.ts.map +1 -1
  147. package/dist/src/mcp-client.js +4 -0
  148. package/dist/src/mcp-client.js.map +1 -1
  149. package/dist/src/mcp-server.d.ts.map +1 -1
  150. package/dist/src/mcp-server.js +27 -1
  151. package/dist/src/mcp-server.js.map +1 -1
  152. package/dist/src/mcp-tools/agentdb-tools.d.ts +30 -0
  153. package/dist/src/mcp-tools/agentdb-tools.d.ts.map +1 -0
  154. package/dist/src/mcp-tools/agentdb-tools.js +557 -0
  155. package/dist/src/mcp-tools/agentdb-tools.js.map +1 -0
  156. package/dist/src/mcp-tools/config-tools.d.ts.map +1 -1
  157. package/dist/src/mcp-tools/config-tools.js +11 -1
  158. package/dist/src/mcp-tools/config-tools.js.map +1 -1
  159. package/dist/src/mcp-tools/coordination-tools.js +1 -1
  160. package/dist/src/mcp-tools/coordination-tools.js.map +1 -1
  161. package/dist/src/mcp-tools/daa-tools.js +5 -5
  162. package/dist/src/mcp-tools/daa-tools.js.map +1 -1
  163. package/dist/src/mcp-tools/embeddings-tools.js +1 -1
  164. package/dist/src/mcp-tools/github-tools.js +2 -2
  165. package/dist/src/mcp-tools/github-tools.js.map +1 -1
  166. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  167. package/dist/src/mcp-tools/hooks-tools.js +205 -33
  168. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  169. package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
  170. package/dist/src/mcp-tools/memory-tools.js +18 -1
  171. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  172. package/dist/src/mcp-tools/neural-tools.d.ts.map +1 -1
  173. package/dist/src/mcp-tools/neural-tools.js +32 -27
  174. package/dist/src/mcp-tools/neural-tools.js.map +1 -1
  175. package/dist/src/mcp-tools/performance-tools.js +1 -1
  176. package/dist/src/mcp-tools/performance-tools.js.map +1 -1
  177. package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
  178. package/dist/src/mcp-tools/system-tools.js +109 -6
  179. package/dist/src/mcp-tools/system-tools.js.map +1 -1
  180. package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
  181. package/dist/src/mcp-tools/task-tools.js +36 -0
  182. package/dist/src/mcp-tools/task-tools.js.map +1 -1
  183. package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -1
  184. package/dist/src/mcp-tools/workflow-tools.js +91 -0
  185. package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
  186. package/dist/src/memory/intelligence.d.ts.map +1 -1
  187. package/dist/src/memory/intelligence.js +34 -6
  188. package/dist/src/memory/intelligence.js.map +1 -1
  189. package/dist/src/memory/memory-bridge.d.ts +407 -0
  190. package/dist/src/memory/memory-bridge.d.ts.map +1 -0
  191. package/dist/src/memory/memory-bridge.js +1494 -0
  192. package/dist/src/memory/memory-bridge.js.map +1 -0
  193. package/dist/src/memory/memory-initializer.d.ts +10 -1
  194. package/dist/src/memory/memory-initializer.d.ts.map +1 -1
  195. package/dist/src/memory/memory-initializer.js +182 -10
  196. package/dist/src/memory/memory-initializer.js.map +1 -1
  197. package/dist/src/output.d.ts.map +1 -1
  198. package/dist/src/output.js +1 -0
  199. package/dist/src/output.js.map +1 -1
  200. package/dist/src/plugins/manager.d.ts.map +1 -1
  201. package/dist/src/plugins/manager.js +24 -7
  202. package/dist/src/plugins/manager.js.map +1 -1
  203. package/dist/src/plugins/store/discovery.js +1 -1
  204. package/dist/src/plugins/store/discovery.js.map +1 -1
  205. package/dist/src/production/error-handler.js +1 -1
  206. package/dist/src/production/error-handler.js.map +1 -1
  207. package/dist/src/runtime/headless.js +3 -3
  208. package/dist/src/runtime/headless.js.map +1 -1
  209. package/dist/src/ruvector/enhanced-model-router.d.ts.map +1 -1
  210. package/dist/src/ruvector/enhanced-model-router.js +25 -15
  211. package/dist/src/ruvector/enhanced-model-router.js.map +1 -1
  212. package/dist/src/services/agentic-flow-bridge.d.ts +50 -0
  213. package/dist/src/services/agentic-flow-bridge.d.ts.map +1 -0
  214. package/dist/src/services/agentic-flow-bridge.js +95 -0
  215. package/dist/src/services/agentic-flow-bridge.js.map +1 -0
  216. package/dist/src/services/claim-service.js +1 -1
  217. package/dist/src/services/claim-service.js.map +1 -1
  218. package/dist/src/services/container-worker-pool.d.ts.map +1 -1
  219. package/dist/src/services/container-worker-pool.js +2 -0
  220. package/dist/src/services/container-worker-pool.js.map +1 -1
  221. package/dist/src/services/ruvector-training.d.ts +2 -1
  222. package/dist/src/services/ruvector-training.d.ts.map +1 -1
  223. package/dist/src/services/ruvector-training.js +1 -2
  224. package/dist/src/services/ruvector-training.js.map +1 -1
  225. package/dist/src/services/worker-queue.d.ts.map +1 -1
  226. package/dist/src/services/worker-queue.js +2 -0
  227. package/dist/src/services/worker-queue.js.map +1 -1
  228. package/dist/src/transfer/ipfs/client.d.ts.map +1 -1
  229. package/dist/src/transfer/ipfs/client.js +8 -0
  230. package/dist/src/transfer/ipfs/client.js.map +1 -1
  231. package/dist/src/transfer/ipfs/upload.d.ts.map +1 -1
  232. package/dist/src/transfer/ipfs/upload.js +0 -2
  233. package/dist/src/transfer/ipfs/upload.js.map +1 -1
  234. package/dist/src/transfer/serialization/cfp.d.ts.map +1 -1
  235. package/dist/src/transfer/serialization/cfp.js +8 -5
  236. package/dist/src/transfer/serialization/cfp.js.map +1 -1
  237. package/dist/src/transfer/storage/gcs.d.ts.map +1 -1
  238. package/dist/src/transfer/storage/gcs.js +49 -23
  239. package/dist/src/transfer/storage/gcs.js.map +1 -1
  240. package/dist/src/types.d.ts +1 -1
  241. package/dist/src/types.js +1 -1
  242. package/dist/src/update/validator.js +1 -1
  243. package/dist/src/update/validator.js.map +1 -1
  244. package/dist/tsconfig.build.tsbuildinfo +1 -1
  245. package/dist/tsconfig.tsbuildinfo +1 -0
  246. package/package.json +16 -13
@@ -0,0 +1,292 @@
1
+ /**
2
+ * ruvLLM Bridge -- Local Language Model Inference from RuVector
3
+ *
4
+ * Extends @ruvector/core with on-device GGUF model inference.
5
+ * Provides 3-tier routing:
6
+ * Tier 1: Agent Booster (WASM, <1ms) -- simple transforms
7
+ * Tier 2: Local model via ruvLLM (~200ms) -- routing, classification
8
+ * Tier 3: Cloud API (2-5s) -- complex reasoning
9
+ *
10
+ * All @ruvector/* packages are optional peer dependencies.
11
+ * The bridge degrades gracefully when they are absent.
12
+ *
13
+ * @module @sparkleideas/cli/appliance/ruvllm-bridge
14
+ */
15
+ import { readdir, stat } from 'node:fs/promises';
16
+ import { join, extname, basename } from 'node:path';
17
+ const DEFAULT_CONFIG = {
18
+ modelsDir: './models', defaultModel: '', maxTokens: 512,
19
+ temperature: 0.7, contextSize: 4096, kvCachePath: '', verbose: false,
20
+ };
21
+ // ── Quantization / parameter heuristics ─────────────────────
22
+ const QUANT_PATTERNS = [
23
+ [/q4_k_m/i, 'q4_k_m'], [/q4_k_s/i, 'q4_k_s'], [/q4_0/i, 'q4_0'],
24
+ [/q5_k_m/i, 'q5_k_m'], [/q5_0/i, 'q5_0'], [/q8_0/i, 'q8_0'],
25
+ [/f16/i, 'f16'], [/f32/i, 'f32'],
26
+ ];
27
+ function inferQuantization(filename) {
28
+ for (const [re, label] of QUANT_PATTERNS)
29
+ if (re.test(filename))
30
+ return label;
31
+ return 'unknown';
32
+ }
33
+ function inferParameters(filename) {
34
+ const m = filename.match(/(\d+)[._-]?b/i);
35
+ return m ? m[0].toUpperCase().replace(/[._-]/g, '') : 'unknown';
36
+ }
37
+ // ── Complexity heuristic ────────────────────────────────────
38
+ const HIGH = new Set([
39
+ 'architect', 'design', 'refactor', 'security', 'audit', 'complex',
40
+ 'analyze', 'distributed', 'concurrent', 'algorithm', 'investigate',
41
+ 'optimize', 'debug', 'system', 'integration',
42
+ ]);
43
+ const LOW = new Set([
44
+ 'rename', 'typo', 'format', 'comment', 'version', 'bump',
45
+ 'move', 'copy', 'delete', 'simple', 'config',
46
+ ]);
47
+ function estimateComplexity(desc) {
48
+ const words = desc.toLowerCase().split(/\s+/);
49
+ let score = 0.3;
50
+ for (const w of words) {
51
+ if (HIGH.has(w))
52
+ score += 0.15;
53
+ if (LOW.has(w))
54
+ score -= 0.1;
55
+ }
56
+ return Math.max(0, Math.min(1, score + Math.min(0.2, words.length / 200)));
57
+ }
58
+ // ── Bridge ──────────────────────────────────────────────────
59
+ export class RuvllmBridge {
60
+ config;
61
+ models = new Map();
62
+ activeModel = null;
63
+ kvCacheEntries = 0;
64
+ ruvectorCore = null;
65
+ ruvectorRouter = null;
66
+ ruvectorSona = null;
67
+ ggufEngine = null;
68
+ constructor(config) {
69
+ if (!config.modelsDir)
70
+ throw new Error('RuvllmConfig.modelsDir is required');
71
+ this.config = { ...DEFAULT_CONFIG, ...config };
72
+ }
73
+ /** Probe optional @ruvector packages, initialize GGUF engine, and scan modelsDir. */
74
+ async initialize() {
75
+ this.ruvectorCore = await this.tryImport('@ruvector/core');
76
+ this.ruvectorRouter = await this.tryImport('@ruvector/router');
77
+ this.ruvectorSona = await this.tryImport('@ruvector/sona');
78
+ // Initialize GGUF engine for local model inference
79
+ try {
80
+ const { GgufEngine } = await import('./gguf-engine.js');
81
+ this.ggufEngine = new GgufEngine({
82
+ contextSize: this.config.contextSize,
83
+ maxTokens: this.config.maxTokens,
84
+ temperature: this.config.temperature,
85
+ kvCachePath: this.config.kvCachePath,
86
+ verbose: this.config.verbose,
87
+ });
88
+ await this.ggufEngine.initialize();
89
+ }
90
+ catch {
91
+ // GGUF engine is optional
92
+ }
93
+ await this.scanModelsDir();
94
+ if (this.config.verbose) {
95
+ const pkgs = [
96
+ this.ruvectorCore && '@ruvector/core',
97
+ this.ruvectorRouter && '@ruvector/router',
98
+ this.ruvectorSona && '@ruvector/sona',
99
+ this.ggufEngine && 'gguf-engine',
100
+ ].filter(Boolean);
101
+ if (pkgs.length)
102
+ console.log(`[ruvLLM] Loaded: ${pkgs.join(', ')}`);
103
+ console.log(`[ruvLLM] ${this.models.size} model(s) in ${this.config.modelsDir}`);
104
+ }
105
+ }
106
+ /** Return all discovered GGUF models. */
107
+ async listModels() {
108
+ return Array.from(this.models.values());
109
+ }
110
+ /** Load a model into memory (delegates to GGUF engine or @ruvector/core). */
111
+ async loadModel(name) {
112
+ const info = this.models.get(name);
113
+ if (!info)
114
+ throw new Error(`Model "${name}" not found. Available: ${[...this.models.keys()].join(', ')}`);
115
+ // Prefer GGUF engine (parses header, loads via node-llama-cpp if available)
116
+ if (this.ggufEngine) {
117
+ const meta = await this.ggufEngine.loadModel(info.path);
118
+ if (meta.architecture)
119
+ info.parameters = meta.architecture;
120
+ if (meta.quantization)
121
+ info.quantization = meta.quantization;
122
+ }
123
+ else if (this.ruvectorCore?.loadModel) {
124
+ await this.ruvectorCore.loadModel(info.path, { contextSize: this.config.contextSize });
125
+ }
126
+ info.loaded = true;
127
+ this.activeModel = name;
128
+ }
129
+ /**
130
+ * Generate text from a prompt. Routes through tiers:
131
+ * 1. Agent Booster (trivial transforms, no LLM).
132
+ * 2. Local GGUF model via @ruvector/core.
133
+ * 3. Cloud fallback (empty response -- caller handles upstream).
134
+ */
135
+ async generate(request) {
136
+ const start = performance.now();
137
+ const modelName = request.model ?? this.config.defaultModel ?? this.activeModel ?? '';
138
+ // Tier 1: Agent Booster
139
+ const booster = this.tryAgentBooster(request.prompt);
140
+ if (booster !== null) {
141
+ return { text: booster, model: 'agent-booster', tokensUsed: 0, latencyMs: performance.now() - start, tier: 1, cached: false };
142
+ }
143
+ // Tier 2: Local model (GGUF engine preferred, then @ruvector/core)
144
+ const info = this.models.get(modelName);
145
+ if (info?.loaded) {
146
+ try {
147
+ if (this.ggufEngine) {
148
+ const r = await this.ggufEngine.generate({
149
+ prompt: request.prompt,
150
+ maxTokens: request.maxTokens ?? this.config.maxTokens,
151
+ temperature: request.temperature ?? this.config.temperature,
152
+ stopSequences: request.stopSequences,
153
+ });
154
+ return { text: r.text, model: modelName, tokensUsed: r.tokensUsed, latencyMs: performance.now() - start, tier: 2, cached: false };
155
+ }
156
+ else if (this.ruvectorCore?.generate) {
157
+ const r = await this.ruvectorCore.generate({
158
+ model: info.path, prompt: request.prompt,
159
+ maxTokens: request.maxTokens ?? this.config.maxTokens,
160
+ temperature: request.temperature ?? this.config.temperature,
161
+ stopSequences: request.stopSequences,
162
+ });
163
+ return { text: r.text ?? '', model: modelName, tokensUsed: r.tokensUsed ?? 0, latencyMs: performance.now() - start, tier: 2, cached: false };
164
+ }
165
+ }
166
+ catch (err) {
167
+ if (this.config.verbose)
168
+ console.warn('[ruvLLM] Local generation failed, tier 3 fallback:', err);
169
+ }
170
+ }
171
+ // Tier 3: Cloud fallback
172
+ return { text: '', model: 'cloud-fallback', tokensUsed: 0, latencyMs: performance.now() - start, tier: 3, cached: false };
173
+ }
174
+ /** Route a task description to the optimal tier. Uses @ruvector/router when available. */
175
+ async routeTask(description) {
176
+ if (this.ruvectorRouter?.route) {
177
+ try {
178
+ const r = await this.ruvectorRouter.route(description);
179
+ return { tier: r.tier ?? 3, model: r.model ?? 'cloud', confidence: r.confidence ?? 0.5 };
180
+ }
181
+ catch { /* fall through */ }
182
+ }
183
+ const complexity = estimateComplexity(description);
184
+ const words = description.split(/\s+/).length;
185
+ if (words < 15 && complexity < 0.25)
186
+ return { tier: 1, model: 'agent-booster', confidence: 0.9 };
187
+ if (complexity < 0.55 && this.activeModel)
188
+ return { tier: 2, model: this.activeModel, confidence: 0.7 };
189
+ return { tier: 3, model: 'cloud', confidence: 0.6 };
190
+ }
191
+ /** Return current bridge status. */
192
+ async getStatus() {
193
+ return {
194
+ available: this.models.size > 0 || this.ruvectorCore !== null,
195
+ ruvectorCore: this.ruvectorCore !== null,
196
+ ruvectorRouter: this.ruvectorRouter !== null,
197
+ ruvectorSona: this.ruvectorSona !== null,
198
+ modelsLoaded: [...this.models.values()].filter((m) => m.loaded).map((m) => m.name),
199
+ kvCacheSize: this.kvCacheEntries,
200
+ };
201
+ }
202
+ /** Persist KV-cache, unload models, and clean up. */
203
+ async shutdown() {
204
+ if (this.ggufEngine) {
205
+ await this.ggufEngine.shutdown();
206
+ this.ggufEngine = null;
207
+ }
208
+ if (this.config.kvCachePath && this.ruvectorCore?.persistKvCache) {
209
+ try {
210
+ await this.ruvectorCore.persistKvCache(this.config.kvCachePath);
211
+ }
212
+ catch (e) {
213
+ if (this.config.verbose)
214
+ console.warn('[ruvLLM] KV-cache persist failed:', e);
215
+ }
216
+ }
217
+ if (this.ruvectorCore?.unloadAll)
218
+ await this.ruvectorCore.unloadAll();
219
+ for (const info of this.models.values())
220
+ info.loaded = false;
221
+ this.activeModel = null;
222
+ this.kvCacheEntries = 0;
223
+ }
224
+ // ── Private ───────────────────────────────────────────────
225
+ async scanModelsDir() {
226
+ try {
227
+ const entries = await readdir(this.config.modelsDir);
228
+ for (const entry of entries) {
229
+ if (extname(entry).toLowerCase() !== '.gguf')
230
+ continue;
231
+ const fullPath = join(this.config.modelsDir, entry);
232
+ const s = await stat(fullPath);
233
+ if (!s.isFile())
234
+ continue;
235
+ const name = basename(entry, '.gguf');
236
+ this.models.set(name, {
237
+ name, path: fullPath, format: 'gguf',
238
+ quantization: inferQuantization(entry), size: s.size,
239
+ parameters: inferParameters(entry), loaded: false,
240
+ });
241
+ }
242
+ }
243
+ catch {
244
+ // modelsDir may not exist -- tier 1 and tier 3 still work
245
+ }
246
+ }
247
+ async tryImport(pkg) {
248
+ try {
249
+ return await import(pkg);
250
+ }
251
+ catch {
252
+ return null;
253
+ }
254
+ }
255
+ /** Tier-1 Agent Booster: handle trivial transforms without any LLM. */
256
+ tryAgentBooster(prompt) {
257
+ const t = prompt.trim();
258
+ if (t.length > 200)
259
+ return null;
260
+ if (/^(convert|change)\s+(var|let)\s+to\s+const$/i.test(t)) {
261
+ return 'Use the Edit tool to replace `var`/`let` declarations with `const`.';
262
+ }
263
+ if (/^remove\s+console\.(log|warn|error|debug|info)$/i.test(t)) {
264
+ const m = t.toLowerCase().match(/console\.(\w+)/)?.[1] ?? 'log';
265
+ return `Use the Edit tool to remove all \`console.${m}\` calls.`;
266
+ }
267
+ return null;
268
+ }
269
+ }
270
+ // ── Singleton accessor ──────────────────────────────────────
271
+ let instance = null;
272
+ /** Get or create the singleton RuvllmBridge. Config required on first call. */
273
+ export function getRuvllmBridge(config) {
274
+ if (!instance && config)
275
+ instance = new RuvllmBridge(config);
276
+ if (!instance)
277
+ throw new Error('ruvLLM bridge not initialized. Call with config first.');
278
+ return instance;
279
+ }
280
+ /** Reset the singleton (useful for tests). */
281
+ export function resetRuvllmBridge() { instance = null; }
282
+ /** Check whether @ruvector/core is importable without loading the bridge. */
283
+ export async function isRuvllmAvailable() {
284
+ try {
285
+ await import('@ruvector/core');
286
+ return true;
287
+ }
288
+ catch {
289
+ return false;
290
+ }
291
+ }
292
+ //# sourceMappingURL=ruvllm-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ruvllm-bridge.js","sourceRoot":"","sources":["../../../src/appliance/ruvllm-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * RVFA Appliance Builder -- Constructs self-contained .rvf appliance files.
3
+ *
4
+ * Creates a single binary containing kernel, runtime, Ruflo CLI, models/keys,
5
+ * AgentDB data, and the verification suite. See ADR-058.
6
+ */
7
+ export interface BuildOptions {
8
+ profile: 'cloud' | 'hybrid' | 'offline';
9
+ arch: string;
10
+ output: string;
11
+ rufloVersion?: string;
12
+ models?: string[];
13
+ apiKeys?: string;
14
+ verbose?: boolean;
15
+ }
16
+ export interface BuildResult {
17
+ outputPath: string;
18
+ size: number;
19
+ sections: {
20
+ id: string;
21
+ size: number;
22
+ originalSize: number;
23
+ }[];
24
+ duration: number;
25
+ profile: string;
26
+ }
27
+ /** Encrypt API keys from a .env file. Output: salt(32)+iv(16)+tag(16)+ciphertext */
28
+ export declare function encryptApiKeys(envPath: string, passphrase: string): Buffer;
29
+ /** Decrypt API keys previously encrypted with encryptApiKeys. */
30
+ export declare function decryptApiKeys(buf: Buffer, passphrase: string): Record<string, string>;
31
+ export declare class RvfaBuilder {
32
+ private opts;
33
+ constructor(options: BuildOptions);
34
+ build(): Promise<BuildResult>;
35
+ private buildKernelSection;
36
+ private buildRuntimeSection;
37
+ private buildRufloSection;
38
+ private buildModelsSection;
39
+ private buildDataSection;
40
+ private buildVerifySection;
41
+ private buildHeaderPartial;
42
+ private log;
43
+ }
44
+ //# sourceMappingURL=rvfa-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rvfa-builder.d.ts","sourceRoot":"","sources":["../../../src/appliance/rvfa-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AA4BD,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAW1E;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBtF;AAMD,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAyB;gBAEzB,OAAO,EAAE,YAAY;IAY3B,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC;IAwDnC,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,kBAAkB;IA0C1B,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,kBAAkB;IA8B1B,OAAO,CAAC,kBAAkB;IA2B1B,OAAO,CAAC,GAAG;CAGZ"}