@qlever-llc/trellis 0.8.4 → 0.9.0-rc.3

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 (584) hide show
  1. package/README.md +1 -1
  2. package/esm/auth/browser/login.d.ts.map +1 -1
  3. package/esm/auth/browser/login.js +46 -3
  4. package/esm/auth/browser/portal.d.ts.map +1 -1
  5. package/esm/auth/browser/portal.js +5 -1
  6. package/esm/auth/browser/session.d.ts +18 -7
  7. package/esm/auth/browser/session.d.ts.map +1 -1
  8. package/esm/auth/browser/session.js +47 -11
  9. package/esm/auth/browser/storage.d.ts +6 -1
  10. package/esm/auth/browser/storage.d.ts.map +1 -1
  11. package/esm/auth/browser/storage.js +15 -3
  12. package/esm/auth/browser.d.ts +2 -2
  13. package/esm/auth/browser.d.ts.map +1 -1
  14. package/esm/auth/browser.js +1 -1
  15. package/esm/auth/device_activation.d.ts +36 -33
  16. package/esm/auth/device_activation.d.ts.map +1 -1
  17. package/esm/auth/device_activation.js +26 -22
  18. package/esm/auth/mod.d.ts +4 -4
  19. package/esm/auth/mod.d.ts.map +1 -1
  20. package/esm/auth/mod.js +2 -2
  21. package/esm/auth/proof.d.ts +3 -1
  22. package/esm/auth/proof.d.ts.map +1 -1
  23. package/esm/auth/proof.js +21 -15
  24. package/esm/auth/protocol.d.ts +2457 -941
  25. package/esm/auth/protocol.d.ts.map +1 -1
  26. package/esm/auth/protocol.js +747 -375
  27. package/esm/auth/schemas.d.ts +25 -4
  28. package/esm/auth/schemas.d.ts.map +1 -1
  29. package/esm/auth/schemas.js +14 -4
  30. package/esm/auth/session_auth.d.ts +1 -1
  31. package/esm/auth/session_auth.d.ts.map +1 -1
  32. package/esm/auth/session_auth.js +7 -1
  33. package/esm/client_connect.d.ts +2 -0
  34. package/esm/client_connect.d.ts.map +1 -1
  35. package/esm/client_connect.js +76 -15
  36. package/esm/contract.d.ts +3 -0
  37. package/esm/contract.d.ts.map +1 -1
  38. package/esm/contract_support/mod.d.ts +422 -43
  39. package/esm/contract_support/mod.d.ts.map +1 -1
  40. package/esm/contract_support/mod.js +734 -33
  41. package/esm/contract_support/protocol.d.ts +20 -5
  42. package/esm/contract_support/protocol.d.ts.map +1 -1
  43. package/esm/contract_support/protocol.js +18 -10
  44. package/esm/contract_support/runtime.d.ts +11 -0
  45. package/esm/contract_support/runtime.d.ts.map +1 -1
  46. package/esm/contract_support/schema_pointers.d.ts.map +1 -1
  47. package/esm/contract_support/schema_pointers.js +32 -14
  48. package/esm/device.d.ts +2 -0
  49. package/esm/device.d.ts.map +1 -1
  50. package/esm/device.js +3 -0
  51. package/esm/errors/AuthError.d.ts +1 -1
  52. package/esm/errors/AuthError.d.ts.map +1 -1
  53. package/esm/errors/AuthError.js +5 -1
  54. package/esm/errors/index.d.ts +4 -4
  55. package/esm/generated-sdk/auth/api.d.ts +27 -9
  56. package/esm/generated-sdk/auth/api.d.ts.map +1 -1
  57. package/esm/generated-sdk/auth/api.js +16 -590
  58. package/esm/generated-sdk/auth/client.d.ts +91 -85
  59. package/esm/generated-sdk/auth/client.d.ts.map +1 -1
  60. package/esm/generated-sdk/auth/contract.d.ts +1 -1
  61. package/esm/generated-sdk/auth/contract.d.ts.map +1 -1
  62. package/esm/generated-sdk/auth/contract.js +4 -2
  63. package/esm/generated-sdk/auth/mod.d.ts +1 -0
  64. package/esm/generated-sdk/auth/mod.d.ts.map +1 -1
  65. package/esm/generated-sdk/auth/owned_api.d.ts +3 -0
  66. package/esm/generated-sdk/auth/owned_api.d.ts.map +1 -0
  67. package/esm/generated-sdk/auth/owned_api.js +594 -0
  68. package/esm/generated-sdk/auth/schemas.d.ts +9959 -5160
  69. package/esm/generated-sdk/auth/schemas.d.ts.map +1 -1
  70. package/esm/generated-sdk/auth/schemas.js +136 -137
  71. package/esm/generated-sdk/auth/types.d.ts +2418 -1557
  72. package/esm/generated-sdk/auth/types.d.ts.map +1 -1
  73. package/esm/generated-sdk/auth/types.js +1 -1
  74. package/esm/generated-sdk/health/api.d.ts +24 -9
  75. package/esm/generated-sdk/health/api.d.ts.map +1 -1
  76. package/esm/generated-sdk/health/api.js +12 -20
  77. package/esm/generated-sdk/health/client.d.ts +2 -1
  78. package/esm/generated-sdk/health/client.d.ts.map +1 -1
  79. package/esm/generated-sdk/health/contract.d.ts.map +1 -1
  80. package/esm/generated-sdk/health/contract.js +2 -0
  81. package/esm/generated-sdk/health/owned_api.d.ts +3 -0
  82. package/esm/generated-sdk/health/owned_api.d.ts.map +1 -0
  83. package/esm/generated-sdk/health/owned_api.js +16 -0
  84. package/esm/generated-sdk/health/types.d.ts +2 -0
  85. package/esm/generated-sdk/health/types.d.ts.map +1 -1
  86. package/esm/generated-sdk/jobs/api.d.ts +33 -9
  87. package/esm/generated-sdk/jobs/api.d.ts.map +1 -1
  88. package/esm/generated-sdk/jobs/api.js +22 -87
  89. package/esm/generated-sdk/jobs/client.d.ts +9 -2
  90. package/esm/generated-sdk/jobs/client.d.ts.map +1 -1
  91. package/esm/generated-sdk/jobs/contract.d.ts +1 -1
  92. package/esm/generated-sdk/jobs/contract.d.ts.map +1 -1
  93. package/esm/generated-sdk/jobs/contract.js +4 -2
  94. package/esm/generated-sdk/jobs/owned_api.d.ts +3 -0
  95. package/esm/generated-sdk/jobs/owned_api.d.ts.map +1 -0
  96. package/esm/generated-sdk/jobs/owned_api.js +118 -0
  97. package/esm/generated-sdk/jobs/schemas.d.ts +336 -123
  98. package/esm/generated-sdk/jobs/schemas.d.ts.map +1 -1
  99. package/esm/generated-sdk/jobs/schemas.js +17 -15
  100. package/esm/generated-sdk/jobs/types.d.ts +144 -34
  101. package/esm/generated-sdk/jobs/types.d.ts.map +1 -1
  102. package/esm/generated-sdk/jobs/types.js +36 -1
  103. package/esm/generated-sdk/state/api.d.ts +27 -9
  104. package/esm/generated-sdk/state/api.d.ts.map +1 -1
  105. package/esm/generated-sdk/state/api.js +16 -71
  106. package/esm/generated-sdk/state/client.d.ts +4 -2
  107. package/esm/generated-sdk/state/client.d.ts.map +1 -1
  108. package/esm/generated-sdk/state/contract.d.ts +1 -1
  109. package/esm/generated-sdk/state/contract.d.ts.map +1 -1
  110. package/esm/generated-sdk/state/contract.js +4 -2
  111. package/esm/generated-sdk/state/owned_api.d.ts +3 -0
  112. package/esm/generated-sdk/state/owned_api.d.ts.map +1 -0
  113. package/esm/generated-sdk/state/owned_api.js +66 -0
  114. package/esm/generated-sdk/state/schemas.d.ts +264 -284
  115. package/esm/generated-sdk/state/schemas.d.ts.map +1 -1
  116. package/esm/generated-sdk/state/schemas.js +6 -6
  117. package/esm/generated-sdk/state/types.d.ts +24 -23
  118. package/esm/generated-sdk/state/types.d.ts.map +1 -1
  119. package/esm/generated-sdk/state/types.js +1 -1
  120. package/esm/generated-sdk/trellis-core/api.d.ts +27 -9
  121. package/esm/generated-sdk/trellis-core/api.d.ts.map +1 -1
  122. package/esm/generated-sdk/trellis-core/api.js +16 -39
  123. package/esm/generated-sdk/trellis-core/client.d.ts +5 -2
  124. package/esm/generated-sdk/trellis-core/client.d.ts.map +1 -1
  125. package/esm/generated-sdk/trellis-core/contract.d.ts +1 -1
  126. package/esm/generated-sdk/trellis-core/contract.d.ts.map +1 -1
  127. package/esm/generated-sdk/trellis-core/contract.js +4 -2
  128. package/esm/generated-sdk/trellis-core/owned_api.d.ts +3 -0
  129. package/esm/generated-sdk/trellis-core/owned_api.d.ts.map +1 -0
  130. package/esm/generated-sdk/trellis-core/owned_api.js +42 -0
  131. package/esm/generated-sdk/trellis-core/schemas.d.ts +259 -11
  132. package/esm/generated-sdk/trellis-core/schemas.d.ts.map +1 -1
  133. package/esm/generated-sdk/trellis-core/schemas.js +5 -3
  134. package/esm/generated-sdk/trellis-core/types.d.ts +56 -1
  135. package/esm/generated-sdk/trellis-core/types.d.ts.map +1 -1
  136. package/esm/generated-sdk/trellis-core/types.js +1 -1
  137. package/esm/helpers.d.ts.map +1 -1
  138. package/esm/index.d.ts +4 -3
  139. package/esm/index.d.ts.map +1 -1
  140. package/esm/index.js +1 -0
  141. package/esm/jobs.d.ts +10 -1
  142. package/esm/jobs.d.ts.map +1 -1
  143. package/esm/jobs.js +16 -1
  144. package/esm/kv.d.ts.map +1 -1
  145. package/esm/kv.js +10 -4
  146. package/esm/models/auth/rpc/Logout.d.ts +4 -4
  147. package/esm/models/auth/rpc/Logout.d.ts.map +1 -1
  148. package/esm/models/auth/rpc/Logout.js +2 -2
  149. package/esm/models/trellis/Page.d.ts +2 -0
  150. package/esm/models/trellis/Page.d.ts.map +1 -0
  151. package/esm/models/trellis/Page.js +1 -0
  152. package/esm/models/trellis/State.d.ts +1 -0
  153. package/esm/models/trellis/State.d.ts.map +1 -1
  154. package/esm/models/trellis/State.js +1 -0
  155. package/esm/models/trellis/rpc/StateList.d.ts +9 -12
  156. package/esm/models/trellis/rpc/StateList.d.ts.map +1 -1
  157. package/esm/models/trellis/rpc/StateList.js +16 -18
  158. package/esm/npm/src/auth/browser/login.d.ts.map +1 -1
  159. package/esm/npm/src/auth/browser/login.js +46 -3
  160. package/esm/npm/src/auth/browser/portal.d.ts.map +1 -1
  161. package/esm/npm/src/auth/browser/portal.js +5 -1
  162. package/esm/npm/src/auth/browser/session.d.ts +18 -7
  163. package/esm/npm/src/auth/browser/session.d.ts.map +1 -1
  164. package/esm/npm/src/auth/browser/session.js +47 -11
  165. package/esm/npm/src/auth/browser/storage.d.ts +6 -1
  166. package/esm/npm/src/auth/browser/storage.d.ts.map +1 -1
  167. package/esm/npm/src/auth/browser/storage.js +15 -3
  168. package/esm/npm/src/auth/browser.d.ts +2 -2
  169. package/esm/npm/src/auth/browser.d.ts.map +1 -1
  170. package/esm/npm/src/auth/browser.js +1 -1
  171. package/esm/npm/src/auth/device_activation.d.ts +36 -33
  172. package/esm/npm/src/auth/device_activation.d.ts.map +1 -1
  173. package/esm/npm/src/auth/device_activation.js +26 -22
  174. package/esm/npm/src/auth/mod.d.ts +4 -4
  175. package/esm/npm/src/auth/mod.d.ts.map +1 -1
  176. package/esm/npm/src/auth/mod.js +2 -2
  177. package/esm/npm/src/auth/proof.d.ts +3 -1
  178. package/esm/npm/src/auth/proof.d.ts.map +1 -1
  179. package/esm/npm/src/auth/proof.js +21 -15
  180. package/esm/npm/src/auth/protocol.d.ts +2457 -941
  181. package/esm/npm/src/auth/protocol.d.ts.map +1 -1
  182. package/esm/npm/src/auth/protocol.js +747 -375
  183. package/esm/npm/src/auth/schemas.d.ts +25 -4
  184. package/esm/npm/src/auth/schemas.d.ts.map +1 -1
  185. package/esm/npm/src/auth/schemas.js +14 -4
  186. package/esm/npm/src/auth/session_auth.d.ts +1 -1
  187. package/esm/npm/src/auth/session_auth.d.ts.map +1 -1
  188. package/esm/npm/src/auth/session_auth.js +7 -1
  189. package/esm/npm/src/client_connect.d.ts +2 -0
  190. package/esm/npm/src/client_connect.d.ts.map +1 -1
  191. package/esm/npm/src/client_connect.js +76 -15
  192. package/esm/npm/src/contract.d.ts +3 -0
  193. package/esm/npm/src/contract.d.ts.map +1 -1
  194. package/esm/npm/src/contract_support/mod.d.ts +422 -43
  195. package/esm/npm/src/contract_support/mod.d.ts.map +1 -1
  196. package/esm/npm/src/contract_support/mod.js +734 -33
  197. package/esm/npm/src/contract_support/protocol.d.ts +20 -5
  198. package/esm/npm/src/contract_support/protocol.d.ts.map +1 -1
  199. package/esm/npm/src/contract_support/protocol.js +18 -10
  200. package/esm/npm/src/contract_support/runtime.d.ts +11 -0
  201. package/esm/npm/src/contract_support/runtime.d.ts.map +1 -1
  202. package/esm/npm/src/contract_support/schema_pointers.d.ts.map +1 -1
  203. package/esm/npm/src/contract_support/schema_pointers.js +32 -14
  204. package/esm/npm/src/device/deno.d.ts.map +1 -1
  205. package/esm/npm/src/device/deno.js +6 -0
  206. package/esm/npm/src/device.d.ts +2 -0
  207. package/esm/npm/src/device.d.ts.map +1 -1
  208. package/esm/npm/src/device.js +3 -0
  209. package/esm/npm/src/errors/AuthError.d.ts +1 -1
  210. package/esm/npm/src/errors/AuthError.d.ts.map +1 -1
  211. package/esm/npm/src/errors/AuthError.js +5 -1
  212. package/esm/npm/src/errors/index.d.ts +4 -4
  213. package/esm/npm/src/generate.js +2 -19
  214. package/esm/npm/src/helpers.d.ts.map +1 -1
  215. package/esm/npm/src/index.d.ts +4 -3
  216. package/esm/npm/src/index.d.ts.map +1 -1
  217. package/esm/npm/src/index.js +1 -0
  218. package/esm/npm/src/jobs.d.ts +10 -1
  219. package/esm/npm/src/jobs.d.ts.map +1 -1
  220. package/esm/npm/src/jobs.js +16 -1
  221. package/esm/npm/src/kv.d.ts.map +1 -1
  222. package/esm/npm/src/kv.js +10 -4
  223. package/esm/npm/src/models/auth/rpc/Logout.d.ts +4 -4
  224. package/esm/npm/src/models/auth/rpc/Logout.d.ts.map +1 -1
  225. package/esm/npm/src/models/auth/rpc/Logout.js +2 -2
  226. package/esm/npm/src/models/trellis/Page.d.ts +2 -0
  227. package/esm/npm/src/models/trellis/Page.d.ts.map +1 -0
  228. package/esm/npm/src/models/trellis/Page.js +1 -0
  229. package/esm/npm/src/models/trellis/State.d.ts +1 -0
  230. package/esm/npm/src/models/trellis/State.d.ts.map +1 -1
  231. package/esm/npm/src/models/trellis/State.js +1 -0
  232. package/esm/npm/src/models/trellis/rpc/StateList.d.ts +9 -12
  233. package/esm/npm/src/models/trellis/rpc/StateList.d.ts.map +1 -1
  234. package/esm/npm/src/models/trellis/rpc/StateList.js +16 -18
  235. package/esm/npm/src/operations.d.ts +16 -7
  236. package/esm/npm/src/operations.d.ts.map +1 -1
  237. package/esm/npm/src/operations.js +84 -19
  238. package/esm/npm/src/runtime_transport.d.ts +2 -0
  239. package/esm/npm/src/runtime_transport.d.ts.map +1 -1
  240. package/esm/npm/src/runtime_transport.js +1 -0
  241. package/esm/npm/src/server/internal_jobs/active-job.d.ts +2 -1
  242. package/esm/npm/src/server/internal_jobs/active-job.d.ts.map +1 -1
  243. package/esm/npm/src/server/internal_jobs/active-job.js +3 -0
  244. package/esm/npm/src/server/internal_jobs/job-manager.d.ts +4 -1
  245. package/esm/npm/src/server/internal_jobs/job-manager.d.ts.map +1 -1
  246. package/esm/npm/src/server/internal_jobs/job-manager.js +61 -1
  247. package/esm/npm/src/server/internal_jobs/projection.js +1 -0
  248. package/esm/npm/src/server/internal_jobs/runtime-worker.d.ts +13 -1
  249. package/esm/npm/src/server/internal_jobs/runtime-worker.d.ts.map +1 -1
  250. package/esm/npm/src/server/internal_jobs/runtime-worker.js +73 -13
  251. package/esm/npm/src/server/internal_jobs/types.d.ts +19 -0
  252. package/esm/npm/src/server/internal_jobs/types.d.ts.map +1 -1
  253. package/esm/npm/src/server/internal_jobs/types.js +10 -0
  254. package/esm/npm/src/server/runtime.d.ts +1 -0
  255. package/esm/npm/src/server/runtime.d.ts.map +1 -1
  256. package/esm/npm/src/server/service.d.ts +10 -1
  257. package/esm/npm/src/server/service.d.ts.map +1 -1
  258. package/esm/npm/src/server/service.js +190 -64
  259. package/esm/npm/src/server/transfer.d.ts.map +1 -1
  260. package/esm/npm/src/server/transfer.js +4 -0
  261. package/esm/npm/src/server.d.ts.map +1 -1
  262. package/esm/npm/src/server.js +337 -34
  263. package/esm/npm/src/store.d.ts +8 -1
  264. package/esm/npm/src/store.d.ts.map +1 -1
  265. package/esm/npm/src/store.js +46 -8
  266. package/esm/npm/src/transfer.d.ts +3 -0
  267. package/esm/npm/src/transfer.d.ts.map +1 -1
  268. package/esm/npm/src/transfer.js +20 -30
  269. package/esm/npm/src/trellis.d.ts +85 -22
  270. package/esm/npm/src/trellis.d.ts.map +1 -1
  271. package/esm/npm/src/trellis.js +525 -61
  272. package/esm/operations.d.ts +16 -7
  273. package/esm/operations.d.ts.map +1 -1
  274. package/esm/operations.js +84 -19
  275. package/esm/runtime_transport.d.ts +2 -0
  276. package/esm/runtime_transport.d.ts.map +1 -1
  277. package/esm/runtime_transport.js +1 -0
  278. package/esm/store.d.ts +8 -1
  279. package/esm/store.d.ts.map +1 -1
  280. package/esm/store.js +46 -8
  281. package/esm/transfer.d.ts +3 -0
  282. package/esm/transfer.d.ts.map +1 -1
  283. package/esm/transfer.js +20 -30
  284. package/esm/trellis.d.ts +85 -22
  285. package/esm/trellis.d.ts.map +1 -1
  286. package/esm/trellis.js +525 -61
  287. package/package.json +6 -3
  288. package/script/auth/browser/login.d.ts.map +1 -1
  289. package/script/auth/browser/login.js +46 -3
  290. package/script/auth/browser/portal.d.ts.map +1 -1
  291. package/script/auth/browser/portal.js +5 -1
  292. package/script/auth/browser/session.d.ts +18 -7
  293. package/script/auth/browser/session.d.ts.map +1 -1
  294. package/script/auth/browser/session.js +47 -11
  295. package/script/auth/browser/storage.d.ts +6 -1
  296. package/script/auth/browser/storage.d.ts.map +1 -1
  297. package/script/auth/browser/storage.js +15 -3
  298. package/script/auth/browser.d.ts +2 -2
  299. package/script/auth/browser.d.ts.map +1 -1
  300. package/script/auth/browser.js +2 -1
  301. package/script/auth/device_activation.d.ts +36 -33
  302. package/script/auth/device_activation.d.ts.map +1 -1
  303. package/script/auth/device_activation.js +25 -21
  304. package/script/auth/mod.d.ts +4 -4
  305. package/script/auth/mod.d.ts.map +1 -1
  306. package/script/auth/mod.js +132 -137
  307. package/script/auth/proof.d.ts +3 -1
  308. package/script/auth/proof.d.ts.map +1 -1
  309. package/script/auth/proof.js +21 -15
  310. package/script/auth/protocol.d.ts +2457 -941
  311. package/script/auth/protocol.d.ts.map +1 -1
  312. package/script/auth/protocol.js +749 -377
  313. package/script/auth/schemas.d.ts +25 -4
  314. package/script/auth/schemas.d.ts.map +1 -1
  315. package/script/auth/schemas.js +16 -5
  316. package/script/auth/session_auth.d.ts +1 -1
  317. package/script/auth/session_auth.d.ts.map +1 -1
  318. package/script/auth/session_auth.js +7 -1
  319. package/script/client_connect.d.ts +2 -0
  320. package/script/client_connect.d.ts.map +1 -1
  321. package/script/client_connect.js +76 -15
  322. package/script/contract.d.ts +3 -0
  323. package/script/contract.d.ts.map +1 -1
  324. package/script/contract_support/mod.d.ts +422 -43
  325. package/script/contract_support/mod.d.ts.map +1 -1
  326. package/script/contract_support/mod.js +757 -51
  327. package/script/contract_support/protocol.d.ts +20 -5
  328. package/script/contract_support/protocol.d.ts.map +1 -1
  329. package/script/contract_support/protocol.js +20 -11
  330. package/script/contract_support/runtime.d.ts +11 -0
  331. package/script/contract_support/runtime.d.ts.map +1 -1
  332. package/script/contract_support/schema_pointers.d.ts.map +1 -1
  333. package/script/contract_support/schema_pointers.js +32 -14
  334. package/script/device.d.ts +2 -0
  335. package/script/device.d.ts.map +1 -1
  336. package/script/device.js +3 -0
  337. package/script/errors/AuthError.d.ts +1 -1
  338. package/script/errors/AuthError.d.ts.map +1 -1
  339. package/script/errors/AuthError.js +5 -1
  340. package/script/errors/index.d.ts +4 -4
  341. package/script/generated-sdk/auth/api.d.ts +27 -9
  342. package/script/generated-sdk/auth/api.d.ts.map +1 -1
  343. package/script/generated-sdk/auth/api.js +17 -591
  344. package/script/generated-sdk/auth/client.d.ts +91 -85
  345. package/script/generated-sdk/auth/client.d.ts.map +1 -1
  346. package/script/generated-sdk/auth/contract.d.ts +1 -1
  347. package/script/generated-sdk/auth/contract.d.ts.map +1 -1
  348. package/script/generated-sdk/auth/contract.js +4 -2
  349. package/script/generated-sdk/auth/mod.d.ts +1 -0
  350. package/script/generated-sdk/auth/mod.d.ts.map +1 -1
  351. package/script/generated-sdk/auth/owned_api.d.ts +3 -0
  352. package/script/generated-sdk/auth/owned_api.d.ts.map +1 -0
  353. package/script/generated-sdk/auth/owned_api.js +597 -0
  354. package/script/generated-sdk/auth/schemas.d.ts +9959 -5160
  355. package/script/generated-sdk/auth/schemas.d.ts.map +1 -1
  356. package/script/generated-sdk/auth/schemas.js +139 -140
  357. package/script/generated-sdk/auth/types.d.ts +2418 -1557
  358. package/script/generated-sdk/auth/types.d.ts.map +1 -1
  359. package/script/generated-sdk/auth/types.js +1 -1
  360. package/script/generated-sdk/health/api.d.ts +24 -9
  361. package/script/generated-sdk/health/api.d.ts.map +1 -1
  362. package/script/generated-sdk/health/api.js +13 -21
  363. package/script/generated-sdk/health/client.d.ts +2 -1
  364. package/script/generated-sdk/health/client.d.ts.map +1 -1
  365. package/script/generated-sdk/health/contract.d.ts.map +1 -1
  366. package/script/generated-sdk/health/contract.js +2 -0
  367. package/script/generated-sdk/health/owned_api.d.ts +3 -0
  368. package/script/generated-sdk/health/owned_api.d.ts.map +1 -0
  369. package/script/generated-sdk/health/owned_api.js +19 -0
  370. package/script/generated-sdk/health/types.d.ts +2 -0
  371. package/script/generated-sdk/health/types.d.ts.map +1 -1
  372. package/script/generated-sdk/jobs/api.d.ts +33 -9
  373. package/script/generated-sdk/jobs/api.d.ts.map +1 -1
  374. package/script/generated-sdk/jobs/api.js +23 -88
  375. package/script/generated-sdk/jobs/client.d.ts +9 -2
  376. package/script/generated-sdk/jobs/client.d.ts.map +1 -1
  377. package/script/generated-sdk/jobs/contract.d.ts +1 -1
  378. package/script/generated-sdk/jobs/contract.d.ts.map +1 -1
  379. package/script/generated-sdk/jobs/contract.js +4 -2
  380. package/script/generated-sdk/jobs/owned_api.d.ts +3 -0
  381. package/script/generated-sdk/jobs/owned_api.d.ts.map +1 -0
  382. package/script/generated-sdk/jobs/owned_api.js +154 -0
  383. package/script/generated-sdk/jobs/schemas.d.ts +336 -123
  384. package/script/generated-sdk/jobs/schemas.d.ts.map +1 -1
  385. package/script/generated-sdk/jobs/schemas.js +18 -16
  386. package/script/generated-sdk/jobs/types.d.ts +144 -34
  387. package/script/generated-sdk/jobs/types.d.ts.map +1 -1
  388. package/script/generated-sdk/jobs/types.js +38 -2
  389. package/script/generated-sdk/state/api.d.ts +27 -9
  390. package/script/generated-sdk/state/api.d.ts.map +1 -1
  391. package/script/generated-sdk/state/api.js +17 -72
  392. package/script/generated-sdk/state/client.d.ts +4 -2
  393. package/script/generated-sdk/state/client.d.ts.map +1 -1
  394. package/script/generated-sdk/state/contract.d.ts +1 -1
  395. package/script/generated-sdk/state/contract.d.ts.map +1 -1
  396. package/script/generated-sdk/state/contract.js +4 -2
  397. package/script/generated-sdk/state/owned_api.d.ts +3 -0
  398. package/script/generated-sdk/state/owned_api.d.ts.map +1 -0
  399. package/script/generated-sdk/state/owned_api.js +69 -0
  400. package/script/generated-sdk/state/schemas.d.ts +264 -284
  401. package/script/generated-sdk/state/schemas.d.ts.map +1 -1
  402. package/script/generated-sdk/state/schemas.js +6 -6
  403. package/script/generated-sdk/state/types.d.ts +24 -23
  404. package/script/generated-sdk/state/types.d.ts.map +1 -1
  405. package/script/generated-sdk/state/types.js +1 -1
  406. package/script/generated-sdk/trellis-core/api.d.ts +27 -9
  407. package/script/generated-sdk/trellis-core/api.d.ts.map +1 -1
  408. package/script/generated-sdk/trellis-core/api.js +17 -40
  409. package/script/generated-sdk/trellis-core/client.d.ts +5 -2
  410. package/script/generated-sdk/trellis-core/client.d.ts.map +1 -1
  411. package/script/generated-sdk/trellis-core/contract.d.ts +1 -1
  412. package/script/generated-sdk/trellis-core/contract.d.ts.map +1 -1
  413. package/script/generated-sdk/trellis-core/contract.js +4 -2
  414. package/script/generated-sdk/trellis-core/owned_api.d.ts +3 -0
  415. package/script/generated-sdk/trellis-core/owned_api.d.ts.map +1 -0
  416. package/script/generated-sdk/trellis-core/owned_api.js +45 -0
  417. package/script/generated-sdk/trellis-core/schemas.d.ts +259 -11
  418. package/script/generated-sdk/trellis-core/schemas.d.ts.map +1 -1
  419. package/script/generated-sdk/trellis-core/schemas.js +6 -4
  420. package/script/generated-sdk/trellis-core/types.d.ts +56 -1
  421. package/script/generated-sdk/trellis-core/types.d.ts.map +1 -1
  422. package/script/generated-sdk/trellis-core/types.js +1 -1
  423. package/script/helpers.d.ts.map +1 -1
  424. package/script/index.d.ts +4 -3
  425. package/script/index.d.ts.map +1 -1
  426. package/script/index.js +5 -2
  427. package/script/jobs.d.ts +10 -1
  428. package/script/jobs.d.ts.map +1 -1
  429. package/script/jobs.js +17 -2
  430. package/script/kv.d.ts.map +1 -1
  431. package/script/kv.js +10 -4
  432. package/script/models/auth/rpc/Logout.d.ts +4 -4
  433. package/script/models/auth/rpc/Logout.d.ts.map +1 -1
  434. package/script/models/auth/rpc/Logout.js +3 -3
  435. package/script/models/trellis/Page.d.ts +2 -0
  436. package/script/models/trellis/Page.d.ts.map +1 -0
  437. package/script/models/trellis/Page.js +6 -0
  438. package/script/models/trellis/State.d.ts +1 -0
  439. package/script/models/trellis/State.d.ts.map +1 -1
  440. package/script/models/trellis/State.js +1 -0
  441. package/script/models/trellis/rpc/StateList.d.ts +9 -12
  442. package/script/models/trellis/rpc/StateList.d.ts.map +1 -1
  443. package/script/models/trellis/rpc/StateList.js +16 -18
  444. package/script/npm/src/auth/browser/login.d.ts.map +1 -1
  445. package/script/npm/src/auth/browser/login.js +46 -3
  446. package/script/npm/src/auth/browser/portal.d.ts.map +1 -1
  447. package/script/npm/src/auth/browser/portal.js +5 -1
  448. package/script/npm/src/auth/browser/session.d.ts +18 -7
  449. package/script/npm/src/auth/browser/session.d.ts.map +1 -1
  450. package/script/npm/src/auth/browser/session.js +47 -11
  451. package/script/npm/src/auth/browser/storage.d.ts +6 -1
  452. package/script/npm/src/auth/browser/storage.d.ts.map +1 -1
  453. package/script/npm/src/auth/browser/storage.js +15 -3
  454. package/script/npm/src/auth/browser.d.ts +2 -2
  455. package/script/npm/src/auth/browser.d.ts.map +1 -1
  456. package/script/npm/src/auth/browser.js +2 -1
  457. package/script/npm/src/auth/device_activation.d.ts +36 -33
  458. package/script/npm/src/auth/device_activation.d.ts.map +1 -1
  459. package/script/npm/src/auth/device_activation.js +25 -21
  460. package/script/npm/src/auth/mod.d.ts +4 -4
  461. package/script/npm/src/auth/mod.d.ts.map +1 -1
  462. package/script/npm/src/auth/mod.js +132 -137
  463. package/script/npm/src/auth/proof.d.ts +3 -1
  464. package/script/npm/src/auth/proof.d.ts.map +1 -1
  465. package/script/npm/src/auth/proof.js +21 -15
  466. package/script/npm/src/auth/protocol.d.ts +2457 -941
  467. package/script/npm/src/auth/protocol.d.ts.map +1 -1
  468. package/script/npm/src/auth/protocol.js +749 -377
  469. package/script/npm/src/auth/schemas.d.ts +25 -4
  470. package/script/npm/src/auth/schemas.d.ts.map +1 -1
  471. package/script/npm/src/auth/schemas.js +16 -5
  472. package/script/npm/src/auth/session_auth.d.ts +1 -1
  473. package/script/npm/src/auth/session_auth.d.ts.map +1 -1
  474. package/script/npm/src/auth/session_auth.js +7 -1
  475. package/script/npm/src/client_connect.d.ts +2 -0
  476. package/script/npm/src/client_connect.d.ts.map +1 -1
  477. package/script/npm/src/client_connect.js +76 -15
  478. package/script/npm/src/contract.d.ts +3 -0
  479. package/script/npm/src/contract.d.ts.map +1 -1
  480. package/script/npm/src/contract_support/mod.d.ts +422 -43
  481. package/script/npm/src/contract_support/mod.d.ts.map +1 -1
  482. package/script/npm/src/contract_support/mod.js +757 -51
  483. package/script/npm/src/contract_support/protocol.d.ts +20 -5
  484. package/script/npm/src/contract_support/protocol.d.ts.map +1 -1
  485. package/script/npm/src/contract_support/protocol.js +20 -11
  486. package/script/npm/src/contract_support/runtime.d.ts +11 -0
  487. package/script/npm/src/contract_support/runtime.d.ts.map +1 -1
  488. package/script/npm/src/contract_support/schema_pointers.d.ts.map +1 -1
  489. package/script/npm/src/contract_support/schema_pointers.js +32 -14
  490. package/script/npm/src/device/deno.d.ts.map +1 -1
  491. package/script/npm/src/device/deno.js +6 -0
  492. package/script/npm/src/device.d.ts +2 -0
  493. package/script/npm/src/device.d.ts.map +1 -1
  494. package/script/npm/src/device.js +3 -0
  495. package/script/npm/src/errors/AuthError.d.ts +1 -1
  496. package/script/npm/src/errors/AuthError.d.ts.map +1 -1
  497. package/script/npm/src/errors/AuthError.js +5 -1
  498. package/script/npm/src/errors/index.d.ts +4 -4
  499. package/script/npm/src/generate.js +2 -19
  500. package/script/npm/src/helpers.d.ts.map +1 -1
  501. package/script/npm/src/index.d.ts +4 -3
  502. package/script/npm/src/index.d.ts.map +1 -1
  503. package/script/npm/src/index.js +5 -2
  504. package/script/npm/src/jobs.d.ts +10 -1
  505. package/script/npm/src/jobs.d.ts.map +1 -1
  506. package/script/npm/src/jobs.js +17 -2
  507. package/script/npm/src/kv.d.ts.map +1 -1
  508. package/script/npm/src/kv.js +10 -4
  509. package/script/npm/src/models/auth/rpc/Logout.d.ts +4 -4
  510. package/script/npm/src/models/auth/rpc/Logout.d.ts.map +1 -1
  511. package/script/npm/src/models/auth/rpc/Logout.js +3 -3
  512. package/script/npm/src/models/trellis/Page.d.ts +2 -0
  513. package/script/npm/src/models/trellis/Page.d.ts.map +1 -0
  514. package/script/npm/src/models/trellis/Page.js +6 -0
  515. package/script/npm/src/models/trellis/State.d.ts +1 -0
  516. package/script/npm/src/models/trellis/State.d.ts.map +1 -1
  517. package/script/npm/src/models/trellis/State.js +1 -0
  518. package/script/npm/src/models/trellis/rpc/StateList.d.ts +9 -12
  519. package/script/npm/src/models/trellis/rpc/StateList.d.ts.map +1 -1
  520. package/script/npm/src/models/trellis/rpc/StateList.js +16 -18
  521. package/script/npm/src/operations.d.ts +16 -7
  522. package/script/npm/src/operations.d.ts.map +1 -1
  523. package/script/npm/src/operations.js +84 -19
  524. package/script/npm/src/runtime_transport.d.ts +2 -0
  525. package/script/npm/src/runtime_transport.d.ts.map +1 -1
  526. package/script/npm/src/runtime_transport.js +2 -1
  527. package/script/npm/src/server/internal_jobs/active-job.d.ts +2 -1
  528. package/script/npm/src/server/internal_jobs/active-job.d.ts.map +1 -1
  529. package/script/npm/src/server/internal_jobs/active-job.js +3 -0
  530. package/script/npm/src/server/internal_jobs/job-manager.d.ts +4 -1
  531. package/script/npm/src/server/internal_jobs/job-manager.d.ts.map +1 -1
  532. package/script/npm/src/server/internal_jobs/job-manager.js +61 -1
  533. package/script/npm/src/server/internal_jobs/projection.js +1 -0
  534. package/script/npm/src/server/internal_jobs/runtime-worker.d.ts +13 -1
  535. package/script/npm/src/server/internal_jobs/runtime-worker.d.ts.map +1 -1
  536. package/script/npm/src/server/internal_jobs/runtime-worker.js +74 -13
  537. package/script/npm/src/server/internal_jobs/types.d.ts +19 -0
  538. package/script/npm/src/server/internal_jobs/types.d.ts.map +1 -1
  539. package/script/npm/src/server/internal_jobs/types.js +11 -1
  540. package/script/npm/src/server/runtime.d.ts +1 -0
  541. package/script/npm/src/server/runtime.d.ts.map +1 -1
  542. package/script/npm/src/server/service.d.ts +10 -1
  543. package/script/npm/src/server/service.d.ts.map +1 -1
  544. package/script/npm/src/server/service.js +188 -62
  545. package/script/npm/src/server/transfer.d.ts.map +1 -1
  546. package/script/npm/src/server/transfer.js +4 -0
  547. package/script/npm/src/server.d.ts.map +1 -1
  548. package/script/npm/src/server.js +336 -33
  549. package/script/npm/src/store.d.ts +8 -1
  550. package/script/npm/src/store.d.ts.map +1 -1
  551. package/script/npm/src/store.js +46 -8
  552. package/script/npm/src/transfer.d.ts +3 -0
  553. package/script/npm/src/transfer.d.ts.map +1 -1
  554. package/script/npm/src/transfer.js +19 -29
  555. package/script/npm/src/trellis.d.ts +85 -22
  556. package/script/npm/src/trellis.d.ts.map +1 -1
  557. package/script/npm/src/trellis.js +525 -61
  558. package/script/operations.d.ts +16 -7
  559. package/script/operations.d.ts.map +1 -1
  560. package/script/operations.js +84 -19
  561. package/script/runtime_transport.d.ts +2 -0
  562. package/script/runtime_transport.d.ts.map +1 -1
  563. package/script/runtime_transport.js +2 -1
  564. package/script/store.d.ts +8 -1
  565. package/script/store.d.ts.map +1 -1
  566. package/script/store.js +46 -8
  567. package/script/transfer.d.ts +3 -0
  568. package/script/transfer.d.ts.map +1 -1
  569. package/script/transfer.js +19 -29
  570. package/script/trellis.d.ts +85 -22
  571. package/script/trellis.d.ts.map +1 -1
  572. package/script/trellis.js +525 -61
  573. package/esm/models/trellis/Paginate.d.ts +0 -7
  574. package/esm/models/trellis/Paginate.d.ts.map +0 -1
  575. package/esm/models/trellis/Paginate.js +0 -5
  576. package/esm/npm/src/models/trellis/Paginate.d.ts +0 -7
  577. package/esm/npm/src/models/trellis/Paginate.d.ts.map +0 -1
  578. package/esm/npm/src/models/trellis/Paginate.js +0 -5
  579. package/script/models/trellis/Paginate.d.ts +0 -7
  580. package/script/models/trellis/Paginate.d.ts.map +0 -1
  581. package/script/models/trellis/Paginate.js +0 -11
  582. package/script/npm/src/models/trellis/Paginate.d.ts +0 -7
  583. package/script/npm/src/models/trellis/Paginate.d.ts.map +0 -1
  584. package/script/npm/src/models/trellis/Paginate.js +0 -11
