@astrale-domains/shell 0.1.0-beta.11 → 0.1.0-beta.13

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 (59) hide show
  1. package/README.md +63 -42
  2. package/dist/actions/index.d.ts +1 -0
  3. package/dist/actions/user/index.d.ts +1 -0
  4. package/dist/actions/user/resolve-home.d.ts +3 -0
  5. package/dist/application.d.ts +5 -9808
  6. package/dist/application.js +9 -8
  7. package/dist/entrypoints/runtime.d.ts +1 -0
  8. package/dist/index.d.ts +0 -2
  9. package/dist/index.js +0 -2
  10. package/dist/mutations/group/index.d.ts +1 -0
  11. package/dist/mutations/group/membership.d.ts +19 -0
  12. package/dist/mutations/space/access.d.ts +25 -0
  13. package/dist/mutations/space/default.d.ts +19 -0
  14. package/dist/mutations/space/index.d.ts +2 -0
  15. package/dist/mutations/user/index.d.ts +1 -0
  16. package/dist/mutations/user/repair.d.ts +37 -0
  17. package/dist/queries/space/access.d.ts +9 -0
  18. package/dist/queries/space/admin.d.ts +9 -0
  19. package/dist/queries/space/index.d.ts +3 -0
  20. package/dist/queries/space/member.d.ts +9 -0
  21. package/dist/queries/user/groups.d.ts +9 -0
  22. package/dist/queries/user/home.d.ts +9 -0
  23. package/dist/queries/user/index.d.ts +5 -0
  24. package/dist/queries/user/owned-spaces.d.ts +9 -0
  25. package/dist/queries/user/profile.d.ts +4 -0
  26. package/dist/queries/user/profile.js +1 -1
  27. package/dist/queries/user/setup.d.ts +13 -0
  28. package/dist/runtime.d.ts +10 -4
  29. package/dist/runtime.js +13 -14
  30. package/dist/schema/domain/index.d.ts +68 -1639
  31. package/dist/schema/domain/index.js +3 -2
  32. package/dist/schema/group/class.d.ts +13 -321
  33. package/dist/schema/group/class.js +3 -2
  34. package/dist/schema/group/methods.d.ts +2 -2
  35. package/dist/schema/group/methods.js +1 -5
  36. package/dist/schema/space/class.d.ts +10 -78
  37. package/dist/schema/space/class.js +3 -2
  38. package/dist/schema/space/methods.d.ts +4 -4
  39. package/dist/schema/space/methods.js +1 -5
  40. package/dist/schema/user/class.d.ts +14 -274
  41. package/dist/schema/user/class.js +5 -5
  42. package/dist/workflows/group/assign.d.ts +3 -0
  43. package/dist/workflows/group/change.d.ts +6 -0
  44. package/dist/workflows/group/index.d.ts +3 -0
  45. package/dist/workflows/group/unassign.d.ts +3 -0
  46. package/dist/workflows/index.d.ts +3 -0
  47. package/dist/workflows/setup/admin.d.ts +3 -0
  48. package/dist/workflows/setup/index.d.ts +5 -0
  49. package/dist/workflows/setup/member.d.ts +3 -0
  50. package/dist/workflows/setup/plan.d.ts +18 -0
  51. package/dist/workflows/setup/provision.d.ts +5 -0
  52. package/dist/workflows/setup/run.d.ts +7 -0
  53. package/dist/workflows/space/access.d.ts +7 -0
  54. package/dist/workflows/space/add.d.ts +3 -0
  55. package/dist/workflows/space/default.d.ts +3 -0
  56. package/dist/workflows/space/default.js +1 -1
  57. package/dist/workflows/space/index.d.ts +4 -0
  58. package/dist/workflows/space/remove.d.ts +3 -0
  59. package/package.json +14 -6
@@ -27,13 +27,14 @@ const classes = {
27
27
  };
28
28
  const policies = { belongsToSpace, mayAdministerSpace, maySetupUsers, ownsSpace };
29
29
  const views = { group: groupView, home: homeView, space: spaceView, user: userView };
30
- export const ShellSchema = defineSchema(ORIGIN, {
30
+ const input = {
31
31
  dependencies,
32
32
  functions,
33
33
  classes,
34
34
  policies,
35
35
  views,
36
36
  core: ShellCore,
37
- });
37
+ };
38
+ export const ShellSchema = defineSchema(ORIGIN, input);
38
39
  export const S = schema.resolve(ShellSchema);
