@vellumai/assistant 0.4.55 → 0.4.57

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 (1673) hide show
  1. package/ARCHITECTURE.md +161 -167
  2. package/Dockerfile +9 -9
  3. package/README.md +12 -12
  4. package/bun.lock +145 -112
  5. package/docs/architecture/integrations.md +24 -24
  6. package/docs/architecture/memory.md +53 -54
  7. package/docs/architecture/security.md +2 -2
  8. package/docs/credential-execution-service.md +404 -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 +26 -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 +10 -10
  732. package/src/__tests__/always-loaded-tools-guard.test.ts +1 -1
  733. package/src/__tests__/anthropic-provider.test.ts +340 -46
  734. package/src/__tests__/app-builder-tool-scripts.test.ts +15 -2
  735. package/src/__tests__/approval-cascade.test.ts +123 -97
  736. package/src/__tests__/approval-primitive.test.ts +2 -2
  737. package/src/__tests__/approval-routes-http.test.ts +42 -28
  738. package/src/__tests__/asset-materialize-tool.test.ts +14 -21
  739. package/src/__tests__/asset-search-tool.test.ts +6 -13
  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-events-sse-hardening.test.ts +1 -1
  744. package/src/__tests__/assistant-feature-flag-guardrails.test.ts +6 -1
  745. package/src/__tests__/assistant-feature-flags-integration.test.ts +169 -40
  746. package/src/__tests__/attachments-store.test.ts +2 -2
  747. package/src/__tests__/avatar-e2e.test.ts +19 -7
  748. package/src/__tests__/avatar-generator.test.ts +4 -7
  749. package/src/__tests__/browser-fill-credential.test.ts +17 -18
  750. package/src/__tests__/browser-skill-endstate.test.ts +1 -2
  751. package/src/__tests__/btw-routes.test.ts +21 -9
  752. package/src/__tests__/call-controller.test.ts +229 -202
  753. package/src/__tests__/call-pointer-messages.test.ts +12 -10
  754. package/src/__tests__/call-routes-http.test.ts +4 -4
  755. package/src/__tests__/call-start-guardian-guard.test.ts +0 -1
  756. package/src/__tests__/callback-handoff-copy.test.ts +1 -1
  757. package/src/__tests__/cancel-resolves-conversation-key.test.ts +158 -0
  758. package/src/__tests__/canonical-guardian-store.test.ts +8 -10
  759. package/src/__tests__/channel-approval-routes.test.ts +5 -5
  760. package/src/__tests__/channel-approval.test.ts +1 -1
  761. package/src/__tests__/channel-approvals.test.ts +13 -13
  762. package/src/__tests__/channel-guardian.test.ts +3 -3
  763. package/src/__tests__/channel-invite-transport.test.ts +5 -1
  764. package/src/__tests__/channel-readiness-routes.test.ts +4 -1
  765. package/src/__tests__/channel-readiness-service.test.ts +0 -1
  766. package/src/__tests__/channel-reply-delivery.test.ts +1 -1
  767. package/src/__tests__/checker.test.ts +32 -33
  768. package/src/__tests__/chrome-cdp.test.ts +47 -18
  769. package/src/__tests__/claude-code-skill-regression.test.ts +67 -1
  770. package/src/__tests__/claude-code-tool-profiles.test.ts +1 -1
  771. package/src/__tests__/clipboard.test.ts +6 -6
  772. package/src/__tests__/commit-guarantee.test.ts +9 -9
  773. package/src/__tests__/commit-message-enrichment-service.test.ts +37 -6
  774. package/src/__tests__/computer-use-tools.test.ts +0 -1
  775. package/src/__tests__/config-loader-backfill.test.ts +6 -4
  776. package/src/__tests__/config-schema-cmd.test.ts +258 -0
  777. package/src/__tests__/config-schema.test.ts +45 -46
  778. package/src/__tests__/config-watcher.test.ts +25 -24
  779. package/src/__tests__/confirmation-request-guardian-bridge.test.ts +17 -15
  780. package/src/__tests__/contacts-tools.test.ts +0 -1
  781. package/src/__tests__/context-overflow-approval.test.ts +2 -2
  782. package/src/__tests__/{session-abort-tool-results.test.ts → conversation-abort-tool-results.test.ts} +26 -13
  783. package/src/__tests__/{session-agent-loop-overflow.test.ts → conversation-agent-loop-overflow.test.ts} +236 -61
  784. package/src/__tests__/{session-agent-loop.test.ts → conversation-agent-loop.test.ts} +88 -65
  785. package/src/__tests__/{session-approval-overrides.test.ts → conversation-approval-overrides.test.ts} +23 -23
  786. package/src/__tests__/conversation-attachments.test.ts +227 -0
  787. package/src/__tests__/conversation-attention-telegram.test.ts +2 -2
  788. package/src/__tests__/{session-confirmation-signals.test.ts → conversation-confirmation-signals.test.ts} +64 -54
  789. package/src/__tests__/{session-error.test.ts → conversation-error.test.ts} +98 -57
  790. package/src/__tests__/{session-evictor.test.ts → conversation-evictor.test.ts} +21 -17
  791. package/src/__tests__/{session-history-web-search.test.ts → conversation-history-web-search.test.ts} +34 -10
  792. package/src/__tests__/{session-init.benchmark.test.ts → conversation-init.benchmark.test.ts} +23 -24
  793. package/src/__tests__/{session-load-history-repair.test.ts → conversation-load-history-repair.test.ts} +39 -39
  794. package/src/__tests__/{session-media-retry.test.ts → conversation-media-retry.test.ts} +1 -1
  795. package/src/__tests__/{session-messaging-secret-redirect.test.ts → conversation-messaging-secret-redirect.test.ts} +1 -1
  796. package/src/__tests__/conversation-pairing.test.ts +47 -47
  797. package/src/__tests__/{session-pre-run-repair.test.ts → conversation-pre-run-repair.test.ts} +26 -13
  798. package/src/__tests__/{session-provider-retry-repair.test.ts → conversation-provider-retry-repair.test.ts} +61 -48
  799. package/src/__tests__/{session-queue.test.ts → conversation-queue.test.ts} +260 -230
  800. package/src/__tests__/conversation-routes-guardian-reply.test.ts +26 -26
  801. package/src/__tests__/conversation-routes-slash-commands.test.ts +34 -57
  802. package/src/__tests__/{session-runtime-assembly.test.ts → conversation-runtime-assembly.test.ts} +187 -175
  803. package/src/__tests__/{session-runtime-workspace.test.ts → conversation-runtime-workspace.test.ts} +1 -1
  804. package/src/__tests__/{thread-seed-composer.test.ts → conversation-seed-composer.test.ts} +51 -49
  805. package/src/__tests__/{session-skill-tools.test.ts → conversation-skill-tools.test.ts} +11 -13
  806. package/src/__tests__/{session-slash-queue.test.ts → conversation-slash-queue.test.ts} +57 -48
  807. package/src/__tests__/{session-slash-unknown.test.ts → conversation-slash-unknown.test.ts} +33 -77
  808. package/src/__tests__/conversation-starter-routes.test.ts +291 -0
  809. package/src/__tests__/conversation-store.test.ts +61 -55
  810. package/src/__tests__/{session-surfaces-deselection.test.ts → conversation-surfaces-deselection.test.ts} +5 -5
  811. package/src/__tests__/{session-surfaces-task-progress.test.ts → conversation-surfaces-task-progress.test.ts} +7 -7
  812. package/src/__tests__/{session-tool-setup-app-refresh.test.ts → conversation-tool-setup-app-refresh.test.ts} +5 -5
  813. package/src/__tests__/{session-tool-setup-memory-scope.test.ts → conversation-tool-setup-memory-scope.test.ts} +4 -4
  814. package/src/__tests__/{session-tool-setup-side-effect-flag.test.ts → conversation-tool-setup-side-effect-flag.test.ts} +4 -4
  815. package/src/__tests__/{session-tool-setup-tools-disabled.test.ts → conversation-tool-setup-tools-disabled.test.ts} +3 -3
  816. package/src/__tests__/{session-undo.test.ts → conversation-undo.test.ts} +1 -1
  817. package/src/__tests__/conversation-unread-route.test.ts +4 -0
  818. package/src/__tests__/{session-usage.test.ts → conversation-usage.test.ts} +1 -1
  819. package/src/__tests__/conversation-wipe.test.ts +438 -0
  820. package/src/__tests__/{session-workspace-cache-state.test.ts → conversation-workspace-cache-state.test.ts} +31 -39
  821. package/src/__tests__/{session-workspace-injection.test.ts → conversation-workspace-injection.test.ts} +60 -54
  822. package/src/__tests__/{session-workspace-tool-tracking.test.ts → conversation-workspace-tool-tracking.test.ts} +56 -50
  823. package/src/__tests__/credential-execution-admin-cli.test.ts +504 -0
  824. package/src/__tests__/credential-execution-api-key-propagation.test.ts +309 -0
  825. package/src/__tests__/credential-execution-approval-bridge.test.ts +535 -0
  826. package/src/__tests__/credential-execution-client.test.ts +380 -0
  827. package/src/__tests__/credential-execution-feature-gates.test.ts +169 -0
  828. package/src/__tests__/credential-execution-managed-contract.test.ts +526 -0
  829. package/src/__tests__/credential-execution-shell-lockdown.test.ts +149 -0
  830. package/src/__tests__/credential-execution-tools.test.ts +279 -0
  831. package/src/__tests__/credential-security-e2e.test.ts +20 -1
  832. package/src/__tests__/credential-security-invariants.test.ts +5 -8
  833. package/src/__tests__/credential-storage-oauth-compat.test.ts +606 -0
  834. package/src/__tests__/credential-storage-static-compat.test.ts +396 -0
  835. package/src/__tests__/credential-vault-unit.test.ts +227 -1
  836. package/src/__tests__/credential-vault.test.ts +0 -1
  837. package/src/__tests__/credentials-cli.test.ts +13 -22
  838. package/src/__tests__/cu-unified-flow.test.ts +8 -6
  839. package/src/__tests__/daemon-assistant-events.test.ts +15 -12
  840. package/src/__tests__/date-context.test.ts +59 -377
  841. package/src/__tests__/delete-managed-skill-tool.test.ts +0 -1
  842. package/src/__tests__/diagnostics-export.test.ts +30 -0
  843. package/src/__tests__/drop-capability-card-state-migration.test.ts +169 -0
  844. package/src/__tests__/dynamic-page-surface.test.ts +2 -2
  845. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +23 -43
  846. package/src/__tests__/emit-signal-routing-intent.test.ts +4 -4
  847. package/src/__tests__/encrypted-store.test.ts +237 -15
  848. package/src/__tests__/ephemeral-permissions.test.ts +4 -5
  849. package/src/__tests__/event-bus.test.ts +5 -9
  850. package/src/__tests__/file-edit-tool.test.ts +0 -1
  851. package/src/__tests__/file-read-tool.test.ts +0 -1
  852. package/src/__tests__/file-write-tool.test.ts +0 -1
  853. package/src/__tests__/fixtures/mock-signup-server.ts +2 -2
  854. package/src/__tests__/followup-tools.test.ts +25 -26
  855. package/src/__tests__/frontmatter.test.ts +12 -10
  856. package/src/__tests__/gateway-only-enforcement.test.ts +2 -2
  857. package/src/__tests__/gateway-only-guard.test.ts +1 -0
  858. package/src/__tests__/gemini-image-service.test.ts +4 -4
  859. package/src/__tests__/gemini-provider.test.ts +6 -9
  860. package/src/__tests__/guardian-action-late-reply.test.ts +1 -1
  861. package/src/__tests__/guardian-action-no-hardcoded-copy.test.ts +1 -1
  862. package/src/__tests__/guardian-binding-drift-heal.test.ts +128 -0
  863. package/src/__tests__/guardian-decision-primitive-canonical.test.ts +15 -15
  864. package/src/__tests__/guardian-dispatch.test.ts +9 -10
  865. package/src/__tests__/guardian-grant-minting.test.ts +5 -5
  866. package/src/__tests__/guardian-question-copy.test.ts +10 -8
  867. package/src/__tests__/guardian-routing-invariants.test.ts +61 -61
  868. package/src/__tests__/guardian-routing-state.test.ts +1 -1
  869. package/src/__tests__/guardian-verification-voice-binding.test.ts +1 -1
  870. package/src/__tests__/handlers-user-message-approval-consumption.test.ts +20 -16
  871. package/src/__tests__/headless-browser-interactions.test.ts +18 -17
  872. package/src/__tests__/headless-browser-navigate.test.ts +0 -1
  873. package/src/__tests__/headless-browser-read-tools.test.ts +5 -6
  874. package/src/__tests__/headless-browser-snapshot.test.ts +12 -9
  875. package/src/__tests__/heartbeat-service.test.ts +5 -4
  876. package/src/__tests__/hooks-ts-runner.test.ts +10 -4
  877. package/src/__tests__/host-bash-proxy.test.ts +50 -1
  878. package/src/__tests__/host-cu-proxy.test.ts +1 -1
  879. package/src/__tests__/host-file-edit-tool.test.ts +0 -1
  880. package/src/__tests__/host-file-proxy.test.ts +1 -1
  881. package/src/__tests__/host-file-read-tool.test.ts +0 -1
  882. package/src/__tests__/host-file-write-tool.test.ts +0 -1
  883. package/src/__tests__/host-shell-tool.test.ts +70 -11
  884. package/src/__tests__/http-user-message-parity.test.ts +32 -19
  885. package/src/__tests__/intent-routing.test.ts +68 -129
  886. package/src/__tests__/invite-redemption-service.test.ts +35 -0
  887. package/src/__tests__/invite-routes-http.test.ts +5 -0
  888. package/src/__tests__/keychain-broker-client.test.ts +150 -0
  889. package/src/__tests__/list-messages-attachments.test.ts +1 -1
  890. package/src/__tests__/log-export-workspace.test.ts +133 -60
  891. package/src/__tests__/managed-credential-catalog-cli.test.ts +349 -0
  892. package/src/__tests__/managed-proxy-context.test.ts +2 -5
  893. package/src/__tests__/managed-skill-lifecycle.test.ts +20 -8
  894. package/src/__tests__/managed-store.test.ts +0 -38
  895. package/src/__tests__/media-generate-image.test.ts +48 -14
  896. package/src/__tests__/media-reuse-story.e2e.test.ts +83 -71
  897. package/src/__tests__/media-visibility-policy.test.ts +10 -10
  898. package/src/__tests__/memory-context-benchmark.benchmark.test.ts +1 -1
  899. package/src/__tests__/memory-lifecycle-e2e.test.ts +24 -18
  900. package/src/__tests__/memory-query-builder.test.ts +2 -2
  901. package/src/__tests__/memory-recall-quality.test.ts +4 -3
  902. package/src/__tests__/memory-regressions.test.ts +153 -120
  903. package/src/__tests__/messaging-send-tool.test.ts +0 -2
  904. package/src/__tests__/migration-cross-version-compatibility.test.ts +32 -32
  905. package/src/__tests__/migration-export-http.test.ts +26 -27
  906. package/src/__tests__/migration-import-commit-http.test.ts +165 -37
  907. package/src/__tests__/migration-import-preflight-http.test.ts +81 -20
  908. package/src/__tests__/migration-validate-http.test.ts +16 -16
  909. package/src/__tests__/model-intents.test.ts +1 -1
  910. package/src/__tests__/no-domain-routing-in-prompt-guard.test.ts +51 -0
  911. package/src/__tests__/notification-broadcaster.test.ts +43 -41
  912. package/src/__tests__/{notification-thread-candidate-validation.test.ts → notification-conversation-candidate-validation.test.ts} +26 -24
  913. package/src/__tests__/{notification-thread-candidates.test.ts → notification-conversation-candidates.test.ts} +15 -15
  914. package/src/__tests__/notification-decision-fallback.test.ts +8 -8
  915. package/src/__tests__/notification-decision-identity.test.ts +208 -0
  916. package/src/__tests__/notification-decision-strategy.test.ts +41 -39
  917. package/src/__tests__/notification-deep-link.test.ts +19 -19
  918. package/src/__tests__/notification-guardian-path.test.ts +13 -11
  919. package/src/__tests__/notification-schedule-dedup.test.ts +7 -7
  920. package/src/__tests__/notification-telegram-adapter.test.ts +5 -5
  921. package/src/__tests__/oauth-store.test.ts +2 -8
  922. package/src/__tests__/oauth2-gateway-transport.test.ts +6 -1
  923. package/src/__tests__/onboarding-template-contract.test.ts +23 -59
  924. package/src/__tests__/permission-types.test.ts +1 -1
  925. package/src/__tests__/playbook-execution.test.ts +0 -1
  926. package/src/__tests__/playbook-tools.test.ts +0 -1
  927. package/src/__tests__/provider-commit-message-generator.test.ts +7 -6
  928. package/src/__tests__/provider-error-scenarios.test.ts +154 -0
  929. package/src/__tests__/provider-fail-open-selection.test.ts +22 -28
  930. package/src/__tests__/provider-managed-proxy-integration.test.ts +41 -63
  931. package/src/__tests__/provider-registry-ollama.test.ts +16 -2
  932. package/src/__tests__/proxy-approval-callback.test.ts +2 -2
  933. package/src/__tests__/qdrant-manager.test.ts +7 -7
  934. package/src/__tests__/ratelimit.test.ts +0 -74
  935. package/src/__tests__/recording-handler.test.ts +20 -21
  936. package/src/__tests__/relay-server.test.ts +8 -5
  937. package/src/__tests__/require-fresh-approval.test.ts +532 -0
  938. package/src/__tests__/resolve-trust-class.test.ts +2 -2
  939. package/src/__tests__/runtime-attachment-metadata.test.ts +1 -1
  940. package/src/__tests__/runtime-events-sse-parity.test.ts +22 -22
  941. package/src/__tests__/runtime-events-sse.test.ts +16 -8
  942. package/src/__tests__/scaffold-managed-skill-tool.test.ts +1 -4
  943. package/src/__tests__/schedule-tools.test.ts +0 -1
  944. package/src/__tests__/scheduler-recurrence.test.ts +46 -2
  945. package/src/__tests__/schema-transforms.test.ts +114 -54
  946. package/src/__tests__/scoped-approval-grants.test.ts +6 -6
  947. package/src/__tests__/scoped-grant-security-matrix.test.ts +1 -1
  948. package/src/__tests__/{script-proxy-session-manager.test.ts → script-proxy-conversation-manager.test.ts} +4 -1
  949. package/src/__tests__/secret-onetime-send.test.ts +20 -4
  950. package/src/__tests__/secret-response-routing.test.ts +1 -1
  951. package/src/__tests__/secret-routes-managed-proxy.test.ts +82 -2
  952. package/src/__tests__/secret-scanner-executor.test.ts +1 -4
  953. package/src/__tests__/send-endpoint-busy.test.ts +134 -62
  954. package/src/__tests__/send-notification-tool.test.ts +2 -4
  955. package/src/__tests__/sequence-store.test.ts +5 -5
  956. package/src/__tests__/shell-credential-ref.test.ts +1 -3
  957. package/src/__tests__/shell-tool-proxy-mode.test.ts +3 -5
  958. package/src/__tests__/skill-feature-flags-integration.test.ts +1 -2
  959. package/src/__tests__/skill-feature-flags.test.ts +7 -8
  960. package/src/__tests__/skill-include-graph.test.ts +1 -2
  961. package/src/__tests__/skill-load-feature-flag.test.ts +10 -11
  962. package/src/__tests__/skill-load-tool.test.ts +19 -15
  963. package/src/__tests__/skill-memory.test.ts +547 -0
  964. package/src/__tests__/skill-projection-feature-flag.test.ts +4 -6
  965. package/src/__tests__/skill-projection.benchmark.test.ts +3 -5
  966. package/src/__tests__/skill-script-runner-host.test.ts +3 -4
  967. package/src/__tests__/skill-script-runner-sandbox.test.ts +4 -6
  968. package/src/__tests__/skill-script-runner.test.ts +0 -1
  969. package/src/__tests__/skill-tool-factory.test.ts +0 -1
  970. package/src/__tests__/skills.test.ts +0 -37
  971. package/src/__tests__/slack-app-setup-skill-regression.test.ts +37 -0
  972. package/src/__tests__/slack-channel-config.test.ts +109 -94
  973. package/src/__tests__/slack-skill.test.ts +0 -4
  974. package/src/__tests__/starter-task-flow.test.ts +3 -3
  975. package/src/__tests__/subagent-manager-notify.test.ts +45 -40
  976. package/src/__tests__/subagent-tools.test.ts +78 -69
  977. package/src/__tests__/subagent-types.test.ts +3 -3
  978. package/src/__tests__/surface-mutex-cleanup.test.ts +1 -1
  979. package/src/__tests__/{swarm-session-integration.test.ts → swarm-conversation-integration.test.ts} +13 -1
  980. package/src/__tests__/swarm-recursion.test.ts +21 -9
  981. package/src/__tests__/swarm-tool.test.ts +14 -1
  982. package/src/__tests__/system-prompt.test.ts +50 -79
  983. package/src/__tests__/task-compiler.test.ts +1 -1
  984. package/src/__tests__/task-management-tools.test.ts +1 -2
  985. package/src/__tests__/telegram-config.test.ts +121 -0
  986. package/src/__tests__/terminal-sandbox.test.ts +6 -0
  987. package/src/__tests__/terminal-tools.test.ts +2 -2
  988. package/src/__tests__/token-estimator-accuracy.benchmark.test.ts +2 -2
  989. package/src/__tests__/tool-approval-handler.test.ts +2 -3
  990. package/src/__tests__/tool-audit-listener.test.ts +0 -6
  991. package/src/__tests__/tool-domain-event-publisher.test.ts +0 -11
  992. package/src/__tests__/tool-execution-abort-cleanup.test.ts +68 -16
  993. package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +0 -1
  994. package/src/__tests__/tool-executor-lifecycle-events.test.ts +4 -7
  995. package/src/__tests__/tool-executor-shell-integration.test.ts +1 -2
  996. package/src/__tests__/tool-executor.test.ts +21 -21
  997. package/src/__tests__/tool-grant-request-escalation.test.ts +8 -9
  998. package/src/__tests__/tool-metrics-listener.test.ts +0 -9
  999. package/src/__tests__/tool-notification-listener.test.ts +0 -2
  1000. package/src/__tests__/tool-preview-lifecycle.test.ts +6 -6
  1001. package/src/__tests__/tool-profiling-listener.test.ts +0 -7
  1002. package/src/__tests__/tool-trace-listener.test.ts +0 -11
  1003. package/src/__tests__/trace-emitter.test.ts +9 -2
  1004. package/src/__tests__/trust-context-guards.test.ts +1 -1
  1005. package/src/__tests__/trust-store.test.ts +7 -8
  1006. package/src/__tests__/trusted-contact-approval-notifier.test.ts +1 -1
  1007. package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +9 -10
  1008. package/src/__tests__/turn-commit.test.ts +3 -3
  1009. package/src/__tests__/twilio-routes.test.ts +1 -18
  1010. package/src/__tests__/ui-file-upload-surface.test.ts +2 -2
  1011. package/src/__tests__/user-reference.test.ts +82 -2
  1012. package/src/__tests__/vbundle-pax-and-symlink.test.ts +196 -0
  1013. package/src/__tests__/verification-control-plane-policy.test.ts +1 -2
  1014. package/src/__tests__/voice-scoped-grant-consumer.test.ts +4 -4
  1015. package/src/__tests__/voice-session-bridge.test.ts +31 -31
  1016. package/src/__tests__/workspace-git-service.test.ts +49 -2
  1017. package/src/__tests__/workspace-lifecycle.test.ts +6 -6
  1018. package/src/__tests__/workspace-migration-add-send-diagnostics.test.ts +59 -0
  1019. package/src/__tests__/workspace-migration-avatar-rename.test.ts +128 -0
  1020. package/src/__tests__/workspace-migration-extract-collect-usage-data.test.ts +179 -0
  1021. package/src/__tests__/workspace-migration-seed-device-id.test.ts +328 -0
  1022. package/src/__tests__/workspace-migrations-runner.test.ts +293 -0
  1023. package/src/acp/agent-process.ts +201 -0
  1024. package/src/acp/client-handler.ts +361 -0
  1025. package/src/acp/index.ts +44 -0
  1026. package/src/acp/session-manager.ts +348 -0
  1027. package/src/acp/types.ts +79 -0
  1028. package/src/approvals/AGENTS.md +2 -2
  1029. package/src/approvals/approval-primitive.ts +4 -4
  1030. package/src/approvals/guardian-decision-primitive.ts +7 -7
  1031. package/src/approvals/guardian-request-resolvers.ts +4 -4
  1032. package/src/avatar/ascii-renderer.ts +63 -0
  1033. package/src/avatar/character-components.ts +454 -0
  1034. package/src/avatar/png-renderer.ts +17 -0
  1035. package/src/avatar/resvg-lazy.ts +21 -0
  1036. package/src/avatar/svg-compositor.ts +90 -0
  1037. package/src/avatar/traits-png-sync.ts +133 -0
  1038. package/src/calls/call-controller.ts +8 -8
  1039. package/src/calls/call-conversation-messages.ts +1 -1
  1040. package/src/calls/call-domain.ts +4 -4
  1041. package/src/calls/call-pointer-message-composer.ts +2 -2
  1042. package/src/calls/call-pointer-messages.ts +10 -10
  1043. package/src/calls/guardian-action-sweep.ts +3 -3
  1044. package/src/calls/guardian-dispatch.ts +8 -8
  1045. package/src/calls/guardian-question-copy.ts +7 -7
  1046. package/src/calls/relay-access-wait.ts +2 -2
  1047. package/src/calls/relay-server.ts +4 -4
  1048. package/src/calls/twilio-rest.ts +0 -248
  1049. package/src/calls/twilio-routes.ts +1 -1
  1050. package/src/calls/voice-session-bridge.ts +59 -56
  1051. package/src/cli/AGENTS.md +6 -9
  1052. package/src/cli/__tests__/notifications.test.ts +5 -5
  1053. package/src/cli/commands/avatar.ts +343 -0
  1054. package/src/cli/commands/bash.ts +3 -3
  1055. package/src/cli/commands/channel-verification-sessions.ts +7 -4
  1056. package/src/cli/commands/completions.ts +4 -4
  1057. package/src/cli/commands/config.ts +52 -7
  1058. package/src/cli/commands/conversations.ts +386 -0
  1059. package/src/cli/commands/credential-execution.ts +345 -0
  1060. package/src/cli/commands/credentials.ts +108 -6
  1061. package/src/cli/commands/doctor.ts +9 -3
  1062. package/src/cli/commands/keys.ts +30 -0
  1063. package/src/cli/commands/mcp.ts +2 -2
  1064. package/src/cli/commands/memory.ts +8 -8
  1065. package/src/cli/commands/notifications.ts +4 -4
  1066. package/src/cli/commands/oauth/connections.ts +98 -17
  1067. package/src/cli/commands/oauth/providers.ts +45 -8
  1068. package/src/cli/commands/shotgun.ts +250 -0
  1069. package/src/cli/main-screen.tsx +3 -29
  1070. package/src/cli/program.ts +13 -3
  1071. package/src/cli.ts +169 -235
  1072. package/src/config/acp-schema.ts +47 -0
  1073. package/src/config/bundled-skills/_shared/CLI_RETRIEVAL_PATTERN.md +14 -12
  1074. package/src/config/bundled-skills/acp/SKILL.md +58 -0
  1075. package/src/config/bundled-skills/acp/TOOLS.json +79 -0
  1076. package/src/config/bundled-skills/{settings/tools/set-avatar.ts → acp/tools/acp-abort.ts} +2 -2
  1077. package/src/config/bundled-skills/acp/tools/acp-spawn.ts +12 -0
  1078. package/src/config/bundled-skills/acp/tools/acp-status.ts +12 -0
  1079. package/src/config/bundled-skills/app-builder/SKILL.md +63 -47
  1080. package/src/config/bundled-skills/app-builder/TOOLS.json +10 -10
  1081. package/src/config/bundled-skills/browser/SKILL.md +17 -16
  1082. package/src/config/bundled-skills/browser/TOOLS.json +16 -16
  1083. package/src/config/bundled-skills/browser/tools/browser-wait-for-download.ts +1 -1
  1084. package/src/config/bundled-skills/chatgpt-import/SKILL.md +2 -3
  1085. package/src/config/bundled-skills/chatgpt-import/TOOLS.json +1 -1
  1086. package/src/config/bundled-skills/chatgpt-import/tools/chatgpt-import.ts +1 -1
  1087. package/src/config/bundled-skills/claude-code/SKILL.md +6 -7
  1088. package/src/config/bundled-skills/claude-code/TOOLS.json +1 -1
  1089. package/src/config/bundled-skills/computer-use/SKILL.md +3 -5
  1090. package/src/config/bundled-skills/computer-use/TOOLS.json +15 -15
  1091. package/src/config/bundled-skills/contacts/SKILL.md +3 -4
  1092. package/src/config/bundled-skills/contacts/TOOLS.json +8 -4
  1093. package/src/config/bundled-skills/contacts/tools/google-contacts.ts +5 -1
  1094. package/src/config/bundled-skills/document/SKILL.md +4 -4
  1095. package/src/config/bundled-skills/document/TOOLS.json +2 -2
  1096. package/src/config/bundled-skills/followups/SKILL.md +1 -1
  1097. package/src/config/bundled-skills/followups/TOOLS.json +10 -10
  1098. package/src/config/bundled-skills/gmail/SKILL.md +32 -33
  1099. package/src/config/bundled-skills/gmail/TOOLS.json +16 -16
  1100. package/src/config/bundled-skills/gmail/tools/gmail-archive.ts +1 -1
  1101. package/src/config/bundled-skills/gmail/tools/gmail-sender-digest.ts +1 -1
  1102. package/src/config/bundled-skills/google-calendar/SKILL.md +1 -2
  1103. package/src/config/bundled-skills/google-calendar/TOOLS.json +5 -5
  1104. package/src/config/bundled-skills/google-calendar/tools/calendar-check-availability.ts +1 -1
  1105. package/src/config/bundled-skills/google-calendar/tools/calendar-create-event.ts +1 -1
  1106. package/src/config/bundled-skills/google-calendar/tools/calendar-get-event.ts +1 -1
  1107. package/src/config/bundled-skills/google-calendar/tools/calendar-list-events.ts +1 -1
  1108. package/src/config/bundled-skills/google-calendar/tools/calendar-rsvp.ts +1 -1
  1109. package/src/config/bundled-skills/google-calendar/tools/shared.ts +1 -5
  1110. package/src/config/bundled-skills/google-calendar/types.ts +1 -1
  1111. package/src/config/bundled-skills/heartbeat/SKILL.md +43 -0
  1112. package/src/config/bundled-skills/image-studio/SKILL.md +3 -4
  1113. package/src/config/bundled-skills/image-studio/TOOLS.json +2 -3
  1114. package/src/config/bundled-skills/image-studio/tools/media-generate-image.ts +44 -23
  1115. package/src/config/bundled-skills/media-processing/SKILL.md +40 -40
  1116. package/src/config/bundled-skills/media-processing/TOOLS.json +8 -8
  1117. package/src/config/bundled-skills/media-processing/__tests__/concurrency-pool.test.ts +2 -2
  1118. package/src/config/bundled-skills/media-processing/__tests__/preprocess.test.ts +1 -1
  1119. package/src/config/bundled-skills/media-processing/services/gemini-map.ts +5 -5
  1120. package/src/config/bundled-skills/media-processing/services/gemini-video.ts +2 -2
  1121. package/src/config/bundled-skills/media-processing/services/preprocess.ts +7 -3
  1122. package/src/config/bundled-skills/media-processing/services/processing-pipeline.ts +2 -2
  1123. package/src/config/bundled-skills/media-processing/services/reduce.ts +3 -3
  1124. package/src/config/bundled-skills/media-processing/tools/analyze-keyframes.ts +3 -3
  1125. package/src/config/bundled-skills/media-processing/tools/generate-clip.ts +2 -2
  1126. package/src/config/bundled-skills/media-processing/tools/query-media-events.ts +1 -1
  1127. package/src/config/bundled-skills/messaging/SKILL.md +39 -37
  1128. package/src/config/bundled-skills/messaging/TOOLS.json +11 -15
  1129. package/src/config/bundled-skills/messaging/tools/messaging-send.ts +1 -1
  1130. package/src/config/bundled-skills/messaging/tools/shared.ts +1 -1
  1131. package/src/config/bundled-skills/notifications/SKILL.md +5 -6
  1132. package/src/config/bundled-skills/notifications/TOOLS.json +3 -3
  1133. package/src/config/bundled-skills/notifications/tools/send-notification.ts +3 -3
  1134. package/src/config/bundled-skills/orchestration/SKILL.md +5 -2
  1135. package/src/config/bundled-skills/orchestration/TOOLS.json +1 -1
  1136. package/src/config/bundled-skills/phone-calls/SKILL.md +37 -21
  1137. package/src/config/bundled-skills/phone-calls/TOOLS.json +3 -3
  1138. package/src/config/bundled-skills/phone-calls/references/CONFIG.md +2 -2
  1139. package/src/config/bundled-skills/phone-calls/references/TRANSCRIPTS.md +2 -2
  1140. package/src/config/bundled-skills/phone-calls/references/TROUBLESHOOTING.md +1 -1
  1141. package/src/config/bundled-skills/playbooks/TOOLS.json +4 -4
  1142. package/src/config/bundled-skills/schedule/SKILL.md +26 -26
  1143. package/src/config/bundled-skills/schedule/TOOLS.json +5 -5
  1144. package/src/config/bundled-skills/screen-watch/SKILL.md +3 -4
  1145. package/src/config/bundled-skills/screen-watch/TOOLS.json +1 -1
  1146. package/src/config/bundled-skills/sequences/SKILL.md +2 -3
  1147. package/src/config/bundled-skills/sequences/TOOLS.json +14 -14
  1148. package/src/config/bundled-skills/sequences/tools/sequence-analytics.ts +2 -2
  1149. package/src/config/bundled-skills/sequences/tools/sequence-create.ts +2 -1
  1150. package/src/config/bundled-skills/sequences/tools/sequence-enroll.ts +2 -2
  1151. package/src/config/bundled-skills/sequences/tools/sequence-enrollment-list.ts +1 -1
  1152. package/src/config/bundled-skills/sequences/tools/sequence-get.ts +1 -1
  1153. package/src/config/bundled-skills/sequences/tools/sequence-import.ts +3 -3
  1154. package/src/config/bundled-skills/sequences/tools/sequence-list.ts +1 -1
  1155. package/src/config/bundled-skills/sequences/tools/sequence-update.ts +3 -2
  1156. package/src/config/bundled-skills/settings/SKILL.md +2 -3
  1157. package/src/config/bundled-skills/settings/TOOLS.json +3 -25
  1158. package/src/config/bundled-skills/settings/tools/open-system-settings.ts +1 -1
  1159. package/src/config/bundled-skills/skill-management/SKILL.md +0 -1
  1160. package/src/config/bundled-skills/skill-management/TOOLS.json +5 -13
  1161. package/src/config/bundled-skills/skills-catalog/SKILL.md +84 -0
  1162. package/src/config/bundled-skills/slack/SKILL.md +2 -3
  1163. package/src/config/bundled-skills/slack/TOOLS.json +8 -8
  1164. package/src/config/bundled-skills/slack/tools/slack-scan-digest.ts +3 -3
  1165. package/src/config/bundled-skills/subagent/SKILL.md +2 -2
  1166. package/src/config/bundled-skills/subagent/TOOLS.json +7 -7
  1167. package/src/config/bundled-skills/tasks/SKILL.md +1 -1
  1168. package/src/config/bundled-skills/tasks/TOOLS.json +9 -9
  1169. package/src/config/bundled-skills/transcribe/SKILL.md +5 -5
  1170. package/src/config/bundled-skills/transcribe/TOOLS.json +1 -1
  1171. package/src/config/bundled-skills/transcribe/tools/transcribe-media.ts +43 -13
  1172. package/src/config/bundled-skills/watcher/SKILL.md +4 -4
  1173. package/src/config/bundled-skills/watcher/TOOLS.json +5 -5
  1174. package/src/config/bundled-tool-registry.ts +9 -2
  1175. package/src/config/env.ts +44 -2
  1176. package/src/config/feature-flag-registry.json +185 -33
  1177. package/src/config/loader.ts +3 -0
  1178. package/src/config/raw-config-utils.ts +30 -0
  1179. package/src/config/schema-utils.ts +27 -0
  1180. package/src/config/schema.ts +54 -39
  1181. package/src/config/schemas/calls.ts +219 -152
  1182. package/src/config/schemas/channels.ts +118 -71
  1183. package/src/config/schemas/elevenlabs.ts +39 -24
  1184. package/src/config/schemas/heartbeat.ts +13 -4
  1185. package/src/config/schemas/inference.ts +155 -99
  1186. package/src/config/schemas/ingress.ts +100 -64
  1187. package/src/config/schemas/logging.ts +24 -15
  1188. package/src/config/schemas/mcp.ts +95 -44
  1189. package/src/config/schemas/memory-lifecycle.ts +70 -50
  1190. package/src/config/schemas/memory-processing.ts +46 -25
  1191. package/src/config/schemas/memory-retrieval.ts +206 -139
  1192. package/src/config/schemas/memory-storage.ts +113 -79
  1193. package/src/config/schemas/memory.ts +33 -28
  1194. package/src/config/schemas/notifications.ts +12 -7
  1195. package/src/config/schemas/platform.ts +62 -39
  1196. package/src/config/schemas/sandbox.ts +10 -5
  1197. package/src/config/schemas/security.ts +72 -41
  1198. package/src/config/schemas/services.ts +64 -0
  1199. package/src/config/schemas/skills.ts +131 -81
  1200. package/src/config/schemas/swarm.ts +78 -46
  1201. package/src/config/schemas/timeouts.ts +54 -41
  1202. package/src/config/schemas/workspace-git.ts +219 -162
  1203. package/src/config/skill-state.ts +6 -47
  1204. package/src/config/skills.ts +66 -271
  1205. package/src/config/types.ts +5 -0
  1206. package/src/contacts/contact-store.ts +82 -7
  1207. package/src/contacts/contacts-write.ts +13 -2
  1208. package/src/context/window-manager.ts +1 -1
  1209. package/src/credential-execution/approval-bridge.ts +350 -0
  1210. package/src/credential-execution/client.ts +414 -0
  1211. package/src/credential-execution/executable-discovery.ts +169 -0
  1212. package/src/credential-execution/feature-gates.ts +75 -0
  1213. package/src/credential-execution/managed-catalog.ts +155 -0
  1214. package/src/credential-execution/process-manager.ts +451 -0
  1215. package/src/daemon/approval-generators.ts +13 -7
  1216. package/src/daemon/assistant-attachments.ts +3 -3
  1217. package/src/daemon/config-watcher.ts +23 -15
  1218. package/src/daemon/context-overflow-policy.ts +5 -5
  1219. package/src/daemon/context-overflow-reducer.ts +2 -2
  1220. package/src/daemon/{session-agent-loop-handlers.ts → conversation-agent-loop-handlers.ts} +23 -23
  1221. package/src/daemon/{session-agent-loop.ts → conversation-agent-loop.ts} +99 -101
  1222. package/src/daemon/{session-attachments.ts → conversation-attachments.ts} +35 -9
  1223. package/src/daemon/{session-error.ts → conversation-error.ts} +58 -24
  1224. package/src/daemon/conversation-evictor.ts +204 -0
  1225. package/src/daemon/{session-history.ts → conversation-history.ts} +37 -33
  1226. package/src/daemon/{session-lifecycle.ts → conversation-lifecycle.ts} +16 -16
  1227. package/src/daemon/{session-memory.ts → conversation-memory.ts} +9 -8
  1228. package/src/daemon/{session-messaging.ts → conversation-messaging.ts} +9 -9
  1229. package/src/daemon/{session-notifiers.ts → conversation-notifiers.ts} +25 -25
  1230. package/src/daemon/{session-process.ts → conversation-process.ts} +128 -131
  1231. package/src/daemon/{session-queue-manager.ts → conversation-queue-manager.ts} +11 -8
  1232. package/src/daemon/{session-runtime-assembly.ts → conversation-runtime-assembly.ts} +156 -285
  1233. package/src/daemon/{session-skill-tools.ts → conversation-skill-tools.ts} +18 -18
  1234. package/src/daemon/{session-slash.ts → conversation-slash.ts} +42 -88
  1235. package/src/daemon/{session-surfaces.ts → conversation-surfaces.ts} +48 -34
  1236. package/src/daemon/{session-tool-setup.ts → conversation-tool-setup.ts} +50 -44
  1237. package/src/daemon/{session-usage.ts → conversation-usage.ts} +1 -1
  1238. package/src/daemon/{session-workspace.ts → conversation-workspace.ts} +3 -3
  1239. package/src/daemon/{session.ts → conversation.ts} +98 -73
  1240. package/src/daemon/daemon-control.ts +1 -1
  1241. package/src/daemon/date-context.ts +10 -83
  1242. package/src/daemon/doordash-steps.ts +9 -8
  1243. package/src/daemon/guardian-action-generators.ts +8 -2
  1244. package/src/daemon/handlers/config-channels.ts +19 -6
  1245. package/src/daemon/handlers/config-model.ts +33 -32
  1246. package/src/daemon/handlers/config-slack-channel.ts +35 -7
  1247. package/src/daemon/handlers/config-telegram.ts +6 -1
  1248. package/src/daemon/handlers/config-voice.ts +1 -2
  1249. package/src/daemon/handlers/{session-history.ts → conversation-history.ts} +4 -4
  1250. package/src/daemon/handlers/{sessions.ts → conversations.ts} +165 -185
  1251. package/src/daemon/handlers/recording.ts +20 -20
  1252. package/src/daemon/handlers/shared.ts +17 -17
  1253. package/src/daemon/handlers/skills.ts +168 -21
  1254. package/src/daemon/history-repair.ts +1 -1
  1255. package/src/daemon/host-bash-proxy.ts +11 -3
  1256. package/src/daemon/host-cu-proxy.ts +2 -2
  1257. package/src/daemon/host-file-proxy.ts +3 -3
  1258. package/src/daemon/lifecycle.ts +131 -82
  1259. package/src/daemon/main.ts +4 -0
  1260. package/src/daemon/media-visibility-policy.ts +10 -10
  1261. package/src/daemon/message-protocol.ts +11 -8
  1262. package/src/daemon/message-types/acp.ts +66 -0
  1263. package/src/daemon/message-types/computer-use.ts +4 -4
  1264. package/src/daemon/message-types/{sessions.ts → conversations.ts} +74 -80
  1265. package/src/daemon/message-types/documents.ts +2 -2
  1266. package/src/daemon/message-types/host-bash.ts +3 -1
  1267. package/src/daemon/message-types/host-cu.ts +1 -1
  1268. package/src/daemon/message-types/host-file.ts +3 -3
  1269. package/src/daemon/message-types/integrations.ts +2 -2
  1270. package/src/daemon/message-types/messages.ts +23 -23
  1271. package/src/daemon/message-types/notifications.ts +5 -5
  1272. package/src/daemon/message-types/settings.ts +1 -1
  1273. package/src/daemon/message-types/shared.ts +5 -3
  1274. package/src/daemon/message-types/skills.ts +1 -10
  1275. package/src/daemon/message-types/subagents.ts +2 -2
  1276. package/src/daemon/message-types/surfaces.ts +7 -7
  1277. package/src/daemon/message-types/work-items.ts +4 -4
  1278. package/src/daemon/parse-actual-tokens-from-error.test.ts +3 -7
  1279. package/src/daemon/providers-setup.ts +79 -0
  1280. package/src/daemon/seed-files.ts +7 -26
  1281. package/src/daemon/server.ts +452 -214
  1282. package/src/daemon/shutdown-handlers.ts +9 -3
  1283. package/src/daemon/startup-error.ts +126 -0
  1284. package/src/daemon/tool-side-effects.ts +42 -18
  1285. package/src/daemon/trace-emitter.ts +28 -5
  1286. package/src/daemon/verification-session-intent.ts +1 -1
  1287. package/src/daemon/watch-handler.ts +23 -21
  1288. package/src/email/feature-gate.ts +23 -0
  1289. package/src/events/domain-events.ts +3 -9
  1290. package/src/events/tool-domain-event-publisher.ts +0 -8
  1291. package/src/events/tool-metrics-listener.ts +0 -7
  1292. package/src/events/tool-permission-telemetry-listener.ts +46 -0
  1293. package/src/export/formatter.ts +1 -1
  1294. package/src/followups/followup-store.ts +8 -5
  1295. package/src/followups/types.ts +2 -2
  1296. package/src/heartbeat/heartbeat-service.ts +1 -1
  1297. package/src/hooks/discovery.ts +3 -0
  1298. package/src/hooks/manager.ts +27 -2
  1299. package/src/hooks/types.ts +4 -1
  1300. package/src/inbound/platform-callback-registration.ts +6 -2
  1301. package/src/instrument.ts +37 -19
  1302. package/src/media/app-icon-generator.ts +17 -10
  1303. package/src/media/avatar-router.ts +17 -10
  1304. package/src/media/gemini-image-service.ts +125 -21
  1305. package/src/memory/app-git-service.ts +3 -3
  1306. package/src/memory/attachments-store.ts +92 -27
  1307. package/src/memory/canonical-guardian-store.ts +37 -27
  1308. package/src/memory/channel-verification-sessions.ts +6 -6
  1309. package/src/memory/checkpoints.ts +5 -0
  1310. package/src/memory/conversation-bootstrap.ts +2 -2
  1311. package/src/memory/conversation-crud.ts +343 -23
  1312. package/src/memory/conversation-key-store.ts +40 -4
  1313. package/src/memory/conversation-queries.ts +8 -6
  1314. package/src/memory/conversation-starters-cadence.ts +74 -0
  1315. package/src/memory/conversation-title-service.ts +2 -3
  1316. package/src/memory/db-init.ts +70 -2
  1317. package/src/memory/embedding-backend.ts +71 -11
  1318. package/src/memory/external-conversation-store.ts +1 -1
  1319. package/src/memory/guardian-action-store.ts +3 -3
  1320. package/src/memory/indexer.ts +20 -9
  1321. package/src/memory/invite-store.ts +4 -4
  1322. package/src/memory/items-extractor.ts +48 -4
  1323. package/src/memory/job-handlers/backfill.ts +15 -8
  1324. package/src/memory/job-handlers/cleanup.ts +1 -1
  1325. package/src/memory/job-handlers/conversation-starters.ts +433 -0
  1326. package/src/memory/jobs-store.ts +5 -7
  1327. package/src/memory/jobs-worker.ts +10 -0
  1328. package/src/memory/lifecycle-events-store.ts +63 -0
  1329. package/src/memory/migrations/033-scoped-approval-grants.ts +4 -4
  1330. package/src/memory/migrations/102-alter-table-columns.ts +5 -0
  1331. package/src/memory/migrations/105-contacts-and-triage.ts +3 -3
  1332. package/src/memory/migrations/111-media-assets.ts +1 -106
  1333. package/src/memory/migrations/121-canonical-guardian-requests.ts +5 -5
  1334. package/src/memory/migrations/159-drop-contact-interaction-columns.ts +5 -0
  1335. package/src/memory/migrations/161-drop-orphaned-media-tables.ts +18 -0
  1336. package/src/memory/migrations/162-guardian-timestamps-epoch-ms.ts +283 -0
  1337. package/src/memory/migrations/163-rename-notification-thread-columns.ts +35 -0
  1338. package/src/memory/migrations/164-rename-conversation-type-column.ts +19 -0
  1339. package/src/memory/migrations/165-rename-inbox-thread-state-table.ts +15 -0
  1340. package/src/memory/migrations/166-rename-followups-thread-id.ts +20 -0
  1341. package/src/memory/migrations/167-rename-sequence-enrollments-thread-id.ts +20 -0
  1342. package/src/memory/migrations/168-rename-sequence-steps-reply-key.ts +17 -0
  1343. package/src/memory/migrations/169-rename-gmail-provider-key-to-google.ts +64 -0
  1344. package/src/memory/migrations/170-thread-starters-table.ts +32 -0
  1345. package/src/memory/migrations/171-capability-card-columns.ts +43 -0
  1346. package/src/memory/migrations/172-rename-created-by-session-id.ts +27 -0
  1347. package/src/memory/migrations/173-rename-source-session-id.ts +16 -0
  1348. package/src/memory/migrations/174-rename-thread-starters-table.ts +52 -0
  1349. package/src/memory/migrations/175-create-lifecycle-events.ts +15 -0
  1350. package/src/memory/migrations/176-drop-capability-card-state.ts +36 -0
  1351. package/src/memory/migrations/177-create-trace-events-table.ts +40 -0
  1352. package/src/memory/migrations/index.ts +17 -0
  1353. package/src/memory/migrations/registry.ts +32 -0
  1354. package/src/memory/retriever.test.ts +223 -96
  1355. package/src/memory/retriever.ts +115 -138
  1356. package/src/memory/schema/calls.ts +1 -1
  1357. package/src/memory/schema/contacts.ts +3 -3
  1358. package/src/memory/schema/conversations.ts +2 -2
  1359. package/src/memory/schema/guardian.ts +9 -9
  1360. package/src/memory/schema/infrastructure.ts +29 -0
  1361. package/src/memory/schema/memory-core.ts +27 -0
  1362. package/src/memory/schema/notifications.ts +5 -5
  1363. package/src/memory/schema/tasks.ts +1 -1
  1364. package/src/memory/scoped-approval-grants.ts +14 -14
  1365. package/src/memory/search/formatting.ts +23 -6
  1366. package/src/memory/search/lexical.ts +2 -0
  1367. package/src/memory/search/semantic.ts +2 -0
  1368. package/src/memory/search/staleness.ts +1 -0
  1369. package/src/memory/search/types.ts +7 -3
  1370. package/src/memory/task-memory-cleanup.ts +96 -6
  1371. package/src/memory/trace-event-store.ts +148 -0
  1372. package/src/memory/turn-events-store.ts +48 -0
  1373. package/src/messaging/providers/telegram-bot/adapter.ts +1 -1
  1374. package/src/notifications/AGENTS.md +1 -1
  1375. package/src/notifications/README.md +103 -103
  1376. package/src/notifications/adapters/slack.ts +3 -3
  1377. package/src/notifications/adapters/telegram.ts +3 -3
  1378. package/src/notifications/broadcaster.ts +40 -40
  1379. package/src/notifications/{thread-candidates.ts → conversation-candidates.ts} +18 -18
  1380. package/src/notifications/conversation-pairing.ts +35 -31
  1381. package/src/notifications/{thread-seed-composer.ts → conversation-seed-composer.ts} +9 -9
  1382. package/src/notifications/decision-engine.ts +107 -84
  1383. package/src/notifications/deliveries-store.ts +14 -14
  1384. package/src/notifications/emit-signal.ts +16 -16
  1385. package/src/notifications/events-store.ts +4 -4
  1386. package/src/notifications/signal.ts +3 -3
  1387. package/src/notifications/types.ts +16 -12
  1388. package/src/oauth/byo-connection.test.ts +1 -1
  1389. package/src/oauth/manual-token-connection.ts +49 -25
  1390. package/src/oauth/oauth-store.ts +37 -15
  1391. package/src/oauth/platform-connection.test.ts +2 -2
  1392. package/src/oauth/provider-behaviors.ts +2 -1
  1393. package/src/oauth/seed-providers.ts +3 -11
  1394. package/src/oauth/token-persistence.ts +41 -25
  1395. package/src/outbound-proxy/index.ts +27 -3
  1396. package/src/permissions/checker.ts +21 -7
  1397. package/src/permissions/defaults.ts +4 -4
  1398. package/src/permissions/prompter.ts +3 -3
  1399. package/src/permissions/secret-prompter.ts +2 -2
  1400. package/src/permissions/types.ts +2 -2
  1401. package/src/prompts/__tests__/build-cli-reference-section.test.ts +10 -40
  1402. package/src/prompts/cache-boundary.ts +8 -0
  1403. package/src/prompts/system-prompt.ts +155 -743
  1404. package/src/prompts/templates/BOOTSTRAP.md +166 -33
  1405. package/src/prompts/templates/IDENTITY.md +8 -23
  1406. package/src/prompts/templates/SOUL.md +20 -41
  1407. package/src/prompts/templates/UPDATES.md +0 -12
  1408. package/src/prompts/templates/USER.md +3 -19
  1409. package/src/prompts/update-bulletin-format.ts +16 -0
  1410. package/src/prompts/update-bulletin.ts +18 -6
  1411. package/src/prompts/user-reference.ts +14 -16
  1412. package/src/providers/anthropic/client.ts +181 -13
  1413. package/src/providers/gemini/client.ts +6 -9
  1414. package/src/providers/managed-proxy/constants.ts +1 -7
  1415. package/src/providers/managed-proxy/context.ts +26 -1
  1416. package/src/providers/model-intents.ts +5 -5
  1417. package/src/providers/openai/client.ts +10 -1
  1418. package/src/providers/openrouter/client.ts +1 -0
  1419. package/src/providers/provider-availability.ts +39 -0
  1420. package/src/providers/provider-send-message.ts +20 -6
  1421. package/src/providers/ratelimit.ts +0 -35
  1422. package/src/providers/registry.ts +119 -82
  1423. package/src/providers/retry.ts +18 -1
  1424. package/src/runtime/AGENTS.md +5 -5
  1425. package/src/runtime/access-request-helper.ts +3 -3
  1426. package/src/runtime/actor-trust-resolver.ts +2 -2
  1427. package/src/runtime/approval-conversation-turn.ts +2 -2
  1428. package/src/runtime/assistant-event-hub.ts +9 -9
  1429. package/src/runtime/assistant-event.ts +5 -5
  1430. package/src/runtime/auth/__tests__/context.test.ts +2 -2
  1431. package/src/runtime/auth/__tests__/external-assistant-id.test.ts +88 -0
  1432. package/src/runtime/auth/__tests__/guard-tests.test.ts +1 -5
  1433. package/src/runtime/auth/__tests__/local-auth-context.test.ts +4 -4
  1434. package/src/runtime/auth/__tests__/middleware.test.ts +2 -2
  1435. package/src/runtime/auth/__tests__/subject.test.ts +6 -6
  1436. package/src/runtime/auth/context.ts +1 -1
  1437. package/src/runtime/auth/credential-service.ts +1 -1
  1438. package/src/runtime/auth/external-assistant-id.ts +36 -17
  1439. package/src/runtime/auth/route-policy.ts +24 -0
  1440. package/src/runtime/auth/subject.ts +7 -7
  1441. package/src/runtime/auth/types.ts +1 -1
  1442. package/src/runtime/channel-approval-types.ts +1 -1
  1443. package/src/runtime/channel-approvals.ts +9 -6
  1444. package/src/runtime/channel-invite-transport.ts +10 -7
  1445. package/src/runtime/channel-readiness-service.ts +5 -2
  1446. package/src/runtime/channel-retry-sweep.ts +1 -1
  1447. package/src/runtime/channel-verification-service.ts +2 -2
  1448. package/src/runtime/confirmation-request-guardian-bridge.ts +4 -4
  1449. package/src/runtime/{session-approval-overrides.ts → conversation-approval-overrides.ts} +6 -6
  1450. package/src/runtime/guardian-action-grant-minter.ts +2 -4
  1451. package/src/runtime/guardian-action-service.ts +2 -2
  1452. package/src/runtime/guardian-decision-types.ts +13 -8
  1453. package/src/runtime/guardian-reply-router.ts +4 -4
  1454. package/src/runtime/guardian-vellum-migration.ts +63 -1
  1455. package/src/runtime/http-server.ts +76 -35
  1456. package/src/runtime/http-types.ts +19 -15
  1457. package/src/runtime/invite-redemption-service.ts +8 -3
  1458. package/src/runtime/local-actor-identity.ts +9 -7
  1459. package/src/runtime/migrations/vbundle-builder.ts +212 -32
  1460. package/src/runtime/migrations/vbundle-import-analyzer.ts +74 -8
  1461. package/src/runtime/migrations/vbundle-importer.ts +66 -1
  1462. package/src/runtime/migrations/vbundle-validator.ts +17 -3
  1463. package/src/runtime/pending-interactions.ts +8 -8
  1464. package/src/runtime/routes/acp-routes.ts +170 -0
  1465. package/src/runtime/routes/approval-routes.ts +3 -3
  1466. package/src/runtime/routes/approval-strategies/guardian-callback-strategy.ts +5 -5
  1467. package/src/runtime/routes/attachment-routes.ts +2 -2
  1468. package/src/runtime/routes/avatar-routes.ts +83 -0
  1469. package/src/runtime/routes/btw-routes.ts +36 -13
  1470. package/src/runtime/routes/canonical-guardian-expiry-sweep.ts +1 -1
  1471. package/src/runtime/routes/channel-route-shared.ts +5 -3
  1472. package/src/runtime/routes/channel-verification-routes.ts +22 -5
  1473. package/src/runtime/routes/conversation-management-routes.ts +298 -0
  1474. package/src/runtime/routes/{session-query-routes.ts → conversation-query-routes.ts} +23 -20
  1475. package/src/runtime/routes/conversation-routes.ts +196 -169
  1476. package/src/runtime/routes/conversation-starter-routes.ts +207 -0
  1477. package/src/runtime/routes/debug-routes.ts +8 -2
  1478. package/src/runtime/routes/diagnostics-routes.ts +16 -17
  1479. package/src/runtime/routes/events-routes.ts +1 -1
  1480. package/src/runtime/routes/guardian-action-routes.ts +4 -4
  1481. package/src/runtime/routes/guardian-approval-interception.ts +1 -1
  1482. package/src/runtime/routes/guardian-bootstrap-routes.ts +13 -9
  1483. package/src/runtime/routes/host-bash-routes.ts +1 -1
  1484. package/src/runtime/routes/host-cu-routes.ts +1 -1
  1485. package/src/runtime/routes/host-file-routes.ts +1 -1
  1486. package/src/runtime/routes/inbound-message-handler.ts +1 -1
  1487. package/src/runtime/routes/inbound-stages/background-dispatch.ts +1 -1
  1488. package/src/runtime/routes/inbound-stages/escalation-intercept.ts +2 -2
  1489. package/src/runtime/routes/inbound-stages/secret-ingress-check.ts +1 -1
  1490. package/src/runtime/routes/inbound-stages/verification-intercept.ts +1 -1
  1491. package/src/runtime/routes/log-export-routes.ts +360 -40
  1492. package/src/runtime/routes/migration-routes.ts +25 -13
  1493. package/src/runtime/routes/recording-routes.ts +5 -5
  1494. package/src/runtime/routes/schedule-routes.ts +13 -7
  1495. package/src/runtime/routes/secret-routes.ts +196 -18
  1496. package/src/runtime/routes/settings-routes.ts +31 -18
  1497. package/src/runtime/routes/skills-routes.ts +38 -0
  1498. package/src/runtime/routes/subagents-routes.ts +10 -10
  1499. package/src/runtime/routes/surface-action-routes.ts +45 -45
  1500. package/src/runtime/routes/surface-content-routes.ts +18 -18
  1501. package/src/runtime/routes/telemetry-routes.ts +53 -0
  1502. package/src/runtime/routes/trace-event-routes.ts +62 -0
  1503. package/src/runtime/routes/watch-routes.ts +6 -6
  1504. package/src/runtime/routes/work-items-routes.test.ts +109 -0
  1505. package/src/runtime/routes/work-items-routes.ts +47 -46
  1506. package/src/runtime/tool-grant-request-helper.ts +4 -4
  1507. package/src/runtime/trust-context-resolver.ts +1 -1
  1508. package/src/runtime/verification-outbound-actions.ts +47 -31
  1509. package/src/schedule/scheduler.ts +14 -12
  1510. package/src/security/credential-backend.ts +29 -5
  1511. package/src/security/encrypted-store.ts +292 -48
  1512. package/src/security/keychain-broker-client.ts +45 -12
  1513. package/src/security/secure-keys.ts +46 -0
  1514. package/src/security/token-manager.ts +67 -167
  1515. package/src/sequence/engine.ts +12 -11
  1516. package/src/sequence/reply-matcher.ts +16 -13
  1517. package/src/sequence/store.ts +10 -7
  1518. package/src/sequence/types.ts +2 -2
  1519. package/src/signals/bash.ts +4 -4
  1520. package/src/signals/cancel.ts +14 -17
  1521. package/src/signals/confirm.ts +4 -7
  1522. package/src/signals/conversation-undo.ts +16 -20
  1523. package/src/signals/event-stream.ts +187 -0
  1524. package/src/signals/shotgun.ts +200 -0
  1525. package/src/signals/trust-rule.ts +3 -6
  1526. package/src/signals/user-message.ts +146 -0
  1527. package/src/skills/catalog-install.ts +11 -1
  1528. package/src/skills/managed-store.ts +2 -13
  1529. package/src/skills/skill-memory.ts +220 -0
  1530. package/src/subagent/manager.ts +83 -75
  1531. package/src/subagent/types.ts +5 -5
  1532. package/src/swarm/backend-claude-code.ts +1 -1
  1533. package/src/tasks/SPEC.md +5 -5
  1534. package/src/tasks/task-runner.ts +1 -1
  1535. package/src/telemetry/types.ts +35 -0
  1536. package/src/telemetry/usage-telemetry-reporter.test.ts +145 -24
  1537. package/src/telemetry/usage-telemetry-reporter.ts +126 -42
  1538. package/src/tools/AGENTS.md +32 -6
  1539. package/src/tools/acp/abort.ts +32 -0
  1540. package/src/tools/acp/spawn.ts +70 -0
  1541. package/src/tools/acp/status.ts +31 -0
  1542. package/src/tools/apps/executors.ts +8 -8
  1543. package/src/tools/apps/registry.ts +1 -1
  1544. package/src/tools/assets/materialize.ts +39 -24
  1545. package/src/tools/assets/search.ts +21 -21
  1546. package/src/tools/browser/__tests__/auth-cache.test.ts +2 -2
  1547. package/src/tools/browser/__tests__/auth-detector.test.ts +4 -4
  1548. package/src/tools/browser/auth-detector.ts +6 -6
  1549. package/src/tools/browser/browser-execution.ts +76 -46
  1550. package/src/tools/browser/browser-handoff.ts +12 -9
  1551. package/src/tools/browser/browser-manager.ts +91 -81
  1552. package/src/tools/browser/browser-screencast.ts +30 -28
  1553. package/src/tools/browser/chrome-cdp.ts +5 -5
  1554. package/src/tools/browser/jit-auth.ts +2 -2
  1555. package/src/tools/browser/network-recorder.test.ts +2 -2
  1556. package/src/tools/browser/network-recorder.ts +3 -3
  1557. package/src/tools/browser/runtime-check.ts +3 -3
  1558. package/src/tools/calls/call-start.ts +1 -1
  1559. package/src/tools/calls/call-status.ts +1 -1
  1560. package/src/tools/claude-code/claude-code.ts +11 -11
  1561. package/src/tools/computer-use/definitions.ts +18 -18
  1562. package/src/tools/credential-execution/make-authenticated-request.ts +198 -0
  1563. package/src/tools/credential-execution/manage-secure-command-tool.ts +372 -0
  1564. package/src/tools/credential-execution/run-authenticated-command.ts +261 -0
  1565. package/src/tools/credentials/broker-types.ts +5 -5
  1566. package/src/tools/credentials/broker.ts +16 -16
  1567. package/src/tools/credentials/metadata-store.ts +46 -227
  1568. package/src/tools/credentials/resolve.ts +3 -2
  1569. package/src/tools/credentials/selection.ts +1 -1
  1570. package/src/tools/credentials/tool-policy.ts +1 -1
  1571. package/src/tools/credentials/vault.ts +115 -25
  1572. package/src/tools/document/document-tool.ts +3 -3
  1573. package/src/tools/execution-target.ts +2 -2
  1574. package/src/tools/executor.ts +147 -12
  1575. package/src/tools/filesystem/edit.ts +2 -2
  1576. package/src/tools/filesystem/read.ts +1 -1
  1577. package/src/tools/filesystem/write.ts +1 -1
  1578. package/src/tools/followups/followup_create.ts +8 -7
  1579. package/src/tools/followups/followup_list.ts +3 -1
  1580. package/src/tools/followups/followup_resolve.ts +8 -7
  1581. package/src/tools/host-filesystem/edit.ts +3 -2
  1582. package/src/tools/host-filesystem/read.ts +3 -2
  1583. package/src/tools/host-filesystem/write.ts +2 -2
  1584. package/src/tools/host-terminal/host-shell.ts +60 -12
  1585. package/src/tools/mcp/mcp-tool-factory.ts +7 -6
  1586. package/src/tools/memory/definitions.ts +6 -5
  1587. package/src/tools/memory/handlers.test.ts +1 -1
  1588. package/src/tools/memory/handlers.ts +1 -1
  1589. package/src/tools/network/__tests__/web-search.test.ts +3 -3
  1590. package/src/tools/network/domain-normalize.ts +2 -2
  1591. package/src/tools/network/script-proxy/session-manager.ts +292 -517
  1592. package/src/tools/network/web-fetch.ts +2 -2
  1593. package/src/tools/network/web-search.ts +7 -7
  1594. package/src/tools/permission-checker.ts +43 -28
  1595. package/src/tools/registry.ts +20 -8
  1596. package/src/tools/schedule/list.ts +2 -2
  1597. package/src/tools/schema-transforms.ts +31 -21
  1598. package/src/tools/secret-detection-handler.ts +4 -9
  1599. package/src/tools/sensitive-output-placeholders.ts +1 -1
  1600. package/src/tools/shared/filesystem/edit-engine.ts +1 -1
  1601. package/src/tools/shared/filesystem/file-ops-service.ts +3 -3
  1602. package/src/tools/shared/filesystem/image-read.ts +25 -5
  1603. package/src/tools/shared/filesystem/path-policy.ts +2 -2
  1604. package/src/tools/shared/shell-output.ts +1 -1
  1605. package/src/tools/side-effects.ts +3 -2
  1606. package/src/tools/skills/execute.ts +1 -1
  1607. package/src/tools/skills/load.ts +18 -4
  1608. package/src/tools/skills/sandbox-runner.ts +3 -4
  1609. package/src/tools/skills/scaffold-managed.ts +0 -8
  1610. package/src/tools/subagent/abort.ts +1 -1
  1611. package/src/tools/subagent/message.ts +2 -2
  1612. package/src/tools/subagent/read.ts +3 -3
  1613. package/src/tools/subagent/spawn.ts +3 -3
  1614. package/src/tools/subagent/status.ts +10 -4
  1615. package/src/tools/swarm/delegate.ts +13 -13
  1616. package/src/tools/system/avatar-generator.ts +52 -79
  1617. package/src/tools/system/request-permission.ts +5 -4
  1618. package/src/tools/terminal/backends/native.ts +51 -11
  1619. package/src/tools/terminal/backends/types.ts +7 -0
  1620. package/src/tools/terminal/parser.ts +6 -6
  1621. package/src/tools/terminal/safe-env.ts +4 -1
  1622. package/src/tools/terminal/sandbox-diagnostics.ts +1 -1
  1623. package/src/tools/terminal/shell.ts +114 -10
  1624. package/src/tools/tool-approval-handler.ts +23 -29
  1625. package/src/tools/tool-manifest.ts +45 -2
  1626. package/src/tools/types.ts +30 -7
  1627. package/src/tools/ui-surface/definitions.ts +9 -37
  1628. package/src/tools/watch/screen-watch.ts +6 -6
  1629. package/src/tools/watch/watch-state.ts +33 -26
  1630. package/src/tools/watcher/list.ts +1 -1
  1631. package/src/util/clipboard.ts +1 -1
  1632. package/src/util/device-id.ts +101 -0
  1633. package/src/util/logger.ts +7 -2
  1634. package/src/util/platform.ts +10 -0
  1635. package/src/util/retry.ts +29 -1
  1636. package/src/util/silently.ts +7 -8
  1637. package/src/watcher/engine.ts +1 -1
  1638. package/src/work-items/resolve-required-tools.test.ts +37 -0
  1639. package/src/work-items/resolve-required-tools.ts +26 -0
  1640. package/src/work-items/work-item-runner.ts +29 -27
  1641. package/src/workspace/commit-message-enrichment-service.ts +1 -1
  1642. package/src/workspace/commit-message-provider.ts +2 -2
  1643. package/src/workspace/git-service.ts +27 -14
  1644. package/src/workspace/migrations/001-avatar-rename.ts +25 -0
  1645. package/src/workspace/migrations/002-backfill-installation-id.ts +75 -0
  1646. package/src/workspace/migrations/003-seed-device-id.ts +101 -0
  1647. package/src/workspace/migrations/004-extract-collect-usage-data.ts +50 -0
  1648. package/src/workspace/migrations/005-add-send-diagnostics.ts +12 -0
  1649. package/src/workspace/migrations/006-services-config.ts +132 -0
  1650. package/src/workspace/migrations/007-web-search-provider-rename.ts +37 -0
  1651. package/src/workspace/migrations/registry.ts +22 -0
  1652. package/src/workspace/migrations/runner.ts +117 -0
  1653. package/src/workspace/migrations/types.ts +11 -0
  1654. package/src/workspace/provider-commit-message-generator.ts +7 -4
  1655. package/src/workspace/turn-commit.ts +13 -13
  1656. package/tsconfig.json +0 -1
  1657. package/src/__tests__/cli-help-reference-sync.test.ts +0 -26
  1658. package/src/__tests__/handlers-task-submit-slash.test.ts +0 -39
  1659. package/src/__tests__/onboarding-starter-tasks.test.ts +0 -190
  1660. package/src/__tests__/session-slash-known.test.ts +0 -477
  1661. package/src/__tests__/slash-commands-catalog.test.ts +0 -94
  1662. package/src/__tests__/slash-commands-parser.test.ts +0 -127
  1663. package/src/__tests__/slash-commands-resolver.test.ts +0 -231
  1664. package/src/__tests__/slash-commands-rewrite.test.ts +0 -40
  1665. package/src/cli/commands/sessions.ts +0 -253
  1666. package/src/cli/http-client.ts +0 -76
  1667. package/src/cli/reference.ts +0 -36
  1668. package/src/daemon/install-cli-launchers.ts +0 -170
  1669. package/src/daemon/session-evictor.ts +0 -203
  1670. package/src/runtime/routes/session-management-routes.ts +0 -190
  1671. package/src/skills/slash-commands.ts +0 -203
  1672. /package/src/__tests__/{script-proxy-session-runtime.test.ts → script-proxy-conversation-runtime.test.ts} +0 -0
  1673. /package/src/daemon/{session-media-retry.ts → conversation-media-retry.ts} +0 -0
