@astrale-os/kernel-client 0.6.0-beta.7 → 0.6.0-beta.71

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 (451) hide show
  1. package/dist/auth/auth.d.ts +25 -10
  2. package/dist/auth/auth.js +5 -7
  3. package/dist/auth/authorization.d.ts +6 -4
  4. package/dist/auth/authorization.js +25 -6
  5. package/dist/auth/credential.d.ts +5 -1
  6. package/dist/auth/credential.js +6 -3
  7. package/dist/auth/identity.d.ts +6 -9
  8. package/dist/auth/identity.js +0 -1
  9. package/dist/auth/index.d.ts +4 -5
  10. package/dist/auth/index.js +2 -4
  11. package/dist/auth/register.d.ts +24 -0
  12. package/dist/auth/register.js +10 -0
  13. package/dist/client/admission.d.ts +4 -2
  14. package/dist/client/admission.js +8 -2
  15. package/dist/client/client.d.ts +0 -1
  16. package/dist/client/client.js +0 -1
  17. package/dist/client/credential.d.ts +0 -1
  18. package/dist/client/credential.js +0 -1
  19. package/dist/client/index.d.ts +0 -1
  20. package/dist/client/index.js +0 -1
  21. package/dist/client/request.d.ts +3 -3
  22. package/dist/client/request.js +3 -1
  23. package/dist/client/result.d.ts +3 -4
  24. package/dist/client/result.js +3 -1
  25. package/dist/client/routing-control.d.ts +0 -1
  26. package/dist/client/routing-control.js +0 -1
  27. package/dist/errors/client-error.d.ts +0 -1
  28. package/dist/errors/client-error.js +2 -1
  29. package/dist/errors/index.d.ts +7 -7
  30. package/dist/errors/index.js +7 -7
  31. package/dist/errors/miss-error.d.ts +0 -1
  32. package/dist/errors/miss-error.js +0 -1
  33. package/dist/errors/protocol-error.d.ts +0 -1
  34. package/dist/errors/protocol-error.js +0 -1
  35. package/dist/errors/response-error.d.ts +0 -1
  36. package/dist/errors/response-error.js +0 -1
  37. package/dist/errors/session-error.d.ts +9 -0
  38. package/dist/errors/session-error.js +9 -0
  39. package/dist/errors/stale-route-error.d.ts +0 -1
  40. package/dist/errors/stale-route-error.js +0 -1
  41. package/dist/errors/transport-error.d.ts +18 -6
  42. package/dist/errors/transport-error.js +11 -7
  43. package/dist/graph/domain/binding.d.ts +22 -0
  44. package/dist/graph/domain/binding.js +123 -0
  45. package/dist/graph/domain/domain.typecheck.d.ts +1 -0
  46. package/dist/graph/domain/domain.typecheck.js +147 -0
  47. package/dist/graph/domain/index.d.ts +3 -0
  48. package/dist/graph/domain/index.js +1 -0
  49. package/dist/graph/domain/model.d.ts +18 -0
  50. package/dist/graph/domain/model.js +1 -0
  51. package/dist/graph/domain/page.d.ts +23 -0
  52. package/dist/graph/domain/page.js +42 -0
  53. package/dist/graph/domain/project.d.ts +8 -0
  54. package/dist/graph/domain/project.js +124 -0
  55. package/dist/graph/domain/provenance.d.ts +6 -0
  56. package/dist/graph/domain/provenance.js +11 -0
  57. package/dist/graph/errors.d.ts +2 -3
  58. package/dist/graph/errors.js +1 -2
  59. package/dist/graph/expectation.d.ts +3 -0
  60. package/dist/graph/expectation.js +6 -0
  61. package/dist/graph/graph.d.ts +12 -8
  62. package/dist/graph/graph.js +0 -1
  63. package/dist/graph/index.d.ts +2 -2
  64. package/dist/graph/index.js +1 -1
  65. package/dist/graph/mutation.d.ts +2 -4
  66. package/dist/graph/mutation.js +10 -2
  67. package/dist/graph/page/index.d.ts +0 -1
  68. package/dist/graph/page/index.js +0 -1
  69. package/dist/graph/page/neighbors.d.ts +4 -5
  70. package/dist/graph/page/neighbors.js +7 -7
  71. package/dist/graph/page/page.d.ts +5 -2
  72. package/dist/graph/page/page.js +0 -1
  73. package/dist/graph/page-contract.d.ts +1 -2
  74. package/dist/graph/page-contract.js +0 -1
  75. package/dist/graph/provenance.d.ts +14 -0
  76. package/dist/graph/provenance.js +42 -0
  77. package/dist/graph/query.d.ts +3 -1
  78. package/dist/graph/query.js +33 -13
  79. package/dist/graph/read.d.ts +3 -4
  80. package/dist/graph/read.js +6 -5
  81. package/dist/index.d.ts +2 -2
  82. package/dist/index.js +2 -2
  83. package/dist/pacer/batcher/batcher.d.ts +0 -1
  84. package/dist/pacer/batcher/batcher.js +0 -1
  85. package/dist/pacer/batcher/defaults.d.ts +0 -1
  86. package/dist/pacer/batcher/defaults.js +0 -1
  87. package/dist/pacer/batcher/index.d.ts +0 -1
  88. package/dist/pacer/batcher/index.js +0 -1
  89. package/dist/pacer/index.d.ts +0 -1
  90. package/dist/pacer/index.js +0 -1
  91. package/dist/pacer/limiter/defaults.d.ts +0 -1
  92. package/dist/pacer/limiter/defaults.js +0 -1
  93. package/dist/pacer/limiter/index.d.ts +0 -1
  94. package/dist/pacer/limiter/index.js +0 -1
  95. package/dist/pacer/limiter/limiter.d.ts +0 -1
  96. package/dist/pacer/limiter/limiter.js +0 -1
  97. package/dist/pacer/queue/defaults.d.ts +0 -1
  98. package/dist/pacer/queue/defaults.js +0 -1
  99. package/dist/pacer/queue/index.d.ts +0 -1
  100. package/dist/pacer/queue/index.js +0 -1
  101. package/dist/pacer/queue/queue.d.ts +0 -1
  102. package/dist/pacer/queue/queue.js +0 -1
  103. package/dist/pacer/retry/defaults.d.ts +0 -1
  104. package/dist/pacer/retry/defaults.js +0 -1
  105. package/dist/pacer/retry/index.d.ts +0 -1
  106. package/dist/pacer/retry/index.js +0 -1
  107. package/dist/pacer/retry/retry.d.ts +0 -1
  108. package/dist/pacer/retry/retry.js +0 -1
  109. package/dist/pool/index.d.ts +0 -1
  110. package/dist/pool/index.js +0 -1
  111. package/dist/pool/pool.d.ts +0 -1
  112. package/dist/pool/pool.js +0 -1
  113. package/dist/pool/target.d.ts +0 -1
  114. package/dist/pool/target.js +0 -1
  115. package/dist/schema/admission.d.ts +1 -2
  116. package/dist/schema/admission.js +0 -1
  117. package/dist/schema/contracts.d.ts +6 -16
  118. package/dist/schema/contracts.js +0 -1
  119. package/dist/schema/index.d.ts +2 -3
  120. package/dist/schema/index.js +1 -2
  121. package/dist/schema/introspection.d.ts +1 -2
  122. package/dist/schema/introspection.js +5 -2
  123. package/dist/schema/operation.d.ts +0 -1
  124. package/dist/schema/operation.js +2 -3
  125. package/dist/schema/schema.d.ts +13 -10
  126. package/dist/schema/schema.js +83 -11
  127. package/dist/session/admission.d.ts +18 -0
  128. package/dist/session/admission.js +117 -0
  129. package/dist/session/bound.d.ts +46 -0
  130. package/dist/session/bound.js +93 -0
  131. package/dist/session/context/control.d.ts +0 -1
  132. package/dist/session/context/control.js +0 -1
  133. package/dist/session/context/index.d.ts +0 -1
  134. package/dist/session/context/index.js +0 -1
  135. package/dist/session/context/limits.d.ts +0 -1
  136. package/dist/session/context/limits.js +0 -1
  137. package/dist/session/context/operation.d.ts +0 -1
  138. package/dist/session/context/operation.js +19 -17
  139. package/dist/session/context/policy.d.ts +0 -1
  140. package/dist/session/context/policy.js +0 -1
  141. package/dist/session/credential/index.d.ts +1 -0
  142. package/dist/session/credential/index.js +1 -0
  143. package/dist/session/credential/limits.d.ts +12 -0
  144. package/dist/session/credential/limits.js +12 -0
  145. package/dist/session/credential/provider.d.ts +51 -0
  146. package/dist/session/credential/provider.js +229 -0
  147. package/dist/session/discovery/bundle.d.ts +5 -2
  148. package/dist/session/discovery/bundle.js +34 -15
  149. package/dist/session/discovery/discovery.d.ts +4 -2
  150. package/dist/session/discovery/discovery.js +34 -6
  151. package/dist/session/discovery/index.d.ts +3 -1
  152. package/dist/session/discovery/index.js +1 -1
  153. package/dist/session/discovery/publication.d.ts +0 -1
  154. package/dist/session/discovery/publication.js +4 -4
  155. package/dist/session/discovery/snapshot.d.ts +0 -1
  156. package/dist/session/discovery/snapshot.js +0 -1
  157. package/dist/session/discovery/transport.d.ts +6 -0
  158. package/dist/session/discovery/transport.js +13 -0
  159. package/dist/session/index.d.ts +5 -3
  160. package/dist/session/index.js +3 -1
  161. package/dist/session/reference.d.ts +24 -10
  162. package/dist/session/reference.js +39 -11
  163. package/dist/session/routing/auth.d.ts +0 -1
  164. package/dist/session/routing/auth.js +0 -1
  165. package/dist/session/routing/cache.d.ts +27 -8
  166. package/dist/session/routing/cache.js +218 -25
  167. package/dist/session/routing/dispatch.d.ts +3 -7
  168. package/dist/session/routing/dispatch.js +53 -28
  169. package/dist/session/routing/envelope.d.ts +2 -1
  170. package/dist/session/routing/envelope.js +14 -10
  171. package/dist/session/routing/index.d.ts +1 -3
  172. package/dist/session/routing/index.js +1 -2
  173. package/dist/session/routing/request.d.ts +0 -1
  174. package/dist/session/routing/request.js +0 -1
  175. package/dist/session/session.d.ts +18 -7
  176. package/dist/session/session.js +77 -33
  177. package/dist/session/session.typecheck.d.ts +0 -1
  178. package/dist/session/session.typecheck.js +103 -3
  179. package/dist/session/views/catalog.d.ts +0 -1
  180. package/dist/session/views/catalog.js +14 -5
  181. package/dist/session/views/index.d.ts +0 -1
  182. package/dist/session/views/index.js +0 -1
  183. package/dist/session/views/resolve.d.ts +0 -1
  184. package/dist/session/views/resolve.js +0 -1
  185. package/dist/store/entity-index.d.ts +0 -1
  186. package/dist/store/entity-index.js +0 -1
  187. package/dist/store/index.d.ts +0 -1
  188. package/dist/store/index.js +0 -1
  189. package/dist/store/memory.d.ts +2 -2
  190. package/dist/store/memory.js +38 -15
  191. package/dist/store/mutation.d.ts +1 -2
  192. package/dist/store/mutation.js +6 -4
  193. package/dist/store/observe.d.ts +0 -1
  194. package/dist/store/observe.js +0 -1
  195. package/dist/store/optimistic.d.ts +0 -1
  196. package/dist/store/optimistic.js +0 -1
  197. package/dist/store/query-key.d.ts +2 -2
  198. package/dist/store/query-key.js +7 -3
  199. package/dist/store/shape.d.ts +4 -2
  200. package/dist/store/shape.js +4 -2
  201. package/dist/store/store.d.ts +2 -4
  202. package/dist/store/store.js +6 -5
  203. package/dist/store/store.typecheck.d.ts +0 -1
  204. package/dist/store/store.typecheck.js +3 -9
  205. package/dist/transport/auto/decision.d.ts +0 -1
  206. package/dist/transport/auto/decision.js +0 -1
  207. package/dist/transport/auto/fallback.d.ts +2 -2
  208. package/dist/transport/auto/fallback.js +10 -11
  209. package/dist/transport/auto/index.d.ts +0 -1
  210. package/dist/transport/auto/index.js +0 -1
  211. package/dist/transport/auto/transport.d.ts +0 -1
  212. package/dist/transport/auto/transport.js +5 -6
  213. package/dist/transport/auto/warning.d.ts +0 -1
  214. package/dist/transport/auto/warning.js +5 -3
  215. package/dist/transport/deadline.d.ts +0 -1
  216. package/dist/transport/deadline.js +0 -1
  217. package/dist/transport/failure.d.ts +7 -0
  218. package/dist/transport/failure.js +9 -0
  219. package/dist/transport/http/byte-stream.d.ts +17 -0
  220. package/dist/transport/http/byte-stream.js +86 -0
  221. package/dist/transport/http/index.d.ts +0 -1
  222. package/dist/transport/http/index.js +0 -1
  223. package/dist/transport/http/response.d.ts +0 -1
  224. package/dist/transport/http/response.js +0 -1
  225. package/dist/transport/http/stream.d.ts +0 -1
  226. package/dist/transport/http/stream.js +7 -7
  227. package/dist/transport/http/transport.d.ts +0 -1
  228. package/dist/transport/http/transport.js +43 -20
  229. package/dist/transport/index.d.ts +0 -1
  230. package/dist/transport/index.js +0 -1
  231. package/dist/transport/transport.d.ts +0 -1
  232. package/dist/transport/transport.js +0 -1
  233. package/dist/transport/websocket/connection.d.ts +0 -1
  234. package/dist/transport/websocket/connection.js +16 -26
  235. package/dist/transport/websocket/exchange.d.ts +0 -1
  236. package/dist/transport/websocket/exchange.js +5 -9
  237. package/dist/transport/websocket/index.d.ts +0 -1
  238. package/dist/transport/websocket/index.js +0 -1
  239. package/dist/transport/websocket/transport.d.ts +0 -1
  240. package/dist/transport/websocket/transport.js +7 -20
  241. package/package.json +12 -14
  242. package/dist/auth/auth.d.ts.map +0 -1
  243. package/dist/auth/auth.js.map +0 -1
  244. package/dist/auth/authorization.d.ts.map +0 -1
  245. package/dist/auth/authorization.js.map +0 -1
  246. package/dist/auth/credential.d.ts.map +0 -1
  247. package/dist/auth/credential.js.map +0 -1
  248. package/dist/auth/identity.d.ts.map +0 -1
  249. package/dist/auth/identity.js.map +0 -1
  250. package/dist/auth/index.d.ts.map +0 -1
  251. package/dist/auth/index.js.map +0 -1
  252. package/dist/auth/provision.d.ts +0 -9
  253. package/dist/auth/provision.d.ts.map +0 -1
  254. package/dist/auth/provision.js +0 -11
  255. package/dist/auth/provision.js.map +0 -1
  256. package/dist/client/admission.d.ts.map +0 -1
  257. package/dist/client/admission.js.map +0 -1
  258. package/dist/client/client.d.ts.map +0 -1
  259. package/dist/client/client.js.map +0 -1
  260. package/dist/client/credential.d.ts.map +0 -1
  261. package/dist/client/credential.js.map +0 -1
  262. package/dist/client/index.d.ts.map +0 -1
  263. package/dist/client/index.js.map +0 -1
  264. package/dist/client/request.d.ts.map +0 -1
  265. package/dist/client/request.js.map +0 -1
  266. package/dist/client/result.d.ts.map +0 -1
  267. package/dist/client/result.js.map +0 -1
  268. package/dist/client/routing-control.d.ts.map +0 -1
  269. package/dist/client/routing-control.js.map +0 -1
  270. package/dist/errors/client-error.d.ts.map +0 -1
  271. package/dist/errors/client-error.js.map +0 -1
  272. package/dist/errors/index.d.ts.map +0 -1
  273. package/dist/errors/index.js.map +0 -1
  274. package/dist/errors/miss-error.d.ts.map +0 -1
  275. package/dist/errors/miss-error.js.map +0 -1
  276. package/dist/errors/protocol-error.d.ts.map +0 -1
  277. package/dist/errors/protocol-error.js.map +0 -1
  278. package/dist/errors/response-error.d.ts.map +0 -1
  279. package/dist/errors/response-error.js.map +0 -1
  280. package/dist/errors/stale-route-error.d.ts.map +0 -1
  281. package/dist/errors/stale-route-error.js.map +0 -1
  282. package/dist/errors/transport-error.d.ts.map +0 -1
  283. package/dist/errors/transport-error.js.map +0 -1
  284. package/dist/graph/errors.d.ts.map +0 -1
  285. package/dist/graph/errors.js.map +0 -1
  286. package/dist/graph/graph.d.ts.map +0 -1
  287. package/dist/graph/graph.js.map +0 -1
  288. package/dist/graph/index.d.ts.map +0 -1
  289. package/dist/graph/index.js.map +0 -1
  290. package/dist/graph/mutation.d.ts.map +0 -1
  291. package/dist/graph/mutation.js.map +0 -1
  292. package/dist/graph/page/index.d.ts.map +0 -1
  293. package/dist/graph/page/index.js.map +0 -1
  294. package/dist/graph/page/neighbors.d.ts.map +0 -1
  295. package/dist/graph/page/neighbors.js.map +0 -1
  296. package/dist/graph/page/page.d.ts.map +0 -1
  297. package/dist/graph/page/page.js.map +0 -1
  298. package/dist/graph/page-contract.d.ts.map +0 -1
  299. package/dist/graph/page-contract.js.map +0 -1
  300. package/dist/graph/query.d.ts.map +0 -1
  301. package/dist/graph/query.js.map +0 -1
  302. package/dist/graph/read.d.ts.map +0 -1
  303. package/dist/graph/read.js.map +0 -1
  304. package/dist/index.d.ts.map +0 -1
  305. package/dist/index.js.map +0 -1
  306. package/dist/pacer/batcher/batcher.d.ts.map +0 -1
  307. package/dist/pacer/batcher/batcher.js.map +0 -1
  308. package/dist/pacer/batcher/defaults.d.ts.map +0 -1
  309. package/dist/pacer/batcher/defaults.js.map +0 -1
  310. package/dist/pacer/batcher/index.d.ts.map +0 -1
  311. package/dist/pacer/batcher/index.js.map +0 -1
  312. package/dist/pacer/index.d.ts.map +0 -1
  313. package/dist/pacer/index.js.map +0 -1
  314. package/dist/pacer/limiter/defaults.d.ts.map +0 -1
  315. package/dist/pacer/limiter/defaults.js.map +0 -1
  316. package/dist/pacer/limiter/index.d.ts.map +0 -1
  317. package/dist/pacer/limiter/index.js.map +0 -1
  318. package/dist/pacer/limiter/limiter.d.ts.map +0 -1
  319. package/dist/pacer/limiter/limiter.js.map +0 -1
  320. package/dist/pacer/queue/defaults.d.ts.map +0 -1
  321. package/dist/pacer/queue/defaults.js.map +0 -1
  322. package/dist/pacer/queue/index.d.ts.map +0 -1
  323. package/dist/pacer/queue/index.js.map +0 -1
  324. package/dist/pacer/queue/queue.d.ts.map +0 -1
  325. package/dist/pacer/queue/queue.js.map +0 -1
  326. package/dist/pacer/retry/defaults.d.ts.map +0 -1
  327. package/dist/pacer/retry/defaults.js.map +0 -1
  328. package/dist/pacer/retry/index.d.ts.map +0 -1
  329. package/dist/pacer/retry/index.js.map +0 -1
  330. package/dist/pacer/retry/retry.d.ts.map +0 -1
  331. package/dist/pacer/retry/retry.js.map +0 -1
  332. package/dist/pool/index.d.ts.map +0 -1
  333. package/dist/pool/index.js.map +0 -1
  334. package/dist/pool/pool.d.ts.map +0 -1
  335. package/dist/pool/pool.js.map +0 -1
  336. package/dist/pool/target.d.ts.map +0 -1
  337. package/dist/pool/target.js.map +0 -1
  338. package/dist/schema/admission.d.ts.map +0 -1
  339. package/dist/schema/admission.js.map +0 -1
  340. package/dist/schema/contracts.d.ts.map +0 -1
  341. package/dist/schema/contracts.js.map +0 -1
  342. package/dist/schema/index.d.ts.map +0 -1
  343. package/dist/schema/index.js.map +0 -1
  344. package/dist/schema/introspection.d.ts.map +0 -1
  345. package/dist/schema/introspection.js.map +0 -1
  346. package/dist/schema/operation.d.ts.map +0 -1
  347. package/dist/schema/operation.js.map +0 -1
  348. package/dist/schema/schema.d.ts.map +0 -1
  349. package/dist/schema/schema.js.map +0 -1
  350. package/dist/session/context/control.d.ts.map +0 -1
  351. package/dist/session/context/control.js.map +0 -1
  352. package/dist/session/context/index.d.ts.map +0 -1
  353. package/dist/session/context/index.js.map +0 -1
  354. package/dist/session/context/limits.d.ts.map +0 -1
  355. package/dist/session/context/limits.js.map +0 -1
  356. package/dist/session/context/operation.d.ts.map +0 -1
  357. package/dist/session/context/operation.js.map +0 -1
  358. package/dist/session/context/policy.d.ts.map +0 -1
  359. package/dist/session/context/policy.js.map +0 -1
  360. package/dist/session/discovery/bundle.d.ts.map +0 -1
  361. package/dist/session/discovery/bundle.js.map +0 -1
  362. package/dist/session/discovery/discovery.d.ts.map +0 -1
  363. package/dist/session/discovery/discovery.js.map +0 -1
  364. package/dist/session/discovery/index.d.ts.map +0 -1
  365. package/dist/session/discovery/index.js.map +0 -1
  366. package/dist/session/discovery/publication.d.ts.map +0 -1
  367. package/dist/session/discovery/publication.js.map +0 -1
  368. package/dist/session/discovery/snapshot.d.ts.map +0 -1
  369. package/dist/session/discovery/snapshot.js.map +0 -1
  370. package/dist/session/index.d.ts.map +0 -1
  371. package/dist/session/index.js.map +0 -1
  372. package/dist/session/reference.d.ts.map +0 -1
  373. package/dist/session/reference.js.map +0 -1
  374. package/dist/session/routing/auth.d.ts.map +0 -1
  375. package/dist/session/routing/auth.js.map +0 -1
  376. package/dist/session/routing/cache.d.ts.map +0 -1
  377. package/dist/session/routing/cache.js.map +0 -1
  378. package/dist/session/routing/dispatch.d.ts.map +0 -1
  379. package/dist/session/routing/dispatch.js.map +0 -1
  380. package/dist/session/routing/envelope.d.ts.map +0 -1
  381. package/dist/session/routing/envelope.js.map +0 -1
  382. package/dist/session/routing/expectation.d.ts +0 -7
  383. package/dist/session/routing/expectation.d.ts.map +0 -1
  384. package/dist/session/routing/expectation.js +0 -2
  385. package/dist/session/routing/expectation.js.map +0 -1
  386. package/dist/session/routing/index.d.ts.map +0 -1
  387. package/dist/session/routing/index.js.map +0 -1
  388. package/dist/session/routing/request.d.ts.map +0 -1
  389. package/dist/session/routing/request.js.map +0 -1
  390. package/dist/session/session.d.ts.map +0 -1
  391. package/dist/session/session.js.map +0 -1
  392. package/dist/session/session.typecheck.d.ts.map +0 -1
  393. package/dist/session/session.typecheck.js.map +0 -1
  394. package/dist/session/views/catalog.d.ts.map +0 -1
  395. package/dist/session/views/catalog.js.map +0 -1
  396. package/dist/session/views/index.d.ts.map +0 -1
  397. package/dist/session/views/index.js.map +0 -1
  398. package/dist/session/views/resolve.d.ts.map +0 -1
  399. package/dist/session/views/resolve.js.map +0 -1
  400. package/dist/store/entity-index.d.ts.map +0 -1
  401. package/dist/store/entity-index.js.map +0 -1
  402. package/dist/store/index.d.ts.map +0 -1
  403. package/dist/store/index.js.map +0 -1
  404. package/dist/store/memory.d.ts.map +0 -1
  405. package/dist/store/memory.js.map +0 -1
  406. package/dist/store/mutation.d.ts.map +0 -1
  407. package/dist/store/mutation.js.map +0 -1
  408. package/dist/store/observe.d.ts.map +0 -1
  409. package/dist/store/observe.js.map +0 -1
  410. package/dist/store/optimistic.d.ts.map +0 -1
  411. package/dist/store/optimistic.js.map +0 -1
  412. package/dist/store/query-key.d.ts.map +0 -1
  413. package/dist/store/query-key.js.map +0 -1
  414. package/dist/store/shape.d.ts.map +0 -1
  415. package/dist/store/shape.js.map +0 -1
  416. package/dist/store/store.d.ts.map +0 -1
  417. package/dist/store/store.js.map +0 -1
  418. package/dist/store/store.typecheck.d.ts.map +0 -1
  419. package/dist/store/store.typecheck.js.map +0 -1
  420. package/dist/transport/auto/decision.d.ts.map +0 -1
  421. package/dist/transport/auto/decision.js.map +0 -1
  422. package/dist/transport/auto/fallback.d.ts.map +0 -1
  423. package/dist/transport/auto/fallback.js.map +0 -1
  424. package/dist/transport/auto/index.d.ts.map +0 -1
  425. package/dist/transport/auto/index.js.map +0 -1
  426. package/dist/transport/auto/transport.d.ts.map +0 -1
  427. package/dist/transport/auto/transport.js.map +0 -1
  428. package/dist/transport/auto/warning.d.ts.map +0 -1
  429. package/dist/transport/auto/warning.js.map +0 -1
  430. package/dist/transport/deadline.d.ts.map +0 -1
  431. package/dist/transport/deadline.js.map +0 -1
  432. package/dist/transport/http/index.d.ts.map +0 -1
  433. package/dist/transport/http/index.js.map +0 -1
  434. package/dist/transport/http/response.d.ts.map +0 -1
  435. package/dist/transport/http/response.js.map +0 -1
  436. package/dist/transport/http/stream.d.ts.map +0 -1
  437. package/dist/transport/http/stream.js.map +0 -1
  438. package/dist/transport/http/transport.d.ts.map +0 -1
  439. package/dist/transport/http/transport.js.map +0 -1
  440. package/dist/transport/index.d.ts.map +0 -1
  441. package/dist/transport/index.js.map +0 -1
  442. package/dist/transport/transport.d.ts.map +0 -1
  443. package/dist/transport/transport.js.map +0 -1
  444. package/dist/transport/websocket/connection.d.ts.map +0 -1
  445. package/dist/transport/websocket/connection.js.map +0 -1
  446. package/dist/transport/websocket/exchange.d.ts.map +0 -1
  447. package/dist/transport/websocket/exchange.js.map +0 -1
  448. package/dist/transport/websocket/index.d.ts.map +0 -1
  449. package/dist/transport/websocket/index.js.map +0 -1
  450. package/dist/transport/websocket/transport.d.ts.map +0 -1
  451. package/dist/transport/websocket/transport.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { Path } from '@astrale-os/kernel-core/path';
