@qlever-llc/trellis 0.10.22 → 0.11.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (406) hide show
  1. package/esm/auth/mod.d.ts +1 -1
  2. package/esm/auth/mod.d.ts.map +1 -1
  3. package/esm/auth/mod.js +1 -1
  4. package/esm/auth/protocol.d.ts +55 -0
  5. package/esm/auth/protocol.d.ts.map +1 -1
  6. package/esm/browser.d.ts +3 -3
  7. package/esm/browser.d.ts.map +1 -1
  8. package/esm/browser.js +1 -1
  9. package/esm/client_connect.d.ts +12 -3
  10. package/esm/client_connect.d.ts.map +1 -1
  11. package/esm/client_connect.js +112 -7
  12. package/esm/codec.d.ts +7 -6
  13. package/esm/codec.d.ts.map +1 -1
  14. package/esm/codec.js +125 -6
  15. package/esm/contract_support/canonical.d.ts +3 -0
  16. package/esm/contract_support/canonical.d.ts.map +1 -1
  17. package/esm/contract_support/canonical.js +3 -0
  18. package/esm/contract_support/mod.d.ts +125 -10
  19. package/esm/contract_support/mod.d.ts.map +1 -1
  20. package/esm/contract_support/mod.js +159 -5
  21. package/esm/contract_support/protocol.d.ts +92 -7
  22. package/esm/contract_support/protocol.d.ts.map +1 -1
  23. package/esm/contract_support/protocol.js +41 -7
  24. package/esm/contract_support/runtime.d.ts +4 -1
  25. package/esm/contract_support/runtime.d.ts.map +1 -1
  26. package/esm/errors/SchemaValidationError.d.ts +49 -0
  27. package/esm/errors/SchemaValidationError.d.ts.map +1 -0
  28. package/esm/errors/SchemaValidationError.js +67 -0
  29. package/esm/errors/index.d.ts +38 -9
  30. package/esm/errors/index.d.ts.map +1 -1
  31. package/esm/errors/index.js +16 -0
  32. package/esm/generated-sdk/auth/api.d.ts +33 -605
  33. package/esm/generated-sdk/auth/api.d.ts.map +1 -1
  34. package/esm/generated-sdk/auth/api.js +6 -1
  35. package/esm/generated-sdk/auth/client.d.ts +129 -134
  36. package/esm/generated-sdk/auth/client.d.ts.map +1 -1
  37. package/esm/generated-sdk/auth/contract.d.ts +2 -601
  38. package/esm/generated-sdk/auth/contract.d.ts.map +1 -1
  39. package/esm/generated-sdk/auth/contract.js +310 -93
  40. package/esm/generated-sdk/auth/mod.d.ts +1 -1
  41. package/esm/generated-sdk/auth/mod.d.ts.map +1 -1
  42. package/esm/generated-sdk/auth/owned_api.d.ts +88 -86
  43. package/esm/generated-sdk/auth/owned_api.d.ts.map +1 -1
  44. package/esm/generated-sdk/auth/owned_api.js +6 -0
  45. package/esm/generated-sdk/auth/schemas.d.ts +284 -136
  46. package/esm/generated-sdk/auth/schemas.d.ts.map +1 -1
  47. package/esm/generated-sdk/auth/schemas.js +231 -92
  48. package/esm/generated-sdk/auth/types.d.ts +565 -89
  49. package/esm/generated-sdk/auth/types.d.ts.map +1 -1
  50. package/esm/generated-sdk/auth/types.js +1 -1
  51. package/esm/generated-sdk/health/api.d.ts +29 -18
  52. package/esm/generated-sdk/health/api.d.ts.map +1 -1
  53. package/esm/generated-sdk/health/client.d.ts +7 -21
  54. package/esm/generated-sdk/health/client.d.ts.map +1 -1
  55. package/esm/generated-sdk/health/contract.d.ts +2 -15
  56. package/esm/generated-sdk/health/contract.d.ts.map +1 -1
  57. package/esm/generated-sdk/health/contract.js +2 -10
  58. package/esm/generated-sdk/health/mod.d.ts +1 -1
  59. package/esm/generated-sdk/health/mod.d.ts.map +1 -1
  60. package/esm/generated-sdk/health/owned_api.d.ts +2 -2
  61. package/esm/generated-sdk/health/schemas.d.ts +1 -14
  62. package/esm/generated-sdk/health/schemas.d.ts.map +1 -1
  63. package/esm/generated-sdk/health/schemas.js +1 -9
  64. package/esm/generated-sdk/health/types.d.ts +10 -5
  65. package/esm/generated-sdk/health/types.d.ts.map +1 -1
  66. package/esm/generated-sdk/health/types.js +1 -2
  67. package/esm/generated-sdk/jobs/api.d.ts +29 -109
  68. package/esm/generated-sdk/jobs/api.d.ts.map +1 -1
  69. package/esm/generated-sdk/jobs/client.d.ts +21 -33
  70. package/esm/generated-sdk/jobs/client.d.ts.map +1 -1
  71. package/esm/generated-sdk/jobs/contract.d.ts +2 -106
  72. package/esm/generated-sdk/jobs/contract.d.ts.map +1 -1
  73. package/esm/generated-sdk/jobs/contract.js +268 -1
  74. package/esm/generated-sdk/jobs/mod.d.ts +1 -1
  75. package/esm/generated-sdk/jobs/mod.d.ts.map +1 -1
  76. package/esm/generated-sdk/jobs/owned_api.d.ts +22 -9
  77. package/esm/generated-sdk/jobs/owned_api.d.ts.map +1 -1
  78. package/esm/generated-sdk/jobs/owned_api.js +20 -1
  79. package/esm/generated-sdk/jobs/schemas.d.ts +437 -0
  80. package/esm/generated-sdk/jobs/schemas.d.ts.map +1 -1
  81. package/esm/generated-sdk/jobs/schemas.js +211 -0
  82. package/esm/generated-sdk/jobs/types.d.ts +195 -12
  83. package/esm/generated-sdk/jobs/types.d.ts.map +1 -1
  84. package/esm/generated-sdk/jobs/types.js +1 -1
  85. package/esm/generated-sdk/state/api.d.ts +29 -68
  86. package/esm/generated-sdk/state/api.d.ts.map +1 -1
  87. package/esm/generated-sdk/state/client.d.ts +17 -31
  88. package/esm/generated-sdk/state/client.d.ts.map +1 -1
  89. package/esm/generated-sdk/state/contract.d.ts +1 -64
  90. package/esm/generated-sdk/state/contract.d.ts.map +1 -1
  91. package/esm/generated-sdk/state/mod.d.ts +1 -1
  92. package/esm/generated-sdk/state/mod.d.ts.map +1 -1
  93. package/esm/generated-sdk/state/owned_api.d.ts +7 -7
  94. package/esm/generated-sdk/state/types.d.ts +52 -9
  95. package/esm/generated-sdk/state/types.d.ts.map +1 -1
  96. package/esm/generated-sdk/trellis-core/api.d.ts +33 -45
  97. package/esm/generated-sdk/trellis-core/api.d.ts.map +1 -1
  98. package/esm/generated-sdk/trellis-core/api.js +6 -1
  99. package/esm/generated-sdk/trellis-core/client.d.ts +31 -20
  100. package/esm/generated-sdk/trellis-core/client.d.ts.map +1 -1
  101. package/esm/generated-sdk/trellis-core/contract.d.ts +2 -41
  102. package/esm/generated-sdk/trellis-core/contract.d.ts.map +1 -1
  103. package/esm/generated-sdk/trellis-core/contract.js +91 -1
  104. package/esm/generated-sdk/trellis-core/mod.d.ts +1 -1
  105. package/esm/generated-sdk/trellis-core/mod.d.ts.map +1 -1
  106. package/esm/generated-sdk/trellis-core/owned_api.d.ts +4 -4
  107. package/esm/generated-sdk/trellis-core/schemas.d.ts +113 -0
  108. package/esm/generated-sdk/trellis-core/schemas.d.ts.map +1 -1
  109. package/esm/generated-sdk/trellis-core/schemas.js +81 -0
  110. package/esm/generated-sdk/trellis-core/types.d.ts +54 -7
  111. package/esm/generated-sdk/trellis-core/types.d.ts.map +1 -1
  112. package/esm/generated-sdk/trellis-core/types.js +1 -1
  113. package/esm/health.d.ts +1 -1
  114. package/esm/health.d.ts.map +1 -1
  115. package/esm/health.js +1 -1
  116. package/esm/index.d.ts +4 -4
  117. package/esm/index.d.ts.map +1 -1
  118. package/esm/index.js +2 -2
  119. package/esm/jobs.d.ts +69 -3
  120. package/esm/jobs.d.ts.map +1 -1
  121. package/esm/jobs.js +92 -3
  122. package/esm/server/health.d.ts +2 -6
  123. package/esm/server/health.d.ts.map +1 -1
  124. package/esm/server/health_schemas.d.ts +0 -8
  125. package/esm/server/health_schemas.d.ts.map +1 -1
  126. package/esm/server/health_schemas.js +0 -5
  127. package/esm/server/internal_jobs/bindings.d.ts +11 -0
  128. package/esm/server/internal_jobs/bindings.d.ts.map +1 -1
  129. package/esm/server/internal_jobs/job-manager.d.ts +58 -2
  130. package/esm/server/internal_jobs/job-manager.d.ts.map +1 -1
  131. package/esm/server/internal_jobs/job-manager.js +429 -55
  132. package/esm/server/internal_jobs/key-coordinator.d.ts +269 -0
  133. package/esm/server/internal_jobs/key-coordinator.d.ts.map +1 -0
  134. package/esm/server/internal_jobs/key-coordinator.js +677 -0
  135. package/esm/server/internal_jobs/projection.d.ts.map +1 -1
  136. package/esm/server/internal_jobs/projection.js +2 -0
  137. package/esm/server/internal_jobs/runtime-worker.d.ts +5 -1
  138. package/esm/server/internal_jobs/runtime-worker.d.ts.map +1 -1
  139. package/esm/server/internal_jobs/runtime-worker.js +14 -2
  140. package/esm/server/internal_jobs/types.d.ts +5 -5
  141. package/esm/server/internal_jobs/types.d.ts.map +1 -1
  142. package/esm/server/internal_jobs/types.js +6 -0
  143. package/esm/server/runtime.d.ts.map +1 -1
  144. package/esm/server/service.d.ts +81 -112
  145. package/esm/server/service.d.ts.map +1 -1
  146. package/esm/server/service.js +372 -130
  147. package/esm/server.d.ts +3 -3
  148. package/esm/server.d.ts.map +1 -1
  149. package/esm/service/deno.d.ts +1 -1
  150. package/esm/service/deno.d.ts.map +1 -1
  151. package/esm/service/drizzle.d.ts +52 -0
  152. package/esm/service/drizzle.d.ts.map +1 -0
  153. package/esm/service/drizzle.js +108 -0
  154. package/esm/service/mod.d.ts +3 -3
  155. package/esm/service/mod.d.ts.map +1 -1
  156. package/esm/service/mod.js +2 -2
  157. package/esm/service/node.d.ts +1 -1
  158. package/esm/service/node.d.ts.map +1 -1
  159. package/esm/service/outbox_inbox.d.ts +76 -22
  160. package/esm/service/outbox_inbox.d.ts.map +1 -1
  161. package/esm/service/outbox_inbox.js +231 -70
  162. package/esm/telemetry/metrics.d.ts +55 -0
  163. package/esm/telemetry/metrics.d.ts.map +1 -1
  164. package/esm/telemetry/metrics.js +86 -0
  165. package/esm/telemetry/mod.d.ts +2 -1
  166. package/esm/telemetry/mod.d.ts.map +1 -1
  167. package/esm/telemetry/mod.js +1 -1
  168. package/esm/trellis.d.ts +62 -30
  169. package/esm/trellis.d.ts.map +1 -1
  170. package/esm/trellis.js +125 -42
  171. package/package.json +14 -2
  172. package/script/auth/mod.d.ts +1 -1
  173. package/script/auth/mod.d.ts.map +1 -1
  174. package/script/auth/mod.js +11 -4
  175. package/script/auth/protocol.d.ts +55 -0
  176. package/script/auth/protocol.d.ts.map +1 -1
  177. package/script/browser.d.ts +3 -3
  178. package/script/browser.d.ts.map +1 -1
  179. package/script/browser.js +3 -2
  180. package/script/client_connect.d.ts +12 -3
  181. package/script/client_connect.d.ts.map +1 -1
  182. package/script/client_connect.js +111 -6
  183. package/script/codec.d.ts +7 -6
  184. package/script/codec.d.ts.map +1 -1
  185. package/script/codec.js +124 -5
  186. package/script/contract_support/canonical.d.ts +3 -0
  187. package/script/contract_support/canonical.d.ts.map +1 -1
  188. package/script/contract_support/canonical.js +3 -0
  189. package/script/contract_support/mod.d.ts +125 -10
  190. package/script/contract_support/mod.d.ts.map +1 -1
  191. package/script/contract_support/mod.js +165 -5
  192. package/script/contract_support/protocol.d.ts +92 -7
  193. package/script/contract_support/protocol.d.ts.map +1 -1
  194. package/script/contract_support/protocol.js +42 -8
  195. package/script/contract_support/runtime.d.ts +4 -1
  196. package/script/contract_support/runtime.d.ts.map +1 -1
  197. package/script/errors/SchemaValidationError.d.ts +49 -0
  198. package/script/errors/SchemaValidationError.d.ts.map +1 -0
  199. package/script/errors/SchemaValidationError.js +74 -0
  200. package/script/errors/index.d.ts +38 -9
  201. package/script/errors/index.d.ts.map +1 -1
  202. package/script/errors/index.js +20 -1
  203. package/script/generated-sdk/auth/api.d.ts +33 -605
  204. package/script/generated-sdk/auth/api.d.ts.map +1 -1
  205. package/script/generated-sdk/auth/api.js +6 -1
  206. package/script/generated-sdk/auth/client.d.ts +129 -134
  207. package/script/generated-sdk/auth/client.d.ts.map +1 -1
  208. package/script/generated-sdk/auth/contract.d.ts +2 -601
  209. package/script/generated-sdk/auth/contract.d.ts.map +1 -1
  210. package/script/generated-sdk/auth/contract.js +310 -93
  211. package/script/generated-sdk/auth/mod.d.ts +1 -1
  212. package/script/generated-sdk/auth/mod.d.ts.map +1 -1
  213. package/script/generated-sdk/auth/owned_api.d.ts +88 -86
  214. package/script/generated-sdk/auth/owned_api.d.ts.map +1 -1
  215. package/script/generated-sdk/auth/owned_api.js +6 -0
  216. package/script/generated-sdk/auth/schemas.d.ts +284 -136
  217. package/script/generated-sdk/auth/schemas.d.ts.map +1 -1
  218. package/script/generated-sdk/auth/schemas.js +231 -92
  219. package/script/generated-sdk/auth/types.d.ts +565 -89
  220. package/script/generated-sdk/auth/types.d.ts.map +1 -1
  221. package/script/generated-sdk/auth/types.js +1 -1
  222. package/script/generated-sdk/health/api.d.ts +29 -18
  223. package/script/generated-sdk/health/api.d.ts.map +1 -1
  224. package/script/generated-sdk/health/client.d.ts +7 -21
  225. package/script/generated-sdk/health/client.d.ts.map +1 -1
  226. package/script/generated-sdk/health/contract.d.ts +2 -15
  227. package/script/generated-sdk/health/contract.d.ts.map +1 -1
  228. package/script/generated-sdk/health/contract.js +2 -10
  229. package/script/generated-sdk/health/mod.d.ts +1 -1
  230. package/script/generated-sdk/health/mod.d.ts.map +1 -1
  231. package/script/generated-sdk/health/owned_api.d.ts +2 -2
  232. package/script/generated-sdk/health/schemas.d.ts +1 -14
  233. package/script/generated-sdk/health/schemas.d.ts.map +1 -1
  234. package/script/generated-sdk/health/schemas.js +1 -9
  235. package/script/generated-sdk/health/types.d.ts +10 -5
  236. package/script/generated-sdk/health/types.d.ts.map +1 -1
  237. package/script/generated-sdk/health/types.js +1 -2
  238. package/script/generated-sdk/jobs/api.d.ts +29 -109
  239. package/script/generated-sdk/jobs/api.d.ts.map +1 -1
  240. package/script/generated-sdk/jobs/client.d.ts +21 -33
  241. package/script/generated-sdk/jobs/client.d.ts.map +1 -1
  242. package/script/generated-sdk/jobs/contract.d.ts +2 -106
  243. package/script/generated-sdk/jobs/contract.d.ts.map +1 -1
  244. package/script/generated-sdk/jobs/contract.js +268 -1
  245. package/script/generated-sdk/jobs/mod.d.ts +1 -1
  246. package/script/generated-sdk/jobs/mod.d.ts.map +1 -1
  247. package/script/generated-sdk/jobs/owned_api.d.ts +22 -9
  248. package/script/generated-sdk/jobs/owned_api.d.ts.map +1 -1
  249. package/script/generated-sdk/jobs/owned_api.js +19 -0
  250. package/script/generated-sdk/jobs/schemas.d.ts +437 -0
  251. package/script/generated-sdk/jobs/schemas.d.ts.map +1 -1
  252. package/script/generated-sdk/jobs/schemas.js +212 -1
  253. package/script/generated-sdk/jobs/types.d.ts +195 -12
  254. package/script/generated-sdk/jobs/types.d.ts.map +1 -1
  255. package/script/generated-sdk/jobs/types.js +1 -1
  256. package/script/generated-sdk/state/api.d.ts +29 -68
  257. package/script/generated-sdk/state/api.d.ts.map +1 -1
  258. package/script/generated-sdk/state/client.d.ts +17 -31
  259. package/script/generated-sdk/state/client.d.ts.map +1 -1
  260. package/script/generated-sdk/state/contract.d.ts +1 -64
  261. package/script/generated-sdk/state/contract.d.ts.map +1 -1
  262. package/script/generated-sdk/state/mod.d.ts +1 -1
  263. package/script/generated-sdk/state/mod.d.ts.map +1 -1
  264. package/script/generated-sdk/state/owned_api.d.ts +7 -7
  265. package/script/generated-sdk/state/types.d.ts +52 -9
  266. package/script/generated-sdk/state/types.d.ts.map +1 -1
  267. package/script/generated-sdk/trellis-core/api.d.ts +33 -45
  268. package/script/generated-sdk/trellis-core/api.d.ts.map +1 -1
  269. package/script/generated-sdk/trellis-core/api.js +6 -1
  270. package/script/generated-sdk/trellis-core/client.d.ts +31 -20
  271. package/script/generated-sdk/trellis-core/client.d.ts.map +1 -1
  272. package/script/generated-sdk/trellis-core/contract.d.ts +2 -41
  273. package/script/generated-sdk/trellis-core/contract.d.ts.map +1 -1
  274. package/script/generated-sdk/trellis-core/contract.js +91 -1
  275. package/script/generated-sdk/trellis-core/mod.d.ts +1 -1
  276. package/script/generated-sdk/trellis-core/mod.d.ts.map +1 -1
  277. package/script/generated-sdk/trellis-core/owned_api.d.ts +4 -4
  278. package/script/generated-sdk/trellis-core/schemas.d.ts +113 -0
  279. package/script/generated-sdk/trellis-core/schemas.d.ts.map +1 -1
  280. package/script/generated-sdk/trellis-core/schemas.js +81 -0
  281. package/script/generated-sdk/trellis-core/types.d.ts +54 -7
  282. package/script/generated-sdk/trellis-core/types.d.ts.map +1 -1
  283. package/script/generated-sdk/trellis-core/types.js +1 -1
  284. package/script/health.d.ts +1 -1
  285. package/script/health.d.ts.map +1 -1
  286. package/script/health.js +1 -2
  287. package/script/index.d.ts +4 -4
  288. package/script/index.d.ts.map +1 -1
  289. package/script/index.js +2 -2
  290. package/script/jobs.d.ts +69 -3
  291. package/script/jobs.d.ts.map +1 -1
  292. package/script/jobs.js +93 -3
  293. package/script/server/health.d.ts +2 -6
  294. package/script/server/health.d.ts.map +1 -1
  295. package/script/server/health_schemas.d.ts +0 -8
  296. package/script/server/health_schemas.d.ts.map +1 -1
  297. package/script/server/health_schemas.js +1 -6
  298. package/script/server/internal_jobs/bindings.d.ts +11 -0
  299. package/script/server/internal_jobs/bindings.d.ts.map +1 -1
  300. package/script/server/internal_jobs/job-manager.d.ts +58 -2
  301. package/script/server/internal_jobs/job-manager.d.ts.map +1 -1
  302. package/script/server/internal_jobs/job-manager.js +429 -54
  303. package/script/server/internal_jobs/key-coordinator.d.ts +269 -0
  304. package/script/server/internal_jobs/key-coordinator.d.ts.map +1 -0
  305. package/script/server/internal_jobs/key-coordinator.js +690 -0
  306. package/script/server/internal_jobs/projection.d.ts.map +1 -1
  307. package/script/server/internal_jobs/projection.js +2 -0
  308. package/script/server/internal_jobs/runtime-worker.d.ts +5 -1
  309. package/script/server/internal_jobs/runtime-worker.d.ts.map +1 -1
  310. package/script/server/internal_jobs/runtime-worker.js +14 -2
  311. package/script/server/internal_jobs/types.d.ts +5 -5
  312. package/script/server/internal_jobs/types.d.ts.map +1 -1
  313. package/script/server/internal_jobs/types.js +6 -0
  314. package/script/server/runtime.d.ts.map +1 -1
  315. package/script/server/service.d.ts +81 -112
  316. package/script/server/service.d.ts.map +1 -1
  317. package/script/server/service.js +369 -127
  318. package/script/server.d.ts +3 -3
  319. package/script/server.d.ts.map +1 -1
  320. package/script/service/deno.d.ts +1 -1
  321. package/script/service/deno.d.ts.map +1 -1
  322. package/script/service/drizzle.d.ts +52 -0
  323. package/script/service/drizzle.d.ts.map +1 -0
  324. package/script/service/drizzle.js +113 -0
  325. package/script/service/mod.d.ts +3 -3
  326. package/script/service/mod.d.ts.map +1 -1
  327. package/script/service/mod.js +4 -3
  328. package/script/service/node.d.ts +1 -1
  329. package/script/service/node.d.ts.map +1 -1
  330. package/script/service/outbox_inbox.d.ts +76 -22
  331. package/script/service/outbox_inbox.d.ts.map +1 -1
  332. package/script/service/outbox_inbox.js +233 -70
  333. package/script/telemetry/metrics.d.ts +55 -0
  334. package/script/telemetry/metrics.d.ts.map +1 -1
  335. package/script/telemetry/metrics.js +88 -0
  336. package/script/telemetry/mod.d.ts +2 -1
  337. package/script/telemetry/mod.d.ts.map +1 -1
  338. package/script/telemetry/mod.js +3 -1
  339. package/script/trellis.d.ts +62 -30
  340. package/script/trellis.d.ts.map +1 -1
  341. package/script/trellis.js +124 -41
  342. package/src/auth/mod.ts +7 -0
  343. package/src/browser.ts +5 -7
  344. package/src/client_connect.ts +200 -12
  345. package/src/codec.ts +186 -11
  346. package/src/contract_support/canonical.ts +3 -0
  347. package/src/contract_support/mod.ts +380 -9
  348. package/src/contract_support/protocol.ts +57 -10
  349. package/src/contract_support/runtime.ts +7 -0
  350. package/src/errors/SchemaValidationError.ts +67 -0
  351. package/src/errors/index.ts +28 -0
  352. package/src/health.ts +0 -1
  353. package/src/index.ts +7 -8
  354. package/src/jobs.ts +138 -1
  355. package/src/sdk/_generated/auth/api.ts +38 -7
  356. package/src/sdk/_generated/auth/client.ts +168 -530
  357. package/src/sdk/_generated/auth/contract.ts +310 -93
  358. package/src/sdk/_generated/auth/mod.ts +0 -1
  359. package/src/sdk/_generated/auth/owned_api.ts +92 -86
  360. package/src/sdk/_generated/auth/schemas.ts +231 -92
  361. package/src/sdk/_generated/auth/types.ts +1069 -273
  362. package/src/sdk/_generated/core/api.ts +38 -7
  363. package/src/sdk/_generated/core/client.ts +47 -73
  364. package/src/sdk/_generated/core/contract.ts +91 -1
  365. package/src/sdk/_generated/core/mod.ts +0 -1
  366. package/src/sdk/_generated/core/owned_api.ts +4 -4
  367. package/src/sdk/_generated/core/schemas.ts +81 -0
  368. package/src/sdk/_generated/core/types.ts +79 -15
  369. package/src/sdk/_generated/health/api.ts +29 -5
  370. package/src/sdk/_generated/health/client.ts +11 -58
  371. package/src/sdk/_generated/health/contract.ts +2 -10
  372. package/src/sdk/_generated/health/mod.ts +0 -1
  373. package/src/sdk/_generated/health/owned_api.ts +2 -2
  374. package/src/sdk/_generated/health/schemas.ts +1 -9
  375. package/src/sdk/_generated/health/types.ts +23 -2
  376. package/src/sdk/_generated/jobs/api.ts +29 -5
  377. package/src/sdk/_generated/jobs/client.ts +25 -109
  378. package/src/sdk/_generated/jobs/contract.ts +269 -1
  379. package/src/sdk/_generated/jobs/mod.ts +0 -1
  380. package/src/sdk/_generated/jobs/owned_api.ts +30 -9
  381. package/src/sdk/_generated/jobs/schemas.ts +213 -0
  382. package/src/sdk/_generated/jobs/types.ts +252 -18
  383. package/src/sdk/_generated/state/api.ts +29 -5
  384. package/src/sdk/_generated/state/client.ts +18 -95
  385. package/src/sdk/_generated/state/mod.ts +0 -1
  386. package/src/sdk/_generated/state/owned_api.ts +7 -7
  387. package/src/sdk/_generated/state/types.ts +91 -15
  388. package/src/server/health.ts +2 -6
  389. package/src/server/health_schemas.ts +0 -6
  390. package/src/server/internal_jobs/bindings.ts +11 -0
  391. package/src/server/internal_jobs/job-manager.ts +553 -24
  392. package/src/server/internal_jobs/key-coordinator.ts +1080 -0
  393. package/src/server/internal_jobs/projection.ts +2 -0
  394. package/src/server/internal_jobs/runtime-worker.ts +17 -1
  395. package/src/server/internal_jobs/types.ts +6 -0
  396. package/src/server/runtime.ts +4 -0
  397. package/src/server/service.ts +645 -625
  398. package/src/server.ts +14 -7
  399. package/src/service/deno.ts +0 -5
  400. package/src/service/drizzle.ts +184 -0
  401. package/src/service/mod.ts +17 -7
  402. package/src/service/node.ts +0 -5
  403. package/src/service/outbox_inbox.ts +354 -88
  404. package/src/telemetry/metrics.ts +198 -1
  405. package/src/telemetry/mod.ts +6 -0
  406. package/src/trellis.ts +286 -105
