@inflexa-ai/harness 0.17.0 → 0.19.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 (249) hide show
  1. package/dist/agents/report-builder.d.ts +2 -0
  2. package/dist/agents/report-builder.js +2 -0
  3. package/dist/agents/report-session-agent.d.ts +56 -0
  4. package/dist/agents/report-session-agent.js +72 -0
  5. package/dist/app/report-session-runtime.d.ts +72 -0
  6. package/dist/app/report-session-runtime.js +157 -0
  7. package/dist/app/spawn-report-session.d.ts +85 -0
  8. package/dist/app/spawn-report-session.js +83 -0
  9. package/dist/contracts/chat-events.d.ts +9 -0
  10. package/dist/contracts/index.d.ts +6 -2
  11. package/dist/contracts/index.js +3 -1
  12. package/dist/contracts/organ-system.d.ts +49 -0
  13. package/dist/contracts/organ-system.js +67 -0
  14. package/dist/contracts/report-blocks.d.ts +564 -0
  15. package/dist/contracts/report-blocks.js +117 -0
  16. package/dist/contracts/report-reference.d.ts +459 -0
  17. package/dist/contracts/report-reference.js +256 -0
  18. package/dist/contracts/schemas/chat-events.d.ts +2 -0
  19. package/dist/contracts/schemas/chat-events.js +2 -0
  20. package/dist/contracts/severity.d.ts +15 -0
  21. package/dist/contracts/severity.js +10 -0
  22. package/dist/contracts/target-dossier.d.ts +8675 -12972
  23. package/dist/contracts/target-dossier.js +534 -591
  24. package/dist/data/safety-panel-schema.d.ts +18 -5
  25. package/dist/data/safety-panel-schema.js +4 -4
  26. package/dist/execution/artifact-metadata.js +1 -0
  27. package/dist/execution/report-runner.js +1 -3
  28. package/dist/execution/run-synthesis.js +2 -0
  29. package/dist/index.d.ts +6 -0
  30. package/dist/index.js +19 -0
  31. package/dist/lib/async-utils.d.ts +16 -4
  32. package/dist/lib/async-utils.js +20 -15
  33. package/dist/lib/host-concurrency.js +1 -0
  34. package/dist/loop/__fixtures__/scripted-provider.js +23 -2
  35. package/dist/loop/run-agent.js +58 -10
  36. package/dist/loop/tool-detail.d.ts +40 -0
  37. package/dist/loop/tool-detail.js +35 -3
  38. package/dist/loop/types.d.ts +13 -0
  39. package/dist/memory/thread-history.d.ts +10 -0
  40. package/dist/memory/thread-history.js +12 -1
  41. package/dist/memory/thread-store.d.ts +4 -4
  42. package/dist/memory/thread-store.js +18 -9
  43. package/dist/prompts/report-session.d.ts +1 -0
  44. package/dist/prompts/report-session.js +89 -0
  45. package/dist/prompts/target-assessment/briefs/executive-recommendation.d.ts +1 -1
  46. package/dist/prompts/target-assessment/briefs/executive-recommendation.js +5 -5
  47. package/dist/prompts/target-assessment/briefs/liability-bullets.d.ts +1 -1
  48. package/dist/prompts/target-assessment/briefs/liability-bullets.js +1 -1
  49. package/dist/prompts/target-assessment/briefs/target-organ-liabilities.d.ts +1 -1
  50. package/dist/prompts/target-assessment/briefs/target-organ-liabilities.js +11 -3
  51. package/dist/prompts/target-assessment/investigation/adversarial-critique.d.ts +1 -0
  52. package/dist/prompts/target-assessment/investigation/adversarial-critique.js +67 -0
  53. package/dist/prompts/target-assessment/investigation/claim-reverification.d.ts +1 -0
  54. package/dist/prompts/target-assessment/investigation/claim-reverification.js +49 -0
  55. package/dist/prompts/target-assessment/investigation/index.d.ts +3 -0
  56. package/dist/prompts/target-assessment/investigation/index.js +3 -0
  57. package/dist/prompts/target-assessment/investigation/mechanism-proposal.d.ts +1 -0
  58. package/dist/prompts/target-assessment/investigation/mechanism-proposal.js +49 -0
  59. package/dist/prompts/target-assessment/tox-voice/index.d.ts +1 -1
  60. package/dist/prompts/target-assessment/tox-voice/vocabulary.d.ts +8 -5
  61. package/dist/prompts/target-assessment/tox-voice/vocabulary.js +9 -20
  62. package/dist/providers/__fixtures__/session.d.ts +5 -4
  63. package/dist/providers/__fixtures__/session.js +4 -4
  64. package/dist/providers/ai-sdk.d.ts +77 -0
  65. package/dist/providers/ai-sdk.js +149 -19
  66. package/dist/providers/errors.d.ts +14 -0
  67. package/dist/providers/errors.js +103 -18
  68. package/dist/providers/types.d.ts +16 -0
  69. package/dist/providers/types.js +10 -1
  70. package/dist/report-model/block-walk.d.ts +56 -0
  71. package/dist/report-model/block-walk.js +89 -0
  72. package/dist/report-model/draft-finish.d.ts +60 -0
  73. package/dist/report-model/draft-finish.js +56 -0
  74. package/dist/report-model/draft-operations.d.ts +125 -0
  75. package/dist/report-model/draft-operations.js +341 -0
  76. package/dist/report-model/draft-read.d.ts +59 -0
  77. package/dist/report-model/draft-read.js +109 -0
  78. package/dist/report-model/draft.d.ts +51 -0
  79. package/dist/report-model/draft.js +32 -0
  80. package/dist/report-model/fixture-resolver.d.ts +8 -0
  81. package/dist/report-model/fixture-resolver.js +252 -0
  82. package/dist/report-model/pin-snapshot.d.ts +30 -0
  83. package/dist/report-model/pin-snapshot.js +40 -0
  84. package/dist/report-model/reference-resolver.d.ts +113 -0
  85. package/dist/report-model/reference-resolver.js +60 -0
  86. package/dist/report-model/structural-validation.d.ts +22 -0
  87. package/dist/report-model/structural-validation.js +68 -0
  88. package/dist/report-model/validate.d.ts +72 -0
  89. package/dist/report-model/validate.js +95 -0
  90. package/dist/report-render/chart.d.ts +33 -0
  91. package/dist/report-render/chart.js +538 -0
  92. package/dist/report-render/page.d.ts +127 -0
  93. package/dist/report-render/page.js +307 -0
  94. package/dist/report-render/references.d.ts +32 -0
  95. package/dist/report-render/references.js +44 -0
  96. package/dist/report-render/render.d.ts +25 -0
  97. package/dist/report-render/render.js +125 -0
  98. package/dist/report-render/script-json.d.ts +13 -0
  99. package/dist/report-render/script-json.js +15 -0
  100. package/dist/report-render/types.d.ts +39 -0
  101. package/dist/report-render/types.js +10 -0
  102. package/dist/report-render/value-bridge.d.ts +62 -0
  103. package/dist/report-render/value-bridge.js +82 -0
  104. package/dist/report-render/views/chart-view.d.ts +11 -0
  105. package/dist/report-render/views/chart-view.js +23 -0
  106. package/dist/report-render/views/page-view.d.ts +20 -0
  107. package/dist/report-render/views/page-view.js +49 -0
  108. package/dist/report-render/views/prose.d.ts +28 -0
  109. package/dist/report-render/views/prose.js +75 -0
  110. package/dist/report-render/views/references-view.d.ts +20 -0
  111. package/dist/report-render/views/references-view.js +64 -0
  112. package/dist/report-render/views/values.d.ts +42 -0
  113. package/dist/report-render/views/values.js +43 -0
  114. package/dist/runtime/assemble.d.ts +15 -0
  115. package/dist/runtime/assemble.js +28 -6
  116. package/dist/runtime/boot.d.ts +3 -3
  117. package/dist/runtime/boot.js +15 -4
  118. package/dist/runtime/dbos.d.ts +4 -4
  119. package/dist/state/artifacts.d.ts +16 -0
  120. package/dist/state/artifacts.js +18 -0
  121. package/dist/state/init.js +54 -0
  122. package/dist/state/purge-analysis.js +2 -0
  123. package/dist/state/report-session-state.d.ts +112 -0
  124. package/dist/state/report-session-state.js +150 -0
  125. package/dist/state/report-versions.d.ts +129 -0
  126. package/dist/state/report-versions.js +167 -0
  127. package/dist/state/snapshot-parse.d.ts +34 -0
  128. package/dist/state/snapshot-parse.js +82 -0
  129. package/dist/tasks/data-profile.js +1 -0
  130. package/dist/tools/ad-hoc-router.d.ts +7 -2
  131. package/dist/tools/ad-hoc-router.js +2 -1
  132. package/dist/tools/bio/chembl.js +1 -0
  133. package/dist/tools/bio/comptox.js +1 -0
  134. package/dist/tools/bio/drug-gene-interactions.js +1 -0
  135. package/dist/tools/bio/gene-disease-evidence.js +1 -0
  136. package/dist/tools/bio/gene-preclinical-profile.js +1 -0
  137. package/dist/tools/bio/keys.d.ts +3 -2
  138. package/dist/tools/bio/keys.js +3 -2
  139. package/dist/tools/bio/lookup-annotation.js +1 -0
  140. package/dist/tools/bio/opentargets.d.ts +3 -3
  141. package/dist/tools/bio/opentargets.js +4 -3
  142. package/dist/tools/bio/pubchem.js +1 -0
  143. package/dist/tools/bio/search-clinical-trials.js +1 -0
  144. package/dist/tools/bio/search-faers.js +1 -0
  145. package/dist/tools/bio/search-geo-datasets.js +1 -0
  146. package/dist/tools/bio/search-interactions.js +1 -0
  147. package/dist/tools/bio/target-safety.d.ts +4 -6
  148. package/dist/tools/bio/target-safety.js +7 -6
  149. package/dist/tools/define-tool.d.ts +19 -12
  150. package/dist/tools/define-tool.js +4 -2
  151. package/dist/tools/display/show-user.js +1 -0
  152. package/dist/tools/iterate-report.js +2 -0
  153. package/dist/tools/lib/chembl-client.d.ts +2 -0
  154. package/dist/tools/lib/chembl-client.js +1 -0
  155. package/dist/tools/lib/monarch-client.d.ts +42 -0
  156. package/dist/tools/lib/monarch-client.js +100 -0
  157. package/dist/tools/report/build-report.js +1 -0
  158. package/dist/tools/report/mint-preview-url.js +1 -0
  159. package/dist/tools/report/preview-snapshot.js +1 -0
  160. package/dist/tools/report/submit-report.js +1 -0
  161. package/dist/tools/report/version-fs.js +4 -0
  162. package/dist/tools/report-authoring/authoring-tools.d.ts +241 -0
  163. package/dist/tools/report-authoring/authoring-tools.js +460 -0
  164. package/dist/tools/report-session/index.d.ts +8 -0
  165. package/dist/tools/report-session/index.js +8 -0
  166. package/dist/tools/report-session/preview-report.d.ts +90 -0
  167. package/dist/tools/report-session/preview-report.js +245 -0
  168. package/dist/tools/research/context7-docs.js +2 -0
  169. package/dist/tools/research/generate-analogy-report.js +1 -0
  170. package/dist/tools/research/generate-plan.js +7 -2
  171. package/dist/tools/research/inspect-data-profile.js +4 -0
  172. package/dist/tools/research/literature-reviewer.js +1 -0
  173. package/dist/tools/research/search-arxiv.js +1 -0
  174. package/dist/tools/research/search-github-repos.js +1 -0
  175. package/dist/tools/research/search-semantic-scholar.js +1 -0
  176. package/dist/tools/sandbox/list-available-packages.js +23 -0
  177. package/dist/tools/sandbox/list-available-refs.js +36 -0
  178. package/dist/tools/sandbox/report-blocker.js +1 -0
  179. package/dist/tools/sandbox/skills.js +2 -0
  180. package/dist/tools/workspace/file-stat.js +1 -0
  181. package/dist/tools/workspace/show-file.js +2 -0
  182. package/dist/tools/workspace/show-plan.js +1 -0
  183. package/dist/workflows/execute-analysis.d.ts +5 -1
  184. package/dist/workflows/execute-analysis.js +5 -5
  185. package/dist/workflows/execute-target-assessment.d.ts +13 -2
  186. package/dist/workflows/execute-target-assessment.js +78 -16
  187. package/dist/workflows/target-assessment/assemblers/index.d.ts +1 -1
  188. package/dist/workflows/target-assessment/assemblers/index.js +1 -1
  189. package/dist/workflows/target-assessment/assemblers/literature.d.ts +9 -27
  190. package/dist/workflows/target-assessment/assemblers/literature.js +32 -48
  191. package/dist/workflows/target-assessment/assemblers/orchestrator.d.ts +17 -9
  192. package/dist/workflows/target-assessment/assemblers/orchestrator.js +195 -85
  193. package/dist/workflows/target-assessment/assemblers/safety.d.ts +70 -48
  194. package/dist/workflows/target-assessment/assemblers/safety.js +125 -42
  195. package/dist/workflows/target-assessment/collectors/index.d.ts +5 -2
  196. package/dist/workflows/target-assessment/collectors/index.js +48 -5
  197. package/dist/workflows/target-assessment/coverage.d.ts +43 -27
  198. package/dist/workflows/target-assessment/coverage.js +33 -29
  199. package/dist/workflows/target-assessment/fanout/index.js +1 -0
  200. package/dist/workflows/target-assessment/investigation/index.d.ts +97 -0
  201. package/dist/workflows/target-assessment/investigation/index.js +419 -0
  202. package/dist/workflows/target-assessment/lib/approval-precedents.d.ts +26 -5
  203. package/dist/workflows/target-assessment/lib/approval-precedents.js +95 -29
  204. package/dist/workflows/target-assessment/lib/citation-validator.js +1 -1
  205. package/dist/workflows/target-assessment/lib/clinical-consequence-annotator.d.ts +2 -2
  206. package/dist/workflows/target-assessment/lib/clinical-evidence-attribution.d.ts +2 -3
  207. package/dist/workflows/target-assessment/lib/clinical-evidence-attribution.js +0 -4
  208. package/dist/workflows/target-assessment/lib/compute-derived.d.ts +6 -5
  209. package/dist/workflows/target-assessment/lib/compute-derived.js +14 -5
  210. package/dist/workflows/target-assessment/lib/family-complex-supplement.d.ts +5 -6
  211. package/dist/workflows/target-assessment/lib/family-complex-supplement.js +2 -3
  212. package/dist/workflows/target-assessment/lib/fda-label-safety.d.ts +72 -0
  213. package/dist/workflows/target-assessment/lib/fda-label-safety.js +166 -0
  214. package/dist/workflows/target-assessment/lib/heterodimer-filter.d.ts +0 -9
  215. package/dist/workflows/target-assessment/lib/heterodimer-filter.js +0 -10
  216. package/dist/workflows/target-assessment/lib/hpo-organ-map.d.ts +34 -0
  217. package/dist/workflows/target-assessment/lib/hpo-organ-map.js +63 -0
  218. package/dist/workflows/target-assessment/lib/impc-organ-map.d.ts +19 -0
  219. package/dist/workflows/target-assessment/lib/impc-organ-map.js +39 -0
  220. package/dist/workflows/target-assessment/lib/meddra-organ-map.d.ts +24 -14
  221. package/dist/workflows/target-assessment/lib/meddra-organ-map.js +59 -47
  222. package/dist/workflows/target-assessment/lib/recommendation-sanitizer.js +1 -1
  223. package/dist/workflows/target-assessment/lib/regulatory-actions.d.ts +2 -3
  224. package/dist/workflows/target-assessment/lib/regulatory-actions.js +33 -4
  225. package/dist/workflows/target-assessment/lib/safety-corroboration.d.ts +44 -0
  226. package/dist/workflows/target-assessment/lib/safety-corroboration.js +273 -0
  227. package/dist/workflows/target-assessment/lib/target-identity-filter.d.ts +5 -7
  228. package/dist/workflows/target-assessment/lib/target-identity-filter.js +5 -7
  229. package/dist/workflows/target-assessment/metrics.d.ts +1 -6
  230. package/dist/workflows/target-assessment/metrics.js +1 -13
  231. package/dist/workflows/target-assessment/phase4-assemble.d.ts +2147 -807
  232. package/dist/workflows/target-assessment/phase4-assemble.js +19 -19
  233. package/dist/workflows/target-assessment/phase5-persist.d.ts +20 -21
  234. package/dist/workflows/target-assessment/phase5-persist.js +56 -173
  235. package/dist/workflows/target-assessment/schemas.d.ts +46 -1
  236. package/dist/workflows/target-assessment/schemas.js +19 -0
  237. package/dist/workflows/target-assessment/steps/fanout/polypharm-for-one-modulator-step.d.ts +1 -0
  238. package/dist/workflows/target-assessment/steps/fanout/polypharm-for-one-modulator-step.js +2 -0
  239. package/dist/workflows/target-assessment/steps/phase2-aggregate.d.ts +26 -62
  240. package/dist/workflows/target-assessment/steps/phase2-aggregate.js +0 -4
  241. package/dist/workflows/target-assessment/steps/phase3-aggregate.d.ts +27 -154
  242. package/dist/workflows/target-assessment/steps/phase3-aggregate.js +0 -6
  243. package/dist/workflows/target-assessment/steps/synthesis/diagnostics.d.ts +0 -6
  244. package/dist/workflows/target-assessment/steps/synthesis/diagnostics.js +0 -18
  245. package/dist/workflows/target-assessment/sub-workflows/per-modulator-polypharm.d.ts +1 -0
  246. package/dist/workflows/target-assessment/synthesis/index.d.ts +52 -5
  247. package/dist/workflows/target-assessment/synthesis/index.js +4 -1
  248. package/dist/workflows/target-assessment/synthesis-probes.d.ts +3 -3
  249. package/package.json +4 -1
