@claude-flow/cli 3.5.2 → 3.5.4

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 (143) hide show
  1. package/.claude/helpers/auto-memory-hook.mjs +20 -7
  2. package/.claude/helpers/hook-handler.cjs +45 -18
  3. package/README.md +156 -26
  4. package/dist/src/appliance/gguf-engine.d.ts +91 -0
  5. package/dist/src/appliance/gguf-engine.d.ts.map +1 -0
  6. package/dist/src/appliance/gguf-engine.js +425 -0
  7. package/dist/src/appliance/gguf-engine.js.map +1 -0
  8. package/dist/src/appliance/ruvllm-bridge.d.ts +102 -0
  9. package/dist/src/appliance/ruvllm-bridge.d.ts.map +1 -0
  10. package/dist/src/appliance/ruvllm-bridge.js +292 -0
  11. package/dist/src/appliance/ruvllm-bridge.js.map +1 -0
  12. package/dist/src/appliance/rvfa-builder.d.ts +44 -0
  13. package/dist/src/appliance/rvfa-builder.d.ts.map +1 -0
  14. package/dist/src/appliance/rvfa-builder.js +329 -0
  15. package/dist/src/appliance/rvfa-builder.js.map +1 -0
  16. package/dist/src/appliance/rvfa-distribution.d.ts +97 -0
  17. package/dist/src/appliance/rvfa-distribution.d.ts.map +1 -0
  18. package/dist/src/appliance/rvfa-distribution.js +370 -0
  19. package/dist/src/appliance/rvfa-distribution.js.map +1 -0
  20. package/dist/src/appliance/rvfa-format.d.ts +111 -0
  21. package/dist/src/appliance/rvfa-format.d.ts.map +1 -0
  22. package/dist/src/appliance/rvfa-format.js +393 -0
  23. package/dist/src/appliance/rvfa-format.js.map +1 -0
  24. package/dist/src/appliance/rvfa-runner.d.ts +69 -0
  25. package/dist/src/appliance/rvfa-runner.d.ts.map +1 -0
  26. package/dist/src/appliance/rvfa-runner.js +237 -0
  27. package/dist/src/appliance/rvfa-runner.js.map +1 -0
  28. package/dist/src/appliance/rvfa-signing.d.ts +123 -0
  29. package/dist/src/appliance/rvfa-signing.d.ts.map +1 -0
  30. package/dist/src/appliance/rvfa-signing.js +347 -0
  31. package/dist/src/appliance/rvfa-signing.js.map +1 -0
  32. package/dist/src/commands/appliance-advanced.d.ts +9 -0
  33. package/dist/src/commands/appliance-advanced.d.ts.map +1 -0
  34. package/dist/src/commands/appliance-advanced.js +215 -0
  35. package/dist/src/commands/appliance-advanced.js.map +1 -0
  36. package/dist/src/commands/appliance.d.ts +8 -0
  37. package/dist/src/commands/appliance.d.ts.map +1 -0
  38. package/dist/src/commands/appliance.js +406 -0
  39. package/dist/src/commands/appliance.js.map +1 -0
  40. package/dist/src/commands/benchmark.js +2 -2
  41. package/dist/src/commands/benchmark.js.map +1 -1
  42. package/dist/src/commands/claims.js +1 -1
  43. package/dist/src/commands/claims.js.map +1 -1
  44. package/dist/src/commands/config.js +1 -1
  45. package/dist/src/commands/config.js.map +1 -1
  46. package/dist/src/commands/deployment.js +1 -1
  47. package/dist/src/commands/deployment.js.map +1 -1
  48. package/dist/src/commands/doctor.d.ts.map +1 -1
  49. package/dist/src/commands/doctor.js +7 -2
  50. package/dist/src/commands/doctor.js.map +1 -1
  51. package/dist/src/commands/embeddings.js +1 -1
  52. package/dist/src/commands/embeddings.js.map +1 -1
  53. package/dist/src/commands/hooks.js +1 -1
  54. package/dist/src/commands/hooks.js.map +1 -1
  55. package/dist/src/commands/index.d.ts +2 -0
  56. package/dist/src/commands/index.d.ts.map +1 -1
  57. package/dist/src/commands/index.js +6 -0
  58. package/dist/src/commands/index.js.map +1 -1
  59. package/dist/src/commands/init.js +11 -11
  60. package/dist/src/commands/init.js.map +1 -1
  61. package/dist/src/commands/mcp.d.ts.map +1 -1
  62. package/dist/src/commands/mcp.js +18 -3
  63. package/dist/src/commands/mcp.js.map +1 -1
  64. package/dist/src/commands/memory.d.ts.map +1 -1
  65. package/dist/src/commands/memory.js +24 -0
  66. package/dist/src/commands/memory.js.map +1 -1
  67. package/dist/src/commands/neural.js +1 -1
  68. package/dist/src/commands/neural.js.map +1 -1
  69. package/dist/src/commands/performance.js +1 -1
  70. package/dist/src/commands/performance.js.map +1 -1
  71. package/dist/src/commands/plugins.js +1 -1
  72. package/dist/src/commands/plugins.js.map +1 -1
  73. package/dist/src/commands/providers.js +1 -1
  74. package/dist/src/commands/providers.js.map +1 -1
  75. package/dist/src/commands/security.js +1 -1
  76. package/dist/src/commands/security.js.map +1 -1
  77. package/dist/src/commands/start.js +11 -11
  78. package/dist/src/commands/start.js.map +1 -1
  79. package/dist/src/commands/status.d.ts.map +1 -1
  80. package/dist/src/commands/status.js +12 -5
  81. package/dist/src/commands/status.js.map +1 -1
  82. package/dist/src/commands/transfer-store.js +1 -1
  83. package/dist/src/commands/transfer-store.js.map +1 -1
  84. package/dist/src/index.js +2 -2
  85. package/dist/src/index.js.map +1 -1
  86. package/dist/src/init/claudemd-generator.js +1 -1
  87. package/dist/src/init/claudemd-generator.js.map +1 -1
  88. package/dist/src/init/executor.d.ts.map +1 -1
  89. package/dist/src/init/executor.js +9 -8
  90. package/dist/src/init/executor.js.map +1 -1
  91. package/dist/src/init/helpers-generator.d.ts.map +1 -1
  92. package/dist/src/init/helpers-generator.js +28 -5
  93. package/dist/src/init/helpers-generator.js.map +1 -1
  94. package/dist/src/init/settings-generator.d.ts.map +1 -1
  95. package/dist/src/init/settings-generator.js +66 -16
  96. package/dist/src/init/settings-generator.js.map +1 -1
  97. package/dist/src/init/statusline-generator.d.ts +1 -1
  98. package/dist/src/init/statusline-generator.js +4 -4
  99. package/dist/src/mcp-server.d.ts.map +1 -1
  100. package/dist/src/mcp-server.js +16 -0
  101. package/dist/src/mcp-server.js.map +1 -1
  102. package/dist/src/mcp-tools/coordination-tools.js +1 -1
  103. package/dist/src/mcp-tools/coordination-tools.js.map +1 -1
  104. package/dist/src/mcp-tools/daa-tools.js +5 -5
  105. package/dist/src/mcp-tools/daa-tools.js.map +1 -1
  106. package/dist/src/mcp-tools/github-tools.js +2 -2
  107. package/dist/src/mcp-tools/github-tools.js.map +1 -1
  108. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  109. package/dist/src/mcp-tools/hooks-tools.js +21 -1
  110. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  111. package/dist/src/mcp-tools/performance-tools.js +1 -1
  112. package/dist/src/mcp-tools/performance-tools.js.map +1 -1
  113. package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
  114. package/dist/src/mcp-tools/system-tools.js +109 -6
  115. package/dist/src/mcp-tools/system-tools.js.map +1 -1
  116. package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
  117. package/dist/src/mcp-tools/task-tools.js +36 -0
  118. package/dist/src/mcp-tools/task-tools.js.map +1 -1
  119. package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -1
  120. package/dist/src/mcp-tools/workflow-tools.js +91 -0
  121. package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
  122. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  123. package/dist/src/memory/memory-bridge.js +1 -0
  124. package/dist/src/memory/memory-bridge.js.map +1 -1
  125. package/dist/src/memory/memory-initializer.d.ts +6 -0
  126. package/dist/src/memory/memory-initializer.d.ts.map +1 -1
  127. package/dist/src/memory/memory-initializer.js +54 -2
  128. package/dist/src/memory/memory-initializer.js.map +1 -1
  129. package/dist/src/output.d.ts.map +1 -1
  130. package/dist/src/output.js +1 -0
  131. package/dist/src/output.js.map +1 -1
  132. package/dist/src/runtime/headless.js +3 -3
  133. package/dist/src/runtime/headless.js.map +1 -1
  134. package/dist/src/services/claim-service.js +1 -1
  135. package/dist/src/services/claim-service.js.map +1 -1
  136. package/dist/src/services/container-worker-pool.d.ts.map +1 -1
  137. package/dist/src/services/container-worker-pool.js +2 -0
  138. package/dist/src/services/container-worker-pool.js.map +1 -1
  139. package/dist/src/services/worker-queue.d.ts.map +1 -1
  140. package/dist/src/services/worker-queue.js +2 -0
  141. package/dist/src/services/worker-queue.js.map +1 -1
  142. package/dist/tsconfig.tsbuildinfo +1 -1
  143. package/package.json +1 -1