@@ -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 _TrellisServiceRuntime_instances, _TrellisServiceRuntime_version, _TrellisServiceRuntime_log, _TrellisServiceRuntime_operations, _TrellisServiceRuntime_mountedOperationControls, _TrellisServiceRuntime_stopPromise, _TrellisServiceRuntime_transferSupport, _TrellisServiceRuntime_resolveOperation, _TrellisServiceRuntime_applyOperationUpdate, _TrellisServiceRuntime_makeAcceptedOperation, _TrellisServiceRuntime_acceptOperation, _TrellisServiceRuntime_authenticateOperationMessage, _TrellisServiceRuntime_ensureOperationControlLoop;
13
+ var _TrellisServiceRuntime_instances, _TrellisServiceRuntime_version, _TrellisServiceRuntime_log, _TrellisServiceRuntime_operations, _TrellisServiceRuntime_mountedOperationControls, _TrellisServiceRuntime_stopPromise, _TrellisServiceRuntime_transferSupport, _TrellisServiceRuntime_signals, _TrellisServiceRuntime_nextSignal, _TrellisServiceRuntime_nextSignalAfter, _TrellisServiceRuntime_resolveOperation, _TrellisServiceRuntime_applyOperationUpdate, _TrellisServiceRuntime_validateOperationValue, _TrellisServiceRuntime_applyControlledOperationUpdate, _TrellisServiceRuntime_controlOperation, _TrellisServiceRuntime_makeControlledOperation, _TrellisServiceRuntime_makeAcceptedOperation, _TrellisServiceRuntime_controlAuthContext, _TrellisServiceRuntime_terminalSignalError, _TrellisServiceRuntime_unsupportedCancelError, _TrellisServiceRuntime_rejectSignalWaiters, _TrellisServiceRuntime_acceptSignal, _TrellisServiceRuntime_acceptOperation, _TrellisServiceRuntime_authenticateOperationMessage, _TrellisServiceRuntime_ensureOperationControlLoop;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.TrellisServiceRuntime = void 0;
16
16
  const value_1 = require("typebox/value");
