@astrale-os/kernel-client 0.6.0-beta.3 → 0.6.0-beta.31

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 (462) hide show
  1. package/CHANGELOG.md +902 -0
  2. package/dist/auth/auth.d.ts +3 -4
  3. package/dist/auth/auth.js +0 -1
  4. package/dist/auth/authorization.d.ts +2 -3
  5. package/dist/auth/authorization.js +3 -4
  6. package/dist/auth/credential.d.ts +1 -2
  7. package/dist/auth/credential.js +5 -6
  8. package/dist/auth/identity.d.ts +6 -9
  9. package/dist/auth/identity.js +4 -5
  10. package/dist/auth/index.d.ts +1 -2
  11. package/dist/auth/index.js +0 -1
  12. package/dist/auth/provision.d.ts +0 -1
  13. package/dist/auth/provision.js +2 -3
  14. package/dist/client/admission.d.ts +0 -1
  15. package/dist/client/admission.js +0 -1
  16. package/dist/client/client.d.ts +0 -1
  17. package/dist/client/client.js +0 -1
  18. package/dist/client/credential.d.ts +0 -1
  19. package/dist/client/credential.js +0 -1
  20. package/dist/client/index.d.ts +0 -1
  21. package/dist/client/index.js +0 -1
  22. package/dist/client/request.d.ts +1 -2
  23. package/dist/client/request.js +1 -2
  24. package/dist/client/result.d.ts +3 -4
  25. package/dist/client/result.js +3 -1
  26. package/dist/client/routing-control.d.ts +0 -1
  27. package/dist/client/routing-control.js +0 -1
  28. package/dist/errors/client-error.d.ts +0 -1
  29. package/dist/errors/client-error.js +2 -1
  30. package/dist/errors/index.d.ts +7 -7
  31. package/dist/errors/index.js +7 -7
  32. package/dist/errors/miss-error.d.ts +0 -1
  33. package/dist/errors/miss-error.js +0 -1
  34. package/dist/errors/protocol-error.d.ts +0 -1
  35. package/dist/errors/protocol-error.js +0 -1
  36. package/dist/errors/response-error.d.ts +2 -2
  37. package/dist/errors/response-error.js +1 -2
  38. package/dist/errors/session-error.d.ts +9 -0
  39. package/dist/errors/session-error.js +9 -0
  40. package/dist/errors/stale-route-error.d.ts +0 -1
  41. package/dist/errors/stale-route-error.js +0 -1
  42. package/dist/errors/transport-error.d.ts +18 -6
  43. package/dist/errors/transport-error.js +11 -7
  44. package/dist/graph/domain/binding.d.ts +22 -0
  45. package/dist/graph/domain/binding.js +123 -0
  46. package/dist/graph/domain/domain.typecheck.d.ts +1 -0
  47. package/dist/graph/domain/domain.typecheck.js +139 -0
  48. package/dist/graph/domain/index.d.ts +3 -0
  49. package/dist/graph/domain/index.js +1 -0
  50. package/dist/graph/domain/model.d.ts +18 -0
  51. package/dist/graph/domain/model.js +1 -0
  52. package/dist/graph/domain/page.d.ts +23 -0
  53. package/dist/graph/domain/page.js +42 -0
  54. package/dist/graph/domain/project.d.ts +8 -0
  55. package/dist/graph/domain/project.js +120 -0
  56. package/dist/graph/domain/provenance.d.ts +6 -0
  57. package/dist/graph/domain/provenance.js +11 -0
  58. package/dist/graph/errors.d.ts +2 -3
  59. package/dist/graph/errors.js +2 -2
  60. package/dist/graph/expectation.d.ts +3 -0
  61. package/dist/graph/expectation.js +6 -0
  62. package/dist/graph/graph.d.ts +12 -8
  63. package/dist/graph/graph.js +0 -1
  64. package/dist/graph/index.d.ts +2 -2
  65. package/dist/graph/index.js +1 -1
  66. package/dist/graph/mutation.d.ts +2 -4
  67. package/dist/graph/mutation.js +12 -4
  68. package/dist/graph/page/index.d.ts +0 -1
  69. package/dist/graph/page/index.js +0 -1
  70. package/dist/graph/page/neighbors.d.ts +4 -5
  71. package/dist/graph/page/neighbors.js +6 -7
  72. package/dist/graph/page/page.d.ts +5 -2
  73. package/dist/graph/page/page.js +0 -1
  74. package/dist/graph/page-contract.d.ts +1 -2
  75. package/dist/graph/page-contract.js +0 -1
  76. package/dist/graph/provenance.d.ts +14 -0
  77. package/dist/graph/provenance.js +42 -0
  78. package/dist/graph/query.d.ts +0 -1
  79. package/dist/graph/query.js +21 -13
  80. package/dist/graph/read.d.ts +3 -4
  81. package/dist/graph/read.js +1 -2
  82. package/dist/index.d.ts +1 -2
  83. package/dist/index.js +1 -2
  84. package/dist/pacer/batcher/batcher.d.ts +0 -1
  85. package/dist/pacer/batcher/batcher.js +0 -1
  86. package/dist/pacer/batcher/defaults.d.ts +0 -1
  87. package/dist/pacer/batcher/defaults.js +0 -1
  88. package/dist/pacer/batcher/index.d.ts +0 -1
  89. package/dist/pacer/batcher/index.js +0 -1
  90. package/dist/pacer/index.d.ts +0 -1
  91. package/dist/pacer/index.js +0 -1
  92. package/dist/pacer/limiter/defaults.d.ts +0 -1
  93. package/dist/pacer/limiter/defaults.js +0 -1
  94. package/dist/pacer/limiter/index.d.ts +0 -1
  95. package/dist/pacer/limiter/index.js +0 -1
  96. package/dist/pacer/limiter/limiter.d.ts +0 -1
  97. package/dist/pacer/limiter/limiter.js +0 -1
  98. package/dist/pacer/queue/defaults.d.ts +0 -1
  99. package/dist/pacer/queue/defaults.js +0 -1
  100. package/dist/pacer/queue/index.d.ts +0 -1
  101. package/dist/pacer/queue/index.js +0 -1
  102. package/dist/pacer/queue/queue.d.ts +0 -1
  103. package/dist/pacer/queue/queue.js +0 -1
  104. package/dist/pacer/retry/defaults.d.ts +0 -1
  105. package/dist/pacer/retry/defaults.js +0 -1
  106. package/dist/pacer/retry/index.d.ts +0 -1
  107. package/dist/pacer/retry/index.js +0 -1
  108. package/dist/pacer/retry/retry.d.ts +0 -1
  109. package/dist/pacer/retry/retry.js +0 -1
  110. package/dist/pool/index.d.ts +0 -1
  111. package/dist/pool/index.js +0 -1
  112. package/dist/pool/pool.d.ts +0 -1
  113. package/dist/pool/pool.js +0 -1
  114. package/dist/pool/target.d.ts +0 -1
  115. package/dist/pool/target.js +0 -1
  116. package/dist/schema/admission.d.ts +9 -7
  117. package/dist/schema/admission.js +6 -12
  118. package/dist/schema/contracts.d.ts +6 -16
  119. package/dist/schema/contracts.js +0 -1
  120. package/dist/schema/index.d.ts +2 -3
  121. package/dist/schema/index.js +0 -1
  122. package/dist/schema/introspection.d.ts +1 -2
  123. package/dist/schema/introspection.js +7 -4
  124. package/dist/schema/operation.d.ts +0 -1
  125. package/dist/schema/operation.js +1 -2
  126. package/dist/schema/schema.d.ts +9 -10
  127. package/dist/schema/schema.js +47 -10
  128. package/dist/session/bound.d.ts +45 -0
  129. package/dist/session/bound.js +89 -0
  130. package/dist/session/context/control.d.ts +0 -1
  131. package/dist/session/context/control.js +0 -1
  132. package/dist/session/context/index.d.ts +0 -1
  133. package/dist/session/context/index.js +0 -1
  134. package/dist/session/context/limits.d.ts +0 -1
  135. package/dist/session/context/limits.js +0 -1
  136. package/dist/session/context/operation.d.ts +0 -1
  137. package/dist/session/context/operation.js +19 -17
  138. package/dist/session/context/policy.d.ts +1 -2
  139. package/dist/session/context/policy.js +2 -3
  140. package/dist/session/discovery/bundle.d.ts +0 -1
  141. package/dist/session/discovery/bundle.js +6 -6
  142. package/dist/session/discovery/discovery.d.ts +1 -2
  143. package/dist/session/discovery/discovery.js +0 -1
  144. package/dist/session/discovery/index.d.ts +1 -2
  145. package/dist/session/discovery/index.js +0 -1
  146. package/dist/session/discovery/publication.d.ts +1 -2
  147. package/dist/session/discovery/publication.js +6 -5
  148. package/dist/session/discovery/snapshot.d.ts +1 -2
  149. package/dist/session/discovery/snapshot.js +0 -1
  150. package/dist/session/discovery/transport.d.ts +6 -0
  151. package/dist/session/discovery/transport.js +13 -0
  152. package/dist/session/index.d.ts +6 -4
  153. package/dist/session/index.js +3 -2
  154. package/dist/session/reference.d.ts +36 -0
  155. package/dist/session/reference.js +74 -0
  156. package/dist/session/routing/auth.d.ts +1 -2
  157. package/dist/session/routing/auth.js +1 -2
  158. package/dist/session/routing/cache.d.ts +28 -8
  159. package/dist/session/routing/cache.js +212 -26
  160. package/dist/session/routing/dispatch.d.ts +3 -7
  161. package/dist/session/routing/dispatch.js +32 -25
  162. package/dist/session/routing/envelope.d.ts +2 -1
  163. package/dist/session/routing/envelope.js +14 -10
  164. package/dist/session/routing/expectation.d.ts +6 -0
  165. package/dist/session/routing/expectation.js +1 -0
  166. package/dist/session/routing/index.d.ts +2 -3
  167. package/dist/session/routing/index.js +1 -2
  168. package/dist/session/routing/request.d.ts +1 -2
  169. package/dist/session/routing/request.js +1 -2
  170. package/dist/session/session.d.ts +16 -10
  171. package/dist/session/session.js +50 -36
  172. package/dist/session/session.typecheck.d.ts +0 -1
  173. package/dist/session/session.typecheck.js +23 -2
  174. package/dist/session/views/catalog.d.ts +2 -3
  175. package/dist/session/views/catalog.js +15 -7
  176. package/dist/session/views/index.d.ts +0 -1
  177. package/dist/session/views/index.js +0 -1
  178. package/dist/session/views/resolve.d.ts +0 -1
  179. package/dist/session/views/resolve.js +4 -3
  180. package/dist/store/entity-index.d.ts +0 -1
  181. package/dist/store/entity-index.js +0 -1
  182. package/dist/store/index.d.ts +0 -1
  183. package/dist/store/index.js +0 -1
  184. package/dist/store/memory.d.ts +2 -2
  185. package/dist/store/memory.js +24 -13
  186. package/dist/store/mutation.d.ts +0 -1
  187. package/dist/store/mutation.js +0 -1
  188. package/dist/store/observe.d.ts +0 -1
  189. package/dist/store/observe.js +0 -1
  190. package/dist/store/optimistic.d.ts +0 -1
  191. package/dist/store/optimistic.js +0 -1
  192. package/dist/store/query-key.d.ts +2 -2
  193. package/dist/store/query-key.js +7 -3
  194. package/dist/store/shape.d.ts +3 -2
  195. package/dist/store/shape.js +3 -2
  196. package/dist/store/store.d.ts +2 -4
  197. package/dist/store/store.js +5 -4
  198. package/dist/store/store.typecheck.d.ts +0 -1
  199. package/dist/store/store.typecheck.js +3 -4
  200. package/dist/transport/auto/decision.d.ts +0 -1
  201. package/dist/transport/auto/decision.js +0 -1
  202. package/dist/transport/auto/fallback.d.ts +0 -1
  203. package/dist/transport/auto/fallback.js +8 -10
  204. package/dist/transport/auto/index.d.ts +0 -1
  205. package/dist/transport/auto/index.js +0 -1
  206. package/dist/transport/auto/transport.d.ts +0 -1
  207. package/dist/transport/auto/transport.js +5 -6
  208. package/dist/transport/auto/warning.d.ts +0 -1
  209. package/dist/transport/auto/warning.js +0 -1
  210. package/dist/transport/deadline.d.ts +0 -1
  211. package/dist/transport/deadline.js +0 -1
  212. package/dist/transport/failure.d.ts +7 -0
  213. package/dist/transport/failure.js +9 -0
  214. package/dist/transport/http/byte-stream.d.ts +17 -0
  215. package/dist/transport/http/byte-stream.js +86 -0
  216. package/dist/transport/http/index.d.ts +0 -1
  217. package/dist/transport/http/index.js +0 -1
  218. package/dist/transport/http/response.d.ts +2 -2
  219. package/dist/transport/http/response.js +2 -2
  220. package/dist/transport/http/stream.d.ts +2 -2
  221. package/dist/transport/http/stream.js +8 -8
  222. package/dist/transport/http/transport.d.ts +0 -1
  223. package/dist/transport/http/transport.js +36 -15
  224. package/dist/transport/index.d.ts +0 -1
  225. package/dist/transport/index.js +0 -1
  226. package/dist/transport/transport.d.ts +0 -1
  227. package/dist/transport/transport.js +0 -1
  228. package/dist/transport/websocket/connection.d.ts +2 -2
  229. package/dist/transport/websocket/connection.js +12 -25
  230. package/dist/transport/websocket/exchange.d.ts +1 -2
  231. package/dist/transport/websocket/exchange.js +6 -10
  232. package/dist/transport/websocket/index.d.ts +0 -1
  233. package/dist/transport/websocket/index.js +0 -1
  234. package/dist/transport/websocket/transport.d.ts +0 -1
  235. package/dist/transport/websocket/transport.js +8 -20
  236. package/package.json +21 -18
  237. package/dist/auth/auth.d.ts.map +0 -1
  238. package/dist/auth/auth.js.map +0 -1
  239. package/dist/auth/authorization.d.ts.map +0 -1
  240. package/dist/auth/authorization.js.map +0 -1
  241. package/dist/auth/credential.d.ts.map +0 -1
  242. package/dist/auth/credential.js.map +0 -1
  243. package/dist/auth/identity.d.ts.map +0 -1
  244. package/dist/auth/identity.js.map +0 -1
  245. package/dist/auth/index.d.ts.map +0 -1
  246. package/dist/auth/index.js.map +0 -1
  247. package/dist/auth/provision.d.ts.map +0 -1
  248. package/dist/auth/provision.js.map +0 -1
  249. package/dist/client/admission.d.ts.map +0 -1
  250. package/dist/client/admission.js.map +0 -1
  251. package/dist/client/client.d.ts.map +0 -1
  252. package/dist/client/client.js.map +0 -1
  253. package/dist/client/credential.d.ts.map +0 -1
  254. package/dist/client/credential.js.map +0 -1
  255. package/dist/client/index.d.ts.map +0 -1
  256. package/dist/client/index.js.map +0 -1
  257. package/dist/client/request.d.ts.map +0 -1
  258. package/dist/client/request.js.map +0 -1
  259. package/dist/client/result.d.ts.map +0 -1
  260. package/dist/client/result.js.map +0 -1
  261. package/dist/client/routing-control.d.ts.map +0 -1
  262. package/dist/client/routing-control.js.map +0 -1
  263. package/dist/domain/binding.d.ts +0 -24
  264. package/dist/domain/binding.d.ts.map +0 -1
  265. package/dist/domain/binding.js +0 -69
  266. package/dist/domain/binding.js.map +0 -1
  267. package/dist/domain/callable.d.ts +0 -25
  268. package/dist/domain/callable.d.ts.map +0 -1
  269. package/dist/domain/callable.js +0 -70
  270. package/dist/domain/callable.js.map +0 -1
  271. package/dist/domain/domain.typecheck.d.ts +0 -2
  272. package/dist/domain/domain.typecheck.d.ts.map +0 -1
  273. package/dist/domain/domain.typecheck.js +0 -69
  274. package/dist/domain/domain.typecheck.js.map +0 -1
  275. package/dist/domain/index.d.ts +0 -4
  276. package/dist/domain/index.d.ts.map +0 -1
  277. package/dist/domain/index.js +0 -2
  278. package/dist/domain/index.js.map +0 -1
  279. package/dist/domain/node.d.ts +0 -10
  280. package/dist/domain/node.d.ts.map +0 -1
  281. package/dist/domain/node.js +0 -6
  282. package/dist/domain/node.js.map +0 -1
  283. package/dist/errors/client-error.d.ts.map +0 -1
  284. package/dist/errors/client-error.js.map +0 -1
  285. package/dist/errors/index.d.ts.map +0 -1
  286. package/dist/errors/index.js.map +0 -1
  287. package/dist/errors/miss-error.d.ts.map +0 -1
  288. package/dist/errors/miss-error.js.map +0 -1
  289. package/dist/errors/protocol-error.d.ts.map +0 -1
  290. package/dist/errors/protocol-error.js.map +0 -1
  291. package/dist/errors/response-error.d.ts.map +0 -1
  292. package/dist/errors/response-error.js.map +0 -1
  293. package/dist/errors/stale-route-error.d.ts.map +0 -1
  294. package/dist/errors/stale-route-error.js.map +0 -1
  295. package/dist/errors/transport-error.d.ts.map +0 -1
  296. package/dist/errors/transport-error.js.map +0 -1
  297. package/dist/graph/errors.d.ts.map +0 -1
  298. package/dist/graph/errors.js.map +0 -1
  299. package/dist/graph/graph.d.ts.map +0 -1
  300. package/dist/graph/graph.js.map +0 -1
  301. package/dist/graph/index.d.ts.map +0 -1
  302. package/dist/graph/index.js.map +0 -1
  303. package/dist/graph/mutation.d.ts.map +0 -1
  304. package/dist/graph/mutation.js.map +0 -1
  305. package/dist/graph/page/index.d.ts.map +0 -1
  306. package/dist/graph/page/index.js.map +0 -1
  307. package/dist/graph/page/neighbors.d.ts.map +0 -1
  308. package/dist/graph/page/neighbors.js.map +0 -1
  309. package/dist/graph/page/page.d.ts.map +0 -1
  310. package/dist/graph/page/page.js.map +0 -1
  311. package/dist/graph/page-contract.d.ts.map +0 -1
  312. package/dist/graph/page-contract.js.map +0 -1
  313. package/dist/graph/query.d.ts.map +0 -1
  314. package/dist/graph/query.js.map +0 -1
  315. package/dist/graph/read.d.ts.map +0 -1
  316. package/dist/graph/read.js.map +0 -1
  317. package/dist/index.d.ts.map +0 -1
  318. package/dist/index.js.map +0 -1
  319. package/dist/pacer/batcher/batcher.d.ts.map +0 -1
  320. package/dist/pacer/batcher/batcher.js.map +0 -1
  321. package/dist/pacer/batcher/defaults.d.ts.map +0 -1
  322. package/dist/pacer/batcher/defaults.js.map +0 -1
  323. package/dist/pacer/batcher/index.d.ts.map +0 -1
  324. package/dist/pacer/batcher/index.js.map +0 -1
  325. package/dist/pacer/index.d.ts.map +0 -1
  326. package/dist/pacer/index.js.map +0 -1
  327. package/dist/pacer/limiter/defaults.d.ts.map +0 -1
  328. package/dist/pacer/limiter/defaults.js.map +0 -1
  329. package/dist/pacer/limiter/index.d.ts.map +0 -1
  330. package/dist/pacer/limiter/index.js.map +0 -1
  331. package/dist/pacer/limiter/limiter.d.ts.map +0 -1
  332. package/dist/pacer/limiter/limiter.js.map +0 -1
  333. package/dist/pacer/queue/defaults.d.ts.map +0 -1
  334. package/dist/pacer/queue/defaults.js.map +0 -1
  335. package/dist/pacer/queue/index.d.ts.map +0 -1
  336. package/dist/pacer/queue/index.js.map +0 -1
  337. package/dist/pacer/queue/queue.d.ts.map +0 -1
  338. package/dist/pacer/queue/queue.js.map +0 -1
  339. package/dist/pacer/retry/defaults.d.ts.map +0 -1
  340. package/dist/pacer/retry/defaults.js.map +0 -1
  341. package/dist/pacer/retry/index.d.ts.map +0 -1
  342. package/dist/pacer/retry/index.js.map +0 -1
  343. package/dist/pacer/retry/retry.d.ts.map +0 -1
  344. package/dist/pacer/retry/retry.js.map +0 -1
  345. package/dist/pool/index.d.ts.map +0 -1
  346. package/dist/pool/index.js.map +0 -1
  347. package/dist/pool/pool.d.ts.map +0 -1
  348. package/dist/pool/pool.js.map +0 -1
  349. package/dist/pool/target.d.ts.map +0 -1
  350. package/dist/pool/target.js.map +0 -1
  351. package/dist/schema/admission.d.ts.map +0 -1
  352. package/dist/schema/admission.js.map +0 -1
  353. package/dist/schema/contracts.d.ts.map +0 -1
  354. package/dist/schema/contracts.js.map +0 -1
  355. package/dist/schema/index.d.ts.map +0 -1
  356. package/dist/schema/index.js.map +0 -1
  357. package/dist/schema/introspection.d.ts.map +0 -1
  358. package/dist/schema/introspection.js.map +0 -1
  359. package/dist/schema/operation.d.ts.map +0 -1
  360. package/dist/schema/operation.js.map +0 -1
  361. package/dist/schema/schema.d.ts.map +0 -1
  362. package/dist/schema/schema.js.map +0 -1
  363. package/dist/session/context/control.d.ts.map +0 -1
  364. package/dist/session/context/control.js.map +0 -1
  365. package/dist/session/context/index.d.ts.map +0 -1
  366. package/dist/session/context/index.js.map +0 -1
  367. package/dist/session/context/limits.d.ts.map +0 -1
  368. package/dist/session/context/limits.js.map +0 -1
  369. package/dist/session/context/operation.d.ts.map +0 -1
  370. package/dist/session/context/operation.js.map +0 -1
  371. package/dist/session/context/policy.d.ts.map +0 -1
  372. package/dist/session/context/policy.js.map +0 -1
  373. package/dist/session/discovery/bundle.d.ts.map +0 -1
  374. package/dist/session/discovery/bundle.js.map +0 -1
  375. package/dist/session/discovery/discovery.d.ts.map +0 -1
  376. package/dist/session/discovery/discovery.js.map +0 -1
  377. package/dist/session/discovery/index.d.ts.map +0 -1
  378. package/dist/session/discovery/index.js.map +0 -1
  379. package/dist/session/discovery/publication.d.ts.map +0 -1
  380. package/dist/session/discovery/publication.js.map +0 -1
  381. package/dist/session/discovery/snapshot.d.ts.map +0 -1
  382. package/dist/session/discovery/snapshot.js.map +0 -1
  383. package/dist/session/index.d.ts.map +0 -1
  384. package/dist/session/index.js.map +0 -1
  385. package/dist/session/routing/auth.d.ts.map +0 -1
  386. package/dist/session/routing/auth.js.map +0 -1
  387. package/dist/session/routing/bound.d.ts +0 -7
  388. package/dist/session/routing/bound.d.ts.map +0 -1
  389. package/dist/session/routing/bound.js +0 -2
  390. package/dist/session/routing/bound.js.map +0 -1
  391. package/dist/session/routing/cache.d.ts.map +0 -1
  392. package/dist/session/routing/cache.js.map +0 -1
  393. package/dist/session/routing/dispatch.d.ts.map +0 -1
  394. package/dist/session/routing/dispatch.js.map +0 -1
  395. package/dist/session/routing/envelope.d.ts.map +0 -1
  396. package/dist/session/routing/envelope.js.map +0 -1
  397. package/dist/session/routing/index.d.ts.map +0 -1
  398. package/dist/session/routing/index.js.map +0 -1
  399. package/dist/session/routing/request.d.ts.map +0 -1
  400. package/dist/session/routing/request.js.map +0 -1
  401. package/dist/session/session.d.ts.map +0 -1
  402. package/dist/session/session.js.map +0 -1
  403. package/dist/session/session.typecheck.d.ts.map +0 -1
  404. package/dist/session/session.typecheck.js.map +0 -1
  405. package/dist/session/views/catalog.d.ts.map +0 -1
  406. package/dist/session/views/catalog.js.map +0 -1
  407. package/dist/session/views/index.d.ts.map +0 -1
  408. package/dist/session/views/index.js.map +0 -1
  409. package/dist/session/views/resolve.d.ts.map +0 -1
  410. package/dist/session/views/resolve.js.map +0 -1
  411. package/dist/store/entity-index.d.ts.map +0 -1
  412. package/dist/store/entity-index.js.map +0 -1
  413. package/dist/store/index.d.ts.map +0 -1
  414. package/dist/store/index.js.map +0 -1
  415. package/dist/store/memory.d.ts.map +0 -1
  416. package/dist/store/memory.js.map +0 -1
  417. package/dist/store/mutation.d.ts.map +0 -1
  418. package/dist/store/mutation.js.map +0 -1
  419. package/dist/store/observe.d.ts.map +0 -1
  420. package/dist/store/observe.js.map +0 -1
  421. package/dist/store/optimistic.d.ts.map +0 -1
  422. package/dist/store/optimistic.js.map +0 -1
  423. package/dist/store/query-key.d.ts.map +0 -1
  424. package/dist/store/query-key.js.map +0 -1
  425. package/dist/store/shape.d.ts.map +0 -1
  426. package/dist/store/shape.js.map +0 -1
  427. package/dist/store/store.d.ts.map +0 -1
  428. package/dist/store/store.js.map +0 -1
  429. package/dist/store/store.typecheck.d.ts.map +0 -1
  430. package/dist/store/store.typecheck.js.map +0 -1
  431. package/dist/transport/auto/decision.d.ts.map +0 -1
  432. package/dist/transport/auto/decision.js.map +0 -1
  433. package/dist/transport/auto/fallback.d.ts.map +0 -1
  434. package/dist/transport/auto/fallback.js.map +0 -1
  435. package/dist/transport/auto/index.d.ts.map +0 -1
  436. package/dist/transport/auto/index.js.map +0 -1
  437. package/dist/transport/auto/transport.d.ts.map +0 -1
  438. package/dist/transport/auto/transport.js.map +0 -1
  439. package/dist/transport/auto/warning.d.ts.map +0 -1
  440. package/dist/transport/auto/warning.js.map +0 -1
  441. package/dist/transport/deadline.d.ts.map +0 -1
  442. package/dist/transport/deadline.js.map +0 -1
  443. package/dist/transport/http/index.d.ts.map +0 -1
  444. package/dist/transport/http/index.js.map +0 -1
  445. package/dist/transport/http/response.d.ts.map +0 -1
  446. package/dist/transport/http/response.js.map +0 -1
  447. package/dist/transport/http/stream.d.ts.map +0 -1
  448. package/dist/transport/http/stream.js.map +0 -1
  449. package/dist/transport/http/transport.d.ts.map +0 -1
  450. package/dist/transport/http/transport.js.map +0 -1
  451. package/dist/transport/index.d.ts.map +0 -1
  452. package/dist/transport/index.js.map +0 -1
  453. package/dist/transport/transport.d.ts.map +0 -1
  454. package/dist/transport/transport.js.map +0 -1
  455. package/dist/transport/websocket/connection.d.ts.map +0 -1
  456. package/dist/transport/websocket/connection.js.map +0 -1
  457. package/dist/transport/websocket/exchange.d.ts.map +0 -1
  458. package/dist/transport/websocket/exchange.js.map +0 -1
  459. package/dist/transport/websocket/index.d.ts.map +0 -1
  460. package/dist/transport/websocket/index.js.map +0 -1
  461. package/dist/transport/websocket/transport.d.ts.map +0 -1
  462. package/dist/transport/websocket/transport.js.map +0 -1