@@ -11,68 +11,6 @@
11
11
  * compiles, but nothing populates them.
12
12
  */
13
13
  import { z } from "zod";
14
- export declare const Phase2AggregateInputSchema: z.ZodObject<{
15
- "decision-modulator-triage": z.ZodDiscriminatedUnion<[z.ZodObject<{
16
- coverage: z.ZodLiteral<"available">;
17
- data: z.ZodObject<{
18
- shortlist: z.ZodArray<z.ZodObject<{
19
- moleculeChemblId: z.ZodString;
20
- preferredName: z.ZodString;
21
- maxPhase: z.ZodNullable<z.ZodNumber>;
22
- firstApproval: z.ZodNullable<z.ZodNumber>;
23
- rationale: z.ZodString;
24
- }, z.core.$strip>>;
25
- notes: z.ZodString;
26
- dropped_synonyms: z.ZodDefault<z.ZodArray<z.ZodObject<{
27
- chemblId: z.ZodString;
28
- reason: z.ZodEnum<{
29
- same_active_substance: "same_active_substance";
30
- ambiguous_name_synonym: "ambiguous_name_synonym";
31
- }>;
32
- keptId: z.ZodNullable<z.ZodString>;
33
- }, z.core.$strip>>>;
34
- }, z.core.$strip>;
35
- }, z.core.$strip>, z.ZodObject<{
36
- coverage: z.ZodLiteral<"queried_no_data">;
37
- error: z.ZodOptional<z.ZodObject<{
38
- message: z.ZodString;
39
- name: z.ZodOptional<z.ZodString>;
40
- stack: z.ZodOptional<z.ZodString>;
41
- }, z.core.$strip>>;
42
- }, z.core.$strip>, z.ZodObject<{
43
- coverage: z.ZodLiteral<"not_loaded">;
44
- reason: z.ZodOptional<z.ZodString>;
45
- }, z.core.$strip>], "coverage">;
46
- "decision-drugs-in-class": z.ZodDiscriminatedUnion<[z.ZodObject<{
47
- coverage: z.ZodLiteral<"available">;
48
- data: z.ZodObject<{
49
- drugs: z.ZodArray<z.ZodObject<{
50
- moleculeChemblId: z.ZodString;
51
- preferredName: z.ZodString;
52
- maxPhase: z.ZodNullable<z.ZodNumber>;
53
- firstApproval: z.ZodNullable<z.ZodNumber>;
54
- moleculeType: z.ZodNullable<z.ZodString>;
55
- sources: z.ZodArray<z.ZodEnum<{
56
- dgidb: "dgidb";
57
- drugbank: "drugbank";
58
- chembl: "chembl";
59
- }>>;
60
- }, z.core.$strip>>;
61
- total: z.ZodNumber;
62
- truncated: z.ZodBoolean;
63
- }, z.core.$strip>;
64
- }, z.core.$strip>, z.ZodObject<{
65
- coverage: z.ZodLiteral<"queried_no_data">;
66
- error: z.ZodOptional<z.ZodObject<{
67
- message: z.ZodString;
68
- name: z.ZodOptional<z.ZodString>;
69
- stack: z.ZodOptional<z.ZodString>;
70
- }, z.core.$strip>>;
71
- }, z.core.$strip>, z.ZodObject<{
72
- coverage: z.ZodLiteral<"not_loaded">;
73
- reason: z.ZodOptional<z.ZodString>;
74
- }, z.core.$strip>], "coverage">;
75
- }, z.core.$strip>;
76
14
  export declare const Phase2BundleSchema: z.ZodObject<{
77
15
  phase1: z.ZodObject<{
78
16
  resolved: z.ZodObject<{
@@ -543,6 +481,31 @@ export declare const Phase2BundleSchema: z.ZodObject<{
543
481
  coverage: z.ZodLiteral<"not_loaded">;
544
482
  reason: z.ZodOptional<z.ZodString>;
545
483
  }, z.core.$strip>], "coverage">;
484
+ monarch: z.ZodDiscriminatedUnion<[z.ZodObject<{
485
+ coverage: z.ZodLiteral<"available">;
486
+ data: z.ZodObject<{
487
+ geneCurie: z.ZodString;
488
+ phenotypes: z.ZodArray<z.ZodObject<{
489
+ hpoId: z.ZodString;
490
+ label: z.ZodString;
491
+ ancestorIds: z.ZodArray<z.ZodString>;
492
+ publications: z.ZodArray<z.ZodString>;
493
+ diseaseContext: z.ZodNullable<z.ZodString>;
494
+ frequencyPercent: z.ZodNullable<z.ZodNumber>;
495
+ primaryKnowledgeSource: z.ZodNullable<z.ZodString>;
496
+ }, z.core.$strip>>;
497
+ }, z.core.$strip>;
498
+ }, z.core.$strip>, z.ZodObject<{
499
+ coverage: z.ZodLiteral<"queried_no_data">;
500
+ error: z.ZodOptional<z.ZodObject<{
501
+ message: z.ZodString;
502
+ name: z.ZodOptional<z.ZodString>;
503
+ stack: z.ZodOptional<z.ZodString>;
504
+ }, z.core.$strip>>;
505
+ }, z.core.$strip>, z.ZodObject<{
506
+ coverage: z.ZodLiteral<"not_loaded">;
507
+ reason: z.ZodOptional<z.ZodString>;
508
+ }, z.core.$strip>], "coverage">;
546
509
  therapeuticPrograms: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
547
510
  coverage: z.ZodLiteral<"available">;
548
511
  data: z.ZodObject<{
@@ -560,6 +523,7 @@ export declare const Phase2BundleSchema: z.ZodObject<{
560
523
  evidence: z.ZodArray<z.ZodObject<{
561
524
  pmid: z.ZodOptional<z.ZodString>;
562
525
  doi: z.ZodOptional<z.ZodString>;
526
+ accession: z.ZodOptional<z.ZodString>;
563
527
  source: z.ZodString;
564
528
  predicate: z.ZodOptional<z.ZodString>;
565
529
  score: z.ZodOptional<z.ZodNumber>;
@@ -23,10 +23,6 @@ const StubOffTargetCuratorSchema = z.object({
23
23
  truncated: z.boolean().default(false),
24
24
  notes: z.string().default(""),
25
25
  });
26
- export const Phase2AggregateInputSchema = z.object({
27
- "decision-modulator-triage": withCoverage(ModulatorTriageOutputSchema),
28
- "decision-drugs-in-class": withCoverage(DrugsInClassOutputSchema),
29
- });
30
26
  export const Phase2BundleSchema = z.object({
31
27
  phase1: Phase1BundleSchema,
32
28
  decisions: z.object({
@@ -3,160 +3,6 @@
3
3
  * type-checking. The DBOS workflow assembles the Phase-3 bundle inline.
4
4
  */
5
5
  import { z } from "zod";
6
- export declare const Phase3AggregateInputSchema: z.ZodObject<{
7
- "per-modulator-faers": z.ZodObject<{
8
- results: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
9
- coverage: z.ZodLiteral<"available">;
10
- data: z.ZodObject<{
11
- moleculeChemblId: z.ZodString;
12
- preferredName: z.ZodString;
13
- totalReports: z.ZodNullable<z.ZodNumber>;
14
- topReactions: z.ZodArray<z.ZodObject<{
15
- reaction: z.ZodString;
16
- count: z.ZodNumber;
17
- }, z.core.$strip>>;
18
- seriousness: z.ZodNullable<z.ZodObject<{
19
- totalReports: z.ZodNumber;
20
- fatalCount: z.ZodNumber;
21
- hospitalizationCount: z.ZodNumber;
22
- lifeThreateningCount: z.ZodNumber;
23
- disablingCount: z.ZodNumber;
24
- congenitalAnomalyCount: z.ZodDefault<z.ZodNumber>;
25
- otherSeriousCount: z.ZodDefault<z.ZodNumber>;
26
- }, z.core.$strip>>;
27
- }, z.core.$strip>;
28
- }, z.core.$strip>, z.ZodObject<{
29
- coverage: z.ZodLiteral<"queried_no_data">;
30
- error: z.ZodOptional<z.ZodObject<{
31
- message: z.ZodString;
32
- name: z.ZodOptional<z.ZodString>;
33
- stack: z.ZodOptional<z.ZodString>;
34
- }, z.core.$strip>>;
35
- }, z.core.$strip>, z.ZodObject<{
36
- coverage: z.ZodLiteral<"not_loaded">;
37
- reason: z.ZodOptional<z.ZodString>;
38
- }, z.core.$strip>], "coverage">>;
39
- }, z.core.$strip>;
40
- "per-trial-aes": z.ZodObject<{
41
- results: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
42
- coverage: z.ZodLiteral<"available">;
43
- data: z.ZodObject<{
44
- nctId: z.ZodString;
45
- title: z.ZodString;
46
- whyStopped: z.ZodNullable<z.ZodString>;
47
- outcomes: z.ZodDefault<z.ZodArray<z.ZodObject<{
48
- type: z.ZodEnum<{
49
- other: "other";
50
- primary: "primary";
51
- secondary: "secondary";
52
- }>;
53
- measure: z.ZodString;
54
- description: z.ZodNullable<z.ZodString>;
55
- timeFrame: z.ZodNullable<z.ZodString>;
56
- effect: z.ZodDiscriminatedUnion<[z.ZodObject<{
57
- kind: z.ZodLiteral<"quantitative">;
58
- value: z.ZodNumber;
59
- units: z.ZodString;
60
- ci_low: z.ZodOptional<z.ZodNumber>;
61
- ci_high: z.ZodOptional<z.ZodNumber>;
62
- }, z.core.$strip>, z.ZodObject<{
63
- kind: z.ZodLiteral<"not_extracted">;
64
- reason: z.ZodEnum<{
65
- ctgov_no_numeric_result: "ctgov_no_numeric_result";
66
- ctgov_no_result_groups: "ctgov_no_result_groups";
67
- }>;
68
- }, z.core.$strip>], "kind">;
69
- }, z.core.$strip>>>;
70
- groups: z.ZodArray<z.ZodObject<{
71
- groupId: z.ZodString;
72
- title: z.ZodString;
73
- description: z.ZodNullable<z.ZodString>;
74
- }, z.core.$strip>>;
75
- events: z.ZodArray<z.ZodObject<{
76
- serious: z.ZodBoolean;
77
- term: z.ZodString;
78
- organSystem: z.ZodNullable<z.ZodString>;
79
- counts: z.ZodArray<z.ZodObject<{
80
- groupId: z.ZodString;
81
- numAffected: z.ZodNullable<z.ZodNumber>;
82
- numAtRisk: z.ZodNullable<z.ZodNumber>;
83
- }, z.core.$strip>>;
84
- }, z.core.$strip>>;
85
- }, z.core.$strip>;
86
- }, z.core.$strip>, z.ZodObject<{
87
- coverage: z.ZodLiteral<"queried_no_data">;
88
- error: z.ZodOptional<z.ZodObject<{
89
- message: z.ZodString;
90
- name: z.ZodOptional<z.ZodString>;
91
- stack: z.ZodOptional<z.ZodString>;
92
- }, z.core.$strip>>;
93
- }, z.core.$strip>, z.ZodObject<{
94
- coverage: z.ZodLiteral<"not_loaded">;
95
- reason: z.ZodOptional<z.ZodString>;
96
- }, z.core.$strip>], "coverage">>;
97
- }, z.core.$strip>;
98
- "per-modulator-polypharm": z.ZodObject<{
99
- results: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
100
- coverage: z.ZodLiteral<"available">;
101
- data: z.ZodObject<{
102
- moleculeChemblId: z.ZodString;
103
- preferredName: z.ZodString;
104
- primaryPchembl: z.ZodNullable<z.ZodNumber>;
105
- hits: z.ZodArray<z.ZodObject<{
106
- targetChemblId: z.ZodString;
107
- targetName: z.ZodNullable<z.ZodString>;
108
- pchemblValue: z.ZodNullable<z.ZodNumber>;
109
- standardType: z.ZodNullable<z.ZodString>;
110
- standardValue: z.ZodNullable<z.ZodNumber>;
111
- standardUnits: z.ZodNullable<z.ZodString>;
112
- }, z.core.$strip>>;
113
- }, z.core.$strip>;
114
- }, z.core.$strip>, z.ZodObject<{
115
- coverage: z.ZodLiteral<"queried_no_data">;
116
- error: z.ZodOptional<z.ZodObject<{
117
- message: z.ZodString;
118
- name: z.ZodOptional<z.ZodString>;
119
- stack: z.ZodOptional<z.ZodString>;
120
- }, z.core.$strip>>;
121
- }, z.core.$strip>, z.ZodObject<{
122
- coverage: z.ZodLiteral<"not_loaded">;
123
- reason: z.ZodOptional<z.ZodString>;
124
- }, z.core.$strip>], "coverage">>;
125
- }, z.core.$strip>;
126
- "per-class-drug-aes": z.ZodObject<{
127
- results: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
128
- coverage: z.ZodLiteral<"available">;
129
- data: z.ZodObject<{
130
- moleculeChemblId: z.ZodString;
131
- preferredName: z.ZodString;
132
- totalReports: z.ZodNullable<z.ZodNumber>;
133
- topReactions: z.ZodArray<z.ZodObject<{
134
- reaction: z.ZodString;
135
- count: z.ZodNumber;
136
- }, z.core.$strip>>;
137
- seriousness: z.ZodNullable<z.ZodObject<{
138
- totalReports: z.ZodNumber;
139
- fatalCount: z.ZodNumber;
140
- hospitalizationCount: z.ZodNumber;
141
- lifeThreateningCount: z.ZodNumber;
142
- disablingCount: z.ZodNumber;
143
- congenitalAnomalyCount: z.ZodDefault<z.ZodNumber>;
144
- otherSeriousCount: z.ZodDefault<z.ZodNumber>;
145
- }, z.core.$strip>>;
146
- }, z.core.$strip>;
147
- }, z.core.$strip>, z.ZodObject<{
148
- coverage: z.ZodLiteral<"queried_no_data">;
149
- error: z.ZodOptional<z.ZodObject<{
150
- message: z.ZodString;
151
- name: z.ZodOptional<z.ZodString>;
152
- stack: z.ZodOptional<z.ZodString>;
153
- }, z.core.$strip>>;
154
- }, z.core.$strip>, z.ZodObject<{
155
- coverage: z.ZodLiteral<"not_loaded">;
156
- reason: z.ZodOptional<z.ZodString>;
157
- }, z.core.$strip>], "coverage">>;
158
- }, z.core.$strip>;
159
- }, z.core.$strip>;
160
6
  export declare const Phase3BundleSchema: z.ZodObject<{
161
7
  phase2: z.ZodObject<{
162
8
  phase1: z.ZodObject<{
@@ -628,6 +474,31 @@ export declare const Phase3BundleSchema: z.ZodObject<{
628
474
  coverage: z.ZodLiteral<"not_loaded">;
629
475
  reason: z.ZodOptional<z.ZodString>;
630
476
  }, z.core.$strip>], "coverage">;
477
+ monarch: z.ZodDiscriminatedUnion<[z.ZodObject<{
478
+ coverage: z.ZodLiteral<"available">;
479
+ data: z.ZodObject<{
480
+ geneCurie: z.ZodString;
481
+ phenotypes: z.ZodArray<z.ZodObject<{
482
+ hpoId: z.ZodString;
483
+ label: z.ZodString;
484
+ ancestorIds: z.ZodArray<z.ZodString>;
485
+ publications: z.ZodArray<z.ZodString>;
486
+ diseaseContext: z.ZodNullable<z.ZodString>;
487
+ frequencyPercent: z.ZodNullable<z.ZodNumber>;
488
+ primaryKnowledgeSource: z.ZodNullable<z.ZodString>;
489
+ }, z.core.$strip>>;
490
+ }, z.core.$strip>;
491
+ }, z.core.$strip>, z.ZodObject<{
492
+ coverage: z.ZodLiteral<"queried_no_data">;
493
+ error: z.ZodOptional<z.ZodObject<{
494
+ message: z.ZodString;
495
+ name: z.ZodOptional<z.ZodString>;
496
+ stack: z.ZodOptional<z.ZodString>;
497
+ }, z.core.$strip>>;
498
+ }, z.core.$strip>, z.ZodObject<{
499
+ coverage: z.ZodLiteral<"not_loaded">;
500
+ reason: z.ZodOptional<z.ZodString>;
501
+ }, z.core.$strip>], "coverage">;
631
502
  therapeuticPrograms: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
632
503
  coverage: z.ZodLiteral<"available">;
633
504
  data: z.ZodObject<{
@@ -645,6 +516,7 @@ export declare const Phase3BundleSchema: z.ZodObject<{
645
516
  evidence: z.ZodArray<z.ZodObject<{
646
517
  pmid: z.ZodOptional<z.ZodString>;
647
518
  doi: z.ZodOptional<z.ZodString>;
519
+ accession: z.ZodOptional<z.ZodString>;
648
520
  source: z.ZodString;
649
521
  predicate: z.ZodOptional<z.ZodString>;
650
522
  score: z.ZodOptional<z.ZodNumber>;
@@ -880,6 +752,7 @@ export declare const Phase3BundleSchema: z.ZodObject<{
880
752
  hits: z.ZodArray<z.ZodObject<{
881
753
  targetChemblId: z.ZodString;
882
754
  targetName: z.ZodNullable<z.ZodString>;
755
+ assayChemblId: z.ZodNullable<z.ZodString>;
883
756
  pchemblValue: z.ZodNullable<z.ZodNumber>;
884
757
  standardType: z.ZodNullable<z.ZodString>;
885
758
  standardValue: z.ZodNullable<z.ZodNumber>;
@@ -5,12 +5,6 @@
5
5
  import { z } from "zod";
6
6
  import { Phase2BundleSchema } from "./phase2-aggregate.js";
7
7
  import { PerModulatorFaersResultsSchema, PerTrialAEsResultsSchema, PerModulatorPolypharmResultsSchema, PerClassDrugAEsResultsSchema, } from "../sub-workflows/index.js";
8
- export const Phase3AggregateInputSchema = z.object({
9
- "per-modulator-faers": PerModulatorFaersResultsSchema,
10
- "per-trial-aes": PerTrialAEsResultsSchema,
11
- "per-modulator-polypharm": PerModulatorPolypharmResultsSchema,
12
- "per-class-drug-aes": PerClassDrugAEsResultsSchema,
13
- });
14
8
  export const Phase3BundleSchema = z.object({
15
9
  phase2: Phase2BundleSchema,
16
10
  fanout: z.object({
@@ -26,9 +26,3 @@ export interface BuildDiagnosticsRowInput {
26
26
  errorMessage?: string | null;
27
27
  }
28
28
  export declare function buildDiagnosticsRow(input: BuildDiagnosticsRowInput): SynthesisDiagnosticRow;
29
- /**
30
- * Build a "skipped" diagnostics row for the case where the step never
31
- * even attempted an LLM call (e.g., upstream coverage was not_loaded
32
- * and the step short-circuited).
33
- */
34
- export declare function buildSkippedDiagnosticsRow(stepId: StepId, modelId: string, reason: string): SynthesisDiagnosticRow;
@@ -25,21 +25,3 @@ export function buildDiagnosticsRow(input) {
25
25
  error_message: input.errorMessage ?? null,
26
26
  };
27
27
  }
28
- /**
29
- * Build a "skipped" diagnostics row for the case where the step never
30
- * even attempted an LLM call (e.g., upstream coverage was not_loaded
31
- * and the step short-circuited).
32
- */
33
- export function buildSkippedDiagnosticsRow(stepId, modelId, reason) {
34
- return {
35
- step_id: stepId,
36
- model_id: modelId,
37
- attempt_count: 1,
38
- retry_critique: null,
39
- output_chars: 0,
40
- probe_verdict: "skipped",
41
- final_coverage: "queried_no_data",
42
- error_kind: null,
43
- error_message: reason,
44
- };
45
- }
@@ -15,6 +15,7 @@ export declare const PerModulatorPolypharmResultsSchema: z.ZodObject<{
15
15
  hits: z.ZodArray<z.ZodObject<{
16
16
  targetChemblId: z.ZodString;
17
17
  targetName: z.ZodNullable<z.ZodString>;
18
+ assayChemblId: z.ZodNullable<z.ZodString>;
18
19
  pchemblValue: z.ZodNullable<z.ZodNumber>;
19
20
  standardType: z.ZodNullable<z.ZodString>;
20
21
  standardValue: z.ZodNullable<z.ZodNumber>;
@@ -16,7 +16,7 @@
16
16
  * post-402 call lands a fresh cache slot.
17
17
  */
18
18
  import { z } from "zod";
19
- import { type DossierV4Body } from "@inflexa-ai/harness/contracts/target-dossier.js";
19
+ import { type DossierBody } from "@inflexa-ai/harness/contracts/target-dossier.js";
20
20
  import type { AgentSession } from "../../../auth/types.js";
21
21
  import type { AgentChat } from "../../../providers/types.js";
22
22
  import { BUDGET_EXCEEDED_SENTINEL } from "../lib/llm-step.js";
@@ -45,7 +45,31 @@ export declare const LiabilityBulletsOutputSchema: z.ZodObject<{
45
45
  export type LiabilityBulletsOutput = z.infer<typeof LiabilityBulletsOutputSchema>;
46
46
  export declare const SafetyFlagsTrailOutputSchema: z.ZodObject<{
47
47
  flags: z.ZodArray<z.ZodObject<{
48
- organ: z.ZodString;
48
+ organ: z.ZodEnum<{
49
+ hematologic: "hematologic";
50
+ metabolic: "metabolic";
51
+ immune: "immune";
52
+ hepatic: "hepatic";
53
+ musculoskeletal: "musculoskeletal";
54
+ cns: "cns";
55
+ renal: "renal";
56
+ reproductive: "reproductive";
57
+ respiratory: "respiratory";
58
+ cardiac: "cardiac";
59
+ vascular: "vascular";
60
+ pns: "pns";
61
+ gi: "gi";
62
+ pancreas: "pancreas";
63
+ endocrine_thyroid: "endocrine_thyroid";
64
+ dermatologic: "dermatologic";
65
+ ocular: "ocular";
66
+ oncology: "oncology";
67
+ }>;
68
+ severity: z.ZodEnum<{
69
+ high: "high";
70
+ medium: "medium";
71
+ low: "low";
72
+ }>;
49
73
  trail: z.ZodString;
50
74
  mechanism_hypothesis: z.ZodNullable<z.ZodString>;
51
75
  }, z.core.$strip>>;
@@ -77,7 +101,6 @@ export declare const ExternalCitationSchema: z.ZodObject<{
77
101
  fetched_at: z.ZodOptional<z.ZodString>;
78
102
  excerpt: z.ZodString;
79
103
  }, z.core.$strip>;
80
- export type ExternalCitation = z.infer<typeof ExternalCitationSchema>;
81
104
  export declare const DossierRecommendationOutputSchema: z.ZodObject<{
82
105
  disposition: z.ZodEnum<{
83
106
  pursue: "pursue";
@@ -225,7 +248,31 @@ export declare const SafetyFlagsTrailStepOutputSchema: z.ZodDiscriminatedUnion<[
225
248
  coverage: z.ZodLiteral<"available">;
226
249
  data: z.ZodObject<{
227
250
  flags: z.ZodArray<z.ZodObject<{
228
- organ: z.ZodString;
251
+ organ: z.ZodEnum<{
252
+ hematologic: "hematologic";
253
+ metabolic: "metabolic";
254
+ immune: "immune";
255
+ hepatic: "hepatic";
256
+ musculoskeletal: "musculoskeletal";
257
+ cns: "cns";
258
+ renal: "renal";
259
+ reproductive: "reproductive";
260
+ respiratory: "respiratory";
261
+ cardiac: "cardiac";
262
+ vascular: "vascular";
263
+ pns: "pns";
264
+ gi: "gi";
265
+ pancreas: "pancreas";
266
+ endocrine_thyroid: "endocrine_thyroid";
267
+ dermatologic: "dermatologic";
268
+ ocular: "ocular";
269
+ oncology: "oncology";
270
+ }>;
271
+ severity: z.ZodEnum<{
272
+ high: "high";
273
+ medium: "medium";
274
+ low: "low";
275
+ }>;
229
276
  trail: z.ZodString;
230
277
  mechanism_hypothesis: z.ZodNullable<z.ZodString>;
231
278
  }, z.core.$strip>>;
@@ -543,7 +590,7 @@ declare function isBudgetExceeded<T>(v: SynthesisStepResult<T>): v is {
543
590
  };
544
591
  interface Phase4Output {
545
592
  readonly assessmentId: string;
546
- readonly dossier: DossierV4Body;
593
+ readonly dossier: DossierBody;
547
594
  }
548
595
  export declare function liabilityBullets(phase4: Phase4Output, deps: SynthesisAgentDeps): Promise<SynthesisStepResult<LiabilityBulletsStepOutput>>;
549
596
  export declare function safetyFlagsTrail(phase4: Phase4Output, deps: SynthesisAgentDeps): Promise<SynthesisStepResult<SafetyFlagsTrailStepOutput>>;
@@ -17,6 +17,8 @@
17
17
  */
18
18
  import { z } from "zod";
19
19
  import { SynthesisDiagnosticRowSchema } from "@inflexa-ai/harness/contracts/target-dossier.js";
20
+ import { OrganSystemSchema } from "../../../contracts/organ-system.js";
21
+ import { SeveritySchema } from "../../../contracts/severity.js";
20
22
  import { executiveRecommendationBrief, liabilityBulletsBrief, targetOrganLiabilitiesBrief, translationalCommentaryBrief, } from "../../../prompts/target-assessment/briefs/index.js";
21
23
  import { toxVoiceCore, toxVoiceExemplars } from "../../../prompts/target-assessment/tox-voice/index.js";
22
24
  import { SerializedErrorSchema } from "../coverage.js";
@@ -37,7 +39,8 @@ export const LiabilityBulletsOutputSchema = z.object({
37
39
  });
38
40
  export const SafetyFlagsTrailOutputSchema = z.object({
39
41
  flags: z.array(z.object({
40
- organ: z.string(),
42
+ organ: OrganSystemSchema,
43
+ severity: SeveritySchema,
41
44
  trail: z.string(),
42
45
  mechanism_hypothesis: z.string().nullable(),
43
46
  })),
@@ -17,7 +17,7 @@
17
17
  * Threshold tuning: the constants block at the top of this file is the
18
18
  * single source of truth. Adjust there, never inline.
19
19
  */
20
- import type { DossierV4Body, DossierV5Body } from "@inflexa-ai/harness/contracts/target-dossier.js";
20
+ import type { DossierBody } from "@inflexa-ai/harness/contracts/target-dossier.js";
21
21
  import type { DossierRecommendationOutput, LiabilityBulletsOutput, SafetyFlagsTrailOutput, TranslationalCommentaryOutput } from "./synthesis/index.js";
22
22
  export declare const PROBE_THRESHOLDS: {
23
23
  readonly recommendation: {
@@ -50,7 +50,7 @@ export declare function countSectionReferences(text: string): {
50
50
  export declare function countSourceReferences(text: string): {
51
51
  matchedSources: string[];
52
52
  };
53
- export declare function probeRecommendation(out: DossierRecommendationOutput, dossier: DossierV4Body | DossierV5Body): ProbeResult;
54
- export declare function probeLiabilityBullets(out: LiabilityBulletsOutput, dossier?: DossierV4Body | DossierV5Body): ProbeResult;
53
+ export declare function probeRecommendation(out: DossierRecommendationOutput, dossier: DossierBody): ProbeResult;
54
+ export declare function probeLiabilityBullets(out: LiabilityBulletsOutput, dossier?: DossierBody): ProbeResult;
55
55
  export declare function probeSafetyFlags(out: SafetyFlagsTrailOutput): ProbeResult;
56
56
  export declare function probeTranslationalCommentary(out: TranslationalCommentaryOutput): ProbeResult;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inflexa-ai/harness",
3
- "version": "0.17.0",
3
+ "version": "0.19.0",
4
4
  "description": "Host-agnostic bioinformatics agent harness \u2014 hand-rolled agent loop, DBOS-durable workflows, sandboxed compute.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -71,6 +71,7 @@
71
71
  "neverthrow": "^8.2.0",
72
72
  "nunjucks": "^3.2.4",
73
73
  "openai": "^4.104.0",
74
+ "p-queue": "^9.3.3",
74
75
  "pdf-parse": "^2.4.5",
75
76
  "pg": "^8.22.0",
76
77
  "puppeteer-core": "^23.11.1",
@@ -84,9 +85,11 @@
84
85
  "@types/nunjucks": "^3.2.6",
85
86
  "@types/pdf-parse": "^1.1.5",
86
87
  "@types/pg": "^8.20.0",
88
+ "csstree-validator": "^4.0.1",
87
89
  "eslint": "^10.7.0",
88
90
  "eslint-plugin-neverthrow": "^1.1.4",
89
91
  "globals": "^17.7.0",
92
+ "html-validate": "^11.6.2",
90
93
  "prettier": "^3.9.5",
91
94
  "testcontainers": "^10.28.0",
92
95
  "typescript": "^6.0.3",