kynjal-cli 3.1.3 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (566) 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 +25 -4
  22. package/.claude/agents/templates/sparc-coordinator.md +3 -3
  23. package/.claude/helpers/auto-commit.sh +1 -1
  24. package/.claude/helpers/auto-memory-hook.mjs +27 -9
  25. package/.claude/helpers/hook-handler.cjs +58 -18
  26. package/.claude/helpers/statusline.cjs +14 -33
  27. package/.claude/helpers/statusline.js +3 -3
  28. package/.claude/settings.json +9 -9
  29. package/.claude/skills/reasoningbank-intelligence/SKILL.md +2 -2
  30. package/.claude/skills/swarm-orchestration/SKILL.md +1 -1
  31. package/README.md +383 -170
  32. package/bin/cli.js +6 -6
  33. package/bin/mcp-server.js +1 -1
  34. package/bin/preinstall.cjs +2 -0
  35. package/dist/src/appliance/gguf-engine.js +664 -0
  36. package/dist/src/appliance/gguf-engine.js.map +1 -0
  37. package/dist/src/appliance/ruvllm-bridge.js +492 -0
  38. package/dist/src/appliance/ruvllm-bridge.js.map +1 -0
  39. package/dist/src/appliance/rvfa-builder.js +383 -0
  40. package/dist/src/appliance/rvfa-builder.js.map +1 -0
  41. package/dist/src/appliance/rvfa-distribution.js +533 -0
  42. package/dist/src/appliance/rvfa-distribution.js.map +1 -0
  43. package/dist/src/appliance/rvfa-format.js +465 -0
  44. package/dist/src/appliance/rvfa-format.js.map +1 -0
  45. package/dist/src/appliance/rvfa-runner.js +373 -0
  46. package/dist/src/appliance/rvfa-runner.js.map +1 -0
  47. package/dist/src/appliance/rvfa-signing.js +469 -0
  48. package/dist/src/appliance/rvfa-signing.js.map +1 -0
  49. package/dist/src/benchmarks/pretrain/index.js +542 -331
  50. package/dist/src/benchmarks/pretrain/index.js.map +1 -1
  51. package/dist/src/commands/agent.d.ts.map +1 -1
  52. package/dist/src/commands/agent.js +725 -502
  53. package/dist/src/commands/agent.js.map +1 -1
  54. package/dist/src/commands/analyze.js +1548 -1218
  55. package/dist/src/commands/analyze.js.map +1 -1
  56. package/dist/src/commands/appliance-advanced.d.ts +9 -0
  57. package/dist/src/commands/appliance-advanced.d.ts.map +1 -0
  58. package/dist/src/commands/appliance-advanced.js +324 -0
  59. package/dist/src/commands/appliance-advanced.js.map +1 -0
  60. package/dist/src/commands/appliance.d.ts +8 -0
  61. package/dist/src/commands/appliance.d.ts.map +1 -0
  62. package/dist/src/commands/appliance.js +581 -0
  63. package/dist/src/commands/appliance.js.map +1 -0
  64. package/dist/src/commands/benchmark.js +523 -372
  65. package/dist/src/commands/benchmark.js.map +1 -1
  66. package/dist/src/commands/claims.js +364 -274
  67. package/dist/src/commands/claims.js.map +1 -1
  68. package/dist/src/commands/cleanup.d.ts +13 -0
  69. package/dist/src/commands/cleanup.d.ts.map +1 -0
  70. package/dist/src/commands/cleanup.js +262 -0
  71. package/dist/src/commands/cleanup.js.map +1 -0
  72. package/dist/src/commands/completions.js +118 -477
  73. package/dist/src/commands/completions.js.map +1 -1
  74. package/dist/src/commands/config.js +303 -237
  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 +597 -425
  78. package/dist/src/commands/daemon.js.map +1 -1
  79. package/dist/src/commands/deployment.js +275 -194
  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 +690 -460
  83. package/dist/src/commands/doctor.js.map +1 -1
  84. package/dist/src/commands/embeddings.js +1543 -1293
  85. package/dist/src/commands/embeddings.js.map +1 -1
  86. package/dist/src/commands/guidance.js +596 -449
  87. package/dist/src/commands/guidance.js.map +1 -1
  88. package/dist/src/commands/hive-mind.js +938 -854
  89. package/dist/src/commands/hive-mind.js.map +1 -1
  90. package/dist/src/commands/hooks.d.ts.map +1 -1
  91. package/dist/src/commands/hooks.js +3677 -2570
  92. package/dist/src/commands/hooks.js.map +1 -1
  93. package/dist/src/commands/index.js +322 -122
  94. package/dist/src/commands/index.js.map +1 -1
  95. package/dist/src/commands/init.d.ts +1 -1
  96. package/dist/src/commands/init.d.ts.map +1 -1
  97. package/dist/src/commands/init.js +943 -787
  98. package/dist/src/commands/init.js.map +1 -1
  99. package/dist/src/commands/issues.js +558 -383
  100. package/dist/src/commands/issues.js.map +1 -1
  101. package/dist/src/commands/mcp.d.ts.map +1 -1
  102. package/dist/src/commands/mcp.js +605 -475
  103. package/dist/src/commands/mcp.js.map +1 -1
  104. package/dist/src/commands/memory.d.ts.map +1 -1
  105. package/dist/src/commands/memory.js +1031 -814
  106. package/dist/src/commands/memory.js.map +1 -1
  107. package/dist/src/commands/migrate.js +347 -282
  108. package/dist/src/commands/migrate.js.map +1 -1
  109. package/dist/src/commands/neural.d.ts.map +1 -1
  110. package/dist/src/commands/neural.js +1563 -1283
  111. package/dist/src/commands/neural.js.map +1 -1
  112. package/dist/src/commands/performance.js +643 -497
  113. package/dist/src/commands/performance.js.map +1 -1
  114. package/dist/src/commands/plugins.js +841 -668
  115. package/dist/src/commands/plugins.js.map +1 -1
  116. package/dist/src/commands/process.js +447 -392
  117. package/dist/src/commands/process.js.map +1 -1
  118. package/dist/src/commands/progress.js +256 -162
  119. package/dist/src/commands/progress.js.map +1 -1
  120. package/dist/src/commands/providers.js +220 -150
  121. package/dist/src/commands/providers.js.map +1 -1
  122. package/dist/src/commands/route.js +665 -520
  123. package/dist/src/commands/route.js.map +1 -1
  124. package/dist/src/commands/ruvector/backup.js +651 -505
  125. package/dist/src/commands/ruvector/backup.js.map +1 -1
  126. package/dist/src/commands/ruvector/benchmark.js +401 -349
  127. package/dist/src/commands/ruvector/benchmark.js.map +1 -1
  128. package/dist/src/commands/ruvector/import.js +267 -225
  129. package/dist/src/commands/ruvector/import.js.map +1 -1
  130. package/dist/src/commands/ruvector/index.js +75 -37
  131. package/dist/src/commands/ruvector/index.js.map +1 -1
  132. package/dist/src/commands/ruvector/init.js +359 -336
  133. package/dist/src/commands/ruvector/init.js.map +1 -1
  134. package/dist/src/commands/ruvector/migrate.js +322 -335
  135. package/dist/src/commands/ruvector/migrate.js.map +1 -1
  136. package/dist/src/commands/ruvector/optimize.js +431 -375
  137. package/dist/src/commands/ruvector/optimize.js.map +1 -1
  138. package/dist/src/commands/ruvector/setup.js +117 -703
  139. package/dist/src/commands/ruvector/setup.js.map +1 -1
  140. package/dist/src/commands/ruvector/status.js +419 -364
  141. package/dist/src/commands/ruvector/status.js.map +1 -1
  142. package/dist/src/commands/security.d.ts.map +1 -1
  143. package/dist/src/commands/security.js +610 -456
  144. package/dist/src/commands/security.js.map +1 -1
  145. package/dist/src/commands/session.d.ts +1 -1
  146. package/dist/src/commands/session.js +627 -505
  147. package/dist/src/commands/session.js.map +1 -1
  148. package/dist/src/commands/start.d.ts +1 -1
  149. package/dist/src/commands/start.js +368 -271
  150. package/dist/src/commands/start.js.map +1 -1
  151. package/dist/src/commands/status.d.ts +1 -1
  152. package/dist/src/commands/status.d.ts.map +1 -1
  153. package/dist/src/commands/status.js +492 -379
  154. package/dist/src/commands/status.js.map +1 -1
  155. package/dist/src/commands/swarm.js +488 -408
  156. package/dist/src/commands/swarm.js.map +1 -1
  157. package/dist/src/commands/task.d.ts +1 -1
  158. package/dist/src/commands/task.js +539 -424
  159. package/dist/src/commands/task.js.map +1 -1
  160. package/dist/src/commands/transfer-store.js +412 -322
  161. package/dist/src/commands/transfer-store.js.map +1 -1
  162. package/dist/src/commands/update.js +291 -196
  163. package/dist/src/commands/update.js.map +1 -1
  164. package/dist/src/commands/workflow.js +486 -386
  165. package/dist/src/commands/workflow.js.map +1 -1
  166. package/dist/src/config-adapter.js +40 -39
  167. package/dist/src/config-adapter.js.map +1 -1
  168. package/dist/src/index.js +416 -312
  169. package/dist/src/index.js.map +1 -1
  170. package/dist/src/infrastructure/in-memory-repositories.js +507 -246
  171. package/dist/src/infrastructure/in-memory-repositories.js.map +1 -1
  172. package/dist/src/init/claudemd-generator.js +78 -368
  173. package/dist/src/init/claudemd-generator.js.map +1 -1
  174. package/dist/src/init/executor.js +1019 -1345
  175. package/dist/src/init/executor.js.map +1 -1
  176. package/dist/src/init/helpers-generator.js +60 -635
  177. package/dist/src/init/helpers-generator.js.map +1 -1
  178. package/dist/src/init/index.d.ts +1 -1
  179. package/dist/src/init/index.d.ts.map +1 -1
  180. package/dist/src/init/index.js +1 -1
  181. package/dist/src/init/index.js.map +1 -1
  182. package/dist/src/init/mcp-generator.d.ts +0 -1
  183. package/dist/src/init/mcp-generator.d.ts.map +1 -1
  184. package/dist/src/init/mcp-generator.js +62 -42
  185. package/dist/src/init/mcp-generator.js.map +1 -1
  186. package/dist/src/init/settings-generator.d.ts.map +1 -1
  187. package/dist/src/init/settings-generator.js +167 -100
  188. package/dist/src/init/settings-generator.js.map +1 -1
  189. package/dist/src/init/statusline-generator.d.ts +16 -8
  190. package/dist/src/init/statusline-generator.d.ts.map +1 -1
  191. package/dist/src/init/statusline-generator.js +20 -1300
  192. package/dist/src/init/statusline-generator.js.map +1 -1
  193. package/dist/src/init/types.d.ts +15 -5
  194. package/dist/src/init/types.d.ts.map +1 -1
  195. package/dist/src/init/types.js +66 -76
  196. package/dist/src/init/types.js.map +1 -1
  197. package/dist/src/mcp-client.js +130 -76
  198. package/dist/src/mcp-client.js.map +1 -1
  199. package/dist/src/mcp-server.js +758 -445
  200. package/dist/src/mcp-server.js.map +1 -1
  201. package/dist/src/mcp-tools/agent-tools.js +492 -391
  202. package/dist/src/mcp-tools/agent-tools.js.map +1 -1
  203. package/dist/src/mcp-tools/agentdb-tools.d.ts +30 -0
  204. package/dist/src/mcp-tools/agentdb-tools.d.ts.map +1 -0
  205. package/dist/src/mcp-tools/agentdb-tools.js +758 -0
  206. package/dist/src/mcp-tools/agentdb-tools.js.map +1 -0
  207. package/dist/src/mcp-tools/analyze-tools.js +236 -172
  208. package/dist/src/mcp-tools/analyze-tools.js.map +1 -1
  209. package/dist/src/mcp-tools/auto-install.js +142 -80
  210. package/dist/src/mcp-tools/auto-install.js.map +1 -1
  211. package/dist/src/mcp-tools/browser-tools.js +375 -252
  212. package/dist/src/mcp-tools/browser-tools.js.map +1 -1
  213. package/dist/src/mcp-tools/claims-tools.js +565 -473
  214. package/dist/src/mcp-tools/claims-tools.js.map +1 -1
  215. package/dist/src/mcp-tools/config-tools.d.ts.map +1 -1
  216. package/dist/src/mcp-tools/config-tools.js +284 -190
  217. package/dist/src/mcp-tools/config-tools.js.map +1 -1
  218. package/dist/src/mcp-tools/coordination-tools.d.ts.map +1 -1
  219. package/dist/src/mcp-tools/coordination-tools.js +600 -349
  220. package/dist/src/mcp-tools/coordination-tools.js.map +1 -1
  221. package/dist/src/mcp-tools/daa-tools.js +367 -289
  222. package/dist/src/mcp-tools/daa-tools.js.map +1 -1
  223. package/dist/src/mcp-tools/embeddings-tools.js +693 -582
  224. package/dist/src/mcp-tools/embeddings-tools.js.map +1 -1
  225. package/dist/src/mcp-tools/github-tools.js +312 -261
  226. package/dist/src/mcp-tools/github-tools.js.map +1 -1
  227. package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +1 -1
  228. package/dist/src/mcp-tools/hive-mind-tools.js +718 -423
  229. package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -1
  230. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  231. package/dist/src/mcp-tools/hooks-tools.js +2726 -1978
  232. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  233. package/dist/src/mcp-tools/index.d.ts +2 -0
  234. package/dist/src/mcp-tools/index.d.ts.map +1 -1
  235. package/dist/src/mcp-tools/index.js +2 -0
  236. package/dist/src/mcp-tools/index.js.map +1 -1
  237. package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
  238. package/dist/src/mcp-tools/memory-tools.js +514 -329
  239. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  240. package/dist/src/mcp-tools/neural-tools.d.ts.map +1 -1
  241. package/dist/src/mcp-tools/neural-tools.js +428 -326
  242. package/dist/src/mcp-tools/neural-tools.js.map +1 -1
  243. package/dist/src/mcp-tools/performance-tools.js +480 -420
  244. package/dist/src/mcp-tools/performance-tools.js.map +1 -1
  245. package/dist/src/mcp-tools/progress-tools.js +278 -204
  246. package/dist/src/mcp-tools/progress-tools.js.map +1 -1
  247. package/dist/src/mcp-tools/ruvllm-tools.d.ts +9 -0
  248. package/dist/src/mcp-tools/ruvllm-tools.d.ts.map +1 -0
  249. package/dist/src/mcp-tools/ruvllm-tools.js +399 -0
  250. package/dist/src/mcp-tools/ruvllm-tools.js.map +1 -0
  251. package/dist/src/mcp-tools/security-tools.js +429 -297
  252. package/dist/src/mcp-tools/security-tools.js.map +1 -1
  253. package/dist/src/mcp-tools/session-tools.js +234 -185
  254. package/dist/src/mcp-tools/session-tools.js.map +1 -1
  255. package/dist/src/mcp-tools/swarm-tools.d.ts +2 -1
  256. package/dist/src/mcp-tools/swarm-tools.d.ts.map +1 -1
  257. package/dist/src/mcp-tools/swarm-tools.js +303 -64
  258. package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
  259. package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
  260. package/dist/src/mcp-tools/system-tools.js +352 -200
  261. package/dist/src/mcp-tools/system-tools.js.map +1 -1
  262. package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
  263. package/dist/src/mcp-tools/task-tools.js +357 -189
  264. package/dist/src/mcp-tools/task-tools.js.map +1 -1
  265. package/dist/src/mcp-tools/terminal-tools.js +196 -148
  266. package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
  267. package/dist/src/mcp-tools/transfer-tools.js +333 -186
  268. package/dist/src/mcp-tools/transfer-tools.js.map +1 -1
  269. package/dist/src/mcp-tools/wasm-agent-tools.d.ts +9 -0
  270. package/dist/src/mcp-tools/wasm-agent-tools.d.ts.map +1 -0
  271. package/dist/src/mcp-tools/wasm-agent-tools.js +377 -0
  272. package/dist/src/mcp-tools/wasm-agent-tools.js.map +1 -0
  273. package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -1
  274. package/dist/src/mcp-tools/workflow-tools.js +471 -335
  275. package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
  276. package/dist/src/memory/ewc-consolidation.js +345 -173
  277. package/dist/src/memory/ewc-consolidation.js.map +1 -1
  278. package/dist/src/memory/intelligence.js +841 -359
  279. package/dist/src/memory/intelligence.js.map +1 -1
  280. package/dist/src/memory/memory-bridge.js +1964 -0
  281. package/dist/src/memory/memory-bridge.js.map +1 -0
  282. package/dist/src/memory/memory-initializer.js +1895 -1602
  283. package/dist/src/memory/memory-initializer.js.map +1 -1
  284. package/dist/src/memory/sona-optimizer.js +329 -199
  285. package/dist/src/memory/sona-optimizer.js.map +1 -1
  286. package/dist/src/output.d.ts +2 -2
  287. package/dist/src/output.d.ts.map +1 -1
  288. package/dist/src/output.js +273 -242
  289. package/dist/src/output.js.map +1 -1
  290. package/dist/src/parser.js +217 -124
  291. package/dist/src/parser.js.map +1 -1
  292. package/dist/src/plugins/manager.js +531 -278
  293. package/dist/src/plugins/manager.js.map +1 -1
  294. package/dist/src/plugins/store/discovery.js +362 -275
  295. package/dist/src/plugins/store/discovery.js.map +1 -1
  296. package/dist/src/plugins/store/index.js +105 -48
  297. package/dist/src/plugins/store/index.js.map +1 -1
  298. package/dist/src/plugins/store/search.js +107 -69
  299. package/dist/src/plugins/store/search.js.map +1 -1
  300. package/dist/src/plugins/tests/demo-plugin-store.js +160 -113
  301. package/dist/src/plugins/tests/demo-plugin-store.js.map +1 -1
  302. package/dist/src/plugins/tests/standalone-test.js +223 -172
  303. package/dist/src/plugins/tests/standalone-test.js.map +1 -1
  304. package/dist/src/plugins/tests/test-plugin-store.js +228 -190
  305. package/dist/src/plugins/tests/test-plugin-store.js.map +1 -1
  306. package/dist/src/production/circuit-breaker.js +126 -62
  307. package/dist/src/production/circuit-breaker.js.map +1 -1
  308. package/dist/src/production/error-handler.js +156 -86
  309. package/dist/src/production/error-handler.js.map +1 -1
  310. package/dist/src/production/monitoring.js +220 -139
  311. package/dist/src/production/monitoring.js.map +1 -1
  312. package/dist/src/production/rate-limiter.js +93 -74
  313. package/dist/src/production/rate-limiter.js.map +1 -1
  314. package/dist/src/production/retry.js +167 -75
  315. package/dist/src/production/retry.js.map +1 -1
  316. package/dist/src/prompt.js +560 -436
  317. package/dist/src/prompt.js.map +1 -1
  318. package/dist/src/runtime/headless.js +289 -200
  319. package/dist/src/runtime/headless.js.map +1 -1
  320. package/dist/src/ruvector/agent-wasm.js +511 -0
  321. package/dist/src/ruvector/agent-wasm.js.map +1 -0
  322. package/dist/src/ruvector/ast-analyzer.js +232 -145
  323. package/dist/src/ruvector/ast-analyzer.js.map +1 -1
  324. package/dist/src/ruvector/coverage-router.js +419 -287
  325. package/dist/src/ruvector/coverage-router.js.map +1 -1
  326. package/dist/src/ruvector/coverage-tools.js +101 -56
  327. package/dist/src/ruvector/coverage-tools.js.map +1 -1
  328. package/dist/src/ruvector/diff-classifier.js +451 -324
  329. package/dist/src/ruvector/diff-classifier.js.map +1 -1
  330. package/dist/src/ruvector/enhanced-model-router.js +337 -251
  331. package/dist/src/ruvector/enhanced-model-router.js.map +1 -1
  332. package/dist/src/ruvector/flash-attention.js +254 -223
  333. package/dist/src/ruvector/flash-attention.js.map +1 -1
  334. package/dist/src/ruvector/graph-analyzer.js +680 -486
  335. package/dist/src/ruvector/graph-analyzer.js.map +1 -1
  336. package/dist/src/ruvector/index.js +113 -27
  337. package/dist/src/ruvector/index.js.map +1 -1
  338. package/dist/src/ruvector/lora-adapter.js +248 -155
  339. package/dist/src/ruvector/lora-adapter.js.map +1 -1
  340. package/dist/src/ruvector/model-router.js +248 -175
  341. package/dist/src/ruvector/model-router.js.map +1 -1
  342. package/dist/src/ruvector/moe-router.js +286 -228
  343. package/dist/src/ruvector/moe-router.js.map +1 -1
  344. package/dist/src/ruvector/q-learning-router.js +338 -257
  345. package/dist/src/ruvector/q-learning-router.js.map +1 -1
  346. package/dist/src/ruvector/ruvllm-wasm.js +527 -0
  347. package/dist/src/ruvector/ruvllm-wasm.js.map +1 -0
  348. package/dist/src/ruvector/semantic-router.js +67 -60
  349. package/dist/src/ruvector/semantic-router.js.map +1 -1
  350. package/dist/src/ruvector/vector-db.js +205 -119
  351. package/dist/src/ruvector/vector-db.js.map +1 -1
  352. package/dist/src/services/agentic-flow-bridge.js +168 -0
  353. package/dist/src/services/agentic-flow-bridge.js.map +1 -0
  354. package/dist/src/services/claim-service.js +940 -615
  355. package/dist/src/services/claim-service.js.map +1 -1
  356. package/dist/src/services/container-worker-pool.js +669 -399
  357. package/dist/src/services/container-worker-pool.js.map +1 -1
  358. package/dist/src/services/headless-worker-executor.js +467 -441
  359. package/dist/src/services/headless-worker-executor.js.map +1 -1
  360. package/dist/src/services/index.d.ts +5 -5
  361. package/dist/src/services/index.d.ts.map +1 -1
  362. package/dist/src/services/index.js +4 -4
  363. package/dist/src/services/index.js.map +1 -1
  364. package/dist/src/services/registry-api.js +201 -93
  365. package/dist/src/services/registry-api.js.map +1 -1
  366. package/dist/src/services/ruvector-training.js +414 -144
  367. package/dist/src/services/ruvector-training.js.map +1 -1
  368. package/dist/src/services/worker-daemon.js +928 -531
  369. package/dist/src/services/worker-daemon.js.map +1 -1
  370. package/dist/src/services/worker-queue.js +550 -331
  371. package/dist/src/services/worker-queue.js.map +1 -1
  372. package/dist/src/suggest.js +55 -45
  373. package/dist/src/suggest.js.map +1 -1
  374. package/dist/src/transfer/anonymization/index.js +37 -29
  375. package/dist/src/transfer/anonymization/index.js.map +1 -1
  376. package/dist/src/transfer/deploy-seraphine.d.ts +1 -1
  377. package/dist/src/transfer/deploy-seraphine.js +156 -129
  378. package/dist/src/transfer/deploy-seraphine.js.map +1 -1
  379. package/dist/src/transfer/export.js +142 -84
  380. package/dist/src/transfer/export.js.map +1 -1
  381. package/dist/src/transfer/index.d.ts +1 -1
  382. package/dist/src/transfer/index.d.ts.map +1 -1
  383. package/dist/src/transfer/index.js +2 -0
  384. package/dist/src/transfer/index.js.map +1 -1
  385. package/dist/src/transfer/ipfs/client.js +337 -179
  386. package/dist/src/transfer/ipfs/client.js.map +1 -1
  387. package/dist/src/transfer/ipfs/upload.js +434 -290
  388. package/dist/src/transfer/ipfs/upload.js.map +1 -1
  389. package/dist/src/transfer/models/seraphine.js +58 -58
  390. package/dist/src/transfer/models/seraphine.js.map +1 -1
  391. package/dist/src/transfer/serialization/cfp.js +37 -33
  392. package/dist/src/transfer/serialization/cfp.js.map +1 -1
  393. package/dist/src/transfer/storage/gcs.js +248 -139
  394. package/dist/src/transfer/storage/gcs.js.map +1 -1
  395. package/dist/src/transfer/store/discovery.js +353 -243
  396. package/dist/src/transfer/store/discovery.js.map +1 -1
  397. package/dist/src/transfer/store/download.js +365 -243
  398. package/dist/src/transfer/store/download.js.map +1 -1
  399. package/dist/src/transfer/store/index.js +130 -63
  400. package/dist/src/transfer/store/index.js.map +1 -1
  401. package/dist/src/transfer/store/publish.js +258 -184
  402. package/dist/src/transfer/store/publish.js.map +1 -1
  403. package/dist/src/transfer/store/registry.js +73 -51
  404. package/dist/src/transfer/store/registry.js.map +1 -1
  405. package/dist/src/transfer/store/search.js +96 -64
  406. package/dist/src/transfer/store/search.js.map +1 -1
  407. package/dist/src/transfer/store/tests/standalone-test.js +231 -174
  408. package/dist/src/transfer/store/tests/standalone-test.js.map +1 -1
  409. package/dist/src/transfer/test-seraphine.js +130 -95
  410. package/dist/src/transfer/test-seraphine.js.map +1 -1
  411. package/dist/src/transfer/tests/test-store.js +239 -194
  412. package/dist/src/transfer/tests/test-store.js.map +1 -1
  413. package/dist/src/types.js +56 -27
  414. package/dist/src/types.js.map +1 -1
  415. package/dist/src/update/checker.js +183 -106
  416. package/dist/src/update/checker.js.map +1 -1
  417. package/dist/src/update/executor.js +198 -135
  418. package/dist/src/update/executor.js.map +1 -1
  419. package/dist/src/update/index.js +85 -38
  420. package/dist/src/update/index.js.map +1 -1
  421. package/dist/src/update/rate-limiter.js +31 -19
  422. package/dist/src/update/rate-limiter.js.map +1 -1
  423. package/dist/src/update/validator.js +64 -38
  424. package/dist/src/update/validator.js.map +1 -1
  425. package/dist/tsconfig.tsbuildinfo +1 -1
  426. package/package.json +13 -10
  427. package/.claude/agents/custom/accessibility-auditor.yaml +0 -56
  428. package/.claude/agents/custom/design-architect.yaml +0 -48
  429. package/.claude/agents/custom/ui-developer.yaml +0 -46
  430. package/.claude/agents/custom/ux-researcher.yaml +0 -60
  431. package/dist/src/benchmarks/pretrain/index.d.ts +0 -58
  432. package/dist/src/benchmarks/pretrain/index.d.ts.map +0 -1
  433. package/dist/src/commands/index.d.ts +0 -108
  434. package/dist/src/commands/index.d.ts.map +0 -1
  435. package/dist/src/config-adapter.d.ts +0 -15
  436. package/dist/src/config-adapter.d.ts.map +0 -1
  437. package/dist/src/index.d.ts +0 -76
  438. package/dist/src/index.d.ts.map +0 -1
  439. package/dist/src/infrastructure/in-memory-repositories.d.ts +0 -68
  440. package/dist/src/infrastructure/in-memory-repositories.d.ts.map +0 -1
  441. package/dist/src/init/claudemd-generator.d.ts +0 -25
  442. package/dist/src/init/claudemd-generator.d.ts.map +0 -1
  443. package/dist/src/init/executor.d.ts +0 -41
  444. package/dist/src/init/executor.d.ts.map +0 -1
  445. package/dist/src/init/helpers-generator.d.ts +0 -60
  446. package/dist/src/init/helpers-generator.d.ts.map +0 -1
  447. package/dist/src/mcp-client.d.ts +0 -92
  448. package/dist/src/mcp-client.d.ts.map +0 -1
  449. package/dist/src/mcp-server.d.ts +0 -161
  450. package/dist/src/mcp-server.d.ts.map +0 -1
  451. package/dist/src/mcp-tools/auto-install.d.ts +0 -83
  452. package/dist/src/mcp-tools/auto-install.d.ts.map +0 -1
  453. package/dist/src/mcp-tools/types.d.ts +0 -31
  454. package/dist/src/mcp-tools/types.d.ts.map +0 -1
  455. package/dist/src/memory/ewc-consolidation.d.ts +0 -271
  456. package/dist/src/memory/ewc-consolidation.d.ts.map +0 -1
  457. package/dist/src/memory/intelligence.d.ts +0 -285
  458. package/dist/src/memory/intelligence.d.ts.map +0 -1
  459. package/dist/src/memory/memory-initializer.d.ts +0 -396
  460. package/dist/src/memory/memory-initializer.d.ts.map +0 -1
  461. package/dist/src/memory/sona-optimizer.d.ts +0 -227
  462. package/dist/src/memory/sona-optimizer.d.ts.map +0 -1
  463. package/dist/src/parser.d.ts +0 -41
  464. package/dist/src/parser.d.ts.map +0 -1
  465. package/dist/src/plugins/manager.d.ts +0 -133
  466. package/dist/src/plugins/manager.d.ts.map +0 -1
  467. package/dist/src/plugins/store/discovery.d.ts +0 -88
  468. package/dist/src/plugins/store/discovery.d.ts.map +0 -1
  469. package/dist/src/plugins/store/index.d.ts +0 -76
  470. package/dist/src/plugins/store/index.d.ts.map +0 -1
  471. package/dist/src/plugins/store/search.d.ts +0 -46
  472. package/dist/src/plugins/store/search.d.ts.map +0 -1
  473. package/dist/src/plugins/store/types.d.ts +0 -274
  474. package/dist/src/plugins/store/types.d.ts.map +0 -1
  475. package/dist/src/production/circuit-breaker.d.ts +0 -101
  476. package/dist/src/production/circuit-breaker.d.ts.map +0 -1
  477. package/dist/src/production/error-handler.d.ts +0 -92
  478. package/dist/src/production/error-handler.d.ts.map +0 -1
  479. package/dist/src/production/monitoring.d.ts +0 -161
  480. package/dist/src/production/monitoring.d.ts.map +0 -1
  481. package/dist/src/production/rate-limiter.d.ts +0 -80
  482. package/dist/src/production/rate-limiter.d.ts.map +0 -1
  483. package/dist/src/production/retry.d.ts +0 -48
  484. package/dist/src/production/retry.d.ts.map +0 -1
  485. package/dist/src/prompt.d.ts +0 -44
  486. package/dist/src/prompt.d.ts.map +0 -1
  487. package/dist/src/runtime/headless.d.ts +0 -60
  488. package/dist/src/runtime/headless.d.ts.map +0 -1
  489. package/dist/src/ruvector/ast-analyzer.d.ts +0 -67
  490. package/dist/src/ruvector/ast-analyzer.d.ts.map +0 -1
  491. package/dist/src/ruvector/coverage-router.d.ts +0 -160
  492. package/dist/src/ruvector/coverage-router.d.ts.map +0 -1
  493. package/dist/src/ruvector/diff-classifier.d.ts +0 -175
  494. package/dist/src/ruvector/diff-classifier.d.ts.map +0 -1
  495. package/dist/src/ruvector/enhanced-model-router.d.ts +0 -146
  496. package/dist/src/ruvector/enhanced-model-router.d.ts.map +0 -1
  497. package/dist/src/ruvector/flash-attention.d.ts +0 -195
  498. package/dist/src/ruvector/flash-attention.d.ts.map +0 -1
  499. package/dist/src/ruvector/graph-analyzer.d.ts +0 -187
  500. package/dist/src/ruvector/graph-analyzer.d.ts.map +0 -1
  501. package/dist/src/ruvector/index.d.ts +0 -34
  502. package/dist/src/ruvector/index.d.ts.map +0 -1
  503. package/dist/src/ruvector/lora-adapter.d.ts +0 -218
  504. package/dist/src/ruvector/lora-adapter.d.ts.map +0 -1
  505. package/dist/src/ruvector/model-router.d.ts +0 -220
  506. package/dist/src/ruvector/model-router.d.ts.map +0 -1
  507. package/dist/src/ruvector/moe-router.d.ts +0 -206
  508. package/dist/src/ruvector/moe-router.d.ts.map +0 -1
  509. package/dist/src/ruvector/q-learning-router.d.ts +0 -211
  510. package/dist/src/ruvector/q-learning-router.d.ts.map +0 -1
  511. package/dist/src/ruvector/semantic-router.d.ts +0 -77
  512. package/dist/src/ruvector/semantic-router.d.ts.map +0 -1
  513. package/dist/src/ruvector/vector-db.d.ts +0 -69
  514. package/dist/src/ruvector/vector-db.d.ts.map +0 -1
  515. package/dist/src/services/claim-service.d.ts +0 -204
  516. package/dist/src/services/claim-service.d.ts.map +0 -1
  517. package/dist/src/services/container-worker-pool.d.ts +0 -197
  518. package/dist/src/services/container-worker-pool.d.ts.map +0 -1
  519. package/dist/src/services/headless-worker-executor.d.ts +0 -304
  520. package/dist/src/services/headless-worker-executor.d.ts.map +0 -1
  521. package/dist/src/services/registry-api.d.ts +0 -58
  522. package/dist/src/services/registry-api.d.ts.map +0 -1
  523. package/dist/src/services/ruvector-training.d.ts +0 -213
  524. package/dist/src/services/ruvector-training.d.ts.map +0 -1
  525. package/dist/src/services/worker-daemon.d.ts +0 -203
  526. package/dist/src/services/worker-daemon.d.ts.map +0 -1
  527. package/dist/src/services/worker-queue.d.ts +0 -194
  528. package/dist/src/services/worker-queue.d.ts.map +0 -1
  529. package/dist/src/suggest.d.ts +0 -53
  530. package/dist/src/suggest.d.ts.map +0 -1
  531. package/dist/src/transfer/export.d.ts +0 -25
  532. package/dist/src/transfer/export.d.ts.map +0 -1
  533. package/dist/src/transfer/ipfs/client.d.ts +0 -109
  534. package/dist/src/transfer/ipfs/client.d.ts.map +0 -1
  535. package/dist/src/transfer/ipfs/upload.d.ts +0 -95
  536. package/dist/src/transfer/ipfs/upload.d.ts.map +0 -1
  537. package/dist/src/transfer/models/seraphine.d.ts +0 -72
  538. package/dist/src/transfer/models/seraphine.d.ts.map +0 -1
  539. package/dist/src/transfer/serialization/cfp.d.ts +0 -49
  540. package/dist/src/transfer/serialization/cfp.d.ts.map +0 -1
  541. package/dist/src/transfer/storage/gcs.d.ts +0 -82
  542. package/dist/src/transfer/storage/gcs.d.ts.map +0 -1
  543. package/dist/src/transfer/store/discovery.d.ts +0 -84
  544. package/dist/src/transfer/store/discovery.d.ts.map +0 -1
  545. package/dist/src/transfer/store/download.d.ts +0 -70
  546. package/dist/src/transfer/store/download.d.ts.map +0 -1
  547. package/dist/src/transfer/store/index.d.ts +0 -84
  548. package/dist/src/transfer/store/index.d.ts.map +0 -1
  549. package/dist/src/transfer/store/publish.d.ts +0 -76
  550. package/dist/src/transfer/store/publish.d.ts.map +0 -1
  551. package/dist/src/transfer/store/search.d.ts +0 -54
  552. package/dist/src/transfer/store/search.d.ts.map +0 -1
  553. package/dist/src/transfer/types.d.ts +0 -245
  554. package/dist/src/transfer/types.d.ts.map +0 -1
  555. package/dist/src/types.d.ts +0 -198
  556. package/dist/src/types.d.ts.map +0 -1
  557. package/dist/src/update/checker.d.ts +0 -34
  558. package/dist/src/update/checker.d.ts.map +0 -1
  559. package/dist/src/update/executor.d.ts +0 -32
  560. package/dist/src/update/executor.d.ts.map +0 -1
  561. package/dist/src/update/index.d.ts +0 -33
  562. package/dist/src/update/index.d.ts.map +0 -1
  563. package/dist/src/update/rate-limiter.d.ts +0 -20
  564. package/dist/src/update/rate-limiter.d.ts.map +0 -1
  565. package/dist/src/update/validator.d.ts +0 -17
  566. package/dist/src/update/validator.d.ts.map +0 -1