@@ -20,6 +20,19 @@ const codec_js_1 = require("./codec.js");
20
20
  const index_js_1 = require("./errors/index.js");
21
21
  const server_logger_js_1 = require("./server_logger.js");
22
22
  const trellis_js_1 = require("./trellis.js");
23
+ function isJsonValue(value) {
24
+ if (value === null || typeof value === "string" || typeof value === "number" ||
25
+ typeof value === "boolean") {
26
+ return true;
27
+ }
28
+ if (Array.isArray(value))
29
+ return value.every(isJsonValue);
30
+ if (typeof value !== "object")
31
+ return false;
32
+ if (Object.getPrototypeOf(value) !== Object.prototype)
33
+ return false;
34
+ return Object.values(value).every(isJsonValue);
35
+ }
23
36
  function asStringPointerValue(operation, input, pointer, field) {
24
37
  const value = value_1.Pointer.Get(input, pointer);
25
38
  if (typeof value !== "string" || value.length === 0) {
@@ -116,6 +129,8 @@ class TrellisServiceRuntime extends trellis_js_1.Trellis {
116
129
  cancel: (operationId) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_applyOperationUpdate).call(this, operationId, "cancelled", {
117
130
  event: { type: "cancelled" },
118
131
  }),
132
+ signals: (operationId) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_signals).call(this, operationId),
133
+ nextSignal: (operationId, name) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_nextSignal).call(this, operationId, name),
119
134
  };
