@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 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ /** Decodes a base64 string to bytes. */
2
+ export declare function base64ToBytes(data: string): Uint8Array<ArrayBuffer>;
3
+ /** Encodes bytes as a base64 string. */
4
+ export declare function bytesToBase64(bytes: Uint8Array): string;
@@ -0,0 +1,15 @@
1
+ /** Decodes a base64 string to bytes. */
2
+ export function base64ToBytes(data) {
3
+ const bin = atob(data);
4
+ const out = new Uint8Array(bin.length);
5
+ for (let i = 0; i < bin.length; i++)
6
+ out[i] = bin.charCodeAt(i);
7
+ return out;
8
+ }
9
+ /** Encodes bytes as a base64 string. */
10
+ export function bytesToBase64(bytes) {
11
+ let bin = '';
12
+ for (let i = 0; i < bytes.length; i++)
13
+ bin += String.fromCharCode(bytes[i]);
14
+ return btoa(bin);
15
+ }
@@ -0,0 +1,31 @@
1
+ export type Probe<X> = <T>() => T extends X ? 1 : 2;
2
+ export type OptionalKeys<T> = {
3
+ [K in keyof T]-?: Record<never, never> extends Pick<T, K> ? K : never;
4
+ }[keyof T];
5
+ export type MarkedOnce<T> = T extends object ? {
6
+ [K in keyof T]-?: K extends OptionalKeys<T> ? {
7
+ optional: T[K];
8
+ } : T[K];
9
+ } : T;
10
+ /**
11
+ * Boxed in `Seen` so a union stays one entry. `T`'s own optional fields are marked first,
12
+ * or a type would pass for one it merely nests in.
13
+ */
14
+ export type IsSeen<T, Seen> = true extends (Seen extends [infer S] ? Probe<MarkedOnce<S>> extends Probe<MarkedOnce<T>> ? true : false : never) ? true : false;
15
+ /**
16
+ * The identity check behind `Probe` ignores optionality, so a field only one side leaves out
17
+ * would pass unmarked. A recursive type is compared as it is where it recurs.
18
+ */
19
+ export type Marked<T, Seen = never> = IsSeen<T, Seen> extends true ? T : MarkedEach<T, Seen | [T]>;
20
+ export type MarkedEach<T, Seen> = T extends (...args: never[]) => unknown ? T : T extends readonly unknown[] ? {
21
+ [I in keyof T]: Marked<T[I], Seen>;
22
+ } : T extends object ? {
23
+ [K in keyof T]-?: K extends OptionalKeys<T> ? {
24
+ optional: Marked<T[K], Seen>;
25
+ } : Marked<T[K], Seen>;
26
+ } : T;
27
+ /**
28
+ * JSR's `no-slow-types` forbids publishing inferred types, so a hand-written type is checked
29
+ * against its schema: `true satisfies Equals<z.infer<typeof turnStop>, TurnStop>;`.
30
+ */
31
+ export type Equals<A, B> = Probe<Marked<A>> extends Probe<Marked<B>> ? true : false;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ /** `Array.prototype.findLast` is ES2023; this stays ES2022-safe. */
2
+ export declare function findLast<T, S extends T>(items: readonly T[], predicate: (item: T) => item is S): S | undefined;
3
+ export declare function findLast<T>(items: readonly T[], predicate: (item: T) => boolean): T | undefined;
@@ -0,0 +1,9 @@
1
+ export function findLast(items, predicate) {
2
+ for (let i = items.length - 1; i >= 0; i -= 1) {
3
+ const item = items[i];
4
+ if (item !== undefined && predicate(item)) {
5
+ return item;
6
+ }
7
+ }
8
+ return undefined;
9
+ }
@@ -0,0 +1,2 @@
1
+ /** Lower-case `type/subtype`, parameters removed. */
2
+ export declare function mimeEssence(mime: string): string;
@@ -0,0 +1,4 @@
1
+ /** Lower-case `type/subtype`, parameters removed. */
2
+ export function mimeEssence(mime) {
3
+ return (mime.split(';')[0] ?? '').trim().toLowerCase();
4
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Reads JSON text the model is still writing: what is whole so far, and the string it is in the
3
+ * middle of. For previews only; the text once whole is parsed as JSON.
4
+ */
5
+ /** A JSON string read from its opening quote: its text so far, and where it closed, if it has. */
6
+ interface StringRead {
7
+ text: string;
8
+ /** The index just past the closing quote; none while the string is still open. */
9
+ end?: number;
10
+ }
11
+ /**
12
+ * The string whose opening quote is at `at`, unescaped as far as `text` goes. An escape cut off at
13
+ * the end is left out rather than shown wrong; an escape JSON does not have reads as its letter.
14
+ */
15
+ declare function readJsonString(text: string, at: number): StringRead;
16
+ /**
17
+ * The top-level fields of a JSON object the model is still writing: each field whose value is
18
+ * whole, and the string being written, as far as it goes. A number, object, or array still being
19
+ * written is left out: it is not its value yet.
20
+ */
21
+ declare function partialJsonObject(text: string): Record<string, unknown>;
22
+ export type { StringRead };
23
+ export { partialJsonObject, readJsonString };
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Reads JSON text the model is still writing: what is whole so far, and the string it is in the
3
+ * middle of. For previews only; the text once whole is parsed as JSON.
4
+ */
5
+ const ESCAPES = {
6
+ '"': '"',
7
+ '\\': '\\',
8
+ '/': '/',
9
+ b: '\b',
10
+ f: '\f',
11
+ n: '\n',
12
+ r: '\r',
13
+ t: '\t',
14
+ };
15
+ /**
16
+ * The string whose opening quote is at `at`, unescaped as far as `text` goes. An escape cut off at
17
+ * the end is left out rather than shown wrong; an escape JSON does not have reads as its letter.
18
+ */
19
+ function readJsonString(text, at) {
20
+ let out = '';
21
+ let i = at + 1;
22
+ while (i < text.length) {
23
+ const ch = text.charAt(i);
24
+ if (ch === '"')
25
+ return { text: out, end: i + 1 };
26
+ if (ch !== '\\') {
27
+ out += ch;
28
+ i++;
29
+ continue;
30
+ }
31
+ if (i + 1 >= text.length)
32
+ break;
33
+ const code = text.charAt(i + 1);
34
+ if (code === 'u') {
35
+ const hex = text.slice(i + 2, i + 6);
36
+ if (hex.length < 4)
37
+ break;
38
+ if (/^[0-9a-fA-F]{4}$/.test(hex)) {
39
+ out += String.fromCharCode(Number.parseInt(hex, 16));
40
+ i += 6;
41
+ continue;
42
+ }
43
+ }
44
+ out += ESCAPES[code] ?? code;
45
+ i += 2;
46
+ }
47
+ return { text: out };
48
+ }
49
+ function skipSpace(text, i) {
50
+ let at = i;
51
+ while (/\s/.test(text.charAt(at)))
52
+ at++;
53
+ return at;
54
+ }
55
+ /** The JSON value at `at` in `text` and the index past it, or none while `text` ends before it does. */
56
+ function wholeJsonValueAt(text, at) {
57
+ if (text.charAt(at) === '"') {
58
+ const read = readJsonString(text, at);
59
+ return read.end === undefined ? undefined : parsedSlice(text, at, read.end);
60
+ }
61
+ let depth = 0;
62
+ for (let i = at; i < text.length; i++) {
63
+ const ch = text.charAt(i);
64
+ if (ch === '"') {
65
+ const end = readJsonString(text, i).end;
66
+ if (end === undefined)
67
+ return undefined;
68
+ i = end - 1;
69
+ }
70
+ else if (ch === '{' || ch === '[')
71
+ depth++;
72
+ else if (ch === '}' || ch === ']') {
73
+ if (depth === 0)
74
+ return parsedSlice(text, at, i);
75
+ depth--;
76
+ if (depth === 0)
77
+ return parsedSlice(text, at, i + 1);
78
+ }
79
+ else if (ch === ',' && depth === 0)
80
+ return parsedSlice(text, at, i);
81
+ }
82
+ return undefined;
83
+ }
84
+ function parsedSlice(text, from, to) {
85
+ try {
86
+ return { value: JSON.parse(text.slice(from, to)), end: to };
87
+ }
88
+ catch {
89
+ return undefined;
90
+ }
91
+ }
92
+ /**
93
+ * The top-level fields of a JSON object the model is still writing: each field whose value is
94
+ * whole, and the string being written, as far as it goes. A number, object, or array still being
95
+ * written is left out: it is not its value yet.
96
+ */
97
+ function partialJsonObject(text) {
98
+ const fields = {};
99
+ let i = skipSpace(text, 0);
100
+ if (text.charAt(i) !== '{')
101
+ return fields;
102
+ i++;
103
+ for (;;) {
104
+ i = skipSpace(text, i);
105
+ if (text.charAt(i) === ',')
106
+ i = skipSpace(text, i + 1);
107
+ if (text.charAt(i) !== '"')
108
+ return fields;
109
+ const key = readJsonString(text, i);
110
+ if (key.end === undefined)
111
+ return fields;
112
+ i = skipSpace(text, key.end);
113
+ if (text.charAt(i) !== ':')
114
+ return fields;
115
+ i = skipSpace(text, i + 1);
116
+ if (i >= text.length)
117
+ return fields;
118
+ const value = wholeJsonValueAt(text, i);
119
+ if (!value) {
120
+ if (text.charAt(i) === '"')
121
+ fields[key.text] = readJsonString(text, i).text;
122
+ return fields;
123
+ }
124
+ fields[key.text] = value.value;
125
+ i = value.end;
126
+ }
127
+ }
128
+ export { partialJsonObject, readJsonString };
@@ -0,0 +1,2 @@
1
+ /** True for a non-null object that is not an array. */
2
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
@@ -0,0 +1,4 @@
1
+ /** True for a non-null object that is not an array. */
2
+ export function isRecord(value) {
3
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
4
+ }
@@ -0,0 +1,14 @@
1
+ import type { TraceSink } from './trace-sink.js';
2
+ /** True when the value is a trace sink. */
3
+ declare function isTraceSink(value: unknown): value is TraceSink;
4
+ /** Register a trace sink under an id; throws when the id is empty. */
5
+ declare function registerTraceDestination(id: string, destination: TraceSink): void;
6
+ /** The sink registered under the id, or `undefined`. */
7
+ declare function getTraceDestination(id: string): TraceSink | undefined;
8
+ /** The sink registered under the id; throws when there is none. */
9
+ declare function requireTraceDestination(id: string): TraceSink;
10
+ /** The registered destination ids, sorted. */
11
+ declare function listTraceDestinationIds(): string[];
12
+ /** For tests. */
13
+ declare function clearTraceDestinations(): void;
14
+ export { clearTraceDestinations, getTraceDestination, isTraceSink, listTraceDestinationIds, registerTraceDestination, requireTraceDestination, };
@@ -0,0 +1,43 @@
1
+ // invariant: THEOREM does not invent filesystem roots: hosts register a named destination once per process.
2
+ import { TheoremError } from '../guardrails/error.js';
3
+ const destinations = new Map();
4
+ /** True when the value is a trace sink. */
5
+ function isTraceSink(value) {
6
+ return (typeof value === 'object' &&
7
+ value !== null &&
8
+ 'write' in value &&
9
+ typeof value.write === 'function');
10
+ }
11
+ /** Register a trace sink under an id; throws when the id is empty. */
12
+ function registerTraceDestination(id, destination) {
13
+ const key = id.trim();
14
+ if (!key) {
15
+ throw new TheoremError('config', 'registerTraceDestination requires a non-empty id');
16
+ }
17
+ // why: Hosts may call from plain JS: the registry holds only writers.
18
+ if (!isTraceSink(destination)) {
19
+ throw new TheoremError('config', `Trace destination '${key}' must be a TraceSink`);
20
+ }
21
+ destinations.set(key, destination);
22
+ }
23
+ /** The sink registered under the id, or `undefined`. */
24
+ function getTraceDestination(id) {
25
+ return destinations.get(id);
26
+ }
27
+ /** The sink registered under the id; throws when there is none. */
28
+ function requireTraceDestination(id) {
29
+ const found = getTraceDestination(id);
30
+ if (!found) {
31
+ throw new TheoremError('config', `Trace destination '${id}' is not registered`);
32
+ }
33
+ return found;
34
+ }
35
+ /** The registered destination ids, sorted. */
36
+ function listTraceDestinationIds() {
37
+ return [...destinations.keys()].sort();
38
+ }
39
+ /** For tests. */
40
+ function clearTraceDestinations() {
41
+ destinations.clear();
42
+ }
43
+ export { clearTraceDestinations, getTraceDestination, isTraceSink, listTraceDestinationIds, registerTraceDestination, requireTraceDestination, };
@@ -0,0 +1,18 @@
1
+ /**
2
+ * The file trace sink: daily rotating JSONL under a host-chosen directory. Its own entry point, so
3
+ * browser bundles and Workers never pull the filesystem into their module graph.
4
+ *
5
+ * @module
6
+ */
7
+ import "../../_dnt.polyfills.js";
8
+ import type { TraceSink } from './trace-sink.js';
9
+ /** Retention and rotation are not here: they arrive with each write (`TraceWriteContext`) from the profile. */
10
+ export interface JsonlSinkOptions {
11
+ now?: () => number;
12
+ }
13
+ /**
14
+ * Daily rotating JSONL files under an absolute, host-chosen `dir`. Each write removes day files
15
+ * older than the record's retention (`<= 0` keeps every file) and appends to the day's newest file
16
+ * until it reaches the profile's `rotateAfterMiB`, then starts another.
17
+ */
18
+ export declare function jsonlSink(dir: string, options?: JsonlSinkOptions): TraceSink;
@@ -0,0 +1,110 @@
1
+ /**
2
+ * The file trace sink: daily rotating JSONL under a host-chosen directory. Its own entry point, so
3
+ * browser bundles and Workers never pull the filesystem into their module graph.
4
+ *
5
+ * @module
6
+ */
7
+ import "../../_dnt.polyfills.js";
8
+ import { appendFile, mkdir, readdir, rm, stat } from 'node:fs/promises';
9
+ import { cwd } from 'node:process';
10
+ import { TheoremError } from '../guardrails/error.js';
11
+ const HOURS_PER_DAY = 24;
12
+ const MIN_PER_HOUR = 60;
13
+ const SEC_PER_MIN = 60;
14
+ const MS_PER_SEC = 1000;
15
+ const KIB = 1024;
16
+ const OWNER_ONLY_DIR = 0o700;
17
+ const OWNER_ONLY_FILE = 0o600;
18
+ const MIB = KIB * KIB;
19
+ const FILE_PART = /^turns-(\d{4}-\d{2}-\d{2})(?:-(\d+))?\.jsonl$/;
20
+ function dayStamp(ms) {
21
+ return new Date(ms).toISOString().slice(0, 10);
22
+ }
23
+ function fileDay(name) {
24
+ return FILE_PART.exec(name)?.[1];
25
+ }
26
+ /** Remove day files older than `retainForDays`; `<= 0` keeps every file. */
27
+ async function pruneTraces(dir, now, retainForDays) {
28
+ if (retainForDays <= 0) {
29
+ return;
30
+ }
31
+ const retainMs = retainForDays * HOURS_PER_DAY * MIN_PER_HOUR * SEC_PER_MIN * MS_PER_SEC;
32
+ const cutoff = now - retainMs;
33
+ for (const name of await readdir(dir)) {
34
+ const day = fileDay(name);
35
+ if (day && Date.parse(`${day}T00:00:00.000Z`) < cutoff) {
36
+ await rm(`${dir}/${name}`);
37
+ }
38
+ }
39
+ }
40
+ /** The day's newest file while it has room, else a new one stamped `now`. */
41
+ async function pickFile(dir, now, rotateBytes) {
42
+ const day = dayStamp(now);
43
+ const newest = (await readdir(dir))
44
+ .map((name) => ({ name, part: FILE_PART.exec(name) }))
45
+ .filter(({ part }) => part?.[1] === day)
46
+ .map(({ name, part }) => ({ name, stamp: Number(part?.[2] ?? 0) }))
47
+ .reduce((latest, file) => (latest && latest.stamp >= file.stamp ? latest : file), undefined);
48
+ if (!newest)
49
+ return `${dir}/turns-${day}.jsonl`;
50
+ const path = `${dir}/${newest.name}`;
51
+ return (await stat(path)).size < rotateBytes ? path : `${dir}/turns-${day}-${now}.jsonl`;
52
+ }
53
+ /**
54
+ * Daily rotating JSONL files under an absolute, host-chosen `dir`. Each write removes day files
55
+ * older than the record's retention (`<= 0` keeps every file) and appends to the day's newest file
56
+ * until it reaches the profile's `rotateAfterMiB`, then starts another.
57
+ */
58
+ export function jsonlSink(dir, options = {}) {
59
+ const safeDir = validateTraceDir(dir);
60
+ const now = options.now ?? Date.now;
61
+ return {
62
+ write: async (record, context) => {
63
+ const at = now();
64
+ // why: Records hold conversation content: readable by the host's user only.
65
+ await mkdir(safeDir, { recursive: true, mode: OWNER_ONLY_DIR });
66
+ await pruneTraces(safeDir, at, context.retainForDays);
67
+ const path = await pickFile(safeDir, at, context.rotateAfterMiB * MIB);
68
+ await appendFile(path, `${JSON.stringify(record)}\n`, { mode: OWNER_ONLY_FILE });
69
+ },
70
+ };
71
+ }
72
+ function insideDir(path, root) {
73
+ let base = root;
74
+ if (root.endsWith('/')) {
75
+ base = root.slice(0, -1);
76
+ }
77
+ if (path === base) {
78
+ return true;
79
+ }
80
+ return path.startsWith(`${base}/`);
81
+ }
82
+ function normalizeAbsolutePath(path) {
83
+ const trimmed = path.trim();
84
+ if (!trimmed) {
85
+ throw new TheoremError('config', 'trace directory must be non-empty');
86
+ }
87
+ if (!trimmed.startsWith('/')) {
88
+ throw new TheoremError('config', 'trace directory must be absolute');
89
+ }
90
+ const parts = [];
91
+ for (const part of trimmed.split('/')) {
92
+ if (!part || part === '.') {
93
+ continue;
94
+ }
95
+ if (part === '..') {
96
+ parts.pop();
97
+ continue;
98
+ }
99
+ parts.push(part);
100
+ }
101
+ return `/${parts.join('/')}`;
102
+ }
103
+ /** An absolute directory outside the working directory, normalized; throws `config` otherwise. */
104
+ function validateTraceDir(dir) {
105
+ const normalized = normalizeAbsolutePath(dir);
106
+ if (insideDir(normalized, normalizeAbsolutePath(cwd()))) {
107
+ throw new TheoremError('config', 'trace directory must be outside the project checkout');
108
+ }
109
+ return normalized;
110
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Trace sinks, the destination registry, observability policy, the span builder, and the trace
3
+ * catalog. THEOREM owns no database: hosts register destinations or pass a sink into `runTurn`.
4
+ *
5
+ * @module
6
+ */
7
+ import "../../_dnt.polyfills.js";
8
+ export { clearTraceDestinations, getTraceDestination, isTraceSink, listTraceDestinationIds, registerTraceDestination, requireTraceDestination, } from './destinations.js';
9
+ export type { OtlpAnyValue, OtlpKeyValue, OtlpSpan, OtlpTraceRequest } from './otlp.js';
10
+ export { toOtlpJson } from './otlp.js';
11
+ export { resolveTraceWriter } from './policy.js';
12
+ export { resolveObservabilityPolicy } from './resolve-policy.js';
13
+ export { memorySink, noopSink, writeTrace, } from './trace.js';
14
+ export type { TraceAttributeGroup, TraceAttributeMeta, TraceEventMeta, TraceOptionMeta, TraceSpanMeta, TraceSpanType, TraceValueFormat, } from './trace-catalog.js';
15
+ export { TRACE_ATTRIBUTE_GROUPS, TRACE_FIELDS, TRACE_SPAN_TYPES, TRACE_STATUS, traceAttributeMeta, traceCatalogRows, traceEventAttributeMeta, traceEventMeta, traceSpanMeta, } from './trace-catalog.js';
16
+ export type { TraceRecord } from './trace-record.js';
17
+ export { buildRecord, contentOf, inlineContent } from './trace-record.js';
18
+ export { traceRecordSchema } from './trace-schema.js';
19
+ export type { TraceSink, TraceWriteContext } from './trace-sink.js';
20
+ export type { SpanHandle, SpanLinkInput, SpanOptions, TraceAttributes, TraceAttributeValue, TraceBytes, TraceClock, TraceContent, TraceJson, TraceSpan, TraceSpanEvent, TraceSpanKind, TraceSpanLink, TraceSpanStatus, TraceTree, } from './trace-span.js';
21
+ export { readTraceparent, startTrace, traceBytes, traceContent, traceJson, } from './trace-span.js';
22
+ export type { ProfileObservabilitySpec, ResolvedObservabilityPolicy, ResolvedScrubSwitch, ResolvedTraceInclude, ResolvedTraceScrub, ScrubSwitch, TraceIncludeSpec, TraceScrubSpec, } from './types.js';
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Trace sinks, the destination registry, observability policy, the span builder, and the trace
3
+ * catalog. THEOREM owns no database: hosts register destinations or pass a sink into `runTurn`.
4
+ *
5
+ * @module
6
+ */
7
+ import "../../_dnt.polyfills.js";
8
+ export { clearTraceDestinations, getTraceDestination, isTraceSink, listTraceDestinationIds, registerTraceDestination, requireTraceDestination, } from './destinations.js';
9
+ export { toOtlpJson } from './otlp.js';
10
+ export { resolveTraceWriter } from './policy.js';
11
+ export { resolveObservabilityPolicy } from './resolve-policy.js';
12
+ export { memorySink, noopSink, writeTrace, } from './trace.js';
13
+ export { TRACE_ATTRIBUTE_GROUPS, TRACE_FIELDS, TRACE_SPAN_TYPES, TRACE_STATUS, traceAttributeMeta, traceCatalogRows, traceEventAttributeMeta, traceEventMeta, traceSpanMeta, } from './trace-catalog.js';
14
+ export { buildRecord, contentOf, inlineContent } from './trace-record.js';
15
+ export { traceRecordSchema } from './trace-schema.js';
16
+ export { readTraceparent, startTrace, traceBytes, traceContent, traceJson, } from './trace-span.js';
@@ -0,0 +1,11 @@
1
+ /**
2
+ * OpenInference attributes for Phoenix, whose message views, reasoning tokens, and cost read only
3
+ * OpenInference names; they are copied beside the semconv names so `toOtlpJson` stays neutral.
4
+ *
5
+ * @module
6
+ */
7
+ import "../../_dnt.polyfills.js";
8
+ import { type TraceRecord } from './trace-record.js';
9
+ /** Pure: input records are not changed. Export with `toOtlpJson(withOpenInference(records))`. */
10
+ declare function withOpenInference(records: readonly TraceRecord[]): TraceRecord[];
11
+ export { withOpenInference };