39
40
  export { groupAssignUser, groupUnassignUser, resolveHome, setupAdmin, setupMember, spaceAddUser, spaceRemoveUser, spaceSetDefault, };
@@ -1,323 +1,15 @@
1
- export declare const Group: import("@astrale-os/sdk/schema").NodeClass<{
2
- readonly depth: 1;
3
- readonly abstract: false;
4
- readonly extends: readonly [import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
5
- readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Identity"> & {
6
- readonly origin: "kernel.astrale.ai";
7
- };
8
- readonly kind: 'node';
9
- readonly abstract: true;
10
- }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Identity"> & {
11
- readonly origin: "kernel.astrale.ai";
12
- }, "kernel.astrale.ai:class.Identity", readonly [import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
13
- readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
14
- readonly origin: "kernel.astrale.ai";
15
- };
16
- readonly kind: 'node';
17
- readonly abstract: true;
18
- }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
19
- readonly origin: "kernel.astrale.ai";
20
- }, "kernel.astrale.ai:class.Node", readonly import("@astrale-os/sdk/schema").AnyResolvedClass[], never, never, never, never, never, never>, ...never[]], import("@astrale-os/sdk/schema").PropertyProjection<({
21
- claim: string;
22
- op: "contains";
23
- value: unknown;
24
- } | {
25
- claim: string;
26
- op: "eq";
27
- value: unknown;
28
- } | {
29
- claim: string;
30
- op: "exists";
31
- })[], false, "requiredClaims", "kernel.astrale.ai:class.Identity.property.requiredClaims"> | import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, false, "frozen", "kernel.astrale.ai:class.Identity.property.frozen"> | import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "iss", "kernel.astrale.ai:class.Identity.property.iss"> | import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "sub", "kernel.astrale.ai:class.Identity.property.sub">, import("@astrale-os/sdk/schema").MethodProjection<{
32
- audience: string;
33
- ttlSeconds: number;
34
- attenuation: unknown;
35
- }, {
36
- readonly mode: 'value';
37
- readonly value: string;
38
- }, false, "default", "authenticated", "delegate", "kernel.astrale.ai:class.Identity.method.delegate">, import("@astrale-os/sdk/schema").MethodProjection<Record<string, never>, {
39
- readonly mode: 'value';
40
- readonly value: {
41
- id: string;
42
- issuer: string;
43
- subject: string;
44
- frozen: boolean;
45
- requiredClaims: ({
46
- claim: string;
47
- op: "contains";
48
- value: unknown;
49
- } | {
50
- claim: string;
51
- op: "eq";
52
- value: unknown;
53
- } | {
54
- claim: string;
55
- op: "exists";
56
- })[];
57
- };
58
- }, true, "default", "authenticated", "whoami", "kernel.astrale.ai:class.Identity.method.whoami"> | import("@astrale-os/sdk/schema").MethodProjection<{
59
- policy: string;
60
- object: string;
61
- }, {
62
- readonly mode: 'value';
63
- readonly value: {
64
- allowed: boolean;
65
- };
66
- }, true, "default", "authenticated", "can", "kernel.astrale.ai:class.Identity.method.can"> | import("@astrale-os/sdk/schema").MethodProjection<{
67
- issuer: string;
68
- subject: string;
69
- }, {
70
- readonly mode: 'value';
71
- readonly value: {
72
- id: string;
73
- issuer: string;
74
- subject: string;
75
- frozen: boolean;
76
- requiredClaims: ({
77
- claim: string;
78
- op: "contains";
79
- value: unknown;
80
- } | {
81
- claim: string;
82
- op: "eq";
83
- value: unknown;
84
- } | {
85
- claim: string;
86
- op: "exists";
87
- })[];
88
- } | null;
89
- }, true, "default", "authorized", "whois", "kernel.astrale.ai:class.Identity.method.whois"> | import("@astrale-os/sdk/schema").MethodProjection<{
90
- audience?: string | undefined;
91
- ttlSeconds: number;
92
- grant?: unknown;
93
- }, {
94
- readonly mode: 'value';
95
- readonly value: string;
96
- }, true, "default", "authorized", "mint", "kernel.astrale.ai:class.Identity.method.mint">, import("@astrale-os/sdk/schema").PropertyProjection<({
97
- claim: string;
98
- op: "contains";
99
- value: unknown;
100
- } | {
101
- claim: string;
102
- op: "eq";
103
- value: unknown;
104
- } | {
105
- claim: string;
106
- op: "exists";
107
- })[], false, "requiredClaims", "kernel.astrale.ai:class.Identity.property.requiredClaims"> | import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, false, "frozen", "kernel.astrale.ai:class.Identity.property.frozen"> | import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "iss", "kernel.astrale.ai:class.Identity.property.iss"> | import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "sub", "kernel.astrale.ai:class.Identity.property.sub">, import("@astrale-os/sdk/schema").MethodProjection<{
108
- audience: string;
109
- ttlSeconds: number;
110
- attenuation: unknown;
111
- }, {
112
- readonly mode: 'value';
113
- readonly value: string;
114
- }, false, "default", "authenticated", "delegate", "kernel.astrale.ai:class.Identity.method.delegate">, import("@astrale-os/sdk/schema").MethodProjection<Record<string, never>, {
115
- readonly mode: 'value';
116
- readonly value: {
117
- id: string;
118
- issuer: string;
119
- subject: string;
120
- frozen: boolean;
121
- requiredClaims: ({
122
- claim: string;
123
- op: "contains";
124
- value: unknown;
125
- } | {
126
- claim: string;
127
- op: "eq";
128
- value: unknown;
129
- } | {
130
- claim: string;
131
- op: "exists";
132
- })[];
133
- };
134
- }, true, "default", "authenticated", "whoami", "kernel.astrale.ai:class.Identity.method.whoami"> | import("@astrale-os/sdk/schema").MethodProjection<{
135
- policy: string;
136
- object: string;
137
- }, {
138
- readonly mode: 'value';
139
- readonly value: {
140
- allowed: boolean;
141
- };
142
- }, true, "default", "authenticated", "can", "kernel.astrale.ai:class.Identity.method.can"> | import("@astrale-os/sdk/schema").MethodProjection<{
143
- issuer: string;
144
- subject: string;
145
- }, {
146
- readonly mode: 'value';
147
- readonly value: {
148
- id: string;
149
- issuer: string;
150
- subject: string;
151
- frozen: boolean;
152
- requiredClaims: ({
153
- claim: string;
154
- op: "contains";
155
- value: unknown;
156
- } | {
157
- claim: string;
158
- op: "eq";
159
- value: unknown;
160
- } | {
161
- claim: string;
162
- op: "exists";
163
- })[];
164
- } | null;
165
- }, true, "default", "authorized", "whois", "kernel.astrale.ai:class.Identity.method.whois"> | import("@astrale-os/sdk/schema").MethodProjection<{
166
- audience?: string | undefined;
167
- ttlSeconds: number;
168
- grant?: unknown;
169
- }, {
170
- readonly mode: 'value';
171
- readonly value: string;
172
- }, true, "default", "authorized", "mint", "kernel.astrale.ai:class.Identity.method.mint">>, import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
173
- readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Named"> & {
174
- readonly origin: "kernel.astrale.ai";
175
- };
176
- readonly kind: 'node';
177
- readonly abstract: true;
178
- }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Named"> & {
179
- readonly origin: "kernel.astrale.ai";
180
- }, "kernel.astrale.ai:class.Named", readonly [import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
181
- readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
182
- readonly origin: "kernel.astrale.ai";
183
- };
184
- readonly kind: 'node';
185
- readonly abstract: true;
186
- }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
187
- readonly origin: "kernel.astrale.ai";
188
- }, "kernel.astrale.ai:class.Node", readonly import("@astrale-os/sdk/schema").AnyResolvedClass[], never, never, never, never, never, never>, ...never[]], import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "name", "kernel.astrale.ai:class.Named.property.name">, never, never, import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "name", "kernel.astrale.ai:class.Named.property.name">, never, never>, import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
189
- readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Descriptable"> & {
190
- readonly origin: "kernel.astrale.ai";
191
- };
192
- readonly kind: 'node';
193
- readonly abstract: true;
194
- }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Descriptable"> & {
195
- readonly origin: "kernel.astrale.ai";
196
- }, "kernel.astrale.ai:class.Descriptable", readonly [import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
197
- readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
198
- readonly origin: "kernel.astrale.ai";
199
- };
200
- readonly kind: 'node';
201
- readonly abstract: true;
202
- }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
203
- readonly origin: "kernel.astrale.ai";
204
- }, "kernel.astrale.ai:class.Node", readonly import("@astrale-os/sdk/schema").AnyResolvedClass[], never, never, never, never, never, never>, ...never[]], import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, false, "description", "kernel.astrale.ai:class.Descriptable.property.description">, never, never, import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, false, "description", "kernel.astrale.ai:class.Descriptable.property.description">, never, never>];
205
- readonly properties: never;
1
+ import { nodeClass, type Kernel } from '@astrale-os/sdk/schema';
2
+ import { groupAssignUser, groupUnassignUser } from './methods.js';
3
+ export interface GroupConfig {
4
+ readonly description: string;
5
+ readonly extends: readonly [
6
+ Kernel['classes']['Identity'],
7
+ Kernel['classes']['Named'],
8
+ Kernel['classes']['Descriptable']
9
+ ];
206
10
  readonly methods: {
207
- readonly assignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
208
- user: string;
209
- }, {
210
- readonly mode: 'value';
211
- readonly value: import("@astrale-os/sdk/schema").Value;
212
- }, "authorized", false, "default">>;
213
- readonly unassignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
214
- user: string;
215
- }, {
216
- readonly mode: 'value';
217
- readonly value: import("@astrale-os/sdk/schema").Value;
218
- }, "authorized", false, "default">>;
11
+ readonly assignUser: typeof groupAssignUser;
12
+ readonly unassignUser: typeof groupUnassignUser;
219
13
  };
