@theoremjs/agents 0.0.0-stage → 0.3.0

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 (514) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1264 -2
  3. package/esm/_dnt.polyfills.d.ts +66 -0
  4. package/esm/_dnt.polyfills.js +51 -0
  5. package/esm/mod.d.ts +65 -0
  6. package/esm/mod.js +42 -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 +458 -0
  12. package/esm/src/cli/commands/egress-compile.d.ts +17 -0
  13. package/esm/src/cli/commands/egress-compile.js +25 -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 +202 -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 +25 -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 +72 -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 +4 -0
  35. package/esm/src/evals/attachments.js +53 -0
  36. package/esm/src/evals/breakdown.d.ts +28 -0
  37. package/esm/src/evals/breakdown.js +68 -0
  38. package/esm/src/evals/graders/answer.d.ts +13 -0
  39. package/esm/src/evals/graders/answer.js +133 -0
  40. package/esm/src/evals/graders/code.d.ts +64 -0
  41. package/esm/src/evals/graders/code.js +205 -0
  42. package/esm/src/evals/graders/judge.d.ts +20 -0
  43. package/esm/src/evals/graders/judge.js +365 -0
  44. package/esm/src/evals/graders/latency.d.ts +5 -0
  45. package/esm/src/evals/graders/latency.js +81 -0
  46. package/esm/src/evals/graders/live.d.ts +11 -0
  47. package/esm/src/evals/graders/live.js +40 -0
  48. package/esm/src/evals/graders/media.d.ts +18 -0
  49. package/esm/src/evals/graders/media.js +92 -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 +17 -0
  53. package/esm/src/evals/graders/transcript.js +200 -0
  54. package/esm/src/evals/mod.d.ts +42 -0
  55. package/esm/src/evals/mod.js +30 -0
  56. package/esm/src/evals/record.d.ts +35 -0
  57. package/esm/src/evals/record.js +105 -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 +118 -0
  67. package/esm/src/evals/run.js +452 -0
  68. package/esm/src/evals/suite.d.ts +19 -0
  69. package/esm/src/evals/suite.js +92 -0
  70. package/esm/src/evals/summary.d.ts +32 -0
  71. package/esm/src/evals/summary.js +30 -0
  72. package/esm/src/evals/trial.d.ts +27 -0
  73. package/esm/src/evals/trial.js +158 -0
  74. package/esm/src/evals/types.d.ts +260 -0
  75. package/esm/src/evals/types.js +126 -0
  76. package/esm/src/evals/verdict.d.ts +18 -0
  77. package/esm/src/evals/verdict.js +45 -0
  78. package/esm/src/guardrails/canary-gate.d.ts +21 -0
  79. package/esm/src/guardrails/canary-gate.js +40 -0
  80. package/esm/src/guardrails/canary.d.ts +112 -0
  81. package/esm/src/guardrails/canary.js +901 -0
  82. package/esm/src/guardrails/compile-egress.d.ts +11 -0
  83. package/esm/src/guardrails/compile-egress.js +11 -0
  84. package/esm/src/guardrails/corpus/canary-egress-attacks.d.ts +22 -0
  85. package/esm/src/guardrails/corpus/canary-egress-attacks.js +303 -0
  86. package/esm/src/guardrails/corpus/fuzz-inbound.d.ts +5 -0
  87. package/esm/src/guardrails/corpus/fuzz-inbound.js +202 -0
  88. package/esm/src/guardrails/corpus/inbound-payloads.d.ts +3 -0
  89. package/esm/src/guardrails/corpus/inbound-payloads.js +118 -0
  90. package/esm/src/guardrails/corpus/live-attacks.d.ts +13 -0
  91. package/esm/src/guardrails/corpus/live-attacks.js +224 -0
  92. package/esm/src/guardrails/corpus/mod.d.ts +7 -0
  93. package/esm/src/guardrails/corpus/mod.js +4 -0
  94. package/esm/src/guardrails/corpus/secrets.d.ts +12 -0
  95. package/esm/src/guardrails/corpus/secrets.js +16 -0
  96. package/esm/src/guardrails/corpus/strings.d.ts +23 -0
  97. package/esm/src/guardrails/corpus/strings.js +29 -0
  98. package/esm/src/guardrails/corpus/types.d.ts +32 -0
  99. package/esm/src/guardrails/corpus/types.js +1 -0
  100. package/esm/src/guardrails/egress-automata.d.ts +14 -0
  101. package/esm/src/guardrails/egress-automata.js +6059 -0
  102. package/esm/src/guardrails/egress-compiler.d.ts +33 -0
  103. package/esm/src/guardrails/egress-compiler.js +237 -0
  104. package/esm/src/guardrails/egress-patterns.d.ts +24 -0
  105. package/esm/src/guardrails/egress-patterns.js +32 -0
  106. package/esm/src/guardrails/egress-policy.d.ts +27 -0
  107. package/esm/src/guardrails/egress-policy.js +76 -0
  108. package/esm/src/guardrails/egress-rules.d.ts +54 -0
  109. package/esm/src/guardrails/egress-rules.js +49 -0
  110. package/esm/src/guardrails/egress-stream.d.ts +105 -0
  111. package/esm/src/guardrails/egress-stream.js +645 -0
  112. package/esm/src/guardrails/egress-urls.d.ts +83 -0
  113. package/esm/src/guardrails/egress-urls.js +917 -0
  114. package/esm/src/guardrails/egress.d.ts +106 -0
  115. package/esm/src/guardrails/egress.js +374 -0
  116. package/esm/src/guardrails/error.d.ts +26 -0
  117. package/esm/src/guardrails/error.js +91 -0
  118. package/esm/src/guardrails/event-schemas.d.ts +57 -0
  119. package/esm/src/guardrails/event-schemas.js +41 -0
  120. package/esm/src/guardrails/events.d.ts +9 -0
  121. package/esm/src/guardrails/events.js +42 -0
  122. package/esm/src/guardrails/hits.d.ts +8 -0
  123. package/esm/src/guardrails/hits.js +19 -0
  124. package/esm/src/guardrails/injection-patterns.d.ts +15 -0
  125. package/esm/src/guardrails/injection-patterns.js +94 -0
  126. package/esm/src/guardrails/injection.d.ts +14 -0
  127. package/esm/src/guardrails/injection.js +237 -0
  128. package/esm/src/guardrails/lexicon.d.ts +30 -0
  129. package/esm/src/guardrails/lexicon.js +478 -0
  130. package/esm/src/guardrails/live-outbound-gate.d.ts +54 -0
  131. package/esm/src/guardrails/live-outbound-gate.js +305 -0
  132. package/esm/src/guardrails/mod.d.ts +46 -0
  133. package/esm/src/guardrails/mod.js +29 -0
  134. package/esm/src/guardrails/network.d.ts +42 -0
  135. package/esm/src/guardrails/network.js +328 -0
  136. package/esm/src/guardrails/normalize.d.ts +6 -0
  137. package/esm/src/guardrails/normalize.js +132 -0
  138. package/esm/src/guardrails/policy.d.ts +19 -0
  139. package/esm/src/guardrails/policy.js +50 -0
  140. package/esm/src/guardrails/progressive-yield.d.ts +69 -0
  141. package/esm/src/guardrails/progressive-yield.js +237 -0
  142. package/esm/src/guardrails/prompt-echo.d.ts +38 -0
  143. package/esm/src/guardrails/prompt-echo.js +225 -0
  144. package/esm/src/guardrails/quota.d.ts +20 -0
  145. package/esm/src/guardrails/quota.js +80 -0
  146. package/esm/src/guardrails/rules.d.ts +56 -0
  147. package/esm/src/guardrails/rules.js +54 -0
  148. package/esm/src/guardrails/sanitize.d.ts +23 -0
  149. package/esm/src/guardrails/sanitize.js +184 -0
  150. package/esm/src/guardrails/sensitive.d.ts +29 -0
  151. package/esm/src/guardrails/sensitive.js +113 -0
  152. package/esm/src/guardrails/serialize.d.ts +14 -0
  153. package/esm/src/guardrails/serialize.js +37 -0
  154. package/esm/src/guardrails/testing.d.ts +9 -0
  155. package/esm/src/guardrails/testing.js +8 -0
  156. package/esm/src/guardrails/theorem-error.d.ts +18 -0
  157. package/esm/src/guardrails/theorem-error.js +53 -0
  158. package/esm/src/guardrails/thought-guard.d.ts +55 -0
  159. package/esm/src/guardrails/thought-guard.js +464 -0
  160. package/esm/src/guardrails/tool-directives.d.ts +19 -0
  161. package/esm/src/guardrails/tool-directives.js +109 -0
  162. package/esm/src/guardrails/tool-result.d.ts +61 -0
  163. package/esm/src/guardrails/tool-result.js +248 -0
  164. package/esm/src/guardrails/types.d.ts +242 -0
  165. package/esm/src/guardrails/types.js +54 -0
  166. package/esm/src/host/client-turn.d.ts +9 -0
  167. package/esm/src/host/client-turn.js +38 -0
  168. package/esm/src/host/mint-trace.d.ts +28 -0
  169. package/esm/src/host/mint-trace.js +59 -0
  170. package/esm/src/host/mod.d.ts +13 -0
  171. package/esm/src/host/mod.js +11 -0
  172. package/esm/src/host/readStreamingJsonStringField.d.ts +2 -0
  173. package/esm/src/host/readStreamingJsonStringField.js +68 -0
  174. package/esm/src/host/reply.d.ts +7 -0
  175. package/esm/src/host/reply.js +35 -0
  176. package/esm/src/interface/blocks.d.ts +8 -0
  177. package/esm/src/interface/blocks.js +213 -0
  178. package/esm/src/interface/composer-actions.d.ts +20 -0
  179. package/esm/src/interface/composer-actions.js +31 -0
  180. package/esm/src/interface/draft.d.ts +14 -0
  181. package/esm/src/interface/draft.js +28 -0
  182. package/esm/src/interface/from-profile.d.ts +12 -0
  183. package/esm/src/interface/from-profile.js +144 -0
  184. package/esm/src/interface/history.d.ts +40 -0
  185. package/esm/src/interface/history.js +269 -0
  186. package/esm/src/interface/inputs.d.ts +10 -0
  187. package/esm/src/interface/inputs.js +64 -0
  188. package/esm/src/interface/mod.d.ts +31 -0
  189. package/esm/src/interface/mod.js +21 -0
  190. package/esm/src/interface/models.d.ts +19 -0
  191. package/esm/src/interface/models.js +45 -0
  192. package/esm/src/interface/pending.d.ts +48 -0
  193. package/esm/src/interface/pending.js +146 -0
  194. package/esm/src/interface/profile-interface.d.ts +4 -0
  195. package/esm/src/interface/profile-interface.js +223 -0
  196. package/esm/src/interface/session.d.ts +64 -0
  197. package/esm/src/interface/session.js +121 -0
  198. package/esm/src/interface/tool-calls.d.ts +20 -0
  199. package/esm/src/interface/tool-calls.js +73 -0
  200. package/esm/src/interface/tool-invoke.d.ts +4 -0
  201. package/esm/src/interface/tool-invoke.js +20 -0
  202. package/esm/src/interface/tool-media.d.ts +9 -0
  203. package/esm/src/interface/tool-media.js +112 -0
  204. package/esm/src/interface/types.d.ts +213 -0
  205. package/esm/src/interface/types.js +4 -0
  206. package/esm/src/kernel/auth/credential-source.d.ts +23 -0
  207. package/esm/src/kernel/auth/credential-source.js +11 -0
  208. package/esm/src/kernel/auth/crypto.d.ts +51 -0
  209. package/esm/src/kernel/auth/crypto.js +161 -0
  210. package/esm/src/kernel/auth/mod.d.ts +5 -0
  211. package/esm/src/kernel/auth/mod.js +5 -0
  212. package/esm/src/kernel/auth/oauth.d.ts +17 -0
  213. package/esm/src/kernel/auth/oauth.js +438 -0
  214. package/esm/src/kernel/auth/scope-refusal.d.ts +9 -0
  215. package/esm/src/kernel/auth/scope-refusal.js +8 -0
  216. package/esm/src/kernel/auth/typed-secret.d.ts +13 -0
  217. package/esm/src/kernel/auth/typed-secret.js +23 -0
  218. package/esm/src/kernel/auth/types.d.ts +139 -0
  219. package/esm/src/kernel/auth/types.js +1 -0
  220. package/esm/src/kernel/default-scope.d.ts +34 -0
  221. package/esm/src/kernel/default-scope.js +72 -0
  222. package/esm/src/kernel/engine/compaction.d.ts +70 -0
  223. package/esm/src/kernel/engine/compaction.js +202 -0
  224. package/esm/src/kernel/engine/decision.d.ts +41 -0
  225. package/esm/src/kernel/engine/decision.js +412 -0
  226. package/esm/src/kernel/engine/hash.d.ts +6 -0
  227. package/esm/src/kernel/engine/hash.js +22 -0
  228. package/esm/src/kernel/engine/live-inbound.d.ts +9 -0
  229. package/esm/src/kernel/engine/live-inbound.js +19 -0
  230. package/esm/src/kernel/engine/live-ingress.d.ts +9 -0
  231. package/esm/src/kernel/engine/live-ingress.js +37 -0
  232. package/esm/src/kernel/engine/media-probe/audio.d.ts +7 -0
  233. package/esm/src/kernel/engine/media-probe/audio.js +342 -0
  234. package/esm/src/kernel/engine/media-probe/bytes.d.ts +6 -0
  235. package/esm/src/kernel/engine/media-probe/bytes.js +26 -0
  236. package/esm/src/kernel/engine/media-probe/image.d.ts +5 -0
  237. package/esm/src/kernel/engine/media-probe/image.js +171 -0
  238. package/esm/src/kernel/engine/media-probe/iso-bmff.d.ts +19 -0
  239. package/esm/src/kernel/engine/media-probe/iso-bmff.js +48 -0
  240. package/esm/src/kernel/engine/media-probe/matroska.d.ts +35 -0
  241. package/esm/src/kernel/engine/media-probe/matroska.js +226 -0
  242. package/esm/src/kernel/engine/media-probe/mp4.d.ts +22 -0
  243. package/esm/src/kernel/engine/media-probe/mp4.js +279 -0
  244. package/esm/src/kernel/engine/media-probe/opus.d.ts +4 -0
  245. package/esm/src/kernel/engine/media-probe/opus.js +23 -0
  246. package/esm/src/kernel/engine/media-probe/pdf.d.ts +5 -0
  247. package/esm/src/kernel/engine/media-probe/pdf.js +117 -0
  248. package/esm/src/kernel/engine/media-probe/video.d.ts +15 -0
  249. package/esm/src/kernel/engine/media-probe/video.js +49 -0
  250. package/esm/src/kernel/engine/record.d.ts +3 -0
  251. package/esm/src/kernel/engine/record.js +11 -0
  252. package/esm/src/kernel/engine/repair.d.ts +7 -0
  253. package/esm/src/kernel/engine/repair.js +36 -0
  254. package/esm/src/kernel/engine/runner/gates.d.ts +5 -0
  255. package/esm/src/kernel/engine/runner/gates.js +322 -0
  256. package/esm/src/kernel/engine/runner/mod.d.ts +15 -0
  257. package/esm/src/kernel/engine/runner/mod.js +574 -0
  258. package/esm/src/kernel/engine/runner/schema-validation.d.ts +14 -0
  259. package/esm/src/kernel/engine/runner/schema-validation.js +105 -0
  260. package/esm/src/kernel/engine/runner/stages.d.ts +28 -0
  261. package/esm/src/kernel/engine/runner/stages.js +48 -0
  262. package/esm/src/kernel/engine/runner/state.d.ts +76 -0
  263. package/esm/src/kernel/engine/runner/state.js +40 -0
  264. package/esm/src/kernel/engine/runner/steps.d.ts +14 -0
  265. package/esm/src/kernel/engine/runner/steps.js +360 -0
  266. package/esm/src/kernel/engine/runner/stream.d.ts +40 -0
  267. package/esm/src/kernel/engine/runner/stream.js +225 -0
  268. package/esm/src/kernel/engine/runner/usage.d.ts +45 -0
  269. package/esm/src/kernel/engine/runner/usage.js +150 -0
  270. package/esm/src/kernel/engine/session/mod.d.ts +31 -0
  271. package/esm/src/kernel/engine/session/mod.js +951 -0
  272. package/esm/src/kernel/engine/session/session-trace.d.ts +115 -0
  273. package/esm/src/kernel/engine/session/session-trace.js +489 -0
  274. package/esm/src/kernel/engine/token-estimate.d.ts +77 -0
  275. package/esm/src/kernel/engine/token-estimate.js +218 -0
  276. package/esm/src/kernel/engine/tool-trace.d.ts +58 -0
  277. package/esm/src/kernel/engine/tool-trace.js +131 -0
  278. package/esm/src/kernel/engine/tree.d.ts +2 -0
  279. package/esm/src/kernel/engine/tree.js +17 -0
  280. package/esm/src/kernel/engine/turn-trace.d.ts +118 -0
  281. package/esm/src/kernel/engine/turn-trace.js +863 -0
  282. package/esm/src/kernel/engine/usage.d.ts +30 -0
  283. package/esm/src/kernel/engine/usage.js +134 -0
  284. package/esm/src/kernel/interaction-parts.d.ts +10 -0
  285. package/esm/src/kernel/interaction-parts.js +22 -0
  286. package/esm/src/kernel/mod.d.ts +47 -0
  287. package/esm/src/kernel/mod.js +30 -0
  288. package/esm/src/kernel/profile-graph.d.ts +140 -0
  289. package/esm/src/kernel/profile-graph.js +151 -0
  290. package/esm/src/kernel/profile-presence.d.ts +9 -0
  291. package/esm/src/kernel/profile-presence.js +143 -0
  292. package/esm/src/kernel/profile-scope.d.ts +36 -0
  293. package/esm/src/kernel/profile-scope.js +262 -0
  294. package/esm/src/kernel/registry/attachments.d.ts +35 -0
  295. package/esm/src/kernel/registry/attachments.js +211 -0
  296. package/esm/src/kernel/registry/catalog.d.ts +19 -0
  297. package/esm/src/kernel/registry/catalog.js +78 -0
  298. package/esm/src/kernel/registry/ingress.d.ts +8 -0
  299. package/esm/src/kernel/registry/ingress.js +134 -0
  300. package/esm/src/kernel/registry/kernel-registry.d.ts +12 -0
  301. package/esm/src/kernel/registry/kernel-registry.js +8 -0
  302. package/esm/src/kernel/registry/profile-outputs.d.ts +3 -0
  303. package/esm/src/kernel/registry/profile-outputs.js +7 -0
  304. package/esm/src/kernel/registry/profiles.d.ts +92 -0
  305. package/esm/src/kernel/registry/profiles.js +698 -0
  306. package/esm/src/kernel/registry/provider-request.d.ts +6 -0
  307. package/esm/src/kernel/registry/provider-request.js +42 -0
  308. package/esm/src/kernel/registry/resolve.d.ts +14 -0
  309. package/esm/src/kernel/registry/resolve.js +237 -0
  310. package/esm/src/kernel/registry/schemas.d.ts +9 -0
  311. package/esm/src/kernel/registry/schemas.js +25 -0
  312. package/esm/src/kernel/registry/sole-model.d.ts +2 -0
  313. package/esm/src/kernel/registry/sole-model.js +4 -0
  314. package/esm/src/kernel/registry/system-prompt.d.ts +8 -0
  315. package/esm/src/kernel/registry/system-prompt.js +33 -0
  316. package/esm/src/kernel/registry/system-role.d.ts +3 -0
  317. package/esm/src/kernel/registry/system-role.js +9 -0
  318. package/esm/src/kernel/registry/vault.d.ts +13 -0
  319. package/esm/src/kernel/registry/vault.js +14 -0
  320. package/esm/src/kernel/schema.d.ts +172 -0
  321. package/esm/src/kernel/schema.js +653 -0
  322. package/esm/src/kernel/scope.d.ts +22 -0
  323. package/esm/src/kernel/scope.js +25 -0
  324. package/esm/src/kernel/stages.d.ts +141 -0
  325. package/esm/src/kernel/stages.js +388 -0
  326. package/esm/src/kernel/stop.d.ts +93 -0
  327. package/esm/src/kernel/stop.js +125 -0
  328. package/esm/src/kernel/system-parts.d.ts +26 -0
  329. package/esm/src/kernel/system-parts.js +98 -0
  330. package/esm/src/kernel/tools/activity-label.d.ts +16 -0
  331. package/esm/src/kernel/tools/activity-label.js +209 -0
  332. package/esm/src/kernel/tools/events.d.ts +51 -0
  333. package/esm/src/kernel/tools/events.js +149 -0
  334. package/esm/src/kernel/tools/execute.d.ts +64 -0
  335. package/esm/src/kernel/tools/execute.js +801 -0
  336. package/esm/src/kernel/tools/gate-answer.d.ts +50 -0
  337. package/esm/src/kernel/tools/gate-answer.js +54 -0
  338. package/esm/src/kernel/tools/harness.d.ts +16 -0
  339. package/esm/src/kernel/tools/harness.js +42 -0
  340. package/esm/src/kernel/tools/invoke.d.ts +10 -0
  341. package/esm/src/kernel/tools/invoke.js +129 -0
  342. package/esm/src/kernel/tools/mcp-sessions.d.ts +20 -0
  343. package/esm/src/kernel/tools/mcp-sessions.js +64 -0
  344. package/esm/src/kernel/tools/mod.d.ts +9 -0
  345. package/esm/src/kernel/tools/mod.js +6 -0
  346. package/esm/src/kernel/tools/model-text.d.ts +11 -0
  347. package/esm/src/kernel/tools/model-text.js +25 -0
  348. package/esm/src/kernel/tools/permission.d.ts +6 -0
  349. package/esm/src/kernel/tools/permission.js +38 -0
  350. package/esm/src/kernel/tools/project.d.ts +8 -0
  351. package/esm/src/kernel/tools/project.js +25 -0
  352. package/esm/src/kernel/tools/registry.d.ts +20 -0
  353. package/esm/src/kernel/tools/registry.js +84 -0
  354. package/esm/src/kernel/tools/remote.d.ts +110 -0
  355. package/esm/src/kernel/tools/remote.js +998 -0
  356. package/esm/src/kernel/tools/resolve.d.ts +28 -0
  357. package/esm/src/kernel/tools/resolve.js +259 -0
  358. package/esm/src/kernel/tools/schema.d.ts +10 -0
  359. package/esm/src/kernel/tools/schema.js +174 -0
  360. package/esm/src/kernel/tools/signed-in-fetch.d.ts +18 -0
  361. package/esm/src/kernel/tools/signed-in-fetch.js +45 -0
  362. package/esm/src/kernel/tools/stage-run.d.ts +93 -0
  363. package/esm/src/kernel/tools/stage-run.js +140 -0
  364. package/esm/src/kernel/tools/types.d.ts +287 -0
  365. package/esm/src/kernel/tools/types.js +1 -0
  366. package/esm/src/kernel/turn-events.d.ts +599 -0
  367. package/esm/src/kernel/turn-events.js +425 -0
  368. package/esm/src/kernel/types.d.ts +884 -0
  369. package/esm/src/kernel/types.js +1 -0
  370. package/esm/src/kernel/util/base64.d.ts +2 -0
  371. package/esm/src/kernel/util/base64.js +13 -0
  372. package/esm/src/kernel/util/exact-type.d.ts +31 -0
  373. package/esm/src/kernel/util/exact-type.js +1 -0
  374. package/esm/src/kernel/util/find-last.d.ts +3 -0
  375. package/esm/src/kernel/util/find-last.js +9 -0
  376. package/esm/src/kernel/util/mime.d.ts +2 -0
  377. package/esm/src/kernel/util/mime.js +4 -0
  378. package/esm/src/kernel/util/record.d.ts +1 -0
  379. package/esm/src/kernel/util/record.js +3 -0
  380. package/esm/src/observability/destinations.d.ts +9 -0
  381. package/esm/src/observability/destinations.js +38 -0
  382. package/esm/src/observability/jsonl.d.ts +18 -0
  383. package/esm/src/observability/jsonl.js +117 -0
  384. package/esm/src/observability/mod.d.ts +22 -0
  385. package/esm/src/observability/mod.js +16 -0
  386. package/esm/src/observability/openinference.d.ts +11 -0
  387. package/esm/src/observability/openinference.js +205 -0
  388. package/esm/src/observability/otlp.d.ts +68 -0
  389. package/esm/src/observability/otlp.js +98 -0
  390. package/esm/src/observability/phoenix.d.ts +29 -0
  391. package/esm/src/observability/phoenix.js +71 -0
  392. package/esm/src/observability/policy.d.ts +14 -0
  393. package/esm/src/observability/policy.js +69 -0
  394. package/esm/src/observability/resolve-policy.d.ts +8 -0
  395. package/esm/src/observability/resolve-policy.js +58 -0
  396. package/esm/src/observability/spans.d.ts +16 -0
  397. package/esm/src/observability/spans.js +56 -0
  398. package/esm/src/observability/trace-catalog.d.ts +111 -0
  399. package/esm/src/observability/trace-catalog.js +865 -0
  400. package/esm/src/observability/trace-record.d.ts +23 -0
  401. package/esm/src/observability/trace-record.js +223 -0
  402. package/esm/src/observability/trace-schema.d.ts +54 -0
  403. package/esm/src/observability/trace-schema.js +59 -0
  404. package/esm/src/observability/trace-sink.d.ts +13 -0
  405. package/esm/src/observability/trace-sink.js +3 -0
  406. package/esm/src/observability/trace-span.d.ts +92 -0
  407. package/esm/src/observability/trace-span.js +199 -0
  408. package/esm/src/observability/trace.d.ts +11 -0
  409. package/esm/src/observability/trace.js +35 -0
  410. package/esm/src/observability/types.d.ts +85 -0
  411. package/esm/src/observability/types.js +3 -0
  412. package/esm/src/presets/google/speech-voices.d.ts +8 -0
  413. package/esm/src/presets/google/speech-voices.js +38 -0
  414. package/esm/src/presets/google-limits.d.ts +12 -0
  415. package/esm/src/presets/google-limits.js +18 -0
  416. package/esm/src/presets/google.d.ts +104 -0
  417. package/esm/src/presets/google.js +188 -0
  418. package/esm/src/presets/mod.d.ts +10 -0
  419. package/esm/src/presets/mod.js +9 -0
  420. package/esm/src/presets/openrouter.d.ts +13 -0
  421. package/esm/src/presets/openrouter.js +13 -0
  422. package/esm/src/presets/typesafe.d.ts +2 -0
  423. package/esm/src/presets/typesafe.js +2 -0
  424. package/esm/src/providers/create-provider.d.ts +21 -0
  425. package/esm/src/providers/create-provider.js +90 -0
  426. package/esm/src/providers/decision/usage.d.ts +3 -0
  427. package/esm/src/providers/decision/usage.js +25 -0
  428. package/esm/src/providers/google/api-error.d.ts +8 -0
  429. package/esm/src/providers/google/api-error.js +123 -0
  430. package/esm/src/providers/google/grounding.d.ts +5 -0
  431. package/esm/src/providers/google/grounding.js +226 -0
  432. package/esm/src/providers/google/interactions/framing.d.ts +15 -0
  433. package/esm/src/providers/google/interactions/framing.js +263 -0
  434. package/esm/src/providers/google/interactions/mod.d.ts +2 -0
  435. package/esm/src/providers/google/interactions/mod.js +2 -0
  436. package/esm/src/providers/google/interactions/steps.d.ts +12 -0
  437. package/esm/src/providers/google/interactions/steps.js +200 -0
  438. package/esm/src/providers/google/interactions/stream.d.ts +24 -0
  439. package/esm/src/providers/google/interactions/stream.js +297 -0
  440. package/esm/src/providers/google/keys.d.ts +20 -0
  441. package/esm/src/providers/google/keys.js +87 -0
  442. package/esm/src/providers/google/live/framing.d.ts +51 -0
  443. package/esm/src/providers/google/live/framing.js +597 -0
  444. package/esm/src/providers/google/live/mod.d.ts +7 -0
  445. package/esm/src/providers/google/live/mod.js +7 -0
  446. package/esm/src/providers/google/live/openapi-schema.d.ts +1 -0
  447. package/esm/src/providers/google/live/openapi-schema.js +42 -0
  448. package/esm/src/providers/google/live/session.d.ts +14 -0
  449. package/esm/src/providers/google/live/session.js +150 -0
  450. package/esm/src/providers/google/live/stream.d.ts +51 -0
  451. package/esm/src/providers/google/live/stream.js +263 -0
  452. package/esm/src/providers/google/thinking.d.ts +3 -0
  453. package/esm/src/providers/google/thinking.js +8 -0
  454. package/esm/src/providers/google/urls.d.ts +6 -0
  455. package/esm/src/providers/google/urls.js +6 -0
  456. package/esm/src/providers/google/usage.d.ts +7 -0
  457. package/esm/src/providers/google/usage.js +49 -0
  458. package/esm/src/providers/local/local.d.ts +12 -0
  459. package/esm/src/providers/local/local.js +186 -0
  460. package/esm/src/providers/local/mod.d.ts +8 -0
  461. package/esm/src/providers/local/mod.js +8 -0
  462. package/esm/src/providers/mod.d.ts +11 -0
  463. package/esm/src/providers/mod.js +7 -0
  464. package/esm/src/providers/openrouter/cache-control.d.ts +5 -0
  465. package/esm/src/providers/openrouter/cache-control.js +4 -0
  466. package/esm/src/providers/openrouter/chat.d.ts +64 -0
  467. package/esm/src/providers/openrouter/chat.js +490 -0
  468. package/esm/src/providers/openrouter/image.d.ts +24 -0
  469. package/esm/src/providers/openrouter/image.js +187 -0
  470. package/esm/src/providers/openrouter/openai/compat.d.ts +19 -0
  471. package/esm/src/providers/openrouter/openai/compat.js +162 -0
  472. package/esm/src/providers/openrouter/openai/image-payload.d.ts +9 -0
  473. package/esm/src/providers/openrouter/openai/image-payload.js +115 -0
  474. package/esm/src/providers/openrouter/openai/sdk-messages.d.ts +10 -0
  475. package/esm/src/providers/openrouter/openai/sdk-messages.js +99 -0
  476. package/esm/src/providers/openrouter/openai/usage.d.ts +8 -0
  477. package/esm/src/providers/openrouter/openai/usage.js +56 -0
  478. package/esm/src/providers/openrouter/resolve-api-key.d.ts +3 -0
  479. package/esm/src/providers/openrouter/resolve-api-key.js +8 -0
  480. package/esm/src/providers/openrouter/speech.d.ts +18 -0
  481. package/esm/src/providers/openrouter/speech.js +109 -0
  482. package/esm/src/providers/probe.d.ts +5 -0
  483. package/esm/src/providers/probe.js +15 -0
  484. package/esm/src/providers/shared/builtin-wire.d.ts +4 -0
  485. package/esm/src/providers/shared/builtin-wire.js +9 -0
  486. package/esm/src/providers/shared/pcm.d.ts +14 -0
  487. package/esm/src/providers/shared/pcm.js +78 -0
  488. package/esm/src/providers/shared/response-identity.d.ts +11 -0
  489. package/esm/src/providers/shared/response-identity.js +12 -0
  490. package/esm/src/providers/shared/sse.d.ts +10 -0
  491. package/esm/src/providers/shared/sse.js +79 -0
  492. package/esm/src/providers/shared/structured-output.d.ts +4 -0
  493. package/esm/src/providers/shared/structured-output.js +11 -0
  494. package/esm/src/providers/shared/tool-args.d.ts +25 -0
  495. package/esm/src/providers/shared/tool-args.js +84 -0
  496. package/esm/src/providers/shared/upstream-tap.d.ts +8 -0
  497. package/esm/src/providers/shared/upstream-tap.js +85 -0
  498. package/esm/src/providers/shared/upstream-tape.d.ts +6 -0
  499. package/esm/src/providers/shared/upstream-tape.js +88 -0
  500. package/esm/src/providers/shared/vault.d.ts +13 -0
  501. package/esm/src/providers/shared/vault.js +41 -0
  502. package/esm/src/providers/types.d.ts +19 -0
  503. package/esm/src/providers/types.js +1 -0
  504. package/esm/src/surface/formats.d.ts +28 -0
  505. package/esm/src/surface/formats.js +139 -0
  506. package/esm/src/surface/mod.d.ts +14 -0
  507. package/esm/src/surface/mod.js +10 -0
  508. package/esm/src/surface/runtime.d.ts +40 -0
  509. package/esm/src/surface/runtime.js +439 -0
  510. package/esm/src/surface/tools.d.ts +15 -0
  511. package/esm/src/surface/tools.js +80 -0
  512. package/esm/src/surface/types.d.ts +104 -0
  513. package/esm/src/surface/types.js +4 -0
  514. package/package.json +108 -4
