@substrat-run/contracts 0.2.1 → 0.4.0

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.
@@ -1,257 +1,93 @@
1
1
  import { z } from 'zod';
2
2
  export declare const node: z.ZodObject<{
3
- tenantId: z.ZodBranded<z.ZodString, "TenantId">;
4
- scopeId: z.ZodNullable<z.ZodBranded<z.ZodString, "ScopeId">>;
5
- }, "strip", z.ZodTypeAny, {
6
- tenantId: string & z.BRAND<"TenantId">;
7
- scopeId: (string & z.BRAND<"ScopeId">) | null;
8
- }, {
9
- tenantId: string;
10
- scopeId: string | null;
11
- }>;
3
+ tenantId: z.core.$ZodBranded<z.ZodString, "TenantId", "out">;
4
+ scopeId: z.ZodNullable<z.core.$ZodBranded<z.ZodString, "ScopeId", "out">>;
5
+ }, z.core.$strip>;
12
6
  export type Node = z.infer<typeof node>;
13
7
  export declare const roleKey: z.ZodString;
14
8
  export declare const roleDefinition: z.ZodObject<{
15
9
  key: z.ZodString;
16
- permissions: z.ZodArray<z.ZodBranded<z.ZodString, "PermissionKey">, "many">;
17
- source: z.ZodUnion<[z.ZodBranded<z.ZodString, "ModuleId">, z.ZodLiteral<"vertical">]>;
18
- }, "strip", z.ZodTypeAny, {
19
- key: string;
20
- permissions: (string & z.BRAND<"PermissionKey">)[];
21
- source: (string & z.BRAND<"ModuleId">) | "vertical";
22
- }, {
23
- key: string;
24
- permissions: string[];
25
- source: string;
26
- }>;
10
+ permissions: z.ZodArray<z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">>;
11
+ source: z.ZodUnion<readonly [z.core.$ZodBranded<z.ZodString, "ModuleId", "out">, z.ZodLiteral<"vertical">]>;
12
+ }, z.core.$strip>;
27
13
  export type RoleDefinition = z.infer<typeof roleDefinition>;
14
+ /**
15
+ * A role as the directory holds it — the definition plus the tenant it belongs
16
+ * to (control-plane.md §4.5's roles surface). `RoleDefinition` is what a caller
17
+ * AUTHORS, and a tenant is ambient at that point (`defineRole(actor, tenantId,
18
+ * role)`); this is what a caller READS back, where the tenant is the answer to
19
+ * "where does this role apply?" and has to travel with it.
20
+ */
21
+ export declare const tenantRole: z.ZodObject<{
22
+ key: z.ZodString;
23
+ permissions: z.ZodArray<z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">>;
24
+ source: z.ZodUnion<readonly [z.core.$ZodBranded<z.ZodString, "ModuleId", "out">, z.ZodLiteral<"vertical">]>;
25
+ tenantId: z.core.$ZodBranded<z.ZodString, "TenantId", "out">;
26
+ }, z.core.$strip>;
27
+ export type TenantRole = z.infer<typeof tenantRole>;
28
28
  export declare const roleAssignment: z.ZodObject<{
29
- principalId: z.ZodBranded<z.ZodString, "PrincipalId">;
29
+ principalId: z.core.$ZodBranded<z.ZodString, "PrincipalId", "out">;
30
30
  roleKey: z.ZodString;
31
31
  node: z.ZodObject<{
32
- tenantId: z.ZodBranded<z.ZodString, "TenantId">;
33
- scopeId: z.ZodNullable<z.ZodBranded<z.ZodString, "ScopeId">>;
34
- }, "strip", z.ZodTypeAny, {
35
- tenantId: string & z.BRAND<"TenantId">;
36
- scopeId: (string & z.BRAND<"ScopeId">) | null;
37
- }, {
38
- tenantId: string;
39
- scopeId: string | null;
40
- }>;
41
- }, "strip", z.ZodTypeAny, {
42
- principalId: string & z.BRAND<"PrincipalId">;
43
- roleKey: string;
44
- node: {
45
- tenantId: string & z.BRAND<"TenantId">;
46
- scopeId: (string & z.BRAND<"ScopeId">) | null;
47
- };
48
- }, {
49
- principalId: string;
50
- roleKey: string;
51
- node: {
52
- tenantId: string;
53
- scopeId: string | null;
54
- };
55
- }>;
32
+ tenantId: z.core.$ZodBranded<z.ZodString, "TenantId", "out">;
33
+ scopeId: z.ZodNullable<z.core.$ZodBranded<z.ZodString, "ScopeId", "out">>;
34
+ }, z.core.$strip>;
35
+ }, z.core.$strip>;
56
36
  export type RoleAssignment = z.infer<typeof roleAssignment>;
