@inflexa-ai/harness 0.35.8 → 0.36.1

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 (198) hide show
  1. package/dist/auth/types.d.ts +5 -14
  2. package/dist/auth/types.js +3 -10
  3. package/dist/billing/usage-recorder.d.ts +1 -1
  4. package/dist/contracts/analogy-report.d.ts +1 -1
  5. package/dist/contracts/analogy-report.js +1 -1
  6. package/dist/contracts/chat-parts.d.ts +2 -3
  7. package/dist/contracts/index.d.ts +0 -4
  8. package/dist/contracts/index.js +0 -2
  9. package/dist/index.d.ts +0 -7
  10. package/dist/index.js +0 -21
  11. package/dist/lib/metrics.d.ts +1 -1
  12. package/dist/lib/otel-spans.d.ts +0 -2
  13. package/dist/lib/otel-spans.js +0 -2
  14. package/dist/loop/genai-spans.d.ts +14 -0
  15. package/dist/loop/genai-spans.js +35 -0
  16. package/dist/loop/run-agent.d.ts +1 -1
  17. package/dist/loop/run-agent.js +37 -4
  18. package/dist/runtime/assemble.d.ts +0 -3
  19. package/dist/runtime/assemble.js +0 -3
  20. package/dist/state/index.d.ts +0 -2
  21. package/dist/state/index.js +0 -1
  22. package/dist/state/init.js +1 -60
  23. package/dist/state/purge-analysis.d.ts +1 -2
  24. package/dist/state/purge-analysis.js +1 -2
  25. package/dist/tasks/regulatory-corpus-boot-refresh.js +1 -1
  26. package/dist/tools/bio/gene-preclinical-profile.d.ts +1 -3
  27. package/dist/tools/bio/gene-preclinical-profile.js +1 -3
  28. package/dist/tools/lib/chembl-client.d.ts +1 -4
  29. package/dist/tools/lib/chembl-client.js +1 -4
  30. package/dist/tools/lib/clinical-benchmarks-client.d.ts +1 -1
  31. package/dist/tools/lib/clinical-benchmarks-client.js +1 -1
  32. package/dist/tools/lib/clinical-trials-client.d.ts +0 -3
  33. package/dist/tools/lib/clinical-trials-client.js +0 -3
  34. package/dist/tools/lib/identifier-resolver.d.ts +5 -7
  35. package/dist/tools/lib/identifier-resolver.js +5 -7
  36. package/dist/tools/lib/iuphar-client.d.ts +1 -3
  37. package/dist/tools/lib/iuphar-client.js +1 -3
  38. package/dist/tools/lib/opentargets-client.d.ts +1 -1
  39. package/dist/tools/lib/opentargets-client.js +1 -1
  40. package/dist/tools/lib/protein-family-normalize.d.ts +5 -7
  41. package/dist/tools/lib/protein-family-normalize.js +5 -7
  42. package/dist/tools/lib/uniprot-client.d.ts +0 -7
  43. package/dist/tools/lib/uniprot-client.js +2 -9
  44. package/package.json +1 -1
  45. package/dist/contracts/target-assessment-row.d.ts +0 -85
  46. package/dist/contracts/target-assessment-row.js +0 -37
  47. package/dist/contracts/target-dossier.d.ts +0 -12423
  48. package/dist/contracts/target-dossier.js +0 -1282
  49. package/dist/prompts/target-assessment/briefs/executive-recommendation.d.ts +0 -1
  50. package/dist/prompts/target-assessment/briefs/executive-recommendation.js +0 -85
  51. package/dist/prompts/target-assessment/briefs/index.d.ts +0 -4
  52. package/dist/prompts/target-assessment/briefs/index.js +0 -4
  53. package/dist/prompts/target-assessment/briefs/liability-bullets.d.ts +0 -1
  54. package/dist/prompts/target-assessment/briefs/liability-bullets.js +0 -114
  55. package/dist/prompts/target-assessment/briefs/target-organ-liabilities.d.ts +0 -1
  56. package/dist/prompts/target-assessment/briefs/target-organ-liabilities.js +0 -37
  57. package/dist/prompts/target-assessment/briefs/translational-commentary.d.ts +0 -1
  58. package/dist/prompts/target-assessment/briefs/translational-commentary.js +0 -23
  59. package/dist/prompts/target-assessment/drugs-in-class.d.ts +0 -1
  60. package/dist/prompts/target-assessment/drugs-in-class.js +0 -29
  61. package/dist/prompts/target-assessment/investigation/adversarial-critique.d.ts +0 -1
  62. package/dist/prompts/target-assessment/investigation/adversarial-critique.js +0 -67
  63. package/dist/prompts/target-assessment/investigation/claim-reverification.d.ts +0 -1
  64. package/dist/prompts/target-assessment/investigation/claim-reverification.js +0 -49
  65. package/dist/prompts/target-assessment/investigation/index.d.ts +0 -3
  66. package/dist/prompts/target-assessment/investigation/index.js +0 -3
  67. package/dist/prompts/target-assessment/investigation/mechanism-proposal.d.ts +0 -1
  68. package/dist/prompts/target-assessment/investigation/mechanism-proposal.js +0 -49
  69. package/dist/prompts/target-assessment/modulator-triage.d.ts +0 -1
  70. package/dist/prompts/target-assessment/modulator-triage.js +0 -31
  71. package/dist/prompts/target-assessment/off-target-annotator.d.ts +0 -1
  72. package/dist/prompts/target-assessment/off-target-annotator.js +0 -28
  73. package/dist/prompts/target-assessment/tox-voice/core.d.ts +0 -1
  74. package/dist/prompts/target-assessment/tox-voice/core.js +0 -74
  75. package/dist/prompts/target-assessment/tox-voice/critique.d.ts +0 -7
  76. package/dist/prompts/target-assessment/tox-voice/critique.js +0 -109
  77. package/dist/prompts/target-assessment/tox-voice/exemplars.d.ts +0 -8
  78. package/dist/prompts/target-assessment/tox-voice/exemplars.js +0 -24
  79. package/dist/prompts/target-assessment/tox-voice/index.d.ts +0 -4
  80. package/dist/prompts/target-assessment/tox-voice/index.js +0 -4
  81. package/dist/prompts/target-assessment/tox-voice/vocabulary.d.ts +0 -18
  82. package/dist/prompts/target-assessment/tox-voice/vocabulary.js +0 -61
  83. package/dist/state/target-assessments.d.ts +0 -68
  84. package/dist/state/target-assessments.js +0 -222
  85. package/dist/workflows/execute-target-assessment.d.ts +0 -118
  86. package/dist/workflows/execute-target-assessment.js +0 -631
  87. package/dist/workflows/target-assessment/assemblers/index.d.ts +0 -5
  88. package/dist/workflows/target-assessment/assemblers/index.js +0 -4
  89. package/dist/workflows/target-assessment/assemblers/literature.d.ts +0 -281
  90. package/dist/workflows/target-assessment/assemblers/literature.js +0 -971
  91. package/dist/workflows/target-assessment/assemblers/orchestrator.d.ts +0 -118
  92. package/dist/workflows/target-assessment/assemblers/orchestrator.js +0 -945
  93. package/dist/workflows/target-assessment/assemblers/safety.d.ts +0 -374
  94. package/dist/workflows/target-assessment/assemblers/safety.js +0 -1068
  95. package/dist/workflows/target-assessment/assemblers/trials.d.ts +0 -30
  96. package/dist/workflows/target-assessment/assemblers/trials.js +0 -75
  97. package/dist/workflows/target-assessment/collectors/index.d.ts +0 -114
  98. package/dist/workflows/target-assessment/collectors/index.js +0 -538
  99. package/dist/workflows/target-assessment/coverage.d.ts +0 -97
  100. package/dist/workflows/target-assessment/coverage.js +0 -86
  101. package/dist/workflows/target-assessment/decisions/index.d.ts +0 -86
  102. package/dist/workflows/target-assessment/decisions/index.js +0 -127
  103. package/dist/workflows/target-assessment/fanout/index.d.ts +0 -32
  104. package/dist/workflows/target-assessment/fanout/index.js +0 -156
  105. package/dist/workflows/target-assessment/investigation/index.d.ts +0 -97
  106. package/dist/workflows/target-assessment/investigation/index.js +0 -419
  107. package/dist/workflows/target-assessment/lib/approval-precedents.d.ts +0 -73
  108. package/dist/workflows/target-assessment/lib/approval-precedents.js +0 -185
  109. package/dist/workflows/target-assessment/lib/citation-validator.d.ts +0 -46
  110. package/dist/workflows/target-assessment/lib/citation-validator.js +0 -316
  111. package/dist/workflows/target-assessment/lib/clinical-consequence-annotator.d.ts +0 -65
  112. package/dist/workflows/target-assessment/lib/clinical-consequence-annotator.js +0 -174
  113. package/dist/workflows/target-assessment/lib/clinical-evidence-attribution.d.ts +0 -44
  114. package/dist/workflows/target-assessment/lib/clinical-evidence-attribution.js +0 -152
  115. package/dist/workflows/target-assessment/lib/compute-derived.d.ts +0 -20
  116. package/dist/workflows/target-assessment/lib/compute-derived.js +0 -261
  117. package/dist/workflows/target-assessment/lib/compute-selectivity.d.ts +0 -15
  118. package/dist/workflows/target-assessment/lib/compute-selectivity.js +0 -18
  119. package/dist/workflows/target-assessment/lib/dedup-modulators.d.ts +0 -37
  120. package/dist/workflows/target-assessment/lib/dedup-modulators.js +0 -157
  121. package/dist/workflows/target-assessment/lib/evidence-conflict-detector.d.ts +0 -17
  122. package/dist/workflows/target-assessment/lib/evidence-conflict-detector.js +0 -100
  123. package/dist/workflows/target-assessment/lib/expression-constants.d.ts +0 -21
  124. package/dist/workflows/target-assessment/lib/expression-constants.js +0 -21
  125. package/dist/workflows/target-assessment/lib/family-complex-supplement.d.ts +0 -20
  126. package/dist/workflows/target-assessment/lib/family-complex-supplement.js +0 -36
  127. package/dist/workflows/target-assessment/lib/fda-label-safety.d.ts +0 -72
  128. package/dist/workflows/target-assessment/lib/fda-label-safety.js +0 -166
  129. package/dist/workflows/target-assessment/lib/heterodimer-filter.d.ts +0 -30
  130. package/dist/workflows/target-assessment/lib/heterodimer-filter.js +0 -44
  131. package/dist/workflows/target-assessment/lib/hpo-organ-map.d.ts +0 -34
  132. package/dist/workflows/target-assessment/lib/hpo-organ-map.js +0 -63
  133. package/dist/workflows/target-assessment/lib/impc-organ-map.d.ts +0 -19
  134. package/dist/workflows/target-assessment/lib/impc-organ-map.js +0 -39
  135. package/dist/workflows/target-assessment/lib/intended-polypharm-filter.d.ts +0 -4
  136. package/dist/workflows/target-assessment/lib/intended-polypharm-filter.js +0 -24
  137. package/dist/workflows/target-assessment/lib/llm-step.d.ts +0 -80
  138. package/dist/workflows/target-assessment/lib/llm-step.js +0 -101
  139. package/dist/workflows/target-assessment/lib/meddra-organ-map.d.ts +0 -40
  140. package/dist/workflows/target-assessment/lib/meddra-organ-map.js +0 -138
  141. package/dist/workflows/target-assessment/lib/recommendation-quality-gates.d.ts +0 -17
  142. package/dist/workflows/target-assessment/lib/recommendation-quality-gates.js +0 -99
  143. package/dist/workflows/target-assessment/lib/recommendation-sanitizer.d.ts +0 -2
  144. package/dist/workflows/target-assessment/lib/recommendation-sanitizer.js +0 -51
  145. package/dist/workflows/target-assessment/lib/regulatory-actions.d.ts +0 -25
  146. package/dist/workflows/target-assessment/lib/regulatory-actions.js +0 -176
  147. package/dist/workflows/target-assessment/lib/safety-corroboration.d.ts +0 -44
  148. package/dist/workflows/target-assessment/lib/safety-corroboration.js +0 -273
  149. package/dist/workflows/target-assessment/lib/structured-llm.d.ts +0 -61
  150. package/dist/workflows/target-assessment/lib/structured-llm.js +0 -102
  151. package/dist/workflows/target-assessment/lib/target-identity-filter.d.ts +0 -59
  152. package/dist/workflows/target-assessment/lib/target-identity-filter.js +0 -95
  153. package/dist/workflows/target-assessment/lib/therapeutic-programs.d.ts +0 -20
  154. package/dist/workflows/target-assessment/lib/therapeutic-programs.js +0 -68
  155. package/dist/workflows/target-assessment/metrics.d.ts +0 -16
  156. package/dist/workflows/target-assessment/metrics.js +0 -30
  157. package/dist/workflows/target-assessment/phase4-assemble.d.ts +0 -3182
  158. package/dist/workflows/target-assessment/phase4-assemble.js +0 -39
  159. package/dist/workflows/target-assessment/phase5-persist.d.ts +0 -59
  160. package/dist/workflows/target-assessment/phase5-persist.js +0 -349
  161. package/dist/workflows/target-assessment/progress-stream.d.ts +0 -75
  162. package/dist/workflows/target-assessment/progress-stream.js +0 -110
  163. package/dist/workflows/target-assessment/progress.d.ts +0 -39
  164. package/dist/workflows/target-assessment/progress.js +0 -77
  165. package/dist/workflows/target-assessment/schemas.d.ts +0 -970
  166. package/dist/workflows/target-assessment/schemas.js +0 -318
  167. package/dist/workflows/target-assessment/steps/collectors/pathways.d.ts +0 -15
  168. package/dist/workflows/target-assessment/steps/collectors/pathways.js +0 -58
  169. package/dist/workflows/target-assessment/steps/fanout/aes-for-one-class-drug-step.d.ts +0 -34
  170. package/dist/workflows/target-assessment/steps/fanout/aes-for-one-class-drug-step.js +0 -31
  171. package/dist/workflows/target-assessment/steps/fanout/aes-for-one-trial-step.d.ts +0 -57
  172. package/dist/workflows/target-assessment/steps/fanout/aes-for-one-trial-step.js +0 -54
  173. package/dist/workflows/target-assessment/steps/fanout/faers-for-one-modulator-step.d.ts +0 -35
  174. package/dist/workflows/target-assessment/steps/fanout/faers-for-one-modulator-step.js +0 -32
  175. package/dist/workflows/target-assessment/steps/fanout/index.d.ts +0 -14
  176. package/dist/workflows/target-assessment/steps/fanout/index.js +0 -10
  177. package/dist/workflows/target-assessment/steps/fanout/polypharm-for-one-modulator-step.d.ts +0 -29
  178. package/dist/workflows/target-assessment/steps/fanout/polypharm-for-one-modulator-step.js +0 -29
  179. package/dist/workflows/target-assessment/steps/phase2-aggregate.d.ts +0 -657
  180. package/dist/workflows/target-assessment/steps/phase2-aggregate.js +0 -34
  181. package/dist/workflows/target-assessment/steps/phase3-aggregate.d.ts +0 -806
  182. package/dist/workflows/target-assessment/steps/phase3-aggregate.js +0 -16
  183. package/dist/workflows/target-assessment/steps/synthesis/diagnostics.d.ts +0 -28
  184. package/dist/workflows/target-assessment/steps/synthesis/diagnostics.js +0 -27
  185. package/dist/workflows/target-assessment/sub-workflows/index.d.ts +0 -15
  186. package/dist/workflows/target-assessment/sub-workflows/index.js +0 -11
  187. package/dist/workflows/target-assessment/sub-workflows/per-class-drug-aes.d.ts +0 -41
  188. package/dist/workflows/target-assessment/sub-workflows/per-class-drug-aes.js +0 -12
  189. package/dist/workflows/target-assessment/sub-workflows/per-modulator-faers.d.ts +0 -41
  190. package/dist/workflows/target-assessment/sub-workflows/per-modulator-faers.js +0 -12
  191. package/dist/workflows/target-assessment/sub-workflows/per-modulator-polypharm.d.ts +0 -37
  192. package/dist/workflows/target-assessment/sub-workflows/per-modulator-polypharm.js +0 -12
  193. package/dist/workflows/target-assessment/sub-workflows/per-trial-aes.d.ts +0 -66
  194. package/dist/workflows/target-assessment/sub-workflows/per-trial-aes.js +0 -12
  195. package/dist/workflows/target-assessment/synthesis/index.d.ts +0 -607
  196. package/dist/workflows/target-assessment/synthesis/index.js +0 -354
  197. package/dist/workflows/target-assessment/synthesis-probes.d.ts +0 -56
  198. package/dist/workflows/target-assessment/synthesis-probes.js +0 -320