@@ -0,0 +1,41 @@
1
+ // Imports nothing from `src/kernel/` but the dependency-free `Equals`: `src/kernel/turn-events.ts` imports these.
2
+ import { z } from 'zod';
3
+ import { LEXICON_KEYS } from './lexicon.js';
4
+ import { ERROR_KINDS } from './theorem-error.js';
5
+ import { GUARDRAIL_ACTIONS, GUARDRAIL_STAGES, SEVERITIES, TOOL_ORIGINS, TRUST_LEVELS, } from './types.js';
6
+ const errorKind = z.enum(ERROR_KINDS);
7
+ true;
8
+ export const errorKindSchema = errorKind;
9
+ const errorCopy = z.object({
10
+ key: z.enum(LEXICON_KEYS),
11
+ params: z.record(z.string(), z.union([z.string(), z.number()])).optional(),
12
+ });
13
+ true;
14
+ const errorCopies = z.union([errorCopy, z.array(errorCopy).readonly()]);
15
+ true;
16
+ export const errorCopiesSchema = errorCopies;
17
+ const provenance = z.object({
18
+ origin: z.enum(TOOL_ORIGINS),
19
+ tool: z.string(),
20
+ depth: z.number(),
21
+ });
22
+ true;
23
+ const guardrailHit = z.object({
24
+ rule: z.string(),
25
+ severity: z.enum(SEVERITIES),
26
+ span: z.object({ start: z.number(), end: z.number() }).optional(),
27
+ match: z.string().optional(),
28
+ label: z.string().optional(),
29
+ doc: z.string().optional(),
30
+ });
31
+ true;
32
+ const guardrailEvent = z.object({
33
+ stage: z.enum(GUARDRAIL_STAGES),
34
+ trust: z.enum(TRUST_LEVELS),
35
+ action: z.enum(GUARDRAIL_ACTIONS),
36
+ hits: z.array(guardrailHit),
37
+ provenance: provenance.optional(),
38
+ errorInternal: z.string().optional(),
39
+ });
40
+ true;
41
+ export const guardrailEventSchema = guardrailEvent;
@@ -0,0 +1,9 @@
1
+ import type { TurnEvent, TurnEventOf } from '../kernel/turn-events.js';
2
+ import type { GuardrailAction, GuardrailEvent, GuardrailHit, GuardrailStage, Provenance, TrustLevel, Verdict } from './types.js';
3
+ declare function guardrailTurnEvent(guardrail: GuardrailEvent): TurnEventOf<'guardrail'>;
4
+ /** `allow` yields nothing; `flag`, `redact` and `block` all emit so hosts and traces can count hits. */
5
+ declare function guardrailFromVerdict(stage: GuardrailStage, trust: TrustLevel, verdict: Verdict, provenance?: Provenance): TurnEventOf<'guardrail'> | undefined;
6
+ declare function guardrailFromHits(stage: GuardrailStage, trust: TrustLevel, hits: GuardrailHit[], action?: GuardrailAction, provenance?: Provenance): TurnEventOf<'guardrail'> | undefined;
7
+ declare function projectGuardrailTurnEvent(event: TurnEventOf<'guardrail'>, includeMatch: boolean): TurnEventOf<'guardrail'>;
8
+ declare function projectGuardrailTurnEvent(event: TurnEvent, includeMatch: boolean): TurnEvent;
9
+ export { guardrailFromHits, guardrailFromVerdict, guardrailTurnEvent, projectGuardrailTurnEvent };
@@ -0,0 +1,42 @@
1
+ import { projectGuardrailEvent } from './hits.js';
2
+ function guardrailTurnEvent(guardrail) {
3
+ return { type: 'guardrail', guardrail };
4
+ }
5
+ /** `allow` yields nothing; `flag`, `redact` and `block` all emit so hosts and traces can count hits. */
6
+ function guardrailFromVerdict(stage, trust, verdict, provenance) {
7
+ if (verdict.action === 'allow') {
8
+ return undefined;
9
+ }
10
+ return guardrailTurnEvent({
11
+ stage,
12
+ trust,
13
+ action: verdict.action,
14
+ hits: verdict.hits,
15
+ ...(provenance ? { provenance } : {}),
16
+ ...(verdict.action === 'block' && verdict.errorInternal
17
+ ? { errorInternal: verdict.errorInternal }
18
+ : {}),
19
+ });
20
+ }
21
+ function guardrailFromHits(stage, trust, hits, action = 'redact', provenance) {
22
+ if (hits.length === 0) {
23
+ return undefined;
24
+ }
25
+ return guardrailTurnEvent({
26
+ stage,
27
+ trust,
28
+ action,
29
+ hits,
30
+ ...(provenance ? { provenance } : {}),
31
+ });
32
+ }
33
+ function projectGuardrailTurnEvent(event, includeMatch) {
34
+ if (event.type !== 'guardrail') {
35
+ return event;
36
+ }
37
+ return {
38
+ ...event,
39
+ guardrail: projectGuardrailEvent(event.guardrail, includeMatch),
40
+ };
41
+ }
42
+ export { guardrailFromHits, guardrailFromVerdict, guardrailTurnEvent, projectGuardrailTurnEvent };
@@ -0,0 +1,8 @@
1
+ import type { GuardrailEvent, GuardrailHit, Severity } from './types.js';
2
+ declare function hitFromSpan(text: string, span: {
3
+ start: number;
4
+ end: number;
5
+ }, rule: string, severity: Severity): GuardrailHit;
6
+ /** `match` is the caught text itself, so hosts and traces get it only via `observability.include.guardrailMatchPreview`. */
7
+ declare function projectGuardrailEvent(event: GuardrailEvent, includeMatch: boolean): GuardrailEvent;
8
+ export { hitFromSpan, projectGuardrailEvent };
@@ -0,0 +1,19 @@
1
+ function hitFromSpan(text, span, rule, severity) {
2
+ return {
3
+ rule,
4
+ severity,
5
+ span: { start: span.start, end: span.end },
6
+ match: text.slice(span.start, span.end),
7
+ };
8
+ }
9
+ /** `match` is the caught text itself, so hosts and traces get it only via `observability.include.guardrailMatchPreview`. */
10
+ function projectGuardrailEvent(event, includeMatch) {
11
+ if (includeMatch) {
12
+ return event;
13
+ }
14
+ return {
15
+ ...event,
16
+ hits: event.hits.map(({ match: _match, ...hit }) => hit),
17
+ };
18
+ }
19
+ export { hitFromSpan, projectGuardrailEvent };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The prompt-injection patterns, apart from the code that runs them, so the
3
+ * egress automata generator (`scripts/gen-egress-automata.ts`) can read them
4
+ * without the generated table it writes.
5
+ *
6
+ * @module
7
+ */
8
+ declare const INJECTION_PATTERNS: RegExp[];
9
+ /** Runs that might encode an injection; each is decoded and checked in `injection.ts`. */
10
+ declare const BASE64_BLOB: RegExp;
11
+ declare const HEX_BLOB: RegExp;
12
+ declare const SPACED_LETTERS: RegExp;
13
+ /** Three+ alphabetic tokens joined by `|` (no shell spaces around pipes). */
14
+ declare const PIPE_SEPARATED: RegExp;
15
+ export { BASE64_BLOB, HEX_BLOB, INJECTION_PATTERNS, PIPE_SEPARATED, SPACED_LETTERS };
@@ -0,0 +1,94 @@
1
+ /**
2
+ * The prompt-injection patterns, apart from the code that runs them, so the
3
+ * egress automata generator (`scripts/gen-egress-automata.ts`) can read them
4
+ * without the generated table it writes.
5
+ *
6
+ * @module
7
+ */
8
+ const IGNORE_PREVIOUS = /ignore\s+(all\s+)?(previous|prior)\s+((?:safety|security|system|operational|internal|core|original|initial|existing|given|stated|provided|defined|specified|established)\s+)?(instructions?|rules?|guidelines?|constraints?|directives?)/gi;
9
+ const DISREGARD_INSTRUCTIONS = /disregard\s+(all\s+)?(previous|prior|above)\s+(instructions?|rules?|guidelines?|constraints?|directives?)/gi;
10
+ const FORGET_INSTRUCTIONS = /forget\s+(all\s+)?(previous|prior|above)\s+(instructions?|rules?|guidelines?|constraints?|directives?)/gi;
11
+ const NEW_INSTRUCTIONS = /new\s+instructions?:/gi;
12
+ const DO_NOT_FOLLOW = /do\s+not\s+follow\s+(the\s+)?(system|developer|previous|original)/gi;
13
+ const SUPERSEDE_INSTRUCTIONS = /supersedes?\s+(all\s+)?(prior|previous)\s+(instructions?|rules?|guidelines?|constraints?|directives?)/gi;
14
+ const VOID_INSTRUCTIONS = /(all\s+)?(previous|prior)\s+instructions?\s+(are|is)\s+(void|invalid|null|obsolete|cancelled|revoked)/gi;
15
+ const DEVELOPER_MODE = /you\s+are\s+now\s+(in\s+)?developer\s+mode/gi;
16
+ const ENTER_SPECIAL_MODE = /enter\s+(developer|admin|debug|maintenance)\s+mode(?!\s+(?:in|on|via|through|from|using|for)\b)/gi;
17
+ const ACTIVATE_SPECIAL_MODE = /activate\s+(developer|admin|debug|jailbreak)\s+mode(?!\s+(?:in|on|via|through|from|using|for)\b)/gi;
18
+ const SYSTEM_OVERRIDE = /\bsystem\s+override\b/gi;
19
+ const OVERRIDE_INSTRUCTIONS = /override\s+(your\s+)?(instructions?|rules?|guidelines?|constraints?|directives?)/gi;
20
+ const REVEAL_PROMPT = /reveal\s+((?:your?|yoru|yuor|the|my|its|his|her|our|their)\s+)?((?:(?:full|hidden|complete|internal|secret|original|entire|exact|actual|real)\s+){0,2})((?:system|systme|sysetm|systemp?)\s+)?prompt\b/gi;
21
+ const SHOW_PROMPT = /show\s+(me\s+)?((?:your?|yoru|yuor|the|my|its|his|her|our|their)\s+)((?:system|systme|sysetm|systemp?)\s+)?prompt\b/gi;
22
+ const WHAT_INSTRUCTIONS = /what\s+(are|were)\s+(your\s+)?(exact\s+)?instructions/gi;
23
+ const REPEAT_INSTRUCTIONS = /repeat\s+(the\s+)?(text|instructions?)\s+(above|before)/gi;
24
+ const OUTPUT_PROMPT = /output\s+(your\s+)?(initial|original|system)\s+(prompt|instructions?)/gi;
25
+ const REMOVE_RESTRICTIONS = /you\s+are\s+no\s+longer\s+(bound|restricted|limited)/gi;
26
+ const ACT_UNBOUND = /act\s+as\s+if\s+(you('re|\s+are)\s+)?not\s+bound/gi;
27
+ const PRETEND_DIFFERENT = /pretend\s+(you('re|\s+are)\s+)?(a\s+)?different\s+(ai|assistant|model)/gi;
28
+ const IDENTITY_HIJACK = /you\s+are\s+now\s+(?:(?:a|an)\s+)?\w+.{0,40}(without\s+(any\s+)?restrict|ignor\w*\s+(all|any|every|prev)|bypass|unrestrict|unlimit|obey\s+only|no\s+(rules|limits|restrict|boundari))/gi;
29
+ const DAN_JAILBREAK = /\bDAN\b[\s\S]{0,120}\bdo\s+anything\s+now\b/g;
30
+ const JAILBREAK_MODE = /jailbreak(ed)?\s+(mode|prompt)/gi;
31
+ const DO_ANYTHING_NOW = /\bdo\s+anything\s+now\b/gi;
32
+ const BYPASS_SAFETY = /bypass\s+(your\s+)?(safety|security|content|ethical)\s+(filters?|measures?|guidelines?|restrictions?)/gi;
33
+ const DISABLE_SAFETY = /(disable|delete|remove|turn\s+off|eliminate)\s+(all\s+)?(your\s+)?(safety|security|content)\s+(filters?|measures?|rules?|guidelines?|restrictions?)/gi;
34
+ const IGNORE_SAFETY = /(ignore|disregard)\s+(all\s+)?(your\s+)?(safety|security|ethical|content)\s+(guidelines?|rules?|restrictions?|measures?|filters?|polic(?:y|ies)|protocols?)/gi;
35
+ /** Bound whitespace so tag scanners cannot polynomial-backtrack on long runs. */
36
+ const TAG_WS = String.raw `[^\S\r\n]{0,32}`;
37
+ const SYSTEM_TAG = new RegExp(`<${TAG_WS}\\/?${TAG_WS}system${TAG_WS}\\/?>`, 'gi');
38
+ const ROLE_TAG = new RegExp(`<${TAG_WS}\\/?${TAG_WS}(assistant|developer|tool|function)${TAG_WS}\\/?>`, 'gi');
39
+ const ROLE_DELIMITER = /\][^\S\r\n]{0,32}\n[^\S\r\n]{0,32}\[?(system|assistant|user)\]?:/gi;
40
+ const BRACKETED_ROLE = /\[[^\S\r\n]{0,32}(System[^\S\r\n]{0,8}Message|System|Assistant|Internal)[^\S\r\n]{0,32}\]/gi;
41
+ const SYSTEM_YOU_ARE = /^[^\S\r\n]{0,32}System:[^\S\r\n]{1,32}(you\s+are|ignore|override)/gim;
42
+ const CONTROL_TOKEN = /<\|(?:im_start|im_end|eot_id|start_header_id|end_header_id|endoftext)\|>/g;
43
+ const DEEPSEEK_CONTROL = /<|(?:end▁of▁sentence|begin▁of▁sentence)|>/g;
44
+ const LLAMA_INST = /\[\/?INST\]/gi;
45
+ const IGNORE_YOUR_INSTRUCTIONS = /ignore\s+(all\s+)?(your\s+)?(instructions?|rules?)\b/gi;
46
+ const UNRESTRICTED_MODE = /\bunrestricted\s+(ai|mode|model)\b/gi;
47
+ const IGNORE_MULTILANG = /\b(?:ignorieren|ignorez|ignora|ignorer|oubliez|vergessen|olvida|desestima|missachten)\b[\s\S]{0,50}\b(?:anweisungen|instructions?|instrucciones|directives?|r[eè]gles|reglas)\b/gi;
48
+ const INJECTION_PATTERNS = [
49
+ IGNORE_PREVIOUS,
50
+ DISREGARD_INSTRUCTIONS,
51
+ FORGET_INSTRUCTIONS,
52
+ NEW_INSTRUCTIONS,
53
+ DO_NOT_FOLLOW,
54
+ SUPERSEDE_INSTRUCTIONS,
55
+ VOID_INSTRUCTIONS,
56
+ DEVELOPER_MODE,
57
+ ENTER_SPECIAL_MODE,
58
+ ACTIVATE_SPECIAL_MODE,
59
+ SYSTEM_OVERRIDE,
60
+ OVERRIDE_INSTRUCTIONS,
61
+ REVEAL_PROMPT,
62
+ SHOW_PROMPT,
63
+ WHAT_INSTRUCTIONS,
64
+ REPEAT_INSTRUCTIONS,
65
+ OUTPUT_PROMPT,
66
+ REMOVE_RESTRICTIONS,
67
+ ACT_UNBOUND,
68
+ PRETEND_DIFFERENT,
69
+ IDENTITY_HIJACK,
70
+ DAN_JAILBREAK,
71
+ JAILBREAK_MODE,
72
+ DO_ANYTHING_NOW,
73
+ BYPASS_SAFETY,
74
+ DISABLE_SAFETY,
75
+ IGNORE_SAFETY,
76
+ SYSTEM_TAG,
77
+ ROLE_TAG,
78
+ ROLE_DELIMITER,
79
+ BRACKETED_ROLE,
80
+ SYSTEM_YOU_ARE,
81
+ CONTROL_TOKEN,
82
+ DEEPSEEK_CONTROL,
83
+ LLAMA_INST,
84
+ IGNORE_YOUR_INSTRUCTIONS,
85
+ UNRESTRICTED_MODE,
86
+ IGNORE_MULTILANG,
87
+ ];
88
+ /** Runs that might encode an injection; each is decoded and checked in `injection.ts`. */
89
+ const BASE64_BLOB = /[A-Za-z0-9+/]{16,}={0,2}/g;
90
+ const HEX_BLOB = /(?:[0-9a-f]{2}[\s]?){8,}/gi;
91
+ const SPACED_LETTERS = /\b(?:[A-Za-z] ){3,}[A-Za-z]\b/g;
92
+ /** Three+ alphabetic tokens joined by `|` (no shell spaces around pipes). */
93
+ const PIPE_SEPARATED = /\b(?:[A-Za-z]+\|){2,}[A-Za-z]+\b/g;
94
+ export { BASE64_BLOB, HEX_BLOB, INJECTION_PATTERNS, PIPE_SEPARATED, SPACED_LETTERS };
@@ -0,0 +1,14 @@
1
+ import { type RedactSpan } from '../observability/spans.js';
2
+ declare const TYPO_TARGETS: string[];
3
+ declare function typoNormalize(text: string): string;
4
+ /** Blob patterns whose match is a hit only when the blob decodes to an injection. */
5
+ declare const INJECTION_BLOBS: readonly {
6
+ pattern: RegExp;
7
+ hit: (blob: string) => boolean;
8
+ }[];
9
+ declare function tryRot13(text: string): string;
10
+ /** Each run of `%XX` escapes decoded on its own, so one stray `%` cannot switch decoding off. */
11
+ declare function decodeUrlRuns(text: string): string;
12
+ declare function tryLeet(text: string): string | undefined;
13
+ declare function injectionSpans(text: string): RedactSpan[];
14
+ export { decodeUrlRuns, INJECTION_BLOBS, injectionSpans, TYPO_TARGETS, tryLeet, tryRot13, typoNormalize, };
@@ -0,0 +1,237 @@
1
+ import { blobAt, spansFromPatterns } from '../observability/spans.js';
2
+ import { REVERSED_INJECTION_PATTERNS } from './egress-automata.js';
3
+ import { BASE64_BLOB, HEX_BLOB, INJECTION_PATTERNS, PIPE_SEPARATED, SPACED_LETTERS, } from './injection-patterns.js';
4
+ import { normalizeForDetection } from './normalize.js';
5
+ const TYPO_TARGETS = [
6
+ 'ignore',
7
+ 'bypass',
8
+ 'override',
9
+ 'reveal',
10
+ 'delete',
11
+ 'system',
12
+ 'prompt',
13
+ 'instructions',
14
+ 'safety',
15
+ 'security',
16
+ 'filters',
17
+ 'rules',
18
+ 'previous',
19
+ 'guidelines',
20
+ 'restrictions',
21
+ 'disregard',
22
+ 'forget',
23
+ 'jailbreak',
24
+ 'developer',
25
+ 'disable',
26
+ 'measures',
27
+ ];
28
+ /** Pipe evasion only when the first token is a known injection lead-in. */
29
+ const PIPE_HEAD_VERBS = /^(ignore|disregard|forget|bypass|reveal|show|repeat|output|disable|override|new|jailbreak|pretend|act|enter|activate|void|supersede|do)$/i;
30
+ const WORD = /\b[A-Za-z]{4,}\b/g;
31
+ const PRINTABLE_MIN = 0.85;
32
+ const CODE_TAB = 9;
33
+ const CODE_LF = 10;
34
+ const CODE_CR = 13;
35
+ const CODE_SPACE = 32;
36
+ const CODE_DEL = 127;
37
+ const HEX_RADIX = 16;
38
+ const HEX_STEP = 2;
39
+ const ROT13_OFFSET = 13;
40
+ const ALPHA_COUNT = 26;
41
+ const UPPER_A_CODE = 65;
42
+ const LOWER_A_CODE = 97;
43
+ function injectionSpansOn(text) {
44
+ return spansFromPatterns(text, INJECTION_PATTERNS, 'injection');
45
+ }
46
+ function sortedLetters(value) {
47
+ return [...value].sort().join('');
48
+ }
49
+ function firstLast(word) {
50
+ return { first: word.at(0), last: word.at(-1) };
51
+ }
52
+ function isTypoglycemia(word, target) {
53
+ if (word.length !== target.length) {
54
+ return false;
55
+ }
56
+ const lower = word.toLowerCase();
57
+ if (lower === target) {
58
+ return false;
59
+ }
60
+ const wordEnds = firstLast(lower);
61
+ const targetEnds = firstLast(target);
62
+ if (wordEnds.first !== targetEnds.first || wordEnds.last !== targetEnds.last) {
63
+ return false;
64
+ }
65
+ return sortedLetters(lower.slice(1, -1)) === sortedLetters(target.slice(1, -1));
66
+ }
67
+ function typoNormalize(text) {
68
+ return text.replace(WORD, (word) => {
69
+ for (const target of TYPO_TARGETS) {
70
+ if (isTypoglycemia(word, target)) {
71
+ return target;
72
+ }
73
+ }
74
+ return word;
75
+ });
76
+ }
77
+ function isMostlyPrintable(value) {
78
+ if (!value) {
79
+ return false;
80
+ }
81
+ let ok = 0;
82
+ for (const ch of value) {
83
+ const code = ch.codePointAt(0) ?? 0;
84
+ const control = code === CODE_TAB || code === CODE_LF || code === CODE_CR;
85
+ const visible = code >= CODE_SPACE && code < CODE_DEL;
86
+ if (control || visible) {
87
+ ok += 1;
88
+ }
89
+ }
90
+ return ok / value.length >= PRINTABLE_MIN;
91
+ }
92
+ function tryBase64(blob) {
93
+ try {
94
+ return atob(blob);
95
+ }
96
+ catch {
97
+ return undefined;
98
+ }
99
+ }
100
+ function decodedHits(decoded) {
101
+ if (!isMostlyPrintable(decoded)) {
102
+ return false;
103
+ }
104
+ if (injectionSpansOn(decoded).length > 0)
105
+ return true;
106
+ const doubleDecoded = tryBase64(decoded);
107
+ if (doubleDecoded &&
108
+ isMostlyPrintable(doubleDecoded) &&
109
+ injectionSpansOn(doubleDecoded).length > 0) {
110
+ return true;
111
+ }
112
+ return false;
113
+ }
114
+ function tryHex(blob) {
115
+ const hex = blob.replaceAll(/\s/g, '');
116
+ if (hex.length % HEX_STEP !== 0) {
117
+ return undefined;
118
+ }
119
+ let out = '';
120
+ for (let i = 0; i < hex.length; i += HEX_STEP) {
121
+ out += String.fromCodePoint(Number.parseInt(hex.slice(i, i + HEX_STEP), HEX_RADIX));
122
+ }
123
+ return out;
124
+ }
125
+ function base64Hit(blob) {
126
+ const decoded = tryBase64(blob);
127
+ return decoded !== undefined && decodedHits(decoded);
128
+ }
129
+ function hexHit(blob) {
130
+ const decoded = tryHex(blob);
131
+ return decoded !== undefined && decodedHits(decoded);
132
+ }
133
+ function spacedHit(blob) {
134
+ const collapsed = blob.replaceAll(' ', '');
135
+ return injectionSpansOn(`${collapsed} previous instructions`).length > 0;
136
+ }
137
+ function pipeHit(blob) {
138
+ const head = blob.split('|')[0]?.toLowerCase();
139
+ if (!head || !PIPE_HEAD_VERBS.test(head))
140
+ return false;
141
+ return injectionSpansOn(blob.replaceAll('|', ' ')).length > 0;
142
+ }
143
+ /** Blob patterns whose match is a hit only when the blob decodes to an injection. */
144
+ const INJECTION_BLOBS = [
145
+ { pattern: BASE64_BLOB, hit: base64Hit },
146
+ { pattern: HEX_BLOB, hit: hexHit },
147
+ { pattern: SPACED_LETTERS, hit: spacedHit },
148
+ { pattern: PIPE_SEPARATED, hit: pipeHit },
149
+ ];
150
+ function blobSpans(text) {
151
+ const spans = [];
152
+ for (const { pattern, hit } of INJECTION_BLOBS) {
153
+ for (const match of text.matchAll(pattern)) {
154
+ const found = blobAt(match);
155
+ if (found && hit(found.blob)) {
156
+ spans.push({ start: found.index, end: found.index + found.blob.length, kind: 'injection' });
157
+ }
158
+ }
159
+ }
160
+ return spans;
161
+ }
162
+ function tryRot13(text) {
163
+ return text.replace(/[a-zA-Z]/g, (c) => {
164
+ const base = c.charCodeAt(0) < LOWER_A_CODE ? UPPER_A_CODE : LOWER_A_CODE;
165
+ return String.fromCharCode(((c.charCodeAt(0) - base + ROT13_OFFSET) % ALPHA_COUNT) + base);
166
+ });
167
+ }
168
+ const URL_ESCAPES = /(?:%[0-9A-Fa-f]{2})+/g;
169
+ const UTF8 = new TextDecoder();
170
+ /** Each run of `%XX` escapes decoded on its own, so one stray `%` cannot switch decoding off. */
171
+ function decodeUrlRuns(text) {
172
+ return text.replace(URL_ESCAPES, (run) => {
173
+ const bytes = new Uint8Array(run.length / 3);
174
+ for (let i = 0; i < bytes.length; i++) {
175
+ bytes[i] = Number.parseInt(run.slice(i * 3 + 1, i * 3 + 3), HEX_RADIX);
176
+ }
177
+ return UTF8.decode(bytes);
178
+ });
179
+ }
180
+ function tryUrlDecode(text) {
181
+ if (!text.includes('%'))
182
+ return undefined;
183
+ const decoded = decodeUrlRuns(text);
184
+ return decoded !== text ? decoded : undefined;
185
+ }
186
+ const LEET_MAP = {
187
+ '0': 'o',
188
+ '1': 'i',
189
+ '3': 'e',
190
+ '4': 'a',
191
+ '5': 's',
192
+ '7': 't',
193
+ '8': 'b',
194
+ '@': 'a',
195
+ '!': 'i',
196
+ };
197
+ const LEET_CHARS = /[013457@!]/g;
198
+ function tryLeet(text) {
199
+ if (!LEET_CHARS.test(text))
200
+ return undefined;
201
+ LEET_CHARS.lastIndex = 0;
202
+ const decoded = text.replace(LEET_CHARS, (c) => LEET_MAP[c] ?? c);
203
+ return decoded !== text ? decoded : undefined;
204
+ }
205
+ /**
206
+ * Text written backwards reads as an injection: each pattern reversed
207
+ * (`REVERSED_INJECTION_PATTERNS`), matched on the text as written.
208
+ */
209
+ function reversedHits(text) {
210
+ return spansFromPatterns(text, REVERSED_INJECTION_PATTERNS, 'injection').length > 0;
211
+ }
212
+ function decodedTextSpans(text) {
213
+ const attempts = [tryRot13(text), tryUrlDecode(text), tryLeet(text)];
214
+ const decodedHit = attempts.some((decoded) => decoded && decoded !== text && injectionSpansOn(decoded).length > 0);
215
+ return decodedHit || reversedHits(text)
216
+ ? [{ start: 0, end: text.length, kind: 'injection' }]
217
+ : [];
218
+ }
219
+ function injectionSpans(text) {
220
+ const direct = injectionSpansOn(text);
221
+ const shadow = typoNormalize(text);
222
+ let typo = [];
223
+ if (shadow !== text) {
224
+ typo = injectionSpansOn(shadow);
225
+ }
226
+ const normalized = normalizeForDetection(text);
227
+ let unicodeHits = [];
228
+ if (normalized !== text) {
229
+ const normalizedTypo = typoNormalize(normalized);
230
+ if (injectionSpansOn(normalized).length > 0 ||
231
+ (normalizedTypo !== normalized && injectionSpansOn(normalizedTypo).length > 0)) {
232
+ unicodeHits = [{ start: 0, end: text.length, kind: 'injection' }];
233
+ }
234
+ }
235
+ return [...direct, ...typo, ...unicodeHits, ...blobSpans(text), ...decodedTextSpans(text)];
236
+ }
237
+ export { decodeUrlRuns, INJECTION_BLOBS, injectionSpans, TYPO_TARGETS, tryLeet, tryRot13, typoNormalize, };
@@ -0,0 +1,30 @@
1
+ export type LexiconParams = Record<string, string | number>;
2
+ /** Keys are stable API. */
3
+ export declare const LEXICON_KEYS: readonly ["continue.instruction", "canary.bind_note", "user_data.note", "taint.blocked", "taint.reason_steered", "taint.reason_tainted", "advisory.notice_elevated", "advisory.notice_high", "advisory.guidance", "attachments.too_many_files", "attachments.file_too_large", "attachments.turn_too_large", "attachments.not_accepted", "attachments.mime_not_allowed", "attachments.limits_unconfigured", "quota.exhausted", "error.config", "error.request", "error.input", "error.action", "error.auth", "error.rate_limit", "error.unsupported", "error.unavailable", "error.bad_response", "error.network", "error.timeout", "error.safety", "error.blocked", "error.declined", "error.failed", "error.cancelled", "error.internal", "repair.default_guidance", "repair.prompt_header", "repair.prompt_intro", "repair.prompt_instructions", "repair.history_heading", "repair.section_previous_output", "repair.section_validator_rejection", "repair.section_repair_guidance", "repair.section_instructions", "compaction.request", "compaction.tool_call", "compaction.tool_result", "egress.default_repair_guidance", "egress.refusal", "egress.rejection", "egress.invalid_verdict", "egress.policy_failed", "thought.omitted_image", "thought.omitted_link", "thought.omitted_instructions", "session.abandon_gated", "session.tool_denied", "session.tool_aborted", "session.sign_in", "sign_in.link", "sign_in.pending", "sign_in.done", "sign_in.declined", "sign_in.expired", "sign_in.out_of_scope", "session.gate_expired", "session.turn_ended", "session.gate_pending", "session.part_skipped", "live.session_ended", "voice.unsupported", "voice.permission", "voice.unavailable", "voice.failed", "voice.empty", "tool.awaiting_user", "tool.completed_hidden", "tool.t2_loader_needs_snapshot", "tool.t2_loader_shape", "tool.t2_loader_output_invalid", "tool.input_invalid", "tool.input_invalid_after_mutate", "tool.output_invalid_after_mutate", "tool.handler_no_output", "tool.output_invalid", "tool.not_wired_t1", "tool.not_loaded_t2", "tool.not_visible", "tool.builtin_not_enabled", "tool.provider_native", "tool.not_registered", "tool.builtin_needs_snapshot", "tool.not_allowed", "tool.not_eligible", "tool.unsupported_type"];
4
+ export type LexiconKey = (typeof LEXICON_KEYS)[number];
5
+ /**
6
+ * The keys a browser client words or writes: what the user reads (errors,
7
+ * attachment and voice problems, session states) and the tool lines the client
8
+ * puts into history. Only these overrides travel to the browser; the rest
9
+ * (repair prompts, canary, taint, egress) stay on the host.
10
+ */
11
+ export declare const CLIENT_LEXICON_KEYS: readonly ["attachments.too_many_files", "attachments.file_too_large", "attachments.turn_too_large", "attachments.not_accepted", "attachments.mime_not_allowed", "attachments.limits_unconfigured", "error.config", "error.request", "error.input", "error.action", "error.auth", "error.rate_limit", "error.unsupported", "error.unavailable", "error.bad_response", "error.network", "error.timeout", "error.safety", "error.blocked", "error.declined", "error.failed", "error.cancelled", "error.internal", "session.abandon_gated", "session.tool_denied", "session.sign_in", "session.gate_expired", "session.turn_ended", "session.gate_pending", "session.part_skipped", "live.session_ended", "tool.awaiting_user", "tool.completed_hidden", "voice.unsupported", "voice.permission", "voice.unavailable", "voice.failed", "voice.empty"];
12
+ export type ClientLexiconKey = (typeof CLIENT_LEXICON_KEYS)[number];
13
+ /** Host-supplied replacement templates, `{param}` placeholders included. */
14
+ export type LexiconOverrides = Partial<Record<LexiconKey, string>>;
15
+ /**
16
+ * What each key is: when the kernel uses it, who reads it, and the placeholders it takes. For the
17
+ * builders who replace the wording; the field catalog reads it for `lexicon.<key>`.
18
+ */
19
+ export declare const LEXICON_NOTES: Record<LexiconKey, string>;
20
+ export declare function lexiconPlaceholders(key: LexiconKey): readonly string[];
21
+ /** `owner` names where the overrides came from in the error. */
22
+ export declare function validateLexiconOverrides(entries: LexiconOverrides, owner: string): void;
23
+ /** Process-wide; a profile's own `lexicon` wins over these. */
24
+ export declare function overrideLexicon(entries: LexiconOverrides): void;
25
+ export declare function resetLexicon(): void;
26
+ export declare function lexiconText(key: LexiconKey, params?: LexiconParams, profileLexicon?: LexiconOverrides): string;
27
+ /** Overrides only, resolved on the host; keys without one fall back to the defaults the client ships with. */
28
+ export declare function clientLexicon(profileLexicon?: LexiconOverrides): LexiconOverrides;
29
+ /** Ignores overrides. */
30
+ export declare function lexiconDefault(key: LexiconKey, params?: LexiconParams): string;