@ninebix/nmt-system 1.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 (639) hide show
  1. package/LICENSE +70 -0
  2. package/README.md +465 -0
  3. package/dist/api/cli-server.d.ts +83 -0
  4. package/dist/api/cli-server.d.ts.map +1 -0
  5. package/dist/api/cli-server.js +597 -0
  6. package/dist/api/cli-server.js.map +1 -0
  7. package/dist/api/index.d.ts +6 -0
  8. package/dist/api/index.d.ts.map +1 -0
  9. package/dist/api/index.js +6 -0
  10. package/dist/api/index.js.map +1 -0
  11. package/dist/api/middleware/index.d.ts +12 -0
  12. package/dist/api/middleware/index.d.ts.map +1 -0
  13. package/dist/api/middleware/index.js +13 -0
  14. package/dist/api/middleware/index.js.map +1 -0
  15. package/dist/api/middleware/logger.d.ts +21 -0
  16. package/dist/api/middleware/logger.d.ts.map +1 -0
  17. package/dist/api/middleware/logger.js +134 -0
  18. package/dist/api/middleware/logger.js.map +1 -0
  19. package/dist/api/middleware/rate-limit.d.ts +26 -0
  20. package/dist/api/middleware/rate-limit.d.ts.map +1 -0
  21. package/dist/api/middleware/rate-limit.js +107 -0
  22. package/dist/api/middleware/rate-limit.js.map +1 -0
  23. package/dist/api/middleware/response.d.ts +61 -0
  24. package/dist/api/middleware/response.d.ts.map +1 -0
  25. package/dist/api/middleware/response.js +86 -0
  26. package/dist/api/middleware/response.js.map +1 -0
  27. package/dist/api/middleware/validation.d.ts +43 -0
  28. package/dist/api/middleware/validation.d.ts.map +1 -0
  29. package/dist/api/middleware/validation.js +257 -0
  30. package/dist/api/middleware/validation.js.map +1 -0
  31. package/dist/api/server.d.ts +79 -0
  32. package/dist/api/server.d.ts.map +1 -0
  33. package/dist/api/server.js +2011 -0
  34. package/dist/api/server.js.map +1 -0
  35. package/dist/bin/nmt.d.ts +9 -0
  36. package/dist/bin/nmt.d.ts.map +1 -0
  37. package/dist/bin/nmt.js +1142 -0
  38. package/dist/bin/nmt.js.map +1 -0
  39. package/dist/cli/commands/attractor.d.ts +6 -0
  40. package/dist/cli/commands/attractor.d.ts.map +1 -0
  41. package/dist/cli/commands/attractor.js +167 -0
  42. package/dist/cli/commands/attractor.js.map +1 -0
  43. package/dist/cli/commands/dimension.d.ts +6 -0
  44. package/dist/cli/commands/dimension.d.ts.map +1 -0
  45. package/dist/cli/commands/dimension.js +85 -0
  46. package/dist/cli/commands/dimension.js.map +1 -0
  47. package/dist/cli/commands/index.d.ts +11 -0
  48. package/dist/cli/commands/index.d.ts.map +1 -0
  49. package/dist/cli/commands/index.js +11 -0
  50. package/dist/cli/commands/index.js.map +1 -0
  51. package/dist/cli/commands/infer.d.ts +6 -0
  52. package/dist/cli/commands/infer.d.ts.map +1 -0
  53. package/dist/cli/commands/infer.js +139 -0
  54. package/dist/cli/commands/infer.js.map +1 -0
  55. package/dist/cli/commands/learn.d.ts +6 -0
  56. package/dist/cli/commands/learn.d.ts.map +1 -0
  57. package/dist/cli/commands/learn.js +87 -0
  58. package/dist/cli/commands/learn.js.map +1 -0
  59. package/dist/cli/commands/orchestrate.d.ts +6 -0
  60. package/dist/cli/commands/orchestrate.d.ts.map +1 -0
  61. package/dist/cli/commands/orchestrate.js +279 -0
  62. package/dist/cli/commands/orchestrate.js.map +1 -0
  63. package/dist/cli/commands/prob.d.ts +6 -0
  64. package/dist/cli/commands/prob.d.ts.map +1 -0
  65. package/dist/cli/commands/prob.js +256 -0
  66. package/dist/cli/commands/prob.js.map +1 -0
  67. package/dist/cli/commands/quantum.d.ts +6 -0
  68. package/dist/cli/commands/quantum.d.ts.map +1 -0
  69. package/dist/cli/commands/quantum.js +150 -0
  70. package/dist/cli/commands/quantum.js.map +1 -0
  71. package/dist/cli/commands/sync.d.ts +65 -0
  72. package/dist/cli/commands/sync.d.ts.map +1 -0
  73. package/dist/cli/commands/sync.js +338 -0
  74. package/dist/cli/commands/sync.js.map +1 -0
  75. package/dist/cli/index.d.ts +9 -0
  76. package/dist/cli/index.d.ts.map +1 -0
  77. package/dist/cli/index.js +9 -0
  78. package/dist/cli/index.js.map +1 -0
  79. package/dist/cli/probabilistic-commands.d.ts +39 -0
  80. package/dist/cli/probabilistic-commands.d.ts.map +1 -0
  81. package/dist/cli/probabilistic-commands.js +112 -0
  82. package/dist/cli/probabilistic-commands.js.map +1 -0
  83. package/dist/cli/types.d.ts +69 -0
  84. package/dist/cli/types.d.ts.map +1 -0
  85. package/dist/cli/types.js +5 -0
  86. package/dist/cli/types.js.map +1 -0
  87. package/dist/cli/utils/formatters.d.ts +51 -0
  88. package/dist/cli/utils/formatters.d.ts.map +1 -0
  89. package/dist/cli/utils/formatters.js +79 -0
  90. package/dist/cli/utils/formatters.js.map +1 -0
  91. package/dist/cli/utils/helpers.d.ts +21 -0
  92. package/dist/cli/utils/helpers.d.ts.map +1 -0
  93. package/dist/cli/utils/helpers.js +51 -0
  94. package/dist/cli/utils/helpers.js.map +1 -0
  95. package/dist/cli/utils/index.d.ts +7 -0
  96. package/dist/cli/utils/index.d.ts.map +1 -0
  97. package/dist/cli/utils/index.js +13 -0
  98. package/dist/cli/utils/index.js.map +1 -0
  99. package/dist/cli/utils/validators.d.ts +162 -0
  100. package/dist/cli/utils/validators.d.ts.map +1 -0
  101. package/dist/cli/utils/validators.js +351 -0
  102. package/dist/cli/utils/validators.js.map +1 -0
  103. package/dist/core/advanced-embedding.d.ts +154 -0
  104. package/dist/core/advanced-embedding.d.ts.map +1 -0
  105. package/dist/core/advanced-embedding.js +367 -0
  106. package/dist/core/advanced-embedding.js.map +1 -0
  107. package/dist/core/attractor-model.d.ts +381 -0
  108. package/dist/core/attractor-model.d.ts.map +1 -0
  109. package/dist/core/attractor-model.js +821 -0
  110. package/dist/core/attractor-model.js.map +1 -0
  111. package/dist/core/bidirectional-inference.d.ts +143 -0
  112. package/dist/core/bidirectional-inference.d.ts.map +1 -0
  113. package/dist/core/bidirectional-inference.js +501 -0
  114. package/dist/core/bidirectional-inference.js.map +1 -0
  115. package/dist/core/chunk-engine.d.ts +78 -0
  116. package/dist/core/chunk-engine.d.ts.map +1 -0
  117. package/dist/core/chunk-engine.js +192 -0
  118. package/dist/core/chunk-engine.js.map +1 -0
  119. package/dist/core/dynamic-embedding.d.ts +327 -0
  120. package/dist/core/dynamic-embedding.d.ts.map +1 -0
  121. package/dist/core/dynamic-embedding.js +527 -0
  122. package/dist/core/dynamic-embedding.js.map +1 -0
  123. package/dist/core/embedding-similarity.d.ts +68 -0
  124. package/dist/core/embedding-similarity.d.ts.map +1 -0
  125. package/dist/core/embedding-similarity.js +291 -0
  126. package/dist/core/embedding-similarity.js.map +1 -0
  127. package/dist/core/evolution-scheduler.d.ts +101 -0
  128. package/dist/core/evolution-scheduler.d.ts.map +1 -0
  129. package/dist/core/evolution-scheduler.js +235 -0
  130. package/dist/core/evolution-scheduler.js.map +1 -0
  131. package/dist/core/hierarchical-chunker.d.ts +108 -0
  132. package/dist/core/hierarchical-chunker.d.ts.map +1 -0
  133. package/dist/core/hierarchical-chunker.js +296 -0
  134. package/dist/core/hierarchical-chunker.js.map +1 -0
  135. package/dist/core/hnsw-index.d.ts +111 -0
  136. package/dist/core/hnsw-index.d.ts.map +1 -0
  137. package/dist/core/hnsw-index.js +466 -0
  138. package/dist/core/hnsw-index.js.map +1 -0
  139. package/dist/core/index.d.ts +23 -0
  140. package/dist/core/index.d.ts.map +1 -0
  141. package/dist/core/index.js +25 -0
  142. package/dist/core/index.js.map +1 -0
  143. package/dist/core/language-analyzers.d.ts +124 -0
  144. package/dist/core/language-analyzers.d.ts.map +1 -0
  145. package/dist/core/language-analyzers.js +365 -0
  146. package/dist/core/language-analyzers.js.map +1 -0
  147. package/dist/core/local-embedding.d.ts +109 -0
  148. package/dist/core/local-embedding.d.ts.map +1 -0
  149. package/dist/core/local-embedding.js +222 -0
  150. package/dist/core/local-embedding.js.map +1 -0
  151. package/dist/core/merkle-engine.d.ts +263 -0
  152. package/dist/core/merkle-engine.d.ts.map +1 -0
  153. package/dist/core/merkle-engine.js +528 -0
  154. package/dist/core/merkle-engine.js.map +1 -0
  155. package/dist/core/multi-layer-reasoning.d.ts +178 -0
  156. package/dist/core/multi-layer-reasoning.d.ts.map +1 -0
  157. package/dist/core/multi-layer-reasoning.js +607 -0
  158. package/dist/core/multi-layer-reasoning.js.map +1 -0
  159. package/dist/core/neuron-graph.d.ts +134 -0
  160. package/dist/core/neuron-graph.d.ts.map +1 -0
  161. package/dist/core/neuron-graph.js +436 -0
  162. package/dist/core/neuron-graph.js.map +1 -0
  163. package/dist/core/probabilistic-neuron.d.ts +251 -0
  164. package/dist/core/probabilistic-neuron.d.ts.map +1 -0
  165. package/dist/core/probabilistic-neuron.js +618 -0
  166. package/dist/core/probabilistic-neuron.js.map +1 -0
  167. package/dist/core/probabilistic-orchestrator.d.ts +408 -0
  168. package/dist/core/probabilistic-orchestrator.d.ts.map +1 -0
  169. package/dist/core/probabilistic-orchestrator.js +798 -0
  170. package/dist/core/probabilistic-orchestrator.js.map +1 -0
  171. package/dist/core/semantic-chunker.d.ts +117 -0
  172. package/dist/core/semantic-chunker.d.ts.map +1 -0
  173. package/dist/core/semantic-chunker.js +464 -0
  174. package/dist/core/semantic-chunker.js.map +1 -0
  175. package/dist/events/event-bus.d.ts +166 -0
  176. package/dist/events/event-bus.d.ts.map +1 -0
  177. package/dist/events/event-bus.js +228 -0
  178. package/dist/events/event-bus.js.map +1 -0
  179. package/dist/events/index.d.ts +7 -0
  180. package/dist/events/index.d.ts.map +1 -0
  181. package/dist/events/index.js +7 -0
  182. package/dist/events/index.js.map +1 -0
  183. package/dist/events/progress-tracker.d.ts +150 -0
  184. package/dist/events/progress-tracker.d.ts.map +1 -0
  185. package/dist/events/progress-tracker.js +290 -0
  186. package/dist/events/progress-tracker.js.map +1 -0
  187. package/dist/extensions/clustering/community-detection.d.ts +90 -0
  188. package/dist/extensions/clustering/community-detection.d.ts.map +1 -0
  189. package/dist/extensions/clustering/community-detection.js +470 -0
  190. package/dist/extensions/clustering/community-detection.js.map +1 -0
  191. package/dist/extensions/clustering/index.d.ts +114 -0
  192. package/dist/extensions/clustering/index.d.ts.map +1 -0
  193. package/dist/extensions/clustering/index.js +468 -0
  194. package/dist/extensions/clustering/index.js.map +1 -0
  195. package/dist/extensions/clustering/topic-modeling.d.ts +86 -0
  196. package/dist/extensions/clustering/topic-modeling.d.ts.map +1 -0
  197. package/dist/extensions/clustering/topic-modeling.js +355 -0
  198. package/dist/extensions/clustering/topic-modeling.js.map +1 -0
  199. package/dist/extensions/distributed/coordinator.d.ts +114 -0
  200. package/dist/extensions/distributed/coordinator.d.ts.map +1 -0
  201. package/dist/extensions/distributed/coordinator.js +319 -0
  202. package/dist/extensions/distributed/coordinator.js.map +1 -0
  203. package/dist/extensions/distributed/index.d.ts +10 -0
  204. package/dist/extensions/distributed/index.d.ts.map +1 -0
  205. package/dist/extensions/distributed/index.js +10 -0
  206. package/dist/extensions/distributed/index.js.map +1 -0
  207. package/dist/extensions/distributed/queue.d.ts +157 -0
  208. package/dist/extensions/distributed/queue.d.ts.map +1 -0
  209. package/dist/extensions/distributed/queue.js +326 -0
  210. package/dist/extensions/distributed/queue.js.map +1 -0
  211. package/dist/extensions/distributed/scheduler.d.ts +107 -0
  212. package/dist/extensions/distributed/scheduler.d.ts.map +1 -0
  213. package/dist/extensions/distributed/scheduler.js +301 -0
  214. package/dist/extensions/distributed/scheduler.js.map +1 -0
  215. package/dist/extensions/distributed/worker.d.ts +112 -0
  216. package/dist/extensions/distributed/worker.d.ts.map +1 -0
  217. package/dist/extensions/distributed/worker.js +260 -0
  218. package/dist/extensions/distributed/worker.js.map +1 -0
  219. package/dist/index.d.ts +14 -0
  220. package/dist/index.d.ts.map +1 -0
  221. package/dist/index.js +20 -0
  222. package/dist/index.js.map +1 -0
  223. package/dist/mcp/server.d.ts +43 -0
  224. package/dist/mcp/server.d.ts.map +1 -0
  225. package/dist/mcp/server.js +494 -0
  226. package/dist/mcp/server.js.map +1 -0
  227. package/dist/services/adaptive-fallback.d.ts +140 -0
  228. package/dist/services/adaptive-fallback.d.ts.map +1 -0
  229. package/dist/services/adaptive-fallback.js +273 -0
  230. package/dist/services/adaptive-fallback.js.map +1 -0
  231. package/dist/services/answer-gate.d.ts +112 -0
  232. package/dist/services/answer-gate.d.ts.map +1 -0
  233. package/dist/services/answer-gate.js +299 -0
  234. package/dist/services/answer-gate.js.map +1 -0
  235. package/dist/services/auto-learning.d.ts +135 -0
  236. package/dist/services/auto-learning.d.ts.map +1 -0
  237. package/dist/services/auto-learning.js +413 -0
  238. package/dist/services/auto-learning.js.map +1 -0
  239. package/dist/services/context-compressor.d.ts +77 -0
  240. package/dist/services/context-compressor.d.ts.map +1 -0
  241. package/dist/services/context-compressor.js +234 -0
  242. package/dist/services/context-compressor.js.map +1 -0
  243. package/dist/services/efficient-rag.d.ts +140 -0
  244. package/dist/services/efficient-rag.d.ts.map +1 -0
  245. package/dist/services/efficient-rag.js +311 -0
  246. package/dist/services/efficient-rag.js.map +1 -0
  247. package/dist/services/embedding-provider.d.ts +72 -0
  248. package/dist/services/embedding-provider.d.ts.map +1 -0
  249. package/dist/services/embedding-provider.js +176 -0
  250. package/dist/services/embedding-provider.js.map +1 -0
  251. package/dist/services/file-ingestion.d.ts +72 -0
  252. package/dist/services/file-ingestion.d.ts.map +1 -0
  253. package/dist/services/file-ingestion.js +237 -0
  254. package/dist/services/file-ingestion.js.map +1 -0
  255. package/dist/services/four-stage-learning.d.ts +552 -0
  256. package/dist/services/four-stage-learning.d.ts.map +1 -0
  257. package/dist/services/four-stage-learning.js +1110 -0
  258. package/dist/services/four-stage-learning.js.map +1 -0
  259. package/dist/services/graph.d.ts +94 -0
  260. package/dist/services/graph.d.ts.map +1 -0
  261. package/dist/services/graph.js +292 -0
  262. package/dist/services/graph.js.map +1 -0
  263. package/dist/services/index.d.ts +15 -0
  264. package/dist/services/index.d.ts.map +1 -0
  265. package/dist/services/index.js +18 -0
  266. package/dist/services/index.js.map +1 -0
  267. package/dist/services/ingestion.d.ts +98 -0
  268. package/dist/services/ingestion.d.ts.map +1 -0
  269. package/dist/services/ingestion.js +259 -0
  270. package/dist/services/ingestion.js.map +1 -0
  271. package/dist/services/learning.d.ts +67 -0
  272. package/dist/services/learning.d.ts.map +1 -0
  273. package/dist/services/learning.js +262 -0
  274. package/dist/services/learning.js.map +1 -0
  275. package/dist/services/llm-router.d.ts +143 -0
  276. package/dist/services/llm-router.d.ts.map +1 -0
  277. package/dist/services/llm-router.js +284 -0
  278. package/dist/services/llm-router.js.map +1 -0
  279. package/dist/services/llm.d.ts +86 -0
  280. package/dist/services/llm.d.ts.map +1 -0
  281. package/dist/services/llm.js +283 -0
  282. package/dist/services/llm.js.map +1 -0
  283. package/dist/services/metrics-dashboard.d.ts +262 -0
  284. package/dist/services/metrics-dashboard.d.ts.map +1 -0
  285. package/dist/services/metrics-dashboard.js +417 -0
  286. package/dist/services/metrics-dashboard.js.map +1 -0
  287. package/dist/services/neuron-lifecycle.d.ts +137 -0
  288. package/dist/services/neuron-lifecycle.d.ts.map +1 -0
  289. package/dist/services/neuron-lifecycle.js +422 -0
  290. package/dist/services/neuron-lifecycle.js.map +1 -0
  291. package/dist/services/nmt-pipeline.d.ts +219 -0
  292. package/dist/services/nmt-pipeline.d.ts.map +1 -0
  293. package/dist/services/nmt-pipeline.js +449 -0
  294. package/dist/services/nmt-pipeline.js.map +1 -0
  295. package/dist/services/query-cache.d.ts +136 -0
  296. package/dist/services/query-cache.d.ts.map +1 -0
  297. package/dist/services/query-cache.js +255 -0
  298. package/dist/services/query-cache.js.map +1 -0
  299. package/dist/services/query-normalize.d.ts +107 -0
  300. package/dist/services/query-normalize.d.ts.map +1 -0
  301. package/dist/services/query-normalize.js +366 -0
  302. package/dist/services/query-normalize.js.map +1 -0
  303. package/dist/services/query.d.ts +102 -0
  304. package/dist/services/query.d.ts.map +1 -0
  305. package/dist/services/query.js +227 -0
  306. package/dist/services/query.js.map +1 -0
  307. package/dist/services/text-embedding.d.ts +183 -0
  308. package/dist/services/text-embedding.d.ts.map +1 -0
  309. package/dist/services/text-embedding.js +633 -0
  310. package/dist/services/text-embedding.js.map +1 -0
  311. package/dist/services/verification-gate.d.ts +147 -0
  312. package/dist/services/verification-gate.d.ts.map +1 -0
  313. package/dist/services/verification-gate.js +344 -0
  314. package/dist/services/verification-gate.js.map +1 -0
  315. package/dist/services/verify.d.ts +114 -0
  316. package/dist/services/verify.d.ts.map +1 -0
  317. package/dist/services/verify.js +237 -0
  318. package/dist/services/verify.js.map +1 -0
  319. package/dist/services/web-search.d.ts +145 -0
  320. package/dist/services/web-search.d.ts.map +1 -0
  321. package/dist/services/web-search.js +534 -0
  322. package/dist/services/web-search.js.map +1 -0
  323. package/dist/src/api/cli-server.d.ts +83 -0
  324. package/dist/src/api/cli-server.d.ts.map +1 -0
  325. package/dist/src/api/cli-server.js +597 -0
  326. package/dist/src/api/cli-server.js.map +1 -0
  327. package/dist/src/api/index.d.ts +6 -0
  328. package/dist/src/api/index.d.ts.map +1 -0
  329. package/dist/src/api/index.js +6 -0
  330. package/dist/src/api/index.js.map +1 -0
  331. package/dist/src/cli/commands/attractor.d.ts +6 -0
  332. package/dist/src/cli/commands/attractor.d.ts.map +1 -0
  333. package/dist/src/cli/commands/attractor.js +167 -0
  334. package/dist/src/cli/commands/attractor.js.map +1 -0
  335. package/dist/src/cli/commands/dimension.d.ts +6 -0
  336. package/dist/src/cli/commands/dimension.d.ts.map +1 -0
  337. package/dist/src/cli/commands/dimension.js +85 -0
  338. package/dist/src/cli/commands/dimension.js.map +1 -0
  339. package/dist/src/cli/commands/index.d.ts +11 -0
  340. package/dist/src/cli/commands/index.d.ts.map +1 -0
  341. package/dist/src/cli/commands/index.js +11 -0
  342. package/dist/src/cli/commands/index.js.map +1 -0
  343. package/dist/src/cli/commands/infer.d.ts +6 -0
  344. package/dist/src/cli/commands/infer.d.ts.map +1 -0
  345. package/dist/src/cli/commands/infer.js +139 -0
  346. package/dist/src/cli/commands/infer.js.map +1 -0
  347. package/dist/src/cli/commands/learn.d.ts +6 -0
  348. package/dist/src/cli/commands/learn.d.ts.map +1 -0
  349. package/dist/src/cli/commands/learn.js +87 -0
  350. package/dist/src/cli/commands/learn.js.map +1 -0
  351. package/dist/src/cli/commands/orchestrate.d.ts +6 -0
  352. package/dist/src/cli/commands/orchestrate.d.ts.map +1 -0
  353. package/dist/src/cli/commands/orchestrate.js +279 -0
  354. package/dist/src/cli/commands/orchestrate.js.map +1 -0
  355. package/dist/src/cli/commands/prob.d.ts +6 -0
  356. package/dist/src/cli/commands/prob.d.ts.map +1 -0
  357. package/dist/src/cli/commands/prob.js +256 -0
  358. package/dist/src/cli/commands/prob.js.map +1 -0
  359. package/dist/src/cli/commands/sync.d.ts +65 -0
  360. package/dist/src/cli/commands/sync.d.ts.map +1 -0
  361. package/dist/src/cli/commands/sync.js +338 -0
  362. package/dist/src/cli/commands/sync.js.map +1 -0
  363. package/dist/src/cli/index.d.ts +9 -0
  364. package/dist/src/cli/index.d.ts.map +1 -0
  365. package/dist/src/cli/index.js +9 -0
  366. package/dist/src/cli/index.js.map +1 -0
  367. package/dist/src/cli/probabilistic-commands.d.ts +39 -0
  368. package/dist/src/cli/probabilistic-commands.d.ts.map +1 -0
  369. package/dist/src/cli/probabilistic-commands.js +112 -0
  370. package/dist/src/cli/probabilistic-commands.js.map +1 -0
  371. package/dist/src/cli/types.d.ts +69 -0
  372. package/dist/src/cli/types.d.ts.map +1 -0
  373. package/dist/src/cli/types.js +5 -0
  374. package/dist/src/cli/types.js.map +1 -0
  375. package/dist/src/cli/utils/formatters.d.ts +51 -0
  376. package/dist/src/cli/utils/formatters.d.ts.map +1 -0
  377. package/dist/src/cli/utils/formatters.js +79 -0
  378. package/dist/src/cli/utils/formatters.js.map +1 -0
  379. package/dist/src/cli/utils/helpers.d.ts +21 -0
  380. package/dist/src/cli/utils/helpers.d.ts.map +1 -0
  381. package/dist/src/cli/utils/helpers.js +51 -0
  382. package/dist/src/cli/utils/helpers.js.map +1 -0
  383. package/dist/src/cli/utils/index.d.ts +7 -0
  384. package/dist/src/cli/utils/index.d.ts.map +1 -0
  385. package/dist/src/cli/utils/index.js +13 -0
  386. package/dist/src/cli/utils/index.js.map +1 -0
  387. package/dist/src/cli/utils/validators.d.ts +162 -0
  388. package/dist/src/cli/utils/validators.d.ts.map +1 -0
  389. package/dist/src/cli/utils/validators.js +351 -0
  390. package/dist/src/cli/utils/validators.js.map +1 -0
  391. package/dist/src/core/attractor-model.d.ts +381 -0
  392. package/dist/src/core/attractor-model.d.ts.map +1 -0
  393. package/dist/src/core/attractor-model.js +821 -0
  394. package/dist/src/core/attractor-model.js.map +1 -0
  395. package/dist/src/core/bidirectional-inference.d.ts +143 -0
  396. package/dist/src/core/bidirectional-inference.d.ts.map +1 -0
  397. package/dist/src/core/bidirectional-inference.js +501 -0
  398. package/dist/src/core/bidirectional-inference.js.map +1 -0
  399. package/dist/src/core/chunk-engine.d.ts +78 -0
  400. package/dist/src/core/chunk-engine.d.ts.map +1 -0
  401. package/dist/src/core/chunk-engine.js +192 -0
  402. package/dist/src/core/chunk-engine.js.map +1 -0
  403. package/dist/src/core/dynamic-embedding.d.ts +327 -0
  404. package/dist/src/core/dynamic-embedding.d.ts.map +1 -0
  405. package/dist/src/core/dynamic-embedding.js +527 -0
  406. package/dist/src/core/dynamic-embedding.js.map +1 -0
  407. package/dist/src/core/evolution-scheduler.d.ts +101 -0
  408. package/dist/src/core/evolution-scheduler.d.ts.map +1 -0
  409. package/dist/src/core/evolution-scheduler.js +235 -0
  410. package/dist/src/core/evolution-scheduler.js.map +1 -0
  411. package/dist/src/core/hnsw-index.d.ts +111 -0
  412. package/dist/src/core/hnsw-index.d.ts.map +1 -0
  413. package/dist/src/core/hnsw-index.js +466 -0
  414. package/dist/src/core/hnsw-index.js.map +1 -0
  415. package/dist/src/core/index.d.ts +23 -0
  416. package/dist/src/core/index.d.ts.map +1 -0
  417. package/dist/src/core/index.js +25 -0
  418. package/dist/src/core/index.js.map +1 -0
  419. package/dist/src/core/merkle-engine.d.ts +263 -0
  420. package/dist/src/core/merkle-engine.d.ts.map +1 -0
  421. package/dist/src/core/merkle-engine.js +528 -0
  422. package/dist/src/core/merkle-engine.js.map +1 -0
  423. package/dist/src/core/neuron-graph.d.ts +134 -0
  424. package/dist/src/core/neuron-graph.d.ts.map +1 -0
  425. package/dist/src/core/neuron-graph.js +436 -0
  426. package/dist/src/core/neuron-graph.js.map +1 -0
  427. package/dist/src/core/probabilistic-neuron.d.ts +251 -0
  428. package/dist/src/core/probabilistic-neuron.d.ts.map +1 -0
  429. package/dist/src/core/probabilistic-neuron.js +618 -0
  430. package/dist/src/core/probabilistic-neuron.js.map +1 -0
  431. package/dist/src/core/probabilistic-orchestrator.d.ts +408 -0
  432. package/dist/src/core/probabilistic-orchestrator.d.ts.map +1 -0
  433. package/dist/src/core/probabilistic-orchestrator.js +798 -0
  434. package/dist/src/core/probabilistic-orchestrator.js.map +1 -0
  435. package/dist/src/events/event-bus.d.ts +166 -0
  436. package/dist/src/events/event-bus.d.ts.map +1 -0
  437. package/dist/src/events/event-bus.js +228 -0
  438. package/dist/src/events/event-bus.js.map +1 -0
  439. package/dist/src/events/index.d.ts +7 -0
  440. package/dist/src/events/index.d.ts.map +1 -0
  441. package/dist/src/events/index.js +7 -0
  442. package/dist/src/events/index.js.map +1 -0
  443. package/dist/src/events/progress-tracker.d.ts +150 -0
  444. package/dist/src/events/progress-tracker.d.ts.map +1 -0
  445. package/dist/src/events/progress-tracker.js +290 -0
  446. package/dist/src/events/progress-tracker.js.map +1 -0
  447. package/dist/src/extensions/clustering/index.d.ts +114 -0
  448. package/dist/src/extensions/clustering/index.d.ts.map +1 -0
  449. package/dist/src/extensions/clustering/index.js +468 -0
  450. package/dist/src/extensions/clustering/index.js.map +1 -0
  451. package/dist/src/index.d.ts +14 -0
  452. package/dist/src/index.d.ts.map +1 -0
  453. package/dist/src/index.js +20 -0
  454. package/dist/src/index.js.map +1 -0
  455. package/dist/src/mcp/server.d.ts +43 -0
  456. package/dist/src/mcp/server.d.ts.map +1 -0
  457. package/dist/src/mcp/server.js +494 -0
  458. package/dist/src/mcp/server.js.map +1 -0
  459. package/dist/src/services/embedding-provider.d.ts +72 -0
  460. package/dist/src/services/embedding-provider.d.ts.map +1 -0
  461. package/dist/src/services/embedding-provider.js +176 -0
  462. package/dist/src/services/embedding-provider.js.map +1 -0
  463. package/dist/src/services/four-stage-learning.d.ts +552 -0
  464. package/dist/src/services/four-stage-learning.d.ts.map +1 -0
  465. package/dist/src/services/four-stage-learning.js +1110 -0
  466. package/dist/src/services/four-stage-learning.js.map +1 -0
  467. package/dist/src/services/index.d.ts +15 -0
  468. package/dist/src/services/index.d.ts.map +1 -0
  469. package/dist/src/services/index.js +18 -0
  470. package/dist/src/services/index.js.map +1 -0
  471. package/dist/src/services/ingestion.d.ts +98 -0
  472. package/dist/src/services/ingestion.d.ts.map +1 -0
  473. package/dist/src/services/ingestion.js +259 -0
  474. package/dist/src/services/ingestion.js.map +1 -0
  475. package/dist/src/services/query.d.ts +102 -0
  476. package/dist/src/services/query.d.ts.map +1 -0
  477. package/dist/src/services/query.js +227 -0
  478. package/dist/src/services/query.js.map +1 -0
  479. package/dist/src/services/text-embedding.d.ts +183 -0
  480. package/dist/src/services/text-embedding.d.ts.map +1 -0
  481. package/dist/src/services/text-embedding.js +633 -0
  482. package/dist/src/services/text-embedding.js.map +1 -0
  483. package/dist/src/services/verify.d.ts +114 -0
  484. package/dist/src/services/verify.d.ts.map +1 -0
  485. package/dist/src/services/verify.js +237 -0
  486. package/dist/src/services/verify.js.map +1 -0
  487. package/dist/src/storage/chunk-store.d.ts +107 -0
  488. package/dist/src/storage/chunk-store.d.ts.map +1 -0
  489. package/dist/src/storage/chunk-store.js +293 -0
  490. package/dist/src/storage/chunk-store.js.map +1 -0
  491. package/dist/src/storage/index-store.d.ts +126 -0
  492. package/dist/src/storage/index-store.d.ts.map +1 -0
  493. package/dist/src/storage/index-store.js +316 -0
  494. package/dist/src/storage/index-store.js.map +1 -0
  495. package/dist/src/storage/index.d.ts +45 -0
  496. package/dist/src/storage/index.d.ts.map +1 -0
  497. package/dist/src/storage/index.js +52 -0
  498. package/dist/src/storage/index.js.map +1 -0
  499. package/dist/src/storage/neuron-store.d.ts +121 -0
  500. package/dist/src/storage/neuron-store.d.ts.map +1 -0
  501. package/dist/src/storage/neuron-store.js +466 -0
  502. package/dist/src/storage/neuron-store.js.map +1 -0
  503. package/dist/src/storage/probabilistic-store.d.ts +104 -0
  504. package/dist/src/storage/probabilistic-store.d.ts.map +1 -0
  505. package/dist/src/storage/probabilistic-store.js +257 -0
  506. package/dist/src/storage/probabilistic-store.js.map +1 -0
  507. package/dist/src/sync/change-journal.d.ts +171 -0
  508. package/dist/src/sync/change-journal.d.ts.map +1 -0
  509. package/dist/src/sync/change-journal.js +362 -0
  510. package/dist/src/sync/change-journal.js.map +1 -0
  511. package/dist/src/sync/index.d.ts +8 -0
  512. package/dist/src/sync/index.d.ts.map +1 -0
  513. package/dist/src/sync/index.js +8 -0
  514. package/dist/src/sync/index.js.map +1 -0
  515. package/dist/src/sync/state-sync.d.ts +241 -0
  516. package/dist/src/sync/state-sync.d.ts.map +1 -0
  517. package/dist/src/sync/state-sync.js +396 -0
  518. package/dist/src/sync/state-sync.js.map +1 -0
  519. package/dist/src/sync/vector-clock.d.ts +144 -0
  520. package/dist/src/sync/vector-clock.d.ts.map +1 -0
  521. package/dist/src/sync/vector-clock.js +266 -0
  522. package/dist/src/sync/vector-clock.js.map +1 -0
  523. package/dist/src/types/index.d.ts +224 -0
  524. package/dist/src/types/index.d.ts.map +1 -0
  525. package/dist/src/types/index.js +24 -0
  526. package/dist/src/types/index.js.map +1 -0
  527. package/dist/src/utils/hash.d.ts +39 -0
  528. package/dist/src/utils/hash.d.ts.map +1 -0
  529. package/dist/src/utils/hash.js +56 -0
  530. package/dist/src/utils/hash.js.map +1 -0
  531. package/dist/src/utils/index.d.ts +26 -0
  532. package/dist/src/utils/index.d.ts.map +1 -0
  533. package/dist/src/utils/index.js +50 -0
  534. package/dist/src/utils/index.js.map +1 -0
  535. package/dist/src/utils/logger.d.ts +88 -0
  536. package/dist/src/utils/logger.d.ts.map +1 -0
  537. package/dist/src/utils/logger.js +157 -0
  538. package/dist/src/utils/logger.js.map +1 -0
  539. package/dist/src/utils/metrics.d.ts +232 -0
  540. package/dist/src/utils/metrics.d.ts.map +1 -0
  541. package/dist/src/utils/metrics.js +387 -0
  542. package/dist/src/utils/metrics.js.map +1 -0
  543. package/dist/src/utils/similarity.d.ts +64 -0
  544. package/dist/src/utils/similarity.d.ts.map +1 -0
  545. package/dist/src/utils/similarity.js +151 -0
  546. package/dist/src/utils/similarity.js.map +1 -0
  547. package/dist/src/utils/uuid.d.ts +23 -0
  548. package/dist/src/utils/uuid.d.ts.map +1 -0
  549. package/dist/src/utils/uuid.js +29 -0
  550. package/dist/src/utils/uuid.js.map +1 -0
  551. package/dist/storage/chunk-store.d.ts +107 -0
  552. package/dist/storage/chunk-store.d.ts.map +1 -0
  553. package/dist/storage/chunk-store.js +293 -0
  554. package/dist/storage/chunk-store.js.map +1 -0
  555. package/dist/storage/hybrid-adapters.d.ts +111 -0
  556. package/dist/storage/hybrid-adapters.d.ts.map +1 -0
  557. package/dist/storage/hybrid-adapters.js +223 -0
  558. package/dist/storage/hybrid-adapters.js.map +1 -0
  559. package/dist/storage/hybrid-store.d.ts +125 -0
  560. package/dist/storage/hybrid-store.d.ts.map +1 -0
  561. package/dist/storage/hybrid-store.js +655 -0
  562. package/dist/storage/hybrid-store.js.map +1 -0
  563. package/dist/storage/index-store.d.ts +126 -0
  564. package/dist/storage/index-store.d.ts.map +1 -0
  565. package/dist/storage/index-store.js +316 -0
  566. package/dist/storage/index-store.js.map +1 -0
  567. package/dist/storage/index.d.ts +45 -0
  568. package/dist/storage/index.d.ts.map +1 -0
  569. package/dist/storage/index.js +52 -0
  570. package/dist/storage/index.js.map +1 -0
  571. package/dist/storage/neuron-store.d.ts +121 -0
  572. package/dist/storage/neuron-store.d.ts.map +1 -0
  573. package/dist/storage/neuron-store.js +466 -0
  574. package/dist/storage/neuron-store.js.map +1 -0
  575. package/dist/storage/ontology-store.d.ts +132 -0
  576. package/dist/storage/ontology-store.d.ts.map +1 -0
  577. package/dist/storage/ontology-store.js +319 -0
  578. package/dist/storage/ontology-store.js.map +1 -0
  579. package/dist/storage/probabilistic-store.d.ts +104 -0
  580. package/dist/storage/probabilistic-store.d.ts.map +1 -0
  581. package/dist/storage/probabilistic-store.js +257 -0
  582. package/dist/storage/probabilistic-store.js.map +1 -0
  583. package/dist/storage/redis-adapters.d.ts +102 -0
  584. package/dist/storage/redis-adapters.d.ts.map +1 -0
  585. package/dist/storage/redis-adapters.js +205 -0
  586. package/dist/storage/redis-adapters.js.map +1 -0
  587. package/dist/storage/redis-ontology-store.d.ts +146 -0
  588. package/dist/storage/redis-ontology-store.d.ts.map +1 -0
  589. package/dist/storage/redis-ontology-store.js +384 -0
  590. package/dist/storage/redis-ontology-store.js.map +1 -0
  591. package/dist/storage/redis-store.d.ts +174 -0
  592. package/dist/storage/redis-store.d.ts.map +1 -0
  593. package/dist/storage/redis-store.js +506 -0
  594. package/dist/storage/redis-store.js.map +1 -0
  595. package/dist/sync/change-journal.d.ts +171 -0
  596. package/dist/sync/change-journal.d.ts.map +1 -0
  597. package/dist/sync/change-journal.js +362 -0
  598. package/dist/sync/change-journal.js.map +1 -0
  599. package/dist/sync/index.d.ts +8 -0
  600. package/dist/sync/index.d.ts.map +1 -0
  601. package/dist/sync/index.js +8 -0
  602. package/dist/sync/index.js.map +1 -0
  603. package/dist/sync/state-sync.d.ts +241 -0
  604. package/dist/sync/state-sync.d.ts.map +1 -0
  605. package/dist/sync/state-sync.js +396 -0
  606. package/dist/sync/state-sync.js.map +1 -0
  607. package/dist/sync/vector-clock.d.ts +144 -0
  608. package/dist/sync/vector-clock.d.ts.map +1 -0
  609. package/dist/sync/vector-clock.js +266 -0
  610. package/dist/sync/vector-clock.js.map +1 -0
  611. package/dist/types/index.d.ts +224 -0
  612. package/dist/types/index.d.ts.map +1 -0
  613. package/dist/types/index.js +24 -0
  614. package/dist/types/index.js.map +1 -0
  615. package/dist/utils/hash.d.ts +39 -0
  616. package/dist/utils/hash.d.ts.map +1 -0
  617. package/dist/utils/hash.js +56 -0
  618. package/dist/utils/hash.js.map +1 -0
  619. package/dist/utils/index.d.ts +26 -0
  620. package/dist/utils/index.d.ts.map +1 -0
  621. package/dist/utils/index.js +50 -0
  622. package/dist/utils/index.js.map +1 -0
  623. package/dist/utils/logger.d.ts +88 -0
  624. package/dist/utils/logger.d.ts.map +1 -0
  625. package/dist/utils/logger.js +157 -0
  626. package/dist/utils/logger.js.map +1 -0
  627. package/dist/utils/metrics.d.ts +232 -0
  628. package/dist/utils/metrics.d.ts.map +1 -0
  629. package/dist/utils/metrics.js +387 -0
  630. package/dist/utils/metrics.js.map +1 -0
  631. package/dist/utils/similarity.d.ts +64 -0
  632. package/dist/utils/similarity.d.ts.map +1 -0
  633. package/dist/utils/similarity.js +151 -0
  634. package/dist/utils/similarity.js.map +1 -0
  635. package/dist/utils/uuid.d.ts +23 -0
  636. package/dist/utils/uuid.d.ts.map +1 -0
  637. package/dist/utils/uuid.js +29 -0
  638. package/dist/utils/uuid.js.map +1 -0
  639. package/package.json +72 -0
