helixlife-expert-cli 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 (523) hide show
  1. package/README.md +159 -0
  2. package/cli/bin/helixlife-expert.js +3 -0
  3. package/cli/dist/core/api/client.d.ts +31 -0
  4. package/cli/dist/core/api/client.d.ts.map +1 -0
  5. package/cli/dist/core/api/client.js +183 -0
  6. package/cli/dist/core/api/client.js.map +1 -0
  7. package/cli/dist/core/api/http.d.ts +3 -0
  8. package/cli/dist/core/api/http.d.ts.map +1 -0
  9. package/cli/dist/core/api/http.js +22 -0
  10. package/cli/dist/core/api/http.js.map +1 -0
  11. package/cli/dist/core/api/response.d.ts +48 -0
  12. package/cli/dist/core/api/response.d.ts.map +1 -0
  13. package/cli/dist/core/api/response.js +84 -0
  14. package/cli/dist/core/api/response.js.map +1 -0
  15. package/cli/dist/core/api/sse.d.ts +6 -0
  16. package/cli/dist/core/api/sse.d.ts.map +1 -0
  17. package/cli/dist/core/api/sse.js +60 -0
  18. package/cli/dist/core/api/sse.js.map +1 -0
  19. package/cli/dist/core/auth/index.d.ts +35 -0
  20. package/cli/dist/core/auth/index.d.ts.map +1 -0
  21. package/cli/dist/core/auth/index.js +150 -0
  22. package/cli/dist/core/auth/index.js.map +1 -0
  23. package/cli/dist/core/env-config.d.ts +16 -0
  24. package/cli/dist/core/env-config.d.ts.map +1 -0
  25. package/cli/dist/core/env-config.js +80 -0
  26. package/cli/dist/core/env-config.js.map +1 -0
  27. package/cli/dist/core/errors.d.ts +20 -0
  28. package/cli/dist/core/errors.d.ts.map +1 -0
  29. package/cli/dist/core/errors.js +28 -0
  30. package/cli/dist/core/errors.js.map +1 -0
  31. package/cli/dist/core/index.d.ts +16 -0
  32. package/cli/dist/core/index.d.ts.map +1 -0
  33. package/cli/dist/core/index.js +16 -0
  34. package/cli/dist/core/index.js.map +1 -0
  35. package/cli/dist/core/interactive.d.ts +18 -0
  36. package/cli/dist/core/interactive.d.ts.map +1 -0
  37. package/cli/dist/core/interactive.js +74 -0
  38. package/cli/dist/core/interactive.js.map +1 -0
  39. package/cli/dist/core/output/index.d.ts +29 -0
  40. package/cli/dist/core/output/index.d.ts.map +1 -0
  41. package/cli/dist/core/output/index.js +153 -0
  42. package/cli/dist/core/output/index.js.map +1 -0
  43. package/cli/dist/core/parse.d.ts +9 -0
  44. package/cli/dist/core/parse.d.ts.map +1 -0
  45. package/cli/dist/core/parse.js +31 -0
  46. package/cli/dist/core/parse.js.map +1 -0
  47. package/cli/dist/core/paths.d.ts +21 -0
  48. package/cli/dist/core/paths.d.ts.map +1 -0
  49. package/cli/dist/core/paths.js +65 -0
  50. package/cli/dist/core/paths.js.map +1 -0
  51. package/cli/dist/core/sse-utils.d.ts +49 -0
  52. package/cli/dist/core/sse-utils.d.ts.map +1 -0
  53. package/cli/dist/core/sse-utils.js +181 -0
  54. package/cli/dist/core/sse-utils.js.map +1 -0
  55. package/cli/dist/core/terminal.d.ts +2 -0
  56. package/cli/dist/core/terminal.d.ts.map +1 -0
  57. package/cli/dist/core/terminal.js +6 -0
  58. package/cli/dist/core/terminal.js.map +1 -0
  59. package/cli/dist/core/token/index.d.ts +5 -0
  60. package/cli/dist/core/token/index.d.ts.map +1 -0
  61. package/cli/dist/core/token/index.js +26 -0
  62. package/cli/dist/core/token/index.js.map +1 -0
  63. package/cli/dist/core/types/config.d.ts +8 -0
  64. package/cli/dist/core/types/config.d.ts.map +1 -0
  65. package/cli/dist/core/types/config.js +30 -0
  66. package/cli/dist/core/types/config.js.map +1 -0
  67. package/cli/dist/core/version.d.ts +2 -0
  68. package/cli/dist/core/version.d.ts.map +1 -0
  69. package/cli/dist/core/version.js +10 -0
  70. package/cli/dist/core/version.js.map +1 -0
  71. package/cli/dist/index.d.ts +2 -0
  72. package/cli/dist/index.d.ts.map +1 -0
  73. package/cli/dist/index.js +23 -0
  74. package/cli/dist/index.js.map +1 -0
  75. package/cli/dist/modules/analysis/constants.d.ts +3 -0
  76. package/cli/dist/modules/analysis/constants.d.ts.map +1 -0
  77. package/cli/dist/modules/analysis/constants.js +3 -0
  78. package/cli/dist/modules/analysis/constants.js.map +1 -0
  79. package/cli/dist/modules/analysis/index.d.ts +3 -0
  80. package/cli/dist/modules/analysis/index.d.ts.map +1 -0
  81. package/cli/dist/modules/analysis/index.js +23 -0
  82. package/cli/dist/modules/analysis/index.js.map +1 -0
  83. package/cli/dist/modules/auth/index.d.ts +3 -0
  84. package/cli/dist/modules/auth/index.d.ts.map +1 -0
  85. package/cli/dist/modules/auth/index.js +76 -0
  86. package/cli/dist/modules/auth/index.js.map +1 -0
  87. package/cli/dist/modules/expert-scaffold.d.ts +27 -0
  88. package/cli/dist/modules/expert-scaffold.d.ts.map +1 -0
  89. package/cli/dist/modules/expert-scaffold.js +25 -0
  90. package/cli/dist/modules/expert-scaffold.js.map +1 -0
  91. package/cli/dist/modules/fund/clinical/apps.d.ts +19 -0
  92. package/cli/dist/modules/fund/clinical/apps.d.ts.map +1 -0
  93. package/cli/dist/modules/fund/clinical/apps.js +14 -0
  94. package/cli/dist/modules/fund/clinical/apps.js.map +1 -0
  95. package/cli/dist/modules/fund/clinical/command-utils.d.ts +4 -0
  96. package/cli/dist/modules/fund/clinical/command-utils.d.ts.map +1 -0
  97. package/cli/dist/modules/fund/clinical/command-utils.js +40 -0
  98. package/cli/dist/modules/fund/clinical/command-utils.js.map +1 -0
  99. package/cli/dist/modules/fund/clinical/commands/article-create.d.ts +9 -0
  100. package/cli/dist/modules/fund/clinical/commands/article-create.d.ts.map +1 -0
  101. package/cli/dist/modules/fund/clinical/commands/article-create.js +99 -0
  102. package/cli/dist/modules/fund/clinical/commands/article-create.js.map +1 -0
  103. package/cli/dist/modules/fund/clinical/commands/article-download.d.ts +30 -0
  104. package/cli/dist/modules/fund/clinical/commands/article-download.d.ts.map +1 -0
  105. package/cli/dist/modules/fund/clinical/commands/article-download.js +153 -0
  106. package/cli/dist/modules/fund/clinical/commands/article-download.js.map +1 -0
  107. package/cli/dist/modules/fund/clinical/commands/four-elements-create.d.ts +7 -0
  108. package/cli/dist/modules/fund/clinical/commands/four-elements-create.d.ts.map +1 -0
  109. package/cli/dist/modules/fund/clinical/commands/four-elements-create.js +81 -0
  110. package/cli/dist/modules/fund/clinical/commands/four-elements-create.js.map +1 -0
  111. package/cli/dist/modules/fund/clinical/commands/four-elements-precheck.d.ts +7 -0
  112. package/cli/dist/modules/fund/clinical/commands/four-elements-precheck.d.ts.map +1 -0
  113. package/cli/dist/modules/fund/clinical/commands/four-elements-precheck.js +76 -0
  114. package/cli/dist/modules/fund/clinical/commands/four-elements-precheck.js.map +1 -0
  115. package/cli/dist/modules/fund/clinical/commands/four-elements-update.d.ts +16 -0
  116. package/cli/dist/modules/fund/clinical/commands/four-elements-update.d.ts.map +1 -0
  117. package/cli/dist/modules/fund/clinical/commands/four-elements-update.js +108 -0
  118. package/cli/dist/modules/fund/clinical/commands/four-elements-update.js.map +1 -0
  119. package/cli/dist/modules/fund/clinical/commands/sample-size.d.ts +14 -0
  120. package/cli/dist/modules/fund/clinical/commands/sample-size.d.ts.map +1 -0
  121. package/cli/dist/modules/fund/clinical/commands/sample-size.js +164 -0
  122. package/cli/dist/modules/fund/clinical/commands/sample-size.js.map +1 -0
  123. package/cli/dist/modules/fund/clinical/commands/topic-evaluation-create.d.ts +25 -0
  124. package/cli/dist/modules/fund/clinical/commands/topic-evaluation-create.d.ts.map +1 -0
  125. package/cli/dist/modules/fund/clinical/commands/topic-evaluation-create.js +228 -0
  126. package/cli/dist/modules/fund/clinical/commands/topic-evaluation-create.js.map +1 -0
  127. package/cli/dist/modules/fund/clinical/commands/topic-evaluation-parameters.d.ts +45 -0
  128. package/cli/dist/modules/fund/clinical/commands/topic-evaluation-parameters.d.ts.map +1 -0
  129. package/cli/dist/modules/fund/clinical/commands/topic-evaluation-parameters.js +211 -0
  130. package/cli/dist/modules/fund/clinical/commands/topic-evaluation-parameters.js.map +1 -0
  131. package/cli/dist/modules/fund/clinical/constants.d.ts +85 -0
  132. package/cli/dist/modules/fund/clinical/constants.d.ts.map +1 -0
  133. package/cli/dist/modules/fund/clinical/constants.js +161 -0
  134. package/cli/dist/modules/fund/clinical/constants.js.map +1 -0
  135. package/cli/dist/modules/fund/clinical/form-rules.d.ts +56 -0
  136. package/cli/dist/modules/fund/clinical/form-rules.d.ts.map +1 -0
  137. package/cli/dist/modules/fund/clinical/form-rules.js +542 -0
  138. package/cli/dist/modules/fund/clinical/form-rules.js.map +1 -0
  139. package/cli/dist/modules/fund/clinical/four-elements.d.ts +46 -0
  140. package/cli/dist/modules/fund/clinical/four-elements.d.ts.map +1 -0
  141. package/cli/dist/modules/fund/clinical/four-elements.js +190 -0
  142. package/cli/dist/modules/fund/clinical/four-elements.js.map +1 -0
  143. package/cli/dist/modules/fund/clinical/index.d.ts +3 -0
  144. package/cli/dist/modules/fund/clinical/index.d.ts.map +1 -0
  145. package/cli/dist/modules/fund/clinical/index.js +176 -0
  146. package/cli/dist/modules/fund/clinical/index.js.map +1 -0
  147. package/cli/dist/modules/fund/clinical/parameters.d.ts +51 -0
  148. package/cli/dist/modules/fund/clinical/parameters.d.ts.map +1 -0
  149. package/cli/dist/modules/fund/clinical/parameters.js +145 -0
  150. package/cli/dist/modules/fund/clinical/parameters.js.map +1 -0
  151. package/cli/dist/modules/fund/clinical/sample-size.d.ts +130 -0
  152. package/cli/dist/modules/fund/clinical/sample-size.d.ts.map +1 -0
  153. package/cli/dist/modules/fund/clinical/sample-size.js +356 -0
  154. package/cli/dist/modules/fund/clinical/sample-size.js.map +1 -0
  155. package/cli/dist/modules/fund/clinical/session-cache.d.ts +25 -0
  156. package/cli/dist/modules/fund/clinical/session-cache.d.ts.map +1 -0
  157. package/cli/dist/modules/fund/clinical/session-cache.js +100 -0
  158. package/cli/dist/modules/fund/clinical/session-cache.js.map +1 -0
  159. package/cli/dist/modules/fund/clinical/sse-utils.d.ts +22 -0
  160. package/cli/dist/modules/fund/clinical/sse-utils.d.ts.map +1 -0
  161. package/cli/dist/modules/fund/clinical/sse-utils.js +80 -0
  162. package/cli/dist/modules/fund/clinical/sse-utils.js.map +1 -0
  163. package/cli/dist/modules/fund/constants.d.ts +3 -0
  164. package/cli/dist/modules/fund/constants.d.ts.map +1 -0
  165. package/cli/dist/modules/fund/constants.js +3 -0
  166. package/cli/dist/modules/fund/constants.js.map +1 -0
  167. package/cli/dist/modules/fund/index.d.ts +3 -0
  168. package/cli/dist/modules/fund/index.d.ts.map +1 -0
  169. package/cli/dist/modules/fund/index.js +28 -0
  170. package/cli/dist/modules/fund/index.js.map +1 -0
  171. package/cli/dist/modules/fund/nsfc/apps.d.ts +54 -0
  172. package/cli/dist/modules/fund/nsfc/apps.d.ts.map +1 -0
  173. package/cli/dist/modules/fund/nsfc/apps.js +76 -0
  174. package/cli/dist/modules/fund/nsfc/apps.js.map +1 -0
  175. package/cli/dist/modules/fund/nsfc/article-cache.d.ts +14 -0
  176. package/cli/dist/modules/fund/nsfc/article-cache.d.ts.map +1 -0
  177. package/cli/dist/modules/fund/nsfc/article-cache.js +79 -0
  178. package/cli/dist/modules/fund/nsfc/article-cache.js.map +1 -0
  179. package/cli/dist/modules/fund/nsfc/commands/article-create.d.ts +8 -0
  180. package/cli/dist/modules/fund/nsfc/commands/article-create.d.ts.map +1 -0
  181. package/cli/dist/modules/fund/nsfc/commands/article-create.js +108 -0
  182. package/cli/dist/modules/fund/nsfc/commands/article-create.js.map +1 -0
  183. package/cli/dist/modules/fund/nsfc/commands/article-download.d.ts +42 -0
  184. package/cli/dist/modules/fund/nsfc/commands/article-download.d.ts.map +1 -0
  185. package/cli/dist/modules/fund/nsfc/commands/article-download.js +189 -0
  186. package/cli/dist/modules/fund/nsfc/commands/article-download.js.map +1 -0
  187. package/cli/dist/modules/fund/nsfc/commands/format-convert.d.ts +9 -0
  188. package/cli/dist/modules/fund/nsfc/commands/format-convert.d.ts.map +1 -0
  189. package/cli/dist/modules/fund/nsfc/commands/format-convert.js +98 -0
  190. package/cli/dist/modules/fund/nsfc/commands/format-convert.js.map +1 -0
  191. package/cli/dist/modules/fund/nsfc/commands/hypothesis-analyze.d.ts +12 -0
  192. package/cli/dist/modules/fund/nsfc/commands/hypothesis-analyze.d.ts.map +1 -0
  193. package/cli/dist/modules/fund/nsfc/commands/hypothesis-analyze.js +351 -0
  194. package/cli/dist/modules/fund/nsfc/commands/hypothesis-analyze.js.map +1 -0
  195. package/cli/dist/modules/fund/nsfc/commands/hypothesis-create.d.ts +21 -0
  196. package/cli/dist/modules/fund/nsfc/commands/hypothesis-create.d.ts.map +1 -0
  197. package/cli/dist/modules/fund/nsfc/commands/hypothesis-create.js +197 -0
  198. package/cli/dist/modules/fund/nsfc/commands/hypothesis-create.js.map +1 -0
  199. package/cli/dist/modules/fund/nsfc/commands/hypothesis-figure.d.ts +9 -0
  200. package/cli/dist/modules/fund/nsfc/commands/hypothesis-figure.d.ts.map +1 -0
  201. package/cli/dist/modules/fund/nsfc/commands/hypothesis-figure.js +120 -0
  202. package/cli/dist/modules/fund/nsfc/commands/hypothesis-figure.js.map +1 -0
  203. package/cli/dist/modules/fund/nsfc/commands/hypothesis-genes-select.d.ts +11 -0
  204. package/cli/dist/modules/fund/nsfc/commands/hypothesis-genes-select.d.ts.map +1 -0
  205. package/cli/dist/modules/fund/nsfc/commands/hypothesis-genes-select.js +125 -0
  206. package/cli/dist/modules/fund/nsfc/commands/hypothesis-genes-select.js.map +1 -0
  207. package/cli/dist/modules/fund/nsfc/commands/hypothesis-pick.d.ts +11 -0
  208. package/cli/dist/modules/fund/nsfc/commands/hypothesis-pick.d.ts.map +1 -0
  209. package/cli/dist/modules/fund/nsfc/commands/hypothesis-pick.js +109 -0
  210. package/cli/dist/modules/fund/nsfc/commands/hypothesis-pick.js.map +1 -0
  211. package/cli/dist/modules/fund/nsfc/commands/outline-confirm.d.ts +9 -0
  212. package/cli/dist/modules/fund/nsfc/commands/outline-confirm.d.ts.map +1 -0
  213. package/cli/dist/modules/fund/nsfc/commands/outline-confirm.js +64 -0
  214. package/cli/dist/modules/fund/nsfc/commands/outline-confirm.js.map +1 -0
  215. package/cli/dist/modules/fund/nsfc/commands/outline-create.d.ts +8 -0
  216. package/cli/dist/modules/fund/nsfc/commands/outline-create.d.ts.map +1 -0
  217. package/cli/dist/modules/fund/nsfc/commands/outline-create.js +103 -0
  218. package/cli/dist/modules/fund/nsfc/commands/outline-create.js.map +1 -0
  219. package/cli/dist/modules/fund/nsfc/commands/research-path-confirm.d.ts +9 -0
  220. package/cli/dist/modules/fund/nsfc/commands/research-path-confirm.d.ts.map +1 -0
  221. package/cli/dist/modules/fund/nsfc/commands/research-path-confirm.js +176 -0
  222. package/cli/dist/modules/fund/nsfc/commands/research-path-confirm.js.map +1 -0
  223. package/cli/dist/modules/fund/nsfc/commands/tech-roadmap.d.ts +9 -0
  224. package/cli/dist/modules/fund/nsfc/commands/tech-roadmap.d.ts.map +1 -0
  225. package/cli/dist/modules/fund/nsfc/commands/tech-roadmap.js +190 -0
  226. package/cli/dist/modules/fund/nsfc/commands/tech-roadmap.js.map +1 -0
  227. package/cli/dist/modules/fund/nsfc/constants.d.ts +96 -0
  228. package/cli/dist/modules/fund/nsfc/constants.d.ts.map +1 -0
  229. package/cli/dist/modules/fund/nsfc/constants.js +156 -0
  230. package/cli/dist/modules/fund/nsfc/constants.js.map +1 -0
  231. package/cli/dist/modules/fund/nsfc/graph-render.d.ts +25 -0
  232. package/cli/dist/modules/fund/nsfc/graph-render.d.ts.map +1 -0
  233. package/cli/dist/modules/fund/nsfc/graph-render.js +212 -0
  234. package/cli/dist/modules/fund/nsfc/graph-render.js.map +1 -0
  235. package/cli/dist/modules/fund/nsfc/index.d.ts +4 -0
  236. package/cli/dist/modules/fund/nsfc/index.d.ts.map +1 -0
  237. package/cli/dist/modules/fund/nsfc/index.js +238 -0
  238. package/cli/dist/modules/fund/nsfc/index.js.map +1 -0
  239. package/cli/dist/modules/fund/nsfc/mermaid-render.d.ts +18 -0
  240. package/cli/dist/modules/fund/nsfc/mermaid-render.d.ts.map +1 -0
  241. package/cli/dist/modules/fund/nsfc/mermaid-render.js +47 -0
  242. package/cli/dist/modules/fund/nsfc/mermaid-render.js.map +1 -0
  243. package/cli/dist/modules/fund/nsfc/parse-hypothesis.d.ts +76 -0
  244. package/cli/dist/modules/fund/nsfc/parse-hypothesis.d.ts.map +1 -0
  245. package/cli/dist/modules/fund/nsfc/parse-hypothesis.js +278 -0
  246. package/cli/dist/modules/fund/nsfc/parse-hypothesis.js.map +1 -0
  247. package/cli/dist/modules/fund/nsfc/parse-outline.d.ts +23 -0
  248. package/cli/dist/modules/fund/nsfc/parse-outline.d.ts.map +1 -0
  249. package/cli/dist/modules/fund/nsfc/parse-outline.js +91 -0
  250. package/cli/dist/modules/fund/nsfc/parse-outline.js.map +1 -0
  251. package/cli/dist/modules/fund/nsfc/png-watermark.d.ts +24 -0
  252. package/cli/dist/modules/fund/nsfc/png-watermark.d.ts.map +1 -0
  253. package/cli/dist/modules/fund/nsfc/png-watermark.js +78 -0
  254. package/cli/dist/modules/fund/nsfc/png-watermark.js.map +1 -0
  255. package/cli/dist/modules/fund/nsfc/prompt-hypothesis.d.ts +20 -0
  256. package/cli/dist/modules/fund/nsfc/prompt-hypothesis.d.ts.map +1 -0
  257. package/cli/dist/modules/fund/nsfc/prompt-hypothesis.js +107 -0
  258. package/cli/dist/modules/fund/nsfc/prompt-hypothesis.js.map +1 -0
  259. package/cli/dist/modules/fund/nsfc/prompt-step2.d.ts +18 -0
  260. package/cli/dist/modules/fund/nsfc/prompt-step2.d.ts.map +1 -0
  261. package/cli/dist/modules/fund/nsfc/prompt-step2.js +107 -0
  262. package/cli/dist/modules/fund/nsfc/prompt-step2.js.map +1 -0
  263. package/cli/dist/modules/fund/nsfc/request-body.d.ts +47 -0
  264. package/cli/dist/modules/fund/nsfc/request-body.d.ts.map +1 -0
  265. package/cli/dist/modules/fund/nsfc/request-body.js +38 -0
  266. package/cli/dist/modules/fund/nsfc/request-body.js.map +1 -0
  267. package/cli/dist/modules/fund/nsfc/session-cache.d.ts +48 -0
  268. package/cli/dist/modules/fund/nsfc/session-cache.d.ts.map +1 -0
  269. package/cli/dist/modules/fund/nsfc/session-cache.js +90 -0
  270. package/cli/dist/modules/fund/nsfc/session-cache.js.map +1 -0
  271. package/cli/dist/modules/fund/nsfc/sse-utils.d.ts +22 -0
  272. package/cli/dist/modules/fund/nsfc/sse-utils.d.ts.map +1 -0
  273. package/cli/dist/modules/fund/nsfc/sse-utils.js +81 -0
  274. package/cli/dist/modules/fund/nsfc/sse-utils.js.map +1 -0
  275. package/cli/dist/modules/fund/nsfc/upload.d.ts +3 -0
  276. package/cli/dist/modules/fund/nsfc/upload.d.ts.map +1 -0
  277. package/cli/dist/modules/fund/nsfc/upload.js +59 -0
  278. package/cli/dist/modules/fund/nsfc/upload.js.map +1 -0
  279. package/cli/dist/modules/fund/nsfc/validate.d.ts +30 -0
  280. package/cli/dist/modules/fund/nsfc/validate.d.ts.map +1 -0
  281. package/cli/dist/modules/fund/nsfc/validate.js +91 -0
  282. package/cli/dist/modules/fund/nsfc/validate.js.map +1 -0
  283. package/cli/dist/modules/literature/commands/workflow-list.d.ts +5 -0
  284. package/cli/dist/modules/literature/commands/workflow-list.d.ts.map +1 -0
  285. package/cli/dist/modules/literature/commands/workflow-list.js +9 -0
  286. package/cli/dist/modules/literature/commands/workflow-list.js.map +1 -0
  287. package/cli/dist/modules/literature/commands/workflow-params.d.ts +6 -0
  288. package/cli/dist/modules/literature/commands/workflow-params.d.ts.map +1 -0
  289. package/cli/dist/modules/literature/commands/workflow-params.js +9 -0
  290. package/cli/dist/modules/literature/commands/workflow-params.js.map +1 -0
  291. package/cli/dist/modules/literature/commands/workflow-run.d.ts +7 -0
  292. package/cli/dist/modules/literature/commands/workflow-run.d.ts.map +1 -0
  293. package/cli/dist/modules/literature/commands/workflow-run.js +10 -0
  294. package/cli/dist/modules/literature/commands/workflow-run.js.map +1 -0
  295. package/cli/dist/modules/literature/constants.d.ts +20 -0
  296. package/cli/dist/modules/literature/constants.d.ts.map +1 -0
  297. package/cli/dist/modules/literature/constants.js +56 -0
  298. package/cli/dist/modules/literature/constants.js.map +1 -0
  299. package/cli/dist/modules/literature/index.d.ts +3 -0
  300. package/cli/dist/modules/literature/index.d.ts.map +1 -0
  301. package/cli/dist/modules/literature/index.js +63 -0
  302. package/cli/dist/modules/literature/index.js.map +1 -0
  303. package/cli/dist/modules/meta/analysis.d.ts +127 -0
  304. package/cli/dist/modules/meta/analysis.d.ts.map +1 -0
  305. package/cli/dist/modules/meta/analysis.js +1165 -0
  306. package/cli/dist/modules/meta/analysis.js.map +1 -0
  307. package/cli/dist/modules/meta/api.d.ts +11 -0
  308. package/cli/dist/modules/meta/api.d.ts.map +1 -0
  309. package/cli/dist/modules/meta/api.js +40 -0
  310. package/cli/dist/modules/meta/api.js.map +1 -0
  311. package/cli/dist/modules/meta/commands.d.ts +3 -0
  312. package/cli/dist/modules/meta/commands.d.ts.map +1 -0
  313. package/cli/dist/modules/meta/commands.js +1185 -0
  314. package/cli/dist/modules/meta/commands.js.map +1 -0
  315. package/cli/dist/modules/meta/constants.d.ts +8 -0
  316. package/cli/dist/modules/meta/constants.d.ts.map +1 -0
  317. package/cli/dist/modules/meta/constants.js +9 -0
  318. package/cli/dist/modules/meta/constants.js.map +1 -0
  319. package/cli/dist/modules/meta/extraction.d.ts +206 -0
  320. package/cli/dist/modules/meta/extraction.d.ts.map +1 -0
  321. package/cli/dist/modules/meta/extraction.js +1248 -0
  322. package/cli/dist/modules/meta/extraction.js.map +1 -0
  323. package/cli/dist/modules/meta/index.d.ts +3 -0
  324. package/cli/dist/modules/meta/index.d.ts.map +1 -0
  325. package/cli/dist/modules/meta/index.js +19 -0
  326. package/cli/dist/modules/meta/index.js.map +1 -0
  327. package/cli/dist/modules/meta/node.d.ts +70 -0
  328. package/cli/dist/modules/meta/node.d.ts.map +1 -0
  329. package/cli/dist/modules/meta/node.js +167 -0
  330. package/cli/dist/modules/meta/node.js.map +1 -0
  331. package/cli/dist/modules/meta/plot-params.d.ts +82 -0
  332. package/cli/dist/modules/meta/plot-params.d.ts.map +1 -0
  333. package/cli/dist/modules/meta/plot-params.js +1179 -0
  334. package/cli/dist/modules/meta/plot-params.js.map +1 -0
  335. package/cli/dist/modules/meta/prisma-flow-docx.d.ts +23 -0
  336. package/cli/dist/modules/meta/prisma-flow-docx.d.ts.map +1 -0
  337. package/cli/dist/modules/meta/prisma-flow-docx.js +302 -0
  338. package/cli/dist/modules/meta/prisma-flow-docx.js.map +1 -0
  339. package/cli/dist/modules/meta/retrieve.d.ts +113 -0
  340. package/cli/dist/modules/meta/retrieve.d.ts.map +1 -0
  341. package/cli/dist/modules/meta/retrieve.js +913 -0
  342. package/cli/dist/modules/meta/retrieve.js.map +1 -0
  343. package/cli/dist/modules/meta/screening.d.ts +179 -0
  344. package/cli/dist/modules/meta/screening.d.ts.map +1 -0
  345. package/cli/dist/modules/meta/screening.js +1255 -0
  346. package/cli/dist/modules/meta/screening.js.map +1 -0
  347. package/cli/dist/modules/meta/topic.d.ts +110 -0
  348. package/cli/dist/modules/meta/topic.d.ts.map +1 -0
  349. package/cli/dist/modules/meta/topic.js +865 -0
  350. package/cli/dist/modules/meta/topic.js.map +1 -0
  351. package/cli/dist/modules/meta/types.d.ts +49 -0
  352. package/cli/dist/modules/meta/types.d.ts.map +1 -0
  353. package/cli/dist/modules/meta/types.js +2 -0
  354. package/cli/dist/modules/meta/types.js.map +1 -0
  355. package/cli/dist/modules/meta/workflow.d.ts +154 -0
  356. package/cli/dist/modules/meta/workflow.d.ts.map +1 -0
  357. package/cli/dist/modules/meta/workflow.js +956 -0
  358. package/cli/dist/modules/meta/workflow.js.map +1 -0
  359. package/cli/dist/modules/meta/writing.d.ts +83 -0
  360. package/cli/dist/modules/meta/writing.d.ts.map +1 -0
  361. package/cli/dist/modules/meta/writing.js +1077 -0
  362. package/cli/dist/modules/meta/writing.js.map +1 -0
  363. package/cli/dist/modules/proposal/artifacts.d.ts +18 -0
  364. package/cli/dist/modules/proposal/artifacts.d.ts.map +1 -0
  365. package/cli/dist/modules/proposal/artifacts.js +43 -0
  366. package/cli/dist/modules/proposal/artifacts.js.map +1 -0
  367. package/cli/dist/modules/proposal/commands/basic-create.d.ts +22 -0
  368. package/cli/dist/modules/proposal/commands/basic-create.d.ts.map +1 -0
  369. package/cli/dist/modules/proposal/commands/basic-create.js +81 -0
  370. package/cli/dist/modules/proposal/commands/basic-create.js.map +1 -0
  371. package/cli/dist/modules/proposal/commands/basic-result.d.ts +24 -0
  372. package/cli/dist/modules/proposal/commands/basic-result.d.ts.map +1 -0
  373. package/cli/dist/modules/proposal/commands/basic-result.js +96 -0
  374. package/cli/dist/modules/proposal/commands/basic-result.js.map +1 -0
  375. package/cli/dist/modules/proposal/commands/bioinfo-params.d.ts +5 -0
  376. package/cli/dist/modules/proposal/commands/bioinfo-params.d.ts.map +1 -0
  377. package/cli/dist/modules/proposal/commands/bioinfo-params.js +9 -0
  378. package/cli/dist/modules/proposal/commands/bioinfo-params.js.map +1 -0
  379. package/cli/dist/modules/proposal/commands/bioinfo-run.d.ts +6 -0
  380. package/cli/dist/modules/proposal/commands/bioinfo-run.d.ts.map +1 -0
  381. package/cli/dist/modules/proposal/commands/bioinfo-run.js +10 -0
  382. package/cli/dist/modules/proposal/commands/bioinfo-run.js.map +1 -0
  383. package/cli/dist/modules/proposal/commands/clinical-list.d.ts +5 -0
  384. package/cli/dist/modules/proposal/commands/clinical-list.d.ts.map +1 -0
  385. package/cli/dist/modules/proposal/commands/clinical-list.js +9 -0
  386. package/cli/dist/modules/proposal/commands/clinical-list.js.map +1 -0
  387. package/cli/dist/modules/proposal/commands/clinical-params.d.ts +6 -0
  388. package/cli/dist/modules/proposal/commands/clinical-params.d.ts.map +1 -0
  389. package/cli/dist/modules/proposal/commands/clinical-params.js +9 -0
  390. package/cli/dist/modules/proposal/commands/clinical-params.js.map +1 -0
  391. package/cli/dist/modules/proposal/commands/clinical-run.d.ts +7 -0
  392. package/cli/dist/modules/proposal/commands/clinical-run.d.ts.map +1 -0
  393. package/cli/dist/modules/proposal/commands/clinical-run.js +10 -0
  394. package/cli/dist/modules/proposal/commands/clinical-run.js.map +1 -0
  395. package/cli/dist/modules/proposal/constants.d.ts +34 -0
  396. package/cli/dist/modules/proposal/constants.d.ts.map +1 -0
  397. package/cli/dist/modules/proposal/constants.js +75 -0
  398. package/cli/dist/modules/proposal/constants.js.map +1 -0
  399. package/cli/dist/modules/proposal/index.d.ts +3 -0
  400. package/cli/dist/modules/proposal/index.d.ts.map +1 -0
  401. package/cli/dist/modules/proposal/index.js +95 -0
  402. package/cli/dist/modules/proposal/index.js.map +1 -0
  403. package/cli/dist/modules/proposal/newidea-env.d.ts +28 -0
  404. package/cli/dist/modules/proposal/newidea-env.d.ts.map +1 -0
  405. package/cli/dist/modules/proposal/newidea-env.js +69 -0
  406. package/cli/dist/modules/proposal/newidea-env.js.map +1 -0
  407. package/cli/dist/modules/proposal/newidea-runner.d.ts +25 -0
  408. package/cli/dist/modules/proposal/newidea-runner.d.ts.map +1 -0
  409. package/cli/dist/modules/proposal/newidea-runner.js +158 -0
  410. package/cli/dist/modules/proposal/newidea-runner.js.map +1 -0
  411. package/cli/dist/modules/proposal/parse.d.ts +25 -0
  412. package/cli/dist/modules/proposal/parse.d.ts.map +1 -0
  413. package/cli/dist/modules/proposal/parse.js +173 -0
  414. package/cli/dist/modules/proposal/parse.js.map +1 -0
  415. package/cli/dist/modules/sci/apps.d.ts +48 -0
  416. package/cli/dist/modules/sci/apps.d.ts.map +1 -0
  417. package/cli/dist/modules/sci/apps.js +43 -0
  418. package/cli/dist/modules/sci/apps.js.map +1 -0
  419. package/cli/dist/modules/sci/article-cache.d.ts +32 -0
  420. package/cli/dist/modules/sci/article-cache.d.ts.map +1 -0
  421. package/cli/dist/modules/sci/article-cache.js +163 -0
  422. package/cli/dist/modules/sci/article-cache.js.map +1 -0
  423. package/cli/dist/modules/sci/article-validate.d.ts +11 -0
  424. package/cli/dist/modules/sci/article-validate.d.ts.map +1 -0
  425. package/cli/dist/modules/sci/article-validate.js +43 -0
  426. package/cli/dist/modules/sci/article-validate.js.map +1 -0
  427. package/cli/dist/modules/sci/commands/article-create.d.ts +46 -0
  428. package/cli/dist/modules/sci/commands/article-create.d.ts.map +1 -0
  429. package/cli/dist/modules/sci/commands/article-create.js +315 -0
  430. package/cli/dist/modules/sci/commands/article-create.js.map +1 -0
  431. package/cli/dist/modules/sci/commands/article-download.d.ts +50 -0
  432. package/cli/dist/modules/sci/commands/article-download.d.ts.map +1 -0
  433. package/cli/dist/modules/sci/commands/article-download.js +281 -0
  434. package/cli/dist/modules/sci/commands/article-download.js.map +1 -0
  435. package/cli/dist/modules/sci/commands/outline.d.ts +36 -0
  436. package/cli/dist/modules/sci/commands/outline.d.ts.map +1 -0
  437. package/cli/dist/modules/sci/commands/outline.js +491 -0
  438. package/cli/dist/modules/sci/commands/outline.js.map +1 -0
  439. package/cli/dist/modules/sci/commands/template.d.ts +9 -0
  440. package/cli/dist/modules/sci/commands/template.d.ts.map +1 -0
  441. package/cli/dist/modules/sci/commands/template.js +12 -0
  442. package/cli/dist/modules/sci/commands/template.js.map +1 -0
  443. package/cli/dist/modules/sci/commands.d.ts +3 -0
  444. package/cli/dist/modules/sci/commands.d.ts.map +1 -0
  445. package/cli/dist/modules/sci/commands.js +108 -0
  446. package/cli/dist/modules/sci/commands.js.map +1 -0
  447. package/cli/dist/modules/sci/constants.d.ts +117 -0
  448. package/cli/dist/modules/sci/constants.d.ts.map +1 -0
  449. package/cli/dist/modules/sci/constants.js +152 -0
  450. package/cli/dist/modules/sci/constants.js.map +1 -0
  451. package/cli/dist/modules/sci/content-source.d.ts +18 -0
  452. package/cli/dist/modules/sci/content-source.d.ts.map +1 -0
  453. package/cli/dist/modules/sci/content-source.js +54 -0
  454. package/cli/dist/modules/sci/content-source.js.map +1 -0
  455. package/cli/dist/modules/sci/index.d.ts +3 -0
  456. package/cli/dist/modules/sci/index.d.ts.map +1 -0
  457. package/cli/dist/modules/sci/index.js +19 -0
  458. package/cli/dist/modules/sci/index.js.map +1 -0
  459. package/cli/dist/modules/sci/outline-transform.d.ts +16 -0
  460. package/cli/dist/modules/sci/outline-transform.d.ts.map +1 -0
  461. package/cli/dist/modules/sci/outline-transform.js +67 -0
  462. package/cli/dist/modules/sci/outline-transform.js.map +1 -0
  463. package/cli/dist/modules/sci/precheck-cache.d.ts +23 -0
  464. package/cli/dist/modules/sci/precheck-cache.d.ts.map +1 -0
  465. package/cli/dist/modules/sci/precheck-cache.js +141 -0
  466. package/cli/dist/modules/sci/precheck-cache.js.map +1 -0
  467. package/cli/dist/modules/sci/prompt-article.d.ts +12 -0
  468. package/cli/dist/modules/sci/prompt-article.d.ts.map +1 -0
  469. package/cli/dist/modules/sci/prompt-article.js +37 -0
  470. package/cli/dist/modules/sci/prompt-article.js.map +1 -0
  471. package/cli/dist/modules/sci/prompt-precheck.d.ts +16 -0
  472. package/cli/dist/modules/sci/prompt-precheck.d.ts.map +1 -0
  473. package/cli/dist/modules/sci/prompt-precheck.js +61 -0
  474. package/cli/dist/modules/sci/prompt-precheck.js.map +1 -0
  475. package/cli/dist/modules/sci/sse-utils.d.ts +50 -0
  476. package/cli/dist/modules/sci/sse-utils.d.ts.map +1 -0
  477. package/cli/dist/modules/sci/sse-utils.js +207 -0
  478. package/cli/dist/modules/sci/sse-utils.js.map +1 -0
  479. package/cli/dist/modules/shared/result-wrapper.d.ts +71 -0
  480. package/cli/dist/modules/shared/result-wrapper.d.ts.map +1 -0
  481. package/cli/dist/modules/shared/result-wrapper.js +95 -0
  482. package/cli/dist/modules/shared/result-wrapper.js.map +1 -0
  483. package/cli/dist/modules/shared/workflow-app/api.d.ts +6 -0
  484. package/cli/dist/modules/shared/workflow-app/api.d.ts.map +1 -0
  485. package/cli/dist/modules/shared/workflow-app/api.js +31 -0
  486. package/cli/dist/modules/shared/workflow-app/api.js.map +1 -0
  487. package/cli/dist/modules/shared/workflow-app/command.d.ts +30 -0
  488. package/cli/dist/modules/shared/workflow-app/command.d.ts.map +1 -0
  489. package/cli/dist/modules/shared/workflow-app/command.js +183 -0
  490. package/cli/dist/modules/shared/workflow-app/command.js.map +1 -0
  491. package/cli/dist/modules/shared/workflow-app/constants.d.ts +12 -0
  492. package/cli/dist/modules/shared/workflow-app/constants.d.ts.map +1 -0
  493. package/cli/dist/modules/shared/workflow-app/constants.js +21 -0
  494. package/cli/dist/modules/shared/workflow-app/constants.js.map +1 -0
  495. package/cli/dist/modules/shared/workflow-app/form.d.ts +21 -0
  496. package/cli/dist/modules/shared/workflow-app/form.d.ts.map +1 -0
  497. package/cli/dist/modules/shared/workflow-app/form.js +123 -0
  498. package/cli/dist/modules/shared/workflow-app/form.js.map +1 -0
  499. package/cli/dist/modules/shared/workflow-app/index.d.ts +8 -0
  500. package/cli/dist/modules/shared/workflow-app/index.d.ts.map +1 -0
  501. package/cli/dist/modules/shared/workflow-app/index.js +7 -0
  502. package/cli/dist/modules/shared/workflow-app/index.js.map +1 -0
  503. package/cli/dist/modules/shared/workflow-app/run.d.ts +15 -0
  504. package/cli/dist/modules/shared/workflow-app/run.d.ts.map +1 -0
  505. package/cli/dist/modules/shared/workflow-app/run.js +71 -0
  506. package/cli/dist/modules/shared/workflow-app/run.js.map +1 -0
  507. package/cli/dist/modules/shared/workflow-app/types.d.ts +74 -0
  508. package/cli/dist/modules/shared/workflow-app/types.d.ts.map +1 -0
  509. package/cli/dist/modules/shared/workflow-app/types.js +3 -0
  510. package/cli/dist/modules/shared/workflow-app/types.js.map +1 -0
  511. package/cli/dist/modules/site-configs.d.ts +4 -0
  512. package/cli/dist/modules/site-configs.d.ts.map +1 -0
  513. package/cli/dist/modules/site-configs.js +21 -0
  514. package/cli/dist/modules/site-configs.js.map +1 -0
  515. package/cli/dist/modules/upgrade/index.d.ts +6 -0
  516. package/cli/dist/modules/upgrade/index.d.ts.map +1 -0
  517. package/cli/dist/modules/upgrade/index.js +105 -0
  518. package/cli/dist/modules/upgrade/index.js.map +1 -0
  519. package/cli/dist/program.d.ts +3 -0
  520. package/cli/dist/program.d.ts.map +1 -0
  521. package/cli/dist/program.js +69 -0
  522. package/cli/dist/program.js.map +1 -0
  523. package/package.json +37 -0
