@vellumai/assistant 0.4.54 → 0.4.56

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 (1483) hide show
  1. package/ARCHITECTURE.md +157 -163
  2. package/Dockerfile +6 -9
  3. package/README.md +1 -1
  4. package/bun.lock +145 -112
  5. package/docs/architecture/integrations.md +22 -22
  6. package/docs/architecture/memory.md +50 -50
  7. package/docs/architecture/security.md +2 -2
  8. package/docs/credential-execution-service.md +411 -0
  9. package/knip.json +5 -1
  10. package/node_modules/@vellumai/ces-contracts/bun.lock +29 -0
  11. package/node_modules/@vellumai/ces-contracts/package.json +24 -0
  12. package/node_modules/@vellumai/ces-contracts/src/__tests__/contracts.test.ts +293 -0
  13. package/node_modules/@vellumai/ces-contracts/src/__tests__/grants.test.ts +686 -0
  14. package/node_modules/@vellumai/ces-contracts/src/error.ts +25 -0
  15. package/node_modules/@vellumai/ces-contracts/src/grants.ts +184 -0
  16. package/node_modules/@vellumai/ces-contracts/src/handles.ts +213 -0
  17. package/node_modules/@vellumai/ces-contracts/src/index.ts +147 -0
  18. package/node_modules/@vellumai/ces-contracts/src/rendering.ts +135 -0
  19. package/node_modules/@vellumai/ces-contracts/src/rpc.ts +511 -0
  20. package/node_modules/@vellumai/ces-contracts/tsconfig.json +20 -0
  21. package/node_modules/@vellumai/credential-storage/bun.lock +24 -0
  22. package/node_modules/@vellumai/credential-storage/package.json +17 -0
  23. package/node_modules/@vellumai/credential-storage/src/__tests__/package-boundary.test.ts +151 -0
  24. package/node_modules/@vellumai/credential-storage/src/index.ts +213 -0
  25. package/node_modules/@vellumai/credential-storage/src/oauth-runtime.ts +340 -0
  26. package/node_modules/@vellumai/credential-storage/src/static-credentials.ts +365 -0
  27. package/node_modules/@vellumai/credential-storage/tsconfig.json +20 -0
  28. package/node_modules/@vellumai/egress-proxy/bun.lock +24 -0
  29. package/node_modules/@vellumai/egress-proxy/package.json +17 -0
  30. package/node_modules/@vellumai/egress-proxy/src/__tests__/package-boundary.test.ts +131 -0
  31. package/node_modules/@vellumai/egress-proxy/src/index.ts +54 -0
  32. package/node_modules/@vellumai/egress-proxy/src/session-core.ts +466 -0
  33. package/node_modules/@vellumai/egress-proxy/src/types.ts +227 -0
  34. package/node_modules/@vellumai/egress-proxy/tsconfig.json +20 -0
  35. package/node_modules/zod/LICENSE +21 -0
  36. package/node_modules/zod/README.md +208 -0
  37. package/node_modules/zod/index.cjs +33 -0
  38. package/node_modules/zod/index.d.cts +4 -0
  39. package/node_modules/zod/index.d.ts +4 -0
  40. package/node_modules/zod/index.js +4 -0
  41. package/node_modules/zod/locales/index.cjs +17 -0
  42. package/node_modules/zod/locales/index.d.cts +1 -0
  43. package/node_modules/zod/locales/index.d.ts +1 -0
  44. package/node_modules/zod/locales/index.js +1 -0
  45. package/node_modules/zod/locales/package.json +6 -0
  46. package/node_modules/zod/mini/index.cjs +32 -0
  47. package/node_modules/zod/mini/index.d.cts +3 -0
  48. package/node_modules/zod/mini/index.d.ts +3 -0
  49. package/node_modules/zod/mini/index.js +3 -0
  50. package/node_modules/zod/mini/package.json +6 -0
  51. package/node_modules/zod/package.json +135 -0
  52. package/node_modules/zod/src/index.ts +4 -0
  53. package/node_modules/zod/src/locales/index.ts +1 -0
  54. package/node_modules/zod/src/mini/index.ts +3 -0
  55. package/node_modules/zod/src/v3/ZodError.ts +330 -0
  56. package/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
  57. package/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
  58. package/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
  59. package/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
  60. package/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
  61. package/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
  62. package/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
  63. package/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
  64. package/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
  65. package/node_modules/zod/src/v3/errors.ts +13 -0
  66. package/node_modules/zod/src/v3/external.ts +6 -0
  67. package/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
  68. package/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
  69. package/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
  70. package/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
  71. package/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
  72. package/node_modules/zod/src/v3/helpers/util.ts +224 -0
  73. package/node_modules/zod/src/v3/index.ts +4 -0
  74. package/node_modules/zod/src/v3/locales/en.ts +124 -0
  75. package/node_modules/zod/src/v3/standard-schema.ts +113 -0
  76. package/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
  77. package/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
  78. package/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
  79. package/node_modules/zod/src/v3/tests/array.test.ts +71 -0
  80. package/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
  81. package/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
  82. package/node_modules/zod/src/v3/tests/base.test.ts +29 -0
  83. package/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
  84. package/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
  85. package/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
  86. package/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
  87. package/node_modules/zod/src/v3/tests/complex.test.ts +70 -0
  88. package/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
  89. package/node_modules/zod/src/v3/tests/date.test.ts +32 -0
  90. package/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
  91. package/node_modules/zod/src/v3/tests/default.test.ts +112 -0
  92. package/node_modules/zod/src/v3/tests/description.test.ts +33 -0
  93. package/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
  94. package/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
  95. package/node_modules/zod/src/v3/tests/error.test.ts +551 -0
  96. package/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
  97. package/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
  98. package/node_modules/zod/src/v3/tests/function.test.ts +261 -0
  99. package/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
  100. package/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
  101. package/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
  102. package/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
  103. package/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
  104. package/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
  105. package/node_modules/zod/src/v3/tests/map.test.ts +110 -0
  106. package/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
  107. package/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
  108. package/node_modules/zod/src/v3/tests/nan.test.ts +24 -0
  109. package/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
  110. package/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
  111. package/node_modules/zod/src/v3/tests/number.test.ts +176 -0
  112. package/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
  113. package/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
  114. package/node_modules/zod/src/v3/tests/object.test.ts +434 -0
  115. package/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
  116. package/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
  117. package/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
  118. package/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
  119. package/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
  120. package/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
  121. package/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
  122. package/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
  123. package/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
  124. package/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
  125. package/node_modules/zod/src/v3/tests/record.test.ts +171 -0
  126. package/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
  127. package/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
  128. package/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
  129. package/node_modules/zod/src/v3/tests/set.test.ts +142 -0
  130. package/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
  131. package/node_modules/zod/src/v3/tests/string.test.ts +916 -0
  132. package/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
  133. package/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
  134. package/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
  135. package/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
  136. package/node_modules/zod/src/v3/tests/void.test.ts +15 -0
  137. package/node_modules/zod/src/v3/types.ts +5138 -0
  138. package/node_modules/zod/src/v4/classic/checks.ts +32 -0
  139. package/node_modules/zod/src/v4/classic/coerce.ts +27 -0
  140. package/node_modules/zod/src/v4/classic/compat.ts +70 -0
  141. package/node_modules/zod/src/v4/classic/errors.ts +82 -0
  142. package/node_modules/zod/src/v4/classic/external.ts +51 -0
  143. package/node_modules/zod/src/v4/classic/from-json-schema.ts +643 -0
  144. package/node_modules/zod/src/v4/classic/index.ts +5 -0
  145. package/node_modules/zod/src/v4/classic/iso.ts +90 -0
  146. package/node_modules/zod/src/v4/classic/parse.ts +82 -0
  147. package/node_modules/zod/src/v4/classic/schemas.ts +2409 -0
  148. package/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
  149. package/node_modules/zod/src/v4/classic/tests/apply.test.ts +59 -0
  150. package/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
  151. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +210 -0
  152. package/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
  153. package/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
  154. package/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
  155. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
  156. package/node_modules/zod/src/v4/classic/tests/brand.test.ts +106 -0
  157. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +276 -0
  158. package/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
  159. package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +573 -0
  160. package/node_modules/zod/src/v4/classic/tests/codec.test.ts +562 -0
  161. package/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
  162. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +374 -0
  163. package/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
  164. package/node_modules/zod/src/v4/classic/tests/date.test.ts +62 -0
  165. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +302 -0
  166. package/node_modules/zod/src/v4/classic/tests/default.test.ts +365 -0
  167. package/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts +27 -0
  168. package/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
  169. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +661 -0
  170. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
  171. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +595 -0
  172. package/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
  173. package/node_modules/zod/src/v4/classic/tests/file.test.ts +96 -0
  174. package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +179 -0
  175. package/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts +26 -0
  176. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +734 -0
  177. package/node_modules/zod/src/v4/classic/tests/function.test.ts +360 -0
  178. package/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
  179. package/node_modules/zod/src/v4/classic/tests/hash.test.ts +68 -0
  180. package/node_modules/zod/src/v4/classic/tests/index.test.ts +939 -0
  181. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +60 -0
  182. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +198 -0
  183. package/node_modules/zod/src/v4/classic/tests/json.test.ts +109 -0
  184. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
  185. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +117 -0
  186. package/node_modules/zod/src/v4/classic/tests/map.test.ts +330 -0
  187. package/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
  188. package/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
  189. package/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +101 -0
  190. package/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
  191. package/node_modules/zod/src/v4/classic/tests/number.test.ts +270 -0
  192. package/node_modules/zod/src/v4/classic/tests/object.test.ts +640 -0
  193. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +223 -0
  194. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +427 -0
  195. package/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +211 -0
  196. package/node_modules/zod/src/v4/classic/tests/pipe.test.ts +101 -0
  197. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +74 -0
  198. package/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +282 -0
  199. package/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
  200. package/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
  201. package/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
  202. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
  203. package/node_modules/zod/src/v4/classic/tests/record.test.ts +632 -0
  204. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +582 -0
  205. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +570 -0
  206. package/node_modules/zod/src/v4/classic/tests/registries.test.ts +243 -0
  207. package/node_modules/zod/src/v4/classic/tests/set.test.ts +181 -0
  208. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +134 -0
  209. package/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +125 -0
  210. package/node_modules/zod/src/v4/classic/tests/string.test.ts +1175 -0
  211. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +106 -0
  212. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +771 -0
  213. package/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts +438 -0
  214. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +2990 -0
  215. package/node_modules/zod/src/v4/classic/tests/transform.test.ts +361 -0
  216. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +183 -0
  217. package/node_modules/zod/src/v4/classic/tests/union.test.ts +219 -0
  218. package/node_modules/zod/src/v4/classic/tests/url.test.ts +13 -0
  219. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
  220. package/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
  221. package/node_modules/zod/src/v4/core/api.ts +1798 -0
  222. package/node_modules/zod/src/v4/core/checks.ts +1293 -0
  223. package/node_modules/zod/src/v4/core/config.ts +15 -0
  224. package/node_modules/zod/src/v4/core/core.ts +138 -0
  225. package/node_modules/zod/src/v4/core/doc.ts +44 -0
  226. package/node_modules/zod/src/v4/core/errors.ts +448 -0
  227. package/node_modules/zod/src/v4/core/index.ts +16 -0
  228. package/node_modules/zod/src/v4/core/json-schema-generator.ts +126 -0
  229. package/node_modules/zod/src/v4/core/json-schema-processors.ts +667 -0
  230. package/node_modules/zod/src/v4/core/json-schema.ts +147 -0
  231. package/node_modules/zod/src/v4/core/parse.ts +195 -0
  232. package/node_modules/zod/src/v4/core/regexes.ts +183 -0
  233. package/node_modules/zod/src/v4/core/registries.ts +105 -0
  234. package/node_modules/zod/src/v4/core/schemas.ts +4538 -0
  235. package/node_modules/zod/src/v4/core/standard-schema.ts +159 -0
  236. package/node_modules/zod/src/v4/core/tests/extend.test.ts +59 -0
  237. package/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
  238. package/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
  239. package/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
  240. package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +181 -0
  241. package/node_modules/zod/src/v4/core/tests/locales/he.test.ts +379 -0
  242. package/node_modules/zod/src/v4/core/tests/locales/nl.test.ts +46 -0
  243. package/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
  244. package/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
  245. package/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +83 -0
  246. package/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +67 -0
  247. package/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts +45 -0
  248. package/node_modules/zod/src/v4/core/to-json-schema.ts +613 -0
  249. package/node_modules/zod/src/v4/core/util.ts +966 -0
  250. package/node_modules/zod/src/v4/core/versions.ts +5 -0
  251. package/node_modules/zod/src/v4/core/zsf.ts +323 -0
  252. package/node_modules/zod/src/v4/index.ts +4 -0
  253. package/node_modules/zod/src/v4/locales/ar.ts +115 -0
  254. package/node_modules/zod/src/v4/locales/az.ts +111 -0
  255. package/node_modules/zod/src/v4/locales/be.ts +176 -0
  256. package/node_modules/zod/src/v4/locales/bg.ts +128 -0
  257. package/node_modules/zod/src/v4/locales/ca.ts +116 -0
  258. package/node_modules/zod/src/v4/locales/cs.ts +118 -0
  259. package/node_modules/zod/src/v4/locales/da.ts +123 -0
  260. package/node_modules/zod/src/v4/locales/de.ts +116 -0
  261. package/node_modules/zod/src/v4/locales/en.ts +119 -0
  262. package/node_modules/zod/src/v4/locales/eo.ts +118 -0
  263. package/node_modules/zod/src/v4/locales/es.ts +141 -0
  264. package/node_modules/zod/src/v4/locales/fa.ts +126 -0
  265. package/node_modules/zod/src/v4/locales/fi.ts +121 -0
  266. package/node_modules/zod/src/v4/locales/fr-CA.ts +116 -0
  267. package/node_modules/zod/src/v4/locales/fr.ts +116 -0
  268. package/node_modules/zod/src/v4/locales/he.ts +246 -0
  269. package/node_modules/zod/src/v4/locales/hu.ts +117 -0
  270. package/node_modules/zod/src/v4/locales/hy.ts +164 -0
  271. package/node_modules/zod/src/v4/locales/id.ts +115 -0
  272. package/node_modules/zod/src/v4/locales/index.ts +49 -0
  273. package/node_modules/zod/src/v4/locales/is.ts +119 -0
  274. package/node_modules/zod/src/v4/locales/it.ts +116 -0
  275. package/node_modules/zod/src/v4/locales/ja.ts +114 -0
  276. package/node_modules/zod/src/v4/locales/ka.ts +123 -0
  277. package/node_modules/zod/src/v4/locales/kh.ts +7 -0
  278. package/node_modules/zod/src/v4/locales/km.ts +119 -0
  279. package/node_modules/zod/src/v4/locales/ko.ts +121 -0
  280. package/node_modules/zod/src/v4/locales/lt.ts +239 -0
  281. package/node_modules/zod/src/v4/locales/mk.ts +118 -0
  282. package/node_modules/zod/src/v4/locales/ms.ts +115 -0
  283. package/node_modules/zod/src/v4/locales/nl.ts +121 -0
  284. package/node_modules/zod/src/v4/locales/no.ts +116 -0
  285. package/node_modules/zod/src/v4/locales/ota.ts +117 -0
  286. package/node_modules/zod/src/v4/locales/pl.ts +118 -0
  287. package/node_modules/zod/src/v4/locales/ps.ts +126 -0
  288. package/node_modules/zod/src/v4/locales/pt.ts +116 -0
  289. package/node_modules/zod/src/v4/locales/ru.ts +176 -0
  290. package/node_modules/zod/src/v4/locales/sl.ts +118 -0
  291. package/node_modules/zod/src/v4/locales/sv.ts +119 -0
  292. package/node_modules/zod/src/v4/locales/ta.ts +118 -0
  293. package/node_modules/zod/src/v4/locales/th.ts +119 -0
  294. package/node_modules/zod/src/v4/locales/tr.ts +111 -0
  295. package/node_modules/zod/src/v4/locales/ua.ts +7 -0
  296. package/node_modules/zod/src/v4/locales/uk.ts +117 -0
  297. package/node_modules/zod/src/v4/locales/ur.ts +119 -0
  298. package/node_modules/zod/src/v4/locales/uz.ts +116 -0
  299. package/node_modules/zod/src/v4/locales/vi.ts +117 -0
  300. package/node_modules/zod/src/v4/locales/yo.ts +124 -0
  301. package/node_modules/zod/src/v4/locales/zh-CN.ts +116 -0
  302. package/node_modules/zod/src/v4/locales/zh-TW.ts +115 -0
  303. package/node_modules/zod/src/v4/mini/checks.ts +32 -0
  304. package/node_modules/zod/src/v4/mini/coerce.ts +27 -0
  305. package/node_modules/zod/src/v4/mini/external.ts +40 -0
  306. package/node_modules/zod/src/v4/mini/index.ts +3 -0
  307. package/node_modules/zod/src/v4/mini/iso.ts +66 -0
  308. package/node_modules/zod/src/v4/mini/parse.ts +14 -0
  309. package/node_modules/zod/src/v4/mini/schemas.ts +1916 -0
  310. package/node_modules/zod/src/v4/mini/tests/apply.test.ts +24 -0
  311. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
  312. package/node_modules/zod/src/v4/mini/tests/brand.test.ts +94 -0
  313. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
  314. package/node_modules/zod/src/v4/mini/tests/codec.test.ts +529 -0
  315. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
  316. package/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
  317. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +5 -0
  318. package/node_modules/zod/src/v4/mini/tests/index.test.ts +963 -0
  319. package/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
  320. package/node_modules/zod/src/v4/mini/tests/object.test.ts +227 -0
  321. package/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
  322. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +275 -0
  323. package/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts +50 -0
  324. package/node_modules/zod/src/v4/mini/tests/string.test.ts +347 -0
  325. package/node_modules/zod/src/v4-mini/index.ts +3 -0
  326. package/node_modules/zod/v3/ZodError.cjs +138 -0
  327. package/node_modules/zod/v3/ZodError.d.cts +164 -0
  328. package/node_modules/zod/v3/ZodError.d.ts +164 -0
  329. package/node_modules/zod/v3/ZodError.js +133 -0
  330. package/node_modules/zod/v3/errors.cjs +17 -0
  331. package/node_modules/zod/v3/errors.d.cts +5 -0
  332. package/node_modules/zod/v3/errors.d.ts +5 -0
  333. package/node_modules/zod/v3/errors.js +9 -0
  334. package/node_modules/zod/v3/external.cjs +22 -0
  335. package/node_modules/zod/v3/external.d.cts +6 -0
  336. package/node_modules/zod/v3/external.d.ts +6 -0
  337. package/node_modules/zod/v3/external.js +6 -0
  338. package/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
  339. package/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
  340. package/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
  341. package/node_modules/zod/v3/helpers/enumUtil.js +1 -0
  342. package/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
  343. package/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
  344. package/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
  345. package/node_modules/zod/v3/helpers/errorUtil.js +6 -0
  346. package/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
  347. package/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
  348. package/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
  349. package/node_modules/zod/v3/helpers/parseUtil.js +109 -0
  350. package/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
  351. package/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
  352. package/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
  353. package/node_modules/zod/v3/helpers/partialUtil.js +1 -0
  354. package/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
  355. package/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
  356. package/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
  357. package/node_modules/zod/v3/helpers/typeAliases.js +1 -0
  358. package/node_modules/zod/v3/helpers/util.cjs +137 -0
  359. package/node_modules/zod/v3/helpers/util.d.cts +85 -0
  360. package/node_modules/zod/v3/helpers/util.d.ts +85 -0
  361. package/node_modules/zod/v3/helpers/util.js +133 -0
  362. package/node_modules/zod/v3/index.cjs +33 -0
  363. package/node_modules/zod/v3/index.d.cts +4 -0
  364. package/node_modules/zod/v3/index.d.ts +4 -0
  365. package/node_modules/zod/v3/index.js +4 -0
  366. package/node_modules/zod/v3/locales/en.cjs +112 -0
  367. package/node_modules/zod/v3/locales/en.d.cts +3 -0
  368. package/node_modules/zod/v3/locales/en.d.ts +3 -0
  369. package/node_modules/zod/v3/locales/en.js +109 -0
  370. package/node_modules/zod/v3/package.json +6 -0
  371. package/node_modules/zod/v3/standard-schema.cjs +2 -0
  372. package/node_modules/zod/v3/standard-schema.d.cts +102 -0
  373. package/node_modules/zod/v3/standard-schema.d.ts +102 -0
  374. package/node_modules/zod/v3/standard-schema.js +1 -0
  375. package/node_modules/zod/v3/types.cjs +3777 -0
  376. package/node_modules/zod/v3/types.d.cts +1034 -0
  377. package/node_modules/zod/v3/types.d.ts +1034 -0
  378. package/node_modules/zod/v3/types.js +3695 -0
  379. package/node_modules/zod/v4/classic/checks.cjs +33 -0
  380. package/node_modules/zod/v4/classic/checks.d.cts +1 -0
  381. package/node_modules/zod/v4/classic/checks.d.ts +1 -0
  382. package/node_modules/zod/v4/classic/checks.js +1 -0
  383. package/node_modules/zod/v4/classic/coerce.cjs +47 -0
  384. package/node_modules/zod/v4/classic/coerce.d.cts +17 -0
  385. package/node_modules/zod/v4/classic/coerce.d.ts +17 -0
  386. package/node_modules/zod/v4/classic/coerce.js +17 -0
  387. package/node_modules/zod/v4/classic/compat.cjs +61 -0
  388. package/node_modules/zod/v4/classic/compat.d.cts +50 -0
  389. package/node_modules/zod/v4/classic/compat.d.ts +50 -0
  390. package/node_modules/zod/v4/classic/compat.js +31 -0
  391. package/node_modules/zod/v4/classic/errors.cjs +74 -0
  392. package/node_modules/zod/v4/classic/errors.d.cts +30 -0
  393. package/node_modules/zod/v4/classic/errors.d.ts +30 -0
  394. package/node_modules/zod/v4/classic/errors.js +48 -0
  395. package/node_modules/zod/v4/classic/external.cjs +73 -0
  396. package/node_modules/zod/v4/classic/external.d.cts +15 -0
  397. package/node_modules/zod/v4/classic/external.d.ts +15 -0
  398. package/node_modules/zod/v4/classic/external.js +20 -0
  399. package/node_modules/zod/v4/classic/from-json-schema.cjs +610 -0
  400. package/node_modules/zod/v4/classic/from-json-schema.d.cts +12 -0
  401. package/node_modules/zod/v4/classic/from-json-schema.d.ts +12 -0
  402. package/node_modules/zod/v4/classic/from-json-schema.js +584 -0
  403. package/node_modules/zod/v4/classic/index.cjs +33 -0
  404. package/node_modules/zod/v4/classic/index.d.cts +4 -0
  405. package/node_modules/zod/v4/classic/index.d.ts +4 -0
  406. package/node_modules/zod/v4/classic/index.js +4 -0
  407. package/node_modules/zod/v4/classic/iso.cjs +60 -0
  408. package/node_modules/zod/v4/classic/iso.d.cts +22 -0
  409. package/node_modules/zod/v4/classic/iso.d.ts +22 -0
  410. package/node_modules/zod/v4/classic/iso.js +30 -0
  411. package/node_modules/zod/v4/classic/package.json +6 -0
  412. package/node_modules/zod/v4/classic/parse.cjs +41 -0
  413. package/node_modules/zod/v4/classic/parse.d.cts +31 -0
  414. package/node_modules/zod/v4/classic/parse.d.ts +31 -0
  415. package/node_modules/zod/v4/classic/parse.js +15 -0
  416. package/node_modules/zod/v4/classic/schemas.cjs +1272 -0
  417. package/node_modules/zod/v4/classic/schemas.d.cts +739 -0
  418. package/node_modules/zod/v4/classic/schemas.d.ts +739 -0
  419. package/node_modules/zod/v4/classic/schemas.js +1157 -0
  420. package/node_modules/zod/v4/core/api.cjs +1222 -0
  421. package/node_modules/zod/v4/core/api.d.cts +304 -0
  422. package/node_modules/zod/v4/core/api.d.ts +304 -0
  423. package/node_modules/zod/v4/core/api.js +1082 -0
  424. package/node_modules/zod/v4/core/checks.cjs +601 -0
  425. package/node_modules/zod/v4/core/checks.d.cts +278 -0
  426. package/node_modules/zod/v4/core/checks.d.ts +278 -0
  427. package/node_modules/zod/v4/core/checks.js +575 -0
  428. package/node_modules/zod/v4/core/core.cjs +83 -0
  429. package/node_modules/zod/v4/core/core.d.cts +70 -0
  430. package/node_modules/zod/v4/core/core.d.ts +70 -0
  431. package/node_modules/zod/v4/core/core.js +76 -0
  432. package/node_modules/zod/v4/core/doc.cjs +39 -0
  433. package/node_modules/zod/v4/core/doc.d.cts +14 -0
  434. package/node_modules/zod/v4/core/doc.d.ts +14 -0
  435. package/node_modules/zod/v4/core/doc.js +35 -0
  436. package/node_modules/zod/v4/core/errors.cjs +213 -0
  437. package/node_modules/zod/v4/core/errors.d.cts +220 -0
  438. package/node_modules/zod/v4/core/errors.d.ts +220 -0
  439. package/node_modules/zod/v4/core/errors.js +182 -0
  440. package/node_modules/zod/v4/core/index.cjs +47 -0
  441. package/node_modules/zod/v4/core/index.d.cts +16 -0
  442. package/node_modules/zod/v4/core/index.d.ts +16 -0
  443. package/node_modules/zod/v4/core/index.js +16 -0
  444. package/node_modules/zod/v4/core/json-schema-generator.cjs +99 -0
  445. package/node_modules/zod/v4/core/json-schema-generator.d.cts +65 -0
  446. package/node_modules/zod/v4/core/json-schema-generator.d.ts +65 -0
  447. package/node_modules/zod/v4/core/json-schema-generator.js +95 -0
  448. package/node_modules/zod/v4/core/json-schema-processors.cjs +648 -0
  449. package/node_modules/zod/v4/core/json-schema-processors.d.cts +49 -0
  450. package/node_modules/zod/v4/core/json-schema-processors.d.ts +49 -0
  451. package/node_modules/zod/v4/core/json-schema-processors.js +605 -0
  452. package/node_modules/zod/v4/core/json-schema.cjs +2 -0
  453. package/node_modules/zod/v4/core/json-schema.d.cts +88 -0
  454. package/node_modules/zod/v4/core/json-schema.d.ts +88 -0
  455. package/node_modules/zod/v4/core/json-schema.js +1 -0
  456. package/node_modules/zod/v4/core/package.json +6 -0
  457. package/node_modules/zod/v4/core/parse.cjs +131 -0
  458. package/node_modules/zod/v4/core/parse.d.cts +49 -0
  459. package/node_modules/zod/v4/core/parse.d.ts +49 -0
  460. package/node_modules/zod/v4/core/parse.js +93 -0
  461. package/node_modules/zod/v4/core/regexes.cjs +166 -0
  462. package/node_modules/zod/v4/core/regexes.d.cts +79 -0
  463. package/node_modules/zod/v4/core/regexes.d.ts +79 -0
  464. package/node_modules/zod/v4/core/regexes.js +133 -0
  465. package/node_modules/zod/v4/core/registries.cjs +56 -0
  466. package/node_modules/zod/v4/core/registries.d.cts +35 -0
  467. package/node_modules/zod/v4/core/registries.d.ts +35 -0
  468. package/node_modules/zod/v4/core/registries.js +51 -0
  469. package/node_modules/zod/v4/core/schemas.cjs +2124 -0
  470. package/node_modules/zod/v4/core/schemas.d.cts +1146 -0
  471. package/node_modules/zod/v4/core/schemas.d.ts +1146 -0
  472. package/node_modules/zod/v4/core/schemas.js +2093 -0
  473. package/node_modules/zod/v4/core/standard-schema.cjs +2 -0
  474. package/node_modules/zod/v4/core/standard-schema.d.cts +126 -0
  475. package/node_modules/zod/v4/core/standard-schema.d.ts +126 -0
  476. package/node_modules/zod/v4/core/standard-schema.js +1 -0
  477. package/node_modules/zod/v4/core/to-json-schema.cjs +446 -0
  478. package/node_modules/zod/v4/core/to-json-schema.d.cts +114 -0
  479. package/node_modules/zod/v4/core/to-json-schema.d.ts +114 -0
  480. package/node_modules/zod/v4/core/to-json-schema.js +437 -0
  481. package/node_modules/zod/v4/core/util.cjs +710 -0
  482. package/node_modules/zod/v4/core/util.d.cts +199 -0
  483. package/node_modules/zod/v4/core/util.d.ts +199 -0
  484. package/node_modules/zod/v4/core/util.js +651 -0
  485. package/node_modules/zod/v4/core/versions.cjs +8 -0
  486. package/node_modules/zod/v4/core/versions.d.cts +5 -0
  487. package/node_modules/zod/v4/core/versions.d.ts +5 -0
  488. package/node_modules/zod/v4/core/versions.js +5 -0
  489. package/node_modules/zod/v4/index.cjs +22 -0
  490. package/node_modules/zod/v4/index.d.cts +3 -0
  491. package/node_modules/zod/v4/index.d.ts +3 -0
  492. package/node_modules/zod/v4/index.js +3 -0
  493. package/node_modules/zod/v4/locales/ar.cjs +133 -0
  494. package/node_modules/zod/v4/locales/ar.d.cts +5 -0
  495. package/node_modules/zod/v4/locales/ar.d.ts +4 -0
  496. package/node_modules/zod/v4/locales/ar.js +106 -0
  497. package/node_modules/zod/v4/locales/az.cjs +132 -0
  498. package/node_modules/zod/v4/locales/az.d.cts +5 -0
  499. package/node_modules/zod/v4/locales/az.d.ts +4 -0
  500. package/node_modules/zod/v4/locales/az.js +105 -0
  501. package/node_modules/zod/v4/locales/be.cjs +183 -0
  502. package/node_modules/zod/v4/locales/be.d.cts +5 -0
  503. package/node_modules/zod/v4/locales/be.d.ts +4 -0
  504. package/node_modules/zod/v4/locales/be.js +156 -0
  505. package/node_modules/zod/v4/locales/bg.cjs +147 -0
  506. package/node_modules/zod/v4/locales/bg.d.cts +5 -0
  507. package/node_modules/zod/v4/locales/bg.d.ts +4 -0
  508. package/node_modules/zod/v4/locales/bg.js +120 -0
  509. package/node_modules/zod/v4/locales/ca.cjs +134 -0
  510. package/node_modules/zod/v4/locales/ca.d.cts +5 -0
  511. package/node_modules/zod/v4/locales/ca.d.ts +4 -0
  512. package/node_modules/zod/v4/locales/ca.js +107 -0
  513. package/node_modules/zod/v4/locales/cs.cjs +138 -0
  514. package/node_modules/zod/v4/locales/cs.d.cts +5 -0
  515. package/node_modules/zod/v4/locales/cs.d.ts +4 -0
  516. package/node_modules/zod/v4/locales/cs.js +111 -0
  517. package/node_modules/zod/v4/locales/da.cjs +142 -0
  518. package/node_modules/zod/v4/locales/da.d.cts +5 -0
  519. package/node_modules/zod/v4/locales/da.d.ts +4 -0
  520. package/node_modules/zod/v4/locales/da.js +115 -0
  521. package/node_modules/zod/v4/locales/de.cjs +135 -0
  522. package/node_modules/zod/v4/locales/de.d.cts +5 -0
  523. package/node_modules/zod/v4/locales/de.d.ts +4 -0
  524. package/node_modules/zod/v4/locales/de.js +108 -0
  525. package/node_modules/zod/v4/locales/en.cjs +136 -0
  526. package/node_modules/zod/v4/locales/en.d.cts +5 -0
  527. package/node_modules/zod/v4/locales/en.d.ts +4 -0
  528. package/node_modules/zod/v4/locales/en.js +109 -0
  529. package/node_modules/zod/v4/locales/eo.cjs +136 -0
  530. package/node_modules/zod/v4/locales/eo.d.cts +5 -0
  531. package/node_modules/zod/v4/locales/eo.d.ts +4 -0
  532. package/node_modules/zod/v4/locales/eo.js +109 -0
  533. package/node_modules/zod/v4/locales/es.cjs +159 -0
  534. package/node_modules/zod/v4/locales/es.d.cts +5 -0
  535. package/node_modules/zod/v4/locales/es.d.ts +4 -0
  536. package/node_modules/zod/v4/locales/es.js +132 -0
  537. package/node_modules/zod/v4/locales/fa.cjs +141 -0
  538. package/node_modules/zod/v4/locales/fa.d.cts +5 -0
  539. package/node_modules/zod/v4/locales/fa.d.ts +4 -0
  540. package/node_modules/zod/v4/locales/fa.js +114 -0
  541. package/node_modules/zod/v4/locales/fi.cjs +139 -0
  542. package/node_modules/zod/v4/locales/fi.d.cts +5 -0
  543. package/node_modules/zod/v4/locales/fi.d.ts +4 -0
  544. package/node_modules/zod/v4/locales/fi.js +112 -0
  545. package/node_modules/zod/v4/locales/fr-CA.cjs +134 -0
  546. package/node_modules/zod/v4/locales/fr-CA.d.cts +5 -0
  547. package/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
  548. package/node_modules/zod/v4/locales/fr-CA.js +107 -0
  549. package/node_modules/zod/v4/locales/fr.cjs +135 -0
  550. package/node_modules/zod/v4/locales/fr.d.cts +5 -0
  551. package/node_modules/zod/v4/locales/fr.d.ts +4 -0
  552. package/node_modules/zod/v4/locales/fr.js +108 -0
  553. package/node_modules/zod/v4/locales/he.cjs +241 -0
  554. package/node_modules/zod/v4/locales/he.d.cts +5 -0
  555. package/node_modules/zod/v4/locales/he.d.ts +4 -0
  556. package/node_modules/zod/v4/locales/he.js +214 -0
  557. package/node_modules/zod/v4/locales/hu.cjs +135 -0
  558. package/node_modules/zod/v4/locales/hu.d.cts +5 -0
  559. package/node_modules/zod/v4/locales/hu.d.ts +4 -0
  560. package/node_modules/zod/v4/locales/hu.js +108 -0
  561. package/node_modules/zod/v4/locales/hy.cjs +174 -0
  562. package/node_modules/zod/v4/locales/hy.d.cts +5 -0
  563. package/node_modules/zod/v4/locales/hy.d.ts +4 -0
  564. package/node_modules/zod/v4/locales/hy.js +147 -0
  565. package/node_modules/zod/v4/locales/id.cjs +133 -0
  566. package/node_modules/zod/v4/locales/id.d.cts +5 -0
  567. package/node_modules/zod/v4/locales/id.d.ts +4 -0
  568. package/node_modules/zod/v4/locales/id.js +106 -0
  569. package/node_modules/zod/v4/locales/index.cjs +104 -0
  570. package/node_modules/zod/v4/locales/index.d.cts +49 -0
  571. package/node_modules/zod/v4/locales/index.d.ts +49 -0
  572. package/node_modules/zod/v4/locales/index.js +49 -0
  573. package/node_modules/zod/v4/locales/is.cjs +136 -0
  574. package/node_modules/zod/v4/locales/is.d.cts +5 -0
  575. package/node_modules/zod/v4/locales/is.d.ts +4 -0
  576. package/node_modules/zod/v4/locales/is.js +109 -0
  577. package/node_modules/zod/v4/locales/it.cjs +135 -0
  578. package/node_modules/zod/v4/locales/it.d.cts +5 -0
  579. package/node_modules/zod/v4/locales/it.d.ts +4 -0
  580. package/node_modules/zod/v4/locales/it.js +108 -0
  581. package/node_modules/zod/v4/locales/ja.cjs +134 -0
  582. package/node_modules/zod/v4/locales/ja.d.cts +5 -0
  583. package/node_modules/zod/v4/locales/ja.d.ts +4 -0
  584. package/node_modules/zod/v4/locales/ja.js +107 -0
  585. package/node_modules/zod/v4/locales/ka.cjs +139 -0
  586. package/node_modules/zod/v4/locales/ka.d.cts +5 -0
  587. package/node_modules/zod/v4/locales/ka.d.ts +4 -0
  588. package/node_modules/zod/v4/locales/ka.js +112 -0
  589. package/node_modules/zod/v4/locales/kh.cjs +12 -0
  590. package/node_modules/zod/v4/locales/kh.d.cts +5 -0
  591. package/node_modules/zod/v4/locales/kh.d.ts +5 -0
  592. package/node_modules/zod/v4/locales/kh.js +5 -0
  593. package/node_modules/zod/v4/locales/km.cjs +137 -0
  594. package/node_modules/zod/v4/locales/km.d.cts +5 -0
  595. package/node_modules/zod/v4/locales/km.d.ts +4 -0
  596. package/node_modules/zod/v4/locales/km.js +110 -0
  597. package/node_modules/zod/v4/locales/ko.cjs +138 -0
  598. package/node_modules/zod/v4/locales/ko.d.cts +5 -0
  599. package/node_modules/zod/v4/locales/ko.d.ts +4 -0
  600. package/node_modules/zod/v4/locales/ko.js +111 -0
  601. package/node_modules/zod/v4/locales/lt.cjs +230 -0
  602. package/node_modules/zod/v4/locales/lt.d.cts +5 -0
  603. package/node_modules/zod/v4/locales/lt.d.ts +4 -0
  604. package/node_modules/zod/v4/locales/lt.js +203 -0
  605. package/node_modules/zod/v4/locales/mk.cjs +136 -0
  606. package/node_modules/zod/v4/locales/mk.d.cts +5 -0
  607. package/node_modules/zod/v4/locales/mk.d.ts +4 -0
  608. package/node_modules/zod/v4/locales/mk.js +109 -0
  609. package/node_modules/zod/v4/locales/ms.cjs +134 -0
  610. package/node_modules/zod/v4/locales/ms.d.cts +5 -0
  611. package/node_modules/zod/v4/locales/ms.d.ts +4 -0
  612. package/node_modules/zod/v4/locales/ms.js +107 -0
  613. package/node_modules/zod/v4/locales/nl.cjs +137 -0
  614. package/node_modules/zod/v4/locales/nl.d.cts +5 -0
  615. package/node_modules/zod/v4/locales/nl.d.ts +4 -0
  616. package/node_modules/zod/v4/locales/nl.js +110 -0
  617. package/node_modules/zod/v4/locales/no.cjs +135 -0
  618. package/node_modules/zod/v4/locales/no.d.cts +5 -0
  619. package/node_modules/zod/v4/locales/no.d.ts +4 -0
  620. package/node_modules/zod/v4/locales/no.js +108 -0
  621. package/node_modules/zod/v4/locales/ota.cjs +136 -0
  622. package/node_modules/zod/v4/locales/ota.d.cts +5 -0
  623. package/node_modules/zod/v4/locales/ota.d.ts +4 -0
  624. package/node_modules/zod/v4/locales/ota.js +109 -0
  625. package/node_modules/zod/v4/locales/package.json +6 -0
  626. package/node_modules/zod/v4/locales/pl.cjs +136 -0
  627. package/node_modules/zod/v4/locales/pl.d.cts +5 -0
  628. package/node_modules/zod/v4/locales/pl.d.ts +4 -0
  629. package/node_modules/zod/v4/locales/pl.js +109 -0
  630. package/node_modules/zod/v4/locales/ps.cjs +141 -0
  631. package/node_modules/zod/v4/locales/ps.d.cts +5 -0
  632. package/node_modules/zod/v4/locales/ps.d.ts +4 -0
  633. package/node_modules/zod/v4/locales/ps.js +114 -0
  634. package/node_modules/zod/v4/locales/pt.cjs +135 -0
  635. package/node_modules/zod/v4/locales/pt.d.cts +5 -0
  636. package/node_modules/zod/v4/locales/pt.d.ts +4 -0
  637. package/node_modules/zod/v4/locales/pt.js +108 -0
  638. package/node_modules/zod/v4/locales/ru.cjs +183 -0
  639. package/node_modules/zod/v4/locales/ru.d.cts +5 -0
  640. package/node_modules/zod/v4/locales/ru.d.ts +4 -0
  641. package/node_modules/zod/v4/locales/ru.js +156 -0
  642. package/node_modules/zod/v4/locales/sl.cjs +136 -0
  643. package/node_modules/zod/v4/locales/sl.d.cts +5 -0
  644. package/node_modules/zod/v4/locales/sl.d.ts +4 -0
  645. package/node_modules/zod/v4/locales/sl.js +109 -0
  646. package/node_modules/zod/v4/locales/sv.cjs +137 -0
  647. package/node_modules/zod/v4/locales/sv.d.cts +5 -0
  648. package/node_modules/zod/v4/locales/sv.d.ts +4 -0
  649. package/node_modules/zod/v4/locales/sv.js +110 -0
  650. package/node_modules/zod/v4/locales/ta.cjs +137 -0
  651. package/node_modules/zod/v4/locales/ta.d.cts +5 -0
  652. package/node_modules/zod/v4/locales/ta.d.ts +4 -0
  653. package/node_modules/zod/v4/locales/ta.js +110 -0
  654. package/node_modules/zod/v4/locales/th.cjs +137 -0
  655. package/node_modules/zod/v4/locales/th.d.cts +5 -0
  656. package/node_modules/zod/v4/locales/th.d.ts +4 -0
  657. package/node_modules/zod/v4/locales/th.js +110 -0
  658. package/node_modules/zod/v4/locales/tr.cjs +132 -0
  659. package/node_modules/zod/v4/locales/tr.d.cts +5 -0
  660. package/node_modules/zod/v4/locales/tr.d.ts +4 -0
  661. package/node_modules/zod/v4/locales/tr.js +105 -0
  662. package/node_modules/zod/v4/locales/ua.cjs +12 -0
  663. package/node_modules/zod/v4/locales/ua.d.cts +5 -0
  664. package/node_modules/zod/v4/locales/ua.d.ts +5 -0
  665. package/node_modules/zod/v4/locales/ua.js +5 -0
  666. package/node_modules/zod/v4/locales/uk.cjs +135 -0
  667. package/node_modules/zod/v4/locales/uk.d.cts +5 -0
  668. package/node_modules/zod/v4/locales/uk.d.ts +4 -0
  669. package/node_modules/zod/v4/locales/uk.js +108 -0
  670. package/node_modules/zod/v4/locales/ur.cjs +137 -0
  671. package/node_modules/zod/v4/locales/ur.d.cts +5 -0
  672. package/node_modules/zod/v4/locales/ur.d.ts +4 -0
  673. package/node_modules/zod/v4/locales/ur.js +110 -0
  674. package/node_modules/zod/v4/locales/uz.cjs +136 -0
  675. package/node_modules/zod/v4/locales/uz.d.cts +5 -0
  676. package/node_modules/zod/v4/locales/uz.d.ts +4 -0
  677. package/node_modules/zod/v4/locales/uz.js +109 -0
  678. package/node_modules/zod/v4/locales/vi.cjs +135 -0
  679. package/node_modules/zod/v4/locales/vi.d.cts +5 -0
  680. package/node_modules/zod/v4/locales/vi.d.ts +4 -0
  681. package/node_modules/zod/v4/locales/vi.js +108 -0
  682. package/node_modules/zod/v4/locales/yo.cjs +134 -0
  683. package/node_modules/zod/v4/locales/yo.d.cts +5 -0
  684. package/node_modules/zod/v4/locales/yo.d.ts +4 -0
  685. package/node_modules/zod/v4/locales/yo.js +107 -0
  686. package/node_modules/zod/v4/locales/zh-CN.cjs +136 -0
  687. package/node_modules/zod/v4/locales/zh-CN.d.cts +5 -0
  688. package/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
  689. package/node_modules/zod/v4/locales/zh-CN.js +109 -0
  690. package/node_modules/zod/v4/locales/zh-TW.cjs +134 -0
  691. package/node_modules/zod/v4/locales/zh-TW.d.cts +5 -0
  692. package/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
  693. package/node_modules/zod/v4/locales/zh-TW.js +107 -0
  694. package/node_modules/zod/v4/mini/checks.cjs +34 -0
  695. package/node_modules/zod/v4/mini/checks.d.cts +1 -0
  696. package/node_modules/zod/v4/mini/checks.d.ts +1 -0
  697. package/node_modules/zod/v4/mini/checks.js +1 -0
  698. package/node_modules/zod/v4/mini/coerce.cjs +52 -0
  699. package/node_modules/zod/v4/mini/coerce.d.cts +7 -0
  700. package/node_modules/zod/v4/mini/coerce.d.ts +7 -0
  701. package/node_modules/zod/v4/mini/coerce.js +22 -0
  702. package/node_modules/zod/v4/mini/external.cjs +63 -0
  703. package/node_modules/zod/v4/mini/external.d.cts +12 -0
  704. package/node_modules/zod/v4/mini/external.d.ts +12 -0
  705. package/node_modules/zod/v4/mini/external.js +14 -0
  706. package/node_modules/zod/v4/mini/index.cjs +32 -0
  707. package/node_modules/zod/v4/mini/index.d.cts +3 -0
  708. package/node_modules/zod/v4/mini/index.d.ts +3 -0
  709. package/node_modules/zod/v4/mini/index.js +3 -0
  710. package/node_modules/zod/v4/mini/iso.cjs +64 -0
  711. package/node_modules/zod/v4/mini/iso.d.cts +22 -0
  712. package/node_modules/zod/v4/mini/iso.d.ts +22 -0
  713. package/node_modules/zod/v4/mini/iso.js +34 -0
  714. package/node_modules/zod/v4/mini/package.json +6 -0
  715. package/node_modules/zod/v4/mini/parse.cjs +16 -0
  716. package/node_modules/zod/v4/mini/parse.d.cts +1 -0
  717. package/node_modules/zod/v4/mini/parse.d.ts +1 -0
  718. package/node_modules/zod/v4/mini/parse.js +1 -0
  719. package/node_modules/zod/v4/mini/schemas.cjs +1046 -0
  720. package/node_modules/zod/v4/mini/schemas.d.cts +427 -0
  721. package/node_modules/zod/v4/mini/schemas.d.ts +427 -0
  722. package/node_modules/zod/v4/mini/schemas.js +925 -0
  723. package/node_modules/zod/v4/package.json +6 -0
  724. package/node_modules/zod/v4-mini/index.cjs +32 -0
  725. package/node_modules/zod/v4-mini/index.d.cts +3 -0
  726. package/node_modules/zod/v4-mini/index.d.ts +3 -0
  727. package/node_modules/zod/v4-mini/index.js +3 -0
  728. package/node_modules/zod/v4-mini/package.json +6 -0
  729. package/package.json +13 -2
  730. package/src/__tests__/acp-session.test.ts +292 -0
  731. package/src/__tests__/actor-token-service.test.ts +3 -3
  732. package/src/__tests__/always-loaded-tools-guard.test.ts +1 -1
  733. package/src/__tests__/anthropic-provider.test.ts +168 -46
  734. package/src/__tests__/app-builder-tool-scripts.test.ts +0 -1
  735. package/src/__tests__/approval-cascade.test.ts +121 -95
  736. package/src/__tests__/approval-primitive.test.ts +2 -2
  737. package/src/__tests__/approval-routes-http.test.ts +41 -26
  738. package/src/__tests__/asset-materialize-tool.test.ts +9 -16
  739. package/src/__tests__/asset-search-tool.test.ts +5 -12
  740. package/src/__tests__/assistant-attachments.test.ts +27 -0
  741. package/src/__tests__/assistant-event-hub.test.ts +14 -10
  742. package/src/__tests__/assistant-event.test.ts +9 -9
  743. package/src/__tests__/assistant-feature-flag-guardrails.test.ts +6 -1
  744. package/src/__tests__/assistant-feature-flags-integration.test.ts +139 -22
  745. package/src/__tests__/attachments-store.test.ts +1 -1
  746. package/src/__tests__/avatar-e2e.test.ts +16 -6
  747. package/src/__tests__/avatar-generator.test.ts +4 -7
  748. package/src/__tests__/browser-fill-credential.test.ts +17 -18
  749. package/src/__tests__/browser-skill-endstate.test.ts +1 -1
  750. package/src/__tests__/btw-routes.test.ts +21 -9
  751. package/src/__tests__/call-controller.test.ts +229 -202
  752. package/src/__tests__/call-pointer-messages.test.ts +12 -10
  753. package/src/__tests__/call-routes-http.test.ts +2 -2
  754. package/src/__tests__/call-start-guardian-guard.test.ts +0 -1
  755. package/src/__tests__/canonical-guardian-store.test.ts +8 -10
  756. package/src/__tests__/channel-approval-routes.test.ts +5 -5
  757. package/src/__tests__/channel-approval.test.ts +1 -1
  758. package/src/__tests__/channel-approvals.test.ts +13 -13
  759. package/src/__tests__/channel-guardian.test.ts +3 -3
  760. package/src/__tests__/channel-invite-transport.test.ts +5 -1
  761. package/src/__tests__/channel-readiness-routes.test.ts +4 -0
  762. package/src/__tests__/channel-reply-delivery.test.ts +1 -1
  763. package/src/__tests__/checker.test.ts +1 -1
  764. package/src/__tests__/claude-code-skill-regression.test.ts +67 -1
  765. package/src/__tests__/claude-code-tool-profiles.test.ts +1 -1
  766. package/src/__tests__/clipboard.test.ts +6 -6
  767. package/src/__tests__/commit-guarantee.test.ts +9 -9
  768. package/src/__tests__/commit-message-enrichment-service.test.ts +37 -6
  769. package/src/__tests__/computer-use-tools.test.ts +0 -1
  770. package/src/__tests__/config-loader-backfill.test.ts +6 -4
  771. package/src/__tests__/config-schema-cmd.test.ts +258 -0
  772. package/src/__tests__/config-schema.test.ts +38 -30
  773. package/src/__tests__/config-watcher.test.ts +25 -24
  774. package/src/__tests__/confirmation-request-guardian-bridge.test.ts +16 -14
  775. package/src/__tests__/contacts-tools.test.ts +0 -1
  776. package/src/__tests__/context-overflow-approval.test.ts +2 -2
  777. package/src/__tests__/{session-abort-tool-results.test.ts → conversation-abort-tool-results.test.ts} +24 -11
  778. package/src/__tests__/{session-agent-loop-overflow.test.ts → conversation-agent-loop-overflow.test.ts} +234 -59
  779. package/src/__tests__/{session-agent-loop.test.ts → conversation-agent-loop.test.ts} +77 -61
  780. package/src/__tests__/{session-approval-overrides.test.ts → conversation-approval-overrides.test.ts} +23 -23
  781. package/src/__tests__/conversation-attachments.test.ts +227 -0
  782. package/src/__tests__/conversation-attention-telegram.test.ts +2 -2
  783. package/src/__tests__/{session-confirmation-signals.test.ts → conversation-confirmation-signals.test.ts} +62 -52
  784. package/src/__tests__/{session-error.test.ts → conversation-error.test.ts} +65 -57
  785. package/src/__tests__/{session-evictor.test.ts → conversation-evictor.test.ts} +21 -17
  786. package/src/__tests__/{session-history-web-search.test.ts → conversation-history-web-search.test.ts} +34 -10
  787. package/src/__tests__/{session-init.benchmark.test.ts → conversation-init.benchmark.test.ts} +23 -23
  788. package/src/__tests__/{session-load-history-repair.test.ts → conversation-load-history-repair.test.ts} +38 -38
  789. package/src/__tests__/{session-media-retry.test.ts → conversation-media-retry.test.ts} +1 -1
  790. package/src/__tests__/{session-messaging-secret-redirect.test.ts → conversation-messaging-secret-redirect.test.ts} +1 -1
  791. package/src/__tests__/conversation-pairing.test.ts +46 -46
  792. package/src/__tests__/{session-pre-run-repair.test.ts → conversation-pre-run-repair.test.ts} +24 -11
  793. package/src/__tests__/{session-provider-retry-repair.test.ts → conversation-provider-retry-repair.test.ts} +59 -46
  794. package/src/__tests__/{session-queue.test.ts → conversation-queue.test.ts} +241 -220
  795. package/src/__tests__/conversation-routes-guardian-reply.test.ts +26 -26
  796. package/src/__tests__/conversation-routes-slash-commands.test.ts +33 -56
  797. package/src/__tests__/{session-runtime-assembly.test.ts → conversation-runtime-assembly.test.ts} +2 -2
  798. package/src/__tests__/{session-runtime-workspace.test.ts → conversation-runtime-workspace.test.ts} +1 -1
  799. package/src/__tests__/{thread-seed-composer.test.ts → conversation-seed-composer.test.ts} +50 -48
  800. package/src/__tests__/{session-skill-tools.test.ts → conversation-skill-tools.test.ts} +11 -13
  801. package/src/__tests__/{session-slash-queue.test.ts → conversation-slash-queue.test.ts} +55 -46
  802. package/src/__tests__/{session-slash-unknown.test.ts → conversation-slash-unknown.test.ts} +31 -75
  803. package/src/__tests__/conversation-store.test.ts +61 -55
  804. package/src/__tests__/{session-surfaces-deselection.test.ts → conversation-surfaces-deselection.test.ts} +5 -5
  805. package/src/__tests__/{session-surfaces-task-progress.test.ts → conversation-surfaces-task-progress.test.ts} +7 -7
  806. package/src/__tests__/{session-tool-setup-app-refresh.test.ts → conversation-tool-setup-app-refresh.test.ts} +5 -5
  807. package/src/__tests__/{session-tool-setup-memory-scope.test.ts → conversation-tool-setup-memory-scope.test.ts} +4 -4
  808. package/src/__tests__/{session-tool-setup-side-effect-flag.test.ts → conversation-tool-setup-side-effect-flag.test.ts} +4 -4
  809. package/src/__tests__/{session-tool-setup-tools-disabled.test.ts → conversation-tool-setup-tools-disabled.test.ts} +3 -3
  810. package/src/__tests__/{session-undo.test.ts → conversation-undo.test.ts} +1 -1
  811. package/src/__tests__/conversation-unread-route.test.ts +4 -0
  812. package/src/__tests__/{session-usage.test.ts → conversation-usage.test.ts} +1 -1
  813. package/src/__tests__/{session-workspace-cache-state.test.ts → conversation-workspace-cache-state.test.ts} +29 -36
  814. package/src/__tests__/{session-workspace-injection.test.ts → conversation-workspace-injection.test.ts} +58 -51
  815. package/src/__tests__/{session-workspace-tool-tracking.test.ts → conversation-workspace-tool-tracking.test.ts} +54 -47
  816. package/src/__tests__/credential-execution-admin-cli.test.ts +504 -0
  817. package/src/__tests__/credential-execution-api-key-propagation.test.ts +309 -0
  818. package/src/__tests__/credential-execution-approval-bridge.test.ts +535 -0
  819. package/src/__tests__/credential-execution-client.test.ts +380 -0
  820. package/src/__tests__/credential-execution-feature-gates.test.ts +169 -0
  821. package/src/__tests__/credential-execution-managed-contract.test.ts +526 -0
  822. package/src/__tests__/credential-execution-shell-lockdown.test.ts +149 -0
  823. package/src/__tests__/credential-execution-tools.test.ts +279 -0
  824. package/src/__tests__/credential-security-e2e.test.ts +0 -1
  825. package/src/__tests__/credential-security-invariants.test.ts +4 -8
  826. package/src/__tests__/credential-storage-oauth-compat.test.ts +606 -0
  827. package/src/__tests__/credential-storage-static-compat.test.ts +396 -0
  828. package/src/__tests__/credential-vault-unit.test.ts +0 -1
  829. package/src/__tests__/credential-vault.test.ts +0 -1
  830. package/src/__tests__/credentials-cli.test.ts +10 -22
  831. package/src/__tests__/cu-unified-flow.test.ts +8 -6
  832. package/src/__tests__/daemon-assistant-events.test.ts +15 -12
  833. package/src/__tests__/delete-managed-skill-tool.test.ts +0 -1
  834. package/src/__tests__/diagnostics-export.test.ts +30 -0
  835. package/src/__tests__/dynamic-page-surface.test.ts +2 -2
  836. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +19 -5
  837. package/src/__tests__/emit-signal-routing-intent.test.ts +1 -1
  838. package/src/__tests__/event-bus.test.ts +2 -6
  839. package/src/__tests__/file-edit-tool.test.ts +0 -1
  840. package/src/__tests__/file-read-tool.test.ts +0 -1
  841. package/src/__tests__/file-write-tool.test.ts +0 -1
  842. package/src/__tests__/fixtures/mock-signup-server.ts +2 -2
  843. package/src/__tests__/followup-tools.test.ts +25 -26
  844. package/src/__tests__/frontmatter.test.ts +12 -10
  845. package/src/__tests__/guardian-action-late-reply.test.ts +1 -1
  846. package/src/__tests__/guardian-action-no-hardcoded-copy.test.ts +1 -1
  847. package/src/__tests__/guardian-decision-primitive-canonical.test.ts +15 -15
  848. package/src/__tests__/guardian-dispatch.test.ts +9 -9
  849. package/src/__tests__/guardian-grant-minting.test.ts +5 -5
  850. package/src/__tests__/guardian-question-copy.test.ts +10 -8
  851. package/src/__tests__/guardian-routing-invariants.test.ts +61 -61
  852. package/src/__tests__/guardian-routing-state.test.ts +1 -1
  853. package/src/__tests__/guardian-verification-voice-binding.test.ts +1 -1
  854. package/src/__tests__/handlers-user-message-approval-consumption.test.ts +20 -16
  855. package/src/__tests__/headless-browser-interactions.test.ts +18 -17
  856. package/src/__tests__/headless-browser-navigate.test.ts +0 -1
  857. package/src/__tests__/headless-browser-read-tools.test.ts +5 -6
  858. package/src/__tests__/headless-browser-snapshot.test.ts +12 -9
  859. package/src/__tests__/heartbeat-service.test.ts +5 -4
  860. package/src/__tests__/hooks-ts-runner.test.ts +10 -4
  861. package/src/__tests__/host-bash-proxy.test.ts +50 -1
  862. package/src/__tests__/host-cu-proxy.test.ts +1 -1
  863. package/src/__tests__/host-file-edit-tool.test.ts +0 -1
  864. package/src/__tests__/host-file-proxy.test.ts +1 -1
  865. package/src/__tests__/host-file-read-tool.test.ts +0 -1
  866. package/src/__tests__/host-file-write-tool.test.ts +0 -1
  867. package/src/__tests__/host-shell-tool.test.ts +64 -5
  868. package/src/__tests__/http-user-message-parity.test.ts +32 -19
  869. package/src/__tests__/intent-routing.test.ts +71 -84
  870. package/src/__tests__/invite-redemption-service.test.ts +35 -0
  871. package/src/__tests__/keychain-broker-client.test.ts +150 -0
  872. package/src/__tests__/list-messages-attachments.test.ts +4 -4
  873. package/src/__tests__/log-export-workspace.test.ts +133 -60
  874. package/src/__tests__/managed-credential-catalog-cli.test.ts +349 -0
  875. package/src/__tests__/managed-skill-lifecycle.test.ts +14 -2
  876. package/src/__tests__/managed-store.test.ts +0 -38
  877. package/src/__tests__/media-generate-image.test.ts +19 -2
  878. package/src/__tests__/media-reuse-story.e2e.test.ts +82 -70
  879. package/src/__tests__/media-visibility-policy.test.ts +10 -10
  880. package/src/__tests__/memory-query-builder.test.ts +2 -2
  881. package/src/__tests__/memory-regressions.test.ts +67 -30
  882. package/src/__tests__/messaging-send-tool.test.ts +0 -2
  883. package/src/__tests__/no-domain-routing-in-prompt-guard.test.ts +51 -0
  884. package/src/__tests__/notification-broadcaster.test.ts +42 -40
  885. package/src/__tests__/{notification-thread-candidate-validation.test.ts → notification-conversation-candidate-validation.test.ts} +26 -24
  886. package/src/__tests__/{notification-thread-candidates.test.ts → notification-conversation-candidates.test.ts} +15 -15
  887. package/src/__tests__/notification-decision-fallback.test.ts +6 -6
  888. package/src/__tests__/notification-decision-identity.test.ts +209 -0
  889. package/src/__tests__/notification-decision-strategy.test.ts +40 -38
  890. package/src/__tests__/notification-deep-link.test.ts +18 -18
  891. package/src/__tests__/notification-guardian-path.test.ts +13 -10
  892. package/src/__tests__/notification-telegram-adapter.test.ts +5 -5
  893. package/src/__tests__/oauth-store.test.ts +1 -5
  894. package/src/__tests__/permission-types.test.ts +1 -1
  895. package/src/__tests__/playbook-execution.test.ts +0 -1
  896. package/src/__tests__/playbook-tools.test.ts +0 -1
  897. package/src/__tests__/provider-commit-message-generator.test.ts +7 -6
  898. package/src/__tests__/provider-fail-open-selection.test.ts +22 -28
  899. package/src/__tests__/provider-managed-proxy-integration.test.ts +35 -56
  900. package/src/__tests__/provider-registry-ollama.test.ts +13 -2
  901. package/src/__tests__/proxy-approval-callback.test.ts +2 -2
  902. package/src/__tests__/recording-handler.test.ts +20 -20
  903. package/src/__tests__/relay-server.test.ts +8 -5
  904. package/src/__tests__/require-fresh-approval.test.ts +532 -0
  905. package/src/__tests__/resolve-trust-class.test.ts +2 -2
  906. package/src/__tests__/runtime-events-sse-parity.test.ts +21 -21
  907. package/src/__tests__/runtime-events-sse.test.ts +15 -7
  908. package/src/__tests__/scaffold-managed-skill-tool.test.ts +1 -4
  909. package/src/__tests__/schedule-tools.test.ts +0 -1
  910. package/src/__tests__/scoped-approval-grants.test.ts +6 -6
  911. package/src/__tests__/scoped-grant-security-matrix.test.ts +1 -1
  912. package/src/__tests__/{script-proxy-session-manager.test.ts → script-proxy-conversation-manager.test.ts} +4 -1
  913. package/src/__tests__/secret-onetime-send.test.ts +0 -4
  914. package/src/__tests__/secret-response-routing.test.ts +1 -1
  915. package/src/__tests__/secret-routes-managed-proxy.test.ts +79 -2
  916. package/src/__tests__/secret-scanner-executor.test.ts +0 -2
  917. package/src/__tests__/send-endpoint-busy.test.ts +73 -60
  918. package/src/__tests__/send-notification-tool.test.ts +1 -3
  919. package/src/__tests__/sequence-store.test.ts +5 -5
  920. package/src/__tests__/shell-credential-ref.test.ts +1 -2
  921. package/src/__tests__/shell-tool-proxy-mode.test.ts +2 -3
  922. package/src/__tests__/skill-feature-flags-integration.test.ts +1 -2
  923. package/src/__tests__/skill-feature-flags.test.ts +7 -8
  924. package/src/__tests__/skill-include-graph.test.ts +1 -2
  925. package/src/__tests__/skill-load-feature-flag.test.ts +10 -11
  926. package/src/__tests__/skill-load-tool.test.ts +19 -15
  927. package/src/__tests__/skill-projection-feature-flag.test.ts +4 -6
  928. package/src/__tests__/skill-projection.benchmark.test.ts +3 -5
  929. package/src/__tests__/skill-script-runner-host.test.ts +3 -4
  930. package/src/__tests__/skill-script-runner-sandbox.test.ts +3 -4
  931. package/src/__tests__/skill-script-runner.test.ts +0 -1
  932. package/src/__tests__/skill-tool-factory.test.ts +0 -1
  933. package/src/__tests__/skills.test.ts +0 -37
  934. package/src/__tests__/slack-skill.test.ts +0 -4
  935. package/src/__tests__/starter-task-flow.test.ts +3 -3
  936. package/src/__tests__/subagent-manager-notify.test.ts +45 -40
  937. package/src/__tests__/subagent-tools.test.ts +78 -69
  938. package/src/__tests__/subagent-types.test.ts +3 -3
  939. package/src/__tests__/surface-mutex-cleanup.test.ts +1 -1
  940. package/src/__tests__/{swarm-session-integration.test.ts → swarm-conversation-integration.test.ts} +13 -1
  941. package/src/__tests__/swarm-recursion.test.ts +21 -9
  942. package/src/__tests__/swarm-tool.test.ts +14 -1
  943. package/src/__tests__/system-prompt.test.ts +34 -16
  944. package/src/__tests__/task-compiler.test.ts +1 -1
  945. package/src/__tests__/task-management-tools.test.ts +1 -2
  946. package/src/__tests__/terminal-sandbox.test.ts +6 -0
  947. package/src/__tests__/terminal-tools.test.ts +1 -1
  948. package/src/__tests__/token-estimator-accuracy.benchmark.test.ts +2 -2
  949. package/src/__tests__/tool-approval-handler.test.ts +2 -3
  950. package/src/__tests__/tool-audit-listener.test.ts +0 -6
  951. package/src/__tests__/tool-domain-event-publisher.test.ts +0 -11
  952. package/src/__tests__/tool-execution-abort-cleanup.test.ts +67 -14
  953. package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +0 -1
  954. package/src/__tests__/tool-executor-lifecycle-events.test.ts +3 -6
  955. package/src/__tests__/tool-executor-shell-integration.test.ts +0 -1
  956. package/src/__tests__/tool-executor.test.ts +20 -20
  957. package/src/__tests__/tool-grant-request-escalation.test.ts +8 -9
  958. package/src/__tests__/tool-metrics-listener.test.ts +0 -9
  959. package/src/__tests__/tool-notification-listener.test.ts +0 -2
  960. package/src/__tests__/tool-preview-lifecycle.test.ts +6 -6
  961. package/src/__tests__/tool-profiling-listener.test.ts +0 -7
  962. package/src/__tests__/tool-trace-listener.test.ts +0 -11
  963. package/src/__tests__/trace-emitter.test.ts +1 -1
  964. package/src/__tests__/trust-context-guards.test.ts +1 -1
  965. package/src/__tests__/trusted-contact-approval-notifier.test.ts +1 -1
  966. package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +9 -10
  967. package/src/__tests__/turn-commit.test.ts +3 -3
  968. package/src/__tests__/ui-file-upload-surface.test.ts +2 -2
  969. package/src/__tests__/verification-control-plane-policy.test.ts +0 -1
  970. package/src/__tests__/voice-scoped-grant-consumer.test.ts +4 -4
  971. package/src/__tests__/voice-session-bridge.test.ts +31 -31
  972. package/src/__tests__/workspace-git-service.test.ts +49 -2
  973. package/src/__tests__/workspace-lifecycle.test.ts +6 -6
  974. package/src/__tests__/workspace-migration-add-send-diagnostics.test.ts +59 -0
  975. package/src/__tests__/workspace-migration-avatar-rename.test.ts +128 -0
  976. package/src/__tests__/workspace-migration-extract-collect-usage-data.test.ts +179 -0
  977. package/src/__tests__/workspace-migration-seed-device-id.test.ts +328 -0
  978. package/src/__tests__/workspace-migrations-runner.test.ts +293 -0
  979. package/src/acp/agent-process.ts +201 -0
  980. package/src/acp/client-handler.ts +361 -0
  981. package/src/acp/index.ts +44 -0
  982. package/src/acp/session-manager.ts +348 -0
  983. package/src/acp/types.ts +79 -0
  984. package/src/approvals/AGENTS.md +2 -2
  985. package/src/approvals/approval-primitive.ts +4 -4
  986. package/src/approvals/guardian-decision-primitive.ts +7 -7
  987. package/src/approvals/guardian-request-resolvers.ts +1 -1
  988. package/src/avatar/ascii-renderer.ts +63 -0
  989. package/src/avatar/character-components.ts +454 -0
  990. package/src/avatar/png-renderer.ts +17 -0
  991. package/src/avatar/svg-compositor.ts +90 -0
  992. package/src/avatar/traits-png-sync.ts +133 -0
  993. package/src/calls/call-controller.ts +8 -8
  994. package/src/calls/call-conversation-messages.ts +1 -1
  995. package/src/calls/call-domain.ts +4 -4
  996. package/src/calls/call-pointer-message-composer.ts +2 -2
  997. package/src/calls/call-pointer-messages.ts +10 -10
  998. package/src/calls/guardian-action-sweep.ts +3 -3
  999. package/src/calls/guardian-dispatch.ts +7 -7
  1000. package/src/calls/guardian-question-copy.ts +7 -7
  1001. package/src/calls/relay-server.ts +4 -4
  1002. package/src/calls/twilio-routes.ts +1 -1
  1003. package/src/calls/voice-session-bridge.ts +59 -56
  1004. package/src/cli/AGENTS.md +2 -2
  1005. package/src/cli/commands/avatar.ts +281 -0
  1006. package/src/cli/commands/bash.ts +6 -3
  1007. package/src/cli/commands/channel-verification-sessions.ts +7 -4
  1008. package/src/cli/commands/completions.ts +4 -4
  1009. package/src/cli/commands/config.ts +52 -7
  1010. package/src/cli/commands/{sessions.ts → conversations.ts} +43 -40
  1011. package/src/cli/commands/credential-execution.ts +345 -0
  1012. package/src/cli/commands/credentials.ts +106 -6
  1013. package/src/cli/commands/doctor.ts +9 -3
  1014. package/src/cli/commands/keys.ts +30 -0
  1015. package/src/cli/commands/mcp.ts +2 -2
  1016. package/src/cli/commands/memory.ts +8 -8
  1017. package/src/cli/commands/notifications.ts +2 -2
  1018. package/src/cli/commands/oauth/connections.ts +98 -17
  1019. package/src/cli/commands/oauth/providers.ts +45 -8
  1020. package/src/cli/commands/shotgun.ts +250 -0
  1021. package/src/cli/main-screen.tsx +3 -29
  1022. package/src/cli/program.ts +13 -3
  1023. package/src/cli/reference.ts +4 -2
  1024. package/src/cli.ts +159 -235
  1025. package/src/config/acp-schema.ts +47 -0
  1026. package/src/config/bundled-skills/_shared/CLI_RETRIEVAL_PATTERN.md +14 -12
  1027. package/src/config/bundled-skills/acp/SKILL.md +58 -0
  1028. package/src/config/bundled-skills/acp/TOOLS.json +79 -0
  1029. package/src/config/bundled-skills/{settings/tools/set-avatar.ts → acp/tools/acp-abort.ts} +2 -2
  1030. package/src/config/bundled-skills/acp/tools/acp-spawn.ts +12 -0
  1031. package/src/config/bundled-skills/acp/tools/acp-status.ts +12 -0
  1032. package/src/config/bundled-skills/app-builder/SKILL.md +22 -6
  1033. package/src/config/bundled-skills/browser/SKILL.md +2 -1
  1034. package/src/config/bundled-skills/browser/TOOLS.json +2 -2
  1035. package/src/config/bundled-skills/browser/tools/browser-wait-for-download.ts +1 -1
  1036. package/src/config/bundled-skills/chatgpt-import/SKILL.md +0 -1
  1037. package/src/config/bundled-skills/claude-code/SKILL.md +1 -2
  1038. package/src/config/bundled-skills/claude-code/TOOLS.json +1 -1
  1039. package/src/config/bundled-skills/computer-use/SKILL.md +1 -3
  1040. package/src/config/bundled-skills/contacts/SKILL.md +0 -1
  1041. package/src/config/bundled-skills/contacts/TOOLS.json +4 -0
  1042. package/src/config/bundled-skills/contacts/tools/google-contacts.ts +5 -1
  1043. package/src/config/bundled-skills/followups/SKILL.md +1 -1
  1044. package/src/config/bundled-skills/followups/TOOLS.json +7 -7
  1045. package/src/config/bundled-skills/gmail/SKILL.md +0 -1
  1046. package/src/config/bundled-skills/google-calendar/SKILL.md +0 -1
  1047. package/src/config/bundled-skills/google-calendar/tools/calendar-check-availability.ts +1 -1
  1048. package/src/config/bundled-skills/google-calendar/tools/calendar-create-event.ts +1 -1
  1049. package/src/config/bundled-skills/google-calendar/tools/calendar-get-event.ts +1 -1
  1050. package/src/config/bundled-skills/google-calendar/tools/calendar-list-events.ts +1 -1
  1051. package/src/config/bundled-skills/google-calendar/tools/calendar-rsvp.ts +1 -1
  1052. package/src/config/bundled-skills/google-calendar/tools/shared.ts +1 -5
  1053. package/src/config/bundled-skills/image-studio/SKILL.md +0 -1
  1054. package/src/config/bundled-skills/image-studio/tools/media-generate-image.ts +30 -13
  1055. package/src/config/bundled-skills/media-processing/services/preprocess.ts +5 -1
  1056. package/src/config/bundled-skills/media-processing/tools/analyze-keyframes.ts +3 -3
  1057. package/src/config/bundled-skills/messaging/SKILL.md +11 -13
  1058. package/src/config/bundled-skills/messaging/TOOLS.json +0 -4
  1059. package/src/config/bundled-skills/notifications/SKILL.md +4 -5
  1060. package/src/config/bundled-skills/notifications/TOOLS.json +1 -1
  1061. package/src/config/bundled-skills/notifications/tools/send-notification.ts +2 -2
  1062. package/src/config/bundled-skills/orchestration/SKILL.md +4 -1
  1063. package/src/config/bundled-skills/phone-calls/SKILL.md +20 -8
  1064. package/src/config/bundled-skills/schedule/SKILL.md +1 -1
  1065. package/src/config/bundled-skills/screen-watch/SKILL.md +0 -1
  1066. package/src/config/bundled-skills/sequences/SKILL.md +0 -1
  1067. package/src/config/bundled-skills/sequences/TOOLS.json +4 -4
  1068. package/src/config/bundled-skills/sequences/tools/sequence-create.ts +2 -1
  1069. package/src/config/bundled-skills/sequences/tools/sequence-update.ts +2 -1
  1070. package/src/config/bundled-skills/settings/SKILL.md +2 -3
  1071. package/src/config/bundled-skills/settings/TOOLS.json +0 -22
  1072. package/src/config/bundled-skills/skill-management/SKILL.md +0 -1
  1073. package/src/config/bundled-skills/skill-management/TOOLS.json +0 -8
  1074. package/src/config/bundled-skills/slack/SKILL.md +0 -1
  1075. package/src/config/bundled-skills/subagent/SKILL.md +2 -2
  1076. package/src/config/bundled-skills/subagent/TOOLS.json +2 -2
  1077. package/src/config/bundled-skills/transcribe/tools/transcribe-media.ts +35 -5
  1078. package/src/config/bundled-tool-registry.ts +9 -2
  1079. package/src/config/env.ts +44 -2
  1080. package/src/config/feature-flag-registry.json +161 -25
  1081. package/src/config/loader.ts +3 -0
  1082. package/src/config/raw-config-utils.ts +30 -0
  1083. package/src/config/schema-utils.ts +27 -0
  1084. package/src/config/schema.ts +54 -39
  1085. package/src/config/schemas/calls.ts +219 -152
  1086. package/src/config/schemas/channels.ts +118 -71
  1087. package/src/config/schemas/elevenlabs.ts +39 -24
  1088. package/src/config/schemas/heartbeat.ts +13 -4
  1089. package/src/config/schemas/inference.ts +155 -99
  1090. package/src/config/schemas/ingress.ts +100 -64
  1091. package/src/config/schemas/logging.ts +24 -15
  1092. package/src/config/schemas/mcp.ts +95 -44
  1093. package/src/config/schemas/memory-lifecycle.ts +70 -50
  1094. package/src/config/schemas/memory-processing.ts +46 -25
  1095. package/src/config/schemas/memory-retrieval.ts +206 -139
  1096. package/src/config/schemas/memory-storage.ts +113 -79
  1097. package/src/config/schemas/memory.ts +33 -28
  1098. package/src/config/schemas/notifications.ts +12 -7
  1099. package/src/config/schemas/platform.ts +62 -39
  1100. package/src/config/schemas/sandbox.ts +10 -5
  1101. package/src/config/schemas/security.ts +72 -41
  1102. package/src/config/schemas/services.ts +54 -0
  1103. package/src/config/schemas/skills.ts +131 -81
  1104. package/src/config/schemas/swarm.ts +78 -46
  1105. package/src/config/schemas/timeouts.ts +64 -41
  1106. package/src/config/schemas/workspace-git.ts +219 -162
  1107. package/src/config/skill-state.ts +6 -47
  1108. package/src/config/skills.ts +66 -271
  1109. package/src/config/types.ts +5 -0
  1110. package/src/contacts/contact-store.ts +19 -7
  1111. package/src/contacts/contacts-write.ts +13 -2
  1112. package/src/context/window-manager.ts +1 -1
  1113. package/src/credential-execution/approval-bridge.ts +350 -0
  1114. package/src/credential-execution/client.ts +414 -0
  1115. package/src/credential-execution/executable-discovery.ts +169 -0
  1116. package/src/credential-execution/feature-gates.ts +75 -0
  1117. package/src/credential-execution/managed-catalog.ts +155 -0
  1118. package/src/credential-execution/process-manager.ts +451 -0
  1119. package/src/daemon/approval-generators.ts +13 -7
  1120. package/src/daemon/assistant-attachments.ts +3 -3
  1121. package/src/daemon/config-watcher.ts +21 -13
  1122. package/src/daemon/context-overflow-policy.ts +5 -5
  1123. package/src/daemon/context-overflow-reducer.ts +2 -2
  1124. package/src/daemon/{session-agent-loop-handlers.ts → conversation-agent-loop-handlers.ts} +21 -21
  1125. package/src/daemon/{session-agent-loop.ts → conversation-agent-loop.ts} +93 -72
  1126. package/src/daemon/{session-attachments.ts → conversation-attachments.ts} +35 -9
  1127. package/src/daemon/{session-error.ts → conversation-error.ts} +34 -24
  1128. package/src/daemon/conversation-evictor.ts +204 -0
  1129. package/src/daemon/{session-history.ts → conversation-history.ts} +37 -33
  1130. package/src/daemon/{session-lifecycle.ts → conversation-lifecycle.ts} +16 -16
  1131. package/src/daemon/{session-memory.ts → conversation-memory.ts} +1 -1
  1132. package/src/daemon/{session-messaging.ts → conversation-messaging.ts} +9 -9
  1133. package/src/daemon/{session-notifiers.ts → conversation-notifiers.ts} +25 -25
  1134. package/src/daemon/{session-process.ts → conversation-process.ts} +128 -131
  1135. package/src/daemon/{session-queue-manager.ts → conversation-queue-manager.ts} +11 -8
  1136. package/src/daemon/{session-runtime-assembly.ts → conversation-runtime-assembly.ts} +17 -11
  1137. package/src/daemon/{session-skill-tools.ts → conversation-skill-tools.ts} +18 -18
  1138. package/src/daemon/{session-slash.ts → conversation-slash.ts} +35 -62
  1139. package/src/daemon/{session-surfaces.ts → conversation-surfaces.ts} +34 -34
  1140. package/src/daemon/{session-tool-setup.ts → conversation-tool-setup.ts} +41 -36
  1141. package/src/daemon/{session-usage.ts → conversation-usage.ts} +1 -1
  1142. package/src/daemon/{session-workspace.ts → conversation-workspace.ts} +3 -3
  1143. package/src/daemon/{session.ts → conversation.ts} +96 -73
  1144. package/src/daemon/doordash-steps.ts +9 -8
  1145. package/src/daemon/guardian-action-generators.ts +8 -2
  1146. package/src/daemon/handlers/config-channels.ts +7 -4
  1147. package/src/daemon/handlers/config-model.ts +33 -32
  1148. package/src/daemon/handlers/config-slack-channel.ts +28 -6
  1149. package/src/daemon/handlers/config-voice.ts +1 -2
  1150. package/src/daemon/handlers/{session-history.ts → conversation-history.ts} +4 -4
  1151. package/src/daemon/handlers/{sessions.ts → conversations.ts} +163 -183
  1152. package/src/daemon/handlers/recording.ts +20 -20
  1153. package/src/daemon/handlers/shared.ts +17 -17
  1154. package/src/daemon/handlers/skills.ts +164 -21
  1155. package/src/daemon/history-repair.ts +1 -1
  1156. package/src/daemon/host-bash-proxy.ts +11 -3
  1157. package/src/daemon/host-cu-proxy.ts +2 -2
  1158. package/src/daemon/host-file-proxy.ts +3 -3
  1159. package/src/daemon/lifecycle.ts +103 -78
  1160. package/src/daemon/main.ts +4 -0
  1161. package/src/daemon/media-visibility-policy.ts +10 -10
  1162. package/src/daemon/message-protocol.ts +11 -8
  1163. package/src/daemon/message-types/acp.ts +66 -0
  1164. package/src/daemon/message-types/computer-use.ts +4 -4
  1165. package/src/daemon/message-types/{sessions.ts → conversations.ts} +74 -80
  1166. package/src/daemon/message-types/documents.ts +2 -2
  1167. package/src/daemon/message-types/host-bash.ts +3 -1
  1168. package/src/daemon/message-types/host-cu.ts +1 -1
  1169. package/src/daemon/message-types/host-file.ts +3 -3
  1170. package/src/daemon/message-types/integrations.ts +2 -2
  1171. package/src/daemon/message-types/messages.ts +23 -23
  1172. package/src/daemon/message-types/notifications.ts +5 -5
  1173. package/src/daemon/message-types/settings.ts +1 -1
  1174. package/src/daemon/message-types/shared.ts +5 -3
  1175. package/src/daemon/message-types/skills.ts +1 -10
  1176. package/src/daemon/message-types/subagents.ts +2 -2
  1177. package/src/daemon/message-types/surfaces.ts +7 -7
  1178. package/src/daemon/message-types/work-items.ts +4 -4
  1179. package/src/daemon/parse-actual-tokens-from-error.test.ts +3 -7
  1180. package/src/daemon/providers-setup.ts +79 -0
  1181. package/src/daemon/seed-files.ts +7 -26
  1182. package/src/daemon/server.ts +452 -209
  1183. package/src/daemon/startup-error.ts +126 -0
  1184. package/src/daemon/tool-side-effects.ts +2 -18
  1185. package/src/daemon/trace-emitter.ts +3 -3
  1186. package/src/daemon/verification-session-intent.ts +1 -1
  1187. package/src/daemon/watch-handler.ts +23 -21
  1188. package/src/email/feature-gate.ts +23 -0
  1189. package/src/events/domain-events.ts +2 -8
  1190. package/src/events/tool-domain-event-publisher.ts +0 -8
  1191. package/src/events/tool-metrics-listener.ts +0 -7
  1192. package/src/export/formatter.ts +1 -1
  1193. package/src/followups/followup-store.ts +8 -5
  1194. package/src/followups/types.ts +2 -2
  1195. package/src/heartbeat/heartbeat-service.ts +1 -1
  1196. package/src/hooks/discovery.ts +3 -0
  1197. package/src/hooks/manager.ts +27 -2
  1198. package/src/hooks/types.ts +4 -1
  1199. package/src/inbound/platform-callback-registration.ts +24 -2
  1200. package/src/instrument.ts +37 -19
  1201. package/src/media/app-icon-generator.ts +3 -3
  1202. package/src/media/avatar-router.ts +3 -3
  1203. package/src/memory/app-git-service.ts +3 -3
  1204. package/src/memory/attachments-store.ts +92 -27
  1205. package/src/memory/canonical-guardian-store.ts +37 -27
  1206. package/src/memory/channel-verification-sessions.ts +6 -6
  1207. package/src/memory/checkpoints.ts +5 -0
  1208. package/src/memory/conversation-bootstrap.ts +2 -2
  1209. package/src/memory/conversation-crud.ts +147 -22
  1210. package/src/memory/conversation-key-store.ts +40 -4
  1211. package/src/memory/conversation-queries.ts +8 -6
  1212. package/src/memory/db-init.ts +46 -2
  1213. package/src/memory/embedding-backend.ts +71 -11
  1214. package/src/memory/external-conversation-store.ts +1 -1
  1215. package/src/memory/guardian-action-store.ts +3 -3
  1216. package/src/memory/indexer.ts +20 -9
  1217. package/src/memory/invite-store.ts +4 -4
  1218. package/src/memory/items-extractor.ts +48 -4
  1219. package/src/memory/job-handlers/backfill.ts +15 -8
  1220. package/src/memory/job-handlers/capability-cards.ts +420 -0
  1221. package/src/memory/job-handlers/cleanup.ts +1 -1
  1222. package/src/memory/job-handlers/thread-starters.ts +348 -0
  1223. package/src/memory/jobs-store.ts +4 -7
  1224. package/src/memory/jobs-worker.ts +8 -0
  1225. package/src/memory/migrations/033-scoped-approval-grants.ts +4 -4
  1226. package/src/memory/migrations/102-alter-table-columns.ts +5 -0
  1227. package/src/memory/migrations/105-contacts-and-triage.ts +3 -3
  1228. package/src/memory/migrations/111-media-assets.ts +1 -106
  1229. package/src/memory/migrations/121-canonical-guardian-requests.ts +5 -5
  1230. package/src/memory/migrations/159-drop-contact-interaction-columns.ts +5 -0
  1231. package/src/memory/migrations/161-drop-orphaned-media-tables.ts +18 -0
  1232. package/src/memory/migrations/162-guardian-timestamps-epoch-ms.ts +283 -0
  1233. package/src/memory/migrations/163-rename-notification-thread-columns.ts +35 -0
  1234. package/src/memory/migrations/164-rename-conversation-type-column.ts +19 -0
  1235. package/src/memory/migrations/165-rename-inbox-thread-state-table.ts +15 -0
  1236. package/src/memory/migrations/166-rename-followups-thread-id.ts +20 -0
  1237. package/src/memory/migrations/167-rename-sequence-enrollments-thread-id.ts +20 -0
  1238. package/src/memory/migrations/168-rename-sequence-steps-reply-key.ts +17 -0
  1239. package/src/memory/migrations/169-rename-gmail-provider-key-to-google.ts +64 -0
  1240. package/src/memory/migrations/170-thread-starters-table.ts +32 -0
  1241. package/src/memory/migrations/171-capability-card-columns.ts +43 -0
  1242. package/src/memory/migrations/index.ts +11 -0
  1243. package/src/memory/migrations/registry.ts +19 -0
  1244. package/src/memory/schema/calls.ts +1 -68
  1245. package/src/memory/schema/contacts.ts +3 -3
  1246. package/src/memory/schema/conversations.ts +2 -2
  1247. package/src/memory/schema/guardian.ts +9 -9
  1248. package/src/memory/schema/memory-core.ts +37 -0
  1249. package/src/memory/schema/notifications.ts +4 -4
  1250. package/src/memory/schema/tasks.ts +1 -1
  1251. package/src/memory/scoped-approval-grants.ts +14 -14
  1252. package/src/memory/search/types.ts +3 -3
  1253. package/src/memory/thread-starters-cadence.ts +107 -0
  1254. package/src/memory/turn-events-store.ts +48 -0
  1255. package/src/messaging/providers/telegram-bot/adapter.ts +1 -1
  1256. package/src/notifications/AGENTS.md +1 -1
  1257. package/src/notifications/README.md +103 -103
  1258. package/src/notifications/adapters/slack.ts +3 -3
  1259. package/src/notifications/adapters/telegram.ts +3 -3
  1260. package/src/notifications/broadcaster.ts +40 -40
  1261. package/src/notifications/{thread-candidates.ts → conversation-candidates.ts} +18 -18
  1262. package/src/notifications/conversation-pairing.ts +35 -31
  1263. package/src/notifications/{thread-seed-composer.ts → conversation-seed-composer.ts} +9 -9
  1264. package/src/notifications/decision-engine.ts +105 -82
  1265. package/src/notifications/deliveries-store.ts +14 -14
  1266. package/src/notifications/emit-signal.ts +13 -13
  1267. package/src/notifications/signal.ts +2 -2
  1268. package/src/notifications/types.ts +16 -12
  1269. package/src/oauth/byo-connection.test.ts +1 -1
  1270. package/src/oauth/oauth-store.ts +37 -15
  1271. package/src/oauth/platform-connection.test.ts +2 -2
  1272. package/src/oauth/provider-behaviors.ts +2 -1
  1273. package/src/oauth/seed-providers.ts +3 -11
  1274. package/src/oauth/token-persistence.ts +41 -25
  1275. package/src/outbound-proxy/index.ts +27 -3
  1276. package/src/permissions/checker.ts +15 -2
  1277. package/src/permissions/prompter.ts +3 -3
  1278. package/src/permissions/secret-prompter.ts +2 -2
  1279. package/src/permissions/types.ts +2 -2
  1280. package/src/prompts/__tests__/build-cli-reference-section.test.ts +60 -9
  1281. package/src/prompts/system-prompt.ts +177 -236
  1282. package/src/prompts/templates/SOUL.md +1 -1
  1283. package/src/prompts/templates/UPDATES.md +0 -12
  1284. package/src/prompts/update-bulletin-format.ts +16 -0
  1285. package/src/prompts/update-bulletin.ts +18 -6
  1286. package/src/providers/anthropic/client.ts +135 -11
  1287. package/src/providers/managed-proxy/context.ts +26 -0
  1288. package/src/providers/provider-availability.ts +39 -0
  1289. package/src/providers/provider-send-message.ts +20 -6
  1290. package/src/providers/registry.ts +121 -82
  1291. package/src/runtime/AGENTS.md +5 -5
  1292. package/src/runtime/access-request-helper.ts +2 -2
  1293. package/src/runtime/actor-trust-resolver.ts +2 -2
  1294. package/src/runtime/approval-conversation-turn.ts +2 -2
  1295. package/src/runtime/assistant-event-hub.ts +9 -9
  1296. package/src/runtime/assistant-event.ts +5 -5
  1297. package/src/runtime/auth/__tests__/context.test.ts +2 -2
  1298. package/src/runtime/auth/__tests__/external-assistant-id.test.ts +88 -0
  1299. package/src/runtime/auth/__tests__/guard-tests.test.ts +60 -0
  1300. package/src/runtime/auth/__tests__/local-auth-context.test.ts +4 -4
  1301. package/src/runtime/auth/__tests__/middleware.test.ts +2 -2
  1302. package/src/runtime/auth/__tests__/subject.test.ts +6 -6
  1303. package/src/runtime/auth/context.ts +1 -1
  1304. package/src/runtime/auth/credential-service.ts +1 -1
  1305. package/src/runtime/auth/external-assistant-id.ts +36 -17
  1306. package/src/runtime/auth/route-policy.ts +17 -0
  1307. package/src/runtime/auth/subject.ts +7 -7
  1308. package/src/runtime/auth/types.ts +1 -1
  1309. package/src/runtime/channel-approval-types.ts +1 -1
  1310. package/src/runtime/channel-approvals.ts +9 -6
  1311. package/src/runtime/channel-invite-transport.ts +10 -7
  1312. package/src/runtime/channel-readiness-service.ts +5 -2
  1313. package/src/runtime/channel-retry-sweep.ts +1 -1
  1314. package/src/runtime/channel-verification-service.ts +2 -2
  1315. package/src/runtime/confirmation-request-guardian-bridge.ts +3 -3
  1316. package/src/runtime/{session-approval-overrides.ts → conversation-approval-overrides.ts} +6 -6
  1317. package/src/runtime/guardian-action-grant-minter.ts +2 -4
  1318. package/src/runtime/guardian-action-service.ts +2 -2
  1319. package/src/runtime/guardian-decision-types.ts +13 -8
  1320. package/src/runtime/guardian-reply-router.ts +4 -4
  1321. package/src/runtime/http-server.ts +70 -33
  1322. package/src/runtime/http-types.ts +19 -15
  1323. package/src/runtime/invite-redemption-service.ts +8 -3
  1324. package/src/runtime/local-actor-identity.ts +9 -7
  1325. package/src/runtime/pending-interactions.ts +8 -8
  1326. package/src/runtime/routes/acp-routes.ts +170 -0
  1327. package/src/runtime/routes/approval-routes.ts +3 -3
  1328. package/src/runtime/routes/approval-strategies/guardian-callback-strategy.ts +1 -1
  1329. package/src/runtime/routes/attachment-routes.ts +2 -2
  1330. package/src/runtime/routes/avatar-routes.ts +83 -0
  1331. package/src/runtime/routes/btw-routes.ts +27 -13
  1332. package/src/runtime/routes/canonical-guardian-expiry-sweep.ts +1 -1
  1333. package/src/runtime/routes/channel-route-shared.ts +5 -3
  1334. package/src/runtime/routes/channel-verification-routes.ts +3 -3
  1335. package/src/runtime/routes/{session-management-routes.ts → conversation-management-routes.ts} +103 -22
  1336. package/src/runtime/routes/{session-query-routes.ts → conversation-query-routes.ts} +22 -19
  1337. package/src/runtime/routes/conversation-routes.ts +147 -164
  1338. package/src/runtime/routes/debug-routes.ts +8 -2
  1339. package/src/runtime/routes/diagnostics-routes.ts +16 -17
  1340. package/src/runtime/routes/events-routes.ts +1 -1
  1341. package/src/runtime/routes/guardian-action-routes.ts +4 -4
  1342. package/src/runtime/routes/guardian-approval-interception.ts +1 -1
  1343. package/src/runtime/routes/host-bash-routes.ts +1 -1
  1344. package/src/runtime/routes/host-cu-routes.ts +1 -1
  1345. package/src/runtime/routes/host-file-routes.ts +1 -1
  1346. package/src/runtime/routes/inbound-message-handler.ts +1 -1
  1347. package/src/runtime/routes/inbound-stages/background-dispatch.ts +1 -1
  1348. package/src/runtime/routes/inbound-stages/escalation-intercept.ts +1 -1
  1349. package/src/runtime/routes/inbound-stages/secret-ingress-check.ts +1 -1
  1350. package/src/runtime/routes/log-export-routes.ts +360 -40
  1351. package/src/runtime/routes/recording-routes.ts +5 -5
  1352. package/src/runtime/routes/schedule-routes.ts +13 -7
  1353. package/src/runtime/routes/secret-routes.ts +178 -18
  1354. package/src/runtime/routes/settings-routes.ts +23 -10
  1355. package/src/runtime/routes/skills-routes.ts +38 -0
  1356. package/src/runtime/routes/subagents-routes.ts +10 -10
  1357. package/src/runtime/routes/surface-action-routes.ts +45 -45
  1358. package/src/runtime/routes/surface-content-routes.ts +18 -18
  1359. package/src/runtime/routes/thread-starter-routes.ts +294 -0
  1360. package/src/runtime/routes/watch-routes.ts +6 -6
  1361. package/src/runtime/routes/work-items-routes.test.ts +109 -0
  1362. package/src/runtime/routes/work-items-routes.ts +47 -46
  1363. package/src/runtime/tool-grant-request-helper.ts +3 -3
  1364. package/src/runtime/trust-context-resolver.ts +1 -1
  1365. package/src/schedule/scheduler.ts +14 -12
  1366. package/src/security/credential-backend.ts +29 -5
  1367. package/src/security/encrypted-store.ts +64 -5
  1368. package/src/security/keychain-broker-client.ts +45 -12
  1369. package/src/security/secure-keys.ts +46 -0
  1370. package/src/security/token-manager.ts +67 -167
  1371. package/src/sequence/engine.ts +12 -11
  1372. package/src/sequence/reply-matcher.ts +16 -13
  1373. package/src/sequence/store.ts +10 -7
  1374. package/src/sequence/types.ts +2 -2
  1375. package/src/signals/bash.ts +36 -3
  1376. package/src/signals/cancel.ts +14 -17
  1377. package/src/signals/confirm.ts +4 -7
  1378. package/src/signals/conversation-undo.ts +16 -20
  1379. package/src/signals/event-stream.ts +187 -0
  1380. package/src/signals/shotgun.ts +200 -0
  1381. package/src/signals/trust-rule.ts +3 -6
  1382. package/src/signals/user-message.ts +146 -0
  1383. package/src/skills/catalog-install.ts +1 -1
  1384. package/src/skills/managed-store.ts +0 -13
  1385. package/src/subagent/manager.ts +89 -71
  1386. package/src/subagent/types.ts +5 -5
  1387. package/src/swarm/backend-claude-code.ts +1 -1
  1388. package/src/tasks/SPEC.md +5 -5
  1389. package/src/tasks/task-runner.ts +1 -1
  1390. package/src/telemetry/types.ts +26 -0
  1391. package/src/telemetry/usage-telemetry-reporter.test.ts +145 -24
  1392. package/src/telemetry/usage-telemetry-reporter.ts +79 -42
  1393. package/src/tools/AGENTS.md +26 -0
  1394. package/src/tools/acp/abort.ts +32 -0
  1395. package/src/tools/acp/spawn.ts +70 -0
  1396. package/src/tools/acp/status.ts +31 -0
  1397. package/src/tools/assets/materialize.ts +34 -19
  1398. package/src/tools/assets/search.ts +13 -13
  1399. package/src/tools/browser/browser-execution.ts +63 -33
  1400. package/src/tools/browser/browser-handoff.ts +12 -9
  1401. package/src/tools/browser/browser-manager.ts +88 -78
  1402. package/src/tools/browser/browser-screencast.ts +30 -28
  1403. package/src/tools/calls/call-start.ts +1 -1
  1404. package/src/tools/calls/call-status.ts +1 -1
  1405. package/src/tools/claude-code/claude-code.ts +9 -9
  1406. package/src/tools/credential-execution/make-authenticated-request.ts +198 -0
  1407. package/src/tools/credential-execution/manage-secure-command-tool.ts +372 -0
  1408. package/src/tools/credential-execution/run-authenticated-command.ts +261 -0
  1409. package/src/tools/credentials/broker.ts +1 -1
  1410. package/src/tools/credentials/metadata-store.ts +46 -227
  1411. package/src/tools/credentials/resolve.ts +2 -1
  1412. package/src/tools/document/document-tool.ts +3 -3
  1413. package/src/tools/executor.ts +144 -9
  1414. package/src/tools/followups/followup_create.ts +8 -7
  1415. package/src/tools/followups/followup_list.ts +3 -1
  1416. package/src/tools/followups/followup_resolve.ts +8 -7
  1417. package/src/tools/host-filesystem/edit.ts +1 -1
  1418. package/src/tools/host-filesystem/read.ts +1 -1
  1419. package/src/tools/host-filesystem/write.ts +1 -1
  1420. package/src/tools/host-terminal/host-shell.ts +54 -7
  1421. package/src/tools/memory/definitions.ts +1 -1
  1422. package/src/tools/memory/handlers.ts +1 -1
  1423. package/src/tools/network/script-proxy/session-manager.ts +290 -515
  1424. package/src/tools/network/web-fetch.ts +1 -1
  1425. package/src/tools/network/web-search.ts +4 -4
  1426. package/src/tools/permission-checker.ts +38 -23
  1427. package/src/tools/registry.ts +14 -2
  1428. package/src/tools/secret-detection-handler.ts +3 -8
  1429. package/src/tools/side-effects.ts +2 -1
  1430. package/src/tools/skills/load.ts +15 -1
  1431. package/src/tools/skills/sandbox-runner.ts +0 -1
  1432. package/src/tools/skills/scaffold-managed.ts +0 -8
  1433. package/src/tools/subagent/abort.ts +1 -1
  1434. package/src/tools/subagent/message.ts +2 -2
  1435. package/src/tools/subagent/read.ts +2 -2
  1436. package/src/tools/subagent/spawn.ts +1 -1
  1437. package/src/tools/subagent/status.ts +10 -4
  1438. package/src/tools/swarm/delegate.ts +12 -12
  1439. package/src/tools/system/avatar-generator.ts +52 -79
  1440. package/src/tools/terminal/backends/native.ts +48 -8
  1441. package/src/tools/terminal/backends/types.ts +7 -0
  1442. package/src/tools/terminal/safe-env.ts +4 -1
  1443. package/src/tools/terminal/shell.ts +106 -2
  1444. package/src/tools/tool-approval-handler.ts +2 -17
  1445. package/src/tools/tool-manifest.ts +43 -0
  1446. package/src/tools/types.ts +28 -5
  1447. package/src/tools/watch/screen-watch.ts +6 -6
  1448. package/src/tools/watch/watch-state.ts +33 -26
  1449. package/src/util/clipboard.ts +1 -1
  1450. package/src/util/device-id.ts +101 -0
  1451. package/src/util/platform.ts +10 -0
  1452. package/src/util/silently.ts +7 -8
  1453. package/src/watcher/engine.ts +1 -1
  1454. package/src/work-items/resolve-required-tools.test.ts +37 -0
  1455. package/src/work-items/resolve-required-tools.ts +26 -0
  1456. package/src/work-items/work-item-runner.ts +29 -27
  1457. package/src/workspace/commit-message-enrichment-service.ts +1 -1
  1458. package/src/workspace/commit-message-provider.ts +2 -2
  1459. package/src/workspace/git-service.ts +27 -14
  1460. package/src/workspace/migrations/001-avatar-rename.ts +25 -0
  1461. package/src/workspace/migrations/002-backfill-installation-id.ts +75 -0
  1462. package/src/workspace/migrations/003-seed-device-id.ts +101 -0
  1463. package/src/workspace/migrations/004-extract-collect-usage-data.ts +50 -0
  1464. package/src/workspace/migrations/005-add-send-diagnostics.ts +12 -0
  1465. package/src/workspace/migrations/006-services-config.ts +132 -0
  1466. package/src/workspace/migrations/registry.ts +20 -0
  1467. package/src/workspace/migrations/runner.ts +117 -0
  1468. package/src/workspace/migrations/types.ts +11 -0
  1469. package/src/workspace/provider-commit-message-generator.ts +7 -4
  1470. package/src/workspace/turn-commit.ts +13 -13
  1471. package/tsconfig.json +0 -1
  1472. package/src/__tests__/handlers-task-submit-slash.test.ts +0 -39
  1473. package/src/__tests__/session-slash-known.test.ts +0 -477
  1474. package/src/__tests__/slash-commands-catalog.test.ts +0 -94
  1475. package/src/__tests__/slash-commands-parser.test.ts +0 -127
  1476. package/src/__tests__/slash-commands-resolver.test.ts +0 -231
  1477. package/src/__tests__/slash-commands-rewrite.test.ts +0 -40
  1478. package/src/cli/http-client.ts +0 -76
  1479. package/src/daemon/install-cli-launchers.ts +0 -170
  1480. package/src/daemon/session-evictor.ts +0 -203
  1481. package/src/skills/slash-commands.ts +0 -203
  1482. /package/src/__tests__/{script-proxy-session-runtime.test.ts → script-proxy-conversation-runtime.test.ts} +0 -0
  1483. /package/src/daemon/{session-media-retry.ts → conversation-media-retry.ts} +0 -0
