@theoremjs/agents 0.3.0 → 0.3.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 (570) hide show
  1. package/README.md +277 -995
  2. package/esm/mod.d.ts +34 -20
  3. package/esm/mod.js +19 -12
  4. package/esm/src/cli/commands/bench.js +36 -14
  5. package/esm/src/cli/commands/detect-compile.d.ts +17 -0
  6. package/esm/src/cli/commands/detect-compile.js +22 -0
  7. package/esm/src/cli/commands/eval.d.ts +3 -3
  8. package/esm/src/cli/commands/fuzz-canary.js +55 -16
  9. package/esm/src/cli/commands/profile.js +4 -4
  10. package/esm/src/cli/commands/run.d.ts +2 -2
  11. package/esm/src/cli/commands/run.js +1 -1
  12. package/esm/src/cli/commands/test.d.ts +4 -3
  13. package/esm/src/cli/commands/test.js +2 -2
  14. package/esm/src/cli/index.js +9 -9
  15. package/esm/src/cli/matrix/fixtures.js +25 -30
  16. package/esm/src/evals/attachments.d.ts +1 -0
  17. package/esm/src/evals/attachments.js +4 -2
  18. package/esm/src/evals/breakdown.d.ts +2 -0
  19. package/esm/src/evals/breakdown.js +1 -0
  20. package/esm/src/evals/graders/answer.d.ts +3 -0
  21. package/esm/src/evals/graders/answer.js +1 -0
  22. package/esm/src/evals/graders/code.d.ts +7 -31
  23. package/esm/src/evals/graders/code.js +4 -25
  24. package/esm/src/evals/graders/judge.d.ts +4 -0
  25. package/esm/src/evals/graders/judge.js +7 -5
  26. package/esm/src/evals/graders/latency.d.ts +1 -0
  27. package/esm/src/evals/graders/latency.js +3 -2
  28. package/esm/src/evals/graders/live.d.ts +3 -0
  29. package/esm/src/evals/graders/live.js +2 -0
  30. package/esm/src/evals/graders/media.js +1 -2
  31. package/esm/src/evals/graders/shared.js +1 -1
  32. package/esm/src/evals/graders/transcript.d.ts +2 -0
  33. package/esm/src/evals/graders/transcript.js +5 -3
  34. package/esm/src/evals/mod.d.ts +1 -9
  35. package/esm/src/evals/mod.js +1 -9
  36. package/esm/src/evals/record.d.ts +6 -0
  37. package/esm/src/evals/record.js +4 -2
  38. package/esm/src/evals/rubrics/mod.d.ts +1 -1
  39. package/esm/src/evals/rubrics/mod.js +1 -1
  40. package/esm/src/evals/rubrics/mustache.js +1 -1
  41. package/esm/src/evals/rubrics/types.js +1 -1
  42. package/esm/src/evals/run.d.ts +9 -52
  43. package/esm/src/evals/run.js +12 -46
  44. package/esm/src/evals/suite.d.ts +12 -3
  45. package/esm/src/evals/suite.js +9 -4
  46. package/esm/src/evals/summary.d.ts +3 -0
  47. package/esm/src/evals/summary.js +1 -0
  48. package/esm/src/evals/trial.d.ts +3 -16
  49. package/esm/src/evals/trial.js +7 -30
  50. package/esm/src/evals/types.d.ts +30 -121
  51. package/esm/src/evals/types.js +3 -16
  52. package/esm/src/evals/verdict.d.ts +5 -0
  53. package/esm/src/evals/verdict.js +4 -1
  54. package/esm/src/guardrails/boundaries.d.ts +41 -0
  55. package/esm/src/guardrails/boundaries.js +103 -0
  56. package/esm/src/guardrails/canary-gate.d.ts +1 -0
  57. package/esm/src/guardrails/canary.d.ts +49 -15
  58. package/esm/src/guardrails/canary.js +103 -30
  59. package/esm/src/guardrails/compile-egress.d.ts +6 -5
  60. package/esm/src/guardrails/compile-egress.js +6 -5
  61. package/esm/src/guardrails/corpus/canary-egress-attacks.d.ts +3 -1
  62. package/esm/src/guardrails/corpus/canary-egress-attacks.js +4 -2
  63. package/esm/src/guardrails/corpus/fuzz-inbound.js +14 -17
  64. package/esm/src/guardrails/corpus/inbound-payloads.d.ts +2 -0
  65. package/esm/src/guardrails/corpus/inbound-payloads.js +4 -2
  66. package/esm/src/guardrails/corpus/live-attacks.d.ts +2 -0
  67. package/esm/src/guardrails/corpus/live-attacks.js +6 -1
  68. package/esm/src/guardrails/corpus/mod.d.ts +1 -1
  69. package/esm/src/guardrails/corpus/secrets.d.ts +3 -3
  70. package/esm/src/guardrails/corpus/secrets.js +2 -2
  71. package/esm/src/guardrails/corpus/strings.d.ts +1 -1
  72. package/esm/src/guardrails/corpus/strings.js +1 -1
  73. package/esm/src/guardrails/corpus/types.d.ts +5 -1
  74. package/esm/src/guardrails/credential-rules.d.ts +36 -0
  75. package/esm/src/guardrails/credential-rules.js +3001 -0
  76. package/esm/src/guardrails/credential-scan.d.ts +45 -0
  77. package/esm/src/guardrails/credential-scan.js +172 -0
  78. package/esm/src/guardrails/destinations.d.ts +45 -0
  79. package/esm/src/guardrails/destinations.js +234 -0
  80. package/esm/src/guardrails/detect-at.d.ts +107 -0
  81. package/esm/src/guardrails/detect-at.js +434 -0
  82. package/esm/src/guardrails/detect-reply.d.ts +61 -0
  83. package/esm/src/guardrails/detect-reply.js +95 -0
  84. package/esm/src/guardrails/detect-stream.d.ts +33 -0
  85. package/esm/src/guardrails/detect-stream.js +77 -0
  86. package/esm/src/guardrails/detectors.d.ts +216 -0
  87. package/esm/src/guardrails/detectors.js +503 -0
  88. package/esm/src/guardrails/egress-automata.d.ts +4 -6
  89. package/esm/src/guardrails/egress-automata.js +24095 -4572
  90. package/esm/src/guardrails/egress-compiler.d.ts +38 -16
  91. package/esm/src/guardrails/egress-compiler.js +254 -60
  92. package/esm/src/guardrails/egress-patterns.d.ts +4 -2
  93. package/esm/src/guardrails/egress-patterns.js +6 -2
  94. package/esm/src/guardrails/egress-stream.d.ts +54 -36
  95. package/esm/src/guardrails/egress-stream.js +253 -124
  96. package/esm/src/guardrails/egress-urls.d.ts +6 -3
  97. package/esm/src/guardrails/egress-urls.js +14 -22
  98. package/esm/src/guardrails/egress.d.ts +26 -86
  99. package/esm/src/guardrails/egress.js +59 -309
  100. package/esm/src/guardrails/error.d.ts +13 -8
  101. package/esm/src/guardrails/error.js +25 -18
  102. package/esm/src/guardrails/event-schemas.d.ts +46 -3
  103. package/esm/src/guardrails/event-schemas.js +12 -5
  104. package/esm/src/guardrails/events.d.ts +5 -1
  105. package/esm/src/guardrails/events.js +4 -1
  106. package/esm/src/guardrails/hints.d.ts +14 -0
  107. package/esm/src/guardrails/hints.js +57 -0
  108. package/esm/src/guardrails/hits.d.ts +7 -1
  109. package/esm/src/guardrails/hits.js +12 -1
  110. package/esm/src/guardrails/host-patterns.d.ts +85 -0
  111. package/esm/src/guardrails/host-patterns.js +173 -0
  112. package/esm/src/guardrails/injection-patterns.d.ts +6 -1
  113. package/esm/src/guardrails/injection-patterns.js +33 -1
  114. package/esm/src/guardrails/injection-reversed.d.ts +9 -0
  115. package/esm/src/guardrails/injection-reversed.js +49 -0
  116. package/esm/src/guardrails/injection.d.ts +17 -1
  117. package/esm/src/guardrails/injection.js +259 -36
  118. package/esm/src/guardrails/labels.d.ts +40 -0
  119. package/esm/src/guardrails/labels.js +881 -0
  120. package/esm/src/guardrails/live-outbound-gate.d.ts +9 -8
  121. package/esm/src/guardrails/live-outbound-gate.js +100 -107
  122. package/esm/src/guardrails/mod.d.ts +30 -22
  123. package/esm/src/guardrails/mod.js +19 -14
  124. package/esm/src/guardrails/network.d.ts +4 -0
  125. package/esm/src/guardrails/network.js +21 -19
  126. package/esm/src/guardrails/normalize.d.ts +15 -1
  127. package/esm/src/guardrails/normalize.js +34 -1
  128. package/esm/src/guardrails/policy.d.ts +2 -17
  129. package/esm/src/guardrails/policy.js +12 -41
  130. package/esm/src/guardrails/progressive-yield.d.ts +65 -24
  131. package/esm/src/guardrails/progressive-yield.js +191 -147
  132. package/esm/src/guardrails/prompt-echo.d.ts +4 -2
  133. package/esm/src/guardrails/prompt-echo.js +87 -6
  134. package/esm/src/guardrails/quota.d.ts +4 -1
  135. package/esm/src/guardrails/quota.js +7 -2
  136. package/esm/src/guardrails/rules.d.ts +20 -29
  137. package/esm/src/guardrails/rules.js +23 -30
  138. package/esm/src/guardrails/sanitize.d.ts +32 -15
  139. package/esm/src/guardrails/sanitize.js +100 -124
  140. package/esm/src/guardrails/sensitive-groups.d.ts +21 -0
  141. package/esm/src/guardrails/sensitive-groups.js +12 -0
  142. package/esm/src/guardrails/sensitive.d.ts +16 -23
  143. package/esm/src/guardrails/sensitive.js +168 -47
  144. package/esm/src/guardrails/serialize.d.ts +1 -0
  145. package/esm/src/guardrails/testing.d.ts +4 -2
  146. package/esm/src/guardrails/testing.js +4 -2
  147. package/esm/src/guardrails/theorem-error.d.ts +5 -2
  148. package/esm/src/guardrails/theorem-error.js +6 -3
  149. package/esm/src/guardrails/thought-guard.d.ts +34 -13
  150. package/esm/src/guardrails/thought-guard.js +264 -64
  151. package/esm/src/guardrails/tool-directives.d.ts +29 -10
  152. package/esm/src/guardrails/tool-directives.js +133 -47
  153. package/esm/src/guardrails/tool-leak.d.ts +26 -0
  154. package/esm/src/guardrails/tool-leak.js +45 -0
  155. package/esm/src/guardrails/tool-result.d.ts +45 -14
  156. package/esm/src/guardrails/tool-result.js +94 -70
  157. package/esm/src/guardrails/types.d.ts +79 -71
  158. package/esm/src/guardrails/types.js +11 -7
  159. package/esm/src/host/client-turn.d.ts +29 -2
  160. package/esm/src/host/client-turn.js +46 -4
  161. package/esm/src/host/mint-trace.d.ts +1 -0
  162. package/esm/src/host/mint-trace.js +3 -2
  163. package/esm/src/host/mod.d.ts +2 -2
  164. package/esm/src/host/mod.js +1 -1
  165. package/esm/src/host/readStreamingJsonStringField.js +2 -43
  166. package/esm/src/host/reply.d.ts +6 -0
  167. package/esm/src/host/reply.js +8 -1
  168. package/esm/src/interface/blocks.d.ts +3 -0
  169. package/esm/src/interface/blocks.js +84 -14
  170. package/esm/src/interface/composer-actions.d.ts +4 -0
  171. package/esm/src/interface/composer-actions.js +5 -3
  172. package/esm/src/interface/draft.d.ts +6 -0
  173. package/esm/src/interface/draft.js +22 -11
  174. package/esm/src/interface/from-profile.d.ts +13 -1
  175. package/esm/src/interface/from-profile.js +66 -31
  176. package/esm/src/interface/history.d.ts +9 -3
  177. package/esm/src/interface/history.js +33 -24
  178. package/esm/src/interface/inputs.d.ts +1 -0
  179. package/esm/src/interface/inputs.js +3 -0
  180. package/esm/src/interface/mod.d.ts +4 -2
  181. package/esm/src/interface/mod.js +3 -2
  182. package/esm/src/interface/models.d.ts +7 -0
  183. package/esm/src/interface/models.js +5 -0
  184. package/esm/src/interface/pending.d.ts +9 -0
  185. package/esm/src/interface/pending.js +9 -3
  186. package/esm/src/interface/profile-interface.js +54 -40
  187. package/esm/src/interface/session.d.ts +12 -5
  188. package/esm/src/interface/session.js +17 -10
  189. package/esm/src/interface/stop.d.ts +13 -0
  190. package/esm/src/interface/stop.js +28 -0
  191. package/esm/src/interface/tool-calls.d.ts +14 -2
  192. package/esm/src/interface/tool-calls.js +64 -10
  193. package/esm/src/interface/tool-invoke.d.ts +2 -0
  194. package/esm/src/interface/tool-invoke.js +3 -1
  195. package/esm/src/interface/tool-media.d.ts +2 -0
  196. package/esm/src/interface/tool-media.js +2 -1
  197. package/esm/src/interface/types.d.ts +105 -40
  198. package/esm/src/interface/types.js +1 -0
  199. package/esm/src/kernel/api-catalog.d.ts +85 -0
  200. package/esm/src/kernel/api-catalog.js +229 -0
  201. package/esm/src/kernel/auth/crypto.d.ts +7 -2
  202. package/esm/src/kernel/auth/crypto.js +12 -10
  203. package/esm/src/kernel/auth/oauth.d.ts +2 -1
  204. package/esm/src/kernel/auth/oauth.js +23 -22
  205. package/esm/src/kernel/auth/typed-secret.js +2 -2
  206. package/esm/src/kernel/auth/types.d.ts +13 -0
  207. package/esm/src/kernel/checkpoint.d.ts +43 -0
  208. package/esm/src/kernel/checkpoint.js +58 -0
  209. package/esm/src/kernel/default-scope.d.ts +43 -5
  210. package/esm/src/kernel/default-scope.js +54 -5
  211. package/esm/src/kernel/engine/call-trace.d.ts +19 -0
  212. package/esm/src/kernel/engine/call-trace.js +29 -0
  213. package/esm/src/kernel/engine/compaction.d.ts +6 -5
  214. package/esm/src/kernel/engine/compaction.js +12 -11
  215. package/esm/src/kernel/engine/decision.d.ts +10 -8
  216. package/esm/src/kernel/engine/decision.js +174 -146
  217. package/esm/src/kernel/engine/embedding.d.ts +8 -0
  218. package/esm/src/kernel/engine/embedding.js +118 -0
  219. package/esm/src/kernel/engine/live-inbound.d.ts +14 -4
  220. package/esm/src/kernel/engine/live-inbound.js +36 -11
  221. package/esm/src/kernel/engine/live-ingress.d.ts +6 -0
  222. package/esm/src/kernel/engine/live-ingress.js +6 -1
  223. package/esm/src/kernel/engine/repair.js +12 -12
  224. package/esm/src/kernel/engine/runner/gates.d.ts +2 -2
  225. package/esm/src/kernel/engine/runner/gates.js +287 -101
  226. package/esm/src/kernel/engine/runner/mod.d.ts +19 -5
  227. package/esm/src/kernel/engine/runner/mod.js +107 -56
  228. package/esm/src/kernel/engine/runner/nested.d.ts +32 -0
  229. package/esm/src/kernel/engine/runner/nested.js +134 -0
  230. package/esm/src/kernel/engine/runner/schema-validation.d.ts +24 -3
  231. package/esm/src/kernel/engine/runner/schema-validation.js +78 -4
  232. package/esm/src/kernel/engine/runner/stages.d.ts +1 -1
  233. package/esm/src/kernel/engine/runner/stages.js +1 -8
  234. package/esm/src/kernel/engine/runner/state.d.ts +33 -12
  235. package/esm/src/kernel/engine/runner/state.js +11 -1
  236. package/esm/src/kernel/engine/runner/step-order.d.ts +27 -0
  237. package/esm/src/kernel/engine/runner/step-order.js +165 -0
  238. package/esm/src/kernel/engine/runner/steps.d.ts +2 -2
  239. package/esm/src/kernel/engine/runner/steps.js +329 -169
  240. package/esm/src/kernel/engine/runner/stream.d.ts +42 -11
  241. package/esm/src/kernel/engine/runner/stream.js +197 -46
  242. package/esm/src/kernel/engine/runner/usage.d.ts +5 -5
  243. package/esm/src/kernel/engine/runner/usage.js +12 -14
  244. package/esm/src/kernel/engine/session/mod.d.ts +8 -6
  245. package/esm/src/kernel/engine/session/mod.js +360 -129
  246. package/esm/src/kernel/engine/session/session-trace.d.ts +10 -10
  247. package/esm/src/kernel/engine/session/session-trace.js +41 -30
  248. package/esm/src/kernel/engine/token-estimate.d.ts +10 -64
  249. package/esm/src/kernel/engine/token-estimate.js +14 -194
  250. package/esm/src/kernel/engine/tool-trace.d.ts +3 -3
  251. package/esm/src/kernel/engine/tool-trace.js +2 -1
  252. package/esm/src/kernel/engine/turn-trace.d.ts +8 -7
  253. package/esm/src/kernel/engine/turn-trace.js +28 -36
  254. package/esm/src/kernel/engine/usage.d.ts +6 -0
  255. package/esm/src/kernel/engine/usage.js +17 -0
  256. package/esm/src/kernel/interaction-parts.d.ts +3 -0
  257. package/esm/src/kernel/interaction-parts.js +18 -0
  258. package/esm/src/kernel/json.d.ts +10 -0
  259. package/esm/src/kernel/json.js +3 -0
  260. package/esm/src/kernel/mod.d.ts +38 -11
  261. package/esm/src/kernel/mod.js +22 -7
  262. package/esm/src/kernel/profile-graph.d.ts +11 -6
  263. package/esm/src/kernel/profile-graph.js +14 -7
  264. package/esm/src/kernel/profile-presence.d.ts +10 -1
  265. package/esm/src/kernel/profile-presence.js +90 -75
  266. package/esm/src/kernel/profile-scope.d.ts +7 -3
  267. package/esm/src/kernel/profile-scope.js +67 -55
  268. package/esm/src/kernel/protocols/binding.d.ts +65 -0
  269. package/esm/src/kernel/protocols/binding.js +125 -0
  270. package/esm/src/kernel/protocols/limits.d.ts +15 -0
  271. package/esm/src/kernel/protocols/limits.js +28 -0
  272. package/esm/src/kernel/protocols/mod.d.ts +5 -0
  273. package/esm/src/kernel/protocols/mod.js +5 -0
  274. package/esm/src/kernel/protocols/prices.d.ts +36 -0
  275. package/esm/src/kernel/protocols/prices.js +37 -0
  276. package/esm/src/kernel/protocols/protocol.d.ts +253 -0
  277. package/esm/src/kernel/protocols/protocol.js +253 -0
  278. package/esm/src/kernel/protocols/provider.d.ts +108 -0
  279. package/esm/src/kernel/protocols/provider.js +143 -0
  280. package/esm/src/kernel/protocols/runtime.d.ts +55 -0
  281. package/esm/src/kernel/protocols/runtime.js +534 -0
  282. package/esm/src/kernel/provider-budget.d.ts +32 -0
  283. package/esm/src/kernel/provider-budget.js +262 -0
  284. package/esm/src/kernel/provider-dispatch.d.ts +13 -0
  285. package/esm/src/kernel/provider-dispatch.js +36 -0
  286. package/esm/src/kernel/provider-live.d.ts +7 -0
  287. package/esm/src/kernel/provider-live.js +189 -0
  288. package/esm/src/kernel/provider-runtime.d.ts +57 -0
  289. package/esm/src/kernel/provider-runtime.js +524 -0
  290. package/esm/src/kernel/registry/attachments.d.ts +15 -4
  291. package/esm/src/kernel/registry/attachments.js +31 -22
  292. package/esm/src/kernel/registry/catalog.d.ts +6 -0
  293. package/esm/src/kernel/registry/catalog.js +9 -2
  294. package/esm/src/kernel/registry/embedding-rules.d.ts +28 -0
  295. package/esm/src/kernel/registry/embedding-rules.js +66 -0
  296. package/esm/src/kernel/registry/ingress.d.ts +6 -2
  297. package/esm/src/kernel/registry/ingress.js +55 -10
  298. package/esm/src/kernel/registry/kernel-registry.d.ts +3 -0
  299. package/esm/src/kernel/registry/kernel-registry.js +9 -2
  300. package/esm/src/kernel/registry/profile-outputs.js +4 -1
  301. package/esm/src/kernel/registry/profiles.d.ts +38 -14
  302. package/esm/src/kernel/registry/profiles.js +280 -205
  303. package/esm/src/kernel/registry/provider-request.d.ts +3 -3
  304. package/esm/src/kernel/registry/provider-request.js +5 -13
  305. package/esm/src/kernel/registry/resolve.d.ts +4 -1
  306. package/esm/src/kernel/registry/resolve.js +59 -58
  307. package/esm/src/kernel/registry/schemas.d.ts +3 -0
  308. package/esm/src/kernel/registry/schemas.js +3 -1
  309. package/esm/src/kernel/registry/slot-fill.d.ts +7 -0
  310. package/esm/src/kernel/registry/slot-fill.js +22 -0
  311. package/esm/src/kernel/registry/system-prompt.js +7 -8
  312. package/esm/src/kernel/registry/vault.d.ts +14 -13
  313. package/esm/src/kernel/registry/vault.js +1 -14
  314. package/esm/src/kernel/schema.d.ts +100 -46
  315. package/esm/src/kernel/schema.js +499 -257
  316. package/esm/src/kernel/scope.d.ts +12 -5
  317. package/esm/src/kernel/scope.js +23 -3
  318. package/esm/src/kernel/stages.d.ts +38 -3
  319. package/esm/src/kernel/stages.js +82 -39
  320. package/esm/src/kernel/stop.d.ts +29 -6
  321. package/esm/src/kernel/stop.js +16 -4
  322. package/esm/src/kernel/system-parts.js +6 -6
  323. package/esm/src/kernel/tools/activity-label.d.ts +12 -6
  324. package/esm/src/kernel/tools/activity-label.js +258 -32
  325. package/esm/src/kernel/tools/agent.d.ts +66 -0
  326. package/esm/src/kernel/tools/agent.js +212 -0
  327. package/esm/src/kernel/tools/coordinate.d.ts +4 -0
  328. package/esm/src/kernel/tools/coordinate.js +165 -0
  329. package/esm/src/kernel/tools/events.d.ts +21 -6
  330. package/esm/src/kernel/tools/events.js +53 -18
  331. package/esm/src/kernel/tools/execute.d.ts +47 -11
  332. package/esm/src/kernel/tools/execute.js +508 -136
  333. package/esm/src/kernel/tools/gate-answer.d.ts +12 -2
  334. package/esm/src/kernel/tools/gate-answer.js +17 -6
  335. package/esm/src/kernel/tools/handler-events.d.ts +45 -0
  336. package/esm/src/kernel/tools/handler-events.js +106 -0
  337. package/esm/src/kernel/tools/harness.d.ts +1 -0
  338. package/esm/src/kernel/tools/harness.js +2 -1
  339. package/esm/src/kernel/tools/http-limit.d.ts +27 -0
  340. package/esm/src/kernel/tools/http-limit.js +85 -0
  341. package/esm/src/kernel/tools/invoke.d.ts +27 -5
  342. package/esm/src/kernel/tools/invoke.js +223 -70
  343. package/esm/src/kernel/tools/mcp-sessions.d.ts +4 -1
  344. package/esm/src/kernel/tools/mcp-sessions.js +13 -8
  345. package/esm/src/kernel/tools/mod.d.ts +4 -3
  346. package/esm/src/kernel/tools/mod.js +3 -2
  347. package/esm/src/kernel/tools/model-text.d.ts +10 -5
  348. package/esm/src/kernel/tools/model-text.js +18 -12
  349. package/esm/src/kernel/tools/operation.d.ts +76 -0
  350. package/esm/src/kernel/tools/operation.js +100 -0
  351. package/esm/src/kernel/tools/page-answer.d.ts +8 -0
  352. package/esm/src/kernel/tools/page-answer.js +19 -0
  353. package/esm/src/kernel/tools/permission.d.ts +11 -2
  354. package/esm/src/kernel/tools/permission.js +12 -12
  355. package/esm/src/kernel/tools/project.d.ts +4 -1
  356. package/esm/src/kernel/tools/project.js +32 -2
  357. package/esm/src/kernel/tools/registry.d.ts +9 -2
  358. package/esm/src/kernel/tools/registry.js +69 -10
  359. package/esm/src/kernel/tools/remote.d.ts +40 -6
  360. package/esm/src/kernel/tools/remote.js +219 -92
  361. package/esm/src/kernel/tools/resolve.d.ts +3 -0
  362. package/esm/src/kernel/tools/resolve.js +12 -4
  363. package/esm/src/kernel/tools/run.d.ts +28 -0
  364. package/esm/src/kernel/tools/run.js +86 -0
  365. package/esm/src/kernel/tools/schema.d.ts +3 -3
  366. package/esm/src/kernel/tools/schema.js +21 -100
  367. package/esm/src/kernel/tools/signed-in-fetch.d.ts +2 -1
  368. package/esm/src/kernel/tools/signed-in-fetch.js +3 -3
  369. package/esm/src/kernel/tools/stage-run.d.ts +27 -4
  370. package/esm/src/kernel/tools/stage-run.js +75 -17
  371. package/esm/src/kernel/tools/types.d.ts +235 -25
  372. package/esm/src/kernel/tools/unchecked-output.d.ts +14 -0
  373. package/esm/src/kernel/tools/unchecked-output.js +18 -0
  374. package/esm/src/kernel/turn-events.d.ts +208 -31
  375. package/esm/src/kernel/turn-events.js +127 -9
  376. package/esm/src/kernel/types.d.ts +302 -161
  377. package/esm/src/kernel/util/base64.d.ts +2 -0
  378. package/esm/src/kernel/util/base64.js +2 -0
  379. package/esm/src/kernel/util/partial-json.d.ts +23 -0
  380. package/esm/src/kernel/util/partial-json.js +128 -0
  381. package/esm/src/kernel/util/record.d.ts +1 -0
  382. package/esm/src/kernel/util/record.js +1 -0
  383. package/esm/src/observability/destinations.d.ts +5 -0
  384. package/esm/src/observability/destinations.js +7 -2
  385. package/esm/src/observability/jsonl.d.ts +2 -2
  386. package/esm/src/observability/jsonl.js +15 -22
  387. package/esm/src/observability/mod.d.ts +3 -3
  388. package/esm/src/observability/mod.js +2 -2
  389. package/esm/src/observability/openinference.d.ts +1 -1
  390. package/esm/src/observability/openinference.js +3 -3
  391. package/esm/src/observability/otlp.d.ts +3 -0
  392. package/esm/src/observability/otlp.js +3 -3
  393. package/esm/src/observability/phoenix.d.ts +1 -0
  394. package/esm/src/observability/policy.d.ts +3 -0
  395. package/esm/src/observability/policy.js +5 -1
  396. package/esm/src/observability/resolve-policy.js +11 -5
  397. package/esm/src/observability/spans.d.ts +8 -2
  398. package/esm/src/observability/spans.js +21 -5
  399. package/esm/src/observability/trace-catalog.d.ts +19 -2
  400. package/esm/src/observability/trace-catalog.js +130 -88
  401. package/esm/src/observability/trace-record.js +22 -17
  402. package/esm/src/observability/trace-schema.d.ts +3 -0
  403. package/esm/src/observability/trace-schema.js +1 -1
  404. package/esm/src/observability/trace-sink.d.ts +1 -0
  405. package/esm/src/observability/trace-sink.js +1 -1
  406. package/esm/src/observability/trace-span.d.ts +7 -1
  407. package/esm/src/observability/trace-span.js +3 -1
  408. package/esm/src/observability/trace.d.ts +2 -0
  409. package/esm/src/observability/trace.js +4 -2
  410. package/esm/src/observability/types.d.ts +35 -11
  411. package/esm/src/observability/types.js +1 -1
  412. package/esm/src/presets/google/speech-voices.d.ts +1 -0
  413. package/esm/src/presets/google-limits.d.ts +1 -0
  414. package/esm/src/presets/google.d.ts +27 -12
  415. package/esm/src/presets/google.js +34 -25
  416. package/esm/src/presets/local.d.ts +26 -0
  417. package/esm/src/presets/local.js +30 -0
  418. package/esm/src/presets/mod.d.ts +5 -4
  419. package/esm/src/presets/mod.js +4 -4
  420. package/esm/src/presets/openrouter.d.ts +14 -1
  421. package/esm/src/presets/openrouter.js +19 -1
  422. package/esm/src/providers/embedding-limits.d.ts +7 -0
  423. package/esm/src/providers/embedding-limits.js +12 -0
  424. package/esm/src/providers/gemini/embedding-protocol.d.ts +8 -0
  425. package/esm/src/providers/gemini/embedding-protocol.js +125 -0
  426. package/esm/src/providers/gemini/interactions-protocol.d.ts +8 -0
  427. package/esm/src/providers/gemini/interactions-protocol.js +102 -0
  428. package/esm/src/providers/gemini/live-protocol.d.ts +3 -0
  429. package/esm/src/providers/gemini/live-protocol.js +191 -0
  430. package/esm/src/providers/gemini/prices.d.ts +3 -0
  431. package/esm/src/providers/gemini/prices.js +63 -0
  432. package/esm/src/providers/gemini/provider.d.ts +7 -0
  433. package/esm/src/providers/gemini/provider.js +39 -0
  434. package/esm/src/providers/google/api-error.d.ts +2 -0
  435. package/esm/src/providers/google/api-error.js +26 -18
  436. package/esm/src/providers/google/builtins.d.ts +14 -0
  437. package/esm/src/providers/google/builtins.js +57 -0
  438. package/esm/src/providers/google/grounding.d.ts +4 -4
  439. package/esm/src/providers/google/interactions/framing.d.ts +20 -8
  440. package/esm/src/providers/google/interactions/framing.js +85 -44
  441. package/esm/src/providers/google/interactions/steps.d.ts +5 -5
  442. package/esm/src/providers/google/interactions/steps.js +4 -4
  443. package/esm/src/providers/google/interactions/stream.d.ts +10 -11
  444. package/esm/src/providers/google/interactions/stream.js +33 -100
  445. package/esm/src/providers/google/live/framing.d.ts +15 -5
  446. package/esm/src/providers/google/live/framing.js +25 -25
  447. package/esm/src/providers/google/live/stream.d.ts +6 -44
  448. package/esm/src/providers/google/live/stream.js +4 -210
  449. package/esm/src/providers/google/urls.d.ts +1 -3
  450. package/esm/src/providers/google/urls.js +1 -3
  451. package/esm/src/providers/google/usage.js +2 -2
  452. package/esm/src/providers/live.d.ts +6 -0
  453. package/esm/src/providers/live.js +6 -0
  454. package/esm/src/providers/local/embedding-protocol.d.ts +7 -0
  455. package/esm/src/providers/local/embedding-protocol.js +60 -0
  456. package/esm/src/providers/local/provider.d.ts +7 -0
  457. package/esm/src/providers/local/provider.js +28 -0
  458. package/esm/src/providers/mod.d.ts +28 -7
  459. package/esm/src/providers/mod.js +19 -3
  460. package/esm/src/providers/open-ai/protocol.d.ts +3 -0
  461. package/esm/src/providers/open-ai/protocol.js +189 -0
  462. package/esm/src/providers/openrouter/embedding-protocol.d.ts +6 -0
  463. package/esm/src/providers/openrouter/embedding-protocol.js +86 -0
  464. package/esm/src/providers/openrouter/image.d.ts +0 -9
  465. package/esm/src/providers/openrouter/image.js +0 -153
  466. package/esm/src/providers/openrouter/images-protocol.d.ts +3 -0
  467. package/esm/src/providers/openrouter/images-protocol.js +82 -0
  468. package/esm/src/providers/openrouter/openai/compat.d.ts +2 -2
  469. package/esm/src/providers/openrouter/openai/compat.js +6 -6
  470. package/esm/src/providers/openrouter/openai/image-payload.d.ts +2 -2
  471. package/esm/src/providers/openrouter/openai/reasoning-state.d.ts +2 -0
  472. package/esm/src/providers/openrouter/openai/reasoning-state.js +31 -0
  473. package/esm/src/providers/openrouter/protocol.d.ts +8 -0
  474. package/esm/src/providers/openrouter/protocol.js +171 -0
  475. package/esm/src/providers/openrouter/provider.d.ts +10 -0
  476. package/esm/src/providers/openrouter/provider.js +50 -0
  477. package/esm/src/providers/shared/carried-tool-files.d.ts +7 -0
  478. package/esm/src/providers/shared/carried-tool-files.js +43 -0
  479. package/esm/src/providers/shared/pcm.js +2 -2
  480. package/esm/src/providers/shared/protocol-events.d.ts +8 -0
  481. package/esm/src/providers/shared/protocol-events.js +20 -0
  482. package/esm/src/providers/shared/response-identity.d.ts +2 -2
  483. package/esm/src/providers/shared/retry.d.ts +18 -0
  484. package/esm/src/providers/shared/retry.js +89 -0
  485. package/esm/src/providers/shared/sse.d.ts +0 -4
  486. package/esm/src/providers/shared/sse.js +50 -36
  487. package/esm/src/providers/shared/tool-args.d.ts +6 -7
  488. package/esm/src/providers/shared/tool-args.js +10 -6
  489. package/esm/src/providers/shared/tool-draft.d.ts +16 -0
  490. package/esm/src/providers/shared/tool-draft.js +14 -0
  491. package/esm/src/providers/shared/upstream-tap.d.ts +2 -2
  492. package/esm/src/providers/shared/upstream-tape.js +1 -1
  493. package/esm/src/providers/system-one/protocol.d.ts +8 -0
  494. package/esm/src/providers/system-one/protocol.js +93 -0
  495. package/esm/src/providers/types.d.ts +48 -16
  496. package/esm/src/providers/types.js +2 -1
  497. package/esm/src/providers/typesafe/provider.d.ts +7 -0
  498. package/esm/src/providers/typesafe/provider.js +24 -0
  499. package/esm/src/surface/formats.d.ts +19 -1
  500. package/esm/src/surface/formats.js +68 -29
  501. package/esm/src/surface/mod.d.ts +4 -2
  502. package/esm/src/surface/mod.js +4 -2
  503. package/esm/src/surface/runtime.d.ts +4 -0
  504. package/esm/src/surface/runtime.js +2 -0
  505. package/esm/src/surface/tools.d.ts +2 -8
  506. package/esm/src/surface/tools.js +4 -22
  507. package/esm/src/surface/types.d.ts +6 -0
  508. package/package.json +5 -13
  509. package/esm/src/cli/commands/egress-compile.d.ts +0 -17
  510. package/esm/src/cli/commands/egress-compile.js +0 -25
  511. package/esm/src/guardrails/egress-policy.d.ts +0 -27
  512. package/esm/src/guardrails/egress-policy.js +0 -76
  513. package/esm/src/guardrails/egress-rules.d.ts +0 -54
  514. package/esm/src/guardrails/egress-rules.js +0 -49
  515. package/esm/src/guardrails/lexicon.d.ts +0 -30
  516. package/esm/src/guardrails/lexicon.js +0 -478
  517. package/esm/src/kernel/engine/media-probe/audio.d.ts +0 -7
  518. package/esm/src/kernel/engine/media-probe/audio.js +0 -342
  519. package/esm/src/kernel/engine/media-probe/bytes.d.ts +0 -6
  520. package/esm/src/kernel/engine/media-probe/bytes.js +0 -26
  521. package/esm/src/kernel/engine/media-probe/image.d.ts +0 -5
  522. package/esm/src/kernel/engine/media-probe/image.js +0 -171
  523. package/esm/src/kernel/engine/media-probe/iso-bmff.d.ts +0 -19
  524. package/esm/src/kernel/engine/media-probe/iso-bmff.js +0 -48
  525. package/esm/src/kernel/engine/media-probe/matroska.d.ts +0 -35
  526. package/esm/src/kernel/engine/media-probe/matroska.js +0 -226
  527. package/esm/src/kernel/engine/media-probe/mp4.d.ts +0 -22
  528. package/esm/src/kernel/engine/media-probe/mp4.js +0 -279
  529. package/esm/src/kernel/engine/media-probe/opus.d.ts +0 -4
  530. package/esm/src/kernel/engine/media-probe/opus.js +0 -23
  531. package/esm/src/kernel/engine/media-probe/pdf.d.ts +0 -5
  532. package/esm/src/kernel/engine/media-probe/pdf.js +0 -117
  533. package/esm/src/kernel/engine/media-probe/video.d.ts +0 -15
  534. package/esm/src/kernel/engine/media-probe/video.js +0 -49
  535. package/esm/src/presets/typesafe.d.ts +0 -2
  536. package/esm/src/presets/typesafe.js +0 -2
  537. package/esm/src/providers/create-provider.d.ts +0 -21
  538. package/esm/src/providers/create-provider.js +0 -90
  539. package/esm/src/providers/decision/usage.d.ts +0 -3
  540. package/esm/src/providers/decision/usage.js +0 -25
  541. package/esm/src/providers/google/interactions/mod.d.ts +0 -2
  542. package/esm/src/providers/google/interactions/mod.js +0 -2
  543. package/esm/src/providers/google/keys.d.ts +0 -20
  544. package/esm/src/providers/google/keys.js +0 -87
  545. package/esm/src/providers/google/live/mod.d.ts +0 -7
  546. package/esm/src/providers/google/live/mod.js +0 -7
  547. package/esm/src/providers/google/live/openapi-schema.d.ts +0 -1
  548. package/esm/src/providers/google/live/openapi-schema.js +0 -42
  549. package/esm/src/providers/google/live/session.d.ts +0 -14
  550. package/esm/src/providers/google/live/session.js +0 -150
  551. package/esm/src/providers/local/local.d.ts +0 -12
  552. package/esm/src/providers/local/local.js +0 -186
  553. package/esm/src/providers/local/mod.d.ts +0 -8
  554. package/esm/src/providers/local/mod.js +0 -8
  555. package/esm/src/providers/openrouter/cache-control.d.ts +0 -5
  556. package/esm/src/providers/openrouter/cache-control.js +0 -4
  557. package/esm/src/providers/openrouter/chat.d.ts +0 -64
  558. package/esm/src/providers/openrouter/chat.js +0 -490
  559. package/esm/src/providers/openrouter/openai/sdk-messages.d.ts +0 -10
  560. package/esm/src/providers/openrouter/openai/sdk-messages.js +0 -99
  561. package/esm/src/providers/openrouter/resolve-api-key.d.ts +0 -3
  562. package/esm/src/providers/openrouter/resolve-api-key.js +0 -8
  563. package/esm/src/providers/openrouter/speech.d.ts +0 -18
  564. package/esm/src/providers/openrouter/speech.js +0 -109
  565. package/esm/src/providers/probe.d.ts +0 -5
  566. package/esm/src/providers/probe.js +0 -15
  567. package/esm/src/providers/shared/builtin-wire.d.ts +0 -4
  568. package/esm/src/providers/shared/builtin-wire.js +0 -9
  569. package/esm/src/providers/shared/vault.d.ts +0 -13
  570. package/esm/src/providers/shared/vault.js +0 -41
