@theoremjs/agents 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (568) hide show
  1. package/README.md +276 -995
  2. package/esm/mod.d.ts +33 -19
  3. package/esm/mod.js +18 -11
  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 +23 -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 +874 -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 +29 -21
  123. package/esm/src/guardrails/mod.js +18 -13
  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 +1 -0
  135. package/esm/src/guardrails/quota.js +1 -1
  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 +4 -1
  148. package/esm/src/guardrails/theorem-error.js +3 -2
  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 +7 -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 +173 -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 +328 -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 +128 -87
  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 +105 -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/builtins.d.ts +14 -0
  435. package/esm/src/providers/google/builtins.js +57 -0
  436. package/esm/src/providers/google/grounding.d.ts +4 -4
  437. package/esm/src/providers/google/interactions/framing.d.ts +20 -8
  438. package/esm/src/providers/google/interactions/framing.js +85 -44
  439. package/esm/src/providers/google/interactions/steps.d.ts +5 -5
  440. package/esm/src/providers/google/interactions/steps.js +4 -4
  441. package/esm/src/providers/google/interactions/stream.d.ts +10 -11
  442. package/esm/src/providers/google/interactions/stream.js +33 -100
  443. package/esm/src/providers/google/live/framing.d.ts +15 -5
  444. package/esm/src/providers/google/live/framing.js +25 -25
  445. package/esm/src/providers/google/live/stream.d.ts +6 -44
  446. package/esm/src/providers/google/live/stream.js +3 -209
  447. package/esm/src/providers/google/urls.d.ts +1 -3
  448. package/esm/src/providers/google/urls.js +1 -3
  449. package/esm/src/providers/google/usage.js +2 -2
  450. package/esm/src/providers/live.d.ts +6 -0
  451. package/esm/src/providers/live.js +6 -0
  452. package/esm/src/providers/local/embedding-protocol.d.ts +7 -0
  453. package/esm/src/providers/local/embedding-protocol.js +60 -0
  454. package/esm/src/providers/local/provider.d.ts +7 -0
  455. package/esm/src/providers/local/provider.js +28 -0
  456. package/esm/src/providers/mod.d.ts +28 -7
  457. package/esm/src/providers/mod.js +19 -3
  458. package/esm/src/providers/open-ai/protocol.d.ts +3 -0
  459. package/esm/src/providers/open-ai/protocol.js +189 -0
  460. package/esm/src/providers/openrouter/embedding-protocol.d.ts +6 -0
  461. package/esm/src/providers/openrouter/embedding-protocol.js +86 -0
  462. package/esm/src/providers/openrouter/image.d.ts +0 -9
  463. package/esm/src/providers/openrouter/image.js +0 -153
  464. package/esm/src/providers/openrouter/images-protocol.d.ts +3 -0
  465. package/esm/src/providers/openrouter/images-protocol.js +82 -0
  466. package/esm/src/providers/openrouter/openai/compat.d.ts +2 -2
  467. package/esm/src/providers/openrouter/openai/compat.js +6 -6
  468. package/esm/src/providers/openrouter/openai/image-payload.d.ts +2 -2
  469. package/esm/src/providers/openrouter/openai/reasoning-state.d.ts +2 -0
  470. package/esm/src/providers/openrouter/openai/reasoning-state.js +31 -0
  471. package/esm/src/providers/openrouter/protocol.d.ts +8 -0
  472. package/esm/src/providers/openrouter/protocol.js +171 -0
  473. package/esm/src/providers/openrouter/provider.d.ts +10 -0
  474. package/esm/src/providers/openrouter/provider.js +50 -0
  475. package/esm/src/providers/shared/carried-tool-files.d.ts +7 -0
  476. package/esm/src/providers/shared/carried-tool-files.js +43 -0
  477. package/esm/src/providers/shared/pcm.js +2 -2
  478. package/esm/src/providers/shared/protocol-events.d.ts +8 -0
  479. package/esm/src/providers/shared/protocol-events.js +20 -0
  480. package/esm/src/providers/shared/response-identity.d.ts +2 -2
  481. package/esm/src/providers/shared/retry.d.ts +17 -0
  482. package/esm/src/providers/shared/retry.js +90 -0
  483. package/esm/src/providers/shared/sse.d.ts +0 -4
  484. package/esm/src/providers/shared/sse.js +50 -36
  485. package/esm/src/providers/shared/tool-args.d.ts +6 -7
  486. package/esm/src/providers/shared/tool-args.js +10 -6
  487. package/esm/src/providers/shared/tool-draft.d.ts +16 -0
  488. package/esm/src/providers/shared/tool-draft.js +14 -0
  489. package/esm/src/providers/shared/upstream-tap.d.ts +2 -2
  490. package/esm/src/providers/shared/upstream-tape.js +1 -1
  491. package/esm/src/providers/system-one/protocol.d.ts +8 -0
  492. package/esm/src/providers/system-one/protocol.js +93 -0
  493. package/esm/src/providers/types.d.ts +48 -16
  494. package/esm/src/providers/types.js +2 -1
  495. package/esm/src/providers/typesafe/provider.d.ts +7 -0
  496. package/esm/src/providers/typesafe/provider.js +24 -0
  497. package/esm/src/surface/formats.d.ts +19 -1
  498. package/esm/src/surface/formats.js +68 -29
  499. package/esm/src/surface/mod.d.ts +4 -2
  500. package/esm/src/surface/mod.js +4 -2
  501. package/esm/src/surface/runtime.d.ts +4 -0
  502. package/esm/src/surface/runtime.js +2 -0
  503. package/esm/src/surface/tools.d.ts +2 -8
  504. package/esm/src/surface/tools.js +4 -22
  505. package/esm/src/surface/types.d.ts +6 -0
  506. package/package.json +5 -13
  507. package/esm/src/cli/commands/egress-compile.d.ts +0 -17
  508. package/esm/src/cli/commands/egress-compile.js +0 -25
  509. package/esm/src/guardrails/egress-policy.d.ts +0 -27
  510. package/esm/src/guardrails/egress-policy.js +0 -76
  511. package/esm/src/guardrails/egress-rules.d.ts +0 -54
  512. package/esm/src/guardrails/egress-rules.js +0 -49
  513. package/esm/src/guardrails/lexicon.d.ts +0 -30
  514. package/esm/src/guardrails/lexicon.js +0 -478
  515. package/esm/src/kernel/engine/media-probe/audio.d.ts +0 -7
  516. package/esm/src/kernel/engine/media-probe/audio.js +0 -342
  517. package/esm/src/kernel/engine/media-probe/bytes.d.ts +0 -6
  518. package/esm/src/kernel/engine/media-probe/bytes.js +0 -26
  519. package/esm/src/kernel/engine/media-probe/image.d.ts +0 -5
  520. package/esm/src/kernel/engine/media-probe/image.js +0 -171
  521. package/esm/src/kernel/engine/media-probe/iso-bmff.d.ts +0 -19
  522. package/esm/src/kernel/engine/media-probe/iso-bmff.js +0 -48
  523. package/esm/src/kernel/engine/media-probe/matroska.d.ts +0 -35
  524. package/esm/src/kernel/engine/media-probe/matroska.js +0 -226
  525. package/esm/src/kernel/engine/media-probe/mp4.d.ts +0 -22
  526. package/esm/src/kernel/engine/media-probe/mp4.js +0 -279
  527. package/esm/src/kernel/engine/media-probe/opus.d.ts +0 -4
  528. package/esm/src/kernel/engine/media-probe/opus.js +0 -23
  529. package/esm/src/kernel/engine/media-probe/pdf.d.ts +0 -5
  530. package/esm/src/kernel/engine/media-probe/pdf.js +0 -117
  531. package/esm/src/kernel/engine/media-probe/video.d.ts +0 -15
  532. package/esm/src/kernel/engine/media-probe/video.js +0 -49
  533. package/esm/src/presets/typesafe.d.ts +0 -2
  534. package/esm/src/presets/typesafe.js +0 -2
  535. package/esm/src/providers/create-provider.d.ts +0 -21
  536. package/esm/src/providers/create-provider.js +0 -90
  537. package/esm/src/providers/decision/usage.d.ts +0 -3
  538. package/esm/src/providers/decision/usage.js +0 -25
  539. package/esm/src/providers/google/interactions/mod.d.ts +0 -2
  540. package/esm/src/providers/google/interactions/mod.js +0 -2
  541. package/esm/src/providers/google/keys.d.ts +0 -20
  542. package/esm/src/providers/google/keys.js +0 -87
  543. package/esm/src/providers/google/live/mod.d.ts +0 -7
  544. package/esm/src/providers/google/live/mod.js +0 -7
  545. package/esm/src/providers/google/live/openapi-schema.d.ts +0 -1
  546. package/esm/src/providers/google/live/openapi-schema.js +0 -42
  547. package/esm/src/providers/google/live/session.d.ts +0 -14
  548. package/esm/src/providers/google/live/session.js +0 -150
  549. package/esm/src/providers/local/local.d.ts +0 -12
  550. package/esm/src/providers/local/local.js +0 -186
  551. package/esm/src/providers/local/mod.d.ts +0 -8
  552. package/esm/src/providers/local/mod.js +0 -8
  553. package/esm/src/providers/openrouter/cache-control.d.ts +0 -5
  554. package/esm/src/providers/openrouter/cache-control.js +0 -4
  555. package/esm/src/providers/openrouter/chat.d.ts +0 -64
  556. package/esm/src/providers/openrouter/chat.js +0 -490
  557. package/esm/src/providers/openrouter/openai/sdk-messages.d.ts +0 -10
  558. package/esm/src/providers/openrouter/openai/sdk-messages.js +0 -99
  559. package/esm/src/providers/openrouter/resolve-api-key.d.ts +0 -3
  560. package/esm/src/providers/openrouter/resolve-api-key.js +0 -8
  561. package/esm/src/providers/openrouter/speech.d.ts +0 -18
  562. package/esm/src/providers/openrouter/speech.js +0 -109
  563. package/esm/src/providers/probe.d.ts +0 -5
  564. package/esm/src/providers/probe.js +0 -15
  565. package/esm/src/providers/shared/builtin-wire.d.ts +0 -4
  566. package/esm/src/providers/shared/builtin-wire.js +0 -9
  567. package/esm/src/providers/shared/vault.d.ts +0 -13
  568. package/esm/src/providers/shared/vault.js +0 -41
@@ -1,27 +1,46 @@
1
- import type { LexiconOverrides } from '../guardrails/lexicon.js';
2
- import type { SensitiveGroups } from '../guardrails/sensitive.js';
1
+ import type { Boundary } from '../guardrails/boundaries.js';
2
+ import type { DetectAction, DetectMatrix, Detector, UrlDetector } from '../guardrails/detectors.js';
3
+ import type { GuardrailEvent } from '../guardrails/event-schemas.js';
4
+ import type { LabelOverrides } from '../guardrails/labels.js';
3
5
  import type { ResolvedGuardrailPolicy } from '../guardrails/types.js';
4
- import type { LiveProfileToolsSpec, ProfileToolsSpec, ToolCallEdit, ToolPhaseEvent } from '../kernel/tools/types.js';
5
- import type { AttachmentValidationIssue, CompactionSpec, GroundingEvent, ImageProfile, LiveProfile, ModelBinding, ModelId, ProfileOutputsSpec, ProviderEvidence, Source, SpeechProfile, TextProfile, TurnStop, TurnTokens } from '../kernel/types.js';
6
+ import type { ProfileToolsSpec, ToolCallEdit, ToolPhaseEvent } from '../kernel/tools/types.js';
7
+ import type { ReasoningPart } from '../kernel/turn-events.js';
8
+ import type { AttachmentValidationIssue, CompactionSpec, GroundingEvent, ImageProfile, LiveProfile, ModelBinding, ModelId, ProfileContextSpec, ProfileOutputsSpec, ProviderEvidence, Source, SpeechProfile, TextProfile, TurnStop, TurnTokens } from '../kernel/types.js';
6
9
  import type { ResolvedObservabilityPolicy } from '../observability/types.js';
