@treeseed/sdk 0.13.0-rc.107 → 0.13.0-rc.109

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.
@@ -5121,8 +5121,8 @@ export declare const hostInitializationProfileSchema: z.ZodEffects<z.ZodObject<{
5121
5121
  }>, "many">>;
5122
5122
  }, "strict", z.ZodTypeAny, {
5123
5123
  id: string;
5124
- role: string;
5125
5124
  schemaVersion: "treeseed.host-initialization-profile/v1";
5125
+ role: string;
5126
5126
  runtime: {
5127
5127
  environment: "development" | "production" | "track-default";
5128
5128
  management: "managed";
@@ -5139,8 +5139,8 @@ export declare const hostInitializationProfileSchema: z.ZodEffects<z.ZodObject<{
5139
5139
  };
5140
5140
  }, {
5141
5141
  id: string;
5142
- role: string;
5143
5142
  schemaVersion: "treeseed.host-initialization-profile/v1";
5143
+ role: string;
5144
5144
  runtime: {
5145
5145
  environment: "development" | "production" | "track-default";
5146
5146
  management: "managed";
@@ -5157,8 +5157,8 @@ export declare const hostInitializationProfileSchema: z.ZodEffects<z.ZodObject<{
5157
5157
  }[] | undefined;
5158
5158
  }>, {
5159
5159
  id: string;
5160
- role: string;
5161
5160
  schemaVersion: "treeseed.host-initialization-profile/v1";
5161
+ role: string;
5162
5162
  runtime: {
5163
5163
  environment: "development" | "production" | "track-default";
5164
5164
  management: "managed";
@@ -5175,8 +5175,8 @@ export declare const hostInitializationProfileSchema: z.ZodEffects<z.ZodObject<{
5175
5175
  };
5176
5176
  }, {
5177
5177
  id: string;
5178
- role: string;
5179
5178
  schemaVersion: "treeseed.host-initialization-profile/v1";
5179
+ role: string;
5180
5180
  runtime: {
5181
5181
  environment: "development" | "production" | "track-default";
5182
5182
  management: "managed";
@@ -7221,8 +7221,8 @@ export declare const releaseCatalogSchema: z.ZodEffects<z.ZodObject<{
7221
7221
  }>, "many">>;
7222
7222
  }, "strict", z.ZodTypeAny, {
7223
7223
  id: string;
7224
- role: string;
7225
7224
  schemaVersion: "treeseed.host-initialization-profile/v1";
7225
+ role: string;
7226
7226
  runtime: {
7227
7227
  environment: "development" | "production" | "track-default";
7228
7228
  management: "managed";
@@ -7239,8 +7239,8 @@ export declare const releaseCatalogSchema: z.ZodEffects<z.ZodObject<{
7239
7239
  };
7240
7240
  }, {
7241
7241
  id: string;
7242
- role: string;
7243
7242
  schemaVersion: "treeseed.host-initialization-profile/v1";
7243
+ role: string;
7244
7244
  runtime: {
7245
7245
  environment: "development" | "production" | "track-default";
7246
7246
  management: "managed";
@@ -7257,8 +7257,8 @@ export declare const releaseCatalogSchema: z.ZodEffects<z.ZodObject<{
7257
7257
  }[] | undefined;
7258
7258
  }>, {
7259
7259
  id: string;
7260
- role: string;
7261
7260
  schemaVersion: "treeseed.host-initialization-profile/v1";
7261
+ role: string;
7262
7262
  runtime: {
7263
7263
  environment: "development" | "production" | "track-default";
7264
7264
  management: "managed";
@@ -7275,8 +7275,8 @@ export declare const releaseCatalogSchema: z.ZodEffects<z.ZodObject<{
7275
7275
  };
7276
7276
  }, {
7277
7277
  id: string;
7278
- role: string;
7279
7278
  schemaVersion: "treeseed.host-initialization-profile/v1";
7279
+ role: string;
7280
7280
  runtime: {
7281
7281
  environment: "development" | "production" | "track-default";
7282
7282
  management: "managed";
@@ -7457,8 +7457,8 @@ export declare const releaseCatalogSchema: z.ZodEffects<z.ZodObject<{
7457
7457
  } | null;
7458
7458
  hostProfiles: {
7459
7459
  id: string;
7460
- role: string;
7461
7460
  schemaVersion: "treeseed.host-initialization-profile/v1";
7461
+ role: string;
7462
7462
  runtime: {
7463
7463
  environment: "development" | "production" | "track-default";
7464
7464
  management: "managed";
@@ -7638,8 +7638,8 @@ export declare const releaseCatalogSchema: z.ZodEffects<z.ZodObject<{
7638
7638
  } | null;
7639
7639
  hostProfiles?: {
7640
7640
  id: string;
7641
- role: string;
7642
7641
  schemaVersion: "treeseed.host-initialization-profile/v1";
7642
+ role: string;
7643
7643
  runtime: {
7644
7644
  environment: "development" | "production" | "track-default";
7645
7645
  management: "managed";
@@ -7819,8 +7819,8 @@ export declare const releaseCatalogSchema: z.ZodEffects<z.ZodObject<{
7819
7819
  } | null;
7820
7820
  hostProfiles: {
7821
7821
  id: string;
7822
- role: string;
7823
7822
  schemaVersion: "treeseed.host-initialization-profile/v1";
7823
+ role: string;
7824
7824
  runtime: {
7825
7825
  environment: "development" | "production" | "track-default";
7826
7826
  management: "managed";
@@ -8000,8 +8000,8 @@ export declare const releaseCatalogSchema: z.ZodEffects<z.ZodObject<{
8000
8000
  } | null;
8001
8001
  hostProfiles?: {
8002
8002
  id: string;
8003
- role: string;
8004
8003
  schemaVersion: "treeseed.host-initialization-profile/v1";
8004
+ role: string;
8005
8005
  runtime: {
8006
8006
  environment: "development" | "production" | "track-default";
8007
8007
  management: "managed";
@@ -8322,8 +8322,8 @@ export declare const hostReceiptSchema: z.ZodObject<{
8322
8322
  completedAt: z.ZodString;
8323
8323
  }, "strict", z.ZodTypeAny, {
8324
8324
  state: "degraded" | "rolled-back" | "known-good";
8325
- role: string;
8326
8325
  schemaVersion: "treeseed.host-receipt/v1";
8326
+ role: string;
8327
8327
  packages: {
8328
8328
  version: string;
8329
8329
  name: string;
@@ -8352,8 +8352,8 @@ export declare const hostReceiptSchema: z.ZodObject<{
8352
8352
  }[];
8353
8353
  }, {
8354
8354
  state: "degraded" | "rolled-back" | "known-good";
8355
- role: string;
8356
8355
  schemaVersion: "treeseed.host-receipt/v1";
8356
+ role: string;
8357
8357
  packages: {
8358
8358
  version: string;
8359
8359
  name: string;
@@ -2141,11 +2141,11 @@ export declare const developmentRuntimeSchema: z.ZodEffects<z.ZodEffects<z.ZodOb
2141
2141
  } | undefined;
2142
2142
  }>, "many">;
2143
2143
  }, "strict", z.ZodTypeAny, {
2144
+ schemaVersion: "treeseed.development-runtime/v2";
2144
2145
  project: {
2145
2146
  id: string;
2146
2147
  repository: string;
2147
2148
  };
2148
- schemaVersion: "treeseed.development-runtime/v2";
2149
2149
  targets: {
2150
2150
  kind: "package-watch" | "live-web" | "live-api" | "rebuild-restart" | "local-companion";
2151
2151
  id: string;
@@ -2289,11 +2289,11 @@ export declare const developmentRuntimeSchema: z.ZodEffects<z.ZodEffects<z.ZodOb
2289
2289
  restoreOnFailure: boolean;
2290
2290
  };
2291
2291
  }, {
2292
+ schemaVersion: "treeseed.development-runtime/v2";
2292
2293
  project: {
2293
2294
  id: string;
2294
2295
  repository: string;
2295
2296
  };
2296
- schemaVersion: "treeseed.development-runtime/v2";
2297
2297
  targets: {
2298
2298
  kind: "package-watch" | "live-web" | "live-api" | "rebuild-restart" | "local-companion";
2299
2299
  id: string;
@@ -2437,11 +2437,11 @@ export declare const developmentRuntimeSchema: z.ZodEffects<z.ZodEffects<z.ZodOb
2437
2437
  restoreOnFailure?: boolean | undefined;
2438
2438
  };
2439
2439
  }>, {
2440
+ schemaVersion: "treeseed.development-runtime/v2";
2440
2441
  project: {
2441
2442
  id: string;
2442
2443
  repository: string;
2443
2444
  };
2444
- schemaVersion: "treeseed.development-runtime/v2";
2445
2445
  targets: {
2446
2446
  kind: "package-watch" | "live-web" | "live-api" | "rebuild-restart" | "local-companion";
2447
2447
  id: string;
@@ -2585,11 +2585,11 @@ export declare const developmentRuntimeSchema: z.ZodEffects<z.ZodEffects<z.ZodOb
2585
2585
  restoreOnFailure: boolean;
2586
2586
  };
2587
2587
  }, {
2588
+ schemaVersion: "treeseed.development-runtime/v2";
2588
2589
  project: {
2589
2590
  id: string;
2590
2591
  repository: string;
2591
2592
  };
2592
- schemaVersion: "treeseed.development-runtime/v2";
2593
2593
  targets: {
2594
2594
  kind: "package-watch" | "live-web" | "live-api" | "rebuild-restart" | "local-companion";
2595
2595
  id: string;
@@ -2733,11 +2733,11 @@ export declare const developmentRuntimeSchema: z.ZodEffects<z.ZodEffects<z.ZodOb
2733
2733
  restoreOnFailure?: boolean | undefined;
2734
2734
  };
2735
2735
  }>, {
2736
+ schemaVersion: "treeseed.development-runtime/v2";
2736
2737
  project: {
2737
2738
  id: string;
2738
2739
  repository: string;
2739
2740
  };
2740
- schemaVersion: "treeseed.development-runtime/v2";
2741
2741
  targets: {
2742
2742
  kind: "package-watch" | "live-web" | "live-api" | "rebuild-restart" | "local-companion";
2743
2743
  id: string;
@@ -1,2 +1,3 @@
1
1
  export * from './contracts.js';
2
2
  export * from './browser-session.js';
3
+ export * from './runtime.js';
@@ -1,2 +1,3 @@
1
1
  export * from "./contracts.js";
2
2
  export * from "./browser-session.js";
3
+ export * from "./runtime.js";
@@ -0,0 +1,166 @@
1
+ import { z } from 'zod';
2
+ /** Portable API authentication wiring. Deployment resolves protected bootstrap
3
+ * references; these declarations contain neither secret values nor file paths.
4
+ * Application authorization and issuer/subject mappings remain in the API DB.
5
+ */
6
+ export declare const identityApiRuntimeSchema: z.ZodEffects<z.ZodObject<{
7
+ schemaVersion: z.ZodLiteral<"treeseed.identity-api-runtime/v1">;
8
+ issuer: z.ZodEffects<z.ZodString, string, string>;
9
+ resource: z.ZodEffects<z.ZodString, string, string>;
10
+ scopes: z.ZodEffects<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>, string[], string[]>;
11
+ sessionKeys: z.ZodObject<{
12
+ id: z.ZodString;
13
+ active: z.ZodObject<{
14
+ version: z.ZodNumber;
15
+ credentialReference: z.ZodString;
16
+ }, "strict", z.ZodTypeAny, {
17
+ version: number;
18
+ credentialReference: string;
19
+ }, {
20
+ version: number;
21
+ credentialReference: string;
22
+ }>;
23
+ historical: z.ZodArray<z.ZodObject<{
24
+ version: z.ZodNumber;
25
+ credentialReference: z.ZodString;
26
+ }, "strict", z.ZodTypeAny, {
27
+ version: number;
28
+ credentialReference: string;
29
+ }, {
30
+ version: number;
31
+ credentialReference: string;
32
+ }>, "many">;
33
+ }, "strict", z.ZodTypeAny, {
34
+ id: string;
35
+ active: {
36
+ version: number;
37
+ credentialReference: string;
38
+ };
39
+ historical: {
40
+ version: number;
41
+ credentialReference: string;
42
+ }[];
43
+ }, {
44
+ id: string;
45
+ active: {
46
+ version: number;
47
+ credentialReference: string;
48
+ };
49
+ historical: {
50
+ version: number;
51
+ credentialReference: string;
52
+ }[];
53
+ }>;
54
+ applications: z.ZodArray<z.ZodObject<{
55
+ clientId: z.ZodString;
56
+ workloadPrincipalId: z.ZodString;
57
+ redirectUri: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
58
+ scopes: z.ZodEffects<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>, string[], string[]>;
59
+ signingKeyReference: z.ZodString;
60
+ }, "strict", z.ZodTypeAny, {
61
+ scopes: string[];
62
+ clientId: string;
63
+ redirectUri: string;
64
+ workloadPrincipalId: string;
65
+ signingKeyReference: string;
66
+ }, {
67
+ scopes: string[];
68
+ clientId: string;
69
+ redirectUri: string;
70
+ workloadPrincipalId: string;
71
+ signingKeyReference: string;
72
+ }>, "many">;
73
+ }, "strict", z.ZodTypeAny, {
74
+ issuer: string;
75
+ resource: string;
76
+ scopes: string[];
77
+ schemaVersion: "treeseed.identity-api-runtime/v1";
78
+ sessionKeys: {
79
+ id: string;
80
+ active: {
81
+ version: number;
82
+ credentialReference: string;
83
+ };
84
+ historical: {
85
+ version: number;
86
+ credentialReference: string;
87
+ }[];
88
+ };
89
+ applications: {
90
+ scopes: string[];
91
+ clientId: string;
92
+ redirectUri: string;
93
+ workloadPrincipalId: string;
94
+ signingKeyReference: string;
95
+ }[];
96
+ }, {
97
+ issuer: string;
98
+ resource: string;
99
+ scopes: string[];
100
+ schemaVersion: "treeseed.identity-api-runtime/v1";
101
+ sessionKeys: {
102
+ id: string;
103
+ active: {
104
+ version: number;
105
+ credentialReference: string;
106
+ };
107
+ historical: {
108
+ version: number;
109
+ credentialReference: string;
110
+ }[];
111
+ };
112
+ applications: {
113
+ scopes: string[];
114
+ clientId: string;
115
+ redirectUri: string;
116
+ workloadPrincipalId: string;
117
+ signingKeyReference: string;
118
+ }[];
119
+ }>, {
120
+ issuer: string;
121
+ resource: string;
122
+ scopes: string[];
123
+ schemaVersion: "treeseed.identity-api-runtime/v1";
124
+ sessionKeys: {
125
+ id: string;
126
+ active: {
127
+ version: number;
128
+ credentialReference: string;
129
+ };
130
+ historical: {
131
+ version: number;
132
+ credentialReference: string;
133
+ }[];
134
+ };
135
+ applications: {
136
+ scopes: string[];
137
+ clientId: string;
138
+ redirectUri: string;
139
+ workloadPrincipalId: string;
140
+ signingKeyReference: string;
141
+ }[];
142
+ }, {
143
+ issuer: string;
144
+ resource: string;
145
+ scopes: string[];
146
+ schemaVersion: "treeseed.identity-api-runtime/v1";
147
+ sessionKeys: {
148
+ id: string;
149
+ active: {
150
+ version: number;
151
+ credentialReference: string;
152
+ };
153
+ historical: {
154
+ version: number;
155
+ credentialReference: string;
156
+ }[];
157
+ };
158
+ applications: {
159
+ scopes: string[];
160
+ clientId: string;
161
+ redirectUri: string;
162
+ workloadPrincipalId: string;
163
+ signingKeyReference: string;
164
+ }[];
165
+ }>;
166
+ export type IdentityApiRuntime = z.infer<typeof identityApiRuntimeSchema>;
@@ -0,0 +1,47 @@
1
+ import { z } from "zod";
2
+ import { identityEndpointSchema, resourceTokenRequestSchema } from "./contracts.js";
3
+ const reference = z.string().regex(/^[a-z][a-z0-9-]{0,62}$/u);
4
+ const clientId = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$/u);
5
+ const scopes = resourceTokenRequestSchema.shape.scopes.refine((value) => value.length <= 256 && value.every((scope) => scope.length <= 128), "Bounded scope inventory required.");
6
+ const sessionKey = z.object({ version: z.number().int().positive(), credentialReference: reference }).strict();
7
+ const identityApiRuntimeSchema = z.object({
8
+ schemaVersion: z.literal("treeseed.identity-api-runtime/v1"),
9
+ issuer: identityEndpointSchema,
10
+ resource: identityEndpointSchema,
11
+ scopes,
12
+ sessionKeys: z.object({
13
+ id: reference,
14
+ active: sessionKey,
15
+ historical: z.array(sessionKey).max(8)
16
+ }).strict(),
17
+ applications: z.array(z.object({
18
+ clientId,
19
+ workloadPrincipalId: clientId,
20
+ redirectUri: identityEndpointSchema.refine((value) => !value.includes("*"), "Exact callback required."),
21
+ scopes,
22
+ signingKeyReference: reference
23
+ }).strict()).max(128)
24
+ }).strict().superRefine((value, context) => {
25
+ const fail = (message) => context.addIssue({ code: z.ZodIssueCode.custom, message });
26
+ const versions = /* @__PURE__ */ new Set(), references = /* @__PURE__ */ new Set(), identities = /* @__PURE__ */ new Set(), callbacks = /* @__PURE__ */ new Set();
27
+ for (const key of [value.sessionKeys.active, ...value.sessionKeys.historical]) {
28
+ if (versions.has(key.version) || references.has(key.credentialReference)) fail("Session key versions and references must be unique.");
29
+ if (key !== value.sessionKeys.active && key.version >= value.sessionKeys.active.version) fail("Historical session keys must precede the active version.");
30
+ versions.add(key.version);
31
+ references.add(key.credentialReference);
32
+ }
33
+ for (const application of value.applications) {
34
+ for (const id of [application.clientId, application.workloadPrincipalId]) {
35
+ if (identities.has(id)) fail("Application clients and workload principals must be independently registered.");
36
+ identities.add(id);
37
+ }
38
+ if (callbacks.has(application.redirectUri)) fail("Applications must have distinct exact callbacks.");
39
+ callbacks.add(application.redirectUri);
40
+ if (references.has(application.signingKeyReference)) fail("Session encryption and application signing keys must be independent.");
41
+ references.add(application.signingKeyReference);
42
+ if (application.scopes.some((scope) => !value.scopes.includes(scope))) fail("Application scopes must be supported by the selected API resource.");
43
+ }
44
+ });
45
+ export {
46
+ identityApiRuntimeSchema
47
+ };
@@ -62,6 +62,8 @@ const operationBindings = {
62
62
  "host config plan": local("local.host.config.plan"),
63
63
  "host config apply": local("local.host.config.apply"),
64
64
  "host config adopt": local("local.host.config.adopt"),
65
+ "host postgres transfer prepare": local("local.host.postgres.transfer.prepare"),
66
+ "host postgres transfer status": local("local.host.postgres.transfer.status"),
65
67
  "host topology": local("local.host.topology"),
66
68
  "host connections": local("local.host.connections"),
67
69
  "host provider status": local("local.host.provider.status"),
@@ -405,6 +407,7 @@ const commandTree = {
405
407
  leaf("reconcile", "mutation", void 0, "authority"),
406
408
  leaf("events"),
407
409
  branch("config", [leaf("show"), leaf("plan", "read", "file"), leaf("apply", "mutation", "file", "authority"), configurationAdopt()]),
410
+ branch("postgres", [branch("transfer", [leaf("prepare", "mutation", "file", "authority"), leaf("status")])]),
408
411
  leaf("topology"),
409
412
  leaf("connections"),
410
413
  branch("provider", [leaf("status"), branch("credentials", [leaf("list"), leaf("status"), hostProviderCredentialInitialize()]), hostProviderEnvironmentBranch()]),
@@ -126,8 +126,8 @@ export declare const HOSTED_TOPOLOGY_OPERATIONS: {
126
126
  stackId: string;
127
127
  stateBackend: {
128
128
  type: "s3";
129
- key: string;
130
129
  schemaVersion: "treeseed.hosted-state-backend/v1";
130
+ key: string;
131
131
  teamId: string;
132
132
  environment: "production" | "staging";
133
133
  deploymentId: string;
@@ -286,8 +286,8 @@ export declare const HOSTED_TOPOLOGY_OPERATIONS: {
286
286
  stackId: string;
287
287
  stateBackend: {
288
288
  type: "s3";
289
- key: string;
290
289
  schemaVersion: "treeseed.hosted-state-backend/v1";
290
+ key: string;
291
291
  teamId: string;
292
292
  environment: "production" | "staging";
293
293
  deploymentId: string;
@@ -372,8 +372,8 @@ export declare const HOSTED_TOPOLOGY_OPERATIONS: {
372
372
  stackId: string;
373
373
  stateBackend: {
374
374
  type: "s3";
375
- key: string;
376
375
  schemaVersion: "treeseed.hosted-state-backend/v1";
376
+ key: string;
377
377
  teamId: string;
378
378
  environment: "production" | "staging";
379
379
  deploymentId: string;
@@ -182,8 +182,8 @@ export declare const CONTROL_PLANE_OPERATIONS: {
182
182
  stackId: string;
183
183
  stateBackend: {
184
184
  type: "s3";
185
- key: string;
186
185
  schemaVersion: "treeseed.hosted-state-backend/v1";
186
+ key: string;
187
187
  teamId: string;
188
188
  environment: "production" | "staging";
189
189
  deploymentId: string;
@@ -342,8 +342,8 @@ export declare const CONTROL_PLANE_OPERATIONS: {
342
342
  stackId: string;
343
343
  stateBackend: {
344
344
  type: "s3";
345
- key: string;
346
345
  schemaVersion: "treeseed.hosted-state-backend/v1";
346
+ key: string;
347
347
  teamId: string;
348
348
  environment: "production" | "staging";
349
349
  deploymentId: string;
@@ -428,8 +428,8 @@ export declare const CONTROL_PLANE_OPERATIONS: {
428
428
  stackId: string;
429
429
  stateBackend: {
430
430
  type: "s3";
431
- key: string;
432
431
  schemaVersion: "treeseed.hosted-state-backend/v1";
432
+ key: string;
433
433
  teamId: string;
434
434
  environment: "production" | "staging";
435
435
  deploymentId: string;
@@ -164,8 +164,8 @@ export declare const projectCreatePlanSchema: z.ZodObject<{
164
164
  ok: z.ZodBoolean;
165
165
  blockers: z.ZodArray<z.ZodString, "many">;
166
166
  }, "strict", z.ZodTypeAny, {
167
- slug: string;
168
167
  schemaVersion: "treeseed.platform-project-create-plan/v1";
168
+ slug: string;
169
169
  repository: {
170
170
  name: string;
171
171
  owner: string;
@@ -187,8 +187,8 @@ export declare const projectCreatePlanSchema: z.ZodObject<{
187
187
  }[];
188
188
  observationDigest: string;
189
189
  }, {
190
- slug: string;
191
190
  schemaVersion: "treeseed.platform-project-create-plan/v1";
191
+ slug: string;
192
192
  repository: {
193
193
  name: string;
194
194
  owner: string;
@@ -256,8 +256,8 @@ export declare const projectCreateReceiptSchema: z.ZodObject<{
256
256
  step: "project" | "library" | "repository" | "template" | "inventory";
257
257
  }>, "many">;
258
258
  }, "strict", z.ZodTypeAny, {
259
- slug: string;
260
259
  schemaVersion: "treeseed.platform-project-create-receipt/v1";
260
+ slug: string;
261
261
  repository: {
262
262
  name: string;
263
263
  owner: string;
@@ -279,8 +279,8 @@ export declare const projectCreateReceiptSchema: z.ZodObject<{
279
279
  libraryBindingId: string;
280
280
  inventoryVersion: number;
281
281
  }, {
282
- slug: string;
283
282
  schemaVersion: "treeseed.platform-project-create-receipt/v1";
283
+ slug: string;
284
284
  repository: {
285
285
  name: string;
286
286
  owner: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@treeseed/sdk",
3
- "version": "0.13.0-rc.107",
3
+ "version": "0.13.0-rc.109",
4
4
  "description": "Portable TreeSeed contracts, standards, and typed remote control-plane clients.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {