@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,283 @@
1
+ /**
2
+ * Tag Quality Auditor
3
+ *
4
+ * Analyzes tagging patterns to identify:
5
+ * 1. Under-tagged atoms (high content, few tags)
6
+ * 2. Over-tagged atoms (noise)
7
+ * 3. Orphan tags (used once, never retrieved)
8
+ * 4. Tag clusters (tags that always appear together)
9
+ * 5. Missing tags (common terms not used as tags)
10
+ *
11
+ * Usage:
12
+ * const auditor = new TagAuditor();
13
+ * const report = await auditor.generateAuditReport();
14
+ * console.log(report);
15
+ */
16
+ import { db } from '../../core/db.js';
17
+ import { nlp } from '../search/query-parser.js';
18
+ export class TagAuditor {
19
+ /**
20
+ * Find under-tagged content
21
+ */
22
+ async findUnderTaggedAtoms(minContentLength = 500, maxTags = 2) {
23
+ console.log('[TagAuditor] Finding under-tagged atoms...');
24
+ // Fetch all existing distinct tags once for performance
25
+ // Bolt: Optimized array unnesting using implicit lateral join
26
+ const allTagsQuery = `SELECT DISTINCT tag FROM atoms, unnest(tags) as tag WHERE tags IS NOT NULL`;
27
+ const allTagsResult = await db.run(allTagsQuery);
28
+ const allTags = allTagsResult.rows
29
+ ? allTagsResult.rows
30
+ .map((r) => r.tag)
31
+ .filter((tag) => tag && tag.length > 0)
32
+ : [];
33
+ const query = `
34
+ SELECT id, source_path, content, length(content) as content_length,
35
+ cardinality(tags) as tag_count, tags
36
+ FROM atoms
37
+ WHERE length(content) > $1
38
+ AND (tags IS NULL OR cardinality(tags) < $2)
39
+ ORDER BY length(content) DESC
40
+ LIMIT 100
41
+ `;
42
+ const result = await db.run(query, [minContentLength, maxTags]);
43
+ if (!result.rows)
44
+ return [];
45
+ const underTagged = [];
46
+ for (const row of result.rows) {
47
+ const suggestedTags = await this.suggestTagsForAtom(row.id, 5, {
48
+ content: row.content || '',
49
+ existingTags: row.tags || [],
50
+ allTags
51
+ });
52
+ underTagged.push({
53
+ id: row.id,
54
+ source: row.source_path,
55
+ contentLength: row.content_length,
56
+ tagCount: row.tag_count || 0,
57
+ suggestedTags
58
+ });
59
+ }
60
+ console.log(`[TagAuditor] Found ${underTagged.length} under-tagged atoms`);
61
+ return underTagged;
62
+ }
63
+ /**
64
+ * Find orphan tags (used only once)
65
+ */
66
+ async findOrphanTags(minAtoms = 100) {
67
+ console.log('[TagAuditor] Finding orphan tags...');
68
+ // Bolt: Optimized array unnesting using implicit lateral join to prevent materializing intermediate table
69
+ const query = `
70
+ SELECT tag, COUNT(*) as usage_count
71
+ FROM atoms, unnest(tags) as tag
72
+ WHERE tags IS NOT NULL
73
+ GROUP BY tag
74
+ HAVING COUNT(*) = 1
75
+ ORDER BY tag
76
+ `;
77
+ const result = await db.run(query);
78
+ if (!result.rows)
79
+ return [];
80
+ const orphanTags = result.rows
81
+ .map((r) => r.tag)
82
+ .filter((tag) => tag && tag.length > 0);
83
+ console.log(`[TagAuditor] Found ${orphanTags.length} orphan tags`);
84
+ return orphanTags;
85
+ }
86
+ /**
87
+ * Find tag clusters (tags that always appear together)
88
+ */
89
+ async findTagClusters(minSupport = 10) {
90
+ console.log('[TagAuditor] Finding tag clusters...');
91
+ // Bolt: Optimized array unnesting using CTE to avoid duplicate unnest() execution
92
+ const query = `
93
+ WITH atom_tags AS (
94
+ SELECT id, tag
95
+ FROM atoms, unnest(tags) as tag
96
+ WHERE tags IS NOT NULL
97
+ ),
98
+ tag_pairs AS (
99
+ SELECT
100
+ t1.tag as tag1,
101
+ t2.tag as tag2,
102
+ COUNT(*) as co_occurrence
103
+ FROM atom_tags t1
104
+ JOIN atom_tags t2 ON t1.id = t2.id AND t1.tag < t2.tag
105
+ GROUP BY t1.tag, t2.tag
106
+ HAVING COUNT(*) >= $1
107
+ )
108
+ SELECT tag1, tag2, co_occurrence
109
+ FROM tag_pairs
110
+ ORDER BY co_occurrence DESC
111
+ LIMIT 100
112
+ `;
113
+ const result = await db.run(query, [minSupport]);
114
+ if (!result.rows)
115
+ return [];
116
+ // Build clusters from pairs
117
+ const clusters = new Map();
118
+ for (const row of result.rows) {
119
+ const { tag1, tag2 } = row;
120
+ if (!clusters.has(tag1)) {
121
+ clusters.set(tag1, new Set());
122
+ }
123
+ clusters.get(tag1).add(tag2);
124
+ if (!clusters.has(tag2)) {
125
+ clusters.set(tag2, new Set());
126
+ }
127
+ clusters.get(tag2).add(tag1);
128
+ }
129
+ // Convert to array of clusters
130
+ const clusterArray = [];
131
+ const processed = new Set();
132
+ for (const [seed, members] of clusters.entries()) {
133
+ if (processed.has(seed))
134
+ continue;
135
+ const cluster = [seed, ...Array.from(members)];
136
+ clusterArray.push(cluster);
137
+ for (const member of members) {
138
+ processed.add(member);
139
+ }
140
+ }
141
+ console.log(`[TagAuditor] Found ${clusterArray.length} tag clusters`);
142
+ return clusterArray;
143
+ }
144
+ /**
145
+ * Suggest tags for an atom based on content
146
+ */
147
+ async suggestTagsForAtom(atomId, limit = 5, context) {
148
+ try {
149
+ let atomContent = '';
150
+ let existingTags;
151
+ let allTags;
152
+ if (context) {
153
+ atomContent = context.content;
154
+ existingTags = new Set(context.existingTags || []);
155
+ allTags = context.allTags;
156
+ }
157
+ else {
158
+ // Get atom content
159
+ const atomQuery = `SELECT content, tags FROM atoms WHERE id = $1`;
160
+ const atomResult = await db.run(atomQuery, [atomId]);
161
+ if (!atomResult.rows || atomResult.rows.length === 0) {
162
+ return [];
163
+ }
164
+ const atom = atomResult.rows[0];
165
+ atomContent = atom.content || '';
166
+ existingTags = new Set(atom.tags || []);
167
+ // Get all existing tags
168
+ // Bolt: Optimized array unnesting using implicit lateral join
169
+ const allTagsQuery = `SELECT DISTINCT tag FROM atoms, unnest(tags) as tag WHERE tags IS NOT NULL`;
170
+ const allTagsResult = await db.run(allTagsQuery);
171
+ if (!allTagsResult.rows)
172
+ return [];
173
+ allTags = allTagsResult.rows
174
+ .map((r) => r.tag)
175
+ .filter((tag) => tag && tag.length > 0);
176
+ }
177
+ // Extract key terms from content
178
+ const doc = nlp.readDoc(atomContent);
179
+ const terms = doc.tokens()
180
+ .filter((t) => {
181
+ const pos = t.out(nlp.its.pos);
182
+ return pos === 'NOUN' || pos === 'PROPN' || pos === 'ADJ';
183
+ })
184
+ .out(nlp.its.normal)
185
+ .filter((term) => term.length > 3 && term.length < 30)
186
+ .slice(0, 20);
187
+ // Find matching tags
188
+ const suggestions = terms.filter((term) => {
189
+ const termLower = term.toLowerCase();
190
+ return allTags.some(tag => tag.toLowerCase() === termLower ||
191
+ tag.toLowerCase().includes(termLower)) && !existingTags.has(term);
192
+ }).slice(0, limit);
193
+ return suggestions;
194
+ }
195
+ catch (error) {
196
+ console.error('[TagAuditor] Failed to suggest tags:', error.message);
197
+ return [];
198
+ }
199
+ }
200
+ /**
201
+ * Get tag statistics
202
+ */
203
+ async getTagStatistics() {
204
+ const query = `
205
+ SELECT
206
+ COUNT(*) as total_atoms,
207
+ AVG(COALESCE(cardinality(tags), 0)) as avg_tags,
208
+ MAX(COALESCE(cardinality(tags), 0)) as max_tags,
209
+ COUNT(DISTINCT unnest(tags)) as unique_tags
210
+ FROM atoms
211
+ `;
212
+ const result = await db.run(query);
213
+ if (!result.rows || result.rows.length === 0) {
214
+ return {
215
+ avgTagsPerAtom: 0,
216
+ medianTagsPerAtom: 0,
217
+ maxTagsInAtom: 0,
218
+ uniqueTags: 0,
219
+ tagsUsedOnce: 0
220
+ };
221
+ }
222
+ const row = result.rows[0];
223
+ // Get tags used once
224
+ // Bolt: Optimized array unnesting using implicit lateral join
225
+ const orphanQuery = `
226
+ SELECT COUNT(*) as count
227
+ FROM (
228
+ SELECT tag
229
+ FROM atoms, unnest(tags) as tag
230
+ WHERE tags IS NOT NULL
231
+ GROUP BY tag
232
+ HAVING COUNT(*) = 1
233
+ )
234
+ `;
235
+ const orphanResult = await db.run(orphanQuery);
236
+ const tagsUsedOnce = orphanResult.rows?.[0]?.count || 0;
237
+ return {
238
+ avgTagsPerAtom: parseFloat(row.avg_tags) || 0,
239
+ medianTagsPerAtom: Math.round(parseFloat(row.avg_tags) || 0), // Approximation
240
+ maxTagsInAtom: row.max_tags || 0,
241
+ uniqueTags: row.unique_tags || 0,
242
+ tagsUsedOnce
243
+ };
244
+ }
245
+ /**
246
+ * Generate comprehensive audit report
247
+ */
248
+ async generateAuditReport() {
249
+ console.log('[TagAuditor] Generating comprehensive audit report...');
250
+ const [totalAtoms, totalTags, underTagged, orphanTags, tagClusters, statistics] = await Promise.all([
251
+ this.getTotalAtoms(),
252
+ this.getTotalTags(),
253
+ this.findUnderTaggedAtoms(),
254
+ this.findOrphanTags(),
255
+ this.findTagClusters(5),
256
+ this.getTagStatistics()
257
+ ]);
258
+ const suggestions = underTagged.map(atom => ({
259
+ atomId: atom.id,
260
+ suggestedTags: atom.suggestedTags,
261
+ confidence: atom.suggestedTags.length > 0 ? 0.8 : 0.3
262
+ }));
263
+ return {
264
+ totalAtoms,
265
+ totalTags,
266
+ underTagged,
267
+ orphanTags,
268
+ tagClusters,
269
+ suggestions,
270
+ statistics
271
+ };
272
+ }
273
+ async getTotalAtoms() {
274
+ const result = await db.run('SELECT COUNT(*) as count FROM atoms');
275
+ return result.rows?.[0]?.count || 0;
276
+ }
277
+ async getTotalTags() {
278
+ // Bolt: Optimized array unnesting using implicit lateral join
279
+ const result = await db.run('SELECT COUNT(DISTINCT tag) as count FROM atoms, unnest(tags) as tag WHERE tags IS NOT NULL');
280
+ return result.rows?.[0]?.count || 0;
281
+ }
282
+ }
283
+ //# sourceMappingURL=tag-auditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag-auditor.js","sourceRoot":"","sources":["../../../src/services/tags/tag-auditor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Taxonomy Manager for ECE (Dynamic Cortex Architecture)
3
+ *
4
+ * Manages the semantic categories dynamically, allowing for soft-configuration
5
+ * instead of hardcoded enums. Enables context switching between different
6
+ * domain taxonomies (Personal Relationships vs Oil Industry).
7
+ */
8
+ import { SemanticCategory } from '../../types/taxonomy.js';
9
+ export interface SemanticRule {
10
+ category: SemanticCategory;
11
+ triggers: string[];
12
+ requiredEntities?: string[];
13
+ exclusions?: string[];
14
+ weight: number;
15
+ }
16
+ export declare class TaxonomyManager {
17
+ private activeRules;
18
+ private entityCooccurrenceThreshold;
19
+ constructor();
20
+ private init;
21
+ getRules(): SemanticRule[];
22
+ saveRules(rules: SemanticRule[]): Promise<void>;
23
+ getDefaultRules(): SemanticRule[];
24
+ createBackup(name: string): Promise<string>;
25
+ listBackups(): Promise<string[]>;
26
+ restoreBackup(filename: string): Promise<any>;
27
+ /**
28
+ * Discover entities from the graph for auto-tagging suggestions
29
+ */
30
+ discoverEntitiesFromGraph(): Promise<Array<{
31
+ entity: string;
32
+ frequency: number;
33
+ suggestedCategory: string;
34
+ }>>;
35
+ private guessCategory;
36
+ /**
37
+ * Derive semantic tags for a text based on entity co-occurrence
38
+ */
39
+ deriveSemanticTags(content: string, entities: string[]): SemanticCategory[];
40
+ private entityMatchesType;
41
+ private isPersonEntity;
42
+ private isPlaceEntity;
43
+ private isConceptEntity;
44
+ private isDateEntity;
45
+ private isTechnicalEntity;
46
+ private hasTimeReference;
47
+ private containsCodeBlock;
48
+ private isCommonWord;
49
+ }
50
+ //# sourceMappingURL=taxonomy-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taxonomy-manager.d.ts","sourceRoot":"","sources":["../../../src/services/taxonomy/taxonomy-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAO3D,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,2BAA2B,CAAa;;YAMlC,IAAI;IAcX,QAAQ,IAAI,YAAY,EAAE;IAIpB,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE;IAKrC,eAAe,IAAI,YAAY,EAAE;IAqE3B,YAAY,CAAC,IAAI,EAAE,MAAM;IAOzB,WAAW;IAKX,aAAa,CAAC,QAAQ,EAAE,MAAM;IAO3C;;OAEG;IACU,yBAAyB,IAAI,OAAO,CAAC,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IA4BxH,OAAO,CAAC,aAAa;IAmBrB;;OAEG;IACI,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,gBAAgB,EAAE;IAuDlF,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,YAAY;CAOrB"}
@@ -0,0 +1,291 @@
1
+ /**
2
+ * Taxonomy Manager for ECE (Dynamic Cortex Architecture)
3
+ *
4
+ * Manages the semantic categories dynamically, allowing for soft-configuration
5
+ * instead of hardcoded enums. Enables context switching between different
6
+ * domain taxonomies (Personal Relationships vs Oil Industry).
7
+ */
8
+ import * as fs from 'fs/promises';
9
+ import * as path from 'path';
10
+ import { SemanticCategory } from '../../types/taxonomy.js';
11
+ import { db } from '../../core/db.js';
12
+ const TAXONOMY_DIR = path.join(process.cwd(), 'user_data', 'taxonomy');
13
+ const CURRENT_RULES_FILE = path.join(TAXONOMY_DIR, 'current_rules.json');
14
+ const BACKUP_DIR = path.join(TAXONOMY_DIR, 'backups');
15
+ export class TaxonomyManager {
16
+ activeRules = [];
17
+ entityCooccurrenceThreshold = 2; // Minimum entities in a molecule to trigger relationship tagging
18
+ constructor() {
19
+ this.init();
20
+ }
21
+ async init() {
22
+ await fs.mkdir(TAXONOMY_DIR, { recursive: true });
23
+ await fs.mkdir(BACKUP_DIR, { recursive: true });
24
+ try {
25
+ const data = await fs.readFile(CURRENT_RULES_FILE, 'utf-8');
26
+ this.activeRules = JSON.parse(data);
27
+ }
28
+ catch (e) {
29
+ console.log('[Taxonomy] No custom rules found. Loading defaults.');
30
+ this.activeRules = this.getDefaultRules();
31
+ await this.saveRules(this.activeRules);
32
+ }
33
+ }
34
+ getRules() {
35
+ return this.activeRules;
36
+ }
37
+ async saveRules(rules) {
38
+ this.activeRules = rules;
39
+ await fs.writeFile(CURRENT_RULES_FILE, JSON.stringify(rules, null, 2));
40
+ }
41
+ getDefaultRules() {
42
+ return [
43
+ {
44
+ category: SemanticCategory.RELATIONSHIP,
45
+ triggers: [
46
+ 'and', 'with', 'met', 'told', 'said to', 'spoke to', 'visited',
47
+ 'called', 'texted', 'together', 'relationship', 'friend', 'partner',
48
+ 'love', 'missed', 'cared about', 'knows', 'introduced to', 'about'
49
+ ],
50
+ requiredEntities: ['person'],
51
+ weight: 0.9
52
+ },
53
+ {
54
+ category: SemanticCategory.NARRATIVE,
55
+ triggers: [
56
+ 'when', 'then', 'later', 'before', 'after', 'during', 'while',
57
+ 'first', 'next', 'finally', 'meanwhile', 'eventually', 'suddenly',
58
+ 'it was', 'there was', 'once upon', 'story', 'remember', 'recall',
59
+ 'yesterday', 'today', 'tomorrow', 'morning', 'afternoon', 'evening', 'night'
60
+ ],
61
+ requiredEntities: ['person', 'date'],
62
+ weight: 0.8
63
+ },
64
+ {
65
+ category: SemanticCategory.TECHNICAL,
66
+ triggers: [
67
+ 'function', 'class', 'method', 'variable', 'code', 'algorithm',
68
+ 'API', 'endpoint', 'database', 'server', 'client', 'library',
69
+ 'framework', 'module', 'component', 'system', 'architecture',
70
+ 'Node.js', 'TypeScript', 'CozoDB', 'RAG', 'vector', 'embedding'
71
+ ],
72
+ requiredEntities: ['technical'],
73
+ weight: 0.95
74
+ },
75
+ {
76
+ category: SemanticCategory.INDUSTRY,
77
+ triggers: [
78
+ 'market', 'industry', 'company', 'business', 'finance', 'economy',
79
+ 'oil', 'gas', 'energy', 'seismic', 'co2', 'sequestration',
80
+ 'production', 'drilling', 'reservoir', 'pipeline', 'refinery',
81
+ 'barrel', 'bpd', 'mboed', 'upstream', 'midstream', 'downstream'
82
+ ],
83
+ requiredEntities: ['concept'],
84
+ weight: 0.85
85
+ },
86
+ {
87
+ category: SemanticCategory.LOCATION,
88
+ triggers: [
89
+ 'in', 'at', 'near', 'by', 'around', 'beside', 'between', 'within',
90
+ 'city', 'town', 'country', 'state', 'street', 'building', 'room',
91
+ 'address', 'coordinates', 'region', 'area', 'district', 'zone',
92
+ 'Albuquerque', 'Bernalillo', 'Sandia', 'Los Alamos', 'Texas', 'New Mexico'
93
+ ],
94
+ requiredEntities: ['place'],
95
+ weight: 0.7
96
+ },
97
+ {
98
+ category: SemanticCategory.EMOTIONAL,
99
+ triggers: [
100
+ 'happy', 'sad', 'angry', 'excited', 'frustrated', 'anxious', 'joy',
101
+ 'fear', 'love', 'hate', 'regret', 'hope', 'despair', 'grateful',
102
+ 'felt', 'emotions', 'feelings', 'heart', 'soul', 'spirit', 'lonely',
103
+ 'connected', 'isolated', 'supported', 'understood'
104
+ ],
105
+ weight: 0.8
106
+ }
107
+ ];
108
+ }
109
+ async createBackup(name) {
110
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
111
+ const filename = `${name}_${timestamp}.json`;
112
+ await fs.writeFile(path.join(BACKUP_DIR, filename), JSON.stringify(this.activeRules, null, 2));
113
+ return filename;
114
+ }
115
+ async listBackups() {
116
+ const files = await fs.readdir(BACKUP_DIR);
117
+ return files.filter(f => f.endsWith('.json'));
118
+ }
119
+ async restoreBackup(filename) {
120
+ const data = await fs.readFile(path.join(BACKUP_DIR, filename), 'utf-8');
121
+ const rules = JSON.parse(data);
122
+ await this.saveRules(rules);
123
+ return rules;
124
+ }
125
+ /**
126
+ * Discover entities from the graph for auto-tagging suggestions
127
+ */
128
+ async discoverEntitiesFromGraph() {
129
+ console.log('[Taxonomy] Starting Graph Discovery...');
130
+ try {
131
+ // Query the database for high-frequency entities
132
+ // This is a simplified version - in practice, you'd have a more sophisticated query
133
+ // that looks for named entities in your content
134
+ const result = await db.run(`
135
+ SELECT content as entity, COUNT(*) as count
136
+ FROM atoms
137
+ GROUP BY content
138
+ ORDER BY count DESC
139
+ LIMIT 50
140
+ `);
141
+ const suggestions = result.rows.map((row) => ({
142
+ entity: row.entity,
143
+ frequency: row.count,
144
+ suggestedCategory: this.guessCategory(row.entity)
145
+ })).filter((item) => item.frequency > 1); // Only include entities that appear more than once
146
+ return suggestions;
147
+ }
148
+ catch (error) {
149
+ console.error('[Taxonomy] Discovery failed:', error);
150
+ return [];
151
+ }
152
+ }
153
+ guessCategory(word) {
154
+ const lowerWord = word.toLowerCase();
155
+ // Check against known person names
156
+ const knownPeople = ['rob', 'jade', 'dory', 'coda', 'alex']; // Add more as needed
157
+ if (knownPeople.includes(lowerWord))
158
+ return 'Person/Relationship';
159
+ // Check against known places
160
+ const knownPlaces = ['albuquerque', 'bernalillo', 'sandia', 'los alamos', 'texas'];
161
+ if (knownPlaces.includes(lowerWord))
162
+ return 'Location';
163
+ // Check against known technical terms
164
+ const knownTech = ['node.js', 'typescript', 'cozodb', 'rag', 'vector', 'embedding', 'api'];
165
+ if (knownTech.some(tech => lowerWord.includes(tech)))
166
+ return 'Technical';
167
+ // Default to unknown concept
168
+ return 'Unknown Concept';
169
+ }
170
+ /**
171
+ * Derive semantic tags for a text based on entity co-occurrence
172
+ */
173
+ deriveSemanticTags(content, entities) {
174
+ const tags = new Set();
175
+ const contentLower = content.toLowerCase();
176
+ // Check each rule to see if it applies
177
+ for (const rule of this.activeRules) {
178
+ let applies = false;
179
+ // Check if any trigger words are in the content
180
+ for (const trigger of rule.triggers) {
181
+ if (contentLower.includes(trigger.toLowerCase())) {
182
+ applies = true;
183
+ break;
184
+ }
185
+ }
186
+ // If trigger matched, check required entities
187
+ if (applies && rule.requiredEntities) {
188
+ applies = rule.requiredEntities.some(reqType => entities.some(entity => this.entityMatchesType(entity, reqType)));
189
+ }
190
+ // Check for exclusions
191
+ if (applies && rule.exclusions) {
192
+ applies = !rule.exclusions.some(excl => contentLower.includes(excl.toLowerCase()));
193
+ }
194
+ if (applies) {
195
+ tags.add(rule.category);
196
+ }
197
+ }
198
+ // Special relationship logic: if multiple person entities exist in the same content, tag as relationship
199
+ const people = entities.filter(entity => this.isPersonEntity(entity));
200
+ if (people.length >= this.entityCooccurrenceThreshold) {
201
+ tags.add(SemanticCategory.RELATIONSHIP);
202
+ }
203
+ // Special narrative logic: if person and time reference exist, tag as narrative
204
+ if (people.length > 0 && this.hasTimeReference(content)) {
205
+ tags.add(SemanticCategory.NARRATIVE);
206
+ }
207
+ // Special technical logic: if technical terms exist, tag as technical
208
+ const techTerms = entities.filter(entity => this.isTechnicalEntity(entity));
209
+ if (techTerms.length > 0 || this.containsCodeBlock(content)) {
210
+ tags.add(SemanticCategory.TECHNICAL);
211
+ }
212
+ return Array.from(tags);
213
+ }
214
+ entityMatchesType(entity, entityType) {
215
+ switch (entityType) {
216
+ case 'person':
217
+ return this.isPersonEntity(entity);
218
+ case 'place':
219
+ return this.isPlaceEntity(entity);
220
+ case 'concept':
221
+ return this.isConceptEntity(entity);
222
+ case 'date':
223
+ return this.isDateEntity(entity);
224
+ case 'technical':
225
+ return this.isTechnicalEntity(entity);
226
+ default:
227
+ return false;
228
+ }
229
+ }
230
+ isPersonEntity(entity) {
231
+ // Simple heuristic for person names - could be enhanced with NER
232
+ const personIndicators = ['mr.', 'mrs.', 'ms.', 'dr.', 'prof.', 'jr.', 'sr.'];
233
+ const lowerEntity = entity.toLowerCase();
234
+ // Check if it's a capitalized name pattern
235
+ if (/^[A-Z][a-z]+$/.test(entity) && !this.isCommonWord(entity)) {
236
+ return true;
237
+ }
238
+ // Check for person indicators
239
+ return personIndicators.some(indicator => lowerEntity.includes(indicator));
240
+ }
241
+ isPlaceEntity(entity) {
242
+ const placeIndicators = ['city', 'town', 'state', 'country', 'street', 'avenue', 'road', 'building', 'avenue', 'boulevard', 'lane', 'drive', 'court', 'place', 'nm', 'tx', 'ca', 'ny', 'fl'];
243
+ return placeIndicators.some(indicator => entity.toLowerCase().includes(indicator));
244
+ }
245
+ isConceptEntity(entity) {
246
+ // Generic concept check - could be enhanced
247
+ return entity.length > 2 && !this.isPersonEntity(entity) && !this.isDateEntity(entity);
248
+ }
249
+ isDateEntity(entity) {
250
+ // Check for date patterns
251
+ const dateRegex = /^(19|20)\d{2}$|^(0?[1-9]|1[0-2])[\/\-](0?[1-9]|[12]\d|3[01])|^(0?[1-9]|[12]\d|3[01])[\/\-](0?[1-9]|1[0-2])/;
252
+ if (dateRegex.test(entity))
253
+ return true;
254
+ // Check if it's a month name
255
+ const months = ['january', 'february', 'march', 'april', 'may', 'june',
256
+ 'july', 'august', 'september', 'october', 'november', 'december'];
257
+ return months.includes(entity.toLowerCase());
258
+ }
259
+ isTechnicalEntity(entity) {
260
+ const techTerms = [
261
+ 'node.js', 'typescript', 'javascript', 'api', 'database', 'function', 'class',
262
+ 'method', 'variable', 'algorithm', 'cozodb', 'electron', 'react', 'vite',
263
+ 'graphql', 'rest', 'json', 'xml', 'html', 'css', 'sql', 'nosql', 'mongodb',
264
+ 'postgresql', 'mysql', 'redis', 'docker', 'kubernetes', 'aws', 'azure', 'gcp',
265
+ 'rag', 'vector', 'embedding', 'simhash', 'cozo', 'rocksdb'
266
+ ];
267
+ return techTerms.includes(entity.toLowerCase());
268
+ }
269
+ hasTimeReference(content) {
270
+ const timePatterns = [
271
+ /\b\d{4}\b/, // Year patterns
272
+ /yesterday|today|tomorrow/,
273
+ /morning|afternoon|evening|night/,
274
+ /january|february|march|april|may|june|july|august|september|october|november|december/i,
275
+ /monday|tuesday|wednesday|thursday|friday|saturday|sunday/i
276
+ ];
277
+ return timePatterns.some(pattern => pattern.test(content.toLowerCase()));
278
+ }
279
+ containsCodeBlock(content) {
280
+ return /```[\s\S]*?```|`[^`]*`/.test(content) ||
281
+ /function\s+\w+\s*\(|class\s+\w+|import\s+\w+|const\s+\w+\s*=/.test(content);
282
+ }
283
+ isCommonWord(word) {
284
+ const commonWords = ['the', 'a', 'an', 'and', 'or', 'but', 'in', 'on', 'at', 'to', 'for',
285
+ 'of', 'with', 'by', 'is', 'are', 'was', 'were', 'be', 'been', 'being',
286
+ 'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'could',
287
+ 'should', 'may', 'might', 'must', 'can', 'shall', 'this', 'that', 'these', 'those'];
288
+ return commonWords.includes(word.toLowerCase());
289
+ }
290
+ }
291
+ //# sourceMappingURL=taxonomy-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taxonomy-manager.js","sourceRoot":"","sources":["../../../src/services/taxonomy/taxonomy-manager.ts"],"names":[],"mappings":"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"}