@astrale-os/sdk 0.6.0-beta.3 → 0.6.0-beta.30

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 (444) hide show
  1. package/README.md +179 -58
  2. package/dist/application/action/action.d.ts +6 -0
  3. package/dist/application/action/authoring.d.ts +1 -1
  4. package/dist/application/action/context.d.ts +44 -31
  5. package/dist/application/action/define.d.ts +3 -3
  6. package/dist/application/action/index.d.ts +1 -1
  7. package/dist/application/define.d.ts +8 -6
  8. package/dist/application/define.js +28 -14
  9. package/dist/application/dependency/index.d.ts +1 -1
  10. package/dist/application/dependency/invoker.d.ts +14 -9
  11. package/dist/application/domain.d.ts +30 -0
  12. package/dist/application/index.d.ts +4 -4
  13. package/dist/application/index.js +1 -1
  14. package/dist/application/integration/operation.d.ts +2 -2
  15. package/dist/application/mutation/authoring/properties.d.ts +5 -3
  16. package/dist/application/mutation/authoring/properties.js +35 -2
  17. package/dist/application/mutation/authoring/transition.js +4 -1
  18. package/dist/application/mutation/index.d.ts +1 -1
  19. package/dist/application/query/composite/plan.d.ts +0 -4
  20. package/dist/application/query/composite/plan.js +0 -2
  21. package/dist/application/routes/admission.d.ts +2 -2
  22. package/dist/application/routes/admission.js +1 -1
  23. package/dist/application/routes/route.d.ts +2 -2
  24. package/dist/application/runtime/actions.js +3 -0
  25. package/dist/application/runtime/workflows.d.ts +3 -1
  26. package/dist/application/runtime/workflows.js +6 -4
  27. package/dist/application/view/define.js +4 -6
  28. package/dist/application/view/frontend.d.ts +2 -2
  29. package/dist/application/view/index.d.ts +1 -1
  30. package/dist/application/view/route.d.ts +0 -14
  31. package/dist/application/view/route.js +1 -64
  32. package/dist/application/workflow/authoring.d.ts +3 -2
  33. package/dist/application/workflow/context.d.ts +8 -2
  34. package/dist/application/workflow/define.d.ts +4 -4
  35. package/dist/application/workflow/define.js +20 -4
  36. package/dist/application/workflow/durable.d.ts +87 -0
  37. package/dist/application/workflow/index.d.ts +3 -2
  38. package/dist/application/workflow/runner/inline.js +3 -4
  39. package/dist/application/workflow/runner/runner.d.ts +2 -2
  40. package/dist/application/workflow/step/output.d.ts +2 -0
  41. package/dist/application/workflow/step/output.js +73 -0
  42. package/dist/application/workflow/workflow.d.ts +13 -3
  43. package/dist/deployment/adapter/adapter.d.ts +55 -13
  44. package/dist/deployment/adapter/bundle/bundle.d.ts +36 -0
  45. package/dist/deployment/adapter/bundle/file.d.ts +10 -0
  46. package/dist/deployment/adapter/bundle/index.d.ts +2 -0
  47. package/dist/deployment/adapter/define.d.ts +4 -3
  48. package/dist/deployment/adapter/define.js +107 -23
  49. package/dist/deployment/adapter/index.d.ts +4 -3
  50. package/dist/deployment/adapter/index.js +1 -0
  51. package/dist/deployment/adapter/release/command.d.ts +33 -0
  52. package/dist/deployment/adapter/release/context.d.ts +94 -0
  53. package/dist/deployment/adapter/release/index.d.ts +4 -0
  54. package/dist/deployment/adapter/release/index.js +1 -0
  55. package/dist/deployment/adapter/release/list.d.ts +53 -0
  56. package/dist/deployment/adapter/release/list.js +1 -0
  57. package/dist/deployment/adapter/release/refusal.d.ts +10 -0
  58. package/dist/deployment/adapter/release/refusal.js +14 -0
  59. package/dist/deployment/adapter/release/result.d.ts +56 -0
  60. package/dist/deployment/adapter/release/result.js +1 -0
  61. package/dist/deployment/address/configuration.d.ts +95 -0
  62. package/dist/deployment/address/configuration.js +273 -0
  63. package/dist/deployment/address/fingerprint.d.ts +5 -0
  64. package/dist/deployment/address/fingerprint.js +27 -0
  65. package/dist/deployment/address/index.d.ts +5 -0
  66. package/dist/deployment/address/index.js +4 -0
  67. package/dist/deployment/address/label.d.ts +42 -0
  68. package/dist/deployment/address/label.js +80 -0
  69. package/dist/deployment/address/line.d.ts +29 -0
  70. package/dist/deployment/address/line.js +53 -0
  71. package/dist/deployment/address/record.d.ts +73 -0
  72. package/dist/deployment/address/record.js +138 -0
  73. package/dist/deployment/address/summary.d.ts +30 -0
  74. package/dist/deployment/address/summary.js +1 -0
  75. package/dist/deployment/address/vectors.d.ts +60 -0
  76. package/dist/deployment/address/vectors.js +517 -0
  77. package/dist/deployment/authoring.d.ts +0 -2
  78. package/dist/deployment/authoring.js +0 -1
  79. package/dist/deployment/build/build.d.ts +8 -2
  80. package/dist/deployment/build/compile.d.ts +4 -4
  81. package/dist/deployment/build/compile.js +19 -17
  82. package/dist/deployment/build/frontend/compilation.d.ts +2 -4
  83. package/dist/deployment/build/frontend/compilation.js +0 -5
  84. package/dist/deployment/build/frontend/digest.js +1 -5
  85. package/dist/deployment/build/index.d.ts +1 -0
  86. package/dist/deployment/build/index.js +1 -0
  87. package/dist/deployment/build/manifest.d.ts +59 -0
  88. package/dist/deployment/build/manifest.js +118 -0
  89. package/dist/deployment/build/material.d.ts +2 -2
  90. package/dist/deployment/build/material.js +28 -13
  91. package/dist/deployment/build/schema.d.ts +2 -2
  92. package/dist/deployment/deployment.d.ts +3 -2
  93. package/dist/deployment/environment.d.ts +6 -0
  94. package/dist/deployment/environment.js +6 -0
  95. package/dist/deployment/index.d.ts +4 -6
  96. package/dist/deployment/index.js +1 -2
  97. package/dist/deployment/release/addressing.d.ts +6 -5
  98. package/dist/deployment/release/addressing.js +2 -3
  99. package/dist/deployment/release/assemble.d.ts +6 -3
  100. package/dist/deployment/release/assemble.js +12 -10
  101. package/dist/deployment/release/release.d.ts +16 -5
  102. package/dist/deployment/release/seal.d.ts +14 -0
  103. package/dist/deployment/release/seal.js +22 -0
  104. package/dist/deployment/release/{publication → served}/callables.d.ts +2 -2
  105. package/dist/deployment/release/{publication → served}/callables.js +2 -2
  106. package/dist/deployment/release/served/index.d.ts +11 -0
  107. package/dist/deployment/release/served/index.js +26 -0
  108. package/dist/deployment/release/{publication → served}/views.d.ts +2 -2
  109. package/dist/deployment/release/{publication → served}/views.js +0 -1
  110. package/dist/deployment/runtime/admission.d.ts +2 -2
  111. package/dist/deployment/runtime/admission.js +5 -5
  112. package/dist/deployment/verify/index.d.ts +3 -4
  113. package/dist/deployment/verify/index.js +2 -3
  114. package/dist/deployment/verify/preflight/bundle.d.ts +18 -0
  115. package/dist/deployment/verify/preflight/bundle.js +71 -0
  116. package/dist/deployment/verify/preflight/index.d.ts +1 -12
  117. package/dist/deployment/verify/preflight/index.js +1 -12
  118. package/dist/deployment/verify/readiness/fetch.d.ts +13 -0
  119. package/dist/deployment/verify/readiness/fetch.js +26 -0
  120. package/dist/deployment/verify/readiness/identity.d.ts +3 -6
  121. package/dist/deployment/verify/readiness/identity.js +3 -3
  122. package/dist/deployment/verify/readiness/index.d.ts +15 -8
  123. package/dist/deployment/verify/readiness/index.js +25 -6
  124. package/dist/deployment/verify/readiness/release.d.ts +8 -0
  125. package/dist/deployment/verify/readiness/release.js +22 -0
  126. package/dist/deployment/worker/address.d.ts +26 -0
  127. package/dist/deployment/worker/address.js +43 -0
  128. package/dist/deployment/worker/build.d.ts +60 -0
  129. package/dist/deployment/worker/build.js +172 -0
  130. package/dist/deployment/worker/configuration.d.ts +73 -0
  131. package/dist/deployment/worker/configuration.js +165 -0
  132. package/dist/deployment/worker/content.d.ts +38 -0
  133. package/dist/deployment/worker/content.js +169 -0
  134. package/dist/deployment/worker/index.d.ts +29 -0
  135. package/dist/deployment/worker/index.js +29 -0
  136. package/dist/deployment/worker/limits.d.ts +30 -0
  137. package/dist/deployment/worker/limits.js +30 -0
  138. package/dist/deployment/worker/record.d.ts +29 -0
  139. package/dist/deployment/worker/record.js +69 -0
  140. package/dist/deployment/worker/request.d.ts +118 -0
  141. package/dist/deployment/worker/request.js +280 -0
  142. package/dist/deployment/worker/response.d.ts +101 -0
  143. package/dist/deployment/worker/response.js +207 -0
  144. package/dist/execution/identity/authentication.d.ts +33 -3
  145. package/dist/execution/identity/authentication.js +85 -40
  146. package/dist/execution/identity/callback.d.ts +16 -15
  147. package/dist/execution/identity/callback.js +21 -16
  148. package/dist/execution/identity/delivery.d.ts +6 -4
  149. package/dist/execution/identity/delivery.js +25 -20
  150. package/dist/execution/identity/identity.d.ts +17 -3
  151. package/dist/execution/identity/identity.js +12 -4
  152. package/dist/execution/identity/jwks.d.ts +5 -0
  153. package/dist/execution/identity/jwks.js +92 -102
  154. package/dist/execution/index.d.ts +4 -4
  155. package/dist/execution/index.js +2 -2
  156. package/dist/execution/invocation/admission/authentication.d.ts +11 -13
  157. package/dist/execution/invocation/admission/authentication.js +48 -44
  158. package/dist/execution/invocation/admission/authority.d.ts +28 -6
  159. package/dist/execution/invocation/admission/authority.js +9 -2
  160. package/dist/execution/invocation/admission/index.d.ts +2 -2
  161. package/dist/execution/invocation/admission/index.js +1 -1
  162. package/dist/execution/invocation/admission/input.d.ts +2 -2
  163. package/dist/execution/invocation/admission/input.js +16 -2
  164. package/dist/execution/invocation/dependency/bind.d.ts +3 -1
  165. package/dist/execution/invocation/dependency/bind.js +36 -16
  166. package/dist/execution/invocation/dispatch/context.d.ts +7 -6
  167. package/dist/execution/invocation/dispatch/context.js +17 -31
  168. package/dist/execution/invocation/dispatch/workflow.js +0 -4
  169. package/dist/execution/invocation/index.d.ts +2 -2
  170. package/dist/execution/invocation/index.js +1 -1
  171. package/dist/execution/invocation/integration/call.d.ts +2 -1
  172. package/dist/execution/invocation/integration/call.js +1 -1
  173. package/dist/execution/invocation/integration/clients.d.ts +1 -1
  174. package/dist/execution/invocation/invocation.js +49 -16
  175. package/dist/execution/invocation/result/errors.d.ts +0 -10
  176. package/dist/execution/invocation/result/errors.js +0 -17
  177. package/dist/execution/invocation/result/index.d.ts +2 -2
  178. package/dist/execution/invocation/result/index.js +1 -1
  179. package/dist/execution/invocation/result/project.js +41 -1
  180. package/dist/execution/node/serve.d.ts +2 -2
  181. package/dist/execution/node/serve.js +1 -1
  182. package/dist/execution/runtime/index.d.ts +1 -0
  183. package/dist/execution/runtime/index.js +1 -0
  184. package/dist/execution/runtime/load.d.ts +3 -3
  185. package/dist/execution/runtime/load.js +3 -2
  186. package/dist/execution/runtime/release.d.ts +17 -0
  187. package/dist/execution/runtime/release.js +7 -0
  188. package/dist/execution/serve.d.ts +10 -4
  189. package/dist/execution/serve.js +3 -0
  190. package/dist/execution/service/create.js +41 -7
  191. package/dist/execution/service/initialization.d.ts +4 -4
  192. package/dist/execution/service/initialization.js +23 -14
  193. package/dist/execution/service/release.d.ts +2 -2
  194. package/dist/execution/service/release.js +3 -2
  195. package/dist/execution/service/service.d.ts +14 -5
  196. package/dist/execution/service/serving/delivery.d.ts +5 -0
  197. package/dist/execution/service/{publication → serving}/delivery.js +4 -1
  198. package/dist/execution/service/{publication → serving}/index.d.ts +1 -1
  199. package/dist/execution/service/serving/installation.d.ts +4 -0
  200. package/dist/execution/service/serving/installation.js +9 -0
  201. package/dist/execution/service/serving/source.d.ts +11 -0
  202. package/dist/execution/service/serving/source.js +15 -0
  203. package/dist/execution/workflows/discovery.d.ts +14 -0
  204. package/dist/execution/workflows/discovery.js +151 -0
  205. package/dist/execution/workflows/engine.d.ts +52 -0
  206. package/dist/execution/workflows/engine.js +1 -0
  207. package/dist/execution/workflows/envelope.d.ts +12 -0
  208. package/dist/execution/workflows/envelope.js +46 -0
  209. package/dist/execution/workflows/failure.d.ts +11 -0
  210. package/dist/execution/workflows/failure.js +43 -0
  211. package/dist/execution/workflows/index.d.ts +4 -0
  212. package/dist/execution/workflows/index.js +3 -0
  213. package/dist/execution/workflows/options.d.ts +34 -0
  214. package/dist/execution/workflows/options.js +65 -0
  215. package/dist/execution/workflows/receiver.d.ts +21 -0
  216. package/dist/execution/workflows/receiver.js +92 -0
  217. package/dist/execution/workflows/route.d.ts +12 -0
  218. package/dist/execution/workflows/route.js +35 -0
  219. package/dist/execution/workflows/run.d.ts +22 -0
  220. package/dist/execution/workflows/run.js +223 -0
  221. package/dist/index.d.ts +4 -4
  222. package/dist/index.js +2 -2
  223. package/dist/platform/graph/alias.d.ts +1 -5
  224. package/dist/platform/graph/alias.js +1 -5
  225. package/dist/platform/graph/document/index.d.ts +1 -1
  226. package/dist/platform/graph/document/index.js +1 -1
  227. package/dist/platform/graph/index.d.ts +1 -1
  228. package/dist/platform/graph/index.js +1 -1
  229. package/dist/platform/release/index.d.ts +2 -0
  230. package/dist/platform/release/index.js +2 -0
  231. package/dist/platform/schema/callable-authoring.d.ts +21 -0
  232. package/dist/platform/schema/callable-authoring.js +27 -0
  233. package/dist/platform/schema/class-authoring.d.ts +61 -11
  234. package/dist/platform/schema/class-authoring.js +37 -4
  235. package/dist/platform/schema/class-icon-svg.d.ts +9 -0
  236. package/dist/platform/schema/class-icon-svg.js +29 -0
  237. package/dist/platform/schema/class-icon.d.ts +3 -8
  238. package/dist/platform/schema/class-icon.js +2 -29
  239. package/dist/platform/schema/index.d.ts +6 -4
  240. package/dist/platform/schema/index.js +2 -1
  241. package/dist/platform/schema/property.d.ts +5 -0
  242. package/dist/platform/schema/schema-authoring.d.ts +14 -7
  243. package/dist/platform/schema/schema-authoring.js +5 -1
  244. package/dist/platform/versioning/dependents.d.ts +18 -0
  245. package/dist/platform/versioning/dependents.js +15 -0
  246. package/dist/platform/versioning/index.d.ts +5 -0
  247. package/dist/platform/versioning/index.js +5 -0
  248. package/dist/platform/versioning/name.d.ts +38 -0
  249. package/dist/platform/versioning/name.js +58 -0
  250. package/dist/platform/versioning/reference.d.ts +48 -0
  251. package/dist/platform/versioning/reference.js +95 -0
  252. package/dist/platform/versioning/version.d.ts +72 -0
  253. package/dist/platform/versioning/version.js +98 -0
  254. package/dist/project/admit.js +1 -5
  255. package/dist/project/define.d.ts +4 -4
  256. package/dist/project/define.js +55 -35
  257. package/dist/project/index.d.ts +1 -1
  258. package/dist/project/install-command.d.ts +6 -0
  259. package/dist/project/install-command.js +9 -0
  260. package/dist/project/project.d.ts +10 -8
  261. package/dist/testing/dataset/define.d.ts +1 -1
  262. package/dist/testing/load.js +1 -1
  263. package/dist/tooling/cli/adapter-command.d.ts +35 -0
  264. package/dist/tooling/cli/adapter-command.js +66 -0
  265. package/dist/tooling/cli/arguments.d.ts +17 -6
  266. package/dist/tooling/cli/arguments.js +175 -52
  267. package/dist/tooling/cli/build.d.ts +55 -0
  268. package/dist/tooling/cli/build.js +77 -0
  269. package/dist/tooling/cli/bun.d.ts +0 -1
  270. package/dist/tooling/cli/bun.js +0 -7
  271. package/dist/tooling/cli/commit.d.ts +35 -0
  272. package/dist/tooling/cli/commit.js +235 -0
  273. package/dist/tooling/cli/deploy-mode.d.ts +26 -0
  274. package/dist/tooling/cli/deploy-mode.js +59 -0
  275. package/dist/tooling/cli/deploy-result.d.ts +80 -0
  276. package/dist/tooling/cli/deploy-result.js +64 -0
  277. package/dist/tooling/cli/diff/declared.d.ts +7 -0
  278. package/dist/tooling/cli/diff/declared.js +27 -0
  279. package/dist/tooling/cli/diff/index.d.ts +30 -0
  280. package/dist/tooling/cli/diff/index.js +58 -0
  281. package/dist/tooling/cli/diff/render.d.ts +15 -0
  282. package/dist/tooling/cli/diff/render.js +131 -0
  283. package/dist/tooling/cli/diff/report.d.ts +88 -0
  284. package/dist/tooling/cli/diff/report.js +154 -0
  285. package/dist/tooling/cli/dotenv.d.ts +2 -2
  286. package/dist/tooling/cli/dotenv.js +3 -33
  287. package/dist/tooling/cli/help.js +173 -60
  288. package/dist/tooling/cli/immutable-deployment.d.ts +83 -0
  289. package/dist/tooling/cli/immutable-deployment.js +135 -0
  290. package/dist/tooling/cli/index.d.ts +12 -4
  291. package/dist/tooling/cli/index.js +6 -3
  292. package/dist/tooling/cli/installed-on.d.ts +83 -0
  293. package/dist/tooling/cli/installed-on.js +156 -0
  294. package/dist/tooling/cli/list.d.ts +152 -0
  295. package/dist/tooling/cli/list.js +331 -0
  296. package/dist/tooling/cli/log.d.ts +5 -0
  297. package/dist/tooling/cli/log.js +9 -0
  298. package/dist/tooling/cli/orchestrate.d.ts +0 -6
  299. package/dist/tooling/cli/orchestrate.js +246 -90
  300. package/dist/tooling/cli/project.d.ts +3 -3
  301. package/dist/tooling/cli/publish/index.d.ts +81 -0
  302. package/dist/tooling/cli/publish/index.js +383 -0
  303. package/dist/tooling/cli/publish/report.d.ts +49 -0
  304. package/dist/tooling/cli/publish/report.js +15 -0
  305. package/dist/tooling/cli/registry/client.d.ts +121 -0
  306. package/dist/tooling/cli/registry/client.js +354 -0
  307. package/dist/tooling/cli/registry/error.d.ts +11 -0
  308. package/dist/tooling/cli/registry/error.js +17 -0
  309. package/dist/tooling/cli/registry/executable.d.ts +35 -0
  310. package/dist/tooling/cli/registry/executable.js +96 -0
  311. package/dist/tooling/cli/registry/index.d.ts +9 -0
  312. package/dist/tooling/cli/registry/index.js +8 -0
  313. package/dist/tooling/cli/registry/installations.d.ts +67 -0
  314. package/dist/tooling/cli/registry/installations.js +108 -0
  315. package/dist/tooling/cli/registry/process.d.ts +36 -0
  316. package/dist/tooling/cli/registry/process.js +119 -0
  317. package/dist/tooling/cli/secrets.d.ts +9 -0
  318. package/dist/tooling/cli/secrets.js +19 -0
  319. package/dist/tooling/cli/yank.d.ts +34 -0
  320. package/dist/tooling/cli/yank.js +32 -0
  321. package/dist/tooling/linter/implementations/source/callable-requirements.d.ts +1 -1
  322. package/dist/tooling/linter/implementations/source/callable-requirements.js +10 -10
  323. package/dist/tooling/linter/implementations/source/dependencies.js +12 -10
  324. package/dist/tooling/linter/implementations/source/global.js +1 -2
  325. package/dist/tooling/linter/implementations/source/mutations.js +17 -17
  326. package/dist/tooling/linter/implementations/source/providers.js +5 -5
  327. package/dist/tooling/linter/implementations/source/verifiers.js +0 -2
  328. package/dist/tooling/linter/implementations/source/views.js +2 -2
  329. package/dist/tooling/linter/policy/generated.js +14 -63
  330. package/dist/tooling/linter/requirements/registry.js +1 -6
  331. package/dist/tooling/packaging/declarations/ownership.js +1 -1
  332. package/dist/tooling/packaging/finalize.d.ts +1 -1
  333. package/dist/tooling/packaging/finalize.js +1 -1
  334. package/package.json +39 -13
  335. package/dist/application/application.d.ts +0 -28
  336. package/dist/application/query/execution/projection.d.ts +0 -3
  337. package/dist/application/query/execution/projection.js +0 -3
  338. package/dist/deployment/adapter/deploy/context.d.ts +0 -15
  339. package/dist/deployment/adapter/deploy/index.d.ts +0 -2
  340. package/dist/deployment/adapter/deploy/result.d.ts +0 -50
  341. package/dist/deployment/adapter/prepare/artifact.d.ts +0 -33
  342. package/dist/deployment/adapter/prepare/context.d.ts +0 -23
  343. package/dist/deployment/adapter/prepare/index.d.ts +0 -2
  344. package/dist/deployment/deploy.d.ts +0 -20
  345. package/dist/deployment/deploy.js +0 -31
  346. package/dist/deployment/release/publication/index.d.ts +0 -6
  347. package/dist/deployment/release/publication/index.js +0 -6
  348. package/dist/deployment/release/publication/manifest.d.ts +0 -3
  349. package/dist/deployment/release/publication/manifest.js +0 -5
  350. package/dist/deployment/release/publication/requirements.d.ts +0 -3
  351. package/dist/deployment/release/publication/requirements.js +0 -3
  352. package/dist/deployment/release/publication/seal.d.ts +0 -10
  353. package/dist/deployment/release/publication/seal.js +0 -39
  354. package/dist/deployment/verify/preflight/artifact.d.ts +0 -6
  355. package/dist/deployment/verify/preflight/artifact.js +0 -122
  356. package/dist/deployment/verify/preflight/publication.d.ts +0 -4
  357. package/dist/deployment/verify/preflight/publication.js +0 -14
  358. package/dist/deployment/verify/readiness/deployment.d.ts +0 -3
  359. package/dist/deployment/verify/readiness/deployment.js +0 -151
  360. package/dist/deployment/verify/readiness/publication.d.ts +0 -11
  361. package/dist/deployment/verify/readiness/publication.js +0 -41
  362. package/dist/execution/service/errors.d.ts +0 -3
  363. package/dist/execution/service/errors.js +0 -3
  364. package/dist/execution/service/publication/delivery.d.ts +0 -2
  365. package/dist/execution/service/publication/installation.d.ts +0 -3
  366. package/dist/execution/service/publication/installation.js +0 -8
  367. package/dist/execution/service/publication/source.d.ts +0 -3
  368. package/dist/execution/service/publication/source.js +0 -11
  369. package/dist/platform/publication/index.d.ts +0 -2
  370. package/dist/platform/publication/index.js +0 -2
  371. package/dist/tooling/cli/astrale/authority.d.ts +0 -5
  372. package/dist/tooling/cli/astrale/authority.js +0 -11
  373. package/dist/tooling/cli/astrale/executable.d.ts +0 -2
  374. package/dist/tooling/cli/astrale/executable.js +0 -47
  375. package/dist/tooling/cli/astrale/failure.d.ts +0 -6
  376. package/dist/tooling/cli/astrale/failure.js +0 -48
  377. package/dist/tooling/cli/astrale/instance.d.ts +0 -11
  378. package/dist/tooling/cli/astrale/instance.js +0 -52
  379. package/dist/tooling/cli/astrale/process.d.ts +0 -13
  380. package/dist/tooling/cli/astrale/process.js +0 -94
  381. package/dist/tooling/cli/astrale/version.d.ts +0 -18
  382. package/dist/tooling/cli/astrale/version.js +0 -55
  383. package/dist/tooling/cli/credential.d.ts +0 -2
  384. package/dist/tooling/cli/credential.js +0 -57
  385. package/dist/tooling/cli/deprecations.d.ts +0 -9
  386. package/dist/tooling/cli/deprecations.js +0 -15
  387. package/dist/tooling/cli/development/candidate.d.ts +0 -25
  388. package/dist/tooling/cli/development/candidate.js +0 -176
  389. package/dist/tooling/cli/development/deployment.d.ts +0 -16
  390. package/dist/tooling/cli/development/deployment.js +0 -39
  391. package/dist/tooling/cli/development/develop.d.ts +0 -11
  392. package/dist/tooling/cli/development/develop.js +0 -243
  393. package/dist/tooling/cli/development/lease.d.ts +0 -18
  394. package/dist/tooling/cli/development/lease.js +0 -163
  395. package/dist/tooling/cli/development/lifecycle.d.ts +0 -9
  396. package/dist/tooling/cli/development/lifecycle.js +0 -43
  397. package/dist/tooling/cli/development/project-imports.d.ts +0 -22
  398. package/dist/tooling/cli/development/project-imports.js +0 -39
  399. package/dist/tooling/cli/development/project-lock.d.ts +0 -16
  400. package/dist/tooling/cli/development/project-lock.js +0 -41
  401. package/dist/tooling/cli/development/rebuild.d.ts +0 -13
  402. package/dist/tooling/cli/development/rebuild.js +0 -58
  403. package/dist/tooling/cli/development/release-evidence.d.ts +0 -4
  404. package/dist/tooling/cli/development/release-evidence.js +0 -10
  405. package/dist/tooling/cli/development/report.d.ts +0 -6
  406. package/dist/tooling/cli/development/report.js +0 -14
  407. package/dist/tooling/cli/development/session-file.d.ts +0 -53
  408. package/dist/tooling/cli/development/session-file.js +0 -337
  409. package/dist/tooling/cli/development/source-watch.d.ts +0 -14
  410. package/dist/tooling/cli/development/source-watch.js +0 -140
  411. package/dist/tooling/cli/development/sources.d.ts +0 -7
  412. package/dist/tooling/cli/development/sources.js +0 -48
  413. package/dist/tooling/cli/development/target-lock.d.ts +0 -16
  414. package/dist/tooling/cli/development/target-lock.js +0 -68
  415. package/dist/tooling/cli/development/view.d.ts +0 -28
  416. package/dist/tooling/cli/development/view.js +0 -151
  417. package/dist/tooling/cli/environment-release.d.ts +0 -21
  418. package/dist/tooling/cli/environment-release.js +0 -46
  419. package/dist/tooling/cli/evidence.d.ts +0 -11
  420. package/dist/tooling/cli/evidence.js +0 -53
  421. package/dist/tooling/cli/installation/index.d.ts +0 -2
  422. package/dist/tooling/cli/installation/index.js +0 -1
  423. package/dist/tooling/cli/installation/observation.d.ts +0 -10
  424. package/dist/tooling/cli/installation/observation.js +0 -44
  425. package/dist/tooling/cli/installation/reconcile.d.ts +0 -32
  426. package/dist/tooling/cli/installation/reconcile.js +0 -122
  427. package/dist/tooling/linter/implementations/source/migrations.d.ts +0 -2
  428. package/dist/tooling/linter/implementations/source/migrations.js +0 -113
  429. package/dist/tooling/linter/qualification/index.d.ts +0 -10
  430. package/dist/tooling/linter/qualification/index.js +0 -2
  431. package/dist/tooling/linter/qualification/query-fixtures.d.ts +0 -2
  432. package/dist/tooling/linter/qualification/query-fixtures.js +0 -68
  433. package/dist/tooling/linter/qualification/runner.d.ts +0 -3
  434. package/dist/tooling/linter/qualification/runner.js +0 -6
  435. /package/dist/application/{application.js → domain.js} +0 -0
  436. /package/dist/{deployment/adapter/deploy/context.js → application/workflow/durable.js} +0 -0
  437. /package/dist/deployment/adapter/{deploy/index.js → bundle/bundle.js} +0 -0
  438. /package/dist/deployment/adapter/{deploy/result.js → bundle/file.js} +0 -0
  439. /package/dist/deployment/adapter/{prepare → bundle}/index.js +0 -0
  440. /package/dist/deployment/adapter/{prepare/artifact.js → release/command.js} +0 -0
  441. /package/dist/deployment/adapter/{prepare → release}/context.js +0 -0
  442. /package/dist/deployment/release/{publication → served}/routes.d.ts +0 -0
  443. /package/dist/deployment/release/{publication → served}/routes.js +0 -0
  444. /package/dist/execution/service/{publication → serving}/index.js +0 -0
@@ -0,0 +1,101 @@
1
+ import type { WorkerRecord, WorkerRecordWireV1 } from './record.js';
2
+ /** Where a Worker host addresses Services and deployments. */
3
+ export interface WorkerHostingV1 {
4
+ /**
5
+ * The DNS name every URL ends with: `https://<service>.<routingDomain>` serves a Service's
6
+ * current deployment, `https://<label>.<routingDomain>` one deployment.
7
+ */
8
+ readonly routingDomain: string;
9
+ }
10
+ /** What a host lists: the deployments of the caller's Services, optionally of one project or environment. */
11
+ export interface WorkerDeploymentListRequestV1 {
12
+ readonly project?: string;
13
+ readonly environment?: string;
14
+ }
15
+ /** The lifecycle of one deployment at its host. */
16
+ export type WorkerDeploymentState = 'deploying' | 'active' | 'retiring' | 'retired' | 'failed';
17
+ /**
18
+ * What a host knows of one deployment. It names a deployment by its label and URL, never by a
19
+ * provider version. A host keeps every deployment until it is retired: it has no preview, expiry or
20
+ * last call.
21
+ */
22
+ export interface WorkerDeploymentSummaryV1 {
23
+ /** The host's id of the deployment (a node id on Admin's Services). */
24
+ readonly id: string;
25
+ readonly url: string;
26
+ readonly label: string;
27
+ /** The host's id of the Service this deployment is a version of. */
28
+ readonly serviceId: string;
29
+ /** The name of that Service: the first part of the label. */
30
+ readonly service: string;
31
+ readonly project: string;
32
+ readonly environment: string;
33
+ /** Who owns the Service (an Identity node path on Admin's Services). */
34
+ readonly owner: string;
35
+ readonly state: WorkerDeploymentState;
36
+ /** Whether the Service's stable URL serves this deployment. */
37
+ readonly current: boolean;
38
+ readonly createdAt: string;
39
+ /** When its retirement began; present once it is `retiring`. */
40
+ readonly retiredAt?: string;
41
+ readonly buildDigest: string;
42
+ /** The digest of its `WorkerConfigurationV1`. */
43
+ readonly configuration: string;
44
+ /** The RFC 7638 thumbprint of its key, when its configuration asked for a signing identity. */
45
+ readonly signingKeyId?: string;
46
+ /** The record it serves, when its configuration asked for one. */
47
+ readonly record?: WorkerRecordWireV1;
48
+ }
49
+ /** One summary with its record decoded. */
50
+ export type WorkerDeploymentSummary = Omit<WorkerDeploymentSummaryV1, 'record'> & {
51
+ readonly record?: WorkerRecord;
52
+ };
53
+ /** Why a host refused to host one Worker release. A refusal changed nothing (see each reason). */
54
+ export type WorkerDeploymentRejectionReason = 'invalid-deployment' | 'address-mismatch' | 'build-mismatch' | 'service-owned-elsewhere' | 'deployment-conflict' | 'deployment-retired' | 'hosting-unavailable' | 'service-unavailable';
55
+ export declare const WORKER_DEPLOYMENT_REJECTIONS: readonly WorkerDeploymentRejectionReason[];
56
+ /**
57
+ * `WorkerDeploymentResponseV1`: a deployment `created` with the request's secrets `bound` to it,
58
+ * or `reused` with its declared secrets rewritten in place (`updated`) or left `unchanged`, or a
59
+ * refusal. A refusal changed nothing, except that a `service-unavailable` may follow effects (a
60
+ * creation that lost its lease after uploading, an in-place rewrite that wrote part of the
61
+ * values): rerunning the same deploy converges.
62
+ */
63
+ export type WorkerDeploymentResponseV1 = {
64
+ readonly kind: 'deployed';
65
+ readonly state: 'created' | 'reused';
66
+ readonly secrets: {
67
+ readonly state: 'bound' | 'updated' | 'unchanged';
68
+ };
69
+ readonly deployment: WorkerDeploymentSummaryV1;
70
+ } | WorkerDeploymentRejection;
71
+ export interface WorkerDeploymentRejection {
72
+ readonly kind: 'rejected';
73
+ readonly reason: WorkerDeploymentRejectionReason;
74
+ readonly message: string;
75
+ /** When a retry may succeed, for a refusal that only waits on another operation. */
76
+ readonly retryAfter?: string;
77
+ }
78
+ /** One decoded answer of a deploy. */
79
+ export type WorkerDeploymentResult = {
80
+ readonly kind: 'deployed';
81
+ readonly state: 'created' | 'reused';
82
+ readonly secrets: {
83
+ readonly state: 'bound' | 'updated' | 'unchanged';
84
+ };
85
+ readonly deployment: WorkerDeploymentSummary;
86
+ } | WorkerDeploymentRejection;
87
+ /** Admit the answer of a host's `hosting`: exactly its routing domain. */
88
+ export declare function decodeWorkerHosting(input: unknown): WorkerHostingV1;
89
+ /**
90
+ * Admit the answer of a deploy exactly: a deployment whose state reports the secret state it
91
+ * pairs with, or a refusal a host can give.
92
+ */
93
+ export declare function decodeWorkerDeploymentResponse(input: unknown): WorkerDeploymentResult;
94
+ /** Admit the answer of a host's `list`: the summaries of the caller's deployments, in its order. */
95
+ export declare function decodeWorkerDeploymentList(input: unknown): readonly WorkerDeploymentSummary[];
96
+ /**
97
+ * Admit one summary exactly: node ids and names a person can read, a label whose first part is
98
+ * the Service's name, the URL of that label, a known state, instants, digests, and a record that
99
+ * decodes.
100
+ */
101
+ export declare function decodeWorkerDeploymentSummary(input: unknown): WorkerDeploymentSummary;
@@ -0,0 +1,207 @@
1
+ import { parseDeploymentLabel } from '../address/label.js';
2
+ import { serviceName } from './address.js';
3
+ import { decodeWorkerRecord } from './record.js';
4
+ export const WORKER_DEPLOYMENT_REJECTIONS = Object.freeze([
5
+ 'invalid-deployment',
6
+ 'address-mismatch',
7
+ 'build-mismatch',
8
+ 'service-owned-elsewhere',
9
+ 'deployment-conflict',
10
+ 'deployment-retired',
11
+ 'hosting-unavailable',
12
+ 'service-unavailable',
13
+ ]);
14
+ const STATES = Object.freeze([
15
+ 'deploying',
16
+ 'active',
17
+ 'retiring',
18
+ 'retired',
19
+ 'failed',
20
+ ]);
21
+ /** Which secret states each deployment state reports. */
22
+ const SECRETS_BY_STATE = Object.freeze({
23
+ created: Object.freeze(['bound']),
24
+ reused: Object.freeze(['updated', 'unchanged']),
25
+ });
26
+ /** Admit the answer of a host's `hosting`: exactly its routing domain. */
27
+ export function decodeWorkerHosting(input) {
28
+ const value = exact(input, ['routingDomain'], [], 'hosting');
29
+ if (typeof value.routingDomain !== 'string' || !isDnsName(value.routingDomain)) {
30
+ invalid('hosting', 'routingDomain');
31
+ }
32
+ return Object.freeze({ routingDomain: value.routingDomain });
33
+ }
34
+ /**
35
+ * Admit the answer of a deploy exactly: a deployment whose state reports the secret state it
36
+ * pairs with, or a refusal a host can give.
37
+ */
38
+ export function decodeWorkerDeploymentResponse(input) {
39
+ const value = exact(input, ['kind'], ['state', 'secrets', 'deployment', 'reason', 'message', 'retryAfter'], 'deploy');
40
+ if (value.kind === 'rejected') {
41
+ exact(value, ['kind', 'reason', 'message'], ['retryAfter'], 'refusal');
42
+ if (!WORKER_DEPLOYMENT_REJECTIONS.includes(value.reason)) {
43
+ invalid('refusal', 'reason');
44
+ }
45
+ if (typeof value.message !== 'string' ||
46
+ value.message.length < 1 ||
47
+ value.message.length > 500) {
48
+ invalid('refusal', 'message');
49
+ }
50
+ if (value.retryAfter !== undefined && !isInstant(value.retryAfter)) {
51
+ invalid('refusal', 'retryAfter');
52
+ }
53
+ return Object.freeze({
54
+ kind: 'rejected',
55
+ reason: value.reason,
56
+ message: value.message,
57
+ ...(value.retryAfter === undefined ? {} : { retryAfter: value.retryAfter }),
58
+ });
59
+ }
60
+ exact(value, ['kind', 'state', 'secrets', 'deployment'], [], 'deploy');
61
+ if (value.kind !== 'deployed')
62
+ invalid('deploy', 'kind');
63
+ if (value.state !== 'created' && value.state !== 'reused')
64
+ invalid('deploy', 'state');
65
+ const secrets = exact(value.secrets, ['state'], [], 'secrets');
66
+ const allowed = SECRETS_BY_STATE[value.state];
67
+ if (typeof secrets.state !== 'string' || !allowed.includes(secrets.state)) {
68
+ invalid('deploy', 'secrets.state');
69
+ }
70
+ return Object.freeze({
71
+ kind: 'deployed',
72
+ state: value.state,
73
+ secrets: Object.freeze({ state: secrets.state }),
74
+ deployment: decodeWorkerDeploymentSummary(value.deployment),
75
+ });
76
+ }
77
+ /** Admit the answer of a host's `list`: the summaries of the caller's deployments, in its order. */
78
+ export function decodeWorkerDeploymentList(input) {
79
+ const value = exact(input, ['deployments'], [], 'list');
80
+ if (!Array.isArray(value.deployments))
81
+ invalid('list', 'deployments');
82
+ return Object.freeze(value.deployments.map((deployment) => decodeWorkerDeploymentSummary(deployment)));
83
+ }
84
+ /**
85
+ * Admit one summary exactly: node ids and names a person can read, a label whose first part is
86
+ * the Service's name, the URL of that label, a known state, instants, digests, and a record that
87
+ * decodes.
88
+ */
89
+ export function decodeWorkerDeploymentSummary(input) {
90
+ const value = exact(input, [
91
+ 'id',
92
+ 'url',
93
+ 'label',
94
+ 'serviceId',
95
+ 'service',
96
+ 'project',
97
+ 'environment',
98
+ 'owner',
99
+ 'state',
100
+ 'current',
101
+ 'createdAt',
102
+ 'buildDigest',
103
+ 'configuration',
104
+ ], ['retiredAt', 'signingKeyId', 'record'], 'deployment');
105
+ for (const key of [
106
+ 'id',
107
+ 'url',
108
+ 'label',
109
+ 'serviceId',
110
+ 'service',
111
+ 'project',
112
+ 'environment',
113
+ 'owner',
114
+ ]) {
115
+ if (typeof value[key] !== 'string' || !isPrintable(value[key]))
116
+ invalid('deployment', key);
117
+ }
118
+ if (value.signingKeyId !== undefined) {
119
+ if (typeof value.signingKeyId !== 'string' || !isPrintable(value.signingKeyId)) {
120
+ invalid('deployment', 'signingKeyId');
121
+ }
122
+ }
123
+ let line;
124
+ try {
125
+ line = parseDeploymentLabel(value.label).line;
126
+ }
127
+ catch {
128
+ invalid('deployment', 'label');
129
+ }
130
+ if (value.service !== line)
131
+ invalid('deployment', 'service');
132
+ let named;
133
+ try {
134
+ named = serviceName(value.project, value.environment);
135
+ }
136
+ catch {
137
+ invalid('deployment', 'project');
138
+ }
139
+ if (named !== line)
140
+ invalid('deployment', 'service');
141
+ if (!isDeploymentUrl(value.url, value.label))
142
+ invalid('deployment', 'url');
143
+ if (!STATES.includes(value.state))
144
+ invalid('deployment', 'state');
145
+ if (typeof value.current !== 'boolean')
146
+ invalid('deployment', 'current');
147
+ if (!isInstant(value.createdAt))
148
+ invalid('deployment', 'createdAt');
149
+ if (value.retiredAt !== undefined && !isInstant(value.retiredAt))
150
+ invalid('deployment', 'retiredAt');
151
+ for (const key of ['buildDigest', 'configuration']) {
152
+ if (typeof value[key] !== 'string' || !/^sha256:[0-9a-f]{64}$/u.test(value[key])) {
153
+ invalid('deployment', key);
154
+ }
155
+ }
156
+ let record;
157
+ if (value.record !== undefined) {
158
+ try {
159
+ record = decodeWorkerRecord(value.record);
160
+ }
161
+ catch {
162
+ invalid('deployment', 'record');
163
+ }
164
+ }
165
+ const summary = { ...value };
166
+ delete summary.record;
167
+ return Object.freeze({
168
+ ...summary,
169
+ ...(record === undefined ? {} : { record }),
170
+ });
171
+ }
172
+ /** `https://<label>.<routing domain>`, nothing more. */
173
+ function isDeploymentUrl(url, label) {
174
+ const prefix = `https://${label}.`;
175
+ return url.startsWith(prefix) && isDnsName(url.slice(prefix.length));
176
+ }
177
+ /** Text a person can read in a listing: at most 512 characters, none of them a control character. */
178
+ function isPrintable(value) {
179
+ return value.length > 0 && value.length <= 512 && !/[\p{Cc}]/u.test(value);
180
+ }
181
+ function isInstant(value) {
182
+ return (typeof value === 'string' &&
183
+ value.length > 0 &&
184
+ value.length <= 64 &&
185
+ !Number.isNaN(Date.parse(value)));
186
+ }
187
+ function isDnsName(value) {
188
+ return (value.length <= 253 &&
189
+ value.split('.').every((label) => /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/u.test(label)));
190
+ }
191
+ function exact(input, required, optional, label) {
192
+ if (input === null || typeof input !== 'object' || Array.isArray(input))
193
+ invalid(label);
194
+ const value = input;
195
+ for (const key of Reflect.ownKeys(value)) {
196
+ if (typeof key !== 'string' || (!required.includes(key) && !optional.includes(key))) {
197
+ invalid(label, String(key));
198
+ }
199
+ }
200
+ for (const key of required)
201
+ if (!Object.hasOwn(value, key))
202
+ invalid(label, key);
203
+ return value;
204
+ }
205
+ function invalid(label, member) {
206
+ throw new TypeError(`The Worker host returned an invalid ${label} answer${member === undefined ? '' : ` (${member})`}.`);
207
+ }
@@ -1,9 +1,18 @@
1
1
  import type { Fetch } from '@astrale-os/kernel-client';
2
- import type { CredentialInput, Grant, IssuerId } from '../../platform/auth/index.js';
3
- import type { AuthenticatedInvocation } from '../invocation/index.js';
2
+ import type { CredentialInput, IdentityId, IssuerId } from '../../platform/auth/index.js';
3
+ import type { AuthenticatedInvocation, SelfInvocation } from '../invocation/index.js';
4
4
  import type { InvocationAdmissionInput } from '../invocation/index.js';
5
5
  import type { IdentityNetworkPolicy, VerificationBasis, VerificationBasisResolver } from './jwks.js';
6
6
  import type { SigningMaterial } from './signing.js';
7
+ import { ClientSession } from '../../platform/client/session/index.js';
8
+ import { NodeId } from '../../platform/graph/node/index.js';
9
+ /**
10
+ * How long a callback Session reuses a learned route. It stays at most the Kernel's in-flight
11
+ * issuer window (`KERNEL_INFLIGHT_ISSUER_MS`, Host default 300 s; CT11): a route learned to a
12
+ * deployment replaced by a consented install ages out while that deployment is still accepted and
13
+ * answers the reserved miss, never after its own credential is refused (AM-85).
14
+ */
15
+ export declare const DEFAULT_ROUTE_AGE_MS = 60000;
7
16
  export declare function admit(request: InvocationAdmissionInput, configuration: AuthenticationConfiguration): Promise<unknown>;
8
17
  export interface AuthenticationConfiguration {
9
18
  readonly issuer: IssuerId;
@@ -17,5 +26,26 @@ export declare function authenticate(credentialInput: CredentialInput, expectedK
17
26
  readonly deadline: number;
18
27
  readonly signal: AbortSignal;
19
28
  }, configuration: AuthenticationConfiguration): Promise<AuthenticatedInvocation>;
20
- export declare function acceptResolvedDelegation(input: unknown): Grant;
29
+ /**
30
+ * The Domain's own authority toward the source Kernel of an admitted call that carries no
31
+ * credential. No caller credential bounds it: its callbacks live as long as the execution, exactly
32
+ * as the `self` half of an authenticated call does within its carrier.
33
+ */
34
+ export declare function selfInvocation(kernel: IssuerId, execution: {
35
+ readonly deadline: number;
36
+ readonly signal: AbortSignal;
37
+ }, configuration: AuthenticationConfiguration): SelfInvocation;
38
+ /**
39
+ * The Domain's own authority toward one Kernel for a step of the durable Execution `executionId`,
40
+ * which no caller credential carries: the run acts as its executor, never as its initiator. Every
41
+ * credential names `executionId` in `EXECUTION_CLAIM`, so the Kernel can accept a replaced issuer
42
+ * for the steps of a run in flight at a consented issuer change. The caller owns the returned
43
+ * Session.
44
+ */
45
+ export declare function executorSession(kernel: IssuerId, executionId: NodeId, execution: {
46
+ readonly deadline: number;
47
+ readonly signal: AbortSignal;
48
+ }, configuration: AuthenticationConfiguration): ClientSession;
49
+ /** Accept a Kernel delegation proof claim naming exactly one resolved caller Identity. */
50
+ export declare function acceptResolvedDelegation(input: unknown): IdentityId;
21
51
  export type { VerificationBasis };
@@ -7,10 +7,16 @@ import { bindSession, ClientSession } from '../../platform/client/session/index.
7
7
  import { NodeId } from '../../platform/graph/node/index.js';
8
8
  import { Path } from '../../platform/graph/path/index.js';
9
9
  import { projectError, protocolError } from '../invocation/result/index.js';
10
- import { callbackIdentities, createCallbackCredentialResolver, maximumCallbackDelegationTtlSeconds, signDomainCallback, } from './callback.js';
11
- import { CredentialRejected, IssuerUnavailable, boundedFetch, callbackTtl, invocationUrl, admitEndpoint, requireLive, } from './errors.js';
10
+ import { callbackIdentities, createCallbackCredentialResolver, maximumCallbackDelegationTtlSeconds, selfIdentity, signDomainCallback, } from './callback.js';
11
+ import { CredentialRejected, IssuerUnavailable, boundedFetch, callbackTtl, httpIssuer, invocationUrl, admitEndpoint, requireLive, } from './errors.js';
12
12
  import { verifyCredential, verifyCredentialAgainst } from './jwks.js';
13
- const DEFAULT_ROUTE_AGE_MS = 60_000;
13
+ /**
14
+ * How long a callback Session reuses a learned route. It stays at most the Kernel's in-flight
15
+ * issuer window (`KERNEL_INFLIGHT_ISSUER_MS`, Host default 300 s; CT11): a route learned to a
16
+ * deployment replaced by a consented install ages out while that deployment is still accepted and
17
+ * answers the reserved miss, never after its own credential is refused (AM-85).
18
+ */
19
+ export const DEFAULT_ROUTE_AGE_MS = 60_000;
14
20
  export async function admit(request, configuration) {
15
21
  const execution = request.context.execution;
16
22
  requireLive(execution);
@@ -32,10 +38,7 @@ export async function admit(request, configuration) {
32
38
  }), {
33
39
  signal: execution.signal,
34
40
  timeoutMs: Math.max(1, execution.deadline - Date.now()),
35
- delegate: {
36
- ttlSeconds: callbackTtl(execution.deadline),
37
- attenuation: { kind: 'identity', self: true },
38
- },
41
+ delegate: { ttlSeconds: callbackTtl(execution.deadline) },
39
42
  });