120
135
  }
121
136
  mountRuntime(method, fn) {
@@ -131,6 +146,10 @@ class TrellisServiceRuntime extends trellis_js_1.Trellis {
131
146
  throw new Error(`Unknown operation '${operation.toString()}'. Did you forget to include its API module?`);
132
147
  }
133
148
  return {
149
+ control: (operationId) => {
150
+ __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_ensureOperationControlLoop).call(this, String(operation), ctx);
151
+ return __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_controlOperation).call(this, String(operation), ctx, operationId);
152
+ },
134
153
  accept: ({ sessionKey }) => {
135
154
  __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_ensureOperationControlLoop).call(this, String(operation), ctx);
136
155
  if (ctx.transfer) {
@@ -138,7 +157,7 @@ class TrellisServiceRuntime extends trellis_js_1.Trellis {
138
157
  cause: new Error(`Operation '${String(operation)}' uses transfer-capable start semantics and cannot be accepted manually`),
139
158
  }));
140
159
  }
141
- return result_1.AsyncResult.from(__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_acceptOperation).call(this, String(operation), sessionKey));
160
+ return result_1.AsyncResult.from(__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_acceptOperation).call(this, String(operation), ctx, sessionKey));
142
161
  },
143
162
  handle: async (handler) => {
144
163
  const startSubject = ctx.subject;
@@ -222,6 +241,7 @@ class TrellisServiceRuntime extends trellis_js_1.Trellis {
222
241
  snapshot,
223
242
  });