@@ -1,6 +1,19 @@
1
1
  import { ClientError } from '../../errors/index.js';
2
2
  import { allowEndpoint } from '../context/index.js';
3
3
  export function selectEnvelope(endpoints, preference, websocketAvailable, pool, policy) {
4
+ const destination = selectEnvelopeTarget(endpoints, preference, websocketAvailable, policy);
5
+ const client = pool.clientFor(destination);
6
+ if (client === null ||
7
+ typeof client !== 'object' ||
8
+ typeof client.dispatch !== 'function' ||
9
+ typeof client.as !== 'function' ||
10
+ typeof client.close !== 'function') {
11
+ throw new TypeError('Session client pool capability returned an invalid Client.');
12
+ }
13
+ return Object.freeze({ client, destination });
14
+ }
15
+ /** Resolve and admit one route endpoint without acquiring a transport Client. */
16
+ export function selectEnvelopeTarget(endpoints, preference, websocketAvailable, policy) {
4
17
  let destination;
5
18
  if (preference === 'websocket') {
6
19
  if (endpoints.websocket === undefined) {
@@ -23,14 +36,5 @@ export function selectEnvelope(endpoints, preference, websocketAvailable, pool,
23
36
  allowEndpoint(endpoints.http, policy);
24
37
  destination = Object.freeze({ transport: 'http', url: endpoints.http });
25
38
  }
26
- const client = pool.clientFor(destination);
27
- if (client === null ||
28
- typeof client !== 'object' ||
29
- typeof client.dispatch !== 'function' ||
30
- typeof client.as !== 'function' ||
31
- typeof client.close !== 'function') {
32
- throw new TypeError('Session client pool capability returned an invalid Client.');
33
- }
34
- return Object.freeze({ client, destination });
39
+ return destination;
35
40
  }
36
- //# sourceMappingURL=envelope.js.map
@@ -0,0 +1,6 @@
1
+ import type { Key, Revision } from '@astrale-os/kernel-dsl/v1';
2
+ /** Private static-consumer expectation carried only by ClientSession.invoke. */
3
+ export interface SchemaExpectation {
4
+ readonly origin: Key.Origin;
5
+ readonly revision: Revision;
6
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,7 +1,6 @@
1
1
  export { admitSessionAuth, resolveAuth, type Auth, type EffectiveAuth, type SessionAuth, } from './auth.js';
2
- export type { BoundTarget } from './bound.js';
3
- export { RouteCache, type LearnedRoute } from './cache.js';
2
+ export type { SchemaExpectation } from './expectation.js';
3
+ export { RouteCache, type LearnedRoute, type PersistedRoute, type SessionRouteArtifact, type SessionRouteStore, } from './cache.js';
4
4
  export { requireResultKind, SessionDispatcher, type SessionDispatcherOptions } from './dispatch.js';
5
5
  export { type ClientPoolCapability, type EnvelopeSelection } from './envelope.js';
6
6
  export { admitEnvelopeTransport, admitRequestOptions, type SessionEnvelopeTransport, type SessionRequestOptions, } from './request.js';
7
- //# sourceMappingURL=index.d.ts.map
@@ -1,6 +1,5 @@
1
1
  export { admitSessionAuth, resolveAuth, } from './auth.js';
2
- export { RouteCache } from './cache.js';
2
+ export { RouteCache, } from './cache.js';
3
3
  export { requireResultKind, SessionDispatcher } from './dispatch.js';
4
4
  export {} from './envelope.js';
5
5
  export { admitEnvelopeTransport, admitRequestOptions, } from './request.js';
6
- //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- import type { invocation } from '@astrale-os/kernel-protocol';
1
+ import type * as invocation from '@astrale-os/kernel-protocol/invocation';
2
2
  import type { SessionControlOptions } from '../context/index.js';
3
3
  export type SessionEnvelopeTransport = 'auto' | 'http' | 'websocket';
4
4
  export interface SessionRequestOptions extends SessionControlOptions {
@@ -6,4 +6,3 @@ export interface SessionRequestOptions extends SessionControlOptions {
6
6
  }
7
7
  export declare function admitRequestOptions(input?: SessionRequestOptions): Readonly<SessionRequestOptions>;
8
8
  export declare function admitEnvelopeTransport(input: SessionEnvelopeTransport): SessionEnvelopeTransport;
9
- //# sourceMappingURL=request.d.ts.map
@@ -1,4 +1,4 @@
1
- import { invocation as invocationProtocol } from '@astrale-os/kernel-protocol';
1
+ import * as invocationProtocol from '@astrale-os/kernel-protocol/invocation';
2
2
  import { admitControlOptions } from '../context/index.js';
3
3
  export function admitRequestOptions(input = {}) {
4
4
  if (input === null || typeof input !== 'object' || Array.isArray(input)) {
@@ -23,4 +23,3 @@ export function admitEnvelopeTransport(input) {
23
23
  }
24
24
  return input;
25
25
  }
26
- //# sourceMappingURL=request.js.map
@@ -1,15 +1,17 @@
1
- import type { IssuerId } from '@astrale-os/kernel-core/auth';
1
+ import type { IssuerId } from '@astrale-os/kernel-core/auth/issuer';
2
2
  import type { PathLike } from '@astrale-os/kernel-core/path';
3
- import type { Key } from '@astrale-os/kernel-dsl/v1';
3
+ import type { Domain } from '@astrale-os/kernel-dsl/v1/domain';
4
4
  import type { Call, Input, Result } from '../client/index.js';
5
+ import type { DomainBinding, GraphApi } from '../graph/index.js';
5
6
  import type { ClientFactory, ClientPool as ClientPoolType } from '../pool/index.js';
6
- import type { ReadyInstallation, SchemaApi } from '../schema/index.js';
7
+ import type { SchemaApi } from '../schema/index.js';
7
8
  import type { ClientWarning } from '../transport/auto/index.js';
8
9
  import type { Fetch } from '../transport/http/index.js';
9
10
  import type { WebSocketConstructor } from '../transport/websocket/index.js';
10
11
  import type { SessionControlOptions, SessionPolicy } from './context/index.js';
11
12
  import type { SessionSnapshot } from './discovery/index.js';
12
- import type { SessionAuth, BoundTarget, SessionEnvelopeTransport, SessionRequestOptions } from './routing/index.js';
13
+ import type { CallableReference, InputOfReference, OutputOfReference } from './reference.js';
14
+ import type { SessionRouteStore, SessionAuth, SessionEnvelopeTransport, SessionRequestOptions } from './routing/index.js';
13
15
  import type { ViewCatalog } from './views/index.js';
14
16
  export interface ClientSessionOptions {
15
17
  /** Exact canonical source Kernel identity; its invocation and discovery endpoints are derived. */
@@ -19,6 +21,8 @@ export interface ClientSessionOptions {
19
21
  readonly pool?: Pick<ClientPoolType, 'clientFor'>;
20
22
  readonly websocket?: WebSocketConstructor;
21
23
  readonly auth?: SessionAuth;
24
+ /** Optional caller-owned persistence for bounded confidential route artifacts. */
25
+ readonly routeStore?: SessionRouteStore;
22
26
  readonly policy: SessionPolicy;
23
27
  readonly envelopeTransport?: SessionEnvelopeTransport;
24
28
  readonly onWarning?: (warning: ClientWarning) => void;
@@ -27,15 +31,15 @@ export interface ClientSessionOptions {
27
31
  readonly maximumResponseBytes?: number;
28
32
  readonly timeoutMs?: number;
29
33
  }
30
- export type ConnectOptions = Omit<ClientSessionOptions, 'policy'> & {
34
+ export type ConnectOptions = Omit<ClientSessionOptions, 'kernel' | 'policy'> & {
35
+ readonly url: string;
31
36
  readonly policy?: SessionPolicy;
32
37
  };
33
- /** Package-private exact-Publication dispatch used by Domain bindings. */
34
- export declare function dispatchBound(session: ClientSession, call: Call, expected: BoundTarget, options?: SessionRequestOptions): Promise<Result>;
35
38
  /** Caller-owned discovery and redirect-following conversation with one exact source Kernel. */
36
39
  export declare class ClientSession {
37
40
  readonly kernel: IssuerId;
38
41
  readonly schema: SchemaApi;
42
+ readonly graph: GraphApi;
39
43
  private readonly ownedPool?;
40
44
  private readonly discovery;
41
45
  private readonly dispatcher;
@@ -45,17 +49,19 @@ export declare class ClientSession {
45
49
  private readonly admitTargetViews;
46
50
  private closed;
47
51
  constructor(options: ClientSessionOptions);
52
+ /** Bind one admitted DSL Domain to authenticated graph projection and Method dispatch. */
53
+ bind<const DomainValue extends Domain>(domain: DomainValue): DomainBinding<DomainValue>;
48
54
  snapshot(options?: SessionControlOptions): Promise<SessionSnapshot>;
49
55
  viewsFor(target: PathLike, options?: SessionControlOptions): Promise<ViewCatalog>;
50
- installed(origin: Key.Origin, options?: SessionControlOptions): Promise<ReadyInstallation>;
51
56
  dispatch(call: Call, options?: SessionRequestOptions): Promise<Result>;
52
57
  call(call: Call, options?: SessionRequestOptions): Promise<Input>;
58
+ invoke<const Reference extends CallableReference>(reference: Reference, input: InputOfReference<Reference>, options?: SessionRequestOptions): Promise<OutputOfReference<Reference>>;
53
59
  stream(call: Call, options?: SessionRequestOptions): Promise<import("../client/result.js").Stream>;
54
- binary(call: Call, options?: SessionRequestOptions): Promise<import("@astrale-os/kernel-core/domain").BinaryResult>;
60
+ binary(call: Call, options?: SessionRequestOptions): Promise<import("@astrale-os/kernel-core/callable").BinaryOutput>;
55
61
  close(): void;
56
62
  private requireOpen;
63
+ private invokeDomainMethod;
57
64
  private operation;
58
65
  }
59
66
  /** Open one caller-owned conversation with a Kernel using secure defaults. */
60
67
  export declare function connect(options: ConnectOptions): ClientSession;
61
- //# sourceMappingURL=session.d.ts.map
@@ -1,5 +1,8 @@
1
+ import { Path } from '@astrale-os/kernel-core/path';
1
2
  import { Client } from '../client/index.js';
2
- import { ClientError } from '../errors/index.js';
3
+ import { SessionError } from '../errors/index.js';
4
+ import { createDomainBinding } from '../graph/domain/binding.js';
5
+ import { createGraph } from '../graph/index.js';
3
6
  import { ClientPool } from '../pool/index.js';
4
7
  import { createSchema } from '../schema/index.js';
5
8
  import { AutoTransport } from '../transport/auto/index.js';
@@ -7,21 +10,15 @@ import { HttpTransport } from '../transport/http/index.js';
7
10
  import { WebSocketTransport } from '../transport/websocket/index.js';
8
11
  import { admitControlOptions, admitPolicy, createSessionOperation, DEFAULT_MAXIMUM_BUNDLE_BYTES, DEFAULT_MAXIMUM_PUBLICATION_BYTES, DEFAULT_MAXIMUM_RESPONSE_BYTES, DEFAULT_TIMEOUT_MS, admitKernel, kernelInvocationEndpoint, platformDuration, positive, } from './context/index.js';
9
12
  import { createSessionDiscovery } from './discovery/index.js';
13
+ import { admitReference } from './reference.js';
10
14
  import { admitEnvelopeTransport, admitRequestOptions, admitSessionAuth, requireResultKind, RouteCache, SessionDispatcher, } from './routing/index.js';
11
15
  import { resolveViewsFor, targetViewCatalog } from './views/index.js';
12
16
  const DEFAULT_SESSION_POLICY = Object.freeze({ maximumRouteAgeMs: 60_000 });
13
- const boundDispatch = new WeakMap();
14
- /** Package-private exact-Publication dispatch used by Domain bindings. */
15
- export function dispatchBound(session, call, expected, options) {
16
- const dispatch = boundDispatch.get(session);
17
- if (dispatch === undefined)
18
- throw new TypeError('Bound dispatch requires an owned ClientSession.');
19
- return dispatch(call, expected, options);
20
- }
21
17
  /** Caller-owned discovery and redirect-following conversation with one exact source Kernel. */
22
18
  export class ClientSession {
23
19
  kernel;
24
20
  schema;
21
+ graph;
25
22
  ownedPool;
26
23
  discovery;
27
24
  dispatcher;
@@ -80,7 +77,7 @@ export class ClientSession {
80
77
  requireOpen: () => this.requireOpen(),
81
78
  acquisitionOperation: () => this.operation(undefined),
82
79
  });
83
- this.routes = new RouteCache(policy.maximumRouteAgeMs);
80
+ this.routes = new RouteCache(policy.maximumRouteAgeMs, undefined, options.routeStore);
84
81
  this.dispatcher = new SessionDispatcher({
85
82
  kernel: this.kernel,
86
83
  sourceEndpoint,
@@ -90,17 +87,17 @@ export class ClientSession {
90
87
  cache: this.routes,
91
88
  policy,
92
89
  envelopeTransport: admitEnvelopeTransport(options.envelopeTransport ?? 'http'),
93
- discovery: this.discovery,
94
90
  requireOpen: () => this.requireOpen(),
95
91
  });
96
92
  this.schema = createSchema((request, options) => this.dispatch(request, options), {
97
93
  maximumPublicationBytes,
98
94
  maximumBundleBytes,
99
95
  });
100
- boundDispatch.set(this, (request, expected, options) => {
101
- const admitted = admitRequestOptions(options);
102
- return this.dispatcher.dispatch(request, admitted, this.operation(admitted), expected);
103
- });
96
+ this.graph = createGraph((call, options) => this.call(call, options));
97
+ }
98
+ /** Bind one admitted DSL Domain to authenticated graph projection and Method dispatch. */
99
+ bind(domain) {
100
+ return createDomainBinding(domain, this.graph, (node, method, input) => this.invokeDomainMethod(domain, node, method, input));
104
101
  }
105
102
  snapshot(options) {
106
103
  return this.discovery.snapshot(this.operation(admitControlOptions(options)));
@@ -109,23 +106,6 @@ export class ClientSession {
109
106
  this.requireOpen();
110
107
  return resolveViewsFor(async (call, operation) => requireResultKind('value', await this.dispatcher.dispatch(call, {}, operation)).value, this.admitTargetViews, target, this.operation(admitControlOptions(options)));
111
108
  }
112
- async installed(origin, options) {
113
- const result = await this.schema.introspect({
114
- from: { kind: 'installation', origin },
115
- select: {
116
- state: true,
117
- target: true,
118
- source: true,
119
- bundle: true,
120
- readiness: true,
121
- capabilities: true,
122
- },
123
- }, options);
124
- if (result?.state !== 'ready' || result.readiness === null) {
125
- throw new ClientError(`Domain ${origin} is not ready on this Kernel.`);
126
- }
127
- return result;
128
- }
129
109
  dispatch(call, options) {
130
110
  const admitted = admitRequestOptions(options);
131
111
  return this.dispatcher.dispatch(call, admitted, this.operation(admitted));
@@ -134,6 +114,21 @@ export class ClientSession {
134
114
  const result = await this.dispatch(call, options);
135
115
  return requireResultKind('value', result).value;
136
116
  }
117
+ async invoke(reference, input, options) {
118
+ const admittedReference = admitReference(reference);
119
+ const admittedOptions = admitRequestOptions(options);
120
+ const expected = Object.freeze({
121
+ origin: admittedReference.origin,
122
+ revision: admittedReference.revision,
123
+ });
124
+ const result = await this.dispatcher.dispatch({ target: admittedReference.target, input }, admittedOptions, this.operation(admittedOptions), expected);
125
+ const narrowed = requireResultKind(admittedReference.outputMode, result);
126
+ return (narrowed.kind === 'value'
127
+ ? narrowed.value
128
+ : narrowed.kind === 'stream'
129
+ ? narrowed.stream
130
+ : narrowed.value);
131
+ }
137
132
  async stream(call, options) {
138
133
  const result = await this.dispatch(call, options);
139
134
  return requireResultKind('stream', result).stream;
@@ -146,14 +141,29 @@ export class ClientSession {
146
141
  if (this.closed)
147
142
  return;
148
143
  this.closed = true;
149
- this.lifecycle.abort(new ClientError('ClientSession is closed.'));
144
+ this.lifecycle.abort(new SessionError('ClientSession is closed.', { failure: 'closed' }));
150
145
  this.ownedPool?.close();
151
146
  this.routes.clear();
152
147
  this.discovery.clear();
153
148
  }
154
149
  requireOpen() {
155
150
  if (this.closed)
156
- throw new ClientError('ClientSession is closed.');
151
+ throw new SessionError('ClientSession is closed.', { failure: 'closed' });
152
+ }
153
+ invokeDomainMethod(domain, node, method, input) {
154
+ const diagnostics = method.validateInput(input);
155
+ if (diagnostics.length > 0)
156
+ throw new TypeError(`Method ${method.key} input is invalid.`);
157
+ const owner = domain.closure.find(({ origin }) => origin === method.owner.ref.origin);
158
+ if (owner === undefined)
159
+ throw new TypeError(`Method owner ${method.owner.ref.origin} is absent.`);
160
+ return this.invoke({
161
+ origin: owner.origin,
162
+ revision: owner.revision,
163
+ callable: method.key,
164
+ target: Path.instanceMethod(Path.id(node.id), method.name),
165
+ outputMode: method.output.mode,
166
+ }, input);
157
167
  }
158
168
  operation(options) {
159
169
  this.requireOpen();
@@ -162,8 +172,13 @@ export class ClientSession {
162
172
  }
163
173
  /** Open one caller-owned conversation with a Kernel using secure defaults. */
164
174
  export function connect(options) {
175
+ if (options === null || typeof options !== 'object') {
176
+ throw new TypeError('Connect options are invalid.');
177
+ }
178
+ const { url, ...rest } = options;
165
179
  return new ClientSession({
166
- ...options,
180
+ ...rest,
181
+ kernel: url,
167
182
  policy: options.policy ?? DEFAULT_SESSION_POLICY,
168
183
  });
169
184
  }
@@ -222,4 +237,3 @@ function defaultClientFactory(options) {
222
237
  }
223
238
  };
224
239
  }
225
- //# sourceMappingURL=session.js.map
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=session.typecheck.d.ts.map
@@ -1,4 +1,7 @@
1
- import { ClientSession } from './index.js';
1
+ import { NodeId } from '@astrale-os/kernel-core/graph/node';
2
+ import { Path } from '@astrale-os/kernel-core/path';
3
+ import { defineSchema, method, nodeClass, schema } from '@astrale-os/kernel-dsl/v1';
4
+ import { ClientSession, reference } from './index.js';
2
5
  void new ClientSession(options);
3
6
  void auth;
4
7
  void control;
@@ -6,5 +9,23 @@ void envelope;
6
9
  void policy;
7
10
  void request;
8
11
  void snapshot;
12
+ const dynamicReference = reference(dynamicDomain, dynamicMethod)(Path.id(NodeId('dynamic-node')));
13
+ void session.invoke(dynamicReference, dynamicInput);
14
+ const dynamicInputIsClientInput = true;
15
+ const dynamicOutputIsUnknown = true;
16
+ void dynamicInputIsClientInput;
17
+ void dynamicOutputIsUnknown;
18
+ const abstractMethod = method({
19
+ auth: 'authenticated',
20
+ input: { type: 'null' },
21
+ output: { type: 'null' },
22
+ inheritance: 'abstract',
23
+ });
24
+ const abstractDomain = schema.resolve(defineSchema('client.reference.typecheck', {
25
+ classes: {
26
+ AbstractItem: nodeClass({ abstract: true, methods: { abstractMethod } }),
27
+ },
28
+ }));
29
+ // @ts-expect-error Abstract Methods are declarations and cannot become Client references.
30
+ reference(abstractDomain, abstractDomain.classes.AbstractItem.methods.abstractMethod);
9
31
  void {};
10
- //# sourceMappingURL=session.typecheck.js.map
@@ -1,9 +1,9 @@
1
1
  import type { Key, bundle } from '@astrale-os/kernel-dsl/v1';
2
2
  import type { publication } from '@astrale-os/kernel-protocol';
3
- import { syscalls } from '@astrale-os/kernel-core/schema';
3
+ import { type ResolvedView } from '@astrale-os/kernel-core/schema/kernel/syscalls/view-resolution';
4
+ export type { ResolvedView } from '@astrale-os/kernel-core/schema/kernel/syscalls/view-resolution';
4
5
  import type { SessionPolicy } from '../context/index.js';
5
6
  /** One verified View declaration joined with its owning Publication and provenance. */
6
- export type ResolvedView = syscalls.view.ResolvedView;
7
7
  /** Immutable canonical-key-ordered inventory of Views resolved under one Session revision. */
8
8
  export interface ViewCatalog {
9
9
  readonly entrypoint?: ResolvedView;
@@ -13,4 +13,3 @@ export declare function rootViewCatalog(publication: publication.Publication, ar
13
13
  export declare function catalogFromKeys(root: ViewCatalog, keys: readonly Key.View[]): ViewCatalog;
14
14
  /** Re-admit one Runtime-resolved heterogeneous View catalog at the Client trust boundary. */
15
15
  export declare function targetViewCatalog(input: unknown, policy: Readonly<SessionPolicy>): ViewCatalog;
16
- //# sourceMappingURL=catalog.d.ts.map
@@ -1,20 +1,22 @@
1
- import { syscalls } from '@astrale-os/kernel-core/schema';
2
- import { Key as ViewKey, Ref } from '@astrale-os/kernel-dsl/v1';
1
+ import { acceptViewResolution, } from '@astrale-os/kernel-core/schema/kernel/syscalls/view-resolution';
2
+ import { Key as ViewKey } from '@astrale-os/kernel-dsl/v1/addressing';
3
3
  import { ClientError } from '../../errors/index.js';
4
4
  import { allowEndpoint } from '../context/index.js';
5
5
  export function rootViewCatalog(publication, artifact, policy) {
6
6
  const views = publication.bindings.views
7
7
  .map((binding) => {
8
8
  allowEndpoint(binding.href, policy);
9
- const declaration = artifact.root.views[Ref.member(ViewKey.ref(binding.view))];
9
+ const declaration = artifact.root.views[viewName(binding.view)];
10
10
  if (declaration === undefined) {
11
11
  throw new ClientError('Published View has no verified root declaration.');
12
12
  }
13
+ const { ref: _ref, ...viewDeclaration } = declaration;
13
14
  return Object.freeze({
14
15
  key: binding.view,
15
- declaration,
16
+ declaration: Object.freeze(viewDeclaration),
16
17
  href: binding.href,
17
18
  handshake: binding.handshake,
19
+ ...(binding.iframe === undefined ? {} : { iframe: binding.iframe }),
18
20
  issuer: publication.identity.issuer,
19
21
  etag: publication.etag,
20
22
  revision: publication.schema.revision,
@@ -25,7 +27,7 @@ export function rootViewCatalog(publication, artifact, policy) {
25
27
  const entrypointRef = publication.manifest?.entrypoint;
26
28
  const entrypoint = entrypointRef === undefined
27
29
  ? undefined
28
- : catalogViews.find(({ key }) => key === ViewKey.of(publication.origin, entrypointRef));
30
+ : catalogViews.find(({ key }) => key === ViewKey.of(entrypointRef));
29
31
  if (entrypointRef !== undefined && entrypoint === undefined) {
30
32
  throw new ClientError('Published View entrypoint has no verified Publication binding.');
31
33
  }
@@ -48,7 +50,7 @@ export function catalogFromKeys(root, keys) {
48
50
  export function targetViewCatalog(input, policy) {
49
51
  let resolution;
50
52
  try {
51
- resolution = syscalls.view.acceptResolution(input);
53
+ resolution = acceptViewResolution(input);
52
54
  }
53
55
  catch (cause) {
54
56
  throw new ClientError('Resolved View catalog is invalid.', { cause });
@@ -60,4 +62,10 @@ export function targetViewCatalog(input, policy) {
60
62
  function compareKeys(left, right) {
61
63
  return left < right ? -1 : left > right ? 1 : 0;
62
64
  }
63
- //# sourceMappingURL=catalog.js.map
65
+ function viewName(input) {
66
+ const coordinate = input.slice(input.indexOf(':') + 1);
67
+ const match = /^view\.([A-Za-z][A-Za-z0-9_]*)$/u.exec(coordinate);
68
+ if (match === null)
69
+ throw new ClientError('Published View key is invalid.');
70
+ return match[1];
71
+ }
@@ -1,3 +1,2 @@
1
1
  export { catalogFromKeys, rootViewCatalog, targetViewCatalog, type ResolvedView, type ViewCatalog, } from './catalog.js';
2
2
  export { resolveViewsFor, type ViewCatalogAdmission, type ViewInvoker } from './resolve.js';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,2 @@
1
1
  export { catalogFromKeys, rootViewCatalog, targetViewCatalog, } from './catalog.js';
2
2
  export { resolveViewsFor } from './resolve.js';
3
- //# sourceMappingURL=index.js.map
@@ -9,4 +9,3 @@ export type ViewCatalogAdmission = (input: unknown) => ViewCatalog;
9
9
  * its heterogeneous installed-Publication projection.
10
10
  */
11
11
  export declare function resolveViewsFor(invoke: ViewInvoker, admitCatalog: ViewCatalogAdmission, target: PathLike, operation: SessionOperation): Promise<ViewCatalog>;
12
- //# sourceMappingURL=resolve.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import { Path } from '@astrale-os/kernel-core/path';
2
- import { K } from '@astrale-os/kernel-core/schema';
2
+ import { view } from '@astrale-os/kernel-core/schema/kernel/syscalls/references';
3
3
  import { call } from '../../client/index.js';
4
4
  /**
5
5
  * Invoke Runtime-owned target View resolution through the canonical source Kernel call, then admit
@@ -7,6 +7,7 @@ import { call } from '../../client/index.js';
7
7
  */
8
8
  export async function resolveViewsFor(invoke, admitCatalog, target, operation) {
9
9
  const path = Path.from(target).raw;
10
- return admitCatalog(await invoke(call(K.View.resolve.path, { target: path }), operation));
10
+ const owner = Path.project(view.resolve.owner);
11
+ const targetView = Path.staticMethod(owner, view.resolve.name);
12
+ return admitCatalog(await invoke(call(targetView, { target: path }), operation));
11
13
  }
12
- //# sourceMappingURL=resolve.js.map
@@ -20,4 +20,3 @@ export declare class EntityIndex {
20
20
  clear(): void;
21
21
  }
22
22
  export declare function edgeIdentity(key: EdgeKey): string;
23
- //# sourceMappingURL=entity-index.d.ts.map
@@ -92,4 +92,3 @@ export function edgeIdentity(key) {
92
92
  function signature(value) {
93
93
  return JSON.stringify(value);
94
94
  }
95
- //# sourceMappingURL=entity-index.js.map
@@ -1,2 +1 @@
1
1
  export { GraphStore, type StoreMutationOptions, type StoreOptions, type StoreQuery, type StoreQueryResponse, type StoreReadOptions, type StoreSnapshot, } from './store.js';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1 @@
1
1
  export { GraphStore, } from './store.js';
2
- //# sourceMappingURL=index.js.map
@@ -1,4 +1,5 @@
1
1
  import type { QueryAST } from '@astrale-os/kernel-core/graph/query';
2
+ import type { DomainDependency } from '@astrale-os/kernel-dsl/v1/schema';
2
3
  import type { QueryPageRequest } from '../graph/index.js';
3
4
  import type { GraphApi } from '../graph/index.js';
4
5
  import type { StoreQueryResponse, StoreReadOptions, StoreSnapshot } from './store.js';
@@ -24,7 +25,7 @@ export declare class GraphMemory {
24
25
  private readonly pending;
25
26
  private active;
26
27
  constructor(options: GraphMemoryOptions);
27
- ensure(key: string, ast: QueryAST, page: QueryPageRequest): QueryShape;
28
+ ensure(key: string, ast: QueryAST, page: QueryPageRequest, expected: readonly DomainDependency[] | undefined): QueryShape;
28
29
  get(key: string): QueryShape | undefined;
29
30
  read(shape: QueryShape, options: StoreReadOptions): Promise<StoreQueryResponse>;
30
31
  snapshot(shape: QueryShape | undefined): StoreSnapshot;
@@ -46,4 +47,3 @@ export declare class GraphMemory {
46
47
  private drain;
47
48
  private report;
48
49
  }
49
- //# sourceMappingURL=memory.d.ts.map
@@ -1,5 +1,6 @@
1
1
  import { encodeEdgeKey } from '@astrale-os/kernel-core/graph/edge';
2
2
  import { ClientError } from '../errors/index.js';
3
+ import { retainDerivedQueryProvenance } from '../graph/provenance.js';
3
4
  import { edgeIdentity, EntityIndex } from './entity-index.js';
4
5
  import { OptimisticOverlay } from './optimistic.js';
5
6
  import { COLD_SNAPSHOT, QueryShape } from './shape.js';
@@ -13,7 +14,7 @@ export class GraphMemory {
13
14
  constructor(options) {
14
15
  this.options = options;
15
16
  }
16
- ensure(key, ast, page) {
17
+ ensure(key, ast, page, expected) {
17
18
  const existing = this.shapes.get(key);
18
19
  const now = this.options.now();
19
20
  if (existing !== undefined) {
@@ -26,7 +27,7 @@ export class GraphMemory {
26
27
  if (this.shapes.size >= this.options.maximumShapes) {
27
28
  throw new ClientError('GraphStore shape capacity is exhausted by observed or in-flight queries.');
28
29
  }
29
- const shape = new QueryShape(key, ast, page, now);
30
+ const shape = new QueryShape(key, ast, page, expected, now);
30
31
  shape.releasedAt = now;
31
32
  this.shapes.set(key, shape);
32
33
  return shape;
@@ -52,7 +53,7 @@ export class GraphMemory {
52
53
  const prior = shape.response;
53
54
  this.publish(shape, prior === undefined ? 'loading' : this.overlay.hasAny() ? 'optimistic' : 'refreshing');
54
55
  const inflight = this.schedule(async () => {
55
- const result = await this.options.graph.query(shape.ast, queryOptions(shape.page, this.options.lifecycle));
56
+ const result = await this.options.graph.query(shape.ast, queryOptions(shape.page, this.options.lifecycle, shape.expected));
56
57
  this.options.requireOpen();
57
58
  const integration = this.entities.integrate(result.result);
58
59
  shape.references = integration.references;
@@ -182,10 +183,11 @@ export class GraphMemory {
182
183
  this.pending.shift()?.reject(error);
183
184
  }
184
185
  materialize(template, references) {
185
- return Object.freeze({
186
+ const response = Object.freeze({
186
187
  result: this.materializeResult(template.result, references),
187
188
  page: template.page,
188
189
  });
190
+ return retainDerivedQueryProvenance(template, response);
189
191
  }
190
192
  materializeResult(template, references) {
191
193
  if (template.kind === 'nodes') {
@@ -196,8 +198,9 @@ export class GraphMemory {
196
198
  continue;
197
199
  }
198
200
  const node = this.overlay.node(projection.value.id, this.entities);
199
- if (node !== undefined)
200
- nodes.push(Object.freeze({ kind: 'value', value: node }));
201
+ if (node !== undefined) {
202
+ nodes.push(Object.freeze({ kind: 'value', value: materializeNode(node) }));
203
+ }
201
204
  }
202
205
  return Object.freeze({
203
206
  kind: 'nodes',
@@ -213,7 +216,7 @@ export class GraphMemory {
213
216
  const value = this.entities.edge(edgeIdentity(item.edge.value));
214
217
  return value === undefined
215
218
  ? undefined
216
- : Object.freeze({ kind: 'value', value });
219
+ : Object.freeze({ kind: 'value', value: materializeEdge(value) });
217
220
  })();
218
221
  const source = item.source.kind === 'reference'
219
222
  ? item.source
@@ -221,7 +224,7 @@ export class GraphMemory {
221
224
  const value = this.overlay.node(item.source.value.id, this.entities);
222
225
  return value === undefined
223
226
  ? undefined
224
- : Object.freeze({ kind: 'value', value });
227
+ : Object.freeze({ kind: 'value', value: materializeNode(value) });
225
228
  })();
226
229
  const target = item.target.kind === 'reference'
227
230
  ? item.target
@@ -229,7 +232,7 @@ export class GraphMemory {
229
232
  const value = this.overlay.node(item.target.value.id, this.entities);
230
233
  return value === undefined
231
234
  ? undefined
232
- : Object.freeze({ kind: 'value', value });
235
+ : Object.freeze({ kind: 'value', value: materializeNode(value) });
233
236
  })();
234
237
  if (edge !== undefined && source !== undefined && target !== undefined) {
235
238
  edges.push(Object.freeze({ edge, source, target }));
@@ -242,11 +245,13 @@ export class GraphMemory {
242
245
  }
243
246
  const nodes = references.nodes
244
247
  .map((id) => this.overlay.node(id, this.entities))
245
- .filter((node) => node !== undefined);
248
+ .filter((node) => node !== undefined)
249
+ .map(materializeNode);
246
250
  const visibleNodeIds = new Set(nodes.map(({ id }) => id));
247
251
  const edges = references.edges
248
252
  .map((key) => this.entities.edge(key))
249
- .filter((edge) => edge !== undefined && visibleNodeIds.has(edge.source) && visibleNodeIds.has(edge.target));
253
+ .filter((edge) => edge !== undefined && visibleNodeIds.has(edge.source) && visibleNodeIds.has(edge.target))
254
+ .map(materializeEdge);
250
255
  const graph = Object.freeze({ nodes: Object.freeze(nodes), edges: Object.freeze(edges) });
251
256
  const selection = materializeSelection(template.selection, visibleNodeIds, edges);
252
257
  return selection.kind === 'node'
@@ -297,6 +302,12 @@ export class GraphMemory {
297
302
  }
298
303
  }
299
304
  }
305
+ function materializeNode(value) {
306
+ return Object.freeze({ ...value });
307
+ }
308
+ function materializeEdge(value) {
309
+ return Object.freeze({ ...value });
310
+ }
300
311
  function materializeSelection(selection, visibleNodes, visibleEdges) {
301
312
  if (selection.kind === 'node') {
302
313
  return Object.freeze({
@@ -310,10 +321,11 @@ function materializeSelection(selection, visibleNodes, visibleEdges) {
310
321
  keys: Object.freeze(selection.keys.filter((key) => edges.has(encodeEdgeKey(key)))),
311
322
  });
312
323
  }
313
- function queryOptions(page, lifecycle) {
324
+ function queryOptions(page, lifecycle, expected) {
314
325
  return Object.freeze({
315
326
  signal: lifecycle,
316
327
  page,
328
+ ...(expected === undefined ? {} : { expected }),
317
329
  });
318
330
  }
319
331
  function observeRead(pending, options, lifecycle) {
@@ -394,4 +406,3 @@ function sameSnapshot(left, right) {
394
406
  }
395
407
  return left.state !== 'failed' || right.state !== 'failed' || left.error === right.error;
396
408
  }
397
- //# sourceMappingURL=memory.js.map