@@ -5,6 +5,42 @@
5
5
  * @module @claude-flow/cli/transfer/ipfs/upload
6
6
  * @version 3.0.0
7
7
  */
8
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
+ return new (P || (P = Promise))(function (resolve, reject) {
11
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
15
+ });
16
+ };
17
+ var __generator = (this && this.__generator) || function (thisArg, body) {
18
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
19
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
20
+ function verb(n) { return function (v) { return step([n, v]); }; }
21
+ function step(op) {
22
+ if (f) throw new TypeError("Generator is already executing.");
23
+ while (_) try {
24
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
25
+ if (y = 0, t) op = [op[0] & 2, t.value];
26
+ switch (op[0]) {
27
+ case 0: case 1: t = op; break;
28
+ case 4: _.label++; return { value: op[1], done: false };
29
+ case 5: _.label++; y = op[1]; op = [0]; continue;
30
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
31
+ default:
32
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
33
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
34
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
35
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
36
+ if (t[2]) _.ops.pop();
37
+ _.trys.pop(); continue;
38
+ }
39
+ op = body.call(thisArg, _);
40
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
41
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
42
+ }
43
+ };
8
44
  import * as crypto from 'crypto';
9
45
  /**
10
46
  * Get web3.storage token from environment or config
@@ -19,15 +55,15 @@ function getWeb3StorageToken() {
19
55
  * Uses CIDv1 with dag-pb codec and sha2-256 multihash
20
56
  */
21
57
  function generateDemoCID(content) {
22
- const hash = crypto.createHash('sha256').update(content).digest();
58
+ var hash = crypto.createHash('sha256').update(content).digest();
23
59
  // CIDv1 with dag-pb codec and sha2-256 multihash
24
- const prefix = Buffer.from([0x01, 0x70, 0x12, 0x20]);
25
- const cidBytes = Buffer.concat([prefix, hash]);
60
+ var prefix = Buffer.from([0x01, 0x70, 0x12, 0x20]);
61
+ var cidBytes = Buffer.concat([prefix, hash]);
26
62
  // Base32 encode
27
- const base32Chars = 'abcdefghijklmnopqrstuvwxyz234567';
28
- let result = 'bafybei';
29
- for (let i = 0; i < 44; i++) {
30
- const byte = cidBytes[i % cidBytes.length] || 0;
63
+ var base32Chars = 'abcdefghijklmnopqrstuvwxyz234567';
64
+ var result = 'bafybei';
65
+ for (var i = 0; i < 44; i++) {
66
+ var byte = cidBytes[i % cidBytes.length] || 0;
31
67
  result += base32Chars[byte % 32];
32
68
  }
33
69
  return result;
@@ -35,98 +71,123 @@ function generateDemoCID(content) {
35
71
  /**
36
72
  * Upload to web3.storage (real IPFS)
37
73
  */
38
- async function uploadToWeb3Storage(content, options) {
39
- const token = options.apiKey || getWeb3StorageToken();
40
- if (!token) {
41
- throw new Error('Web3.storage token not found. Set WEB3_STORAGE_TOKEN environment variable.\n' +
42
- 'Get a free token at: https://web3.storage');
43
- }
44
- const endpoint = options.endpoint || 'https://api.web3.storage';
45
- const name = options.name || 'pattern.cfp.json';
46
- console.log(`[IPFS] Uploading ${content.length} bytes to web3.storage...`);
47
- // Create FormData-like body for upload
48
- const boundary = '----WebKitFormBoundary' + crypto.randomBytes(16).toString('hex');
49
- const body = Buffer.concat([
50
- Buffer.from(`--${boundary}\r\n`),
51
- Buffer.from(`Content-Disposition: form-data; name="file"; filename="${name}"\r\n`),
52
- Buffer.from(`Content-Type: application/json\r\n\r\n`),
53
- content,
54
- Buffer.from(`\r\n--${boundary}--\r\n`),
55
- ]);
56
- const response = await fetch(`${endpoint}/upload`, {
57
- method: 'POST',
58
- headers: {
59
- 'Authorization': `Bearer ${token}`,
60
- 'Content-Type': `multipart/form-data; boundary=${boundary}`,
61
- },
62
- body,
74
+ function uploadToWeb3Storage(content, options) {
75
+ return __awaiter(this, void 0, Promise, function () {
76
+ var token, endpoint, name, boundary, body, response, error, result, cid, gateway;
77
+ return __generator(this, function (_a) {
78
+ switch (_a.label) {
79
+ case 0:
80
+ token = options.apiKey || getWeb3StorageToken();
81
+ if (!token) {
82
+ throw new Error('Web3.storage token not found. Set WEB3_STORAGE_TOKEN environment variable.\n' +
83
+ 'Get a free token at: https://web3.storage');
84
+ }
85
+ endpoint = options.endpoint || 'https://api.web3.storage';
86
+ name = options.name || 'pattern.cfp.json';
87
+ console.log("[IPFS] Uploading " + content.length + " bytes to web3.storage...");
88
+ boundary = '----WebKitFormBoundary' + crypto.randomBytes(16).toString('hex');
89
+ body = Buffer.concat([
90
+ Buffer.from("--" + boundary + "\r\n"),
91
+ Buffer.from("Content-Disposition: form-data; name=\"file\"; filename=\"" + name + "\"\r\n"),
92
+ Buffer.from("Content-Type: application/json\r\n\r\n"),
93
+ content,
94
+ Buffer.from("\r\n--" + boundary + "--\r\n"),
95
+ ]);
96
+ return [4 /*yield*/, fetch(endpoint + "/upload", {
97
+ method: 'POST',
98
+ headers: {
99
+ 'Authorization': "Bearer " + token,
100
+ 'Content-Type': "multipart/form-data; boundary=" + boundary
101
+ },
102
+ body: body
103
+ })];
104
+ case 1:
105
+ response = _a.sent();
106
+ if (!!response.ok) return [3 /*break*/, 3];
107
+ return [4 /*yield*/, response.text()];
108
+ case 2:
109
+ error = _a.sent();
110
+ throw new Error("Web3.storage upload failed: " + response.status + " " + error);
111
+ case 3: return [4 /*yield*/, response.json()];
112
+ case 4:
113
+ result = _a.sent();
114
+ cid = result.cid;
115
+ gateway = options.gateway || 'https://w3s.link';
116
+ console.log("[IPFS] Upload complete!");
117
+ console.log("[IPFS] CID: " + cid);
118
+ return [2 /*return*/, {
119
+ cid: cid,
120
+ size: content.length,
121
+ gateway: gateway,
122
+ pinnedAt: new Date().toISOString(),
123
+ url: gateway + "/ipfs/" + cid
124
+ }];
125
+ }
126
+ });
63
127
  });
64
- if (!response.ok) {
65
- const error = await response.text();
66
- throw new Error(`Web3.storage upload failed: ${response.status} ${error}`);
67
- }
68
- const result = await response.json();
69
- const cid = result.cid;
70
- const gateway = options.gateway || 'https://w3s.link';
71
- console.log(`[IPFS] Upload complete!`);
72
- console.log(`[IPFS] CID: ${cid}`);
73
- return {
74
- cid,
75
- size: content.length,
76
- gateway,
77
- pinnedAt: new Date().toISOString(),
78
- url: `${gateway}/ipfs/${cid}`,
79
- };
80
128
  }
81
129
  /**
82
130
  * Upload to Pinata
83
131
  */
84
- async function uploadToPinata(content, options) {
85
- const apiKey = options.apiKey || process.env.PINATA_API_KEY;
86
- const apiSecret = options.apiSecret || process.env.PINATA_API_SECRET;
87
- if (!apiKey || !apiSecret) {
88
- throw new Error('Pinata API credentials not found. Set PINATA_API_KEY and PINATA_API_SECRET.\n' +
89
- 'Get credentials at: https://pinata.cloud');
90
- }
91
- const name = options.name || 'pattern.cfp.json';
92
- console.log(`[IPFS] Uploading ${content.length} bytes to Pinata...`);
93
- const boundary = '----WebKitFormBoundary' + crypto.randomBytes(16).toString('hex');
94
- const metadata = JSON.stringify({ name });
95
- const body = Buffer.concat([
96
- Buffer.from(`--${boundary}\r\n`),
97
- Buffer.from(`Content-Disposition: form-data; name="pinataMetadata"\r\n\r\n`),
98
- Buffer.from(`${metadata}\r\n`),
99
- Buffer.from(`--${boundary}\r\n`),
100
- Buffer.from(`Content-Disposition: form-data; name="file"; filename="${name}"\r\n`),
101
- Buffer.from(`Content-Type: application/json\r\n\r\n`),
102
- content,
103
- Buffer.from(`\r\n--${boundary}--\r\n`),
104
- ]);
105
- const response = await fetch('https://api.pinata.cloud/pinning/pinFileToIPFS', {
106
- method: 'POST',
107
- headers: {
108
- 'pinata_api_key': apiKey,
109
- 'pinata_secret_api_key': apiSecret,
110
- 'Content-Type': `multipart/form-data; boundary=${boundary}`,
111
- },
112
- body,
132
+ function uploadToPinata(content, options) {
133
+ return __awaiter(this, void 0, Promise, function () {
134
+ var apiKey, apiSecret, name, boundary, metadata, body, response, error, result, cid, gateway;
135
+ return __generator(this, function (_a) {
136
+ switch (_a.label) {
137
+ case 0:
138
+ apiKey = options.apiKey || process.env.PINATA_API_KEY;
139
+ apiSecret = options.apiSecret || process.env.PINATA_API_SECRET;
140
+ if (!apiKey || !apiSecret) {
141
+ throw new Error('Pinata API credentials not found. Set PINATA_API_KEY and PINATA_API_SECRET.\n' +
142
+ 'Get credentials at: https://pinata.cloud');
143
+ }
144
+ name = options.name || 'pattern.cfp.json';
145
+ console.log("[IPFS] Uploading " + content.length + " bytes to Pinata...");
146
+ boundary = '----WebKitFormBoundary' + crypto.randomBytes(16).toString('hex');
147
+ metadata = JSON.stringify({ name: name });
148
+ body = Buffer.concat([
149
+ Buffer.from("--" + boundary + "\r\n"),
150
+ Buffer.from("Content-Disposition: form-data; name=\"pinataMetadata\"\r\n\r\n"),
151
+ Buffer.from(metadata + "\r\n"),
152
+ Buffer.from("--" + boundary + "\r\n"),
153
+ Buffer.from("Content-Disposition: form-data; name=\"file\"; filename=\"" + name + "\"\r\n"),
154
+ Buffer.from("Content-Type: application/json\r\n\r\n"),
155
+ content,
156
+ Buffer.from("\r\n--" + boundary + "--\r\n"),
157
+ ]);
158
+ return [4 /*yield*/, fetch('https://api.pinata.cloud/pinning/pinFileToIPFS', {
159
+ method: 'POST',
160
+ headers: {
161
+ 'pinata_api_key': apiKey,
162
+ 'pinata_secret_api_key': apiSecret,
163
+ 'Content-Type': "multipart/form-data; boundary=" + boundary
164
+ },
165
+ body: body
166
+ })];
167
+ case 1:
168
+ response = _a.sent();
169
+ if (!!response.ok) return [3 /*break*/, 3];
170
+ return [4 /*yield*/, response.text()];
171
+ case 2:
172
+ error = _a.sent();
173
+ throw new Error("Pinata upload failed: " + response.status + " " + error);
174
+ case 3: return [4 /*yield*/, response.json()];
175
+ case 4:
176
+ result = _a.sent();
177
+ cid = result.IpfsHash;
178
+ gateway = options.gateway || 'https://gateway.pinata.cloud';
179
+ console.log("[IPFS] Upload complete!");
180
+ console.log("[IPFS] CID: " + cid);
181
+ return [2 /*return*/, {
182
+ cid: cid,
183
+ size: content.length,
184
+ gateway: gateway,
185
+ pinnedAt: new Date().toISOString(),
186
+ url: gateway + "/ipfs/" + cid
187
+ }];
188
+ }
189
+ });
113
190
  });
114
- if (!response.ok) {
115
- const error = await response.text();
116
- throw new Error(`Pinata upload failed: ${response.status} ${error}`);
117
- }
118
- const result = await response.json();
119
- const cid = result.IpfsHash;
120
- const gateway = options.gateway || 'https://gateway.pinata.cloud';
121
- console.log(`[IPFS] Upload complete!`);
122
- console.log(`[IPFS] CID: ${cid}`);
123
- return {
124
- cid,
125
- size: content.length,
126
- gateway,
127
- pinnedAt: new Date().toISOString(),
128
- url: `${gateway}/ipfs/${cid}`,
129
- };
130
191
  }
131
192
  /**
132
193
  * Upload content to IPFS
@@ -137,230 +198,313 @@ async function uploadToPinata(content, options) {
137
198
  * - Pinata (PINATA_API_KEY + PINATA_API_SECRET) - Free 1GB tier
138
199
  * - Demo mode (generates deterministic CIDs when no credentials)
139
200
  */
140
- export async function uploadToIPFS(content, options = {}) {
141
- const { pin = true, pinningService, gateway = 'https://w3s.link', name = 'pattern', } = options;
142
- // Check environment variables
143
- const localIPFS = process.env.IPFS_API_URL;
144
- const web3Token = getWeb3StorageToken();
145
- const pinataKey = process.env.PINATA_API_KEY;
146
- // 1. Try local/custom IPFS node first (FREE - your own node)
147
- if (localIPFS || pinningService === 'local') {
148
- try {
149
- const isAvailable = await checkLocalIPFSNode();
150
- if (isAvailable) {
151
- return await uploadToLocalIPFS(content, options);
152
- }
153
- else {
154
- console.warn(`[IPFS] Local node at ${localIPFS || 'localhost:5001'} not available`);
201
+ export function uploadToIPFS(content, options) {
202
+ if (options === void 0) { options = {}; }
203
+ return __awaiter(this, void 0, Promise, function () {
204
+ var _a, pin, pinningService, _b, gateway, _c, name, localIPFS, web3Token, pinataKey, isAvailable, error_1, error_2, error_3, cid, size, result;
205
+ return __generator(this, function (_d) {
206
+ switch (_d.label) {
207
+ case 0:
208
+ _a = options.pin, pin = _a === void 0 ? true : _a, pinningService = options.pinningService, _b = options.gateway, gateway = _b === void 0 ? 'https://w3s.link' : _b, _c = options.name, name = _c === void 0 ? 'pattern' : _c;
209
+ localIPFS = process.env.IPFS_API_URL;
210
+ web3Token = getWeb3StorageToken();
211
+ pinataKey = process.env.PINATA_API_KEY;
212
+ if (!(localIPFS || pinningService === 'local')) return [3 /*break*/, 7];
213
+ _d.label = 1;
214
+ case 1:
215
+ _d.trys.push([1, 6, , 7]);
216
+ return [4 /*yield*/, checkLocalIPFSNode()];
217
+ case 2:
218
+ isAvailable = _d.sent();
219
+ if (!isAvailable) return [3 /*break*/, 4];
220
+ return [4 /*yield*/, uploadToLocalIPFS(content, options)];
221
+ case 3: return [2 /*return*/, _d.sent()];
222
+ case 4:
223
+ console.warn("[IPFS] Local node at " + (localIPFS || 'localhost:5001') + " not available");
224
+ _d.label = 5;
225
+ case 5: return [3 /*break*/, 7];
226
+ case 6:
227
+ error_1 = _d.sent();
228
+ console.warn("[IPFS] Local IPFS upload failed: " + error_1);
229
+ return [3 /*break*/, 7];
230
+ case 7:
231
+ if (!(pinningService === 'pinata' || (pinataKey && !web3Token))) return [3 /*break*/, 11];
232
+ _d.label = 8;
233
+ case 8:
234
+ _d.trys.push([8, 10, , 11]);
235
+ return [4 /*yield*/, uploadToPinata(content, options)];
236
+ case 9: return [2 /*return*/, _d.sent()];
237
+ case 10:
238
+ error_2 = _d.sent();
239
+ console.warn("[IPFS] Pinata upload failed: " + error_2);
240
+ return [3 /*break*/, 11];
241
+ case 11:
242
+ if (!(web3Token || pinningService === 'web3storage')) return [3 /*break*/, 15];
243
+ _d.label = 12;
244
+ case 12:
245
+ _d.trys.push([12, 14, , 15]);
246
+ return [4 /*yield*/, uploadToWeb3Storage(content, options)];
247
+ case 13: return [2 /*return*/, _d.sent()];
248
+ case 14:
249
+ error_3 = _d.sent();
250
+ console.warn("[IPFS] Web3.storage upload failed: " + error_3);
251
+ return [3 /*break*/, 15];
252
+ case 15:
253
+ // Fall back to demo mode - WARN user prominently
254
+ console.warn("\u26A0 [IPFS] DEMO MODE - No IPFS credentials configured");
255
+ console.warn("\u26A0 [IPFS] Content will NOT be uploaded to decentralized storage");
256
+ console.warn("\u26A0 [IPFS] To enable real uploads, configure one of:");
257
+ console.warn("\u26A0 [IPFS] - IPFS_API_URL=http://YOUR_NODE:5001 (FREE - your own node)");
258
+ console.warn("\u26A0 [IPFS] - WEB3_STORAGE_TOKEN (free 5GB at web3.storage)");
259
+ console.warn("\u26A0 [IPFS] - PINATA_API_KEY + PINATA_SECRET_KEY (free tier available)");
260
+ cid = generateDemoCID(content);
261
+ size = content.length;
262
+ console.log("[IPFS] Demo upload: " + size + " bytes");
263
+ console.log("[IPFS] Name: " + name);
264
+ result = {
265
+ cid: cid,
266
+ size: size,
267
+ gateway: gateway,
268
+ url: gateway + "/ipfs/" + cid
269
+ };
270
+ if (pin) {
271
+ result.pinnedAt = new Date().toISOString();
272
+ console.log("[IPFS] Demo pinned at: " + result.pinnedAt);
273
+ }
274
+ console.log("[IPFS] Demo CID: " + cid);
275
+ console.log("[IPFS] Demo URL: " + result.url);
276
+ return [2 /*return*/, result];
155
277
  }
156
- }
157
- catch (error) {
158
- console.warn(`[IPFS] Local IPFS upload failed: ${error}`);
159
- }
160
- }
161
- // 2. Try Pinata
162
- if (pinningService === 'pinata' || (pinataKey && !web3Token)) {
163
- try {
164
- return await uploadToPinata(content, options);
165
- }
166
- catch (error) {
167
- console.warn(`[IPFS] Pinata upload failed: ${error}`);
168
- }
169
- }
170
- // 3. Try Web3.storage
171
- if (web3Token || pinningService === 'web3storage') {
172
- try {
173
- return await uploadToWeb3Storage(content, options);
174
- }
175
- catch (error) {
176
- console.warn(`[IPFS] Web3.storage upload failed: ${error}`);
177
- }
178
- }
179
- // Fall back to demo mode - WARN user prominently
180
- console.warn(`⚠ [IPFS] DEMO MODE - No IPFS credentials configured`);
181
- console.warn(`⚠ [IPFS] Content will NOT be uploaded to decentralized storage`);
182
- console.warn(`⚠ [IPFS] To enable real uploads, configure one of:`);
183
- console.warn(`⚠ [IPFS] - IPFS_API_URL=http://YOUR_NODE:5001 (FREE - your own node)`);
184
- console.warn(`⚠ [IPFS] - WEB3_STORAGE_TOKEN (free 5GB at web3.storage)`);
185
- console.warn(`⚠ [IPFS] - PINATA_API_KEY + PINATA_SECRET_KEY (free tier available)`);
186
- const cid = generateDemoCID(content);
187
- const size = content.length;
188
- console.log(`[IPFS] Demo upload: ${size} bytes`);
189
- console.log(`[IPFS] Name: ${name}`);
190
- // Simulate upload delay
191
- await new Promise(resolve => setTimeout(resolve, 500));
192
- const result = {
193
- cid,
194
- size,
195
- gateway,
196
- url: `${gateway}/ipfs/${cid}`,
197
- };
198
- if (pin) {
199
- result.pinnedAt = new Date().toISOString();
200
- console.log(`[IPFS] Demo pinned at: ${result.pinnedAt}`);
201
- }
202
- console.log(`[IPFS] Demo CID: ${cid}`);
203
- console.log(`[IPFS] Demo URL: ${result.url}`);
204
- return result;
278
+ });
279
+ });
205
280
  }
206
281
  /**
207
282
  * Pin content by CID
208
283
  */
209
- export async function pinContent(cid, options = {}) {
210
- const web3Token = getWeb3StorageToken();
211
- const pinataKey = process.env.PINATA_API_KEY;
212
- // Real pinning with Pinata
213
- if (pinataKey && options.service !== 'web3storage') {
214
- try {
215
- const pinataSecret = process.env.PINATA_API_SECRET;
216
- const response = await fetch('https://api.pinata.cloud/pinning/pinByHash', {
217
- method: 'POST',
218
- headers: {
219
- 'Content-Type': 'application/json',
220
- 'pinata_api_key': pinataKey,
221
- 'pinata_secret_api_key': pinataSecret || '',
222
- },
223
- body: JSON.stringify({
224
- hashToPin: cid,
225
- pinataMetadata: { name: options.name || cid },
226
- }),
227
- });
228
- if (response.ok) {
229
- const pinnedAt = new Date().toISOString();
230
- console.log(`[IPFS] Pinned ${cid} via Pinata at ${pinnedAt}`);
231
- return { success: true, pinnedAt };
284
+ export function pinContent(cid, options) {
285
+ if (options === void 0) { options = {}; }
286
+ return __awaiter(this, void 0, Promise, function () {
287
+ var web3Token, pinataKey, pinataSecret, response, pinnedAt_1, error_4, pinnedAt;
288
+ return __generator(this, function (_a) {
289
+ switch (_a.label) {
290
+ case 0:
291
+ web3Token = getWeb3StorageToken();
292
+ pinataKey = process.env.PINATA_API_KEY;
293
+ if (!(pinataKey && options.service !== 'web3storage')) return [3 /*break*/, 4];
294
+ _a.label = 1;
295
+ case 1:
296
+ _a.trys.push([1, 3, , 4]);
297
+ pinataSecret = process.env.PINATA_API_SECRET;
298
+ return [4 /*yield*/, fetch('https://api.pinata.cloud/pinning/pinByHash', {
299
+ method: 'POST',
300
+ headers: {
301
+ 'Content-Type': 'application/json',
302
+ 'pinata_api_key': pinataKey,
303
+ 'pinata_secret_api_key': pinataSecret || ''
304
+ },
305
+ body: JSON.stringify({
306
+ hashToPin: cid,
307
+ pinataMetadata: { name: options.name || cid }
308
+ })
309
+ })];
310
+ case 2:
311
+ response = _a.sent();
312
+ if (response.ok) {
313
+ pinnedAt_1 = new Date().toISOString();
314
+ console.log("[IPFS] Pinned " + cid + " via Pinata at " + pinnedAt_1);
315
+ return [2 /*return*/, { success: true, pinnedAt: pinnedAt_1 }];
316
+ }
317
+ return [3 /*break*/, 4];
318
+ case 3:
319
+ error_4 = _a.sent();
320
+ console.warn("[IPFS] Pinata pin failed: " + error_4);
321
+ return [3 /*break*/, 4];
322
+ case 4:
323
+ pinnedAt = new Date().toISOString();
324
+ console.log("[IPFS] Demo pinning " + cid + "...");
325
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 300); })];
326
+ case 5:
327
+ _a.sent();
328
+ console.log("[IPFS] Demo pinned at " + pinnedAt);
329
+ return [2 /*return*/, { success: true, pinnedAt: pinnedAt }];
232
330
  }
233
- }
234
- catch (error) {
235
- console.warn(`[IPFS] Pinata pin failed: ${error}`);
236
- }
237
- }
238
- // Demo mode
239
- const pinnedAt = new Date().toISOString();
240
- console.log(`[IPFS] Demo pinning ${cid}...`);
241
- await new Promise(resolve => setTimeout(resolve, 300));
242
- console.log(`[IPFS] Demo pinned at ${pinnedAt}`);
243
- return { success: true, pinnedAt };
331
+ });
332
+ });
244
333
  }
245
334
  /**
246
335
  * Unpin content by CID
247
336
  */
248
- export async function unpinContent(cid, options = {}) {
249
- const pinataKey = process.env.PINATA_API_KEY;
250
- // Real unpinning with Pinata
251
- if (pinataKey) {
252
- try {
253
- const pinataSecret = process.env.PINATA_API_SECRET;
254
- const response = await fetch(`https://api.pinata.cloud/pinning/unpin/${cid}`, {
255
- method: 'DELETE',
256
- headers: {
257
- 'pinata_api_key': pinataKey,
258
- 'pinata_secret_api_key': pinataSecret || '',
259
- },
260
- });
261
- if (response.ok) {
262
- console.log(`[IPFS] Unpinned ${cid} from Pinata`);
263
- return { success: true };
337
+ export function unpinContent(cid, options) {
338
+ if (options === void 0) { options = {}; }
339
+ return __awaiter(this, void 0, Promise, function () {
340
+ var pinataKey, pinataSecret, response, error_5;
341
+ return __generator(this, function (_a) {
342
+ switch (_a.label) {
343
+ case 0:
344
+ pinataKey = process.env.PINATA_API_KEY;
345
+ if (!pinataKey) return [3 /*break*/, 4];
346
+ _a.label = 1;
347
+ case 1:
348
+ _a.trys.push([1, 3, , 4]);
349
+ pinataSecret = process.env.PINATA_API_SECRET;
350
+ return [4 /*yield*/, fetch("https://api.pinata.cloud/pinning/unpin/" + cid, {
351
+ method: 'DELETE',
352
+ headers: {
353
+ 'pinata_api_key': pinataKey,
354
+ 'pinata_secret_api_key': pinataSecret || ''
355
+ }
356
+ })];
357
+ case 2:
358
+ response = _a.sent();
359
+ if (response.ok) {
360
+ console.log("[IPFS] Unpinned " + cid + " from Pinata");
361
+ return [2 /*return*/, { success: true }];
362
+ }
363
+ return [3 /*break*/, 4];
364
+ case 3:
365
+ error_5 = _a.sent();
366
+ console.warn("[IPFS] Pinata unpin failed: " + error_5);
367
+ return [3 /*break*/, 4];
368
+ case 4:
369
+ // Demo mode
370
+ console.log("[IPFS] Demo unpinning " + cid + "...");
371
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 200); })];
372
+ case 5:
373
+ _a.sent();
374
+ console.log("[IPFS] Demo unpinned");
375
+ return [2 /*return*/, { success: true }];
264
376
  }
265
- }
266
- catch (error) {
267
- console.warn(`[IPFS] Pinata unpin failed: ${error}`);
268
- }
269
- }
270
- // Demo mode
271
- console.log(`[IPFS] Demo unpinning ${cid}...`);
272
- await new Promise(resolve => setTimeout(resolve, 200));
273
- console.log(`[IPFS] Demo unpinned`);
274
- return { success: true };
377
+ });
378
+ });
275
379
  }
276
380
  /**
277
381
  * Check if content exists on IPFS
278
382
  */
279
- export async function checkContent(cid, gateway = 'https://w3s.link') {
280
- console.log(`[IPFS] Checking ${cid}...`);
281
- try {
282
- const response = await fetch(`${gateway}/ipfs/${cid}`, {
283
- method: 'HEAD',
383
+ export function checkContent(cid, gateway) {
384
+ if (gateway === void 0) { gateway = 'https://w3s.link'; }
385
+ return __awaiter(this, void 0, Promise, function () {
386
+ var response, size, error_6;
387
+ return __generator(this, function (_a) {
388
+ switch (_a.label) {
389
+ case 0:
390
+ console.log("[IPFS] Checking " + cid + "...");
391
+ _a.label = 1;
392
+ case 1:
393
+ _a.trys.push([1, 3, , 4]);
394
+ return [4 /*yield*/, fetch(gateway + "/ipfs/" + cid, {
395
+ method: 'HEAD'
396
+ })];
397
+ case 2:
398
+ response = _a.sent();
399
+ if (response.ok) {
400
+ size = parseInt(response.headers.get('content-length') || '0', 10);
401
+ console.log("[IPFS] Content exists, size: " + size);
402
+ return [2 /*return*/, { exists: true, size: size }];
403
+ }
404
+ return [3 /*break*/, 4];
405
+ case 3:
406
+ error_6 = _a.sent();
407
+ console.log("[IPFS] Content check failed: " + error_6);
408
+ return [3 /*break*/, 4];
409
+ case 4: return [2 /*return*/, { exists: false }];
410
+ }
284
411
  });
285
- if (response.ok) {
286
- const size = parseInt(response.headers.get('content-length') || '0', 10);
287
- console.log(`[IPFS] Content exists, size: ${size}`);
288
- return { exists: true, size };
289
- }
290
- }
291
- catch (error) {
292
- console.log(`[IPFS] Content check failed: ${error}`);
293
- }
294
- return { exists: false };
412
+ });
295
413
  }
296
414
  /**
297
415
  * Get gateway URL for CID
298
416
  */
299
- export function getGatewayURL(cid, gateway = 'https://w3s.link') {
300
- return `${gateway}/ipfs/${cid}`;
417
+ export function getGatewayURL(cid, gateway) {
418
+ if (gateway === void 0) { gateway = 'https://w3s.link'; }
419
+ return gateway + "/ipfs/" + cid;
301
420
  }
302
421
  /**
303
422
  * Get IPNS URL for name
304
423
  */
305
- export function getIPNSURL(name, gateway = 'https://w3s.link') {
306
- return `${gateway}/ipns/${name}`;
424
+ export function getIPNSURL(name, gateway) {
425
+ if (gateway === void 0) { gateway = 'https://w3s.link'; }
426
+ return gateway + "/ipns/" + name;
307
427
  }
308
428
  /**
309
429
  * Upload to a local/custom IPFS node
310
430
  * Connect to your own IPFS daemon via HTTP API
311
431
  */
312
- async function uploadToLocalIPFS(content, options) {
313
- const apiUrl = process.env.IPFS_API_URL || 'http://localhost:5001';
314
- const name = options.name || 'pattern.cfp.json';
315
- console.log(`[IPFS] Uploading ${content.length} bytes to ${apiUrl}...`);
316
- const boundary = '----IPFSBoundary' + crypto.randomBytes(16).toString('hex');
317
- const body = Buffer.concat([
318
- Buffer.from(`--${boundary}\r\n`),
319
- Buffer.from(`Content-Disposition: form-data; name="file"; filename="${name}"\r\n`),
320
- Buffer.from(`Content-Type: application/json\r\n\r\n`),
321
- content,
322
- Buffer.from(`\r\n--${boundary}--\r\n`),
323
- ]);
324
- const response = await fetch(`${apiUrl}/api/v0/add?pin=${options.pin !== false}`, {
325
- method: 'POST',
326
- headers: {
327
- 'Content-Type': `multipart/form-data; boundary=${boundary}`,
328
- },
329
- body,
432
+ function uploadToLocalIPFS(content, options) {
433
+ return __awaiter(this, void 0, Promise, function () {
434
+ var apiUrl, name, boundary, body, response, error, result, cid, gatewayUrl;
435
+ return __generator(this, function (_a) {
436
+ switch (_a.label) {
437
+ case 0:
438
+ apiUrl = process.env.IPFS_API_URL || 'http://localhost:5001';
439
+ name = options.name || 'pattern.cfp.json';
440
+ console.log("[IPFS] Uploading " + content.length + " bytes to " + apiUrl + "...");
441
+ boundary = '----IPFSBoundary' + crypto.randomBytes(16).toString('hex');
442
+ body = Buffer.concat([
443
+ Buffer.from("--" + boundary + "\r\n"),
444
+ Buffer.from("Content-Disposition: form-data; name=\"file\"; filename=\"" + name + "\"\r\n"),
445
+ Buffer.from("Content-Type: application/json\r\n\r\n"),
446
+ content,
447
+ Buffer.from("\r\n--" + boundary + "--\r\n"),
448
+ ]);
449
+ return [4 /*yield*/, fetch(apiUrl + "/api/v0/add?pin=" + (options.pin !== false), {
450
+ method: 'POST',
451
+ headers: {
452
+ 'Content-Type': "multipart/form-data; boundary=" + boundary
453
+ },
454
+ body: body
455
+ })];
456
+ case 1:
457
+ response = _a.sent();
458
+ if (!!response.ok) return [3 /*break*/, 3];
459
+ return [4 /*yield*/, response.text()];
460
+ case 2:
461
+ error = _a.sent();
462
+ throw new Error("Local IPFS upload failed: " + response.status + " " + error);
463
+ case 3: return [4 /*yield*/, response.json()];
464
+ case 4:
465
+ result = _a.sent();
466
+ cid = result.Hash;
467
+ gatewayUrl = process.env.IPFS_GATEWAY_URL || options.gateway || 'https://ipfs.io';
468
+ console.log("[IPFS] Upload complete!");
469
+ console.log("[IPFS] CID: " + cid);
470
+ return [2 /*return*/, {
471
+ cid: cid,
472
+ size: content.length,
473
+ gateway: gatewayUrl,
474
+ pinnedAt: options.pin !== false ? new Date().toISOString() : undefined,
475
+ url: gatewayUrl + "/ipfs/" + cid
476
+ }];
477
+ }
478
+ });
330
479
  });
331
- if (!response.ok) {
332
- const error = await response.text();
333
- throw new Error(`Local IPFS upload failed: ${response.status} ${error}`);
334
- }
335
- const result = await response.json();
336
- const cid = result.Hash;
337
- // Try to get external gateway URL if configured
338
- const gatewayUrl = process.env.IPFS_GATEWAY_URL || options.gateway || 'https://ipfs.io';
339
- console.log(`[IPFS] Upload complete!`);
340
- console.log(`[IPFS] CID: ${cid}`);
341
- return {
342
- cid,
343
- size: content.length,
344
- gateway: gatewayUrl,
345
- pinnedAt: options.pin !== false ? new Date().toISOString() : undefined,
346
- url: `${gatewayUrl}/ipfs/${cid}`,
347
- };
348
480
  }
349
481
  /**
350
482
  * Check if local IPFS node is available
351
483
  */
352
- async function checkLocalIPFSNode() {
353
- const apiUrl = process.env.IPFS_API_URL || 'http://localhost:5001';
354
- try {
355
- const response = await fetch(`${apiUrl}/api/v0/id`, {
356
- method: 'POST',
357
- signal: AbortSignal.timeout(2000),
484
+ function checkLocalIPFSNode() {
485
+ return __awaiter(this, void 0, Promise, function () {
486
+ var apiUrl, response, _a;
487
+ return __generator(this, function (_b) {
488
+ switch (_b.label) {
489
+ case 0:
490
+ apiUrl = process.env.IPFS_API_URL || 'http://localhost:5001';
491
+ _b.label = 1;
492
+ case 1:
493
+ _b.trys.push([1, 3, , 4]);
494
+ return [4 /*yield*/, fetch(apiUrl + "/api/v0/id", {
495
+ method: 'POST',
496
+ signal: AbortSignal.timeout(2000)
497
+ })];
498
+ case 2:
499
+ response = _b.sent();
500
+ return [2 /*return*/, response.ok];
501
+ case 3:
502
+ _a = _b.sent();
503
+ return [2 /*return*/, false];
504
+ case 4: return [2 /*return*/];
505
+ }
358
506
  });
359
- return response.ok;
360
- }
361
- catch {
362
- return false;
363
- }
507
+ });
364
508
  }
365
509
  /**
366
510
  * Check if real IPFS credentials are available
@@ -372,29 +516,29 @@ export function hasIPFSCredentials() {
372
516
  * Get IPFS service status
373
517
  */
374
518
  export function getIPFSServiceStatus() {
375
- const localIPFS = process.env.IPFS_API_URL;
376
- const web3Token = getWeb3StorageToken();
377
- const pinataKey = process.env.PINATA_API_KEY;
519
+ var localIPFS = process.env.IPFS_API_URL;
520
+ var web3Token = getWeb3StorageToken();
521
+ var pinataKey = process.env.PINATA_API_KEY;
378
522
  if (localIPFS) {
379
523
  return {
380
524
  service: 'local',
381
525
  configured: true,
382
- message: `Local IPFS node configured at ${localIPFS} - FREE uploads enabled`,
383
- apiUrl: localIPFS,
526
+ message: "Local IPFS node configured at " + localIPFS + " - FREE uploads enabled",
527
+ apiUrl: localIPFS
384
528
  };
385
529
  }
386
530
  if (web3Token) {
387
531
  return {
388
532
  service: 'web3storage',
389
533
  configured: true,
390
- message: 'Web3.storage configured - real IPFS uploads enabled',
534
+ message: 'Web3.storage configured - real IPFS uploads enabled'
391
535
  };
392
536
  }
393
537
  if (pinataKey) {
394
538
  return {
395
539
  service: 'pinata',
396
540
  configured: true,
397
- message: 'Pinata configured - real IPFS uploads enabled',
541
+ message: 'Pinata configured - real IPFS uploads enabled'
398
542
  };
399
543
  }
400
544
  return {
@@ -403,7 +547,7 @@ export function getIPFSServiceStatus() {
403
547
  message: 'No IPFS credentials - using demo mode. Options:\n' +
404
548
  ' 1. IPFS_API_URL=http://YOUR_NODE:5001 (FREE - your own node)\n' +
405
549
  ' 2. WEB3_STORAGE_TOKEN (free 5GB at web3.storage)\n' +
406
- ' 3. PINATA_API_KEY (free 1GB at pinata.cloud)',
550
+ ' 3. PINATA_API_KEY (free 1GB at pinata.cloud)'
407
551
  };
408
552
  }
409
553
  /**