@rbalchii/anchor-engine 4.7.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 (539) hide show
  1. package/LICENSE +609 -0
  2. package/README.md +317 -0
  3. package/anchor.bat +5 -0
  4. package/docs/API.md +314 -0
  5. package/docs/DEPLOYMENT.md +448 -0
  6. package/docs/INDEX.md +226 -0
  7. package/docs/STAR_Whitepaper_Executive.md +216 -0
  8. package/docs/TROUBLESHOOTING.md +535 -0
  9. package/docs/archive/GIT_BACKUP_VERIFICATION.md +297 -0
  10. package/docs/archive/adoption-guide.md +264 -0
  11. package/docs/archive/adoption-preparation.md +179 -0
  12. package/docs/archive/agent-harness-integration.md +227 -0
  13. package/docs/archive/api-reference.md +106 -0
  14. package/docs/archive/api_flows_diagram.md +118 -0
  15. package/docs/archive/architecture.md +410 -0
  16. package/docs/archive/architecture_diagram.md +174 -0
  17. package/docs/archive/broader-adoption-preparation.md +175 -0
  18. package/docs/archive/browser-paradigm-architecture.md +163 -0
  19. package/docs/archive/chat-integration.md +124 -0
  20. package/docs/archive/community-adoption-materials.md +103 -0
  21. package/docs/archive/community-adoption.md +147 -0
  22. package/docs/archive/comparison-with-siloed-solutions.md +192 -0
  23. package/docs/archive/comprehensive-docs.md +156 -0
  24. package/docs/archive/data_flow_diagram.md +251 -0
  25. package/docs/archive/enhancement-implementation-summary.md +146 -0
  26. package/docs/archive/evolution-summary.md +141 -0
  27. package/docs/archive/ingestion_pipeline_diagram.md +198 -0
  28. package/docs/archive/native-module-profiling-results.md +135 -0
  29. package/docs/archive/positioning-document.md +158 -0
  30. package/docs/archive/positioning.md +175 -0
  31. package/docs/archive/query-builder-documentation.md +218 -0
  32. package/docs/archive/quick-reference.md +40 -0
  33. package/docs/archive/quickstart.md +63 -0
  34. package/docs/archive/relationship-narrative-discovery.md +141 -0
  35. package/docs/archive/search-logic-improvement-plan.md +336 -0
  36. package/docs/archive/search_architecture_diagram.md +212 -0
  37. package/docs/archive/semantic-architecture-guide.md +97 -0
  38. package/docs/archive/sequence-diagrams.md +128 -0
  39. package/docs/archive/system_components_diagram.md +296 -0
  40. package/docs/archive/test-framework-integration.md +109 -0
  41. package/docs/archive/testing-framework-documentation.md +397 -0
  42. package/docs/archive/testing-framework-summary.md +121 -0
  43. package/docs/archive/testing-framework.md +377 -0
  44. package/docs/archive/ui-architecture.md +75 -0
  45. package/docs/arxiv/BIBLIOGRAPHY.bib +145 -0
  46. package/docs/arxiv/RELATED_WORK.tex +39 -0
  47. package/docs/arxiv/compile.bat +48 -0
  48. package/docs/arxiv/joss_response.md +33 -0
  49. package/docs/arxiv/prepare-submission.bat +46 -0
  50. package/docs/arxiv/review.md +128 -0
  51. package/docs/arxiv/star-whitepaper.tex +657 -0
  52. package/docs/code-patterns.md +289 -0
  53. package/docs/whitepaper.md +445 -0
  54. package/engine/dist/agent/runtime.d.ts +41 -0
  55. package/engine/dist/agent/runtime.d.ts.map +1 -0
  56. package/engine/dist/agent/runtime.js +73 -0
  57. package/engine/dist/agent/runtime.js.map +1 -0
  58. package/engine/dist/commands/audit-tags.d.ts +14 -0
  59. package/engine/dist/commands/audit-tags.d.ts.map +1 -0
  60. package/engine/dist/commands/audit-tags.js +180 -0
  61. package/engine/dist/commands/audit-tags.js.map +1 -0
  62. package/engine/dist/commands/distill.d.ts +19 -0
  63. package/engine/dist/commands/distill.d.ts.map +1 -0
  64. package/engine/dist/commands/distill.js +114 -0
  65. package/engine/dist/commands/distill.js.map +1 -0
  66. package/engine/dist/commands/generate-synonyms.d.ts +14 -0
  67. package/engine/dist/commands/generate-synonyms.d.ts.map +1 -0
  68. package/engine/dist/commands/generate-synonyms.js +91 -0
  69. package/engine/dist/commands/generate-synonyms.js.map +1 -0
  70. package/engine/dist/config/index.d.ts +115 -0
  71. package/engine/dist/config/index.d.ts.map +1 -0
  72. package/engine/dist/config/index.js +326 -0
  73. package/engine/dist/config/index.js.map +1 -0
  74. package/engine/dist/config/max-recall-config.d.ts +102 -0
  75. package/engine/dist/config/max-recall-config.d.ts.map +1 -0
  76. package/engine/dist/config/max-recall-config.js +102 -0
  77. package/engine/dist/config/max-recall-config.js.map +1 -0
  78. package/engine/dist/config/paths.d.ts +40 -0
  79. package/engine/dist/config/paths.d.ts.map +1 -0
  80. package/engine/dist/config/paths.js +49 -0
  81. package/engine/dist/config/paths.js.map +1 -0
  82. package/engine/dist/core/batch.d.ts +19 -0
  83. package/engine/dist/core/batch.d.ts.map +1 -0
  84. package/engine/dist/core/batch.js +37 -0
  85. package/engine/dist/core/batch.js.map +1 -0
  86. package/engine/dist/core/db.d.ts +58 -0
  87. package/engine/dist/core/db.d.ts.map +1 -0
  88. package/engine/dist/core/db.js +563 -0
  89. package/engine/dist/core/db.js.map +1 -0
  90. package/engine/dist/core/inference/ChatWorker.d.ts +2 -0
  91. package/engine/dist/core/inference/ChatWorker.d.ts.map +1 -0
  92. package/engine/dist/core/inference/ChatWorker.js +28 -0
  93. package/engine/dist/core/inference/ChatWorker.js.map +1 -0
  94. package/engine/dist/core/inference/context_manager.d.ts +49 -0
  95. package/engine/dist/core/inference/context_manager.d.ts.map +1 -0
  96. package/engine/dist/core/inference/context_manager.js +199 -0
  97. package/engine/dist/core/inference/context_manager.js.map +1 -0
  98. package/engine/dist/core/inference/llamaLoaderWorker.d.ts +2 -0
  99. package/engine/dist/core/inference/llamaLoaderWorker.d.ts.map +1 -0
  100. package/engine/dist/core/inference/llamaLoaderWorker.js +23 -0
  101. package/engine/dist/core/inference/llamaLoaderWorker.js.map +1 -0
  102. package/engine/dist/core/vector.d.ts +40 -0
  103. package/engine/dist/core/vector.d.ts.map +1 -0
  104. package/engine/dist/core/vector.js +167 -0
  105. package/engine/dist/core/vector.js.map +1 -0
  106. package/engine/dist/index.d.ts +4 -0
  107. package/engine/dist/index.d.ts.map +1 -0
  108. package/engine/dist/index.js +400 -0
  109. package/engine/dist/index.js.map +1 -0
  110. package/engine/dist/middleware/auth.d.ts +14 -0
  111. package/engine/dist/middleware/auth.d.ts.map +1 -0
  112. package/engine/dist/middleware/auth.js +44 -0
  113. package/engine/dist/middleware/auth.js.map +1 -0
  114. package/engine/dist/middleware/request-tracing.d.ts +29 -0
  115. package/engine/dist/middleware/request-tracing.d.ts.map +1 -0
  116. package/engine/dist/middleware/request-tracing.js +115 -0
  117. package/engine/dist/middleware/request-tracing.js.map +1 -0
  118. package/engine/dist/middleware/validate.d.ts +30 -0
  119. package/engine/dist/middleware/validate.d.ts.map +1 -0
  120. package/engine/dist/middleware/validate.js +117 -0
  121. package/engine/dist/middleware/validate.js.map +1 -0
  122. package/engine/dist/native/index.d.ts +106 -0
  123. package/engine/dist/native/index.d.ts.map +1 -0
  124. package/engine/dist/native/index.js +230 -0
  125. package/engine/dist/native/index.js.map +1 -0
  126. package/engine/dist/native/types.d.ts +45 -0
  127. package/engine/dist/native/types.d.ts.map +1 -0
  128. package/engine/dist/native/types.js +6 -0
  129. package/engine/dist/native/types.js.map +1 -0
  130. package/engine/dist/profiling/atomization-profiling.d.ts +8 -0
  131. package/engine/dist/profiling/atomization-profiling.d.ts.map +1 -0
  132. package/engine/dist/profiling/atomization-profiling.js +108 -0
  133. package/engine/dist/profiling/atomization-profiling.js.map +1 -0
  134. package/engine/dist/profiling/bottleneck-identification.d.ts +8 -0
  135. package/engine/dist/profiling/bottleneck-identification.d.ts.map +1 -0
  136. package/engine/dist/profiling/bottleneck-identification.js +249 -0
  137. package/engine/dist/profiling/bottleneck-identification.js.map +1 -0
  138. package/engine/dist/profiling/content-sanitization-profiling.d.ts +12 -0
  139. package/engine/dist/profiling/content-sanitization-profiling.d.ts.map +1 -0
  140. package/engine/dist/profiling/content-sanitization-profiling.js +266 -0
  141. package/engine/dist/profiling/content-sanitization-profiling.js.map +1 -0
  142. package/engine/dist/profiling/simhash-profiling.d.ts +11 -0
  143. package/engine/dist/profiling/simhash-profiling.d.ts.map +1 -0
  144. package/engine/dist/profiling/simhash-profiling.js +168 -0
  145. package/engine/dist/profiling/simhash-profiling.js.map +1 -0
  146. package/engine/dist/routes/api.d.ts +9 -0
  147. package/engine/dist/routes/api.d.ts.map +1 -0
  148. package/engine/dist/routes/api.js +37 -0
  149. package/engine/dist/routes/api.js.map +1 -0
  150. package/engine/dist/routes/enhanced-api.d.ts +9 -0
  151. package/engine/dist/routes/enhanced-api.d.ts.map +1 -0
  152. package/engine/dist/routes/enhanced-api.js +139 -0
  153. package/engine/dist/routes/enhanced-api.js.map +1 -0
  154. package/engine/dist/routes/health.d.ts +8 -0
  155. package/engine/dist/routes/health.d.ts.map +1 -0
  156. package/engine/dist/routes/health.js +89 -0
  157. package/engine/dist/routes/health.js.map +1 -0
  158. package/engine/dist/routes/monitoring.d.ts +8 -0
  159. package/engine/dist/routes/monitoring.d.ts.map +1 -0
  160. package/engine/dist/routes/monitoring.js +509 -0
  161. package/engine/dist/routes/monitoring.js.map +1 -0
  162. package/engine/dist/routes/v1/admin.d.ts +3 -0
  163. package/engine/dist/routes/v1/admin.d.ts.map +1 -0
  164. package/engine/dist/routes/v1/admin.js +261 -0
  165. package/engine/dist/routes/v1/admin.js.map +1 -0
  166. package/engine/dist/routes/v1/atoms.d.ts +3 -0
  167. package/engine/dist/routes/v1/atoms.d.ts.map +1 -0
  168. package/engine/dist/routes/v1/atoms.js +172 -0
  169. package/engine/dist/routes/v1/atoms.js.map +1 -0
  170. package/engine/dist/routes/v1/backup.d.ts +3 -0
  171. package/engine/dist/routes/v1/backup.d.ts.map +1 -0
  172. package/engine/dist/routes/v1/backup.js +100 -0
  173. package/engine/dist/routes/v1/backup.js.map +1 -0
  174. package/engine/dist/routes/v1/git.d.ts +3 -0
  175. package/engine/dist/routes/v1/git.d.ts.map +1 -0
  176. package/engine/dist/routes/v1/git.js +316 -0
  177. package/engine/dist/routes/v1/git.js.map +1 -0
  178. package/engine/dist/routes/v1/ingest.d.ts +3 -0
  179. package/engine/dist/routes/v1/ingest.d.ts.map +1 -0
  180. package/engine/dist/routes/v1/ingest.js +66 -0
  181. package/engine/dist/routes/v1/ingest.js.map +1 -0
  182. package/engine/dist/routes/v1/memory.d.ts +14 -0
  183. package/engine/dist/routes/v1/memory.d.ts.map +1 -0
  184. package/engine/dist/routes/v1/memory.js +87 -0
  185. package/engine/dist/routes/v1/memory.js.map +1 -0
  186. package/engine/dist/routes/v1/research.d.ts +3 -0
  187. package/engine/dist/routes/v1/research.d.ts.map +1 -0
  188. package/engine/dist/routes/v1/research.js +109 -0
  189. package/engine/dist/routes/v1/research.js.map +1 -0
  190. package/engine/dist/routes/v1/search.d.ts +3 -0
  191. package/engine/dist/routes/v1/search.d.ts.map +1 -0
  192. package/engine/dist/routes/v1/search.js +180 -0
  193. package/engine/dist/routes/v1/search.js.map +1 -0
  194. package/engine/dist/routes/v1/settings.d.ts +8 -0
  195. package/engine/dist/routes/v1/settings.d.ts.map +1 -0
  196. package/engine/dist/routes/v1/settings.js +211 -0
  197. package/engine/dist/routes/v1/settings.js.map +1 -0
  198. package/engine/dist/routes/v1/system.d.ts +3 -0
  199. package/engine/dist/routes/v1/system.d.ts.map +1 -0
  200. package/engine/dist/routes/v1/system.js +326 -0
  201. package/engine/dist/routes/v1/system.js.map +1 -0
  202. package/engine/dist/routes/v1/tags.d.ts +3 -0
  203. package/engine/dist/routes/v1/tags.d.ts.map +1 -0
  204. package/engine/dist/routes/v1/tags.js +102 -0
  205. package/engine/dist/routes/v1/tags.js.map +1 -0
  206. package/engine/dist/server-8080.d.ts +2 -0
  207. package/engine/dist/server-8080.d.ts.map +1 -0
  208. package/engine/dist/server-8080.js +74 -0
  209. package/engine/dist/server-8080.js.map +1 -0
  210. package/engine/dist/services/backup/backup-restore.d.ts +37 -0
  211. package/engine/dist/services/backup/backup-restore.d.ts.map +1 -0
  212. package/engine/dist/services/backup/backup-restore.js +385 -0
  213. package/engine/dist/services/backup/backup-restore.js.map +1 -0
  214. package/engine/dist/services/backup/backup.d.ts +14 -0
  215. package/engine/dist/services/backup/backup.d.ts.map +1 -0
  216. package/engine/dist/services/backup/backup.js +442 -0
  217. package/engine/dist/services/backup/backup.js.map +1 -0
  218. package/engine/dist/services/distillation/radial-distiller-v2.d.ts +127 -0
  219. package/engine/dist/services/distillation/radial-distiller-v2.d.ts.map +1 -0
  220. package/engine/dist/services/distillation/radial-distiller-v2.js +503 -0
  221. package/engine/dist/services/distillation/radial-distiller-v2.js.map +1 -0
  222. package/engine/dist/services/distillation/radial-distiller.d.ts +63 -0
  223. package/engine/dist/services/distillation/radial-distiller.d.ts.map +1 -0
  224. package/engine/dist/services/distillation/radial-distiller.js +394 -0
  225. package/engine/dist/services/distillation/radial-distiller.js.map +1 -0
  226. package/engine/dist/services/health-check-enhanced.d.ts +89 -0
  227. package/engine/dist/services/health-check-enhanced.d.ts.map +1 -0
  228. package/engine/dist/services/health-check-enhanced.js +417 -0
  229. package/engine/dist/services/health-check-enhanced.js.map +1 -0
  230. package/engine/dist/services/idle-manager.d.ts +56 -0
  231. package/engine/dist/services/idle-manager.d.ts.map +1 -0
  232. package/engine/dist/services/idle-manager.js +210 -0
  233. package/engine/dist/services/idle-manager.js.map +1 -0
  234. package/engine/dist/services/inference/inference-service.d.ts +27 -0
  235. package/engine/dist/services/inference/inference-service.d.ts.map +1 -0
  236. package/engine/dist/services/inference/inference-service.js +89 -0
  237. package/engine/dist/services/inference/inference-service.js.map +1 -0
  238. package/engine/dist/services/inference/inference.d.ts +59 -0
  239. package/engine/dist/services/inference/inference.d.ts.map +1 -0
  240. package/engine/dist/services/inference/inference.js +131 -0
  241. package/engine/dist/services/inference/inference.js.map +1 -0
  242. package/engine/dist/services/ingest/atomizer-service.d.ts +74 -0
  243. package/engine/dist/services/ingest/atomizer-service.d.ts.map +1 -0
  244. package/engine/dist/services/ingest/atomizer-service.js +982 -0
  245. package/engine/dist/services/ingest/atomizer-service.js.map +1 -0
  246. package/engine/dist/services/ingest/content-cleaner.d.ts +43 -0
  247. package/engine/dist/services/ingest/content-cleaner.d.ts.map +1 -0
  248. package/engine/dist/services/ingest/content-cleaner.js +166 -0
  249. package/engine/dist/services/ingest/content-cleaner.js.map +1 -0
  250. package/engine/dist/services/ingest/github-ingest-service.d.ts +103 -0
  251. package/engine/dist/services/ingest/github-ingest-service.d.ts.map +1 -0
  252. package/engine/dist/services/ingest/github-ingest-service.js +537 -0
  253. package/engine/dist/services/ingest/github-ingest-service.js.map +1 -0
  254. package/engine/dist/services/ingest/ingest-atomic.d.ts +16 -0
  255. package/engine/dist/services/ingest/ingest-atomic.d.ts.map +1 -0
  256. package/engine/dist/services/ingest/ingest-atomic.js +437 -0
  257. package/engine/dist/services/ingest/ingest-atomic.js.map +1 -0
  258. package/engine/dist/services/ingest/ingest.d.ts +50 -0
  259. package/engine/dist/services/ingest/ingest.d.ts.map +1 -0
  260. package/engine/dist/services/ingest/ingest.js +230 -0
  261. package/engine/dist/services/ingest/ingest.js.map +1 -0
  262. package/engine/dist/services/ingest/watchdog.d.ts +31 -0
  263. package/engine/dist/services/ingest/watchdog.d.ts.map +1 -0
  264. package/engine/dist/services/ingest/watchdog.js +400 -0
  265. package/engine/dist/services/ingest/watchdog.js.map +1 -0
  266. package/engine/dist/services/llm/context.d.ts +6 -0
  267. package/engine/dist/services/llm/context.d.ts.map +1 -0
  268. package/engine/dist/services/llm/context.js +80 -0
  269. package/engine/dist/services/llm/context.js.map +1 -0
  270. package/engine/dist/services/llm/provider.d.ts +23 -0
  271. package/engine/dist/services/llm/provider.d.ts.map +1 -0
  272. package/engine/dist/services/llm/provider.js +338 -0
  273. package/engine/dist/services/llm/provider.js.map +1 -0
  274. package/engine/dist/services/llm/reader.d.ts +12 -0
  275. package/engine/dist/services/llm/reader.d.ts.map +1 -0
  276. package/engine/dist/services/llm/reader.js +40 -0
  277. package/engine/dist/services/llm/reader.js.map +1 -0
  278. package/engine/dist/services/mirror/mirror.d.ts +28 -0
  279. package/engine/dist/services/mirror/mirror.d.ts.map +1 -0
  280. package/engine/dist/services/mirror/mirror.js +208 -0
  281. package/engine/dist/services/mirror/mirror.js.map +1 -0
  282. package/engine/dist/services/nlp/nlp-service.d.ts +70 -0
  283. package/engine/dist/services/nlp/nlp-service.d.ts.map +1 -0
  284. package/engine/dist/services/nlp/nlp-service.js +151 -0
  285. package/engine/dist/services/nlp/nlp-service.js.map +1 -0
  286. package/engine/dist/services/nlp/query-parser.d.ts +9 -0
  287. package/engine/dist/services/nlp/query-parser.d.ts.map +1 -0
  288. package/engine/dist/services/nlp/query-parser.js +29 -0
  289. package/engine/dist/services/nlp/query-parser.js.map +1 -0
  290. package/engine/dist/services/query-builder/DataFrame.d.ts +95 -0
  291. package/engine/dist/services/query-builder/DataFrame.d.ts.map +1 -0
  292. package/engine/dist/services/query-builder/DataFrame.js +263 -0
  293. package/engine/dist/services/query-builder/DataFrame.js.map +1 -0
  294. package/engine/dist/services/query-builder/QueryBuilder.d.ts +106 -0
  295. package/engine/dist/services/query-builder/QueryBuilder.d.ts.map +1 -0
  296. package/engine/dist/services/query-builder/QueryBuilder.js +235 -0
  297. package/engine/dist/services/query-builder/QueryBuilder.js.map +1 -0
  298. package/engine/dist/services/query-builder/utils/export.d.ts +11 -0
  299. package/engine/dist/services/query-builder/utils/export.d.ts.map +1 -0
  300. package/engine/dist/services/query-builder/utils/export.js +130 -0
  301. package/engine/dist/services/query-builder/utils/export.js.map +1 -0
  302. package/engine/dist/services/research/researcher.d.ts +15 -0
  303. package/engine/dist/services/research/researcher.d.ts.map +1 -0
  304. package/engine/dist/services/research/researcher.js +123 -0
  305. package/engine/dist/services/research/researcher.js.map +1 -0
  306. package/engine/dist/services/scribe/scribe.d.ts +43 -0
  307. package/engine/dist/services/scribe/scribe.d.ts.map +1 -0
  308. package/engine/dist/services/scribe/scribe.js +135 -0
  309. package/engine/dist/services/scribe/scribe.js.map +1 -0
  310. package/engine/dist/services/search/bright-nodes.d.ts +41 -0
  311. package/engine/dist/services/search/bright-nodes.d.ts.map +1 -0
  312. package/engine/dist/services/search/bright-nodes.js +117 -0
  313. package/engine/dist/services/search/bright-nodes.js.map +1 -0
  314. package/engine/dist/services/search/context-inflator.d.ts +63 -0
  315. package/engine/dist/services/search/context-inflator.d.ts.map +1 -0
  316. package/engine/dist/services/search/context-inflator.js +649 -0
  317. package/engine/dist/services/search/context-inflator.js.map +1 -0
  318. package/engine/dist/services/search/context-manager.d.ts +34 -0
  319. package/engine/dist/services/search/context-manager.d.ts.map +1 -0
  320. package/engine/dist/services/search/context-manager.js +124 -0
  321. package/engine/dist/services/search/context-manager.js.map +1 -0
  322. package/engine/dist/services/search/distributed-query.d.ts +38 -0
  323. package/engine/dist/services/search/distributed-query.d.ts.map +1 -0
  324. package/engine/dist/services/search/distributed-query.js +105 -0
  325. package/engine/dist/services/search/distributed-query.js.map +1 -0
  326. package/engine/dist/services/search/explore.d.ts +73 -0
  327. package/engine/dist/services/search/explore.d.ts.map +1 -0
  328. package/engine/dist/services/search/explore.js +388 -0
  329. package/engine/dist/services/search/explore.js.map +1 -0
  330. package/engine/dist/services/search/graph-context-serializer.d.ts +76 -0
  331. package/engine/dist/services/search/graph-context-serializer.d.ts.map +1 -0
  332. package/engine/dist/services/search/graph-context-serializer.js +435 -0
  333. package/engine/dist/services/search/graph-context-serializer.js.map +1 -0
  334. package/engine/dist/services/search/llm-context-formatter.d.ts +122 -0
  335. package/engine/dist/services/search/llm-context-formatter.d.ts.map +1 -0
  336. package/engine/dist/services/search/llm-context-formatter.js +394 -0
  337. package/engine/dist/services/search/llm-context-formatter.js.map +1 -0
  338. package/engine/dist/services/search/physics-tag-walker.d.ts +115 -0
  339. package/engine/dist/services/search/physics-tag-walker.d.ts.map +1 -0
  340. package/engine/dist/services/search/physics-tag-walker.js +611 -0
  341. package/engine/dist/services/search/physics-tag-walker.js.map +1 -0
  342. package/engine/dist/services/search/query-parser.d.ts +66 -0
  343. package/engine/dist/services/search/query-parser.d.ts.map +1 -0
  344. package/engine/dist/services/search/query-parser.js +346 -0
  345. package/engine/dist/services/search/query-parser.js.map +1 -0
  346. package/engine/dist/services/search/search-utils.d.ts +100 -0
  347. package/engine/dist/services/search/search-utils.d.ts.map +1 -0
  348. package/engine/dist/services/search/search-utils.js +473 -0
  349. package/engine/dist/services/search/search-utils.js.map +1 -0
  350. package/engine/dist/services/search/search.d.ts +116 -0
  351. package/engine/dist/services/search/search.d.ts.map +1 -0
  352. package/engine/dist/services/search/search.js +1286 -0
  353. package/engine/dist/services/search/search.js.map +1 -0
  354. package/engine/dist/services/search/sovereign-system-prompt.d.ts +48 -0
  355. package/engine/dist/services/search/sovereign-system-prompt.d.ts.map +1 -0
  356. package/engine/dist/services/search/sovereign-system-prompt.js +101 -0
  357. package/engine/dist/services/search/sovereign-system-prompt.js.map +1 -0
  358. package/engine/dist/services/search/streaming-search.d.ts +51 -0
  359. package/engine/dist/services/search/streaming-search.d.ts.map +1 -0
  360. package/engine/dist/services/search/streaming-search.js +94 -0
  361. package/engine/dist/services/search/streaming-search.js.map +1 -0
  362. package/engine/dist/services/semantic/semantic-ingestion-service.d.ts +53 -0
  363. package/engine/dist/services/semantic/semantic-ingestion-service.d.ts.map +1 -0
  364. package/engine/dist/services/semantic/semantic-ingestion-service.js +625 -0
  365. package/engine/dist/services/semantic/semantic-ingestion-service.js.map +1 -0
  366. package/engine/dist/services/semantic/semantic-molecule-processor.d.ts +68 -0
  367. package/engine/dist/services/semantic/semantic-molecule-processor.d.ts.map +1 -0
  368. package/engine/dist/services/semantic/semantic-molecule-processor.js +176 -0
  369. package/engine/dist/services/semantic/semantic-molecule-processor.js.map +1 -0
  370. package/engine/dist/services/semantic/semantic-search.d.ts +52 -0
  371. package/engine/dist/services/semantic/semantic-search.d.ts.map +1 -0
  372. package/engine/dist/services/semantic/semantic-search.js +649 -0
  373. package/engine/dist/services/semantic/semantic-search.js.map +1 -0
  374. package/engine/dist/services/semantic/semantic-tag-deriver.d.ts +64 -0
  375. package/engine/dist/services/semantic/semantic-tag-deriver.d.ts.map +1 -0
  376. package/engine/dist/services/semantic/semantic-tag-deriver.js +191 -0
  377. package/engine/dist/services/semantic/semantic-tag-deriver.js.map +1 -0
  378. package/engine/dist/services/semantic/types/semantic.d.ts +26 -0
  379. package/engine/dist/services/semantic/types/semantic.d.ts.map +1 -0
  380. package/engine/dist/services/semantic/types/semantic.js +7 -0
  381. package/engine/dist/services/semantic/types/semantic.js.map +1 -0
  382. package/engine/dist/services/synonyms/auto-synonym-generator.d.ts +79 -0
  383. package/engine/dist/services/synonyms/auto-synonym-generator.d.ts.map +1 -0
  384. package/engine/dist/services/synonyms/auto-synonym-generator.js +415 -0
  385. package/engine/dist/services/synonyms/auto-synonym-generator.js.map +1 -0
  386. package/engine/dist/services/system-status.d.ts +68 -0
  387. package/engine/dist/services/system-status.d.ts.map +1 -0
  388. package/engine/dist/services/system-status.js +107 -0
  389. package/engine/dist/services/system-status.js.map +1 -0
  390. package/engine/dist/services/tags/discovery.d.ts +16 -0
  391. package/engine/dist/services/tags/discovery.d.ts.map +1 -0
  392. package/engine/dist/services/tags/discovery.js +206 -0
  393. package/engine/dist/services/tags/discovery.js.map +1 -0
  394. package/engine/dist/services/tags/gliner.d.ts +18 -0
  395. package/engine/dist/services/tags/gliner.d.ts.map +1 -0
  396. package/engine/dist/services/tags/gliner.js +119 -0
  397. package/engine/dist/services/tags/gliner.js.map +1 -0
  398. package/engine/dist/services/tags/infector.d.ts +21 -0
  399. package/engine/dist/services/tags/infector.d.ts.map +1 -0
  400. package/engine/dist/services/tags/infector.js +168 -0
  401. package/engine/dist/services/tags/infector.js.map +1 -0
  402. package/engine/dist/services/tags/tag-auditor.d.ts +77 -0
  403. package/engine/dist/services/tags/tag-auditor.d.ts.map +1 -0
  404. package/engine/dist/services/tags/tag-auditor.js +283 -0
  405. package/engine/dist/services/tags/tag-auditor.js.map +1 -0
  406. package/engine/dist/services/taxonomy/taxonomy-manager.d.ts +50 -0
  407. package/engine/dist/services/taxonomy/taxonomy-manager.d.ts.map +1 -0
  408. package/engine/dist/services/taxonomy/taxonomy-manager.js +291 -0
  409. package/engine/dist/services/taxonomy/taxonomy-manager.js.map +1 -0
  410. package/engine/dist/services/vision/vision_service.d.ts +4 -0
  411. package/engine/dist/services/vision/vision_service.d.ts.map +1 -0
  412. package/engine/dist/services/vision/vision_service.js +197 -0
  413. package/engine/dist/services/vision/vision_service.js.map +1 -0
  414. package/engine/dist/test-framework/core.d.ts +133 -0
  415. package/engine/dist/test-framework/core.d.ts.map +1 -0
  416. package/engine/dist/test-framework/core.js +313 -0
  417. package/engine/dist/test-framework/core.js.map +1 -0
  418. package/engine/dist/test-framework/dataset-runner.d.ts +78 -0
  419. package/engine/dist/test-framework/dataset-runner.d.ts.map +1 -0
  420. package/engine/dist/test-framework/dataset-runner.js +223 -0
  421. package/engine/dist/test-framework/dataset-runner.js.map +1 -0
  422. package/engine/dist/test-framework/diagnostic-tests.d.ts +38 -0
  423. package/engine/dist/test-framework/diagnostic-tests.d.ts.map +1 -0
  424. package/engine/dist/test-framework/diagnostic-tests.js +283 -0
  425. package/engine/dist/test-framework/diagnostic-tests.js.map +1 -0
  426. package/engine/dist/test-framework/performance-regression-tests.d.ts +30 -0
  427. package/engine/dist/test-framework/performance-regression-tests.d.ts.map +1 -0
  428. package/engine/dist/test-framework/performance-regression-tests.js +331 -0
  429. package/engine/dist/test-framework/performance-regression-tests.js.map +1 -0
  430. package/engine/dist/types/api.d.ts +53 -0
  431. package/engine/dist/types/api.d.ts.map +1 -0
  432. package/engine/dist/types/api.js +2 -0
  433. package/engine/dist/types/api.js.map +1 -0
  434. package/engine/dist/types/atomic.d.ts +42 -0
  435. package/engine/dist/types/atomic.d.ts.map +1 -0
  436. package/engine/dist/types/atomic.js +10 -0
  437. package/engine/dist/types/atomic.js.map +1 -0
  438. package/engine/dist/types/context-protocol.d.ts +137 -0
  439. package/engine/dist/types/context-protocol.d.ts.map +1 -0
  440. package/engine/dist/types/context-protocol.js +28 -0
  441. package/engine/dist/types/context-protocol.js.map +1 -0
  442. package/engine/dist/types/context.d.ts +2 -0
  443. package/engine/dist/types/context.d.ts.map +1 -0
  444. package/engine/dist/types/context.js +2 -0
  445. package/engine/dist/types/context.js.map +1 -0
  446. package/engine/dist/types/index.d.ts +20 -0
  447. package/engine/dist/types/index.d.ts.map +1 -0
  448. package/engine/dist/types/index.js +18 -0
  449. package/engine/dist/types/index.js.map +1 -0
  450. package/engine/dist/types/search.d.ts +31 -0
  451. package/engine/dist/types/search.d.ts.map +1 -0
  452. package/engine/dist/types/search.js +2 -0
  453. package/engine/dist/types/search.js.map +1 -0
  454. package/engine/dist/types/taxonomy.d.ts +137 -0
  455. package/engine/dist/types/taxonomy.d.ts.map +1 -0
  456. package/engine/dist/types/taxonomy.js +138 -0
  457. package/engine/dist/types/taxonomy.js.map +1 -0
  458. package/engine/dist/types/taxonomy.simple.d.ts +131 -0
  459. package/engine/dist/types/taxonomy.simple.d.ts.map +1 -0
  460. package/engine/dist/types/taxonomy.simple.js +132 -0
  461. package/engine/dist/types/taxonomy.simple.js.map +1 -0
  462. package/engine/dist/types/tool-call.d.ts +16 -0
  463. package/engine/dist/types/tool-call.d.ts.map +1 -0
  464. package/engine/dist/types/tool-call.js +6 -0
  465. package/engine/dist/types/tool-call.js.map +1 -0
  466. package/engine/dist/types/trace.d.ts +25 -0
  467. package/engine/dist/types/trace.d.ts.map +1 -0
  468. package/engine/dist/types/trace.js +5 -0
  469. package/engine/dist/types/trace.js.map +1 -0
  470. package/engine/dist/utils/adaptive-concurrency.d.ts +81 -0
  471. package/engine/dist/utils/adaptive-concurrency.d.ts.map +1 -0
  472. package/engine/dist/utils/adaptive-concurrency.js +266 -0
  473. package/engine/dist/utils/adaptive-concurrency.js.map +1 -0
  474. package/engine/dist/utils/date_extractor.d.ts +2 -0
  475. package/engine/dist/utils/date_extractor.d.ts.map +1 -0
  476. package/engine/dist/utils/date_extractor.js +32 -0
  477. package/engine/dist/utils/date_extractor.js.map +1 -0
  478. package/engine/dist/utils/native-module-manager.d.ts +48 -0
  479. package/engine/dist/utils/native-module-manager.d.ts.map +1 -0
  480. package/engine/dist/utils/native-module-manager.js +265 -0
  481. package/engine/dist/utils/native-module-manager.js.map +1 -0
  482. package/engine/dist/utils/native-module-profiler.d.ts +66 -0
  483. package/engine/dist/utils/native-module-profiler.d.ts.map +1 -0
  484. package/engine/dist/utils/native-module-profiler.js +182 -0
  485. package/engine/dist/utils/native-module-profiler.js.map +1 -0
  486. package/engine/dist/utils/path-manager.d.ts +59 -0
  487. package/engine/dist/utils/path-manager.d.ts.map +1 -0
  488. package/engine/dist/utils/path-manager.js +154 -0
  489. package/engine/dist/utils/path-manager.js.map +1 -0
  490. package/engine/dist/utils/performance-monitor.d.ts +92 -0
  491. package/engine/dist/utils/performance-monitor.d.ts.map +1 -0
  492. package/engine/dist/utils/performance-monitor.js +221 -0
  493. package/engine/dist/utils/performance-monitor.js.map +1 -0
  494. package/engine/dist/utils/process-manager.d.ts +18 -0
  495. package/engine/dist/utils/process-manager.d.ts.map +1 -0
  496. package/engine/dist/utils/process-manager.js +100 -0
  497. package/engine/dist/utils/process-manager.js.map +1 -0
  498. package/engine/dist/utils/request-tracer.d.ts +131 -0
  499. package/engine/dist/utils/request-tracer.d.ts.map +1 -0
  500. package/engine/dist/utils/request-tracer.js +414 -0
  501. package/engine/dist/utils/request-tracer.js.map +1 -0
  502. package/engine/dist/utils/resource-manager.d.ts +108 -0
  503. package/engine/dist/utils/resource-manager.d.ts.map +1 -0
  504. package/engine/dist/utils/resource-manager.js +235 -0
  505. package/engine/dist/utils/resource-manager.js.map +1 -0
  506. package/engine/dist/utils/safe-dns.d.ts +14 -0
  507. package/engine/dist/utils/safe-dns.d.ts.map +1 -0
  508. package/engine/dist/utils/safe-dns.js +105 -0
  509. package/engine/dist/utils/safe-dns.js.map +1 -0
  510. package/engine/dist/utils/structured-logger.d.ts +124 -0
  511. package/engine/dist/utils/structured-logger.d.ts.map +1 -0
  512. package/engine/dist/utils/structured-logger.js +332 -0
  513. package/engine/dist/utils/structured-logger.js.map +1 -0
  514. package/engine/dist/utils/tag-cleanup.d.ts +11 -0
  515. package/engine/dist/utils/tag-cleanup.d.ts.map +1 -0
  516. package/engine/dist/utils/tag-cleanup.js +111 -0
  517. package/engine/dist/utils/tag-cleanup.js.map +1 -0
  518. package/engine/dist/utils/tag-filter.d.ts +19 -0
  519. package/engine/dist/utils/tag-filter.d.ts.map +1 -0
  520. package/engine/dist/utils/tag-filter.js +147 -0
  521. package/engine/dist/utils/tag-filter.js.map +1 -0
  522. package/engine/dist/utils/tag-modulation.d.ts +80 -0
  523. package/engine/dist/utils/tag-modulation.d.ts.map +1 -0
  524. package/engine/dist/utils/tag-modulation.js +284 -0
  525. package/engine/dist/utils/tag-modulation.js.map +1 -0
  526. package/engine/dist/utils/timer.d.ts +40 -0
  527. package/engine/dist/utils/timer.d.ts.map +1 -0
  528. package/engine/dist/utils/timer.js +76 -0
  529. package/engine/dist/utils/timer.js.map +1 -0
  530. package/engine/dist/utils/token-utils.d.ts +19 -0
  531. package/engine/dist/utils/token-utils.d.ts.map +1 -0
  532. package/engine/dist/utils/token-utils.js +71 -0
  533. package/engine/dist/utils/token-utils.js.map +1 -0
  534. package/engine/dist/utils/wasm-module-loader.d.ts +50 -0
  535. package/engine/dist/utils/wasm-module-loader.d.ts.map +1 -0
  536. package/engine/dist/utils/wasm-module-loader.js +136 -0
  537. package/engine/dist/utils/wasm-module-loader.js.map +1 -0
  538. package/engine/package.json +105 -0
  539. package/package.json +106 -0