@@ -1,374 +0,0 @@
1
- /**
2
- * Phase-4 deterministic assemblers — safety sections.
3
- *
4
- * Each assembler maps Phase-1 / Phase-2 / Phase-3 outputs onto the
5
- * corresponding dossier section schema. Coverage is honored end-to-end:
6
- * when an upstream came back `queried_no_data` or the derived row set is
7
- * empty, the section is marked `queried_no_data` / `not_loaded` rather
8
- * than fabricated. Aggregate rows preserve their contributing evidence
9
- * under `evidence: [...]` arrays.
10
- */
11
- import type { ClaimSupport, EvidenceItem, RegulatoryActionRow, RegulatoryOrganSignals } from "@inflexa-ai/harness/contracts/target-dossier.js";
12
- import { type OrganSignalProjection } from "../lib/fda-label-safety.js";
13
- import { type OrganSystem } from "../../../contracts/organ-system.js";
14
- import type { Phase2Bundle } from "../steps/phase2-aggregate.js";
15
- import type { Phase3Bundle } from "../steps/phase3-aggregate.js";
16
- import type { FamilyComplexesBundle } from "../schemas.js";
17
- import { HIGH_EXPRESSION_TPM_THRESHOLD } from "../lib/expression-constants.js";
18
- export { HIGH_EXPRESSION_TPM_THRESHOLD };
19
- import type { ChemblModulator } from "../../../tools/lib/chembl-client.js";
20
- export declare const SAFETY_RELEVANT_ORGANS: Set<string>;
21
- /**
22
- * Resolve a tissue (and its atlas organ label, when present) onto the
23
- * canonical organ vocabulary. Returns null when the anatomy has no organ
24
- * system to belong to — the caller drops the row rather than filing it
25
- * under a neighbouring organ.
26
- */
27
- export declare function resolveTissueOrganSystem(tissue: string, organ?: string | null): OrganSystem | null;
28
- export declare function isSafetyRelevant(tissue: string, organ?: string | null): boolean;
29
- export declare const REPRODUCTIVE_TOX_TISSUES: Set<string>;
30
- export declare const REPRODUCTIVE_TOX_TPM_FLOOR = 20;
31
- export declare const DEFAULT_TPM_FLOOR = 100;
32
- export declare function meetsTpmFloor(tissue: string, value: number): boolean;
33
- export declare function assembleLiabilitySummary(phase2: Phase2Bundle, context: {
34
- offTargetRows: OffTargetPanelRows | null;
35
- preferredModality: string | null;
36
- }): {
37
- liability_bullets: never[];
38
- modality_recommendation: string | null;
39
- same_class_drug_count: number;
40
- inferred_therapeutic_area: string | null;
41
- no_liabilities_disclosure: string;
42
- };
43
- type FanoutResults = Phase3Bundle["fanout"];
44
- export declare function aggregateFaersAcrossModulators(fanout: FanoutResults | undefined): {
45
- total_reports: number;
46
- seriousness: {
47
- coverage: "available";
48
- total_reports: number;
49
- by_seriousness: {
50
- death: number;
51
- life_threatening: number;
52
- hospitalization: number;
53
- disabling: number;
54
- other_serious: number;
55
- congenital_anomaly: number;
56
- };
57
- fatal_report_count: number;
58
- } | {
59
- coverage: "queried_no_data";
60
- total_reports: number;
61
- by_seriousness?: undefined;
62
- fatal_report_count?: undefined;
63
- };
64
- top_signals: {
65
- meddra_term: string;
66
- organ: "hematologic" | "metabolic" | "immune" | "hepatic" | "musculoskeletal" | "cns" | "renal" | "reproductive" | "respiratory" | "cardiac" | "vascular" | "pns" | "gi" | "pancreas" | "endocrine_thyroid" | "dermatologic" | "ocular" | "oncology" | undefined;
67
- report_count: number;
68
- }[];
69
- per_modulator: {
70
- modulator: string;
71
- modulator_id: string | null;
72
- report_count: number;
73
- coverage: "available" | "queried_no_data" | "not_loaded";
74
- }[];
75
- } | null;
76
- export declare function aggregateTrialAes(fanout: FanoutResults | undefined): {
77
- serious: {
78
- term: string;
79
- incidence_pct: number;
80
- organ?: string;
81
- nct_ids: string[];
82
- }[];
83
- non_serious: {
84
- term: string;
85
- incidence_pct: number;
86
- organ?: string;
87
- nct_ids: string[];
88
- }[];
89
- non_serious_floor_pct: number;
90
- dropped_uninformative_count: number;
91
- coverage_qualifier: {
92
- trials_queried: number;
93
- trials_with_ae_data: number;
94
- serious_floor_applied: number;
95
- non_serious_floor_pct_applied: number;
96
- };
97
- } | null;
98
- /** Fold below this threshold → selectivity window is insufficient. */
99
- export declare const SELECTIVITY_FOLD_THRESHOLD = 30;
100
- export type RawOffTargetRow = {
101
- off_target_id?: string | null;
102
- off_target_name?: string | null;
103
- target_chembl_id?: string | null;
104
- target_type?: string | null;
105
- accession?: string | null;
106
- pchembl: number;
107
- selectivity: {
108
- fold: number;
109
- log_units: number;
110
- };
111
- selectivity_window_below_threshold?: boolean;
112
- evidence?: EvidenceItem[];
113
- organ_system?: OrganSystem | null;
114
- target_class?: string | undefined;
115
- is_safety_panel_target?: boolean;
116
- clinical_consequence?: string | null;
117
- metadata?: {
118
- merged_chembl_ids?: string[];
119
- };
120
- };
121
- export type CleanOffTargetRow = Omit<RawOffTargetRow, "target_chembl_id" | "target_type" | "accession" | "off_target_id" | "organ_system" | "evidence"> & {
122
- off_target_id: string | null;
123
- off_target_name: string;
124
- organ_system: OrganSystem | null;
125
- evidence: EvidenceItem[];
126
- selectivity_window_below_threshold: boolean;
127
- clinical_consequence: string | null;
128
- is_safety_panel_target: boolean;
129
- metadata: {
130
- merged_chembl_ids: string[];
131
- };
132
- };
133
- /**
134
- * Off-target row shape after relationship classification. Used by the
135
- * organ-rollup builder, evidence tally, and liability-summary signal count —
136
- * the typed members all rely on `relationship`, `organ_system`, `pchembl`,
137
- * `support`, and `is_safety_panel_target` only.
138
- */
139
- export type OffTargetPanelRows = Array<{
140
- off_target_id: string | null;
141
- off_target_name: string;
142
- pchembl: number;
143
- is_safety_panel_target: boolean;
144
- organ_system: OrganSystem | null;
145
- support: ClaimSupport;
146
- relationship: "off_target";
147
- }>;
148
- /**
149
- * Partition evidence into what a claim can stand on: an item resolves to a
150
- * record a reader can check, or it does not. A claim with nothing checkable
151
- * says so rather than presenting provenance labels as citations.
152
- */
153
- export declare function claimSupportFrom(evidence: EvidenceItem[], reasonWhenUnsupported: string): ClaimSupport;
154
- /** The evidence behind a claim, or nothing when the claim states it has none. */
155
- export declare function claimSupportEvidence(support: ClaimSupport): EvidenceItem[];
156
- /**
157
- * Turn segmented FDA label warnings into the dossier's per-organ regulatory
158
- * signal section.
159
- *
160
- * The organ-resolution filter can legitimately empty this section: a set of
161
- * labels whose every warning fragment names no canonical organ produces no
162
- * rows. That is `filtered` with the count it discarded, never an `available`
163
- * section with an empty list — the difference is whether a reader learns that
164
- * signals existed and did not survive attribution.
165
- */
166
- export declare function assembleRegulatoryOrganSignals(projection: OrganSignalProjection | null): RegulatoryOrganSignals;
167
- /**
168
- * Filter and deduplicate raw off-target rows before panel assembly.
169
- *
170
- * Removes: on-target self-rows, cell-line entries, sentinel/unresolved names.
171
- * Deduplicates: by UniProt accession when present, otherwise by normalized name;
172
- * keeps the highest-pchembl row as the winner and records merged ChEMBL ids.
173
- * Computes: `selectivity_window_below_threshold`, `clinical_consequence`,
174
- * `is_safety_panel_target` (via the existing safety-panel lookup).
175
- */
176
- export declare function filterAndDedupOffTargetRows(rows: RawOffTargetRow[], ctx: {
177
- assessmentTargetChemblId: string | null;
178
- }): CleanOffTargetRow[];
179
- /**
180
- * Off-target panel row split. Each clean off-target row is classified as:
181
- * - `on_target_self_hit`: alternate ChEMBL ID for the assessment target itself
182
- * - `intended_co_target`: every modulator that hits this target intends it
183
- * (e.g., GLP1R + GIPR for tirzepatide); not an off-target liability
184
- * - `off_target`: real off-target — selectivity computed vs primary potency
185
- */
186
- export declare function aggregateOffTargetPanel(phase2: Phase2Bundle, fanout: FanoutResults | undefined, assessmentUniprot: string, assessmentGeneSymbol?: string, familyComplexes?: FamilyComplexesBundle | null, onTargetChemblIds?: string[]): {
187
- rows: {
188
- off_target_id: string | null;
189
- off_target_name: string;
190
- pchembl: number;
191
- is_safety_panel_target: boolean;
192
- organ_system: "hematologic" | "metabolic" | "immune" | "hepatic" | "musculoskeletal" | "cns" | "renal" | "reproductive" | "respiratory" | "cardiac" | "vascular" | "pns" | "gi" | "pancreas" | "endocrine_thyroid" | "dermatologic" | "ocular" | "oncology" | null;
193
- clinical_consequence: string | null;
194
- selectivity: {
195
- vs_primary_potency: {
196
- primary_pchembl_used: number;
197
- primary_source: "chembl_target_drug_indication" | "literature_curated";
198
- fold: number;
199
- log_units: number;
200
- };
201
- } | {
202
- selectivity_unknown: true;
203
- reason: string;
204
- };
205
- selectivity_window_below_threshold: boolean;
206
- relationship: "off_target";
207
- support: {
208
- state: "scored";
209
- evidence: {
210
- source: string;
211
- pmid?: string | undefined;
212
- doi?: string | undefined;
213
- accession?: string | undefined;
214
- predicate?: string | undefined;
215
- score?: number | undefined;
216
- strength?: string | undefined;
217
- is_human?: boolean | undefined;
218
- is_clinical?: boolean | undefined;
219
- excerpt?: string | undefined;
220
- metadata?: Record<string, unknown> | undefined;
221
- regulatory_reference?: {
222
- document: string;
223
- section?: string | undefined;
224
- doc_id?: string | undefined;
225
- doc_url?: string | undefined;
226
- } | undefined;
227
- }[];
228
- } | {
229
- state: "unknown";
230
- reason: string;
231
- };
232
- target_class?: string | undefined;
233
- metadata?: {
234
- merged_chembl_ids?: string[] | undefined;
235
- } | undefined;
236
- }[];
237
- excluded_rows: {
238
- off_target_id: string | null;
239
- off_target_name: string;
240
- pchembl: number;
241
- is_safety_panel_target: boolean;
242
- organ_system: "hematologic" | "metabolic" | "immune" | "hepatic" | "musculoskeletal" | "cns" | "renal" | "reproductive" | "respiratory" | "cardiac" | "vascular" | "pns" | "gi" | "pancreas" | "endocrine_thyroid" | "dermatologic" | "ocular" | "oncology" | null;
243
- clinical_consequence: string | null;
244
- selectivity: {
245
- vs_primary_potency: {
246
- primary_pchembl_used: number;
247
- primary_source: "chembl_target_drug_indication" | "literature_curated";
248
- fold: number;
249
- log_units: number;
250
- };
251
- } | {
252
- selectivity_unknown: true;
253
- reason: string;
254
- };
255
- selectivity_window_below_threshold: boolean;
256
- relationship: "intended_co_target" | "on_target_self_hit" | "obligate_cofactor";
257
- reason: string;
258
- evidence: {
259
- source: string;
260
- pmid?: string | undefined;
261
- doi?: string | undefined;
262
- accession?: string | undefined;
263
- predicate?: string | undefined;
264
- score?: number | undefined;
265
- strength?: string | undefined;
266
- is_human?: boolean | undefined;
267
- is_clinical?: boolean | undefined;
268
- excerpt?: string | undefined;
269
- metadata?: Record<string, unknown> | undefined;
270
- regulatory_reference?: {
271
- document: string;
272
- section?: string | undefined;
273
- doc_id?: string | undefined;
274
- doc_url?: string | undefined;
275
- } | undefined;
276
- }[];
277
- target_class?: string | undefined;
278
- metadata?: {
279
- merged_chembl_ids?: string[] | undefined;
280
- } | undefined;
281
- }[];
282
- } | null;
283
- /** Minimum distinct active substances required for class-liability designation. */
284
- export declare const CLASS_MIN_DRUGS = 3;
285
- export declare const CLASS_LIABILITY_FRACTION = 0.3;
286
- export type ClassDrug = {
287
- drug_id: string;
288
- parent_chembl_id: string | null;
289
- drug_name: string;
290
- max_phase: number;
291
- };
292
- /**
293
- * Deduplicates a list of drugs by active substance (parent_chembl_id, falling
294
- * back to drug_id when parent is absent), then derives the count and suppression
295
- * reason used consistently across drugs_in_class and per_organ rollups.
296
- *
297
- * Dedup winner per group: highest max_phase; ties broken by drug_id lexicographic
298
- * order so the result is deterministic.
299
- */
300
- export declare function computeClassPrecedentCounts(drugs: ClassDrug[]): {
301
- drug_count_in_class: number;
302
- drugs_in_class: ClassDrug[];
303
- suppressed_reason: string | null;
304
- };
305
- export declare function aggregateClassPrecedent(phase2: Phase2Bundle, fanout: FanoutResults | undefined): {
306
- drugs_in_class: ClassDrug[];
307
- per_organ: {
308
- organ: "hematologic" | "metabolic" | "immune" | "hepatic" | "musculoskeletal" | "cns" | "renal" | "reproductive" | "respiratory" | "cardiac" | "vascular" | "pns" | "gi" | "pancreas" | "endocrine_thyroid" | "dermatologic" | "ocular" | "oncology";
309
- drug_count_in_class: number;
310
- drugs_with_signal: number;
311
- signal_fraction: number;
312
- is_class_liability: boolean;
313
- suppressed_reason: string | null;
314
- top_aes: {
315
- term: string;
316
- report_count: number;
317
- }[];
318
- }[];
319
- } | null;
320
- export declare function buildOrganRollup(faers: ReturnType<typeof aggregateFaersAcrossModulators>, trialAes: ReturnType<typeof aggregateTrialAes>, offTarget: OffTargetPanelRows | null, classP: ReturnType<typeof aggregateClassPrecedent>, regulatoryActions?: RegulatoryActionRow[] | null): {
321
- organ: "hematologic" | "metabolic" | "immune" | "hepatic" | "musculoskeletal" | "cns" | "renal" | "reproductive" | "respiratory" | "cardiac" | "vascular" | "pns" | "gi" | "pancreas" | "endocrine_thyroid" | "dermatologic" | "ocular" | "oncology";
322
- risk_level: "low" | "medium" | "high";
323
- signal_type_count: number;
324
- signals: {
325
- chembl_polypharm_count: number;
326
- faers_count: number;
327
- trial_ae_count: number;
328
- class_liability_present: boolean;
329
- };
330
- evidence: {
331
- source: string;
332
- pmid?: string | undefined;
333
- doi?: string | undefined;
334
- accession?: string | undefined;
335
- predicate?: string | undefined;
336
- score?: number | undefined;
337
- strength?: string | undefined;
338
- is_human?: boolean | undefined;
339
- is_clinical?: boolean | undefined;
340
- excerpt?: string | undefined;
341
- metadata?: Record<string, unknown> | undefined;
342
- regulatory_reference?: {
343
- document: string;
344
- section?: string | undefined;
345
- doc_id?: string | undefined;
346
- doc_url?: string | undefined;
347
- } | undefined;
348
- }[];
349
- }[] | null;
350
- export declare function assembleDrugInteractions(phase2: Phase2Bundle, enrichedModulators?: ChemblModulator[]): {
351
- drug_id: string;
352
- drug_name: string;
353
- best_score: number;
354
- predicates: string[];
355
- sources: string[];
356
- paper_count: number;
357
- dominant_direction: "unknown";
358
- has_human_evidence: boolean;
359
- has_clinical_evidence: boolean;
360
- evidence: {
361
- source: string;
362
- predicate: string;
363
- score: number;
364
- is_clinical: boolean;
365
- is_human: boolean;
366
- metadata: {
367
- chembl_id: string;
368
- max_phase: number;
369
- molecule_type: string | null;
370
- first_approval: number | null;
371
- triage_rationale: string | undefined;
372
- };
373
- }[];
374
- }[] | null;