@inflexa-ai/harness 0.45.0 → 0.46.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 (802) hide show
  1. package/README.md +6 -3
  2. package/dist/agents/conversation-agent.d.ts +19 -3
  3. package/dist/agents/conversation-agent.js +49 -30
  4. package/dist/agents/report-session-agent.d.ts +15 -15
  5. package/dist/agents/report-session-agent.js +23 -15
  6. package/dist/agents/sandbox/index.d.ts +1 -1
  7. package/dist/agents/sandbox/index.js +1 -1
  8. package/dist/agents/sandbox/shared.d.ts +35 -16
  9. package/dist/agents/sandbox/shared.js +63 -24
  10. package/dist/agents/sandbox/translational-safety-agent.js +26 -0
  11. package/dist/agents/sandbox/types.d.ts +26 -3
  12. package/dist/agents/sandbox/validate-skills.d.ts +2 -2
  13. package/dist/agents/sandbox/validate-skills.js +3 -1
  14. package/dist/agents/sandbox-catalog.d.ts +16 -2
  15. package/dist/agents/sandbox-catalog.js +22 -3
  16. package/dist/agents/system-prompt.d.ts +2 -2
  17. package/dist/app/approve-plan.d.ts +5 -2
  18. package/dist/app/approve-plan.js +1 -1
  19. package/dist/app/chat-turn-workflow.d.ts +114 -0
  20. package/dist/app/chat-turn-workflow.js +307 -0
  21. package/dist/app/chat-turn.d.ts +85 -57
  22. package/dist/app/chat-turn.js +125 -99
  23. package/dist/app/data-profile-orientation.js +10 -8
  24. package/dist/app/data-profile-view.d.ts +4 -4
  25. package/dist/app/data-profile-view.js +9 -8
  26. package/dist/app/in-process-turn.d.ts +42 -0
  27. package/dist/app/in-process-turn.js +139 -0
  28. package/dist/app/message-assembly.d.ts +10 -4
  29. package/dist/app/message-assembly.js +13 -8
  30. package/dist/app/report-session-runtime.d.ts +4 -4
  31. package/dist/app/report-session-runtime.js +36 -21
  32. package/dist/app/spawn-report-session.d.ts +33 -28
  33. package/dist/app/spawn-report-session.js +25 -40
  34. package/dist/app/synthesize-run.d.ts +22 -16
  35. package/dist/app/synthesize-run.js +41 -35
  36. package/dist/app/work.d.ts +96 -0
  37. package/dist/app/work.js +147 -0
  38. package/dist/auth/local-auth-context.d.ts +1 -3
  39. package/dist/auth/local-auth-context.js +1 -3
  40. package/dist/auth/local-run-authorizer.d.ts +1 -1
  41. package/dist/auth/local-run-authorizer.js +5 -3
  42. package/dist/auth/types.d.ts +26 -26
  43. package/dist/billing/cached-resolver.d.ts +4 -4
  44. package/dist/billing/run-charge.d.ts +5 -8
  45. package/dist/billing/run-charge.js +2 -2
  46. package/dist/billing/usage-recorder.d.ts +9 -9
  47. package/dist/citations/aggregate.js +1 -1
  48. package/dist/citations/clients/arxiv.d.ts +2 -2
  49. package/dist/citations/clients/arxiv.js +12 -4
  50. package/dist/citations/clients/common.js +4 -2
  51. package/dist/citations/clients/crossref.d.ts +2 -2
  52. package/dist/citations/clients/crossref.js +37 -37
  53. package/dist/citations/clients/doi-registry.js +15 -16
  54. package/dist/citations/clients/pubmed.d.ts +2 -2
  55. package/dist/citations/clients/pubmed.js +20 -13
  56. package/dist/citations/clients/semantic-scholar.d.ts +2 -2
  57. package/dist/citations/clients/semantic-scholar.js +9 -9
  58. package/dist/citations/compare.js +2 -2
  59. package/dist/citations/match.d.ts +2 -2
  60. package/dist/citations/match.js +12 -7
  61. package/dist/citations/normalize.js +35 -26
  62. package/dist/citations/plan.js +6 -2
  63. package/dist/citations/resolve.d.ts +6 -6
  64. package/dist/citations/resolve.js +34 -25
  65. package/dist/citations/types.d.ts +77 -77
  66. package/dist/config/environment-stores.d.ts +10 -8
  67. package/dist/config/resource-limits.js +1 -3
  68. package/dist/contracts/analogy-report.d.ts +7 -7
  69. package/dist/contracts/analogy-report.js +2 -2
  70. package/dist/contracts/chat-events.d.ts +46 -22
  71. package/dist/contracts/chat-events.js +1 -1
  72. package/dist/contracts/chat-frame.d.ts +15 -5
  73. package/dist/contracts/chat-frame.js +67 -40
  74. package/dist/contracts/chat-parts.d.ts +130 -67
  75. package/dist/contracts/chat-parts.js +1 -0
  76. package/dist/contracts/content-url.js +16 -2
  77. package/dist/contracts/data-profile.d.ts +38 -38
  78. package/dist/contracts/index.d.ts +3 -3
  79. package/dist/contracts/index.js +1 -1
  80. package/dist/contracts/message.d.ts +6 -6
  81. package/dist/contracts/organ-system.d.ts +11 -11
  82. package/dist/contracts/part-registry.d.ts +5 -4
  83. package/dist/contracts/part-registry.js +5 -0
  84. package/dist/contracts/profile-vocabulary.d.ts +11 -10
  85. package/dist/contracts/profile-vocabulary.js +10 -3
  86. package/dist/contracts/report-blocks.d.ts +329 -329
  87. package/dist/contracts/report-reference.d.ts +105 -81
  88. package/dist/contracts/report-reference.js +30 -13
  89. package/dist/contracts/schemas/chat-events.d.ts +45 -6
  90. package/dist/contracts/schemas/chat-events.js +16 -0
  91. package/dist/contracts/schemas/chat-parts.d.ts +214 -102
  92. package/dist/contracts/schemas/chat-parts.js +50 -7
  93. package/dist/contracts/schemas/index.d.ts +1 -1
  94. package/dist/contracts/schemas/index.js +1 -1
  95. package/dist/contracts/severity.d.ts +1 -1
  96. package/dist/contracts/structure-source.d.ts +3 -3
  97. package/dist/contracts/structure-source.js +6 -2
  98. package/dist/contracts/subagent-activity.d.ts +2 -2
  99. package/dist/contracts/subagent-activity.js +5 -3
  100. package/dist/contracts/usage.d.ts +2 -2
  101. package/dist/data/safety-panel-schema.d.ts +25 -25
  102. package/dist/data/safety-panel-schema.js +13 -4
  103. package/dist/execution/artifact-metadata.d.ts +23 -15
  104. package/dist/execution/artifact-metadata.js +33 -10
  105. package/dist/execution/artifact-record.d.ts +2 -2
  106. package/dist/execution/artifact-registration.d.ts +5 -5
  107. package/dist/execution/artifact-registry.d.ts +8 -8
  108. package/dist/execution/dbos-run-launcher.d.ts +24 -4
  109. package/dist/execution/dbos-run-launcher.js +58 -4
  110. package/dist/execution/dbos-workflow-purger.d.ts +7 -6
  111. package/dist/execution/dbos-workflow-purger.js +29 -21
  112. package/dist/execution/input-signature.d.ts +2 -2
  113. package/dist/execution/post-step-pipeline.d.ts +9 -9
  114. package/dist/execution/post-step-pipeline.js +1 -1
  115. package/dist/execution/post-step.js +2 -2
  116. package/dist/execution/reconcile-manifest.d.ts +4 -4
  117. package/dist/execution/reconcile-manifest.js +3 -2
  118. package/dist/execution/run-authorizer.d.ts +46 -37
  119. package/dist/execution/run-authorizer.js +8 -8
  120. package/dist/execution/run-canceler.d.ts +39 -17
  121. package/dist/execution/run-canceler.js +137 -28
  122. package/dist/execution/run-end-record.d.ts +29 -0
  123. package/dist/execution/run-end-record.js +27 -0
  124. package/dist/execution/run-event-parts.d.ts +0 -8
  125. package/dist/execution/run-event-parts.js +29 -24
  126. package/dist/execution/run-event-stream.d.ts +8 -8
  127. package/dist/execution/run-event-stream.js +3 -4
  128. package/dist/execution/run-launcher.d.ts +4 -4
  129. package/dist/execution/run-synthesis.d.ts +49 -48
  130. package/dist/execution/run-synthesis.js +96 -255
  131. package/dist/execution/staged-input.d.ts +2 -2
  132. package/dist/execution/step-summary.d.ts +6 -6
  133. package/dist/execution/step-summary.js +4 -8
  134. package/dist/execution/topo-sort.js +4 -3
  135. package/dist/execution/workflow-purger.d.ts +2 -2
  136. package/dist/index.d.ts +25 -24
  137. package/dist/index.js +36 -37
  138. package/dist/input-sanitization.js +9 -2
  139. package/dist/input-scan/clustering.d.ts +6 -6
  140. package/dist/input-scan/clustering.js +11 -5
  141. package/dist/input-scan/companions.js +3 -2
  142. package/dist/input-scan/detect-sets.d.ts +2 -2
  143. package/dist/input-scan/detect-sets.js +25 -21
  144. package/dist/input-scan/enrich.d.ts +6 -6
  145. package/dist/input-scan/enrich.js +29 -12
  146. package/dist/input-scan/formats.d.ts +2 -2
  147. package/dist/input-scan/formats.js +8 -2
  148. package/dist/input-scan/markers.d.ts +2 -2
  149. package/dist/input-scan/markers.js +14 -5
  150. package/dist/input-scan/menu.d.ts +10 -10
  151. package/dist/input-scan/menu.js +0 -0
  152. package/dist/input-scan/quarantine.d.ts +2 -2
  153. package/dist/input-scan/quarantine.js +23 -18
  154. package/dist/input-scan/readout-budget.d.ts +2 -2
  155. package/dist/input-scan/readout-budget.js +1 -1
  156. package/dist/input-scan/readout.d.ts +2 -2
  157. package/dist/input-scan/readout.js +47 -34
  158. package/dist/input-scan/scan.d.ts +2 -2
  159. package/dist/input-scan/scan.js +7 -5
  160. package/dist/input-scan/set-types.d.ts +28 -28
  161. package/dist/input-scan/shapes.d.ts +4 -4
  162. package/dist/input-scan/shapes.js +0 -0
  163. package/dist/input-scan/templates.d.ts +10 -10
  164. package/dist/input-scan/templates.js +30 -22
  165. package/dist/input-scan/tokens.d.ts +6 -4
  166. package/dist/input-scan/tokens.js +100 -38
  167. package/dist/input-scan/types.d.ts +22 -22
  168. package/dist/lib/async-utils.d.ts +3 -7
  169. package/dist/lib/async-utils.js +5 -9
  170. package/dist/lib/cache.js +1 -1
  171. package/dist/lib/chrome.d.ts +46 -6
  172. package/dist/lib/console-logger.js +2 -2
  173. package/dist/lib/db-result.d.ts +22 -6
  174. package/dist/lib/db-result.js +9 -13
  175. package/dist/lib/eyes.d.ts +4 -4
  176. package/dist/lib/eyes.js +1 -1
  177. package/dist/lib/fs-helpers.js +18 -6
  178. package/dist/lib/fs-result.d.ts +1 -0
  179. package/dist/lib/fs-result.js +5 -6
  180. package/dist/lib/hooks.d.ts +23 -7
  181. package/dist/lib/hooks.js +17 -3
  182. package/dist/lib/host-concurrency.js +3 -2
  183. package/dist/lib/logger.d.ts +2 -2
  184. package/dist/lib/logger.js +2 -1
  185. package/dist/lib/metrics.d.ts +1 -1
  186. package/dist/lib/null-proto.d.ts +6 -0
  187. package/dist/lib/null-proto.js +17 -0
  188. package/dist/lib/otel-spans.d.ts +1 -1
  189. package/dist/lib/otel-spans.js +9 -5
  190. package/dist/lib/otel.d.ts +4 -2
  191. package/dist/lib/otel.js +10 -2
  192. package/dist/lib/page-capture.d.ts +8 -8
  193. package/dist/lib/page-capture.js +9 -4
  194. package/dist/lib/parse-json.d.ts +5 -0
  195. package/dist/lib/parse-json.js +12 -0
  196. package/dist/lib/present.d.ts +12 -0
  197. package/dist/lib/present.js +39 -0
  198. package/dist/lib/rate-limit.d.ts +4 -4
  199. package/dist/lib/rate-limit.js +12 -13
  200. package/dist/lib/regulatory-corpus/fetch-fda-guidance.d.ts +4 -4
  201. package/dist/lib/regulatory-corpus/fetch-fda-guidance.js +4 -10
  202. package/dist/lib/regulatory-corpus/fetch-ich.d.ts +4 -4
  203. package/dist/lib/regulatory-corpus/fetch-ich.js +18 -14
  204. package/dist/lib/regulatory-corpus/normalize-whitespace.d.ts +6 -0
  205. package/dist/lib/regulatory-corpus/normalize-whitespace.js +41 -0
  206. package/dist/lib/regulatory-corpus.d.ts +10 -10
  207. package/dist/lib/regulatory-corpus.js +3 -1
  208. package/dist/lib/result.d.ts +10 -11
  209. package/dist/lib/result.js +15 -13
  210. package/dist/lib/storage.d.ts +2 -2
  211. package/dist/lib/test/async-iterable.d.ts +9 -0
  212. package/dist/lib/test/async-iterable.js +28 -0
  213. package/dist/lib/test/request-url.d.ts +5 -0
  214. package/dist/lib/test/request-url.js +7 -0
  215. package/dist/lib/test/result-assert.d.ts +12 -0
  216. package/dist/lib/test/result-assert.js +17 -0
  217. package/dist/lib/test/text-shapes.d.ts +24 -0
  218. package/dist/lib/test/text-shapes.js +63 -0
  219. package/dist/lib/text.d.ts +22 -0
  220. package/dist/lib/text.js +68 -0
  221. package/dist/lib/thrown.d.ts +18 -0
  222. package/dist/lib/thrown.js +30 -0
  223. package/dist/lib/unknown-array.d.ts +6 -0
  224. package/dist/lib/unknown-array.js +8 -0
  225. package/dist/lib/unknown-containers.d.ts +14 -0
  226. package/dist/lib/unknown-containers.js +17 -0
  227. package/dist/lib/unknown-text.d.ts +8 -0
  228. package/dist/lib/unknown-text.js +28 -0
  229. package/dist/lib/zod-issue-shape.d.ts +1 -1
  230. package/dist/lib/zod-issue-shape.js +31 -31
  231. package/dist/lib/zod-issues.d.ts +3 -3
  232. package/dist/lib/zod-issues.js +30 -17
  233. package/dist/literature/sources/arxiv.d.ts +6 -6
  234. package/dist/literature/sources/arxiv.js +92 -35
  235. package/dist/literature/sources/http.d.ts +2 -2
  236. package/dist/literature/sources/http.js +16 -15
  237. package/dist/literature/sources/pubmed.d.ts +16 -16
  238. package/dist/literature/sources/pubmed.js +96 -61
  239. package/dist/literature/sources/semantic-scholar.d.ts +8 -8
  240. package/dist/literature/sources/semantic-scholar.js +22 -13
  241. package/dist/loop/accounting.d.ts +63 -0
  242. package/dist/loop/accounting.js +141 -0
  243. package/dist/loop/call-policy.d.ts +73 -0
  244. package/dist/loop/call-policy.js +109 -0
  245. package/dist/loop/chat-stream.d.ts +62 -0
  246. package/dist/loop/chat-stream.js +237 -0
  247. package/dist/loop/compaction.d.ts +14 -9
  248. package/dist/loop/compaction.js +17 -0
  249. package/dist/loop/metrics.d.ts +12 -15
  250. package/dist/loop/metrics.js +14 -26
  251. package/dist/loop/run-loop.d.ts +233 -0
  252. package/dist/loop/run-loop.js +770 -0
  253. package/dist/loop/sub-agent.d.ts +61 -0
  254. package/dist/loop/sub-agent.js +161 -0
  255. package/dist/loop/tool-adapter.d.ts +98 -0
  256. package/dist/loop/tool-adapter.js +364 -0
  257. package/dist/loop/tool-detail.d.ts +1 -1
  258. package/dist/loop/tool-detail.js +6 -5
  259. package/dist/loop/tool-outcome.d.ts +1 -1
  260. package/dist/loop/tool-output.d.ts +4 -4
  261. package/dist/loop/tool-output.js +2 -2
  262. package/dist/loop/turn-credentials.d.ts +34 -0
  263. package/dist/loop/turn-credentials.js +73 -0
  264. package/dist/loop/types.d.ts +34 -37
  265. package/dist/loop/types.js +2 -7
  266. package/dist/memory/ai-sdk-message-storage.d.ts +5 -5
  267. package/dist/memory/ai-sdk-message-storage.js +13 -11
  268. package/dist/memory/card-builders.d.ts +14 -14
  269. package/dist/memory/card-builders.js +19 -15
  270. package/dist/memory/conversation-display-recorder.d.ts +22 -6
  271. package/dist/memory/conversation-display-recorder.js +64 -20
  272. package/dist/memory/conversation-display-replay.js +3 -2
  273. package/dist/memory/conversation-display-storage.d.ts +15 -7
  274. package/dist/memory/conversation-display-storage.js +141 -36
  275. package/dist/memory/conversation-view.d.ts +4 -4
  276. package/dist/memory/conversation-view.js +5 -4
  277. package/dist/memory/count-tokens.js +10 -8
  278. package/dist/memory/derive-thread-title.d.ts +0 -13
  279. package/dist/memory/derive-thread-title.js +2 -1
  280. package/dist/memory/message-backfill.d.ts +12 -5
  281. package/dist/memory/message-backfill.js +5 -3
  282. package/dist/memory/thread-history.d.ts +66 -24
  283. package/dist/memory/thread-history.js +212 -79
  284. package/dist/memory/thread-store.d.ts +26 -17
  285. package/dist/memory/thread-store.js +15 -9
  286. package/dist/memory/tool-call-integrity.d.ts +2 -2
  287. package/dist/memory/tool-call-integrity.js +4 -3
  288. package/dist/memory/working-memory.d.ts +16 -12
  289. package/dist/memory/working-memory.js +72 -61
  290. package/dist/prompts/briefing.d.ts +63 -9
  291. package/dist/prompts/briefing.js +130 -3
  292. package/dist/prompts/planner.js +13 -2
  293. package/dist/prompts/synthesis-agent.d.ts +1 -1
  294. package/dist/prompts/synthesis-agent.js +6 -14
  295. package/dist/provenance/collector.d.ts +6 -6
  296. package/dist/provenance/collector.js +15 -8
  297. package/dist/provenance/exec-frame.d.ts +2 -2
  298. package/dist/provenance/exec-frame.js +6 -1
  299. package/dist/provenance/seam.d.ts +24 -19
  300. package/dist/provenance/seam.js +7 -5
  301. package/dist/provenance/types.d.ts +6 -6
  302. package/dist/providers/ai-sdk.d.ts +113 -62
  303. package/dist/providers/ai-sdk.js +303 -458
  304. package/dist/providers/embedding.d.ts +2 -2
  305. package/dist/providers/embedding.js +1 -1
  306. package/dist/providers/errors.d.ts +22 -2
  307. package/dist/providers/errors.js +98 -50
  308. package/dist/providers/prompt-cache.d.ts +8 -8
  309. package/dist/providers/prompt-cache.js +13 -11
  310. package/dist/providers/reasoning.d.ts +2 -2
  311. package/dist/providers/reasoning.js +2 -2
  312. package/dist/providers/types.d.ts +59 -92
  313. package/dist/reference-data/catalog.d.ts +2 -15
  314. package/dist/reference-data/catalog.js +166 -10
  315. package/dist/reference-data/receipt.d.ts +2 -2
  316. package/dist/report-model/assert-rules.js +1 -1
  317. package/dist/report-model/authoring-grammar.d.ts +209 -231
  318. package/dist/report-model/block-walk.d.ts +10 -10
  319. package/dist/report-model/block-walk.js +2 -0
  320. package/dist/report-model/draft-finish.d.ts +8 -8
  321. package/dist/report-model/draft-finish.js +1 -1
  322. package/dist/report-model/draft-hash.js +8 -7
  323. package/dist/report-model/draft-operations.d.ts +22 -10
  324. package/dist/report-model/draft-operations.js +48 -30
  325. package/dist/report-model/draft-read.d.ts +19 -7
  326. package/dist/report-model/draft-read.js +16 -6
  327. package/dist/report-model/draft.d.ts +844 -2
  328. package/dist/report-model/draft.js +3 -1
  329. package/dist/report-model/fixture-resolver.js +39 -16
  330. package/dist/report-model/pin-snapshot.d.ts +2 -2
  331. package/dist/report-model/pin-snapshot.js +15 -15
  332. package/dist/report-model/production-resolver.d.ts +18 -18
  333. package/dist/report-model/production-resolver.js +50 -42
  334. package/dist/report-model/reference-resolver.d.ts +26 -10
  335. package/dist/report-model/reference-resolver.js +68 -5
  336. package/dist/report-model/reference-stamp.js +30 -38
  337. package/dist/report-model/structural-validation.js +12 -4
  338. package/dist/report-model/validate.d.ts +7 -7
  339. package/dist/report-model/validate.js +6 -6
  340. package/dist/report-render/assets.d.ts +2 -2
  341. package/dist/report-render/assets.js +27 -3
  342. package/dist/report-render/chart-export.d.ts +10 -2
  343. package/dist/report-render/chart-export.js +37 -11
  344. package/dist/report-render/chart-presets.d.ts +8 -8
  345. package/dist/report-render/chart-presets.js +3 -3
  346. package/dist/report-render/chart-renderers.d.ts +23 -16
  347. package/dist/report-render/chart-renderers.js +74 -53
  348. package/dist/report-render/chart-toolbox.d.ts +2 -2
  349. package/dist/report-render/chart-toolbox.js +7 -6
  350. package/dist/report-render/chart.d.ts +15 -16
  351. package/dist/report-render/chart.js +369 -252
  352. package/dist/report-render/design.d.ts +36 -297
  353. package/dist/report-render/design.js +0 -12
  354. package/dist/report-render/figures/common.d.ts +12 -12
  355. package/dist/report-render/figures/common.js +42 -31
  356. package/dist/report-render/figures/dendrogram.d.ts +3 -3
  357. package/dist/report-render/figures/dendrogram.js +10 -10
  358. package/dist/report-render/figures/dense.js +15 -8
  359. package/dist/report-render/figures/dotplot.js +46 -33
  360. package/dist/report-render/figures/embedding.js +52 -43
  361. package/dist/report-render/figures/equal-units.d.ts +10 -10
  362. package/dist/report-render/figures/equal-units.js +27 -27
  363. package/dist/report-render/figures/forest.js +9 -7
  364. package/dist/report-render/figures/gsea.js +21 -11
  365. package/dist/report-render/figures/heatmap.js +13 -9
  366. package/dist/report-render/figures/index.d.ts +10 -10
  367. package/dist/report-render/figures/index.js +4 -2
  368. package/dist/report-render/figures/km.js +10 -9
  369. package/dist/report-render/figures/label-room.d.ts +12 -12
  370. package/dist/report-render/figures/label-room.js +7 -2
  371. package/dist/report-render/figures/locuszoom.d.ts +2 -2
  372. package/dist/report-render/figures/locuszoom.js +59 -31
  373. package/dist/report-render/figures/lollipop.js +3 -2
  374. package/dist/report-render/figures/ma.js +8 -4
  375. package/dist/report-render/figures/manhattan.d.ts +1 -2
  376. package/dist/report-render/figures/manhattan.js +52 -34
  377. package/dist/report-render/figures/oncoprint.js +4 -5
  378. package/dist/report-render/figures/pca.js +25 -11
  379. package/dist/report-render/figures/qq.js +20 -9
  380. package/dist/report-render/figures/roc.js +1 -1
  381. package/dist/report-render/figures/sankey.d.ts +2 -2
  382. package/dist/report-render/figures/sankey.js +11 -10
  383. package/dist/report-render/figures/upset.d.ts +6 -6
  384. package/dist/report-render/figures/upset.js +7 -4
  385. package/dist/report-render/figures/volcano.js +12 -10
  386. package/dist/report-render/hybrid-svg.d.ts +4 -4
  387. package/dist/report-render/hybrid-svg.js +7 -5
  388. package/dist/report-render/number-format.d.ts +4 -4
  389. package/dist/report-render/number-format.js +62 -27
  390. package/dist/report-render/page.js +2 -1
  391. package/dist/report-render/provenance-data.d.ts +2 -2
  392. package/dist/report-render/references.d.ts +4 -4
  393. package/dist/report-render/render.d.ts +2 -2
  394. package/dist/report-render/render.js +10 -11
  395. package/dist/report-render/script-json.js +1 -1
  396. package/dist/report-render/table-data.d.ts +6 -6
  397. package/dist/report-render/test/options.d.ts +49 -0
  398. package/dist/report-render/test/options.js +143 -0
  399. package/dist/report-render/test/page-function.d.ts +19 -0
  400. package/dist/report-render/test/page-function.js +33 -0
  401. package/dist/report-render/types.d.ts +10 -10
  402. package/dist/report-render/value-bridge.d.ts +4 -4
  403. package/dist/report-render/value-bridge.js +27 -14
  404. package/dist/report-render/views/chart-view.d.ts +2 -2
  405. package/dist/report-render/views/chart-view.js +2 -2
  406. package/dist/report-render/views/lineage.d.ts +6 -6
  407. package/dist/report-render/views/lineage.js +2 -0
  408. package/dist/report-render/views/page-view.d.ts +2 -2
  409. package/dist/report-render/views/page-view.js +1 -0
  410. package/dist/report-render/views/prose.js +25 -8
  411. package/dist/report-render/views/references-view.js +12 -1
  412. package/dist/report-render/views/values.js +1 -1
  413. package/dist/runtime/assemble.d.ts +53 -26
  414. package/dist/runtime/assemble.js +103 -56
  415. package/dist/runtime/boot.d.ts +8 -7
  416. package/dist/runtime/boot.js +1 -1
  417. package/dist/runtime/connection-budget.d.ts +6 -6
  418. package/dist/runtime/connection-budget.js +1 -1
  419. package/dist/runtime/dbos.d.ts +29 -19
  420. package/dist/runtime/dbos.js +35 -20
  421. package/dist/runtime/result-serialization.js +18 -5
  422. package/dist/runtime/shutdown.d.ts +2 -2
  423. package/dist/sandbox/client.d.ts +7 -3
  424. package/dist/sandbox/cpu-files.d.ts +2 -2
  425. package/dist/sandbox/cpu-files.js +21 -4
  426. package/dist/sandbox/create-sandbox.d.ts +7 -8
  427. package/dist/sandbox/create-sandbox.js +6 -12
  428. package/dist/sandbox/docker-client.d.ts +48 -3
  429. package/dist/sandbox/docker-client.js +10 -6
  430. package/dist/sandbox/estimate-data-profile-resources.js +2 -7
  431. package/dist/sandbox/exec-outcome.d.ts +2 -2
  432. package/dist/sandbox/exec-outcome.js +1 -1
  433. package/dist/sandbox/exec.d.ts +10 -6
  434. package/dist/sandbox/exec.js +27 -12
  435. package/dist/sandbox/execution-id.js +14 -6
  436. package/dist/sandbox/farm.d.ts +2 -2
  437. package/dist/sandbox/farm.js +22 -27
  438. package/dist/sandbox/identity.d.ts +7 -0
  439. package/dist/sandbox/identity.js +14 -3
  440. package/dist/sandbox/image-packages.d.ts +26 -4
  441. package/dist/sandbox/image-packages.js +29 -27
  442. package/dist/sandbox/k8s-client.d.ts +35 -8
  443. package/dist/sandbox/k8s-client.js +6 -5
  444. package/dist/sandbox/labels.js +1 -0
  445. package/dist/sandbox/liveness.js +3 -1
  446. package/dist/sandbox/mount-plan.d.ts +10 -10
  447. package/dist/sandbox/mount-plan.js +13 -14
  448. package/dist/sandbox/notification-sweep.d.ts +4 -4
  449. package/dist/sandbox/notification-sweep.js +4 -7
  450. package/dist/sandbox/package-identity.d.ts +6 -13
  451. package/dist/sandbox/package-identity.js +46 -28
  452. package/dist/sandbox/reaper.d.ts +10 -10
  453. package/dist/sandbox/reaper.js +4 -6
  454. package/dist/sandbox/sandbox-error.d.ts +2 -9
  455. package/dist/sandbox/sandbox-error.js +21 -8
  456. package/dist/sandbox/sandbox-step-translate.d.ts +8 -5
  457. package/dist/sandbox/sandbox-step-translate.js +22 -8
  458. package/dist/sandbox/step-sandbox.d.ts +47 -0
  459. package/dist/sandbox/step-sandbox.js +53 -0
  460. package/dist/sandbox/types.d.ts +18 -19
  461. package/dist/sandbox/types.js +1 -1
  462. package/dist/schemas/artifact-manifest.d.ts +4 -4
  463. package/dist/schemas/data-profile-schemas.d.ts +351 -306
  464. package/dist/schemas/file-metadata.js +2 -4
  465. package/dist/schemas/plan-schemas.d.ts +79 -25
  466. package/dist/schemas/plan-schemas.js +1 -1
  467. package/dist/schemas/run-synthesis.d.ts +95 -26
  468. package/dist/schemas/run-synthesis.js +3 -1
  469. package/dist/schemas/validate-plan.d.ts +4 -4
  470. package/dist/schemas/validate-plan.js +17 -5
  471. package/dist/schemas/workflow-state.d.ts +127 -14
  472. package/dist/schemas/workflow-state.js +56 -2
  473. package/dist/state/active-turns.d.ts +36 -0
  474. package/dist/state/active-turns.js +67 -0
  475. package/dist/state/analyses-metrics.d.ts +8 -8
  476. package/dist/state/analyses-metrics.js +4 -4
  477. package/dist/state/analyses.d.ts +0 -14
  478. package/dist/state/analyses.js +0 -32
  479. package/dist/state/artifacts.d.ts +47 -18
  480. package/dist/state/artifacts.js +48 -7
  481. package/dist/state/data-profile.d.ts +2 -2
  482. package/dist/state/db.d.ts +12 -2
  483. package/dist/state/db.js +5 -0
  484. package/dist/state/edit-intents.d.ts +4 -0
  485. package/dist/state/edit-intents.js +71 -0
  486. package/dist/state/index.d.ts +5 -5
  487. package/dist/state/index.js +3 -3
  488. package/dist/state/init.d.ts +2 -1
  489. package/dist/state/init.js +5 -2
  490. package/dist/state/migrations/20260927120000_baseline.js +3 -1
  491. package/dist/state/migrations/20261026120000_add_the_edit_intents.d.ts +7 -0
  492. package/dist/state/migrations/20261026120000_add_the_edit_intents.js +21 -0
  493. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.d.ts +7 -0
  494. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.js +16 -0
  495. package/dist/state/migrations/20261027120100_store_the_authoring_results.d.ts +8 -0
  496. package/dist/state/migrations/20261027120100_store_the_authoring_results.js +20 -0
  497. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.d.ts +7 -0
  498. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.js +12 -0
  499. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.d.ts +7 -0
  500. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.js +11 -0
  501. package/dist/state/migrations/20261028120000_record_the_paused_work.d.ts +7 -0
  502. package/dist/state/migrations/20261028120000_record_the_paused_work.js +25 -0
  503. package/dist/state/migrations/20261028120100_end_the_suspended_runs.d.ts +8 -0
  504. package/dist/state/migrations/20261028120100_end_the_suspended_runs.js +13 -0
  505. package/dist/state/migrations/20261029120000_reference_the_run_mandate.d.ts +7 -0
  506. package/dist/state/migrations/20261029120000_reference_the_run_mandate.js +23 -0
  507. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.d.ts +7 -0
  508. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.js +11 -0
  509. package/dist/state/migrations/index.js +18 -0
  510. package/dist/state/paused-work.d.ts +52 -0
  511. package/dist/state/paused-work.js +105 -0
  512. package/dist/state/plans.d.ts +27 -8
  513. package/dist/state/plans.js +14 -11
  514. package/dist/state/purge-analysis.d.ts +6 -6
  515. package/dist/state/purge-analysis.js +10 -2
  516. package/dist/state/report-session-state.d.ts +43 -18
  517. package/dist/state/report-session-state.js +43 -4
  518. package/dist/state/report-versions.d.ts +16 -11
  519. package/dist/state/report-versions.js +5 -3
  520. package/dist/state/runs.d.ts +70 -25
  521. package/dist/state/runs.js +127 -64
  522. package/dist/state/schema.d.ts +18 -21
  523. package/dist/state/schema.js +4 -5
  524. package/dist/state/snapshot-parse.d.ts +2 -2
  525. package/dist/state/snapshot-parse.js +14 -8
  526. package/dist/state/step-executions.d.ts +29 -8
  527. package/dist/state/step-executions.js +28 -4
  528. package/dist/state/tool-outputs.d.ts +2 -2
  529. package/dist/state/tool-outputs.js +2 -1
  530. package/dist/state/vector-store.d.ts +16 -16
  531. package/dist/state/vector-store.js +11 -7
  532. package/dist/tasks/data-profile-absorb.d.ts +3 -3
  533. package/dist/tasks/data-profile-absorb.js +21 -16
  534. package/dist/tasks/data-profile-activity.d.ts +5 -5
  535. package/dist/tasks/data-profile-activity.js +5 -5
  536. package/dist/tasks/data-profile-index.d.ts +4 -4
  537. package/dist/tasks/data-profile-index.js +32 -17
  538. package/dist/tasks/data-profile-resolve.d.ts +8 -8
  539. package/dist/tasks/data-profile-resolve.js +88 -62
  540. package/dist/tasks/data-profile.d.ts +40 -31
  541. package/dist/tasks/data-profile.js +138 -95
  542. package/dist/tasks/extract-values.d.ts +26 -79
  543. package/dist/tasks/extract-values.js +48 -108
  544. package/dist/tasks/refresh-regulatory-corpus.d.ts +4 -20
  545. package/dist/tasks/refresh-regulatory-corpus.js +12 -8
  546. package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +2 -2
  547. package/dist/tasks/regulatory-corpus-boot-refresh.js +12 -10
  548. package/dist/testing.d.ts +60 -0
  549. package/dist/testing.js +96 -0
  550. package/dist/tools/ad-hoc-router.d.ts +11 -9
  551. package/dist/tools/ad-hoc-router.js +80 -51
  552. package/dist/tools/analysis-invocation.d.ts +7 -0
  553. package/dist/tools/analysis-invocation.js +29 -5
  554. package/dist/tools/approval/contract.d.ts +8 -52
  555. package/dist/tools/approval/contract.js +7 -36
  556. package/dist/tools/approval/gateway.d.ts +27 -28
  557. package/dist/tools/approval/gateway.js +33 -130
  558. package/dist/tools/approval/queries.d.ts +6 -11
  559. package/dist/tools/approval/queries.js +43 -29
  560. package/dist/tools/approval/uuidv7.js +2 -2
  561. package/dist/tools/bio/chembl.d.ts +3 -3
  562. package/dist/tools/bio/chembl.js +10 -0
  563. package/dist/tools/bio/comptox.d.ts +25 -8
  564. package/dist/tools/bio/comptox.js +4 -2
  565. package/dist/tools/bio/drug-gene-interactions.d.ts +27 -17
  566. package/dist/tools/bio/drug-gene-interactions.js +11 -8
  567. package/dist/tools/bio/gene-disease-evidence.d.ts +61 -15
  568. package/dist/tools/bio/gene-disease-evidence.js +10 -6
  569. package/dist/tools/bio/gene-preclinical-profile.d.ts +11 -11
  570. package/dist/tools/bio/keys.d.ts +2 -2
  571. package/dist/tools/bio/keys.js +3 -3
  572. package/dist/tools/bio/lookup-annotation.d.ts +5 -5
  573. package/dist/tools/bio/lookup-annotation.js +3 -0
  574. package/dist/tools/bio/opentargets.d.ts +1 -1
  575. package/dist/tools/bio/opentargets.js +6 -0
  576. package/dist/tools/bio/pubchem.d.ts +2 -2
  577. package/dist/tools/bio/pubchem.js +6 -0
  578. package/dist/tools/bio/pubmed.d.ts +26 -16
  579. package/dist/tools/bio/pubmed.js +9 -3
  580. package/dist/tools/bio/search-clinical-trials.d.ts +4 -4
  581. package/dist/tools/bio/search-clinical-trials.js +5 -1
  582. package/dist/tools/bio/search-faers.d.ts +2 -2
  583. package/dist/tools/bio/search-faers.js +1 -1
  584. package/dist/tools/bio/search-gene.d.ts +2 -2
  585. package/dist/tools/bio/search-gene.js +1 -0
  586. package/dist/tools/bio/search-geo-datasets.d.ts +4 -4
  587. package/dist/tools/bio/search-geo-datasets.js +5 -5
  588. package/dist/tools/bio/search-interactions.d.ts +1 -1
  589. package/dist/tools/bio/search-patents.d.ts +28 -22
  590. package/dist/tools/bio/search-patents.js +20 -17
  591. package/dist/tools/bio/search-protein.d.ts +2 -2
  592. package/dist/tools/bio/search-protein.js +1 -1
  593. package/dist/tools/bio/search-regulatory-approvals.d.ts +64 -18
  594. package/dist/tools/bio/search-regulatory-approvals.js +21 -16
  595. package/dist/tools/bio/target-safety.d.ts +8 -8
  596. package/dist/tools/bio/target-safety.js +11 -6
  597. package/dist/tools/capability-data.d.ts +40 -0
  598. package/dist/tools/capability-data.js +74 -0
  599. package/dist/tools/define-tool.d.ts +55 -46
  600. package/dist/tools/define-tool.js +39 -27
  601. package/dist/tools/display/normalize-echart-spec.d.ts +2 -2
  602. package/dist/tools/display/normalize-echart-spec.js +51 -27
  603. package/dist/tools/display/show-user.d.ts +2 -2
  604. package/dist/tools/display/show-user.js +1 -1
  605. package/dist/tools/execute-analysis.d.ts +54 -17
  606. package/dist/tools/execute-analysis.js +193 -62
  607. package/dist/tools/knowledge/check.d.ts +182 -0
  608. package/dist/tools/knowledge/check.js +94 -0
  609. package/dist/tools/knowledge/client.d.ts +351 -0
  610. package/dist/tools/knowledge/client.js +319 -0
  611. package/dist/tools/knowledge/environment.d.ts +78 -0
  612. package/dist/tools/knowledge/environment.js +116 -0
  613. package/dist/tools/knowledge/index.d.ts +49 -0
  614. package/dist/tools/knowledge/index.js +70 -0
  615. package/dist/tools/knowledge/local-slots.d.ts +62 -0
  616. package/dist/tools/knowledge/local-slots.js +184 -0
  617. package/dist/tools/knowledge/pin.d.ts +14 -0
  618. package/dist/tools/knowledge/pin.js +17 -0
  619. package/dist/tools/knowledge/recommend.d.ts +67 -0
  620. package/dist/tools/knowledge/recommend.js +106 -0
  621. package/dist/tools/knowledge/situation.d.ts +143 -0
  622. package/dist/tools/knowledge/situation.js +157 -0
  623. package/dist/tools/knowledge/skeleton.d.ts +69 -0
  624. package/dist/tools/knowledge/skeleton.js +201 -0
  625. package/dist/tools/knowledge/template.d.ts +139 -0
  626. package/dist/tools/knowledge/template.js +273 -0
  627. package/dist/tools/lib/alphafold-client.js +2 -1
  628. package/dist/tools/lib/amass-client.d.ts +28 -28
  629. package/dist/tools/lib/amass-client.js +20 -10
  630. package/dist/tools/lib/api-utils.d.ts +13 -3
  631. package/dist/tools/lib/api-utils.js +17 -3
  632. package/dist/tools/lib/bgee-client.d.ts +6 -6
  633. package/dist/tools/lib/bgee-client.js +16 -10
  634. package/dist/tools/lib/cbioportal-client.d.ts +4 -4
  635. package/dist/tools/lib/cbioportal-client.js +9 -8
  636. package/dist/tools/lib/chembl-client.d.ts +14 -14
  637. package/dist/tools/lib/chembl-client.js +11 -4
  638. package/dist/tools/lib/clinical-benchmarks-client.d.ts +4 -4
  639. package/dist/tools/lib/clinical-benchmarks-client.js +4 -7
  640. package/dist/tools/lib/clinical-trials-client.d.ts +18 -18
  641. package/dist/tools/lib/clinical-trials-client.js +10 -10
  642. package/dist/tools/lib/clinvar-client.d.ts +2 -2
  643. package/dist/tools/lib/clinvar-client.js +6 -6
  644. package/dist/tools/lib/ctx-ops.d.ts +23 -23
  645. package/dist/tools/lib/ctx-ops.js +13 -10
  646. package/dist/tools/lib/dgidb-client.d.ts +6 -6
  647. package/dist/tools/lib/dgidb-client.js +10 -12
  648. package/dist/tools/lib/disgenet-client.d.ts +4 -4
  649. package/dist/tools/lib/ema-client.d.ts +2 -2
  650. package/dist/tools/lib/ensembl-client.d.ts +4 -4
  651. package/dist/tools/lib/ensembl-client.js +5 -4
  652. package/dist/tools/lib/gwas-catalog-client.d.ts +4 -4
  653. package/dist/tools/lib/gwas-catalog-client.js +17 -17
  654. package/dist/tools/lib/html-text.d.ts +6 -0
  655. package/dist/tools/lib/html-text.js +9 -0
  656. package/dist/tools/lib/identifier-resolver.d.ts +4 -4
  657. package/dist/tools/lib/identifier-resolver.js +7 -3
  658. package/dist/tools/lib/impc-client.d.ts +8 -8
  659. package/dist/tools/lib/impc-client.js +46 -35
  660. package/dist/tools/lib/iuphar-client.d.ts +2 -2
  661. package/dist/tools/lib/iuphar-client.js +7 -16
  662. package/dist/tools/lib/monarch-client.d.ts +4 -4
  663. package/dist/tools/lib/openfda-client.d.ts +22 -22
  664. package/dist/tools/lib/openfda-client.js +23 -22
  665. package/dist/tools/lib/opentargets-client.d.ts +12 -12
  666. package/dist/tools/lib/pathway-client.d.ts +4 -4
  667. package/dist/tools/lib/pathway-client.js +15 -19
  668. package/dist/tools/lib/pharmgkb-client.d.ts +2 -2
  669. package/dist/tools/lib/pharmgkb-client.js +1 -1
  670. package/dist/tools/lib/protein-family-modality.d.ts +2 -2
  671. package/dist/tools/lib/protein-family-modality.js +0 -2
  672. package/dist/tools/lib/protein-family-normalize.js +7 -0
  673. package/dist/tools/lib/pubchem-client.d.ts +2 -2
  674. package/dist/tools/lib/pubchem-client.js +1 -0
  675. package/dist/tools/lib/pubchem-ops.d.ts +4 -4
  676. package/dist/tools/lib/pubchem-ops.js +8 -0
  677. package/dist/tools/lib/pubmed-client.d.ts +9 -9
  678. package/dist/tools/lib/pubmed-client.js +1 -1
  679. package/dist/tools/lib/string-client.d.ts +6 -6
  680. package/dist/tools/lib/uniprot-client.d.ts +8 -8
  681. package/dist/tools/lib/uniprot-client.js +5 -1
  682. package/dist/tools/memory/update-working-memory.d.ts +16 -13
  683. package/dist/tools/memory/update-working-memory.js +21 -3
  684. package/dist/tools/read-tool-output.js +8 -2
  685. package/dist/tools/registry.d.ts +2 -2
  686. package/dist/tools/report-authoring/authoring-tools.d.ts +54 -23
  687. package/dist/tools/report-authoring/authoring-tools.js +128 -62
  688. package/dist/tools/report-session/derive-table.d.ts +19 -59
  689. package/dist/tools/report-session/derive-table.js +120 -122
  690. package/dist/tools/report-session/examine-page.d.ts +6 -6
  691. package/dist/tools/report-session/examine-page.js +14 -12
  692. package/dist/tools/report-session/list-artifacts.d.ts +6 -6
  693. package/dist/tools/report-session/list-artifacts.js +5 -5
  694. package/dist/tools/report-session/page-faults.d.ts +6 -6
  695. package/dist/tools/report-session/page-faults.js +3 -1
  696. package/dist/tools/report-session/preview-report.d.ts +4 -3
  697. package/dist/tools/report-session/preview-report.js +26 -7
  698. package/dist/tools/report-session/record-version.d.ts +9 -4
  699. package/dist/tools/report-session/record-version.js +16 -9
  700. package/dist/tools/report-session/session-page-publisher.d.ts +6 -6
  701. package/dist/tools/research/generate-analogy-report.d.ts +14 -7
  702. package/dist/tools/research/generate-analogy-report.js +80 -76
  703. package/dist/tools/research/generate-plan.d.ts +39 -16
  704. package/dist/tools/research/generate-plan.js +565 -338
  705. package/dist/tools/research/guarded-address.d.ts +20 -0
  706. package/dist/tools/research/guarded-address.js +149 -0
  707. package/dist/tools/research/inspect-data-profile.d.ts +27 -20
  708. package/dist/tools/research/inspect-data-profile.js +26 -25
  709. package/dist/tools/research/inspect-run.d.ts +54 -27
  710. package/dist/tools/research/inspect-run.js +50 -40
  711. package/dist/tools/research/literature-reviewer.d.ts +8 -7
  712. package/dist/tools/research/literature-reviewer.js +29 -28
  713. package/dist/tools/research/search-arxiv.d.ts +1 -1
  714. package/dist/tools/research/search-arxiv.js +1 -1
  715. package/dist/tools/research/search-github-repos.d.ts +10 -7
  716. package/dist/tools/research/search-github-repos.js +25 -22
  717. package/dist/tools/research/search-semantic-scholar.js +1 -1
  718. package/dist/tools/research/searxng-engine.d.ts +40 -0
  719. package/dist/tools/research/searxng-engine.js +122 -0
  720. package/dist/tools/research/web-fetch.d.ts +127 -0
  721. package/dist/tools/research/web-fetch.js +618 -0
  722. package/dist/tools/research/web-search.d.ts +84 -0
  723. package/dist/tools/research/web-search.js +117 -0
  724. package/dist/tools/sandbox/link-packages.d.ts +11 -7
  725. package/dist/tools/sandbox/link-packages.js +11 -8
  726. package/dist/tools/sandbox/list-available-packages.d.ts +24 -12
  727. package/dist/tools/sandbox/list-available-packages.js +43 -29
  728. package/dist/tools/sandbox/list-available-refs.d.ts +38 -14
  729. package/dist/tools/sandbox/list-available-refs.js +119 -37
  730. package/dist/tools/sandbox/report-blocker.d.ts +30 -37
  731. package/dist/tools/sandbox/report-blocker.js +22 -68
  732. package/dist/tools/sandbox/skills.d.ts +16 -12
  733. package/dist/tools/sandbox/skills.js +16 -12
  734. package/dist/tools/sandbox/submit-file-metadata.d.ts +12 -9
  735. package/dist/tools/sandbox/submit-file-metadata.js +18 -21
  736. package/dist/tools/start-report-session.d.ts +13 -5
  737. package/dist/tools/start-report-session.js +35 -8
  738. package/dist/tools/terminal-text.d.ts +14 -0
  739. package/dist/tools/terminal-text.js +51 -0
  740. package/dist/tools/workspace/decision-record.d.ts +81 -0
  741. package/dist/tools/workspace/decision-record.js +127 -0
  742. package/dist/tools/workspace/edit-file.d.ts +59 -18
  743. package/dist/tools/workspace/edit-file.js +98 -15
  744. package/dist/tools/workspace/execute-command.d.ts +31 -12
  745. package/dist/tools/workspace/execute-command.js +37 -8
  746. package/dist/tools/workspace/file-stat.d.ts +6 -3
  747. package/dist/tools/workspace/grep.d.ts +10 -7
  748. package/dist/tools/workspace/grep.js +9 -3
  749. package/dist/tools/workspace/index.d.ts +1 -0
  750. package/dist/tools/workspace/index.js +1 -0
  751. package/dist/tools/workspace/list-files.d.ts +6 -3
  752. package/dist/tools/workspace/mutator.d.ts +28 -15
  753. package/dist/tools/workspace/mutator.js +107 -53
  754. package/dist/tools/workspace/read-file.d.ts +8 -5
  755. package/dist/tools/workspace/result-bounds.d.ts +5 -5
  756. package/dist/tools/workspace/result-bounds.js +4 -2
  757. package/dist/tools/workspace/run-exec.d.ts +2 -2
  758. package/dist/tools/workspace/run-exec.js +3 -3
  759. package/dist/tools/workspace/scan-inputs.d.ts +8 -5
  760. package/dist/tools/workspace/scan-inputs.js +17 -5
  761. package/dist/tools/workspace/show-file.d.ts +1 -1
  762. package/dist/tools/workspace/show-file.js +2 -1
  763. package/dist/tools/workspace/show-plan.d.ts +8 -5
  764. package/dist/tools/workspace/show-plan.js +9 -8
  765. package/dist/tools/workspace/workspace-search.d.ts +41 -13
  766. package/dist/tools/workspace/workspace-search.js +27 -14
  767. package/dist/tools/workspace/write-file.d.ts +9 -7
  768. package/dist/workflows/execute-analysis-scheduler.d.ts +9 -9
  769. package/dist/workflows/execute-analysis-scheduler.js +6 -3
  770. package/dist/workflows/execute-analysis.d.ts +100 -76
  771. package/dist/workflows/execute-analysis.js +380 -247
  772. package/dist/workflows/pause.d.ts +71 -0
  773. package/dist/workflows/pause.js +173 -0
  774. package/dist/workflows/sandbox-step.d.ts +50 -61
  775. package/dist/workflows/sandbox-step.js +99 -106
  776. package/dist/workflows/test/sql-writes.d.ts +21 -0
  777. package/dist/workflows/test/sql-writes.js +36 -0
  778. package/dist/workspace/filesystem.d.ts +6 -6
  779. package/dist/workspace/filesystem.js +10 -8
  780. package/dist/workspace/paths.d.ts +1 -1
  781. package/dist/workspace/paths.js +15 -4
  782. package/dist/workspace/search-config.d.ts +2 -2
  783. package/dist/workspace/search-config.js +1 -1
  784. package/package.json +25 -22
  785. package/dist/loop/continue-agent.d.ts +0 -40
  786. package/dist/loop/continue-agent.js +0 -38
  787. package/dist/loop/genai-spans.d.ts +0 -47
  788. package/dist/loop/genai-spans.js +0 -134
  789. package/dist/loop/run-agent.d.ts +0 -236
  790. package/dist/loop/run-agent.js +0 -1110
  791. package/dist/loop/run-step.d.ts +0 -29
  792. package/dist/loop/run-step.js +0 -34
  793. package/dist/loop/run-to-terminal.d.ts +0 -66
  794. package/dist/loop/run-to-terminal.js +0 -90
  795. package/dist/loop/tool-mask.d.ts +0 -23
  796. package/dist/loop/tool-mask.js +0 -46
  797. package/dist/providers/streaming-chat.d.ts +0 -32
  798. package/dist/providers/streaming-chat.js +0 -91
  799. package/dist/tasks/derive-table-exec.d.ts +0 -54
  800. package/dist/tasks/derive-table-exec.js +0 -86
  801. package/dist/workflows/suspension.d.ts +0 -32
  802. package/dist/workflows/suspension.js +0 -38