224
243
  await flushWaiters(runtime);
244
+ __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_rejectSignalWaiters).call(this, runtime);
225
245
  return (0, result_1.ok)(snapshot);
226
246
  })()),
227
247
  fail: (error) => result_1.AsyncResult.from((async () => {
@@ -241,6 +261,7 @@ class TrellisServiceRuntime extends trellis_js_1.Trellis {
241
261
  snapshot,
242
262
  });
243
263
  await flushWaiters(runtime);
264
+ __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_rejectSignalWaiters).call(this, runtime);
244
265
  return (0, result_1.ok)(snapshot);
245
266
  })()),
246
267
  cancel: () => result_1.AsyncResult.from((async () => {
@@ -259,6 +280,7 @@ class TrellisServiceRuntime extends trellis_js_1.Trellis {
259
280
  snapshot,
260
281
  });
261
282
  await flushWaiters(runtime);
283
+ __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_rejectSignalWaiters).call(this, runtime);
262
284
  return (0, result_1.ok)(snapshot);
263
285
  })()),
264
286
  attach: (job) => result_1.AsyncResult.from((async () => {
@@ -275,6 +297,8 @@ class TrellisServiceRuntime extends trellis_js_1.Trellis {
275
297
  }
276
298
  return (0, result_1.ok)(finalRuntime.snapshot);
277
299
  })()),
300
+ signals: () => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_signals).call(this, runtime.id),
301
+ nextSignal: (name) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_nextSignal).call(this, runtime.id, name),
278
302
  defer: () => ({ kind: "deferred" }),
279
303
  };
280
304
  };
@@ -295,14 +319,20 @@ class TrellisServiceRuntime extends trellis_js_1.Trellis {
295
319
  }
296
320
  const sessionKey = msg.headers?.get("session-key");
297
321
  const proof = msg.headers?.get("proof");
322
+ const iatHeader = msg.headers?.get("iat");
323
+ const requestId = msg.headers?.get("request-id");
298
324
  if (!sessionKey) {
299
325
  return (0, result_1.err)(new index_js_1.AuthError({ reason: "missing_session_key" }));
300
326
  }
