@theoremjs/agents 0.0.0-stage → 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 (588) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +545 -2
  3. package/esm/_dnt.polyfills.d.ts +66 -0
  4. package/esm/_dnt.polyfills.js +51 -0
  5. package/esm/mod.d.ts +79 -0
  6. package/esm/mod.js +49 -0
  7. package/esm/package.json +3 -0
  8. package/esm/src/cli/bin.d.ts +7 -0
  9. package/esm/src/cli/bin.js +9 -0
  10. package/esm/src/cli/commands/bench.d.ts +6 -0
  11. package/esm/src/cli/commands/bench.js +480 -0
  12. package/esm/src/cli/commands/detect-compile.d.ts +17 -0
  13. package/esm/src/cli/commands/detect-compile.js +22 -0
  14. package/esm/src/cli/commands/eval.d.ts +37 -0
  15. package/esm/src/cli/commands/eval.js +190 -0
  16. package/esm/src/cli/commands/fuzz-canary.d.ts +15 -0
  17. package/esm/src/cli/commands/fuzz-canary.js +241 -0
  18. package/esm/src/cli/commands/fuzz-guardrails.d.ts +2 -0
  19. package/esm/src/cli/commands/fuzz-guardrails.js +5 -0
  20. package/esm/src/cli/commands/profile.d.ts +2 -0
  21. package/esm/src/cli/commands/profile.js +80 -0
  22. package/esm/src/cli/commands/run.d.ts +13 -0
  23. package/esm/src/cli/commands/run.js +45 -0
  24. package/esm/src/cli/commands/test.d.ts +26 -0
  25. package/esm/src/cli/commands/test.js +143 -0
  26. package/esm/src/cli/event-log.d.ts +15 -0
  27. package/esm/src/cli/event-log.js +136 -0
  28. package/esm/src/cli/index.d.ts +10 -0
  29. package/esm/src/cli/index.js +267 -0
  30. package/esm/src/cli/matrix/fixtures.d.ts +10 -0
  31. package/esm/src/cli/matrix/fixtures.js +67 -0
  32. package/esm/src/cli/matrix/synthesizer.d.ts +18 -0
  33. package/esm/src/cli/matrix/synthesizer.js +103 -0
  34. package/esm/src/evals/attachments.d.ts +5 -0
  35. package/esm/src/evals/attachments.js +55 -0
  36. package/esm/src/evals/breakdown.d.ts +30 -0
  37. package/esm/src/evals/breakdown.js +69 -0
  38. package/esm/src/evals/graders/answer.d.ts +16 -0
  39. package/esm/src/evals/graders/answer.js +134 -0
  40. package/esm/src/evals/graders/code.d.ts +40 -0
  41. package/esm/src/evals/graders/code.js +184 -0
  42. package/esm/src/evals/graders/judge.d.ts +24 -0
  43. package/esm/src/evals/graders/judge.js +367 -0
  44. package/esm/src/evals/graders/latency.d.ts +6 -0
  45. package/esm/src/evals/graders/latency.js +82 -0
  46. package/esm/src/evals/graders/live.d.ts +14 -0
  47. package/esm/src/evals/graders/live.js +42 -0
  48. package/esm/src/evals/graders/media.d.ts +18 -0
  49. package/esm/src/evals/graders/media.js +91 -0
  50. package/esm/src/evals/graders/shared.d.ts +11 -0
  51. package/esm/src/evals/graders/shared.js +62 -0
  52. package/esm/src/evals/graders/transcript.d.ts +19 -0
  53. package/esm/src/evals/graders/transcript.js +202 -0
  54. package/esm/src/evals/mod.d.ts +34 -0
  55. package/esm/src/evals/mod.js +22 -0
  56. package/esm/src/evals/record.d.ts +41 -0
  57. package/esm/src/evals/record.js +107 -0
  58. package/esm/src/evals/rubrics/catalog.d.ts +148 -0
  59. package/esm/src/evals/rubrics/catalog.js +846 -0
  60. package/esm/src/evals/rubrics/mod.d.ts +24 -0
  61. package/esm/src/evals/rubrics/mod.js +55 -0
  62. package/esm/src/evals/rubrics/mustache.d.ts +23 -0
  63. package/esm/src/evals/rubrics/mustache.js +154 -0
  64. package/esm/src/evals/rubrics/types.d.ts +54 -0
  65. package/esm/src/evals/rubrics/types.js +74 -0
  66. package/esm/src/evals/run.d.ts +75 -0
  67. package/esm/src/evals/run.js +418 -0
  68. package/esm/src/evals/suite.d.ts +28 -0
  69. package/esm/src/evals/suite.js +97 -0
  70. package/esm/src/evals/summary.d.ts +35 -0
  71. package/esm/src/evals/summary.js +31 -0
  72. package/esm/src/evals/trial.d.ts +14 -0
  73. package/esm/src/evals/trial.js +135 -0
  74. package/esm/src/evals/types.d.ts +169 -0
  75. package/esm/src/evals/types.js +113 -0
  76. package/esm/src/evals/verdict.d.ts +23 -0
  77. package/esm/src/evals/verdict.js +48 -0
  78. package/esm/src/guardrails/boundaries.d.ts +41 -0
  79. package/esm/src/guardrails/boundaries.js +103 -0
  80. package/esm/src/guardrails/canary-gate.d.ts +22 -0
  81. package/esm/src/guardrails/canary-gate.js +40 -0
  82. package/esm/src/guardrails/canary.d.ts +146 -0
  83. package/esm/src/guardrails/canary.js +974 -0
  84. package/esm/src/guardrails/compile-egress.d.ts +12 -0
  85. package/esm/src/guardrails/compile-egress.js +12 -0
  86. package/esm/src/guardrails/corpus/canary-egress-attacks.d.ts +24 -0
  87. package/esm/src/guardrails/corpus/canary-egress-attacks.js +305 -0
  88. package/esm/src/guardrails/corpus/fuzz-inbound.d.ts +5 -0
  89. package/esm/src/guardrails/corpus/fuzz-inbound.js +199 -0
  90. package/esm/src/guardrails/corpus/inbound-payloads.d.ts +5 -0
  91. package/esm/src/guardrails/corpus/inbound-payloads.js +120 -0
  92. package/esm/src/guardrails/corpus/live-attacks.d.ts +15 -0
  93. package/esm/src/guardrails/corpus/live-attacks.js +229 -0
  94. package/esm/src/guardrails/corpus/mod.d.ts +7 -0
  95. package/esm/src/guardrails/corpus/mod.js +4 -0
  96. package/esm/src/guardrails/corpus/secrets.d.ts +12 -0
  97. package/esm/src/guardrails/corpus/secrets.js +16 -0
  98. package/esm/src/guardrails/corpus/strings.d.ts +23 -0
  99. package/esm/src/guardrails/corpus/strings.js +29 -0
  100. package/esm/src/guardrails/corpus/types.d.ts +36 -0
  101. package/esm/src/guardrails/corpus/types.js +1 -0
  102. package/esm/src/guardrails/credential-rules.d.ts +36 -0
  103. package/esm/src/guardrails/credential-rules.js +3001 -0
  104. package/esm/src/guardrails/credential-scan.d.ts +45 -0
  105. package/esm/src/guardrails/credential-scan.js +172 -0
  106. package/esm/src/guardrails/destinations.d.ts +45 -0
  107. package/esm/src/guardrails/destinations.js +234 -0
  108. package/esm/src/guardrails/detect-at.d.ts +107 -0
  109. package/esm/src/guardrails/detect-at.js +434 -0
  110. package/esm/src/guardrails/detect-reply.d.ts +61 -0
  111. package/esm/src/guardrails/detect-reply.js +95 -0
  112. package/esm/src/guardrails/detect-stream.d.ts +33 -0
  113. package/esm/src/guardrails/detect-stream.js +77 -0
  114. package/esm/src/guardrails/detectors.d.ts +216 -0
  115. package/esm/src/guardrails/detectors.js +503 -0
  116. package/esm/src/guardrails/egress-automata.d.ts +12 -0
  117. package/esm/src/guardrails/egress-automata.js +25582 -0
  118. package/esm/src/guardrails/egress-compiler.d.ts +55 -0
  119. package/esm/src/guardrails/egress-compiler.js +431 -0
  120. package/esm/src/guardrails/egress-patterns.d.ts +26 -0
  121. package/esm/src/guardrails/egress-patterns.js +36 -0
  122. package/esm/src/guardrails/egress-stream.d.ts +123 -0
  123. package/esm/src/guardrails/egress-stream.js +774 -0
  124. package/esm/src/guardrails/egress-urls.d.ts +86 -0
  125. package/esm/src/guardrails/egress-urls.js +909 -0
  126. package/esm/src/guardrails/egress.d.ts +46 -0
  127. package/esm/src/guardrails/egress.js +124 -0
  128. package/esm/src/guardrails/error.d.ts +31 -0
  129. package/esm/src/guardrails/error.js +96 -0
  130. package/esm/src/guardrails/event-schemas.d.ts +100 -0
  131. package/esm/src/guardrails/event-schemas.js +48 -0
  132. package/esm/src/guardrails/events.d.ts +13 -0
  133. package/esm/src/guardrails/events.js +45 -0
  134. package/esm/src/guardrails/hints.d.ts +14 -0
  135. package/esm/src/guardrails/hints.js +57 -0
  136. package/esm/src/guardrails/hits.d.ts +14 -0
  137. package/esm/src/guardrails/hits.js +30 -0
  138. package/esm/src/guardrails/host-patterns.d.ts +85 -0
  139. package/esm/src/guardrails/host-patterns.js +173 -0
  140. package/esm/src/guardrails/injection-patterns.d.ts +20 -0
  141. package/esm/src/guardrails/injection-patterns.js +126 -0
  142. package/esm/src/guardrails/injection-reversed.d.ts +9 -0
  143. package/esm/src/guardrails/injection-reversed.js +49 -0
  144. package/esm/src/guardrails/injection.d.ts +30 -0
  145. package/esm/src/guardrails/injection.js +460 -0
  146. package/esm/src/guardrails/labels.d.ts +40 -0
  147. package/esm/src/guardrails/labels.js +874 -0
  148. package/esm/src/guardrails/live-outbound-gate.d.ts +55 -0
  149. package/esm/src/guardrails/live-outbound-gate.js +298 -0
  150. package/esm/src/guardrails/mod.d.ts +54 -0
  151. package/esm/src/guardrails/mod.js +34 -0
  152. package/esm/src/guardrails/network.d.ts +46 -0
  153. package/esm/src/guardrails/network.js +330 -0
  154. package/esm/src/guardrails/normalize.d.ts +20 -0
  155. package/esm/src/guardrails/normalize.js +165 -0
  156. package/esm/src/guardrails/policy.d.ts +4 -0
  157. package/esm/src/guardrails/policy.js +21 -0
  158. package/esm/src/guardrails/progressive-yield.d.ts +110 -0
  159. package/esm/src/guardrails/progressive-yield.js +281 -0
  160. package/esm/src/guardrails/prompt-echo.d.ts +40 -0
  161. package/esm/src/guardrails/prompt-echo.js +306 -0
  162. package/esm/src/guardrails/quota.d.ts +21 -0
  163. package/esm/src/guardrails/quota.js +80 -0
  164. package/esm/src/guardrails/rules.d.ts +47 -0
  165. package/esm/src/guardrails/rules.js +47 -0
  166. package/esm/src/guardrails/sanitize.d.ts +40 -0
  167. package/esm/src/guardrails/sanitize.js +160 -0
  168. package/esm/src/guardrails/sensitive-groups.d.ts +21 -0
  169. package/esm/src/guardrails/sensitive-groups.js +12 -0
  170. package/esm/src/guardrails/sensitive.d.ts +22 -0
  171. package/esm/src/guardrails/sensitive.js +234 -0
  172. package/esm/src/guardrails/serialize.d.ts +15 -0
  173. package/esm/src/guardrails/serialize.js +37 -0
  174. package/esm/src/guardrails/testing.d.ts +11 -0
  175. package/esm/src/guardrails/testing.js +10 -0
  176. package/esm/src/guardrails/theorem-error.d.ts +21 -0
  177. package/esm/src/guardrails/theorem-error.js +54 -0
  178. package/esm/src/guardrails/thought-guard.d.ts +76 -0
  179. package/esm/src/guardrails/thought-guard.js +664 -0
  180. package/esm/src/guardrails/tool-directives.d.ts +38 -0
  181. package/esm/src/guardrails/tool-directives.js +195 -0
  182. package/esm/src/guardrails/tool-leak.d.ts +26 -0
  183. package/esm/src/guardrails/tool-leak.js +45 -0
  184. package/esm/src/guardrails/tool-result.d.ts +92 -0
  185. package/esm/src/guardrails/tool-result.js +272 -0
  186. package/esm/src/guardrails/types.d.ts +250 -0
  187. package/esm/src/guardrails/types.js +58 -0
  188. package/esm/src/host/client-turn.d.ts +36 -0
  189. package/esm/src/host/client-turn.js +80 -0
  190. package/esm/src/host/mint-trace.d.ts +29 -0
  191. package/esm/src/host/mint-trace.js +60 -0
  192. package/esm/src/host/mod.d.ts +13 -0
  193. package/esm/src/host/mod.js +11 -0
  194. package/esm/src/host/readStreamingJsonStringField.d.ts +2 -0
  195. package/esm/src/host/readStreamingJsonStringField.js +27 -0
  196. package/esm/src/host/reply.d.ts +13 -0
  197. package/esm/src/host/reply.js +41 -0
  198. package/esm/src/interface/blocks.d.ts +11 -0
  199. package/esm/src/interface/blocks.js +283 -0
  200. package/esm/src/interface/composer-actions.d.ts +24 -0
  201. package/esm/src/interface/composer-actions.js +33 -0
  202. package/esm/src/interface/draft.d.ts +20 -0
  203. package/esm/src/interface/draft.js +39 -0
  204. package/esm/src/interface/from-profile.d.ts +24 -0
  205. package/esm/src/interface/from-profile.js +179 -0
  206. package/esm/src/interface/history.d.ts +46 -0
  207. package/esm/src/interface/history.js +278 -0
  208. package/esm/src/interface/inputs.d.ts +11 -0
  209. package/esm/src/interface/inputs.js +67 -0
  210. package/esm/src/interface/mod.d.ts +33 -0
  211. package/esm/src/interface/mod.js +22 -0
  212. package/esm/src/interface/models.d.ts +26 -0
  213. package/esm/src/interface/models.js +50 -0
  214. package/esm/src/interface/pending.d.ts +57 -0
  215. package/esm/src/interface/pending.js +152 -0
  216. package/esm/src/interface/profile-interface.d.ts +4 -0
  217. package/esm/src/interface/profile-interface.js +237 -0
  218. package/esm/src/interface/session.d.ts +71 -0
  219. package/esm/src/interface/session.js +128 -0
  220. package/esm/src/interface/stop.d.ts +13 -0
  221. package/esm/src/interface/stop.js +28 -0
  222. package/esm/src/interface/tool-calls.d.ts +32 -0
  223. package/esm/src/interface/tool-calls.js +127 -0
  224. package/esm/src/interface/tool-invoke.d.ts +6 -0
  225. package/esm/src/interface/tool-invoke.js +22 -0
  226. package/esm/src/interface/tool-media.d.ts +11 -0
  227. package/esm/src/interface/tool-media.js +113 -0
  228. package/esm/src/interface/types.d.ts +278 -0
  229. package/esm/src/interface/types.js +5 -0
  230. package/esm/src/kernel/api-catalog.d.ts +85 -0
  231. package/esm/src/kernel/api-catalog.js +229 -0
  232. package/esm/src/kernel/auth/credential-source.d.ts +23 -0
  233. package/esm/src/kernel/auth/credential-source.js +11 -0
  234. package/esm/src/kernel/auth/crypto.d.ts +56 -0
  235. package/esm/src/kernel/auth/crypto.js +163 -0
  236. package/esm/src/kernel/auth/mod.d.ts +5 -0
  237. package/esm/src/kernel/auth/mod.js +5 -0
  238. package/esm/src/kernel/auth/oauth.d.ts +18 -0
  239. package/esm/src/kernel/auth/oauth.js +439 -0
  240. package/esm/src/kernel/auth/scope-refusal.d.ts +9 -0
  241. package/esm/src/kernel/auth/scope-refusal.js +8 -0
  242. package/esm/src/kernel/auth/typed-secret.d.ts +13 -0
  243. package/esm/src/kernel/auth/typed-secret.js +23 -0
  244. package/esm/src/kernel/auth/types.d.ts +152 -0
  245. package/esm/src/kernel/auth/types.js +1 -0
  246. package/esm/src/kernel/checkpoint.d.ts +43 -0
  247. package/esm/src/kernel/checkpoint.js +58 -0
  248. package/esm/src/kernel/default-scope.d.ts +72 -0
  249. package/esm/src/kernel/default-scope.js +121 -0
  250. package/esm/src/kernel/engine/call-trace.d.ts +19 -0
  251. package/esm/src/kernel/engine/call-trace.js +29 -0
  252. package/esm/src/kernel/engine/compaction.d.ts +71 -0
  253. package/esm/src/kernel/engine/compaction.js +203 -0
  254. package/esm/src/kernel/engine/decision.d.ts +43 -0
  255. package/esm/src/kernel/engine/decision.js +439 -0
  256. package/esm/src/kernel/engine/embedding.d.ts +8 -0
  257. package/esm/src/kernel/engine/embedding.js +118 -0
  258. package/esm/src/kernel/engine/hash.d.ts +6 -0
  259. package/esm/src/kernel/engine/hash.js +22 -0
  260. package/esm/src/kernel/engine/live-inbound.d.ts +19 -0
  261. package/esm/src/kernel/engine/live-inbound.js +44 -0
  262. package/esm/src/kernel/engine/live-ingress.d.ts +15 -0
  263. package/esm/src/kernel/engine/live-ingress.js +42 -0
  264. package/esm/src/kernel/engine/record.d.ts +3 -0
  265. package/esm/src/kernel/engine/record.js +11 -0
  266. package/esm/src/kernel/engine/repair.d.ts +7 -0
  267. package/esm/src/kernel/engine/repair.js +36 -0
  268. package/esm/src/kernel/engine/runner/gates.d.ts +5 -0
  269. package/esm/src/kernel/engine/runner/gates.js +508 -0
  270. package/esm/src/kernel/engine/runner/mod.d.ts +29 -0
  271. package/esm/src/kernel/engine/runner/mod.js +625 -0
  272. package/esm/src/kernel/engine/runner/nested.d.ts +32 -0
  273. package/esm/src/kernel/engine/runner/nested.js +134 -0
  274. package/esm/src/kernel/engine/runner/schema-validation.d.ts +35 -0
  275. package/esm/src/kernel/engine/runner/schema-validation.js +179 -0
  276. package/esm/src/kernel/engine/runner/stages.d.ts +28 -0
  277. package/esm/src/kernel/engine/runner/stages.js +41 -0
  278. package/esm/src/kernel/engine/runner/state.d.ts +97 -0
  279. package/esm/src/kernel/engine/runner/state.js +50 -0
  280. package/esm/src/kernel/engine/runner/step-order.d.ts +27 -0
  281. package/esm/src/kernel/engine/runner/step-order.js +165 -0
  282. package/esm/src/kernel/engine/runner/steps.d.ts +14 -0
  283. package/esm/src/kernel/engine/runner/steps.js +519 -0
  284. package/esm/src/kernel/engine/runner/stream.d.ts +71 -0
  285. package/esm/src/kernel/engine/runner/stream.js +376 -0
  286. package/esm/src/kernel/engine/runner/usage.d.ts +45 -0
  287. package/esm/src/kernel/engine/runner/usage.js +148 -0
  288. package/esm/src/kernel/engine/session/mod.d.ts +33 -0
  289. package/esm/src/kernel/engine/session/mod.js +1182 -0
  290. package/esm/src/kernel/engine/session/session-trace.d.ts +115 -0
  291. package/esm/src/kernel/engine/session/session-trace.js +500 -0
  292. package/esm/src/kernel/engine/token-estimate.d.ts +23 -0
  293. package/esm/src/kernel/engine/token-estimate.js +38 -0
  294. package/esm/src/kernel/engine/tool-trace.d.ts +58 -0
  295. package/esm/src/kernel/engine/tool-trace.js +132 -0
  296. package/esm/src/kernel/engine/tree.d.ts +2 -0
  297. package/esm/src/kernel/engine/tree.js +17 -0
  298. package/esm/src/kernel/engine/turn-trace.d.ts +119 -0
  299. package/esm/src/kernel/engine/turn-trace.js +855 -0
  300. package/esm/src/kernel/engine/usage.d.ts +36 -0
  301. package/esm/src/kernel/engine/usage.js +151 -0
  302. package/esm/src/kernel/interaction-parts.d.ts +13 -0
  303. package/esm/src/kernel/interaction-parts.js +40 -0
  304. package/esm/src/kernel/json.d.ts +10 -0
  305. package/esm/src/kernel/json.js +3 -0
  306. package/esm/src/kernel/mod.d.ts +74 -0
  307. package/esm/src/kernel/mod.js +45 -0
  308. package/esm/src/kernel/profile-graph.d.ts +145 -0
  309. package/esm/src/kernel/profile-graph.js +158 -0
  310. package/esm/src/kernel/profile-presence.d.ts +18 -0
  311. package/esm/src/kernel/profile-presence.js +158 -0
  312. package/esm/src/kernel/profile-scope.d.ts +40 -0
  313. package/esm/src/kernel/profile-scope.js +274 -0
  314. package/esm/src/kernel/protocols/binding.d.ts +65 -0
  315. package/esm/src/kernel/protocols/binding.js +125 -0
  316. package/esm/src/kernel/protocols/limits.d.ts +15 -0
  317. package/esm/src/kernel/protocols/limits.js +28 -0
  318. package/esm/src/kernel/protocols/mod.d.ts +5 -0
  319. package/esm/src/kernel/protocols/mod.js +5 -0
  320. package/esm/src/kernel/protocols/prices.d.ts +36 -0
  321. package/esm/src/kernel/protocols/prices.js +37 -0
  322. package/esm/src/kernel/protocols/protocol.d.ts +253 -0
  323. package/esm/src/kernel/protocols/protocol.js +253 -0
  324. package/esm/src/kernel/protocols/provider.d.ts +108 -0
  325. package/esm/src/kernel/protocols/provider.js +143 -0
  326. package/esm/src/kernel/protocols/runtime.d.ts +55 -0
  327. package/esm/src/kernel/protocols/runtime.js +534 -0
  328. package/esm/src/kernel/provider-budget.d.ts +32 -0
  329. package/esm/src/kernel/provider-budget.js +262 -0
  330. package/esm/src/kernel/provider-dispatch.d.ts +13 -0
  331. package/esm/src/kernel/provider-dispatch.js +36 -0
  332. package/esm/src/kernel/provider-live.d.ts +7 -0
  333. package/esm/src/kernel/provider-live.js +189 -0
  334. package/esm/src/kernel/provider-runtime.d.ts +57 -0
  335. package/esm/src/kernel/provider-runtime.js +524 -0
  336. package/esm/src/kernel/registry/attachments.d.ts +46 -0
  337. package/esm/src/kernel/registry/attachments.js +220 -0
  338. package/esm/src/kernel/registry/catalog.d.ts +25 -0
  339. package/esm/src/kernel/registry/catalog.js +85 -0
  340. package/esm/src/kernel/registry/embedding-rules.d.ts +28 -0
  341. package/esm/src/kernel/registry/embedding-rules.js +66 -0
  342. package/esm/src/kernel/registry/ingress.d.ts +12 -0
  343. package/esm/src/kernel/registry/ingress.js +179 -0
  344. package/esm/src/kernel/registry/kernel-registry.d.ts +15 -0
  345. package/esm/src/kernel/registry/kernel-registry.js +15 -0
  346. package/esm/src/kernel/registry/profile-outputs.d.ts +3 -0
  347. package/esm/src/kernel/registry/profile-outputs.js +10 -0
  348. package/esm/src/kernel/registry/profiles.d.ts +116 -0
  349. package/esm/src/kernel/registry/profiles.js +773 -0
  350. package/esm/src/kernel/registry/provider-request.d.ts +6 -0
  351. package/esm/src/kernel/registry/provider-request.js +34 -0
  352. package/esm/src/kernel/registry/resolve.d.ts +17 -0
  353. package/esm/src/kernel/registry/resolve.js +238 -0
  354. package/esm/src/kernel/registry/schemas.d.ts +12 -0
  355. package/esm/src/kernel/registry/schemas.js +27 -0
  356. package/esm/src/kernel/registry/slot-fill.d.ts +7 -0
  357. package/esm/src/kernel/registry/slot-fill.js +22 -0
  358. package/esm/src/kernel/registry/sole-model.d.ts +2 -0
  359. package/esm/src/kernel/registry/sole-model.js +4 -0
  360. package/esm/src/kernel/registry/system-prompt.d.ts +8 -0
  361. package/esm/src/kernel/registry/system-prompt.js +32 -0
  362. package/esm/src/kernel/registry/system-role.d.ts +3 -0
  363. package/esm/src/kernel/registry/system-role.js +9 -0
  364. package/esm/src/kernel/registry/vault.d.ts +14 -0
  365. package/esm/src/kernel/registry/vault.js +1 -0
  366. package/esm/src/kernel/schema.d.ts +226 -0
  367. package/esm/src/kernel/schema.js +895 -0
  368. package/esm/src/kernel/scope.d.ts +29 -0
  369. package/esm/src/kernel/scope.js +45 -0
  370. package/esm/src/kernel/stages.d.ts +176 -0
  371. package/esm/src/kernel/stages.js +431 -0
  372. package/esm/src/kernel/stop.d.ts +116 -0
  373. package/esm/src/kernel/stop.js +137 -0
  374. package/esm/src/kernel/system-parts.d.ts +26 -0
  375. package/esm/src/kernel/system-parts.js +98 -0
  376. package/esm/src/kernel/tools/activity-label.d.ts +22 -0
  377. package/esm/src/kernel/tools/activity-label.js +435 -0
  378. package/esm/src/kernel/tools/agent.d.ts +66 -0
  379. package/esm/src/kernel/tools/agent.js +212 -0
  380. package/esm/src/kernel/tools/coordinate.d.ts +4 -0
  381. package/esm/src/kernel/tools/coordinate.js +165 -0
  382. package/esm/src/kernel/tools/events.d.ts +66 -0
  383. package/esm/src/kernel/tools/events.js +184 -0
  384. package/esm/src/kernel/tools/execute.d.ts +100 -0
  385. package/esm/src/kernel/tools/execute.js +1173 -0
  386. package/esm/src/kernel/tools/gate-answer.d.ts +60 -0
  387. package/esm/src/kernel/tools/gate-answer.js +65 -0
  388. package/esm/src/kernel/tools/handler-events.d.ts +45 -0
  389. package/esm/src/kernel/tools/handler-events.js +106 -0
  390. package/esm/src/kernel/tools/harness.d.ts +17 -0
  391. package/esm/src/kernel/tools/harness.js +43 -0
  392. package/esm/src/kernel/tools/http-limit.d.ts +27 -0
  393. package/esm/src/kernel/tools/http-limit.js +85 -0
  394. package/esm/src/kernel/tools/invoke.d.ts +32 -0
  395. package/esm/src/kernel/tools/invoke.js +282 -0
  396. package/esm/src/kernel/tools/mcp-sessions.d.ts +23 -0
  397. package/esm/src/kernel/tools/mcp-sessions.js +69 -0
  398. package/esm/src/kernel/tools/mod.d.ts +10 -0
  399. package/esm/src/kernel/tools/mod.js +7 -0
  400. package/esm/src/kernel/tools/model-text.d.ts +16 -0
  401. package/esm/src/kernel/tools/model-text.js +31 -0
  402. package/esm/src/kernel/tools/operation.d.ts +76 -0
  403. package/esm/src/kernel/tools/operation.js +100 -0
  404. package/esm/src/kernel/tools/page-answer.d.ts +8 -0
  405. package/esm/src/kernel/tools/page-answer.js +19 -0
  406. package/esm/src/kernel/tools/permission.d.ts +15 -0
  407. package/esm/src/kernel/tools/permission.js +38 -0
  408. package/esm/src/kernel/tools/project.d.ts +11 -0
  409. package/esm/src/kernel/tools/project.js +55 -0
  410. package/esm/src/kernel/tools/registry.d.ts +27 -0
  411. package/esm/src/kernel/tools/registry.js +143 -0
  412. package/esm/src/kernel/tools/remote.d.ts +144 -0
  413. package/esm/src/kernel/tools/remote.js +1125 -0
  414. package/esm/src/kernel/tools/resolve.d.ts +31 -0
  415. package/esm/src/kernel/tools/resolve.js +267 -0
  416. package/esm/src/kernel/tools/run.d.ts +28 -0
  417. package/esm/src/kernel/tools/run.js +86 -0
  418. package/esm/src/kernel/tools/schema.d.ts +10 -0
  419. package/esm/src/kernel/tools/schema.js +95 -0
  420. package/esm/src/kernel/tools/signed-in-fetch.d.ts +19 -0
  421. package/esm/src/kernel/tools/signed-in-fetch.js +45 -0
  422. package/esm/src/kernel/tools/stage-run.d.ts +116 -0
  423. package/esm/src/kernel/tools/stage-run.js +198 -0
  424. package/esm/src/kernel/tools/types.d.ts +497 -0
  425. package/esm/src/kernel/tools/types.js +1 -0
  426. package/esm/src/kernel/tools/unchecked-output.d.ts +14 -0
  427. package/esm/src/kernel/tools/unchecked-output.js +18 -0
  428. package/esm/src/kernel/turn-events.d.ts +776 -0
  429. package/esm/src/kernel/turn-events.js +543 -0
  430. package/esm/src/kernel/types.d.ts +1025 -0
  431. package/esm/src/kernel/types.js +1 -0
  432. package/esm/src/kernel/util/base64.d.ts +4 -0
  433. package/esm/src/kernel/util/base64.js +15 -0
  434. package/esm/src/kernel/util/exact-type.d.ts +31 -0
  435. package/esm/src/kernel/util/exact-type.js +1 -0
  436. package/esm/src/kernel/util/find-last.d.ts +3 -0
  437. package/esm/src/kernel/util/find-last.js +9 -0
  438. package/esm/src/kernel/util/mime.d.ts +2 -0
  439. package/esm/src/kernel/util/mime.js +4 -0
  440. package/esm/src/kernel/util/partial-json.d.ts +23 -0
  441. package/esm/src/kernel/util/partial-json.js +128 -0
  442. package/esm/src/kernel/util/record.d.ts +2 -0
  443. package/esm/src/kernel/util/record.js +4 -0
  444. package/esm/src/observability/destinations.d.ts +14 -0
  445. package/esm/src/observability/destinations.js +43 -0
  446. package/esm/src/observability/jsonl.d.ts +18 -0
  447. package/esm/src/observability/jsonl.js +110 -0
  448. package/esm/src/observability/mod.d.ts +22 -0
  449. package/esm/src/observability/mod.js +16 -0
  450. package/esm/src/observability/openinference.d.ts +11 -0
  451. package/esm/src/observability/openinference.js +205 -0
  452. package/esm/src/observability/otlp.d.ts +71 -0
  453. package/esm/src/observability/otlp.js +98 -0
  454. package/esm/src/observability/phoenix.d.ts +30 -0
  455. package/esm/src/observability/phoenix.js +71 -0
  456. package/esm/src/observability/policy.d.ts +17 -0
  457. package/esm/src/observability/policy.js +73 -0
  458. package/esm/src/observability/resolve-policy.d.ts +8 -0
  459. package/esm/src/observability/resolve-policy.js +64 -0
  460. package/esm/src/observability/spans.d.ts +22 -0
  461. package/esm/src/observability/spans.js +72 -0
  462. package/esm/src/observability/trace-catalog.d.ts +128 -0
  463. package/esm/src/observability/trace-catalog.js +906 -0
  464. package/esm/src/observability/trace-record.d.ts +23 -0
  465. package/esm/src/observability/trace-record.js +228 -0
  466. package/esm/src/observability/trace-schema.d.ts +57 -0
  467. package/esm/src/observability/trace-schema.js +59 -0
  468. package/esm/src/observability/trace-sink.d.ts +14 -0
  469. package/esm/src/observability/trace-sink.js +3 -0
  470. package/esm/src/observability/trace-span.d.ts +98 -0
  471. package/esm/src/observability/trace-span.js +201 -0
  472. package/esm/src/observability/trace.d.ts +13 -0
  473. package/esm/src/observability/trace.js +37 -0
  474. package/esm/src/observability/types.d.ts +109 -0
  475. package/esm/src/observability/types.js +3 -0
  476. package/esm/src/presets/google/speech-voices.d.ts +9 -0
  477. package/esm/src/presets/google/speech-voices.js +38 -0
  478. package/esm/src/presets/google-limits.d.ts +13 -0
  479. package/esm/src/presets/google-limits.js +18 -0
  480. package/esm/src/presets/google.d.ts +119 -0
  481. package/esm/src/presets/google.js +197 -0
  482. package/esm/src/presets/local.d.ts +26 -0
  483. package/esm/src/presets/local.js +30 -0
  484. package/esm/src/presets/mod.d.ts +11 -0
  485. package/esm/src/presets/mod.js +9 -0
  486. package/esm/src/presets/openrouter.d.ts +26 -0
  487. package/esm/src/presets/openrouter.js +31 -0
  488. package/esm/src/providers/embedding-limits.d.ts +7 -0
  489. package/esm/src/providers/embedding-limits.js +12 -0
  490. package/esm/src/providers/gemini/embedding-protocol.d.ts +8 -0
  491. package/esm/src/providers/gemini/embedding-protocol.js +125 -0
  492. package/esm/src/providers/gemini/interactions-protocol.d.ts +8 -0
  493. package/esm/src/providers/gemini/interactions-protocol.js +105 -0
  494. package/esm/src/providers/gemini/live-protocol.d.ts +3 -0
  495. package/esm/src/providers/gemini/live-protocol.js +191 -0
  496. package/esm/src/providers/gemini/prices.d.ts +3 -0
  497. package/esm/src/providers/gemini/prices.js +63 -0
  498. package/esm/src/providers/gemini/provider.d.ts +7 -0
  499. package/esm/src/providers/gemini/provider.js +39 -0
  500. package/esm/src/providers/google/api-error.d.ts +8 -0
  501. package/esm/src/providers/google/api-error.js +123 -0
  502. package/esm/src/providers/google/builtins.d.ts +14 -0
  503. package/esm/src/providers/google/builtins.js +57 -0
  504. package/esm/src/providers/google/grounding.d.ts +5 -0
  505. package/esm/src/providers/google/grounding.js +226 -0
  506. package/esm/src/providers/google/interactions/framing.d.ts +27 -0
  507. package/esm/src/providers/google/interactions/framing.js +304 -0
  508. package/esm/src/providers/google/interactions/steps.d.ts +12 -0
  509. package/esm/src/providers/google/interactions/steps.js +200 -0
  510. package/esm/src/providers/google/interactions/stream.d.ts +23 -0
  511. package/esm/src/providers/google/interactions/stream.js +230 -0
  512. package/esm/src/providers/google/live/framing.d.ts +61 -0
  513. package/esm/src/providers/google/live/framing.js +597 -0
  514. package/esm/src/providers/google/live/stream.d.ts +13 -0
  515. package/esm/src/providers/google/live/stream.js +57 -0
  516. package/esm/src/providers/google/thinking.d.ts +3 -0
  517. package/esm/src/providers/google/thinking.js +8 -0
  518. package/esm/src/providers/google/urls.d.ts +4 -0
  519. package/esm/src/providers/google/urls.js +4 -0
  520. package/esm/src/providers/google/usage.d.ts +7 -0
  521. package/esm/src/providers/google/usage.js +49 -0
  522. package/esm/src/providers/live.d.ts +6 -0
  523. package/esm/src/providers/live.js +6 -0
  524. package/esm/src/providers/local/embedding-protocol.d.ts +7 -0
  525. package/esm/src/providers/local/embedding-protocol.js +60 -0
  526. package/esm/src/providers/local/provider.d.ts +7 -0
  527. package/esm/src/providers/local/provider.js +28 -0
  528. package/esm/src/providers/mod.d.ts +32 -0
  529. package/esm/src/providers/mod.js +23 -0
  530. package/esm/src/providers/open-ai/protocol.d.ts +3 -0
  531. package/esm/src/providers/open-ai/protocol.js +189 -0
  532. package/esm/src/providers/openrouter/embedding-protocol.d.ts +6 -0
  533. package/esm/src/providers/openrouter/embedding-protocol.js +86 -0
  534. package/esm/src/providers/openrouter/image.d.ts +15 -0
  535. package/esm/src/providers/openrouter/image.js +34 -0
  536. package/esm/src/providers/openrouter/images-protocol.d.ts +3 -0
  537. package/esm/src/providers/openrouter/images-protocol.js +82 -0
  538. package/esm/src/providers/openrouter/openai/compat.d.ts +19 -0
  539. package/esm/src/providers/openrouter/openai/compat.js +162 -0
  540. package/esm/src/providers/openrouter/openai/image-payload.d.ts +9 -0
  541. package/esm/src/providers/openrouter/openai/image-payload.js +115 -0
  542. package/esm/src/providers/openrouter/openai/reasoning-state.d.ts +2 -0
  543. package/esm/src/providers/openrouter/openai/reasoning-state.js +31 -0
  544. package/esm/src/providers/openrouter/openai/usage.d.ts +8 -0
  545. package/esm/src/providers/openrouter/openai/usage.js +56 -0
  546. package/esm/src/providers/openrouter/protocol.d.ts +8 -0
  547. package/esm/src/providers/openrouter/protocol.js +171 -0
  548. package/esm/src/providers/openrouter/provider.d.ts +10 -0
  549. package/esm/src/providers/openrouter/provider.js +50 -0
  550. package/esm/src/providers/shared/carried-tool-files.d.ts +7 -0
  551. package/esm/src/providers/shared/carried-tool-files.js +43 -0
  552. package/esm/src/providers/shared/pcm.d.ts +14 -0
  553. package/esm/src/providers/shared/pcm.js +78 -0
  554. package/esm/src/providers/shared/protocol-events.d.ts +8 -0
  555. package/esm/src/providers/shared/protocol-events.js +20 -0
  556. package/esm/src/providers/shared/response-identity.d.ts +11 -0
  557. package/esm/src/providers/shared/response-identity.js +12 -0
  558. package/esm/src/providers/shared/retry.d.ts +17 -0
  559. package/esm/src/providers/shared/retry.js +90 -0
  560. package/esm/src/providers/shared/sse.d.ts +6 -0
  561. package/esm/src/providers/shared/sse.js +93 -0
  562. package/esm/src/providers/shared/structured-output.d.ts +4 -0
  563. package/esm/src/providers/shared/structured-output.js +11 -0
  564. package/esm/src/providers/shared/tool-args.d.ts +24 -0
  565. package/esm/src/providers/shared/tool-args.js +88 -0
  566. package/esm/src/providers/shared/tool-draft.d.ts +16 -0
  567. package/esm/src/providers/shared/tool-draft.js +14 -0
  568. package/esm/src/providers/shared/upstream-tap.d.ts +8 -0
  569. package/esm/src/providers/shared/upstream-tap.js +85 -0
  570. package/esm/src/providers/shared/upstream-tape.d.ts +6 -0
  571. package/esm/src/providers/shared/upstream-tape.js +88 -0
  572. package/esm/src/providers/system-one/protocol.d.ts +8 -0
  573. package/esm/src/providers/system-one/protocol.js +93 -0
  574. package/esm/src/providers/types.d.ts +51 -0
  575. package/esm/src/providers/types.js +2 -0
  576. package/esm/src/providers/typesafe/provider.d.ts +7 -0
  577. package/esm/src/providers/typesafe/provider.js +24 -0
  578. package/esm/src/surface/formats.d.ts +46 -0
  579. package/esm/src/surface/formats.js +178 -0
  580. package/esm/src/surface/mod.d.ts +16 -0
  581. package/esm/src/surface/mod.js +12 -0
  582. package/esm/src/surface/runtime.d.ts +44 -0
  583. package/esm/src/surface/runtime.js +441 -0
  584. package/esm/src/surface/tools.d.ts +9 -0
  585. package/esm/src/surface/tools.js +62 -0
  586. package/esm/src/surface/types.d.ts +110 -0
  587. package/esm/src/surface/types.js +4 -0
  588. package/package.json +100 -4