220
- readonly effectiveProperties: (import("@astrale-os/sdk/schema").ResolvedProperty<import("@astrale-os/sdk/schema").Value, false> & {
221
- readonly name: "description";
222
- readonly key: "kernel.astrale.ai:class.Descriptable.property.description";
223
- }) | (import("@astrale-os/sdk/schema").ResolvedProperty<import("@astrale-os/sdk/schema").Value, false> & {
224
- readonly name: "frozen";
225
- readonly key: "kernel.astrale.ai:class.Identity.property.frozen";
226
- }) | (import("@astrale-os/sdk/schema").ResolvedProperty<import("@astrale-os/sdk/schema").Value, true> & {
227
- readonly name: "iss";
228
- readonly key: "kernel.astrale.ai:class.Identity.property.iss";
229
- }) | (import("@astrale-os/sdk/schema").ResolvedProperty<import("@astrale-os/sdk/schema").Value, true> & {
230
- readonly name: "name";
231
- readonly key: "kernel.astrale.ai:class.Named.property.name";
232
- }) | (import("@astrale-os/sdk/schema").ResolvedProperty<import("@astrale-os/sdk/schema").Value, true> & {
233
- readonly name: "sub";
234
- readonly key: "kernel.astrale.ai:class.Identity.property.sub";
235
- });
236
- readonly effectiveInstanceMethods: (import("@astrale-os/sdk/schema").AuthoredMethodProjection<import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
237
- user: string;
238
- }, {
239
- readonly mode: 'value';
240
- readonly value: import("@astrale-os/sdk/schema").Value;
241
- }, "authorized", false, "default">>, "assignUser", "self"> | import("@astrale-os/sdk/schema").AuthoredMethodProjection<import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
242
- user: string;
243
- }, {
244
- readonly mode: 'value';
245
- readonly value: import("@astrale-os/sdk/schema").Value;
246
- }, "authorized", false, "default">>, "unassignUser", "self">) | (import("@astrale-os/sdk/schema").ResolvedMethod<{
247
- audience: string;
248
- ttlSeconds: number;
249
- attenuation: unknown;
250
- }, {
251
- readonly mode: 'value';
252
- readonly value: string;
253
- }, false, "default", "authenticated", import("@astrale-os/sdk/schema").PolicyCheckExpression<import("@astrale-os/sdk/schema").PolicyRef, import("@astrale-os/sdk/schema").PolicyCheckObject>, "kernel.astrale.ai:class.Identity.method.delegate"> & {
254
- readonly name: "delegate";
255
- });
256
- readonly effectiveStaticMethods: (import("@astrale-os/sdk/schema").ResolvedMethod<{
257
- policy: string;
258
- object: string;
259
- }, {
260
- readonly mode: 'value';
261
- readonly value: {
262
- allowed: boolean;
263
- };
264
- }, true, "default", "authenticated", import("@astrale-os/sdk/schema").PolicyCheckExpression<import("@astrale-os/sdk/schema").PolicyRef, import("@astrale-os/sdk/schema").PolicyCheckObject>, "kernel.astrale.ai:class.Identity.method.can"> & {
265
- readonly name: "can";
266
- }) | (import("@astrale-os/sdk/schema").ResolvedMethod<Record<string, never>, {
267
- readonly mode: 'value';
268
- readonly value: {
269
- id: string;
270
- issuer: string;
271
- subject: string;
272
- frozen: boolean;
273
- requiredClaims: ({
274
- claim: string;
275
- op: "contains";
276
- value: unknown;
277
- } | {
278
- claim: string;
279
- op: "eq";
280
- value: unknown;
281
- } | {
282
- claim: string;
283
- op: "exists";
284
- })[];
285
- };
286
- }, true, "default", "authenticated", import("@astrale-os/sdk/schema").PolicyCheckExpression<import("@astrale-os/sdk/schema").PolicyRef, import("@astrale-os/sdk/schema").PolicyCheckObject>, "kernel.astrale.ai:class.Identity.method.whoami"> & {
287
- readonly name: "whoami";
288
- }) | (import("@astrale-os/sdk/schema").ResolvedMethod<{
289
- audience?: string | undefined;
290
- ttlSeconds: number;
291
- grant?: unknown;
292
- }, {
293
- readonly mode: 'value';
294
- readonly value: string;
295
- }, true, "default", "authorized", import("@astrale-os/sdk/schema").PolicyCheckExpression<import("@astrale-os/sdk/schema").PolicyRef, import("@astrale-os/sdk/schema").PolicyCheckObject>, "kernel.astrale.ai:class.Identity.method.mint"> & {
296
- readonly name: "mint";
297
- }) | (import("@astrale-os/sdk/schema").ResolvedMethod<{
298
- issuer: string;
299
- subject: string;
300
- }, {
301
- readonly mode: 'value';
302
- readonly value: {
303
- id: string;
304
- issuer: string;
305
- subject: string;
306
- frozen: boolean;
307
- requiredClaims: ({
308
- claim: string;
309
- op: "contains";
310
- value: unknown;
311
- } | {
312
- claim: string;
313
- op: "eq";
314
- value: unknown;
315
- } | {
316
- claim: string;
317
- op: "exists";
318
- })[];
319
- } | null;
320
- }, true, "default", "authorized", import("@astrale-os/sdk/schema").PolicyCheckExpression<import("@astrale-os/sdk/schema").PolicyRef, import("@astrale-os/sdk/schema").PolicyCheckObject>, "kernel.astrale.ai:class.Identity.method.whois"> & {
321
- readonly name: "whois";
322
- });
323
- }>;
14
+ }
15
+ export declare const Group: ReturnType<typeof nodeClass<GroupConfig>>;
@@ -1,7 +1,8 @@
1
1
  import { K, nodeClass } from '@astrale-os/sdk/schema';