301
327
  if (!proof)
302
328
  return (0, result_1.err)(new index_js_1.AuthError({ reason: "missing_proof" }));
329
+ const iat = Number(iatHeader);
330
+ if (!Number.isSafeInteger(iat) || !requestId) {
331
+ return (0, result_1.err)(new index_js_1.AuthError({ reason: "invalid_signature" }));
332
+ }
303
333
  const payloadBytes = msg.data ?? new Uint8Array();
304
334
  const payloadHash = await (0, trellis_js_1.sha256)(payloadBytes);
305
- const proofInput = (0, trellis_js_1.buildProofInput)(sessionKey, msg.subject, payloadHash);
335
+ const proofInput = (0, trellis_js_1.buildProofInput)(sessionKey, msg.subject, payloadHash, iat, requestId);
306
336
  const digest = await (0, trellis_js_1.sha256)(proofInput);
307
337
  const verifyResult = await result_1.AsyncResult.try(async () => {
308
338
  const publicKeyRaw = (0, trellis_js_1.base64urlDecode)(sessionKey);
@@ -322,6 +352,8 @@ class TrellisServiceRuntime extends trellis_js_1.Trellis {
322
352
  proof,
323
353
  subject: msg.subject,
324
354
  payloadHash: (0, trellis_js_1.base64urlEncode)(payloadHash),
355
+ iat,
356
+ requestId,
325
357
  capabilities: ctx.callerCapabilities
326
358
  ? [...ctx.callerCapabilities]
327
359
  : undefined,
@@ -423,9 +455,12 @@ class TrellisServiceRuntime extends trellis_js_1.Trellis {
423
455
  updatedAt: createdAt,
424
456
  },
425
457
  sequence: 0,
458
+ signalSequence: 0,
459
+ signals: [],
426
460
  terminal: false,
427
461
  watchers: new Set(),
428
462
  waiters: new Set(),
463
+ signalWaiters: new Set(),
429
464
  };
430
465
  __classPrivateFieldGet(this, _TrellisServiceRuntime_operations, "f").set(operationId, runtime);
431
466
  await this.saveOperationRecord(runtime);
@@ -520,7 +555,57 @@ class TrellisServiceRuntime extends trellis_js_1.Trellis {
520
555
  }
521
556
  }
522
557
  exports.TrellisServiceRuntime = TrellisServiceRuntime;
523
- _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new WeakMap(), _TrellisServiceRuntime_operations = new WeakMap(), _TrellisServiceRuntime_mountedOperationControls = new WeakMap(), _TrellisServiceRuntime_stopPromise = new WeakMap(), _TrellisServiceRuntime_transferSupport = new WeakMap(), _TrellisServiceRuntime_instances = new WeakSet(), _TrellisServiceRuntime_resolveOperation = async function _TrellisServiceRuntime_resolveOperation(operationId) {
558
+ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new WeakMap(), _TrellisServiceRuntime_operations = new WeakMap(), _TrellisServiceRuntime_mountedOperationControls = new WeakMap(), _TrellisServiceRuntime_stopPromise = new WeakMap(), _TrellisServiceRuntime_transferSupport = new WeakMap(), _TrellisServiceRuntime_instances = new WeakSet(), _TrellisServiceRuntime_signals = async function* _TrellisServiceRuntime_signals(operationId) {
559
+ let cursor = 0;
560
+ while (true) {
561
+ const next = await __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_nextSignalAfter).call(this, operationId, cursor).take();
562
+ if ((0, result_1.isErr)(next)) {
563
+ throw next.error;
564
+ }
565
+ cursor = next.sequence;
566
+ yield next;
567
+ }
568
+ }, _TrellisServiceRuntime_nextSignal = function _TrellisServiceRuntime_nextSignal(operationId, name) {
569
+ return result_1.AsyncResult.from((async () => {
570
+ let cursor = 0;
571
+ while (true) {
572
+ const next = await __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_nextSignalAfter).call(this, operationId, cursor).take();
573
+ if ((0, result_1.isErr)(next))
574
+ return next;
575
+ cursor = next.sequence;
576
+ if (!name || next.signal === name)
577
+ return (0, result_1.ok)(next);
578
+ }
579
+ })());
580
+ }, _TrellisServiceRuntime_nextSignalAfter = function _TrellisServiceRuntime_nextSignalAfter(operationId, afterSequence) {
581
+ return result_1.AsyncResult.from((async () => {
582
+ const runtime = await __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_resolveOperation).call(this, operationId);
583
+ if (!runtime) {
584
+ return (0, result_1.err)(new index_js_1.UnexpectedError({
585
+ cause: new Error(`Unknown operation '${operationId}'`),
586
+ }));
587
+ }
588
+ const queued = runtime.signals.find((signal) => signal.sequence > afterSequence);
589
+ if (queued)
590
+ return (0, result_1.ok)(queued);
591
+ if (runtime.terminal) {
592
+ return (0, result_1.err)(new index_js_1.UnexpectedError({
593
+ cause: new Error("operation already terminal"),
594
+ }));
595
+ }
596
+ return await new Promise((resolve) => {
597
+ const waiter = (result) => {
598
+ const value = result.take();
599
+ if (!(0, result_1.isErr)(value) && value.sequence <= afterSequence) {
600
+ return;
601
+ }
602
+ runtime.signalWaiters.delete(waiter);
603
+ resolve(result);
604
+ };
605
+ runtime.signalWaiters.add(waiter);
606
+ });
607
+ })());
608
+ }, _TrellisServiceRuntime_resolveOperation = async function _TrellisServiceRuntime_resolveOperation(operationId) {
524
609
  const existing = __classPrivateFieldGet(this, _TrellisServiceRuntime_operations, "f").get(operationId);
525
610
  if (existing)
526
611
  return existing;
@@ -537,8 +622,11 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
537
622
  terminal: durable.snapshot.state === "completed" ||
538
623
  durable.snapshot.state === "failed" ||
539
624
  durable.snapshot.state === "cancelled",
625
+ signalSequence: durable.signalSequence ?? 0,
626
+ signals: durable.signals ?? [],
540
627
  watchers: new Set(),
541
628
  waiters: new Set(),
629
+ signalWaiters: new Set(),
542
630
  };
543
631
  __classPrivateFieldGet(this, _TrellisServiceRuntime_operations, "f").set(operationId, runtime);
544
632
  return runtime;
@@ -550,7 +638,7 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
550
638
  cause: new Error(`Unknown operation '${operationId}'`),
551
639
  }));
552
640
  }
553
- if (runtime.terminal && state !== "cancelled") {
641
+ if (runtime.terminal) {
554
642
  return (0, result_1.err)(new index_js_1.UnexpectedError({
555
643
  cause: new Error("operation already terminal"),
556
644
  }));
@@ -577,10 +665,110 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
577
665
  await this.nats.publish(reply, JSON.stringify(terminalFrame));
578
666
  }
579
667
  runtime.waiters.clear();
668
+ __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_rejectSignalWaiters).call(this, runtime);
580
669
  }
581
670
  return (0, result_1.ok)(runtime.snapshot);
582
671
  })());