57
37
  export declare const capabilityGrant: z.ZodObject<{
58
- principalId: z.ZodBranded<z.ZodString, "PrincipalId">;
59
- permission: z.ZodBranded<z.ZodString, "PermissionKey">;
38
+ principalId: z.core.$ZodBranded<z.ZodString, "PrincipalId", "out">;
39
+ permission: z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">;
60
40
  node: z.ZodObject<{
61
- tenantId: z.ZodBranded<z.ZodString, "TenantId">;
62
- scopeId: z.ZodNullable<z.ZodBranded<z.ZodString, "ScopeId">>;
63
- }, "strip", z.ZodTypeAny, {
64
- tenantId: string & z.BRAND<"TenantId">;
65
- scopeId: (string & z.BRAND<"ScopeId">) | null;
66
- }, {
67
- tenantId: string;
68
- scopeId: string | null;
69
- }>;
41
+ tenantId: z.core.$ZodBranded<z.ZodString, "TenantId", "out">;
42
+ scopeId: z.ZodNullable<z.core.$ZodBranded<z.ZodString, "ScopeId", "out">>;
43
+ }, z.core.$strip>;
70
44
  entity: z.ZodOptional<z.ZodObject<{
71
45
  entityType: z.ZodString;
72
46
  entityId: z.ZodString;
73
- }, "strip", z.ZodTypeAny, {
74
- entityType: string;
75
- entityId: string;
76
- }, {
77
- entityType: string;
78
- entityId: string;
79
- }>>;
80
- expiresAt: z.ZodOptional<z.ZodBranded<z.ZodString, "Instant">>;
81
- grantedBy: z.ZodBranded<z.ZodString, "PrincipalId">;
82
- }, "strip", z.ZodTypeAny, {
83
- principalId: string & z.BRAND<"PrincipalId">;
84
- node: {
85
- tenantId: string & z.BRAND<"TenantId">;
86
- scopeId: (string & z.BRAND<"ScopeId">) | null;
87
- };
88
- permission: string & z.BRAND<"PermissionKey">;
89
- grantedBy: string & z.BRAND<"PrincipalId">;
90
- entity?: {
91
- entityType: string;
92
- entityId: string;
93
- } | undefined;
94
- expiresAt?: (string & z.BRAND<"Instant">) | undefined;
95
- }, {
96
- principalId: string;
97
- node: {
98
- tenantId: string;
99
- scopeId: string | null;
100
- };
101
- permission: string;
102
- grantedBy: string;
103
- entity?: {
104
- entityType: string;
105
- entityId: string;
106
- } | undefined;
107
- expiresAt?: string | undefined;
108
- }>;
47
+ }, z.core.$strip>>;
48
+ expiresAt: z.ZodOptional<z.core.$ZodBranded<z.ZodString, "Instant", "out">>;
49
+ grantedBy: z.core.$ZodBranded<z.ZodString, "PrincipalId", "out">;
50
+ }, z.core.$strip>;
109
51
  export type CapabilityGrant = z.infer<typeof capabilityGrant>;
110
- export declare const objectRef: z.ZodBranded<z.ZodString, "ObjectRef">;
52
+ export declare const objectRef: z.core.$ZodBranded<z.ZodString, "ObjectRef", "out">;
111
53
  export type ObjectRef = z.infer<typeof objectRef>;
112
54
  export declare const relationName: z.ZodString;