2
2
  import { introspect as introspectRef } from '@astrale-os/kernel-core/schema/kernel/syscalls/references';
3
- import { schema } from '@astrale-os/kernel-protocol';
3
+ import * as schema from '@astrale-os/kernel-protocol/schema';
4
4
  import { call } from '../client/index.js';
5
5
  const INTROSPECT_PATH = Path.project(introspectRef).raw;
6
6
  export async function introspect(invoke, limits, request, options) {
@@ -11,6 +11,9 @@ export async function introspect(invoke, limits, request, options) {
11
11
  if (result.value.mediaType !== schema.installation.introspection.MEDIA_TYPE) {
12
12
  throw new TypeError('Schema introspection returned an unsupported media type.');
13
13
  }
14
+ if (!(result.value.body instanceof Uint8Array)) {
15
+ await result.value.body[Symbol.asyncIterator]().return?.();
16
+ throw new TypeError('Schema introspection returned a streaming binary result.');
17
+ }
14
18
  return schema.installation.introspection.decode(request, result.value.body, limits);
15
19
  }
16
- //# sourceMappingURL=introspection.js.map
@@ -3,4 +3,3 @@ import type { OperationId } from './contracts.js';
3
3
  export declare function acceptOperationId(input: unknown): OperationId;
4
4
  /** Allocate one cryptographically generated operation identity for a new lifecycle request. */
5
5
  export declare function createOperationId(): OperationId;
6
- //# sourceMappingURL=operation.d.ts.map
@@ -1,10 +1,9 @@
1
- import { installation } from '@astrale-os/kernel-core/schema';
1
+ import * as installation from '@astrale-os/kernel-core/schema/installation';
2
2
  /** Accept one canonical lowercase RFC 9562 UUIDv4 operation identity. */
3
3
  export function acceptOperationId(input) {
4
4
  return installation.acceptOperationId(input);
5
5
  }
6
6
  /** Allocate one cryptographically generated operation identity for a new lifecycle request. */
7
7
  export function createOperationId() {
8
- return acceptOperationId(globalThis.crypto.randomUUID());
8
+ return acceptOperationId(crypto.randomUUID());
9
9
  }
10
- //# sourceMappingURL=operation.js.map
@@ -1,20 +1,23 @@
1
- import type { introspection } from '@astrale-os/kernel-core/schema';
2
- import type { schema as protocolSchema } from '@astrale-os/kernel-protocol';
1
+ import type { Key } from '@astrale-os/kernel-dsl/v1';
2
+ import * as protocolSchema from '@astrale-os/kernel-protocol/schema';
3
3
  import type { Call, Result } from '../client/index.js';
4
4
  import type { RequestOptions } from '../transport/index.js';
5
- import type { InstallReceipt, InstallRequest, UninstallReceipt, UninstallRequest } from './contracts.js';
5
+ import type { InstallRequest, UninstallReceipt, UninstallRequest } from './contracts.js';
6
6
  export type SchemaCall = (call: Call, options?: RequestOptions) => Promise<Result>;
7
7
  export interface SchemaOptions extends protocolSchema.installation.introspection.Limits {
8
+ readonly lifecycleTimeoutMs?: number;
8
9
  }
9
- export type ReadyInstallation = protocolSchema.installation.introspection.Installation & {
10
- readonly state: 'ready';
11
- readonly readiness: protocolSchema.installation.introspection.Digest;
12
- };
10
+ export type DomainInfo = protocolSchema.installation.introspection.DomainInfo;
11
+ export type DomainBundle = protocolSchema.installation.introspection.DomainBundle;
12
+ export type DomainDependencies = protocolSchema.installation.introspection.DomainDependencies;
13
+ export type InstallResult = protocolSchema.installation.InstallResult;
13
14
  export interface SchemaApi {
14
- install(request: InstallRequest, options?: RequestOptions): Promise<InstallReceipt>;
15
+ install(request: InstallRequest, options?: RequestOptions): Promise<InstallResult>;
15
16
  uninstall(request: UninstallRequest, options?: RequestOptions): Promise<UninstallReceipt>;
16
- introspect<Input extends introspection.Introspection>(request: Input, options?: RequestOptions): Promise<protocolSchema.installation.introspection.ResultFor<Input>>;
17
+ inspect(origin: Key.Origin, options?: RequestOptions): Promise<DomainInfo>;
18
+ bundle(origin: Key.Origin, options?: RequestOptions): Promise<DomainBundle>;
19
+ dependencies(origin: Key.Origin, options?: RequestOptions): Promise<DomainDependencies>;
17
20
  }
21
+ export declare const DEFAULT_SCHEMA_LIFECYCLE_TIMEOUT_MS = 110000;
18
22
  /** Bind the canonical Schema lifecycle syscalls to one caller-scoped value-call capability. */
19
23
  export declare function createSchema(call: SchemaCall, limits: SchemaOptions): SchemaApi;
20
- //# sourceMappingURL=schema.d.ts.map
@@ -1,11 +1,13 @@
1
1
  import { Path } from '@astrale-os/kernel-core/path';
2
- import { installOutput, uninstallOutput, } from '@astrale-os/kernel-core/schema/kernel/syscalls/contracts';
2
+ import { uninstallOutput } from '@astrale-os/kernel-core/schema/kernel/syscalls/contracts';
3
3
  import { install, uninstall } from '@astrale-os/kernel-core/schema/kernel/syscalls/references';
4
+ import * as protocolSchema from '@astrale-os/kernel-protocol/schema';
4
5
  import { call as invocation } from '../client/index.js';
5
6
  import { acceptOutput } from './admission.js';
6
- import { introspect as inspect } from './introspection.js';
7
+ import { introspect } from './introspection.js';
7
8
  const INSTALL_PATH = Path.project(install).raw;
8
9
  const UNINSTALL_PATH = Path.project(uninstall).raw;
10
+ export const DEFAULT_SCHEMA_LIFECYCLE_TIMEOUT_MS = 110_000;
9
11
  /** Bind the canonical Schema lifecycle syscalls to one caller-scoped value-call capability. */
10
12
  export function createSchema(call, limits) {
11
13
  if (typeof call !== 'function')
@@ -13,32 +15,102 @@ export function createSchema(call, limits) {
13
15
  const admittedLimits = admitLimits(limits);
14
16
  return Object.freeze({
15
17
  async install(request, options) {
16
- const output = value(await call(invocation(INSTALL_PATH, request), options));
17
- return acceptOutput(installOutput, output);
18
+ const result = await call(invocation(INSTALL_PATH, request), lifecycleOptions(options, admittedLimits.lifecycleTimeoutMs));
19
+ if (result.kind !== 'binary') {
20
+ throw new TypeError('Schema install returned a non-binary result.');
21
+ }
22
+ if (result.value.mediaType !== protocolSchema.installation.MEDIA_TYPE) {
23
+ throw new TypeError('Schema install returned an unsupported media type.');
24
+ }
25
+ if (!(result.value.body instanceof Uint8Array)) {
26
+ await result.value.body[Symbol.asyncIterator]().return?.();
27
+ throw new TypeError('Schema install returned a streaming binary result.');
28
+ }
29
+ const decoded = await protocolSchema.installation.decode(result.value.body, installationResultLimit(admittedLimits.maximumPublicationBytes, request.domains.length));
30
+ proveInstallResult(request, decoded);
31
+ return decoded;
18
32
  },
19
33
  async uninstall(request, options) {
20
- const output = value(await call(invocation(UNINSTALL_PATH, request), options));
21
- return acceptOutput(uninstallOutput, output);
34
+ const snapshot = snapshotUninstallRequest(request);
35
+ const output = value(await call(invocation(UNINSTALL_PATH, snapshot), lifecycleOptions(options, admittedLimits.lifecycleTimeoutMs)));
36
+ const receipt = acceptOutput(uninstallOutput, output);
37
+ proveUninstallReceipt(snapshot, receipt);
38
+ return receipt;
22
39
  },
23
- async introspect(request, options) {
24
- return inspect(call, admittedLimits, request, options);
40
+ async inspect(origin, options) {
41
+ return introspect(call, admittedLimits, { kind: 'inspect', origin }, options);
25
42
  },
43
+ async bundle(origin, options) {
44
+ return introspect(call, admittedLimits, { kind: 'bundle', origin }, options);
45
+ },
46
+ async dependencies(origin, options) {
47
+ return introspect(call, admittedLimits, { kind: 'dependencies', origin }, options);
48
+ },
49
+ });
50
+ }
51
+ function snapshotUninstallRequest(request) {
52
+ return Object.freeze({
53
+ operation: request.operation,
54
+ domains: Object.freeze([...new Set(request.domains)].sort(compare)),
55
+ data: Object.freeze({ mode: request.data.mode }),
26
56
  });
27
57
  }
58
+ function proveUninstallReceipt(request, receipt) {
59
+ if (receipt.operation !== request.operation) {
60
+ throw new TypeError('Schema uninstall result does not match the requested operation.');
61
+ }
62
+ const actual = receipt.transitions.map((transition) => transition.intent.origin);
63
+ if (actual.length !== request.domains.length ||
64
+ actual.some((origin, index) => origin !== request.domains[index])) {
65
+ throw new TypeError('Schema uninstall result does not match the requested Domains.');
66
+ }
67
+ }
68
+ function compare(left, right) {
69
+ return left < right ? -1 : left > right ? 1 : 0;
70
+ }
71
+ function installationResultLimit(maximumDomainBytes, roots) {
72
+ const perDomain = maximumDomainBytes + 4_096;
73
+ if (roots > Math.floor((Number.MAX_SAFE_INTEGER - 4_096) / perDomain)) {
74
+ return Number.MAX_SAFE_INTEGER;
75
+ }
76
+ return perDomain * roots + 4_096;
77
+ }
78
+ function proveInstallResult(request, result) {
79
+ if (result.changed) {
80
+ if (result.receipt.operation !== request.operation) {
81
+ throw new TypeError('Schema install result does not match the requested operation.');
82
+ }
83
+ if (result.receipt.transitions.length > request.domains.length) {
84
+ throw new TypeError('Schema install result contains more transitions than requested Domains.');
85
+ }
86
+ return;
87
+ }
88
+ if (result.domains.length !== request.domains.length) {
89
+ throw new TypeError('Schema unchanged result does not match the requested Domain count.');
90
+ }
91
+ }
28
92
  function value(result) {
29
93
  if (result.kind !== 'value')
30
94
  throw new TypeError('Schema syscall returned a non-value result.');
31
95
  return result.value;
32
96
  }
33
97
  function admitLimits(input) {
98
+ const lifecycleTimeoutMs = input?.lifecycleTimeoutMs ?? DEFAULT_SCHEMA_LIFECYCLE_TIMEOUT_MS;
34
99
  if (input === null ||
35
100
  typeof input !== 'object' ||
36
101
  !Number.isSafeInteger(input.maximumPublicationBytes) ||
37
102
  input.maximumPublicationBytes < 1 ||
38
103
  !Number.isSafeInteger(input.maximumBundleBytes) ||
39
- input.maximumBundleBytes < 1) {
104
+ input.maximumBundleBytes < 1 ||
105
+ !Number.isSafeInteger(lifecycleTimeoutMs) ||
106
+ lifecycleTimeoutMs < 1 ||
107
+ lifecycleTimeoutMs > 2_147_483_647) {
40
108
  throw new TypeError('Schema introspection limits are invalid.');
41
109
  }
42
- return Object.freeze({ ...input });
110
+ return Object.freeze({ ...input, lifecycleTimeoutMs });
111
+ }
112
+ function lifecycleOptions(options, timeoutMs) {
113
+ if (options?.timeoutMs !== undefined)
114
+ return options;
115
+ return Object.freeze({ ...options, timeoutMs });
43
116
  }
44
- //# sourceMappingURL=schema.js.map
@@ -0,0 +1,18 @@
1
+ import type { invocation } from '@astrale-os/kernel-protocol';
2
+ import type { AdmissionOptions, FunctionAdmission } from '../auth/index.js';
3
+ import type { Client } from '../client/index.js';
4
+ import type { SchemaOptions } from '../schema/schema.js';
5
+ import type { Fetch } from '../transport/http/index.js';
6
+ import type { SessionOperation, SessionPolicy } from './context/index.js';
7
+ import type { SessionAuth } from './routing/index.js';
8
+ export interface FunctionAdmissionDependencies {
9
+ readonly kernel: string;
10
+ readonly auth?: SessionAuth;
11
+ readonly source: () => Client;
12
+ readonly fetch: Fetch;
13
+ readonly policy: Readonly<SessionPolicy>;
14
+ readonly limits: SchemaOptions;
15
+ readonly maximumResponseBytes: number;
16
+ }
17
+ /** Check a remote Call through the existing Domain exchange and Kernel admission protocols. */
18
+ export declare function admitFunction(dependencies: FunctionAdmissionDependencies, call: invocation.Call, options: AdmissionOptions | undefined, operation: SessionOperation): Promise<FunctionAdmission>;
@@ -0,0 +1,117 @@
1
+ import { grant } from '@astrale-os/kernel-core/auth';
2
+ import { targetPath } from '@astrale-os/kernel-core/callable';
3
+ import { Path } from '@astrale-os/kernel-core/path';
4
+ import { admitOutput } from '@astrale-os/kernel-core/schema/kernel/syscalls/contracts';
5
+ import { function as functions } from '@astrale-os/kernel-core/schema/kernel/syscalls/references';
6
+ import { Key } from '@astrale-os/kernel-dsl/v1/addressing';
7
+ import { codecs, issuer } from '@astrale-os/kernel-protocol';
8
+ import { credentialApi } from '../auth/credential.js';
9
+ import { identityApi } from '../auth/identity.js';
10
+ import { ClientError } from '../errors/index.js';
11
+ import { createSchema } from '../schema/index.js';
12
+ import { allowEndpoint, runSessionOperation, sessionTransportOptions } from './context/index.js';
13
+ import { boundedResponse, requireExactResponse } from './discovery/index.js';
14
+ import { matchesCallable } from './reference.js';
15
+ import { requireResultKind, resolveAuth } from './routing/index.js';
16
+ const ADMIT = Path.staticMethod(Path.project(functions.admit.owner), functions.admit.name);
17
+ /** Check a remote Call through the existing Domain exchange and Kernel admission protocols. */
18
+ export async function admitFunction(dependencies, call, options, operation) {
19
+ const target = Path.parse(targetPath(call.target));
20
+ const origin = callableOrigin(target);
21
+ const attenuation = options?.attenuation === undefined
22
+ ? undefined
23
+ : grant.acceptUnresolved({ v: 1, expr: options.attenuation }).expr;
24
+ const effective = await resolveAuth(dependencies.auth, call, operation);
25
+ if (effective.credential === undefined || effective.delegate === undefined) {
26
+ throw new ClientError('Function admission requires an authenticated session.');
27
+ }
28
+ // Resolve once for the intended Call, then retain that exact caller across every helper syscall.
29
+ const client = dependencies.source();
30
+ const caller = client.as(effective.credential);
31
+ const dispatch = (input) => runSessionOperation(operation, () => caller.dispatch(input, {
32
+ ...sessionTransportOptions(operation),
33
+ delegate: effective.delegate,
34
+ }));
35
+ const callIdentity = async (target, input) => requireResultKind('value', await dispatch({ target, input })).value;
36
+ const identity = identityApi(callIdentity);
37
+ const credentials = credentialApi(callIdentity);
38
+ const schema = createSchema(dispatch, dependencies.limits);
39
+ const [domain, self] = await Promise.all([schema.inspect(origin), identity.whoami()]);
40
+ const remote = domain.publication;
41
+ if (remote === null || remote.identity.issuer === dependencies.kernel) {
42
+ throw new ClientError('Function admission through token exchange requires a remote Domain.');
43
+ }
44
+ const configuration = issuer.acceptConfiguration(await fetchJson(dependencies, new URL(issuer.paths(remote.identity.issuer).configuration, remote.identity.issuer).href, operation), remote.identity.issuer);
45
+ const endpoint = configuration.token_exchange_endpoint;
46
+ if (endpoint === undefined) {
47
+ throw new ClientError('The installed Domain does not advertise token exchange.');
48
+ }
49
+ allowEndpoint(endpoint, dependencies.policy);
50
+ const credential = await credentials.delegate(self.id, {
51
+ audience: remote.identity.issuer,
52
+ ttlSeconds: effective.delegate.ttlSeconds,
53
+ attenuation: attenuation ?? effective.delegate.attenuation ?? { kind: 'identity', self: true },
54
+ });
55
+ const exchanged = issuer.exchange.acceptResponse(await fetchJson(dependencies, endpoint, operation, credential));
56
+ if (exchanged.expiresAt * 1_000 <= Date.now()) {
57
+ throw new ClientError('Domain token exchange returned an expired credential.');
58
+ }
59
+ const result = await runSessionOperation(operation, () => client
60
+ .as(exchanged.token)
61
+ .dispatch({ target: ADMIT, input: { call, credential } }, { ...sessionTransportOptions(operation), delegate: effective.delegate }));
62
+ const output = admitOutput.parse(requireResultKind('value', result).value);
63
+ const callable = Key(output.callable);
64
+ if (!matchesCallable(target, callable)) {
65
+ throw new ClientError('Function admission returned a different callable.');
66
+ }
67
+ const receiver = output.receiver === undefined ? undefined : Path.parse(output.receiver);
68
+ const method = target.ast.steps.at(-1);
69
+ const instance = method?.kind === 'method' && method.dispatch === 'instance';
70
+ if (instance !== (receiver !== undefined) ||
71
+ (receiver !== undefined &&
72
+ (receiver.ast.anchor.kind !== 'id' ||
73
+ receiver.ast.steps.length !== 0 ||
74
+ (target.ast.anchor.kind === 'id' &&
75
+ target.ast.steps.length === 1 &&
76
+ receiver.ast.anchor.id !== target.ast.anchor.id)))) {
77
+ throw new ClientError('Function admission returned a different receiver.');
78
+ }
79
+ return Object.freeze({ callable, ...(receiver === undefined ? {} : { receiver: receiver.raw }) });
80
+ }
81
+ function callableOrigin(path) {
82
+ const last = path.ast.steps.at(-1);
83
+ if (last?.kind === 'method' && last.dispatch === 'instance')
84
+ return Key.origin(last.class);
85
+ if (path.ast.anchor.kind === 'domain')
86
+ return path.ast.anchor.origin;
87
+ throw new ClientError('Function admission requires a Domain-qualified callable target.');
88
+ }
89
+ async function fetchJson(dependencies, url, operation, credential) {
90
+ allowEndpoint(url, dependencies.policy);
91
+ return runSessionOperation(operation, async (signal) => {
92
+ const init = {
93
+ method: credential === undefined ? 'GET' : 'POST',
94
+ headers: {
95
+ accept: 'application/json',
96
+ ...(credential === undefined ? {} : { authorization: `Bearer ${credential}` }),
97
+ },
98
+ credentials: 'omit',
99
+ cache: 'no-store',
100
+ referrerPolicy: 'no-referrer',
101
+ redirect: 'manual',
102
+ signal,
103
+ };
104
+ const response = await dependencies.fetch(url, init);
105
+ try {
106
+ requireExactResponse(response, url, 'Domain token exchange');
107
+ if (!response.ok) {
108
+ throw new ClientError(`Domain ${credential === undefined ? 'discovery' : 'token exchange'} returned HTTP ${response.status}.`);
109
+ }
110
+ return codecs.json.decode(await boundedResponse(response, dependencies.maximumResponseBytes, signal));
111
+ }
112
+ finally {
113
+ // Also release unread bodies rejected by URL, status, or declared-size validation.
114
+ void response.body?.cancel().catch(() => undefined);
115
+ }
116
+ });
117
+ }
@@ -0,0 +1,46 @@
1
+ import type { IssuerId } from '@astrale-os/kernel-core/auth';
2
+ import type { AuthApi } from '../auth/index.js';
3
+ import type { SchemaApi } from '../schema/index.js';
4
+ import type { SessionControlOptions } from './context/index.js';
5
+ import type { CallableReference, InputOfReference, OutputOfReference } from './reference.js';
6
+ import type { SessionRequestOptions } from './routing/index.js';
7
+ import type { ClientSession } from './session.js';
8
+ import type { ViewCatalog } from './views/index.js';
9
+ import { type Binary, type Call, type Input, type Result, type Stream } from '../client/index.js';
10
+ import { type GraphApi } from '../graph/index.js';
11
+ /** Exact live Session surface captured by one credential-bound Kernel view. */
12
+ export interface BoundSessionSource {
13
+ readonly kernel: IssuerId;
14
+ readonly schema: SchemaApi;
15
+ readonly auth: Pick<AuthApi, 'admit'>;
16
+ dispatch(call: Call, options?: SessionRequestOptions): Promise<Result>;
17
+ call(call: Call, options?: SessionRequestOptions): Promise<Input>;
18
+ invoke<const Reference extends CallableReference<unknown>>(reference: Reference, input: InputOfReference<Reference>, options?: SessionRequestOptions): Promise<OutputOfReference<Reference>>;
19
+ stream(call: Call, options?: SessionRequestOptions): Promise<Stream>;
20
+ binary(call: Call, options?: SessionRequestOptions): Promise<Binary>;
21
+ viewsFor(target: Parameters<ClientSession['viewsFor']>[0], options?: SessionControlOptions): Promise<ViewCatalog>;
22
+ }
23
+ export interface BoundSessionControls {
24
+ readonly signal: AbortSignal;
25
+ /** Absolute Unix time in milliseconds. */
26
+ readonly deadline: number;
27
+ }
28
+ /**
29
+ * Credential-bound Kernel operations over one caller-owned ClientSession.
30
+ *
31
+ * The view owns no credential, transport, route cache, or lifecycle. Its source Session owns all of
32
+ * those concerns and closing that Session invalidates every operation exposed here.
33
+ */
34
+ export interface BoundClientSession extends GraphApi {
35
+ readonly kernel: IssuerId;
36
+ readonly auth: AuthApi;
37
+ readonly schema: SchemaApi;
38
+ dispatch(call: Call, options?: SessionRequestOptions): Promise<Result>;
39
+ call(call: Call, options?: SessionRequestOptions): Promise<Input>;
40
+ invoke<const Reference extends CallableReference<unknown>>(reference: Reference, input: InputOfReference<Reference>, options?: SessionRequestOptions): Promise<OutputOfReference<Reference>>;
41
+ stream(call: Call, options?: SessionRequestOptions): Promise<Stream>;
42
+ binary(call: Call, options?: SessionRequestOptions): Promise<Binary>;
43
+ viewsFor: BoundSessionSource['viewsFor'];
44
+ }
45
+ /** Capture one Session into the ordinary graph, auth, and invocation Kernel journey. */
46
+ export declare function bindSession(source: BoundSessionSource, controls?: BoundSessionControls): BoundClientSession;
@@ -0,0 +1,93 @@
1
+ import { createAuth } from '../auth/auth.js';
2
+ import { call as createCall, } from '../client/index.js';
3
+ import { createGraph } from '../graph/index.js';
4
+ /** Capture one Session into the ordinary graph, auth, and invocation Kernel journey. */
5
+ export function bindSession(source, controls) {
6
+ if (source === null || typeof source !== 'object')
7
+ invalid();
8
+ const admittedControls = admitControls(controls);
9
+ const dispatchSource = capture(source, 'dispatch');
10
+ const admitSource = capture(source.auth, 'admit');
11
+ const callSource = capture(source, 'call');
12
+ const invokeSource = capture(source, 'invoke');
13
+ const streamSource = capture(source, 'stream');
14
+ const binarySource = capture(source, 'binary');
15
+ const viewsForSource = capture(source, 'viewsFor');
16
+ const schemaSource = captureSchema(source.schema);
17
+ const dispatch = (input, options) => dispatchSource(input, requestOptions(options, admittedControls));
18
+ const admit = (input, options) => admitSource(input, mergeOptions(options, admittedControls));
19
+ const call = (input, options) => callSource(input, requestOptions(options, admittedControls));
20
+ const invoke = (reference, input, options) => invokeSource(reference, input, requestOptions(options, admittedControls));
21
+ const stream = (input, options) => streamSource(input, requestOptions(options, admittedControls));
22
+ const binary = (input, options) => binarySource(input, requestOptions(options, admittedControls));
23
+ const viewsFor = (target, options) => viewsForSource(target, controlOptions(options, admittedControls));
24
+ const install = (request, options) => schemaSource.install(request, controlOptions(options, admittedControls));
25
+ const uninstall = (request, options) => schemaSource.uninstall(request, controlOptions(options, admittedControls));
26
+ const inspect = (origin, options) => schemaSource.inspect(origin, controlOptions(options, admittedControls));
27
+ const bundle = (origin, options) => schemaSource.bundle(origin, controlOptions(options, admittedControls));
28
+ const dependencies = (origin, options) => schemaSource.dependencies(origin, controlOptions(options, admittedControls));
29
+ const schema = Object.freeze({ install, uninstall, inspect, bundle, dependencies });
30
+ const graph = createGraph(call);
31
+ const auth = createAuth((target, input, options) => call(createCall(target, input), options), admit);
32
+ return Object.freeze({
33
+ ...graph,
34
+ kernel: source.kernel,
35
+ auth,
36
+ schema,
37
+ dispatch,
38
+ call,
39
+ invoke,
40
+ stream,
41
+ binary,
42
+ viewsFor,
43
+ });
44
+ }
45
+ function admitControls(input) {
46
+ if (input === undefined)
47
+ return undefined;
48
+ if (input === null ||
49
+ typeof input !== 'object' ||
50
+ !(input.signal instanceof AbortSignal) ||
51
+ !Number.isFinite(input.deadline)) {
52
+ invalid();
53
+ }
54
+ return Object.freeze({ signal: input.signal, deadline: input.deadline });
55
+ }
56
+ function requestOptions(options, controls) {
57
+ return mergeOptions(options, controls);
58
+ }
59
+ function controlOptions(options, controls) {
60
+ return mergeOptions(options, controls);
61
+ }
62
+ function mergeOptions(options, controls) {
63
+ if (controls === undefined)
64
+ return options;
65
+ if (options?.signal !== undefined && options.signal !== controls.signal) {
66
+ throw new TypeError('Bound ClientSession cancellation cannot be replaced.');
67
+ }
68
+ if (controls.signal.aborted)
69
+ throw controls.signal.reason ?? new Error('Invocation cancelled.');
70
+ const remaining = Math.max(1, Math.ceil(controls.deadline - Date.now()));
71
+ const timeoutMs = options?.timeoutMs === undefined ? remaining : Math.min(options.timeoutMs, remaining);
72
+ return Object.freeze({ ...options, signal: controls.signal, timeoutMs });
73
+ }
74
+ function capture(source, key) {
75
+ const value = source[key];
76
+ if (typeof value !== 'function')
77
+ invalid();
78
+ return value.bind(source);
79
+ }
80
+ function captureSchema(input) {
81
+ if (input === null || typeof input !== 'object')
82
+ invalid();
83
+ return Object.freeze({
84
+ install: capture(input, 'install'),
85
+ uninstall: capture(input, 'uninstall'),
86
+ inspect: capture(input, 'inspect'),
87
+ bundle: capture(input, 'bundle'),
88
+ dependencies: capture(input, 'dependencies'),
89
+ });
90
+ }
91
+ function invalid() {
92
+ throw new TypeError('Bound ClientSession source is invalid.');
93
+ }
@@ -3,4 +3,3 @@ export interface SessionControlOptions {
3
3
  readonly timeoutMs?: number;
4
4
  }
5
5
  export declare function admitControlOptions(input: SessionControlOptions | undefined): Readonly<SessionControlOptions>;
6
- //# sourceMappingURL=control.d.ts.map
@@ -15,4 +15,3 @@ export function admitControlOptions(input) {
15
15
  : { timeoutMs: platformDuration(input.timeoutMs, 'timeoutMs') }),
16
16
  });
17
17
  }
