@inflexa-ai/harness 0.45.1 → 0.46.2

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 (790) 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 +306 -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 +32 -7
  174. package/dist/lib/hooks.js +22 -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 +160 -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 +39 -0
  256. package/dist/loop/turn-credentials.js +90 -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/request-headers.js +12 -3
  304. package/dist/providers/types.d.ts +55 -94
  305. package/dist/reference-data/catalog.d.ts +2 -15
  306. package/dist/reference-data/catalog.js +25 -8
  307. package/dist/reference-data/receipt.d.ts +2 -2
  308. package/dist/report-model/assert-rules.js +1 -1
  309. package/dist/report-model/authoring-grammar.d.ts +211 -233
  310. package/dist/report-model/block-walk.d.ts +10 -10
  311. package/dist/report-model/block-walk.js +2 -0
  312. package/dist/report-model/draft-finish.d.ts +8 -8
  313. package/dist/report-model/draft-finish.js +1 -1
  314. package/dist/report-model/draft-hash.js +8 -7
  315. package/dist/report-model/draft-operations.d.ts +22 -10
  316. package/dist/report-model/draft-operations.js +48 -30
  317. package/dist/report-model/draft-read.d.ts +19 -7
  318. package/dist/report-model/draft-read.js +16 -6
  319. package/dist/report-model/draft.d.ts +844 -2
  320. package/dist/report-model/draft.js +3 -1
  321. package/dist/report-model/fixture-resolver.js +39 -16
  322. package/dist/report-model/pin-snapshot.d.ts +2 -2
  323. package/dist/report-model/pin-snapshot.js +15 -15
  324. package/dist/report-model/production-resolver.d.ts +18 -18
  325. package/dist/report-model/production-resolver.js +50 -42
  326. package/dist/report-model/reference-resolver.d.ts +26 -10
  327. package/dist/report-model/reference-resolver.js +68 -5
  328. package/dist/report-model/reference-stamp.js +30 -38
  329. package/dist/report-model/structural-validation.js +12 -4
  330. package/dist/report-model/validate.d.ts +7 -7
  331. package/dist/report-model/validate.js +6 -6
  332. package/dist/report-render/assets.d.ts +2 -2
  333. package/dist/report-render/assets.js +27 -3
  334. package/dist/report-render/chart-export.d.ts +10 -2
  335. package/dist/report-render/chart-export.js +37 -11
  336. package/dist/report-render/chart-presets.d.ts +8 -8
  337. package/dist/report-render/chart-presets.js +3 -3
  338. package/dist/report-render/chart-renderers.d.ts +23 -16
  339. package/dist/report-render/chart-renderers.js +74 -53
  340. package/dist/report-render/chart-toolbox.d.ts +2 -2
  341. package/dist/report-render/chart-toolbox.js +7 -6
  342. package/dist/report-render/chart.d.ts +15 -16
  343. package/dist/report-render/chart.js +369 -252
  344. package/dist/report-render/design.d.ts +36 -297
  345. package/dist/report-render/design.js +0 -12
  346. package/dist/report-render/figures/common.d.ts +12 -12
  347. package/dist/report-render/figures/common.js +42 -31
  348. package/dist/report-render/figures/dendrogram.d.ts +3 -3
  349. package/dist/report-render/figures/dendrogram.js +10 -10
  350. package/dist/report-render/figures/dense.js +15 -8
  351. package/dist/report-render/figures/dotplot.js +46 -33
  352. package/dist/report-render/figures/embedding.js +52 -43
  353. package/dist/report-render/figures/equal-units.d.ts +10 -10
  354. package/dist/report-render/figures/equal-units.js +27 -27
  355. package/dist/report-render/figures/forest.js +9 -7
  356. package/dist/report-render/figures/gsea.js +21 -11
  357. package/dist/report-render/figures/heatmap.js +13 -9
  358. package/dist/report-render/figures/index.d.ts +10 -10
  359. package/dist/report-render/figures/index.js +4 -2
  360. package/dist/report-render/figures/km.js +10 -9
  361. package/dist/report-render/figures/label-room.d.ts +12 -12
  362. package/dist/report-render/figures/label-room.js +7 -2
  363. package/dist/report-render/figures/locuszoom.d.ts +2 -2
  364. package/dist/report-render/figures/locuszoom.js +59 -31
  365. package/dist/report-render/figures/lollipop.js +3 -2
  366. package/dist/report-render/figures/ma.js +8 -4
  367. package/dist/report-render/figures/manhattan.d.ts +1 -2
  368. package/dist/report-render/figures/manhattan.js +52 -34
  369. package/dist/report-render/figures/oncoprint.js +4 -5
  370. package/dist/report-render/figures/pca.js +25 -11
  371. package/dist/report-render/figures/qq.js +20 -9
  372. package/dist/report-render/figures/roc.js +1 -1
  373. package/dist/report-render/figures/sankey.d.ts +2 -2
  374. package/dist/report-render/figures/sankey.js +11 -10
  375. package/dist/report-render/figures/upset.d.ts +6 -6
  376. package/dist/report-render/figures/upset.js +7 -4
  377. package/dist/report-render/figures/volcano.js +12 -10
  378. package/dist/report-render/hybrid-svg.d.ts +4 -4
  379. package/dist/report-render/hybrid-svg.js +7 -5
  380. package/dist/report-render/number-format.d.ts +4 -4
  381. package/dist/report-render/number-format.js +62 -27
  382. package/dist/report-render/page.js +2 -1
  383. package/dist/report-render/provenance-data.d.ts +2 -2
  384. package/dist/report-render/references.d.ts +4 -4
  385. package/dist/report-render/render.d.ts +2 -2
  386. package/dist/report-render/render.js +10 -11
  387. package/dist/report-render/script-json.js +1 -1
  388. package/dist/report-render/table-data.d.ts +6 -6
  389. package/dist/report-render/test/options.d.ts +49 -0
  390. package/dist/report-render/test/options.js +143 -0
  391. package/dist/report-render/test/page-function.d.ts +19 -0
  392. package/dist/report-render/test/page-function.js +33 -0
  393. package/dist/report-render/types.d.ts +10 -10
  394. package/dist/report-render/value-bridge.d.ts +4 -4
  395. package/dist/report-render/value-bridge.js +27 -14
  396. package/dist/report-render/views/chart-view.d.ts +2 -2
  397. package/dist/report-render/views/chart-view.js +2 -2
  398. package/dist/report-render/views/lineage.d.ts +6 -6
  399. package/dist/report-render/views/lineage.js +2 -0
  400. package/dist/report-render/views/page-view.d.ts +2 -2
  401. package/dist/report-render/views/page-view.js +1 -0
  402. package/dist/report-render/views/prose.js +25 -8
  403. package/dist/report-render/views/references-view.js +12 -1
  404. package/dist/report-render/views/values.js +1 -1
  405. package/dist/runtime/assemble.d.ts +53 -26
  406. package/dist/runtime/assemble.js +103 -56
  407. package/dist/runtime/boot.d.ts +8 -7
  408. package/dist/runtime/boot.js +1 -1
  409. package/dist/runtime/connection-budget.d.ts +6 -6
  410. package/dist/runtime/connection-budget.js +1 -1
  411. package/dist/runtime/dbos.d.ts +29 -19
  412. package/dist/runtime/dbos.js +35 -20
  413. package/dist/runtime/result-serialization.js +18 -5
  414. package/dist/runtime/shutdown.d.ts +2 -2
  415. package/dist/sandbox/client.d.ts +7 -3
  416. package/dist/sandbox/cpu-files.d.ts +2 -2
  417. package/dist/sandbox/cpu-files.js +21 -4
  418. package/dist/sandbox/create-sandbox.d.ts +7 -8
  419. package/dist/sandbox/create-sandbox.js +6 -12
  420. package/dist/sandbox/docker-client.d.ts +48 -3
  421. package/dist/sandbox/docker-client.js +10 -6
  422. package/dist/sandbox/estimate-data-profile-resources.js +2 -7
  423. package/dist/sandbox/exec-outcome.d.ts +2 -2
  424. package/dist/sandbox/exec-outcome.js +1 -1
  425. package/dist/sandbox/exec.d.ts +10 -6
  426. package/dist/sandbox/exec.js +27 -12
  427. package/dist/sandbox/execution-id.js +14 -6
  428. package/dist/sandbox/farm.d.ts +2 -2
  429. package/dist/sandbox/farm.js +22 -27
  430. package/dist/sandbox/identity.d.ts +7 -0
  431. package/dist/sandbox/identity.js +14 -3
  432. package/dist/sandbox/image-packages.js +15 -27
  433. package/dist/sandbox/k8s-client.d.ts +35 -8
  434. package/dist/sandbox/k8s-client.js +6 -5
  435. package/dist/sandbox/labels.js +1 -0
  436. package/dist/sandbox/liveness.js +3 -1
  437. package/dist/sandbox/mount-plan.d.ts +10 -10
  438. package/dist/sandbox/mount-plan.js +13 -14
  439. package/dist/sandbox/notification-sweep.d.ts +4 -4
  440. package/dist/sandbox/notification-sweep.js +4 -7
  441. package/dist/sandbox/package-identity.d.ts +6 -13
  442. package/dist/sandbox/package-identity.js +46 -28
  443. package/dist/sandbox/reaper.d.ts +10 -10
  444. package/dist/sandbox/reaper.js +4 -6
  445. package/dist/sandbox/sandbox-error.d.ts +2 -9
  446. package/dist/sandbox/sandbox-error.js +21 -8
  447. package/dist/sandbox/sandbox-step-translate.d.ts +8 -5
  448. package/dist/sandbox/sandbox-step-translate.js +22 -8
  449. package/dist/sandbox/step-sandbox.d.ts +47 -0
  450. package/dist/sandbox/step-sandbox.js +53 -0
  451. package/dist/sandbox/types.d.ts +18 -19
  452. package/dist/sandbox/types.js +1 -1
  453. package/dist/schemas/artifact-manifest.d.ts +4 -4
  454. package/dist/schemas/data-profile-schemas.d.ts +343 -298
  455. package/dist/schemas/file-metadata.js +2 -4
  456. package/dist/schemas/plan-schemas.d.ts +31 -31
  457. package/dist/schemas/run-synthesis.d.ts +95 -26
  458. package/dist/schemas/run-synthesis.js +3 -1
  459. package/dist/schemas/validate-plan.d.ts +4 -4
  460. package/dist/schemas/validate-plan.js +17 -5
  461. package/dist/schemas/workflow-state.d.ts +19 -19
  462. package/dist/schemas/workflow-state.js +2 -2
  463. package/dist/state/active-turns.d.ts +36 -0
  464. package/dist/state/active-turns.js +67 -0
  465. package/dist/state/analyses-metrics.d.ts +8 -8
  466. package/dist/state/analyses-metrics.js +4 -4
  467. package/dist/state/analyses.d.ts +0 -14
  468. package/dist/state/analyses.js +0 -32
  469. package/dist/state/artifacts.d.ts +32 -19
  470. package/dist/state/artifacts.js +28 -5
  471. package/dist/state/data-profile.d.ts +2 -2
  472. package/dist/state/db.d.ts +12 -2
  473. package/dist/state/db.js +5 -0
  474. package/dist/state/edit-intents.d.ts +4 -0
  475. package/dist/state/edit-intents.js +71 -0
  476. package/dist/state/index.d.ts +4 -4
  477. package/dist/state/index.js +2 -2
  478. package/dist/state/init.d.ts +2 -1
  479. package/dist/state/init.js +5 -2
  480. package/dist/state/migrations/20260927120000_baseline.js +3 -1
  481. package/dist/state/migrations/20261026120000_add_the_edit_intents.d.ts +7 -0
  482. package/dist/state/migrations/20261026120000_add_the_edit_intents.js +21 -0
  483. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.d.ts +7 -0
  484. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.js +16 -0
  485. package/dist/state/migrations/20261027120100_store_the_authoring_results.d.ts +8 -0
  486. package/dist/state/migrations/20261027120100_store_the_authoring_results.js +20 -0
  487. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.d.ts +7 -0
  488. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.js +12 -0
  489. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.d.ts +7 -0
  490. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.js +11 -0
  491. package/dist/state/migrations/20261028120000_record_the_paused_work.d.ts +7 -0
  492. package/dist/state/migrations/20261028120000_record_the_paused_work.js +25 -0
  493. package/dist/state/migrations/20261028120100_end_the_suspended_runs.d.ts +8 -0
  494. package/dist/state/migrations/20261028120100_end_the_suspended_runs.js +13 -0
  495. package/dist/state/migrations/20261029120000_reference_the_run_mandate.d.ts +7 -0
  496. package/dist/state/migrations/20261029120000_reference_the_run_mandate.js +23 -0
  497. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.d.ts +7 -0
  498. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.js +11 -0
  499. package/dist/state/migrations/index.js +18 -0
  500. package/dist/state/paused-work.d.ts +52 -0
  501. package/dist/state/paused-work.js +105 -0
  502. package/dist/state/plans.d.ts +27 -8
  503. package/dist/state/plans.js +14 -11
  504. package/dist/state/purge-analysis.d.ts +6 -6
  505. package/dist/state/purge-analysis.js +10 -2
  506. package/dist/state/report-session-state.d.ts +43 -18
  507. package/dist/state/report-session-state.js +43 -4
  508. package/dist/state/report-versions.d.ts +16 -11
  509. package/dist/state/report-versions.js +5 -3
  510. package/dist/state/runs.d.ts +30 -19
  511. package/dist/state/runs.js +43 -51
  512. package/dist/state/schema.d.ts +18 -21
  513. package/dist/state/schema.js +4 -5
  514. package/dist/state/snapshot-parse.d.ts +2 -2
  515. package/dist/state/snapshot-parse.js +14 -8
  516. package/dist/state/step-executions.d.ts +20 -8
  517. package/dist/state/step-executions.js +6 -4
  518. package/dist/state/tool-outputs.d.ts +2 -2
  519. package/dist/state/tool-outputs.js +2 -1
  520. package/dist/state/vector-store.d.ts +16 -16
  521. package/dist/state/vector-store.js +11 -7
  522. package/dist/tasks/data-profile-absorb.d.ts +3 -3
  523. package/dist/tasks/data-profile-absorb.js +21 -16
  524. package/dist/tasks/data-profile-activity.d.ts +5 -5
  525. package/dist/tasks/data-profile-activity.js +5 -5
  526. package/dist/tasks/data-profile-index.d.ts +4 -4
  527. package/dist/tasks/data-profile-index.js +32 -17
  528. package/dist/tasks/data-profile-resolve.d.ts +8 -8
  529. package/dist/tasks/data-profile-resolve.js +88 -62
  530. package/dist/tasks/data-profile.d.ts +40 -31
  531. package/dist/tasks/data-profile.js +138 -95
  532. package/dist/tasks/extract-values.d.ts +26 -79
  533. package/dist/tasks/extract-values.js +48 -108
  534. package/dist/tasks/refresh-regulatory-corpus.d.ts +4 -20
  535. package/dist/tasks/refresh-regulatory-corpus.js +12 -8
  536. package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +2 -2
  537. package/dist/tasks/regulatory-corpus-boot-refresh.js +12 -10
  538. package/dist/testing.d.ts +62 -0
  539. package/dist/testing.js +101 -0
  540. package/dist/tools/ad-hoc-router.d.ts +9 -9
  541. package/dist/tools/ad-hoc-router.js +65 -52
  542. package/dist/tools/analysis-invocation.d.ts +7 -0
  543. package/dist/tools/analysis-invocation.js +29 -5
  544. package/dist/tools/approval/contract.d.ts +8 -52
  545. package/dist/tools/approval/contract.js +7 -36
  546. package/dist/tools/approval/gateway.d.ts +27 -28
  547. package/dist/tools/approval/gateway.js +33 -130
  548. package/dist/tools/approval/queries.d.ts +6 -11
  549. package/dist/tools/approval/queries.js +43 -29
  550. package/dist/tools/approval/uuidv7.js +2 -2
  551. package/dist/tools/bio/chembl.d.ts +3 -3
  552. package/dist/tools/bio/chembl.js +10 -0
  553. package/dist/tools/bio/comptox.d.ts +25 -8
  554. package/dist/tools/bio/comptox.js +4 -2
  555. package/dist/tools/bio/drug-gene-interactions.d.ts +27 -17
  556. package/dist/tools/bio/drug-gene-interactions.js +11 -8
  557. package/dist/tools/bio/gene-disease-evidence.d.ts +61 -15
  558. package/dist/tools/bio/gene-disease-evidence.js +10 -6
  559. package/dist/tools/bio/gene-preclinical-profile.d.ts +11 -11
  560. package/dist/tools/bio/keys.d.ts +2 -2
  561. package/dist/tools/bio/keys.js +3 -3
  562. package/dist/tools/bio/lookup-annotation.d.ts +5 -5
  563. package/dist/tools/bio/lookup-annotation.js +3 -0
  564. package/dist/tools/bio/opentargets.d.ts +1 -1
  565. package/dist/tools/bio/opentargets.js +6 -0
  566. package/dist/tools/bio/pubchem.d.ts +2 -2
  567. package/dist/tools/bio/pubchem.js +6 -0
  568. package/dist/tools/bio/pubmed.d.ts +26 -16
  569. package/dist/tools/bio/pubmed.js +9 -3
  570. package/dist/tools/bio/search-clinical-trials.d.ts +4 -4
  571. package/dist/tools/bio/search-clinical-trials.js +5 -1
  572. package/dist/tools/bio/search-faers.d.ts +2 -2
  573. package/dist/tools/bio/search-faers.js +1 -1
  574. package/dist/tools/bio/search-gene.d.ts +2 -2
  575. package/dist/tools/bio/search-gene.js +1 -0
  576. package/dist/tools/bio/search-geo-datasets.d.ts +4 -4
  577. package/dist/tools/bio/search-geo-datasets.js +5 -5
  578. package/dist/tools/bio/search-interactions.d.ts +1 -1
  579. package/dist/tools/bio/search-patents.d.ts +28 -22
  580. package/dist/tools/bio/search-patents.js +20 -17
  581. package/dist/tools/bio/search-protein.d.ts +2 -2
  582. package/dist/tools/bio/search-protein.js +1 -1
  583. package/dist/tools/bio/search-regulatory-approvals.d.ts +64 -18
  584. package/dist/tools/bio/search-regulatory-approvals.js +21 -16
  585. package/dist/tools/bio/target-safety.d.ts +8 -8
  586. package/dist/tools/bio/target-safety.js +11 -6
  587. package/dist/tools/capability-data.d.ts +9 -5
  588. package/dist/tools/capability-data.js +2 -1
  589. package/dist/tools/define-tool.d.ts +55 -46
  590. package/dist/tools/define-tool.js +39 -27
  591. package/dist/tools/display/normalize-echart-spec.d.ts +2 -2
  592. package/dist/tools/display/normalize-echart-spec.js +51 -27
  593. package/dist/tools/display/show-user.d.ts +2 -2
  594. package/dist/tools/display/show-user.js +1 -1
  595. package/dist/tools/execute-analysis.d.ts +19 -10
  596. package/dist/tools/execute-analysis.js +83 -62
  597. package/dist/tools/knowledge/check.d.ts +166 -44
  598. package/dist/tools/knowledge/check.js +5 -3
  599. package/dist/tools/knowledge/client.d.ts +31 -62
  600. package/dist/tools/knowledge/client.js +44 -27
  601. package/dist/tools/knowledge/environment.d.ts +6 -6
  602. package/dist/tools/knowledge/environment.js +18 -7
  603. package/dist/tools/knowledge/index.d.ts +2 -2
  604. package/dist/tools/knowledge/index.js +9 -9
  605. package/dist/tools/knowledge/local-slots.d.ts +4 -4
  606. package/dist/tools/knowledge/local-slots.js +11 -4
  607. package/dist/tools/knowledge/pin.d.ts +2 -2
  608. package/dist/tools/knowledge/recommend.d.ts +20 -45
  609. package/dist/tools/knowledge/recommend.js +27 -19
  610. package/dist/tools/knowledge/situation.d.ts +40 -40
  611. package/dist/tools/knowledge/situation.js +2 -9
  612. package/dist/tools/knowledge/skeleton.d.ts +4 -4
  613. package/dist/tools/knowledge/skeleton.js +10 -11
  614. package/dist/tools/knowledge/template.d.ts +20 -18
  615. package/dist/tools/knowledge/template.js +38 -32
  616. package/dist/tools/lib/alphafold-client.js +2 -1
  617. package/dist/tools/lib/amass-client.d.ts +28 -28
  618. package/dist/tools/lib/amass-client.js +20 -10
  619. package/dist/tools/lib/api-utils.d.ts +13 -3
  620. package/dist/tools/lib/api-utils.js +17 -3
  621. package/dist/tools/lib/bgee-client.d.ts +6 -6
  622. package/dist/tools/lib/bgee-client.js +16 -10
  623. package/dist/tools/lib/cbioportal-client.d.ts +4 -4
  624. package/dist/tools/lib/cbioportal-client.js +9 -8
  625. package/dist/tools/lib/chembl-client.d.ts +14 -14
  626. package/dist/tools/lib/chembl-client.js +11 -4
  627. package/dist/tools/lib/clinical-benchmarks-client.d.ts +4 -4
  628. package/dist/tools/lib/clinical-benchmarks-client.js +4 -7
  629. package/dist/tools/lib/clinical-trials-client.d.ts +18 -18
  630. package/dist/tools/lib/clinical-trials-client.js +10 -10
  631. package/dist/tools/lib/clinvar-client.d.ts +2 -2
  632. package/dist/tools/lib/clinvar-client.js +6 -6
  633. package/dist/tools/lib/ctx-ops.d.ts +23 -23
  634. package/dist/tools/lib/ctx-ops.js +13 -10
  635. package/dist/tools/lib/dgidb-client.d.ts +6 -6
  636. package/dist/tools/lib/dgidb-client.js +10 -12
  637. package/dist/tools/lib/disgenet-client.d.ts +4 -4
  638. package/dist/tools/lib/ema-client.d.ts +2 -2
  639. package/dist/tools/lib/ensembl-client.d.ts +4 -4
  640. package/dist/tools/lib/ensembl-client.js +5 -4
  641. package/dist/tools/lib/gwas-catalog-client.d.ts +4 -4
  642. package/dist/tools/lib/gwas-catalog-client.js +17 -17
  643. package/dist/tools/lib/html-text.d.ts +6 -0
  644. package/dist/tools/lib/html-text.js +9 -0
  645. package/dist/tools/lib/identifier-resolver.d.ts +4 -4
  646. package/dist/tools/lib/identifier-resolver.js +7 -3
  647. package/dist/tools/lib/impc-client.d.ts +8 -8
  648. package/dist/tools/lib/impc-client.js +46 -35
  649. package/dist/tools/lib/iuphar-client.d.ts +2 -2
  650. package/dist/tools/lib/iuphar-client.js +7 -16
  651. package/dist/tools/lib/monarch-client.d.ts +4 -4
  652. package/dist/tools/lib/openfda-client.d.ts +22 -22
  653. package/dist/tools/lib/openfda-client.js +23 -22
  654. package/dist/tools/lib/opentargets-client.d.ts +12 -12
  655. package/dist/tools/lib/pathway-client.d.ts +4 -4
  656. package/dist/tools/lib/pathway-client.js +15 -19
  657. package/dist/tools/lib/pharmgkb-client.d.ts +2 -2
  658. package/dist/tools/lib/pharmgkb-client.js +1 -1
  659. package/dist/tools/lib/protein-family-modality.d.ts +2 -2
  660. package/dist/tools/lib/protein-family-modality.js +0 -2
  661. package/dist/tools/lib/protein-family-normalize.js +7 -0
  662. package/dist/tools/lib/pubchem-client.d.ts +2 -2
  663. package/dist/tools/lib/pubchem-client.js +1 -0
  664. package/dist/tools/lib/pubchem-ops.d.ts +4 -4
  665. package/dist/tools/lib/pubchem-ops.js +8 -0
  666. package/dist/tools/lib/pubmed-client.d.ts +9 -9
  667. package/dist/tools/lib/pubmed-client.js +1 -1
  668. package/dist/tools/lib/string-client.d.ts +6 -6
  669. package/dist/tools/lib/uniprot-client.d.ts +8 -8
  670. package/dist/tools/lib/uniprot-client.js +5 -1
  671. package/dist/tools/memory/update-working-memory.d.ts +16 -13
  672. package/dist/tools/memory/update-working-memory.js +21 -3
  673. package/dist/tools/read-tool-output.js +8 -2
  674. package/dist/tools/registry.d.ts +2 -2
  675. package/dist/tools/report-authoring/authoring-tools.d.ts +54 -23
  676. package/dist/tools/report-authoring/authoring-tools.js +128 -62
  677. package/dist/tools/report-session/derive-table.d.ts +19 -59
  678. package/dist/tools/report-session/derive-table.js +120 -122
  679. package/dist/tools/report-session/examine-page.d.ts +6 -6
  680. package/dist/tools/report-session/examine-page.js +14 -12
  681. package/dist/tools/report-session/list-artifacts.d.ts +6 -6
  682. package/dist/tools/report-session/list-artifacts.js +5 -5
  683. package/dist/tools/report-session/page-faults.d.ts +6 -6
  684. package/dist/tools/report-session/page-faults.js +3 -1
  685. package/dist/tools/report-session/preview-report.d.ts +4 -3
  686. package/dist/tools/report-session/preview-report.js +26 -7
  687. package/dist/tools/report-session/record-version.d.ts +9 -4
  688. package/dist/tools/report-session/record-version.js +16 -9
  689. package/dist/tools/report-session/session-page-publisher.d.ts +6 -6
  690. package/dist/tools/research/generate-analogy-report.d.ts +14 -7
  691. package/dist/tools/research/generate-analogy-report.js +80 -76
  692. package/dist/tools/research/generate-plan.d.ts +16 -16
  693. package/dist/tools/research/generate-plan.js +410 -374
  694. package/dist/tools/research/guarded-address.js +3 -2
  695. package/dist/tools/research/inspect-data-profile.d.ts +27 -20
  696. package/dist/tools/research/inspect-data-profile.js +26 -25
  697. package/dist/tools/research/inspect-run.d.ts +54 -27
  698. package/dist/tools/research/inspect-run.js +50 -40
  699. package/dist/tools/research/literature-reviewer.d.ts +8 -7
  700. package/dist/tools/research/literature-reviewer.js +29 -28
  701. package/dist/tools/research/search-arxiv.d.ts +1 -1
  702. package/dist/tools/research/search-arxiv.js +1 -1
  703. package/dist/tools/research/search-github-repos.d.ts +10 -7
  704. package/dist/tools/research/search-github-repos.js +25 -22
  705. package/dist/tools/research/search-semantic-scholar.js +1 -1
  706. package/dist/tools/research/searxng-engine.d.ts +2 -2
  707. package/dist/tools/research/searxng-engine.js +6 -4
  708. package/dist/tools/research/web-fetch.d.ts +24 -21
  709. package/dist/tools/research/web-fetch.js +65 -74
  710. package/dist/tools/research/web-search.d.ts +26 -17
  711. package/dist/tools/research/web-search.js +26 -21
  712. package/dist/tools/sandbox/link-packages.d.ts +11 -7
  713. package/dist/tools/sandbox/link-packages.js +11 -8
  714. package/dist/tools/sandbox/list-available-packages.d.ts +17 -8
  715. package/dist/tools/sandbox/list-available-packages.js +31 -25
  716. package/dist/tools/sandbox/list-available-refs.d.ts +17 -14
  717. package/dist/tools/sandbox/list-available-refs.js +61 -36
  718. package/dist/tools/sandbox/report-blocker.d.ts +30 -37
  719. package/dist/tools/sandbox/report-blocker.js +23 -73
  720. package/dist/tools/sandbox/skills.d.ts +16 -12
  721. package/dist/tools/sandbox/skills.js +16 -12
  722. package/dist/tools/sandbox/submit-file-metadata.d.ts +12 -9
  723. package/dist/tools/sandbox/submit-file-metadata.js +18 -21
  724. package/dist/tools/start-report-session.d.ts +13 -5
  725. package/dist/tools/start-report-session.js +35 -8
  726. package/dist/tools/terminal-text.d.ts +5 -2
  727. package/dist/tools/terminal-text.js +35 -3
  728. package/dist/tools/workspace/decision-record.d.ts +4 -4
  729. package/dist/tools/workspace/decision-record.js +23 -13
  730. package/dist/tools/workspace/edit-file.d.ts +59 -20
  731. package/dist/tools/workspace/edit-file.js +81 -16
  732. package/dist/tools/workspace/execute-command.d.ts +15 -13
  733. package/dist/tools/workspace/execute-command.js +11 -9
  734. package/dist/tools/workspace/file-stat.d.ts +6 -3
  735. package/dist/tools/workspace/grep.d.ts +10 -7
  736. package/dist/tools/workspace/grep.js +9 -3
  737. package/dist/tools/workspace/list-files.d.ts +6 -3
  738. package/dist/tools/workspace/mutator.d.ts +28 -15
  739. package/dist/tools/workspace/mutator.js +107 -53
  740. package/dist/tools/workspace/read-file.d.ts +8 -5
  741. package/dist/tools/workspace/result-bounds.d.ts +5 -5
  742. package/dist/tools/workspace/result-bounds.js +4 -2
  743. package/dist/tools/workspace/run-exec.d.ts +2 -2
  744. package/dist/tools/workspace/run-exec.js +3 -3
  745. package/dist/tools/workspace/scan-inputs.d.ts +8 -5
  746. package/dist/tools/workspace/scan-inputs.js +17 -5
  747. package/dist/tools/workspace/show-file.d.ts +1 -1
  748. package/dist/tools/workspace/show-file.js +2 -1
  749. package/dist/tools/workspace/show-plan.d.ts +8 -5
  750. package/dist/tools/workspace/show-plan.js +9 -8
  751. package/dist/tools/workspace/workspace-search.d.ts +41 -13
  752. package/dist/tools/workspace/workspace-search.js +27 -14
  753. package/dist/tools/workspace/write-file.d.ts +9 -7
  754. package/dist/workflows/execute-analysis-scheduler.d.ts +9 -9
  755. package/dist/workflows/execute-analysis-scheduler.js +6 -3
  756. package/dist/workflows/execute-analysis.d.ts +46 -62
  757. package/dist/workflows/execute-analysis.js +137 -219
  758. package/dist/workflows/pause.d.ts +71 -0
  759. package/dist/workflows/pause.js +173 -0
  760. package/dist/workflows/sandbox-step.d.ts +38 -61
  761. package/dist/workflows/sandbox-step.js +99 -106
  762. package/dist/workflows/test/sql-writes.d.ts +21 -0
  763. package/dist/workflows/test/sql-writes.js +36 -0
  764. package/dist/workspace/filesystem.d.ts +6 -6
  765. package/dist/workspace/filesystem.js +10 -8
  766. package/dist/workspace/paths.d.ts +1 -1
  767. package/dist/workspace/paths.js +15 -4
  768. package/dist/workspace/search-config.d.ts +2 -2
  769. package/dist/workspace/search-config.js +1 -1
  770. package/package.json +21 -22
  771. package/dist/loop/call-guard.d.ts +0 -50
  772. package/dist/loop/call-guard.js +0 -90
  773. package/dist/loop/continue-agent.d.ts +0 -40
  774. package/dist/loop/continue-agent.js +0 -38
  775. package/dist/loop/genai-spans.d.ts +0 -47
  776. package/dist/loop/genai-spans.js +0 -134
  777. package/dist/loop/run-agent.d.ts +0 -245
  778. package/dist/loop/run-agent.js +0 -1124
  779. package/dist/loop/run-step.d.ts +0 -29
  780. package/dist/loop/run-step.js +0 -34
  781. package/dist/loop/run-to-terminal.d.ts +0 -66
  782. package/dist/loop/run-to-terminal.js +0 -93
  783. package/dist/loop/tool-mask.d.ts +0 -23
  784. package/dist/loop/tool-mask.js +0 -46
  785. package/dist/providers/streaming-chat.d.ts +0 -32
  786. package/dist/providers/streaming-chat.js +0 -91
  787. package/dist/tasks/derive-table-exec.d.ts +0 -54
  788. package/dist/tasks/derive-table-exec.js +0 -86
  789. package/dist/workflows/suspension.d.ts +0 -32
  790. package/dist/workflows/suspension.js +0 -38