@@ -0,0 +1,130 @@
1
+ export type ParamInputKind = "number" | "select";
2
+ export type SelectOption = {
3
+ label: string;
4
+ value: string;
5
+ };
6
+ export interface CalculationParameterRule {
7
+ type?: string;
8
+ default_value?: number | string;
9
+ default?: number | string;
10
+ min?: number;
11
+ max?: number;
12
+ step?: number;
13
+ exclusive_min?: boolean;
14
+ exclusive_max?: boolean;
15
+ exclusiveMin?: boolean;
16
+ exclusiveMax?: boolean;
17
+ readonly?: boolean;
18
+ required?: boolean;
19
+ integer?: boolean;
20
+ select_options?: unknown[];
21
+ selectOptions?: unknown[];
22
+ enum?: string[];
23
+ options?: number[];
24
+ not_equal?: number | string;
25
+ must_not_equal_value?: number;
26
+ mustNotEqualValue?: number;
27
+ must_not_equal_field?: string;
28
+ unrestricted?: boolean;
29
+ abs_strictly_gt_abs_of_field?: string;
30
+ absStrictlyGtAbsOfField?: string;
31
+ must_not_equal_difference_of?: [string, string];
32
+ mustNotEqualDifferenceOf?: [string, string];
33
+ abs_diff_pair_strictly_lt_abs?: [string, string];
34
+ absDiffPairStrictlyLtAbs?: [string, string];
35
+ strictly_gt_field?: string;
36
+ strictlyGtField?: string;
37
+ cross_field_rules?: CrossFieldRule[];
38
+ crossFieldRules?: CrossFieldRule[];
39
+ [key: string]: unknown;
40
+ }
41
+ export interface CrossFieldRule {
42
+ type?: string;
43
+ ref?: string;
44
+ left?: string;
45
+ right?: string;
46
+ }
47
+ export interface CalculationParameter {
48
+ id: string;
49
+ title: string;
50
+ name: string;
51
+ explain?: string | null;
52
+ range_text?: string | null;
53
+ sort: number;
54
+ status?: string;
55
+ rule?: CalculationParameterRule;
56
+ }
57
+ export interface CalculationCategory {
58
+ id: string;
59
+ name: string;
60
+ explain?: string | null;
61
+ status?: string;
62
+ cr_children?: CalculationCategory[];
63
+ cr_calculation_parameters?: CalculationParameter[];
64
+ }
65
+ export interface ParamFieldSpec {
66
+ inputKind: ParamInputKind;
67
+ default?: number | string;
68
+ min?: number;
69
+ max?: number;
70
+ exclusiveMin?: boolean;
71
+ exclusiveMax?: boolean;
72
+ readonly?: boolean;
73
+ required?: boolean;
74
+ integer?: boolean;
75
+ selectOptions?: SelectOption[];
76
+ mustNotEqualRefs?: string[];
77
+ mustNotEqualValue?: number;
78
+ absStrictlyGtAbsOfField?: string;
79
+ mustNotEqualDifferenceOf?: [string, string];
80
+ absDiffPairStrictlyLtAbs?: [string, string];
81
+ strictlyGtField?: string;
82
+ }
83
+ export interface SampleParameterItem {
84
+ id: string;
85
+ key: string;
86
+ /** 英文字段名,如 alpha */
87
+ name: string;
88
+ /** 中文名称,如 I类错误水平 */
89
+ title: string;
90
+ /**
91
+ * 聊天表「计算参数」列:name(title);无 title 时退回 name。
92
+ * 与 label 同值,避免 Agent 只用旧短标题。
93
+ */
94
+ displayLabel: string;
95
+ label: string;
96
+ /** 完整参数解释(对齐原站 tooltip 参数解释) */
97
+ explain: string;
98
+ rangeText: string;
99
+ spec: ParamFieldSpec;
100
+ }
101
+ export interface SampleCategoryOption {
102
+ id: string;
103
+ label: string;
104
+ description: string;
105
+ hasChildren: boolean;
106
+ }
107
+ export declare function fetchCalculationParametersTree(): Promise<CalculationCategory[]>;
108
+ export declare function resolveCalculationCategoryPath(roots: CalculationCategory[], path: string[]): {
109
+ nodes: CalculationCategory[];
110
+ leaf: CalculationCategory | null;
111
+ };
112
+ export declare function getNextCategoryOptions(roots: CalculationCategory[], path: string[]): SampleCategoryOption[];
113
+ export declare function parseParamFieldSpec(rule: CalculationParameterRule | null | undefined): ParamFieldSpec;
114
+ export declare function buildSampleParameterDisplayLabel(name: string, title: string): string;
115
+ export declare function calculationParametersToItems(parameters: CalculationParameter[]): SampleParameterItem[];
116
+ /** Agent 聊天三列表:计算参数 / 参数解释 / 参数设定值 */
117
+ export declare function buildSampleParameterTable(items: SampleParameterItem[], defaults: Record<string, string>): {
118
+ headers: ["计算参数", "参数解释", "参数设定值"];
119
+ rows: Array<{
120
+ key: string;
121
+ 计算参数: string;
122
+ 参数解释: string;
123
+ 参数设定值: string;
124
+ rangeText: string;
125
+ }>;
126
+ };
127
+ export declare function initialSampleParameterValues(items: SampleParameterItem[]): Record<string, string>;
128
+ export declare function validateSampleParameters(items: SampleParameterItem[], values: Record<string, string>): Record<string, string>;
129
+ export declare function buildSampleSizeWorkflowInputs(items: SampleParameterItem[], values: Record<string, string>, pathLabels: string[]): Record<string, unknown>;
130
+ //# sourceMappingURL=sample-size.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sample-size.d.ts","sourceRoot":"","sources":["../../../../src/modules/fund/clinical/sample-size.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,356 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { ApiClient } from "../../../core/index.js";
3
+ import { CLINICAL_CALCULATION_PARAMETERS_API_PATH } from "./constants.js";
4
+ function isPublished(value) {
5
+ return !value.status || value.status === "published";
6
+ }
7
+ function unwrapCategoryArray(payload, depth = 0) {
8
+ if (Array.isArray(payload))
9
+ return payload;
10
+ if (depth >= 4 || !payload || typeof payload !== "object")
11
+ return [];
12
+ const record = payload;
13
+ return unwrapCategoryArray(record.data, depth + 1);
14
+ }
15
+ export async function fetchCalculationParametersTree() {
16
+ const client = new ApiClient();
17
+ const response = await client.request(CLINICAL_CALCULATION_PARAMETERS_API_PATH, { method: "GET" });
18
+ return unwrapCategoryArray(response).filter(isPublished);
19
+ }
20
+ export function resolveCalculationCategoryPath(roots, path) {
21
+ let candidates = roots.filter(isPublished);
22
+ const nodes = [];
23
+ for (const rawId of path) {
24
+ const id = rawId.trim();
25
+ const node = candidates.find((item) => item.id === id);
26
+ if (!node)
27
+ return { nodes, leaf: null };
28
+ nodes.push(node);
29
+ candidates = (node.cr_children ?? []).filter(isPublished);
30
+ }
31
+ const last = nodes[nodes.length - 1];
32
+ const leaf = last &&
33
+ !(last.cr_children ?? []).some(isPublished) &&
34
+ (last.cr_calculation_parameters ?? []).some(isPublished)
35
+ ? last
36
+ : null;
37
+ return { nodes, leaf };
38
+ }
39
+ export function getNextCategoryOptions(roots, path) {
40
+ let candidates = roots.filter(isPublished);
41
+ for (const id of path) {
42
+ const node = candidates.find((item) => item.id === id);
43
+ if (!node)
44
+ return [];
45
+ candidates = (node.cr_children ?? []).filter(isPublished);
46
+ }
47
+ return candidates
48
+ .filter((node) => {
49
+ const children = (node.cr_children ?? []).filter(isPublished);
50
+ const params = (node.cr_calculation_parameters ?? []).filter(isPublished);
51
+ return children.length > 0 || params.length > 0;
52
+ })
53
+ .map((node) => ({
54
+ id: node.id,
55
+ label: node.name,
56
+ description: node.explain ?? "",
57
+ hasChildren: (node.cr_children ?? []).some(isPublished),
58
+ }));
59
+ }
60
+ function parseSelectOptions(rule) {
61
+ const raw = rule.select_options ??
62
+ rule.selectOptions ??
63
+ rule.options ??
64
+ rule.enum ??
65
+ [];
66
+ if (!Array.isArray(raw))
67
+ return [];
68
+ const result = [];
69
+ for (const item of raw) {
70
+ if (typeof item === "string" || typeof item === "number") {
71
+ const value = String(item);
72
+ result.push({ label: value, value });
73
+ }
74
+ else if (item && typeof item === "object") {
75
+ const record = item;
76
+ if (record.value !== undefined && record.value !== null) {
77
+ const value = String(record.value);
78
+ result.push({
79
+ value,
80
+ label: record.label !== undefined ? String(record.label) : value,
81
+ });
82
+ }
83
+ }
84
+ }
85
+ return result;
86
+ }
87
+ function readTuple(value) {
88
+ if (!Array.isArray(value) || value.length < 2)
89
+ return undefined;
90
+ return [String(value[0]), String(value[1])];
91
+ }
92
+ export function parseParamFieldSpec(rule) {
93
+ if (!rule)
94
+ return { inputKind: "number", required: true };
95
+ const selectOptions = parseSelectOptions(rule);
96
+ const rawType = String(rule.type ?? "").toLowerCase();
97
+ const spec = {
98
+ inputKind: rawType === "select" || (!rawType && selectOptions.length > 0)
99
+ ? "select"
100
+ : "number",
101
+ default: rule.default_value ?? rule.default,
102
+ min: typeof rule.min === "number" ? rule.min : undefined,
103
+ max: typeof rule.max === "number" ? rule.max : undefined,
104
+ exclusiveMin: rule.exclusiveMin === true || rule.exclusive_min === true,
105
+ exclusiveMax: rule.exclusiveMax === true || rule.exclusive_max === true,
106
+ readonly: rule.readonly === true,
107
+ required: rule.required !== false,
108
+ integer: rule.integer === true,
109
+ selectOptions,
110
+ mustNotEqualValue: Number.isFinite(Number(rule.not_equal ??
111
+ rule.mustNotEqualValue ??
112
+ rule.must_not_equal_value))
113
+ ? Number(rule.not_equal ??
114
+ rule.mustNotEqualValue ??
115
+ rule.must_not_equal_value)
116
+ : undefined,
117
+ absStrictlyGtAbsOfField: rule.absStrictlyGtAbsOfField ??
118
+ rule.abs_strictly_gt_abs_of_field,
119
+ mustNotEqualDifferenceOf: readTuple(rule.mustNotEqualDifferenceOf ??
120
+ rule.must_not_equal_difference_of),
121
+ absDiffPairStrictlyLtAbs: readTuple(rule.absDiffPairStrictlyLtAbs ??
122
+ rule.abs_diff_pair_strictly_lt_abs),
123
+ strictlyGtField: rule.strictlyGtField ?? rule.strictly_gt_field,
124
+ };
125
+ const notEqualRefs = new Set();
126
+ if (rule.must_not_equal_field)
127
+ notEqualRefs.add(rule.must_not_equal_field);
128
+ const crossRules = rule.cross_field_rules ?? rule.crossFieldRules ?? [];
129
+ for (const crossRule of crossRules) {
130
+ const type = crossRule.type ?? "";
131
+ const ref = crossRule.ref?.trim();
132
+ if ((type === "neq" || type === "mustNotEqualField") && ref) {
133
+ notEqualRefs.add(ref);
134
+ }
135
+ else if (type === "absStrictlyGtAbsOf" && ref) {
136
+ spec.absStrictlyGtAbsOfField = ref;
137
+ }
138
+ else if (type === "strictlyGtOf" && ref) {
139
+ spec.strictlyGtField = ref;
140
+ }
141
+ else if ((type === "mustNotEqualDifference" ||
142
+ type === "mustNotEqualDifferenceOf") &&
143
+ crossRule.left &&
144
+ crossRule.right) {
145
+ spec.mustNotEqualDifferenceOf = [
146
+ crossRule.left,
147
+ crossRule.right,
148
+ ];
149
+ }
150
+ else if (type === "absDiffPairStrictlyLtAbs" &&
151
+ crossRule.left &&
152
+ crossRule.right) {
153
+ spec.absDiffPairStrictlyLtAbs = [
154
+ crossRule.left,
155
+ crossRule.right,
156
+ ];
157
+ }
158
+ }
159
+ if (notEqualRefs.size)
160
+ spec.mustNotEqualRefs = [...notEqualRefs];
161
+ return spec;
162
+ }
163
+ export function buildSampleParameterDisplayLabel(name, title) {
164
+ const trimmedName = name.trim();
165
+ const trimmedTitle = title.trim();
166
+ if (trimmedName && trimmedTitle && trimmedName !== trimmedTitle) {
167
+ return `${trimmedName}(${trimmedTitle})`;
168
+ }
169
+ return trimmedName || trimmedTitle;
170
+ }
171
+ export function calculationParametersToItems(parameters) {
172
+ return [...parameters]
173
+ .filter(isPublished)
174
+ .sort((left, right) => left.sort - right.sort)
175
+ .map((parameter) => {
176
+ const name = String(parameter.name ?? "").trim();
177
+ const title = String(parameter.title ?? "").trim();
178
+ const key = name || parameter.id;
179
+ const displayLabel = buildSampleParameterDisplayLabel(name || key, title);
180
+ return {
181
+ id: parameter.id,
182
+ key,
183
+ name: name || key,
184
+ title,
185
+ displayLabel,
186
+ label: displayLabel,
187
+ explain: parameter.explain ?? "",
188
+ rangeText: parameter.range_text ?? "",
189
+ spec: parseParamFieldSpec(parameter.rule),
190
+ };
191
+ });
192
+ }
193
+ /** Agent 聊天三列表:计算参数 / 参数解释 / 参数设定值 */
194
+ export function buildSampleParameterTable(items, defaults) {
195
+ return {
196
+ headers: ["计算参数", "参数解释", "参数设定值"],
197
+ rows: items.map((item) => ({
198
+ key: item.key,
199
+ 计算参数: item.displayLabel,
200
+ 参数解释: item.explain,
201
+ 参数设定值: defaults[item.key] ?? "",
202
+ rangeText: item.rangeText,
203
+ })),
204
+ };
205
+ }
206
+ export function initialSampleParameterValues(items) {
207
+ const values = {};
208
+ for (const item of items) {
209
+ let value = item.spec.default === undefined ? "" : String(item.spec.default);
210
+ const allowed = item.spec.selectOptions?.map((option) => option.value);
211
+ if (allowed?.length && value && !allowed.includes(value)) {
212
+ value = allowed[0] ?? "";
213
+ }
214
+ values[item.key] = value;
215
+ }
216
+ return values;
217
+ }
218
+ function numberValue(values, key) {
219
+ const raw = (values[key] ?? "").trim();
220
+ if (!raw)
221
+ return null;
222
+ const value = Number(raw);
223
+ return Number.isFinite(value) ? value : null;
224
+ }
225
+ export function validateSampleParameters(items, values) {
226
+ const errors = {};
227
+ const schema = Object.fromEntries(items.map((item) => [item.key, item.spec]));
228
+ for (const item of items) {
229
+ const { spec, key } = item;
230
+ if (spec.readonly)
231
+ continue;
232
+ const raw = (values[key] ?? "").trim();
233
+ if (!raw) {
234
+ if (spec.required !== false)
235
+ errors[key] = "不能为空";
236
+ continue;
237
+ }
238
+ if (spec.inputKind === "select") {
239
+ const allowed = spec.selectOptions?.map((option) => option.value) ?? [];
240
+ if (allowed.length && !allowed.includes(raw)) {
241
+ errors[key] = "请选择列表中的选项";
242
+ }
243
+ continue;
244
+ }
245
+ const value = Number(raw);
246
+ if (!Number.isFinite(value)) {
247
+ errors[key] = "请输入有效数字";
248
+ continue;
249
+ }
250
+ if (spec.integer && !Number.isInteger(value)) {
251
+ errors[key] = "请输入整数";
252
+ }
253
+ else if (spec.min !== undefined &&
254
+ (spec.exclusiveMin ? value <= spec.min : value < spec.min)) {
255
+ errors[key] = spec.exclusiveMin
256
+ ? `必须大于 ${spec.min}`
257
+ : `不能小于 ${spec.min}`;
258
+ }
259
+ else if (spec.max !== undefined &&
260
+ (spec.exclusiveMax ? value >= spec.max : value > spec.max)) {
261
+ errors[key] = spec.exclusiveMax
262
+ ? `必须小于 ${spec.max}`
263
+ : `不能大于 ${spec.max}`;
264
+ }
265
+ else if (spec.mustNotEqualValue !== undefined &&
266
+ value === spec.mustNotEqualValue) {
267
+ errors[key] = `不能为 ${spec.mustNotEqualValue}`;
268
+ }
269
+ }
270
+ const comparedPairs = new Set();
271
+ for (const item of items) {
272
+ const { key, spec } = item;
273
+ for (const ref of spec.mustNotEqualRefs ?? []) {
274
+ if (!schema[ref])
275
+ continue;
276
+ const pair = [key, ref].sort().join("\0");
277
+ if (comparedPairs.has(pair))
278
+ continue;
279
+ comparedPairs.add(pair);
280
+ if (errors[key] || errors[ref])
281
+ continue;
282
+ const left = numberValue(values, key);
283
+ const right = numberValue(values, ref);
284
+ if (left !== null && right !== null && left === right) {
285
+ errors[key] = `不能与 ${ref} 相等`;
286
+ errors[ref] = `不能与 ${key} 相等`;
287
+ }
288
+ }
289
+ if (errors[key])
290
+ continue;
291
+ const value = numberValue(values, key);
292
+ if (value === null)
293
+ continue;
294
+ if (spec.absStrictlyGtAbsOfField) {
295
+ const refValue = numberValue(values, spec.absStrictlyGtAbsOfField);
296
+ if (refValue !== null && Math.abs(value) <= Math.abs(refValue)) {
297
+ errors[key] =
298
+ `须满足 |${key}| > |${spec.absStrictlyGtAbsOfField}|`;
299
+ }
300
+ }
301
+ if (!errors[key] && spec.strictlyGtField) {
302
+ const refValue = numberValue(values, spec.strictlyGtField);
303
+ if (refValue !== null && value <= refValue) {
304
+ errors[key] = `须大于 ${spec.strictlyGtField}`;
305
+ }
306
+ }
307
+ if (!errors[key] && spec.mustNotEqualDifferenceOf) {
308
+ const [leftKey, rightKey] = spec.mustNotEqualDifferenceOf;
309
+ const left = numberValue(values, leftKey);
310
+ const right = numberValue(values, rightKey);
311
+ if (left !== null &&
312
+ right !== null &&
313
+ Math.abs(value - (left - right)) <= 1e-9) {
314
+ errors[key] = `不能与 (${leftKey} − ${rightKey}) 相等`;
315
+ }
316
+ }
317
+ if (!errors[key] && spec.absDiffPairStrictlyLtAbs) {
318
+ const [leftKey, rightKey] = spec.absDiffPairStrictlyLtAbs;
319
+ const left = numberValue(values, leftKey);
320
+ const right = numberValue(values, rightKey);
321
+ if (left !== null &&
322
+ right !== null &&
323
+ Math.abs(value) <= Math.abs(left - right) + 1e-9) {
324
+ errors[key] =
325
+ `须满足 |${leftKey} − ${rightKey}| < |${key}|`;
326
+ }
327
+ }
328
+ }
329
+ return errors;
330
+ }
331
+ export function buildSampleSizeWorkflowInputs(items, values, pathLabels) {
332
+ const depth = pathLabels.length;
333
+ const inputs = {
334
+ session_id: randomUUID(),
335
+ FinalEnding: pathLabels[0]?.trim() ?? "",
336
+ };
337
+ if (depth >= 2) {
338
+ if (depth >= 3) {
339
+ inputs.Group = pathLabels[1]?.trim() ?? "";
340
+ inputs.CalculationType = pathLabels[depth - 1]?.trim() ?? "";
341
+ }
342
+ else {
343
+ inputs.Group = pathLabels[0]?.trim() ?? "";
344
+ inputs.CalculationType = pathLabels[1]?.trim() ?? "";
345
+ }
346
+ }
347
+ for (const item of items) {
348
+ const raw = (values[item.key] ?? "").trim();
349
+ inputs[item.key] =
350
+ item.spec.inputKind === "number" && Number.isFinite(Number(raw))
351
+ ? Number(raw)
352
+ : raw;
353
+ }
354
+ return inputs;
355
+ }
356
+ //# sourceMappingURL=sample-size.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sample-size.js","sourceRoot":"","sources":["../../../../src/modules/fund/clinical/sample-size.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { ClinicalResearchObjective } from "./constants.js";
2
+ import type { ClinicalFourElementsDraft, ClinicalFourElementsProofread } from "./four-elements.js";
3
+ export interface ClinicalArticleCache {
4
+ article: string;
5
+ references: string[];
6
+ workflowRunId?: string;
7
+ }
8
+ export interface ClinicalSessionCache {
9
+ sessionId: string;
10
+ topicInputs: Record<string, string>;
11
+ researchObjective: ClinicalResearchObjective;
12
+ draft: ClinicalFourElementsDraft;
13
+ proofread: ClinicalFourElementsProofread | null;
14
+ precheckInputs: Record<string, string> | null;
15
+ article?: ClinicalArticleCache;
16
+ }
17
+ export declare function __setClinicalSessionCacheDirForTesting(directory: string | null): void;
18
+ export declare function resolveClinicalSessionCachePath(sessionId: string): string;
19
+ export declare function saveClinicalSession(session: ClinicalSessionCache): Promise<boolean>;
20
+ export declare function loadClinicalSession(sessionId: string): Promise<ClinicalSessionCache | null>;
21
+ export declare function requireClinicalSession(sessionId: string | undefined): Promise<ClinicalSessionCache>;
22
+ export declare function updateClinicalSession(session: ClinicalSessionCache, patch: Partial<ClinicalSessionCache>): Promise<ClinicalSessionCache>;
23
+ export declare function invalidateClinicalPrecheck(session: ClinicalSessionCache, draft: ClinicalFourElementsDraft): ClinicalSessionCache;
24
+ export declare function popClinicalSession(sessionId: string): Promise<ClinicalSessionCache | null>;
25
+ //# sourceMappingURL=session-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-cache.d.ts","sourceRoot":"","sources":["../../../../src/modules/fund/clinical/session-cache.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EACV,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,iBAAiB,EAAE,yBAAyB,CAAC;IAC7C,KAAK,EAAE,yBAAyB,CAAC;IACjC,SAAS,EAAE,6BAA6B,GAAG,IAAI,CAAC;IAChD,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC9C,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC;AAKD,wBAAgB,sCAAsC,CACpD,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,IAAI,CAEN;AAED,wBAAgB,+BAA+B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGzE;AAYD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,OAAO,CAAC,CAgBlB;AAcD,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAStC;AAED,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,oBAAoB,CAAC,CAgB/B;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACnC,OAAO,CAAC,oBAAoB,CAAC,CAU/B;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,yBAAyB,GAC/B,oBAAoB,CAQtB;AAED,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAOtC"}
@@ -0,0 +1,100 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { chmod, mkdir, readFile, rename, rm, writeFile, } from "node:fs/promises";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { helixlifeError, helixlifeErrorCode, } from "../../../core/index.js";
6
+ let cacheDir = join(tmpdir(), "helixlife-clinical-cache");
7
+ const CACHE_PREFIX = "session-";
8
+ export function __setClinicalSessionCacheDirForTesting(directory) {
9
+ cacheDir = directory ?? join(tmpdir(), "helixlife-clinical-cache");
10
+ }
11
+ export function resolveClinicalSessionCachePath(sessionId) {
12
+ const safeSessionId = sessionId.replace(/[^a-zA-Z0-9_.-]/g, "_");
13
+ return join(cacheDir, `${CACHE_PREFIX}${safeSessionId}.json`);
14
+ }
15
+ async function atomicReplace(tempPath, finalPath) {
16
+ try {
17
+ await rename(tempPath, finalPath);
18
+ }
19
+ catch (error) {
20
+ if (process.platform !== "win32")
21
+ throw error;
22
+ await rm(finalPath, { force: true });
23
+ await rename(tempPath, finalPath);
24
+ }
25
+ }
26
+ export async function saveClinicalSession(session) {
27
+ try {
28
+ if (!session.sessionId.trim())
29
+ throw new Error("sessionId 不能为空");
30
+ await mkdir(cacheDir, { recursive: true });
31
+ const finalPath = resolveClinicalSessionCachePath(session.sessionId);
32
+ const tempPath = `${finalPath}.${randomBytes(6).toString("hex")}.tmp`;
33
+ await writeFile(tempPath, JSON.stringify(session), "utf8");
34
+ await atomicReplace(tempPath, finalPath);
35
+ await chmod(finalPath, 0o600);
36
+ return true;
37
+ }
38
+ catch (error) {
39
+ console.warn(`[clinical-cache] 写入失败 sessionId=${session.sessionId}: ${error.message}`);
40
+ return false;
41
+ }
42
+ }
43
+ function isClinicalSession(value) {
44
+ if (!value || typeof value !== "object")
45
+ return false;
46
+ const record = value;
47
+ return (typeof record.sessionId === "string" &&
48
+ !!record.topicInputs &&
49
+ typeof record.topicInputs === "object" &&
50
+ !!record.draft &&
51
+ typeof record.draft === "object");
52
+ }
53
+ export async function loadClinicalSession(sessionId) {
54
+ if (!sessionId.trim())
55
+ return null;
56
+ try {
57
+ const raw = await readFile(resolveClinicalSessionCachePath(sessionId), "utf8");
58
+ const parsed = JSON.parse(raw);
59
+ return isClinicalSession(parsed) ? parsed : null;
60
+ }
61
+ catch {
62
+ return null;
63
+ }
64
+ }
65
+ export async function requireClinicalSession(sessionId) {
66
+ const id = sessionId?.trim();
67
+ if (!id) {
68
+ throw new helixlifeError(helixlifeErrorCode.INVALID_ARGUMENT, "缺少 sessionId,请先完成上一步");
69
+ }
70
+ const session = await loadClinicalSession(id);
71
+ if (!session) {
72
+ throw new helixlifeError(helixlifeErrorCode.INVALID_ARGUMENT, "临床流程缓存缺失或已清理,请从四要素生成步骤重新开始");
73
+ }
74
+ return session;
75
+ }
76
+ export async function updateClinicalSession(session, patch) {
77
+ const next = { ...session, ...patch, sessionId: session.sessionId };
78
+ const saved = await saveClinicalSession(next);
79
+ if (!saved) {
80
+ throw new helixlifeError(helixlifeErrorCode.REQUEST_FAILED, "临床流程状态保存失败,请重试");
81
+ }
82
+ return next;
83
+ }
84
+ export function invalidateClinicalPrecheck(session, draft) {
85
+ return {
86
+ ...session,
87
+ draft,
88
+ proofread: null,
89
+ precheckInputs: null,
90
+ article: undefined,
91
+ };
92
+ }
93
+ export async function popClinicalSession(sessionId) {
94
+ const session = await loadClinicalSession(sessionId);
95
+ if (!session)
96
+ return null;
97
+ await rm(resolveClinicalSessionCachePath(sessionId), { force: true }).catch(() => { });
98
+ return session;
99
+ }
100
+ //# sourceMappingURL=session-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-cache.js","sourceRoot":"","sources":["../../../../src/modules/fund/clinical/session-cache.ts"],"names":[],"mappings":"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"}