@@ -0,0 +1,116 @@
1
+ import { type ContinueStopKind, type ProfileType, type StepLimitMode } from './schema.js';
2
+ import type { TurnStop } from './turn-events.js';
3
+ export type { TurnStop };
4
+ /**
5
+ * Profile types whose continue turn sends the continue instruction. Image and
6
+ * speech continue by re-sending the host's request unchanged.
7
+ */
8
+ export declare const CONTINUE_INSTRUCTION_TYPES: readonly ProfileType[];
9
+ /** The stop kinds that offer Continue when a profile names none. */
10
+ export declare const DEFAULT_ALLOW_CONTINUE: readonly ContinueStopKind[];
11
+ /** Hosts wait briefly, then continue once on their own. */
12
+ export declare const DEFAULT_AUTO_CONTINUE: readonly ContinueStopKind[];
13
+ /** Pause before an auto-continue, the host's or the turn's own, so a flaky tunnel can settle. */
14
+ export declare const AUTO_CONTINUE_DELAY_MS = 1500;
15
+ /** Which stops a profile offers Continue for, and which the host continues on its own. */
16
+ export interface ProfileTurnResumptionSpec {
17
+ /**
18
+ * The host's UI policy for offering Continue: the kernel does not refuse a `continueFrom`
19
+ * outside it, since a continue is one more turn the host could send as plain text anyway.
20
+ * Omit → length / stream_incomplete / provider_error; `[]` = none.
21
+ */
22
+ allowContinue?: ContinueStopKind[];
23
+ /**
24
+ * Omit → length / stream_incomplete; `[]` = none. Apart from `allowContinue`: a stop can be
25
+ * continued without Continue being offered for it. The host sends the `continueFrom` turn
26
+ * with `continuation`. A text turn also sends a failed model call (`provider_error`,
27
+ * `stream_incomplete`) again itself when this list is set and names that stop, and the
28
+ * call gave no reply and no tool call: the turn keeps its history, its step count and
29
+ * what it has read. A failure the same call would meet again (the provider refused the
30
+ * request) is not sent again. Omitted, a turn sends nothing again.
31
+ */
32
+ autoContinue?: ContinueStopKind[];
33
+ /**
34
+ * Compared against `TurnRequest.continuation`; omit → no count cap. Also how many model
35
+ * calls one text turn sends again itself; omit → one.
36
+ */
37
+ maxContinues?: number;
38
+ }
39
+ /** True when the stop kind can be continued. */
40
+ export declare function isContinueStopKind(kind: string): kind is ContinueStopKind;
41
+ /**
42
+ * `allowSteering` is text / live only; image and speech omit it. Stop is not a profile knob:
43
+ * interfaces always project `canStop: true` because `TurnRequest.signal` is always wired.
44
+ */
45
+ export interface ProfileTurnBehaviourSpec {
46
+ resumption?: ProfileTurnResumptionSpec;
47
+ /** Default true on text / live. Gates injects only; stage events still emit. */
48
+ allowSteering?: boolean;
49
+ /**
50
+ * Text only. What the last model call under `maxSteps` may do. Omit = `'stop'`: it may call
51
+ * tools, and if it does the turn stops as `step_limit`. `'answer'` sends it without tools.
52
+ */
53
+ atStepLimit?: StepLimitMode;
54
+ }
55
+ /**
56
+ * Image / speech turn behaviour: resumption only. A continue re-sends the
57
+ * host's request unchanged, so there is no continue instruction, and there is
58
+ * no mid-turn inject to steer.
59
+ */
60
+ export interface MediaTurnBehaviourSpec {
61
+ resumption?: ProfileTurnResumptionSpec;
62
+ }
63
+ /**
64
+ * The stop a continue turn resumes. The partial reply is not carried here: a
65
+ * text continue reads it as the last assistant message in `input.history`, and
66
+ * an image or speech continue re-sends the original request.
67
+ */
68
+ export interface TurnContinueFrom {
69
+ stop: TurnStop;
70
+ }
71
+ /** True when the stop can be continued under the allowed kinds. */
72
+ export declare function isResumeableStop(stop: TurnStop | undefined, allowContinue?: readonly ContinueStopKind[]): boolean;
73
+ /** True for a stop where the model call failed; the rest either finished or were stopped on purpose. */
74
+ export declare function isFailedStopKind(kind: TurnStop['kind']): boolean;
75
+ export declare function stageAbortStop(abort: true | {
76
+ reason?: string;
77
+ }): TurnStop & {
78
+ kind: 'cancelled';
79
+ };
80
+ /** True when the user cancelled the turn. */
81
+ export declare function isUserCancelledStop(stop: TurnStop | undefined): boolean;
82
+ /** `policy` is the profile's `profileTurnResumption(profile)`. */
83
+ export declare function shouldAutoContinue(stop: TurnStop | undefined, policy?: Pick<ProfileTurnResumptionSpec, 'autoContinue'>): boolean;
84
+ /** The profile's resumption policy, or `undefined` for a live profile. */
85
+ export declare function profileTurnResumption(profile: {
86
+ type: string;
87
+ turnBehaviour?: ProfileTurnBehaviourSpec;
88
+ }): ProfileTurnResumptionSpec | undefined;
89
+ /** Text-only, for the interface `allowSteering` projection; `profileAllowsInject` adds live. */
90
+ export declare function profileAllowsSteering(profile: {
91
+ type: string;
92
+ turnBehaviour?: ProfileTurnBehaviourSpec;
93
+ }): boolean;
94
+ /** Gates injects only, never stage emission. */
95
+ export declare function profileAllowsInject(profile: {
96
+ type: string;
97
+ turnBehaviour?: ProfileTurnBehaviourSpec;
98
+ }): boolean;
99
+ /** OpenAI-compatible normalized `finish_reason` (+ optional `native_finish_reason`). */
100
+ export declare function turnStopFromOpenAiFinishReason(finishReason: string | null | undefined, nativeFinishReason?: string | null): TurnStop;
101
+ /** Gemini Interactions terminal `status`. */
102
+ export declare function turnStopFromInteractionStatus(status: string | null | undefined): TurnStop;
103
+ /** `null` when `sawTerminal`, so the host keeps the provider's stop. */
104
+ export declare function turnStopFromClientStreamEnd(opts: {
105
+ abortedByUser: boolean;
106
+ sawTerminal: boolean;
107
+ hadPartial?: boolean;
108
+ }): TurnStop | null;
109
+ /** Thrown when a model call stops before it finishes, carrying the stop. */
110
+ export declare class GenerationStopError extends Error {
111
+ readonly name = "GenerationStopError";
112
+ readonly stop: TurnStop;
113
+ constructor(stop: TurnStop, message?: string);
114
+ }
115
+ /** True when the error is a `GenerationStopError`. */
116
+ export declare function isGenerationStopError(err: unknown): err is GenerationStopError;
@@ -0,0 +1,137 @@
1
+ import { CONTINUE_STOP_KINDS, } from './schema.js';
2
+ /**
3
+ * Profile types whose continue turn sends the continue instruction. Image and
4
+ * speech continue by re-sending the host's request unchanged.
5
+ */
6
+ export const CONTINUE_INSTRUCTION_TYPES = ['text'];
7
+ /** The stop kinds that offer Continue when a profile names none. */
8
+ export const DEFAULT_ALLOW_CONTINUE = CONTINUE_STOP_KINDS;
9
+ /** Hosts wait briefly, then continue once on their own. */
10
+ export const DEFAULT_AUTO_CONTINUE = ['length', 'stream_incomplete'];
11
+ /** Pause before an auto-continue, the host's or the turn's own, so a flaky tunnel can settle. */
12
+ export const AUTO_CONTINUE_DELAY_MS = 1_500;
13
+ const CONTINUE_KIND_SET = new Set(CONTINUE_STOP_KINDS);
14
+ /** True when the stop kind can be continued. */
15
+ export function isContinueStopKind(kind) {
16
+ return CONTINUE_KIND_SET.has(kind);
17
+ }
18
+ const RESUMEABLE_DEFAULT = new Set(DEFAULT_ALLOW_CONTINUE);
19
+ /** True when the stop can be continued under the allowed kinds. */
20
+ export function isResumeableStop(stop, allowContinue) {
21
+ if (!stop)
22
+ return false;
23
+ if (!isContinueStopKind(stop.kind))
24
+ return false;
25
+ const allow = allowContinue ? new Set(allowContinue) : RESUMEABLE_DEFAULT;
26
+ return allow.has(stop.kind);
27
+ }
28
+ const FAILED_STOP_KINDS = new Set(['provider_error', 'stream_incomplete']);
29
+ /** True for a stop where the model call failed; the rest either finished or were stopped on purpose. */
30
+ export function isFailedStopKind(kind) {
31
+ return FAILED_STOP_KINDS.has(kind);
32
+ }
33
+ export function stageAbortStop(abort) {
34
+ return typeof abort === 'object' && abort.reason
35
+ ? { kind: 'cancelled', native: abort.reason }
36
+ : { kind: 'cancelled' };
37
+ }
38
+ /** True when the user cancelled the turn. */
39
+ export function isUserCancelledStop(stop) {
40
+ return stop?.kind === 'cancelled';
41
+ }
42
+ /** `policy` is the profile's `profileTurnResumption(profile)`. */
43
+ export function shouldAutoContinue(stop, policy) {
44
+ if (!stop || !isContinueStopKind(stop.kind))
45
+ return false;
46
+ // why: Offering Continue (`allowContinue`) is the host's own choice, apart from this one.
47
+ return (policy?.autoContinue ?? DEFAULT_AUTO_CONTINUE).includes(stop.kind);
48
+ }
49
+ /** The profile's resumption policy, or `undefined` for a live profile. */
50
+ export function profileTurnResumption(profile) {
51
+ if (profile.type === 'live')
52
+ return undefined;
53
+ return profile.turnBehaviour?.resumption;
54
+ }
55
+ /** Text-only, for the interface `allowSteering` projection; `profileAllowsInject` adds live. */
56
+ export function profileAllowsSteering(profile) {
57
+ if (profile.type !== 'text')
58
+ return false;
59
+ return profile.turnBehaviour?.allowSteering !== false;
60
+ }
61
+ /** Gates injects only, never stage emission. */
62
+ export function profileAllowsInject(profile) {
63
+ if (profile.type === 'text' || profile.type === 'live') {
64
+ return profile.turnBehaviour?.allowSteering !== false;
65
+ }
66
+ return false;
67
+ }
68
+ /** OpenAI-compatible normalized `finish_reason` (+ optional `native_finish_reason`). */
69
+ export function turnStopFromOpenAiFinishReason(finishReason, nativeFinishReason) {
70
+ const native = nativeFinishReason?.trim() || finishReason?.trim() || undefined;
71
+ const effective = (nativeFinishReason || finishReason || '').toLowerCase();
72
+ if (!effective)
73
+ return { kind: 'stream_incomplete', native };
74
+ if (effective === 'network_error' || effective.includes('network')) {
75
+ return { kind: 'provider_error', native };
76
+ }
77
+ return openAiFinishKind((finishReason || '').toLowerCase(), effective, native);
78
+ }
79
+ function openAiFinishKind(finish, effective, native) {
80
+ if (finish === 'stop') {
81
+ return /error|fail/.test(effective)
82
+ ? { kind: 'provider_error', native }
83
+ : { kind: 'completed', native };
84
+ }
85
+ if (finish === 'length')
86
+ return { kind: 'length', native };
87
+ if (finish === 'tool_calls' || finish === 'tool-calls')
88
+ return { kind: 'tool', native };
89
+ if (finish === 'content_filter' || finish === 'content-filter') {
90
+ return { kind: 'filtered', native };
91
+ }
92
+ return { kind: 'provider_error', native };
93
+ }
94
+ /** Gemini Interactions terminal `status`. */
95
+ export function turnStopFromInteractionStatus(status) {
96
+ const s = (status || '').toLowerCase();
97
+ const native = status || undefined;
98
+ switch (s) {
99
+ case 'completed':
100
+ return { kind: 'completed', native };
101
+ case 'incomplete':
102
+ case 'budget_exceeded':
103
+ return { kind: 'length', native };
104
+ case 'requires_action':
105
+ return { kind: 'tool', native };
106
+ case 'cancelled':
107
+ return { kind: 'cancelled', native };
108
+ case 'failed':
109
+ return { kind: 'provider_error', native };
110
+ case 'in_progress':
111
+ case 'queued':
112
+ return { kind: 'stream_incomplete', native };
113
+ default:
114
+ return { kind: 'stream_incomplete', native };
115
+ }
116
+ }
117
+ /** `null` when `sawTerminal`, so the host keeps the provider's stop. */
118
+ export function turnStopFromClientStreamEnd(opts) {
119
+ if (opts.sawTerminal)
120
+ return null;
121
+ if (opts.abortedByUser)
122
+ return { kind: 'cancelled' };
123
+ return { kind: 'stream_incomplete' };
124
+ }
125
+ /** Thrown when a model call stops before it finishes, carrying the stop. */
126
+ export class GenerationStopError extends Error {
127
+ name = 'GenerationStopError';
128
+ stop;
129
+ constructor(stop, message) {
130
+ super(message || `Generation stopped: ${stop.kind}`);
131
+ this.stop = stop;
132
+ }
133
+ }
134
+ /** True when the error is a `GenerationStopError`. */
135
+ export function isGenerationStopError(err) {
136
+ return err instanceof GenerationStopError;
137
+ }
@@ -0,0 +1,26 @@
1
+ import type { SystemPiece, SystemPrompt } from './types.js';
2
+ /** The system prompt as sent, and the private stretches of it no reply may repeat. */
3
+ interface BoundSystem {
4
+ text: string;
5
+ private: readonly string[];
6
+ }
7
+ /** What is wrong with `prompt` as a system prompt, `where` naming it, or undefined. */
8
+ declare function systemPromptProblem(prompt: unknown, where: string): string | undefined;
9
+ /** `where` names the prompt in the error, e.g. `Profile sol identity.system`. */
10
+ declare function assertSystemPrompt(prompt: unknown, where: string): asserts prompt is SystemPrompt;
11
+ /** Rewrites each part's text with `rewrite`, keeping its mark. */
12
+ declare function mapSystemPrompt(prompt: SystemPrompt, where: string, rewrite: (text: string) => string): SystemPrompt;
13
+ /** One prompt's pieces: all private unless some part is `{ private }`. */
14
+ declare function systemPieces(prompt: SystemPrompt): SystemPiece[];
15
+ /** Joins prompts from different sources a blank line apart, leaving out empty ones. */
16
+ declare function joinSystemPieces(sources: readonly (readonly SystemPiece[])[]): SystemPiece[];
17
+ declare function systemText(pieces: readonly SystemPiece[]): string;
18
+ /**
19
+ * The wire text and its private stretches: private pieces next to each other
20
+ * read as one stretch, since a reply repeating across them repeats private text.
21
+ */
22
+ declare function boundSystem(pieces: readonly SystemPiece[]): BoundSystem;
23
+ /** `pieces` with Theorem's notes after them, each note private whatever the host marked. */
24
+ declare function bindSystem(pieces: readonly SystemPiece[], notes: readonly string[]): BoundSystem;
25
+ export type { BoundSystem };
26
+ export { assertSystemPrompt, bindSystem, boundSystem, joinSystemPieces, mapSystemPrompt, systemPieces, systemPromptProblem, systemText, };
@@ -0,0 +1,98 @@
1
+ import { TheoremError } from '../guardrails/error.js';
2
+ const SOURCE_SEPARATOR = '\n\n';
3
+ function partProblem(part) {
4
+ if (typeof part === 'string')
5
+ return undefined;
6
+ if (typeof part !== 'object' || part === null || Array.isArray(part)) {
7
+ return 'must be a string or { private: string }'; // labels-exempt: developer contract error
8
+ }
9
+ const keys = Object.keys(part);
10
+ if (keys.length !== 1 || keys[0] !== 'private') {
11
+ return 'must have exactly one key, private'; // labels-exempt: developer contract error
12
+ }
13
+ const text = part.private;
14
+ if (typeof text !== 'string')
15
+ return 'must be a string'; // labels-exempt: developer contract error
16
+ if (text === '')
17
+ return 'must not be empty'; // labels-exempt: developer contract error
18
+ return undefined;
19
+ }
20
+ /** What is wrong with `prompt` as a system prompt, `where` naming it, or undefined. */
21
+ function systemPromptProblem(prompt, where) {
22
+ if (typeof prompt === 'string')
23
+ return undefined;
24
+ if (!Array.isArray(prompt))
25
+ return `${where} must be a string or an array of parts`; // labels-exempt: developer contract error
26
+ if (prompt.length === 0)
27
+ return `${where} must not be an empty array`; // labels-exempt: developer contract error
28
+ for (const [at, part] of prompt.entries()) {
29
+ const problem = partProblem(part);
30
+ if (!problem)
31
+ continue;
32
+ const path = typeof part === 'object' && part !== null && 'private' in part ? '.private' : '';
33
+ return `${where}[${at}]${path} ${problem}`;
34
+ }
35
+ return undefined;
36
+ }
37
+ /** `where` names the prompt in the error, e.g. `Profile sol identity.system`. */
38
+ function assertSystemPrompt(prompt, where) {
39
+ const problem = systemPromptProblem(prompt, where);
40
+ if (problem)
41
+ throw new TheoremError('config', problem);
42
+ }
43
+ /** Rewrites each part's text with `rewrite`, keeping its mark. */
44
+ function mapSystemPrompt(prompt, where, rewrite) {
45
+ assertSystemPrompt(prompt, where);
46
+ if (typeof prompt === 'string')
47
+ return rewrite(prompt);
48
+ return prompt.map((part) => typeof part === 'string' ? rewrite(part) : { private: rewrite(part.private) });
49
+ }
50
+ /** One prompt's pieces: all private unless some part is `{ private }`. */
51
+ function systemPieces(prompt) {
52
+ if (typeof prompt === 'string')
53
+ return [{ text: prompt, private: true }];
54
+ const marked = prompt.some((part) => typeof part !== 'string');
55
+ return prompt.map((part) => typeof part === 'string'
56
+ ? { text: part, private: !marked }
57
+ : { text: part.private, private: true });
58
+ }
59
+ /** Joins prompts from different sources a blank line apart, leaving out empty ones. */
60
+ function joinSystemPieces(sources) {
61
+ const joined = [];
62
+ for (const pieces of sources) {
63
+ if (!pieces.some((piece) => piece.text))
64
+ continue;
65
+ if (joined.length > 0)
66
+ joined.push({ text: SOURCE_SEPARATOR, private: true });
67
+ joined.push(...pieces);
68
+ }
69
+ return joined;
70
+ }
71
+ function systemText(pieces) {
72
+ return pieces.map((piece) => piece.text).join('');
73
+ }
74
+ /**
75
+ * The wire text and its private stretches: private pieces next to each other
76
+ * read as one stretch, since a reply repeating across them repeats private text.
77
+ */
78
+ function boundSystem(pieces) {
79
+ const stretches = [];
80
+ let open = '';
81
+ for (const piece of pieces) {
82
+ if (piece.private) {
83
+ open += piece.text;
84
+ continue;
85
+ }
86
+ if (open.trim())
87
+ stretches.push(open);
88
+ open = '';
89
+ }
90
+ if (open.trim())
91
+ stretches.push(open);
92
+ return { text: systemText(pieces), private: stretches };
93
+ }
94
+ /** `pieces` with Theorem's notes after them, each note private whatever the host marked. */
95
+ function bindSystem(pieces, notes) {
96
+ return boundSystem(joinSystemPieces([pieces, ...notes.map((text) => (text ? [{ text, private: true }] : []))]));
97
+ }
98
+ export { assertSystemPrompt, bindSystem, boundSystem, joinSystemPieces, mapSystemPrompt, systemPieces, systemPromptProblem, systemText, };
@@ -0,0 +1,22 @@
1
+ /** One line of wording, or a list of lines read top to bottom: the first that fits is shown. */
2
+ export type LabelTemplate = string | readonly string[];
3
+ /** A tool's name as a label shows it: `manage_alert` reads "manage alert". */
4
+ export declare function toolNameInWords(name: string): string;
5
+ /**
6
+ * Fills each `{path}` or `{path|fallback}` from the call. Only text and numbers fill; a line fits
7
+ * when every placeholder has a value or a fallback and its `when` holds. A list shows its first
8
+ * line that fits, and a run of `+` lines shows every member that fits, joined in words. When no
9
+ * line fits the label is `undefined`, and the transcript names the tool.
10
+ */
11
+ export declare function fillActivityLabel(template: LabelTemplate | undefined, values: {
12
+ input: unknown;
13
+ output?: unknown;
14
+ }): string | undefined;
15
+ /**
16
+ * Why a label can't be used with these JSON schemas, as a sentence for its author, or `undefined`
17
+ * when it can. Pass `output` for a Done label. A list must end on a line that always fits.
18
+ */
19
+ export declare function activityLabelProblem(template: LabelTemplate, schemas: {
20
+ input: unknown;
21
+ output?: unknown;
22
+ }): string | undefined;