@@ -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
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Text shapes shared across module families: whitespace runs, line
3
+ * boundaries, separator cuts, trailing cutsets, and the all-one-class
4
+ * predicates. Each is built on the string methods, so no pattern exists
5
+ * here.
6
+ */
7
+ /** Collapse every run of whitespace to one space and trim both ends. */
8
+ export declare function collapseWhitespace(text: string): string;
9
+ /** Split on CRLF or LF; a `\r` not followed by `\n` stays in its line. */
10
+ export declare function splitLines(text: string): string[];
11
+ /** The text before the first occurrence of any character of `separators`. */
12
+ export declare function firstSegmentOf(text: string | undefined, separators: string): string | undefined;
13
+ /** Whether any character of `text` is whitespace. */
14
+ export declare function hasWhitespace(text: string): boolean;
15
+ /** Strip every trailing character that appears in `cutset`. */
16
+ export declare function trimTrailingOf(text: string, cutset: string): string;
17
+ /** Whether every character of `text` is a decimal digit; the empty text is all digits. */
18
+ export declare function isAllDigits(text: string): boolean;
19
+ /** Whether every character of `text` is a hexadecimal digit; the empty text is all hex. */
20
+ export declare function isAllHex(text: string): boolean;
21
+ /** The dash-separated calendar form `YYYY-MM-DD`; the digit runs stay unchecked against the calendar. */
22
+ export declare const ISO_DATE_PATTERN: RegExp;
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Text shapes shared across module families: whitespace runs, line
3
+ * boundaries, separator cuts, trailing cutsets, and the all-one-class
4
+ * predicates. Each is built on the string methods, so no pattern exists
5
+ * here.
6
+ */
7
+ const WHITESPACE = "\t\n\v\f\r \u00a0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff";
8
+ function isWhitespace(char) {
9
+ return WHITESPACE.includes(char);
10
+ }
11
+ /** Collapse every run of whitespace to one space and trim both ends. */
12
+ export function collapseWhitespace(text) {
13
+ let out = "";
14
+ let inWhitespaceRun = false;
15
+ for (const char of text) {
16
+ if (isWhitespace(char)) {
17
+ inWhitespaceRun = true;
18
+ continue;
19
+ }
20
+ if (inWhitespaceRun && out.length > 0)
21
+ out += " ";
22
+ inWhitespaceRun = false;
23
+ out += char;
24
+ }
25
+ return out;
26
+ }
27
+ /** Split on CRLF or LF; a `\r` not followed by `\n` stays in its line. */
28
+ export function splitLines(text) {
29
+ return text.split("\n").map((line, index, lines) => (index < lines.length - 1 && line.endsWith("\r") ? line.slice(0, -1) : line));
30
+ }
31
+ /** The text before the first occurrence of any character of `separators`. */
32
+ export function firstSegmentOf(text, separators) {
33
+ if (text === undefined)
34
+ return undefined;
35
+ let end = text.length;
36
+ for (const separator of separators) {
37
+ const at = text.indexOf(separator);
38
+ if (at >= 0 && at < end)
39
+ end = at;
40
+ }
41
+ return text.slice(0, end);
42
+ }
43
+ /** Whether any character of `text` is whitespace. */
44
+ export function hasWhitespace(text) {
45
+ return Array.from(text).some(isWhitespace);
46
+ }
47
+ /** Strip every trailing character that appears in `cutset`. */
48
+ export function trimTrailingOf(text, cutset) {
49
+ let end = text.length;
50
+ while (end > 0 && cutset.includes(text.charAt(end - 1)))
51
+ end--;
52
+ return text.slice(0, end);
53
+ }
54
+ function isAsciiDigit(char) {
55
+ return char >= "0" && char <= "9";
56
+ }
57
+ const HEX_DIGITS = "0123456789abcdefABCDEF";
58
+ /** Whether every character of `text` is a decimal digit; the empty text is all digits. */
59
+ export function isAllDigits(text) {
60
+ return Array.from(text).every(isAsciiDigit);
61
+ }
62
+ /** Whether every character of `text` is a hexadecimal digit; the empty text is all hex. */
63
+ export function isAllHex(text) {
64
+ return Array.from(text).every((char) => HEX_DIGITS.includes(char));
65
+ }
66
+ /** The dash-separated calendar form `YYYY-MM-DD`; the digit runs stay unchecked against the calendar. */
67
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- a zod `.regex` is the only form that reaches the JSON Schema `pattern` of a model-facing tool input.
68
+ export const ISO_DATE_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * The reads over an arbitrary thrown value at a catch site: is it already an
3
+ * `Error`, and which of its `message` / `name` fields carry text. Every read
4
+ * but {@link errorOf} is structural, so a thrown value from another module
5
+ * realm — where `instanceof` against this build's class reference would miss —
6
+ * answers too.
7
+ */
8
+ /**
9
+ * The exact `Error` passthrough. A thrown value that IS an `Error` comes back
10
+ * as itself (class, `.cause`, and own fields intact); anything else gives
11
+ * `undefined`. The class check is deliberate: a structural lookalike must not
12
+ * pass, because each caller rethrows or forwards the value as an `Error`.
13
+ */
14
+ export declare function errorOf(value: unknown): Error | undefined;
15
+ /** The thrown value's own `message` text, when it carries one. */
16
+ export declare function errorMessageOf(value: unknown): string | undefined;
17
+ /** The thrown value's own `name`, when it carries one. */
18
+ export declare function errorNameOf(value: unknown): string | undefined;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * The reads over an arbitrary thrown value at a catch site: is it already an
3
+ * `Error`, and which of its `message` / `name` fields carry text. Every read
4
+ * but {@link errorOf} is structural, so a thrown value from another module
5
+ * realm — where `instanceof` against this build's class reference would miss —
6
+ * answers too.
7
+ */
8
+ /**
9
+ * The exact `Error` passthrough. A thrown value that IS an `Error` comes back
10
+ * as itself (class, `.cause`, and own fields intact); anything else gives
11
+ * `undefined`. The class check is deliberate: a structural lookalike must not
12
+ * pass, because each caller rethrows or forwards the value as an `Error`.
13
+ */
14
+ export function errorOf(value) {
15
+ return value instanceof Error ? value : undefined;
16
+ }
17
+ /** The thrown value's own `message` text, when it carries one. */
18
+ export function errorMessageOf(value) {
19
+ if (typeof value !== "object" || value === null || !("message" in value))
20
+ return undefined;
21
+ const { message } = value;
22
+ return typeof message === "string" ? message : undefined;
23
+ }
24
+ /** The thrown value's own `name`, when it carries one. */
25
+ export function errorNameOf(value) {
26
+ if (typeof value !== "object" || value === null || !("name" in value))
27
+ return undefined;
28
+ const { name } = value;
29
+ return typeof name === "string" ? name : undefined;
30
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * A type predicate over a value no parser has shaped yet. `Array.isArray`
3
+ * alone narrows `unknown` to `any[]`; this guard yields `unknown[]`, so each
4
+ * element must narrow before use.
5
+ */
6
+ export declare function isUnknownArray(value: unknown): value is unknown[];
@@ -0,0 +1,8 @@
1
+ /**
2
+ * A type predicate over a value no parser has shaped yet. `Array.isArray`
3
+ * alone narrows `unknown` to `any[]`; this guard yields `unknown[]`, so each
4
+ * element must narrow before use.
5
+ */
6
+ export function isUnknownArray(value) {
7
+ return Array.isArray(value);
8
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The generic containers that a walk accepts, as zod schemas.
3
+ *
4
+ * A walk over untyped data takes the container shape at its entry and keeps each field and each entry
5
+ * `unknown`, so every read narrows on its own. The record schema refuses an array, where a
6
+ * `typeof x === "object"` probe would accept one.
7
+ */
8
+ import { z } from "zod";
9
+ /** A record whose fields the walk narrows one by one. */
10
+ export declare const UnknownRecordSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
11
+ /** An array whose entries the walk narrows one by one. */
12
+ export declare const UnknownArraySchema: z.ZodArray<z.ZodUnknown>;
13
+ /** The record that a value holds, or `undefined` when the value holds no record. */
14
+ export declare function parseUnknownRecord(value: unknown): Record<string, unknown> | undefined;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The generic containers that a walk accepts, as zod schemas.
3
+ *
4
+ * A walk over untyped data takes the container shape at its entry and keeps each field and each entry
5
+ * `unknown`, so every read narrows on its own. The record schema refuses an array, where a
6
+ * `typeof x === "object"` probe would accept one.
7
+ */
8
+ import { z } from "zod";
9
+ /** A record whose fields the walk narrows one by one. */
10
+ export const UnknownRecordSchema = z.record(z.string(), z.unknown());
11
+ /** An array whose entries the walk narrows one by one. */
12
+ export const UnknownArraySchema = z.array(z.unknown());
13
+ /** The record that a value holds, or `undefined` when the value holds no record. */
14
+ export function parseUnknownRecord(value) {
15
+ const parsed = UnknownRecordSchema.safeParse(value);
16
+ return parsed.success ? parsed.data : undefined;
17
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The text form of a value whose type stopped at `unknown`: a string stays
3
+ * itself, each primitive keeps its `String` render — a missing value names
4
+ * itself as `null` / `undefined`, the `String` form the diagnostic fields
5
+ * read — and a record or array renders as JSON, so no object reaches a message
6
+ * as `[object Object]`.
7
+ */
8
+ export declare function textOf(value: unknown): string;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * The text form of a value whose type stopped at `unknown`: a string stays
3
+ * itself, each primitive keeps its `String` render — a missing value names
4
+ * itself as `null` / `undefined`, the `String` form the diagnostic fields
5
+ * read — and a record or array renders as JSON, so no object reaches a message
6
+ * as `[object Object]`.
7
+ */
8
+ function jsonTextOf(value) {
9
+ let json;
10
+ try {
11
+ json = JSON.stringify(value);
12
+ }
13
+ catch {
14
+ // A cycle or a bigint inside the value throws here.
15
+ }
16
+ // `toJSON` giving `undefined` stringifies to `undefined` rather than throwing; both
17
+ // non-strings fall to the default object stringification, the render `String` gives.
18
+ return json ?? Object.prototype.toString.call(value);
19
+ }
20
+ export function textOf(value) {
21
+ if (typeof value === "string")
22
+ return value;
23
+ if (typeof value === "number" || typeof value === "boolean" || typeof value === "bigint" || typeof value === "symbol")
24
+ return String(value);
25
+ if (typeof value === "function")
26
+ return String(value);
27
+ return value === undefined || value === null ? String(value) : jsonTextOf(value);
28
+ }
@@ -16,6 +16,6 @@
16
16
  *
17
17
  * Example: `runId: invalid_type (expected string)`.
18
18
  */
19
- import type { z } from "zod";
19
+ import { z } from "zod";
20
20
  /** Describe the issues of `error` against `schema`, one entry for each issue. */
21
21
  export declare function describeZodIssueShapes(error: z.ZodError, schema: z.ZodType): string[];
@@ -16,6 +16,7 @@
16
16
  *
17
17
  * Example: `runId: invalid_type (expected string)`.
18
18
  */
19
+ import { z } from "zod";
19
20
  /** The most issues that one failure describes. */
20
21
  const MAX_ISSUES = 10;
21
22
  /** The cap of one entry, in characters. */
@@ -72,50 +73,49 @@ function schemaPath(schema, path) {
72
73
  }
73
74
  /** The schema of the declared field `key`, looking through wrappers and unions. */
74
75
  function fieldOf(schema, key) {
75
- const def = unwrap(schema)._zod.def;
76
- if (def.type === "object")
77
- return Object.hasOwn(def.shape, key) ? def.shape[key] : undefined;
78
- if (def.type === "union") {
79
- for (const option of def.options) {
76
+ const inner = unwrap(schema);
77
+ if (inner instanceof z.ZodObject) {
78
+ const shape = inner.shape;
79
+ return Object.hasOwn(shape, key) ? shape[key] : undefined;
80
+ }
81
+ if (inner instanceof z.ZodUnion) {
82
+ for (const option of inner.options) {
80
83
  const field = fieldOf(option, key);
81
84
  if (field !== undefined)
82
85
  return field;
83
86
  }
87
+ return undefined;
84
88
  }
85
- if (def.type === "intersection")
86
- return fieldOf(def.left, key) ?? fieldOf(def.right, key);
89
+ if (inner instanceof z.ZodIntersection)
90
+ return fieldOf(inner.def.left, key) ?? fieldOf(inner.def.right, key);
87
91
  return undefined;
88
92
  }
89
93
  function elementOf(schema, index) {
90
- const def = unwrap(schema)._zod.def;
91
- if (def.type === "array")
92
- return def.element;
93
- if (def.type === "tuple")
94
- return def.items[index] ?? def.rest ?? undefined;
94
+ const inner = unwrap(schema);
95
+ if (inner instanceof z.ZodArray)
96
+ return inner.element;
97
+ if (inner instanceof z.ZodTuple)
98
+ return inner.def.items[index] ?? inner.def.rest ?? undefined;
95
99
  return undefined;
96
100
  }
97
101
  function unwrap(schema) {
98
102
  let current = schema;
99
103
  for (let depth = 0; depth < 16; depth++) {
100
- const def = current._zod.def;
101
- switch (def.type) {
102
- case "optional":
103
- case "nullable":
104
- case "default":
105
- case "prefault":
106
- case "nonoptional":
107
- case "catch":
108
- case "readonly":
109
- current = def.innerType;
110
- break;
111
- case "pipe":
112
- current = def.in;
113
- break;
114
- case "lazy":
115
- current = def.getter();
116
- break;
117
- default:
118
- return current;
104
+ if (current instanceof z.ZodOptional ||
105
+ current instanceof z.ZodNullable ||
106
+ current instanceof z.ZodDefault ||
107
+ current instanceof z.ZodPrefault ||
108
+ current instanceof z.ZodNonOptional ||
109
+ current instanceof z.ZodCatch ||
110
+ current instanceof z.ZodReadonly ||
111
+ current instanceof z.ZodLazy) {
112
+ current = current.unwrap();
113
+ }
114
+ else if (current instanceof z.ZodPipe) {
115
+ current = current.in;
116
+ }
117
+ else {
118
+ return current;
119
119
  }
120
120
  }
121
121
  return current;
@@ -14,7 +14,7 @@
14
14
  * string.
15
15
  *
16
16
  * This module owns both halves of the response for the three model-facing
17
- * validation sites (`loop/run-agent.ts`'s tool-input boundary,
17
+ * validation sites (`loop/tool-adapter.ts`'s tool-input boundary,
18
18
  * `execution/run-synthesis.ts`, `tools/research/generate-plan.ts`):
19
19
  *
20
20
  * - `hintForZodIssue` — a **diagnostic only**. It parses nothing into the
@@ -42,7 +42,7 @@
42
42
  * human-readable `message`, which is version- and locale-dependent and must
43
43
  * not be pattern-matched.
44
44
  */
45
- import type { z } from "zod";
45
+ import { z } from "zod";
46
46
  /**
47
47
  * A hint for a single Zod issue, or `undefined` when nothing actionable can be
48
48
  * said. `input` is the raw value that failed validation — the same value handed
@@ -81,7 +81,7 @@ export declare function hintForZodIssue(issue: z.core.$ZodIssue, input: unknown)
81
81
  * untouched branch and clones only along the paths it patches. Repaired content
82
82
  * is not re-examined — one pass, no recursion — and no input causes a throw.
83
83
  */
84
- export declare function repairToolInput(input: unknown, error: z.ZodError): unknown | undefined;
84
+ export declare function repairToolInput(input: unknown, error: z.ZodError): unknown;
85
85
  /**
86
86
  * Decode a value that a model sent as a JSON-encoded object string, with or
87
87
  * without a wrapper artifact. The decoded object is returned when the string
@@ -14,7 +14,7 @@
14
14
  * string.
15
15
  *
16
16
  * This module owns both halves of the response for the three model-facing
17
- * validation sites (`loop/run-agent.ts`'s tool-input boundary,
17
+ * validation sites (`loop/tool-adapter.ts`'s tool-input boundary,
18
18
  * `execution/run-synthesis.ts`, `tools/research/generate-plan.ts`):
19
19
  *
20
20
  * - `hintForZodIssue` — a **diagnostic only**. It parses nothing into the
@@ -42,6 +42,10 @@
42
42
  * human-readable `message`, which is version- and locale-dependent and must
43
43
  * not be pattern-matched.
44
44
  */
45
+ import { z } from "zod";
46
+ import { parseJsonAs } from "./parse-json.js";
47
+ import { isUnknownArray } from "./unknown-array.js";
48
+ import { parseUnknownRecord, UnknownRecordSchema } from "./unknown-containers.js";
45
49
  /**
46
50
  * Strings longer than this are neither parsed nor repaired. A real argument
47
51
  * payload is tens of kilobytes; the ceiling exists so a pathological input
@@ -51,6 +55,7 @@ const MAX_REPAIRABLE_STRING_LENGTH = 1_000_000;
51
55
  /** Longest run of offending wrapper text quoted back to the model in a hint. */
52
56
  const HINT_SNIPPET_LENGTH = 40;
53
57
  /** A trailing `</parameter>`, optionally followed by `</invoke>`. */
58
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the two call-tag closers of the model wire format, stripped from a repaired tool-call text.
54
59
  const TRAILING_CALL_TAGS = /<\/parameter>\s*(?:<\/invoke>\s*)?$/;
55
60
  /**
56
61
  * A hint for a single Zod issue, or `undefined` when nothing actionable can be
@@ -184,16 +189,14 @@ function repairableExpectation(issue) {
184
189
  * matches either expectation, but the cell keeps the caller's checks honest.
185
190
  */
186
191
  function parseAs(raw, expected) {
187
- let parsed;
188
192
  try {
189
- parsed = JSON.parse(raw);
193
+ if (expected === "array")
194
+ return { value: parseJsonAs(raw, z.array(z.json())) };
195
+ return { value: parseJsonAs(raw, UnknownRecordSchema) };
190
196
  }
191
197
  catch {
192
198
  return undefined;
193
199
  }
194
- if (expected === "array")
195
- return Array.isArray(parsed) ? { value: parsed } : undefined;
196
- return typeof parsed === "object" && parsed !== null && !Array.isArray(parsed) ? { value: parsed } : undefined;
197
200
  }
198
201
  /**
199
202
  * Strip the wrapper artifacts a model sticks to an otherwise complete JSON
@@ -213,12 +216,16 @@ function stripWrappers(raw) {
213
216
  text = text.slice(0, tags.index).trim();
214
217
  }
215
218
  if (text.startsWith("```")) {
216
- const open = /^```(?:json)?\s*\n/i.exec(text);
219
+ const open =
220
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the markdown fence opener with its optional json tag and leading whitespace; the whitespace-to-newline rule is the fence grammar.
221
+ /^```(?:json)?\s*\n/i.exec(text);
217
222
  if (open !== null) {
218
223
  removed.push(open[0].trim());
219
224
  text = text.slice(open[0].length);
220
225
  }
221
- const close = /\n```\s*$/.exec(text);
226
+ const close =
227
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the closing fence of a repaired block, with whatever whitespace the model left after it.
228
+ /\n```\s*$/.exec(text);
222
229
  if (close !== null) {
223
230
  removed.push("```");
224
231
  text = text.slice(0, close.index);
@@ -240,10 +247,10 @@ function quoteSnippet(removed) {
240
247
  function resolvePath(input, path) {
241
248
  let current = input;
242
249
  for (const key of path) {
243
- if (current === null || (typeof current !== "object" && typeof current !== "function")) {
250
+ const container = isUnknownArray(current) ? current : parseUnknownRecord(current);
251
+ if (container === undefined)
244
252
  return undefined;
245
- }
246
- current = current[key];
253
+ current = Reflect.get(container, key);
247
254
  }
248
255
  return current;
249
256
  }
@@ -255,14 +262,20 @@ function setAtPath(root, path, value) {
255
262
  if (path.length === 0)
256
263
  return value;
257
264
  const [key, ...rest] = path;
258
- if (root === null || typeof root !== "object")
259
- return root;
260
- const container = root;
261
- const child = setAtPath(container[key], rest, value);
262
- if (Array.isArray(root)) {
265
+ if (key === undefined)
266
+ return value;
267
+ const array = isUnknownArray(root);
268
+ if (array) {
269
+ const child = setAtPath(Reflect.get(root, key), rest, value);
270
+ if (typeof key !== "number")
271
+ return { ...Object.fromEntries(root.entries()), [key]: child };
263
272
  const copy = [...root];
264
273
  copy[key] = child;
265
274
  return copy;
266
275
  }
267
- return { ...container, [key]: child };
276
+ const record = parseUnknownRecord(root);
277
+ if (record === undefined)
278
+ return root;
279
+ const child = setAtPath(Reflect.get(record, key), rest, value);
280
+ return { ...record, [key]: child };
268
281
  }
@@ -1,5 +1,5 @@
1
1
  import { type SourceHttpOptions, type SourceHttpResult } from "./http.js";
2
- export interface ArxivPaper {
2
+ export type ArxivPaper = {
3
3
  id: string;
4
4
  title: string;
5
5
  abstract: string;
@@ -8,15 +8,15 @@ export interface ArxivPaper {
8
8
  categories: string[];
9
9
  url: string;
10
10
  pdfUrl?: string;
11
- }
12
- export interface ArxivSearchInput {
11
+ };
12
+ export type ArxivSearchInput = {
13
13
  readonly query: string;
14
14
  readonly categories?: readonly string[];
15
15
  readonly limit: number;
16
- }
17
- export interface ArxivSource {
16
+ };
17
+ export type ArxivSource = {
18
18
  search(input: ArxivSearchInput, signal?: AbortSignal): Promise<SourceHttpResult<ArxivPaper[]>>;
19
19
  lookupExact(id: string, limit: number, signal?: AbortSignal): Promise<SourceHttpResult<ArxivPaper[]>>;
20
- }
20
+ };
21
21
  export declare function parseArxivAtom(xml: string): ArxivPaper[];
22
22
  export declare function createArxivSource(options?: SourceHttpOptions): ArxivSource;