@@ -1,15 +1,21 @@
1
1
  import type { z } from 'zod';
2
+ import type { TurnDestinations } from '../../guardrails/destinations.js';
2
3
  import type { ResolveHost } from '../../guardrails/network.js';
3
4
  import type { GuardrailHit, Provenance, TurnTaint } from '../../guardrails/types.js';
4
5
  import type { ToolCredentialSource } from '../auth/credential-source.js';
5
6
  import type { OAuthEndpoints } from '../auth/types.js';
6
- import type { AuthUnauthenticatedPolicy, HttpMethod, ToolAccess, ToolAuthType, ToolLoadTier, ToolPermission, ToolResumeCause } from '../schema.js';
7
- import type { Source, ToolCallEdit, ToolCallEvent, ToolCallRequest, ToolFailure, ToolGate, ToolPhaseEvent, ToolTraceStep, ToolWarning, TurnToolSnapshot, WireFunctionTool } from '../turn-events.js';
8
- import type { InteractionPart, Profile, ToolId, TurnInput, TurnTraceLink } from '../types.js';
7
+ import type { AuthUnauthenticatedPolicy, HttpMethod, ToolAccess, ToolAuthType, ToolGateKind, ToolLoadTier, ToolPermission, ToolResumeCause } from '../schema.js';
8
+ import type { RemovedItem, Source, ToolCallEdit, ToolCallEvent, ToolCallRequest, ToolFailure, ToolGate, ToolPhaseEvent, ToolTraceStep, ToolWarning, TurnToolSnapshot, WireFunctionTool } from '../turn-events.js';
9
+ import type { InteractionPart, ModelId, Profile, ProfileId, ToolId, TurnInput, TurnRequest, TurnSpeech, TurnTraceLink } from '../types.js';
10
+ import type { LabelTemplate } from './activity-label.js';
11
+ import type { PageToolExecution, ToolExecutionCoordinator } from './operation.js';
12
+ import type { UncheckedOutput } from './unchecked-output.js';
9
13
  export type { AuthUnauthenticatedPolicy, HttpMethod, ToolAccess, ToolAuthType, ToolCallEdit, ToolCallEvent, ToolCallRequest, ToolFailure, ToolGate, ToolPermission, ToolPhaseEvent, ToolTraceStep, ToolWarning, TurnToolSnapshot, WireFunctionTool, };