package/script/trellis.js CHANGED
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
11
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
12
  };
13
- var _Trellis_instances, _Trellis_log, _Trellis_tasks, _Trellis_hasExplicitApi, _Trellis_noResponderMaxRetries, _Trellis_noResponderRetryMs, _Trellis_onSessionNotFound, _Trellis_operationStore, _Trellis_eventConsumers, _Trellis_durableEventLoops, _Trellis_createStateFacade, _Trellis_createRpcFacade, _Trellis_createRpcHandleFacade, _Trellis_createEventFacade, _Trellis_createEventPublishFacade, _Trellis_createFeedFacade, _Trellis_createHandlerTrellis, _Trellis_createOperationFacade, _Trellis_unknownApiError, _Trellis_requestBuiltRpcUnknown, _Trellis_requestBuiltRpc, _Trellis_handleBrowserAuthRequired, _Trellis_authenticateFeedRequest, _Trellis_subscribeFeed, _Trellis_handleFeed, _Trellis_processFeedMessage, _Trellis_handleRPC, _Trellis_processRPCMessage, _Trellis_respondWithPayload, _Trellis_respondWithError, _Trellis_startEphemeralEvent, _Trellis_invokeEventHandler, _Trellis_resolveEventConsumerGroup, _Trellis_registerDurableEventHandler, _Trellis_startDurableEventConsumer, _Trellis_durableEventConsumerGroupReady, _Trellis_runDurableEventConsumer, _Trellis_handleDurableEvent, _Trellis_handleDurableEventConsumer, _Trellis_parseEventMessage, _Trellis_escapeSubjectToken, _Trellis_currentIat, _Trellis_createProof, _Trellis_requestMessageWithRetry, _Trellis_requestJson, _Trellis_watchJson;
13
+ var _Trellis_instances, _Trellis_log, _Trellis_tasks, _Trellis_hasExplicitApi, _Trellis_noResponderMaxRetries, _Trellis_noResponderRetryMs, _Trellis_onSessionNotFound, _Trellis_operationStore, _Trellis_eventConsumers, _Trellis_durableEventConsumerBeforeReadinessCheck, _Trellis_durableEventLoops, _Trellis_durableEventListenersStopped, _Trellis_createStateFacade, _Trellis_createRpcFacade, _Trellis_createRpcHandleFacade, _Trellis_createEventFacade, _Trellis_createEventPublishFacade, _Trellis_createFeedFacade, _Trellis_createHandlerTrellis, _Trellis_createOperationFacade, _Trellis_unknownApiError, _Trellis_requestBuiltRpcUnknown, _Trellis_requestBuiltRpc, _Trellis_handleBrowserAuthRequired, _Trellis_authenticateFeedRequest, _Trellis_subscribeFeed, _Trellis_handleFeed, _Trellis_processFeedMessage, _Trellis_handleRPC, _Trellis_processRPCMessage, _Trellis_respondWithPayload, _Trellis_respondWithError, _Trellis_startEphemeralEvent, _Trellis_invokeEventHandler, _Trellis_resolveEventConsumerGroup, _Trellis_registerDurableEventHandler, _Trellis_startDurableEventConsumer, _Trellis_durableEventConsumerGroupReady, _Trellis_runDurableEventConsumer, _Trellis_handleDurableEvent, _Trellis_handleDurableEventConsumer, _Trellis_parseEventMessage, _Trellis_escapeSubjectToken, _Trellis_currentIat, _Trellis_createProof, _Trellis_requestMessageWithRetry, _Trellis_requestJson, _Trellis_watchJson;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.Trellis = exports.DurableOperationRecordSchema = void 0;
16
16
  exports.safeJson = safeJson;
