@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,130 @@
1
+ /**
2
+ * Export Utility Functions
3
+ *
4
+ * Provides functionality to export query results in various formats
5
+ */
6
+ import fs from 'fs/promises';
7
+ import path from 'path';
8
+ /**
9
+ * Export results to specified format and file
10
+ */
11
+ export async function exportResults(results, filename, format = 'json') {
12
+ let content;
13
+ switch (format.toLowerCase()) {
14
+ case 'csv':
15
+ content = toCSV(results);
16
+ break;
17
+ case 'json':
18
+ content = toJSON(results);
19
+ break;
20
+ case 'yaml':
21
+ content = toYAML(results);
22
+ break;
23
+ case 'table':
24
+ content = toTable(results);
25
+ break;
26
+ default:
27
+ throw new Error(`Unsupported export format: ${format}`);
28
+ }
29
+ // Ensure the directory exists
30
+ const dir = path.dirname(filename);
31
+ await fs.mkdir(dir, { recursive: true });
32
+ // Write the file
33
+ await fs.writeFile(filename, content);
34
+ }
35
+ /**
36
+ * Convert results to CSV format
37
+ */
38
+ function toCSV(results) {
39
+ if (results.length === 0) {
40
+ return '';
41
+ }
42
+ // Get headers from the first row
43
+ const headers = Object.keys(results[0]);
44
+ const headerRow = headers.join(',');
45
+ // Convert each row to CSV
46
+ const rows = results.map(row => {
47
+ return headers.map(header => {
48
+ let value = row[header];
49
+ if (value === null || value === undefined) {
50
+ return '';
51
+ }
52
+ value = String(value);
53
+ // Escape quotes and wrap in quotes if needed
54
+ if (value.includes(',') || value.includes('"') || value.includes('\n')) {
55
+ value = '"' + value.replace(/"/g, '""') + '"';
56
+ }
57
+ return value;
58
+ }).join(',');
59
+ });
60
+ return [headerRow, ...rows].join('\n');
61
+ }
62
+ /**
63
+ * Convert results to JSON format
64
+ */
65
+ function toJSON(results) {
66
+ return JSON.stringify(results, null, 2);
67
+ }
68
+ /**
69
+ * Convert results to YAML format
70
+ */
71
+ function toYAML(results) {
72
+ if (results.length === 0) {
73
+ return '[]';
74
+ }
75
+ // Simple YAML conversion (for more complex YAML, a library would be better)
76
+ const yamlLines = ['-'];
77
+ for (let i = 0; i < results.length; i++) {
78
+ if (i > 0) {
79
+ yamlLines.push('-');
80
+ }
81
+ const row = results[i];
82
+ for (const [key, value] of Object.entries(row)) {
83
+ yamlLines.push(` ${key}: ${formatYAMLValue(value)}`);
84
+ }
85
+ }
86
+ return yamlLines.join('\n');
87
+ }
88
+ /**
89
+ * Helper to format values for YAML
90
+ */
91
+ function formatYAMLValue(value) {
92
+ if (value === null || value === undefined) {
93
+ return 'null';
94
+ }
95
+ if (typeof value === 'string') {
96
+ // Simple string quoting if needed
97
+ if (value.includes(' ') || value.includes('\n') || value.includes('"') || value.includes("'")) {
98
+ return `"${value.replace(/"/g, '\\"')}"`;
99
+ }
100
+ return value;
101
+ }
102
+ if (typeof value === 'object') {
103
+ return JSON.stringify(value);
104
+ }
105
+ return String(value);
106
+ }
107
+ /**
108
+ * Convert results to a formatted table string
109
+ */
110
+ function toTable(results) {
111
+ if (results.length === 0) {
112
+ return 'No results';
113
+ }
114
+ // Get headers
115
+ const headers = Object.keys(results[0]);
116
+ // Calculate column widths
117
+ const colWidths = {};
118
+ for (const header of headers) {
119
+ colWidths[header] = Math.max(header.length, ...results.map(row => String(row[header] ?? '').length));
120
+ }
121
+ // Create header row
122
+ const headerRow = headers.map(header => header.padEnd(colWidths[header])).join(' | ');
123
+ // Create separator row
124
+ const separatorRow = headers.map(header => '-'.repeat(colWidths[header])).join('-|-');
125
+ // Create data rows
126
+ const dataRows = results.map(row => headers.map(header => String(row[header] ?? '').padEnd(colWidths[header])).join(' | '));
127
+ // Combine all rows
128
+ return [headerRow, separatorRow, ...dataRows].join('\n');
129
+ }
130
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../../src/services/query-builder/utils/export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ interface ResearchResult {
2
+ success: boolean;
3
+ filePath?: string;
4
+ title?: string;
5
+ error?: string;
6
+ }
7
+ export declare function fetchAndProcess(url: string, category?: 'article' | 'paper'): Promise<ResearchResult>;
8
+ export interface WebSearchResult {
9
+ title: string;
10
+ link: string;
11
+ snippet: string;
12
+ }
13
+ export declare function searchWeb(query: string): Promise<WebSearchResult[]>;
14
+ export {};
15
+ //# sourceMappingURL=researcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"researcher.d.ts","sourceRoot":"","sources":["../../../src/services/research/researcher.ts"],"names":[],"mappings":"AA+BA,UAAU,cAAc;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,SAAS,GAAG,OAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAsErH;AAED,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CA6CzE"}
@@ -0,0 +1,123 @@
1
+ import { gotScraping } from 'got-scraping';
2
+ import * as cheerio from 'cheerio';
3
+ import TurndownService from 'turndown';
4
+ import * as fs from 'fs';
5
+ import * as path from 'path';
6
+ import * as crypto from 'crypto';
7
+ import * as net from 'net';
8
+ import { ENGINE_PLUGINS } from '../../config/paths.js';
9
+ import { safeLookup, isPrivateIP } from '../../utils/safe-dns.js';
10
+ const PLUGINS_DIR = ENGINE_PLUGINS;
11
+ // Ensure staging directories exist
12
+ const ARTICLES_DIR = path.join(PLUGINS_DIR, 'articles');
13
+ const PAPERS_DIR = path.join(PLUGINS_DIR, 'research-papers');
14
+ // Robust Headers
15
+ if (!fs.existsSync(ARTICLES_DIR))
16
+ fs.mkdirSync(ARTICLES_DIR, { recursive: true });
17
+ if (!fs.existsSync(PAPERS_DIR))
18
+ fs.mkdirSync(PAPERS_DIR, { recursive: true });
19
+ const turndownService = new TurndownService({
20
+ headingStyle: 'atx',
21
+ codeBlockStyle: 'fenced'
22
+ });
23
+ // Remove script tags, styles, etc.
24
+ turndownService.remove(['script', 'style', 'noscript', 'iframe', 'nav', 'footer', 'header']);
25
+ export async function fetchAndProcess(url, category = 'article') {
26
+ try {
27
+ console.log(`[Research] Fetching: ${url}`);
28
+ const urlObj = new URL(url);
29
+ if (urlObj.protocol !== 'http:' && urlObj.protocol !== 'https:') {
30
+ throw new Error(`Invalid protocol: ${urlObj.protocol}. Only http and https are allowed.`);
31
+ }
32
+ if (net.isIP(urlObj.hostname) !== 0 && isPrivateIP(urlObj.hostname)) {
33
+ throw new Error(`Invalid IP address: ${urlObj.hostname}. Private IPs are not allowed.`);
34
+ }
35
+ const response = await gotScraping(url, {
36
+ timeout: { request: 10000 },
37
+ dnsLookup: safeLookup
38
+ });
39
+ const html = response.body;
40
+ const $ = cheerio.load(html);
41
+ // Extract Metadata
42
+ const title = $('title').text().trim() || 'Untitled Page';
43
+ const metaDesc = $('meta[name="description"]').attr('content') || '';
44
+ // Cleanup DOM
45
+ $('script').remove();
46
+ $('style').remove();
47
+ $('nav').remove();
48
+ $('header').remove();
49
+ $('footer').remove();
50
+ $('.ad').remove();
51
+ $('.advertisement').remove();
52
+ $('.sidebar').remove();
53
+ // Target main content if possible
54
+ let contentHtml = $('main').html() || $('article').html() || $('body').html() || '';
55
+ // Convert
56
+ const markdown = turndownService.turndown(contentHtml);
57
+ // Frontmatter
58
+ const fileContent = `# ${title}
59
+ > **Source**: ${url}
60
+ > **Date**: ${new Date().toISOString()}
61
+ > **Description**: ${metaDesc}
62
+
63
+ ---
64
+
65
+ ${markdown}
66
+ `;
67
+ // Filename
68
+ const safeTitle = title.replace(/[^a-zA-Z0-9-_]/g, '_').substring(0, 50);
69
+ const hash = crypto.createHash('md5').update(url).digest('hex').substring(0, 8);
70
+ const filename = `${safeTitle}_${hash}.md`;
71
+ // Save
72
+ const targetDir = category === 'paper' ? PAPERS_DIR : ARTICLES_DIR;
73
+ const filePath = path.join(targetDir, filename);
74
+ await fs.promises.writeFile(filePath, fileContent, 'utf8');
75
+ console.log(`[Research] Saved to: ${filePath}`);
76
+ return { success: true, filePath, title };
77
+ }
78
+ catch (e) {
79
+ console.error(`[Research] Failed: ${e.message}`);
80
+ return { success: false, error: e.message };
81
+ }
82
+ }
83
+ export async function searchWeb(query) {
84
+ try {
85
+ console.log(`[Research] Searching Web: "${query}"`);
86
+ const searchUrl = `https://html.duckduckgo.com/html/?q=${encodeURIComponent(query)}`;
87
+ const response = await gotScraping(searchUrl);
88
+ const $ = cheerio.load(response.body);
89
+ const results = [];
90
+ $('.result').each((_i, element) => {
91
+ const titleElement = $(element).find('.result__a');
92
+ const snippetElement = $(element).find('.result__snippet');
93
+ const title = titleElement.text().trim();
94
+ const link = titleElement.attr('href');
95
+ const snippet = snippetElement.text().trim();
96
+ if (title && link && !link.includes('duckduckgo.com/y.js')) {
97
+ // DuckDuckGo usually has internal redirects, we might get the raw link or the redirect.
98
+ // Ideally we decode it if it's a diffbot or similar proxy, but usually for HTML version it's direct or simple.
99
+ // Actually DDG HTML links are typically relative redirects `/l/?uddg=...`
100
+ // We should try to extract the real URL if possible, or use the redirect.
101
+ // Let's decode the uddg param if present.
102
+ let realLink = link;
103
+ try {
104
+ if (link.includes('uddg=')) {
105
+ const match = link.match(/uddg=([^&]+)/);
106
+ if (match && match[1]) {
107
+ realLink = decodeURIComponent(match[1]);
108
+ }
109
+ }
110
+ }
111
+ catch (e) { /* ignore */ }
112
+ results.push({ title, link: realLink, snippet });
113
+ }
114
+ });
115
+ console.log(`[Research] Found ${results.length} results.`);
116
+ return results.slice(0, 10); // Top 10
117
+ }
118
+ catch (e) {
119
+ console.error(`[Research] Search failed: ${e.message}`);
120
+ return [];
121
+ }
122
+ }
123
+ //# sourceMappingURL=researcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"researcher.js","sourceRoot":"","sources":["../../../src/services/research/researcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Scribe Service - Markovian Rolling Context
3
+ *
4
+ * Maintains a "Session State" that summarizes the current conversation.
5
+ * This enables the model to maintain coherence across long conversations
6
+ * without requiring the full history in context.
7
+ */
8
+ interface HistoryItem {
9
+ role: string;
10
+ content: string;
11
+ }
12
+ interface UpdateStateResult {
13
+ status: string;
14
+ summary?: string;
15
+ message?: string;
16
+ }
17
+ interface ClearStateResult {
18
+ status: string;
19
+ message?: string;
20
+ }
21
+ /**
22
+ * Updates the rolling session state based on recent conversation history.
23
+ * Uses the LLM to compress recent turns into a coherent state summary.
24
+ *
25
+ * @param {HistoryItem[]} history - Array of {role, content} message objects
26
+ * @returns {Promise<UpdateStateResult>} - {status, summary} or {status, error}
27
+ */
28
+ export declare function updateState(history: HistoryItem[]): Promise<UpdateStateResult>;
29
+ /**
30
+ * Retrieves the current session state from the database.
31
+ *
32
+ * @returns {Promise<string | null>} - The state summary or null if not found
33
+ */
34
+ export declare function getState(): Promise<string | null>;
35
+ /**
36
+ * Clears the current session state.
37
+ * Useful for starting a fresh conversation.
38
+ *
39
+ * @returns {Promise<ClearStateResult>} - {status}
40
+ */
41
+ export declare function clearState(): Promise<ClearStateResult>;
42
+ export {};
43
+ //# sourceMappingURL=scribe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scribe.d.ts","sourceRoot":"","sources":["../../../src/services/scribe/scribe.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgBH,UAAU,WAAW;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,iBAAiB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,gBAAgB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkFpF;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAavD;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAU5D"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Scribe Service - Markovian Rolling Context
3
+ *
4
+ * Maintains a "Session State" that summarizes the current conversation.
5
+ * This enables the model to maintain coherence across long conversations
6
+ * without requiring the full history in context.
7
+ */
8
+ import { db } from '../../core/db.js';
9
+ // Lazy-load inference to avoid circular dependency
10
+ let inferenceModule = null;
11
+ function getInference() {
12
+ if (!inferenceModule) {
13
+ inferenceModule = require('../inference/inference');
14
+ }
15
+ return inferenceModule;
16
+ }
17
+ const SESSION_STATE_ID = 'session_state';
18
+ const STATE_BUCKET = ['system', 'state'];
19
+ /**
20
+ * Updates the rolling session state based on recent conversation history.
21
+ * Uses the LLM to compress recent turns into a coherent state summary.
22
+ *
23
+ * @param {HistoryItem[]} history - Array of {role, content} message objects
24
+ * @returns {Promise<UpdateStateResult>} - {status, summary} or {status, error}
25
+ */
26
+ export async function updateState(history) {
27
+ console.log('✍️ Scribe: Analyzing conversation state...');
28
+ try {
29
+ // 1. Flatten last 10 turns into readable text
30
+ const recentTurns = history.slice(-10);
31
+ const recentText = recentTurns
32
+ .map(m => `${m.role.toUpperCase()}: ${m.content}`)
33
+ .join('\n\n');
34
+ if (!recentText.trim()) {
35
+ return { status: 'skipped', message: 'No conversation history to analyze' };
36
+ }
37
+ // 2. Construct the state extraction prompt
38
+ const prompt = `Analyze this conversation segment and produce a concise "Session State" summary.
39
+
40
+ Keep it under 200 words. Focus on:
41
+ - Current Goal: What is the user trying to accomplish?
42
+ - Key Decisions: What has been decided or agreed upon?
43
+ - Active Tasks: What work is in progress or pending?
44
+ - Important Context: What background information is critical to remember?
45
+
46
+ Conversation:
47
+ ${recentText}
48
+
49
+ ---
50
+ Session State Summary:`;
51
+ // 3. Generate the state summary
52
+ const inf = getInference();
53
+ const summary = await inf.rawCompletion(prompt);
54
+ if (!summary || summary.trim().length < 10) {
55
+ return { status: 'error', message: 'Failed to generate meaningful state' };
56
+ }
57
+ // 4. Persist to database with special ID
58
+ const timestamp = Date.now();
59
+ await db.run(`INSERT INTO atoms (id, timestamp, content, source_path, source_id, sequence, type, hash, buckets, epochs, tags, provenance, simhash, embedding)
60
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14)
61
+ ON CONFLICT (id) DO UPDATE SET
62
+ content = EXCLUDED.content,
63
+ timestamp = EXCLUDED.timestamp,
64
+ source_path = EXCLUDED.source_path,
65
+ source_id = EXCLUDED.source_id,
66
+ sequence = EXCLUDED.sequence,
67
+ type = EXCLUDED.type,
68
+ hash = EXCLUDED.hash,
69
+ buckets = EXCLUDED.buckets,
70
+ epochs = EXCLUDED.epochs,
71
+ tags = EXCLUDED.tags,
72
+ provenance = EXCLUDED.provenance,
73
+ simhash = EXCLUDED.simhash,
74
+ embedding = EXCLUDED.embedding`, [
75
+ SESSION_STATE_ID,
76
+ timestamp,
77
+ summary.trim(),
78
+ 'Scribe',
79
+ SESSION_STATE_ID, // source_id
80
+ 0, // sequence
81
+ 'state', // type
82
+ `state_${timestamp}`, // hash
83
+ STATE_BUCKET,
84
+ [], // epochs
85
+ [], // tags
86
+ 'system', // provenance
87
+ '0', // simhash
88
+ new Array(768).fill(0.0) // embedding (stub)
89
+ ]);
90
+ console.log('✍️ Scribe: State updated successfully');
91
+ return { status: 'updated', summary: summary.trim() };
92
+ }
93
+ catch (e) {
94
+ console.error('✍️ Scribe Error:', e.message);
95
+ return { status: 'error', message: e.message };
96
+ }
97
+ }
98
+ /**
99
+ * Retrieves the current session state from the database.
100
+ *
101
+ * @returns {Promise<string | null>} - The state summary or null if not found
102
+ */
103
+ export async function getState() {
104
+ try {
105
+ const query = 'SELECT content FROM atoms WHERE id = $1';
106
+ const res = await db.run(query, [SESSION_STATE_ID]);
107
+ if (res.rows && res.rows.length > 0) {
108
+ return res.rows[0][0];
109
+ }
110
+ return null;
111
+ }
112
+ catch (e) {
113
+ console.error('✍️ Scribe: Failed to retrieve state:', e.message);
114
+ return null;
115
+ }
116
+ }
117
+ /**
118
+ * Clears the current session state.
119
+ * Useful for starting a fresh conversation.
120
+ *
121
+ * @returns {Promise<ClearStateResult>} - {status}
122
+ */
123
+ export async function clearState() {
124
+ try {
125
+ const query = `DELETE FROM atoms WHERE id = $1`;
126
+ await db.run(query, [SESSION_STATE_ID]);
127
+ console.log('✍️ Scribe: State cleared');
128
+ return { status: 'cleared' };
129
+ }
130
+ catch (e) {
131
+ console.error('✍️ Scribe: Failed to clear state:', e.message);
132
+ return { status: 'error', message: e.message };
133
+ }
134
+ }
135
+ //# sourceMappingURL=scribe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scribe.js","sourceRoot":"","sources":["../../../src/services/scribe/scribe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Bright Node Protocol — "The Illuminator"
3
+ *
4
+ * Selective Graph Illumination for reasoning models.
5
+ * Implements the "Bright Node" inference protocol where only relevant
6
+ * graph nodes are illuminated for reasoning, similar to how a flashlight
7
+ * illuminates only the relevant parts of a dark room.
8
+ *
9
+ * This supports the "Logic-Data Decoupling" concept by providing
10
+ * structured graph data to lightweight reasoning models.
11
+ *
12
+ * Extracted from search.ts for clean separation of the graph reasoning layer.
13
+ */
14
+ export interface BrightNode {
15
+ id: string;
16
+ content: string;
17
+ source: string;
18
+ timestamp: number;
19
+ buckets: string[];
20
+ tags: string[];
21
+ epochs: string;
22
+ provenance: string;
23
+ score: number;
24
+ sequence?: number;
25
+ molecular_signature?: string;
26
+ relationships: BrightNodeRelationship[];
27
+ }
28
+ export interface BrightNodeRelationship {
29
+ targetId: string;
30
+ relationshipType: string;
31
+ strength: number;
32
+ }
33
+ export declare function getBrightNodes(query: string, buckets?: string[], maxNodes?: number): Promise<BrightNode[]>;
34
+ /**
35
+ * Get Structured Graph for Reasoning Models
36
+ *
37
+ * Formats the bright nodes into a structure suitable for reasoning models
38
+ * as described in the "Logic-Data Decoupling" section of the white paper.
39
+ */
40
+ export declare function getStructuredGraph(query: string, buckets?: string[]): Promise<any>;
41
+ //# sourceMappingURL=bright-nodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bright-nodes.d.ts","sourceRoot":"","sources":["../../../src/services/search/bright-nodes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,sBAAsB,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,sBAAsB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,cAAc,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,MAAM,EAAO,EACtB,QAAQ,GAAE,MAAsC,GACjD,OAAO,CAAC,UAAU,EAAE,CAAC,CAoFvB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACpC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,GAAG,CAAC,CAwBd"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Bright Node Protocol — "The Illuminator"
3
+ *
4
+ * Selective Graph Illumination for reasoning models.
5
+ * Implements the "Bright Node" inference protocol where only relevant
6
+ * graph nodes are illuminated for reasoning, similar to how a flashlight
7
+ * illuminates only the relevant parts of a dark room.
8
+ *
9
+ * This supports the "Logic-Data Decoupling" concept by providing
10
+ * structured graph data to lightweight reasoning models.
11
+ *
12
+ * Extracted from search.ts for clean separation of the graph reasoning layer.
13
+ */
14
+ import { config } from '../../config/index.js';
15
+ import { executeSearch } from './search.js';
16
+ export async function getBrightNodes(query, buckets = [], maxNodes = config.SEARCH.max_chars_limit) {
17
+ console.log(`[BrightNode] Illuminating graph for query: "${query}"`);
18
+ // First, get relevant search results using the enhanced Tag-Walker (via executeSearch)
19
+ const { results: searchResults } = await executeSearch(query, buckets, maxNodes * config.SEARCH.fts_window_size, 'all');
20
+ if (searchResults.length === 0) {
21
+ console.log('[BrightNode] No results found for query.');
22
+ return [];
23
+ }
24
+ // Take top results based on score
25
+ const topResults = searchResults
26
+ .sort((a, b) => b.score - a.score)
27
+ .slice(0, maxNodes);
28
+ // Create bright nodes with relationship information
29
+ const brightNodes = topResults.map(result => ({
30
+ id: result.id,
31
+ content: result.content,
32
+ source: result.source,
33
+ timestamp: result.timestamp,
34
+ buckets: result.buckets,
35
+ tags: result.tags,
36
+ epochs: result.epochs,
37
+ provenance: result.provenance,
38
+ score: result.score,
39
+ sequence: result.sequence, // Pass through sequence
40
+ molecular_signature: result.molecular_signature, // V4 Nomenclature
41
+ relationships: [] // Will be populated based on shared tags/buckets
42
+ }));
43
+ // Identify relationships between nodes based on shared attributes
44
+ for (let i = 0; i < brightNodes.length; i++) {
45
+ const currentNode = brightNodes[i];
46
+ const relationships = [];
47
+ for (let j = 0; j < brightNodes.length; j++) {
48
+ if (i === j)
49
+ continue;
50
+ const otherNode = brightNodes[j];
51
+ let relationshipStrength = 0;
52
+ let relationshipType = 'related';
53
+ // 1. Semantic Overlap (Tags & Buckets)
54
+ const sharedBuckets = currentNode.buckets.filter((b) => otherNode.buckets.includes(b));
55
+ const sharedTags = currentNode.tags.filter((t) => otherNode.tags.includes(t));
56
+ relationshipStrength += sharedBuckets.length * 2 + sharedTags.length;
57
+ // 2. Source Continuity (Same Document)
58
+ if (currentNode.source === otherNode.source) {
59
+ relationshipStrength += 5; // Strong boost for same file
60
+ relationshipType = 'same_source';
61
+ // 3. Sequential Adjacency (The "Markov Link")
62
+ if (currentNode.sequence !== undefined && otherNode.sequence !== undefined) {
63
+ const dist = Math.abs(currentNode.sequence - otherNode.sequence);
64
+ if (dist === 1) {
65
+ relationshipStrength += 10; // Massive boost for direct neighbors
66
+ relationshipType = 'next_chunk';
67
+ }
68
+ else if (dist < 5) {
69
+ relationshipStrength += 3; // Boost for nearby chunks
70
+ }
71
+ }
72
+ }
73
+ if (relationshipStrength > 0) {
74
+ relationships.push({
75
+ targetId: otherNode.id,
76
+ relationshipType,
77
+ strength: relationshipStrength
78
+ });
79
+ }
80
+ }
81
+ // Sort relationships by strength and keep top 5
82
+ currentNode.relationships = relationships
83
+ .sort((a, b) => b.strength - a.strength)
84
+ .slice(0, 5);
85
+ }
86
+ console.log(`[BrightNode] Illuminated ${brightNodes.length} nodes with relationships`);
87
+ return brightNodes;
88
+ }
89
+ /**
90
+ * Get Structured Graph for Reasoning Models
91
+ *
92
+ * Formats the bright nodes into a structure suitable for reasoning models
93
+ * as described in the "Logic-Data Decoupling" section of the white paper.
94
+ */
95
+ export async function getStructuredGraph(query, buckets = []) {
96
+ const brightNodes = await getBrightNodes(query, buckets);
97
+ // Format as a graph structure suitable for reasoning models
98
+ return {
99
+ nodes: brightNodes.map(node => ({
100
+ id: node.id,
101
+ content: node.content.substring(0, 500), // Truncate for efficiency
102
+ tags: node.tags,
103
+ buckets: node.buckets,
104
+ provenance: node.provenance,
105
+ score: node.score
106
+ })),
107
+ edges: brightNodes.flatMap(node => node.relationships.map(rel => ({
108
+ source: node.id,
109
+ target: rel.targetId,
110
+ type: rel.relationshipType,
111
+ strength: rel.strength
112
+ }))),
113
+ query: query,
114
+ timestamp: Date.now()
115
+ };
116
+ }
117
+ //# sourceMappingURL=bright-nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bright-nodes.js","sourceRoot":"","sources":["../../../src/services/search/bright-nodes.ts"],"names":[],"mappings":"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"}