@inflexa-ai/harness 0.45.1 → 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 (789) hide show
  1. package/README.md +6 -3
  2. package/dist/agents/conversation-agent.d.ts +9 -3
  3. package/dist/agents/conversation-agent.js +34 -33
  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 +12 -14
  9. package/dist/agents/sandbox/shared.js +18 -12
  10. package/dist/agents/sandbox/types.d.ts +4 -4
  11. package/dist/agents/sandbox/validate-skills.d.ts +2 -2
  12. package/dist/agents/sandbox/validate-skills.js +3 -1
  13. package/dist/agents/sandbox-catalog.d.ts +2 -2
  14. package/dist/agents/sandbox-catalog.js +3 -3
  15. package/dist/agents/system-prompt.d.ts +2 -2
  16. package/dist/app/chat-turn-workflow.d.ts +114 -0
  17. package/dist/app/chat-turn-workflow.js +307 -0
  18. package/dist/app/chat-turn.d.ts +85 -57
  19. package/dist/app/chat-turn.js +123 -100
  20. package/dist/app/data-profile-orientation.js +10 -8
  21. package/dist/app/data-profile-view.d.ts +4 -4
  22. package/dist/app/data-profile-view.js +9 -8
  23. package/dist/app/in-process-turn.d.ts +42 -0
  24. package/dist/app/in-process-turn.js +139 -0
  25. package/dist/app/message-assembly.d.ts +10 -4
  26. package/dist/app/message-assembly.js +13 -8
  27. package/dist/app/report-session-runtime.d.ts +4 -4
  28. package/dist/app/report-session-runtime.js +36 -21
  29. package/dist/app/spawn-report-session.d.ts +33 -28
  30. package/dist/app/spawn-report-session.js +25 -40
  31. package/dist/app/synthesize-run.d.ts +22 -16
  32. package/dist/app/synthesize-run.js +41 -35
  33. package/dist/app/work.d.ts +96 -0
  34. package/dist/app/work.js +147 -0
  35. package/dist/auth/local-auth-context.d.ts +1 -3
  36. package/dist/auth/local-auth-context.js +1 -3
  37. package/dist/auth/local-run-authorizer.d.ts +1 -1
  38. package/dist/auth/local-run-authorizer.js +5 -3
  39. package/dist/auth/types.d.ts +26 -26
  40. package/dist/billing/cached-resolver.d.ts +4 -4
  41. package/dist/billing/run-charge.d.ts +5 -8
  42. package/dist/billing/run-charge.js +2 -2
  43. package/dist/billing/usage-recorder.d.ts +9 -9
  44. package/dist/citations/aggregate.js +1 -1
  45. package/dist/citations/clients/arxiv.d.ts +2 -2
  46. package/dist/citations/clients/arxiv.js +12 -4
  47. package/dist/citations/clients/common.js +4 -2
  48. package/dist/citations/clients/crossref.d.ts +2 -2
  49. package/dist/citations/clients/crossref.js +37 -37
  50. package/dist/citations/clients/doi-registry.js +15 -16
  51. package/dist/citations/clients/pubmed.d.ts +2 -2
  52. package/dist/citations/clients/pubmed.js +20 -13
  53. package/dist/citations/clients/semantic-scholar.d.ts +2 -2
  54. package/dist/citations/clients/semantic-scholar.js +9 -9
  55. package/dist/citations/compare.js +2 -2
  56. package/dist/citations/match.d.ts +2 -2
  57. package/dist/citations/match.js +12 -7
  58. package/dist/citations/normalize.js +35 -26
  59. package/dist/citations/plan.js +6 -2
  60. package/dist/citations/resolve.d.ts +6 -6
  61. package/dist/citations/resolve.js +34 -25
  62. package/dist/citations/types.d.ts +77 -77
  63. package/dist/config/environment-stores.d.ts +6 -6
  64. package/dist/config/resource-limits.js +1 -3
  65. package/dist/contracts/analogy-report.d.ts +7 -7
  66. package/dist/contracts/analogy-report.js +2 -2
  67. package/dist/contracts/chat-events.d.ts +38 -24
  68. package/dist/contracts/chat-frame.d.ts +15 -5
  69. package/dist/contracts/chat-frame.js +64 -41
  70. package/dist/contracts/chat-parts.d.ts +130 -67
  71. package/dist/contracts/chat-parts.js +1 -0
  72. package/dist/contracts/content-url.js +16 -2
  73. package/dist/contracts/data-profile.d.ts +38 -38
  74. package/dist/contracts/index.d.ts +2 -2
  75. package/dist/contracts/index.js +1 -1
  76. package/dist/contracts/message.d.ts +6 -6
  77. package/dist/contracts/organ-system.d.ts +11 -11
  78. package/dist/contracts/part-registry.d.ts +5 -4
  79. package/dist/contracts/part-registry.js +5 -0
  80. package/dist/contracts/profile-vocabulary.d.ts +11 -10
  81. package/dist/contracts/profile-vocabulary.js +10 -3
  82. package/dist/contracts/report-blocks.d.ts +329 -329
  83. package/dist/contracts/report-reference.d.ts +105 -81
  84. package/dist/contracts/report-reference.js +30 -13
  85. package/dist/contracts/schemas/chat-events.d.ts +30 -16
  86. package/dist/contracts/schemas/chat-events.js +15 -6
  87. package/dist/contracts/schemas/chat-parts.d.ts +175 -102
  88. package/dist/contracts/schemas/chat-parts.js +33 -7
  89. package/dist/contracts/severity.d.ts +1 -1
  90. package/dist/contracts/structure-source.d.ts +3 -3
  91. package/dist/contracts/structure-source.js +6 -2
  92. package/dist/contracts/subagent-activity.d.ts +2 -2
  93. package/dist/contracts/subagent-activity.js +5 -3
  94. package/dist/contracts/usage.d.ts +2 -2
  95. package/dist/data/safety-panel-schema.d.ts +25 -25
  96. package/dist/data/safety-panel-schema.js +13 -4
  97. package/dist/execution/artifact-metadata.d.ts +23 -15
  98. package/dist/execution/artifact-metadata.js +33 -10
  99. package/dist/execution/artifact-record.d.ts +2 -2
  100. package/dist/execution/artifact-registration.d.ts +5 -5
  101. package/dist/execution/artifact-registry.d.ts +8 -8
  102. package/dist/execution/dbos-run-launcher.d.ts +24 -4
  103. package/dist/execution/dbos-run-launcher.js +58 -4
  104. package/dist/execution/dbos-workflow-purger.d.ts +5 -6
  105. package/dist/execution/dbos-workflow-purger.js +8 -7
  106. package/dist/execution/input-signature.d.ts +2 -2
  107. package/dist/execution/post-step-pipeline.d.ts +9 -9
  108. package/dist/execution/post-step-pipeline.js +1 -1
  109. package/dist/execution/post-step.js +2 -2
  110. package/dist/execution/reconcile-manifest.d.ts +4 -4
  111. package/dist/execution/reconcile-manifest.js +3 -2
  112. package/dist/execution/run-authorizer.d.ts +46 -37
  113. package/dist/execution/run-authorizer.js +8 -8
  114. package/dist/execution/run-canceler.d.ts +7 -7
  115. package/dist/execution/run-canceler.js +14 -7
  116. package/dist/execution/run-end-record.d.ts +2 -3
  117. package/dist/execution/run-event-parts.d.ts +0 -8
  118. package/dist/execution/run-event-parts.js +29 -24
  119. package/dist/execution/run-event-stream.d.ts +8 -8
  120. package/dist/execution/run-event-stream.js +3 -4
  121. package/dist/execution/run-launcher.d.ts +4 -4
  122. package/dist/execution/run-synthesis.d.ts +49 -48
  123. package/dist/execution/run-synthesis.js +96 -255
  124. package/dist/execution/staged-input.d.ts +2 -2
  125. package/dist/execution/step-summary.d.ts +6 -6
  126. package/dist/execution/step-summary.js +4 -8
  127. package/dist/execution/topo-sort.js +4 -3
  128. package/dist/execution/workflow-purger.d.ts +2 -2
  129. package/dist/index.d.ts +17 -20
  130. package/dist/index.js +25 -36
  131. package/dist/input-sanitization.js +9 -2
  132. package/dist/input-scan/clustering.d.ts +6 -6
  133. package/dist/input-scan/clustering.js +11 -5
  134. package/dist/input-scan/companions.js +3 -2
  135. package/dist/input-scan/detect-sets.d.ts +2 -2
  136. package/dist/input-scan/detect-sets.js +25 -21
  137. package/dist/input-scan/enrich.d.ts +6 -6
  138. package/dist/input-scan/enrich.js +29 -12
  139. package/dist/input-scan/formats.d.ts +2 -2
  140. package/dist/input-scan/formats.js +8 -2
  141. package/dist/input-scan/markers.d.ts +2 -2
  142. package/dist/input-scan/markers.js +14 -5
  143. package/dist/input-scan/menu.d.ts +10 -10
  144. package/dist/input-scan/menu.js +0 -0
  145. package/dist/input-scan/quarantine.d.ts +2 -2
  146. package/dist/input-scan/quarantine.js +23 -18
  147. package/dist/input-scan/readout-budget.d.ts +2 -2
  148. package/dist/input-scan/readout-budget.js +1 -1
  149. package/dist/input-scan/readout.d.ts +2 -2
  150. package/dist/input-scan/readout.js +47 -34
  151. package/dist/input-scan/scan.d.ts +2 -2
  152. package/dist/input-scan/scan.js +7 -5
  153. package/dist/input-scan/set-types.d.ts +28 -28
  154. package/dist/input-scan/shapes.d.ts +4 -4
  155. package/dist/input-scan/shapes.js +0 -0
  156. package/dist/input-scan/templates.d.ts +10 -10
  157. package/dist/input-scan/templates.js +30 -22
  158. package/dist/input-scan/tokens.d.ts +6 -4
  159. package/dist/input-scan/tokens.js +100 -38
  160. package/dist/input-scan/types.d.ts +22 -22
  161. package/dist/lib/async-utils.d.ts +3 -7
  162. package/dist/lib/async-utils.js +5 -9
  163. package/dist/lib/cache.js +1 -1
  164. package/dist/lib/chrome.d.ts +46 -6
  165. package/dist/lib/console-logger.js +2 -2
  166. package/dist/lib/db-result.d.ts +22 -6
  167. package/dist/lib/db-result.js +9 -13
  168. package/dist/lib/eyes.d.ts +4 -4
  169. package/dist/lib/eyes.js +1 -1
  170. package/dist/lib/fs-helpers.js +18 -6
  171. package/dist/lib/fs-result.d.ts +1 -0
  172. package/dist/lib/fs-result.js +5 -6
  173. package/dist/lib/hooks.d.ts +23 -7
  174. package/dist/lib/hooks.js +17 -3
  175. package/dist/lib/host-concurrency.js +3 -2
  176. package/dist/lib/logger.d.ts +2 -2
  177. package/dist/lib/logger.js +2 -1
  178. package/dist/lib/metrics.d.ts +1 -1
  179. package/dist/lib/null-proto.d.ts +6 -0
  180. package/dist/lib/null-proto.js +17 -0
  181. package/dist/lib/otel-spans.d.ts +1 -1
  182. package/dist/lib/otel-spans.js +9 -5
  183. package/dist/lib/otel.d.ts +4 -2
  184. package/dist/lib/otel.js +10 -2
  185. package/dist/lib/page-capture.d.ts +8 -8
  186. package/dist/lib/page-capture.js +9 -4
  187. package/dist/lib/parse-json.d.ts +5 -0
  188. package/dist/lib/parse-json.js +12 -0
  189. package/dist/lib/present.d.ts +12 -0
  190. package/dist/lib/present.js +39 -0
  191. package/dist/lib/rate-limit.d.ts +4 -4
  192. package/dist/lib/rate-limit.js +12 -13
  193. package/dist/lib/regulatory-corpus/fetch-fda-guidance.d.ts +4 -4
  194. package/dist/lib/regulatory-corpus/fetch-fda-guidance.js +4 -10
  195. package/dist/lib/regulatory-corpus/fetch-ich.d.ts +4 -4
  196. package/dist/lib/regulatory-corpus/fetch-ich.js +18 -14
  197. package/dist/lib/regulatory-corpus/normalize-whitespace.d.ts +6 -0
  198. package/dist/lib/regulatory-corpus/normalize-whitespace.js +41 -0
  199. package/dist/lib/regulatory-corpus.d.ts +10 -10
  200. package/dist/lib/regulatory-corpus.js +3 -1
  201. package/dist/lib/result.d.ts +10 -11
  202. package/dist/lib/result.js +15 -13
  203. package/dist/lib/storage.d.ts +2 -2
  204. package/dist/lib/test/async-iterable.d.ts +9 -0
  205. package/dist/lib/test/async-iterable.js +28 -0
  206. package/dist/lib/test/request-url.d.ts +5 -0
  207. package/dist/lib/test/request-url.js +7 -0
  208. package/dist/lib/test/result-assert.d.ts +12 -0
  209. package/dist/lib/test/result-assert.js +17 -0
  210. package/dist/lib/test/text-shapes.d.ts +24 -0
  211. package/dist/lib/test/text-shapes.js +63 -0
  212. package/dist/lib/text.d.ts +22 -0
  213. package/dist/lib/text.js +68 -0
  214. package/dist/lib/thrown.d.ts +18 -0
  215. package/dist/lib/thrown.js +30 -0
  216. package/dist/lib/unknown-array.d.ts +6 -0
  217. package/dist/lib/unknown-array.js +8 -0
  218. package/dist/lib/unknown-containers.d.ts +14 -0
  219. package/dist/lib/unknown-containers.js +17 -0
  220. package/dist/lib/unknown-text.d.ts +8 -0
  221. package/dist/lib/unknown-text.js +28 -0
  222. package/dist/lib/zod-issue-shape.d.ts +1 -1
  223. package/dist/lib/zod-issue-shape.js +31 -31
  224. package/dist/lib/zod-issues.d.ts +3 -3
  225. package/dist/lib/zod-issues.js +30 -17
  226. package/dist/literature/sources/arxiv.d.ts +6 -6
  227. package/dist/literature/sources/arxiv.js +92 -35
  228. package/dist/literature/sources/http.d.ts +2 -2
  229. package/dist/literature/sources/http.js +16 -15
  230. package/dist/literature/sources/pubmed.d.ts +16 -16
  231. package/dist/literature/sources/pubmed.js +96 -61
  232. package/dist/literature/sources/semantic-scholar.d.ts +8 -8
  233. package/dist/literature/sources/semantic-scholar.js +22 -13
  234. package/dist/loop/accounting.d.ts +63 -0
  235. package/dist/loop/accounting.js +141 -0
  236. package/dist/loop/call-policy.d.ts +73 -0
  237. package/dist/loop/call-policy.js +109 -0
  238. package/dist/loop/chat-stream.d.ts +62 -0
  239. package/dist/loop/chat-stream.js +237 -0
  240. package/dist/loop/compaction.d.ts +9 -9
  241. package/dist/loop/compaction.js +1 -1
  242. package/dist/loop/metrics.d.ts +12 -15
  243. package/dist/loop/metrics.js +14 -26
  244. package/dist/loop/run-loop.d.ts +233 -0
  245. package/dist/loop/run-loop.js +770 -0
  246. package/dist/loop/sub-agent.d.ts +61 -0
  247. package/dist/loop/sub-agent.js +161 -0
  248. package/dist/loop/tool-adapter.d.ts +98 -0
  249. package/dist/loop/tool-adapter.js +364 -0
  250. package/dist/loop/tool-detail.d.ts +1 -1
  251. package/dist/loop/tool-detail.js +6 -5
  252. package/dist/loop/tool-outcome.d.ts +1 -1
  253. package/dist/loop/tool-output.d.ts +4 -4
  254. package/dist/loop/tool-output.js +2 -2
  255. package/dist/loop/turn-credentials.d.ts +34 -0
  256. package/dist/loop/turn-credentials.js +73 -0
  257. package/dist/loop/types.d.ts +29 -38
  258. package/dist/loop/types.js +2 -7
  259. package/dist/memory/ai-sdk-message-storage.d.ts +5 -5
  260. package/dist/memory/ai-sdk-message-storage.js +13 -11
  261. package/dist/memory/card-builders.d.ts +14 -14
  262. package/dist/memory/card-builders.js +19 -15
  263. package/dist/memory/conversation-display-recorder.d.ts +22 -4
  264. package/dist/memory/conversation-display-recorder.js +43 -24
  265. package/dist/memory/conversation-display-replay.js +3 -2
  266. package/dist/memory/conversation-display-storage.d.ts +15 -7
  267. package/dist/memory/conversation-display-storage.js +141 -36
  268. package/dist/memory/conversation-view.d.ts +4 -4
  269. package/dist/memory/conversation-view.js +5 -4
  270. package/dist/memory/count-tokens.js +10 -8
  271. package/dist/memory/derive-thread-title.d.ts +0 -13
  272. package/dist/memory/derive-thread-title.js +2 -1
  273. package/dist/memory/message-backfill.d.ts +12 -5
  274. package/dist/memory/message-backfill.js +5 -3
  275. package/dist/memory/thread-history.d.ts +36 -21
  276. package/dist/memory/thread-history.js +78 -54
  277. package/dist/memory/thread-store.d.ts +26 -17
  278. package/dist/memory/thread-store.js +15 -9
  279. package/dist/memory/tool-call-integrity.d.ts +2 -2
  280. package/dist/memory/tool-call-integrity.js +4 -3
  281. package/dist/memory/working-memory.d.ts +16 -12
  282. package/dist/memory/working-memory.js +72 -61
  283. package/dist/prompts/briefing.d.ts +12 -12
  284. package/dist/prompts/briefing.js +1 -1
  285. package/dist/prompts/synthesis-agent.d.ts +1 -1
  286. package/dist/prompts/synthesis-agent.js +6 -14
  287. package/dist/provenance/collector.d.ts +6 -6
  288. package/dist/provenance/collector.js +15 -8
  289. package/dist/provenance/exec-frame.d.ts +2 -2
  290. package/dist/provenance/exec-frame.js +6 -1
  291. package/dist/provenance/seam.d.ts +1 -4
  292. package/dist/provenance/types.d.ts +6 -6
  293. package/dist/providers/ai-sdk.d.ts +113 -62
  294. package/dist/providers/ai-sdk.js +283 -518
  295. package/dist/providers/embedding.d.ts +2 -2
  296. package/dist/providers/embedding.js +1 -1
  297. package/dist/providers/errors.d.ts +22 -2
  298. package/dist/providers/errors.js +98 -50
  299. package/dist/providers/prompt-cache.d.ts +8 -8
  300. package/dist/providers/prompt-cache.js +13 -11
  301. package/dist/providers/reasoning.d.ts +2 -2
  302. package/dist/providers/reasoning.js +2 -2
  303. package/dist/providers/types.d.ts +55 -94
  304. package/dist/reference-data/catalog.d.ts +2 -15
  305. package/dist/reference-data/catalog.js +25 -8
  306. package/dist/reference-data/receipt.d.ts +2 -2
  307. package/dist/report-model/assert-rules.js +1 -1
  308. package/dist/report-model/authoring-grammar.d.ts +211 -233
  309. package/dist/report-model/block-walk.d.ts +10 -10
  310. package/dist/report-model/block-walk.js +2 -0
  311. package/dist/report-model/draft-finish.d.ts +8 -8
  312. package/dist/report-model/draft-finish.js +1 -1
  313. package/dist/report-model/draft-hash.js +8 -7
  314. package/dist/report-model/draft-operations.d.ts +22 -10
  315. package/dist/report-model/draft-operations.js +48 -30
  316. package/dist/report-model/draft-read.d.ts +19 -7
  317. package/dist/report-model/draft-read.js +16 -6
  318. package/dist/report-model/draft.d.ts +844 -2
  319. package/dist/report-model/draft.js +3 -1
  320. package/dist/report-model/fixture-resolver.js +39 -16
  321. package/dist/report-model/pin-snapshot.d.ts +2 -2
  322. package/dist/report-model/pin-snapshot.js +15 -15
  323. package/dist/report-model/production-resolver.d.ts +18 -18
  324. package/dist/report-model/production-resolver.js +50 -42
  325. package/dist/report-model/reference-resolver.d.ts +26 -10
  326. package/dist/report-model/reference-resolver.js +68 -5
  327. package/dist/report-model/reference-stamp.js +30 -38
  328. package/dist/report-model/structural-validation.js +12 -4
  329. package/dist/report-model/validate.d.ts +7 -7
  330. package/dist/report-model/validate.js +6 -6
  331. package/dist/report-render/assets.d.ts +2 -2
  332. package/dist/report-render/assets.js +27 -3
  333. package/dist/report-render/chart-export.d.ts +10 -2
  334. package/dist/report-render/chart-export.js +37 -11
  335. package/dist/report-render/chart-presets.d.ts +8 -8
  336. package/dist/report-render/chart-presets.js +3 -3
  337. package/dist/report-render/chart-renderers.d.ts +23 -16
  338. package/dist/report-render/chart-renderers.js +74 -53
  339. package/dist/report-render/chart-toolbox.d.ts +2 -2
  340. package/dist/report-render/chart-toolbox.js +7 -6
  341. package/dist/report-render/chart.d.ts +15 -16
  342. package/dist/report-render/chart.js +369 -252
  343. package/dist/report-render/design.d.ts +36 -297
  344. package/dist/report-render/design.js +0 -12
  345. package/dist/report-render/figures/common.d.ts +12 -12
  346. package/dist/report-render/figures/common.js +42 -31
  347. package/dist/report-render/figures/dendrogram.d.ts +3 -3
  348. package/dist/report-render/figures/dendrogram.js +10 -10
  349. package/dist/report-render/figures/dense.js +15 -8
  350. package/dist/report-render/figures/dotplot.js +46 -33
  351. package/dist/report-render/figures/embedding.js +52 -43
  352. package/dist/report-render/figures/equal-units.d.ts +10 -10
  353. package/dist/report-render/figures/equal-units.js +27 -27
  354. package/dist/report-render/figures/forest.js +9 -7
  355. package/dist/report-render/figures/gsea.js +21 -11
  356. package/dist/report-render/figures/heatmap.js +13 -9
  357. package/dist/report-render/figures/index.d.ts +10 -10
  358. package/dist/report-render/figures/index.js +4 -2
  359. package/dist/report-render/figures/km.js +10 -9
  360. package/dist/report-render/figures/label-room.d.ts +12 -12
  361. package/dist/report-render/figures/label-room.js +7 -2
  362. package/dist/report-render/figures/locuszoom.d.ts +2 -2
  363. package/dist/report-render/figures/locuszoom.js +59 -31
  364. package/dist/report-render/figures/lollipop.js +3 -2
  365. package/dist/report-render/figures/ma.js +8 -4
  366. package/dist/report-render/figures/manhattan.d.ts +1 -2
  367. package/dist/report-render/figures/manhattan.js +52 -34
  368. package/dist/report-render/figures/oncoprint.js +4 -5
  369. package/dist/report-render/figures/pca.js +25 -11
  370. package/dist/report-render/figures/qq.js +20 -9
  371. package/dist/report-render/figures/roc.js +1 -1
  372. package/dist/report-render/figures/sankey.d.ts +2 -2
  373. package/dist/report-render/figures/sankey.js +11 -10
  374. package/dist/report-render/figures/upset.d.ts +6 -6
  375. package/dist/report-render/figures/upset.js +7 -4
  376. package/dist/report-render/figures/volcano.js +12 -10
  377. package/dist/report-render/hybrid-svg.d.ts +4 -4
  378. package/dist/report-render/hybrid-svg.js +7 -5
  379. package/dist/report-render/number-format.d.ts +4 -4
  380. package/dist/report-render/number-format.js +62 -27
  381. package/dist/report-render/page.js +2 -1
  382. package/dist/report-render/provenance-data.d.ts +2 -2
  383. package/dist/report-render/references.d.ts +4 -4
  384. package/dist/report-render/render.d.ts +2 -2
  385. package/dist/report-render/render.js +10 -11
  386. package/dist/report-render/script-json.js +1 -1
  387. package/dist/report-render/table-data.d.ts +6 -6
  388. package/dist/report-render/test/options.d.ts +49 -0
  389. package/dist/report-render/test/options.js +143 -0
  390. package/dist/report-render/test/page-function.d.ts +19 -0
  391. package/dist/report-render/test/page-function.js +33 -0
  392. package/dist/report-render/types.d.ts +10 -10
  393. package/dist/report-render/value-bridge.d.ts +4 -4
  394. package/dist/report-render/value-bridge.js +27 -14
  395. package/dist/report-render/views/chart-view.d.ts +2 -2
  396. package/dist/report-render/views/chart-view.js +2 -2
  397. package/dist/report-render/views/lineage.d.ts +6 -6
  398. package/dist/report-render/views/lineage.js +2 -0
  399. package/dist/report-render/views/page-view.d.ts +2 -2
  400. package/dist/report-render/views/page-view.js +1 -0
  401. package/dist/report-render/views/prose.js +25 -8
  402. package/dist/report-render/views/references-view.js +12 -1
  403. package/dist/report-render/views/values.js +1 -1
  404. package/dist/runtime/assemble.d.ts +53 -26
  405. package/dist/runtime/assemble.js +103 -56
  406. package/dist/runtime/boot.d.ts +8 -7
  407. package/dist/runtime/boot.js +1 -1
  408. package/dist/runtime/connection-budget.d.ts +6 -6
  409. package/dist/runtime/connection-budget.js +1 -1
  410. package/dist/runtime/dbos.d.ts +29 -19
  411. package/dist/runtime/dbos.js +35 -20
  412. package/dist/runtime/result-serialization.js +18 -5
  413. package/dist/runtime/shutdown.d.ts +2 -2
  414. package/dist/sandbox/client.d.ts +7 -3
  415. package/dist/sandbox/cpu-files.d.ts +2 -2
  416. package/dist/sandbox/cpu-files.js +21 -4
  417. package/dist/sandbox/create-sandbox.d.ts +7 -8
  418. package/dist/sandbox/create-sandbox.js +6 -12
  419. package/dist/sandbox/docker-client.d.ts +48 -3
  420. package/dist/sandbox/docker-client.js +10 -6
  421. package/dist/sandbox/estimate-data-profile-resources.js +2 -7
  422. package/dist/sandbox/exec-outcome.d.ts +2 -2
  423. package/dist/sandbox/exec-outcome.js +1 -1
  424. package/dist/sandbox/exec.d.ts +10 -6
  425. package/dist/sandbox/exec.js +27 -12
  426. package/dist/sandbox/execution-id.js +14 -6
  427. package/dist/sandbox/farm.d.ts +2 -2
  428. package/dist/sandbox/farm.js +22 -27
  429. package/dist/sandbox/identity.d.ts +7 -0
  430. package/dist/sandbox/identity.js +14 -3
  431. package/dist/sandbox/image-packages.js +15 -27
  432. package/dist/sandbox/k8s-client.d.ts +35 -8
  433. package/dist/sandbox/k8s-client.js +6 -5
  434. package/dist/sandbox/labels.js +1 -0
  435. package/dist/sandbox/liveness.js +3 -1
  436. package/dist/sandbox/mount-plan.d.ts +10 -10
  437. package/dist/sandbox/mount-plan.js +13 -14
  438. package/dist/sandbox/notification-sweep.d.ts +4 -4
  439. package/dist/sandbox/notification-sweep.js +4 -7
  440. package/dist/sandbox/package-identity.d.ts +6 -13
  441. package/dist/sandbox/package-identity.js +46 -28
  442. package/dist/sandbox/reaper.d.ts +10 -10
  443. package/dist/sandbox/reaper.js +4 -6
  444. package/dist/sandbox/sandbox-error.d.ts +2 -9
  445. package/dist/sandbox/sandbox-error.js +21 -8
  446. package/dist/sandbox/sandbox-step-translate.d.ts +8 -5
  447. package/dist/sandbox/sandbox-step-translate.js +22 -8
  448. package/dist/sandbox/step-sandbox.d.ts +47 -0
  449. package/dist/sandbox/step-sandbox.js +53 -0
  450. package/dist/sandbox/types.d.ts +18 -19
  451. package/dist/sandbox/types.js +1 -1
  452. package/dist/schemas/artifact-manifest.d.ts +4 -4
  453. package/dist/schemas/data-profile-schemas.d.ts +343 -298
  454. package/dist/schemas/file-metadata.js +2 -4
  455. package/dist/schemas/plan-schemas.d.ts +31 -31
  456. package/dist/schemas/run-synthesis.d.ts +95 -26
  457. package/dist/schemas/run-synthesis.js +3 -1
  458. package/dist/schemas/validate-plan.d.ts +4 -4
  459. package/dist/schemas/validate-plan.js +17 -5
  460. package/dist/schemas/workflow-state.d.ts +19 -19
  461. package/dist/schemas/workflow-state.js +2 -2
  462. package/dist/state/active-turns.d.ts +36 -0
  463. package/dist/state/active-turns.js +67 -0
  464. package/dist/state/analyses-metrics.d.ts +8 -8
  465. package/dist/state/analyses-metrics.js +4 -4
  466. package/dist/state/analyses.d.ts +0 -14
  467. package/dist/state/analyses.js +0 -32
  468. package/dist/state/artifacts.d.ts +32 -19
  469. package/dist/state/artifacts.js +28 -5
  470. package/dist/state/data-profile.d.ts +2 -2
  471. package/dist/state/db.d.ts +12 -2
  472. package/dist/state/db.js +5 -0
  473. package/dist/state/edit-intents.d.ts +4 -0
  474. package/dist/state/edit-intents.js +71 -0
  475. package/dist/state/index.d.ts +4 -4
  476. package/dist/state/index.js +2 -2
  477. package/dist/state/init.d.ts +2 -1
  478. package/dist/state/init.js +5 -2
  479. package/dist/state/migrations/20260927120000_baseline.js +3 -1
  480. package/dist/state/migrations/20261026120000_add_the_edit_intents.d.ts +7 -0
  481. package/dist/state/migrations/20261026120000_add_the_edit_intents.js +21 -0
  482. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.d.ts +7 -0
  483. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.js +16 -0
  484. package/dist/state/migrations/20261027120100_store_the_authoring_results.d.ts +8 -0
  485. package/dist/state/migrations/20261027120100_store_the_authoring_results.js +20 -0
  486. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.d.ts +7 -0
  487. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.js +12 -0
  488. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.d.ts +7 -0
  489. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.js +11 -0
  490. package/dist/state/migrations/20261028120000_record_the_paused_work.d.ts +7 -0
  491. package/dist/state/migrations/20261028120000_record_the_paused_work.js +25 -0
  492. package/dist/state/migrations/20261028120100_end_the_suspended_runs.d.ts +8 -0
  493. package/dist/state/migrations/20261028120100_end_the_suspended_runs.js +13 -0
  494. package/dist/state/migrations/20261029120000_reference_the_run_mandate.d.ts +7 -0
  495. package/dist/state/migrations/20261029120000_reference_the_run_mandate.js +23 -0
  496. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.d.ts +7 -0
  497. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.js +11 -0
  498. package/dist/state/migrations/index.js +18 -0
  499. package/dist/state/paused-work.d.ts +52 -0
  500. package/dist/state/paused-work.js +105 -0
  501. package/dist/state/plans.d.ts +27 -8
  502. package/dist/state/plans.js +14 -11
  503. package/dist/state/purge-analysis.d.ts +6 -6
  504. package/dist/state/purge-analysis.js +10 -2
  505. package/dist/state/report-session-state.d.ts +43 -18
  506. package/dist/state/report-session-state.js +43 -4
  507. package/dist/state/report-versions.d.ts +16 -11
  508. package/dist/state/report-versions.js +5 -3
  509. package/dist/state/runs.d.ts +30 -19
  510. package/dist/state/runs.js +43 -51
  511. package/dist/state/schema.d.ts +18 -21
  512. package/dist/state/schema.js +4 -5
  513. package/dist/state/snapshot-parse.d.ts +2 -2
  514. package/dist/state/snapshot-parse.js +14 -8
  515. package/dist/state/step-executions.d.ts +20 -8
  516. package/dist/state/step-executions.js +6 -4
  517. package/dist/state/tool-outputs.d.ts +2 -2
  518. package/dist/state/tool-outputs.js +2 -1
  519. package/dist/state/vector-store.d.ts +16 -16
  520. package/dist/state/vector-store.js +11 -7
  521. package/dist/tasks/data-profile-absorb.d.ts +3 -3
  522. package/dist/tasks/data-profile-absorb.js +21 -16
  523. package/dist/tasks/data-profile-activity.d.ts +5 -5
  524. package/dist/tasks/data-profile-activity.js +5 -5
  525. package/dist/tasks/data-profile-index.d.ts +4 -4
  526. package/dist/tasks/data-profile-index.js +32 -17
  527. package/dist/tasks/data-profile-resolve.d.ts +8 -8
  528. package/dist/tasks/data-profile-resolve.js +88 -62
  529. package/dist/tasks/data-profile.d.ts +40 -31
  530. package/dist/tasks/data-profile.js +138 -95
  531. package/dist/tasks/extract-values.d.ts +26 -79
  532. package/dist/tasks/extract-values.js +48 -108
  533. package/dist/tasks/refresh-regulatory-corpus.d.ts +4 -20
  534. package/dist/tasks/refresh-regulatory-corpus.js +12 -8
  535. package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +2 -2
  536. package/dist/tasks/regulatory-corpus-boot-refresh.js +12 -10
  537. package/dist/testing.d.ts +60 -0
  538. package/dist/testing.js +96 -0
  539. package/dist/tools/ad-hoc-router.d.ts +9 -9
  540. package/dist/tools/ad-hoc-router.js +65 -52
  541. package/dist/tools/analysis-invocation.d.ts +7 -0
  542. package/dist/tools/analysis-invocation.js +29 -5
  543. package/dist/tools/approval/contract.d.ts +8 -52
  544. package/dist/tools/approval/contract.js +7 -36
  545. package/dist/tools/approval/gateway.d.ts +27 -28
  546. package/dist/tools/approval/gateway.js +33 -130
  547. package/dist/tools/approval/queries.d.ts +6 -11
  548. package/dist/tools/approval/queries.js +43 -29
  549. package/dist/tools/approval/uuidv7.js +2 -2
  550. package/dist/tools/bio/chembl.d.ts +3 -3
  551. package/dist/tools/bio/chembl.js +10 -0
  552. package/dist/tools/bio/comptox.d.ts +25 -8
  553. package/dist/tools/bio/comptox.js +4 -2
  554. package/dist/tools/bio/drug-gene-interactions.d.ts +27 -17
  555. package/dist/tools/bio/drug-gene-interactions.js +11 -8
  556. package/dist/tools/bio/gene-disease-evidence.d.ts +61 -15
  557. package/dist/tools/bio/gene-disease-evidence.js +10 -6
  558. package/dist/tools/bio/gene-preclinical-profile.d.ts +11 -11
  559. package/dist/tools/bio/keys.d.ts +2 -2
  560. package/dist/tools/bio/keys.js +3 -3
  561. package/dist/tools/bio/lookup-annotation.d.ts +5 -5
  562. package/dist/tools/bio/lookup-annotation.js +3 -0
  563. package/dist/tools/bio/opentargets.d.ts +1 -1
  564. package/dist/tools/bio/opentargets.js +6 -0
  565. package/dist/tools/bio/pubchem.d.ts +2 -2
  566. package/dist/tools/bio/pubchem.js +6 -0
  567. package/dist/tools/bio/pubmed.d.ts +26 -16
  568. package/dist/tools/bio/pubmed.js +9 -3
  569. package/dist/tools/bio/search-clinical-trials.d.ts +4 -4
  570. package/dist/tools/bio/search-clinical-trials.js +5 -1
  571. package/dist/tools/bio/search-faers.d.ts +2 -2
  572. package/dist/tools/bio/search-faers.js +1 -1
  573. package/dist/tools/bio/search-gene.d.ts +2 -2
  574. package/dist/tools/bio/search-gene.js +1 -0
  575. package/dist/tools/bio/search-geo-datasets.d.ts +4 -4
  576. package/dist/tools/bio/search-geo-datasets.js +5 -5
  577. package/dist/tools/bio/search-interactions.d.ts +1 -1
  578. package/dist/tools/bio/search-patents.d.ts +28 -22
  579. package/dist/tools/bio/search-patents.js +20 -17
  580. package/dist/tools/bio/search-protein.d.ts +2 -2
  581. package/dist/tools/bio/search-protein.js +1 -1
  582. package/dist/tools/bio/search-regulatory-approvals.d.ts +64 -18
  583. package/dist/tools/bio/search-regulatory-approvals.js +21 -16
  584. package/dist/tools/bio/target-safety.d.ts +8 -8
  585. package/dist/tools/bio/target-safety.js +11 -6
  586. package/dist/tools/capability-data.d.ts +9 -5
  587. package/dist/tools/capability-data.js +2 -1
  588. package/dist/tools/define-tool.d.ts +55 -46
  589. package/dist/tools/define-tool.js +39 -27
  590. package/dist/tools/display/normalize-echart-spec.d.ts +2 -2
  591. package/dist/tools/display/normalize-echart-spec.js +51 -27
  592. package/dist/tools/display/show-user.d.ts +2 -2
  593. package/dist/tools/display/show-user.js +1 -1
  594. package/dist/tools/execute-analysis.d.ts +19 -10
  595. package/dist/tools/execute-analysis.js +83 -62
  596. package/dist/tools/knowledge/check.d.ts +166 -44
  597. package/dist/tools/knowledge/check.js +5 -3
  598. package/dist/tools/knowledge/client.d.ts +31 -62
  599. package/dist/tools/knowledge/client.js +44 -27
  600. package/dist/tools/knowledge/environment.d.ts +6 -6
  601. package/dist/tools/knowledge/environment.js +18 -7
  602. package/dist/tools/knowledge/index.d.ts +2 -2
  603. package/dist/tools/knowledge/index.js +9 -9
  604. package/dist/tools/knowledge/local-slots.d.ts +4 -4
  605. package/dist/tools/knowledge/local-slots.js +11 -4
  606. package/dist/tools/knowledge/pin.d.ts +2 -2
  607. package/dist/tools/knowledge/recommend.d.ts +20 -45
  608. package/dist/tools/knowledge/recommend.js +27 -19
  609. package/dist/tools/knowledge/situation.d.ts +40 -40
  610. package/dist/tools/knowledge/situation.js +2 -9
  611. package/dist/tools/knowledge/skeleton.d.ts +4 -4
  612. package/dist/tools/knowledge/skeleton.js +10 -11
  613. package/dist/tools/knowledge/template.d.ts +20 -18
  614. package/dist/tools/knowledge/template.js +38 -32
  615. package/dist/tools/lib/alphafold-client.js +2 -1
  616. package/dist/tools/lib/amass-client.d.ts +28 -28
  617. package/dist/tools/lib/amass-client.js +20 -10
  618. package/dist/tools/lib/api-utils.d.ts +13 -3
  619. package/dist/tools/lib/api-utils.js +17 -3
  620. package/dist/tools/lib/bgee-client.d.ts +6 -6
  621. package/dist/tools/lib/bgee-client.js +16 -10
  622. package/dist/tools/lib/cbioportal-client.d.ts +4 -4
  623. package/dist/tools/lib/cbioportal-client.js +9 -8
  624. package/dist/tools/lib/chembl-client.d.ts +14 -14
  625. package/dist/tools/lib/chembl-client.js +11 -4
  626. package/dist/tools/lib/clinical-benchmarks-client.d.ts +4 -4
  627. package/dist/tools/lib/clinical-benchmarks-client.js +4 -7
  628. package/dist/tools/lib/clinical-trials-client.d.ts +18 -18
  629. package/dist/tools/lib/clinical-trials-client.js +10 -10
  630. package/dist/tools/lib/clinvar-client.d.ts +2 -2
  631. package/dist/tools/lib/clinvar-client.js +6 -6
  632. package/dist/tools/lib/ctx-ops.d.ts +23 -23
  633. package/dist/tools/lib/ctx-ops.js +13 -10
  634. package/dist/tools/lib/dgidb-client.d.ts +6 -6
  635. package/dist/tools/lib/dgidb-client.js +10 -12
  636. package/dist/tools/lib/disgenet-client.d.ts +4 -4
  637. package/dist/tools/lib/ema-client.d.ts +2 -2
  638. package/dist/tools/lib/ensembl-client.d.ts +4 -4
  639. package/dist/tools/lib/ensembl-client.js +5 -4
  640. package/dist/tools/lib/gwas-catalog-client.d.ts +4 -4
  641. package/dist/tools/lib/gwas-catalog-client.js +17 -17
  642. package/dist/tools/lib/html-text.d.ts +6 -0
  643. package/dist/tools/lib/html-text.js +9 -0
  644. package/dist/tools/lib/identifier-resolver.d.ts +4 -4
  645. package/dist/tools/lib/identifier-resolver.js +7 -3
  646. package/dist/tools/lib/impc-client.d.ts +8 -8
  647. package/dist/tools/lib/impc-client.js +46 -35
  648. package/dist/tools/lib/iuphar-client.d.ts +2 -2
  649. package/dist/tools/lib/iuphar-client.js +7 -16
  650. package/dist/tools/lib/monarch-client.d.ts +4 -4
  651. package/dist/tools/lib/openfda-client.d.ts +22 -22
  652. package/dist/tools/lib/openfda-client.js +23 -22
  653. package/dist/tools/lib/opentargets-client.d.ts +12 -12
  654. package/dist/tools/lib/pathway-client.d.ts +4 -4
  655. package/dist/tools/lib/pathway-client.js +15 -19
  656. package/dist/tools/lib/pharmgkb-client.d.ts +2 -2
  657. package/dist/tools/lib/pharmgkb-client.js +1 -1
  658. package/dist/tools/lib/protein-family-modality.d.ts +2 -2
  659. package/dist/tools/lib/protein-family-modality.js +0 -2
  660. package/dist/tools/lib/protein-family-normalize.js +7 -0
  661. package/dist/tools/lib/pubchem-client.d.ts +2 -2
  662. package/dist/tools/lib/pubchem-client.js +1 -0
  663. package/dist/tools/lib/pubchem-ops.d.ts +4 -4
  664. package/dist/tools/lib/pubchem-ops.js +8 -0
  665. package/dist/tools/lib/pubmed-client.d.ts +9 -9
  666. package/dist/tools/lib/pubmed-client.js +1 -1
  667. package/dist/tools/lib/string-client.d.ts +6 -6
  668. package/dist/tools/lib/uniprot-client.d.ts +8 -8
  669. package/dist/tools/lib/uniprot-client.js +5 -1
  670. package/dist/tools/memory/update-working-memory.d.ts +16 -13
  671. package/dist/tools/memory/update-working-memory.js +21 -3
  672. package/dist/tools/read-tool-output.js +8 -2
  673. package/dist/tools/registry.d.ts +2 -2
  674. package/dist/tools/report-authoring/authoring-tools.d.ts +54 -23
  675. package/dist/tools/report-authoring/authoring-tools.js +128 -62
  676. package/dist/tools/report-session/derive-table.d.ts +19 -59
  677. package/dist/tools/report-session/derive-table.js +120 -122
  678. package/dist/tools/report-session/examine-page.d.ts +6 -6
  679. package/dist/tools/report-session/examine-page.js +14 -12
  680. package/dist/tools/report-session/list-artifacts.d.ts +6 -6
  681. package/dist/tools/report-session/list-artifacts.js +5 -5
  682. package/dist/tools/report-session/page-faults.d.ts +6 -6
  683. package/dist/tools/report-session/page-faults.js +3 -1
  684. package/dist/tools/report-session/preview-report.d.ts +4 -3
  685. package/dist/tools/report-session/preview-report.js +26 -7
  686. package/dist/tools/report-session/record-version.d.ts +9 -4
  687. package/dist/tools/report-session/record-version.js +16 -9
  688. package/dist/tools/report-session/session-page-publisher.d.ts +6 -6
  689. package/dist/tools/research/generate-analogy-report.d.ts +14 -7
  690. package/dist/tools/research/generate-analogy-report.js +80 -76
  691. package/dist/tools/research/generate-plan.d.ts +16 -16
  692. package/dist/tools/research/generate-plan.js +410 -374
  693. package/dist/tools/research/guarded-address.js +3 -2
  694. package/dist/tools/research/inspect-data-profile.d.ts +27 -20
  695. package/dist/tools/research/inspect-data-profile.js +26 -25
  696. package/dist/tools/research/inspect-run.d.ts +54 -27
  697. package/dist/tools/research/inspect-run.js +50 -40
  698. package/dist/tools/research/literature-reviewer.d.ts +8 -7
  699. package/dist/tools/research/literature-reviewer.js +29 -28
  700. package/dist/tools/research/search-arxiv.d.ts +1 -1
  701. package/dist/tools/research/search-arxiv.js +1 -1
  702. package/dist/tools/research/search-github-repos.d.ts +10 -7
  703. package/dist/tools/research/search-github-repos.js +25 -22
  704. package/dist/tools/research/search-semantic-scholar.js +1 -1
  705. package/dist/tools/research/searxng-engine.d.ts +2 -2
  706. package/dist/tools/research/searxng-engine.js +6 -4
  707. package/dist/tools/research/web-fetch.d.ts +24 -21
  708. package/dist/tools/research/web-fetch.js +65 -74
  709. package/dist/tools/research/web-search.d.ts +26 -17
  710. package/dist/tools/research/web-search.js +26 -21
  711. package/dist/tools/sandbox/link-packages.d.ts +11 -7
  712. package/dist/tools/sandbox/link-packages.js +11 -8
  713. package/dist/tools/sandbox/list-available-packages.d.ts +17 -8
  714. package/dist/tools/sandbox/list-available-packages.js +31 -25
  715. package/dist/tools/sandbox/list-available-refs.d.ts +17 -14
  716. package/dist/tools/sandbox/list-available-refs.js +61 -36
  717. package/dist/tools/sandbox/report-blocker.d.ts +30 -37
  718. package/dist/tools/sandbox/report-blocker.js +23 -73
  719. package/dist/tools/sandbox/skills.d.ts +16 -12
  720. package/dist/tools/sandbox/skills.js +16 -12
  721. package/dist/tools/sandbox/submit-file-metadata.d.ts +12 -9
  722. package/dist/tools/sandbox/submit-file-metadata.js +18 -21
  723. package/dist/tools/start-report-session.d.ts +13 -5
  724. package/dist/tools/start-report-session.js +35 -8
  725. package/dist/tools/terminal-text.d.ts +5 -2
  726. package/dist/tools/terminal-text.js +35 -3
  727. package/dist/tools/workspace/decision-record.d.ts +4 -4
  728. package/dist/tools/workspace/decision-record.js +23 -13
  729. package/dist/tools/workspace/edit-file.d.ts +59 -20
  730. package/dist/tools/workspace/edit-file.js +81 -16
  731. package/dist/tools/workspace/execute-command.d.ts +15 -13
  732. package/dist/tools/workspace/execute-command.js +11 -9
  733. package/dist/tools/workspace/file-stat.d.ts +6 -3
  734. package/dist/tools/workspace/grep.d.ts +10 -7
  735. package/dist/tools/workspace/grep.js +9 -3
  736. package/dist/tools/workspace/list-files.d.ts +6 -3
  737. package/dist/tools/workspace/mutator.d.ts +28 -15
  738. package/dist/tools/workspace/mutator.js +107 -53
  739. package/dist/tools/workspace/read-file.d.ts +8 -5
  740. package/dist/tools/workspace/result-bounds.d.ts +5 -5
  741. package/dist/tools/workspace/result-bounds.js +4 -2
  742. package/dist/tools/workspace/run-exec.d.ts +2 -2
  743. package/dist/tools/workspace/run-exec.js +3 -3
  744. package/dist/tools/workspace/scan-inputs.d.ts +8 -5
  745. package/dist/tools/workspace/scan-inputs.js +17 -5
  746. package/dist/tools/workspace/show-file.d.ts +1 -1
  747. package/dist/tools/workspace/show-file.js +2 -1
  748. package/dist/tools/workspace/show-plan.d.ts +8 -5
  749. package/dist/tools/workspace/show-plan.js +9 -8
  750. package/dist/tools/workspace/workspace-search.d.ts +41 -13
  751. package/dist/tools/workspace/workspace-search.js +27 -14
  752. package/dist/tools/workspace/write-file.d.ts +9 -7
  753. package/dist/workflows/execute-analysis-scheduler.d.ts +9 -9
  754. package/dist/workflows/execute-analysis-scheduler.js +6 -3
  755. package/dist/workflows/execute-analysis.d.ts +46 -62
  756. package/dist/workflows/execute-analysis.js +137 -219
  757. package/dist/workflows/pause.d.ts +71 -0
  758. package/dist/workflows/pause.js +173 -0
  759. package/dist/workflows/sandbox-step.d.ts +38 -61
  760. package/dist/workflows/sandbox-step.js +99 -106
  761. package/dist/workflows/test/sql-writes.d.ts +21 -0
  762. package/dist/workflows/test/sql-writes.js +36 -0
  763. package/dist/workspace/filesystem.d.ts +6 -6
  764. package/dist/workspace/filesystem.js +10 -8
  765. package/dist/workspace/paths.d.ts +1 -1
  766. package/dist/workspace/paths.js +15 -4
  767. package/dist/workspace/search-config.d.ts +2 -2
  768. package/dist/workspace/search-config.js +1 -1
  769. package/package.json +21 -22
  770. package/dist/loop/call-guard.d.ts +0 -50
  771. package/dist/loop/call-guard.js +0 -90
  772. package/dist/loop/continue-agent.d.ts +0 -40
  773. package/dist/loop/continue-agent.js +0 -38
  774. package/dist/loop/genai-spans.d.ts +0 -47
  775. package/dist/loop/genai-spans.js +0 -134
  776. package/dist/loop/run-agent.d.ts +0 -245
  777. package/dist/loop/run-agent.js +0 -1124
  778. package/dist/loop/run-step.d.ts +0 -29
  779. package/dist/loop/run-step.js +0 -34
  780. package/dist/loop/run-to-terminal.d.ts +0 -66
  781. package/dist/loop/run-to-terminal.js +0 -93
  782. package/dist/loop/tool-mask.d.ts +0 -23
  783. package/dist/loop/tool-mask.js +0 -46
  784. package/dist/providers/streaming-chat.d.ts +0 -32
  785. package/dist/providers/streaming-chat.js +0 -91
  786. package/dist/tasks/derive-table-exec.d.ts +0 -54
  787. package/dist/tasks/derive-table-exec.js +0 -86
  788. package/dist/workflows/suspension.d.ts +0 -32
  789. package/dist/workflows/suspension.js +0 -38