583
- }, _TrellisServiceRuntime_makeAcceptedOperation = function _TrellisServiceRuntime_makeAcceptedOperation(runtime) {
672
+ }, _TrellisServiceRuntime_validateOperationValue = function _TrellisServiceRuntime_validateOperationValue(ctx, kind, value) {
673
+ const schema = kind === "progress" ? ctx.progress : ctx.output;
674
+ if (schema === undefined)
675
+ return (0, result_1.ok)(value);
676
+ if (!isJsonValue(value)) {
677
+ return (0, result_1.err)(new index_js_1.ValidationError({
678
+ errors: [{
679
+ path: "/",
680
+ message: `Operation ${kind} must be JSON-serializable`,
681
+ }],
682
+ context: { kind },
683
+ }));
684
+ }
685
+ const parsed = (0, codec_js_1.parseSchema)(schema, value).take();
686
+ if ((0, result_1.isErr)(parsed))
687
+ return (0, result_1.err)(parsed.error);
688
+ return (0, result_1.ok)(parsed);
689
+ }, _TrellisServiceRuntime_applyControlledOperationUpdate = function _TrellisServiceRuntime_applyControlledOperationUpdate(runtime, ctx, state, opts) {
690
+ return result_1.AsyncResult.from((async () => {
691
+ if (opts.patch?.progress !== undefined) {
692
+ const parsed = __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_validateOperationValue).call(this, ctx, "progress", opts.patch.progress).take();
693
+ if ((0, result_1.isErr)(parsed))
694
+ return parsed;
695
+ opts.patch.progress = parsed;
696
+ if ("progress" in opts.event)
697
+ opts.event.progress = parsed;
698
+ }
699
+ if (opts.patch?.output !== undefined) {
700
+ const parsed = __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_validateOperationValue).call(this, ctx, "output", opts.patch.output).take();
701
+ if ((0, result_1.isErr)(parsed))
702
+ return parsed;
703
+ opts.patch.output = parsed;
704
+ }
705
+ return await __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_applyOperationUpdate).call(this, runtime.id, state, opts);
706
+ })());
707
+ }, _TrellisServiceRuntime_controlOperation = function _TrellisServiceRuntime_controlOperation(operation, ctx, operationId) {
708
+ return result_1.AsyncResult.from((async () => {
709
+ const runtime = await __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_resolveOperation).call(this, operationId);
710
+ if (!runtime) {
711
+ return (0, result_1.err)(new index_js_1.UnexpectedError({
712
+ cause: new Error(`Unknown operation '${operationId}'`),
713
+ }));
714
+ }
715
+ if (runtime.service !== this.name) {
716
+ return (0, result_1.err)(new index_js_1.UnexpectedError({
717
+ cause: new Error(`Operation '${operationId}' belongs to service '${runtime.service}', not '${this.name}'`),
718
+ }));
719
+ }
720
+ if (runtime.operation !== operation) {
721
+ return (0, result_1.err)(new index_js_1.UnexpectedError({
722
+ cause: new Error(`Operation '${operationId}' is '${runtime.operation}', not '${operation}'`),
723
+ }));
724
+ }
725
+ return (0, result_1.ok)(__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_makeControlledOperation).call(this, runtime, ctx));
726
+ })());
727
+ }, _TrellisServiceRuntime_makeControlledOperation = function _TrellisServiceRuntime_makeControlledOperation(runtime, ctx) {
728
+ return {
729
+ id: runtime.id,
730
+ started: () => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_applyControlledOperationUpdate).call(this, runtime, ctx, "running", {
731
+ event: { type: "started" },
732
+ }),
733
+ progress: (value) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_applyControlledOperationUpdate).call(this, runtime, ctx, "running", {
734
+ patch: { progress: value },
735
+ event: { type: "progress", progress: value },
736
+ }),
737
+ complete: (value) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_applyControlledOperationUpdate).call(this, runtime, ctx, "completed", {
738
+ patch: { output: value },
739
+ event: { type: "completed" },
740
+ }),
741
+ fail: (error) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_applyControlledOperationUpdate).call(this, runtime, ctx, "failed", {
742
+ patch: { error: { type: error.name, message: error.message } },
743
+ event: { type: "failed" },
744
+ }),
745
+ cancel: () => {
746
+ if (ctx.cancel !== true) {
747
+ return result_1.AsyncResult.err(__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_unsupportedCancelError).call(this, runtime.operation));
748
+ }
749
+ return __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_applyControlledOperationUpdate).call(this, runtime, ctx, "cancelled", {
750
+ event: { type: "cancelled" },
751
+ });
752
+ },
753
+ attach: (job) => result_1.AsyncResult.from((async () => {
754
+ const waited = await job.wait();
755
+ const waitedValue = waited.take();
756
+ if ((0, result_1.isErr)(waitedValue)) {
757
+ return (0, result_1.err)(new index_js_1.UnexpectedError({ cause: waitedValue.error }));
758
+ }
759
+ const finalRuntime = await __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_resolveOperation).call(this, runtime.id);
760
+ if (!finalRuntime || !finalRuntime.terminal) {
761
+ return (0, result_1.err)(new index_js_1.UnexpectedError({
762
+ cause: new Error("attached job completed without terminal operation state"),
763
+ }));
764
+ }
765
+ return (0, result_1.ok)(finalRuntime.snapshot);
766
+ })()),
767
+ signals: () => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_signals).call(this, runtime.id),
768
+ nextSignal: (name) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_nextSignal).call(this, runtime.id, name),
769
+ defer: () => ({ kind: "deferred" }),
770
+ };
771
+ }, _TrellisServiceRuntime_makeAcceptedOperation = function _TrellisServiceRuntime_makeAcceptedOperation(runtime, ctx) {
584
772
  return {
585
773
  id: runtime.id,
586
774
  ref: {
@@ -593,7 +781,12 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
593
781
  progress: (value) => this.operations.progress(runtime.id, value),
594
782
  complete: (value) => this.operations.complete(runtime.id, value),
595
783
  fail: (error) => this.operations.fail(runtime.id, error),
596
- cancel: () => this.operations.cancel(runtime.id),
784
+ cancel: () => {
785
+ if (ctx.cancel !== true) {
786
+ return result_1.AsyncResult.err(__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_unsupportedCancelError).call(this, runtime.operation));
787
+ }
788
+ return this.operations.cancel(runtime.id);
789
+ },
597
790
  attach: (job) => result_1.AsyncResult.from((async () => {
598
791
  const waited = await job.wait();
599
792
  const waitedValue = waited.take();
@@ -608,9 +801,79 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
608
801
  }
609
802
  return (0, result_1.ok)(finalRuntime.snapshot);
610
803
  })()),
804
+ signals: () => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_signals).call(this, runtime.id),
805
+ nextSignal: (name) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_nextSignal).call(this, runtime.id, name),
611
806
  defer: () => ({ kind: "deferred" }),
612
807
  };
613
- }, _TrellisServiceRuntime_acceptOperation = async function _TrellisServiceRuntime_acceptOperation(operation, sessionKey) {
808
+ }, _TrellisServiceRuntime_controlAuthContext = function _TrellisServiceRuntime_controlAuthContext(ctx, action) {
809
+ if (action === "signal" && ctx.controlCapabilities !== undefined) {
810
+ return { ...ctx, callerCapabilities: ctx.controlCapabilities };
811
+ }
812
+ if (action === "cancel" && ctx.cancelCapabilities !== undefined) {
813
+ return { ...ctx, callerCapabilities: ctx.cancelCapabilities };
814
+ }
815
+ return ctx;
816
+ }, _TrellisServiceRuntime_terminalSignalError = function _TrellisServiceRuntime_terminalSignalError() {
817
+ return new index_js_1.UnexpectedError({
818
+ cause: new Error("operation already terminal"),
819
+ });
820
+ }, _TrellisServiceRuntime_unsupportedCancelError = function _TrellisServiceRuntime_unsupportedCancelError(operation) {
821
+ return new index_js_1.ValidationError({
822
+ errors: [{
823
+ path: "/action",
824
+ message: `Operation '${operation}' does not support cancel`,
825
+ }],
826
+ context: { operation, action: "cancel" },
827
+ });
828
+ }, _TrellisServiceRuntime_rejectSignalWaiters = function _TrellisServiceRuntime_rejectSignalWaiters(runtime) {
829
+ const result = (0, result_1.err)(__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_terminalSignalError).call(this));
830
+ for (const waiter of runtime.signalWaiters) {
831
+ waiter(result);
832
+ }
833
+ runtime.signalWaiters.clear();
834
+ }, _TrellisServiceRuntime_acceptSignal = async function _TrellisServiceRuntime_acceptSignal(runtime, ctx, control) {
835
+ if (runtime.terminal) {
836
+ return (0, result_1.err)(__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_terminalSignalError).call(this));
837
+ }
838
+ const descriptor = ctx.signals?.[control.signal];
839
+ if (!descriptor) {
840
+ return (0, result_1.err)(new index_js_1.ValidationError({
841
+ errors: [{
842
+ path: "/signal",
843
+ message: `Unknown operation signal '${control.signal}'`,
844
+ }],
845
+ context: { operation: runtime.operation, signal: control.signal },
846
+ }));
847
+ }
848
+ const input = control.input;
849
+ const parsed = (0, codec_js_1.parseSchema)(descriptor.input, input).take();
850
+ if ((0, result_1.isErr)(parsed)) {
851
+ return (0, result_1.err)(parsed.error);
852
+ }
853
+ runtime.signalSequence += 1;
854
+ const acceptedAt = new Date().toISOString();
855
+ const signal = {
856
+ operationId: runtime.id,
857
+ sequence: runtime.signalSequence,
858
+ signal: control.signal,
859
+ ...(control.input !== undefined ? { input: control.input } : {}),
860
+ acceptedAt,
861
+ };
862
+ runtime.signals.push(signal);
863
+ await this.saveOperationRecord(runtime);
864
+ const result = (0, result_1.ok)(signal);
865
+ for (const waiter of runtime.signalWaiters) {
866
+ waiter(result);
867
+ }
868
+ return (0, result_1.ok)({
869
+ kind: "signal-accepted",
870
+ operationId: runtime.id,
871
+ signal: signal.signal,
872
+ signalSequence: signal.sequence,
873
+ acceptedAt,
874
+ snapshot: runtime.snapshot,
875
+ });
876
+ }, _TrellisServiceRuntime_acceptOperation = async function _TrellisServiceRuntime_acceptOperation(operation, ctx, sessionKey) {
614
877
  const createdAt = new Date().toISOString();
615
878
  const operationId = (0, ulid_1.ulid)();
616
879
  const runtime = {
@@ -628,13 +891,16 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
628
891
  updatedAt: createdAt,
629
892
  },
630
893
  sequence: 0,
894
+ signalSequence: 0,
895
+ signals: [],
631
896
  terminal: false,
632
897
  watchers: new Set(),
633
898
  waiters: new Set(),
899
+ signalWaiters: new Set(),
634
900
  };
635
901
  __classPrivateFieldGet(this, _TrellisServiceRuntime_operations, "f").set(operationId, runtime);
636
902
  await this.saveOperationRecord(runtime);
637
- return (0, result_1.ok)(__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_makeAcceptedOperation).call(this, runtime));
903
+ return (0, result_1.ok)(__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_makeAcceptedOperation).call(this, runtime, ctx));
638
904
  }, _TrellisServiceRuntime_authenticateOperationMessage = async function _TrellisServiceRuntime_authenticateOperationMessage(msg, ctx, parseInput) {
639
905
  const jsonData = (0, trellis_js_1.safeJson)(msg).take();
640
906
  if ((0, result_1.isErr)(jsonData))
@@ -652,14 +918,20 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
652
918
  }
653
919
  const sessionKey = msg.headers?.get("session-key");
654
920
  const proof = msg.headers?.get("proof");
921
+ const iatHeader = msg.headers?.get("iat");
922
+ const requestId = msg.headers?.get("request-id");
655
923
  if (!sessionKey) {
656
924
  return (0, result_1.err)(new index_js_1.AuthError({ reason: "missing_session_key" }));
657
925
  }