7
- /** A URL check as it runs; `false` when off. */
8
- export type UrlCheckView = false | {
10
+ /** What a URL detector lets through besides the given URLs, with its defaults applied. */
11
+ export interface UrlAllowView {
9
12
  hosts: string[];
10
13
  fromTools: boolean;
11
- };
12
- /** The bundled egress checks a profile's reply runs through. */
13
- export interface EgressChecksView {
14
- sensitive: SensitiveGroups;
15
- boundary: boolean;
16
- injection: boolean;
17
- images: UrlCheckView;
18
- links: UrlCheckView;
19
- }
20
- /** Guardrails visible to UI — egress enforcer functions are omitted. */
21
- export type ProfileGuardrailsView = Pick<ResolvedGuardrailPolicy, 'quota' | 'canary' | 'sanitizeInput' | 'redactSensitive'> & {
22
- hasEgress: boolean;
23
- /** `null` with no egress check, or a host `enforce` whose checks are its own. */
24
- egressChecks: EgressChecksView | null;
14
+ }
15
+ /** Whose patterns one detector reads with: the host's are named, never shown. */
16
+ export interface DetectorPatternsView {
17
+ /** Whether Theorem's own patterns run. */
18
+ theorem: boolean;
19
+ /** The names of the host's patterns. */
20
+ names: string[];
21
+ }
22
+ /** A detector of the host's own: what it is called and where it applies, never what it matches. */
23
+ export interface HostDetectorView {
24
+ /** Its key in `guardrails.detect`, as in `acme.record`. Its rule is `detect.<id>`. */
25
+ id: string;
26
+ label: string;
27
+ /** Its action at every boundary. */
28
+ actions: Record<Boundary, DetectAction>;
29
+ /** The names of its patterns. */
30
+ names: string[];
31
+ /** Whether it also reads with a function of the host's. */
32
+ find: boolean;
33
+ }
34
+ /** Guardrails visible to UI — a host detector's `find` is told of, not sent. */
35
+ export type ProfileGuardrailsView = Pick<ResolvedGuardrailPolicy, 'quota' | 'blockedReply'> & {
36
+ /** Every detector's action at every boundary. */
37
+ detect: DetectMatrix;
38
+ /** Whose patterns a detector reads with, for each one the profile changed it for. */
39
+ patterns?: Partial<Record<Detector, DetectorPatternsView>>;
40
+ /** The host's own detectors, in the order the profile lists them. The kernel reads with them. */
41
+ host?: HostDetectorView[];
42
+ /** What `ungiven_images` and `ungiven_links` let through. */
43
+ allow: Record<UrlDetector, UrlAllowView>;
25
44
  };
26
45
  /** Observability visible to UI — TraceSink / onWriteError functions are omitted. */
27
46
  export type ProfileObservabilityView = Pick<ResolvedObservabilityPolicy, 'record' | 'sampleRate' | 'include' | 'scrub' | 'resource' | 'retainForDays' | 'rotateAfterMiB'> & {
@@ -44,48 +63,62 @@ export interface ProfileInputsInterface {
44
63
  maxTurnBytes?: number;
45
64
  limitsByMime?: Record<string, number>;
46
65
  slots?: Record<string, string[]>;
66
+ context?: ProfileContextSpec;
47
67
  }
48
- /** A tool's definition (handler, schemas, endpoint, headers) stays on the host; `t1Policy` too. */
49
- export type ProfileToolsView = Pick<ProfileToolsSpec, 'allow' | 't2Loader'>;
68
+ /**
69
+ * A tool's definition (handler, schemas, endpoint, headers) stays on the host; `t1Policy` too.
70
+ * `page` names the tools the page answers (`answeredBy: 'page'`): the page needs a function for each.
71
+ */
72
+ export type ProfileToolsView = Pick<ProfileToolsSpec, 'allow' | 't2Loader' | 'parallel'> & {
73
+ page: string[];
74
+ };
50
75
  /** A model binding as the interface carries it: a compaction `trigger` is a host function. */
51
76
  export type ModelBindingView = Omit<ModelBinding, 'compaction'> & {
52
77
  compaction?: Omit<CompactionSpec, 'trigger'>;
53
78
  };
54
79
  /** `profile.outputs` as the interface carries it: validators are host functions. */
55
80
  export type ProfileOutputsView = Omit<ProfileOutputsSpec, 'validation'>;
56
- /** What the text, image and speech interfaces carry in place of their profile's own fields. */
81
+ /** What the text, image, and speech interfaces carry in place of their profile's own fields. */
57
82
  export type ComposerInterfaceFields = {
58
83
  models: Record<ModelId, ModelBindingView>;
59
84
  outputs?: ProfileOutputsView;
60
- /** Client keys' overrides (`CLIENT_LEXICON_KEYS`), resolved on the host; pass to `lexiconText`. */
61
- lexicon: LexiconOverrides;
85
+ /** Client keys' overrides (`CLIENT_LABEL_KEYS`), resolved on the host; pass to `labelText`. */
86
+ labels: LabelOverrides;
62
87
  inputs: ProfileInputsInterface;
63
88
  guardrails?: ProfileGuardrailsView;
64
89
  observability?: ProfileObservabilityView;
65
90
  /** Always true — composer turns cancel via `TurnRequest.signal`. */
66
91
  canStop: true;
67
92
  };
68
- export type TextProfileInterface = Omit<TextProfile, 'inputs' | 'tools' | 'guardrails' | 'observability' | 'lexicon' | 'models' | 'outputs'> & ComposerInterfaceFields & {
93
+ /** A text profile as a client sees it, without its server-only fields. */
94
+ export type TextProfileInterface = Omit<TextProfile, 'inputs' | 'tools' | 'guardrails' | 'observability' | 'labels' | 'models' | 'outputs'> & ComposerInterfaceFields & {
69
95
  tools: ProfileToolsView;
70
96
  /** From `turnBehaviour.allowSteering` (default true on text). */
71
97
  allowSteering: boolean;
72
98
  };
73
- export type ImageProfileInterface = Omit<ImageProfile, 'inputs' | 'tools' | 'guardrails' | 'observability' | 'lexicon' | 'models' | 'outputs'> & ComposerInterfaceFields & {
99
+ /** An image profile as a client sees it, without its server-only fields. */
100
+ export type ImageProfileInterface = Omit<ImageProfile, 'inputs' | 'tools' | 'guardrails' | 'observability' | 'labels' | 'models' | 'outputs'> & ComposerInterfaceFields & {
74
101
  tools: ProfileToolsView;
75
102
  };
76
- export type SpeechProfileInterface = Omit<SpeechProfile, 'guardrails' | 'observability' | 'lexicon' | 'models' | 'outputs'> & ComposerInterfaceFields;
77
- export type LiveProfileInterface = Omit<LiveProfile, 'tools' | 'guardrails' | 'observability' | 'lexicon' | 'models'> & {
103
+ /** A speech profile as a client sees it, without its server-only fields. */
104
+ export type SpeechProfileInterface = Omit<SpeechProfile, 'guardrails' | 'observability' | 'labels' | 'models' | 'outputs'> & ComposerInterfaceFields;
105
+ /** A live profile as a client sees it, without its server-only fields. */
106
+ export type LiveProfileInterface = Omit<LiveProfile, 'tools' | 'guardrails' | 'observability' | 'labels' | 'models' | 'live'> & {
107
+ /** Without `greeting` and `resumed`: the prompts stay on the host. */
108
+ live: Omit<LiveProfile['live'], 'greeting' | 'resumed'>;
78
109
  models: Record<ModelId, ModelBindingView>;
79
- /** Client keys' overrides (`CLIENT_LEXICON_KEYS`), resolved on the host; pass to `lexiconText`. */
80
- lexicon: LexiconOverrides;
81
- tools: LiveProfileToolsSpec;
110
+ /** Client keys' overrides (`CLIENT_LABEL_KEYS`), resolved on the host; pass to `labelText`. */
111
+ labels: LabelOverrides;
112
+ tools: Pick<ProfileToolsView, 'allow' | 'page'>;
82
113
  guardrails?: ProfileGuardrailsView;
83
114
  observability?: ProfileObservabilityView;
84
115
  };
116
+ /** Any profile as a client sees it. */
85
117
  export type ProfileInterface = TextProfileInterface | ImageProfileInterface | SpeechProfileInterface | LiveProfileInterface;
86
118
  /** Turn/chat composer profiles — excludes live (realtime streams, no turn inputs block). */
87
119
  export type ComposerProfileInterface = Exclude<ProfileInterface, LiveProfileInterface>;
88
- export type TranscriptBlockKind = 'user-text' | 'user-attachment' | 'user-voice' | 'thought' | 'text' | 'tool' | 'structured' | 'media' | 'grounding' | 'citation' | 'evidence' | 'error' | 'turn-done';
120
+ /** The kinds of block a transcript holds. */
121
+ export type TranscriptBlockKind = 'user-text' | 'user-attachment' | 'user-voice' | 'thought' | 'text' | 'tool' | 'structured' | 'media' | 'grounding' | 'citation' | 'evidence' | 'guardrail' | 'error' | 'turn-done';
89
122
  export interface TranscriptBlockBase {
90
123
  id: string;
91
124
  kind: TranscriptBlockKind;
@@ -114,27 +147,38 @@ export interface TextBlock extends TranscriptBlockBase {
114
147
  export type ToolCallState = Extract<ToolPhaseEvent, {
115
148
  phase: 'running' | 'gate' | 'complete' | 'error' | 'cancel';
116
149
  }>;
117
- /** One tool call: the model's raw call joined with its phase events by `callId` (`toolCallsOf`). */
150
+ /** invariant: An issued operation joins its request and phases; historical calls use callId. */
118
151
  export interface ToolCall {
152
+ operationId?: string;
119
153
  name: string;
120
154
  callId: string;
121
- /** What the model proposed. */
155
+ /** What the model proposed. `{}` while the model is still writing the call (`draft`). */
122
156
  arguments: Record<string, unknown>;
123
- /** The call's `ToolCallRequest.thoughtSignature`: history replays the call with it. */
124
- thoughtSignature?: string;
157
+ /**
158
+ * While the model is still writing the call: its arguments' JSON text so far, from its
159
+ * `tool_draft` events. Gone once the call arrives whole; `argumentsSoFar` reads it.
160
+ */
161
+ draft?: string;
162
+ /** The call's `ToolCallRequest.reasoning`: history replays the call with it. */
163
+ reasoning?: ReasoningPart[];
125
164
  /** The call's `ToolCallRequest.stepId`: calls sharing it replay as one assistant message. */
126
165
  stepId?: string;
127
166
  /** The user's edit on approval; `to` is what ran. */
128
167
  edited?: ToolCallEdit;
129
168
  /** What the call is doing, in the tool's words, from its last `running` phase. */
130
169
  activity?: string;
131
- /** What the call did, from its `complete` phase. */
170
+ /** What the call did, from its `complete` phase, or that it failed, from its `error` phase. */
132
171
  activityPast?: string;
172
+ /**
173
+ * While the call runs: what the tool has written of its output so far, from its `draft` phases
174
+ * (an agent tool's: its agent's reply). Gone once the call settles; `state` has the output.
175
+ */
176
+ outputDraft?: string;
133
177
  /** Absent while the call has only been made. */
134
178
  state?: ToolCallState;
135
179
  /** When it last started running (epoch ms). */
136
180
  startedAt?: number;
137
- /** When it last settled: complete, failed, cancelled or gated (epoch ms). */
181
+ /** When it last settled: complete, failed, cancelled, or gated (epoch ms). */
138
182
  endedAt?: number;
139
183
  artifacts: unknown[];
140
184
  }
@@ -144,7 +188,13 @@ export interface ToolBlock extends TranscriptBlockBase {
144
188
  }
145
189
  export interface StructuredBlock extends TranscriptBlockBase {
146
190
  kind: 'structured';
191
+ /** The reply; while `draft` is set, what of it the model has written so far (`partialJsonObject`). */
147
192
  value: unknown;
193
+ /**
194
+ * The JSON the model has written so far, from `structured_draft` events. Gone once the
195
+ * `structured` event arrives, which owns the reply.
196
+ */
197
+ draft?: string;
148
198
  }
149
199
  export interface MediaBlock extends TranscriptBlockBase {
150
200
  kind: 'media';
@@ -170,6 +220,15 @@ export interface EvidenceBlock extends TranscriptBlockBase {
170
220
  kind: 'evidence';
171
221
  evidence: ProviderEvidence;
172
222
  }
223
+ /**
224
+ * A guardrail's decision on the turn: a flag, a redaction, or a block. It names the rule and where
225
+ * it matched (`hits[].span`), never the matched text. It comes before the text it was read from.
226
+ * Theorem's own transcript shows nothing for it; a host reads it to show its own notice.
227
+ */
228
+ export interface GuardrailBlock extends TranscriptBlockBase {
229
+ kind: 'guardrail';
230
+ guardrail: GuardrailEvent;
231
+ }
173
232
  export interface ErrorBlock extends TranscriptBlockBase {
174
233
  kind: 'error';
175
234
  message: string;
@@ -188,7 +247,9 @@ export interface TurnDoneBlock extends TranscriptBlockBase {
188
247
  /** When the reply last stopped (epoch ms), stamped with `workedMs`. */
189
248
  endedAt?: number;
190
249
  }
191
- export type TranscriptBlock = UserTextBlock | UserAttachmentBlock | ThoughtBlock | TextBlock | ToolBlock | StructuredBlock | MediaBlock | GroundingBlock | CitationBlock | EvidenceBlock | ErrorBlock | TurnDoneBlock;
250
+ /** One block of a transcript: a message, an attachment, a thought, a tool call, or a notice. */
251
+ export type TranscriptBlock = UserTextBlock | UserAttachmentBlock | ThoughtBlock | TextBlock | ToolBlock | StructuredBlock | MediaBlock | GroundingBlock | CitationBlock | EvidenceBlock | GuardrailBlock | ErrorBlock | TurnDoneBlock;
252
+ /** A file the user has picked but not yet sent. */
192
253
  export interface PendingAttachment {
193
254
  name: string;
194
255
  mimeType: string;
@@ -196,18 +257,22 @@ export interface PendingAttachment {
196
257
  /** Optional base64 payload copied onto the transcript block for UI preview. */
197
258
  data?: string;
198
259
  }
260
+ /** Whether the pending attachments pass the profile's limits, and the issues if not. */
199
261
  export interface AttachmentValidationResult {
200
262
  ok: boolean;
201
263
  issues: AttachmentValidationIssue[];
202
264
  }
265
+ /** What the user has composed and not yet sent. */
203
266
  export interface UserTurnDraft {
204
267
  text?: string;
205
268
  attachments?: PendingAttachment[];
206
269
  voice?: PendingAttachment[];
207
270
  }
271
+ /** Options for folding turn events into transcript blocks. */
208
272
  export interface FoldTurnEventsOptions {
209
273
  showThoughts?: boolean;
210
274
  idPrefix?: string;
211
275
  }
276
+ /** True unless the profile turns thought streaming off. */
212
277
  declare function streamThoughtsEnabled(outputs?: ProfileOutputsSpec): boolean;
213
278
  export { streamThoughtsEnabled };
@@ -1,3 +1,4 @@
1
+ /** True unless the profile turns thought streaming off. */
1
2
  function streamThoughtsEnabled(outputs) {
2
3
  return outputs?.streaming?.streamThoughts !== false;
3
4
  }
@@ -0,0 +1,85 @@
1
+ /** labels-exempt-file: authoring request-field and export meta — not runtime user or model copy (P2) */
2
+ import type { FieldMeta } from './schema.js';
3
+ import type { TurnInput, TurnRequest } from './types.js';
4
+ /** The catalog of the fields a `runTurn` request takes, keyed `runTurn.<field>`. */
5
+ export declare const REQUEST_FIELDS: Record<`runTurn.${keyof TurnRequest | `input.${keyof TurnInput}`}`, FieldMeta>;
6
+ /** What the catalog records about one export: what it is and what it does. */
7
+ export type ApiExportMeta = {
8
+ kind: 'function' | 'class';
9
+ doc: string;
10
+ };
11
+ /** The catalog of the exports a builder calls by name, keyed by that name. */
12
+ export declare const API_EXPORTS: {
13
+ readonly defineProfile: {
14
+ readonly kind: "function";
15
+ readonly doc: "Checks a profile and returns it; a field the profile type cannot take is a config error.";
16
+ };
17
+ readonly registerProfile: {
18
+ readonly kind: "function";
19
+ readonly doc: "Stores a profile under its id, so that a request can name it.";
20
+ };
21
+ readonly registerTool: {
22
+ readonly kind: "function";
23
+ readonly doc: "Stores a tool under its name, so that a profile can list it in tools.allow.";
24
+ };
25
+ readonly registerStructured: {
26
+ readonly kind: "function";
27
+ readonly doc: "Stores a JSON Schema under an id, so that a profile can name it in outputs.structured.";
28
+ };
29
+ readonly registerTraceDestination: {
30
+ readonly kind: "function";
31
+ readonly doc: "Stores a place to write traces under an id, so that a profile can name it in observability.";
32
+ };
33
+ readonly defineProvider: {
34
+ readonly kind: "function";
35
+ readonly doc: "Validates a provider definition and supplies its typed model helper.";
36
+ };
37
+ readonly registerProvider: {
38
+ readonly kind: "function";
39
+ readonly doc: "Registers a provider instance before profiles reference its ID.";
40
+ };
41
+ readonly runTurn: {
42
+ readonly kind: "function";
43
+ readonly doc: "Runs one turn of a text, image, or speech profile and yields its events.";
44
+ };
45
+ readonly runSession: {
46
+ readonly kind: "function";
47
+ readonly doc: "Runs a realtime voice or video session of a live profile.";
48
+ };
49
+ readonly runDecision: {
50
+ readonly kind: "function";
51
+ readonly doc: "Asks a decision profile its questions about your JSON state and returns checked answers.";
52
+ };
53
+ readonly invokeTool: {
54
+ readonly kind: "function";
55
+ readonly doc: "Runs one registered tool through a profile, with no model.";
56
+ };
57
+ readonly runTool: {
58
+ readonly kind: "function";
59
+ readonly doc: "Runs one registered tool through a profile, with no model, and returns how the call settled.";
60
+ };
61
+ readonly compactHistory: {
62
+ readonly kind: "function";
63
+ readonly doc: "Shortens a conversation history with the compaction the profile sets.";
64
+ };
65
+ readonly takeSlot: {
66
+ readonly kind: "function";
67
+ readonly doc: "Takes a client's turn slot on a profile; it answers ok, busy, quota, or not_configured.";
68
+ };
69
+ readonly releaseSlot: {
70
+ readonly kind: "function";
71
+ readonly doc: "Frees the turn slot that takeSlot gave.";
72
+ };
73
+ readonly overrideLabels: {
74
+ readonly kind: "function";
75
+ readonly doc: "Replaces status lines for every profile in the process; a profile's own labels wins.";
76
+ };
77
+ readonly resetLabels: {
78
+ readonly kind: "function";
79
+ readonly doc: "Removes every replacement that overrideLabels made.";
80
+ };
81
+ readonly TheoremError: {
82
+ readonly kind: "class";
83
+ readonly doc: "The error Theorem throws; its kind tells your host which status and wording to use.";
84
+ };
85
+ };
@@ -0,0 +1,229 @@
1
+ /** labels-exempt-file: authoring request-field and export meta — not runtime user or model copy (P2) */
2
+ /** The catalog of the fields a `runTurn` request takes, keyed `runTurn.<field>`. */
3
+ export const REQUEST_FIELDS = {
4
+ 'runTurn.pageExecution': {
5
+ type: 'PageToolExecution',
6
+ doc: 'Host-issued browser dispatch with a claimed operation and correlated result.',
7
+ },
8
+ 'runTurn.execution': {
9
+ type: 'ToolExecutionCoordinator',
10
+ doc: 'Host-owned atomic tool claims and outcomes. Never sent to providers.',
11
+ },
12
+ 'runTurn.providerState': {
13
+ type: 'ProviderCheckpoint',
14
+ doc: 'Native provider state saved alongside portable history.',
15
+ },
16
+ 'runTurn.profile': {
17
+ type: 'string',
18
+ doc: 'The id of the registered profile the turn runs.',
19
+ required: true,
20
+ },
21
+ 'runTurn.input': { type: 'TurnInput', doc: 'What the user sent for the turn.' },
22
+ 'runTurn.input.text': { type: 'string', doc: "The user's message." },
23
+ 'runTurn.input.role': {
24
+ type: 'string',
25
+ doc: 'Picks the instruction of that name from identity.systemByRole.',
26
+ unset: 'The profile instruction',
27
+ },
28
+ 'runTurn.input.slots': {
29
+ type: 'Record<string, string>',
30
+ doc: 'The choice the turn makes for each slot the profile declares in inputs.slots; a slot or a value the profile does not declare is refused.',
31
+ },
32
+ 'runTurn.input.context': {
33
+ type: "Partial<Record<'client' | 'server', unknown>>",
34
+ doc: "What the page (client) or the host (server) wants the model to know, as any JSON or text; a sender the profile's inputs.context does not list, or a package over its maxChars, is refused.",
35
+ unset: 'No context',
36
+ },
37
+ 'runTurn.input.attachments': {
38
+ type: 'Array<TurnBlob | TurnMediaRef>',
39
+ doc: "Files sent with the turn, as bytes or as a provider file reference; each must pass the profile's inputs.attachments.",
40
+ },
41
+ 'runTurn.input.voice': {
42
+ type: 'TurnBlob[]',
43
+ doc: "Recorded speech sent with the turn; each must pass the profile's inputs.voice.",
44
+ },
45
+ 'runTurn.input.history': {
46
+ type: 'TurnHistoryMessage[]',
47
+ doc: 'The earlier messages of the conversation, when the host keeps them.',
48
+ unset: 'The turn starts a new conversation',
49
+ },
50
+ 'runTurn.input.repair': {
51
+ type: 'TurnRepairRequest',
52
+ doc: 'A reply your host rejected and why, so that the model writes it again.',
53
+ },
54
+ 'runTurn.input.historyTokens': {
55
+ type: 'number',
56
+ doc: "Your count of the history's tokens, used by compaction that meters history.",
57
+ unset: "Theorem's own estimate",
58
+ },
59
+ 'runTurn.input.inputTokens': {
60
+ type: 'number',
61
+ doc: "Your count of the whole prompt's tokens, used by compaction that meters input before the call.",
62
+ },
63
+ 'runTurn.model': {
64
+ type: 'string',
65
+ doc: "The model id the turn picks from the profile's models; refused unless the profile sets allowModelSelect.",
66
+ unset: "The profile's defaultModel",
67
+ },
68
+ 'runTurn.effort': {
69
+ type: 'string',
70
+ doc: "The effort the turn picks from the model's efforts; refused unless the model sets allowEffortSelect.",
71
+ unset: "The model's default effort",
72
+ },
73
+ 'runTurn.builtInArgs': {
74
+ type: 'Record<BuiltinToolId, JsonObject>',
75
+ doc: "Args for the provider's own tools on the chosen model's builtInTools, by tool id; each is checked by the schema the provider declares for that tool.",
76
+ unset: 'Each built-in runs with no args',
77
+ },
78
+ 'runTurn.system': {
79
+ type: 'SystemPrompt',
80
+ doc: "An instruction for this request only, added to the profile's own.",
81
+ },
82
+ 'runTurn.path': {
83
+ type: 'string',
84
+ doc: 'The channel the turn comes from; only tools whose paths name it, or *, are offered.',
85
+ unset: 'Only tools on every path',
86
+ },
87
+ 'runTurn.sessionPermissions': {
88
+ type: 'string[]',
89
+ doc: 'The tools the user has already approved for this session.',
90
+ },
91
+ 'runTurn.credentials': {
92
+ type: 'ToolCredentialSource',
93
+ doc: 'Where an HTTP or MCP tool gets the credential for its auth slot.',
94
+ },
95
+ 'runTurn.host': {
96
+ type: 'unknown',
97
+ doc: 'Your own context, handed to tool handlers as ctx.host; Theorem never reads or records it.',
98
+ },
99
+ 'runTurn.signal': {
100
+ type: 'AbortSignal',
101
+ doc: 'Stops the turn when it aborts, and cancels the provider call where the provider can.',
102
+ },
103
+ 'runTurn.sessionId': {
104
+ type: 'string',
105
+ doc: 'A session key that OpenRouter uses for routing and caching.',
106
+ },
107
+ 'runTurn.projectId': {
108
+ type: 'string',
109
+ doc: 'Your project id, recorded on the trace.',
110
+ },
111
+ 'runTurn.conversationId': {
112
+ type: 'string',
113
+ doc: 'Your conversation id, recorded on the trace.',
114
+ },
115
+ 'runTurn.metadata': {
116
+ type: 'Record<string, unknown>',
117
+ doc: 'Your own values, kept on the trace; Theorem does not read them.',
118
+ },
119
+ 'runTurn.traceparent': {
120
+ type: 'string',
121
+ doc: "The W3C traceparent of your span; the turn's trace joins it as a child.",
122
+ unset: 'The turn starts a new trace',
123
+ },
124
+ 'runTurn.links': {
125
+ type: 'TurnTraceLink[]',
126
+ doc: 'Earlier traces this turn follows: a resume, a continue, or a retry.',
127
+ },
128
+ 'runTurn.continueFrom': {
129
+ type: 'TurnContinueFrom',
130
+ doc: 'Continues a turn that stopped in a way the profile lets a turn continue.',
131
+ },
132
+ 'runTurn.continuation': {
133
+ type: 'number',
134
+ doc: 'Which continue attempt this is, from 1; checked against the maxContinues of the profile.',
135
+ },
136
+ 'runTurn.speech': {
137
+ type: 'TurnSpeech',
138
+ doc: "This turn's voice, style, and speed; each one given replaces the profile's speech field of that name. Refused on a profile that is not speech.",
139
+ unset: "The profile's speech settings",
140
+ },
141
+ 'runTurn.resolveHost': {
142
+ type: 'ResolveHost',
143
+ doc: 'Resolves the host name of a remote tool before each request; a name that resolves to a private address is refused.',
144
+ },
145
+ 'runTurn.onStage': {
146
+ type: 'StageHandler',
147
+ doc: 'Your function that sees each stage of a text turn and can answer with what the stage allows.',
148
+ },
149
+ 'runTurn.onAgentCall': {
150
+ type: 'AgentCallHook',
151
+ doc: 'Runs before each agent tool call, to shape the request to the called agent or to refuse the call.',
152
+ unset: 'The agent runs on what the model sent',
153
+ },
154
+ };
155
+ /** The catalog of the exports a builder calls by name, keyed by that name. */
156
+ export const API_EXPORTS = {
157
+ defineProfile: {
158
+ kind: 'function',
159
+ doc: 'Checks a profile and returns it; a field the profile type cannot take is a config error.',
160
+ },
161
+ registerProfile: {
162
+ kind: 'function',
163
+ doc: 'Stores a profile under its id, so that a request can name it.',
164
+ },
165
+ registerTool: {
166
+ kind: 'function',
167
+ doc: 'Stores a tool under its name, so that a profile can list it in tools.allow.',
168
+ },
169
+ registerStructured: {
170
+ kind: 'function',
171
+ doc: 'Stores a JSON Schema under an id, so that a profile can name it in outputs.structured.',
172
+ },
173
+ registerTraceDestination: {
174
+ kind: 'function',
175
+ doc: 'Stores a place to write traces under an id, so that a profile can name it in observability.',
176
+ },
177
+ defineProvider: {
178
+ kind: 'function',
179
+ doc: 'Validates a provider definition and supplies its typed model helper.',
180
+ },
181
+ registerProvider: {
182
+ kind: 'function',
183
+ doc: 'Registers a provider instance before profiles reference its ID.',
184
+ },
185
+ runTurn: {
186
+ kind: 'function',
187
+ doc: 'Runs one turn of a text, image, or speech profile and yields its events.',
188
+ },
189
+ runSession: {
190
+ kind: 'function',
191
+ doc: 'Runs a realtime voice or video session of a live profile.',
192
+ },
193
+ runDecision: {
194
+ kind: 'function',
195
+ doc: 'Asks a decision profile its questions about your JSON state and returns checked answers.',
196
+ },
197
+ invokeTool: {
198
+ kind: 'function',
199
+ doc: 'Runs one registered tool through a profile, with no model.',
200
+ },
201
+ runTool: {
202
+ kind: 'function',
203
+ doc: 'Runs one registered tool through a profile, with no model, and returns how the call settled.',
204
+ },
205
+ compactHistory: {
206
+ kind: 'function',
207
+ doc: 'Shortens a conversation history with the compaction the profile sets.',
208
+ },
209
+ takeSlot: {
210
+ kind: 'function',
211
+ doc: "Takes a client's turn slot on a profile; it answers ok, busy, quota, or not_configured.",
212
+ },
213
+ releaseSlot: {
214
+ kind: 'function',
215
+ doc: 'Frees the turn slot that takeSlot gave.',
216
+ },
217
+ overrideLabels: {
218
+ kind: 'function',
219
+ doc: "Replaces status lines for every profile in the process; a profile's own labels wins.",
220
+ },
221
+ resetLabels: {
222
+ kind: 'function',
223
+ doc: 'Removes every replacement that overrideLabels made.',
224
+ },
225
+ TheoremError: {
226
+ kind: 'class',
227
+ doc: 'The error Theorem throws; its kind tells your host which status and wording to use.',
228
+ },
229
+ };
@@ -1,10 +1,12 @@
1
1
  /** RFC 4648 base64url, without padding. */
2
2
  export declare function toBase64Url(bytes: Uint8Array): string;
3
+ /** Decodes base64url text into bytes. */
3
4
  export declare function fromBase64Url(base64url: string): Uint8Array<ArrayBuffer>;
4
5
  /** RFC 7636 §4.1: 43 to 128 characters, drawn without modulo bias. */
5
6
  export declare function generateCodeVerifier(length?: number): string;
6
7
  /** RFC 7636 §4.2 S256. */
7
8
  export declare function computeCodeChallenge(verifier: string): Promise<string>;
9
+ /** What a sealed PKCE state carries between starting and finishing a sign-in. */
8
10
  export interface SealedStatePayload {
9
11
  codeVerifier: string;
10
12
  expectedIssuer: string;
@@ -24,12 +26,14 @@ export interface SealedStatePayload {
24
26
  }
25
27
  /** Encrypted, not only signed: the state crosses the browser and the server, and the PKCE verifier must stay secret. */
26
28
  export declare function sealStatePayload(payload: SealedStatePayload, secret: string): Promise<string>;
29
+ /** Opens a sealed PKCE state; throws when the secret or the seal is wrong. */
27
30
  export declare function unsealStatePayload(sealed: string, secret: string): Promise<SealedStatePayload>;
31
+ /** What `sealSecret` takes: the plaintext and the sealing key. */
28
32
  export interface SealSecretInput {
29
33
  plaintext: string;
30
34
  /** The host's sealing key: at least 32 bytes, kept apart from where sealed values are stored. */
31
35
  key: string;
32
- /** What the sealed value belongs to, such as owner, slot and row. Opening needs the same list. */
36
+ /** What the sealed value belongs to, such as owner, slot, and row. Opening needs the same list. */
33
37
  binding: readonly string[];
34
38
  /** Names `key`, so a rotated key still opens what an older one sealed. */
35
39
  keyVersion: number;
@@ -40,6 +44,7 @@ export interface SealSecretInput {
40
44
  * slot or row does not open.
41
45
  */
42
46
  export declare function sealSecret(input: SealSecretInput): Promise<string>;
47
+ /** What `openSecret` takes: the sealed value and the keys still in use. */
43
48
  export interface OpenSecretInput {
44
49
  sealed: string;
45
50
  /** Every key still in use, by version. */
@@ -47,5 +52,5 @@ export interface OpenSecretInput {
47
52
  /** The binding the value was sealed with. */
48
53
  binding: readonly string[];
49
54
  }
50
- /** Opens what `sealSecret` sealed; throws when the envelope, key version or binding does not match. */
55
+ /** Opens what `sealSecret` sealed; throws when the envelope, key version, or binding does not match. */
51
56
  export declare function openSecret(input: OpenSecretInput): Promise<string>;