40
43
  return result.value;
41
44
  }
@@ -53,15 +56,14 @@ export async function authenticate(credentialInput, expectedKernel, execution, c
53
56
  throw protocolError('AUTH_INVALID', 'Credential is invalid.');
54
57
  }
55
58
  const expressions = callbackIdentities(established.delegation.credential);
59
+ const session = (expression) => callbackSession(expectedKernel, expression, established.verified, execution, configuration);
56
60
  const sessions = Object.freeze({
57
- caller: callbackSession(expressions.caller),
58
- self: callbackSession(expressions.self),
59
- union: callbackSession(expressions.union),
61
+ caller: session(expressions.caller),
62
+ self: session(expressions.self),
60
63
  });
61
64
  const graph = Object.freeze({
62
65
  caller: bindSession(sessions.caller, execution),
63
66
  self: bindSession(sessions.self, execution),
64
- union: bindSession(sessions.union, execution),
65
67
  });
66
68
  let closed = false;
67
69
  return Object.freeze({
@@ -73,35 +75,67 @@ export async function authenticate(credentialInput, expectedKernel, execution, c
73
75
  closed = true;
74
76
  sessions.caller.close();
75
77
  sessions.self.close();
76
- sessions.union.close();
77
78
  },
78
79
  });
79
- function callbackSession(expression) {
80
- const resolveCallback = createCallbackCredentialResolver(configuration.signing, configuration.issuer, configuration.subject, expectedKernel, expression, established.verified, execution);
81
- return new ClientSession({
82
- kernel: expectedKernel,
83
- fetch: boundedFetch(configuration.fetch, execution.signal),
84
- auth: {
85
- ttlSeconds: Math.min(callbackTtl(execution.deadline), maximumCallbackDelegationTtlSeconds),
86
- async resolve(_call, signal) {
87
- const callback = await resolveCallback(signal);
88
- signal.throwIfAborted();
89
- return {
90
- credential: callback.credential,
91
- delegate: { ttlSeconds: callback.delegateTtlSeconds },
92
- };
93
- },
94
- },
95
- policy: {
96
- maximumRouteAgeMs: DEFAULT_ROUTE_AGE_MS,
97
- ...(configuration.policy.allowEndpoint === undefined
98
- ? {}
99
- : { allowEndpoint: configuration.policy.allowEndpoint }),
100
- ...(configuration.policy.allowInsecureHttp === true ? { allowInsecureHttp: true } : {}),
80
+ }
81
+ /**
82
+ * The Domain's own authority toward the source Kernel of an admitted call that carries no
83
+ * credential. No caller credential bounds it: its callbacks live as long as the execution, exactly
84
+ * as the `self` half of an authenticated call does within its carrier.
85
+ */
86
+ export function selfInvocation(kernel, execution, configuration) {
87
+ requireLive(execution);
88
+ const admitted = httpIssuer(kernel, configuration.policy.allowInsecureHttp === true);
89
+ admitEndpoint(invocationUrl(admitted), configuration.policy);
90
+ const session = callbackSession(admitted, selfIdentity, undefined, execution, configuration);
91
+ let closed = false;
92
+ return Object.freeze({
93
+ graph: Object.freeze({ self: bindSession(session, execution) }),
94
+ close() {
95
+ if (closed)
96
+ return;
97
+ closed = true;
98
+ session.close();
99
+ },
100
+ });
101
+ }
102
+ /**
103
+ * The Domain's own authority toward one Kernel for a step of the durable Execution `executionId`,
104
+ * which no caller credential carries: the run acts as its executor, never as its initiator. Every
105
+ * credential names `executionId` in `EXECUTION_CLAIM`, so the Kernel can accept a replaced issuer
106
+ * for the steps of a run in flight at a consented issuer change. The caller owns the returned
107
+ * Session.
108
+ */
109
+ export function executorSession(kernel, executionId, execution, configuration) {
110
+ const admitted = httpIssuer(kernel, configuration.policy.allowInsecureHttp === true);
111
+ admitEndpoint(invocationUrl(admitted), configuration.policy);
112
+ return callbackSession(admitted, selfIdentity, undefined, execution, configuration, executionId);
113
+ }
114
+ function callbackSession(kernel, expression, carrier, execution, configuration, executionId) {
115
+ const resolveCallback = createCallbackCredentialResolver(configuration.signing, configuration.issuer, configuration.subject, kernel, expression, carrier, execution, executionId);
116
+ return new ClientSession({
117
+ kernel,
118
+ fetch: boundedFetch(configuration.fetch, execution.signal),
119
+ auth: {
120
+ ttlSeconds: Math.min(callbackTtl(execution.deadline), maximumCallbackDelegationTtlSeconds),
121
+ async resolve(_call, signal) {
122
+ const callback = await resolveCallback(signal);
123
+ signal.throwIfAborted();
124
+ return {
125
+ credential: callback.credential,
126
+ delegate: { ttlSeconds: callback.delegateTtlSeconds },
127
+ };
101
128
  },
102
- timeoutMs: Math.max(1, execution.deadline - Date.now()),
103
- });
104
- }
129
+ },
130
+ policy: {
131
+ maximumRouteAgeMs: DEFAULT_ROUTE_AGE_MS,
132
+ ...(configuration.policy.allowEndpoint === undefined
133
+ ? {}
134
+ : { allowEndpoint: configuration.policy.allowEndpoint }),
135
+ ...(configuration.policy.allowInsecureHttp === true ? { allowInsecureHttp: true } : {}),
136
+ },
137
+ timeoutMs: Math.max(1, execution.deadline - Date.now()),
138
+ });
105
139
  }