2
2
  import { groupAssignUser, groupUnassignUser } from './methods.js';
3
- export const Group = nodeClass({
3
+ const config = {
4
4
  description: 'A named compositional Shell Identity.',
5
5
  extends: [K.classes.Identity, K.classes.Named, K.classes.Descriptable],
6
6
  methods: { assignUser: groupAssignUser, unassignUser: groupUnassignUser },
7
- });
7
+ };
8
+ export const Group = nodeClass(config);
@@ -3,11 +3,11 @@ export declare const groupAssignUser: builder.Method<builder.CallableProjection<
3
3
  user: string;
4
4
  }, {
5
5
  readonly mode: 'value';
6
- readonly value: import("@astrale-os/sdk/schema").Value;
6
+ readonly value: Record<string, never>;
7
7
  }, "authorized", false, "default">>;
8
8
  export declare const groupUnassignUser: builder.Method<builder.CallableProjection<{
9
9
  user: string;
10
10
  }, {
11
11
  readonly mode: 'value';
12
- readonly value: import("@astrale-os/sdk/schema").Value;
12
+ readonly value: Record<string, never>;
13
13
  }, "authorized", false, "default">>;
@@ -3,11 +3,7 @@ import { z } from 'zod';
3
3
  import { User } from '#schema/user';