113
55
  export declare const relationTuple: z.ZodObject<{
114
- subject: z.ZodBranded<z.ZodString, "ObjectRef">;
56
+ subject: z.core.$ZodBranded<z.ZodString, "ObjectRef", "out">;
115
57
  relation: z.ZodString;
116
- object: z.ZodBranded<z.ZodString, "ObjectRef">;
117
- }, "strip", z.ZodTypeAny, {
118
- object: string & z.BRAND<"ObjectRef">;
119
- subject: string & z.BRAND<"ObjectRef">;
120
- relation: string;
121
- }, {
122
- object: string;
123
- subject: string;
124
- relation: string;
125
- }>;
58
+ object: z.core.$ZodBranded<z.ZodString, "ObjectRef", "out">;
59
+ }, z.core.$strip>;
126
60
  export type RelationTuple = z.infer<typeof relationTuple>;
127
- export declare const decision: z.ZodDiscriminatedUnion<"allowed", [z.ZodObject<{
61
+ export declare const decision: z.ZodDiscriminatedUnion<[z.ZodObject<{
128
62
  allowed: z.ZodLiteral<true>;
129
63
  proof: z.ZodArray<z.ZodObject<{
130
- subject: z.ZodBranded<z.ZodString, "ObjectRef">;
64
+ subject: z.core.$ZodBranded<z.ZodString, "ObjectRef", "out">;
131
65
  relation: z.ZodString;
132
- object: z.ZodBranded<z.ZodString, "ObjectRef">;
133
- }, "strip", z.ZodTypeAny, {
134
- object: string & z.BRAND<"ObjectRef">;
135
- subject: string & z.BRAND<"ObjectRef">;
136
- relation: string;
137
- }, {
138
- object: string;
139
- subject: string;
140
- relation: string;
141
- }>, "many">;
142
- }, "strip", z.ZodTypeAny, {
143
- allowed: true;
144
- proof: {
145
- object: string & z.BRAND<"ObjectRef">;
146
- subject: string & z.BRAND<"ObjectRef">;
147
- relation: string;
148
- }[];
149
- }, {
150
- allowed: true;
151
- proof: {
152
- object: string;
153
- subject: string;
154
- relation: string;
155
- }[];
156
- }>, z.ZodObject<{
66
+ object: z.core.$ZodBranded<z.ZodString, "ObjectRef", "out">;
67
+ }, z.core.$strip>>;
68
+ }, z.core.$strip>, z.ZodObject<{
157
69
  allowed: z.ZodLiteral<false>;
158
- checked: z.ZodBranded<z.ZodString, "PermissionKey">;
70
+ checked: z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">;
159
71
  node: z.ZodObject<{
160
- tenantId: z.ZodBranded<z.ZodString, "TenantId">;
161
- scopeId: z.ZodNullable<z.ZodBranded<z.ZodString, "ScopeId">>;
162
- }, "strip", z.ZodTypeAny, {
163
- tenantId: string & z.BRAND<"TenantId">;
164
- scopeId: (string & z.BRAND<"ScopeId">) | null;
165
- }, {
166
- tenantId: string;
167
- scopeId: string | null;
168
- }>;
169
- }, "strip", z.ZodTypeAny, {
170
- node: {
171
- tenantId: string & z.BRAND<"TenantId">;
172
- scopeId: (string & z.BRAND<"ScopeId">) | null;
173
- };
174
- allowed: false;
175
- checked: string & z.BRAND<"PermissionKey">;
176
- }, {
177
- node: {
178
- tenantId: string;
179
- scopeId: string | null;
180
- };
181
- allowed: false;
182
- checked: string;
183
- }>]>;
72
+ tenantId: z.core.$ZodBranded<z.ZodString, "TenantId", "out">;
73
+ scopeId: z.ZodNullable<z.core.$ZodBranded<z.ZodString, "ScopeId", "out">>;
74
+ }, z.core.$strip>;
75
+ }, z.core.$strip>], "allowed">;
184
76
  export type Decision = z.infer<typeof decision>;