18
- //# sourceMappingURL=control.js.map
@@ -2,4 +2,3 @@ export { admitControlOptions, type SessionControlOptions } from './control.js';
2
2
  export { DEFAULT_MAXIMUM_BUNDLE_BYTES, DEFAULT_MAXIMUM_PUBLICATION_BYTES, DEFAULT_MAXIMUM_RESPONSE_BYTES, DEFAULT_MAXIMUM_ROUTES, DEFAULT_TIMEOUT_MS, platformDuration, positive, } from './limits.js';
3
3
  export { createSessionOperation, runSessionOperation, sessionTransportOptions, type SessionOperation, } from './operation.js';
4
4
  export { admitKernel, admitPolicy, allowEndpoint, kernelInvocationEndpoint, type SessionPolicy, } from './policy.js';
5
- //# sourceMappingURL=index.d.ts.map
@@ -2,4 +2,3 @@ export { admitControlOptions } from './control.js';
2
2
  export { DEFAULT_MAXIMUM_BUNDLE_BYTES, DEFAULT_MAXIMUM_PUBLICATION_BYTES, DEFAULT_MAXIMUM_RESPONSE_BYTES, DEFAULT_MAXIMUM_ROUTES, DEFAULT_TIMEOUT_MS, platformDuration, positive, } from './limits.js';