4
4
  import { adminGroup } from './core.js';
5
5
  import { maySetupUsers } from './policies.js';
6
- const emptyObject = {
7
- type: 'object',
8
- properties: {},
9
- additionalProperties: false,
10
- };
6
+ const emptyObject = z.strictObject({});
11
7
  const setupPolicy = ({ check, ref }) => check(maySetupUsers, ref(adminGroup));
12
8
  function membershipMethod(description) {
13
9
  return method({
@@ -1,80 +1,12 @@
1
- export declare const Space: import("@astrale-os/sdk/schema").NodeClass<{
2
- readonly depth: 1;
3
- readonly abstract: false;
4
- readonly extends: readonly [import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
5
- readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Named"> & {
6
- readonly origin: "kernel.astrale.ai";
7
- };
8
- readonly kind: 'node';
9
- readonly abstract: true;
10
- }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Named"> & {
11
- readonly origin: "kernel.astrale.ai";
12
- }, "kernel.astrale.ai:class.Named", readonly [import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
13
- readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
14
- readonly origin: "kernel.astrale.ai";
15
- };
16
- readonly kind: 'node';
17
- readonly abstract: true;
18
- }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
19
- readonly origin: "kernel.astrale.ai";
20
- }, "kernel.astrale.ai:class.Node", readonly import("@astrale-os/sdk/schema").AnyResolvedClass[], never, never, never, never, never, never>, ...never[]], import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "name", "kernel.astrale.ai:class.Named.property.name">, never, never, import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "name", "kernel.astrale.ai:class.Named.property.name">, never, never>, import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
21
- readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Descriptable"> & {
22
- readonly origin: "kernel.astrale.ai";
23
- };
24
- readonly kind: 'node';
25
- readonly abstract: true;
26
- }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Descriptable"> & {
27
- readonly origin: "kernel.astrale.ai";
28
- }, "kernel.astrale.ai:class.Descriptable", readonly [import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
29
- readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
30
- readonly origin: "kernel.astrale.ai";
31
- };
32
- readonly kind: 'node';
33
- readonly abstract: true;
34
- }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
35
- readonly origin: "kernel.astrale.ai";
36
- }, "kernel.astrale.ai:class.Node", readonly import("@astrale-os/sdk/schema").AnyResolvedClass[], never, never, never, never, never, never>, ...never[]], import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, false, "description", "kernel.astrale.ai:class.Descriptable.property.description">, never, never, import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, false, "description", "kernel.astrale.ai:class.Descriptable.property.description">, never, never>];
37
- readonly properties: never;
1
+ import { nodeClass, type Kernel } from '@astrale-os/sdk/schema';
2
+ import { spaceAddUser, spaceRemoveUser, spaceSetDefault } from './methods.js';
3
+ export interface SpaceConfig {
4
+ readonly description: string;
5
+ readonly extends: readonly [Kernel['classes']['Named'], Kernel['classes']['Descriptable']];
38
6
  readonly methods: {
39
- readonly addUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
40
- user: string;
41
- access: "admin" | "member";
42
- }, {
43
- readonly mode: 'value';
44
- readonly value: import("@astrale-os/sdk/schema").Value;
45
- }, "authorized", false, "default">>;
46
- readonly removeUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
47
- user: string;
48
- }, {
49
- readonly mode: 'value';
50
- readonly value: import("@astrale-os/sdk/schema").Value;
51
- }, "authorized", false, "default">>;
52
- readonly setDefault: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<import("@astrale-os/sdk/schema").Value, {
53
- readonly mode: 'value';
54
- readonly value: import("@astrale-os/sdk/schema").Value;
55
- }, "authorized", false, "default">>;
7
+ readonly addUser: typeof spaceAddUser;
8
+ readonly removeUser: typeof spaceRemoveUser;
9
+ readonly setDefault: typeof spaceSetDefault;
56
10
  };