@@ -1,6 +1,11 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
 
4
+ import {
5
+ disposeAcpSessionManager,
6
+ getAcpSessionManager,
7
+ setBroadcastToAllClients,
8
+ } from "../acp/index.js";
4
9
  import {
5
10
  createAssistantMessage,
6
11
  createUserMessage,
@@ -13,6 +18,14 @@ import {
13
18
  } from "../channels/types.js";
14
19
  import { getConfig } from "../config/loader.js";
15
20
  import { onContactChange } from "../contacts/contact-events.js";
21
+ import type { CesClient } from "../credential-execution/client.js";
22
+ import { createCesClient } from "../credential-execution/client.js";
23
+ import { isCesToolsEnabled } from "../credential-execution/feature-gates.js";
24
+ import {
25
+ type CesProcessManager,
26
+ CesUnavailableError,
27
+ createCesProcessManager,
28
+ } from "../credential-execution/process-manager.js";
16
29
  import type { HeartbeatService } from "../heartbeat/heartbeat-service.js";
17
30
  import * as attachmentsStore from "../memory/attachments-store.js";
18
31
  import {
@@ -22,12 +35,14 @@ import {
22
35
  import {
23
36
  addMessage,
24
37
  getConversationMemoryScopeId,
25
- getConversationThreadType,
38
+ getConversationType,
26
39
  provenanceFromTrustContext,
27
40
  setConversationOriginChannelIfUnset,
28
41
  setConversationOriginInterfaceIfUnset,
29
42
  } from "../memory/conversation-crud.js";
43
+ import { getOrCreateConversation } from "../memory/conversation-key-store.js";
30
44
  import { buildSystemPrompt } from "../prompts/system-prompt.js";
45
+ import { resolveManagedProxyContext } from "../providers/managed-proxy/context.js";
31
46
  import { RateLimitProvider } from "../providers/ratelimit.js";
32
47
  import {
33
48
  getFailoverProvider,
@@ -42,6 +57,8 @@ import * as pendingInteractions from "../runtime/pending-interactions.js";
42
57
  import { checkIngressForSecrets } from "../security/secret-ingress.js";
43
58
  import { registerCancelCallback } from "../signals/cancel.js";
44
59
  import { registerConversationUndoCallback } from "../signals/conversation-undo.js";
60
+ import { appendEventToStream } from "../signals/event-stream.js";
61
+ import { registerUserMessageCallback } from "../signals/user-message.js";
45
62
  import { getSubagentManager } from "../subagent/index.js";
46
63
  import { IngressBlockedError } from "../util/errors.js";
47
64
  import { getLogger } from "../util/logger.js";
@@ -51,25 +68,25 @@ import {
51
68
  } from "../util/platform.js";
52
69
  import { registerDaemonCallbacks } from "../work-items/work-item-runner.js";
53
70
  import { ConfigWatcher } from "./config-watcher.js";
71
+ import {
72
+ Conversation,
73
+ type ConversationMemoryPolicy,
74
+ DEFAULT_MEMORY_POLICY,
75
+ } from "./conversation.js";
76
+ import { ConversationEvictor } from "./conversation-evictor.js";
77
+ import { resolveChannelCapabilities } from "./conversation-runtime-assembly.js";
78
+ import { resolveSlash } from "./conversation-slash.js";
79
+ import { undoLastMessage } from "./handlers/conversations.js";
54
80
  import { parseIdentityFields } from "./handlers/identity.js";
55
- import { undoLastMessage } from "./handlers/sessions.js";
56
81
  import type {
82
+ ConversationCreateOptions,
57
83
  HandlerContext,
58
- SessionCreateOptions,
59
84
  } from "./handlers/shared.js";
60
85
  import type { SkillOperationContext } from "./handlers/skills.js";
61
86
  import { HostBashProxy } from "./host-bash-proxy.js";
62
87
  import { HostCuProxy } from "./host-cu-proxy.js";
63
88
  import { HostFileProxy } from "./host-file-proxy.js";
64
89
  import type { ServerMessage } from "./message-protocol.js";
65
- import {
66
- DEFAULT_MEMORY_POLICY,
67
- Session,
68
- type SessionMemoryPolicy,
69
- } from "./session.js";
70
- import { SessionEvictor } from "./session-evictor.js";
71
- import { resolveChannelCapabilities } from "./session-runtime-assembly.js";
72
- import { resolveSlash } from "./session-slash.js";
73
90
 
74
91
  const log = getLogger("server");
75
92
 
@@ -137,16 +154,16 @@ function resolveCanonicalRequestSourceType(
137
154
  * Build an onEvent callback that registers pending interactions when the agent
138
155
  * loop emits confirmation_request, secret_request, host_bash_request, or
139
156
  * host_file_request events. This ensures that channel approval interception
140
- * can look up the session by requestId.
157
+ * can look up the conversation by requestId.
141
158
  */
142
159
  function makePendingInteractionRegistrar(
143
- session: Session,
160
+ conversation: Conversation,
144
161
  conversationId: string,
145
162
  ): (msg: ServerMessage) => void {
146
163
  return (msg: ServerMessage) => {
147
164
  if (msg.type === "confirmation_request") {
148
165
  pendingInteractions.register(msg.requestId, {
149
- session,
166
+ conversation,
150
167
  conversationId,
151
168
  kind: "confirmation",
152
169
  confirmationDetails: {
@@ -164,7 +181,7 @@ function makePendingInteractionRegistrar(
164
181
  // Create a canonical guardian request so HTTP handlers can find it
165
182
  // via applyCanonicalGuardianDecision.
166
183
  try {
167
- const trustContext = session.trustContext;
184
+ const trustContext = conversation.trustContext;
168
185
  const sourceChannel = trustContext?.sourceChannel ?? "vellum";
169
186
  const canonicalRequest = createCanonicalGuardianRequest({
170
187
  id: msg.requestId,
@@ -179,7 +196,7 @@ function makePendingInteractionRegistrar(
179
196
  toolName: msg.toolName,
180
197
  status: "pending",
181
198
  requestCode: generateCanonicalRequestCode(),
182
- expiresAt: new Date(Date.now() + 5 * 60 * 1000).toISOString(),
199
+ expiresAt: Date.now() + 5 * 60 * 1000,
183
200
  });
184
201
 
185
202
  // For trusted-contact sessions, bridge to guardian.question so the
@@ -190,7 +207,8 @@ function makePendingInteractionRegistrar(
190
207
  trustContext,
191
208
  conversationId,
192
209
  toolName: msg.toolName,
193
- assistantId: session.assistantId ?? DAEMON_INTERNAL_ASSISTANT_ID,
210
+ assistantId:
211
+ conversation.assistantId ?? DAEMON_INTERNAL_ASSISTANT_ID,
194
212
  });
195
213
  }
196
214
  } catch (err) {
@@ -201,25 +219,25 @@ function makePendingInteractionRegistrar(
201
219
  }
202
220
  } else if (msg.type === "secret_request") {
203
221
  pendingInteractions.register(msg.requestId, {
204
- session,
222
+ conversation,
205
223
  conversationId,
206
224
  kind: "secret",
207
225
  });
208
226
  } else if (msg.type === "host_bash_request") {
209
227
  pendingInteractions.register(msg.requestId, {
210
- session,
228
+ conversation,
211
229
  conversationId,
212
230
  kind: "host_bash",
213
231
  });
214
232
  } else if (msg.type === "host_file_request") {
215
233
  pendingInteractions.register(msg.requestId, {
216
- session,
234
+ conversation,
217
235
  conversationId,
218
236
  kind: "host_file",
219
237
  });
220
238
  } else if (msg.type === "host_cu_request") {
221
239
  pendingInteractions.register(msg.requestId, {
222
- session,
240
+ conversation,
223
241
  conversationId,
224
242
  kind: "host_cu",
225
243
  });
@@ -228,22 +246,38 @@ function makePendingInteractionRegistrar(
228
246
  }
229
247
 
230
248
  export class DaemonServer {
231
- private sessions = new Map<string, Session>();
232
- private sessionOptions = new Map<string, SessionCreateOptions>();
233
- private sessionCreating = new Map<string, Promise<Session>>();
249
+ private conversations = new Map<string, Conversation>();
250
+ private conversationOptions = new Map<string, ConversationCreateOptions>();
251
+ private conversationCreating = new Map<string, Promise<Conversation>>();
234
252
  private sharedRequestTimestamps: number[] = [];
235
253
  private httpPort: number | undefined;
236
254
  private unsubscribeContactChange: (() => void) | null = null;
237
- private evictor: SessionEvictor;
255
+ private evictor: ConversationEvictor;
238
256
  private _hubChain: Promise<void> = Promise.resolve();
239
257
 
240
258
  // Composed subsystems
241
259
  private configWatcher = new ConfigWatcher();
242
260
 
261
+ // CES (Credential Execution Service) — process-level singleton.
262
+ // The CES sidecar accepts exactly one bootstrap connection, so we must
263
+ // hold that connection at the server level rather than per-conversation.
264
+ private cesProcessManager?: CesProcessManager;
265
+ private cesClientPromise?: Promise<CesClient | undefined>;
266
+ private cesInitAbortController?: AbortController;
267
+ private cesClientRef?: CesClient;
268
+
243
269
  /**
244
270
  * Logical assistant identifier used when publishing to the assistant-events hub.
245
271
  */
246
- assistantId: string = "default";
272
+ assistantId: string = DAEMON_INTERNAL_ASSISTANT_ID;
273
+
274
+ /**
275
+ * Return the CES client reference (if available).
276
+ * Used by routes that need to push updates to CES (e.g. secret-routes).
277
+ */
278
+ getCesClient(): CesClient | undefined {
279
+ return this.cesClientRef;
280
+ }
247
281
 
248
282
  /** Optional heartbeat service reference for "Run Now" from the UI. */
249
283
  private _heartbeatService?: HeartbeatService;
@@ -252,9 +286,9 @@ export class DaemonServer {
252
286
  this._heartbeatService = service;
253
287
  }
254
288
 
255
- private deriveMemoryPolicy(conversationId: string): SessionMemoryPolicy {
256
- const threadType = getConversationThreadType(conversationId);
257
- if (threadType === "private") {
289
+ private deriveMemoryPolicy(conversationId: string): ConversationMemoryPolicy {
290
+ const conversationType = getConversationType(conversationId);
291
+ if (conversationType === "private") {
258
292
  return {
259
293
  scopeId: getConversationMemoryScopeId(conversationId),
260
294
  includeDefaultFallback: true,
@@ -265,8 +299,8 @@ export class DaemonServer {
265
299
  }
266
300
 
267
301
  private applyTransportMetadata(
268
- _session: Session,
269
- options: SessionCreateOptions | undefined,
302
+ _conversation: Conversation,
303
+ options: ConversationCreateOptions | undefined,
270
304
  ): void {
271
305
  const transport = options?.transport;
272
306
  if (!transport) return;
@@ -277,35 +311,36 @@ export class DaemonServer {
277
311
  }
278
312
 
279
313
  constructor() {
280
- this.evictor = new SessionEvictor(this.sessions);
314
+ this.evictor = new ConversationEvictor(this.conversations);
281
315
  getSubagentManager().sharedRequestTimestamps = this.sharedRequestTimestamps;
282
316
  getSubagentManager().broadcastToAllClients = (msg) => this.broadcast(msg);
283
- this.evictor.onEvict = (sessionId: string) => {
284
- getSubagentManager().abortAllForParent(sessionId);
317
+ setBroadcastToAllClients((msg) => this.broadcast(msg));
318
+ this.evictor.onEvict = (conversationId: string) => {
319
+ getSubagentManager().abortAllForParent(conversationId);
285
320
  };
286
- this.evictor.shouldProtect = (sessionId: string) => {
287
- const children = getSubagentManager().getChildrenOf(sessionId);
321
+ this.evictor.shouldProtect = (conversationId: string) => {
322
+ const children = getSubagentManager().getChildrenOf(conversationId);
288
323
  return children.some(
289
324
  (c) => c.status === "running" || c.status === "pending",
290
325
  );
291
326
  };
292
327
  getSubagentManager().onSubagentFinished = async (
293
- parentSessionId,
328
+ parentConversationId,
294
329
  message,
295
330
  sendToClient,
296
331
  notification,
297
332
  ) => {
298
- const parentSession = this.sessions.get(parentSessionId);
299
- if (!parentSession) {
333
+ const parentConversation = this.conversations.get(parentConversationId);
334
+ if (!parentConversation) {
300
335
  log.warn(
301
- { parentSessionId },
302
- "Subagent finished but parent session not found",
336
+ { parentConversationId },
337
+ "Subagent finished but parent conversation not found",
303
338
  );
304
339
  return;
305
340
  }
306
341
  const requestId = `subagent-notify-${Date.now()}`;
307
342
  const metadata = { subagentNotification: notification };
308
- const enqueueResult = parentSession.enqueueMessage(
343
+ const enqueueResult = parentConversation.enqueueMessage(
309
344
  message,
310
345
  [],
311
346
  sendToClient,
@@ -315,22 +350,57 @@ export class DaemonServer {
315
350
  metadata,
316
351
  );
317
352
  if (!enqueueResult.queued && !enqueueResult.rejected) {
318
- const messageId = await parentSession.persistUserMessage(
353
+ const messageId = await parentConversation.persistUserMessage(
319
354
  message,
320
355
  [],
321
356
  undefined,
322
357
  metadata,
323
358
  );
324
- parentSession
359
+ parentConversation
325
360
  .runAgentLoop(message, messageId, sendToClient)
326
361
  .catch((err) => {
327
362
  log.error(
328
- { parentSessionId, err },
363
+ { parentConversationId, err },
329
364
  "Failed to process subagent notification in parent",
330
365
  );
331
366
  });
332
367
  }
333
368
  };
369
+ getAcpSessionManager().onAcpSessionFinished = async (
370
+ parentConversationId,
371
+ message,
372
+ sendToClient,
373
+ ) => {
374
+ const parentConversation = this.conversations.get(parentConversationId);
375
+ if (!parentConversation) {
376
+ log.warn(
377
+ { parentConversationId },
378
+ "ACP agent finished but parent conversation not found",
379
+ );
380
+ return;
381
+ }
382
+ const requestId = `acp-notify-${Date.now()}`;
383
+ const enqueueResult = parentConversation.enqueueMessage(
384
+ message,
385
+ [],
386
+ sendToClient,
387
+ requestId,
388
+ );
389
+ if (!enqueueResult.queued && !enqueueResult.rejected) {
390
+ const messageId = await parentConversation.persistUserMessage(
391
+ message,
392
+ [],
393
+ );
394
+ parentConversation
395
+ .runAgentLoop(message, messageId, sendToClient)
396
+ .catch((err: unknown) => {
397
+ log.error(
398
+ { parentConversationId, err },
399
+ "Failed to process ACP notification in parent",
400
+ );
401
+ });
402
+ }
403
+ };
334
404
  }
335
405
 
336
406
  // ── Broadcast / Event publishing ──────────────────────────────────
@@ -340,9 +410,12 @@ export class DaemonServer {
340
410
  * Publications are serialized via a promise chain so subscribers
341
411
  * always observe events in send order.
342
412
  */
343
- private publishAssistantEvent(msg: ServerMessage, sessionId?: string): void {
344
- const id = this.assistantId ?? "default";
345
- const event = buildAssistantEvent(id, msg, sessionId);
413
+ private publishAssistantEvent(
414
+ msg: ServerMessage,
415
+ conversationId?: string,
416
+ ): void {
417
+ const id = this.assistantId ?? DAEMON_INTERNAL_ASSISTANT_ID;
418
+ const event = buildAssistantEvent(id, msg, conversationId);
346
419
  this._hubChain = this._hubChain
347
420
  .then(() => assistantEventHub.publish(event))
348
421
  .catch((err: unknown) => {
@@ -351,11 +424,21 @@ export class DaemonServer {
351
424
  "assistant-events hub subscriber threw during broadcast",
352
425
  );
353
426
  });
427
+
428
+ // Dual-write to file-based stream for cross-process consumers.
429
+ // No-op when no subscriber files exist for this conversation.
430
+ if (conversationId) {
431
+ try {
432
+ appendEventToStream(conversationId, event);
433
+ } catch {
434
+ // Best-effort; file I/O failures must not block the hub chain.
435
+ }
436
+ }
354
437
  }
355
438
 
356
439
  broadcast(msg: ServerMessage): void {
357
- const sessionId = extractSessionId(msg);
358
- this.publishAssistantEvent(msg, sessionId);
440
+ const conversationId = extractConversationId(msg);
441
+ this.publishAssistantEvent(msg, conversationId);
359
442
  }
360
443
 
361
444
  private broadcastIdentityChanged(): void {
@@ -388,26 +471,62 @@ export class DaemonServer {
388
471
  this.evictor.start();
389
472
 
390
473
  registerDaemonCallbacks({
391
- getOrCreateSession: (conversationId) =>
392
- this.getOrCreateSession(conversationId),
474
+ getOrCreateConversation: (conversationId) =>
475
+ this.getOrCreateConversation(conversationId),
393
476
  broadcast: (msg) => this.broadcast(msg),
394
477
  });
395
478
 
396
- registerCancelCallback((sessionId) => {
397
- const session = this.sessions.get(sessionId);
398
- if (!session) return false;
399
- this.evictor.touch(sessionId);
400
- session.abort();
401
- getSubagentManager().abortAllForParent(sessionId);
479
+ registerCancelCallback((conversationId) => {
480
+ const conversation = this.conversations.get(conversationId);
481
+ if (!conversation) return false;
482
+ this.evictor.touch(conversationId);
483
+ conversation.abort();
484
+ getSubagentManager().abortAllForParent(conversationId);
402
485
  return true;
403
486
  });
404
487
 
405
- registerConversationUndoCallback((sessionId) =>
406
- undoLastMessage(sessionId, this.handlerContext()),
488
+ registerConversationUndoCallback((conversationId) =>
489
+ undoLastMessage(conversationId, this.handlerContext()),
407
490
  );
408
491
 
492
+ registerUserMessageCallback(async (params) => {
493
+ const { conversationId } = getOrCreateConversation(
494
+ params.conversationKey,
495
+ );
496
+ const conversation = await this.getOrCreateConversation(conversationId);
497
+ if (conversation.isProcessing()) {
498
+ const requestId = crypto.randomUUID();
499
+ const resolvedChannel = resolveTurnChannel(params.sourceChannel);
500
+ const resolvedInterface = resolveTurnInterface(params.sourceInterface);
501
+ const result = conversation.enqueueMessage(
502
+ params.content,
503
+ [],
504
+ () => {},
505
+ requestId,
506
+ undefined,
507
+ undefined,
508
+ {
509
+ userMessageChannel: resolvedChannel,
510
+ assistantMessageChannel: resolvedChannel,
511
+ userMessageInterface: resolvedInterface,
512
+ assistantMessageInterface: resolvedInterface,
513
+ },
514
+ );
515
+ return { accepted: !result.rejected };
516
+ }
517
+ await this.persistAndProcessMessage(
518
+ conversationId,
519
+ params.content,
520
+ undefined,
521
+ undefined,
522
+ params.sourceChannel,
523
+ params.sourceInterface,
524
+ );
525
+ return { accepted: true };
526
+ });
527
+
409
528
  this.configWatcher.start(
410
- () => this.evictSessionsForReload(),
529
+ () => this.evictConversationsForReload(),
411
530
  () => this.broadcastIdentityChanged(),
412
531
  );
413
532
 
@@ -416,11 +535,79 @@ export class DaemonServer {
416
535
  this.broadcast({ type: "contacts_changed" });
417
536
  });
418
537
 
538
+ // CES lifecycle — start the CES process and perform the RPC handshake
539
+ // once at server level. The managed sidecar accepts exactly one bootstrap
540
+ // connection, so this must be a process-level singleton.
541
+ if (isCesToolsEnabled(config)) {
542
+ const pm = createCesProcessManager({ assistantConfig: config });
543
+ this.cesProcessManager = pm;
544
+ const abortController = new AbortController();
545
+ this.cesInitAbortController = abortController;
546
+ this.cesClientPromise = (async () => {
547
+ try {
548
+ const transport = await pm.start();
549
+ if (abortController.signal.aborted) {
550
+ throw new Error("CES initialization aborted during shutdown");
551
+ }
552
+ const client = createCesClient(transport);
553
+ this.cesClientRef = client;
554
+ // Resolve the assistant API key so CES can use it for platform
555
+ // credential materialisation. In managed mode the key is provisioned
556
+ // after hatch and stored in the credential store — CES can't read
557
+ // the env var, so we pass it via the handshake.
558
+ const proxyCtx = await resolveManagedProxyContext();
559
+ const { accepted, reason } = await client.handshake(
560
+ proxyCtx.assistantApiKey
561
+ ? { assistantApiKey: proxyCtx.assistantApiKey }
562
+ : undefined,
563
+ );
564
+ if (abortController.signal.aborted) {
565
+ client.close();
566
+ throw new Error("CES initialization aborted during shutdown");
567
+ }
568
+ if (accepted) {
569
+ log.info(
570
+ "CES client initialized and handshake accepted (server-level)",
571
+ );
572
+ return client;
573
+ }
574
+ log.warn(
575
+ { reason },
576
+ "CES handshake rejected — CES tools will be unavailable",
577
+ );
578
+ client.close();
579
+ this.cesClientRef = undefined;
580
+ await pm.stop();
581
+ // Reset so next session can retry initialization
582
+ this.cesClientPromise = undefined;
583
+ return undefined;
584
+ } catch (err) {
585
+ if (err instanceof CesUnavailableError) {
586
+ log.info(
587
+ { reason: err.message },
588
+ "CES is not available — CES tools will be unavailable",
589
+ );
590
+ } else {
591
+ log.warn(
592
+ { error: err instanceof Error ? err.message : String(err) },
593
+ "Failed to initialize CES client — CES tools will be unavailable",
594
+ );
595
+ }
596
+ await pm.stop().catch(() => {});
597
+ // Reset so next session can retry initialization
598
+ this.cesClientRef = undefined;
599
+ this.cesClientPromise = undefined;
600
+ return undefined;
601
+ }
602
+ })();
603
+ }
604
+
419
605
  log.info("DaemonServer started (HTTP-only mode)");
420
606
  }
421
607
 
422
608
  async stop(): Promise<void> {
423
609
  getSubagentManager().disposeAll();
610
+ disposeAcpSessionManager();
424
611
  this.evictor.stop();
425
612
  this.configWatcher.stop();
426
613
  if (this.unsubscribeContactChange) {
@@ -428,15 +615,43 @@ export class DaemonServer {
428
615
  this.unsubscribeContactChange = null;
429
616
  }
430
617
 
431
- for (const session of this.sessions.values()) {
432
- session.dispose();
618
+ for (const conversation of this.conversations.values()) {
619
+ conversation.dispose();
620
+ }
621
+ this.conversations.clear();
622
+
623
+ // Abort any in-flight CES initialization so it fails fast instead of
624
+ // blocking shutdown for up to ~15s (socket connect + handshake timeouts).
625
+ if (this.cesInitAbortController) {
626
+ this.cesInitAbortController.abort();
627
+ this.cesInitAbortController = undefined;
628
+ }
629
+ // Force-stop the CES process immediately — forceStop() works even if
630
+ // start() hasn't finished (unlike stop() which is a no-op when !running).
631
+ if (this.cesProcessManager) {
632
+ await this.cesProcessManager.forceStop().catch(() => {});
633
+ }
634
+ // Cancel in-flight handshake/RPC timers by closing the client directly.
635
+ // Without this, the handshake setTimeout (~10s) keeps the init promise
636
+ // pending even after the transport is killed.
637
+ if (this.cesClientRef) {
638
+ this.cesClientRef.close();
639
+ this.cesClientRef = undefined;
640
+ }
641
+ // Now await the init promise (which should settle immediately since we
642
+ // killed the transport and cancelled pending timers above).
643
+ if (this.cesClientPromise) {
644
+ await this.cesClientPromise.catch(() => undefined);
645
+ this.cesClientPromise = undefined;
646
+ }
647
+ if (this.cesProcessManager) {
648
+ this.cesProcessManager = undefined;
433
649
  }
434
- this.sessions.clear();
435
650
 
436
651
  log.info("Daemon server stopped");
437
652
  }
438
653
 
439
- // ── Session management ──────────────────────────────────────────────
654
+ // ── Conversation management ──────────────────────────────────────────────
440
655
 
441
656
  setHttpPort(port: number): void {
442
657
  this.httpPort = port;
@@ -448,31 +663,45 @@ export class DaemonServer {
448
663
  });
449
664
  }
450
665
 
451
- clearAllSessions(): number {
452
- const count = this.sessions.size;
666
+ clearAllConversations(): number {
667
+ const count = this.conversations.size;
453
668
  const subagentManager = getSubagentManager();
454
- for (const id of this.sessions.keys()) {
669
+ for (const id of this.conversations.keys()) {
455
670
  this.evictor.remove(id);
456
671
  subagentManager.abortAllForParent(id);
457
672
  }
458
- for (const session of this.sessions.values()) {
459
- session.dispose();
673
+ for (const conversation of this.conversations.values()) {
674
+ conversation.dispose();
460
675
  }
461
- this.sessions.clear();
462
- this.sessionOptions.clear();
676
+ this.conversations.clear();
677
+ this.conversationOptions.clear();
463
678
  return count;
464
679
  }
465
680
 
466
- private evictSessionsForReload(): void {
681
+ /**
682
+ * Abort and dispose a single in-memory conversation, removing it from the
683
+ * conversation map. No-op if no conversation exists for the given ID.
684
+ */
685
+ destroyConversation(conversationId: string): void {
686
+ const conversation = this.conversations.get(conversationId);
687
+ if (!conversation) return;
688
+ this.evictor.remove(conversationId);
689
+ getSubagentManager().abortAllForParent(conversationId);
690
+ conversation.dispose();
691
+ this.conversations.delete(conversationId);
692
+ this.conversationOptions.delete(conversationId);
693
+ }
694
+
695
+ private evictConversationsForReload(): void {
467
696
  const subagentManager = getSubagentManager();
468
- for (const [id, session] of this.sessions) {
469
- if (!session.isProcessing()) {
697
+ for (const [id, conversation] of this.conversations) {
698
+ if (!conversation.isProcessing()) {
470
699
  subagentManager.abortAllForParent(id);
471
- session.dispose();
472
- this.sessions.delete(id);
700
+ conversation.dispose();
701
+ this.conversations.delete(id);
473
702
  this.evictor.remove(id);
474
703
  } else {
475
- session.markStale();
704
+ conversation.markStale();
476
705
  }
477
706
  }
478
707
  }
@@ -487,49 +716,49 @@ export class DaemonServer {
487
716
 
488
717
  async refreshConfigFromSources(): Promise<boolean> {
489
718
  const changed = await this.configWatcher.refreshConfigFromSources();
490
- if (changed) this.evictSessionsForReload();
719
+ if (changed) this.evictConversationsForReload();
491
720
  return changed;
492
721
  }
493
722
 
494
- private async getOrCreateSession(
723
+ private async getOrCreateConversation(
495
724
  conversationId: string,
496
- options?: SessionCreateOptions,
497
- ): Promise<Session> {
498
- let session = this.sessions.get(conversationId);
725
+ options?: ConversationCreateOptions,
726
+ ): Promise<Conversation> {
727
+ let conversation = this.conversations.get(conversationId);
499
728
  const sendToClient = () => {};
500
729
 
501
730
  if (options && Object.values(options).some((v) => v !== undefined)) {
502
- this.sessionOptions.set(conversationId, {
503
- ...this.sessionOptions.get(conversationId),
731
+ this.conversationOptions.set(conversationId, {
732
+ ...this.conversationOptions.get(conversationId),
504
733
  ...options,
505
734
  });
506
735
  }
507
736
 
508
- if (!session || (session.isStale() && !session.isProcessing())) {
509
- if (session) {
737
+ if (
738
+ !conversation ||
739
+ (conversation.isStale() && !conversation.isProcessing())
740
+ ) {
741
+ if (conversation) {
510
742
  getSubagentManager().abortAllForParent(conversationId);
511
- session.dispose();
743
+ conversation.dispose();
512
744
  }
513
745
 
514
- const pending = this.sessionCreating.get(conversationId);
746
+ const pending = this.conversationCreating.get(conversationId);
515
747
  if (pending) {
516
- session = await pending;
517
- return session;
748
+ conversation = await pending;
749
+ return conversation;
518
750
  }
519
751
 
520
- const storedOptions = this.sessionOptions.get(conversationId);
752
+ const storedOptions = this.conversationOptions.get(conversationId);
521
753
 
522
754
  const createPromise = (async () => {
523
755
  const config = getConfig();
524
756
  let provider = getFailoverProvider(
525
- config.provider,
757
+ config.services.inference.provider,
526
758
  config.providerOrder,
527
759
  );
528
760
  const { rateLimit } = config;
529
- if (
530
- rateLimit.maxRequestsPerMinute > 0 ||
531
- rateLimit.maxTokensPerSession > 0
532
- ) {
761
+ if (rateLimit.maxRequestsPerMinute > 0) {
533
762
  provider = new RateLimitProvider(
534
763
  provider,
535
764
  rateLimit,
@@ -543,7 +772,11 @@ export class DaemonServer {
543
772
  const maxTokens = storedOptions?.maxResponseTokens ?? config.maxTokens;
544
773
 
545
774
  const memoryPolicy = this.deriveMemoryPolicy(conversationId);
546
- const newSession = new Session(
775
+ // Resolve the shared CES client (may still be initializing).
776
+ const sharedCesClient = this.cesClientPromise
777
+ ? await this.cesClientPromise
778
+ : undefined;
779
+ const newConversation = new Conversation(
547
780
  conversationId,
548
781
  provider,
549
782
  systemPrompt,
@@ -552,49 +785,50 @@ export class DaemonServer {
552
785
  workingDir,
553
786
  (msg) => this.broadcast(msg),
554
787
  memoryPolicy,
788
+ sharedCesClient,
555
789
  );
556
- newSession.updateClient(sendToClient, true);
557
- await newSession.loadFromDb();
790
+ newConversation.updateClient(sendToClient, true);
791
+ await newConversation.loadFromDb();
558
792
  // Restore trust/auth context and assistant ID from stored options so
559
793
  // that evicted sessions rehydrated by undo/regenerate don't run with
560
794
  // unscoped history. Without this, an untrusted actor could operate
561
795
  // on the full conversation after eviction.
562
796
  if (storedOptions?.assistantId) {
563
- newSession.setAssistantId(storedOptions.assistantId);
797
+ newConversation.setAssistantId(storedOptions.assistantId);
564
798
  }
565
799
  if (storedOptions?.trustContext) {
566
- newSession.setTrustContext(storedOptions.trustContext);
800
+ newConversation.setTrustContext(storedOptions.trustContext);
567
801
  }
568
802
  if (storedOptions?.authContext) {
569
- newSession.setAuthContext(storedOptions.authContext);
803
+ newConversation.setAuthContext(storedOptions.authContext);
570
804
  }
571
805
  if (storedOptions?.trustContext || storedOptions?.authContext) {
572
- await newSession.ensureActorScopedHistory();
806
+ await newConversation.ensureActorScopedHistory();
573
807
  }
574
- this.applyTransportMetadata(newSession, storedOptions);
575
- this.sessions.set(conversationId, newSession);
576
- return newSession;
808
+ this.applyTransportMetadata(newConversation, storedOptions);
809
+ this.conversations.set(conversationId, newConversation);
810
+ return newConversation;
577
811
  })();
578
812
 
579
- this.sessionCreating.set(conversationId, createPromise);
813
+ this.conversationCreating.set(conversationId, createPromise);
580
814
  try {
581
- session = await createPromise;
815
+ conversation = await createPromise;
582
816
  } finally {
583
- this.sessionCreating.delete(conversationId);
817
+ this.conversationCreating.delete(conversationId);
584
818
  }
585
819
  this.evictor.touch(conversationId);
586
820
  } else {
587
- this.applyTransportMetadata(session, options);
821
+ this.applyTransportMetadata(conversation, options);
588
822
  this.evictor.touch(conversationId);
589
823
  }
590
- return session;
824
+ return conversation;
591
825
  }
592
826
 
593
827
  // ── Handler context ────────────────────────────────────────────────
594
828
 
595
829
  private handlerContext(): HandlerContext {
596
830
  return {
597
- sessions: this.sessions,
831
+ conversations: this.conversations,
598
832
  sharedRequestTimestamps: this.sharedRequestTimestamps,
599
833
  debounceTimers: this.configWatcher.timers,
600
834
  suppressConfigReload: this.configWatcher.suppressConfigReload,
@@ -606,10 +840,10 @@ export class DaemonServer {
606
840
  },
607
841
  send: (msg) => this.broadcast(msg),
608
842
  broadcast: (msg) => this.broadcast(msg),
609
- clearAllSessions: () => this.clearAllSessions(),
610
- getOrCreateSession: (id, options?) =>
611
- this.getOrCreateSession(id, options),
612
- touchSession: (id) => this.evictor.touch(id),
843
+ clearAllConversations: () => this.clearAllConversations(),
844
+ getOrCreateConversation: (id, options?) =>
845
+ this.getOrCreateConversation(id, options),
846
+ touchConversation: (id) => this.evictor.touch(id),
613
847
  heartbeatService: this._heartbeatService,
614
848
  };
615
849
  }
@@ -630,15 +864,15 @@ export class DaemonServer {
630
864
 
631
865
  // ── HTTP message processing ─────────────────────────────────────────
632
866
 
633
- private async prepareSessionForMessage(
867
+ private async prepareConversationForMessage(
634
868
  conversationId: string,
635
869
  content: string,
636
870
  attachmentIds: string[] | undefined,
637
- options: SessionCreateOptions | undefined,
871
+ options: ConversationCreateOptions | undefined,
638
872
  sourceChannel: string | undefined,
639
873
  sourceInterface: string | undefined,
640
874
  ): Promise<{
641
- session: Session;
875
+ conversation: Conversation;
642
876
  attachments: {
643
877
  id: string;
644
878
  filename: string;
@@ -654,10 +888,13 @@ export class DaemonServer {
654
888
  );
655
889
  }
656
890
 
657
- const session = await this.getOrCreateSession(conversationId, options);
891
+ const conversation = await this.getOrCreateConversation(
892
+ conversationId,
893
+ options,
894
+ );
658
895
 
659
- if (session.isProcessing()) {
660
- throw new Error("Session is already processing a message");
896
+ if (conversation.isProcessing()) {
897
+ throw new Error("Conversation is already processing a message");
661
898
  }
662
899
 
663
900
  const resolvedChannel = resolveTurnChannel(
@@ -665,60 +902,59 @@ export class DaemonServer {
665
902
  options?.transport?.channelId,
666
903
  );
667
904
  const resolvedInterface = resolveTurnInterface(sourceInterface);
668
- session.setAssistantId(
905
+ conversation.setAssistantId(
669
906
  options?.assistantId ?? DAEMON_INTERNAL_ASSISTANT_ID,
670
907
  );
671
- session.setTrustContext(options?.trustContext ?? null);
672
- session.setAuthContext(options?.authContext ?? null);
673
- await session.ensureActorScopedHistory();
674
- session.setChannelCapabilities(
908
+ conversation.setTrustContext(options?.trustContext ?? null);
909
+ conversation.setAuthContext(options?.authContext ?? null);
910
+ await conversation.ensureActorScopedHistory();
911
+ conversation.setChannelCapabilities(
675
912
  resolveChannelCapabilities(
676
913
  sourceChannel,
677
914
  sourceInterface,
678
- null,
679
915
  options?.transport?.chatType,
680
916
  ),
681
917
  );
682
918
  // Only create the host bash proxy for desktop client interfaces that can
683
- // execute commands on the user's machine. Non-desktop sessions (CLI,
919
+ // execute commands on the user's machine. Non-desktop conversations (CLI,
684
920
  // channels, headless) fall back to local execution.
685
921
  // Guard: don't replace an active proxy during concurrent turn races —
686
922
  // another request may have started processing between the isProcessing()
687
923
  // check above and the await on ensureActorScopedHistory().
688
924
  if (resolvedInterface === "macos" || resolvedInterface === "ios") {
689
- if (!session.isProcessing() || !session.hostBashProxy) {
690
- session.setHostBashProxy(
691
- new HostBashProxy(session.getCurrentSender(), (requestId) => {
925
+ if (!conversation.isProcessing() || !conversation.hostBashProxy) {
926
+ conversation.setHostBashProxy(
927
+ new HostBashProxy(conversation.getCurrentSender(), (requestId) => {
692
928
  pendingInteractions.resolve(requestId);
693
929
  }),
694
930
  );
695
931
  }
696
- if (!session.isProcessing() || !session.hostFileProxy) {
697
- session.setHostFileProxy(
698
- new HostFileProxy(session.getCurrentSender(), (requestId) => {
932
+ if (!conversation.isProcessing() || !conversation.hostFileProxy) {
933
+ conversation.setHostFileProxy(
934
+ new HostFileProxy(conversation.getCurrentSender(), (requestId) => {
699
935
  pendingInteractions.resolve(requestId);
700
936
  }),
701
937
  );
702
938
  }
703
- if (!session.isProcessing() || !session.hostCuProxy) {
704
- session.setHostCuProxy(
705
- new HostCuProxy(session.getCurrentSender(), (requestId) => {
939
+ if (!conversation.isProcessing() || !conversation.hostCuProxy) {
940
+ conversation.setHostCuProxy(
941
+ new HostCuProxy(conversation.getCurrentSender(), (requestId) => {
706
942
  pendingInteractions.resolve(requestId);
707
943
  }),
708
944
  );
709
945
  }
710
- session.addPreactivatedSkillId("computer-use");
711
- } else if (!session.isProcessing()) {
712
- session.setHostBashProxy(undefined);
713
- session.setHostFileProxy(undefined);
714
- session.setHostCuProxy(undefined);
946
+ conversation.addPreactivatedSkillId("computer-use");
947
+ } else if (!conversation.isProcessing()) {
948
+ conversation.setHostBashProxy(undefined);
949
+ conversation.setHostFileProxy(undefined);
950
+ conversation.setHostCuProxy(undefined);
715
951
  }
716
- session.setCommandIntent(options?.commandIntent ?? null);
717
- session.setTurnChannelContext({
952
+ conversation.setCommandIntent(options?.commandIntent ?? null);
953
+ conversation.setTurnChannelContext({
718
954
  userMessageChannel: resolvedChannel,
719
955
  assistantMessageChannel: resolvedChannel,
720
956
  });
721
- session.setTurnInterfaceContext({
957
+ conversation.setTurnInterfaceContext({
722
958
  userMessageInterface: resolvedInterface,
723
959
  assistantMessageInterface: resolvedInterface,
724
960
  });
@@ -732,36 +968,40 @@ export class DaemonServer {
732
968
  }))
733
969
  : [];
734
970
 
735
- return { session, attachments };
971
+ return { conversation, attachments };
736
972
  }
737
973
 
738
974
  async persistAndProcessMessage(
739
975
  conversationId: string,
740
976
  content: string,
741
977
  attachmentIds?: string[],
742
- options?: SessionCreateOptions,
978
+ options?: ConversationCreateOptions,
743
979
  sourceChannel?: string,
744
980
  sourceInterface?: string,
745
981
  ): Promise<{ messageId: string }> {
746
- const { session, attachments } = await this.prepareSessionForMessage(
747
- conversationId,
748
- content,
749
- attachmentIds,
750
- options,
751
- sourceChannel,
752
- sourceInterface,
753
- );
982
+ const { conversation, attachments } =
983
+ await this.prepareConversationForMessage(
984
+ conversationId,
985
+ content,
986
+ attachmentIds,
987
+ options,
988
+ sourceChannel,
989
+ sourceInterface,
990
+ );
754
991
 
755
992
  const requestId = crypto.randomUUID();
756
- const messageId = await session.persistUserMessage(
993
+ const messageId = await conversation.persistUserMessage(
757
994
  content,
758
995
  attachments,
759
996
  requestId,
760
997
  );
761
998
 
762
999
  // Register pending interactions so channel approval interception can
763
- // find the session by requestId when confirmation/secret events fire.
764
- const registrar = makePendingInteractionRegistrar(session, conversationId);
1000
+ // find the conversation by requestId when confirmation/secret events fire.
1001
+ const registrar = makePendingInteractionRegistrar(
1002
+ conversation,
1003
+ conversationId,
1004
+ );
765
1005
  const onEvent = options?.onEvent
766
1006
  ? (msg: ServerMessage) => {
767
1007
  registrar(msg);
@@ -776,10 +1016,10 @@ export class DaemonServer {
776
1016
  }
777
1017
  : registrar;
778
1018
  if (options?.isInteractive === true) {
779
- session.updateClient(onEvent, false);
1019
+ conversation.updateClient(onEvent, false);
780
1020
  }
781
1021
 
782
- session
1022
+ conversation
783
1023
  .runAgentLoop(content, messageId, onEvent, {
784
1024
  isInteractive: options?.isInteractive ?? false,
785
1025
  isUserMessage: true,
@@ -787,9 +1027,9 @@ export class DaemonServer {
787
1027
  .finally(() => {
788
1028
  if (
789
1029
  options?.isInteractive === true &&
790
- session.getCurrentSender() === onEvent
1030
+ conversation.getCurrentSender() === onEvent
791
1031
  ) {
792
- session.updateClient(() => {}, true);
1032
+ conversation.updateClient(() => {}, true);
793
1033
  }
794
1034
  })
795
1035
  .catch((err) => {
@@ -803,25 +1043,28 @@ export class DaemonServer {
803
1043
  conversationId: string,
804
1044
  content: string,
805
1045
  attachmentIds?: string[],
806
- options?: SessionCreateOptions,
1046
+ options?: ConversationCreateOptions,
807
1047
  sourceChannel?: string,
808
1048
  sourceInterface?: string,
809
1049
  ): Promise<{ messageId: string }> {
810
- const { session, attachments } = await this.prepareSessionForMessage(
811
- conversationId,
812
- content,
813
- attachmentIds,
814
- options,
815
- sourceChannel,
816
- sourceInterface,
817
- );
1050
+ const { conversation, attachments } =
1051
+ await this.prepareConversationForMessage(
1052
+ conversationId,
1053
+ content,
1054
+ attachmentIds,
1055
+ options,
1056
+ sourceChannel,
1057
+ sourceInterface,
1058
+ );
818
1059
 
819
1060
  const slashResult = await resolveSlash(content);
820
1061
 
821
1062
  if (slashResult.kind === "unknown") {
822
- const serverTurnCtx = session.getTurnChannelContext();
823
- const serverInterfaceCtx = session.getTurnInterfaceContext();
824
- const serverProvenance = provenanceFromTrustContext(session.trustContext);
1063
+ const serverTurnCtx = conversation.getTurnChannelContext();
1064
+ const serverInterfaceCtx = conversation.getTurnInterfaceContext();
1065
+ const serverProvenance = provenanceFromTrustContext(
1066
+ conversation.trustContext,
1067
+ );
825
1068
  const serverChannelMeta = {
826
1069
  ...serverProvenance,
827
1070
  ...(serverTurnCtx
@@ -845,7 +1088,7 @@ export class DaemonServer {
845
1088
  JSON.stringify(userMsg.content),
846
1089
  serverChannelMeta,
847
1090
  );
848
- session.getMessages().push(userMsg);
1091
+ conversation.getMessages().push(userMsg);
849
1092
 
850
1093
  if (serverTurnCtx) {
851
1094
  try {
@@ -881,32 +1124,25 @@ export class DaemonServer {
881
1124
  JSON.stringify(assistantMsg.content),
882
1125
  serverChannelMeta,
883
1126
  );
884
- session.getMessages().push(assistantMsg);
1127
+ conversation.getMessages().push(assistantMsg);
885
1128
  return { messageId: persisted.id };
886
1129
  }
887
1130
 
888
1131
  const resolvedContent = slashResult.content;
889
1132
 
890
- if (slashResult.kind === "rewritten") {
891
- session.setPreactivatedSkillIds([slashResult.skillId]);
892
- }
893
-
894
1133
  const requestId = crypto.randomUUID();
895
- let messageId: string;
896
- try {
897
- messageId = await session.persistUserMessage(
898
- resolvedContent,
899
- attachments,
900
- requestId,
901
- );
902
- } catch (err) {
903
- session.setPreactivatedSkillIds(undefined);
904
- throw err;
905
- }
1134
+ const messageId = await conversation.persistUserMessage(
1135
+ resolvedContent,
1136
+ attachments,
1137
+ requestId,
1138
+ );
906
1139
 
907
1140
  // Register pending interactions so channel approval interception can
908
- // find the session by requestId when confirmation/secret events fire.
909
- const registrar = makePendingInteractionRegistrar(session, conversationId);
1141
+ // find the conversation by requestId when confirmation/secret events fire.
1142
+ const registrar = makePendingInteractionRegistrar(
1143
+ conversation,
1144
+ conversationId,
1145
+ );
910
1146
  const onEvent = options?.onEvent
911
1147
  ? (msg: ServerMessage) => {
912
1148
  registrar(msg);
@@ -921,20 +1157,20 @@ export class DaemonServer {
921
1157
  }
922
1158
  : registrar;
923
1159
  if (options?.isInteractive === true) {
924
- session.updateClient(onEvent, false);
1160
+ conversation.updateClient(onEvent, false);
925
1161
  }
926
1162
 
927
1163
  try {
928
- await session.runAgentLoop(resolvedContent, messageId, onEvent, {
1164
+ await conversation.runAgentLoop(resolvedContent, messageId, onEvent, {
929
1165
  isInteractive: options?.isInteractive ?? false,
930
1166
  isUserMessage: true,
931
1167
  });
932
1168
  } finally {
933
1169
  if (
934
1170
  options?.isInteractive === true &&
935
- session.getCurrentSender() === onEvent
1171
+ conversation.getCurrentSender() === onEvent
936
1172
  ) {
937
- session.updateClient(() => {}, true);
1173
+ conversation.updateClient(() => {}, true);
938
1174
  }
939
1175
  }
940
1176
 
@@ -942,32 +1178,34 @@ export class DaemonServer {
942
1178
  }
943
1179
 
944
1180
  /**
945
- * Expose session lookup for the POST /v1/messages handler.
1181
+ * Expose conversation lookup for the POST /v1/messages handler.
946
1182
  * The handler manages busy-state checking and queueing itself.
947
1183
  */
948
- async getSessionForMessages(conversationId: string): Promise<Session> {
949
- return this.getOrCreateSession(conversationId);
1184
+ async getConversationForMessages(
1185
+ conversationId: string,
1186
+ ): Promise<Conversation> {
1187
+ return this.getOrCreateConversation(conversationId);
950
1188
  }
951
1189
 
952
1190
  /**
953
- * Look up an active session by ID without creating one.
1191
+ * Look up an active conversation by ID without creating one.
954
1192
  */
955
- findSession(sessionId: string): Session | undefined {
956
- return this.sessions.get(sessionId);
1193
+ findConversation(conversationId: string): Conversation | undefined {
1194
+ return this.conversations.get(conversationId);
957
1195
  }
958
1196
 
959
1197
  /**
960
- * Look up an active session that owns a given surfaceId.
1198
+ * Look up an active conversation that owns a given surfaceId.
961
1199
  */
962
- findSessionBySurfaceId(surfaceId: string): Session | undefined {
963
- for (const s of this.sessions.values()) {
964
- if (s.surfaceState.has(surfaceId)) return s;
1200
+ findConversationBySurfaceId(surfaceId: string): Conversation | undefined {
1201
+ for (const c of this.conversations.values()) {
1202
+ if (c.surfaceState.has(surfaceId)) return c;
965
1203
  }
966
1204
  return undefined;
967
1205
  }
968
1206
 
969
1207
  /**
970
- * Expose the handler context for use by session management HTTP routes.
1208
+ * Expose the handler context for use by conversation management HTTP routes.
971
1209
  * The context is built on-the-fly so it always reflects the current server state.
972
1210
  */
973
1211
  getHandlerContext(): HandlerContext {
@@ -975,11 +1213,11 @@ export class DaemonServer {
975
1213
  }
976
1214
  }
977
1215
 
978
- /** Extract sessionId from a ServerMessage if present. */
979
- function extractSessionId(msg: ServerMessage): string | undefined {
1216
+ /** Extract conversationId from a ServerMessage if present. */
1217
+ function extractConversationId(msg: ServerMessage): string | undefined {
980
1218
  const record = msg as unknown as Record<string, unknown>;
981
- if ("sessionId" in msg && typeof record.sessionId === "string") {
982
- return record.sessionId as string;
1219
+ if ("conversationId" in msg && typeof record.conversationId === "string") {
1220
+ return record.conversationId as string;
983
1221
  }
984
1222
  return undefined;
985
1223
  }