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,211 @@
1
+ // Step1 选题评估:参数查询子命令
2
+ // 输出表单字段定义(含 label/required 覆盖与排序),供 Agent 拉取后用 AskQuestion 逐项弹选择器
3
+ import { printOutput, createFormatLogger, } from "../../../../core/index.js";
4
+ import { fetchClinicalTopicEvaluationFieldsWithFallback, fieldToParameterItem, } from "../parameters.js";
5
+ import { RESEARCH_OBJECTIVE_KEY, YES_NO_SEGMENTED_FIELD_KEYS, } from "../constants.js";
6
+ import { applyTopicEvaluationDisplayOrder, getEffectiveFieldRequired, getEffectiveSelectOptions, normalizeSingleEffectiveSelectValues, shouldShowField, } from "../form-rules.js";
7
+ function buildEffectiveScenario(fields, context) {
8
+ const normalized = normalizeSingleEffectiveSelectValues(fields, context);
9
+ const effectiveContext = normalized.values;
10
+ const researchObjective = effectiveContext[RESEARCH_OBJECTIVE_KEY];
11
+ const assessPrognosis = effectiveContext.Assess_prognosis;
12
+ const ordered = applyTopicEvaluationDisplayOrder(fields, researchObjective);
13
+ const visible = researchObjective
14
+ ? ordered.filter((field) => shouldShowField(field.key, effectiveContext, researchObjective, assessPrognosis))
15
+ : ordered;
16
+ return {
17
+ autoSelected: normalized.autoSelected,
18
+ fields: visible.map((field) => {
19
+ const effectiveRequired = getEffectiveFieldRequired(field, effectiveContext, true);
20
+ const item = fieldToParameterItem({ ...field, required: effectiveRequired }, researchObjective);
21
+ const isYesNo = YES_NO_SEGMENTED_FIELD_KEYS.has(field.key);
22
+ return {
23
+ ...item,
24
+ type: isYesNo ? "select" : item.type,
25
+ options: field.type === "select" || isYesNo
26
+ ? getEffectiveSelectOptions(field.key, field, effectiveContext)
27
+ : item.options,
28
+ };
29
+ }),
30
+ };
31
+ }
32
+ function optionsByField(scenario) {
33
+ return Object.fromEntries(scenario.fields
34
+ .filter((field) => field.type === "select")
35
+ .map((field) => [field.key, field.options]));
36
+ }
37
+ function differentOptions(current, baseline) {
38
+ return Object.fromEntries(Object.entries(current).filter(([key, options]) => {
39
+ const previous = baseline[key] ?? [];
40
+ return (options.length !== previous.length ||
41
+ options.some((option, index) => option !== previous[index]));
42
+ }));
43
+ }
44
+ function differentSelections(current, baseline = {}) {
45
+ return Object.fromEntries(Object.entries(current).filter(([key, value]) => baseline[key] !== value));
46
+ }
47
+ function requiredByField(scenario) {
48
+ return Object.fromEntries(scenario.fields.map((field) => [field.key, field.required]));
49
+ }
50
+ function placeholdersByField(scenario) {
51
+ return Object.fromEntries(scenario.fields
52
+ .filter((field) => Boolean(field.placeholder))
53
+ .map((field) => [field.key, field.placeholder]));
54
+ }
55
+ function namesByField(scenario) {
56
+ return Object.fromEntries(scenario.fields.map((field) => [field.key, field.name]));
57
+ }
58
+ function promptsByField(scenario) {
59
+ return Object.fromEntries(scenario.fields
60
+ .filter((field) => Boolean(field.prompt))
61
+ .map((field) => [field.key, field.prompt]));
62
+ }
63
+ function differentRequired(current, baseline) {
64
+ return Object.fromEntries(Object.entries(current).filter(([key, required]) => baseline[key] !== required));
65
+ }
66
+ function differentStrings(current, baseline) {
67
+ return Object.fromEntries(Object.entries(current).filter(([key, value]) => baseline[key] !== value));
68
+ }
69
+ function visibilityDelta(current, baseline) {
70
+ const currentKeys = new Set(current.fields.map((field) => field.key));
71
+ const baselineKeys = new Set(baseline.fields.map((field) => field.key));
72
+ return {
73
+ hiddenFieldKeys: [...baselineKeys].filter((key) => !currentKeys.has(key)),
74
+ shownFieldKeys: [...currentKeys].filter((key) => !baselineKeys.has(key)),
75
+ };
76
+ }
77
+ function linkageDeltaFrom(current, parent, baselineOptions, baselineRequired, baselinePlaceholders, baselineNames, baselinePrompts) {
78
+ const parentOptions = parent ? optionsByField(parent) : baselineOptions;
79
+ const parentRequired = parent ? requiredByField(parent) : baselineRequired;
80
+ const parentPlaceholders = parent
81
+ ? placeholdersByField(parent)
82
+ : baselinePlaceholders;
83
+ const parentNames = parent ? namesByField(parent) : baselineNames;
84
+ const parentPrompts = parent ? promptsByField(parent) : baselinePrompts;
85
+ return {
86
+ autoSelected: parent
87
+ ? differentSelections(current.autoSelected, parent.autoSelected)
88
+ : current.autoSelected,
89
+ optionOverrides: differentOptions(optionsByField(current), parentOptions),
90
+ requiredOverrides: differentRequired(requiredByField(current), parentRequired),
91
+ placeholderOverrides: differentStrings(placeholdersByField(current), parentPlaceholders),
92
+ nameOverrides: differentStrings(namesByField(current), parentNames),
93
+ promptOverrides: differentStrings(promptsByField(current), parentPrompts),
94
+ };
95
+ }
96
+ /**
97
+ * 一次性预计算网页中的全部固定联动分支,并只输出相对父节点的差量。
98
+ * Agent 首次拉取后只需在该树中按用户选择向下匹配,不再调用 parameters。
99
+ */
100
+ export function buildTopicEvaluationLinkage(fields) {
101
+ const researchObjectiveField = fields.find((field) => field.key === RESEARCH_OBJECTIVE_KEY);
102
+ const researchObjectiveOptions = researchObjectiveField?.options ?? [];
103
+ const baseOptions = Object.fromEntries(fields
104
+ .filter((field) => field.type === "select" ||
105
+ YES_NO_SEGMENTED_FIELD_KEYS.has(field.key))
106
+ .map((field) => [field.key, field.options]));
107
+ const baseRequired = Object.fromEntries(fields.map((field) => [field.key, field.required]));
108
+ const baseItems = fields.map((field) => fieldToParameterItem(field));
109
+ const basePlaceholders = Object.fromEntries(baseItems
110
+ .filter((item) => Boolean(item.placeholder))
111
+ .map((item) => [item.key, item.placeholder]));
112
+ const baseNames = Object.fromEntries(baseItems.map((item) => [item.key, item.name]));
113
+ const basePrompts = Object.fromEntries(baseItems
114
+ .filter((item) => Boolean(item.prompt))
115
+ .map((item) => [item.key, item.prompt]));
116
+ const objectives = researchObjectiveOptions.map((objective) => {
117
+ const objectiveScenario = buildEffectiveScenario(fields, {
118
+ [RESEARCH_OBJECTIVE_KEY]: objective,
119
+ });
120
+ const objectiveDelta = linkageDeltaFrom(objectiveScenario, null, baseOptions, baseRequired, basePlaceholders, baseNames, basePrompts);
121
+ const studyDesignOptions = objectiveScenario.fields.find((field) => field.key === "Study_design")
122
+ ?.options ?? [];
123
+ const studyDesigns = studyDesignOptions.map((studyDesign) => {
124
+ const studyScenario = buildEffectiveScenario(fields, {
125
+ [RESEARCH_OBJECTIVE_KEY]: objective,
126
+ Study_design: studyDesign,
127
+ });
128
+ const studyDelta = linkageDeltaFrom(studyScenario, objectiveScenario, baseOptions, baseRequired, basePlaceholders, baseNames, basePrompts);
129
+ const assessOptions = studyScenario.fields.find((field) => field.key === "Assess_prognosis")?.options ?? [];
130
+ const assessPrognosisVariants = assessOptions.map((assessPrognosis) => {
131
+ const assessScenario = buildEffectiveScenario(fields, {
132
+ [RESEARCH_OBJECTIVE_KEY]: objective,
133
+ Study_design: studyDesign,
134
+ Assess_prognosis: assessPrognosis,
135
+ });
136
+ return {
137
+ value: assessPrognosis,
138
+ ...linkageDeltaFrom(assessScenario, studyScenario, baseOptions, baseRequired, basePlaceholders, baseNames, basePrompts),
139
+ ...visibilityDelta(assessScenario, studyScenario),
140
+ };
141
+ });
142
+ return {
143
+ value: studyDesign,
144
+ ...studyDelta,
145
+ assessPrognosisVariants,
146
+ };
147
+ });
148
+ return {
149
+ value: objective,
150
+ fieldKeys: objectiveScenario.fields.map((field) => field.key),
151
+ ...objectiveDelta,
152
+ studyDesigns,
153
+ };
154
+ });
155
+ return { researchObjectiveOptions, objectives };
156
+ }
157
+ export async function runTopicEvaluationParameters(options = {}) {
158
+ const format = options.format ?? "markdown";
159
+ const log = createFormatLogger(format);
160
+ const { fields, fallback } = await fetchClinicalTopicEvaluationFieldsWithFallback();
161
+ if (fallback) {
162
+ log("\n⚠️ 未能从后端拉取选题评估参数,已使用内置字段定义兜底。\n");
163
+ }
164
+ const items = fields.map((field) => fieldToParameterItem(field));
165
+ const linkage = buildTopicEvaluationLinkage(fields);
166
+ if (format === "json") {
167
+ printOutput({
168
+ appId: "topic_evaluation",
169
+ fallback,
170
+ /**
171
+ * 字段目录:仅供按 key 查 name/options/prompt。
172
+ * 不得按本数组全量或 required=true 直接采集。
173
+ */
174
+ fields: items,
175
+ collection: {
176
+ rule: "only_matched_objective_field_keys",
177
+ reuseCurrentResponse: true,
178
+ note: "选定研究类别后,只采集 linkage.objectives[].fieldKeys(再应用 hiddenFieldKeys/shownFieldKeys)中的字段;禁止因顶层 fields[].required=true 而采集未出现在 fieldKeys 的字段(例如疗效不含 O/F)。",
179
+ },
180
+ linkage: {
181
+ mode: "local_static",
182
+ reuseCurrentResponse: true,
183
+ ...linkage,
184
+ },
185
+ }, "json");
186
+ return;
187
+ }
188
+ log("=== 选题评估表单字段目录(非采集清单)===\n");
189
+ for (const item of items) {
190
+ const requiredMark = item.requiredLabel === "必填" ? "(必填)" : "(选填)";
191
+ const optionsHint = item.type === "select" && item.options.length > 0
192
+ ? ` 选项: ${item.options.join(" / ")}`
193
+ : "";
194
+ const lengthHint = item.max_length ? ` 最大长度: ${item.max_length}` : "";
195
+ const visibleHint = item.visibleForObjectives?.length
196
+ ? ` 可见于: ${item.visibleForObjectives.join("/")}`
197
+ : " 可见于: 始终";
198
+ const promptHint = item.prompt ? ` 提问: ${item.prompt}` : "";
199
+ log(`- ${item.name} [${item.key}]${requiredMark} 类型: ${item.type}${lengthHint}`);
200
+ log(visibleHint);
201
+ if (optionsHint) {
202
+ log(optionsHint);
203
+ }
204
+ if (promptHint) {
205
+ log(promptHint);
206
+ }
207
+ }
208
+ log("\n采集时只使用匹配研究类别的 linkage.objectives[].fieldKeys,禁止按本目录全量提问。");
209
+ log("已预计算固定联动;选择后复用 linkage,禁止重新调用 parameters。");
210
+ }
211
+ //# sourceMappingURL=topic-evaluation-parameters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topic-evaluation-parameters.js","sourceRoot":"","sources":["../../../../../src/modules/fund/clinical/commands/topic-evaluation-parameters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /** 后台模块类型(API 路径用 clinical) */
2
+ export declare const CLINICAL_MODULE_TYPE: "clinical";
3
+ /** 选题评估参数查询 */
4
+ export declare const CLINICAL_PARAMETERS_API_PATH: "agent/v1/ai/workbench/clinical/apps/parameters";
5
+ /** 样本量计算分类与参数树 */
6
+ export declare const CLINICAL_CALCULATION_PARAMETERS_API_PATH: "agent/v1/ai/workbench/clinical/apps/calculation-parameters";
7
+ /** SSE 执行(预检/四要素/全文共用) */
8
+ export declare const CLINICAL_EXECUTE_API_PATH: "agent/v1/ai/workbench/clinical/apps/execute";
9
+ /** 选题评估(Step1 预检)App ID */
10
+ export declare const CLINICAL_TOPIC_EVALUATION_APP_ID = "ce0315d6-9947-4ba1-bce8-4943e5f78b7f";
11
+ /** 选题评估 app_type(site-clinical.ts: app_type=1) */
12
+ export declare const CLINICAL_TOPIC_EVALUATION_APP_TYPE: 1;
13
+ /** Step2:按研究类别生成四要素 */
14
+ export declare const CLINICAL_FOUR_ELEMENTS_APP_IDS: Record<ClinicalResearchObjective, string>;
15
+ /** Step2:研究目的修改后,按研究类别重算结局指标和样本量 */
16
+ export declare const CLINICAL_PURPOSE_REGENERATE_APP_IDS: Record<ClinicalResearchObjective, string>;
17
+ /** Step2:四要素预检 */
18
+ export declare const CLINICAL_FOUR_ELEMENTS_PROOFREAD_APP_ID = "59c55b7b-4f75-47d5-a7fc-1dd0e0f3c213";
19
+ /** Step2:个性化样本量计算 */
20
+ export declare const CLINICAL_SAMPLE_CALCULATION_APP_ID = "8dc51712-965b-4ebe-9afe-06523e46a630";
21
+ /** Step3:全文工作流 */
22
+ export declare const CLINICAL_FULLTEXT_APP_IDS: {
23
+ readonly effectivenessTrial: "ab9f5fc6-7c85-42b1-8461-4f3f78f82fca";
24
+ readonly effectivenessQueue: "0f0556d9-4d1c-4d67-9ba1-f8da23422dc2";
25
+ readonly cause: "48e74023-3fb8-4e81-a05c-30851c9ffa38";
26
+ readonly diagnostic: "b7c71995-8816-4eb2-bac8-68bbb6f9d43b";
27
+ readonly prognosis: "16862bd3-2baa-468e-980a-676ff3e1e8db";
28
+ };
29
+ /** Markdown 转 Word(Newidea PaaS) */
30
+ export declare const CLINICAL_DOCX_CONVERT_API_PATH = "data_conversion/v2/markdown/to/docx";
31
+ export declare const CLINICAL_CONTENT_PRODUCER = "Helix";
32
+ export declare const CLINICAL_WORKFLOW_APP_TYPE: 1;
33
+ export declare const CLINICAL_FULLTEXT_WAIT_HINT = "\u5185\u5BB9\u751F\u6210\u9884\u8BA1\u8017\u65F6\u7EA6 10 \u5206\u949F\uFF0C\u8BF7\u8010\u5FC3\u7B49\u5F85...";
34
+ export type ClinicalResearchObjective = "病因" | "疗效" | "预后" | "诊断";
35
+ /** 与页面/parameters 接口顺序一致:疗效第一 */
36
+ export declare const CLINICAL_RESEARCH_OBJECTIVE_OPTIONS: readonly ClinicalResearchObjective[];
37
+ export declare const DISEASE_OBJECTIVE_VALUE: ClinicalResearchObjective;
38
+ export declare const PROGNOSIS_OBJECTIVE_VALUE: ClinicalResearchObjective;
39
+ export declare const DIAGNOSTIC_OBJECTIVE_VALUE: ClinicalResearchObjective;
40
+ export declare const EFFECTIVENESS_OBJECTIVE_VALUE: ClinicalResearchObjective;
41
+ export declare function parseClinicalResearchObjective(raw: string): ClinicalResearchObjective;
42
+ /** 与 ClinicalFourElementsCheck.proceedToNextStep 的路由一致 */
43
+ export declare function getClinicalFulltextAppId(objective: ClinicalResearchObjective, studyDesign: string | undefined): string;
44
+ export type TopicEvaluationFieldType = "paragraph" | "select" | "string" | "number";
45
+ export interface TopicEvaluationField {
46
+ key: string;
47
+ name: string;
48
+ required: boolean;
49
+ type: TopicEvaluationFieldType;
50
+ max_length?: number | null;
51
+ options: string[];
52
+ }
53
+ /** 优先展示顺序(其余字段保持相对顺序并排在后面) */
54
+ export declare const FORM_ORDER: readonly ["Research_Objective", "Study_design", "Temporal_direction", "hospitals"];
55
+ /** 覆盖后端 label,文案对齐 */
56
+ export declare const FORM_LABEL_MAP: Partial<Record<string, string>>;
57
+ /** 强制必填字段(无论后端 required 是否为 true) */
58
+ export declare const FORM_REQUIRED_FIELDS: readonly ["Research_Objective", "Study_design", "Temporal_direction", "hospitals", "P", "I", "O", "F", "Prognosis_model", "Assess_prognosis", "diagnostic_model"];
59
+ export declare const REQUIRED_KEY_SET: Set<string>;
60
+ /** 是/否类分段字段(对齐 YES_NO_SEGMENTED_FIELD_KEYS) */
61
+ export declare const YES_NO_SEGMENTED_FIELD_KEYS: Set<string>;
62
+ export declare const YES_NO_OPTIONS: string[];
63
+ export declare const YES_NO_DEFAULT_VALUE: string;
64
+ export declare function normalizeYesNoFieldValue(raw: string | undefined): string;
65
+ export declare const RESEARCH_OBJECTIVE_KEY = "Research_Objective";
66
+ /** 诊断场景下 I 字段展示名(接口 variable 仍为 I) */
67
+ export declare const INDEX_TEST_DIAGNOSTIC_LABEL = "\u5F85\u8BC4\u4EF7\u7684\u8BCA\u65AD\u5B9E\u9A8C(Index Test)";
68
+ /** 病因暴露因素分组标题 */
69
+ export declare const EXPOSURE_FACTOR_GROUP_LABEL = "\u66B4\u9732\u56E0\u7D20";
70
+ /** 病因暴露因素字段 key */
71
+ export declare const EXPOSURE_RANGE_KEYS: readonly ["exposure_range1", "exposure_range2"];
72
+ export declare const EXPOSURE_TYPE_KEYS: readonly ["exposure_type1", "exposure_type2"];
73
+ export type ClinicalStep1Status = "validation_failed" | "precheck_success" | "precheck_failed";
74
+ export type ClinicalStep1NextAction = "fix_inputs" | "proceed_to_four_elements" | "revise_inputs";
75
+ export interface ClinicalPrecheckOutput {
76
+ outcome: "success" | "failed";
77
+ content: string;
78
+ }
79
+ export type ClinicalStep2Status = "four_elements_ready" | "four_elements_updated" | "sample_parameters_ready" | "sample_calculated" | "validation_failed" | "precheck_success" | "precheck_failed";
80
+ export type ClinicalStep2NextAction = "review_four_elements" | "review_or_precheck" | "select_sample_category" | "fill_sample_parameters" | "revise_four_elements" | "generate_article" | "fix_inputs";
81
+ export type ClinicalStep3Status = "article_ready";
82
+ export type ClinicalCauseType = "无明确病因" | "单病因" | "双病因";
83
+ export declare const CLINICAL_CAUSE_TYPE_OPTIONS: readonly ClinicalCauseType[];
84
+ export declare function parseClinicalCauseType(raw: string): ClinicalCauseType;
85
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/modules/fund/clinical/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ // 临床工作台(clinical)常量:API 路径、App ID、枚举、label/required 覆盖
2
+ // 对齐源码 helix-workbench-platform/src/hooks/useClinicalTopicEvaluationParameters.ts
3
+ import { helixlifeError, helixlifeErrorCode } from "../../../core/index.js";
4
+ /** 后台模块类型(API 路径用 clinical) */
5
+ export const CLINICAL_MODULE_TYPE = "clinical";
6
+ // ============================================================
7
+ // API 路径(对齐 sci/nsfc:agent/v1/ai/workbench/clinical/apps/*)
8
+ // ============================================================
9
+ /** 选题评估参数查询 */
10
+ export const CLINICAL_PARAMETERS_API_PATH = `agent/v1/ai/workbench/${CLINICAL_MODULE_TYPE}/apps/parameters`;
11
+ /** 样本量计算分类与参数树 */
12
+ export const CLINICAL_CALCULATION_PARAMETERS_API_PATH = `agent/v1/ai/workbench/${CLINICAL_MODULE_TYPE}/apps/calculation-parameters`;
13
+ /** SSE 执行(预检/四要素/全文共用) */
14
+ export const CLINICAL_EXECUTE_API_PATH = `agent/v1/ai/workbench/${CLINICAL_MODULE_TYPE}/apps/execute`;
15
+ // ============================================================
16
+ // App IDs(对齐 site-clinical.ts step1.topic_evaluation)
17
+ // ============================================================
18
+ /** 选题评估(Step1 预检)App ID */
19
+ export const CLINICAL_TOPIC_EVALUATION_APP_ID = "ce0315d6-9947-4ba1-bce8-4943e5f78b7f";
20
+ /** 选题评估 app_type(site-clinical.ts: app_type=1) */
21
+ export const CLINICAL_TOPIC_EVALUATION_APP_TYPE = 1;
22
+ /** Step2:按研究类别生成四要素 */
23
+ export const CLINICAL_FOUR_ELEMENTS_APP_IDS = {
24
+ 疗效: "10432fa9-cb18-4660-8820-525f417d392e",
25
+ 病因: "2ea3f1fe-7fa8-4b1a-b1c1-c96649cba431",
26
+ 诊断: "5f119561-1eb0-4500-ad18-4de0123cce4b",
27
+ 预后: "caa82ddb-1366-4a71-8233-44548e108795",
28
+ };
29
+ /** Step2:研究目的修改后,按研究类别重算结局指标和样本量 */
30
+ export const CLINICAL_PURPOSE_REGENERATE_APP_IDS = {
31
+ 疗效: "6c71414c-7f9f-44a2-89ac-b2d6be1fdedf",
32
+ 病因: "88c4367d-1758-4646-9047-2f4d2dc9f95e",
33
+ 诊断: "43f70ad5-ed92-44ec-bbbd-9d17926d9fcb",
34
+ 预后: "c85e8544-0d61-43b3-bddd-207908017548",
35
+ };
36
+ /** Step2:四要素预检 */
37
+ export const CLINICAL_FOUR_ELEMENTS_PROOFREAD_APP_ID = "59c55b7b-4f75-47d5-a7fc-1dd0e0f3c213";
38
+ /** Step2:个性化样本量计算 */
39
+ export const CLINICAL_SAMPLE_CALCULATION_APP_ID = "8dc51712-965b-4ebe-9afe-06523e46a630";
40
+ /** Step3:全文工作流 */
41
+ export const CLINICAL_FULLTEXT_APP_IDS = {
42
+ effectivenessTrial: "ab9f5fc6-7c85-42b1-8461-4f3f78f82fca",
43
+ effectivenessQueue: "0f0556d9-4d1c-4d67-9ba1-f8da23422dc2",
44
+ cause: "48e74023-3fb8-4e81-a05c-30851c9ffa38",
45
+ diagnostic: "b7c71995-8816-4eb2-bac8-68bbb6f9d43b",
46
+ prognosis: "16862bd3-2baa-468e-980a-676ff3e1e8db",
47
+ };
48
+ /** Markdown 转 Word(Newidea PaaS) */
49
+ export const CLINICAL_DOCX_CONVERT_API_PATH = "data_conversion/v2/markdown/to/docx";
50
+ export const CLINICAL_CONTENT_PRODUCER = "Helix";
51
+ export const CLINICAL_WORKFLOW_APP_TYPE = 1;
52
+ export const CLINICAL_FULLTEXT_WAIT_HINT = "内容生成预计耗时约 10 分钟,请耐心等待...";
53
+ /** 与页面/parameters 接口顺序一致:疗效第一 */
54
+ export const CLINICAL_RESEARCH_OBJECTIVE_OPTIONS = [
55
+ "疗效",
56
+ "病因",
57
+ "预后",
58
+ "诊断",
59
+ ];
60
+ export const DISEASE_OBJECTIVE_VALUE = "病因";
61
+ export const PROGNOSIS_OBJECTIVE_VALUE = "预后";
62
+ export const DIAGNOSTIC_OBJECTIVE_VALUE = "诊断";
63
+ export const EFFECTIVENESS_OBJECTIVE_VALUE = "疗效";
64
+ export function parseClinicalResearchObjective(raw) {
65
+ const value = raw.trim();
66
+ if (value === "病因" ||
67
+ value === "疗效" ||
68
+ value === "预后" ||
69
+ value === "诊断") {
70
+ return value;
71
+ }
72
+ throw new helixlifeError(helixlifeErrorCode.INVALID_ARGUMENT, `无效研究类别: ${raw},可选: 疗效 | 病因 | 预后 | 诊断`);
73
+ }
74
+ /** 与 ClinicalFourElementsCheck.proceedToNextStep 的路由一致 */
75
+ export function getClinicalFulltextAppId(objective, studyDesign) {
76
+ if (objective === "疗效") {
77
+ return studyDesign === "临床试验"
78
+ ? CLINICAL_FULLTEXT_APP_IDS.effectivenessTrial
79
+ : CLINICAL_FULLTEXT_APP_IDS.effectivenessQueue;
80
+ }
81
+ if (objective === "病因")
82
+ return CLINICAL_FULLTEXT_APP_IDS.cause;
83
+ if (objective === "诊断")
84
+ return CLINICAL_FULLTEXT_APP_IDS.diagnostic;
85
+ return CLINICAL_FULLTEXT_APP_IDS.prognosis;
86
+ }
87
+ // ============================================================
88
+ // label / required 覆盖(对齐 useClinicalTopicEvaluationParameters)
89
+ // ============================================================
90
+ /** 优先展示顺序(其余字段保持相对顺序并排在后面) */
91
+ export const FORM_ORDER = [
92
+ "Research_Objective",
93
+ "Study_design",
94
+ "Temporal_direction",
95
+ "hospitals",
96
+ ];
97
+ /** 覆盖后端 label,文案对齐 */
98
+ export const FORM_LABEL_MAP = {
99
+ Research_Objective: "研究类别",
100
+ Study_design: "研究设计",
101
+ P: "研究人群(Population)",
102
+ I: "干预(Intervention)",
103
+ C: "对照(Control)",
104
+ O: "主要结局",
105
+ exposure_range1: "大类1",
106
+ exposure_range2: "大类2",
107
+ exposure_type1: "具体因素",
108
+ exposure_type2: "具体因素",
109
+ F: "预后因子",
110
+ };
111
+ /** 强制必填字段(无论后端 required 是否为 true) */
112
+ export const FORM_REQUIRED_FIELDS = [
113
+ "Research_Objective",
114
+ "Study_design",
115
+ "Temporal_direction",
116
+ "hospitals",
117
+ "P",
118
+ "I",
119
+ "O",
120
+ "F",
121
+ "Prognosis_model",
122
+ "Assess_prognosis",
123
+ "diagnostic_model",
124
+ ];
125
+ export const REQUIRED_KEY_SET = new Set(FORM_REQUIRED_FIELDS);
126
+ /** 是/否类分段字段(对齐 YES_NO_SEGMENTED_FIELD_KEYS) */
127
+ export const YES_NO_SEGMENTED_FIELD_KEYS = new Set([
128
+ "Assess_prognosis",
129
+ "Prognosis_model",
130
+ "diagnostic_model",
131
+ ]);
132
+ export const YES_NO_OPTIONS = ["是", "否"];
133
+ export const YES_NO_DEFAULT_VALUE = YES_NO_OPTIONS[0];
134
+ export function normalizeYesNoFieldValue(raw) {
135
+ const v = String(raw ?? "").trim();
136
+ return YES_NO_OPTIONS.includes(v) ? v : YES_NO_DEFAULT_VALUE;
137
+ }
138
+ // ============================================================
139
+ // 关键字段 key 常量
140
+ // ============================================================
141
+ export const RESEARCH_OBJECTIVE_KEY = "Research_Objective";
142
+ /** 诊断场景下 I 字段展示名(接口 variable 仍为 I) */
143
+ export const INDEX_TEST_DIAGNOSTIC_LABEL = "待评价的诊断实验(Index Test)";
144
+ /** 病因暴露因素分组标题 */
145
+ export const EXPOSURE_FACTOR_GROUP_LABEL = "暴露因素";
146
+ /** 病因暴露因素字段 key */
147
+ export const EXPOSURE_RANGE_KEYS = ["exposure_range1", "exposure_range2"];
148
+ export const EXPOSURE_TYPE_KEYS = ["exposure_type1", "exposure_type2"];
149
+ export const CLINICAL_CAUSE_TYPE_OPTIONS = [
150
+ "无明确病因",
151
+ "单病因",
152
+ "双病因",
153
+ ];
154
+ export function parseClinicalCauseType(raw) {
155
+ const value = raw.trim();
156
+ if (value === "无明确病因" || value === "单病因" || value === "双病因") {
157
+ return value;
158
+ }
159
+ throw new helixlifeError(helixlifeErrorCode.INVALID_ARGUMENT, `无效病因类型: ${raw},可选: 无明确病因 | 单病因 | 双病因`);
160
+ }
161
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/modules/fund/clinical/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { type TopicEvaluationField } from "./constants.js";
2
+ export declare function getTopicEvaluationFieldPlaceholder(fieldKey: string, researchObjective: string | undefined): string | undefined;
3
+ /**
4
+ * 对齐网页输入框 placeholder:
5
+ * 优先固定文案表;否则 paragraph/string 回退为「请输入{展示名}」。
6
+ */
7
+ export declare function resolveTopicEvaluationFieldPlaceholder(field: TopicEvaluationField, researchObjective: string | undefined): string;
8
+ export declare const FORM_HIDE_OPTIONS_CONDITIONS: Record<string, Record<string, Record<string, string[]>>>;
9
+ /**
10
+ * 字段在哪些研究类别下可见。
11
+ * 返回 undefined 表示始终可见(不受研究类别显隐表约束)。
12
+ */
13
+ export declare function getFieldVisibleObjectives(fieldKey: string): string[] | undefined;
14
+ export declare function shouldShowField(fieldKey: string, inputs: Record<string, string>, researchObjective: string | undefined, assessPrognosis: string | undefined): boolean;
15
+ export declare function getEffectiveSelectOptions(fieldKey: string, item: TopicEvaluationField, allInputs: Record<string, string>): string[];
16
+ /**
17
+ * 对齐页面的选项联动 effect:当裁剪后只剩一个有效选项时自动写入。
18
+ * 多选字段仍保留用户输入,交由选择器/校验处理。
19
+ */
20
+ export declare function normalizeSingleEffectiveSelectValues(fields: TopicEvaluationField[], inputs: Record<string, string>): {
21
+ values: Record<string, string>;
22
+ autoSelected: Record<string, string>;
23
+ };
24
+ export declare function getHideOptionsWatchSignature(inputs: Record<string, string>): string;
25
+ /** 下拉大类(与页面分段 radio / Select 分流一致) */
26
+ export declare function isDropdownExposureField(fieldKey: string): boolean;
27
+ export declare function buildInitialParameterValues(fields: TopicEvaluationField[]): Record<string, string>;
28
+ export declare function getEffectiveFieldRequired(field: TopicEvaluationField, inputs: Record<string, string>, isVisible: boolean): boolean;
29
+ export declare function getFieldDisplayName(field: TopicEvaluationField, researchObjective: string | undefined): string;
30
+ export declare function applyTopicEvaluationDisplayOrder(fields: TopicEvaluationField[], researchObjective: string | undefined): TopicEvaluationField[];
31
+ export declare function collectVisibleFieldValues(visibleFields: TopicEvaluationField[], inputs: Record<string, string>): Record<string, string>;
32
+ /** 仅保留 trim 后非空的字段(对齐 pickNonEmptyTopicEvaluationFieldValues) */
33
+ export declare function pickNonEmptyTopicEvaluationFieldValues(values: Record<string, string>): Record<string, string>;
34
+ export type TopicEvaluationValidationResult = {
35
+ ok: true;
36
+ values: Record<string, string>;
37
+ } | {
38
+ ok: false;
39
+ errors: Record<string, string>;
40
+ firstMessage: string;
41
+ };
42
+ export declare function validateTopicEvaluationForm(visibleFields: TopicEvaluationField[], inputs: Record<string, string>): TopicEvaluationValidationResult;
43
+ export declare function isTopicEvaluationFormDriftedFromSnapshot(snapshot: Record<string, string>, current: Record<string, string>, allFields: TopicEvaluationField[]): boolean;
44
+ export declare function buildTopicEvaluationTitle(values: Record<string, string>): string;
45
+ export interface TopicEvaluationParsed {
46
+ outcome: "success" | "failed";
47
+ content: string;
48
+ }
49
+ /**
50
+ * 网页把 parse 后的单个 content 交给 MarkdownPreview。
51
+ * 工作流可能把「修改建议」「填写示例」拆成多个 outputs 字段,因此 CLI
52
+ * 需要先将所有可展示片段合成同一段完整 Markdown,不能只取第一个字段。
53
+ */
54
+ export declare function pickCompleteTopicEvaluationContent(outputs: Record<string, unknown>): string;
55
+ export declare function parseTopicEvaluationOutputs(outputs: Record<string, unknown>): TopicEvaluationParsed;
56
+ //# sourceMappingURL=form-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-rules.d.ts","sourceRoot":"","sources":["../../../../src/modules/fund/clinical/form-rules.ts"],"names":[],"mappings":"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"}