@@ -0,0 +1,437 @@
1
+ import { db } from '../../core/db.js';
2
+ import { config } from '../../config/index.js';
3
+ import { filterTags } from '../../utils/tag-filter.js';
4
+ export class AtomicIngestService {
5
+ async ingestResult(compound, molecules, atoms, buckets = ['core']) {
6
+ const startTime = Date.now();
7
+ const filename = compound.path.split(/[/\\]/).pop() || compound.path;
8
+ // Validate content lengths to prevent oversized atoms/molecules
9
+ const MAX_CONTENT_LENGTH = 500 * 1024; // 500KB limit
10
+ for (const mol of molecules) {
11
+ if (mol.content.length > MAX_CONTENT_LENGTH) {
12
+ console.warn(`[AtomicIngest] Warning: Molecule content exceeds maximum length (${mol.content.length} chars), truncating...`);
13
+ mol.content = mol.content.substring(0, MAX_CONTENT_LENGTH) + '... [TRUNCATED]';
14
+ }
15
+ }
16
+ for (const atom of atoms) {
17
+ if (atom.label.length > MAX_CONTENT_LENGTH) {
18
+ console.warn(`[AtomicIngest] Warning: Atom content exceeds maximum length (${atom.label.length} chars), truncating...`);
19
+ atom.label = atom.label.substring(0, MAX_CONTENT_LENGTH) + '... [TRUNCATED]';
20
+ }
21
+ }
22
+ console.log(`[AtomicIngest] ⏱️ START Persisting: ${filename} (${molecules.length} molecules, ${atoms.length} atoms)`);
23
+ // BUGFIX 2026-03-03: For large ingests (>100K molecules), temporarily drop FTS index
24
+ // to prevent PGlite corruption from concurrent index updates
25
+ const isLargeIngestion = molecules.length > 100000;
26
+ if (isLargeIngestion) {
27
+ console.log(`[AtomicIngest] ⏱️ Large ingestion detected (${molecules.length} molecules), dropping FTS index...`);
28
+ try {
29
+ await db.run('DROP INDEX IF EXISTS idx_molecules_content_gin');
30
+ await db.run('DROP INDEX IF EXISTS idx_atoms_content_gin');
31
+ }
32
+ catch (e) {
33
+ console.warn(`[AtomicIngest] Could not drop FTS indexes: ${e.message}`);
34
+ }
35
+ }
36
+ // Wrap entire ingestion in a transaction for atomicity and performance
37
+ await db.transaction(async () => {
38
+ await this._ingestResultInTransaction(compound, molecules, atoms, buckets);
39
+ });
40
+ // Recreate FTS indexes after bulk insert
41
+ if (isLargeIngestion) {
42
+ console.log(`[AtomicIngest] ⏱️ Recreating FTS indexes...`);
43
+ try {
44
+ await db.run(`
45
+ CREATE INDEX IF NOT EXISTS idx_molecules_content_gin
46
+ ON molecules
47
+ USING GIN(to_tsvector('simple', content));
48
+ `);
49
+ await db.run(`
50
+ CREATE INDEX IF NOT EXISTS idx_atoms_content_gin
51
+ ON atoms
52
+ USING GIN(to_tsvector('simple', content));
53
+ `);
54
+ // BUGFIX 2026-03-03: VACUUM ANALYZE after index rebuild to clear PGlite's cache
55
+ // This prevents "nfig"]D errors from stale query plans
56
+ await db.run('VACUUM ANALYZE atoms');
57
+ await db.run('VACUUM ANALYZE molecules');
58
+ console.log(`[AtomicIngest] ✅ FTS indexes recreated and optimized`);
59
+ }
60
+ catch (e) {
61
+ console.warn(`[AtomicIngest] Could not recreate FTS indexes: ${e.message}`);
62
+ }
63
+ }
64
+ const totalTime = ((Date.now() - startTime) / 1000).toFixed(2);
65
+ console.log(`[AtomicIngest] ✅ COMPLETE: ${filename} in ${totalTime}s`);
66
+ }
67
+ async _ingestResultInTransaction(compound, molecules, atoms, buckets) {
68
+ // 1. Persist Atoms (Tags)
69
+ const atomsStart = Date.now();
70
+ const uniqueAtomsMap = new Map();
71
+ for (const a of atoms) {
72
+ if (!uniqueAtomsMap.has(a.id)) {
73
+ uniqueAtomsMap.set(a.id, a);
74
+ }
75
+ }
76
+ const uniqueAtoms = Array.from(uniqueAtomsMap.values());
77
+ if (uniqueAtoms.length > 0) {
78
+ await this.batchWriteAtoms(uniqueAtoms);
79
+ }
80
+ console.log(`[AtomicIngest] ⏱️ Atoms persisted: ${Date.now() - atomsStart}ms`);
81
+ // 1.5. Persist Tags Table (The Nervous System)
82
+ const tagsStart = Date.now();
83
+ if (uniqueAtoms.length > 0) {
84
+ await this.batchWriteTags(uniqueAtoms, buckets);
85
+ }
86
+ console.log(`[AtomicIngest] ⏱️ Tags persisted: ${Date.now() - tagsStart}ms`);
87
+ // 2. Persist Molecules
88
+ const moleculesStart = Date.now();
89
+ if (molecules.length > 0) {
90
+ await this.batchWriteMolecules(molecules);
91
+ }
92
+ console.log(`[AtomicIngest] ⏱️ Molecules persisted: ${((Date.now() - moleculesStart) / 1000).toFixed(2)}s`);
93
+ // 3. Persist Atom Edges (Graph)
94
+ const edgesStart = Date.now();
95
+ if (compound.atoms && compound.atoms.length > 0) {
96
+ await this.batchWriteEdges(compound.id, compound.atoms);
97
+ }
98
+ console.log(`[AtomicIngest] ⏱️ Edges persisted: ${Date.now() - edgesStart}ms`);
99
+ // 4. Persist Compound (Atomic V4)
100
+ const compoundStart = Date.now();
101
+ await this.batchWriteCompounds([compound]);
102
+ console.log(`[AtomicIngest] ⏱️ Compound persisted: ${((Date.now() - compoundStart) / 1000).toFixed(2)}s`);
103
+ // 5. LEGACY BRIDGE: Populate 'atoms' table (was 'memory')
104
+ const memoryStart = Date.now();
105
+ await this.batchWriteMemory(compound, molecules, atoms, buckets);
106
+ console.log(`[AtomicIngest] ⏱️ Memory/Atoms persisted: ${((Date.now() - memoryStart) / 1000).toFixed(2)}s`);
107
+ // 6. Persist Atom Positions (Lazy Molecule Inflation)
108
+ const positionsStart = Date.now();
109
+ const atomLabelMap = new Map();
110
+ atoms.forEach(a => atomLabelMap.set(a.id, a.label));
111
+ await this.batchWriteAtomPositions(molecules, atomLabelMap);
112
+ console.log(`[AtomicIngest] ⏱️ Atom positions persisted: ${Date.now() - positionsStart}ms`);
113
+ }
114
+ async batchWriteAtoms(atoms) {
115
+ const chunkSize = 50;
116
+ for (let i = 0; i < atoms.length; i += chunkSize) {
117
+ const chunk = atoms.slice(i, i + chunkSize);
118
+ // Yield to event loop
119
+ if (i % 500 === 0 && i > 0)
120
+ await new Promise(resolve => setImmediate(resolve));
121
+ for (const atom of chunk) {
122
+ await db.run(`INSERT INTO atoms (id, content, source_path, timestamp, simhash, embedding, provenance, buckets, tags)
123
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)
124
+ ON CONFLICT (id) DO UPDATE SET
125
+ content = EXCLUDED.content,
126
+ source_path = EXCLUDED.source_path,
127
+ timestamp = EXCLUDED.timestamp,
128
+ simhash = EXCLUDED.simhash,
129
+ embedding = EXCLUDED.embedding,
130
+ provenance = EXCLUDED.provenance,
131
+ buckets = EXCLUDED.buckets,
132
+ tags = EXCLUDED.tags`, [
133
+ atom.id,
134
+ atom.label, // label becomes content
135
+ 'atom_source', // source_path
136
+ Date.now(), // timestamp
137
+ "0", // simhash
138
+ JSON.stringify(this.zeroVector()), // embedding
139
+ 'internal', // provenance
140
+ ['atoms'], // buckets
141
+ [atom.label] // tags
142
+ ]);
143
+ }
144
+ }
145
+ }
146
+ async batchWriteTags(atoms, buckets) {
147
+ const batchSize = 1000;
148
+ let batchValues = [];
149
+ let placeHolders = [];
150
+ const flush = async () => {
151
+ if (batchValues.length === 0)
152
+ return;
153
+ const query = `
154
+ INSERT INTO tags (atom_id, tag, bucket)
155
+ VALUES ${placeHolders.join(', ')}
156
+ ON CONFLICT DO NOTHING
157
+ `;
158
+ await db.run(query, batchValues);
159
+ batchValues = [];
160
+ placeHolders = [];
161
+ };
162
+ for (const atom of atoms) {
163
+ if (!atom.label)
164
+ continue;
165
+ // Ensure buckets are included
166
+ const allBuckets = new Set([...buckets, ...atom.buckets || []]);
167
+ // Filter atom label through blacklist
168
+ const filteredTags = filterTags([atom.label]);
169
+ const tags = filteredTags.length > 0 ? filteredTags : [atom.label]; // Keep original if filter removes everything
170
+ for (const bucket of allBuckets) {
171
+ for (const tag of tags) {
172
+ batchValues.push(atom.id, tag, bucket);
173
+ const offset = batchValues.length - 3;
174
+ placeHolders.push(`($${offset + 1}, $${offset + 2}, $${offset + 3})`);
175
+ if (placeHolders.length >= batchSize)
176
+ await flush();
177
+ }
178
+ }
179
+ }
180
+ await flush();
181
+ }
182
+ // O(n/b) bulk INSERT — byte-budget batching to avoid PGlite WASM wire buffer overflow.
183
+ // PGlite has an ~1MB wire message limit; large chat molecules can overflow with fixed row counts.
184
+ async batchWriteMolecules(molecules) {
185
+ const MAX_BATCH_ROWS = 50;
186
+ const MAX_BATCH_BYTES = 512 * 1024; // 512KB per INSERT message (safe margin under PGlite's ~1MB limit)
187
+ const total = molecules.length;
188
+ const logInterval = Math.max(1000, Math.floor(total / 10));
189
+ const molStart = Date.now();
190
+ let i = 0;
191
+ while (i < molecules.length) {
192
+ // Build batch: add rows until we hit row limit OR byte budget
193
+ const batch = [];
194
+ let batchBytes = 0;
195
+ while (i < molecules.length && batch.length < MAX_BATCH_ROWS) {
196
+ const m = molecules[i];
197
+ const rowBytes = (m.content?.length ?? 0) + (m.id?.length ?? 0) + 200; // 200 = overhead estimate
198
+ if (batch.length > 0 && batchBytes + rowBytes > MAX_BATCH_BYTES)
199
+ break;
200
+ batch.push(m);
201
+ batchBytes += rowBytes;
202
+ i++;
203
+ }
204
+ // Progress logging for large batches
205
+ if (total > 1000 && i % logInterval === 0 && i > 0) {
206
+ const elapsed = ((Date.now() - molStart) / 1000).toFixed(1);
207
+ const rate = Math.round(i / ((Date.now() - molStart) / 1000));
208
+ console.log(`[AtomicIngest] ⏱️ Molecules: ${((i / total) * 100).toFixed(0)}% (${i}/${total}) - ${elapsed}s elapsed, ${rate} mol/s`);
209
+ }
210
+ // Yield to event loop every 500 rows
211
+ if (i % 500 === 0 && i > 0) {
212
+ await new Promise(resolve => setImmediate(resolve));
213
+ }
214
+ // Build bulk INSERT with multiple VALUES
215
+ const placeholders = [];
216
+ const values = [];
217
+ let paramIdx = 1;
218
+ for (const m of batch) {
219
+ placeholders.push(`($${paramIdx++}, $${paramIdx++}, $${paramIdx++}, $${paramIdx++}, $${paramIdx++}, $${paramIdx++}, $${paramIdx++}, $${paramIdx++}, $${paramIdx++}, $${paramIdx++}, $${paramIdx++}, $${paramIdx++}, $${paramIdx++}, $${paramIdx++})`);
220
+ values.push(m.id, m.content, m.compoundId, m.sequence, m.start_byte || 0, m.end_byte || 0, m.type || 'prose',
221
+ // numeric_value: PostgreSQL real has range ~1E±37, clamp out-of-range to null
222
+ (m.numeric_value !== undefined && m.numeric_value !== null && Math.abs(m.numeric_value) < 1e37) ? m.numeric_value : null, m.numeric_unit || null, m.molecular_signature || '0', JSON.stringify(this.zeroVector()), // embedding (we don't compute embeddings here anymore)
223
+ m.timestamp || Date.now(), JSON.stringify(m.tags || []), JSON.stringify(m.entities || {}));
224
+ }
225
+ await db.run(`INSERT INTO molecules (id, content, compound_id, sequence, start_byte, end_byte, type, numeric_value, numeric_unit, molecular_signature, embedding, timestamp, tags, entities)
226
+ VALUES ${placeholders.join(', ')}
227
+ ON CONFLICT (id) DO UPDATE SET
228
+ content = EXCLUDED.content,
229
+ compound_id = EXCLUDED.compound_id,
230
+ sequence = EXCLUDED.sequence,
231
+ start_byte = EXCLUDED.start_byte,
232
+ end_byte = EXCLUDED.end_byte,
233
+ type = EXCLUDED.type,
234
+ numeric_value = EXCLUDED.numeric_value,
235
+ numeric_unit = EXCLUDED.numeric_unit,
236
+ molecular_signature = EXCLUDED.molecular_signature,
237
+ embedding = EXCLUDED.embedding,
238
+ timestamp = EXCLUDED.timestamp,
239
+ tags = EXCLUDED.tags,
240
+ entities = EXCLUDED.entities`, values);
241
+ }
242
+ const molElapsed = ((Date.now() - molStart) / 1000).toFixed(1);
243
+ console.log(`[AtomicIngest] ⏱️ Molecules batch complete: ${total} molecules, ${molElapsed}s`);
244
+ }
245
+ async batchWriteEdges(compoundId, atomIds) {
246
+ const chunkSize = 50;
247
+ for (let i = 0; i < atomIds.length; i += chunkSize) {
248
+ const chunk = atomIds.slice(i, i + chunkSize);
249
+ // Yield if processing many edges
250
+ if (i % 500 === 0 && i > 0)
251
+ await new Promise(resolve => setImmediate(resolve));
252
+ for (const atomId of chunk) {
253
+ await db.run(`INSERT INTO edges (source_id, target_id, weight, relation)
254
+ VALUES ($1, $2, $3, $4)
255
+ ON CONFLICT (source_id, target_id, relation) DO UPDATE SET
256
+ weight = EXCLUDED.weight,
257
+ relation = EXCLUDED.relation`, [compoundId, atomId, 1.0, 'has_tag']);
258
+ }
259
+ }
260
+ }
261
+ async batchWriteCompounds(compounds) {
262
+ const chunkSize = 50;
263
+ // Limits to prevent WASM memory OOB - molecules are linked via compound_id anyway
264
+ const MAX_BODY_SIZE = 500 * 1024; // 500KB max for compound body
265
+ const MAX_MOLECULE_IDS = 10000; // Don't store more than 10K IDs
266
+ const MAX_ATOM_IDS = 1000; // Don't store more than 1K atom IDs
267
+ for (let i = 0; i < compounds.length; i += chunkSize) {
268
+ const chunk = compounds.slice(i, i + chunkSize);
269
+ for (const compound of chunk) {
270
+ // Truncate compound body if too large (full content in molecules)
271
+ let compoundBody = compound.compound_body || '';
272
+ if (compoundBody.length > MAX_BODY_SIZE) {
273
+ compoundBody = compoundBody.substring(0, MAX_BODY_SIZE) + '\n... [TRUNCATED - see molecules for full content]';
274
+ }
275
+ // Limit array sizes (molecules have compound_id for lookups)
276
+ let atoms = compound.atoms || [];
277
+ let molecules = compound.molecules || [];
278
+ if (atoms.length > MAX_ATOM_IDS) {
279
+ atoms = atoms.slice(0, MAX_ATOM_IDS);
280
+ }
281
+ if (molecules.length > MAX_MOLECULE_IDS) {
282
+ molecules = molecules.slice(0, MAX_MOLECULE_IDS);
283
+ }
284
+ await db.run(`INSERT INTO compounds (id, compound_body, path, timestamp, provenance, molecular_signature, atoms, molecules, embedding)
285
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)
286
+ ON CONFLICT (id) DO UPDATE SET
287
+ compound_body = EXCLUDED.compound_body,
288
+ path = EXCLUDED.path,
289
+ timestamp = EXCLUDED.timestamp,
290
+ provenance = EXCLUDED.provenance,
291
+ molecular_signature = EXCLUDED.molecular_signature,
292
+ atoms = EXCLUDED.atoms,
293
+ molecules = EXCLUDED.molecules,
294
+ embedding = EXCLUDED.embedding`, [
295
+ compound.id,
296
+ compoundBody,
297
+ compound.path,
298
+ compound.timestamp,
299
+ compound.provenance,
300
+ compound.molecular_signature || '0',
301
+ JSON.stringify(atoms),
302
+ JSON.stringify(molecules),
303
+ JSON.stringify(this.zeroVector())
304
+ ]);
305
+ }
306
+ }
307
+ }
308
+ // O(n/b) bulk INSERT for atoms
309
+ async batchWriteMemory(compound, molecules, atoms, buckets) {
310
+ // 1. Write Compound Row
311
+ const MAX_ATOM_CONTENT_SIZE = 500 * 1024;
312
+ let atomContent = compound.compound_body;
313
+ if (atomContent.length > MAX_ATOM_CONTENT_SIZE) {
314
+ atomContent = atomContent.substring(0, MAX_ATOM_CONTENT_SIZE) + '... [TRUNCATED]';
315
+ }
316
+ await db.run(`INSERT INTO atoms (id, content, source_path, timestamp, simhash, embedding, provenance, buckets, tags, compound_id, start_byte, end_byte)
317
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)
318
+ ON CONFLICT (id) DO UPDATE SET
319
+ content = EXCLUDED.content,
320
+ source_path = EXCLUDED.source_path,
321
+ timestamp = EXCLUDED.timestamp,
322
+ simhash = EXCLUDED.simhash,
323
+ embedding = EXCLUDED.embedding,
324
+ provenance = EXCLUDED.provenance,
325
+ buckets = EXCLUDED.buckets,
326
+ tags = EXCLUDED.tags,
327
+ compound_id = EXCLUDED.compound_id,
328
+ start_byte = EXCLUDED.start_byte,
329
+ end_byte = EXCLUDED.end_byte`, [
330
+ compound.id,
331
+ atomContent,
332
+ compound.path,
333
+ compound.timestamp,
334
+ compound.molecular_signature || "0",
335
+ JSON.stringify(this.zeroVector()),
336
+ compound.provenance,
337
+ buckets,
338
+ atoms.map(a => a.label),
339
+ compound.id,
340
+ 0,
341
+ compound.compound_body.length
342
+ ]);
343
+ // 2. Write Molecule Rows in Batches
344
+ const atomLabelMap = new Map();
345
+ atoms.forEach(a => atomLabelMap.set(a.id, a.label));
346
+ const batchSize = 50;
347
+ const total = molecules.length;
348
+ const logInterval = Math.max(1000, Math.floor(total / 10));
349
+ for (let i = 0; i < molecules.length; i += batchSize) {
350
+ const batch = molecules.slice(i, Math.min(i + batchSize, molecules.length));
351
+ // Progress logging
352
+ if (total > 1000 && i % logInterval === 0 && i > 0) {
353
+ console.log(`[AtomicIngest] ⏱️ Memory/Atoms: ${((i / total) * 100).toFixed(0)}% (${i}/${total})`);
354
+ }
355
+ if (i % 500 === 0 && i > 0)
356
+ await new Promise(resolve => setImmediate(resolve));
357
+ const placeholders = [];
358
+ const values = [];
359
+ let paramIdx = 1;
360
+ for (const m of batch) {
361
+ // Extract tags from atoms and filter through blacklist
362
+ const rawTags = (m.atoms || []).map(id => atomLabelMap.get(id)).filter(l => l !== undefined);
363
+ const specificTags = filterTags(rawTags);
364
+ placeholders.push(`($${paramIdx++}, $${paramIdx++}, $${paramIdx++}, $${paramIdx++}, $${paramIdx++}, $${paramIdx++}, $${paramIdx++}, $${paramIdx++}, $${paramIdx++}, $${paramIdx++}, $${paramIdx++}, $${paramIdx++})`);
365
+ values.push(m.id, m.content, compound.path, m.timestamp || compound.timestamp, m.molecular_signature || this.generateHash(m.content), JSON.stringify(this.zeroVector()), compound.provenance, buckets, specificTags, m.compoundId, m.start_byte || 0, m.end_byte || 0);
366
+ }
367
+ await db.run(`INSERT INTO atoms (id, content, source_path, timestamp, simhash, embedding, provenance, buckets, tags, compound_id, start_byte, end_byte)
368
+ VALUES ${placeholders.join(', ')}
369
+ ON CONFLICT (id) DO UPDATE SET
370
+ content = EXCLUDED.content,
371
+ source_path = EXCLUDED.source_path,
372
+ timestamp = EXCLUDED.timestamp,
373
+ simhash = EXCLUDED.simhash,
374
+ embedding = EXCLUDED.embedding,
375
+ provenance = EXCLUDED.provenance,
376
+ buckets = EXCLUDED.buckets,
377
+ tags = EXCLUDED.tags,
378
+ compound_id = EXCLUDED.compound_id,
379
+ start_byte = EXCLUDED.start_byte,
380
+ end_byte = EXCLUDED.end_byte`, values);
381
+ }
382
+ }
383
+ // Bulk INSERT for atom positions (Lazy Molecule Inflation)
384
+ async batchWriteAtomPositions(molecules, atomLabelMap) {
385
+ const batchSize = 100;
386
+ let batch = [];
387
+ // Iterate molecules and generate position rows on the fly
388
+ // This avoids creating a massive array of all position rows in memory
389
+ for (const m of molecules) {
390
+ if (!m.atoms || m.atoms.length === 0)
391
+ continue;
392
+ const midByte = m.start_byte !== undefined ? Math.floor((m.start_byte + (m.end_byte || m.start_byte)) / 2) : 0;
393
+ for (const atomId of m.atoms) {
394
+ const label = atomLabelMap.get(atomId);
395
+ if (label) {
396
+ batch.push(m.compoundId, label, midByte);
397
+ // If batch is full, flush it
398
+ if (batch.length >= batchSize * 3) { // 3 params per row * batchSize
399
+ await this.flushAtomPositionsBatch(batch);
400
+ batch = [];
401
+ }
402
+ }
403
+ }
404
+ }
405
+ // Flush remaining
406
+ if (batch.length > 0) {
407
+ await this.flushAtomPositionsBatch(batch);
408
+ }
409
+ }
410
+ async flushAtomPositionsBatch(flatValues) {
411
+ const rowsCount = flatValues.length / 3;
412
+ const placeholders = [];
413
+ let paramIdx = 1;
414
+ for (let i = 0; i < rowsCount; i++) {
415
+ placeholders.push(`($${paramIdx++}, $${paramIdx++}, $${paramIdx++})`);
416
+ }
417
+ await db.run(`INSERT INTO atom_positions (compound_id, atom_label, byte_offset)
418
+ VALUES ${placeholders.join(', ')}
419
+ ON CONFLICT (compound_id, atom_label, byte_offset) DO NOTHING`, flatValues);
420
+ }
421
+ zeroVector() {
422
+ return new Array(config.MODELS.EMBEDDING_DIM).fill(0.1);
423
+ }
424
+ generateHash(str) {
425
+ // Simple hash for legacy field
426
+ let hash = 0;
427
+ if (str.length === 0)
428
+ return "0";
429
+ for (let i = 0; i < str.length; i++) {
430
+ const char = str.charCodeAt(i);
431
+ hash = ((hash << 5) - hash) + char;
432
+ hash |= 0;
433
+ }
434
+ return hash.toString(16);
435
+ }
436
+ }
437
+ //# sourceMappingURL=ingest-atomic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest-atomic.js","sourceRoot":"","sources":["../../../src/services/ingest/ingest-atomic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Ingest Service - Memory Ingestion with Provenance Tracking
3
+ *
4
+ * Implements the Data Provenance feature by adding a 'provenance' column
5
+ * to distinguish between "Sovereign" (User-Created) and "Ancillary" (External) data.
6
+ */
7
+ interface IngestOptions {
8
+ atomize?: boolean;
9
+ skipCleaning?: boolean;
10
+ }
11
+ /**
12
+ * Ingest content into the memory database with provenance tracking
13
+ */
14
+ export declare function ingestContent(content: string, source: string, type?: string, buckets?: string[], tags?: string[], options?: IngestOptions): Promise<{
15
+ status: string;
16
+ id?: string;
17
+ message?: string;
18
+ }>;
19
+ export interface IngestAtom {
20
+ id: string;
21
+ content: string;
22
+ sourceId: string;
23
+ sourcePath: string;
24
+ sequence: number;
25
+ timestamp: number;
26
+ provenance: 'internal' | 'external' | 'quarantine';
27
+ embedding?: number[];
28
+ hash?: string;
29
+ simhash?: string;
30
+ tags?: string[];
31
+ payload?: any;
32
+ }
33
+ /**
34
+ * Ingest pre-processed atoms
35
+ */
36
+ /**
37
+ * Ingest pre-processed atoms (Batched)
38
+ */
39
+ export declare function ingestAtoms(atoms: IngestAtom[], source: string, buckets?: string[], tags?: string[], // Batch-level tags (e.g., "inbox")
40
+ fileTimestamp?: number): Promise<number>;
41
+ /**
42
+ * Bulk import YAML content with provenance tracking
43
+ */
44
+ export declare function importYamlContent(yamlContent: any[]): Promise<{
45
+ imported: number;
46
+ skipped: number;
47
+ errors: number;
48
+ }>;
49
+ export {};
50
+ //# sourceMappingURL=ingest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../../src/services/ingest/ingest.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,UAAU,aAAa;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AA+BD;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAe,EACrB,OAAO,GAAE,MAAM,EAAa,EAC5B,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA4F5D;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;IACnD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,GAAG,CAAC;CACf;AAED;;GAEG;AACH;;GAEG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,UAAU,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,MAAM,EAAa,EAC5B,IAAI,GAAE,MAAM,EAAO,EAAE,mCAAmC;AACxD,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,CAyGjB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAgC1H"}