@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,4 @@
1
+ export function startVisionServer(): Promise<void>;
2
+ export function stopVisionServer(): void;
3
+ export function analyzeImage(base64Image: any, prompt: any): Promise<any>;
4
+ //# sourceMappingURL=vision_service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vision_service.d.ts","sourceRoot":"","sources":["../../../src/services/vision/vision_service.js"],"names":[],"mappings":"AAgEA,mDAqEC;AAED,yCAKC;AAED,0EAgEC"}
@@ -0,0 +1,197 @@
1
+ const { spawn } = require('child_process');
2
+ const path = require('path');
3
+ const fs = require('fs');
4
+ const http = require('http');
5
+ const paths = require('../../config/paths');
6
+ const Config = require('../../config');
7
+ let serverProcess = null;
8
+ let lastVisionError = null;
9
+ const SERVER_PORT = Config.SERVICES.VISION_SERVER_PORT;
10
+ const BIN_PATH = path.join(paths.BASE_PATH, 'engine/bin/llama-server.exe');
11
+ const MODEL_DIR = path.join(paths.BASE_PATH, 'engine/models/vision');
12
+ const VISION_CONFIG = Config.MODELS.VISION;
13
+ // Auto-detect model file
14
+ const getModelPath = () => {
15
+ try {
16
+ // Prioritize User's custom model from Config
17
+ if (VISION_CONFIG.PATH) {
18
+ // Check if absolute path
19
+ if (fs.existsSync(VISION_CONFIG.PATH)) {
20
+ console.log(`[Vision] Using configured path: ${VISION_CONFIG.PATH}`);
21
+ return VISION_CONFIG.PATH;
22
+ }
23
+ // Check if relative to MODEL_DIR
24
+ const relativePath = path.join(MODEL_DIR, VISION_CONFIG.PATH);
25
+ if (fs.existsSync(relativePath)) {
26
+ console.log(`[Vision] Using configured model (relative): ${relativePath}`);
27
+ return relativePath;
28
+ }
29
+ }
30
+ if (!fs.existsSync(MODEL_DIR)) {
31
+ console.log(`[Vision] MODEL_DIR not found: ${MODEL_DIR}`);
32
+ return null;
33
+ }
34
+ const files = fs.readdirSync(MODEL_DIR);
35
+ const gguf = files.find(f => f.endsWith('.gguf') && !f.includes('mmproj'));
36
+ return gguf ? path.join(MODEL_DIR, gguf) : null;
37
+ }
38
+ catch (e) {
39
+ console.error(`[Vision] Error detecting models: ${e.message}`);
40
+ return null;
41
+ }
42
+ };
43
+ // Optional: detect separate projector if exists
44
+ const getMmprojPath = () => {
45
+ try {
46
+ // Check Config first
47
+ if (VISION_CONFIG.PROJECTOR) {
48
+ const configProjPath = path.isAbsolute(VISION_CONFIG.PROJECTOR)
49
+ ? VISION_CONFIG.PROJECTOR
50
+ : path.join(MODEL_DIR, VISION_CONFIG.PROJECTOR);
51
+ if (fs.existsSync(configProjPath))
52
+ return configProjPath;
53
+ }
54
+ if (!fs.existsSync(MODEL_DIR))
55
+ return null;
56
+ const files = fs.readdirSync(MODEL_DIR);
57
+ const proj = files.find(f => f.includes('mmproj'));
58
+ return proj ? path.join(MODEL_DIR, proj) : null;
59
+ }
60
+ catch (e) {
61
+ return null;
62
+ }
63
+ };
64
+ async function startVisionServer() {
65
+ if (serverProcess) {
66
+ // Double check if process is really alive, otherwise nullify
67
+ if (serverProcess.exitCode !== null) {
68
+ console.warn("[Vision] Process found but it has exited. Restarting...");
69
+ serverProcess = null;
70
+ }
71
+ else {
72
+ return;
73
+ }
74
+ }
75
+ const modelPath = getModelPath();
76
+ if (!modelPath) {
77
+ console.warn("[Vision] No GGUF model found. Vision features disabled.");
78
+ return;
79
+ }
80
+ const args = [
81
+ '-m', modelPath,
82
+ '--port', SERVER_PORT.toString(),
83
+ '-c', VISION_CONFIG.CTX_SIZE.toString(),
84
+ '--n-gpu-layers', VISION_CONFIG.GPU_LAYERS.toString(),
85
+ ];
86
+ // Check if separate mmproj exists
87
+ const mmproj = getMmprojPath();
88
+ if (mmproj) {
89
+ args.push('--mmproj', mmproj);
90
+ }
91
+ console.log(`[Vision] Launching Binary Sidecar: llama-server.exe on port ${SERVER_PORT}`);
92
+ console.log(`[Vision] Model Path: ${modelPath}`);
93
+ if (mmproj)
94
+ console.log(`[Vision] Projector Path: ${mmproj}`);
95
+ try {
96
+ serverProcess = spawn(BIN_PATH, args, {
97
+ stdio: ['ignore', 'pipe', 'pipe']
98
+ });
99
+ serverProcess.stdout.on('data', (data) => {
100
+ const msg = data.toString();
101
+ // console.log(`[Vision Binary] ${msg}`);
102
+ });
103
+ serverProcess.stderr.on('data', (data) => {
104
+ const msg = data.toString();
105
+ if (msg.includes('server is listening') || msg.includes('HTTP server listening')) {
106
+ console.log(`[Vision] Sidecar Ready.`);
107
+ }
108
+ // Detect specific architecture errors
109
+ if (msg.includes('unknown model architecture')) {
110
+ lastVisionError = "Incompatible Binary: Your llama-server.exe does not support this model type (e.g. Qwen2-VL). Please update engine/bin or use a different model.";
111
+ console.error(`[Vision Critical] ${lastVisionError}`);
112
+ }
113
+ // LOG ALL ERRORS
114
+ if (msg.includes('error') || msg.includes('Error') || msg.includes('failed')) {
115
+ console.error(`[Vision Binary Error] ${msg.trim()}`);
116
+ }
117
+ });
118
+ serverProcess.on('close', (code) => {
119
+ console.log(`[Vision] Sidecar exited with code ${code}`);
120
+ serverProcess = null;
121
+ });
122
+ }
123
+ catch (e) {
124
+ console.error(`[Vision] Failed to spawn sidecar: ${e.message}`);
125
+ }
126
+ }
127
+ function stopVisionServer() {
128
+ if (serverProcess) {
129
+ serverProcess.kill();
130
+ serverProcess = null;
131
+ }
132
+ }
133
+ async function analyzeImage(base64Image, prompt) {
134
+ if (!serverProcess) {
135
+ lastVisionError = null;
136
+ await startVisionServer();
137
+ if (!serverProcess)
138
+ throw new Error("Vision server failed to start (Mock Mode or Missing Binary).");
139
+ // Wait for boot
140
+ await new Promise(r => setTimeout(r, 4000)); // Fixed timeout for now, could be configurable later
141
+ if (!serverProcess) {
142
+ // Return the specific error if captured, otherwise generic
143
+ throw new Error(lastVisionError || "Vision server crashed during startup.");
144
+ }
145
+ }
146
+ return new Promise((resolve, reject) => {
147
+ // Standard ChatML format for Qwen2-VL
148
+ const payload = JSON.stringify({
149
+ prompt: `<|im_start|>system\nYou are a helpful visual assistant. You can see the image provided. Describe it in detail.<|im_end|>\n<|im_start|>user\n<image>\n${prompt}<|im_end|>\n<|im_start|>assistant\n`,
150
+ image_data: [{ data: base64Image, id: 12 }],
151
+ n_predict: 400,
152
+ temperature: 0.1,
153
+ cache_prompt: true
154
+ });
155
+ const options = {
156
+ hostname: 'localhost',
157
+ port: SERVER_PORT,
158
+ path: '/completion',
159
+ method: 'POST',
160
+ headers: {
161
+ 'Content-Type': 'application/json',
162
+ 'Content-Length': payload.length
163
+ }
164
+ };
165
+ const req = http.request(options, (res) => {
166
+ let data = '';
167
+ res.on('data', (chunk) => data += chunk);
168
+ res.on('end', () => {
169
+ if (!data || data.trim().length === 0) {
170
+ return reject(new Error("Vision sidecar returned empty response. It may have crashed."));
171
+ }
172
+ try {
173
+ const json = JSON.parse(data);
174
+ // Standard llama-server completion response
175
+ resolve(json.content || json.text || String(data));
176
+ }
177
+ catch (e) {
178
+ // If not JSON, it might be raw text error output
179
+ if (data.includes('error') || data.includes('failed')) {
180
+ reject(new Error(`Vision sidecar error: ${data.substring(0, 100)}`));
181
+ }
182
+ else {
183
+ reject(new Error(`Failed to parse vision response: ${e.message}`));
184
+ }
185
+ }
186
+ });
187
+ });
188
+ req.on('error', (e) => {
189
+ reject(new Error(`Vision Request Error: ${e.message}`));
190
+ });
191
+ req.write(payload);
192
+ req.end();
193
+ });
194
+ }
195
+ module.exports = { startVisionServer, stopVisionServer, analyzeImage };
196
+ export {};
197
+ //# sourceMappingURL=vision_service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vision_service.js","sourceRoot":"","sources":["../../../src/services/vision/vision_service.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Centralized Test Framework for Anchor Engine
3
+ *
4
+ * Implements a comprehensive testing framework with support for:
5
+ * - Unit tests
6
+ * - Integration tests
7
+ * - Performance tests
8
+ * - Dataset-specific tests
9
+ * - Diagnostic tests
10
+ */
11
+ export interface TestResult {
12
+ name: string;
13
+ status: 'PASS' | 'FAIL' | 'SKIP';
14
+ duration: number;
15
+ error?: Error;
16
+ details?: any;
17
+ }
18
+ export interface TestConfig {
19
+ name: string;
20
+ description: string;
21
+ testFn: () => Promise<void> | void;
22
+ timeout?: number;
23
+ tags?: string[];
24
+ dependencies?: string[];
25
+ skip?: boolean;
26
+ only?: boolean;
27
+ }
28
+ export interface TestSuiteConfig {
29
+ name: string;
30
+ description: string;
31
+ tests: TestConfig[];
32
+ timeout?: number;
33
+ environment?: 'node' | 'browser' | 'integration' | string;
34
+ tags?: string[];
35
+ }
36
+ export interface TestReport {
37
+ suiteName: string;
38
+ startTime: Date;
39
+ endTime: Date;
40
+ duration: number;
41
+ results: TestResult[];
42
+ passed: number;
43
+ failed: number;
44
+ skipped: number;
45
+ coverage?: TestCoverage;
46
+ }
47
+ export interface TestCoverage {
48
+ files: number;
49
+ statements: number;
50
+ branches: number;
51
+ functions: number;
52
+ lines: number;
53
+ }
54
+ export declare class TestFramework {
55
+ private testSuites;
56
+ private reporters;
57
+ private globalTimeout;
58
+ private bailMode;
59
+ private verbose;
60
+ constructor(options?: {
61
+ timeout?: number;
62
+ bailMode?: boolean;
63
+ verbose?: boolean;
64
+ });
65
+ /**
66
+ * Register a test suite
67
+ */
68
+ addTestSuite(suite: TestSuiteConfig): void;
69
+ /**
70
+ * Add a reporter for test results
71
+ */
72
+ addReporter(reporter: Reporter): void;
73
+ /**
74
+ * Run all registered test suites
75
+ */
76
+ runAll(): Promise<TestReport[]>;
77
+ /**
78
+ * Run a specific test suite
79
+ */
80
+ runTestSuite(suite: TestSuiteConfig): Promise<TestReport>;
81
+ /**
82
+ * Run a single test case
83
+ */
84
+ runTestCase(testCase: TestConfig, timeout: number): Promise<TestResult>;
85
+ /**
86
+ * Run tests matching specific tags
87
+ */
88
+ runTestsByTag(tag: string): Promise<TestReport[]>;
89
+ /**
90
+ * Run tests matching a specific pattern
91
+ */
92
+ runTestsByName(pattern: string): Promise<TestReport[]>;
93
+ /**
94
+ * Get test statistics
95
+ */
96
+ getStats(): {
97
+ suites: number;
98
+ tests: number;
99
+ passed: number;
100
+ failed: number;
101
+ skipped: number;
102
+ };
103
+ }
104
+ /**
105
+ * Base reporter interface
106
+ */
107
+ export interface Reporter {
108
+ generate(reports: TestReport[]): Promise<void>;
109
+ }
110
+ /**
111
+ * Console reporter
112
+ */
113
+ export declare class ConsoleReporter implements Reporter {
114
+ generate(reports: TestReport[]): Promise<void>;
115
+ }
116
+ /**
117
+ * JSON reporter
118
+ */
119
+ export declare class JSONReporter implements Reporter {
120
+ private outputFile;
121
+ constructor(outputFile?: string);
122
+ generate(reports: TestReport[]): Promise<void>;
123
+ }
124
+ /**
125
+ * JUnit XML reporter
126
+ */
127
+ export declare class JUnitReporter implements Reporter {
128
+ private outputFile;
129
+ constructor(outputFile?: string);
130
+ generate(reports: TestReport[]): Promise<void>;
131
+ }
132
+ export declare const testFramework: TestFramework;
133
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/test-framework/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,313 @@
1
+ /**
2
+ * Centralized Test Framework for Anchor Engine
3
+ *
4
+ * Implements a comprehensive testing framework with support for:
5
+ * - Unit tests
6
+ * - Integration tests
7
+ * - Performance tests
8
+ * - Dataset-specific tests
9
+ * - Diagnostic tests
10
+ */
11
+ import * as fs from 'fs';
12
+ import * as path from 'path';
13
+ import { fileURLToPath } from 'url';
14
+ const __filename = fileURLToPath(import.meta.url);
15
+ const __dirname = path.dirname(__filename);
16
+ export class TestFramework {
17
+ testSuites = [];
18
+ reporters = [];
19
+ globalTimeout = 30000; // 30 seconds default
20
+ bailMode = false; // Stop on first failure
21
+ verbose = false;
22
+ constructor(options = {}) {
23
+ this.globalTimeout = options.timeout || this.globalTimeout;
24
+ this.bailMode = options.bailMode || this.bailMode;
25
+ this.verbose = options.verbose || this.verbose;
26
+ }
27
+ /**
28
+ * Register a test suite
29
+ */
30
+ addTestSuite(suite) {
31
+ this.testSuites.push(suite);
32
+ }
33
+ /**
34
+ * Add a reporter for test results
35
+ */
36
+ addReporter(reporter) {
37
+ this.reporters.push(reporter);
38
+ }
39
+ /**
40
+ * Run all registered test suites
41
+ */
42
+ async runAll() {
43
+ const reports = [];
44
+ for (const suite of this.testSuites) {
45
+ const report = await this.runTestSuite(suite);
46
+ reports.push(report);
47
+ // Bail if bail mode is enabled and there was a failure
48
+ if (this.bailMode && report.failed > 0) {
49
+ break;
50
+ }
51
+ }
52
+ // Generate reports
53
+ for (const reporter of this.reporters) {
54
+ await reporter.generate(reports);
55
+ }
56
+ return reports;
57
+ }
58
+ /**
59
+ * Run a specific test suite
60
+ */
61
+ async runTestSuite(suite) {
62
+ const startTime = new Date();
63
+ const results = [];
64
+ let passed = 0;
65
+ let failed = 0;
66
+ let skipped = 0;
67
+ console.log(`\n🧪 Running Test Suite: ${suite.name}`);
68
+ console.log(`šŸ“ ${suite.description}`);
69
+ console.log(`šŸ“Š Tests: ${suite.tests.length}`);
70
+ // Filter tests based on 'only' flag
71
+ const testsToRun = suite.tests.filter(test => !test.only) || suite.tests.filter(test => test.only);
72
+ for (const testCase of testsToRun) {
73
+ if (testCase.skip) {
74
+ skipped++;
75
+ results.push({
76
+ name: testCase.name,
77
+ status: 'SKIP',
78
+ duration: 0,
79
+ details: { description: testCase.description }
80
+ });
81
+ continue;
82
+ }
83
+ const result = await this.runTestCase(testCase, suite.timeout || this.globalTimeout);
84
+ results.push(result);
85
+ if (result.status === 'PASS') {
86
+ passed++;
87
+ }
88
+ else if (result.status === 'FAIL') {
89
+ failed++;
90
+ if (this.bailMode) {
91
+ break;
92
+ }
93
+ }
94
+ // Log result
95
+ const statusSymbol = result.status === 'PASS' ? 'āœ…' : result.status === 'SKIP' ? 'ā­ļø' : 'āŒ';
96
+ console.log(` ${statusSymbol} ${testCase.name} (${result.duration}ms)`);
97
+ if (result.error && this.verbose) {
98
+ console.log(` Error: ${result.error.message}`);
99
+ }
100
+ }
101
+ const endTime = new Date();
102
+ const duration = endTime.getTime() - startTime.getTime();
103
+ const report = {
104
+ suiteName: suite.name,
105
+ startTime,
106
+ endTime,
107
+ duration,
108
+ results,
109
+ passed,
110
+ failed,
111
+ skipped
112
+ };
113
+ return report;
114
+ }
115
+ /**
116
+ * Run a single test case
117
+ */
118
+ async runTestCase(testCase, timeout) {
119
+ const startTime = Date.now();
120
+ let timeoutId = null;
121
+ try {
122
+ // Set up timeout promise
123
+ const timeoutPromise = new Promise((_, reject) => {
124
+ timeoutId = setTimeout(() => {
125
+ reject(new Error(`Test timeout after ${timeout}ms`));
126
+ }, timeout);
127
+ });
128
+ // Run the test with timeout protection
129
+ const testPromise = Promise.resolve(testCase.testFn());
130
+ const result = await Promise.race([testPromise, timeoutPromise]);
131
+ // Clear timeout if test completed successfully
132
+ if (timeoutId) {
133
+ clearTimeout(timeoutId);
134
+ }
135
+ return {
136
+ name: testCase.name,
137
+ status: 'PASS',
138
+ duration: Date.now() - startTime,
139
+ details: { description: testCase.description }
140
+ };
141
+ }
142
+ catch (error) {
143
+ // Clear timeout if test failed
144
+ if (timeoutId) {
145
+ clearTimeout(timeoutId);
146
+ }
147
+ return {
148
+ name: testCase.name,
149
+ status: 'FAIL',
150
+ duration: Date.now() - startTime,
151
+ error: error,
152
+ details: { description: testCase.description }
153
+ };
154
+ }
155
+ }
156
+ /**
157
+ * Run tests matching specific tags
158
+ */
159
+ async runTestsByTag(tag) {
160
+ const filteredSuites = this.testSuites.map(suite => ({
161
+ ...suite,
162
+ tests: suite.tests.filter(test => test.tags?.includes(tag))
163
+ })).filter(suite => suite.tests.length > 0);
164
+ const originalSuites = this.testSuites;
165
+ this.testSuites = filteredSuites;
166
+ try {
167
+ return await this.runAll();
168
+ }
169
+ finally {
170
+ // Restore original suites
171
+ this.testSuites = originalSuites;
172
+ }
173
+ }
174
+ /**
175
+ * Run tests matching a specific pattern
176
+ */
177
+ async runTestsByName(pattern) {
178
+ const filteredSuites = this.testSuites.map(suite => ({
179
+ ...suite,
180
+ tests: suite.tests.filter(test => test.name.includes(pattern))
181
+ })).filter(suite => suite.tests.length > 0);
182
+ const originalSuites = this.testSuites;
183
+ this.testSuites = filteredSuites;
184
+ try {
185
+ return await this.runAll();
186
+ }
187
+ finally {
188
+ // Restore original suites
189
+ this.testSuites = originalSuites;
190
+ }
191
+ }
192
+ /**
193
+ * Get test statistics
194
+ */
195
+ getStats() {
196
+ let totalTests = 0;
197
+ let totalPassed = 0;
198
+ let totalFailed = 0;
199
+ let totalSkipped = 0;
200
+ for (const suite of this.testSuites) {
201
+ totalTests += suite.tests.length;
202
+ totalSkipped += suite.tests.filter(t => t.skip).length;
203
+ }
204
+ return {
205
+ suites: this.testSuites.length,
206
+ tests: totalTests,
207
+ passed: totalPassed,
208
+ failed: totalFailed,
209
+ skipped: totalSkipped
210
+ };
211
+ }
212
+ }
213
+ /**
214
+ * Console reporter
215
+ */
216
+ export class ConsoleReporter {
217
+ async generate(reports) {
218
+ console.log('\n' + '='.repeat(60));
219
+ console.log('TEST REPORT');
220
+ console.log('='.repeat(60));
221
+ for (const report of reports) {
222
+ console.log(`\nSuite: ${report.suiteName}`);
223
+ console.log(`Duration: ${report.duration}ms`);
224
+ console.log(`Passed: ${report.passed}, Failed: ${report.failed}, Skipped: ${report.skipped}`);
225
+ // Show failed tests
226
+ const failedTests = report.results.filter(r => r.status === 'FAIL');
227
+ if (failedTests.length > 0) {
228
+ console.log('\nFailed Tests:');
229
+ for (const test of failedTests) {
230
+ console.log(` āŒ ${test.name}`);
231
+ if (test.error) {
232
+ console.log(` ${test.error.message}`);
233
+ }
234
+ }
235
+ }
236
+ }
237
+ // Overall summary
238
+ const totalPassed = reports.reduce((sum, r) => sum + r.passed, 0);
239
+ const totalFailed = reports.reduce((sum, r) => sum + r.failed, 0);
240
+ const totalSkipped = reports.reduce((sum, r) => sum + r.skipped, 0);
241
+ const totalTests = totalPassed + totalFailed + totalSkipped;
242
+ console.log('\n' + '='.repeat(60));
243
+ console.log(`TOTAL: ${totalTests} tests (${totalPassed} passed, ${totalFailed} failed, ${totalSkipped} skipped)`);
244
+ console.log('='.repeat(60));
245
+ if (totalFailed > 0) {
246
+ console.log('āŒ Some tests failed');
247
+ process.exit(1);
248
+ }
249
+ else {
250
+ console.log('āœ… All tests passed');
251
+ process.exit(0);
252
+ }
253
+ }
254
+ }
255
+ /**
256
+ * JSON reporter
257
+ */
258
+ export class JSONReporter {
259
+ outputFile;
260
+ constructor(outputFile = 'test-report.json') {
261
+ this.outputFile = outputFile;
262
+ }
263
+ async generate(reports) {
264
+ const reportData = {
265
+ timestamp: new Date().toISOString(),
266
+ reports,
267
+ summary: {
268
+ totalSuites: reports.length,
269
+ totalTests: reports.reduce((sum, r) => r.results.length, 0),
270
+ totalPassed: reports.reduce((sum, r) => sum + r.passed, 0),
271
+ totalFailed: reports.reduce((sum, r) => sum + r.failed, 0),
272
+ totalSkipped: reports.reduce((sum, r) => sum + r.skipped, 0)
273
+ }
274
+ };
275
+ await fs.promises.writeFile(this.outputFile, JSON.stringify(reportData, null, 2));
276
+ console.log(`\nšŸ“Š JSON report saved to: ${this.outputFile}`);
277
+ }
278
+ }
279
+ /**
280
+ * JUnit XML reporter
281
+ */
282
+ export class JUnitReporter {
283
+ outputFile;
284
+ constructor(outputFile = 'test-report.xml') {
285
+ this.outputFile = outputFile;
286
+ }
287
+ async generate(reports) {
288
+ let xml = '<?xml version="1.0" encoding="UTF-8"?>\n<testsuites>\n';
289
+ for (const report of reports) {
290
+ xml += ` <testsuite name="${report.suiteName}" tests="${report.results.length}" failures="${report.failed}" errors="0" skipped="${report.skipped}" time="${report.duration / 1000}">\n`;
291
+ for (const result of report.results) {
292
+ xml += ` <testcase name="${result.name}" time="${result.duration / 1000}"`;
293
+ if (result.status === 'FAIL') {
294
+ xml += `>\n <failure message="${result.error?.message || 'Unknown error'}"><![CDATA[${result.error?.stack || ''}]]></failure>\n </testcase>\n`;
295
+ }
296
+ else if (result.status === 'SKIP') {
297
+ xml += `>\n <skipped/>\n </testcase>\n`;
298
+ }
299
+ else {
300
+ xml += '/>\n';
301
+ }
302
+ }
303
+ xml += ' </testsuite>\n';
304
+ }
305
+ xml += '</testsuites>';
306
+ await fs.promises.writeFile(this.outputFile, xml);
307
+ console.log(`\nšŸ“Š JUnit XML report saved to: ${this.outputFile}`);
308
+ }
309
+ }
310
+ // Export a default instance for convenience
311
+ export const testFramework = new TestFramework();
312
+ // Export the core classes and types
313
+ //# sourceMappingURL=core.js.map