185
77
  export declare const effectivePermissions: z.ZodObject<{
186
- principalId: z.ZodBranded<z.ZodString, "PrincipalId">;
78
+ principalId: z.core.$ZodBranded<z.ZodString, "PrincipalId", "out">;
187
79
  node: z.ZodObject<{
188
- tenantId: z.ZodBranded<z.ZodString, "TenantId">;
189
- scopeId: z.ZodNullable<z.ZodBranded<z.ZodString, "ScopeId">>;
190
- }, "strip", z.ZodTypeAny, {
191
- tenantId: string & z.BRAND<"TenantId">;
192
- scopeId: (string & z.BRAND<"ScopeId">) | null;
193
- }, {
194
- tenantId: string;
195
- scopeId: string | null;
196
- }>;
80
+ tenantId: z.core.$ZodBranded<z.ZodString, "TenantId", "out">;
81
+ scopeId: z.ZodNullable<z.core.$ZodBranded<z.ZodString, "ScopeId", "out">>;
82
+ }, z.core.$strip>;
197
83
  permissions: z.ZodArray<z.ZodObject<{
198
- permission: z.ZodBranded<z.ZodString, "PermissionKey">;
84
+ permission: z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">;
199
85
  proof: z.ZodArray<z.ZodObject<{
200
- subject: z.ZodBranded<z.ZodString, "ObjectRef">;
86
+ subject: z.core.$ZodBranded<z.ZodString, "ObjectRef", "out">;
201
87
  relation: z.ZodString;
202
- object: z.ZodBranded<z.ZodString, "ObjectRef">;
203
- }, "strip", z.ZodTypeAny, {
204
- object: string & z.BRAND<"ObjectRef">;
205
- subject: string & z.BRAND<"ObjectRef">;
206
- relation: string;
207
- }, {
208
- object: string;
209
- subject: string;
210
- relation: string;
211
- }>, "many">;
212
- }, "strip", z.ZodTypeAny, {
213
- permission: string & z.BRAND<"PermissionKey">;
214
- proof: {
215
- object: string & z.BRAND<"ObjectRef">;
216
- subject: string & z.BRAND<"ObjectRef">;
217
- relation: string;
218
- }[];
219
- }, {
220
- permission: string;
221
- proof: {
222
- object: string;
223
- subject: string;
224
- relation: string;
225
- }[];
226
- }>, "many">;
227
- }, "strip", z.ZodTypeAny, {
228
- permissions: {
229
- permission: string & z.BRAND<"PermissionKey">;
230
- proof: {
231
- object: string & z.BRAND<"ObjectRef">;
232
- subject: string & z.BRAND<"ObjectRef">;
233
- relation: string;
234
- }[];
235
- }[];
236
- principalId: string & z.BRAND<"PrincipalId">;
237
- node: {
238
- tenantId: string & z.BRAND<"TenantId">;
239
- scopeId: (string & z.BRAND<"ScopeId">) | null;
240
- };
241
- }, {
242
- permissions: {
243
- permission: string;
244
- proof: {
245
- object: string;
246
- subject: string;
247
- relation: string;
248
- }[];
249
- }[];
250
- principalId: string;
251
- node: {
252
- tenantId: string;
253
- scopeId: string | null;
254
- };
255
- }>;
88
+ object: z.core.$ZodBranded<z.ZodString, "ObjectRef", "out">;
89
+ }, z.core.$strip>>;
90
+ }, z.core.$strip>>;
91
+ }, z.core.$strip>;
256
92
  export type EffectivePermissions = z.infer<typeof effectivePermissions>;