@@ -1,21 +1,20 @@
1
+ import { setTimeout as sleep } from "node:timers/promises";
2
+ import { errorOf } from "./thrown.js";
1
3
  function abortReason(signal) {
2
- return signal.reason instanceof Error ? signal.reason : new DOMException("The operation was aborted", "AbortError");
4
+ return errorOf(signal.reason) ?? new DOMException("The operation was aborted", "AbortError");
3
5
  }
4
6
  export function sleepWithSignal(milliseconds, signal) {
7
+ // The node wait consults the signal before any duration elapses, and its abort
8
+ // rejection is a fresh AbortError instead of `signal.reason` under the Bun test
9
+ // runtime, so the gates and the catch carry the reasons of this contract.
5
10
  if (milliseconds <= 0)
6
11
  return Promise.resolve();
7
- if (signal?.aborted)
12
+ if (signal === undefined)
13
+ return sleep(milliseconds);
14
+ if (signal.aborted)
8
15
  return Promise.reject(abortReason(signal));
9
- return new Promise((resolve, reject) => {
10
- const timeout = setTimeout(() => {
11
- signal?.removeEventListener("abort", onAbort);
12
- resolve();
13
- }, milliseconds);
14
- const onAbort = () => {
15
- clearTimeout(timeout);
16
- reject(abortReason(signal));
17
- };
18
- signal?.addEventListener("abort", onAbort, { once: true });
16
+ return sleep(milliseconds, undefined, { signal }).catch(() => {
17
+ throw abortReason(signal);
19
18
  });
20
19
  }
21
20
  class Semaphore {
@@ -33,7 +32,7 @@ class Semaphore {
33
32
  return;
34
33
  }
35
34
  await new Promise((resolve, reject) => {
36
- const waiter = { resolve, reject, ...(signal === undefined ? {} : { signal }) };
35
+ const waiter = { resolve, reject, signal };
37
36
  if (signal !== undefined) {
38
37
  waiter.onAbort = () => {
39
38
  const index = this.waiters.indexOf(waiter);
@@ -1,5 +1,5 @@
1
1
  export type FdaCenter = "CDER" | "CBER";
2
- export interface FdaDocStub {
2
+ export type FdaDocStub = {
3
3
  doc_id: string;
4
4
  doc_title: string;
5
5
  doc_url: string;
@@ -8,8 +8,8 @@ export interface FdaDocStub {
8
8
  year?: string;
9
9
  category?: string;
10
10
  };
11
- }
12
- export interface FdaDoc {
11
+ };
12
+ export type FdaDoc = {
13
13
  doc_id: string;
14
14
  doc_title: string;
15
15
  doc_url: string;
@@ -19,7 +19,7 @@ export interface FdaDoc {
19
19
  year?: string;
20
20
  category?: string;
21
21
  };
22
- }
22
+ };
23
23
  /**
24
24
  * Return the curated FDA guidance stubs for `center`. The catalog is
25
25
  * static; this function exists for parity with `fetchIchListing()` and as
@@ -1,5 +1,6 @@
1
1
  import { load } from "cheerio";
2
2
  import { PDFParse } from "pdf-parse";
3
+ import { normalizeWhitespace } from "./normalize-whitespace.js";
3
4
  /**
4
5
  * Curated catalog of FDA guidance documents to index into the corpus.
5
6
  *
@@ -53,14 +54,14 @@ const FDA_GUIDANCES = [
53
54
  * the seam where a future contributor can swap in dynamic discovery
54
55
  * (e.g., headless-browser scraping or a vetted third-party index).
55
56
  */
56
- export async function fetchFdaGuidanceListing(center) {
57
- return FDA_GUIDANCES.filter((g) => g.center === center).map((g) => ({
57
+ export function fetchFdaGuidanceListing(center) {
58
+ return Promise.resolve(FDA_GUIDANCES.filter((g) => g.center === center).map((g) => ({
58
59
  doc_id: g.doc_id,
59
60
  doc_title: g.doc_title,
60
61
  doc_url: `https://www.fda.gov/media/${g.media_id}/download`,
61
62
  center: g.center,
62
63
  metadata: { year: g.year },
63
- }));
64
+ })));
64
65
  }
65
66
  /**
66
67
  * Download a single FDA guidance document and extract its text. Handles
@@ -98,10 +99,3 @@ export async function fetchAndExtractFdaDoc(stub) {
98
99
  },
99
100
  };
100
101
  }
101
- function normalizeWhitespace(s) {
102
- return s
103
- .replace(/[ \t]+/g, " ")
104
- .replace(/\r/g, "")
105
- .replace(/\n{3,}/g, "\n\n")
106
- .trim();
107
- }
@@ -12,7 +12,7 @@
12
12
  * `ich-<code>` with non-word chars sanitized.
13
13
  */
14
14
  export type IchSeries = "S" | "E" | "M" | "Q";
15
- export interface IchStub {
15
+ export type IchStub = {
16
16
  doc_id: string;
17
17
  doc_title: string;
18
18
  doc_url: string;
@@ -21,8 +21,8 @@ export interface IchStub {
21
21
  metadata?: {
22
22
  year?: string;
23
23
  };
24
- }
25
- export interface IchDoc {
24
+ };
25
+ export type IchDoc = {
26
26
  doc_id: string;
27
27
  doc_title: string;
28
28
  doc_url: string;
@@ -32,7 +32,7 @@ export interface IchDoc {
32
32
  series: IchSeries;
33
33
  year?: string;
34
34
  };
35
- }
35
+ };
36
36
  /**
37
37
  * Return the curated ICH guideline stubs. The catalog is static; this
38
38
  * function exists for parity with `fetchFdaGuidanceListing()` and as the
@@ -12,6 +12,7 @@
12
12
  * `ich-<code>` with non-word chars sanitized.
13
13
  */
14
14
  import { PDFParse } from "pdf-parse";
15
+ import { normalizeWhitespace } from "./normalize-whitespace.js";
15
16
  /**
16
17
  * Curated catalog of ICH guidelines to index into the corpus.
17
18
  *
@@ -124,14 +125,14 @@ const ICH_GUIDELINES = [
124
125
  * function exists for parity with `fetchFdaGuidanceListing()` and as the
125
126
  * seam where a future contributor can swap in dynamic discovery.
126
127
  */
127
- export async function fetchIchListing() {
128
- return ICH_GUIDELINES.map((g) => ({
128
+ export function fetchIchListing() {
129
+ return Promise.resolve(ICH_GUIDELINES.map((g) => ({
129
130
  doc_id: `ich-${slugify(g.code)}`,
130
131
  doc_title: g.doc_title,
131
132
  doc_url: g.url,
132
133
  code: g.code,
133
134
  series: g.series,
134
- }));
135
+ })));
135
136
  }
136
137
  /**
137
138
  * Download a single ICH guideline PDF and extract its text. Returns
@@ -158,16 +159,19 @@ export async function fetchAndExtractIchDoc(stub) {
158
159
  },
159
160
  };
160
161
  }
161
- function normalizeWhitespace(s) {
162
- return s
163
- .replace(/[ \t]+/g, " ")
164
- .replace(/\r/g, "")
165
- .replace(/\n{3,}/g, "\n\n")
166
- .trim();
167
- }
168
162
  function slugify(s) {
169
- return s
170
- .toLowerCase()
171
- .replace(/[^a-z0-9]+/g, "-")
172
- .replace(/^-|-$/g, "");
163
+ let out = "";
164
+ let inRun = false;
165
+ for (const char of s.toLowerCase()) {
166
+ const isSlugChar = (char >= "a" && char <= "z") || (char >= "0" && char <= "9");
167
+ if (!isSlugChar) {
168
+ inRun = true;
169
+ continue;
170
+ }
171
+ if (inRun && out.length > 0)
172
+ out += "-";
173
+ inRun = false;
174
+ out += char;
175
+ }
176
+ return out;
173
177
  }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Whitespace normalization for fetched regulatory document text (HTML bodies and PDF
3
+ * extractions): space and tab runs collapse to one space, newline runs cap at one blank
4
+ * line, and the edges trim.
5
+ */
6
+ export declare function normalizeWhitespace(s: string): string;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Whitespace normalization for fetched regulatory document text (HTML bodies and PDF
3
+ * extractions): space and tab runs collapse to one space, newline runs cap at one blank
4
+ * line, and the edges trim.
5
+ */
6
+ export function normalizeWhitespace(s) {
7
+ let out = "";
8
+ let inSpaceRun = false;
9
+ let newlineRun = 0;
10
+ const flushNewlineRun = () => {
11
+ out += "\n".repeat(Math.min(newlineRun, 2));
12
+ newlineRun = 0;
13
+ };
14
+ for (const char of s) {
15
+ // A CR joins the newline run it sits in — a CRLF pair merges through it, it never
16
+ // ends the run — and with no run pending it only ends a space run.
17
+ if (char === "\r") {
18
+ inSpaceRun = false;
19
+ continue;
20
+ }
21
+ if (char === "\n") {
22
+ inSpaceRun = false;
23
+ newlineRun += 1;
24
+ continue;
25
+ }
26
+ if (char === " " || char === "\t") {
27
+ if (newlineRun > 0)
28
+ flushNewlineRun();
29
+ if (!inSpaceRun)
30
+ out += " ";
31
+ inSpaceRun = true;
32
+ continue;
33
+ }
34
+ if (newlineRun > 0)
35
+ flushNewlineRun();
36
+ inSpaceRun = false;
37
+ out += char;
38
+ }
39
+ flushNewlineRun();
40
+ return out.trim();
41
+ }
@@ -16,15 +16,15 @@
16
16
  import { ResultAsync } from "neverthrow";
17
17
  import type { Pool } from "pg";
18
18
  import { type DbError } from "./db-result.js";
19
- export interface ChunkOptions {
19
+ export type ChunkOptions = {
20
20
  maxTokens?: number;
21
21
  overlapTokens?: number;
22
- }
23
- export interface RawChunk {
22
+ };
23
+ export type RawChunk = {
24
24
  section: string | null;
25
25
  index: number;
26
26
  text: string;
27
- }
27
+ };
28
28
  /**
29
29
  * Split `text` into overlapping chunks bounded by `maxTokens` (word-count
30
30
  * approximation), respecting `## Heading` section boundaries where present.
@@ -41,7 +41,7 @@ export interface RawChunk {
41
41
  * can reassemble the document order without inspecting section names.
42
42
  */
43
43
  export declare function chunkText(text: string, opts?: ChunkOptions): RawChunk[];
44
- export interface ChunkRow {
44
+ export type ChunkRow = {
45
45
  source: "FDA-CDER" | "FDA-CBER" | "ICH";
46
46
  doc_id: string;
47
47
  doc_title: string;
@@ -50,7 +50,7 @@ export interface ChunkRow {
50
50
  embedding: number[];
51
51
  }>;
52
52
  metadata: Record<string, unknown>;
53
- }
53
+ };
54
54
  /**
55
55
  * Replace-by-(source, doc_id): delete all existing chunks for the document
56
56
  * then insert the new set in a single transaction.
@@ -60,11 +60,11 @@ export interface ChunkRow {
60
60
  * back), not a `DbError`.
61
61
  */
62
62
  export declare function upsertChunks(pool: Pool, row: ChunkRow): ResultAsync<void, DbError>;
63
- export interface SearchFilters {
63
+ export type SearchFilters = {
64
64
  source?: "FDA-CDER" | "FDA-CBER" | "ICH";
65
65
  topK?: number;
66
- }
67
- export interface SearchHit {
66
+ };
67
+ export type SearchHit = {
68
68
  source: string;
69
69
  doc_id: string;
70
70
  doc_title: string;
@@ -72,7 +72,7 @@ export interface SearchHit {
72
72
  section: string | null;
73
73
  excerpt: string;
74
74
  score: number;
75
- }
75
+ };
76
76
  /**
77
77
  * Top-K cosine similarity search over cortex_regulatory_chunks.
78
78
  *
@@ -14,6 +14,7 @@
14
14
  * insert time.
15
15
  */
16
16
  import { tryMutation, tryQuery, withTransaction } from "./db-result.js";
17
+ import { collapseWhitespace } from "./text.js";
17
18
  /**
18
19
  * Split `text` into overlapping chunks bounded by `maxTokens` (word-count
19
20
  * approximation), respecting `## Heading` section boundaries where present.
@@ -36,6 +37,7 @@ export function chunkText(text, opts = {}) {
36
37
  // This ensures a heading at position 0 (no preceding newline) is caught
37
38
  // the same way as headings mid-document.
38
39
  const normalised = text.startsWith("##") ? `\n${text}` : text;
40
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the split marker is a level-2 heading (newline, two hashes, whitespace); the whitespace run may cross the heading's own newline, which the string split cannot express.
39
41
  const parts = normalised.split(/\n##\s+/);
40
42
  // parts[0] is always the lead-in text before the first heading (may be
41
43
  // empty when the document opens with a heading).
@@ -52,7 +54,7 @@ export function chunkText(text, opts = {}) {
52
54
  const out = [];
53
55
  let globalIdx = 0;
54
56
  for (const sec of sections) {
55
- const tokens = sec.body.split(/\s+/).filter(Boolean);
57
+ const tokens = collapseWhitespace(sec.body).split(" ").filter(Boolean);
56
58
  if (tokens.length === 0)
57
59
  continue;
58
60
  // Slide a window of maxTokens tokens with advance = maxTokens - overlapTokens.
@@ -23,14 +23,14 @@
23
23
  * dialect of failure:
24
24
  * - HTTP routes `.match(...)` a `Result` into a response.
25
25
  * - The DBOS step boundary throws on an `err` that must fail or retry
26
- * the step (`unwrapOrThrow` / `resultStep` in `loop/run-step.ts`):
26
+ * the step (`unwrapOrThrow`):
27
27
  * durability records a step as failed — and retries / fails fast —
28
28
  * ONLY on a thrown exception. A step can also return a `Result` as
29
29
  * its value: `runtime/result-serialization.ts` keeps the `Ok` / `Err`
30
30
  * class across the checkpoint, DBOS records the step as a success,
31
31
  * and the body MUST use the `err`.
32
- * - Tool dispatch maps `err` into an `is_error` `tool_result`
33
- * (`loop/run-agent.ts`).
32
+ * - The tool adapter maps `err` into an error tool result
33
+ * (`loop/tool-adapter.ts`).
34
34
  *
35
35
  * Control-flow exceptions (DBOS cancellation, `AbortError`) are NOT failures
36
36
  * and live OUTSIDE the `Result` error channel — they are thrown verbatim and
@@ -47,10 +47,10 @@ import { type Result } from "neverthrow";
47
47
  * `SandboxError`), and ship a `describe*Error` formatter that turns one into
48
48
  * a user-facing line. A step body's error channel is some `DomainError`.
49
49
  */
50
- export interface DomainError {
50
+ export type DomainError = {
51
51
  readonly type: string;
52
52
  readonly cause?: unknown;
53
- }
53
+ };
54
54
  /**
55
55
  * A thrown wrapper for a structured error value that is not already an
56
56
  * `Error`. The original value rides on `.cause`, so the cause-walking
@@ -77,21 +77,20 @@ export declare function toThrowable(value: unknown): Error;
77
77
  *
78
78
  * Use it ONLY where a throw is the boundary's failure contract:
79
79
  *
80
- * - **DBOS workflow/step bodies** (directly, or composed via `resultStep` in
81
- * `loop/run-step.ts`). DBOS records a step as failed — and retries / fails
80
+ * - **DBOS workflow/step bodies**. DBOS records a step as failed — and retries / fails
82
81
  * fast — only on a thrown exception; a *returned* `err` would be durably
83
82
  * cached as a successful step output and replayed as success forever.
84
83
  * - **Tool `execute` bodies**, where the loop's dispatch catch maps the
85
- * throw into a model-visible error tool result (`loop/run-agent.ts`).
84
+ * throw into a model-visible error tool result (`loop/tool-adapter.ts`).
86
85
  * - **Driver edges whose protocol is a throw** (e.g. throw-to-rollback).
87
86
  *
88
87
  * Anywhere else, keep the `Result` flowing: return it, chain
89
88
  * `.andThen`/`.map`/`.mapErr`, or `.match` both branches. Never reach for
90
89
  * this to dodge error handling in composable domain logic.
91
90
  *
92
- * The `must-use-result` lint rule recognizes `unwrapOrThrow(...)` as
93
- * consuming its Result (see the plugin patch in `eslint.config.js`) — do not
94
- * rewrite call sites into inline `.match`+throw forms to appease lint.
91
+ * The `must-use-result` rule of the type check command recognizes
92
+ * `unwrapOrThrow(...)` as consuming its Result — do not rewrite call sites
93
+ * into inline `.match`+throw forms to appease the rule.
95
94
  */
96
95
  export declare function unwrapOrThrow<T, E>(result: Result<T, E>): T;
97
96
  /** Runtime brand check — is this value a neverthrow `Result`? */
@@ -23,14 +23,14 @@
23
23
  * dialect of failure:
24
24
  * - HTTP routes `.match(...)` a `Result` into a response.
25
25
  * - The DBOS step boundary throws on an `err` that must fail or retry
26
- * the step (`unwrapOrThrow` / `resultStep` in `loop/run-step.ts`):
26
+ * the step (`unwrapOrThrow`):
27
27
  * durability records a step as failed — and retries / fails fast —
28
28
  * ONLY on a thrown exception. A step can also return a `Result` as
29
29
  * its value: `runtime/result-serialization.ts` keeps the `Ok` / `Err`
30
30
  * class across the checkpoint, DBOS records the step as a success,
31
31
  * and the body MUST use the `err`.
32
- * - Tool dispatch maps `err` into an `is_error` `tool_result`
33
- * (`loop/run-agent.ts`).
32
+ * - The tool adapter maps `err` into an error tool result
33
+ * (`loop/tool-adapter.ts`).
34
34
  *
35
35
  * Control-flow exceptions (DBOS cancellation, `AbortError`) are NOT failures
36
36
  * and live OUTSIDE the `Result` error channel — they are thrown verbatim and
@@ -39,6 +39,8 @@
39
39
  * Sites import `ok`/`err`/`Result`/`ResultAsync`/`fromPromise`/`fromThrowable`
40
40
  * directly from `neverthrow`; this module owns only the cortex-specific glue.
41
41
  */
42
+ import { parseUnknownRecord } from "../lib/unknown-containers.js";
43
+ import { textOf } from "../lib/unknown-text.js";
42
44
  import { Err, Ok } from "neverthrow";
43
45
  /**
44
46
  * A thrown wrapper for a structured error value that is not already an
@@ -58,16 +60,17 @@ export class ResultError extends Error {
58
60
  function describe(value) {
59
61
  if (value instanceof Error)
60
62
  return value.message;
61
- if (value && typeof value === "object" && "type" in value) {
63
+ const record = parseUnknownRecord(value);
64
+ if (record !== undefined && "type" in record) {
62
65
  // Prefer a human `message` field when the structured error carries one
63
66
  // (e.g. a `ProviderError`) so the wrapped `Error.message` names the
64
67
  // failure; fall back to the `type` discriminant otherwise.
65
- const message = value.message;
68
+ const message = record["message"];
66
69
  if (typeof message === "string" && message.length > 0)
67
70
  return message;
68
- return String(value.type);
71
+ return textOf(record["type"]);
69
72
  }
70
- return String(value);
73
+ return textOf(value);
71
74
  }
72
75
  /**
73
76
  * Bridge a `Result` error value into a thrown `Error` at a boundary that
@@ -86,21 +89,20 @@ export function toThrowable(value) {
86
89
  *
87
90
  * Use it ONLY where a throw is the boundary's failure contract:
88
91
  *
89
- * - **DBOS workflow/step bodies** (directly, or composed via `resultStep` in
90
- * `loop/run-step.ts`). DBOS records a step as failed — and retries / fails
92
+ * - **DBOS workflow/step bodies**. DBOS records a step as failed — and retries / fails
91
93
  * fast — only on a thrown exception; a *returned* `err` would be durably
92
94
  * cached as a successful step output and replayed as success forever.
93
95
  * - **Tool `execute` bodies**, where the loop's dispatch catch maps the
94
- * throw into a model-visible error tool result (`loop/run-agent.ts`).
96
+ * throw into a model-visible error tool result (`loop/tool-adapter.ts`).
95
97
  * - **Driver edges whose protocol is a throw** (e.g. throw-to-rollback).
96
98
  *
97
99
  * Anywhere else, keep the `Result` flowing: return it, chain
98
100
  * `.andThen`/`.map`/`.mapErr`, or `.match` both branches. Never reach for
99
101
  * this to dodge error handling in composable domain logic.
100
102
  *
101
- * The `must-use-result` lint rule recognizes `unwrapOrThrow(...)` as
102
- * consuming its Result (see the plugin patch in `eslint.config.js`) — do not
103
- * rewrite call sites into inline `.match`+throw forms to appease lint.
103
+ * The `must-use-result` rule of the type check command recognizes
104
+ * `unwrapOrThrow(...)` as consuming its Result — do not rewrite call sites
105
+ * into inline `.match`+throw forms to appease the rule.
104
106
  */
105
107
  export function unwrapOrThrow(result) {
106
108
  if (result.isErr())
@@ -12,7 +12,7 @@ import { type Pool } from "pg";
12
12
  * fields plus the optional pool-size override. Composition roots map their
13
13
  * validated `Env` onto this; the harness never reaches for an env loader.
14
14
  */
15
- export interface PoolConfig {
15
+ export type PoolConfig = {
16
16
  readonly host: string;
17
17
  readonly port: string;
18
18
  readonly database: string;
@@ -20,7 +20,7 @@ export interface PoolConfig {
20
20
  readonly password: string;
21
21
  readonly sslMode: "disable" | "require" | "verify-ca" | "verify-full";
22
22
  readonly poolMax?: string;
23
- }
23
+ };
24
24
  /**
25
25
  * Construct the application `pg.Pool`. Called exactly once, at the process
26
26
  * composition root (`server.ts:main()`), and threaded as a constructor dep
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Shared AsyncIterable test helper. It yields the items in order, so a test
3
+ * drives a stream consumer with no timer.
4
+ */
5
+ /**
6
+ * Yields each item of the array in order. When `toThrow` is given, the
7
+ * iterator rejects with it after the last item instead of finishing.
8
+ */
9
+ export declare function asyncIterableOf<T>(items: readonly T[], toThrow?: unknown): AsyncIterable<T>;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Shared AsyncIterable test helper. It yields the items in order, so a test
3
+ * drives a stream consumer with no timer.
4
+ */
5
+ /**
6
+ * Yields each item of the array in order. When `toThrow` is given, the
7
+ * iterator rejects with it after the last item instead of finishing.
8
+ */
9
+ export function asyncIterableOf(items, toThrow) {
10
+ let i = 0;
11
+ return {
12
+ [Symbol.asyncIterator]: () => ({
13
+ next: () => {
14
+ if (i < items.length) {
15
+ const value = items[i];
16
+ if (value === undefined)
17
+ return Promise.resolve({ done: true, value: undefined });
18
+ i += 1;
19
+ return Promise.resolve({ done: false, value });
20
+ }
21
+ // oxlint-disable-next-line typescript/prefer-promise-reject-errors -- a test rejects with the exact abort reason that the production stream carries (DOMException or Error), and the test matches it.
22
+ if (toThrow !== undefined)
23
+ return Promise.reject(toThrow);
24
+ return Promise.resolve({ done: true, value: undefined });
25
+ },
26
+ }),
27
+ };
28
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * The URL text of a fetch target, for test doubles that record what a client
3
+ * asked for: each member of the `fetch` input union names its URL itself.
4
+ */
5
+ export declare function requestUrlText(input: string | URL | Request): string;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The URL text of a fetch target, for test doubles that record what a client
3
+ * asked for: each member of the `fetch` input union names its URL itself.
4
+ */
5
+ export function requestUrlText(input) {
6
+ return typeof input === "string" ? input : input instanceof URL ? input.href : input.url;
7
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Shared Result assertion helper for the test files of several module families.
3
+ * The helper serves a guaranteed ok: a test that expects an err states it with
4
+ * `_unsafeUnwrapErr` directly.
5
+ */
6
+ import type { Result, ResultAsync } from "neverthrow";
7
+ /**
8
+ * Awaits a `Result`-bearing call and unwraps the ok, so the call states that it
9
+ * succeeded. An err throws an `Error` with a stack and the err value as its
10
+ * `cause`, where `_unsafeUnwrap` throws a plain object with no stack.
11
+ */
12
+ export declare function awaitOk<T, E>(call: Result<T, E> | Promise<Result<T, E>> | ResultAsync<T, E>): Promise<T>;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Shared Result assertion helper for the test files of several module families.
3
+ * The helper serves a guaranteed ok: a test that expects an err states it with
4
+ * `_unsafeUnwrapErr` directly.
5
+ */
6
+ import { textOf } from "../unknown-text.js";
7
+ /**
8
+ * Awaits a `Result`-bearing call and unwraps the ok, so the call states that it
9
+ * succeeded. An err throws an `Error` with a stack and the err value as its
10
+ * `cause`, where `_unsafeUnwrap` throws a plain object with no stack.
11
+ */
12
+ export async function awaitOk(call) {
13
+ const result = await call;
14
+ if (result.isErr())
15
+ throw new Error(`the call gave an err: ${textOf(result.error)}`, { cause: result.error });
16
+ return result.value;
17
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Text shapes that the test files of several module families assert: the lowercase
3
+ * hex digest family, the tool-output reference, the six-digit hex color, and the
4
+ * paired-surrogate invariants of cut text. Each predicate reads the string with the
5
+ * string methods and the char codes, so no pattern lives here.
6
+ */
7
+ /** Whether `text` is exactly `length` lowercase hex characters. */
8
+ export declare function isLowerHexOfLength(text: string, length: number): boolean;
9
+ /** Whether `text` is a `sha256:` content hash over a 64-digit lowercase hex digest. */
10
+ export declare function isSha256Hash(text: string): boolean;
11
+ /** Whether `text` is a tool-output reference: `to_` over 20 lowercase hex characters. */
12
+ export declare function isToolOutputRef(text: string): boolean;
13
+ /**
14
+ * The tool-output reference that a cut-result marker names, or undefined when the text
15
+ * names none. The marker reads `reference "to_<20 hex>"`, and the reference ends at its
16
+ * closing quote.
17
+ */
18
+ export declare function referencedToolOutput(text: string): string | undefined;
19
+ /** Whether `text` is an RGB color in the six-digit lowercase hex form: `#1a2b3c`. */
20
+ export declare function isHexColor(text: string): boolean;
21
+ /** Whether `text` holds a high surrogate that no low surrogate follows. */
22
+ export declare function hasLoneHighSurrogate(text: string): boolean;
23
+ /** Whether `text` holds a low surrogate that no high surrogate precedes. */
24
+ export declare function hasLoneLowSurrogate(text: string): boolean;
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Text shapes that the test files of several module families assert: the lowercase
3
+ * hex digest family, the tool-output reference, the six-digit hex color, and the
4
+ * paired-surrogate invariants of cut text. Each predicate reads the string with the
5
+ * string methods and the char codes, so no pattern lives here.
6
+ */
7
+ function isLowerHex(text) {
8
+ return Array.from(text).every((char) => (char >= "0" && char <= "9") || (char >= "a" && char <= "f"));
9
+ }
10
+ /** Whether `text` is exactly `length` lowercase hex characters. */
11
+ export function isLowerHexOfLength(text, length) {
12
+ return text.length === length && isLowerHex(text);
13
+ }
14
+ /** Whether `text` is a `sha256:` content hash over a 64-digit lowercase hex digest. */
15
+ export function isSha256Hash(text) {
16
+ return text.startsWith("sha256:") && isLowerHexOfLength(text.slice("sha256:".length), 64);
17
+ }
18
+ /** Whether `text` is a tool-output reference: `to_` over 20 lowercase hex characters. */
19
+ export function isToolOutputRef(text) {
20
+ return text.startsWith("to_") && isLowerHexOfLength(text.slice("to_".length), 20);
21
+ }
22
+ /**
23
+ * The tool-output reference that a cut-result marker names, or undefined when the text
24
+ * names none. The marker reads `reference "to_<20 hex>"`, and the reference ends at its
25
+ * closing quote.
26
+ */
27
+ export function referencedToolOutput(text) {
28
+ const opener = 'reference "';
29
+ const at = text.indexOf(opener);
30
+ if (at < 0)
31
+ return undefined;
32
+ const start = at + opener.length;
33
+ const ref = text.slice(start, start + "to_".length + 20);
34
+ if (!isToolOutputRef(ref) || text.charAt(start + ref.length) !== '"')
35
+ return undefined;
36
+ return ref;
37
+ }
38
+ /** Whether `text` is an RGB color in the six-digit lowercase hex form: `#1a2b3c`. */
39
+ export function isHexColor(text) {
40
+ return text.startsWith("#") && isLowerHexOfLength(text.slice(1), 6);
41
+ }
42
+ function isHighSurrogate(unit) {
43
+ return unit >= 0xd800 && unit <= 0xdbff;
44
+ }
45
+ function isLowSurrogate(unit) {
46
+ return unit >= 0xdc00 && unit <= 0xdfff;
47
+ }
48
+ /** Whether `text` holds a high surrogate that no low surrogate follows. */
49
+ export function hasLoneHighSurrogate(text) {
50
+ for (let i = 0; i < text.length; i++) {
51
+ if (isHighSurrogate(text.charCodeAt(i)) && !isLowSurrogate(text.charCodeAt(i + 1)))
52
+ return true;
53
+ }
54
+ return false;
55
+ }
56
+ /** Whether `text` holds a low surrogate that no high surrogate precedes. */
57
+ export function hasLoneLowSurrogate(text) {
58
+ for (let i = 0; i < text.length; i++) {
59
+ if (isLowSurrogate(text.charCodeAt(i)) && !isHighSurrogate(text.charCodeAt(i - 1)))
60
+ return true;
61
+ }
62
+ return false;
63
+ }