3
3
  export { createSessionOperation, runSessionOperation, sessionTransportOptions, } from './operation.js';
4
4
  export { admitKernel, admitPolicy, allowEndpoint, kernelInvocationEndpoint, } from './policy.js';
5
- //# sourceMappingURL=index.js.map
@@ -5,4 +5,3 @@ export declare const DEFAULT_TIMEOUT_MS = 30000;
5
5
  export declare const DEFAULT_MAXIMUM_ROUTES = 256;
6
6
  export declare function positive(input: number, label: string): number;
7
7
  export declare function platformDuration(input: number, label: string): number;
8
- //# sourceMappingURL=limits.d.ts.map
@@ -16,4 +16,3 @@ export function platformDuration(input, label) {
16
16
  }
17
17
  return admitted;
18
18
  }
19
- //# sourceMappingURL=limits.js.map
@@ -17,4 +17,3 @@ export declare function sessionTransportOptions(operation: SessionOperation, ide
17
17
  /** Settle independently of a caller capability that ignores its supplied AbortSignal. */
18
18
  export declare function runSessionOperation<Result>(operation: SessionOperation, task: (signal: AbortSignal) => Result | PromiseLike<Result>): Promise<Result>;
19
19
  export declare function requireSessionOperation(operation: SessionOperation): void;
20
- //# sourceMappingURL=operation.d.ts.map
@@ -1,4 +1,4 @@
1
- import { ClientError } from '../../errors/index.js';
1
+ import { SessionError } from '../../errors/index.js';
2
2
  /** Create one total wall-clock budget for a complete public Client Session operation. */
3
3
  export function createSessionOperation(lifecycle, input, defaultTimeoutMs) {
4
4
  const timeoutMs = input?.timeoutMs ?? defaultTimeoutMs;
@@ -22,7 +22,7 @@ export function remainingSessionTime(operation) {
22
22
  requireSessionOperation(operation);
23
23
  const remaining = operation.deadline - Date.now();
24
24
  if (remaining < 1)
25
- throw new ClientError('Session operation timed out.');
25
+ throw new SessionError('Session operation timed out.', { failure: 'timeout' });
26
26
  return remaining;
27
27
  }
28
28
  export function sessionTransportOptions(operation, idempotencyKey) {
@@ -33,13 +33,8 @@ export function sessionTransportOptions(operation, idempotencyKey) {
33
33
  });
34
34
  }
35
35
  /** Settle independently of a caller capability that ignores its supplied AbortSignal. */
36
- export function runSessionOperation(operation, task) {
37
- try {
38
- requireSessionOperation(operation);
39
- }
40
- catch (error) {
41
- return Promise.reject(error);
42
- }
36
+ export async function runSessionOperation(operation, task) {
37
+ requireSessionOperation(operation);
43
38
  let abort;
44
39
  const interrupted = new Promise((_resolve, reject) => {
45
40
  abort = () => reject(sessionInterruption(operation.signal.reason));
@@ -49,9 +44,14 @@ export function runSessionOperation(operation, task) {
49
44
  requireSessionOperation(operation);
50
45
  return task(operation.signal);
51
46
  });
52
- return Promise.race([execution, interrupted]).finally(() => {
53
- if (abort !== undefined)
54
- operation.signal.removeEventListener('abort', abort);
47
+ return Promise.race([execution, interrupted])
48
+ .catch((cause) => {
49
+ if (operation.signal.aborted)
50
+ throw sessionInterruption(operation.signal.reason);
51
+ throw cause;
52
+ })
53
+ .finally(() => {
54
+ operation.signal.removeEventListener('abort', abort);
55
55
  });
56
56
  }
57
57
  export function requireSessionOperation(operation) {
@@ -60,11 +60,13 @@ export function requireSessionOperation(operation) {
60
60
  throw sessionInterruption(operation.signal.reason);
61
61
  }
62
62
  function sessionInterruption(reason) {
63
+ if (reason instanceof SessionError)
64
+ return reason;
63
65
  if (reason instanceof DOMException && reason.name === 'TimeoutError') {
64
- return new ClientError('Session operation timed out.', { cause: reason });
66
+ return new SessionError('Session operation timed out.', { cause: reason, failure: 'timeout' });
65
67
  }
66
- return reason instanceof Error
67
- ? reason
68
- : new ClientError('Session operation was cancelled.', { cause: reason });
68
+ return new SessionError('Session operation was cancelled.', {
69
+ cause: reason,
70
+ failure: 'cancelled',
71
+ });
69
72
  }
70
- //# sourceMappingURL=operation.js.map
@@ -9,4 +9,3 @@ export declare function admitKernel(input: string, insecure: boolean): IssuerId;
9
9
  export declare function kernelInvocationEndpoint(input: IssuerId): string;
10
10
  export declare function websocketEndpoint(input: string, insecure: boolean): string;
11
11
  export declare function allowEndpoint(url: string, policy: Readonly<SessionPolicy>): void;
12
- //# sourceMappingURL=policy.d.ts.map
@@ -67,4 +67,3 @@ export function allowEndpoint(url, policy) {
67
67
  throw new ClientError('Endpoint is denied by Session policy.');
68
68
  }
69
69
  }
70
- //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ export { createSessionCredentialProvider, type SessionCredential, type SessionCredentialProvider, type SessionCredentialProviderOptions, type SessionCredentialState, } from './provider.js';
@@ -0,0 +1 @@
1
+ export { createSessionCredentialProvider, } from './provider.js';
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Settlement allowance added to the declared delegation TTL to form the refresh threshold. It
3
+ * matches the destination-credential skew routing already applies to a warm entry, so a credential
4
+ * served here cannot expire between admission and delivery.
5
+ */
6
+ export declare const SETTLEMENT_SKEW_MS = 5000;
7
+ /** Total budget for one mint, matching the default Session operation budget. */
8
+ export declare const MINT_TIMEOUT_MS = 30000;
9
+ /** Bounded backoff between anticipation attempts after a failed mint. */
10
+ export declare const BACKOFF_MS: readonly [1000, 2000, 4000];
11
+ /** Steady retry interval once the bounded backoff is exhausted. */
12
+ export declare const RETRY_INTERVAL_MS = 4000;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Settlement allowance added to the declared delegation TTL to form the refresh threshold. It
3
+ * matches the destination-credential skew routing already applies to a warm entry, so a credential
4
+ * served here cannot expire between admission and delivery.
5
+ */
6
+ export const SETTLEMENT_SKEW_MS = 5_000;
7
+ /** Total budget for one mint, matching the default Session operation budget. */
8
+ export const MINT_TIMEOUT_MS = 30_000;
9
+ /** Bounded backoff between anticipation attempts after a failed mint. */
10
+ export const BACKOFF_MS = [1_000, 2_000, 4_000];
11
+ /** Steady retry interval once the bounded backoff is exhausted. */
12
+ export const RETRY_INTERVAL_MS = 4_000;