257
93
  //# sourceMappingURL=permission.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,IAAI;;;;;;;;;EAGf,CAAC;AACH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AAExC,eAAO,MAAM,OAAO,aAAwD,CAAC;AAE7E,eAAO,MAAM,cAAc;;;;;;;;;;;;EAIzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAM5D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAW9D,eAAO,MAAM,SAAS,wCAGC,CAAC;AACxB,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAGlD,eAAO,MAAM,YAAY,aAAqC,CAAC;AAE/D,eAAO,MAAM,aAAa;;;;;;;;;;;;EAIxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAQ1D,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAUnB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS/B,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,IAAI;;;iBAGf,CAAC;AACH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AAExC,eAAO,MAAM,OAAO,aAAwD,CAAC;AAE7E,eAAO,MAAM,cAAc;;;;iBAUzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D;;;;;;GAMG;AACH,eAAO,MAAM,UAAU;;;;;iBAAsC,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,cAAc;;;;;;;iBAIzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAM5D,eAAO,MAAM,eAAe;;;;;;;;;;;;;iBAO1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAW9D,eAAO,MAAM,SAAS,qDAGC,CAAC;AACxB,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAGlD,eAAO,MAAM,YAAY,aAAqC,CAAC;AAE/D,eAAO,MAAM,aAAa;;;;iBAIxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAQ1D,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;8BAUnB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;iBAS/B,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -13,8 +13,22 @@ export const roleKey = z.string().regex(/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/);
13
13
  export const roleDefinition = z.object({
14
14
  key: roleKey,
15
15
  permissions: z.array(permissionKey).min(1),
16
+ // Who declared this role. Both members mean "declared in CODE" — an engine's
17
+ // manifest or a vertical's provisioning constants. There is deliberately no
18
+ // value for "an operator created this against a live deployment": nothing can
19
+ // create one yet (role writes are not on the control-plane HTTP surface), and
20
+ // an enum member no code path can produce is the same promise-with-no-mechanism
21
+ // this codebase keeps finding. It lands with whatever writes it.
16
22
  source: z.union([moduleId, z.literal('vertical')]),
17
23
  });