10
14
  export interface ToolLabels {
11
- activity?: string;
12
- activityPast?: string;
15
+ activity?: LabelTemplate;
16
+ activityPast?: LabelTemplate;
17
+ activityFailed?: LabelTemplate;
18
+ request?: LabelTemplate;
13
19
  hiddenFromSettings?: boolean;
14
20
  }
15
21
  export interface ToolBase {
@@ -22,19 +28,20 @@ export interface ToolBase {
22
28
  permission: ToolPermission;
23
29
  labels?: ToolLabels;
24
30
  }
25
- export interface BuiltinWire {
26
- interactions?: string;
27
- openRouter?: string;
28
- live?: string;
29
- }
31
+ /**
32
+ * A tool the provider runs. This is its entry in the tool list; the provider's
33
+ * adapter declares it (`ProviderAdapter.builtins`) and owns how it is sent.
34
+ */
30
35
  export interface BuiltinToolDef extends ToolBase {
31
36
  type: 'builtin';
32
- wire: BuiltinWire;
33
37
  conflictsWith?: string[];
34
38
  }
39
+ /** How a held tool call resumes: approved, refused, or retried after sign-in. */
35
40
  export interface InvokeToolResume {
41
+ gateKind?: ToolGateKind;
36
42
  /**
37
- * `true` skips the confirm / permission / `preTool` re-ask (an `edited` call runs `preTool` in full);
43
+ * `true` approves this call. An unchanged confirmation skips the tool's completed `preTool` check.
44
+ * Permission and auth gates run `preTool` on resumption; edited arguments run it again.
38
45
  * `false` settles as a refusal with no body; omitted is a first attempt or an auth retry.
39
46
  */
40
47
  granted?: boolean;
@@ -44,8 +51,8 @@ export interface InvokeToolResume {
44
51
  */
45
52
  cause?: ToolResumeCause;
46
53
  /**
47
- * For `granted: false`: the refused gate was a sign-in, so the model reads the `sign_in.*`
48
- * note for its cause, naming the tool's `auth.service`.
54
+ * The gate answered was a sign-in. Granted, the model reads `sign_in.done` before the call's
55
+ * result; refused, the `sign_in.*` note for its cause. Both name the tool's `auth.service`.
49
56
  */
50
57
  signIn?: boolean;
51
58
  /** The user edited the arguments before approving; `from` is the model's proposed input. */
@@ -53,21 +60,46 @@ export interface InvokeToolResume {
53
60
  from: Record<string, unknown>;
54
61
  };
55
62
  }
63
+ /**
64
+ * What the page did for a call to a tool it answers: its `output`, `timedOut` when the relay
65
+ * stopped waiting for it, or `unanswered` when the page has nothing that answers the tool.
66
+ */
67
+ export type PageAnswer = {
68
+ output: unknown;
69
+ timedOut?: undefined;
70
+ unanswered?: undefined;
71
+ } | {
72
+ timedOut: true;
73
+ unanswered?: undefined;
74
+ } | {
75
+ unanswered: true;
76
+ timedOut?: undefined;
77
+ };
56
78
  export interface ToolContext {
57
79
  profile: Profile;
58
80
  callId: string;
81
+ readonly operationId: string;
59
82
  sessionPermissions?: string[];
60
83
  path?: string;
61
84
  signal?: AbortSignal;
85
+ /**
86
+ * The turn as it stood when the step began. `visible`: the tools a call in this step may use;
87
+ * a tool loaded during the step is callable from the next one.
88
+ */
62
89
  turn?: {
63
90
  step: number;
64
91
  taint?: TurnTaint;
92
+ destinations?: TurnDestinations;
93
+ visible?: readonly ToolId[];
65
94
  };
66
95
  resume?: InvokeToolResume;
67
96
  credentials?: ToolCredentialSource;
68
97
  resolveHost?: ResolveHost;
69
98
  /** Opaque application context from `TurnRequest.host` / `InvokeToolRequest.host`; the kernel never reads it. */
70
99
  host?: unknown;
100
+ /** The page's answer to this call, for a tool with `answeredBy: 'page'`. */
101
+ page?: PageAnswer;
102
+ pageExecution?: PageToolExecution;
71
103
  /** W3C `traceparent` of this call's `execute_tool` span; parent a tool's own outbound spans on it. */
72
104
  traceparent?: string;
73
105
  /** Set for a function tool with `auth` once its credential resolved: requests carrying it. */
@@ -89,6 +121,14 @@ export type SignedInFetch = (url: string | URL, request?: SignedInRequest) => Pr
89
121
  export type ToolStreamEvent<TOut = unknown> = {
90
122
  kind: 'progress';
91
123
  data: unknown;
124
+ }
125
+ /**
126
+ * The next piece of what the tool is writing, for the host to preview. Each is read at the
127
+ * tool's `tool_output` boundary first; the model never reads it, only `complete`'s output.
128
+ */
129
+ | {
130
+ kind: 'draft';
131
+ text: string;
92
132
  } | {
93
133
  kind: 'trace';
94
134
  step: ToolTraceStep;
@@ -102,7 +142,7 @@ export type ToolStreamEvent<TOut = unknown> = {
102
142
  kind: 'complete';
103
143
  output: TOut;
104
144
  };
105
- export type SyncToolHandler<TIn, TOut> = (input: TIn, ctx: ToolContext) => TOut | Promise<TOut>;
145
+ export type SyncToolHandler<TIn, TOut> = (input: TIn, ctx: ToolContext) => TOut | UncheckedOutput | Promise<TOut | UncheckedOutput>;
106
146
  export type StreamToolHandler<TIn, TOut> = (input: TIn, ctx: ToolContext) => AsyncGenerator<ToolStreamEvent<TOut>>;
107
147
  export type ToolHandler<TIn, TOut> = SyncToolHandler<TIn, TOut> | StreamToolHandler<TIn, TOut>;
108
148
  /**
@@ -124,7 +164,13 @@ export interface FunctionToolDef<TIn = unknown, TOut = unknown> extends ToolBase
124
164
  type: 'function';
125
165
  input: z.ZodType<TIn>;
126
166
  output: z.ZodType<TOut>;
127
- handler: ToolHandler<TIn, TOut>;
167
+ /** Returns `output`'s type, or `uncheckedOutput(value)` for a value it cannot type. */
168
+ handler: ToolHandler<TIn, NoInfer<TOut>>;
169
+ /**
170
+ * `'page'`: the page the person is on answers the call, and the kernel supplies the handler.
171
+ * `output` checks what the page sent.
172
+ */
173
+ answeredBy?: 'page';
128
174
  /**
129
175
  * The service the handler acts on for the person. The kernel resolves the slot
130
176
  * before the handler runs (gating, refreshing, or telling the model as the policy
@@ -132,7 +178,7 @@ export interface FunctionToolDef<TIn = unknown, TOut = unknown> extends ToolBase
132
178
  */
133
179
  auth?: ToolAuthConfig;
134
180
  }
135
- /** How a tool that acts for the person signs in to the service; http, mcp and function tools share it. */
181
+ /** How a tool that acts for the person signs in to the service; http, mcp, and function tools share it. */
136
182
  export interface ToolAuthConfig {
137
183
  slot: string;
138
184
  type: ToolAuthType;
@@ -140,6 +186,12 @@ export interface ToolAuthConfig {
140
186
  service: string;
141
187
  headerName?: string;
142
188
  headerPrefix?: string;
189
+ /**
190
+ * For a service that takes its API key in the URL (`?key=…`): the query parameter the key
191
+ * goes in, in place of a header. Only an `api_key` tool sets it, with no `headerName` or
192
+ * `headerPrefix`.
193
+ */
194
+ queryParam?: string;
143
195
  onUnauthenticated?: AuthUnauthenticatedPolicy;
144
196
  /** Named on the auth gate for the host's OAuth flow. */
145
197
  preResolved?: Partial<OAuthEndpoints & {
@@ -162,6 +214,19 @@ export interface HttpToolDef<TIn = unknown, TOut = unknown> extends ToolBase, To
162
214
  queryParams?: string[];
163
215
  bodyParam?: string;
164
216
  };
217
+ /** The service's own limit for one key; the kernel keeps this tool's requests within it. */
218
+ limit?: HttpToolLimit;
219
+ /**
220
+ * How long the service may take to answer, its body read included. Past it the call
221
+ * fails `timeout` and frees its place in the limit. Left out, a call waits as long as
222
+ * the caller's signal lets it.
223
+ */
224
+ timeoutMs?: number;
225
+ }
226
+ /** The most requests a service takes from one key in a window. */
227
+ export interface HttpToolLimit {
228
+ requests: number;
229
+ windowMs: number;
165
230
  }
166
231
  export interface McpToolDef<TIn = unknown, TOut = unknown> extends ToolBase, ToolHostHooks<TIn>, ToolOutputHooks<TOut> {
167
232
  type: 'mcp';
@@ -172,21 +237,115 @@ export interface McpToolDef<TIn = unknown, TOut = unknown> extends ToolBase, Too
172
237
  headers?: Record<string, string>;
173
238
  auth?: ToolAuthConfig;
174
239
  }
175
- export type RegisteredTool<TIn = unknown, TOut = unknown> = BuiltinToolDef | FunctionToolDef<TIn, TOut> | HttpToolDef<TIn, TOut> | McpToolDef<TIn, TOut>;
176
- export type ToolDefinitionInput<TIn = unknown, TOut = unknown> = BuiltinToolDef | (Omit<FunctionToolDef<TIn, TOut>, 'inputSchema' | 'outputSchema'> & {
240
+ /**
241
+ * What an agent tool call carries: the text, and whatever else the called
242
+ * profile's `inputs` declares. `speech` is for a speech profile.
243
+ */
244
+ export interface AgentToolInput extends Pick<TurnInput, 'slots' | 'attachments' | 'voice'> {
245
+ text: string;
246
+ speech?: TurnSpeech;
247
+ }
248
+ /** What an agent tool returns: the called agent's reply. Media rides as `parts`, citations as `sources`. */
249
+ export interface AgentToolOutput {
250
+ /** The reply's text; absent when the reply is `structured`, whose text is the same JSON. */
251
+ text?: string;
252
+ structured?: unknown;
253
+ /** Items the called profile's item rules removed from `structured`, each with why. */
254
+ removed?: RemovedItem[];
255
+ parts?: InteractionPart[];
256
+ /** What the called agent cited; the caller's turn cites them too. */
257
+ sources?: Source[];
258
+ }
259
+ /** A channel of an agent tool's input that the called profile's `inputs` declares. */
260
+ export type AgentToolChannel = 'attachments' | 'voice' | 'slots';
261
+ /**
262
+ * A tool whose call runs one turn of another registered agent. That agent is a
263
+ * standalone profile; the tool is how another agent's model calls it. Its input
264
+ * is what that profile's `inputs` declares; the host can reshape a call (`onAgentCall`).
265
+ */
266
+ export interface AgentToolDef extends ToolBase {
267
+ type: 'agent';
268
+ /** A text, image, or speech profile, registered before this tool. Nothing it can call may gate. */
269
+ profile: ProfileId;
270
+ /** Calls to this tool in one turn of its caller. Omit: only `maxSteps` bounds them. */
271
+ maxCallsPerTurn?: number;
272
+ /** What the calling model reads on a field of the tool's input, by field. A field the profile does not take is refused. */
273
+ fieldText?: Partial<Record<keyof AgentToolInput, string>>;
274
+ /**
275
+ * Fields the calling model fills that only the host reads. `onAgentCall` gets them as
276
+ * `hostInput` and turns them into the agent's input; they are never sent to the agent.
277
+ * A name the input already has is refused, and a call without the hook is a config error.
278
+ */
279
+ hostFields?: Record<string, z.ZodType>;
280
+ /** Channels the profile takes that the calling model can't fill; only `onAgentCall` sends them. */
281
+ hostOnly?: AgentToolChannel[];
282
+ preTool?: ToolHostHooks<AgentToolInput>['preTool'];
283
+ exposeToModel?: boolean;
284
+ }
285
+ export interface RegisteredAgentTool extends AgentToolDef, ToolHostHooks<AgentToolInput>, ToolOutputHooks<AgentToolOutput> {
286
+ input: z.ZodType<AgentToolInput>;
287
+ output: z.ZodType<AgentToolOutput>;
288
+ }
289
+ /** An agent tool call, as the host's `onAgentCall` sees it before the agent runs. */
290
+ export interface AgentCall {
291
+ /** The agent tool's name. */
292
+ tool: string;
293
+ callId: string;
294
+ /** The agent the tool runs. */
295
+ profile: ProfileId;
296
+ input: AgentToolInput;
297
+ /** What the model sent in the tool's `hostFields`; absent when the tool declares none. */
298
+ hostInput?: Record<string, unknown>;
299
+ /** The agent whose model made the call. */
300
+ caller: ProfileId;
301
+ /** 1 for a call from the host's own turn; one more for each agent tool it came through. */
302
+ depth: number;
303
+ /** The outermost request's `metadata`. */
304
+ metadata?: Record<string, unknown>;
305
+ signal?: AbortSignal;
306
+ }
307
+ /**
308
+ * What the host sets on the called agent's turn. The kernel fixes its profile,
309
+ * signal, trace parent, and hook. `provider` runs the turn; omit it to use the
310
+ * caller's, which works only when both are on the same provider and protocol.
311
+ * `host` is what the called agent's tools read as `ctx.host`; omit it and they
312
+ * read none, because the caller's is not passed down.
313
+ */
314
+ export interface AgentCallRequest extends Partial<Pick<TurnRequest, 'input' | 'speech' | 'effort' | 'builtInArgs' | 'metadata' | 'onStage' | 'conversationId' | 'host'>> {
315
+ model?: ModelId;
316
+ provider?: import('../protocols/runtime.js').ProviderHostOptions;
317
+ }
318
+ /** Return nothing to run the agent on what the model sent; `refuse` is read back to the model. */
319
+ export type AgentCallHook = (call: AgentCall) => AgentCallRequest | {
320
+ refuse: string;
321
+ } | undefined | Promise<AgentCallRequest | {
322
+ refuse: string;
323
+ } | undefined>;
324
+ /** A tool in a registry: builtin, function, HTTP, MCP, or agent. */
325
+ export type RegisteredTool<TIn = unknown, TOut = unknown> = BuiltinToolDef | FunctionToolDef<TIn, TOut> | HttpToolDef<TIn, TOut> | McpToolDef<TIn, TOut> | RegisteredAgentTool;
326
+ /** A function tool as registered: it has a `handler`, or the page answers it. */
327
+ export type FunctionToolInput<TIn = unknown, TOut = unknown> = Omit<FunctionToolDef<TIn, TOut>, 'inputSchema' | 'outputSchema' | 'handler' | 'answeredBy'> & {
177
328
  input: z.ZodType<TIn>;
178
329
  output: z.ZodType<TOut>;
179
- }) | (Omit<HttpToolDef<TIn, TOut>, 'inputSchema' | 'outputSchema'> & {
330
+ } & ({
331
+ handler: ToolHandler<TIn, NoInfer<TOut>>;
332
+ answeredBy?: 'page';
333
+ } | {
334
+ answeredBy: 'page';
335
+ handler?: undefined;
336
+ });
337
+ export type ToolDefinitionInput<TIn = unknown, TOut = unknown> = BuiltinToolDef | FunctionToolInput<TIn, TOut> | (Omit<HttpToolDef<TIn, TOut>, 'inputSchema' | 'outputSchema'> & {
180
338
  input: z.ZodType<TIn>;
181
339
  output: z.ZodType<TOut>;
182
340
  }) | (Omit<McpToolDef<TIn, TOut>, 'inputSchema' | 'outputSchema'> & {
183
341
  input: z.ZodType<TIn>;
184
342
  output: z.ZodType<TOut>;
185
- });
343
+ }) | AgentToolDef;
186
344
  export interface PromoteLoadedResult {
187
345
  promoted: ToolId[];
188
346
  failure?: ToolFailure;
189
347
  }
348
+ /** What a tool's loader is told: the profile, the input, and the path. */
190
349
  export interface ToolLoadContext {
191
350
  profile: Profile;
192
351
  input?: TurnInput;
@@ -197,9 +356,13 @@ export interface ToolLoadContext {
197
356
  /** Opaque application context from `TurnRequest.host`; the kernel never reads it. */
198
357
  host?: unknown;
199
358
  }
200
- /** Picks which eligible T1 tools to wire at turn start. */
359
+ /** Picks which allowed T2 tools to load at turn start. */
201
360
  export type ToolPolicy = (ctx: ToolLoadContext) => ToolId[] | Promise<ToolId[]>;
361
+ /** A request to run a held tool call outside a turn. */
202
362
  export interface InvokeToolRequest {
363
+ execution?: ToolExecutionCoordinator;
364
+ /** invariant: Only the trusted host restores the kernel-issued identity from saved authority. */
365
+ operationId?: string;
203
366
  profile: string;
204
367
  name: string;
205
368
  /**
@@ -224,6 +387,9 @@ export interface InvokeToolRequest {
224
387
  signal?: AbortSignal;
225
388
  /** Handed to the tool as `ctx.host`; the kernel never reads it. */
226
389
  host?: unknown;
390
+ /** The page's answer, when this invoke answers a `page` gate. */
391
+ page?: PageAnswer;
392
+ pageExecution?: PageToolExecution;
227
393
  /** W3C `traceparent` of the host span this invoke runs under. */
228
394
  traceparent?: string;
229
395
  /** Recorded as `gen_ai.conversation.id`. */
@@ -233,24 +399,68 @@ export interface InvokeToolRequest {
233
399
  links?: TurnTraceLink[];
234
400
  /** Receives `pre_tool` / `post_tool` only. */
235
401
  onStage?: import('../stages.js').StageHandler;
402
+ /** Runs an agent tool's turn; an agent tool needs it, or `onAgentCall` returning one. */
403
+ provider?: import('../protocols/runtime.js').ProviderHostOptions;
404
+ /** As `TurnRequest.onAgentCall`, for an agent tool this invoke runs. */
405
+ onAgentCall?: AgentCallHook;
236
406
  }
407
+ /** One of the host's calls in a step. */
408
+ export interface InvokeToolStepCall {
409
+ name: string;
410
+ /**
411
+ * The model's call this runs, already announced by its turn; absent for the host's own
412
+ * call, which gets a fresh id and is announced by the step.
413
+ */
414
+ callId?: string;
415
+ /** invariant: Only the trusted host restores the kernel-issued identity from saved authority. */
416
+ operationId?: string;
417
+ input: unknown;
418
+ }
419
+ /**
420
+ * A request to run several calls outside a turn, as one step. Everything but the calls is
421
+ * shared by all of them. A call that answers an approval or a page resumes on its own,
422
+ * through `InvokeToolRequest`.
423
+ */
424
+ export interface InvokeToolStepRequest extends Omit<InvokeToolRequest, 'name' | 'callId' | 'operationId' | 'input' | 'resume' | 'page'> {
425
+ calls: InvokeToolStepCall[];
426
+ }
427
+ /** The tools a profile may use and how they load. */
237
428
  export interface ProfileToolsSpec {
238
429
  /** Custom tools only; builtins live on `models.*.builtInTools`. */
239
430
  allow: ToolId[];
240
- /** Returns only ids already allowed with `loadTier: 'T1'`. Not supported on `type: 'live'`. */
431
+ /** Returns ids already allowed with `loadTier: 'T2'` to load at turn start. Not supported on `type: 'live'`. */
241
432
  t1Policy?: ToolPolicy;
242
- /** Must be in `allow`; completing with `{ loaded: string[] }` promotes those T2 ids. Not on `type: 'live'`. */
433
+ /**
434
+ * Must be in `allow`; completing with `{ loaded: string[] }` promotes those T2 ids. Not on `type: 'live'`.
435
+ * The tools it loads can be called from the next step.
436
+ */
243
437
  t2Loader?: ToolId;
438
+ /**
439
+ * `true`: a step's calls run side by side, each body starting once the calls its `pre_tool`
440
+ * `waitFor` names have settled. Left out or `false`: one at a time, in the order the model made them.
441
+ */
442
+ parallel?: boolean;
244
443
  }
245
444
  /** Live declarations cannot be added mid-session, so every allowed tool is wired at setup as if T0. */
246
445
  export interface LiveProfileToolsSpec {
247
446
  allow: ToolId[];
447
+ /**
448
+ * `true`: the calls of one model message, run as a step through `invokeToolStep`, run side by
449
+ * side, each body starting once the calls its `pre_tool` `waitFor` names have settled. Left out
450
+ * or `false`: one at a time, in the order the model made them.
451
+ */
452
+ parallel?: boolean;
248
453
  }
249
454
  /** Every id in `allow` is invokable with no visibility tiers and no path gating. */
250
455
  export interface HostProfileToolsSpec {
251
456
  allow: ToolId[];
457
+ /**
458
+ * `true`: the calls of one `invokeToolStep` run side by side, each body starting once the calls
459
+ * its `pre_tool` `waitFor` names have settled. Left out or `false`: one at a time, in the order given.
460
+ */
461
+ parallel?: boolean;
252
462
  }
253
- /** Every transport returns this; one settlement projects, guards and runs `post_tool`. */
463
+ /** Every transport returns this; one settlement projects, guards, and runs `post_tool`. */
254
464
  export type ToolBodyOutcome = {
255
465
  kind: 'ok';
256
466
  outputRaw: unknown;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * A handler result with no type until the call runs, such as what a client
3
+ * sent back. The tool's `output` schema checks the value when the call
4
+ * settles, and a mismatch fails the call as `invalid_output`.
5
+ */
6
+ export declare class UncheckedOutput {
7
+ readonly value: unknown;
8
+ constructor(value: unknown);
9
+ }
10
+ /**
11
+ * Return a value the handler cannot type as the tool's `output`. A handler
12
+ * that returns anything else must return `output`'s type, or it does not compile.
13
+ */
14
+ export declare function uncheckedOutput(value: unknown): UncheckedOutput;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * A handler result with no type until the call runs, such as what a client
3
+ * sent back. The tool's `output` schema checks the value when the call
4
+ * settles, and a mismatch fails the call as `invalid_output`.
5
+ */
6
+ export class UncheckedOutput {
7
+ value;
8
+ constructor(value) {
9
+ this.value = value;
10
+ }
11
+ }
12
+ /**
13
+ * Return a value the handler cannot type as the tool's `output`. A handler
14
+ * that returns anything else must return `output`'s type, or it does not compile.
15
+ */
16
+ export function uncheckedOutput(value) {
17
+ return new UncheckedOutput(value);
18
+ }