@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,415 @@
1
+ /**
2
+ * Automated Synonym Ring Generator
3
+ *
4
+ * Mines your existing data (codebase + chat logs) to automatically generate
5
+ * synonym rings for semantic query expansion.
6
+ *
7
+ * Strategies:
8
+ * 1. Co-occurrence Analysis: Terms appearing together frequently
9
+ * 2. Tag Neighborhood Similarity: Terms with similar tag patterns
10
+ * 3. SimHash Proximity: Terms in atoms with similar simhashes
11
+ * 4. Content Similarity: Terms appearing in similar contexts
12
+ *
13
+ * Usage:
14
+ * const generator = new AutoSynonymGenerator();
15
+ * const synonyms = await generator.generateSynonymRings();
16
+ * await generator.saveSynonymRings(synonyms, './data/synonym-ring.json');
17
+ */
18
+ import { db } from '../../core/db.js';
19
+ import path from 'path';
20
+ import fs from 'fs';
21
+ import { fileURLToPath } from 'url';
22
+ const __filename = fileURLToPath(import.meta.url);
23
+ const __dirname = path.dirname(__filename);
24
+ export class AutoSynonymGenerator {
25
+ MIN_CO_OCCURRENCE = 5; // Minimum times terms must appear together
26
+ MIN_JACCARD_SIMILARITY = 0.5; // Minimum tag neighborhood similarity
27
+ MAX_SIMHASH_DISTANCE = 8; // Maximum Hamming distance for simhash clustering
28
+ TOP_SYNONYMS_PER_TERM = 10; // Maximum synonyms to suggest per term
29
+ /**
30
+ * Specialized hamming distance for precomputed BigInts
31
+ */
32
+ fastHammingDistance(big1, big2) {
33
+ let xor = big1 ^ big2;
34
+ let distance = 0;
35
+ while (xor > 0n) {
36
+ distance += Number(xor & 1n);
37
+ xor >>= 1n;
38
+ }
39
+ return distance;
40
+ }
41
+ /**
42
+ * Strategy 1: Co-occurrence Mining
43
+ * Find terms that frequently appear together in the same atoms/documents.
44
+ *
45
+ * SQL: Finds pairs of terms appearing in same atom content
46
+ * Groups by term pairs, counts co-occurrences
47
+ * Returns top N pairs per term
48
+ */
49
+ async mineCooccurrenceSynonyms(windowSize = 100) {
50
+ console.log('[SynonymGenerator] Strategy 1: Mining co-occurrence patterns...');
51
+ const startTime = Date.now();
52
+ try {
53
+ // Get total count for progress tracking
54
+ const countQuery = `
55
+ SELECT COUNT(*) as total FROM atoms WHERE length(content) > 50
56
+ `;
57
+ const countResult = await db.run(countQuery);
58
+ const totalAtoms = countResult.rows?.[0]?.total || 0;
59
+ console.log(`[SynonymGenerator] Processing ${totalAtoms} atoms...`);
60
+ // SIMPLIFIED: Skip complex co-occurrence mining for now
61
+ // The tag neighborhood and simhash strategies are working well
62
+ console.log('[SynonymGenerator] Skipping co-occurrence mining (using tag neighborhood + simhash only)');
63
+ console.log(`[SynonymGenerator] Co-occurrence skipped in ${((Date.now() - startTime) / 1000).toFixed(1)}s`);
64
+ return new Map();
65
+ }
66
+ catch (error) {
67
+ console.error('[SynonymGenerator] Co-occurrence mining failed:', error.message);
68
+ return new Map();
69
+ }
70
+ }
71
+ /**
72
+ * Strategy 2: Tag Neighborhood Similarity
73
+ * Terms with similar tag patterns are likely synonyms.
74
+ *
75
+ * Computes Jaccard similarity between term tag-sets.
76
+ * Jaccard(A,B) = |A ∩ B| / |A ∪ B|
77
+ * Clusters terms with Jaccard > threshold
78
+ */
79
+ async mineTagNeighborhoodSynonyms() {
80
+ console.log('[SynonymGenerator] Strategy 2: Mining tag neighborhood similarity...');
81
+ try {
82
+ // Get all terms and their associated tags
83
+ const termTagsQuery = `
84
+ WITH term_tag_counts AS (
85
+ SELECT
86
+ LOWER(unnest(tags)) as tag,
87
+ a.id as atom_id
88
+ FROM atoms a
89
+ WHERE tags IS NOT NULL AND cardinality(tags) > 0
90
+ ),
91
+ term_tag_sets AS (
92
+ SELECT
93
+ tag,
94
+ array_agg(DISTINCT atom_id) as atom_ids
95
+ FROM term_tag_counts
96
+ GROUP BY tag
97
+ )
98
+ SELECT tag, atom_ids
99
+ FROM term_tag_sets
100
+ WHERE array_length(atom_ids, 1) >= 2
101
+ ORDER BY array_length(atom_ids, 1) DESC
102
+ LIMIT 500
103
+ `;
104
+ const result = await db.run(termTagsQuery);
105
+ if (!result.rows || result.rows.length < 2) {
106
+ console.log('[SynonymGenerator] Insufficient tag data for neighborhood analysis');
107
+ return new Map();
108
+ }
109
+ const termTagSets = new Map();
110
+ for (const row of result.rows) {
111
+ const { tag, atom_ids } = row;
112
+ termTagSets.set(tag, new Set(atom_ids));
113
+ }
114
+ // Compute Jaccard similarity between all pairs
115
+ const pairs = new Map();
116
+ const terms = Array.from(termTagSets.keys());
117
+ for (let i = 0; i < terms.length; i++) {
118
+ for (let j = i + 1; j < terms.length; j++) {
119
+ const term1 = terms[i];
120
+ const term2 = terms[j];
121
+ const set1 = termTagSets.get(term1);
122
+ const set2 = termTagSets.get(term2);
123
+ const intersection = new Set([...set1].filter(x => set2.has(x)));
124
+ const union = new Set([...set1, ...set2]);
125
+ const jaccard = intersection.size / union.size;
126
+ if (jaccard >= this.MIN_JACCARD_SIMILARITY) {
127
+ if (!pairs.has(term1)) {
128
+ pairs.set(term1, []);
129
+ }
130
+ pairs.get(term1).push({
131
+ term1,
132
+ term2,
133
+ score: jaccard,
134
+ strategy: 'tag_neighborhood'
135
+ });
136
+ if (!pairs.has(term2)) {
137
+ pairs.set(term2, []);
138
+ }
139
+ pairs.get(term2).push({
140
+ term1: term2,
141
+ term2: term1,
142
+ score: jaccard,
143
+ strategy: 'tag_neighborhood'
144
+ });
145
+ }
146
+ }
147
+ }
148
+ console.log(`[SynonymGenerator] Found ${pairs.size} terms with tag neighborhood synonyms`);
149
+ return pairs;
150
+ }
151
+ catch (error) {
152
+ console.error('[SynonymGenerator] Tag neighborhood mining failed:', error.message);
153
+ return new Map();
154
+ }
155
+ }
156
+ /**
157
+ * Strategy 3: SimHash Proximity
158
+ * Terms in atoms with similar simhashes are related.
159
+ *
160
+ * Groups atoms by simhash Hamming distance < threshold.
161
+ * Extracts terms from each cluster.
162
+ * Terms appearing in same cluster are candidates.
163
+ */
164
+ async mineSimHashSynonyms() {
165
+ console.log('[SynonymGenerator] Strategy 3: Mining simhash proximity...');
166
+ try {
167
+ // Get atoms with their simhashes and extract key terms
168
+ const query = `
169
+ SELECT
170
+ id,
171
+ simhash,
172
+ content,
173
+ tags
174
+ FROM atoms
175
+ WHERE simhash IS NOT NULL AND simhash != '0'
176
+ LIMIT 1000
177
+ `;
178
+ const result = await db.run(query);
179
+ if (!result.rows) {
180
+ console.log('[SynonymGenerator] No simhash data available');
181
+ return new Map();
182
+ }
183
+ // Helper to extract terms from content
184
+ const extractTerms = (content) => {
185
+ return content.toLowerCase()
186
+ .split(/[\s\W]+/)
187
+ .filter(term => term.length > 3 && term.length < 30)
188
+ .slice(0, 50); // Limit terms per atom
189
+ };
190
+ // Group atoms by simhash proximity
191
+ const atoms = result.rows;
192
+ // Precompute terms and simhash BigInts to avoid redundant work in O(N^2) loop
193
+ const atomsWithMetadata = atoms.map(atom => {
194
+ let hashBigInt;
195
+ try {
196
+ const hash = atom.simhash;
197
+ hashBigInt = BigInt(hash.startsWith('0x') ? hash : `0x${hash}`);
198
+ }
199
+ catch (e) {
200
+ // Fallback handled in distance calculation
201
+ }
202
+ return {
203
+ ...atom,
204
+ terms: extractTerms(atom.content),
205
+ hashBigInt
206
+ };
207
+ });
208
+ const termClusters = new Map(); // term -> (related_term -> co_occurrence_count)
209
+ for (let i = 0; i < atomsWithMetadata.length; i++) {
210
+ const atom1 = atomsWithMetadata[i];
211
+ for (let j = i + 1; j < atomsWithMetadata.length; j++) {
212
+ const atom2 = atomsWithMetadata[j];
213
+ // Use precomputed BigInts for faster distance calculation
214
+ let distance = 64;
215
+ if (atom1.hashBigInt !== undefined && atom2.hashBigInt !== undefined) {
216
+ distance = this.fastHammingDistance(atom1.hashBigInt, atom2.hashBigInt);
217
+ }
218
+ if (distance <= this.MAX_SIMHASH_DISTANCE) {
219
+ // Use precomputed terms
220
+ const terms1 = atom1.terms;
221
+ const terms2 = atom2.terms;
222
+ // Add cross-cluster term pairs with co-occurrence counting
223
+ for (const t1 of terms1) {
224
+ for (const t2 of terms2) {
225
+ if (t1 !== t2) {
226
+ if (!termClusters.has(t1)) {
227
+ termClusters.set(t1, new Map());
228
+ }
229
+ const related = termClusters.get(t1);
230
+ related.set(t2, (related.get(t2) || 0) + 1);
231
+ }
232
+ }
233
+ }
234
+ }
235
+ }
236
+ }
237
+ // Convert clusters to pairs with frequency-based scoring
238
+ const pairs = new Map();
239
+ for (const [term1, relatedTerms] of termClusters.entries()) {
240
+ if (!pairs.has(term1)) {
241
+ pairs.set(term1, []);
242
+ }
243
+ // Convert to array and sort by co-occurrence frequency
244
+ const sortedRelated = Array.from(relatedTerms.entries())
245
+ .sort((a, b) => b[1] - a[1]) // Sort by frequency desc
246
+ .slice(0, 20); // Top 20 related terms
247
+ for (const [term2, frequency] of sortedRelated) {
248
+ pairs.get(term1).push({
249
+ term1,
250
+ term2,
251
+ score: frequency, // Use frequency as score (higher = more reliable)
252
+ strategy: 'simhash_proximity'
253
+ });
254
+ }
255
+ }
256
+ console.log(`[SynonymGenerator] Found ${pairs.size} terms with simhash synonyms`);
257
+ return pairs;
258
+ }
259
+ catch (error) {
260
+ console.error('[SynonymGenerator] SimHash mining failed:', error.message);
261
+ return new Map();
262
+ }
263
+ }
264
+ /**
265
+ * Merge all strategies with weighted voting
266
+ * Term pairs appearing in 2+ strategies get higher confidence
267
+ */
268
+ async generateSynonymRings() {
269
+ console.log('[SynonymGenerator] Generating synonym rings from all strategies...');
270
+ // Run all strategies in parallel
271
+ const [cooccurrence, neighborhood, simhash] = await Promise.all([
272
+ this.mineCooccurrenceSynonyms(),
273
+ this.mineTagNeighborhoodSynonyms(),
274
+ this.mineSimHashSynonyms()
275
+ ]);
276
+ // Build synonym rings directly from each strategy
277
+ // No need for multi-strategy voting - each strategy has its own quality filters
278
+ const synonymRings = {};
279
+ // Helper to add synonyms
280
+ const addSynonym = (term1, term2) => {
281
+ if (!Array.isArray(synonymRings[term1]))
282
+ synonymRings[term1] = [];
283
+ if (!Array.isArray(synonymRings[term2]))
284
+ synonymRings[term2] = [];
285
+ if (!synonymRings[term1].includes(term2) && synonymRings[term1].length < this.TOP_SYNONYMS_PER_TERM) {
286
+ synonymRings[term1].push(term2);
287
+ }
288
+ if (!synonymRings[term2].includes(term1) && synonymRings[term2].length < this.TOP_SYNONYMS_PER_TERM) {
289
+ synonymRings[term2].push(term1);
290
+ }
291
+ };
292
+ // 1. Tag neighborhood pairs (high precision - Jaccard >= 0.5)
293
+ let tagPairsAdded = 0;
294
+ for (const [term, pairs] of neighborhood.entries()) {
295
+ for (const pair of pairs) {
296
+ // Jaccard score already >= 0.5 threshold
297
+ addSynonym(pair.term1, pair.term2);
298
+ tagPairsAdded++;
299
+ }
300
+ }
301
+ console.log(`[SynonymGenerator] Added ${tagPairsAdded} tag neighborhood pairs`);
302
+ // 2. SimHash proximity pairs (cluster-based)
303
+ // Score by cluster cohesion, not inverse size
304
+ let simhashPairsAdded = 0;
305
+ for (const [term, pairs] of simhash.entries()) {
306
+ // Sort pairs by score (higher = more cohesive cluster)
307
+ const sortedPairs = pairs.sort((a, b) => b.score - a.score);
308
+ // Take top pairs from each term's perspective
309
+ for (const pair of sortedPairs.slice(0, 5)) {
310
+ addSynonym(pair.term1, pair.term2);
311
+ simhashPairsAdded++;
312
+ }
313
+ }
314
+ console.log(`[SynonymGenerator] Added ${simhashPairsAdded} simhash proximity pairs`);
315
+ // 3. Co-occurrence pairs (if available)
316
+ let coocPairsAdded = 0;
317
+ for (const [term, pairs] of cooccurrence.entries()) {
318
+ for (const pair of pairs) {
319
+ addSynonym(pair.term1, pair.term2);
320
+ coocPairsAdded++;
321
+ }
322
+ }
323
+ if (coocPairsAdded > 0) {
324
+ console.log(`[SynonymGenerator] Added ${coocPairsAdded} co-occurrence pairs`);
325
+ }
326
+ console.log(`[SynonymGenerator] Generated ${Object.keys(synonymRings).length} synonym rings`);
327
+ return synonymRings;
328
+ }
329
+ /**
330
+ * Save to synonym ring file for @rbalchii/dse to load
331
+ */
332
+ async saveSynonymRings(synonyms, outputPath) {
333
+ console.log(`[SynonymGenerator] Saving synonym rings to ${outputPath}...`);
334
+ try {
335
+ // Save directly to database
336
+ console.log(`[SynonymGenerator] Upserting synonyms to database table...`);
337
+ const terms = [];
338
+ const synLists = [];
339
+ for (const [term, syns] of Object.entries(synonyms)) {
340
+ if (!syns || syns.length === 0)
341
+ continue;
342
+ terms.push(term);
343
+ synLists.push(JSON.stringify(syns));
344
+ }
345
+ // Batch insert in chunks to avoid parameter limits and optimize performance
346
+ const BATCH_SIZE = 500;
347
+ let processed = 0;
348
+ while (processed < terms.length) {
349
+ const batchTerms = terms.slice(processed, processed + BATCH_SIZE);
350
+ const batchSynLists = synLists.slice(processed, processed + BATCH_SIZE);
351
+ if (batchTerms.length > 0) {
352
+ const query = `
353
+ INSERT INTO synonyms (term, synonyms)
354
+ SELECT * FROM unnest($1::text[], $2::text[])
355
+ ON CONFLICT (term) DO UPDATE SET synonyms = EXCLUDED.synonyms, created_at = CURRENT_TIMESTAMP;
356
+ `;
357
+ await db.run(query, [batchTerms, batchSynLists]);
358
+ }
359
+ processed += BATCH_SIZE;
360
+ }
361
+ // Ensure directory exists
362
+ const dir = path.dirname(outputPath);
363
+ if (!fs.existsSync(dir)) {
364
+ fs.mkdirSync(dir, { recursive: true });
365
+ }
366
+ // Save as JSON
367
+ const jsonContent = JSON.stringify(synonyms, null, 2);
368
+ fs.writeFileSync(outputPath, jsonContent, 'utf-8');
369
+ console.log(`[SynonymGenerator] Saved ${Object.keys(synonyms).length} synonym rings`);
370
+ // Also generate a human-readable summary
371
+ const summaryPath = outputPath.replace('.json', '-summary.md');
372
+ this.generateSummary(synonyms, summaryPath);
373
+ }
374
+ catch (error) {
375
+ console.error('[SynonymGenerator] Failed to save synonym rings:', error.message);
376
+ throw error;
377
+ }
378
+ }
379
+ /**
380
+ * Generate human-readable summary
381
+ */
382
+ generateSummary(synonyms, outputPath) {
383
+ let markdown = '# Auto-Generated Synonym Rings\n\n';
384
+ markdown += `Generated: ${new Date().toISOString()}\n\n`;
385
+ markdown += `Total terms: ${Object.keys(synonyms).length}\n\n`;
386
+ markdown += '## Synonym Clusters\n\n';
387
+ // Sort by number of synonyms
388
+ const sorted = Object.entries(synonyms)
389
+ .sort((a, b) => b[1].length - a[1].length)
390
+ .slice(0, 100); // Top 100
391
+ for (const [term, synonymList] of sorted) {
392
+ markdown += `### ${term}\n`;
393
+ markdown += `**Synonyms:** ${synonymList.join(', ')}\n\n`;
394
+ }
395
+ fs.writeFileSync(outputPath, markdown, 'utf-8');
396
+ console.log(`[SynonymGenerator] Generated summary at ${outputPath}`);
397
+ }
398
+ /**
399
+ * Load existing synonym rings
400
+ */
401
+ async loadExistingSynonymRings(inputPath) {
402
+ try {
403
+ if (!fs.existsSync(inputPath)) {
404
+ return {};
405
+ }
406
+ const content = fs.readFileSync(inputPath, 'utf-8');
407
+ return JSON.parse(content);
408
+ }
409
+ catch (error) {
410
+ console.error('[SynonymGenerator] Failed to load existing synonym rings:', error.message);
411
+ return {};
412
+ }
413
+ }
414
+ }
415
+ //# sourceMappingURL=auto-synonym-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-synonym-generator.js","sourceRoot":"","sources":["../../../src/services/synonyms/auto-synonym-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * System Status Manager
3
+ *
4
+ * Tracks global system state (ingestion, search, idle) and provides
5
+ * queuing mechanism for search requests during ingestion.
6
+ */
7
+ type SystemState = 'idle' | 'ingesting' | 'searching' | 'maintenance';
8
+ interface StatusInfo {
9
+ state: SystemState;
10
+ isBusy: boolean;
11
+ activeTask?: string;
12
+ progress?: {
13
+ current: number;
14
+ total: number;
15
+ description: string;
16
+ };
17
+ lastIngestion?: Date;
18
+ queuedSearches: SearchRequest[];
19
+ }
20
+ interface SearchRequest {
21
+ query: string;
22
+ resolve: (result: any) => void;
23
+ reject: (error: Error) => void;
24
+ timestamp: number;
25
+ }
26
+ declare class SystemStatusManager {
27
+ private state;
28
+ private activeTask?;
29
+ private progress?;
30
+ private lastIngestion?;
31
+ private queuedSearches;
32
+ private isProcessingQueue;
33
+ /**
34
+ * Set system state
35
+ */
36
+ setState(state: SystemState, task?: string): void;
37
+ /**
38
+ * Set progress indicator
39
+ */
40
+ setProgress(current: number, total: number, description: string): void;
41
+ /**
42
+ * Clear progress indicator
43
+ */
44
+ clearProgress(): void;
45
+ /**
46
+ * Get current status
47
+ */
48
+ getStatus(): StatusInfo;
49
+ /**
50
+ * Check if system is ready for search
51
+ */
52
+ isReadyForSearch(): boolean;
53
+ /**
54
+ * Queue a search request for later execution
55
+ */
56
+ queueSearch(request: SearchRequest): void;
57
+ /**
58
+ * Process queued search requests
59
+ */
60
+ processQueue(searchFn: (query: string) => Promise<any>): Promise<void>;
61
+ /**
62
+ * Get estimated wait time for queued searches
63
+ */
64
+ getEstimatedWaitTime(): number;
65
+ }
66
+ export declare const systemStatus: SystemStatusManager;
67
+ export {};
68
+ //# sourceMappingURL=system-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-status.d.ts","sourceRoot":"","sources":["../../src/services/system-status.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,KAAK,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,CAAC;AAEtE,UAAU,UAAU;IAClB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,cAAc,EAAE,aAAa,EAAE,CAAC;CACjC;AAED,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,cAAM,mBAAmB;IACvB,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,CAAyB;IAC1C,OAAO,CAAC,aAAa,CAAC,CAAO;IAC7B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,iBAAiB,CAAS;IAElC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,MAAM;IAe1C;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAI/D;;OAEG;IACH,aAAa;IAIb;;OAEG;IACH,SAAS,IAAI,UAAU;IAWvB;;OAEG;IACH,gBAAgB,IAAI,OAAO;IAI3B;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,aAAa;IAKlC;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC;IAyB5D;;OAEG;IACH,oBAAoB,IAAI,MAAM;CAQ/B;AAGD,eAAO,MAAM,YAAY,qBAA4B,CAAC"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * System Status Manager
3
+ *
4
+ * Tracks global system state (ingestion, search, idle) and provides
5
+ * queuing mechanism for search requests during ingestion.
6
+ */
7
+ class SystemStatusManager {
8
+ state = 'idle';
9
+ activeTask;
10
+ progress;
11
+ lastIngestion;
12
+ queuedSearches = [];
13
+ isProcessingQueue = false;
14
+ /**
15
+ * Set system state
16
+ */
17
+ setState(state, task) {
18
+ const oldState = this.state;
19
+ this.state = state;
20
+ this.activeTask = task;
21
+ if (state === 'ingesting') {
22
+ this.lastIngestion = new Date();
23
+ }
24
+ // Log state transitions for debugging
25
+ if (oldState !== state) {
26
+ console.log(`[SystemStatus] ${oldState} → ${state}${task ? ` (${task})` : ''}`);
27
+ }
28
+ }
29
+ /**
30
+ * Set progress indicator
31
+ */
32
+ setProgress(current, total, description) {
33
+ this.progress = { current, total, description };
34
+ }
35
+ /**
36
+ * Clear progress indicator
37
+ */
38
+ clearProgress() {
39
+ this.progress = undefined;
40
+ }
41
+ /**
42
+ * Get current status
43
+ */
44
+ getStatus() {
45
+ return {
46
+ state: this.state,
47
+ isBusy: this.state === 'ingesting' || this.state === 'maintenance',
48
+ activeTask: this.activeTask,
49
+ progress: this.progress,
50
+ lastIngestion: this.lastIngestion,
51
+ queuedSearches: this.queuedSearches
52
+ };
53
+ }
54
+ /**
55
+ * Check if system is ready for search
56
+ */
57
+ isReadyForSearch() {
58
+ return this.state !== 'ingesting' && this.state !== 'maintenance';
59
+ }
60
+ /**
61
+ * Queue a search request for later execution
62
+ */
63
+ queueSearch(request) {
64
+ this.queuedSearches.push(request);
65
+ console.log(`[SystemStatus] Search queued: "${request.query.substring(0, 50)}..." (position: ${this.queuedSearches.length})`);
66
+ }
67
+ /**
68
+ * Process queued search requests
69
+ */
70
+ async processQueue(searchFn) {
71
+ if (this.isProcessingQueue || this.queuedSearches.length === 0) {
72
+ return;
73
+ }
74
+ this.isProcessingQueue = true;
75
+ try {
76
+ while (this.queuedSearches.length > 0 && this.isReadyForSearch()) {
77
+ const request = this.queuedSearches.shift();
78
+ if (request) {
79
+ try {
80
+ console.log(`[SystemStatus] Processing queued search: "${request.query.substring(0, 50)}..."`);
81
+ const result = await searchFn(request.query);
82
+ request.resolve(result);
83
+ }
84
+ catch (error) {
85
+ request.reject(error);
86
+ }
87
+ }
88
+ }
89
+ }
90
+ finally {
91
+ this.isProcessingQueue = false;
92
+ }
93
+ }
94
+ /**
95
+ * Get estimated wait time for queued searches
96
+ */
97
+ getEstimatedWaitTime() {
98
+ if (!this.lastIngestion)
99
+ return 0;
100
+ const timeSinceIngestion = Date.now() - this.lastIngestion.getTime();
101
+ const remainingWait = Math.max(0, 30000 - timeSinceIngestion); // 30 second debounce
102
+ return Math.ceil(remainingWait / 1000); // Return seconds
103
+ }
104
+ }
105
+ // Singleton instance
106
+ export const systemStatus = new SystemStatusManager();
107
+ //# sourceMappingURL=system-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-status.js","sourceRoot":"","sources":["../../src/services/system-status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Discovery Service (The Teacher)
3
+ *
4
+ * Implements "Tag Walker" Strategy (Standard 068 Phase B):
5
+ * 1. Pick a seed tag from the master list.
6
+ * 2. Find atoms that contain this tag ("Walking the Graph").
7
+ * 3. Use BERT NER to find NEW entities in these specific contexts.
8
+ * 4. Add new entities to the master list (Expansion).
9
+ */
10
+ export declare function runDiscovery(sampleSize?: number): Promise<string[]>;
11
+ /**
12
+ * Reads the master list for the Infector (and Walker).
13
+ * Uses an in-memory cache updated via file watcher.
14
+ */
15
+ export declare function getMasterTags(): string[];
16
+ //# sourceMappingURL=discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/services/tags/discovery.ts"],"names":[],"mappings":"AAaA;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,UAAU,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA+F7E;AA4DD;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAuCxC"}