24
+ /**
25
+ * A role as the directory holds it — the definition plus the tenant it belongs
26
+ * to (control-plane.md §4.5's roles surface). `RoleDefinition` is what a caller
27
+ * AUTHORS, and a tenant is ambient at that point (`defineRole(actor, tenantId,
28
+ * role)`); this is what a caller READS back, where the tenant is the answer to
29
+ * "where does this role apply?" and has to travel with it.
30
+ */
31
+ export const tenantRole = roleDefinition.extend({ tenantId });
18
32
  export const roleAssignment = z.object({
19
33
  principalId,
20
34
  roleKey,
@@ -1 +1 @@
1
- {"version":3,"file":"permission.js","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permission.js","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC5F,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,+EAA+E;AAC/E,qEAAqE;AACrE,+EAA+E;AAE/E,wEAAwE;AACxE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,QAAQ;IACR,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;AAE7E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,GAAG,EAAE,OAAO;IACZ,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,6EAA6E;IAC7E,4EAA4E;IAC5E,8EAA8E;IAC9E,8EAA8E;IAC9E,gFAAgF;IAChF,iEAAiE;IACjE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;CACnD,CAAC,CAAC;AAGH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AAG9D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,WAAW;IACX,OAAO;IACP,IAAI;CACL,CAAC,CAAC;AAGH,wEAAwE;AACxE,0EAA0E;AAC1E,4EAA4E;AAC5E,iDAAiD;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,WAAW;IACX,UAAU,EAAE,aAAa;IACzB,IAAI;IACJ,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE;IAC5B,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE;IAC7B,SAAS,EAAE,WAAW;CACvB,CAAC,CAAC;AAGH,+EAA+E;AAC/E,gFAAgF;AAChF,8EAA8E;AAC9E,2EAA2E;AAC3E,oEAAoE;AACpE,+EAA+E;AAE/E,yEAAyE;AACzE,2CAA2C;AAC3C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC;KACvB,MAAM,EAAE;KACR,KAAK,CAAC,sBAAsB,CAAC;KAC7B,KAAK,EAAe,CAAC;AAGxB,kEAAkE;AAClE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAE/D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,YAAY;IACtB,MAAM,EAAE,SAAS;CAClB,CAAC,CAAC;AAGH,+EAA+E;AAC/E,8EAA8E;AAC9E,0EAA0E;AAC1E,4DAA4D;AAC5D,+EAA+E;AAE/E,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE;IACtD,CAAC,CAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QACxB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KACrC,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QACzB,OAAO,EAAE,aAAa;QACtB,IAAI;KACL,CAAC;CACH,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,WAAW;IACX,IAAI;IACJ,WAAW,EAAE,CAAC,CAAC,KAAK,CAClB,CAAC,CAAC,MAAM,CAAC;QACP,UAAU,EAAE,aAAa;QACzB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KACrC,CAAC,CACH;CACF,CAAC,CAAC"}
package/dist/tenancy.d.ts CHANGED
@@ -1,84 +1,69 @@
1
1
  import { z } from 'zod';
2
- export declare const tenantStatus: z.ZodEnum<["active", "suspended", "deleting"]>;
2
+ export declare const tenantStatus: z.ZodEnum<{
3
+ active: "active";
4
+ suspended: "suspended";
5
+ deleting: "deleting";
6
+ }>;
3
7
  export type TenantStatus = z.infer<typeof tenantStatus>;
4
8
  export declare const tenant: z.ZodObject<{
5
- id: z.ZodBranded<z.ZodString, "TenantId">;
9
+ id: z.core.$ZodBranded<z.ZodString, "TenantId", "out">;
6
10
  slug: z.ZodString;
7
11
  name: z.ZodString;
8
- status: z.ZodEnum<["active", "suspended", "deleting"]>;
9
- createdAt: z.ZodBranded<z.ZodString, "Instant">;
10
- }, "strip", z.ZodTypeAny, {
11
- status: "active" | "suspended" | "deleting";
12
- id: string & z.BRAND<"TenantId">;
13
- slug: string;
14
- name: string;
15
- createdAt: string & z.BRAND<"Instant">;
16
- }, {
17
- status: "active" | "suspended" | "deleting";
18
- id: string;
19
- slug: string;
20
- name: string;
21
- createdAt: string;
22
- }>;
12
+ status: z.ZodEnum<{
13
+ active: "active";
14
+ suspended: "suspended";
15
+ deleting: "deleting";
16
+ }>;
17
+ createdAt: z.core.$ZodBranded<z.ZodString, "Instant", "out">;
18
+ }, z.core.$strip>;
23
19
  export type Tenant = z.infer<typeof tenant>;
24
- export declare const createTenantInput: z.ZodObject<Pick<{
25
- id: z.ZodBranded<z.ZodString, "TenantId">;
20
+ export declare const createTenantInput: z.ZodObject<{
21
+ id: z.core.$ZodBranded<z.ZodString, "TenantId", "out">;
26
22
  slug: z.ZodString;
27
23
  name: z.ZodString;
28
- status: z.ZodEnum<["active", "suspended", "deleting"]>;
29
- createdAt: z.ZodBranded<z.ZodString, "Instant">;
30
- }, "id" | "slug" | "name">, "strip", z.ZodTypeAny, {
31
- id: string & z.BRAND<"TenantId">;
32
- slug: string;
33
- name: string;
34
- }, {
35
- id: string;
36
- slug: string;
37
- name: string;
38
- }>;
24
+ }, z.core.$strip>;
39
25
  export type CreateTenantInput = z.infer<typeof createTenantInput>;
40
- export declare const scopeStatus: z.ZodEnum<["provisioning", "active", "suspended", "archiving", "archived"]>;
26
+ export declare const scopeStatus: z.ZodEnum<{
27
+ active: "active";
28
+ suspended: "suspended";
29
+ provisioning: "provisioning";
30
+ archiving: "archiving";
31
+ archived: "archived";
32
+ }>;
41
33
  export type ScopeStatus = z.infer<typeof scopeStatus>;
42
- export declare const storageShape: z.ZodEnum<["A", "B"]>;
34
+ export declare const storageShape: z.ZodEnum<{
35
+ A: "A";
36
+ B: "B";
37
+ }>;
43
38
  export type StorageShape = z.infer<typeof storageShape>;
44
- export declare const jurisdiction: z.ZodNullable<z.ZodEnum<["eu"]>>;
39
+ export declare const jurisdiction: z.ZodNullable<z.ZodEnum<{
40
+ eu: "eu";
41
+ }>>;
45
42
  export type Jurisdiction = z.infer<typeof jurisdiction>;
46
43
  export declare const scope: z.ZodObject<{
47
- id: z.ZodBranded<z.ZodString, "ScopeId">;
48
- tenantId: z.ZodBranded<z.ZodString, "TenantId">;
49
- parentScopeId: z.ZodNullable<z.ZodBranded<z.ZodString, "ScopeId">>;
44
+ id: z.core.$ZodBranded<z.ZodString, "ScopeId", "out">;
45
+ tenantId: z.core.$ZodBranded<z.ZodString, "TenantId", "out">;
46
+ parentScopeId: z.ZodNullable<z.core.$ZodBranded<z.ZodString, "ScopeId", "out">>;
50
47
  slug: z.ZodString;
51
48
  kind: z.ZodString;
52
49
  name: z.ZodString;
53
- status: z.ZodEnum<["provisioning", "active", "suspended", "archiving", "archived"]>;
54
- storageShape: z.ZodEnum<["A", "B"]>;
55
- jurisdiction: z.ZodNullable<z.ZodEnum<["eu"]>>;
50
+ status: z.ZodEnum<{
51
+ active: "active";
52
+ suspended: "suspended";
53
+ provisioning: "provisioning";
54
+ archiving: "archiving";
55
+ archived: "archived";
56
+ }>;
57
+ storageShape: z.ZodEnum<{
58
+ A: "A";
59
+ B: "B";
60
+ }>;
61
+ jurisdiction: z.ZodNullable<z.ZodEnum<{
62
+ eu: "eu";
63
+ }>>;
64
+ vertical: z.ZodNullable<z.ZodString>;
56
65
  schemaVersion: z.ZodString;
57
- createdAt: z.ZodBranded<z.ZodString, "Instant">;
58
- }, "strip", z.ZodTypeAny, {
59
- status: "active" | "suspended" | "provisioning" | "archiving" | "archived";
60
- tenantId: string & z.BRAND<"TenantId">;
61
- id: string & z.BRAND<"ScopeId">;
62
- schemaVersion: string;
63
- slug: string;
64
- name: string;
65
- createdAt: string & z.BRAND<"Instant">;
66
- parentScopeId: (string & z.BRAND<"ScopeId">) | null;
67
- kind: string;
68
- storageShape: "A" | "B";
69
- jurisdiction: "eu" | null;
70
- }, {
71
- status: "active" | "suspended" | "provisioning" | "archiving" | "archived";
72
- tenantId: string;
73
- id: string;
74
- schemaVersion: string;
75
- slug: string;
76
- name: string;
77
- createdAt: string;
78
- parentScopeId: string | null;
79
- kind: string;
80
- storageShape: "A" | "B";
81
- jurisdiction: "eu" | null;
82
- }>;
66
+ createdAt: z.core.$ZodBranded<z.ZodString, "Instant", "out">;
67
+ }, z.core.$strip>;
83
68
  export type Scope = z.infer<typeof scope>;