57
- readonly effectiveProperties: (import("@astrale-os/sdk/schema").ResolvedProperty<import("@astrale-os/sdk/schema").Value, false> & {
58
- readonly name: "description";
59
- readonly key: "kernel.astrale.ai:class.Descriptable.property.description";
60
- }) | (import("@astrale-os/sdk/schema").ResolvedProperty<import("@astrale-os/sdk/schema").Value, true> & {
61
- readonly name: "name";
62
- readonly key: "kernel.astrale.ai:class.Named.property.name";
63
- });
64
- readonly effectiveInstanceMethods: import("@astrale-os/sdk/schema").AuthoredMethodProjection<import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
65
- user: string;
66
- access: "admin" | "member";
67
- }, {
68
- readonly mode: 'value';
69
- readonly value: import("@astrale-os/sdk/schema").Value;
70
- }, "authorized", false, "default">>, "addUser", "self"> | import("@astrale-os/sdk/schema").AuthoredMethodProjection<import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
71
- user: string;
72
- }, {
73
- readonly mode: 'value';
74
- readonly value: import("@astrale-os/sdk/schema").Value;
75
- }, "authorized", false, "default">>, "removeUser", "self"> | import("@astrale-os/sdk/schema").AuthoredMethodProjection<import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<import("@astrale-os/sdk/schema").Value, {
76
- readonly mode: 'value';
77
- readonly value: import("@astrale-os/sdk/schema").Value;
78
- }, "authorized", false, "default">>, "setDefault", "self">;
79
- readonly effectiveStaticMethods: never;
80
- }>;
11
+ }
12
+ export declare const Space: ReturnType<typeof nodeClass<SpaceConfig>>;
@@ -1,6 +1,6 @@
1
1
  import { K, nodeClass } from '@astrale-os/sdk/schema';