@@ -0,0 +1,1142 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * NMT CLI - Direct Core Engine Access
4
+ * Database-style command-line interface for Neuron Merkle Tree system
5
+ *
6
+ * All commands operate directly on the local DB without requiring a running server.
7
+ */
8
+ import { parseArgs } from 'node:util';
9
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, statSync } from 'node:fs';
10
+ import { resolve, basename } from 'node:path';
11
+ import { randomBytes } from 'node:crypto';
12
+ import * as dotenv from 'dotenv';
13
+ dotenv.config();
14
+ const VERSION = '1.0.0';
15
+ const HELP = `
16
+ NMT - Neuron Merkle Tree CLI v${VERSION}
17
+ 확률적 존재론 기반 지식 그래프 시스템
18
+
19
+ Usage: nmt <command> [options]
20
+
21
+ Core Commands:
22
+ init Initialize NMT data directory
23
+ dashboard Start lightweight web admin dashboard
24
+
25
+ ingest <file> Ingest a text file into the knowledge graph
26
+ ingest-text <text> Ingest text directly from command line
27
+ search <query> Semantic search across neurons
28
+ verify [id] Verify neuron integrity (all if no id given)
29
+ list List stored neurons
30
+ get <id> Get neuron details with content
31
+ stats Show system statistics with real DB counts
32
+
33
+ Probabilistic Ontology (확률적 존재론):
34
+ infer <sub> Bidirectional inference (forward|backward|causal|bidirectional)
35
+ attractor <sub> Future attractor management (create|list|influence|path)
36
+ learn <sub> 4-stage learning (interaction|patterns|outcomes|stats)
37
+ dimension <sub> Dynamic dimensions (list|expand|analyze|stats)
38
+ sync <sub> State synchronization (status|changes|export|import|peers)
39
+
40
+ benchmark Run performance benchmarks
41
+
42
+ Options:
43
+ -h, --help Show this help message
44
+ -v, --version Show version number
45
+ -d, --data-dir Data directory (default: ./data)
46
+ -p, --port Dashboard port (default: 3000)
47
+ -k, --top-k Number of results (default: 10)
48
+ -t, --tags Comma-separated tags for ingest
49
+ -s, --source-type Source type label (default: cli)
50
+ --content Include full content in search results
51
+ --json Output as JSON
52
+ --depth Inference depth (default: 3)
53
+ --strength Attractor strength (default: 1.0)
54
+
55
+ Environment Variables:
56
+ NMT_DATA_DIR Data directory path
57
+
58
+ Examples:
59
+ nmt init
60
+ nmt dashboard -p 4000
61
+ nmt ingest ./docs/article.txt -t "ml,tutorial"
62
+ nmt search "machine learning" -k 5
63
+ nmt stats
64
+
65
+ # Probabilistic Ontology
66
+ nmt infer forward <neuron-id> # Forward causation
67
+ nmt infer backward <neuron-id> # Abductive reasoning
68
+ nmt attractor create "goal" --strength 0.8
69
+ nmt learn interaction --input "..." --output "..."
70
+ nmt dimension expand --name "concept" --category "custom"
71
+ `;
72
+ function parseConfig() {
73
+ const { values, positionals } = parseArgs({
74
+ allowPositionals: true,
75
+ options: {
76
+ help: { type: 'boolean', short: 'h' },
77
+ version: { type: 'boolean', short: 'v' },
78
+ 'data-dir': { type: 'string', short: 'd', default: './data' },
79
+ port: { type: 'string', short: 'p', default: '3000' },
80
+ 'top-k': { type: 'string', short: 'k', default: '10' },
81
+ tags: { type: 'string', short: 't' },
82
+ 'source-type': { type: 'string', short: 's', default: 'cli' },
83
+ content: { type: 'boolean', default: false },
84
+ json: { type: 'boolean', default: false },
85
+ },
86
+ });
87
+ if (values.help) {
88
+ console.log(HELP);
89
+ process.exit(0);
90
+ }
91
+ if (values.version) {
92
+ console.log(VERSION);
93
+ process.exit(0);
94
+ }
95
+ const command = positionals[0] || 'help';
96
+ const args = positionals.slice(1);
97
+ const tagsStr = values.tags;
98
+ return {
99
+ command,
100
+ args,
101
+ config: {
102
+ dataDir: values['data-dir'],
103
+ port: parseInt(values.port, 10),
104
+ topK: parseInt(values['top-k'], 10),
105
+ json: values.json,
106
+ tags: tagsStr ? tagsStr.split(',').map(t => t.trim()).filter(Boolean) : [],
107
+ sourceType: values['source-type'],
108
+ includeContent: values.content,
109
+ },
110
+ };
111
+ }
112
+ let _ctx = null;
113
+ async function bootstrap(config) {
114
+ if (_ctx)
115
+ return _ctx;
116
+ const { ChunkEngine } = await import('../src/core/chunk-engine.js');
117
+ const { MerkleEngine } = await import('../src/core/merkle-engine.js');
118
+ const { HNSWIndex } = await import('../src/core/hnsw-index.js');
119
+ const { NeuronGraphManager } = await import('../src/core/neuron-graph.js');
120
+ const { createStores, getStorageConfig } = await import('../src/storage/index.js');
121
+ const { IngestionService } = await import('../src/services/ingestion.js');
122
+ const { QueryService } = await import('../src/services/query.js');
123
+ const { VerificationService } = await import('../src/services/verify.js');
124
+ // Ensure data directory exists
125
+ const dataDir = resolve(config.dataDir);
126
+ if (!existsSync(dataDir)) {
127
+ mkdirSync(dataDir, { recursive: true });
128
+ }
129
+ // Initialize stores based on env config
130
+ const storageConfig = getStorageConfig();
131
+ storageConfig.dataDir = config.dataDir;
132
+ const { chunkStore, neuronStore, indexStore, probabilisticStore } = createStores(storageConfig);
133
+ await chunkStore.init();
134
+ await neuronStore.init();
135
+ await indexStore.init();
136
+ await probabilisticStore.init();
137
+ // Core engines
138
+ const chunkEngine = new ChunkEngine();
139
+ const merkleEngine = new MerkleEngine();
140
+ // Load existing HNSW index or create new
141
+ // IndexStore.load() returns HNSWIndex instance directly (handles deserialization internally)
142
+ let hnswIndex;
143
+ try {
144
+ const loaded = await indexStore.load('main');
145
+ hnswIndex = loaded ?? new HNSWIndex();
146
+ }
147
+ catch {
148
+ hnswIndex = new HNSWIndex();
149
+ }
150
+ // Graph manager (with lower threshold for auto-connect)
151
+ const graphManager = new NeuronGraphManager({
152
+ neuronStore,
153
+ hnswIndex,
154
+ semanticThreshold: 0.3, // Lower threshold for more connections
155
+ });
156
+ // Embedding Provider (Xenova)
157
+ const { getEmbeddingProvider } = await import('../src/services/embedding-provider.js');
158
+ const embeddingProvider = await getEmbeddingProvider();
159
+ // Services
160
+ const ingestionService = new IngestionService(chunkEngine, merkleEngine, graphManager, chunkStore, embeddingProvider);
161
+ const queryService = new QueryService(graphManager, merkleEngine, chunkStore, neuronStore);
162
+ const verifyService = new VerificationService(merkleEngine, chunkStore, neuronStore);
163
+ // Probabilistic Ontology Extensions (확률적 존재론)
164
+ let inferenceEngine;
165
+ let attractorModel;
166
+ let learningSystem;
167
+ let neuronManager;
168
+ let embeddingManager;
169
+ try {
170
+ const { BidirectionalInferenceEngine } = await import('../src/core/bidirectional-inference.js');
171
+ const { AttractorModel } = await import('../src/core/attractor-model.js');
172
+ const { FourStageLearningSystem } = await import('../src/services/four-stage-learning.js');
173
+ const { ProbabilisticNeuronManager } = await import('../src/core/probabilistic-neuron.js');
174
+ const { DynamicEmbeddingManager } = await import('../src/core/dynamic-embedding.js');
175
+ inferenceEngine = new BidirectionalInferenceEngine({ neuronStore, graphManager });
176
+ attractorModel = new AttractorModel({ neuronStore });
177
+ learningSystem = new FourStageLearningSystem({ neuronStore, graphManager });
178
+ neuronManager = new ProbabilisticNeuronManager({ neuronStore });
179
+ embeddingManager = new DynamicEmbeddingManager({ baseDimension: 384 });
180
+ // Load saved state from disk
181
+ const savedStates = await probabilisticStore.loadAll();
182
+ if (savedStates.attractors && attractorModel.load) {
183
+ attractorModel.load(savedStates.attractors);
184
+ }
185
+ if (savedStates.neurons && neuronManager.load) {
186
+ neuronManager.load(savedStates.neurons);
187
+ }
188
+ if (savedStates.dimensions && embeddingManager.loadDimensions) {
189
+ embeddingManager.loadDimensions(savedStates.dimensions);
190
+ }
191
+ }
192
+ catch (err) {
193
+ // Probabilistic modules are optional - graceful degradation
194
+ console.warn(`Note: Probabilistic extensions not fully loaded: ${err.message}`);
195
+ }
196
+ // State Synchronization (상태 동기화)
197
+ let syncManager;
198
+ let changeJournal;
199
+ let eventBus;
200
+ let journalDb;
201
+ try {
202
+ const { EventBus } = await import('../src/events/event-bus.js');
203
+ const { ChangeJournal } = await import('../src/sync/change-journal.js');
204
+ const { StateSyncManager } = await import('../src/sync/state-sync.js');
205
+ const { Level } = await import('level');
206
+ eventBus = new EventBus();
207
+ // Create a separate LevelDB for sync journal
208
+ const journalDbPath = resolve(config.dataDir, 'journal');
209
+ if (!existsSync(journalDbPath)) {
210
+ mkdirSync(journalDbPath, { recursive: true });
211
+ }
212
+ journalDb = new Level(journalDbPath, { valueEncoding: 'json' });
213
+ await journalDb.open();
214
+ // Generate crypto-safe unique node ID to avoid collisions
215
+ const nodeId = `node-${Date.now().toString(36)}-${randomBytes(4).toString('hex')}`;
216
+ changeJournal = new ChangeJournal(journalDb, nodeId);
217
+ syncManager = new StateSyncManager({
218
+ nodeId,
219
+ journal: changeJournal,
220
+ merkleEngine,
221
+ eventBus,
222
+ });
223
+ await syncManager.init();
224
+ }
225
+ catch (err) {
226
+ // Sync modules are optional - graceful degradation
227
+ console.warn(`Note: Sync extensions not fully loaded: ${err.message}`);
228
+ }
229
+ _ctx = {
230
+ chunkEngine, merkleEngine, hnswIndex, graphManager,
231
+ chunkStore, neuronStore, indexStore, probabilisticStore,
232
+ ingestionService, queryService, verifyService,
233
+ // Probabilistic extensions
234
+ inferenceEngine, attractorModel, learningSystem,
235
+ neuronManager, embeddingManager,
236
+ // Sync extensions
237
+ syncManager, changeJournal, eventBus, journalDb,
238
+ };
239
+ return _ctx;
240
+ }
241
+ async function shutdown() {
242
+ if (!_ctx)
243
+ return;
244
+ try {
245
+ // Save HNSW index
246
+ await _ctx.indexStore.save('main', _ctx.hnswIndex);
247
+ // Save probabilistic module states
248
+ if (_ctx.probabilisticStore) {
249
+ const states = {};
250
+ if (_ctx.attractorModel?.serialize) {
251
+ states.attractors = _ctx.attractorModel.serialize();
252
+ }
253
+ if (_ctx.neuronManager?.serialize) {
254
+ states.neurons = _ctx.neuronManager.serialize();
255
+ }
256
+ if (_ctx.embeddingManager?.serializeDimensions) {
257
+ states.dimensions = _ctx.embeddingManager.serializeDimensions();
258
+ }
259
+ await _ctx.probabilisticStore.saveAll(states);
260
+ await _ctx.probabilisticStore.close();
261
+ }
262
+ await _ctx.chunkStore.close();
263
+ await _ctx.neuronStore.close();
264
+ await _ctx.indexStore.close();
265
+ // Close journal DB if initialized
266
+ if (_ctx.journalDb) {
267
+ await _ctx.journalDb.close();
268
+ }
269
+ }
270
+ catch {
271
+ // Ignore shutdown errors
272
+ }
273
+ _ctx = null;
274
+ }
275
+ // ============== Output Helpers ==============
276
+ function log(message, config, data) {
277
+ if (config.json && data) {
278
+ console.log(JSON.stringify(data, null, 2));
279
+ }
280
+ else {
281
+ console.log(message);
282
+ }
283
+ }
284
+ function truncate(text, maxLen = 200) {
285
+ if (text.length <= maxLen)
286
+ return text;
287
+ return text.substring(0, maxLen) + '...';
288
+ }
289
+ function formatBytes(bytes) {
290
+ if (bytes < 1024)
291
+ return `${bytes} B`;
292
+ if (bytes < 1024 * 1024)
293
+ return `${(bytes / 1024).toFixed(1)} KB`;
294
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
295
+ }
296
+ function formatDate(iso) {
297
+ try {
298
+ return new Date(iso).toLocaleString();
299
+ }
300
+ catch {
301
+ return iso;
302
+ }
303
+ }
304
+ // ============== Commands: Setup ==============
305
+ async function cmdInit(config) {
306
+ const dirs = [
307
+ config.dataDir,
308
+ `${config.dataDir}/chunks`,
309
+ `${config.dataDir}/neurons`,
310
+ `${config.dataDir}/index`,
311
+ `${config.dataDir}/models`,
312
+ ];
313
+ for (const dir of dirs) {
314
+ const fullPath = resolve(dir);
315
+ if (!existsSync(fullPath)) {
316
+ mkdirSync(fullPath, { recursive: true });
317
+ log(` Created: ${fullPath}`, config);
318
+ }
319
+ else {
320
+ log(` Exists: ${fullPath}`, config);
321
+ }
322
+ }
323
+ const configPath = resolve(config.dataDir, 'config.json');
324
+ if (!existsSync(configPath)) {
325
+ const defaultConfig = {
326
+ version: VERSION,
327
+ hnsw: { M: 16, efConstruction: 200, efSearch: 50 },
328
+ chunking: { size: 4096, overlap: 256 },
329
+ embedding: { model: 'Xenova/all-MiniLM-L6-v2', dimension: 384 },
330
+ };
331
+ writeFileSync(configPath, JSON.stringify(defaultConfig, null, 2));
332
+ log(` Created config: ${configPath}`, config);
333
+ }
334
+ log('\n NMT initialized successfully!', config, { status: 'success', dataDir: config.dataDir });
335
+ }
336
+ async function cmdDashboard(config) {
337
+ log(`Starting NMT Dashboard...`, config);
338
+ log(`Data directory: ${resolve(config.dataDir)}`, config);
339
+ try {
340
+ const { CLIDashboardServer } = await import('../src/api/cli-server.js');
341
+ const server = new CLIDashboardServer({
342
+ port: config.port,
343
+ dataDir: config.dataDir,
344
+ });
345
+ const shutdown = async () => {
346
+ console.log('\nShutting down dashboard...');
347
+ await server.stop();
348
+ process.exit(0);
349
+ };
350
+ process.on('SIGINT', shutdown);
351
+ process.on('SIGTERM', shutdown);
352
+ await server.start();
353
+ log(`\nPress Ctrl+C to stop\n`, config);
354
+ }
355
+ catch (error) {
356
+ console.error('Failed to start dashboard:', error.message);
357
+ process.exit(1);
358
+ }
359
+ }
360
+ // ============== Commands: Core DB Operations ==============
361
+ async function cmdIngest(args, config) {
362
+ if (args.length === 0) {
363
+ console.error('Error: No file specified');
364
+ console.log('Usage: nmt ingest <file> [-t tags] [-s source-type]');
365
+ process.exit(1);
366
+ }
367
+ const filePath = resolve(args[0]);
368
+ if (!existsSync(filePath)) {
369
+ console.error(`Error: File not found: ${filePath}`);
370
+ process.exit(1);
371
+ }
372
+ const ctx = await bootstrap(config);
373
+ const fileName = basename(filePath);
374
+ const fileSize = statSync(filePath).size;
375
+ log(`Ingesting: ${fileName} (${formatBytes(fileSize)})`, config);
376
+ try {
377
+ const content = readFileSync(filePath, 'utf-8');
378
+ const tags = config.tags.length > 0 ? config.tags : [fileName];
379
+ const neuron = await ctx.ingestionService.ingestText(content, {
380
+ sourceType: config.sourceType || 'file',
381
+ tags,
382
+ autoConnect: true,
383
+ });
384
+ if (config.json) {
385
+ log('', config, {
386
+ status: 'success',
387
+ neuronId: neuron.id,
388
+ merkleRoot: neuron.merkleRoot,
389
+ chunks: neuron.chunkHashes.length,
390
+ tags: neuron.metadata.tags,
391
+ sourceType: neuron.metadata.sourceType,
392
+ });
393
+ }
394
+ else {
395
+ log('', config);
396
+ log(` Neuron ID: ${neuron.id}`, config);
397
+ log(` Merkle Root: ${neuron.merkleRoot.substring(0, 16)}...`, config);
398
+ log(` Chunks: ${neuron.chunkHashes.length}`, config);
399
+ log(` Tags: ${neuron.metadata.tags.join(', ')}`, config);
400
+ log(` Source: ${neuron.metadata.sourceType}`, config);
401
+ log(`\n Ingested successfully!`, config);
402
+ }
403
+ await shutdown();
404
+ }
405
+ catch (error) {
406
+ await shutdown();
407
+ console.error('Ingestion failed:', error.message);
408
+ process.exit(1);
409
+ }
410
+ }
411
+ async function cmdIngestText(args, config) {
412
+ if (args.length === 0) {
413
+ console.error('Error: No text specified');
414
+ console.log('Usage: nmt ingest-text "your text here" [-t tags]');
415
+ process.exit(1);
416
+ }
417
+ const text = args.join(' ');
418
+ const ctx = await bootstrap(config);
419
+ log(`Ingesting text (${formatBytes(Buffer.byteLength(text))})...`, config);
420
+ try {
421
+ const neuron = await ctx.ingestionService.ingestText(text, {
422
+ sourceType: config.sourceType || 'text',
423
+ tags: config.tags,
424
+ autoConnect: true,
425
+ });
426
+ if (config.json) {
427
+ log('', config, {
428
+ status: 'success',
429
+ neuronId: neuron.id,
430
+ merkleRoot: neuron.merkleRoot,
431
+ chunks: neuron.chunkHashes.length,
432
+ tags: neuron.metadata.tags,
433
+ });
434
+ }
435
+ else {
436
+ log('', config);
437
+ log(` Neuron ID: ${neuron.id}`, config);
438
+ log(` Merkle Root: ${neuron.merkleRoot.substring(0, 16)}...`, config);
439
+ log(` Chunks: ${neuron.chunkHashes.length}`, config);
440
+ log(` Tags: ${neuron.metadata.tags.join(', ') || '(none)'}`, config);
441
+ log(`\n Ingested successfully!`, config);
442
+ }
443
+ await shutdown();
444
+ }
445
+ catch (error) {
446
+ await shutdown();
447
+ console.error('Ingestion failed:', error.message);
448
+ process.exit(1);
449
+ }
450
+ }
451
+ async function cmdSearch(args, config) {
452
+ if (args.length === 0) {
453
+ console.error('Error: No query specified');
454
+ console.log('Usage: nmt search <query> [-k top-k] [--content]');
455
+ process.exit(1);
456
+ }
457
+ const query = args.join(' ');
458
+ const ctx = await bootstrap(config);
459
+ log(`Searching: "${query}" (top ${config.topK})`, config);
460
+ log('', config);
461
+ try {
462
+ const results = await ctx.queryService.search(query, {
463
+ k: config.topK,
464
+ includeContent: config.includeContent,
465
+ });
466
+ if (config.json) {
467
+ log('', config, {
468
+ query,
469
+ total: results.length,
470
+ results: results.map((r) => ({
471
+ neuronId: r.neuron.id,
472
+ score: r.score,
473
+ tags: r.neuron.metadata.tags,
474
+ sourceType: r.neuron.metadata.sourceType,
475
+ ...(r.content ? { content: r.content } : {}),
476
+ })),
477
+ });
478
+ }
479
+ else {
480
+ if (results.length === 0) {
481
+ log(' No results found.', config);
482
+ }
483
+ else {
484
+ for (let i = 0; i < results.length; i++) {
485
+ const r = results[i];
486
+ const score = r.score.toFixed(4);
487
+ log(` #${i + 1} [${score}] ${r.neuron.id}`, config);
488
+ log(` Tags: ${r.neuron.metadata.tags.join(', ') || '(none)'} | Source: ${r.neuron.metadata.sourceType}`, config);
489
+ if (r.content) {
490
+ log(` Content: ${truncate(r.content.replace(/\n/g, ' '), 150)}`, config);
491
+ }
492
+ log('', config);
493
+ }
494
+ }
495
+ log(`Found ${results.length} result(s).`, config);
496
+ }
497
+ await shutdown();
498
+ }
499
+ catch (error) {
500
+ await shutdown();
501
+ console.error('Search failed:', error.message);
502
+ process.exit(1);
503
+ }
504
+ }
505
+ async function cmdVerify(args, config) {
506
+ const ctx = await bootstrap(config);
507
+ try {
508
+ if (args.length === 0) {
509
+ // Verify ALL neurons
510
+ log('Verifying all neurons...', config);
511
+ log('', config);
512
+ const result = await ctx.verifyService.verifyAll();
513
+ if (config.json) {
514
+ log('', config, {
515
+ total: result.total,
516
+ valid: result.valid,
517
+ invalid: result.invalid,
518
+ results: result.results.map((r) => ({
519
+ neuronId: r.neuronId,
520
+ valid: r.valid,
521
+ errors: r.errors,
522
+ })),
523
+ });
524
+ }
525
+ else {
526
+ if (result.total === 0) {
527
+ log(' No neurons found. Ingest data first.', config);
528
+ }
529
+ else {
530
+ for (const r of result.results) {
531
+ const status = r.valid ? '[OK]' : '[FAIL]';
532
+ log(` ${status} ${r.neuronId}`, config);
533
+ if (!r.valid) {
534
+ for (const err of r.errors) {
535
+ log(` ${err}`, config);
536
+ }
537
+ }
538
+ }
539
+ log('', config);
540
+ log(` Total: ${result.total} | Valid: ${result.valid} | Invalid: ${result.invalid}`, config);
541
+ if (result.invalid === 0) {
542
+ log('\n All neurons verified successfully!', config);
543
+ }
544
+ else {
545
+ log(`\n ${result.invalid} neuron(s) failed verification.`, config);
546
+ }
547
+ }
548
+ }
549
+ }
550
+ else {
551
+ // Verify single neuron
552
+ const id = args[0];
553
+ log(`Verifying neuron: ${id}`, config);
554
+ log('', config);
555
+ const result = await ctx.verifyService.verifyNeuron(id);
556
+ if (config.json) {
557
+ log('', config, result);
558
+ }
559
+ else {
560
+ const d = result.details;
561
+ log(` Chunks: ${d.chunksVerified}/${d.chunksVerified + d.chunksFailed} verified ${d.chunksFailed === 0 ? '[OK]' : '[FAIL]'}`, config);
562
+ log(` Merkle: ${d.merkleValid ? 'Valid [OK]' : 'Invalid [FAIL]'}`, config);
563
+ log(` Embedding: ${d.embeddingValid ? 'Valid [OK]' : 'Invalid [FAIL]'}`, config);
564
+ if (result.errors.length > 0) {
565
+ log('', config);
566
+ log(' Errors:', config);
567
+ for (const err of result.errors) {
568
+ log(` - ${err}`, config);
569
+ }
570
+ }
571
+ log('', config);
572
+ log(` Result: ${result.valid ? 'INTEGRITY OK' : 'INTEGRITY FAILED'}`, config);
573
+ }
574
+ }
575
+ await shutdown();
576
+ }
577
+ catch (error) {
578
+ await shutdown();
579
+ console.error('Verification failed:', error.message);
580
+ process.exit(1);
581
+ }
582
+ }
583
+ async function cmdList(config) {
584
+ const ctx = await bootstrap(config);
585
+ try {
586
+ const allIds = await ctx.neuronStore.getAllNeuronIds();
587
+ const total = allIds.length;
588
+ const limit = Math.min(config.topK, total);
589
+ const ids = allIds.slice(0, limit);
590
+ if (config.json) {
591
+ const neurons = [];
592
+ for (const id of ids) {
593
+ const n = await ctx.neuronStore.getNeuron(id);
594
+ if (n)
595
+ neurons.push({
596
+ id: n.id,
597
+ merkleRoot: n.merkleRoot,
598
+ chunks: n.chunkHashes.length,
599
+ sourceType: n.metadata.sourceType,
600
+ tags: n.metadata.tags,
601
+ createdAt: n.metadata.createdAt,
602
+ accessCount: n.metadata.accessCount,
603
+ });
604
+ }
605
+ log('', config, { total, showing: limit, neurons });
606
+ }
607
+ else {
608
+ log(`Neurons (${total} total${total > limit ? `, showing ${limit}` : ''})`, config);
609
+ log('='.repeat(80), config);
610
+ if (total === 0) {
611
+ log('\n No neurons found. Ingest data first.\n', config);
612
+ }
613
+ else {
614
+ log('', config);
615
+ for (const id of ids) {
616
+ const n = await ctx.neuronStore.getNeuron(id);
617
+ if (!n)
618
+ continue;
619
+ const tags = n.metadata.tags.join(', ') || '-';
620
+ const created = formatDate(n.metadata.createdAt);
621
+ log(` ${n.id}`, config);
622
+ log(` Type: ${n.metadata.sourceType} | Tags: ${tags} | Chunks: ${n.chunkHashes.length} | Created: ${created}`, config);
623
+ log('', config);
624
+ }
625
+ if (total > limit) {
626
+ log(` ... and ${total - limit} more. Use -k ${total} to show all.`, config);
627
+ log('', config);
628
+ }
629
+ }
630
+ }
631
+ await shutdown();
632
+ }
633
+ catch (error) {
634
+ await shutdown();
635
+ console.error('List failed:', error.message);
636
+ process.exit(1);
637
+ }
638
+ }
639
+ async function cmdGet(args, config) {
640
+ if (args.length === 0) {
641
+ console.error('Error: No neuron ID specified');
642
+ console.log('Usage: nmt get <id>');
643
+ process.exit(1);
644
+ }
645
+ const id = args[0];
646
+ const ctx = await bootstrap(config);
647
+ try {
648
+ const neuron = await ctx.neuronStore.getNeuron(id);
649
+ if (!neuron) {
650
+ console.error(`Neuron not found: ${id}`);
651
+ await shutdown();
652
+ process.exit(1);
653
+ }
654
+ // Reconstruct content from chunks
655
+ let content = '';
656
+ try {
657
+ content = await ctx.queryService.getContent(neuron);
658
+ }
659
+ catch {
660
+ content = '(unable to reconstruct content)';
661
+ }
662
+ // Get synapse counts
663
+ let outCount = 0;
664
+ let inCount = 0;
665
+ try {
666
+ const outgoing = await ctx.neuronStore.getOutgoingSynapses(neuron.id);
667
+ const incoming = await ctx.neuronStore.getIncomingSynapses(neuron.id);
668
+ outCount = outgoing?.length ?? 0;
669
+ inCount = incoming?.length ?? 0;
670
+ }
671
+ catch {
672
+ // Synapse info not available
673
+ }
674
+ if (config.json) {
675
+ log('', config, {
676
+ id: neuron.id,
677
+ merkleRoot: neuron.merkleRoot,
678
+ chunkHashes: neuron.chunkHashes,
679
+ sourceType: neuron.metadata.sourceType,
680
+ tags: neuron.metadata.tags,
681
+ createdAt: neuron.metadata.createdAt,
682
+ updatedAt: neuron.metadata.updatedAt,
683
+ lastAccessed: neuron.metadata.lastAccessed,
684
+ accessCount: neuron.metadata.accessCount,
685
+ outgoingSynapses: outCount,
686
+ incomingSynapses: inCount,
687
+ content,
688
+ });
689
+ }
690
+ else {
691
+ log(`Neuron: ${neuron.id}`, config);
692
+ log('='.repeat(60), config);
693
+ log(` Merkle Root: ${neuron.merkleRoot}`, config);
694
+ log(` Source Type: ${neuron.metadata.sourceType}`, config);
695
+ log(` Tags: ${neuron.metadata.tags.join(', ') || '(none)'}`, config);
696
+ log(` Chunks: ${neuron.chunkHashes.length}`, config);
697
+ log(` Synapses: ${outCount} outgoing, ${inCount} incoming`, config);
698
+ log(` Created: ${formatDate(neuron.metadata.createdAt)}`, config);
699
+ log(` Last Access: ${formatDate(neuron.metadata.lastAccessed)}`, config);
700
+ log(` Access Count: ${neuron.metadata.accessCount}`, config);
701
+ log('', config);
702
+ log('Content:', config);
703
+ log('-'.repeat(60), config);
704
+ log(content, config);
705
+ }
706
+ await shutdown();
707
+ }
708
+ catch (error) {
709
+ await shutdown();
710
+ console.error('Get failed:', error.message);
711
+ process.exit(1);
712
+ }
713
+ }
714
+ async function cmdStats(config) {
715
+ const ctx = await bootstrap(config);
716
+ try {
717
+ // Gather real DB counts
718
+ const neuronCount = await ctx.neuronStore.getNeuronCount();
719
+ const synapseCount = await ctx.neuronStore.getSynapseCount();
720
+ const chunkStats = await ctx.chunkStore.getStats();
721
+ const hnswStats = ctx.hnswIndex.getStats();
722
+ const { getStorageConfig } = await import('../src/storage/index.js');
723
+ const storageConfig = getStorageConfig();
724
+ const statsData = {
725
+ storage: {
726
+ backend: storageConfig.backend,
727
+ dataDir: resolve(config.dataDir),
728
+ },
729
+ neurons: neuronCount,
730
+ synapses: synapseCount,
731
+ chunks: {
732
+ total: chunkStats.totalChunks,
733
+ totalSize: chunkStats.totalSize,
734
+ avgSize: chunkStats.avgChunkSize,
735
+ },
736
+ hnsw: hnswStats,
737
+ };
738
+ if (config.json) {
739
+ log('', config, statsData);
740
+ }
741
+ else {
742
+ log('NMT System Statistics', config);
743
+ log('=====================\n', config);
744
+ log(` Storage Backend: ${storageConfig.backend}`, config);
745
+ log(` Data Directory: ${resolve(config.dataDir)}`, config);
746
+ log('', config);
747
+ log(` Neurons: ${neuronCount}`, config);
748
+ log(` Synapses: ${synapseCount}`, config);
749
+ log(` Chunks: ${chunkStats.totalChunks}`, config);
750
+ log(` Total Data Size: ${formatBytes(chunkStats.totalSize)}`, config);
751
+ if (chunkStats.totalChunks > 0) {
752
+ log(` Avg Chunk Size: ${formatBytes(chunkStats.avgChunkSize)}`, config);
753
+ }
754
+ log('', config);
755
+ log(` HNSW Vectors: ${hnswStats.totalNodes}`, config);
756
+ if (hnswStats.maxLayer >= 0) {
757
+ log(` HNSW Layers: ${hnswStats.maxLayer + 1}`, config);
758
+ }
759
+ }
760
+ await shutdown();
761
+ }
762
+ catch (error) {
763
+ await shutdown();
764
+ console.error('Stats failed:', error.message);
765
+ process.exit(1);
766
+ }
767
+ }
768
+ // ============== Commands: Graph Management ==============
769
+ async function cmdConnect(_args, config) {
770
+ const ctx = await bootstrap(config);
771
+ try {
772
+ // Get all neuron IDs
773
+ const neuronIds = await ctx.neuronStore.getAllNeuronIds();
774
+ if (neuronIds.length < 2) {
775
+ console.log('Need at least 2 neurons to create connections.');
776
+ await shutdown();
777
+ return;
778
+ }
779
+ console.log(`Scanning ${neuronIds.length} neurons for connections...`);
780
+ console.log(`Threshold: 0.3`);
781
+ console.log('');
782
+ let totalConnections = 0;
783
+ for (const neuronId of neuronIds) {
784
+ const synapses = await ctx.graphManager.autoConnect(neuronId, 0.3);
785
+ if (synapses.length > 0) {
786
+ console.log(` ${neuronId.substring(0, 8)}... → ${synapses.length} new connections`);
787
+ totalConnections += synapses.length;
788
+ }
789
+ }
790
+ console.log('');
791
+ console.log(`Total new connections: ${totalConnections}`);
792
+ // Show updated stats
793
+ const synapseCount = await ctx.neuronStore.getSynapseCount();
794
+ console.log(`Total synapses now: ${synapseCount}`);
795
+ await shutdown();
796
+ }
797
+ catch (error) {
798
+ await shutdown();
799
+ console.error('Connect failed:', error.message);
800
+ process.exit(1);
801
+ }
802
+ }
803
+ // ============== Commands: Benchmarks & Backup ==============
804
+ async function cmdBenchmark(config) {
805
+ log('Running NMT Benchmarks...', config);
806
+ log('========================\n', config);
807
+ const results = {};
808
+ // HNSW Benchmark
809
+ log('1. HNSW Index Benchmark', config);
810
+ const { HNSWIndex } = await import('../src/core/hnsw-index.js');
811
+ const hnsw = new HNSWIndex();
812
+ const dim = 384;
813
+ const count = 1000;
814
+ const embeddings = [];
815
+ for (let i = 0; i < count; i++) {
816
+ const emb = new Float32Array(dim);
817
+ for (let j = 0; j < dim; j++)
818
+ emb[j] = Math.random() - 0.5;
819
+ embeddings.push(emb);
820
+ }
821
+ const insertStart = Date.now();
822
+ for (let i = 0; i < count; i++) {
823
+ hnsw.insert(`id${i}`, embeddings[i]);
824
+ }
825
+ results.insertMs = Date.now() - insertStart;
826
+ log(` Insert ${count} vectors: ${results.insertMs}ms (${(count / results.insertMs * 1000).toFixed(0)} vec/s)`, config);
827
+ const searchStart = Date.now();
828
+ const searches = 100;
829
+ for (let i = 0; i < searches; i++) {
830
+ hnsw.search(embeddings[i % count], 10);
831
+ }
832
+ results.searchMs = Date.now() - searchStart;
833
+ log(` Search ${searches} queries: ${results.searchMs}ms (${(searches / results.searchMs * 1000).toFixed(0)} q/s)`, config);
834
+ // Merkle Benchmark
835
+ log('\n2. Merkle Tree Benchmark', config);
836
+ const { MerkleEngine } = await import('../src/core/merkle-engine.js');
837
+ const merkle = new MerkleEngine();
838
+ const leaves = Array.from({ length: 1000 }, (_, i) => `leaf${i}`);
839
+ const treeStart = Date.now();
840
+ const tree = merkle.buildTree(leaves);
841
+ results.treeBuildMs = Date.now() - treeStart;
842
+ log(` Build tree (${leaves.length} leaves): ${results.treeBuildMs}ms`, config);
843
+ const proofStart = Date.now();
844
+ for (let i = 0; i < 100; i++) {
845
+ merkle.generateProof(tree, i);
846
+ }
847
+ results.proofGenMs = Date.now() - proofStart;
848
+ log(` Generate 100 proofs: ${results.proofGenMs}ms`, config);
849
+ // Summary
850
+ log('\nBenchmark Summary', config, results);
851
+ log('====================', config);
852
+ log(`HNSW Insert: ${(count / results.insertMs * 1000).toFixed(0)} vectors/sec`, config);
853
+ log(`HNSW Search: ${(searches / results.searchMs * 1000).toFixed(0)} queries/sec`, config);
854
+ log(`Merkle Build: ${results.treeBuildMs}ms for ${leaves.length} leaves`, config);
855
+ log(`Proof Gen: ${(100 / results.proofGenMs * 1000).toFixed(0)} proofs/sec`, config);
856
+ }
857
+ // ============== Probabilistic Ontology Command Dispatchers ==============
858
+ async function cmdInferDispatch(args, config) {
859
+ if (args.length === 0) {
860
+ console.log('Usage: nmt infer <subcommand> [options]');
861
+ console.log('Subcommands: forward, backward, causal, bidirectional');
862
+ return;
863
+ }
864
+ const ctx = await bootstrap(config);
865
+ if (!ctx.inferenceEngine) {
866
+ console.error('Error: Inference engine not available');
867
+ await shutdown();
868
+ process.exit(1);
869
+ }
870
+ try {
871
+ const { cmdInfer } = await import('../src/cli/probabilistic-commands.js');
872
+ const result = await cmdInfer(args, config, {
873
+ neuronStore: ctx.neuronStore,
874
+ inferenceEngine: ctx.inferenceEngine,
875
+ });
876
+ if (config.json) {
877
+ console.log(JSON.stringify(result, null, 2));
878
+ }
879
+ else if (result.success) {
880
+ console.log(result.data);
881
+ }
882
+ else {
883
+ console.error(result.error);
884
+ }
885
+ await shutdown();
886
+ }
887
+ catch (error) {
888
+ await shutdown();
889
+ console.error('Infer failed:', error.message);
890
+ process.exit(1);
891
+ }
892
+ }
893
+ async function cmdAttractorDispatch(args, config) {
894
+ if (args.length === 0) {
895
+ console.log('Usage: nmt attractor <subcommand> [options]');
896
+ console.log('Subcommands: create, list, influence, path, activate, deactivate');
897
+ return;
898
+ }
899
+ const ctx = await bootstrap(config);
900
+ if (!ctx.attractorModel) {
901
+ console.error('Error: Attractor model not available');
902
+ await shutdown();
903
+ process.exit(1);
904
+ }
905
+ try {
906
+ const { cmdAttractor } = await import('../src/cli/probabilistic-commands.js');
907
+ const result = await cmdAttractor(args, config, {
908
+ neuronStore: ctx.neuronStore,
909
+ attractorModel: ctx.attractorModel,
910
+ });
911
+ if (config.json) {
912
+ console.log(JSON.stringify(result, null, 2));
913
+ }
914
+ else if (result.success) {
915
+ console.log(result.data);
916
+ }
917
+ else {
918
+ console.error(result.error);
919
+ }
920
+ await shutdown();
921
+ }
922
+ catch (error) {
923
+ await shutdown();
924
+ console.error('Attractor failed:', error.message);
925
+ process.exit(1);
926
+ }
927
+ }
928
+ async function cmdLearnDispatch(args, config) {
929
+ if (args.length === 0) {
930
+ console.log('Usage: nmt learn <subcommand> [options]');
931
+ console.log('Subcommands: interaction, patterns, outcomes, stats');
932
+ return;
933
+ }
934
+ const ctx = await bootstrap(config);
935
+ if (!ctx.learningSystem) {
936
+ console.error('Error: Learning system not available');
937
+ await shutdown();
938
+ process.exit(1);
939
+ }
940
+ try {
941
+ const { cmdLearn } = await import('../src/cli/probabilistic-commands.js');
942
+ const result = await cmdLearn(args, config, {
943
+ neuronStore: ctx.neuronStore,
944
+ learningSystem: ctx.learningSystem,
945
+ });
946
+ if (config.json) {
947
+ console.log(JSON.stringify(result, null, 2));
948
+ }
949
+ else if (result.success) {
950
+ console.log(result.data);
951
+ }
952
+ else {
953
+ console.error(result.error);
954
+ }
955
+ await shutdown();
956
+ }
957
+ catch (error) {
958
+ await shutdown();
959
+ console.error('Learn failed:', error.message);
960
+ process.exit(1);
961
+ }
962
+ }
963
+ async function cmdDimensionDispatch(args, config) {
964
+ if (args.length === 0) {
965
+ console.log('Usage: nmt dimension <subcommand> [options]');
966
+ console.log('Subcommands: list, expand, analyze, stats');
967
+ return;
968
+ }
969
+ const ctx = await bootstrap(config);
970
+ if (!ctx.embeddingManager) {
971
+ console.error('Error: Dynamic embedding manager not available');
972
+ await shutdown();
973
+ process.exit(1);
974
+ }
975
+ try {
976
+ const { cmdDimension } = await import('../src/cli/probabilistic-commands.js');
977
+ const result = await cmdDimension(args, config, {
978
+ neuronStore: ctx.neuronStore,
979
+ embeddingManager: ctx.embeddingManager,
980
+ });
981
+ if (config.json) {
982
+ console.log(JSON.stringify(result, null, 2));
983
+ }
984
+ else if (result.success) {
985
+ console.log(result.data);
986
+ }
987
+ else {
988
+ console.error(result.error);
989
+ }
990
+ await shutdown();
991
+ }
992
+ catch (error) {
993
+ await shutdown();
994
+ console.error('Dimension failed:', error.message);
995
+ process.exit(1);
996
+ }
997
+ }
998
+ async function cmdOrchestrateDispatch(args, config) {
999
+ if (args.length === 0) {
1000
+ console.log('Usage: nmt orchestrate <subcommand> [options]');
1001
+ console.log('Subcommands: infer, goal, expand, stats');
1002
+ return;
1003
+ }
1004
+ const ctx = await bootstrap(config);
1005
+ try {
1006
+ const { cmdOrchestrate } = await import('../src/cli/probabilistic-commands.js');
1007
+ const result = await cmdOrchestrate(args, config, {
1008
+ neuronStore: ctx.neuronStore,
1009
+ inferenceEngine: ctx.inferenceEngine,
1010
+ attractorModel: ctx.attractorModel,
1011
+ learningSystem: ctx.learningSystem,
1012
+ neuronManager: ctx.neuronManager,
1013
+ embeddingManager: ctx.embeddingManager,
1014
+ });
1015
+ if (config.json) {
1016
+ console.log(JSON.stringify(result, null, 2));
1017
+ }
1018
+ else if (result.success) {
1019
+ console.log(result.data);
1020
+ }
1021
+ else {
1022
+ console.error(result.error);
1023
+ }
1024
+ await shutdown();
1025
+ }
1026
+ catch (error) {
1027
+ await shutdown();
1028
+ console.error('Orchestrate failed:', error.message);
1029
+ process.exit(1);
1030
+ }
1031
+ }
1032
+ async function cmdSyncDispatch(args, config) {
1033
+ if (args.length === 0) {
1034
+ console.log('Usage: nmt sync <subcommand> [options]');
1035
+ console.log('Subcommands: status, changes, export, import, peers, journal');
1036
+ return;
1037
+ }
1038
+ const ctx = await bootstrap(config);
1039
+ if (!ctx.syncManager) {
1040
+ console.error('Error: Sync manager not available');
1041
+ await shutdown();
1042
+ process.exit(1);
1043
+ }
1044
+ try {
1045
+ const { cmdSync } = await import('../src/cli/probabilistic-commands.js');
1046
+ const result = await cmdSync(args, config, {
1047
+ neuronStore: ctx.neuronStore,
1048
+ syncManager: ctx.syncManager,
1049
+ changeJournal: ctx.changeJournal,
1050
+ });
1051
+ if (config.json) {
1052
+ console.log(JSON.stringify(result, null, 2));
1053
+ }
1054
+ else if (result.success) {
1055
+ console.log(result.data);
1056
+ }
1057
+ else {
1058
+ console.error(result.error);
1059
+ }
1060
+ await shutdown();
1061
+ }
1062
+ catch (error) {
1063
+ await shutdown();
1064
+ console.error('Sync failed:', error.message);
1065
+ process.exit(1);
1066
+ }
1067
+ }
1068
+ // ============== Main Dispatcher ==============
1069
+ async function main() {
1070
+ const { command, args, config } = parseConfig();
1071
+ switch (command) {
1072
+ // Setup
1073
+ case 'init':
1074
+ await cmdInit(config);
1075
+ break;
1076
+ case 'dashboard':
1077
+ case 'dash':
1078
+ await cmdDashboard(config);
1079
+ break;
1080
+ // Core DB operations
1081
+ case 'ingest':
1082
+ await cmdIngest(args, config);
1083
+ break;
1084
+ case 'ingest-text':
1085
+ await cmdIngestText(args, config);
1086
+ break;
1087
+ case 'search':
1088
+ await cmdSearch(args, config);
1089
+ break;
1090
+ case 'verify':
1091
+ await cmdVerify(args, config);
1092
+ break;
1093
+ case 'list':
1094
+ case 'ls':
1095
+ await cmdList(config);
1096
+ break;
1097
+ case 'get':
1098
+ case 'show':
1099
+ await cmdGet(args, config);
1100
+ break;
1101
+ case 'stats':
1102
+ case 'status':
1103
+ await cmdStats(config);
1104
+ break;
1105
+ // Graph Management
1106
+ case 'connect':
1107
+ await cmdConnect(args, config);
1108
+ break;
1109
+ // Benchmarks & Backup
1110
+ case 'benchmark':
1111
+ await cmdBenchmark(config);
1112
+ break;
1113
+ // Probabilistic Ontology Commands (확률적 존재론)
1114
+ case 'infer':
1115
+ await cmdInferDispatch(args, config);
1116
+ break;
1117
+ case 'attractor':
1118
+ await cmdAttractorDispatch(args, config);
1119
+ break;
1120
+ case 'learn':
1121
+ await cmdLearnDispatch(args, config);
1122
+ break;
1123
+ case 'dimension':
1124
+ await cmdDimensionDispatch(args, config);
1125
+ break;
1126
+ case 'orchestrate':
1127
+ case 'orch':
1128
+ await cmdOrchestrateDispatch(args, config);
1129
+ break;
1130
+ case 'sync':
1131
+ await cmdSyncDispatch(args, config);
1132
+ break;
1133
+ case 'help':
1134
+ default:
1135
+ console.log(HELP);
1136
+ }
1137
+ }
1138
+ main().catch(error => {
1139
+ console.error('Error:', error.message);
1140
+ process.exit(1);
1141
+ });
1142
+ //# sourceMappingURL=nmt.js.map