84
69
  //# sourceMappingURL=tenancy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tenancy.d.ts","sourceRoot":"","sources":["../src/tenancy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,YAAY,gDAA8C,CAAC;AACxE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;EAMjB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAI5C,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;EAAoD,CAAC;AACnF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,WAAW,6EAMtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAGtD,eAAO,MAAM,YAAY,uBAAqB,CAAC;AAC/C,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAGxD,eAAO,MAAM,YAAY,kCAA4B,CAAC;AACtD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYhB,CAAC;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"tenancy.d.ts","sourceRoot":"","sources":["../src/tenancy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,YAAY;;;;EAA8C,CAAC;AACxE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,eAAO,MAAM,MAAM;;;;;;;;;;iBAMjB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAI5C,eAAO,MAAM,iBAAiB;;;;iBAAoD,CAAC;AACnF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,WAAW;;;;;;EAMtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAGtD,eAAO,MAAM,YAAY;;;EAAqB,CAAC;AAC/C,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAGxD,eAAO,MAAM,YAAY;;GAA4B,CAAC;AACtD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;iBAsBhB,CAAC;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC"}
package/dist/tenancy.js CHANGED
@@ -32,6 +32,16 @@ export const scope = z.object({
32
32
  status: scopeStatus,
33
33
  storageShape,
34
34
  jurisdiction,
35
+ // Which vertical's deployment executes this scope (control-plane.md §1: the DO
36
+ // class is the app binary). Nullable — a scope provisioned before the caller
37
+ // names one, and the bare hosts in tests, carry null. It is what makes the
38
+ // audit log's `vertical` target real for scope-lifecycle actions, and what
39
+ // console item 1 means by "which vertical each scope runs".
40
+ vertical: z.string().min(1).nullable(),
41
+ // The scope's migration state: the count of applied (module, version) pairs,
42
+ // as a string. Written host-side after migrations apply — never caller-supplied.
43
+ // '0' means "provisioned, nothing applied yet". Comparing it against the host's
44
+ // registered migration total is what answers §5.4's "which scopes are behind".
35
45
  schemaVersion: z.string(),
36
46
  createdAt: instant,
37
47
  });