106
140
  async function establishCaller(input, audience, verification, execution, policy) {
107
141
  requireLive(execution);
@@ -115,7 +149,7 @@ async function establishCaller(input, audience, verification, execution, policy)
115
149
  if (proof.verified.sub !== context.verified.sub) {
116
150
  throw new CredentialRejected('Destination carrier and authority proof subjects differ.');
117
151
  }
118
- const authority = acceptResolvedDelegation(proof.verified.claims.delegation);
152
+ const identity = acceptResolvedDelegation(proof.verified.claims.delegation);
119
153
  let principal;
120
154
  try {
121
155
  principal = NodeId(context.verified.sub);
@@ -129,7 +163,7 @@ async function establishCaller(input, audience, verification, execution, policy)
129
163
  caller: Object.freeze({
130
164
  kind: 'authenticated',
131
165
  principal,
132
- authority,
166
+ identity,
133
167
  authentication: credential.evidence(context),
134
168
  }),
135
169
  });
@@ -140,6 +174,7 @@ async function establishCaller(input, audience, verification, execution, policy)
140
174
  throw protocolError('BACKEND_UNAVAILABLE', 'Credential issuer is unavailable.');
141
175
  }
142
176
  if (cause instanceof CredentialRejected ||
177
+ cause instanceof AuthValueError ||
143
178
  cause instanceof joseErrors.JOSEError ||
144
179
  cause instanceof protocolErrors.ProtocolError) {
145
180
  throw protocolError('AUTH_INVALID', 'Credential is invalid.');
@@ -147,6 +182,7 @@ async function establishCaller(input, audience, verification, execution, policy)
147
182
  throw cause;
148
183
  }