@@ -321,25 +321,28 @@ function isTerminalRuntimeOperationSnapshot(value) {
321
321
  value.state === "cancelled");
322
322
  }
323
323
  function createEventListenerContext(args) {
324
- const header = typeof args.payload === "object" && args.payload !== null
325
- ? Reflect.get(args.payload, "header")
326
- : undefined;
327
- const id = typeof header === "object" && header !== null
328
- ? Reflect.get(header, "id")
329
- : undefined;
330
- const time = typeof header === "object" && header !== null
331
- ? Reflect.get(header, "time")
332
- : undefined;
324
+ const messageId = readMessageHeader(args.message, "Nats-Msg-Id");
325
+ const messageTime = readMessageHeader(args.message, "Trellis-Event-Time");
333
326
  const sequence = Reflect.get(args.message, "seq");
334
327
  return {
335
- id: typeof id === "string" ? id : "",
336
- time: new Date(typeof time === "string" ? time : 0),
328
+ id: messageId ?? "",
329
+ time: new Date(messageTime ?? 0),
337
330
  subject: args.subject,
338
331
  mode: args.mode,
339
332
  ...(args.group ? { group: args.group } : {}),
340
333
  ...(typeof sequence === "number" ? { sequence } : {}),
341
334
  };
342
335
  }