658
926
  if (!proof)
659
927
  return (0, result_1.err)(new index_js_1.AuthError({ reason: "missing_proof" }));
928
+ const iat = Number(iatHeader);
929
+ if (!Number.isSafeInteger(iat) || !requestId) {
930
+ return (0, result_1.err)(new index_js_1.AuthError({ reason: "invalid_signature" }));
931
+ }
660
932
  const payloadBytes = msg.data ?? new Uint8Array();
661
933
  const payloadHash = await (0, trellis_js_1.sha256)(payloadBytes);
662
- const proofInput = (0, trellis_js_1.buildProofInput)(sessionKey, msg.subject, payloadHash);
934
+ const proofInput = (0, trellis_js_1.buildProofInput)(sessionKey, msg.subject, payloadHash, iat, requestId);
663
935
  const digest = await (0, trellis_js_1.sha256)(proofInput);
664
936
  const verifyResult = await result_1.AsyncResult.try(async () => {
665
937
  const publicKeyRaw = (0, trellis_js_1.base64urlDecode)(sessionKey);
@@ -679,6 +951,8 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
679
951
  proof,
680
952
  subject: msg.subject,
681
953
  payloadHash: (0, trellis_js_1.base64urlEncode)(payloadHash),
954
+ iat,
955
+ requestId,
682
956
  capabilities: ctx.callerCapabilities
683
957
  ? [...ctx.callerCapabilities]
684
958
  : undefined,
@@ -720,18 +994,18 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
720
994
  const publishSnapshot = async (reply, snapshot) => {
721
995
  await publishFrame(reply, { kind: "snapshot", snapshot });
722
996
  };
997
+ const respondControlError = (msg, error) => {
998
+ msg.respond(JSON.stringify({
999
+ kind: "error",
1000
+ error: { type: error.name, message: error.message },
1001
+ }));
1002
+ };
723
1003
  const controlSub = this.nats.subscribe(controlSubject);
724
1004
  void (async () => {
725
1005
  for await (const msg of controlSub) {
726
- const validated = await __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_authenticateOperationMessage).call(this, msg, ctx, false);
727
- const value = validated.take();
728
- if ((0, result_1.isErr)(value)) {
729
- this.respondWithError(msg, value.error);
730
- continue;
731
- }
732
1006
  const request = (0, trellis_js_1.safeJson)(msg).take();
733
1007
  if ((0, result_1.isErr)(request)) {
734
- this.respondWithError(msg, request.error);
1008
+ respondControlError(msg, request.error);
735
1009
  continue;
736
1010
  }
737
1011
  if (!request ||
@@ -740,27 +1014,35 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
740
1014
  "string" ||
741
1015
  typeof request.operationId !==
742
1016
  "string") {
743
- this.respondWithError(msg, new index_js_1.UnexpectedError({
1017
+ respondControlError(msg, new index_js_1.UnexpectedError({
744
1018
  cause: new Error("Invalid operation control request"),
745
1019
  }));
746
1020
  continue;
747
1021
  }
748
1022
  const control = request;
749
- const runtime = __classPrivateFieldGet(this, _TrellisServiceRuntime_operations, "f").get(control.operationId);
750
- const durableRecord = runtime
751
- ? null
752
- : await this.loadOperationRecord(control.operationId);
753
- if (!runtime && !durableRecord) {
754
- this.respondWithError(msg, new index_js_1.UnexpectedError({
1023
+ const validated = await __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_authenticateOperationMessage).call(this, msg, __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_controlAuthContext).call(this, ctx, control.action), false);
1024
+ const value = validated.take();
1025
+ if ((0, result_1.isErr)(value)) {
1026
+ respondControlError(msg, value.error);
1027
+ continue;
1028
+ }
1029
+ const runtime = await __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_resolveOperation).call(this, control.operationId);
1030
+ if (!runtime) {
1031
+ respondControlError(msg, new index_js_1.UnexpectedError({
755
1032
  cause: new Error(`Unknown operation '${control.operationId}'`),
756
1033
  }));
757
1034
  continue;
758
1035
  }
759
- const snapshot = runtime?.snapshot ?? durableRecord.snapshot;
760
- const ownerSessionKey = runtime?.ownerSessionKey ??
761
- durableRecord.ownerSessionKey;
1036
+ if (runtime.service !== this.name || runtime.operation !== operation) {
1037
+ respondControlError(msg, new index_js_1.UnexpectedError({
1038
+ cause: new Error(`Operation '${control.operationId}' belongs to service '${runtime.service}' operation '${runtime.operation}', not service '${this.name}' operation '${operation}'`),
1039
+ }));
1040
+ continue;
1041
+ }
1042
+ const snapshot = runtime.snapshot;
1043
+ const ownerSessionKey = runtime.ownerSessionKey;
762
1044
  if (ownerSessionKey !== value.sessionKey) {
763
- this.respondWithError(msg, new index_js_1.AuthError({
1045
+ respondControlError(msg, new index_js_1.AuthError({
764
1046
  reason: "forbidden",
765
1047
  context: { ownerSessionKey },
766
1048
  }));
@@ -784,12 +1066,12 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
784
1066
  runtime.waiters.add(msg.reply);
785
1067
  }
786
1068
  else if (msg.reply) {
787
- this.respondWithError(msg, new index_js_1.UnexpectedError({
1069
+ respondControlError(msg, new index_js_1.UnexpectedError({
788
1070
  cause: new Error("operation is not running in this process"),
789
1071
  }));
790
1072
  }
791
1073
  else {
792
- this.respondWithError(msg, new index_js_1.UnexpectedError({
1074
+ respondControlError(msg, new index_js_1.UnexpectedError({
793
1075
  cause: new Error("missing reply subject for wait request"),
794
1076
  }));
795
1077
  }
@@ -800,8 +1082,12 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
800
1082
  continue;
801
1083
  }
802
1084
  if (control.action === "cancel") {
803
- if (!runtime) {
804
- msg.respond(JSON.stringify({ kind: "snapshot", snapshot }));
1085
+ if (ctx.cancel !== true) {
1086
+ respondControlError(msg, __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_unsupportedCancelError).call(this, operation));
1087
+ continue;
1088
+ }
1089
+ if (runtime.terminal) {
1090
+ respondControlError(msg, __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_terminalSignalError).call(this));
805
1091
  continue;
806
1092
  }
807
1093
  runtime.snapshot = {
@@ -829,10 +1115,27 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
829
1115
  await this.nats.publish(reply, JSON.stringify({ kind: "snapshot", snapshot: runtime.snapshot }));
830
1116
  }
831
1117
  runtime.waiters.clear();
1118
+ __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_rejectSignalWaiters).call(this, runtime);
832
1119
  msg.respond(JSON.stringify({ kind: "snapshot", snapshot: runtime.snapshot }));
833
1120
  continue;
834
1121
  }
835
- this.respondWithError(msg, new index_js_1.UnexpectedError({
1122
+ if (control.action === "signal") {
1123
+ if (!runtime) {
1124
+ respondControlError(msg, new index_js_1.UnexpectedError({
1125
+ cause: new Error("operation is not running in this process"),
1126
+ }));
1127
+ continue;
1128
+ }
1129
+ const accepted = await __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_acceptSignal).call(this, runtime, ctx, control);
1130
+ const acceptedValue = accepted.take();
1131
+ if ((0, result_1.isErr)(acceptedValue)) {
1132
+ respondControlError(msg, acceptedValue.error);
1133
+ continue;
1134
+ }
1135
+ msg.respond(JSON.stringify(acceptedValue));
1136
+ continue;
1137
+ }
1138
+ respondControlError(msg, new index_js_1.UnexpectedError({
836
1139
  cause: new Error(`Unknown operation control action '${control.action}' for '${operation}'`),
837
1140
  }));
838
1141
  }
@@ -2,6 +2,7 @@ import { type ObjectStore } from "@nats-io/obj";
2
2
  import type { NatsConnection } from "@nats-io/nats-core/internal";
3
3
  import { AsyncResult } from "@qlever-llc/result";
4
4
  import { StoreError } from "./errors/index.js";
5
+ import type { PageResponse } from "./models/trellis/Page.js";
5
6
  export type StoreBody = Uint8Array | ReadableStream<Uint8Array> | AsyncIterable<Uint8Array>;
6
7
  export type StoreWaitOptions = {
7
8
  timeoutMs?: number;
@@ -18,6 +19,12 @@ export type StorePutOptions = {
18
19
  contentType?: string;
19
20
  metadata?: Record<string, string>;
20
21
  };
22
+ /** Explicit bounded query for listing object metadata in a typed store. */
23
+ export type StoreListOptions = {
24
+ prefix?: string;
25
+ offset?: number;
26
+ limit: number;
27
+ };
21
28
  export type StoreInfo = {
22
29
  key: string;
23
30
  size: number;
@@ -45,7 +52,7 @@ export declare class TypedStore {
45
52
  */
46
53
  waitFor(key: string, options?: StoreWaitOptions): AsyncResult<TypedStoreEntry, StoreError>;
47
54
  delete(key: string): AsyncResult<void, StoreError>;
48
- list(prefix?: string): AsyncResult<AsyncIterable<StoreInfo>, StoreError>;
55
+ list(opts: StoreListOptions): AsyncResult<PageResponse<StoreInfo>, StoreError>;
49
56
  status(): AsyncResult<StoreStatus, StoreError>;
50
57
  }
51
58
  export declare class TypedStoreEntry {
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/store.ts"],"names":[],"mappings":"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"}