@@ -10,7 +10,7 @@ import type { ServerMessage } from "../daemon/message-protocol.js";
10
10
  import type { Message, ProviderResponse } from "../providers/types.js";
11
11
 
12
12
  // ---------------------------------------------------------------------------
13
- // Mocks — must precede the Session import so Bun applies them at load time.
13
+ // Mocks — must precede the Conversation import so Bun applies them at load time.
14
14
  // ---------------------------------------------------------------------------
15
15
 
16
16
  function makeLoggerStub(): Record<string, unknown> {
@@ -81,6 +81,19 @@ mock.module("../config/loader.js", () => ({
81
81
  titleGenerationMaxTokens: 30,
82
82
  standaloneRecording: true,
83
83
  },
84
+ services: {
85
+ inference: {
86
+ mode: "your-own",
87
+ provider: "anthropic",
88
+ model: "claude-opus-4-6",
89
+ },
90
+ "image-generation": {
91
+ mode: "your-own",
92
+ provider: "gemini",
93
+ model: "gemini-2.5-flash-image",
94
+ },
95
+ "web-search": { mode: "your-own", provider: "anthropic-native" },
96
+ },
84
97
  }),
85
98
  loadRawConfig: () => ({}),
86
99
  saveRawConfig: () => {},
@@ -101,13 +114,6 @@ mock.module("../config/skill-state.js", () => ({
101
114
  resolveSkillStates: () => [],
102
115
  }));
103
116
 
104
- mock.module("../skills/slash-commands.js", () => ({
105
- buildInvocableSlashCatalog: () => new Map(),
106
- resolveSlashSkillCommand: () => ({ kind: "not_slash" }),
107
- rewriteKnownSlashCommandPrompt: () => "",
108
- parseSlashCandidate: () => ({ kind: "not_slash" }),
109
- }));
110
-
111
117
  mock.module("../permissions/trust-store.js", () => ({
112
118
  addRule: () => {},
113
119
  findHighestPriorityRule: () => null,
@@ -119,7 +125,7 @@ mock.module("../security/secret-allowlist.js", () => ({
119
125
  }));
120
126
 
121
127
  mock.module("../memory/conversation-crud.js", () => ({
122
- getConversationThreadType: () => "default",
128
+ getConversationType: () => "default",
123
129
  setConversationOriginChannelIfUnset: () => {},
124
130
  updateConversationContextWindow: () => {},
125
131
  deleteMessageById: () => {},
@@ -198,7 +204,7 @@ mock.module("../context/window-manager.js", () => ({
198
204
 
199
205
  const turnCommitCalls: Array<{
200
206
  workspaceDir: string;
201
- sessionId: string;
207
+ conversationId: string;
202
208
  turnNumber: number;
203
209
  }> = [];
204
210
  let turnCommitHangForever = false;
@@ -284,27 +290,29 @@ mock.module("../memory/canonical-guardian-store.js", () => ({
284
290
  }));
285
291
 
286
292
  // ---------------------------------------------------------------------------
287
- // Import Session AFTER mocks are registered.
293
+ // Import Conversation AFTER mocks are registered.
288
294
  // ---------------------------------------------------------------------------
289
295
 
290
- import type { QueueDrainReason, QueuePolicy } from "../daemon/session.js";
291
- import { Session } from "../daemon/session.js";
292
- import { MessageQueue } from "../daemon/session-queue-manager.js";
296
+ import type { QueueDrainReason, QueuePolicy } from "../daemon/conversation.js";
297
+ import { Conversation } from "../daemon/conversation.js";
298
+ import { MessageQueue } from "../daemon/conversation-queue-manager.js";
293
299
 
294
- type SessionWithWorkspaceDeps = Session & {
300
+ type ConversationWithWorkspaceDeps = Conversation & {
295
301
  getWorkspaceGitService?: (_workspaceDir: string) => {
296
302
  ensureInitialized: () => Promise<void>;
297
303
  };
298
304
  commitTurnChanges?: (
299
305
  workspaceDir: string,
300
- sessionId: string,
306
+ conversationId: string,
301
307
  turnNumber: number,
302
308
  provider?: unknown,
303
309
  deadlineMs?: number,
304
310
  ) => Promise<void>;
305
311
  };
306
312
 
307
- function makeSession(sendToClient?: (msg: ServerMessage) => void): Session {
313
+ function makeConversation(
314
+ sendToClient?: (msg: ServerMessage) => void,
315
+ ): Conversation {
308
316
  const provider = {
309
317
  name: "mock",
310
318
  async sendMessage(): Promise<ProviderResponse> {
@@ -316,7 +324,7 @@ function makeSession(sendToClient?: (msg: ServerMessage) => void): Session {
316
324
  };
317
325
  },
318
326
  };
319
- const session = new Session(
327
+ const conversationObj = new Conversation(
320
328
  "conv-1",
321
329
  provider,
322
330
  "system prompt",
@@ -324,22 +332,23 @@ function makeSession(sendToClient?: (msg: ServerMessage) => void): Session {
324
332
  sendToClient ?? (() => {}),
325
333
  "/tmp",
326
334
  );
327
- const sessionWithWorkspaceDeps = session as SessionWithWorkspaceDeps;
328
- sessionWithWorkspaceDeps.getWorkspaceGitService = () => ({
335
+ const conversationWithWorkspaceDeps =
336
+ conversationObj as ConversationWithWorkspaceDeps;
337
+ conversationWithWorkspaceDeps.getWorkspaceGitService = () => ({
329
338
  ensureInitialized: async () => {},
330
339
  });
331
- sessionWithWorkspaceDeps.commitTurnChanges = async (
340
+ conversationWithWorkspaceDeps.commitTurnChanges = async (
332
341
  workspaceDir: string,
333
- sessionId: string,
342
+ conversationId: string,
334
343
  turnNumber: number,
335
344
  ) => {
336
- turnCommitCalls.push({ workspaceDir, sessionId, turnNumber });
345
+ turnCommitCalls.push({ workspaceDir, conversationId, turnNumber });
337
346
  if (turnCommitHangForever) {
338
347
  // Simulate a commit that never resolves within the timeout budget
339
348
  await new Promise<void>(() => {});
340
349
  }
341
350
  };
342
- return session;
351
+ return conversationObj;
343
352
  }
344
353
 
345
354
  /**
@@ -378,7 +387,7 @@ async function waitForCondition(
378
387
 
379
388
  /**
380
389
  * Resolve the Nth pending AgentLoop.run() call. Fires the minimal events
381
- * that `runAgentLoop` expects (usage + message_complete) so the session
390
+ * that `runAgentLoop` expects (usage + message_complete) so the conversation
382
391
  * cleanly transitions out of its processing state.
383
392
  */
384
393
  function resolveRun(index: number) {
@@ -415,20 +424,20 @@ afterAll(() => {
415
424
  // Tests
416
425
  // ---------------------------------------------------------------------------
417
426
 
418
- describe("Session message queue", () => {
427
+ describe("Conversation message queue", () => {
419
428
  beforeEach(() => {
420
429
  pendingRuns = [];
421
430
  });
422
431
 
423
- test("second message is queued when session is busy (does not throw)", async () => {
424
- const session = makeSession();
425
- await session.loadFromDb();
432
+ test("second message is queued when conversation is busy (does not throw)", async () => {
433
+ const conversation = makeConversation();
434
+ await conversation.loadFromDb();
426
435
 
427
436
  const events1: ServerMessage[] = [];
428
437
  const events2: ServerMessage[] = [];
429
438
 
430
439
  // Start first message — this will block on AgentLoop.run
431
- const p1 = session.processMessage(
440
+ const p1 = conversation.processMessage(
432
441
  "msg-1",
433
442
  [],
434
443
  (e) => events1.push(e),
@@ -438,11 +447,11 @@ describe("Session message queue", () => {
438
447
  // Wait for the first AgentLoop.run to be registered
439
448
  await waitForPendingRun(1);
440
449
 
441
- // Session should now be processing
442
- expect(session.isProcessing()).toBe(true);
450
+ // Conversation should now be processing
451
+ expect(conversation.isProcessing()).toBe(true);
443
452
 
444
453
  // Enqueue second message — should NOT throw
445
- const result = session.enqueueMessage(
454
+ const result = conversation.enqueueMessage(
446
455
  "msg-2",
447
456
  [],
448
457
  (e) => events2.push(e),
@@ -450,7 +459,7 @@ describe("Session message queue", () => {
450
459
  );
451
460
  expect(result.queued).toBe(true);
452
461
  expect(result.requestId).toBe("req-2");
453
- expect(session.getQueueDepth()).toBe(1);
462
+ expect(conversation.getQueueDepth()).toBe(1);
454
463
 
455
464
  // Complete the first message
456
465
  resolveRun(0);
@@ -471,8 +480,8 @@ describe("Session message queue", () => {
471
480
  });
472
481
 
473
482
  test("[experimental] queued messages are processed in FIFO order", async () => {
474
- const session = makeSession();
475
- await session.loadFromDb();
483
+ const conversation = makeConversation();
484
+ await conversation.loadFromDb();
476
485
 
477
486
  const processedOrder: string[] = [];
478
487
 
@@ -481,7 +490,7 @@ describe("Session message queue", () => {
481
490
  };
482
491
 
483
492
  // Start first message
484
- const p1 = session.processMessage(
493
+ const p1 = conversation.processMessage(
485
494
  "msg-1",
486
495
  [],
487
496
  makeHandler("msg-1"),
@@ -490,9 +499,9 @@ describe("Session message queue", () => {
490
499
  await waitForPendingRun(1);
491
500
 
492
501
  // Enqueue two more
493
- session.enqueueMessage("msg-2", [], makeHandler("msg-2"), "req-2");
494
- session.enqueueMessage("msg-3", [], makeHandler("msg-3"), "req-3");
495
- expect(session.getQueueDepth()).toBe(2);
502
+ conversation.enqueueMessage("msg-2", [], makeHandler("msg-2"), "req-2");
503
+ conversation.enqueueMessage("msg-3", [], makeHandler("msg-3"), "req-3");
504
+ expect(conversation.getQueueDepth()).toBe(2);
496
505
 
497
506
  // Complete first → triggers second
498
507
  resolveRun(0);
@@ -511,17 +520,17 @@ describe("Session message queue", () => {
511
520
  });
512
521
 
513
522
  test("message_queued and message_dequeued events are emitted", async () => {
514
- const session = makeSession();
515
- await session.loadFromDb();
523
+ const conversation = makeConversation();
524
+ await conversation.loadFromDb();
516
525
 
517
526
  const events2: ServerMessage[] = [];
518
527
 
519
528
  // Start first message
520
- const p1 = session.processMessage("msg-1", [], () => {}, "req-1");
529
+ const p1 = conversation.processMessage("msg-1", [], () => {}, "req-1");
521
530
  await waitForPendingRun(1);
522
531
 
523
532
  // Enqueue second — simulating what handleUserMessage does
524
- const result = session.enqueueMessage(
533
+ const result = conversation.enqueueMessage(
525
534
  "msg-2",
526
535
  [],
527
536
  (e) => events2.push(e),
@@ -539,71 +548,75 @@ describe("Session message queue", () => {
539
548
  expect(dequeued).toBeDefined();
540
549
  expect(dequeued).toEqual({
541
550
  type: "message_dequeued",
542
- sessionId: "conv-1",
551
+ conversationId: "conv-1",
543
552
  requestId: "req-2",
544
553
  });
545
554
 
546
- // Complete second run so the session finishes cleanly
555
+ // Complete second run so the conversation finishes cleanly
547
556
  resolveRun(1);
548
557
  await new Promise((r) => setTimeout(r, 10));
549
558
  });
550
559
 
551
560
  test("abort() clears the queue and sends generation_cancelled for each queued message", async () => {
552
- const session = makeSession();
553
- await session.loadFromDb();
561
+ const conversation = makeConversation();
562
+ await conversation.loadFromDb();
554
563
 
555
564
  const events2: ServerMessage[] = [];
556
565
  const events3: ServerMessage[] = [];
557
566
 
558
567
  // Start first message
559
- session.processMessage("msg-1", [], () => {}, "req-1");
568
+ conversation.processMessage("msg-1", [], () => {}, "req-1");
560
569
  await waitForPendingRun(1);
561
570
 
562
571
  // Enqueue two more
563
- session.enqueueMessage("msg-2", [], (e) => events2.push(e), "req-2");
564
- session.enqueueMessage("msg-3", [], (e) => events3.push(e), "req-3");
565
- expect(session.getQueueDepth()).toBe(2);
572
+ conversation.enqueueMessage("msg-2", [], (e) => events2.push(e), "req-2");
573
+ conversation.enqueueMessage("msg-3", [], (e) => events3.push(e), "req-3");
574
+ expect(conversation.getQueueDepth()).toBe(2);
566
575
 
567
576
  // Abort
568
- session.abort();
577
+ conversation.abort();
569
578
 
570
579
  // Queue should be empty
571
- expect(session.getQueueDepth()).toBe(0);
580
+ expect(conversation.getQueueDepth()).toBe(0);
572
581
 
573
- // Both queued messages should receive session-scoped cancellation events.
582
+ // Both queued messages should receive conversation-scoped cancellation events.
574
583
  const cancel2 = events2.find((e) => e.type === "generation_cancelled");
575
584
  expect(cancel2).toEqual({
576
585
  type: "generation_cancelled",
577
- sessionId: "conv-1",
586
+ conversationId: "conv-1",
578
587
  });
579
588
 
580
589
  const cancel3 = events3.find((e) => e.type === "generation_cancelled");
581
590
  expect(cancel3).toEqual({
582
591
  type: "generation_cancelled",
583
- sessionId: "conv-1",
592
+ conversationId: "conv-1",
584
593
  });
585
594
 
586
- // abort() must NOT emit session_error or generic error for queued discards.
595
+ // abort() must NOT emit conversation_error or generic error for queued discards.
587
596
  const err2 = events2.find((e) => e.type === "error");
588
597
  expect(err2).toBeUndefined();
589
598
  const err3 = events3.find((e) => e.type === "error");
590
599
  expect(err3).toBeUndefined();
591
600
 
592
- const sessionErr2 = events2.find((e) => e.type === "session_error");
593
- expect(sessionErr2).toBeUndefined();
601
+ const conversationErr2 = events2.find(
602
+ (e) => e.type === "conversation_error",
603
+ );
604
+ expect(conversationErr2).toBeUndefined();
594
605
 
595
- const sessionErr3 = events3.find((e) => e.type === "session_error");
596
- expect(sessionErr3).toBeUndefined();
606
+ const conversationErr3 = events3.find(
607
+ (e) => e.type === "conversation_error",
608
+ );
609
+ expect(conversationErr3).toBeUndefined();
597
610
  });
598
611
 
599
- test("session-scoped errors emit both session_error and generic error", async () => {
600
- const session = makeSession();
601
- await session.loadFromDb();
612
+ test("conversation-scoped errors emit both conversation_error and generic error", async () => {
613
+ const conversation = makeConversation();
614
+ await conversation.loadFromDb();
602
615
 
603
616
  const events: ServerMessage[] = [];
604
617
 
605
618
  // Start a message — blocks on AgentLoop.run
606
- const p1 = session.processMessage(
619
+ const p1 = conversation.processMessage(
607
620
  "msg-1",
608
621
  [],
609
622
  (e) => events.push(e),
@@ -616,9 +629,9 @@ describe("Session message queue", () => {
616
629
  pendingRuns[0].reject(new Error("Provider returned 500"));
617
630
  await p1;
618
631
 
619
- // Should emit session_error (typed, structured)
620
- const sessionErr = events.find((e) => e.type === "session_error");
621
- expect(sessionErr).toBeDefined();
632
+ // Should emit conversation_error (typed, structured)
633
+ const conversationErr = events.find((e) => e.type === "conversation_error");
634
+ expect(conversationErr).toBeDefined();
622
635
 
623
636
  // Should also emit generic error (callers rely on error events to detect failures)
624
637
  const genericErr = events.find((e) => e.type === "error");
@@ -626,42 +639,42 @@ describe("Session message queue", () => {
626
639
  });
627
640
 
628
641
  test("queue depth is reported correctly as messages are added and drained", async () => {
629
- const session = makeSession();
630
- await session.loadFromDb();
642
+ const conversation = makeConversation();
643
+ await conversation.loadFromDb();
631
644
 
632
645
  // Start first message
633
- const p1 = session.processMessage("msg-1", [], () => {}, "req-1");
646
+ const p1 = conversation.processMessage("msg-1", [], () => {}, "req-1");
634
647
  await waitForPendingRun(1);
635
648
 
636
- expect(session.getQueueDepth()).toBe(0);
649
+ expect(conversation.getQueueDepth()).toBe(0);
637
650
 
638
- session.enqueueMessage("msg-2", [], () => {}, "req-2");
639
- expect(session.getQueueDepth()).toBe(1);
651
+ conversation.enqueueMessage("msg-2", [], () => {}, "req-2");
652
+ expect(conversation.getQueueDepth()).toBe(1);
640
653
 
641
- session.enqueueMessage("msg-3", [], () => {}, "req-3");
642
- expect(session.getQueueDepth()).toBe(2);
654
+ conversation.enqueueMessage("msg-3", [], () => {}, "req-3");
655
+ expect(conversation.getQueueDepth()).toBe(2);
643
656
 
644
- session.enqueueMessage("msg-4", [], () => {}, "req-4");
645
- expect(session.getQueueDepth()).toBe(3);
657
+ conversation.enqueueMessage("msg-4", [], () => {}, "req-4");
658
+ expect(conversation.getQueueDepth()).toBe(3);
646
659
 
647
660
  // Complete first → drains one from queue
648
661
  resolveRun(0);
649
662
  await p1;
650
663
  await waitForPendingRun(2);
651
664
 
652
- expect(session.getQueueDepth()).toBe(2);
665
+ expect(conversation.getQueueDepth()).toBe(2);
653
666
 
654
667
  // Complete second → drains another
655
668
  resolveRun(1);
656
669
  await waitForPendingRun(3);
657
670
 
658
- expect(session.getQueueDepth()).toBe(1);
671
+ expect(conversation.getQueueDepth()).toBe(1);
659
672
 
660
673
  // Complete third → drains last
661
674
  resolveRun(2);
662
675
  await waitForPendingRun(4);
663
676
 
664
- expect(session.getQueueDepth()).toBe(0);
677
+ expect(conversation.getQueueDepth()).toBe(0);
665
678
 
666
679
  // Complete fourth (final queued message)
667
680
  resolveRun(3);
@@ -669,15 +682,15 @@ describe("Session message queue", () => {
669
682
  });
670
683
 
671
684
  test("[experimental] drain continues after a queued message fails to persist", async () => {
672
- const session = makeSession();
673
- await session.loadFromDb();
685
+ const conversation = makeConversation();
686
+ await conversation.loadFromDb();
674
687
 
675
688
  const events1: ServerMessage[] = [];
676
689
  const events2: ServerMessage[] = [];
677
690
  const events3: ServerMessage[] = [];
678
691
 
679
692
  // Start first message — blocks on AgentLoop.run
680
- const p1 = session.processMessage(
693
+ const p1 = conversation.processMessage(
681
694
  "msg-1",
682
695
  [],
683
696
  (e) => events1.push(e),
@@ -686,10 +699,10 @@ describe("Session message queue", () => {
686
699
  await waitForPendingRun(1);
687
700
 
688
701
  // Enqueue a message with empty content (will fail persistUserMessage)
689
- session.enqueueMessage("", [], (e) => events2.push(e), "req-2");
702
+ conversation.enqueueMessage("", [], (e) => events2.push(e), "req-2");
690
703
  // Enqueue a valid message after the bad one
691
- session.enqueueMessage("msg-3", [], (e) => events3.push(e), "req-3");
692
- expect(session.getQueueDepth()).toBe(2);
704
+ conversation.enqueueMessage("msg-3", [], (e) => events3.push(e), "req-3");
705
+ expect(conversation.getQueueDepth()).toBe(2);
693
706
 
694
707
  // Complete first message — triggers drain. The empty message should fail
695
708
  // to persist, but the drain should continue to msg-3.
@@ -722,28 +735,28 @@ describe("Session message queue", () => {
722
735
  // Queue policy primitives
723
736
  // ---------------------------------------------------------------------------
724
737
 
725
- describe("Session queue policy helpers", () => {
738
+ describe("Conversation queue policy helpers", () => {
726
739
  beforeEach(() => {
727
740
  pendingRuns = [];
728
741
  });
729
742
 
730
- test("hasQueuedMessages() returns false on a fresh session", async () => {
731
- const session = makeSession();
732
- await session.loadFromDb();
733
- expect(session.hasQueuedMessages()).toBe(false);
743
+ test("hasQueuedMessages() returns false on a fresh conversation", async () => {
744
+ const conversation = makeConversation();
745
+ await conversation.loadFromDb();
746
+ expect(conversation.hasQueuedMessages()).toBe(false);
734
747
  });
735
748
 
736
749
  test("hasQueuedMessages() returns true after enqueuing while processing", async () => {
737
- const session = makeSession();
738
- await session.loadFromDb();
750
+ const conversation = makeConversation();
751
+ await conversation.loadFromDb();
739
752
 
740
753
  // Start processing to make the session busy
741
- session.processMessage("msg-1", [], () => {}, "req-1");
754
+ conversation.processMessage("msg-1", [], () => {}, "req-1");
742
755
  await waitForPendingRun(1);
743
756
 
744
757
  // Enqueue a message while processing
745
- session.enqueueMessage("msg-2", [], () => {}, "req-2");
746
- expect(session.hasQueuedMessages()).toBe(true);
758
+ conversation.enqueueMessage("msg-2", [], () => {}, "req-2");
759
+ expect(conversation.hasQueuedMessages()).toBe(true);
747
760
 
748
761
  // Cleanup: resolve the pending run
749
762
  resolveRun(0);
@@ -753,24 +766,24 @@ describe("Session queue policy helpers", () => {
753
766
  });
754
767
 
755
768
  test("canHandoffAtCheckpoint() returns false when not processing", async () => {
756
- const session = makeSession();
757
- await session.loadFromDb();
769
+ const conversation = makeConversation();
770
+ await conversation.loadFromDb();
758
771
 
759
772
  // Not processing, no queued messages
760
- expect(session.canHandoffAtCheckpoint()).toBe(false);
773
+ expect(conversation.canHandoffAtCheckpoint()).toBe(false);
761
774
  });
762
775
 
763
776
  test("canHandoffAtCheckpoint() returns false when processing but no queued messages", async () => {
764
- const session = makeSession();
765
- await session.loadFromDb();
777
+ const conversation = makeConversation();
778
+ await conversation.loadFromDb();
766
779
 
767
780
  // Start processing — but don't enqueue anything
768
- session.processMessage("msg-1", [], () => {}, "req-1");
781
+ conversation.processMessage("msg-1", [], () => {}, "req-1");
769
782
  await waitForPendingRun(1);
770
783
 
771
- expect(session.isProcessing()).toBe(true);
772
- expect(session.hasQueuedMessages()).toBe(false);
773
- expect(session.canHandoffAtCheckpoint()).toBe(false);
784
+ expect(conversation.isProcessing()).toBe(true);
785
+ expect(conversation.hasQueuedMessages()).toBe(false);
786
+ expect(conversation.canHandoffAtCheckpoint()).toBe(false);
774
787
 
775
788
  // Cleanup
776
789
  resolveRun(0);
@@ -778,19 +791,19 @@ describe("Session queue policy helpers", () => {
778
791
  });
779
792
 
780
793
  test("canHandoffAtCheckpoint() returns true when processing and queue has messages", async () => {
781
- const session = makeSession();
782
- await session.loadFromDb();
794
+ const conversation = makeConversation();
795
+ await conversation.loadFromDb();
783
796
 
784
797
  // Start processing
785
- session.processMessage("msg-1", [], () => {}, "req-1");
798
+ conversation.processMessage("msg-1", [], () => {}, "req-1");
786
799
  await waitForPendingRun(1);
787
800
 
788
801
  // Enqueue a message
789
- session.enqueueMessage("msg-2", [], () => {}, "req-2");
802
+ conversation.enqueueMessage("msg-2", [], () => {}, "req-2");
790
803
 
791
- expect(session.isProcessing()).toBe(true);
792
- expect(session.hasQueuedMessages()).toBe(true);
793
- expect(session.canHandoffAtCheckpoint()).toBe(true);
804
+ expect(conversation.isProcessing()).toBe(true);
805
+ expect(conversation.hasQueuedMessages()).toBe(true);
806
+ expect(conversation.canHandoffAtCheckpoint()).toBe(true);
794
807
 
795
808
  // Cleanup
796
809
  resolveRun(0);
@@ -821,19 +834,19 @@ describe("Session queue policy helpers", () => {
821
834
  // Checkpoint handoff tests
822
835
  // ---------------------------------------------------------------------------
823
836
 
824
- describe("Session checkpoint handoff", () => {
837
+ describe("Conversation checkpoint handoff", () => {
825
838
  beforeEach(() => {
826
839
  pendingRuns = [];
827
840
  });
828
841
 
829
842
  test("[experimental] onCheckpoint yields when there is a queued message", async () => {
830
- const session = makeSession();
831
- await session.loadFromDb();
843
+ const conversation = makeConversation();
844
+ await conversation.loadFromDb();
832
845
 
833
846
  const events1: ServerMessage[] = [];
834
847
 
835
848
  // Start processing first message
836
- const p1 = session.processMessage(
849
+ const p1 = conversation.processMessage(
837
850
  "msg-1",
838
851
  [],
839
852
  (e) => events1.push(e),
@@ -842,8 +855,8 @@ describe("Session checkpoint handoff", () => {
842
855
  await waitForPendingRun(1);
843
856
 
844
857
  // Enqueue a second message while the first is processing
845
- session.enqueueMessage("msg-2", [], () => {}, "req-2");
846
- expect(session.hasQueuedMessages()).toBe(true);
858
+ conversation.enqueueMessage("msg-2", [], () => {}, "req-2");
859
+ expect(conversation.hasQueuedMessages()).toBe(true);
847
860
 
848
861
  // The pending run should have received an onCheckpoint callback.
849
862
  // Simulate the agent loop calling it at a turn boundary.
@@ -859,7 +872,7 @@ describe("Session checkpoint handoff", () => {
859
872
  // Because there is a queued message, the callback should return 'yield'
860
873
  expect(decision).toBe("yield");
861
874
 
862
- // Complete the run so the session finishes cleanly
875
+ // Complete the run so the conversation finishes cleanly
863
876
  resolveRun(0);
864
877
  await p1;
865
878
 
@@ -868,7 +881,7 @@ describe("Session checkpoint handoff", () => {
868
881
  expect(handoff).toBeDefined();
869
882
  expect(handoff).toMatchObject({
870
883
  type: "generation_handoff",
871
- sessionId: "conv-1",
884
+ conversationId: "conv-1",
872
885
  requestId: "req-1",
873
886
  queuedCount: 1,
874
887
  });
@@ -880,14 +893,14 @@ describe("Session checkpoint handoff", () => {
880
893
  });
881
894
 
882
895
  test("onCheckpoint returns continue when queue is empty", async () => {
883
- const session = makeSession();
884
- await session.loadFromDb();
896
+ const conversation = makeConversation();
897
+ await conversation.loadFromDb();
885
898
 
886
899
  // Start processing — no enqueued messages
887
- const p1 = session.processMessage("msg-1", [], () => {}, "req-1");
900
+ const p1 = conversation.processMessage("msg-1", [], () => {}, "req-1");
888
901
  await waitForPendingRun(1);
889
902
 
890
- expect(session.hasQueuedMessages()).toBe(false);
903
+ expect(conversation.hasQueuedMessages()).toBe(false);
891
904
 
892
905
  // The pending run should have an onCheckpoint callback
893
906
  const run = pendingRuns[0];
@@ -908,8 +921,8 @@ describe("Session checkpoint handoff", () => {
908
921
  });
909
922
 
910
923
  test("[experimental] FIFO ordering is preserved through checkpoint handoff", async () => {
911
- const session = makeSession();
912
- await session.loadFromDb();
924
+ const conversation = makeConversation();
925
+ await conversation.loadFromDb();
913
926
 
914
927
  const processedOrder: string[] = [];
915
928
 
@@ -919,7 +932,7 @@ describe("Session checkpoint handoff", () => {
919
932
  };
920
933
 
921
934
  // Start first message
922
- const p1 = session.processMessage(
935
+ const p1 = conversation.processMessage(
923
936
  "msg-1",
924
937
  [],
925
938
  makeHandler("msg-1"),
@@ -928,9 +941,9 @@ describe("Session checkpoint handoff", () => {
928
941
  await waitForPendingRun(1);
929
942
 
930
943
  // Enqueue two messages
931
- session.enqueueMessage("msg-2", [], makeHandler("msg-2"), "req-2");
932
- session.enqueueMessage("msg-3", [], makeHandler("msg-3"), "req-3");
933
- expect(session.getQueueDepth()).toBe(2);
944
+ conversation.enqueueMessage("msg-2", [], makeHandler("msg-2"), "req-2");
945
+ conversation.enqueueMessage("msg-3", [], makeHandler("msg-3"), "req-3");
946
+ expect(conversation.getQueueDepth()).toBe(2);
934
947
 
935
948
  // Simulate the agent loop yielding at the checkpoint (first run)
936
949
  const run0 = pendingRuns[0];
@@ -963,14 +976,14 @@ describe("Session checkpoint handoff", () => {
963
976
  });
964
977
 
965
978
  test("[experimental] active run with repeated tool turns + queued message triggers checkpoint handoff", async () => {
966
- const session = makeSession();
967
- await session.loadFromDb();
979
+ const conversation = makeConversation();
980
+ await conversation.loadFromDb();
968
981
 
969
982
  const events1: ServerMessage[] = [];
970
983
  const events2: ServerMessage[] = [];
971
984
 
972
985
  // Start processing first message
973
- const p1 = session.processMessage(
986
+ const p1 = conversation.processMessage(
974
987
  "msg-1",
975
988
  [],
976
989
  (e) => events1.push(e),
@@ -979,8 +992,8 @@ describe("Session checkpoint handoff", () => {
979
992
  await waitForPendingRun(1);
980
993
 
981
994
  // Enqueue a second message while the first is processing
982
- session.enqueueMessage("msg-2", [], (e) => events2.push(e), "req-2");
983
- expect(session.hasQueuedMessages()).toBe(true);
995
+ conversation.enqueueMessage("msg-2", [], (e) => events2.push(e), "req-2");
996
+ expect(conversation.hasQueuedMessages()).toBe(true);
984
997
 
985
998
  // Simulate tool-use turns: the agent loop calls onCheckpoint at each turn boundary.
986
999
  // Because there is a queued message, the callback should return 'yield'.
@@ -1006,13 +1019,13 @@ describe("Session checkpoint handoff", () => {
1006
1019
  expect(handoff).toBeDefined();
1007
1020
  expect(handoff).toMatchObject({
1008
1021
  type: "generation_handoff",
1009
- sessionId: "conv-1",
1022
+ conversationId: "conv-1",
1010
1023
  requestId: "req-1",
1011
1024
  queuedCount: 1,
1012
1025
  });
1013
1026
  // message_complete should NOT be in events1 (handoff replaces it)
1014
1027
  const messageComplete = events1.find(
1015
- (e) => e.type === "message_complete" && "sessionId" in e,
1028
+ (e) => e.type === "message_complete" && "conversationId" in e,
1016
1029
  );
1017
1030
  expect(messageComplete).toBeUndefined();
1018
1031
 
@@ -1026,8 +1039,8 @@ describe("Session checkpoint handoff", () => {
1026
1039
  });
1027
1040
 
1028
1041
  test("queued messages still drain FIFO under multiple handoffs", async () => {
1029
- const session = makeSession();
1030
- await session.loadFromDb();
1042
+ const conversation = makeConversation();
1043
+ await conversation.loadFromDb();
1031
1044
 
1032
1045
  const dequeueOrder: string[] = [];
1033
1046
 
@@ -1037,7 +1050,7 @@ describe("Session checkpoint handoff", () => {
1037
1050
  };
1038
1051
 
1039
1052
  // Start processing message A
1040
- const pA = session.processMessage(
1053
+ const pA = conversation.processMessage(
1041
1054
  "msg-A",
1042
1055
  [],
1043
1056
  (e) => eventsA.push(e),
@@ -1046,10 +1059,10 @@ describe("Session checkpoint handoff", () => {
1046
1059
  await waitForPendingRun(1);
1047
1060
 
1048
1061
  // Enqueue messages B, C, D
1049
- session.enqueueMessage("msg-B", [], makeHandler("B"), "req-B");
1050
- session.enqueueMessage("msg-C", [], makeHandler("C"), "req-C");
1051
- session.enqueueMessage("msg-D", [], makeHandler("D"), "req-D");
1052
- expect(session.getQueueDepth()).toBe(3);
1062
+ conversation.enqueueMessage("msg-B", [], makeHandler("B"), "req-B");
1063
+ conversation.enqueueMessage("msg-C", [], makeHandler("C"), "req-C");
1064
+ conversation.enqueueMessage("msg-D", [], makeHandler("D"), "req-D");
1065
+ expect(conversation.getQueueDepth()).toBe(3);
1053
1066
 
1054
1067
  // Handoff from A -> B
1055
1068
  const runA = pendingRuns[0];
@@ -1117,15 +1130,15 @@ describe("Session checkpoint handoff", () => {
1117
1130
  });
1118
1131
 
1119
1132
  test("[experimental] queued persistence failure does not strand later messages", async () => {
1120
- const session = makeSession();
1121
- await session.loadFromDb();
1133
+ const conversation = makeConversation();
1134
+ await conversation.loadFromDb();
1122
1135
 
1123
1136
  const eventsA: ServerMessage[] = [];
1124
1137
  const eventsB: ServerMessage[] = [];
1125
1138
  const eventsC: ServerMessage[] = [];
1126
1139
 
1127
1140
  // Start processing message A
1128
- const pA = session.processMessage(
1141
+ const pA = conversation.processMessage(
1129
1142
  "msg-A",
1130
1143
  [],
1131
1144
  (e) => eventsA.push(e),
@@ -1134,9 +1147,9 @@ describe("Session checkpoint handoff", () => {
1134
1147
  await waitForPendingRun(1);
1135
1148
 
1136
1149
  // Enqueue B (empty content — will fail to persist) and C (valid)
1137
- session.enqueueMessage("", [], (e) => eventsB.push(e), "req-B");
1138
- session.enqueueMessage("msg-C", [], (e) => eventsC.push(e), "req-C");
1139
- expect(session.getQueueDepth()).toBe(2);
1150
+ conversation.enqueueMessage("", [], (e) => eventsB.push(e), "req-B");
1151
+ conversation.enqueueMessage("msg-C", [], (e) => eventsC.push(e), "req-C");
1152
+ expect(conversation.getQueueDepth()).toBe(2);
1140
1153
 
1141
1154
  // Complete message A — triggers drain. B should fail, C should proceed.
1142
1155
  resolveRun(0);
@@ -1164,11 +1177,11 @@ describe("Session checkpoint handoff", () => {
1164
1177
  });
1165
1178
 
1166
1179
  test("onCheckpoint callback is passed to both initial and retry runs", async () => {
1167
- const session = makeSession();
1168
- await session.loadFromDb();
1180
+ const conversation = makeConversation();
1181
+ await conversation.loadFromDb();
1169
1182
 
1170
1183
  // Start processing
1171
- const p1 = session.processMessage("msg-1", [], () => {}, "req-1");
1184
+ const p1 = conversation.processMessage("msg-1", [], () => {}, "req-1");
1172
1185
  await waitForPendingRun(1);
1173
1186
 
1174
1187
  // The first run should have onCheckpoint
@@ -1202,17 +1215,17 @@ describe("Session checkpoint handoff", () => {
1202
1215
  // Usage requestId correlation
1203
1216
  // ---------------------------------------------------------------------------
1204
1217
 
1205
- describe("Session usage requestId correlation", () => {
1218
+ describe("Conversation usage requestId correlation", () => {
1206
1219
  beforeEach(() => {
1207
1220
  pendingRuns = [];
1208
1221
  capturedUsageEvents = [];
1209
1222
  });
1210
1223
 
1211
1224
  test("usage events recorded during a request carry that request ID", async () => {
1212
- const session = makeSession();
1213
- await session.loadFromDb();
1225
+ const conversation = makeConversation();
1226
+ await conversation.loadFromDb();
1214
1227
 
1215
- const p1 = session.processMessage("msg-1", [], () => {}, "req-42");
1228
+ const p1 = conversation.processMessage("msg-1", [], () => {}, "req-42");
1216
1229
  await waitForPendingRun(1);
1217
1230
 
1218
1231
  // Complete the run — this triggers recordUsage with the request's ID
@@ -1239,19 +1252,19 @@ describe("Terminal trace events on rejection/failure", () => {
1239
1252
 
1240
1253
  test("queued persist failure emits request_error trace", async () => {
1241
1254
  const traceEvents: ServerMessage[] = [];
1242
- const session = makeSession((msg) => {
1255
+ const conversation = makeConversation((msg) => {
1243
1256
  if ("type" in msg && msg.type === "trace_event") traceEvents.push(msg);
1244
1257
  });
1245
- await session.loadFromDb();
1258
+ await conversation.loadFromDb();
1246
1259
 
1247
1260
  // Start first message
1248
- const p1 = session.processMessage("msg-1", [], () => {}, "req-1");
1261
+ const p1 = conversation.processMessage("msg-1", [], () => {}, "req-1");
1249
1262
  await waitForPendingRun(1);
1250
1263
 
1251
1264
  // Enqueue empty content (will fail persistUserMessage)
1252
- session.enqueueMessage("", [], () => {}, "req-bad");
1265
+ conversation.enqueueMessage("", [], () => {}, "req-bad");
1253
1266
  // Enqueue valid message so drain continues
1254
- session.enqueueMessage("msg-3", [], () => {}, "req-3");
1267
+ conversation.enqueueMessage("msg-3", [], () => {}, "req-3");
1255
1268
 
1256
1269
  // Complete first — triggers drain, empty msg fails persist
1257
1270
  resolveRun(0);
@@ -1278,7 +1291,7 @@ describe("Terminal trace events on rejection/failure", () => {
1278
1291
  // Host attachment approval tests
1279
1292
  // ---------------------------------------------------------------------------
1280
1293
 
1281
- describe("Session host attachment directives", () => {
1294
+ describe("Conversation host attachment directives", () => {
1282
1295
  beforeEach(() => {
1283
1296
  pendingRuns = [];
1284
1297
  });
@@ -1290,10 +1303,10 @@ describe("Session host attachment directives", () => {
1290
1303
  try {
1291
1304
  const clientEvents: ServerMessage[] = [];
1292
1305
  const events: ServerMessage[] = [];
1293
- const session = makeSession((msg) => clientEvents.push(msg));
1294
- await session.loadFromDb();
1306
+ const conversation = makeConversation((msg) => clientEvents.push(msg));
1307
+ await conversation.loadFromDb();
1295
1308
 
1296
- const p1 = session.processMessage(
1309
+ const p1 = conversation.processMessage(
1297
1310
  "msg-1",
1298
1311
  [],
1299
1312
  (e) => events.push(e),
@@ -1328,16 +1341,18 @@ describe("Session host attachment directives", () => {
1328
1341
  (e) => e.type === "confirmation_request",
1329
1342
  );
1330
1343
  expect(confirmation).toBeDefined();
1331
- session.handleConfirmationResponse(
1344
+ conversation.handleConfirmationResponse(
1332
1345
  (confirmation as { requestId: string }).requestId,
1333
1346
  "allow",
1334
1347
  );
1335
1348
 
1336
1349
  await p1;
1337
1350
 
1338
- expect(session.lastAssistantAttachments).toHaveLength(1);
1339
- expect(session.lastAssistantAttachments[0].sourceType).toBe("host_file");
1340
- expect(session.lastAttachmentWarnings).toHaveLength(0);
1351
+ expect(conversation.lastAssistantAttachments).toHaveLength(1);
1352
+ expect(conversation.lastAssistantAttachments[0].sourceType).toBe(
1353
+ "host_file",
1354
+ );
1355
+ expect(conversation.lastAttachmentWarnings).toHaveLength(0);
1341
1356
 
1342
1357
  const completion = events.find((e) => e.type === "message_complete");
1343
1358
  expect(completion).toBeDefined();
@@ -1353,10 +1368,10 @@ describe("Session host attachment directives", () => {
1353
1368
  try {
1354
1369
  const clientEvents: ServerMessage[] = [];
1355
1370
  const events: ServerMessage[] = [];
1356
- const session = makeSession((msg) => clientEvents.push(msg));
1357
- await session.loadFromDb();
1371
+ const conversation = makeConversation((msg) => clientEvents.push(msg));
1372
+ await conversation.loadFromDb();
1358
1373
 
1359
- const p1 = session.processMessage(
1374
+ const p1 = conversation.processMessage(
1360
1375
  "msg-1",
1361
1376
  [],
1362
1377
  (e) => events.push(e),
@@ -1391,16 +1406,16 @@ describe("Session host attachment directives", () => {
1391
1406
  (e) => e.type === "confirmation_request",
1392
1407
  );
1393
1408
  expect(confirmation).toBeDefined();
1394
- session.handleConfirmationResponse(
1409
+ conversation.handleConfirmationResponse(
1395
1410
  (confirmation as { requestId: string }).requestId,
1396
1411
  "deny",
1397
1412
  );
1398
1413
 
1399
1414
  await p1;
1400
1415
 
1401
- expect(session.lastAssistantAttachments).toHaveLength(0);
1416
+ expect(conversation.lastAssistantAttachments).toHaveLength(0);
1402
1417
  expect(
1403
- session.lastAttachmentWarnings.some((w) =>
1418
+ conversation.lastAttachmentWarnings.some((w) =>
1404
1419
  w.includes("access denied by user"),
1405
1420
  ),
1406
1421
  ).toBe(true);
@@ -1423,17 +1438,17 @@ describe("Session host attachment directives", () => {
1423
1438
  // Attachment payload emission tests
1424
1439
  // ---------------------------------------------------------------------------
1425
1440
 
1426
- describe("Session attachment event payloads", () => {
1441
+ describe("Conversation attachment event payloads", () => {
1427
1442
  beforeEach(() => {
1428
1443
  pendingRuns = [];
1429
1444
  });
1430
1445
 
1431
1446
  test("message_complete includes assistant attachments", async () => {
1432
1447
  const events: ServerMessage[] = [];
1433
- const session = makeSession();
1434
- await session.loadFromDb();
1448
+ const conversation = makeConversation();
1449
+ await conversation.loadFromDb();
1435
1450
 
1436
- const p1 = session.processMessage(
1451
+ const p1 = conversation.processMessage(
1437
1452
  "msg-1",
1438
1453
  [],
1439
1454
  (e) => events.push(e),
@@ -1487,10 +1502,10 @@ describe("Session attachment event payloads", () => {
1487
1502
 
1488
1503
  test("generation_handoff includes assistant attachments", async () => {
1489
1504
  const events1: ServerMessage[] = [];
1490
- const session = makeSession();
1491
- await session.loadFromDb();
1505
+ const conversation = makeConversation();
1506
+ await conversation.loadFromDb();
1492
1507
 
1493
- const p1 = session.processMessage(
1508
+ const p1 = conversation.processMessage(
1494
1509
  "msg-1",
1495
1510
  [],
1496
1511
  (e) => events1.push(e),
@@ -1499,7 +1514,7 @@ describe("Session attachment event payloads", () => {
1499
1514
  await waitForPendingRun(1);
1500
1515
 
1501
1516
  // Queue a second message so the first run yields via checkpoint handoff.
1502
- session.enqueueMessage("msg-2", [], () => {}, "req-2");
1517
+ conversation.enqueueMessage("msg-2", [], () => {}, "req-2");
1503
1518
 
1504
1519
  const run = pendingRuns[0];
1505
1520
  expect(run.onCheckpoint).toBeDefined();
@@ -1560,7 +1575,7 @@ describe("Session attachment event payloads", () => {
1560
1575
  });
1561
1576
 
1562
1577
  // ---------------------------------------------------------------------------
1563
- // Regression: cancel semantics + session/global error channel split
1578
+ // Regression: cancel semantics + conversation/global error channel split
1564
1579
  // ---------------------------------------------------------------------------
1565
1580
 
1566
1581
  describe("Regression: cancel semantics and error channel split", () => {
@@ -1568,13 +1583,13 @@ describe("Regression: cancel semantics and error channel split", () => {
1568
1583
  pendingRuns = [];
1569
1584
  });
1570
1585
 
1571
- test("user cancellation emits generation_cancelled, never session_error", async () => {
1586
+ test("user cancellation emits generation_cancelled, never conversation_error", async () => {
1572
1587
  const msgEvents: ServerMessage[] = [];
1573
- const session = makeSession();
1574
- await session.loadFromDb();
1588
+ const conversation = makeConversation();
1589
+ await conversation.loadFromDb();
1575
1590
 
1576
1591
  // Start processing a message — collect events from the per-message callback
1577
- const p1 = session.processMessage(
1592
+ const p1 = conversation.processMessage(
1578
1593
  "msg-1",
1579
1594
  [],
1580
1595
  (e) => msgEvents.push(e),
@@ -1583,7 +1598,7 @@ describe("Regression: cancel semantics and error channel split", () => {
1583
1598
  await waitForPendingRun(1);
1584
1599
 
1585
1600
  // User cancels — sets the abort signal
1586
- session.abort();
1601
+ conversation.abort();
1587
1602
 
1588
1603
  // Resolve the pending run so the abort-check path fires
1589
1604
  resolveRun(0);
@@ -1595,18 +1610,20 @@ describe("Regression: cancel semantics and error channel split", () => {
1595
1610
  );
1596
1611
  expect(cancelEvent).toBeDefined();
1597
1612
 
1598
- // session_error must never appear on cancel
1599
- const sessionErr = msgEvents.find((e) => e.type === "session_error");
1600
- expect(sessionErr).toBeUndefined();
1613
+ // conversation_error must never appear on cancel
1614
+ const conversationErr = msgEvents.find(
1615
+ (e) => e.type === "conversation_error",
1616
+ );
1617
+ expect(conversationErr).toBeUndefined();
1601
1618
  });
1602
1619
 
1603
1620
  test("post-processing failure still attempts turn-boundary commit", async () => {
1604
1621
  const events: ServerMessage[] = [];
1605
- const session = makeSession();
1606
- await session.loadFromDb();
1622
+ const conversation = makeConversation();
1623
+ await conversation.loadFromDb();
1607
1624
  linkAttachmentShouldThrow = true;
1608
1625
 
1609
- const p1 = session.processMessage(
1626
+ const p1 = conversation.processMessage(
1610
1627
  "msg-1",
1611
1628
  [],
1612
1629
  (e) => events.push(e),
@@ -1644,19 +1661,19 @@ describe("Regression: cancel semantics and error channel split", () => {
1644
1661
  expect(turnCommitCalls).toHaveLength(1);
1645
1662
  expect(turnCommitCalls[0]).toEqual({
1646
1663
  workspaceDir: "/tmp",
1647
- sessionId: "conv-1",
1664
+ conversationId: "conv-1",
1648
1665
  turnNumber: 1,
1649
1666
  });
1650
1667
  const err = events.find((e) => e.type === "error");
1651
1668
  expect(err).toBeDefined();
1652
1669
  });
1653
1670
 
1654
- test("provider failure during processing emits both session_error and generic error", async () => {
1671
+ test("provider failure during processing emits both conversation_error and generic error", async () => {
1655
1672
  const allEvents: ServerMessage[] = [];
1656
- const session = makeSession();
1657
- await session.loadFromDb();
1673
+ const conversation = makeConversation();
1674
+ await conversation.loadFromDb();
1658
1675
 
1659
- const p1 = session.processMessage(
1676
+ const p1 = conversation.processMessage(
1660
1677
  "msg-1",
1661
1678
  [],
1662
1679
  (e) => allEvents.push(e),
@@ -1668,22 +1685,24 @@ describe("Regression: cancel semantics and error channel split", () => {
1668
1685
  pendingRuns[0].reject(new Error("Connection refused"));
1669
1686
  await p1;
1670
1687
 
1671
- // Should get session_error (structured)
1672
- const sessionErr = allEvents.find((e) => e.type === "session_error");
1673
- expect(sessionErr).toBeDefined();
1688
+ // Should get conversation_error (structured)
1689
+ const conversationErr = allEvents.find(
1690
+ (e) => e.type === "conversation_error",
1691
+ );
1692
+ expect(conversationErr).toBeDefined();
1674
1693
 
1675
1694
  // Should also get generic error
1676
1695
  const genericErr = allEvents.find((e) => e.type === "error");
1677
1696
  expect(genericErr).toBeDefined();
1678
1697
  });
1679
1698
 
1680
- test("cancel after queued messages produces no session_error for any queued entry", async () => {
1681
- const session = makeSession();
1682
- await session.loadFromDb();
1699
+ test("cancel after queued messages produces no conversation_error for any queued entry", async () => {
1700
+ const conversation = makeConversation();
1701
+ await conversation.loadFromDb();
1683
1702
 
1684
1703
  const eventsPerMsg: ServerMessage[][] = [[], [], []];
1685
1704
 
1686
- session.processMessage(
1705
+ conversation.processMessage(
1687
1706
  "msg-1",
1688
1707
  [],
1689
1708
  (e) => eventsPerMsg[0].push(e),
@@ -1691,31 +1710,33 @@ describe("Regression: cancel semantics and error channel split", () => {
1691
1710
  );
1692
1711
  await waitForPendingRun(1);
1693
1712
 
1694
- session.enqueueMessage(
1713
+ conversation.enqueueMessage(
1695
1714
  "msg-2",
1696
1715
  [],
1697
1716
  (e) => eventsPerMsg[1].push(e),
1698
1717
  "req-2",
1699
1718
  );
1700
- session.enqueueMessage(
1719
+ conversation.enqueueMessage(
1701
1720
  "msg-3",
1702
1721
  [],
1703
1722
  (e) => eventsPerMsg[2].push(e),
1704
1723
  "req-3",
1705
1724
  );
1706
1725
 
1707
- session.abort();
1726
+ conversation.abort();
1708
1727
 
1709
- // No queued message should have received session_error
1728
+ // No queued message should have received conversation_error
1710
1729
  for (const events of eventsPerMsg) {
1711
- const sessionErr = events.find((e) => e.type === "session_error");
1712
- expect(sessionErr).toBeUndefined();
1730
+ const conversationErr = events.find(
1731
+ (e) => e.type === "conversation_error",
1732
+ );
1733
+ expect(conversationErr).toBeUndefined();
1713
1734
  }
1714
1735
  });
1715
1736
 
1716
1737
  test("commitTurnChanges never resolving within budget -> turn still completes and drains queue", async () => {
1717
- const session = makeSession();
1718
- await session.loadFromDb();
1738
+ const conversation = makeConversation();
1739
+ await conversation.loadFromDb();
1719
1740
 
1720
1741
  turnCommitHangForever = true;
1721
1742
 
@@ -1724,7 +1745,7 @@ describe("Regression: cancel semantics and error channel split", () => {
1724
1745
  const events2: ServerMessage[] = [];
1725
1746
 
1726
1747
  // Start first message (promise intentionally not awaited — we test queue drain behavior)
1727
- const _p1 = session.processMessage(
1748
+ const _p1 = conversation.processMessage(
1728
1749
  "msg-1",
1729
1750
  [],
1730
1751
  (e) => events1.push(e),
@@ -1733,7 +1754,7 @@ describe("Regression: cancel semantics and error channel split", () => {
1733
1754
  await waitForPendingRun(1);
1734
1755
 
1735
1756
  // Enqueue a second message while the first is processing
1736
- session.enqueueMessage("msg-2", [], (e) => events2.push(e), "req-2");
1757
+ conversation.enqueueMessage("msg-2", [], (e) => events2.push(e), "req-2");
1737
1758
 
1738
1759
  // Complete the first agent loop run
1739
1760
  resolveRun(0);