@@ -112,7 +112,7 @@ export declare const CHART_SLIDE_TEXT_PX = 24;
112
112
  export declare const CHART_PRINT_THEME_NAME = "inflexa-print";
113
113
  export declare const CHART_SLIDE_THEME_NAME = "inflexa-slide";
114
114
  /** The size of one chart export: the name of its theme, the CSS pixel box, and the millimeter box of a column. */
115
- export interface ChartExportSize {
115
+ export type ChartExportSize = {
116
116
  readonly theme: string;
117
117
  readonly textPx: number;
118
118
  readonly widthPx: number;
@@ -121,7 +121,7 @@ export interface ChartExportSize {
121
121
  readonly heightMm?: number;
122
122
  readonly pixelRatio: number;
123
123
  readonly label: string;
124
- }
124
+ };
125
125
  /**
126
126
  * The export sizes of a chart: the single journal column, the double journal column, and a 16:9 slide.
127
127
  *
@@ -293,197 +293,36 @@ export declare const CHART_INLINE_OPTION_BOUND = 100000;
293
293
  * style. The text size scales the text alone: the page, the print export, and the slide export each register
294
294
  * one theme.
295
295
  */
296
- export declare function chartTheme(textPx: number): {
297
- color: ("#0072b2" | "#d55e00" | "#009e73" | "#e69f00" | "#cc79a7" | "#56b4e9" | "#f0e442" | "#000000")[];
298
- backgroundColor: string;
299
- textStyle: {
300
- fontFamily: string;
301
- fontSize: number;
302
- color: string;
303
- };
304
- title: {
296
+ type ChartAxisTheme = {
297
+ axisLine: {
305
298
  show: boolean;
306
- };
307
- legend: {
308
- bottom: number;
309
- borderWidth: number;
310
- textStyle: {
311
- fontFamily: string;
312
- fontSize: number;
313
- color: string;
314
- };
315
- itemGap: number;
316
- itemWidth: number;
317
- itemHeight: number;
318
- };
319
- grid: {
320
- left: number;
321
- right: number;
322
- top: number;
323
- bottom: number;
324
- containLabel: boolean;
325
- };
326
- tooltip: {
327
- backgroundColor: string;
328
- borderColor: string;
329
- textStyle: {
330
- color: string;
331
- fontSize: number;
332
- };
333
- extraCssText: string;
334
- };
335
- categoryAxis: {
336
- axisLine: {
337
- show: boolean;
338
- lineStyle: {
339
- color: string;
340
- width: number;
341
- };
342
- };
343
- axisTick: {
344
- show: boolean;
345
- inside: boolean;
346
- lineStyle: {
347
- color: string;
348
- width: number;
349
- };
350
- };
351
- axisLabel: {
352
- color: string;
353
- fontSize: number;
354
- };
355
- splitLine: {
356
- show: boolean;
357
- };
358
- nameTextStyle: {
359
- color: string;
360
- fontSize: number;
361
- };
362
- };
363
- valueAxis: {
364
- axisLine: {
365
- onZero: boolean;
366
- show: boolean;
367
- lineStyle: {
368
- color: string;
369
- width: number;
370
- };
371
- };
372
- axisTick: {
373
- show: boolean;
374
- inside: boolean;
375
- lineStyle: {
376
- color: string;
377
- width: number;
378
- };
379
- };
380
- axisLabel: {
299
+ lineStyle: {
381
300
  color: string;
382
- fontSize: number;
383
- };
384
- splitLine: {
385
- show: boolean;
386
- };
387
- nameTextStyle: {
388
- color: string;
389
- fontSize: number;
301
+ width: number;
390
302
  };
391
303
  };
392
- logAxis: {
393
- axisLine: {
394
- onZero: boolean;
395
- show: boolean;
396
- lineStyle: {
397
- color: string;
398
- width: number;
399
- };
400
- };
401
- axisTick: {
402
- show: boolean;
403
- inside: boolean;
404
- lineStyle: {
405
- color: string;
406
- width: number;
407
- };
408
- };
409
- axisLabel: {
410
- color: string;
411
- fontSize: number;
412
- };
413
- splitLine: {
414
- show: boolean;
415
- };
416
- nameTextStyle: {
304
+ axisTick: {
305
+ show: boolean;
306
+ inside: boolean;
307
+ lineStyle: {
417
308
  color: string;
418
- fontSize: number;
309
+ width: number;
419
310
  };
420
311
  };
421
- timeAxis: {
422
- axisLine: {
423
- onZero: boolean;
424
- show: boolean;
425
- lineStyle: {
426
- color: string;
427
- width: number;
428
- };
429
- };
430
- axisTick: {
431
- show: boolean;
432
- inside: boolean;
433
- lineStyle: {
434
- color: string;
435
- width: number;
436
- };
437
- };
438
- axisLabel: {
439
- color: string;
440
- fontSize: number;
441
- };
442
- splitLine: {
443
- show: boolean;
444
- };
445
- nameTextStyle: {
446
- color: string;
447
- fontSize: number;
448
- };
312
+ axisLabel: {
313
+ color: string;
314
+ fontSize: number;
449
315
  };
450
- visualMap: {
451
- textStyle: {
452
- fontFamily: string;
453
- fontSize: number;
454
- color: string;
455
- };
316
+ splitLine: {
317
+ show: boolean;
456
318
  };
457
- radar: {
458
- axisName: {
459
- color: string;
460
- fontSize: number;
461
- };
462
- axisLine: {
463
- lineStyle: {
464
- color: string;
465
- };
466
- };
467
- splitLine: {
468
- lineStyle: {
469
- color: string;
470
- };
471
- };
472
- splitArea: {
473
- show: boolean;
474
- };
319
+ nameTextStyle: {
320
+ color: string;
321
+ fontSize: number;
475
322
  };
476
323
  };
477
- /**
478
- * The colors and the font of the toolbox of a page chart: a quiet icon, the primary accent on hover, and the mono
479
- * face of the card title for the title of an icon.
480
- */
481
- export declare const CHART_TOOLBOX_ICON_COLOR: "#64748b";
482
- export declare const CHART_TOOLBOX_ACTIVE_COLOR: "#576dea";
483
- export declare const CHART_TOOLBOX_FONT: "\"IBM Plex Mono\", ui-monospace, monospace";
484
- /** The theme that the page registers under `ECHARTS_THEME_NAME`, at the page text size. */
485
- export declare const ECHARTS_THEME: {
486
- color: ("#0072b2" | "#d55e00" | "#009e73" | "#e69f00" | "#cc79a7" | "#56b4e9" | "#f0e442" | "#000000")[];
324
+ type ChartTheme = {
325
+ color: string[];
487
326
  backgroundColor: string;
488
327
  textStyle: {
489
328
  fontFamily: string;
@@ -521,121 +360,10 @@ export declare const ECHARTS_THEME: {
521
360
  };
522
361
  extraCssText: string;
523
362
  };
524
- categoryAxis: {
525
- axisLine: {
526
- show: boolean;
527
- lineStyle: {
528
- color: string;
529
- width: number;
530
- };
531
- };
532
- axisTick: {
533
- show: boolean;
534
- inside: boolean;
535
- lineStyle: {
536
- color: string;
537
- width: number;
538
- };
539
- };
540
- axisLabel: {
541
- color: string;
542
- fontSize: number;
543
- };
544
- splitLine: {
545
- show: boolean;
546
- };
547
- nameTextStyle: {
548
- color: string;
549
- fontSize: number;
550
- };
551
- };
552
- valueAxis: {
553
- axisLine: {
554
- onZero: boolean;
555
- show: boolean;
556
- lineStyle: {
557
- color: string;
558
- width: number;
559
- };
560
- };
561
- axisTick: {
562
- show: boolean;
563
- inside: boolean;
564
- lineStyle: {
565
- color: string;
566
- width: number;
567
- };
568
- };
569
- axisLabel: {
570
- color: string;
571
- fontSize: number;
572
- };
573
- splitLine: {
574
- show: boolean;
575
- };
576
- nameTextStyle: {
577
- color: string;
578
- fontSize: number;
579
- };
580
- };
581
- logAxis: {
582
- axisLine: {
583
- onZero: boolean;
584
- show: boolean;
585
- lineStyle: {
586
- color: string;
587
- width: number;
588
- };
589
- };
590
- axisTick: {
591
- show: boolean;
592
- inside: boolean;
593
- lineStyle: {
594
- color: string;
595
- width: number;
596
- };
597
- };
598
- axisLabel: {
599
- color: string;
600
- fontSize: number;
601
- };
602
- splitLine: {
603
- show: boolean;
604
- };
605
- nameTextStyle: {
606
- color: string;
607
- fontSize: number;
608
- };
609
- };
610
- timeAxis: {
611
- axisLine: {
612
- onZero: boolean;
613
- show: boolean;
614
- lineStyle: {
615
- color: string;
616
- width: number;
617
- };
618
- };
619
- axisTick: {
620
- show: boolean;
621
- inside: boolean;
622
- lineStyle: {
623
- color: string;
624
- width: number;
625
- };
626
- };
627
- axisLabel: {
628
- color: string;
629
- fontSize: number;
630
- };
631
- splitLine: {
632
- show: boolean;
633
- };
634
- nameTextStyle: {
635
- color: string;
636
- fontSize: number;
637
- };
638
- };
363
+ categoryAxis: ChartAxisTheme;
364
+ valueAxis: ChartAxisTheme;
365
+ logAxis: ChartAxisTheme;
366
+ timeAxis: ChartAxisTheme;
639
367
  visualMap: {
640
368
  textStyle: {
641
369
  fontFamily: string;
@@ -663,6 +391,16 @@ export declare const ECHARTS_THEME: {
663
391
  };
664
392
  };
665
393
  };
394
+ export declare function chartTheme(textPx: number): ChartTheme;
395
+ /**
396
+ * The colors and the font of the toolbox of a page chart: a quiet icon, the primary accent on hover, and the mono
397
+ * face of the card title for the title of an icon.
398
+ */
399
+ export declare const CHART_TOOLBOX_ICON_COLOR: "#64748b";
400
+ export declare const CHART_TOOLBOX_ACTIVE_COLOR: "#576dea";
401
+ export declare const CHART_TOOLBOX_FONT: "\"IBM Plex Mono\", ui-monospace, monospace";
402
+ /** The theme that the page registers under `ECHARTS_THEME_NAME`, at the page text size. */
403
+ export declare const ECHARTS_THEME: ChartTheme;
666
404
  /**
667
405
  * The registered themes: the page theme, the print theme of the SVG and the column PNG, and the slide theme.
668
406
  * The registration script writes each one, and the export reads one by its name.
@@ -677,3 +415,4 @@ export declare const CHART_THEMES: readonly [{
677
415
  readonly name: "inflexa-slide";
678
416
  readonly textPx: 24;
679
417
  }];
418
+ export {};
@@ -1500,18 +1500,6 @@ export const SCATTER_CROWD_OPACITY = 0.5;
1500
1500
  * page. Past this bound the option carries no row, and the chart reads the columnar payload of its artifact.
1501
1501
  */
1502
1502
  export const CHART_INLINE_OPTION_BOUND = 100_000;
1503
- /**
1504
- * The publication theme of a chart, at one text size.
1505
- *
1506
- * The page and the export read one theme, thus a chart on the page is the chart that the paper gets. The
1507
- * left and the bottom axis lines are strong and dark, with ticks outside the plot. There is no grid line, no
1508
- * frame around the legend, and no toolbox, because the chart card adds the toolbox of the page and a file carries
1509
- * none. The text reads in the journal sans stack and in the near-black ink.
1510
- *
1511
- * The chart runtime reads the style of an axis by its type, thus each of the four axis types carries the same
1512
- * style. The text size scales the text alone: the page, the print export, and the slide export each register
1513
- * one theme.
1514
- */
1515
1503
  export function chartTheme(textPx) {
1516
1504
  const axis = {
1517
1505
  axisLine: { show: true, lineStyle: { color: CHART_INK, width: CHART_AXIS_LINE_PX } },
@@ -29,7 +29,7 @@ export type ColumnMeanings = ArtifactTableReference["columnMeanings"];
29
29
  /** A typed `invalid-chart-input` problem that names the block and the cause. */
30
30
  export declare function chartProblem(blockId: string, detail: string): RenderProblem;
31
31
  /** Convert one cell to a finite number, or `null` when it is absent or not numeric. */
32
- export declare function toNumber(cell: Cell | null | undefined): number | null;
32
+ export declare function toNumber(cell: unknown): number | null;
33
33
  /**
34
34
  * The legend text of one category value: the value with each underscore as a space.
35
35
  *
@@ -37,7 +37,7 @@ export declare function toNumber(cell: Cell | null | undefined): number | null;
37
37
  * person. The replacement reads no locale, thus the same value gives the same text on every host. The raw
38
38
  * value stays in the data rows, thus the provenance loses nothing.
39
39
  */
40
- export declare function categoryName(value: Cell): string;
40
+ export declare function categoryName(value: unknown): string;
41
41
  /**
42
42
  * The lane of each span in turn, for at most `count` spans: the lowest lane whose last span ends under the start
43
43
  * of the next span, else a new lane under the others.
@@ -60,7 +60,7 @@ export declare function columnPresent(column: string, rows: readonly Record<stri
60
60
  *
61
61
  * The comparison never calls `localeCompare`, thus the order stays the same on every host.
62
62
  */
63
- export declare function compareCell(a: Cell, b: Cell): number;
63
+ export declare function compareCell(a: Cell | undefined, b: Cell | undefined): number;
64
64
  /**
65
65
  * Sort the categories of one channel by the value of its order column.
66
66
  *
@@ -75,20 +75,20 @@ export declare function compareCell(a: Cell, b: Cell): number;
75
75
  * of strings and a column of numbers still meet. A row that lacks the order cell gives its category no place,
76
76
  * thus it refuses.
77
77
  */
78
- export declare function orderCategories<T extends Cell>(blockId: string, rowCount: number, categoryAt: (index: number) => Cell | null | undefined, categories: readonly T[], order: ChannelOrder | undefined, keyAt: (index: number) => Cell | undefined): Result<T[], RenderProblem>;
78
+ export declare function orderCategories<T>(blockId: string, rowCount: number, categoryAt: (index: number) => Cell | null | undefined, categories: readonly T[], order: ChannelOrder | undefined, keyAt: (index: number) => Cell | undefined): Result<T[], RenderProblem>;
79
79
  /**
80
80
  * Sort the categories of one quick-path channel that reads a plain column, by the order of that channel.
81
81
  * The row of each category reads the category column and the order column of the same row.
82
82
  */
83
- export declare function orderQuickCategories(blockId: string, rows: readonly ChartRow[], column: string, order: ChannelOrder | undefined): Result<Cell[], RenderProblem>;
83
+ export declare function orderQuickCategories(blockId: string, rows: readonly ChartRow[], column: string, order: ChannelOrder | undefined): Result<Array<Cell | undefined>, RenderProblem>;
84
84
  /** One channel of the quick-path encoding that names one column. */
85
85
  export type ColumnChannel = Exclude<keyof ChartEncoding, "label" | "tracks">;
86
86
  /** The table that a figure reads a channel from: the block, the rows, and the declared column order. */
87
- export interface ChannelSource {
87
+ export type ChannelSource = {
88
88
  readonly blockId: string;
89
89
  readonly rows: readonly ChartRow[];
90
90
  readonly columns?: readonly string[];
91
- }
91
+ };
92
92
  /**
93
93
  * The column of one channel that a figure reads as a plain column, or `undefined` where the block names no
94
94
  * such channel.
@@ -179,7 +179,7 @@ export declare function valueAxis(axis: "x" | "y", title: string, fields?: {
179
179
  * `topDown` inverts a y axis. The chart runtime draws the first category of a y axis at the origin, thus a
180
180
  * table that reads top-down needs the inverted axis to put its first row at the top.
181
181
  */
182
- export declare function categoryAxis(axis: "x" | "y", categories: readonly Cell[], fields?: {
182
+ export declare function categoryAxis(axis: "x" | "y", categories: readonly (Cell | undefined)[], fields?: {
183
183
  title?: string;
184
184
  topDown?: boolean;
185
185
  }): EchartOption;
@@ -205,11 +205,11 @@ export declare function guideMarkLine(lines: readonly EchartOption[]): EchartOpt
205
205
  * One statistic that a figure prints: the label of the block, the resolved value, and the shown text of the
206
206
  * value.
207
207
  */
208
- export interface FigureStatistic {
208
+ export type FigureStatistic = {
209
209
  readonly label: string;
210
210
  readonly value: string | number;
211
211
  readonly text: string;
212
- }
212
+ };
213
213
  /**
214
214
  * The shown text of one statistic, in the number format of its column, with the power of ten of a figure, and
215
215
  * the unit of its reference after it.
@@ -244,11 +244,11 @@ export declare const STATISTICS_POINT_INSET_PX = 8;
244
244
  */
245
245
  export declare function statisticsSeries(statistics: readonly FigureStatistic[], point: readonly [number, number], corner: PlotCorner): EchartOption[];
246
246
  /** The range and the ramp of one continuous color. */
247
- export interface ContinuousScale {
247
+ export type ContinuousScale = {
248
248
  readonly min: number;
249
249
  readonly max: number;
250
250
  readonly ramp: readonly string[];
251
- }
251
+ };
252
252
  /**
253
253
  * The scale of one continuous color over its values.
254
254
  *
@@ -17,9 +17,12 @@
17
17
  *
18
18
  * Each helper gives plain data, because the option rides to the page as inline JSON.
19
19
  */
20
+ import { textOf } from "../../lib/unknown-text.js";
20
21
  import { err, ok } from "neverthrow";
21
22
  import { channelColumn, channelOrder, channelTransform } from "../../contracts/report-blocks.js";
22
23
  import { declaredForColumn } from "../../contracts/report-reference.js";
24
+ import { isUnknownArray } from "../../lib/unknown-array.js";
25
+ import { parseUnknownRecord } from "../../lib/unknown-containers.js";
23
26
  import { CHART_BODY_MAX_PX, CHART_FONT_STACK, CHART_INK, CHART_PAGE_TEXT_PX, CHART_PALETTE, CHART_WIDE_PALETTE, DIVERGING_RAMP, GUIDE_LINE_COLOR, GUIDE_LINE_WIDTH_PX, MUTED_CHART_COLOR, SEQUENTIAL_RAMP, SIZE_CHANNEL_RANGE_PX, } from "../design.js";
24
27
  import { formatNumberCell, selectNumberKind, typographicExponent } from "../number-format.js";
25
28
  import { STEM_RENDERER } from "../chart-renderers.js";
@@ -49,7 +52,7 @@ export function toNumber(cell) {
49
52
  * value stays in the data rows, thus the provenance loses nothing.
50
53
  */
51
54
  export function categoryName(value) {
52
- return String(value).replaceAll("_", " ");
55
+ return textOf(value).replaceAll("_", " ");
53
56
  }
54
57
  /**
55
58
  * The lane of each span in turn, for at most `count` spans: the lowest lane whose last span ends under the start
@@ -67,10 +70,10 @@ export function firstFreeLanes(count) {
67
70
  return (start, end) => {
68
71
  let node = 1;
69
72
  while (node < leaves)
70
- node = least[2 * node] < start ? 2 * node : 2 * node + 1;
73
+ node = (least[2 * node] ?? Number.NEGATIVE_INFINITY) < start ? 2 * node : 2 * node + 1;
71
74
  least[node] = end;
72
75
  for (let parent = node >> 1; parent >= 1; parent >>= 1)
73
- least[parent] = Math.min(least[2 * parent], least[2 * parent + 1]);
76
+ least[parent] = Math.min(least[2 * parent] ?? Number.NEGATIVE_INFINITY, least[2 * parent + 1] ?? Number.NEGATIVE_INFINITY);
74
77
  return node - leaves;
75
78
  };
76
79
  }
@@ -146,7 +149,7 @@ export function orderCategories(blockId, rowCount, categoryAt, categories, order
146
149
  if (key === undefined) {
147
150
  return err(chartProblem(blockId, `The category "${categoryName(category)}" holds no value in the "${order.by}" column, thus it has no place in the order.`));
148
151
  }
149
- const held = keys.get(String(category));
152
+ const held = keys.get(textOf(category));
150
153
  if (held === undefined) {
151
154
  keys.set(String(category), key);
152
155
  }
@@ -156,7 +159,7 @@ export function orderCategories(blockId, rowCount, categoryAt, categories, order
156
159
  }
157
160
  const direction = order.order === "desc" ? -1 : 1;
158
161
  return ok(categories
159
- .map((category, place) => ({ category, place, key: keys.get(String(category)) ?? "" }))
162
+ .map((category, place) => ({ category, place, key: keys.get(textOf(category)) ?? "" }))
160
163
  .sort((a, b) => direction * compareCell(a.key, b.key) || a.place - b.place)
161
164
  .map((entry) => entry.category));
162
165
  }
@@ -165,7 +168,7 @@ export function orderCategories(blockId, rowCount, categoryAt, categories, order
165
168
  * The row of each category reads the category column and the order column of the same row.
166
169
  */
167
170
  export function orderQuickCategories(blockId, rows, column, order) {
168
- return orderCategories(blockId, rows.length, (index) => rows[index][column], firstAppearance(rows.map((row) => row[column])), order, (index) => (order === undefined ? undefined : rows[index][order.by]));
171
+ return orderCategories(blockId, rows.length, (index) => rows[index]?.[column], firstAppearance(rows.map((row) => row[column])), order, (index) => (order === undefined ? undefined : rows[index]?.[order.by]));
169
172
  }
170
173
  /**
171
174
  * The column of one channel that a figure reads as a plain column, or `undefined` where the block names no
@@ -333,13 +336,16 @@ export function categoryAxisTitle(labels, column, declared) {
333
336
  * the logarithmic axis type.
334
337
  */
335
338
  export function valueAxis(axis, title, fields = {}) {
336
- return {
339
+ const option = {
337
340
  type: fields.log === true ? "log" : "value",
338
- ...(fields.scale === true ? { scale: true } : {}),
339
- ...(fields.min !== undefined ? { min: fields.min } : {}),
340
- ...(fields.max !== undefined ? { max: fields.max } : {}),
341
- ...axisNameFields(axis, title),
342
341
  };
342
+ if (fields.scale === true)
343
+ option.scale = true;
344
+ if (fields.min !== undefined)
345
+ option.min = fields.min;
346
+ if (fields.max !== undefined)
347
+ option.max = fields.max;
348
+ return { ...option, ...axisNameFields(axis, title) };
343
349
  }
344
350
  /**
345
351
  * One category axis: the categories in their order, the direction, and the declared title alone.
@@ -348,12 +354,14 @@ export function valueAxis(axis, title, fields = {}) {
348
354
  * table that reads top-down needs the inverted axis to put its first row at the top.
349
355
  */
350
356
  export function categoryAxis(axis, categories, fields = {}) {
351
- return {
357
+ const option = {
352
358
  type: "category",
353
- ...(axis === "y" && fields.topDown === true ? { inverse: true } : {}),
354
359
  data: [...categories],
355
360
  ...axisNameFields(axis, fields.title),
356
361
  };
362
+ if (axis === "y" && fields.topDown === true)
363
+ option.inverse = true;
364
+ return option;
357
365
  }
358
366
  // ── The guide lines ─────────────────────────────────────────────────────────
359
367
  /** The stroke of each guide line. */
@@ -482,17 +490,17 @@ export function statisticsSeries(statistics, point, corner) {
482
490
  * the call stack.
483
491
  */
484
492
  export function continuousScale(values) {
485
- if (values.length === 0) {
486
- return { min: 0, max: 1, ramp: SEQUENTIAL_RAMP };
487
- }
488
- let min = values[0];
489
- let max = values[0];
493
+ let min;
494
+ let max;
490
495
  for (const value of values) {
491
- if (value < min)
496
+ if (min === undefined || value < min)
492
497
  min = value;
493
- if (value > max)
498
+ if (max === undefined || value > max)
494
499
  max = value;
495
500
  }
501
+ if (min === undefined || max === undefined) {
502
+ return { min: 0, max: 1, ramp: SEQUENTIAL_RAMP };
503
+ }
496
504
  if (min < 0 && max > 0) {
497
505
  const reach = Math.max(-min, max);
498
506
  return { min: -reach, max: reach, ramp: DIVERGING_RAMP };
@@ -623,7 +631,10 @@ function seriesOf(option) {
623
631
  const series = option.series;
624
632
  if (!Array.isArray(series))
625
633
  return [];
626
- return series.filter((entry) => typeof entry === "object" && entry !== null);
634
+ return series.flatMap((entry) => {
635
+ const record = parseUnknownRecord(entry);
636
+ return record === undefined ? [] : [record];
637
+ });
627
638
  }
628
639
  /**
629
640
  * The icon of each series name: the form of the first series of that name that draws the data.
@@ -658,24 +669,24 @@ function iconsByName(option) {
658
669
  * series names in order, as the runtime does.
659
670
  */
660
671
  function iconLegend(option) {
661
- const legend = option.legend;
662
- if (typeof legend !== "object" || legend === null || Array.isArray(legend))
672
+ const fields = parseUnknownRecord(option.legend);
673
+ if (fields === undefined)
663
674
  return undefined;
664
- const fields = legend;
665
675
  if (fields.show === false)
666
676
  return undefined;
667
677
  const icons = iconsByName(option);
668
678
  if (icons.size === 0)
669
679
  return undefined;
670
- const declared = Array.isArray(fields.data) ? fields.data : [...icons.keys()];
680
+ const declared = isUnknownArray(fields.data) ? fields.data : [...icons.keys()];
671
681
  const data = declared.map((entry) => {
672
- if (typeof entry === "object" && entry !== null && typeof entry.icon === "string")
682
+ const entryFields = parseUnknownRecord(entry);
683
+ if (entryFields !== undefined && typeof entryFields.icon === "string")
673
684
  return entry;
674
- const name = typeof entry === "string" ? entry : typeof entry === "object" && entry !== null ? entry.name : undefined;
685
+ const name = typeof entry === "string" ? entry : entryFields?.name;
675
686
  const icon = typeof name === "string" ? icons.get(name) : undefined;
676
687
  if (icon === undefined || typeof name !== "string")
677
688
  return entry;
678
- return typeof entry === "object" && entry !== null ? { ...entry, icon } : { name, icon };
689
+ return entryFields === undefined ? { name, icon } : { ...entryFields, icon };
679
690
  });
680
691
  return { ...fields, data };
681
692
  }
@@ -707,15 +718,15 @@ function paletteSlots(option) {
707
718
  * the title clears the labels on the page and in each export.
708
719
  */
709
720
  function movedTitle(axis) {
710
- if (typeof axis !== "object" || axis === null)
721
+ const fields = parseUnknownRecord(axis);
722
+ if (fields === undefined)
711
723
  return axis;
712
- const fields = axis;
713
724
  return typeof fields.name === "string" && fields.name !== "" ? { ...fields, nameMoveOverlap: true } : axis;
714
725
  }
715
726
  /** True when a grid, or one grid of a list, contains its labels. */
716
727
  function containsLabels(grid) {
717
728
  const grids = Array.isArray(grid) ? grid : [grid];
718
- return grids.some((entry) => typeof entry === "object" && entry !== null && entry.containLabel === true);
729
+ return grids.some((entry) => parseUnknownRecord(entry)?.containLabel === true);
719
730
  }
720
731
  /** Each axis of one axis member with its title moved off its labels. */
721
732
  function movedTitles(axes) {