336
+ function readMessageHeader(message, key) {
337
+ const headers = Reflect.get(message, "headers");
338
+ if (typeof headers !== "object" || headers === null)
339
+ return undefined;
340
+ const get = Reflect.get(headers, "get");
341
+ if (typeof get !== "function")
342
+ return undefined;
343
+ const value = get.call(headers, key);
344
+ return typeof value === "string" ? value : undefined;
345
+ }
343
346
  function eventConsumerGroupEvents(group) {
344
347
  const events = new Set();
345
348
  for (const groupEvents of Object.values(group.uses ?? {})) {
@@ -350,21 +353,25 @@ function eventConsumerGroupEvents(group) {
350
353
  events.add(event);
351
354
  return [...events].sort();
352
355
  }
353
- let pendingInternalEventConsumers;
356
+ function isConsumerNotFoundError(error) {
357
+ return error instanceof Error && (error.name === "ConsumerNotFoundError" ||
358
+ error.message.includes("consumer not found"));
359
+ }
360
+ const internalEventConsumers = Symbol("trellis.internal.eventConsumers");
361
+ const internalDurableEventConsumerBeforeReadinessCheck = Symbol("trellis.internal.durableEventConsumerBeforeReadinessCheck");
354
362
  /**
355
363
  * Creates a Trellis runtime with bootstrap-resolved bindings.
356
364
  *
357
365
  * @internal
358
366
  */
359
367
  function createTrellisInternal(name, nats, auth, opts) {
360
- const { eventConsumers, ...publicOpts } = opts ?? {};
361
- pendingInternalEventConsumers = eventConsumers;
362
- try {
363
- return new Trellis(name, nats, auth, publicOpts);
364
- }
365
- finally {
366
- pendingInternalEventConsumers = undefined;
367
- }
368
+ const { durableEventConsumerBeforeReadinessCheck, eventConsumers, ...publicOpts } = opts ?? {};
369
+ const internalOpts = {
370
+ ...publicOpts,
371
+ [internalEventConsumers]: eventConsumers,
372
+ [internalDurableEventConsumerBeforeReadinessCheck]: durableEventConsumerBeforeReadinessCheck,
373
+ };
374
+ return new Trellis(name, nats, auth, internalOpts);
368
375
  }
369
376
  function surfaceGroupName(key) {
370
377
  return lowerCamelIdent(key.split(".")[0] ?? key);
@@ -460,7 +467,23 @@ function joinStatePath(prefix, key) {
460
467
  .join("/");
461
468
  }
462
469
  function validateStateValue(schema, value) {
463
- return parseRuntimeSchema(schema, value);
470
+ const result = parseRuntimeSchema(schema, value);
471
+ // State validation is an internal path; collapse SchemaValidationError
472
+ // into ValidationError to keep internal error types narrow.
473
+ if (result.isOk()) {
474
+ return result;
475
+ }
476
+ const resultError = result.error;
477
+ if (resultError instanceof index_js_1.SchemaValidationError) {
478
+ return result_1.Result.err(new index_js_1.ValidationError({
479
+ errors: resultError.issues.map((i) => ({
480
+ path: i.path,
481
+ message: i.message,
482
+ })),
483
+ cause: resultError.cause,
484
+ }));
485
+ }
486
+ return result;
464
487
  }
465
488
  function validateStateGetResult(descriptor, result) {
466
489
  if ("migrationRequired" in result) {
@@ -820,7 +843,10 @@ class Trellis {
820
843
  _Trellis_onSessionNotFound.set(this, void 0);
821
844
  _Trellis_operationStore.set(this, void 0);
822
845
  _Trellis_eventConsumers.set(this, void 0);
846
+ _Trellis_durableEventConsumerBeforeReadinessCheck.set(this, void 0);
823
847
  _Trellis_durableEventLoops.set(this, new Map());
848
+ _Trellis_durableEventListenersStopped.set(this, false);
849
+ const internalOpts = opts;
824
850
  const api = opts?.api;
825
851
  this.name = name;
826
852
  this.nats = nats;
@@ -838,7 +864,8 @@ class Trellis {
838
864
  __classPrivateFieldSet(this, _Trellis_noResponderRetryMs, opts?.noResponderRetry?.baseDelayMs ??
839
865
  DEFAULT_NO_RESPONDER_RETRY_MS, "f");
840
866
  __classPrivateFieldSet(this, _Trellis_onSessionNotFound, opts?.onSessionNotFound, "f");
841
- __classPrivateFieldSet(this, _Trellis_eventConsumers, pendingInternalEventConsumers ?? {}, "f");
867
+ __classPrivateFieldSet(this, _Trellis_eventConsumers, internalOpts?.[internalEventConsumers] ?? {}, "f");
868
+ __classPrivateFieldSet(this, _Trellis_durableEventConsumerBeforeReadinessCheck, internalOpts?.[internalDurableEventConsumerBeforeReadinessCheck], "f");
842
869
  this.connection = opts?.connection ??
843
870
  new connection_js_1.TrellisConnection({ kind: "client" });
844
871
  __classPrivateFieldSet(this, _Trellis_tasks, new tasks_js_1.TrellisTasks({ log: __classPrivateFieldGet(this, _Trellis_log, "f") }), "f");
@@ -987,10 +1014,7 @@ class Trellis {
987
1014
  id: (0, ulid_1.ulid)(),
988
1015
  time: new Date().toISOString(),
989
1016
  };
990
- const payload = Object.freeze({
991
- ...data,
992
- header: Object.freeze(header),
993
- });
1017
+ const payload = Object.freeze({ ...data });
994
1018
  const msg = (0, codec_js_1.encodeSchema)(ctx.event, payload).take();
995
1019
  if ((0, result_1.isErr)(msg)) {
996
1020
  globals_js_1.logger.error({ err: msg.error }, "Failed to encode event.");
@@ -1005,6 +1029,7 @@ class Trellis {
1005
1029
  }
1006
1030
  const headers = (0, nats_core_1.headers)();
1007
1031
  headers.set("Nats-Msg-Id", header.id);
1032
+ headers.set("Trellis-Event-Time", header.time);
1008
1033
  (0, mod_js_2.injectTraceContext)((0, mod_js_2.createNatsHeaderCarrier)(headers));
1009
1034
  const headerRecord = {};
1010
1035
  for (const [key, value] of headers) {
@@ -1013,6 +1038,7 @@ class Trellis {
1013
1038
  return (0, result_1.ok)(Object.freeze({
1014
1039
  event: event.toString(),
1015
1040
  subject,
1041
+ header: Object.freeze(header),
1016
1042
  payload,
1017
1043
  encodedPayload: msg,
1018
1044
  headers: Object.freeze(headerRecord),
@@ -1085,7 +1111,7 @@ class Trellis {
1085
1111
  if ((0, result_1.isErr)(subject))
1086
1112
  return subject;
1087
1113
  if (opts?.mode === "ephemeral") {
1088
- return __classPrivateFieldGet(this, _Trellis_instances, "m", _Trellis_startEphemeralEvent).call(this, eventName, ctx, subject, fn, opts.signal);
1114
+ return await __classPrivateFieldGet(this, _Trellis_instances, "m", _Trellis_startEphemeralEvent).call(this, eventName, ctx, subject, fn, opts.signal);
1089
1115
  }
1090
1116
  if (opts?.durableName) {
1091
1117
  return (0, result_1.err)(new index_js_1.UnexpectedError({
@@ -1118,6 +1144,14 @@ class Trellis {
1118
1144
  wait() {
1119
1145
  return __classPrivateFieldGet(this, _Trellis_tasks, "f").wait();
1120
1146
  }
1147
+ /** Stops durable event listener loops without closing the underlying transport. */
1148
+ stopEventListeners() {
1149
+ __classPrivateFieldSet(this, _Trellis_durableEventListenersStopped, true, "f");
1150
+ for (const loop of __classPrivateFieldGet(this, _Trellis_durableEventLoops, "f").values()) {
1151
+ loop.registrations.splice(0, loop.registrations.length);
1152
+ loop.messages?.stop();
1153
+ }
1154
+ }
1121
1155
  // FIXME: If are validating things twice in most cases...
1122
1156
  template(subject, data, allowWildcards = false) {
1123
1157
  // Find all template placeholders and check if values exist
@@ -1155,7 +1189,7 @@ class Trellis {
1155
1189
  }
1156
1190
  }
1157
1191
  exports.Trellis = Trellis;
1158
- _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplicitApi = new WeakMap(), _Trellis_noResponderMaxRetries = new WeakMap(), _Trellis_noResponderRetryMs = new WeakMap(), _Trellis_onSessionNotFound = new WeakMap(), _Trellis_operationStore = new WeakMap(), _Trellis_eventConsumers = new WeakMap(), _Trellis_durableEventLoops = new WeakMap(), _Trellis_instances = new WeakSet(), _Trellis_createStateFacade = function _Trellis_createStateFacade(state) {
1192
+ _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplicitApi = new WeakMap(), _Trellis_noResponderMaxRetries = new WeakMap(), _Trellis_noResponderRetryMs = new WeakMap(), _Trellis_onSessionNotFound = new WeakMap(), _Trellis_operationStore = new WeakMap(), _Trellis_eventConsumers = new WeakMap(), _Trellis_durableEventConsumerBeforeReadinessCheck = new WeakMap(), _Trellis_durableEventLoops = new WeakMap(), _Trellis_durableEventListenersStopped = new WeakMap(), _Trellis_instances = new WeakSet(), _Trellis_createStateFacade = function _Trellis_createStateFacade(state) {
1159
1193
  const stores = (state ?? {});
1160
1194
  const facade = Object.fromEntries(Object.entries(stores).map(([store, descriptor]) => {
1161
1195
  if (descriptor.kind === "value") {
@@ -1275,6 +1309,7 @@ _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplic
1275
1309
  prepare: (event, data) => this.prepare(event, data),
1276
1310
  publish: (event, data) => this.publish(event, data),
1277
1311
  publishPrepared: (event) => this.publishPrepared(event),
1312
+ stopEventListeners: () => this.stopEventListeners(),
1278
1313
  };
1279
1314
  }, _Trellis_createOperationFacade = function _Trellis_createOperationFacade() {
1280
1315
  const surface = {};
@@ -1993,6 +2028,8 @@ _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplic
1993
2028
  }
1994
2029
  let caller;
1995
2030
  const callerSessionKey = msg.headers?.get("session-key") ?? "";
2031
+ const handlerRequestIdFromHeader = msg.headers?.get("request-id") ?? "";
2032
+ const handlerTraceIdFromHeader = traceIdFromTraceparent(msg.headers?.get("traceparent"));
1996
2033
  const authRequired = ctx.authRequired ?? true;
1997
2034
  if (!authRequired) {
1998
2035
  caller = {
@@ -2204,6 +2241,8 @@ _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplic
2204
2241
  context: {
2205
2242
  caller,
2206
2243
  sessionKey: callerSessionKey,
2244
+ requestId: handlerRequestIdFromHeader || undefined,
2245
+ traceId: handlerTraceIdFromHeader || undefined,
2207
2246
  },
2208
2247
  client: handlerTrellis,
2209
2248
  })));
@@ -2340,14 +2379,29 @@ _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplic
2340
2379
  return;
2341
2380
  }
2342
2381
  __classPrivateFieldGet(this, _Trellis_instances, "m", _Trellis_respondWithPayload).call(this, msg, serialized.take(), { headers: hdrs }, { method: context.method, responseKind: "error" });
2343
- }, _Trellis_startEphemeralEvent = function _Trellis_startEphemeralEvent(event, ctx, subject, fn, signal) {
2344
- const sub = this.nats.subscribe(subject);
2345
- if (signal) {
2346
- if (signal.aborted) {
2382
+ }, _Trellis_startEphemeralEvent = async function _Trellis_startEphemeralEvent(event, ctx, subject, fn, signal) {
2383
+ let sub;
2384
+ try {
2385
+ sub = this.nats.subscribe(subject);
2386
+ if (signal) {
2387
+ if (signal.aborted) {
2388
+ sub.unsubscribe();
2389
+ return (0, result_1.ok)(undefined);
2390
+ }
2391
+ signal.addEventListener("abort", () => sub?.unsubscribe(), {
2392
+ once: true,
2393
+ });
2394
+ }
2395
+ await this.nats.flush();
2396
+ }
2397
+ catch (cause) {
2398
+ if (sub) {
2347
2399
  sub.unsubscribe();
2348
- return (0, result_1.ok)(undefined);
2349
2400
  }
2350
- signal.addEventListener("abort", () => sub.unsubscribe(), { once: true });
2401
+ return (0, result_1.err)(new index_js_1.UnexpectedError({
2402
+ cause,
2403
+ context: { event: String(event), subject },
2404
+ }));
2351
2405
  }
2352
2406
  const task = result_1.AsyncResult.try(async () => {
2353
2407
  for await (const msg of sub) {
@@ -2398,7 +2452,6 @@ _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplic
2398
2452
  };
2399
2453
  try {
2400
2454
  const result = await Promise.resolve(args.fn(args.payload, createEventListenerContext({
2401
- payload: args.payload,
2402
2455
  subject: args.message.subject,
2403
2456
  mode: args.mode,
2404
2457
  ...(args.group ? { group: args.group } : {}),
@@ -2455,7 +2508,7 @@ _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplic
2455
2508
  }
2456
2509
  return (0, result_1.ok)(group);
2457
2510
  }, _Trellis_registerDurableEventHandler = function _Trellis_registerDurableEventHandler(args) {
2458
- if (args.signal?.aborted)
2511
+ if (args.signal?.aborted || __classPrivateFieldGet(this, _Trellis_durableEventListenersStopped, "f"))
2459
2512
  return;
2460
2513
  const loop = __classPrivateFieldGet(this, _Trellis_durableEventLoops, "f").get(args.group) ?? {
2461
2514
  registrations: [],
@@ -2479,7 +2532,8 @@ _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplic
2479
2532
  }, { once: true });
2480
2533
  __classPrivateFieldGet(this, _Trellis_instances, "m", _Trellis_startDurableEventConsumer).call(this, args.group, loop);
2481
2534
  }, _Trellis_startDurableEventConsumer = function _Trellis_startDurableEventConsumer(group, loop) {
2482
- if (loop.started || !__classPrivateFieldGet(this, _Trellis_instances, "m", _Trellis_durableEventConsumerGroupReady).call(this, group, loop)) {
2535
+ if (__classPrivateFieldGet(this, _Trellis_durableEventListenersStopped, "f") || loop.started ||
2536
+ !__classPrivateFieldGet(this, _Trellis_instances, "m", _Trellis_durableEventConsumerGroupReady).call(this, group, loop)) {
2483
2537
  return;
2484
2538
  }
2485
2539
  loop.started = true;
@@ -2504,10 +2558,21 @@ _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplic
2504
2558
  return await jsm.consumers.info(binding.stream, binding.consumerName);
2505
2559
  });
2506
2560
  const info = infoResult.take();
2507
- if ((0, result_1.isErr)(info))
2561
+ if ((0, result_1.isErr)(info)) {
2562
+ if (__classPrivateFieldGet(this, _Trellis_durableEventListenersStopped, "f") ||
2563
+ !__classPrivateFieldGet(this, _Trellis_instances, "m", _Trellis_durableEventConsumerGroupReady).call(this, group, loop)) {
2564
+ return (0, result_1.ok)(undefined);
2565
+ }
2566
+ if (isConsumerNotFoundError(info.error.cause)) {
2567
+ __classPrivateFieldGet(this, _Trellis_log, "f").debug({ group, stream: binding.stream, consumer: binding.consumerName }, "Durable event consumer is not available yet; retrying");
2568
+ await sleep(25);
2569
+ return (0, result_1.ok)(undefined);
2570
+ }
2508
2571
  return info;
2572
+ }
2509
2573
  const consumer = this.js.consumers.getConsumerFromInfo(info);
2510
- while (__classPrivateFieldGet(this, _Trellis_instances, "m", _Trellis_durableEventConsumerGroupReady).call(this, group, loop)) {
2574
+ while (!__classPrivateFieldGet(this, _Trellis_durableEventListenersStopped, "f") &&
2575
+ __classPrivateFieldGet(this, _Trellis_instances, "m", _Trellis_durableEventConsumerGroupReady).call(this, group, loop)) {
2511
2576
  const messages = await consumer.fetch({
2512
2577
  max_messages: 1,
2513
2578
  expires: 30_000,
@@ -2521,10 +2586,24 @@ _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplic
2521
2586
  .orThrow();
2522
2587
  }
2523
2588
  }
2589
+ catch (cause) {
2590
+ if (__classPrivateFieldGet(this, _Trellis_durableEventListenersStopped, "f") ||
2591
+ !__classPrivateFieldGet(this, _Trellis_instances, "m", _Trellis_durableEventConsumerGroupReady).call(this, group, loop)) {
2592
+ return (0, result_1.ok)(undefined);
2593
+ }
2594
+ if (isConsumerNotFoundError(cause)) {
2595
+ __classPrivateFieldGet(this, _Trellis_log, "f").debug({ group, stream: binding.stream, consumer: binding.consumerName }, "Durable event consumer is not available yet; retrying");
2596
+ await sleep(25);
2597
+ return (0, result_1.ok)(undefined);
2598
+ }
2599
+ return (0, result_1.err)(new index_js_1.UnexpectedError({ cause, context: { group } }));
2600
+ }
2524
2601
  finally {
2525
2602
  loop.started = false;
2526
2603
  loop.messages = undefined;
2527
- __classPrivateFieldGet(this, _Trellis_instances, "m", _Trellis_startDurableEventConsumer).call(this, group, loop);
2604
+ if (!__classPrivateFieldGet(this, _Trellis_durableEventListenersStopped, "f")) {
2605
+ __classPrivateFieldGet(this, _Trellis_instances, "m", _Trellis_startDurableEventConsumer).call(this, group, loop);
2606
+ }
2528
2607
  }
2529
2608
  return (0, result_1.ok)(undefined);
2530
2609
  })());
@@ -2561,6 +2640,10 @@ _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplic
2561
2640
  }, _Trellis_handleDurableEventConsumer = function _Trellis_handleDurableEventConsumer(group, loop, messages) {
2562
2641
  return result_1.AsyncResult.try(async () => {
2563
2642
  for await (const msg of messages) {
2643
+ await __classPrivateFieldGet(this, _Trellis_durableEventConsumerBeforeReadinessCheck, "f")?.call(this, {
2644
+ group,
2645
+ subject: msg.subject,
2646
+ });
2564
2647
  if (!__classPrivateFieldGet(this, _Trellis_instances, "m", _Trellis_durableEventConsumerGroupReady).call(this, group, loop)) {
2565
2648
  messages.stop();
2566
2649
  break;
package/src/auth/mod.ts CHANGED
@@ -90,6 +90,8 @@ export {
90
90
  AuthCapabilityGroupsListSchema,
91
91
  AuthCapabilityGroupsPutResponseSchema,
92
92
  AuthCapabilityGroupsPutSchema,
93
+ AuthCatalogIssuesResolveResponseSchema,
94
+ AuthCatalogIssuesResolveSchema,
93
95
  type AuthDeployment,
94
96
  type AuthDeploymentAuthorityAcceptMigrationInput,
95
97
  AuthDeploymentAuthorityAcceptMigrationSchema,
@@ -189,6 +191,10 @@ export {
189
191
  AuthPortalsLoginSettingsGetSchema,
190
192
  AuthPortalsLoginSettingsResponseSchema,
191
193
  AuthPortalsLoginSettingsUpdateSchema,
194
+ AuthPortalsPutResponseSchema,
195
+ AuthPortalsPutSchema,
196
+ AuthPortalsRemoveResponseSchema,
197
+ AuthPortalsRemoveSchema,
192
198
  AuthPortalsRoutesPutResponseSchema,
193
199
  AuthPortalsRoutesPutSchema,
194
200
  AuthPortalsRoutesRemoveResponseSchema,
@@ -270,6 +276,7 @@ export {
270
276
  DeploymentAuthorityUpdateSchema,
271
277
  DeploymentPortalRouteSchema,
272
278
  DeploymentResourceBindingSchema,
279
+ DeviceActivationActorSchema,
273
280
  type DeviceActivationRecord,
274
281
  DeviceActivationRecordSchema,
275
282
  DeviceActivationReviewSchema,
package/src/browser.ts CHANGED
@@ -39,7 +39,7 @@ export {
39
39
  export type { InferSchemaType, JsonValue, TrellisAPI } from "./contracts.js";
40
40
  export { TrellisConnection } from "./connection.js";
41
41
  export type { TrellisConnectionStatus } from "./connection.js";
42
- export { defineError } from "./contract_support/mod.js";
42
+ export { defineError, withTrellisValidation } from "./contract_support/mod.js";
43
43
  export {
44
44
  buildCursorPage,
45
45
  buildPageResponse,
@@ -65,6 +65,8 @@ export type {
65
65
  RpcErrorClass,
66
66
  RuntimeRpcErrorDesc,
67
67
  SerializableErrorData,
68
+ TrellisValidationExtension,
69
+ TrellisValidationIssueHint,
68
70
  } from "./contract_support/mod.js";
69
71
  export {
70
72
  defineAgentContract,
@@ -170,7 +172,6 @@ export type {
170
172
  AcceptedOperation,
171
173
  ClientTrellis,
172
174
  ConnectedTrellisClient,
173
- EventHandler,
174
175
  EventListenerContext,
175
176
  EventName,
176
177
  EventOpts,
@@ -187,25 +188,22 @@ export type {
187
188
  HandlerTrellisForContract,
188
189
  MapStateStoreClient,
189
190
  OperationHandlerContext,
191
+ OperationHandlerErrorOf,
190
192
  OperationRegistration,
191
193
  OperationRuntimeHandle,
192
194
  OperationTransferContextOf,
193
195
  OperationTransferHandle,
194
196
  PreparedTrellisEvent,
195
197
  RequestOpts,
196
- RpcArgs,
197
198
  RpcHandlerContext,
198
- RpcHandlerErrorOf,
199
- RpcHandlerFn,
200
199
  RpcInputOf,
201
200
  RpcMethodNameOf,
202
201
  RpcOutputOf,
203
202
  RpcRequestErrorOf,
204
- RpcResult,
205
203
  RuntimeStateStoresForContract,
206
204
  RuntimeStateStoreShape,
205
+ SessionCaller,
207
206
  StateFacade,
208
- TrellisFor,
209
207
  ValueStateStoreClient,
210
208
  } from "./trellis.js";
211
209
  export type { TrellisAuth } from "./trellis.js";