@astrale-os/kernel-core 0.9.0-beta.62 → 0.9.0-beta.64

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 (109) hide show
  1. package/dist/auth/authority/admission/admission.d.ts +2 -2
  2. package/dist/auth/authority/admission/admission.js +10 -8
  3. package/dist/auth/authority/admission/index.d.ts +1 -1
  4. package/dist/auth/authority/admission/index.js +1 -1
  5. package/dist/auth/authority/index.d.ts +7 -3
  6. package/dist/auth/authority/index.js +4 -2
  7. package/dist/auth/authority/language/index.d.ts +2 -0
  8. package/dist/auth/authority/language/index.js +1 -0
  9. package/dist/auth/authority/language/predicate.d.ts +10 -5
  10. package/dist/auth/authority/language/predicate.js +1 -1
  11. package/dist/auth/authority/language/program.d.ts +21 -0
  12. package/dist/auth/authority/language/program.js +2 -0
  13. package/dist/auth/authority/normalization/index.d.ts +1 -1
  14. package/dist/auth/authority/normalization/index.js +1 -1
  15. package/dist/auth/authority/normalization/normalize.d.ts +1 -1
  16. package/dist/auth/authority/normalization/normalize.js +4 -5
  17. package/dist/auth/authority/ownership.optimization.js +2 -2
  18. package/dist/auth/authority/prepare-binder-body.d.ts +4 -0
  19. package/dist/auth/authority/prepare-binder-body.js +31 -0
  20. package/dist/auth/authority/program.d.ts +28 -0
  21. package/dist/auth/authority/program.js +191 -0
  22. package/dist/auth/authority/semantics/class-authority.d.ts +8 -0
  23. package/dist/auth/authority/semantics/class-authority.js +26 -0
  24. package/dist/auth/authority/semantics/composition.d.ts +39 -0
  25. package/dist/auth/authority/semantics/composition.js +112 -0
  26. package/dist/auth/authority/semantics/failure.d.ts +21 -0
  27. package/dist/auth/authority/semantics/failure.js +10 -0
  28. package/dist/auth/authority/semantics/index.d.ts +11 -0
  29. package/dist/auth/authority/semantics/index.js +5 -0
  30. package/dist/auth/authority/semantics/interpret.d.ts +35 -0
  31. package/dist/auth/authority/semantics/interpret.js +215 -0
  32. package/dist/auth/authority/semantics/snapshot.d.ts +34 -0
  33. package/dist/auth/authority/semantics/terms.d.ts +20 -0
  34. package/dist/auth/authority/semantics/terms.js +96 -0
  35. package/dist/auth/authority/semantics/vocabulary.d.ts +19 -0
  36. package/dist/auth/authority/semantics/vocabulary.js +1 -0
  37. package/dist/auth/context/context.d.ts +4 -3
  38. package/dist/auth/expression/authoring/builder.d.ts +2 -11
  39. package/dist/auth/expression/authoring/builder.js +1 -45
  40. package/dist/auth/expression/authoring/index.d.ts +1 -1
  41. package/dist/auth/expression/authoring/index.js +1 -1
  42. package/dist/auth/expression/index.d.ts +1 -2
  43. package/dist/auth/expression/index.js +1 -2
  44. package/dist/auth/expression/language/identity-expression.d.ts +2 -22
  45. package/dist/auth/grant/index.d.ts +1 -1
  46. package/dist/auth/grant/index.js +1 -1
  47. package/dist/auth/grant/resolved/admission.d.ts +4 -3
  48. package/dist/auth/grant/resolved/admission.js +23 -13
  49. package/dist/auth/grant/resolved/grant.d.ts +1 -1
  50. package/dist/auth/grant/resolved/index.d.ts +1 -1
  51. package/dist/auth/grant/resolved/index.js +1 -1
  52. package/dist/auth/grant/unresolved/admission.d.ts +4 -1
  53. package/dist/auth/grant/unresolved/admission.js +27 -67
  54. package/dist/auth/grant/unresolved/limits.d.ts +2 -4
  55. package/dist/auth/grant/unresolved/limits.js +1 -5
  56. package/dist/auth/index.d.ts +1 -1
  57. package/dist/graph/graph/graph.d.ts +1 -5
  58. package/dist/graph/graph/graph.js +3 -27
  59. package/dist/graph/graph/index.d.ts +1 -3
  60. package/dist/graph/graph/index.js +1 -2
  61. package/dist/graph/query/index.d.ts +2 -0
  62. package/dist/graph/query/index.js +1 -0
  63. package/dist/graph/query/order/index.d.ts +46 -0
  64. package/dist/graph/query/order/index.js +59 -0
  65. package/dist/graph/query/reference/evaluate.js +24 -50
  66. package/dist/graph/reconcile/planning/canonical.d.ts +6 -0
  67. package/dist/graph/reconcile/planning/canonical.js +28 -0
  68. package/dist/graph/reconcile/planning/model.d.ts +4 -0
  69. package/dist/graph/reconcile/planning/plan.js +2 -1
  70. package/dist/schema/authority/vocabulary.d.ts +3 -0
  71. package/dist/schema/authority/vocabulary.js +25 -0
  72. package/dist/schema/identity/composition.d.ts +5 -0
  73. package/dist/schema/identity/composition.js +5 -0
  74. package/dist/schema/index.d.ts +1 -0
  75. package/dist/schema/index.js +1 -0
  76. package/dist/schema/introspection/language.d.ts +2 -0
  77. package/dist/schema/kernel/schema.d.ts +125 -79
  78. package/dist/schema/kernel/syscalls/contracts/install.d.ts +86 -7
  79. package/dist/schema/kernel/syscalls/contracts/install.js +6 -3
  80. package/dist/schema/kernel/syscalls/contracts/installation.d.ts +30 -0
  81. package/dist/schema/kernel/syscalls/contracts/installation.js +9 -0
  82. package/dist/schema/kernel/syscalls/contracts/introspect.d.ts +5 -2
  83. package/dist/schema/kernel/syscalls/contracts/introspect.js +9 -5
  84. package/dist/schema/kernel/syscalls/contracts/legacy/install.d.ts +22 -0
  85. package/dist/schema/kernel/syscalls/contracts/legacy/install.js +31 -0
  86. package/dist/schema/kernel/syscalls/contracts/uninstall.d.ts +10 -0
  87. package/dist/schema/kernel/syscalls/declarations/index.d.ts +49 -25
  88. package/dist/schema/kernel/syscalls/declarations/install.d.ts +17 -2
  89. package/dist/schema/kernel/syscalls/declarations/introspect.d.ts +2 -0
  90. package/dist/schema/kernel/syscalls/declarations/mutate.d.ts +23 -23
  91. package/dist/schema/kernel/syscalls/declarations/uninstall.d.ts +7 -0
  92. package/dist/schema/kernel/syscalls/descriptors/results/view-resolution.d.ts +7 -0
  93. package/package.json +2 -2
  94. package/dist/auth/authority/prepare-grant-body.d.ts +0 -4
  95. package/dist/auth/authority/prepare-grant-body.js +0 -27
  96. package/dist/auth/expression/normalization/canonicalize.d.ts +0 -7
  97. package/dist/auth/expression/normalization/canonicalize.js +0 -102
  98. package/dist/auth/expression/normalization/index.d.ts +0 -2
  99. package/dist/auth/expression/normalization/index.js +0 -2
  100. package/dist/auth/expression/normalization/raise-denials.d.ts +0 -3
  101. package/dist/auth/expression/normalization/raise-denials.js +0 -59
  102. package/dist/graph/graph/navigation/error.d.ts +0 -12
  103. package/dist/graph/graph/navigation/error.js +0 -20
  104. package/dist/graph/graph/navigation/index.d.ts +0 -2
  105. package/dist/graph/graph/navigation/index.js +0 -1
  106. package/dist/graph/graph/navigation/model.d.ts +0 -15
  107. package/dist/schema/kernel/projection/path.d.ts +0 -2
  108. package/dist/schema/kernel/projection/path.js +0 -113
  109. /package/dist/{graph/graph/navigation/model.js → auth/authority/semantics/snapshot.js} +0 -0