149
184
  }
185
+ /** Accept a Kernel delegation proof claim naming exactly one resolved caller Identity. */
150
186
  export function acceptResolvedDelegation(input) {
151
187
  if (input === null ||
152
188
  typeof input !== 'object' ||
@@ -157,5 +193,14 @@ export function acceptResolvedDelegation(input) {
157
193
  Reflect.get(input, 'v') !== 1) {
158
194
  throw new AuthValueError('AUTH_GRANT_INVALID', 'Expected resolved delegation.');
159
195
  }
160
- return grant.accept({ expr: Reflect.get(input, 'expr') });
196
+ const raw = Reflect.get(input, 'expr');
197
+ // grant.accept collapses duplicate operands (union(X, X) becomes X), so the leaf is checked as sent.
198
+ if (raw === null || typeof raw !== 'object' || Reflect.get(raw, 'kind') !== 'identity') {
199
+ throw new AuthValueError('AUTH_GRANT_INVALID', 'Expected one resolved caller Identity.');
200
+ }
201
+ const { expr } = grant.accept({ expr: raw });
202
+ if (expr.kind !== 'identity') {
203
+ throw new AuthValueError('AUTH_GRANT_INVALID', 'Expected one resolved caller Identity.');
204
+ }
205
+ return expr.id;
161
206
  }
@@ -1,4 +1,5 @@
1
1
  import type { IssuerId, UnresolvedIdentityExpr, VerifiedCredential } from '../../platform/auth/index.js';
2
+ import type { NodeId } from '../../platform/graph/node/index.js';
2
3
  import type { SigningMaterial } from './signing.js';
3
4
  export declare const maximumCallbackTtlSeconds = 120;
4
5
  export declare const maximumCallbackDelegationTtlSeconds = 60;
@@ -7,8 +8,13 @@ export interface SignedCallback {
7
8
  readonly expiresAt: number;
8
9
  readonly delegateTtlSeconds: number;
9
10
  }
10
- export type CallbackGrantMode = 'caller' | 'self' | 'union';
11
- /** Exact callback Grant expressions corresponding to the Kernel Domain graph modes. */
11
+ export type CallbackMode = 'caller' | 'self';
12
+ /** The Domain's own authority, independent of any caller. */
13
+ export declare const selfIdentity: Readonly<{
14
+ kind: 'identity';
15
+ self: true;
16
+ }>;
17
+ /** Exact single-identity callback authority for each Kernel Domain graph mode. */
12
18
  export declare function callbackIdentities(nested: string | Uint8Array): Readonly<{
13
19
  caller: Readonly<{
14
20
  kind: 'identity';
@@ -18,16 +24,6 @@ export declare function callbackIdentities(nested: string | Uint8Array): Readonl
18
24
  kind: 'identity';
19
25
  self: true;
20
26
  }>;
21
- union: Readonly<{
22
- kind: 'union';
23
- operands: readonly (Readonly<{
24
- kind: 'identity';
25
- credential: string | Uint8Array<ArrayBufferLike>;
26
- }> | Readonly<{
27
- kind: 'identity';
28
- self: true;
29
- }>)[];
30
- }>;
31
27
  }>;
32
28
  export declare function signDomainCallback(signing: SigningMaterial, issuer: IssuerId, subject: string, audience: IssuerId, execution: {
33
29
  readonly deadline: number;
@@ -37,8 +33,13 @@ export declare function signCallback(signing: SigningMaterial, issuer: IssuerId,
37
33
  readonly deadline: number;
38
34
  readonly signal: AbortSignal;
39
35
  }): Promise<string>;
40
- /** Reuse one exact callback authority partition, refreshing only near its bounded expiry. */
41
- export declare function createCallbackCredentialResolver(signing: SigningMaterial, issuer: IssuerId, subject: string, audience: IssuerId, expression: UnresolvedIdentityExpr, carrier: VerifiedCredential, execution: {
36
+ /**
37
+ * Reuse one exact callback authority partition, refreshing only near its bounded expiry. Without a
38
+ * carrier the callback is the Domain's own authority, bounded by the execution alone. An
39
+ * `executionId` is the durable Execution a step's executor credential names in `EXECUTION_CLAIM`;
40
+ * no caller-bound callback names one.
41
+ */
42
+ export declare function createCallbackCredentialResolver(signing: SigningMaterial, issuer: IssuerId, subject: string, audience: IssuerId, expression: UnresolvedIdentityExpr, carrier: VerifiedCredential | undefined, execution: {
42
43
  readonly deadline: number;
43
44
  readonly signal: AbortSignal;
44
- }): (signal: AbortSignal) => Promise<SignedCallback>;
45
+ }, executionId?: NodeId): (signal: AbortSignal) => Promise<SignedCallback>;