heor-agent-mcp 0.1.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 (299) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +152 -0
  3. package/dist/audit/builder.d.ts +8 -0
  4. package/dist/audit/builder.d.ts.map +1 -0
  5. package/dist/audit/builder.js +37 -0
  6. package/dist/audit/builder.js.map +1 -0
  7. package/dist/audit/types.d.ts +30 -0
  8. package/dist/audit/types.d.ts.map +1 -0
  9. package/dist/audit/types.js +2 -0
  10. package/dist/audit/types.js.map +1 -0
  11. package/dist/formatters/docx.d.ts +5 -0
  12. package/dist/formatters/docx.d.ts.map +1 -0
  13. package/dist/formatters/docx.js +207 -0
  14. package/dist/formatters/docx.js.map +1 -0
  15. package/dist/formatters/json.d.ts +4 -0
  16. package/dist/formatters/json.d.ts.map +1 -0
  17. package/dist/formatters/json.js +4 -0
  18. package/dist/formatters/json.js.map +1 -0
  19. package/dist/formatters/markdown.d.ts +5 -0
  20. package/dist/formatters/markdown.d.ts.map +1 -0
  21. package/dist/formatters/markdown.js +50 -0
  22. package/dist/formatters/markdown.js.map +1 -0
  23. package/dist/knowledge/index.d.ts +8 -0
  24. package/dist/knowledge/index.d.ts.map +1 -0
  25. package/dist/knowledge/index.js +8 -0
  26. package/dist/knowledge/index.js.map +1 -0
  27. package/dist/knowledge/paths.d.ts +9 -0
  28. package/dist/knowledge/paths.d.ts.map +1 -0
  29. package/dist/knowledge/paths.js +35 -0
  30. package/dist/knowledge/paths.js.map +1 -0
  31. package/dist/knowledge/projectStore.d.ts +37 -0
  32. package/dist/knowledge/projectStore.d.ts.map +1 -0
  33. package/dist/knowledge/projectStore.js +112 -0
  34. package/dist/knowledge/projectStore.js.map +1 -0
  35. package/dist/knowledge/rawStore.d.ts +18 -0
  36. package/dist/knowledge/rawStore.d.ts.map +1 -0
  37. package/dist/knowledge/rawStore.js +103 -0
  38. package/dist/knowledge/rawStore.js.map +1 -0
  39. package/dist/knowledge/search.d.ts +19 -0
  40. package/dist/knowledge/search.d.ts.map +1 -0
  41. package/dist/knowledge/search.js +105 -0
  42. package/dist/knowledge/search.js.map +1 -0
  43. package/dist/knowledge/types.d.ts +6 -0
  44. package/dist/knowledge/types.d.ts.map +1 -0
  45. package/dist/knowledge/types.js +2 -0
  46. package/dist/knowledge/types.js.map +1 -0
  47. package/dist/knowledge/wikiStore.d.ts +18 -0
  48. package/dist/knowledge/wikiStore.d.ts.map +1 -0
  49. package/dist/knowledge/wikiStore.js +77 -0
  50. package/dist/knowledge/wikiStore.js.map +1 -0
  51. package/dist/knowledge/yaml.d.ts +17 -0
  52. package/dist/knowledge/yaml.d.ts.map +1 -0
  53. package/dist/knowledge/yaml.js +131 -0
  54. package/dist/knowledge/yaml.js.map +1 -0
  55. package/dist/models/distributions.d.ts +28 -0
  56. package/dist/models/distributions.d.ts.map +1 -0
  57. package/dist/models/distributions.js +99 -0
  58. package/dist/models/distributions.js.map +1 -0
  59. package/dist/models/index.d.ts +11 -0
  60. package/dist/models/index.d.ts.map +1 -0
  61. package/dist/models/index.js +7 -0
  62. package/dist/models/index.js.map +1 -0
  63. package/dist/models/markov.d.ts +42 -0
  64. package/dist/models/markov.d.ts.map +1 -0
  65. package/dist/models/markov.js +82 -0
  66. package/dist/models/markov.js.map +1 -0
  67. package/dist/models/modelUtils.d.ts +29 -0
  68. package/dist/models/modelUtils.d.ts.map +1 -0
  69. package/dist/models/modelUtils.js +139 -0
  70. package/dist/models/modelUtils.js.map +1 -0
  71. package/dist/models/owsa.d.ts +31 -0
  72. package/dist/models/owsa.d.ts.map +1 -0
  73. package/dist/models/owsa.js +103 -0
  74. package/dist/models/owsa.js.map +1 -0
  75. package/dist/models/partsa.d.ts +40 -0
  76. package/dist/models/partsa.d.ts.map +1 -0
  77. package/dist/models/partsa.js +65 -0
  78. package/dist/models/partsa.js.map +1 -0
  79. package/dist/models/psa.d.ts +33 -0
  80. package/dist/models/psa.d.ts.map +1 -0
  81. package/dist/models/psa.js +118 -0
  82. package/dist/models/psa.js.map +1 -0
  83. package/dist/providers/direct/aifa.d.ts +3 -0
  84. package/dist/providers/direct/aifa.d.ts.map +1 -0
  85. package/dist/providers/direct/aifa.js +30 -0
  86. package/dist/providers/direct/aifa.js.map +1 -0
  87. package/dist/providers/direct/allOfUs.d.ts +3 -0
  88. package/dist/providers/direct/allOfUs.d.ts.map +1 -0
  89. package/dist/providers/direct/allOfUs.js +37 -0
  90. package/dist/providers/direct/allOfUs.js.map +1 -0
  91. package/dist/providers/direct/anvisa.d.ts +3 -0
  92. package/dist/providers/direct/anvisa.d.ts.map +1 -0
  93. package/dist/providers/direct/anvisa.js +25 -0
  94. package/dist/providers/direct/anvisa.js.map +1 -0
  95. package/dist/providers/direct/biorxiv.d.ts +3 -0
  96. package/dist/providers/direct/biorxiv.d.ts.map +1 -0
  97. package/dist/providers/direct/biorxiv.js +33 -0
  98. package/dist/providers/direct/biorxiv.js.map +1 -0
  99. package/dist/providers/direct/bnf.d.ts +3 -0
  100. package/dist/providers/direct/bnf.d.ts.map +1 -0
  101. package/dist/providers/direct/bnf.js +30 -0
  102. package/dist/providers/direct/bnf.js.map +1 -0
  103. package/dist/providers/direct/cadthReviews.d.ts +3 -0
  104. package/dist/providers/direct/cadthReviews.d.ts.map +1 -0
  105. package/dist/providers/direct/cadthReviews.js +30 -0
  106. package/dist/providers/direct/cadthReviews.js.map +1 -0
  107. package/dist/providers/direct/chembl.d.ts +3 -0
  108. package/dist/providers/direct/chembl.d.ts.map +1 -0
  109. package/dist/providers/direct/chembl.js +24 -0
  110. package/dist/providers/direct/chembl.js.map +1 -0
  111. package/dist/providers/direct/citeline.d.ts +3 -0
  112. package/dist/providers/direct/citeline.d.ts.map +1 -0
  113. package/dist/providers/direct/citeline.js +50 -0
  114. package/dist/providers/direct/citeline.js.map +1 -0
  115. package/dist/providers/direct/clinicalTrials.d.ts +3 -0
  116. package/dist/providers/direct/clinicalTrials.d.ts.map +1 -0
  117. package/dist/providers/direct/clinicalTrials.js +29 -0
  118. package/dist/providers/direct/clinicalTrials.js.map +1 -0
  119. package/dist/providers/direct/cmsNadac.d.ts +3 -0
  120. package/dist/providers/direct/cmsNadac.d.ts.map +1 -0
  121. package/dist/providers/direct/cmsNadac.js +52 -0
  122. package/dist/providers/direct/cmsNadac.js.map +1 -0
  123. package/dist/providers/direct/cochrane.d.ts +3 -0
  124. package/dist/providers/direct/cochrane.d.ts.map +1 -0
  125. package/dist/providers/direct/cochrane.js +46 -0
  126. package/dist/providers/direct/cochrane.js.map +1 -0
  127. package/dist/providers/direct/conitec.d.ts +3 -0
  128. package/dist/providers/direct/conitec.d.ts.map +1 -0
  129. package/dist/providers/direct/conitec.js +25 -0
  130. package/dist/providers/direct/conitec.js.map +1 -0
  131. package/dist/providers/direct/cortellis.d.ts +3 -0
  132. package/dist/providers/direct/cortellis.d.ts.map +1 -0
  133. package/dist/providers/direct/cortellis.js +52 -0
  134. package/dist/providers/direct/cortellis.js.map +1 -0
  135. package/dist/providers/direct/datasus.d.ts +3 -0
  136. package/dist/providers/direct/datasus.d.ts.map +1 -0
  137. package/dist/providers/direct/datasus.js +30 -0
  138. package/dist/providers/direct/datasus.js.map +1 -0
  139. package/dist/providers/direct/embase.d.ts +3 -0
  140. package/dist/providers/direct/embase.d.ts.map +1 -0
  141. package/dist/providers/direct/embase.js +54 -0
  142. package/dist/providers/direct/embase.js.map +1 -0
  143. package/dist/providers/direct/fonasa.d.ts +3 -0
  144. package/dist/providers/direct/fonasa.d.ts.map +1 -0
  145. package/dist/providers/direct/fonasa.js +25 -0
  146. package/dist/providers/direct/fonasa.js.map +1 -0
  147. package/dist/providers/direct/gbaDecisions.d.ts +3 -0
  148. package/dist/providers/direct/gbaDecisions.d.ts.map +1 -0
  149. package/dist/providers/direct/gbaDecisions.js +30 -0
  150. package/dist/providers/direct/gbaDecisions.js.map +1 -0
  151. package/dist/providers/direct/googleScholar.d.ts +3 -0
  152. package/dist/providers/direct/googleScholar.d.ts.map +1 -0
  153. package/dist/providers/direct/googleScholar.js +39 -0
  154. package/dist/providers/direct/googleScholar.js.map +1 -0
  155. package/dist/providers/direct/hasTc.d.ts +3 -0
  156. package/dist/providers/direct/hasTc.d.ts.map +1 -0
  157. package/dist/providers/direct/hasTc.js +30 -0
  158. package/dist/providers/direct/hasTc.js.map +1 -0
  159. package/dist/providers/direct/hitap.d.ts +3 -0
  160. package/dist/providers/direct/hitap.d.ts.map +1 -0
  161. package/dist/providers/direct/hitap.js +30 -0
  162. package/dist/providers/direct/hitap.js.map +1 -0
  163. package/dist/providers/direct/icerReports.d.ts +3 -0
  164. package/dist/providers/direct/icerReports.d.ts.map +1 -0
  165. package/dist/providers/direct/icerReports.js +30 -0
  166. package/dist/providers/direct/icerReports.js.map +1 -0
  167. package/dist/providers/direct/iets.d.ts +3 -0
  168. package/dist/providers/direct/iets.d.ts.map +1 -0
  169. package/dist/providers/direct/iets.js +25 -0
  170. package/dist/providers/direct/iets.js.map +1 -0
  171. package/dist/providers/direct/ihmeGbd.d.ts +3 -0
  172. package/dist/providers/direct/ihmeGbd.d.ts.map +1 -0
  173. package/dist/providers/direct/ihmeGbd.js +74 -0
  174. package/dist/providers/direct/ihmeGbd.js.map +1 -0
  175. package/dist/providers/direct/index.d.ts +7 -0
  176. package/dist/providers/direct/index.d.ts.map +1 -0
  177. package/dist/providers/direct/index.js +186 -0
  178. package/dist/providers/direct/index.js.map +1 -0
  179. package/dist/providers/direct/inesss.d.ts +3 -0
  180. package/dist/providers/direct/inesss.d.ts.map +1 -0
  181. package/dist/providers/direct/inesss.js +30 -0
  182. package/dist/providers/direct/inesss.js.map +1 -0
  183. package/dist/providers/direct/iqwig.d.ts +3 -0
  184. package/dist/providers/direct/iqwig.d.ts.map +1 -0
  185. package/dist/providers/direct/iqwig.js +30 -0
  186. package/dist/providers/direct/iqwig.js.map +1 -0
  187. package/dist/providers/direct/ispor.d.ts +3 -0
  188. package/dist/providers/direct/ispor.d.ts.map +1 -0
  189. package/dist/providers/direct/ispor.js +35 -0
  190. package/dist/providers/direct/ispor.js.map +1 -0
  191. package/dist/providers/direct/nhsCosts.d.ts +3 -0
  192. package/dist/providers/direct/nhsCosts.d.ts.map +1 -0
  193. package/dist/providers/direct/nhsCosts.js +32 -0
  194. package/dist/providers/direct/nhsCosts.js.map +1 -0
  195. package/dist/providers/direct/niceTa.d.ts +3 -0
  196. package/dist/providers/direct/niceTa.d.ts.map +1 -0
  197. package/dist/providers/direct/niceTa.js +30 -0
  198. package/dist/providers/direct/niceTa.js.map +1 -0
  199. package/dist/providers/direct/oecd.d.ts +3 -0
  200. package/dist/providers/direct/oecd.d.ts.map +1 -0
  201. package/dist/providers/direct/oecd.js +102 -0
  202. package/dist/providers/direct/oecd.js.map +1 -0
  203. package/dist/providers/direct/orangeBook.d.ts +3 -0
  204. package/dist/providers/direct/orangeBook.d.ts.map +1 -0
  205. package/dist/providers/direct/orangeBook.js +48 -0
  206. package/dist/providers/direct/orangeBook.js.map +1 -0
  207. package/dist/providers/direct/paho.d.ts +3 -0
  208. package/dist/providers/direct/paho.d.ts.map +1 -0
  209. package/dist/providers/direct/paho.js +30 -0
  210. package/dist/providers/direct/paho.js.map +1 -0
  211. package/dist/providers/direct/pbacPsd.d.ts +3 -0
  212. package/dist/providers/direct/pbacPsd.d.ts.map +1 -0
  213. package/dist/providers/direct/pbacPsd.js +30 -0
  214. package/dist/providers/direct/pbacPsd.js.map +1 -0
  215. package/dist/providers/direct/pbsSchedule.d.ts +3 -0
  216. package/dist/providers/direct/pbsSchedule.d.ts.map +1 -0
  217. package/dist/providers/direct/pbsSchedule.js +37 -0
  218. package/dist/providers/direct/pbsSchedule.js.map +1 -0
  219. package/dist/providers/direct/pharmapendium.d.ts +3 -0
  220. package/dist/providers/direct/pharmapendium.d.ts.map +1 -0
  221. package/dist/providers/direct/pharmapendium.js +39 -0
  222. package/dist/providers/direct/pharmapendium.js.map +1 -0
  223. package/dist/providers/direct/proxyClient.d.ts +15 -0
  224. package/dist/providers/direct/proxyClient.d.ts.map +1 -0
  225. package/dist/providers/direct/proxyClient.js +76 -0
  226. package/dist/providers/direct/proxyClient.js.map +1 -0
  227. package/dist/providers/direct/pssru.d.ts +3 -0
  228. package/dist/providers/direct/pssru.d.ts.map +1 -0
  229. package/dist/providers/direct/pssru.js +33 -0
  230. package/dist/providers/direct/pssru.js.map +1 -0
  231. package/dist/providers/direct/pubmed.d.ts +3 -0
  232. package/dist/providers/direct/pubmed.d.ts.map +1 -0
  233. package/dist/providers/direct/pubmed.js +73 -0
  234. package/dist/providers/direct/pubmed.js.map +1 -0
  235. package/dist/providers/direct/purpleBook.d.ts +3 -0
  236. package/dist/providers/direct/purpleBook.d.ts.map +1 -0
  237. package/dist/providers/direct/purpleBook.js +52 -0
  238. package/dist/providers/direct/purpleBook.js.map +1 -0
  239. package/dist/providers/direct/tlv.d.ts +3 -0
  240. package/dist/providers/direct/tlv.d.ts.map +1 -0
  241. package/dist/providers/direct/tlv.js +30 -0
  242. package/dist/providers/direct/tlv.js.map +1 -0
  243. package/dist/providers/direct/whoGho.d.ts +3 -0
  244. package/dist/providers/direct/whoGho.d.ts.map +1 -0
  245. package/dist/providers/direct/whoGho.js +51 -0
  246. package/dist/providers/direct/whoGho.js.map +1 -0
  247. package/dist/providers/direct/worldBank.d.ts +3 -0
  248. package/dist/providers/direct/worldBank.d.ts.map +1 -0
  249. package/dist/providers/direct/worldBank.js +54 -0
  250. package/dist/providers/direct/worldBank.js.map +1 -0
  251. package/dist/providers/factory.d.ts +3 -0
  252. package/dist/providers/factory.d.ts.map +1 -0
  253. package/dist/providers/factory.js +8 -0
  254. package/dist/providers/factory.js.map +1 -0
  255. package/dist/providers/hosted/index.d.ts +9 -0
  256. package/dist/providers/hosted/index.d.ts.map +1 -0
  257. package/dist/providers/hosted/index.js +16 -0
  258. package/dist/providers/hosted/index.js.map +1 -0
  259. package/dist/providers/types.d.ts +176 -0
  260. package/dist/providers/types.d.ts.map +1 -0
  261. package/dist/providers/types.js +2 -0
  262. package/dist/providers/types.js.map +1 -0
  263. package/dist/server.d.ts +3 -0
  264. package/dist/server.d.ts.map +1 -0
  265. package/dist/server.js +80 -0
  266. package/dist/server.js.map +1 -0
  267. package/dist/tools/costEffectivenessModel.d.ts +98 -0
  268. package/dist/tools/costEffectivenessModel.d.ts.map +1 -0
  269. package/dist/tools/costEffectivenessModel.js +404 -0
  270. package/dist/tools/costEffectivenessModel.js.map +1 -0
  271. package/dist/tools/htaDossierPrep.d.ts +69 -0
  272. package/dist/tools/htaDossierPrep.d.ts.map +1 -0
  273. package/dist/tools/htaDossierPrep.js +399 -0
  274. package/dist/tools/htaDossierPrep.js.map +1 -0
  275. package/dist/tools/knowledgeRead.d.ts +21 -0
  276. package/dist/tools/knowledgeRead.d.ts.map +1 -0
  277. package/dist/tools/knowledgeRead.js +38 -0
  278. package/dist/tools/knowledgeRead.js.map +1 -0
  279. package/dist/tools/knowledgeSearch.d.ts +37 -0
  280. package/dist/tools/knowledgeSearch.d.ts.map +1 -0
  281. package/dist/tools/knowledgeSearch.js +51 -0
  282. package/dist/tools/knowledgeSearch.js.map +1 -0
  283. package/dist/tools/knowledgeWrite.d.ts +25 -0
  284. package/dist/tools/knowledgeWrite.d.ts.map +1 -0
  285. package/dist/tools/knowledgeWrite.js +40 -0
  286. package/dist/tools/knowledgeWrite.js.map +1 -0
  287. package/dist/tools/literatureSearch.d.ts +42 -0
  288. package/dist/tools/literatureSearch.d.ts.map +1 -0
  289. package/dist/tools/literatureSearch.js +142 -0
  290. package/dist/tools/literatureSearch.js.map +1 -0
  291. package/dist/tools/metabolicProfile.d.ts +19 -0
  292. package/dist/tools/metabolicProfile.d.ts.map +1 -0
  293. package/dist/tools/metabolicProfile.js +150 -0
  294. package/dist/tools/metabolicProfile.js.map +1 -0
  295. package/dist/tools/projectCreate.d.ts +37 -0
  296. package/dist/tools/projectCreate.d.ts.map +1 -0
  297. package/dist/tools/projectCreate.js +61 -0
  298. package/dist/tools/projectCreate.js.map +1 -0
  299. package/package.json +71 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 mnaumov
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,152 @@
1
+ # HEORAgent MCP Server
2
+
3
+ An AI-powered Health Economics and Outcomes Research (HEOR) agent for Claude.ai — automates literature review, cost-effectiveness modelling, and HTA dossier preparation.
4
+
5
+ ## Quick Start
6
+
7
+ Add to your Claude.ai MCP configuration:
8
+
9
+ ```json
10
+ {
11
+ "mcpServers": {
12
+ "heor-agent": {
13
+ "command": "npx",
14
+ "args": ["heor-agent-mcp"]
15
+ }
16
+ }
17
+ }
18
+ ```
19
+
20
+ Or run locally:
21
+
22
+ ```bash
23
+ npm install heor-agent-mcp
24
+ npx heor-agent-mcp
25
+ ```
26
+
27
+ ## Tools
28
+
29
+ ### literature_search
30
+
31
+ Search PubMed, ClinicalTrials.gov, bioRxiv/medRxiv, and ChEMBL simultaneously.
32
+ Returns structured results with a full PRISMA-style audit trail.
33
+
34
+ **Required**: `query` (string)
35
+ **Optional**: `sources` (array), `max_results` (1–100), `date_from` (YYYY-MM-DD), `output_format` (text|json|docx)
36
+
37
+ **Example prompt**: "Find RCT evidence on semaglutide for type 2 diabetes from the last 3 years"
38
+
39
+ ### cost_effectiveness_model
40
+
41
+ State-of-the-art cost-utility analysis: multi-state Markov model, probabilistic sensitivity
42
+ analysis (PSA, Monte Carlo), one-way sensitivity analysis (tornado diagram), cost-effectiveness
43
+ acceptability curve (CEAC), and Expected Value of Perfect Information (EVPI).
44
+
45
+ Follows ISPOR good practice guidelines and NICE reference case (3.5% discount rate).
46
+
47
+ **Required**: `intervention`, `comparator`, `indication`, `time_horizon`, `perspective`, `clinical_inputs`, `cost_inputs`
48
+ **Optional**: `model_type` (markov|partsa|decision_tree), `utility_inputs`, `run_psa`, `psa_iterations`, `run_owsa`
49
+
50
+ **Supported HTA perspectives**:
51
+ - `nhs` — NICE threshold £20–30K/QALY
52
+ - `us_payer` — ICER threshold $100–150K/QALY
53
+ - `societal` — Societal perspective $50–100K/QALY
54
+
55
+ For oncology: set `model_type="partsa"` to use Partitioned Survival Analysis (NICE TSD 14).
56
+
57
+ **Example prompt**: "Model cost-effectiveness of semaglutide vs sitagliptin for T2D, NHS perspective, lifetime horizon"
58
+
59
+ ### hta_dossier_prep
60
+
61
+ Structure evidence into submission-ready HTA dossier sections with gap analysis.
62
+ Accepts output from `literature_search` and `cost_effectiveness_model` directly.
63
+
64
+ **Required**: `hta_body` (nice|ema|fda|iqwig|has), `submission_type` (sta|mta|early_access), `drug_name`, `indication`
65
+ **Optional**: `evidence_summary` (text or JSON from literature_search), `model_results` (from cost_effectiveness_model)
66
+
67
+ **Supported bodies**: NICE (UK), EMA (EU), FDA (US), IQWiG (Germany), HAS (France)
68
+
69
+ **Example prompt**: "Prepare a NICE STA outline for semaglutide in type 2 diabetes using [literature search output]"
70
+
71
+ ## Audit Trail
72
+
73
+ Every tool call returns a full audit record:
74
+ - Sources queried, queries sent, response counts
75
+ - Inclusion/exclusion counts with reasons
76
+ - Methodology notes and assumptions
77
+ - Warnings and data quality flags
78
+
79
+ Suitable for inclusion in HTA submission appendices.
80
+
81
+ ## Data Sources (Phase 1 — DirectProvider)
82
+
83
+ Currently integrated (free, direct API access):
84
+ - **PubMed** — 35M+ biomedical citations (NCBI E-utilities)
85
+ - **ClinicalTrials.gov** — FDA-regulated clinical studies (CT.gov v2 API)
86
+ - **bioRxiv / medRxiv** — Life sciences and medical preprints
87
+ - **ChEMBL** — Drug bioactivity, mechanisms, ADMET (EMBL-EBI)
88
+
89
+ ## Data Sources (Roadmap)
90
+
91
+ ### Phase 2 — Open/Free APIs
92
+ - WHO Global Health Observatory — Global epidemiology and health indicators
93
+ - World Bank Data — Demographics, macroeconomics
94
+ - OECD Health Data — Costs, utilization, health statistics (OECD)
95
+ - IHME / Global Burden of Disease — Global disease burden estimates
96
+ - ISPOR Presentations Database — HEOR studies and conference posters
97
+
98
+ ### Phase 2 — HTA Guidance & Pricing (Open)
99
+ - NICE (UK): Methods Guide, Technology Appraisals, PSSRU Unit Costs, NHS Reference Costs, BNF
100
+ - ICER (US): Value Assessment Framework, CMS Data
101
+ - CADTH (Canada): Guidelines and Reviews, INESSS
102
+ - PBAC (Australia): Guidelines, PSD, PBS/MBS Schedule
103
+ - HAS (France): Guidelines, Transparency Committee, CEPS
104
+ - IQWiG/G-BA (Germany): Methods Guide, Appraisal Decisions
105
+ - AIFA (Italy), AEMPS/IPT (Spain), TLV (Sweden), MHLW (Japan)
106
+ - CONITEC/ANVISA (Brazil), IETS (Colombia), FONASA (Chile), HITAP (Thailand)
107
+ - HIRA/NHIS (South Korea), WHO GHO, OECD Health, World Bank
108
+
109
+ ### Phase 2 — Restricted (with credentials)
110
+ - CPRD (UK primary care), NHS HES (UK hospital episodes), SNDS (France national claims)
111
+ - German SHI/AOK/WIdO, Nordic Registries, Japan NDB, NHIRD (Taiwan)
112
+ - NHSO (Thailand), PhilHealth (Philippines)
113
+
114
+ ### Phase 3 — Commercial (enterprise tier)
115
+ - IQVIA MIDAS/RWD, Optum Clinformatics, Flatiron Health (oncology EHR)
116
+ - Premier Healthcare Database, Komodo Health, Oracle Health RWD
117
+ - IBM Micromedex Red Book (drug pricing), SSR Health (net pricing/rebates)
118
+
119
+ ## Local RWE Datasets (Phase 2)
120
+
121
+ Point to local files in `/Users/mnaumov/Projects/Health_Statistics`:
122
+ - NAMCS — National Ambulatory Medical Care Survey (US)
123
+ - NHAMCS — National Hospital Ambulatory Medical Care Survey (US)
124
+ - MEPS — Medical Expenditure Panel Survey (US)
125
+ - DATASUS — Brazilian health system data (hospital + epidemiology)
126
+
127
+ ## Tiers
128
+
129
+ - **DirectProvider** (default) — Free. Uses your Anthropic API key. All tools, text + JSON output.
130
+ - **HostedProvider** — Set `HEOR_API_KEY` env var. Phase 2: DOCX/PDF reports, Redis caching.
131
+
132
+ ## Configuration
133
+
134
+ ```bash
135
+ HEOR_API_KEY # Set to enable HostedProvider (Phase 2). Omit for DirectProvider (Phase 1).
136
+ ```
137
+
138
+ ## Development
139
+
140
+ ```bash
141
+ npm install
142
+ npm test # 74 tests
143
+ npm run build # Compiles to dist/
144
+ npm run dev # Run with tsx (no build step)
145
+ ```
146
+
147
+ Node.js >= 20 required.
148
+
149
+ ## Disclaimer
150
+
151
+ All outputs are preliminary and for research orientation only. Results require validation by a
152
+ qualified health economist before use in any HTA submission, payer negotiation, or clinical decision.
@@ -0,0 +1,8 @@
1
+ import type { AuditRecord, SourceAudit, ExclusionRecord } from "./types.js";
2
+ export declare function createAuditRecord(tool: string, query: Record<string, unknown>, output_format: string, methodology?: string): AuditRecord;
3
+ export declare function addSource(record: AuditRecord, source: SourceAudit): AuditRecord;
4
+ export declare function addExclusion(record: AuditRecord, exclusion: ExclusionRecord): AuditRecord;
5
+ export declare function addAssumption(record: AuditRecord, assumption: string): AuditRecord;
6
+ export declare function addWarning(record: AuditRecord, warning: string): AuditRecord;
7
+ export declare function setMethodology(record: AuditRecord, methodology: string): AuditRecord;
8
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/audit/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE5E,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,aAAa,EAAE,MAAM,EACrB,WAAW,SAAK,GACf,WAAW,CAab;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,GAAG,WAAW,CAM/E;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,GAAG,WAAW,CAKzF;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAElF;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,CAE5E;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,GAAG,WAAW,CAEpF"}
@@ -0,0 +1,37 @@
1
+ export function createAuditRecord(tool, query, output_format, methodology = "") {
2
+ return {
3
+ tool,
4
+ timestamp: new Date().toISOString(),
5
+ query,
6
+ sources_queried: [],
7
+ methodology,
8
+ inclusions: 0,
9
+ exclusions: [],
10
+ assumptions: [],
11
+ warnings: [],
12
+ output_format,
13
+ };
14
+ }
15
+ export function addSource(record, source) {
16
+ return {
17
+ ...record,
18
+ sources_queried: [...record.sources_queried, source],
19
+ inclusions: record.inclusions + source.results_included,
20
+ };
21
+ }
22
+ export function addExclusion(record, exclusion) {
23
+ return {
24
+ ...record,
25
+ exclusions: [...record.exclusions, exclusion],
26
+ };
27
+ }
28
+ export function addAssumption(record, assumption) {
29
+ return { ...record, assumptions: [...record.assumptions, assumption] };
30
+ }
31
+ export function addWarning(record, warning) {
32
+ return { ...record, warnings: [...record.warnings, warning] };
33
+ }
34
+ export function setMethodology(record, methodology) {
35
+ return { ...record, methodology };
36
+ }
37
+ //# sourceMappingURL=builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/audit/builder.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAC/B,IAAY,EACZ,KAA8B,EAC9B,aAAqB,EACrB,WAAW,GAAG,EAAE;IAEhB,OAAO;QACL,IAAI;QACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,KAAK;QACL,eAAe,EAAE,EAAE;QACnB,WAAW;QACX,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,EAAE;QACd,WAAW,EAAE,EAAE;QACf,QAAQ,EAAE,EAAE;QACZ,aAAa;KACd,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAmB,EAAE,MAAmB;IAChE,OAAO;QACL,GAAG,MAAM;QACT,eAAe,EAAE,CAAC,GAAG,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC;QACpD,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,gBAAgB;KACxD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAmB,EAAE,SAA0B;IAC1E,OAAO;QACL,GAAG,MAAM;QACT,UAAU,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAmB,EAAE,UAAkB;IACnE,OAAO,EAAE,GAAG,MAAM,EAAE,WAAW,EAAE,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAmB,EAAE,OAAe;IAC7D,OAAO,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAmB,EAAE,WAAmB;IACrE,OAAO,EAAE,GAAG,MAAM,EAAE,WAAW,EAAE,CAAC;AACpC,CAAC"}
@@ -0,0 +1,30 @@
1
+ export interface SourceAudit {
2
+ source: string;
3
+ query_sent: string;
4
+ results_returned: number;
5
+ results_included: number;
6
+ latency_ms: number;
7
+ status: "ok" | "partial" | "failed";
8
+ error?: string;
9
+ }
10
+ export interface ExclusionRecord {
11
+ id: string;
12
+ title: string;
13
+ reason: string;
14
+ }
15
+ export interface AuditRecord {
16
+ tool: string;
17
+ /** ISO 8601 timestamp when the tool invocation began (query start time, not completion time) */
18
+ timestamp: string;
19
+ query: Record<string, unknown>;
20
+ sources_queried: SourceAudit[];
21
+ methodology: string;
22
+ /** Running total of results included across all sources — incremented by addSource() */
23
+ inclusions: number;
24
+ /** Individual exclusion records with reasons — use .length for count. Exclusions track WHY items were dropped; inclusions are just counted since the results array IS the included set */
25
+ exclusions: ExclusionRecord[];
26
+ assumptions: string[];
27
+ warnings: string[];
28
+ output_format: string;
29
+ }
30
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/audit/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,QAAQ,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,gGAAgG;IAChG,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,eAAe,EAAE,WAAW,EAAE,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,UAAU,EAAE,MAAM,CAAC;IACnB,0LAA0L;IAC1L,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/audit/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import type { LiteratureResult } from "../providers/types.js";
2
+ import type { AuditRecord } from "../audit/types.js";
3
+ export declare function resultsToDocx(results: LiteratureResult[], audit: AuditRecord): Promise<string>;
4
+ export declare function contentToDocx(title: string, markdownContent: string, audit: AuditRecord): Promise<string>;
5
+ //# sourceMappingURL=docx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docx.d.ts","sourceRoot":"","sources":["../../src/formatters/docx.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,wBAAsB,aAAa,CACjC,OAAO,EAAE,gBAAgB,EAAE,EAC3B,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,MAAM,CAAC,CAqHjB;AA+BD,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,MAAM,CAAC,CAqEjB"}
@@ -0,0 +1,207 @@
1
+ import { Document, Paragraph, TextRun, HeadingLevel, Table, TableRow, TableCell, WidthType, AlignmentType, Packer, } from "docx";
2
+ export async function resultsToDocx(results, audit) {
3
+ const doc = new Document({
4
+ sections: [{
5
+ properties: {},
6
+ children: [
7
+ // Title
8
+ new Paragraph({
9
+ children: [new TextRun({ text: "Literature Search Report", bold: true, size: 48 })],
10
+ heading: HeadingLevel.TITLE,
11
+ alignment: AlignmentType.CENTER,
12
+ spacing: { after: 400 },
13
+ }),
14
+ // Metadata
15
+ new Paragraph({
16
+ children: [new TextRun({ text: `Generated: ${audit.timestamp} | Tool: ${audit.tool}`, italics: true, size: 20, color: "666666" })],
17
+ alignment: AlignmentType.CENTER,
18
+ spacing: { after: 600 },
19
+ }),
20
+ // Methodology
21
+ new Paragraph({
22
+ children: [new TextRun({ text: "Methodology", bold: true, size: 28 })],
23
+ heading: HeadingLevel.HEADING_1,
24
+ }),
25
+ new Paragraph({
26
+ children: [new TextRun({ text: audit.methodology || "Not specified", size: 22 })],
27
+ spacing: { after: 200 },
28
+ }),
29
+ // Summary stats
30
+ new Paragraph({
31
+ children: [new TextRun({ text: "Summary", bold: true, size: 28 })],
32
+ heading: HeadingLevel.HEADING_1,
33
+ }),
34
+ new Paragraph({
35
+ children: [new TextRun({ text: `Total results included: ${audit.inclusions}`, size: 22 })],
36
+ }),
37
+ new Paragraph({
38
+ children: [new TextRun({ text: `Sources queried: ${audit.sources_queried.length}`, size: 22 })],
39
+ spacing: { after: 300 },
40
+ }),
41
+ // Results heading
42
+ new Paragraph({
43
+ children: [new TextRun({ text: "Results", bold: true, size: 28 })],
44
+ heading: HeadingLevel.HEADING_1,
45
+ }),
46
+ // Each result
47
+ ...results.flatMap((r, i) => [
48
+ new Paragraph({
49
+ children: [new TextRun({ text: `${i + 1}. ${r.title}`, bold: true, size: 24 })],
50
+ heading: HeadingLevel.HEADING_2,
51
+ }),
52
+ new Paragraph({
53
+ children: [
54
+ new TextRun({ text: `Source: `, bold: true, size: 20 }),
55
+ new TextRun({ text: `${r.source} | `, size: 20 }),
56
+ new TextRun({ text: `Date: `, bold: true, size: 20 }),
57
+ new TextRun({ text: `${r.date} | `, size: 20 }),
58
+ new TextRun({ text: `Type: `, bold: true, size: 20 }),
59
+ new TextRun({ text: r.study_type, size: 20 }),
60
+ ],
61
+ }),
62
+ ...(r.authors.length > 0 ? [new Paragraph({
63
+ children: [
64
+ new TextRun({ text: "Authors: ", bold: true, size: 20 }),
65
+ new TextRun({ text: r.authors.join(", "), size: 20 }),
66
+ ],
67
+ })] : []),
68
+ ...(r.abstract ? [new Paragraph({
69
+ children: [new TextRun({ text: r.abstract.slice(0, 500), size: 20 })],
70
+ spacing: { before: 100 },
71
+ })] : []),
72
+ new Paragraph({
73
+ children: [new TextRun({ text: r.url, size: 18, color: "0563C1" })],
74
+ spacing: { after: 200 },
75
+ }),
76
+ ]),
77
+ // Audit section
78
+ new Paragraph({
79
+ children: [new TextRun({ text: "Audit Trail", bold: true, size: 28 })],
80
+ heading: HeadingLevel.HEADING_1,
81
+ spacing: { before: 400 },
82
+ }),
83
+ // Sources table
84
+ buildSourcesTable(audit),
85
+ // Assumptions
86
+ ...(audit.assumptions.length > 0 ? [
87
+ new Paragraph({
88
+ children: [new TextRun({ text: "Assumptions", bold: true, size: 24 })],
89
+ heading: HeadingLevel.HEADING_2,
90
+ }),
91
+ ...audit.assumptions.map(a => new Paragraph({
92
+ children: [new TextRun({ text: `• ${a}`, size: 20 })],
93
+ })),
94
+ ] : []),
95
+ // Warnings
96
+ ...(audit.warnings.length > 0 ? [
97
+ new Paragraph({
98
+ children: [new TextRun({ text: "Warnings", bold: true, size: 24 })],
99
+ heading: HeadingLevel.HEADING_2,
100
+ }),
101
+ ...audit.warnings.map(w => new Paragraph({
102
+ children: [new TextRun({ text: `Warning: ${w}`, size: 20, color: "CC6600" })],
103
+ })),
104
+ ] : []),
105
+ // Disclaimer
106
+ new Paragraph({
107
+ children: [new TextRun({
108
+ text: "Disclaimer: This is a preliminary report for orientation purposes only. Results require validation by a qualified health economist before use in any HTA submission or payer negotiation.",
109
+ italics: true, size: 18, color: "999999",
110
+ })],
111
+ spacing: { before: 600 },
112
+ }),
113
+ ],
114
+ }],
115
+ });
116
+ const buffer = await Packer.toBuffer(doc);
117
+ return buffer.toString("base64");
118
+ }
119
+ function buildSourcesTable(audit) {
120
+ const headerRow = new TableRow({
121
+ children: ["Source", "Query", "Returned", "Included", "Status"].map(text => new TableCell({
122
+ children: [new Paragraph({ children: [new TextRun({ text, bold: true, size: 20 })] })],
123
+ width: { size: 20, type: WidthType.PERCENTAGE },
124
+ })),
125
+ tableHeader: true,
126
+ });
127
+ const dataRows = audit.sources_queried.map(s => new TableRow({
128
+ children: [s.source, s.query_sent, String(s.results_returned), String(s.results_included), s.status].map(text => new TableCell({
129
+ children: [new Paragraph({ children: [new TextRun({ text, size: 20 })] })],
130
+ width: { size: 20, type: WidthType.PERCENTAGE },
131
+ })),
132
+ }));
133
+ return new Table({
134
+ rows: [headerRow, ...dataRows],
135
+ width: { size: 100, type: WidthType.PERCENTAGE },
136
+ });
137
+ }
138
+ // Generic content-to-docx for CE model and dossier outputs
139
+ export async function contentToDocx(title, markdownContent, audit) {
140
+ // Parse markdown sections into document paragraphs
141
+ const contentParagraphs = markdownContent.split("\n").map(line => {
142
+ if (line.startsWith("## ")) {
143
+ return new Paragraph({
144
+ children: [new TextRun({ text: line.replace(/^## /, ""), bold: true, size: 28 })],
145
+ heading: HeadingLevel.HEADING_1,
146
+ spacing: { before: 300 },
147
+ });
148
+ }
149
+ if (line.startsWith("### ")) {
150
+ return new Paragraph({
151
+ children: [new TextRun({ text: line.replace(/^### /, ""), bold: true, size: 24 })],
152
+ heading: HeadingLevel.HEADING_2,
153
+ });
154
+ }
155
+ if (line.startsWith("**") && line.endsWith("**")) {
156
+ return new Paragraph({
157
+ children: [new TextRun({ text: line.replace(/\*\*/g, ""), bold: true, size: 22 })],
158
+ });
159
+ }
160
+ if (line.startsWith("- ")) {
161
+ return new Paragraph({
162
+ children: [new TextRun({ text: line.replace(/^- /, "• "), size: 20 })],
163
+ });
164
+ }
165
+ if (line.startsWith("| ")) {
166
+ // Table rows — render as plain text (tables handled separately)
167
+ return new Paragraph({
168
+ children: [new TextRun({ text: line, size: 18, font: "Courier New" })],
169
+ });
170
+ }
171
+ if (line.trim() === "" || line.startsWith("---")) {
172
+ return new Paragraph({ children: [] });
173
+ }
174
+ return new Paragraph({
175
+ children: [new TextRun({ text: line.replace(/\*\*/g, ""), size: 22 })],
176
+ });
177
+ });
178
+ const doc = new Document({
179
+ sections: [{
180
+ properties: {},
181
+ children: [
182
+ new Paragraph({
183
+ children: [new TextRun({ text: title, bold: true, size: 48 })],
184
+ heading: HeadingLevel.TITLE,
185
+ alignment: AlignmentType.CENTER,
186
+ spacing: { after: 400 },
187
+ }),
188
+ new Paragraph({
189
+ children: [new TextRun({ text: `Generated: ${audit.timestamp}`, italics: true, size: 20, color: "666666" })],
190
+ alignment: AlignmentType.CENTER,
191
+ spacing: { after: 600 },
192
+ }),
193
+ ...contentParagraphs,
194
+ new Paragraph({
195
+ children: [new TextRun({
196
+ text: "Disclaimer: This is a preliminary report for orientation purposes only.",
197
+ italics: true, size: 18, color: "999999",
198
+ })],
199
+ spacing: { before: 600 },
200
+ }),
201
+ ],
202
+ }],
203
+ });
204
+ const buffer = await Packer.toBuffer(doc);
205
+ return buffer.toString("base64");
206
+ }
207
+ //# sourceMappingURL=docx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docx.js","sourceRoot":"","sources":["../../src/formatters/docx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { LiteratureResult } from "../providers/types.js";
2
+ import type { AuditRecord } from "../audit/types.js";
3
+ export declare function resultsToJson(results: LiteratureResult[], audit: AuditRecord): object;
4
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/formatters/json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,wBAAgB,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAErF"}
@@ -0,0 +1,4 @@
1
+ export function resultsToJson(results, audit) {
2
+ return { results, audit, total: results.length };
3
+ }
4
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/formatters/json.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,aAAa,CAAC,OAA2B,EAAE,KAAkB;IAC3E,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AACnD,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { LiteratureResult } from "../providers/types.js";
2
+ import type { AuditRecord } from "../audit/types.js";
3
+ export declare function resultsToMarkdown(results: LiteratureResult[], audit: AuditRecord): string;
4
+ export declare function auditToMarkdown(audit: AuditRecord): string;
5
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/formatters/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,gBAAgB,EAAE,EAC3B,KAAK,EAAE,WAAW,GACjB,MAAM,CA4BR;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAoC1D"}
@@ -0,0 +1,50 @@
1
+ export function resultsToMarkdown(results, audit) {
2
+ const lines = [];
3
+ lines.push(`## Literature Search Results`);
4
+ lines.push(`*${results.length} studies included across ${audit.sources_queried.length} sources*\n`);
5
+ if (results.length === 0) {
6
+ lines.push("No results found matching your query.");
7
+ }
8
+ else {
9
+ results.forEach((r, i) => {
10
+ lines.push(`### ${i + 1}. ${r.title}`);
11
+ lines.push(`**Source:** ${r.source} | **Date:** ${r.date} | **Type:** ${r.study_type}`);
12
+ if (r.authors.length > 0)
13
+ lines.push(`**Authors:** ${r.authors.join(", ")}`);
14
+ if (r.abstract)
15
+ lines.push(`\n${r.abstract.slice(0, 300)}${r.abstract.length > 300 ? "..." : ""}`);
16
+ lines.push(`**URL:** ${r.url}\n`);
17
+ });
18
+ }
19
+ lines.push(auditToMarkdown(audit));
20
+ return lines.join("\n");
21
+ }
22
+ export function auditToMarkdown(audit) {
23
+ const lines = [];
24
+ lines.push(`---`);
25
+ lines.push(`## Audit Report`);
26
+ lines.push(`**Tool:** ${audit.tool} | **Time:** ${audit.timestamp} | **Methodology:** ${audit.methodology || "N/A"}`);
27
+ lines.push(`**Total included:** ${audit.inclusions}`);
28
+ if (audit.sources_queried.length > 0) {
29
+ lines.push(`\n### Sources Queried`);
30
+ lines.push(`| Source | Query | Returned | Included | Status |`);
31
+ lines.push(`|--------|-------|----------|----------|--------|`);
32
+ audit.sources_queried.forEach((s) => {
33
+ lines.push(`| ${s.source} | \`${s.query_sent}\` | ${s.results_returned} | ${s.results_included} | ${s.status} |`);
34
+ });
35
+ }
36
+ if (audit.exclusions.length > 0) {
37
+ lines.push(`\n### Exclusions (${audit.exclusions.length})`);
38
+ audit.exclusions.forEach((e) => lines.push(`- ${e.title}: *${e.reason}*`));
39
+ }
40
+ if (audit.assumptions.length > 0) {
41
+ lines.push(`\n### Assumptions`);
42
+ audit.assumptions.forEach((a) => lines.push(`- ${a}`));
43
+ }
44
+ if (audit.warnings.length > 0) {
45
+ lines.push(`\n### Warnings`);
46
+ audit.warnings.forEach((w) => lines.push(`- ⚠️ ${w}`));
47
+ }
48
+ return lines.join("\n");
49
+ }
50
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/formatters/markdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export * from "./paths.js";
2
+ export * from "./yaml.js";
3
+ export * from "./rawStore.js";
4
+ export * from "./search.js";
5
+ export * from "./wikiStore.js";
6
+ export * from "./projectStore.js";
7
+ export * from "./types.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/knowledge/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,8 @@
1
+ export * from "./paths.js";
2
+ export * from "./yaml.js";
3
+ export * from "./rawStore.js";
4
+ export * from "./search.js";
5
+ export * from "./wikiStore.js";
6
+ export * from "./projectStore.js";
7
+ export * from "./types.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/knowledge/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare function getKbRoot(): string;
2
+ export declare function getProjectRoot(projectId: string): string;
3
+ export declare function getRawLiteratureDir(projectId: string): string;
4
+ export declare function getRawModelsDir(projectId: string): string;
5
+ export declare function getRawDossiersDir(projectId: string): string;
6
+ export declare function getWikiDir(projectId: string): string;
7
+ export declare function sanitizeProjectId(id: string): string;
8
+ export declare function sanitizeFilename(name: string): string;
9
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/knowledge/paths.ts"],"names":[],"mappings":"AAGA,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpD;AAGD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMpD;AAGD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD"}