2
2
  import { spaceAddUser, spaceRemoveUser, spaceSetDefault } from './methods.js';
3
- export const Space = nodeClass({
3
+ const config = {
4
4
  description: 'A named Shell collaboration boundary.',
5
5
  extends: [K.classes.Named, K.classes.Descriptable],
6
6
  methods: {
@@ -8,4 +8,5 @@ export const Space = nodeClass({
8
8
  removeUser: spaceRemoveUser,
9
9
  setDefault: spaceSetDefault,
10
10
  },
11
- });
11
+ };
12
+ export const Space = nodeClass(config);
@@ -4,15 +4,15 @@ export declare const spaceAddUser: builder.Method<builder.CallableProjection<{
4
4
  access: "admin" | "member";
5
5
  }, {
6
6
  readonly mode: 'value';
7
- readonly value: import("@astrale-os/sdk/schema").Value;
7
+ readonly value: Record<string, never>;
8
8
  }, "authorized", false, "default">>;
9
9
  export declare const spaceRemoveUser: builder.Method<builder.CallableProjection<{
10
10
  user: string;
11
11
  }, {
12
12
  readonly mode: 'value';
13
- readonly value: import("@astrale-os/sdk/schema").Value;
13
+ readonly value: Record<string, never>;
14
14
  }, "authorized", false, "default">>;
15
- export declare const spaceSetDefault: builder.Method<builder.CallableProjection<import("@astrale-os/sdk/schema").Value, {
15
+ export declare const spaceSetDefault: builder.Method<builder.CallableProjection<Record<string, never>, {
16
16
  readonly mode: 'value';
17
- readonly value: import("@astrale-os/sdk/schema").Value;
17
+ readonly value: Record<string, never>;
18
18
  }, "authorized", false, "default">>;
@@ -2,11 +2,7 @@ import { method, path } from '@astrale-os/sdk/schema';
2
2
  import { z } from 'zod';
3
3
  import { User } from '#schema/user';
4
4
  import { belongsToSpace, mayAdministerSpace } from './policies.js';
5
- const emptyObject = {
6
- type: 'object',
7
- properties: {},
8
- additionalProperties: false,
9
- };
5
+ const emptyObject = z.strictObject({});
10
6
  const administerPolicy = ({ check, self }) => check(mayAdministerSpace, self);
11
7
  const membershipPolicy = ({ check, self }) => check(belongsToSpace, self);
12
8
  export const spaceAddUser = method({