@@ -0,0 +1,329 @@
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
+ import { createHash, scryptSync, randomBytes, createCipheriv, createDecipheriv, } from 'node:crypto';
8
+ import { readFileSync, existsSync, writeFileSync, mkdirSync } from 'node:fs';
9
+ import { resolve, dirname } from 'node:path';
10
+ import { execSync } from 'node:child_process';
11
+ import { RvfaWriter, } from './rvfa-format.js';
12
+ // ── Encryption Constants ─────────────────────────────────────
13
+ const SCRYPT_KEY_LEN = 32;
14
+ const SCRYPT_SALT_LEN = 32;
15
+ const SCRYPT_OPTS = { N: 16384, r: 8, p: 1 };
16
+ const AES_IV_LEN = 16;
17
+ const AES_TAG_LEN = 16;
18
+ const AES_ALG = 'aes-256-gcm';
19
+ // ── Catalog ──────────────────────────────────────────────────
20
+ const RUFLO_COMMANDS = 'init agent swarm memory mcp task session config status start workflow hooks hive-mind daemon neural security performance providers plugins deployment embeddings claims migrate process doctor completions'.split(' ');
21
+ const AGENT_TYPES = 'coder reviewer tester planner researcher security-architect security-auditor memory-specialist performance-engineer hierarchical-coordinator mesh-coordinator adaptive-coordinator collective-intelligence-coordinator swarm-memory-manager byzantine-coordinator raft-manager gossip-coordinator consensus-builder crdt-synchronizer quorum-manager security-manager perf-analyzer performance-benchmarker task-orchestrator memory-coordinator smart-agent github-modes pr-manager code-review-swarm issue-tracker release-manager workflow-automation project-board-sync repo-architect multi-repo-swarm sparc-coord sparc-coder specification pseudocode architecture refinement backend-dev mobile-dev ml-developer cicd-engineer api-docs system-architect code-analyzer base-template-generator tdd-london-swarm production-validator'.split(' ');
22
+ const HOOK_TYPES = 'pre-edit post-edit pre-command post-command pre-task post-task session-start session-end session-restore notify route explain pretrain build-agents transfer teammate-idle task-completed'.split(' ');
23
+ const WORKER_TYPES = 'ultralearn optimize consolidate predict audit map preload deepdive document refactor benchmark testgaps'.split(' ');
24
+ const OFFLINE_MODELS = [
25
+ { name: 'phi-3-mini-q4', format: 'gguf', sizeHint: '2.3GB', params: '3.8B' },
26
+ { name: 'qwen2.5-coder-3b-q4', format: 'gguf', sizeHint: '1.7GB', params: '3B' },
27
+ ];
28
+ // ── API Key Encryption / Decryption ──────────────────────────
29
+ /** Encrypt API keys from a .env file. Output: salt(32)+iv(16)+tag(16)+ciphertext */
30
+ export function encryptApiKeys(envPath, passphrase) {
31
+ const keys = parseEnvFile(readFileSync(envPath, 'utf-8'));
32
+ const plaintext = Buffer.from(JSON.stringify(keys), 'utf-8');
33
+ const salt = randomBytes(SCRYPT_SALT_LEN);
34
+ const key = scryptSync(passphrase, salt, SCRYPT_KEY_LEN, SCRYPT_OPTS);
35
+ const iv = randomBytes(AES_IV_LEN);
36
+ const cipher = createCipheriv(AES_ALG, key, iv);
37
+ const encrypted = Buffer.concat([cipher.update(plaintext), cipher.final()]);
38
+ return Buffer.concat([salt, iv, cipher.getAuthTag(), encrypted]);
39
+ }
40
+ /** Decrypt API keys previously encrypted with encryptApiKeys. */
41
+ export function decryptApiKeys(buf, passphrase) {
42
+ const minLen = SCRYPT_SALT_LEN + AES_IV_LEN + AES_TAG_LEN + 1;
43
+ if (buf.length < minLen) {
44
+ throw new Error(`Encrypted buffer too short: need >= ${minLen}B, got ${buf.length}B`);
45
+ }
46
+ let off = 0;
47
+ const salt = buf.subarray(off, off += SCRYPT_SALT_LEN);
48
+ const iv = buf.subarray(off, off += AES_IV_LEN);
49
+ const tag = buf.subarray(off, off += AES_TAG_LEN);
50
+ const ciphertext = buf.subarray(off);
51
+ const key = scryptSync(passphrase, salt, SCRYPT_KEY_LEN, SCRYPT_OPTS);
52
+ const decipher = createDecipheriv(AES_ALG, key, iv);
53
+ decipher.setAuthTag(tag);
54
+ return JSON.parse(Buffer.concat([decipher.update(ciphertext), decipher.final()]).toString('utf-8'));
55
+ }
56
+ export class RvfaBuilder {
57
+ opts;
58
+ constructor(options) {
59
+ this.opts = {
60
+ arch: options.arch || 'x86_64',
61
+ profile: options.profile,
62
+ output: resolve(options.output),
63
+ rufloVersion: options.rufloVersion || detectRufloVersion(),
64
+ models: options.models ?? defaultModelsForProfile(options.profile),
65
+ apiKeys: options.apiKeys ?? '',
66
+ verbose: options.verbose ?? false,
67
+ };
68
+ }
69
+ async build() {
70
+ const t0 = performance.now();
71
+ this.log(`Building RVFA appliance (profile=${this.opts.profile}, arch=${this.opts.arch})`);
72
+ const outDir = dirname(this.opts.output);
73
+ if (!existsSync(outDir))
74
+ mkdirSync(outDir, { recursive: true });
75
+ const stages = [
76
+ { id: 'kernel', raw: this.buildKernelSection(), label: 'Kernel (Alpine rootfs)' },
77
+ { id: 'runtime', raw: this.buildRuntimeSection(), label: 'Runtime (Node.js + Claude Code)' },
78
+ { id: 'ruflo', raw: this.buildRufloSection(), label: 'Ruflo CLI' },
79
+ { id: 'models', raw: this.buildModelsSection(), label: `Models (${this.opts.profile})` },
80
+ { id: 'data', raw: this.buildDataSection(), label: 'Data (AgentDB)' },
81
+ { id: 'verify', raw: this.buildVerifySection(), label: 'Verify (test suite)' },
82
+ ];
83
+ const writer = new RvfaWriter(this.buildHeaderPartial());
84
+ const summary = [];
85
+ for (const s of stages) {
86
+ const st = performance.now();
87
+ this.log(` Stage: ${s.label}...`);
88
+ writer.addSection(s.id, s.raw, { type: s.id });
89
+ this.log(` ${fmtBytes(s.raw.length)} raw (${elapsed(st)})`);
90
+ summary.push({ id: s.id, size: 0, originalSize: s.raw.length });
91
+ }
92
+ const binary = writer.build();
93
+ // Patch compressed sizes from the built header
94
+ try {
95
+ const hLen = binary.readUInt32LE(8);
96
+ const hdr = JSON.parse(binary.subarray(12, 12 + hLen).toString('utf-8'));
97
+ for (const sec of hdr.sections) {
98
+ const e = summary.find((x) => x.id === sec.id);
99
+ if (e)
100
+ e.size = sec.size;
101
+ }
102
+ }
103
+ catch { /* non-fatal */ }
104
+ writeFileSync(this.opts.output, binary);
105
+ const duration = performance.now() - t0;
106
+ this.log('');
107
+ this.log('RVFA appliance built successfully.');
108
+ this.log(` Output: ${this.opts.output} Size: ${fmtBytes(binary.length)} Duration: ${elapsed(t0)}`);
109
+ for (const s of summary) {
110
+ const r = s.originalSize > 0 && s.size > 0
111
+ ? ` (${((1 - s.size / s.originalSize) * 100).toFixed(1)}% reduction)` : '';
112
+ this.log(` ${s.id}: ${fmtBytes(s.originalSize)} -> ${fmtBytes(s.size)}${r}`);
113
+ }
114
+ return { outputPath: this.opts.output, size: binary.length, sections: summary, duration, profile: this.opts.profile };
115
+ }
116
+ // ── Section Builders ─────────────────────────────────────
117
+ buildKernelSection() {
118
+ return jsonBuf({
119
+ type: 'kernel', distribution: 'alpine', version: '3.23', arch: this.opts.arch,
120
+ packages: ['busybox', 'dumb-init', 'musl'],
121
+ init: '/sbin/init -> ruflo-init (PID 1)',
122
+ features: ['minimal rootfs', 'read-only root filesystem', 'tmpfs for /tmp and /run', 'seccomp profile applied'],
123
+ sizeTarget: '~5MB compressed',
124
+ note: 'Manifest-only: actual rootfs fetched during full build pipeline',
125
+ });
126
+ }
127
+ buildRuntimeSection() {
128
+ let nodeVersion = 'v22.0.0';
129
+ try {
130
+ nodeVersion = execSync('node --version', { encoding: 'utf-8' }).trim();
131
+ }
132
+ catch { /* keep default */ }
133
+ return jsonBuf({
134
+ type: 'runtime',
135
+ node: { version: nodeVersion, target: 'v22', variant: `linux-${this.opts.arch}-musl`, stripped: true, excludes: ['npm', 'corepack', 'debug-symbols'] },
136
+ claudeCode: { name: 'claude-code-cli', entrypoint: '/usr/local/bin/claude' },
137
+ paths: { node: '/usr/local/bin/node', claude: '/usr/local/bin/claude' },
138
+ });
139
+ }
140
+ buildRufloSection() {
141
+ let packageMeta = null;
142
+ try {
143
+ const raw = execSync('npm pack ruflo@latest --dry-run --json 2>/dev/null', { encoding: 'utf-8', timeout: 15_000 });
144
+ const parsed = JSON.parse(raw);
145
+ if (Array.isArray(parsed) && parsed.length > 0)
146
+ packageMeta = parsed[0];
147
+ }
148
+ catch { /* manifest-only fallback */ }
149
+ return jsonBuf({
150
+ type: 'ruflo', version: this.opts.rufloVersion,
151
+ package: packageMeta ?? { name: 'ruflo', version: this.opts.rufloVersion },
152
+ commands: RUFLO_COMMANDS, commandCount: RUFLO_COMMANDS.length,
153
+ agents: AGENT_TYPES, agentCount: AGENT_TYPES.length,
154
+ hooks: { count: HOOK_TYPES.length, types: HOOK_TYPES },
155
+ workers: { count: WORKER_TYPES.length, types: WORKER_TYPES },
156
+ mcpTools: 215,
157
+ });
158
+ }
159
+ buildModelsSection() {
160
+ const p = this.opts.profile;
161
+ const resolveModels = (names) => names.map((n) => OFFLINE_MODELS.find((m) => m.name === n) ?? { name: n, format: 'gguf', sizeHint: 'unknown', params: 'unknown' });
162
+ if (p === 'cloud') {
163
+ const content = { type: 'models', profile: 'cloud', provider: 'api-vault', models: [] };
164
+ if (this.opts.apiKeys && existsSync(this.opts.apiKeys)) {
165
+ const enc = encryptApiKeys(this.opts.apiKeys, generateBuildPassphrase());
166
+ content.vault = { format: AES_ALG, kdf: 'scrypt', kdfParams: SCRYPT_OPTS, encrypted: enc.toString('base64') };
167
+ this.log(' API keys encrypted into vault');
168
+ }
169
+ else {
170
+ content.vault = null;
171
+ content.note = 'No API keys provided; set --api-keys to include vault';
172
+ }
173
+ return jsonBuf(content);
174
+ }
175
+ if (p === 'hybrid') {
176
+ const content = {
177
+ type: 'models', profile: 'hybrid', provider: 'hybrid', engine: 'ruvllm+api-vault',
178
+ localModels: resolveModels(this.opts.models),
179
+ routing: { tier1: { handler: 'agent-booster', latency: '<1ms' }, tier2: { handler: 'local-model', latency: '~200ms' }, tier3: { handler: 'cloud-api', latency: '2-5s' }, complexityThreshold: 0.3 },
180
+ };
181
+ if (this.opts.apiKeys && existsSync(this.opts.apiKeys)) {
182
+ const enc = encryptApiKeys(this.opts.apiKeys, generateBuildPassphrase());
183
+ content.vault = { format: AES_ALG, kdf: 'scrypt', encrypted: enc.toString('base64') };
184
+ this.log(' API keys encrypted into vault');
185
+ }
186
+ return jsonBuf(content);
187
+ }
188
+ // offline
189
+ const names = this.opts.models.length > 0 ? this.opts.models : ['phi-3-mini-q4', 'qwen2.5-coder-3b-q4'];
190
+ return jsonBuf({
191
+ type: 'models', profile: 'offline', provider: 'ruvllm', engine: 'ruvllm',
192
+ models: resolveModels(names),
193
+ routing: { tier1: { handler: 'agent-booster-wasm', latency: '<1ms' }, tier2: { handler: 'phi-3-mini-q4', latency: '~200ms' }, tier3: { handler: 'qwen2.5-coder-3b-q4', latency: '~2s' }, fallbackToCloud: false },
194
+ kvCache: { backend: 'rvf', persistence: true },
195
+ note: 'Manifest-only: GGUF weights fetched during full build pipeline',
196
+ });
197
+ }
198
+ buildDataSection() {
199
+ // Empty RVF database header (matches rvf-backend.ts RVF\0 magic)
200
+ const rvfMagic = Buffer.from([0x52, 0x56, 0x46, 0x00]);
201
+ const hdrJson = Buffer.from(JSON.stringify({
202
+ magic: 'RVF\0', version: 1, dimensions: 1536, metric: 'cosine',
203
+ quantization: 'fp32', entryCount: 0, createdAt: Date.now(), updatedAt: Date.now(),
204
+ }), 'utf-8');
205
+ const hdrLen = Buffer.alloc(4);
206
+ hdrLen.writeUInt32LE(hdrJson.length, 0);
207
+ const rvfDb = Buffer.concat([rvfMagic, hdrLen, hdrJson]);
208
+ const manifest = jsonBuf({
209
+ type: 'data',
210
+ components: {
211
+ agentDb: { format: 'rvf', magicBytes: 'RVF\\0', databaseSize: rvfDb.length },
212
+ hnswIndex: { type: 'hnsw-index', dimensions: 1536, metric: 'cosine', m: 16, efConstruction: 200, maxElements: 100_000, vectorCount: 0 },
213
+ sonaPatterns: { type: 'sona-patterns', version: 1, architecture: 'self-optimizing-neural', adaptationTime: '<0.05ms', patterns: [], expertCount: 8, moeConfig: { topK: 2, capacityFactor: 1.25, loadBalancingLoss: 0.01 } },
214
+ pluginRegistry: { source: 'ipfs', snapshotted: true, pluginCount: 20 },
215
+ },
216
+ });
217
+ return Buffer.concat([rvfDb, Buffer.from('\n---DATA-MANIFEST---\n'), manifest]);
218
+ }
219
+ buildVerifySection() {
220
+ const scriptPath = resolve(dirname(new URL(import.meta.url).pathname), '../../../../scripts/verify-appliance.sh');
221
+ let script;
222
+ if (existsSync(scriptPath)) {
223
+ script = readFileSync(scriptPath);
224
+ this.log(` Bundled verify-appliance.sh (${fmtBytes(script.length)})`);
225
+ }
226
+ else {
227
+ script = Buffer.from([
228
+ '#!/bin/sh', 'set -e', 'RUFLO_CMD="${RUFLO_CMD:-ruflo}"',
229
+ 'echo "Running basic verification..."',
230
+ '$RUFLO_CMD --version && echo " OK: CLI" || echo " FAIL: CLI"',
231
+ '$RUFLO_CMD doctor && echo " OK: Doctor" || echo " FAIL: Doctor"',
232
+ 'echo "Verification complete."',
233
+ ].join('\n'), 'utf-8');
234
+ this.log(' Using stub verify script (verify-appliance.sh not found)');
235
+ }
236
+ const manifest = jsonBuf({
237
+ type: 'verify-manifest', categories: 35, criticalChecks: 95,
238
+ script: 'verify-appliance.sh',
239
+ scriptSha256: createHash('sha256').update(script).digest('hex'),
240
+ quickMode: { categories: [1, 2, 3, 4, 5, 25] },
241
+ });
242
+ return Buffer.concat([script, Buffer.from('\n---VERIFY-MANIFEST---\n'), manifest]);
243
+ }
244
+ // ── Header ───────────────────────────────────────────────
245
+ buildHeaderPartial() {
246
+ const providerMap = { cloud: 'api-vault', hybrid: 'hybrid', offline: 'ruvllm' };
247
+ const caps = ['cli-26-commands', 'agents-60-plus', 'hooks-17', 'workers-12', 'mcp-215-tools', 'agentdb-rvf', 'hnsw-search', 'sona-patterns', 'security-scanning', 'performance-profiling', 'hive-mind-consensus', 'plugin-registry'];
248
+ if (this.opts.profile !== 'cloud')
249
+ caps.push('local-inference-ruvllm');
250
+ if (this.opts.profile !== 'offline')
251
+ caps.push('cloud-api-vault');
252
+ const boot = {
253
+ entrypoint: '/opt/ruflo/bin/cli.js',
254
+ args: ['--profile', this.opts.profile],
255
+ env: { NODE_ENV: 'production', CLAUDE_FLOW_MEMORY_BACKEND: 'hybrid', CLAUDE_FLOW_LOG_LEVEL: 'info' },
256
+ isolation: this.opts.profile === 'cloud' ? 'container' : 'native',
257
+ };
258
+ const models = {
259
+ provider: providerMap[this.opts.profile],
260
+ engine: this.opts.profile === 'cloud' ? undefined : 'ruvllm-0.1.0',
261
+ models: this.opts.models.length > 0 ? this.opts.models : undefined,
262
+ vaultEncryption: this.opts.profile !== 'offline' ? 'aes-256-gcm' : undefined,
263
+ };
264
+ return {
265
+ magic: 'RVFA', version: 1, name: 'ruflo-appliance', appVersion: this.opts.rufloVersion,
266
+ arch: this.opts.arch, platform: 'linux', profile: this.opts.profile,
267
+ created: new Date().toISOString(), boot, models, capabilities: caps,
268
+ };
269
+ }
270
+ log(msg) {
271
+ if (this.opts.verbose)
272
+ console.log(`[RvfaBuilder] ${msg}`);
273
+ }
274
+ }
275
+ // ── Helpers ──────────────────────────────────────────────────
276
+ function jsonBuf(obj) {
277
+ return Buffer.from(JSON.stringify(obj, null, 2), 'utf-8');
278
+ }
279
+ function parseEnvFile(content) {
280
+ const result = {};
281
+ for (const line of content.split('\n')) {
282
+ const t = line.trim();
283
+ if (!t || t.startsWith('#'))
284
+ continue;
285
+ const eq = t.indexOf('=');
286
+ if (eq === -1)
287
+ continue;
288
+ const k = t.substring(0, eq).trim();
289
+ let v = t.substring(eq + 1).trim();
290
+ if ((v.startsWith('"') && v.endsWith('"')) || (v.startsWith("'") && v.endsWith("'")))
291
+ v = v.slice(1, -1);
292
+ if (k)
293
+ result[k] = v;
294
+ }
295
+ return result;
296
+ }
297
+ function detectRufloVersion() {
298
+ try {
299
+ const p = resolve(dirname(new URL(import.meta.url).pathname), '../../package.json');
300
+ if (existsSync(p))
301
+ return JSON.parse(readFileSync(p, 'utf-8')).version ?? '3.5.0';
302
+ }
303
+ catch { /* ignore */ }
304
+ return '3.5.0';
305
+ }
306
+ function defaultModelsForProfile(profile) {
307
+ if (profile === 'offline')
308
+ return ['phi-3-mini-q4', 'qwen2.5-coder-3b-q4'];
309
+ if (profile === 'hybrid')
310
+ return ['phi-3-mini-q4'];
311
+ return [];
312
+ }
313
+ function generateBuildPassphrase() {
314
+ return randomBytes(32).toString('hex');
315
+ }
316
+ function fmtBytes(b) {
317
+ if (b < 1024)
318
+ return `${b}B`;
319
+ if (b < 1048576)
320
+ return `${(b / 1024).toFixed(1)}KB`;
321
+ if (b < 1073741824)
322
+ return `${(b / 1048576).toFixed(1)}MB`;
323
+ return `${(b / 1073741824).toFixed(2)}GB`;
324
+ }
325
+ function elapsed(t) {
326
+ const ms = performance.now() - t;
327
+ return ms < 1000 ? `${ms.toFixed(0)}ms` : `${(ms / 1000).toFixed(2)}s`;
328
+ }
329
+ //# sourceMappingURL=rvfa-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rvfa-builder.js","sourceRoot":"","sources":["../../../src/appliance/rvfa-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * RVFA Distribution & Hot-Patch Module
3
+ *
4
+ * IPFS publishing of RVFA appliances via Pinata and RVFP binary patches
5
+ * for section-level hot updates with atomic rollback.
6
+ *
7
+ * RVFP layout: [4B "RVFP"] [4B version u32LE] [4B header_len u32LE]
8
+ * [header JSON] [new section data] [32B SHA256 footer]
9
+ */
10
+ export interface RvfpHeader {
11
+ magic: 'RVFP';
12
+ version: number;
13
+ targetApplianceName: string;
14
+ targetApplianceVersion: string;
15
+ targetSection: string;
16
+ patchVersion: string;
17
+ created: string;
18
+ newSectionSize: number;
19
+ newSectionSha256: string;
20
+ compression: 'none' | 'gzip';
21
+ signature?: string;
22
+ signedBy?: string;
23
+ }
24
+ export interface CreatePatchOptions {
25
+ targetName: string;
26
+ targetVersion: string;
27
+ sectionId: string;
28
+ sectionData: Buffer;
29
+ patchVersion: string;
30
+ compression?: 'none' | 'gzip';
31
+ privateKey?: Buffer;
32
+ signedBy?: string;
33
+ }
34
+ export interface ApplyOptions {
35
+ backup?: boolean;
36
+ verify?: boolean;
37
+ publicKey?: Buffer;
38
+ }
39
+ export interface ApplyResult {
40
+ success: boolean;
41
+ backupPath?: string;
42
+ newSize: number;
43
+ patchedSection: string;
44
+ errors: string[];
45
+ }
46
+ export interface PatchVerifyResult {
47
+ valid: boolean;
48
+ header: RvfpHeader;
49
+ errors: string[];
50
+ }
51
+ export interface PublishConfig {
52
+ pinataJwt?: string;
53
+ gatewayUrl?: string;
54
+ apiUrl?: string;
55
+ }
56
+ export interface PublishMetadata {
57
+ name?: string;
58
+ description?: string;
59
+ version?: string;
60
+ profile?: string;
61
+ }
62
+ export interface PublishResult {
63
+ cid: string;
64
+ size: number;
65
+ gatewayUrl: string;
66
+ pinataUrl: string;
67
+ }
68
+ export interface PublishedItem {
69
+ cid: string;
70
+ name: string;
71
+ size: number;
72
+ date: string;
73
+ }
74
+ export declare class RvfaPatcher {
75
+ static createPatch(opts: CreatePatchOptions): Promise<Buffer>;
76
+ static parsePatchHeader(buf: Buffer): RvfpHeader;
77
+ static verifyPatch(buf: Buffer): Promise<PatchVerifyResult>;
78
+ static applyPatch(rvfaPath: string, patchBuf: Buffer, opts?: ApplyOptions): Promise<ApplyResult>;
79
+ }
80
+ export declare class RvfaPublisher {
81
+ private jwt;
82
+ private gw;
83
+ private api;
84
+ constructor(config: PublishConfig);
85
+ private upload;
86
+ publish(rvfaPath: string, meta?: PublishMetadata): Promise<PublishResult>;
87
+ publishPatch(patchBuf: Buffer, meta?: PublishMetadata): Promise<PublishResult>;
88
+ fetch(cid: string, outputPath: string): Promise<void>;
89
+ list(): Promise<PublishedItem[]>;
90
+ pin(cid: string, name?: string): Promise<void>;
91
+ }
92
+ export declare function createPublisher(config?: Partial<PublishConfig>): RvfaPublisher;
93
+ export declare function createAndVerifyPatch(options: CreatePatchOptions): Promise<{
94
+ patch: Buffer;
95
+ verification: PatchVerifyResult;
96
+ }>;
97
+ //# sourceMappingURL=rvfa-distribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rvfa-distribution.d.ts","sourceRoot":"","sources":["../../../src/appliance/rvfa-distribution.ts"],"names":[],"mappings":"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"}