@@ -1 +1 @@
1
- {"version":3,"file":"tenancy.js","sourceRoot":"","sources":["../src/tenancy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE5D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;AAGxE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,EAAE,EAAE,QAAQ;IACZ,IAAI;IACJ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,YAAY;IACpB,SAAS,EAAE,OAAO;CACnB,CAAC,CAAC;AAGH,6EAA6E;AAC7E,yEAAyE;AACzE,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAGnF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC;IAChC,cAAc;IACd,QAAQ;IACR,WAAW;IACX,WAAW;IACX,UAAU;CACX,CAAC,CAAC;AAGH,uFAAuF;AACvF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAG/C,8DAA8D;AAC9D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAGtD,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,EAAE,EAAE,OAAO,EAAE,6EAA6E;IAC1F,QAAQ;IACR,aAAa,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,4DAA4D;IAC/F,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,qEAAqE;IAC9F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,WAAW;IACnB,YAAY;IACZ,YAAY;IACZ,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,SAAS,EAAE,OAAO;CACnB,CAAC,CAAC"}
1
+ {"version":3,"file":"tenancy.js","sourceRoot":"","sources":["../src/tenancy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE5D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;AAGxE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,EAAE,EAAE,QAAQ;IACZ,IAAI;IACJ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,YAAY;IACpB,SAAS,EAAE,OAAO;CACnB,CAAC,CAAC;AAGH,6EAA6E;AAC7E,yEAAyE;AACzE,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAGnF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC;IAChC,cAAc;IACd,QAAQ;IACR,WAAW;IACX,WAAW;IACX,UAAU;CACX,CAAC,CAAC;AAGH,uFAAuF;AACvF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAG/C,8DAA8D;AAC9D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAGtD,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,EAAE,EAAE,OAAO,EAAE,6EAA6E;IAC1F,QAAQ;IACR,aAAa,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,4DAA4D;IAC/F,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,qEAAqE;IAC9F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,WAAW;IACnB,YAAY;IACZ,YAAY;IACZ,+EAA+E;IAC/E,6EAA6E;IAC7E,2EAA2E;IAC3E,2EAA2E;IAC3E,4DAA4D;IAC5D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtC,6EAA6E;IAC7E,iFAAiF;IACjF,gFAAgF;IAChF,+EAA+E;IAC/E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,SAAS,EAAE,OAAO;CACnB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@substrat-run/contracts",
3
- "version": "0.2.1",
3
+ "version": "0.4.0",
4
4
  "description": "Substrat kernel contract schemas — Zod is the source of truth (master plan D-22); OAS/JSON Schema are emitted artifacts",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -22,7 +22,7 @@
22
22
  "dist"
23
23
  ],
24
24
  "dependencies": {
25
- "zod": "^3.25.0"
25
+ "zod": "^4.4.3"
26
26
  },
27
27
  "devDependencies": {
28
28
  "typescript": "^5.6.0"