@@ -1,4 +1,5 @@
1
1
  import type { OperationId } from '../../../installation/operation-id.js';
2
+ import type { PublicationRequest } from './legacy/install.js';
2
3
  export declare const domainRequest: import("zod").ZodUnion<readonly [import("zod").ZodObject<{
3
4
  artifact: import("zod").ZodObject<{
4
5
  digest: import("zod").ZodString;
@@ -6,6 +7,24 @@ export declare const domainRequest: import("zod").ZodUnion<readonly [import("zod
6
7
  size: import("zod").ZodNumber;
7
8
  }, import("zod/v4/core").$strict>;
8
9
  currentRevision: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
10
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
11
+ release: import("zod").ZodObject<{
12
+ url: import("zod").ZodString;
13
+ token: import("zod").ZodOptional<import("zod").ZodString>;
14
+ digest: import("zod").ZodOptional<import("zod").ZodString>;
15
+ }, import("zod/v4/core").$strict>;
16
+ consent: import("zod").ZodOptional<import("zod").ZodObject<{
17
+ issuer: import("zod").ZodObject<{
18
+ from: import("zod").ZodString;
19
+ to: import("zod").ZodString;
20
+ }, import("zod/v4/core").$strict>;
21
+ previous: import("zod").ZodOptional<import("zod").ZodEnum<{
22
+ drain: "drain";
23
+ revoke: "revoke";
24
+ }>>;
25
+ }, import("zod/v4/core").$strict>>;
26
+ revision: import("zod").ZodOptional<import("zod").ZodString>;
27
+ currentRevision: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
9
28
  }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
10
29
  publication: import("zod").ZodObject<{
11
30
  url: import("zod").ZodString;
@@ -24,6 +43,24 @@ export declare const installInput: import("zod").ZodObject<{
24
43
  size: import("zod").ZodNumber;
25
44
  }, import("zod/v4/core").$strict>;
26
45
  currentRevision: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
46
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
47
+ release: import("zod").ZodObject<{
48
+ url: import("zod").ZodString;
49
+ token: import("zod").ZodOptional<import("zod").ZodString>;
50
+ digest: import("zod").ZodOptional<import("zod").ZodString>;
51
+ }, import("zod/v4/core").$strict>;
52
+ consent: import("zod").ZodOptional<import("zod").ZodObject<{
53
+ issuer: import("zod").ZodObject<{
54
+ from: import("zod").ZodString;
55
+ to: import("zod").ZodString;
56
+ }, import("zod/v4/core").$strict>;
57
+ previous: import("zod").ZodOptional<import("zod").ZodEnum<{
58
+ drain: "drain";
59
+ revoke: "revoke";
60
+ }>>;
61
+ }, import("zod/v4/core").$strict>>;
62
+ revision: import("zod").ZodOptional<import("zod").ZodString>;
63
+ currentRevision: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
27
64
  }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
28
65
  publication: import("zod").ZodObject<{
29
66
  url: import("zod").ZodString;
@@ -51,6 +88,16 @@ export declare const installReceipt: import("zod").ZodObject<{
51
88
  revision: import("zod").ZodString;
52
89
  generation: import("zod").ZodString;
53
90
  }, import("zod/v4/core").$strict>>;
91
+ consent: import("zod").ZodOptional<import("zod").ZodObject<{
92
+ issuer: import("zod").ZodObject<{
93
+ from: import("zod").ZodString;
94
+ to: import("zod").ZodString;
95
+ }, import("zod/v4/core").$strict>;
96
+ previous: import("zod").ZodEnum<{
97
+ drain: "drain";
98
+ revoke: "revoke";
99
+ }>;
100
+ }, import("zod/v4/core").$strict>>;
54
101
  }, import("zod/v4/core").$strict>;
55
102
  phase: import("zod").ZodEnum<{
56
103
  converge: "converge";
@@ -71,6 +118,7 @@ export declare const installReceipt: import("zod").ZodObject<{
71
118
  }, import("zod/v4/core").$strict>;
72
119
  type NonEmpty<Value> = readonly [Value, ...Value[]];
73
120
  export type InstallationDigest = `sha256:${string}`;
121
+ export type ReleaseDigest = InstallationDigest;
74
122
  export interface ArtifactRef {
75
123
  readonly digest: InstallationDigest;
76
124
  readonly mediaType: string;
@@ -87,12 +135,35 @@ export interface DomainGeneration {
87
135
  readonly revision: string;
88
136
  readonly generation: InstallationDigest;
89
137
  }
138
+ /**
139
+ * The operator's consent to replace the issuer an installation runs under (D7): a compare-and-swap
140
+ * of the exact installed issuer `from` for the exact issuer `to` the source serves.
141
+ */
142
+ export interface IssuerConsent {
143
+ readonly issuer: {
144
+ readonly from: string;
145
+ readonly to: string;
146
+ };
147
+ /**
148
+ * What the replaced issuer keeps: `drain` (default) accepts it for a bounded time after the
149
+ * activation, then only for the steps of its durable runs; `revoke` cuts it at the activation.
150
+ */
151
+ readonly previous?: 'drain' | 'revoke';
152
+ }
90
153
  export interface TransitionIntent {
91
154
  readonly transition: string;
92
155
  readonly operation: OperationId;
93
156
  readonly origin: string;
94
157
  readonly previous: DomainGeneration | null;
95
158
  readonly generation: DomainGeneration | null;
159
+ /** Present only on a replacement that changed its issuer under consent. */
160
+ readonly consent?: {
161
+ readonly issuer: {
162
+ readonly from: string;
163
+ readonly to: string;
164
+ };
165
+ readonly previous: 'drain' | 'revoke';
166
+ };
96
167
  }
97
168
  export interface ReadinessReceipt {
98
169
  readonly generation: InstallationDigest;
@@ -105,18 +176,26 @@ export interface TransitionReceipt {
105
176
  readonly state: 'committed';
106
177
  readonly readiness?: ReadinessReceipt;
107
178
  }
108
- export type DomainRequest = {
109
- readonly artifact: ArtifactRef;
110
- readonly currentRevision?: string | null;
111
- } | {
112
- readonly publication: {
179
+ /** Installs the document served by the URL, preferring release.json over domain.json. */
180
+ export interface ReleaseRequest {
181
+ readonly release: {
113
182
  readonly url: string;
114
183
  readonly token?: string;
115
- readonly etag?: InstallationDigest;
184
+ /** Requires an exact release digest. Omit to accept any served document, including a legacy Publication. */
185
+ readonly digest?: ReleaseDigest;
116
186
  };
187
+ /**
188
+ * Required when the source serves another issuer than the installed one, refused otherwise:
189
+ * `from` must be the installed issuer and `to` the served one, neither the Kernel issuer.
190
+ */
191
+ readonly consent?: IssuerConsent;
117
192
  readonly revision?: string;
118
193
  readonly currentRevision?: string | null;
119
- };
194
+ }
195
+ export type DomainRequest = {
196
+ readonly artifact: ArtifactRef;
197
+ readonly currentRevision?: string | null;
198
+ } | ReleaseRequest | PublicationRequest;
120
199
  export interface InstallInput {
121
200
  readonly operation: OperationId;
122
201
  readonly domains: NonEmpty<DomainRequest>;
@@ -1,19 +1,22 @@
1
1
  import { array, strictObject, union } from 'zod';
2
- import { artifactRef, installationText, operationIdSchema, transitionReceipt, } from './installation.js';
2
+ import { artifactRef, installationDigest, installationText, issuerConsent, operationIdSchema, transitionReceipt, } from './installation.js';
3
+ import { publicationRequest } from './legacy/install.js';
3
4
  export const domainRequest = union([
4
5
  strictObject({
5
6
  artifact: artifactRef,
6
7
  currentRevision: installationText.nullable().optional(),
7
8
  }),
8
9
  strictObject({
9
- publication: strictObject({
10
+ release: strictObject({
10
11
  url: installationText,
11
12
  token: installationText.optional(),
12
- etag: installationText.optional(),
13
+ digest: installationDigest.optional(),
13
14
  }),
15
+ consent: issuerConsent.optional(),
14
16
  revision: installationText.optional(),
15
17
  currentRevision: installationText.nullable().optional(),
16
18
  }),
19
+ publicationRequest,
17
20
  ]);
18
21
  export const installInput = strictObject({
19
22
  operation: operationIdSchema,
@@ -18,6 +18,16 @@ export declare const domainGeneration: import("zod").ZodObject<{
18
18
  revision: import("zod").ZodString;
19
19
  generation: import("zod").ZodString;
20
20
  }, import("zod/v4/core").$strict>;
21
+ export declare const issuerConsent: import("zod").ZodObject<{
22
+ issuer: import("zod").ZodObject<{
23
+ from: import("zod").ZodString;
24
+ to: import("zod").ZodString;
25
+ }, import("zod/v4/core").$strict>;
26
+ previous: import("zod").ZodOptional<import("zod").ZodEnum<{
27
+ drain: "drain";
28
+ revoke: "revoke";
29
+ }>>;
30
+ }, import("zod/v4/core").$strict>;
21
31
  export declare const transitionIntent: import("zod").ZodObject<{
22
32
  transition: import("zod").ZodString;
23
33
  operation: import("zod").ZodString;
@@ -32,6 +42,16 @@ export declare const transitionIntent: import("zod").ZodObject<{
32
42
  revision: import("zod").ZodString;
33
43
  generation: import("zod").ZodString;
34
44
  }, import("zod/v4/core").$strict>>;
45
+ consent: import("zod").ZodOptional<import("zod").ZodObject<{
46
+ issuer: import("zod").ZodObject<{
47
+ from: import("zod").ZodString;
48
+ to: import("zod").ZodString;
49
+ }, import("zod/v4/core").$strict>;
50
+ previous: import("zod").ZodEnum<{
51
+ drain: "drain";
52
+ revoke: "revoke";
53
+ }>;
54
+ }, import("zod/v4/core").$strict>>;
35
55
  }, import("zod/v4/core").$strict>;
36
56
  export declare const readinessReceipt: import("zod").ZodObject<{
37
57
  generation: import("zod").ZodString;
@@ -58,6 +78,16 @@ export declare const transitionReceipt: import("zod").ZodObject<{
58
78
  revision: import("zod").ZodString;
59
79
  generation: import("zod").ZodString;
60
80
  }, import("zod/v4/core").$strict>>;
81
+ consent: import("zod").ZodOptional<import("zod").ZodObject<{
82
+ issuer: import("zod").ZodObject<{
83
+ from: import("zod").ZodString;
84
+ to: import("zod").ZodString;
85
+ }, import("zod/v4/core").$strict>;
86
+ previous: import("zod").ZodEnum<{
87
+ drain: "drain";
88
+ revoke: "revoke";
89
+ }>;
90
+ }, import("zod/v4/core").$strict>>;
61
91
  }, import("zod/v4/core").$strict>;
62
92
  phase: import("zod").ZodEnum<{
63
93
  converge: "converge";
@@ -20,12 +20,21 @@ export const domainGeneration = strictObject({
20
20
  revision: installationText,
21
21
  generation: installationDigest,
22
22
  });
23
+ const consentIssuers = strictObject({ from: installationText, to: installationText });
24
+ export const issuerConsent = strictObject({
25
+ issuer: consentIssuers,
26
+ previous: enumeration(['drain', 'revoke']).optional(),
27
+ });
23
28
  export const transitionIntent = strictObject({
24
29
  transition: installationText,
25
30
  operation: operationIdSchema,
26
31
  origin: installationText,
27
32
  previous: domainGeneration.nullable(),
28
33
  generation: domainGeneration.nullable(),
34
+ consent: strictObject({
35
+ issuer: consentIssuers,
36
+ previous: enumeration(['drain', 'revoke']),
37
+ }).optional(),
29
38
  });
30
39
  export const readinessReceipt = strictObject({
31
40
  generation: installationDigest,
@@ -1,8 +1,11 @@
1
- export declare const introspectInput: import("zod").ZodObject<{
1
+ /** One ready Domain by origin, or the installed listing, which names no origin. */
2
+ export declare const introspectInput: import("zod").ZodUnion<readonly [import("zod").ZodObject<{
2
3
  kind: import("zod").ZodEnum<{
3
4
  bundle: "bundle";
4
5
  dependencies: "dependencies";
5
6
  inspect: "inspect";
6
7
  }>;
7
8
  origin: import("zod").ZodString;
8
- }, import("zod/v4/core").$strict>;
9
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
10
+ kind: import("zod").ZodLiteral<"installed">;
11
+ }, import("zod/v4/core").$strict>]>;
@@ -1,5 +1,9 @@
1
- import { enum as enumeration, strictObject, string } from 'zod';
2
- export const introspectInput = strictObject({
3
- kind: enumeration(['inspect', 'bundle', 'dependencies']),
4
- origin: string().min(1),
5
- });
1
+ import { enum as enumeration, literal, strictObject, string, union } from 'zod';
2
+ /** One ready Domain by origin, or the installed listing, which names no origin. */
3
+ export const introspectInput = union([
4
+ strictObject({
5
+ kind: enumeration(['inspect', 'bundle', 'dependencies']),
6
+ origin: string().min(1),
7
+ }),
8
+ strictObject({ kind: literal('installed') }),
9
+ ]);
@@ -0,0 +1,22 @@
1
+ import type { InstallationDigest } from '../install.js';
2
+ /** @deprecated Successor: the `release` request of `../install.ts`. */
3
+ export declare const publicationRequest: import("zod").ZodObject<{
4
+ publication: import("zod").ZodObject<{
5
+ url: import("zod").ZodString;
6
+ token: import("zod").ZodOptional<import("zod").ZodString>;
7
+ etag: import("zod").ZodOptional<import("zod").ZodString>;
8
+ }, import("zod/v4/core").$strict>;
9
+ revision: import("zod").ZodOptional<import("zod").ZodString>;
10
+ currentRevision: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
11
+ }, import("zod/v4/core").$strict>;
12
+ /** @deprecated Use `ReleaseRequest` to guard the release digest. */
13
+ export interface PublicationRequest {
14
+ readonly publication: {
15
+ readonly url: string;
16
+ readonly token?: string;
17
+ /** ETag of the v3 document the source serves: its own, or the projection of a v4 release. */
18
+ readonly etag?: InstallationDigest;
19
+ };
20
+ readonly revision?: string;
21
+ readonly currentRevision?: string | null;
22
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * The `publication` Domain request of `schema.install` keeps its v3 meaning: `etag` guards the
3
+ * ETag of the v3 document the source serves, including the frozen projection of a v4 release.
4
+ *
5
+ * @deprecated Use the `release` request of `../install.ts`, whose `digest` is the release digest.
6
+ *
7
+ * Short-term consumers: the Admin instance gateway and the CLI until they send `release`, the SDK
8
+ * e2e controller, and this repository's own callers (`__e2e__`, `host/e2e`,
9
+ * `host/qualification/falkor`) and tests. The 1Pact Host runs its own Kernel .117 and does not
10
+ * depend on this module.
11
+ *
12
+ * Removal, in a separate breaking release, once the Admin gateway and the CLI send `release` to
13
+ * every Kernel that accepts it and the SDK e2e controller has moved: move this repository's callers
14
+ * and tests first, then delete this folder, the `publication` branch of `domainRequest`, Runtime
15
+ * `PublicationDomainInput` with the `publication` branch of `installDomain`,
16
+ * `DesiredInstallation.targetEtag`, `InstallRoot.targetEtag` and
17
+ * `CUTOVER_PUBLICATION_ETAG_CONFLICT`. The legacy fingerprint keys stay frozen: retained operations
18
+ * store their digests.
19
+ */
20
+ import { strictObject } from 'zod';
21
+ import { installationText } from '../installation.js';
22
+ /** @deprecated Successor: the `release` request of `../install.ts`. */
23
+ export const publicationRequest = strictObject({
24
+ publication: strictObject({
25
+ url: installationText,
26
+ token: installationText.optional(),
27
+ etag: installationText.optional(),
28
+ }),
29
+ revision: installationText.optional(),
30
+ currentRevision: installationText.nullable().optional(),
31
+ });
@@ -24,6 +24,16 @@ export declare const uninstallOutput: import("zod").ZodObject<{
24
24
  revision: import("zod").ZodString;
25
25
  generation: import("zod").ZodString;
26
26
  }, import("zod/v4/core").$strict>>;
27
+ consent: import("zod").ZodOptional<import("zod").ZodObject<{
28
+ issuer: import("zod").ZodObject<{
29
+ from: import("zod").ZodString;
30
+ to: import("zod").ZodString;
31
+ }, import("zod/v4/core").$strict>;
32
+ previous: import("zod").ZodEnum<{
33
+ drain: "drain";
34
+ revoke: "revoke";
35
+ }>;
36
+ }, import("zod/v4/core").$strict>>;
27
37
  }, import("zod/v4/core").$strict>;
28
38
  phase: import("zod").ZodEnum<{
29
39
  converge: "converge";
@@ -399,29 +399,6 @@ export declare const Functions: Readonly<{
399
399
  };
400
400
  })[];
401
401
  operations: ({
402
- op: "edge.update";
403
- edge: {
404
- source: string;
405
- target: string;
406
- class: string;
407
- };
408
- slug: unknown;
409
- props?: {
410
- set: Record<string, unknown>;
411
- unset: string[];
412
- } | undefined;
413
- } | {
414
- op: "edge.update";
415
- edge: {
416
- source: string;
417
- target: string;
418
- class: string;
419
- };
420
- props: {
421
- set: Record<string, unknown>;
422
- unset: string[];
423
- };
424
- } | {
425
402
  op: "node.create";
426
403
  as: string;
427
404
  class: string;
@@ -449,6 +426,29 @@ export declare const Functions: Readonly<{
449
426
  };
450
427
  slug?: unknown;
451
428
  props: Record<string, unknown>;
429
+ } | {
430
+ op: "edge.update";
431
+ edge: {
432
+ source: string;
433
+ target: string;
434
+ class: string;
435
+ };
436
+ slug: unknown;
437
+ props?: {
438
+ set: Record<string, unknown>;
439
+ unset: string[];
440
+ } | undefined;
441
+ } | {
442
+ op: "edge.update";
443
+ edge: {
444
+ source: string;
445
+ target: string;
446
+ class: string;
447
+ };
448
+ props: {
449
+ set: Record<string, unknown>;
450
+ unset: string[];
451
+ };
452
452
  } | {
453
453
  op: "edge.delete";
454
454
  edge: {
@@ -493,6 +493,14 @@ export declare const Functions: Readonly<{
493
493
  install: builder.Function<builder.CallableProjection<{
494
494
  operation: string;
495
495
  domains: ({
496
+ publication: {
497
+ url: string;
498
+ token?: string | undefined;
499
+ etag?: string | undefined;
500
+ };
501
+ revision?: string | undefined;
502
+ currentRevision?: string | null | undefined;
503
+ } | {
496
504
  artifact: {
497
505
  digest: string;
498
506
  mediaType: string;
@@ -500,11 +508,18 @@ export declare const Functions: Readonly<{
500
508
  };
501
509
  currentRevision?: string | null | undefined;
502
510
  } | {
503
- publication: {
511
+ release: {
504
512
  url: string;
505
513
  token?: string | undefined;
506
- etag?: string | undefined;
514
+ digest?: string | undefined;
507
515
  };
516
+ consent?: {
517
+ issuer: {
518
+ from: string;
519
+ to: string;
520
+ };
521
+ previous?: "drain" | "revoke" | undefined;
522
+ } | undefined;
508
523
  revision?: string | undefined;
509
524
  currentRevision?: string | null | undefined;
510
525
  })[];
@@ -514,6 +529,8 @@ export declare const Functions: Readonly<{
514
529
  introspect: builder.Function<builder.CallableProjection<{
515
530
  kind: "bundle" | "dependencies" | "inspect";
516
531
  origin: string;
532
+ } | {
533
+ kind: "installed";
517
534
  }, {
518
535
  readonly mode: 'binary';
519
536
  }, "authenticated", false, false, undefined>>;
@@ -542,6 +559,13 @@ export declare const Functions: Readonly<{
542
559
  revision: string;
543
560
  generation: string;
544
561
  } | null;
562
+ consent?: {
563
+ issuer: {
564
+ from: string;
565
+ to: string;
566
+ };
567
+ previous: "drain" | "revoke";
568
+ } | undefined;
545
569
  };
546
570
  phase: "converge" | "cutover";
547
571
  state: "committed";
@@ -2,6 +2,14 @@ import { type builder } from '@astrale-os/kernel-dsl/v1';
2
2
  export declare const Install: builder.Function<builder.CallableProjection<{
3
3
  operation: string;
4
4
  domains: ({
5
+ publication: {
6
+ url: string;
7
+ token?: string | undefined;
8
+ etag?: string | undefined;
9
+ };
10
+ revision?: string | undefined;
11
+ currentRevision?: string | null | undefined;
12
+ } | {
5
13
  artifact: {
6
14
  digest: string;
7
15
  mediaType: string;
@@ -9,11 +17,18 @@ export declare const Install: builder.Function<builder.CallableProjection<{
9
17
  };
10
18
  currentRevision?: string | null | undefined;
11
19
  } | {
12
- publication: {
20
+ release: {
13
21
  url: string;
14
22
  token?: string | undefined;
15
- etag?: string | undefined;
23
+ digest?: string | undefined;
16
24
  };
25
+ consent?: {
26
+ issuer: {
27
+ from: string;
28
+ to: string;
29
+ };
30
+ previous?: "drain" | "revoke" | undefined;
31
+ } | undefined;
17
32
  revision?: string | undefined;
18
33
  currentRevision?: string | null | undefined;
19
34
  })[];
@@ -2,6 +2,8 @@ import { type builder } from '@astrale-os/kernel-dsl/v1';
2
2
  export declare const Introspect: builder.Function<builder.CallableProjection<{
3
3
  kind: "bundle" | "dependencies" | "inspect";
4
4
  origin: string;
5
+ } | {
6
+ kind: "installed";
5
7
  }, {
6
8
  readonly mode: 'binary';
7
9
  }, "authenticated", false, false, undefined>>;
@@ -155,29 +155,6 @@ export declare const Mutate: builder.Function<builder.CallableProjection<{
155
155
  };
156
156
  })[];
157
157
  operations: ({
158
- op: "edge.update";
159
- edge: {
160
- source: string;
161
- target: string;
162
- class: string;
163
- };
164
- slug: unknown;
165
- props?: {
166
- set: Record<string, unknown>;
167
- unset: string[];
168
- } | undefined;
169
- } | {
170
- op: "edge.update";
171
- edge: {
172
- source: string;
173
- target: string;
174
- class: string;
175
- };
176
- props: {
177
- set: Record<string, unknown>;
178
- unset: string[];
179
- };
180
- } | {
181
158
  op: "node.create";
182
159
  as: string;
183
160
  class: string;
@@ -205,6 +182,29 @@ export declare const Mutate: builder.Function<builder.CallableProjection<{
205
182
  };
206
183
  slug?: unknown;
207
184
  props: Record<string, unknown>;
185
+ } | {
186
+ op: "edge.update";
187
+ edge: {
188
+ source: string;
189
+ target: string;
190
+ class: string;
191
+ };
192
+ slug: unknown;
193
+ props?: {
194
+ set: Record<string, unknown>;
195
+ unset: string[];
196
+ } | undefined;
197
+ } | {
198
+ op: "edge.update";
199
+ edge: {
200
+ source: string;
201
+ target: string;
202
+ class: string;
203
+ };
204
+ props: {
205
+ set: Record<string, unknown>;
206
+ unset: string[];
207
+ };
208
208
  } | {
209
209
  op: "edge.delete";
210
210
  edge: {
@@ -24,6 +24,13 @@ export declare const Uninstall: builder.Function<builder.CallableProjection<{
24
24
  revision: string;
25
25
  generation: string;
26
26
  } | null;
27
+ consent?: {
28
+ issuer: {
29
+ from: string;
30
+ to: string;
31
+ };
32
+ previous: "drain" | "revoke";
33
+ } | undefined;
27
34
  };
28
35
  phase: "converge" | "cutover";
29
36
  state: "committed";
@@ -11,6 +11,13 @@ export interface ResolvedView {
11
11
  readonly iframe?: IframeRequirements;
12
12
  readonly host?: ViewHostRequirements;
13
13
  readonly issuer: IssuerId;
14
+ /**
15
+ * ETag of the v3 Publication that pins the View's Domain: its own for a legacy pin, the
16
+ * frozen projection's for a `DomainRelease` v4 pin.
17
+ *
18
+ * @deprecated Successor: `ResolvedView.release`, emitted by the breaking release (AM-1) as
19
+ * the release digest.
20
+ */
14
21
  readonly etag: `sha256:${string}`;
15
22
  readonly revision: Revision;
16
23
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astrale-os/kernel-core",
3
- "version": "0.9.0-beta.62",
3
+ "version": "0.9.0-beta.64",
4
4
  "description": "Astrale Kernel Core - Types, Invariants, and Pure Logic",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -160,7 +160,7 @@
160
160
  "access": "public"
161
161
  },
162
162
  "dependencies": {
163
- "@astrale-os/kernel-dsl": "0.2.0-beta.44",
163
+ "@astrale-os/kernel-dsl": "0.2.0-beta.46",
164
164
  "@noble/hashes": "2.3.0",
165
165
  "@types/json-schema": "^7.0.15",
166
166
  "dequal": "2.0.3"
@@ -1,4 +0,0 @@
1
- import type { Grant } from '../grant/index.js';
2
- import type { AuthorityExpr, AuthorityPredicate } from './language/index.js';
3
- /** Prepare one body in a fresh Grant subject scope, independently of any concrete Grant. */
4
- export declare function prepareGrantBody(where: AuthorityExpr): (grant: Grant) => AuthorityPredicate;
@@ -1,27 +0,0 @@
1
- import * as portable from '@astrale-os/kernel-dsl/value';
2
- import { accept as acceptGrant, canonicalize as canonicalizeGrant } from '../grant/index.js';
3
- import { admitGrantBody } from './admission/index.js';
4
- import { AUTHORITY_PREDICATE_VERSION } from './language/index.js';
5
- import { normalizeGrantBodyAdmitted } from './normalization/index.js';
6
- import { ownCanonical } from './ownership.optimization.js';
7
- /** Prepare one body in a fresh Grant subject scope, independently of any concrete Grant. */
8
- export function prepareGrantBody(where) {
9
- const admitted = admitGrantBody(portable.acceptForRead(where));
10
- const body = portable.acceptImmutable(normalizeGrantBodyAdmitted(admitted));
11
- return grantBinder(body);
12
- }
13
- // A distinct closure scope retains only the normalized body, never an initial Grant or caller input.
14
- function grantBinder(where) {
15
- return (grant) => {
16
- // Charge the entire expression on every binding, including the body and its outer container.
17
- const value = portable.acceptForRead({ op: 'grant', grant, where });
18
- return ownCanonical(Object.freeze({
19
- version: AUTHORITY_PREDICATE_VERSION,
20
- predicate: Object.freeze({
21
- op: 'grant',
22
- grant: canonicalizeGrant(acceptGrant(value.grant)),
23
- where,
24
- }),
25
- }));
26
- };
27
- }