@treeseed/sdk 0.13.0-rc.90 → 0.13.0-rc.92
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.
- package/dist/.treeseed-build-complete.json +1 -1
- package/dist/agent-capacity/contracts/capacity/assignments/assignment-context-pack.d.ts +6 -6
- package/dist/agent-capacity/validation/agent-definition-schema.d.ts +144 -144
- package/dist/capacity-provider/environment-catalog.d.ts +12 -12
- package/dist/capacity-provider/index.d.ts +1 -0
- package/dist/capacity-provider/index.js +1 -0
- package/dist/capacity-provider/install-configuration.d.ts +39 -0
- package/dist/capacity-provider/install-configuration.js +18 -0
- package/dist/configuration/secrets-capability.d.ts +3 -0
- package/dist/configuration/secrets-capability.js +3 -0
- package/dist/content/validation/agent-operational-content-schemas.d.ts +16 -16
- package/dist/content/validation/auxiliary-content-schemas.d.ts +20 -20
- package/dist/content/validation/content-model-schemas.d.ts +304 -304
- package/dist/content/validation/portable-content-data.d.ts +28 -28
- package/dist/deployment/ai-hosting.d.ts +297 -0
- package/dist/deployment/ai-hosting.js +63 -0
- package/dist/deployment/ai-instance.d.ts +48 -0
- package/dist/deployment/ai-instance.js +23 -0
- package/dist/deployment/hosted-topology-template.d.ts +24 -24
- package/dist/deployment/hosted-topology.d.ts +114 -114
- package/dist/deployment/index.d.ts +2 -0
- package/dist/deployment/index.js +2 -0
- package/dist/deployment/schemas.d.ts +38 -38
- package/dist/development/schemas.d.ts +76 -76
- package/dist/operator-contracts/canonical-command-tree.js +3 -10
- package/dist/operator-contracts/catalog/communication-operations.d.ts +5 -5
- package/dist/operator-contracts/catalog/hosted-topology-operations.d.ts +21 -21
- package/dist/operator-contracts/catalog/inbox-operations.d.ts +8 -8
- package/dist/operator-contracts/catalog/infrastructure/ai-instance-operations.d.ts +29 -0
- package/dist/operator-contracts/catalog/infrastructure/ai-instance-operations.js +18 -0
- package/dist/operator-contracts/catalog/infrastructure/command-tree-paths.d.ts +3 -0
- package/dist/operator-contracts/catalog/infrastructure/command-tree-paths.js +15 -0
- package/dist/operator-contracts/communication/contracts.d.ts +34 -34
- package/dist/operator-contracts/control-plane-operations.d.ts +63 -34
- package/dist/operator-contracts/control-plane-operations.js +3 -17
- package/dist/operator-contracts/inbox/contracts.d.ts +30 -30
- package/dist/operator-contracts/operation-builder.d.ts +1 -0
- package/dist/operator-contracts/operation-builder.js +17 -0
- package/dist/platform/schemas.d.ts +220 -40
- package/dist/platform/schemas.js +7 -2
- package/dist/platform/workset.js +5 -1
- package/dist/secrets-capability/github-actions-encryption.js +1 -1
- package/dist/secrets-capability/provider-operation-contracts.d.ts +14 -0
- package/dist/secrets-capability/service-provider-contracts.d.ts +4 -2
- package/dist/secrets-capability/service-provider-contracts.js +41 -27
- package/dist/secrets-capability/shared-access.d.ts +51 -0
- package/dist/secrets-capability/shared-access.js +36 -0
- package/dist/secrets-capability/shared-resources.d.ts +376 -0
- package/dist/secrets-capability/shared-resources.js +91 -0
- package/dist/secrets-capability/vault-contracts.d.ts +132 -0
- package/dist/secrets-capability/vault-contracts.js +56 -0
- package/package.json +1 -1
|
@@ -39,34 +39,70 @@ export declare const repositorySchema: z.ZodObject<{
|
|
|
39
39
|
stagingBranch: z.ZodOptional<z.ZodString>;
|
|
40
40
|
}, z.ZodTypeAny, "passthrough">>>;
|
|
41
41
|
}, z.ZodTypeAny, "passthrough">>;
|
|
42
|
-
export declare const projectSchema: z.ZodObject<{
|
|
42
|
+
export declare const projectSchema: z.ZodEffects<z.ZodObject<{
|
|
43
43
|
key: z.ZodString;
|
|
44
44
|
slug: z.ZodString;
|
|
45
|
-
|
|
45
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
46
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
47
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
46
48
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
47
49
|
key: z.ZodString;
|
|
48
50
|
slug: z.ZodString;
|
|
49
|
-
|
|
51
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
52
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
53
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
50
54
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
51
55
|
key: z.ZodString;
|
|
52
56
|
slug: z.ZodString;
|
|
53
|
-
|
|
57
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
58
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
59
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
60
|
+
}, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
|
|
61
|
+
key: z.ZodString;
|
|
62
|
+
slug: z.ZodString;
|
|
63
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
64
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
65
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
66
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
67
|
+
key: z.ZodString;
|
|
68
|
+
slug: z.ZodString;
|
|
69
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
70
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
71
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
54
72
|
}, z.ZodTypeAny, "passthrough">>;
|
|
55
73
|
export declare const inventorySchema: z.ZodObject<{
|
|
56
74
|
schemaVersion: z.ZodString;
|
|
57
75
|
resources: z.ZodObject<{
|
|
58
|
-
projects: z.ZodArray<z.ZodObject<{
|
|
76
|
+
projects: z.ZodArray<z.ZodEffects<z.ZodObject<{
|
|
59
77
|
key: z.ZodString;
|
|
60
78
|
slug: z.ZodString;
|
|
61
|
-
|
|
79
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
80
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
81
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
62
82
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
63
83
|
key: z.ZodString;
|
|
64
84
|
slug: z.ZodString;
|
|
65
|
-
|
|
85
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
86
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
87
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
66
88
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
67
89
|
key: z.ZodString;
|
|
68
90
|
slug: z.ZodString;
|
|
69
|
-
|
|
91
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
92
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
93
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
94
|
+
}, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
|
|
95
|
+
key: z.ZodString;
|
|
96
|
+
slug: z.ZodString;
|
|
97
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
98
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
99
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
100
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
101
|
+
key: z.ZodString;
|
|
102
|
+
slug: z.ZodString;
|
|
103
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
104
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
105
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
70
106
|
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
71
107
|
repositories: z.ZodArray<z.ZodObject<{
|
|
72
108
|
key: z.ZodString;
|
|
@@ -109,18 +145,36 @@ export declare const inventorySchema: z.ZodObject<{
|
|
|
109
145
|
}, z.ZodTypeAny, "passthrough">>>;
|
|
110
146
|
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
111
147
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
112
|
-
projects: z.ZodArray<z.ZodObject<{
|
|
148
|
+
projects: z.ZodArray<z.ZodEffects<z.ZodObject<{
|
|
113
149
|
key: z.ZodString;
|
|
114
150
|
slug: z.ZodString;
|
|
115
|
-
|
|
151
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
152
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
153
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
116
154
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
117
155
|
key: z.ZodString;
|
|
118
156
|
slug: z.ZodString;
|
|
119
|
-
|
|
157
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
158
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
159
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
120
160
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
121
161
|
key: z.ZodString;
|
|
122
162
|
slug: z.ZodString;
|
|
123
|
-
|
|
163
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
164
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
165
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
166
|
+
}, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
|
|
167
|
+
key: z.ZodString;
|
|
168
|
+
slug: z.ZodString;
|
|
169
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
170
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
171
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
172
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
173
|
+
key: z.ZodString;
|
|
174
|
+
slug: z.ZodString;
|
|
175
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
176
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
177
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
124
178
|
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
125
179
|
repositories: z.ZodArray<z.ZodObject<{
|
|
126
180
|
key: z.ZodString;
|
|
@@ -163,18 +217,36 @@ export declare const inventorySchema: z.ZodObject<{
|
|
|
163
217
|
}, z.ZodTypeAny, "passthrough">>>;
|
|
164
218
|
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
165
219
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
166
|
-
projects: z.ZodArray<z.ZodObject<{
|
|
220
|
+
projects: z.ZodArray<z.ZodEffects<z.ZodObject<{
|
|
167
221
|
key: z.ZodString;
|
|
168
222
|
slug: z.ZodString;
|
|
169
|
-
|
|
223
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
224
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
225
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
170
226
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
171
227
|
key: z.ZodString;
|
|
172
228
|
slug: z.ZodString;
|
|
173
|
-
|
|
229
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
230
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
231
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
232
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
233
|
+
key: z.ZodString;
|
|
234
|
+
slug: z.ZodString;
|
|
235
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
236
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
237
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
238
|
+
}, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
|
|
239
|
+
key: z.ZodString;
|
|
240
|
+
slug: z.ZodString;
|
|
241
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
242
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
243
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
174
244
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
175
245
|
key: z.ZodString;
|
|
176
246
|
slug: z.ZodString;
|
|
177
|
-
|
|
247
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
248
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
249
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
178
250
|
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
179
251
|
repositories: z.ZodArray<z.ZodObject<{
|
|
180
252
|
key: z.ZodString;
|
|
@@ -220,18 +292,36 @@ export declare const inventorySchema: z.ZodObject<{
|
|
|
220
292
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
221
293
|
schemaVersion: z.ZodString;
|
|
222
294
|
resources: z.ZodObject<{
|
|
223
|
-
projects: z.ZodArray<z.ZodObject<{
|
|
295
|
+
projects: z.ZodArray<z.ZodEffects<z.ZodObject<{
|
|
224
296
|
key: z.ZodString;
|
|
225
297
|
slug: z.ZodString;
|
|
226
|
-
|
|
298
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
299
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
300
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
227
301
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
228
302
|
key: z.ZodString;
|
|
229
303
|
slug: z.ZodString;
|
|
230
|
-
|
|
304
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
305
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
306
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
307
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
308
|
+
key: z.ZodString;
|
|
309
|
+
slug: z.ZodString;
|
|
310
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
311
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
312
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
313
|
+
}, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
|
|
314
|
+
key: z.ZodString;
|
|
315
|
+
slug: z.ZodString;
|
|
316
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
317
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
318
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
231
319
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
232
320
|
key: z.ZodString;
|
|
233
321
|
slug: z.ZodString;
|
|
234
|
-
|
|
322
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
323
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
324
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
235
325
|
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
236
326
|
repositories: z.ZodArray<z.ZodObject<{
|
|
237
327
|
key: z.ZodString;
|
|
@@ -274,18 +364,36 @@ export declare const inventorySchema: z.ZodObject<{
|
|
|
274
364
|
}, z.ZodTypeAny, "passthrough">>>;
|
|
275
365
|
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
276
366
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
277
|
-
projects: z.ZodArray<z.ZodObject<{
|
|
367
|
+
projects: z.ZodArray<z.ZodEffects<z.ZodObject<{
|
|
278
368
|
key: z.ZodString;
|
|
279
369
|
slug: z.ZodString;
|
|
280
|
-
|
|
370
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
371
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
372
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
281
373
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
282
374
|
key: z.ZodString;
|
|
283
375
|
slug: z.ZodString;
|
|
284
|
-
|
|
376
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
377
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
378
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
285
379
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
286
380
|
key: z.ZodString;
|
|
287
381
|
slug: z.ZodString;
|
|
288
|
-
|
|
382
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
383
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
384
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
385
|
+
}, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
|
|
386
|
+
key: z.ZodString;
|
|
387
|
+
slug: z.ZodString;
|
|
388
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
389
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
390
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
391
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
392
|
+
key: z.ZodString;
|
|
393
|
+
slug: z.ZodString;
|
|
394
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
395
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
396
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
289
397
|
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
290
398
|
repositories: z.ZodArray<z.ZodObject<{
|
|
291
399
|
key: z.ZodString;
|
|
@@ -328,18 +436,36 @@ export declare const inventorySchema: z.ZodObject<{
|
|
|
328
436
|
}, z.ZodTypeAny, "passthrough">>>;
|
|
329
437
|
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
330
438
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
331
|
-
projects: z.ZodArray<z.ZodObject<{
|
|
439
|
+
projects: z.ZodArray<z.ZodEffects<z.ZodObject<{
|
|
332
440
|
key: z.ZodString;
|
|
333
441
|
slug: z.ZodString;
|
|
334
|
-
|
|
442
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
443
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
444
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
335
445
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
336
446
|
key: z.ZodString;
|
|
337
447
|
slug: z.ZodString;
|
|
338
|
-
|
|
448
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
449
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
450
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
339
451
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
340
452
|
key: z.ZodString;
|
|
341
453
|
slug: z.ZodString;
|
|
342
|
-
|
|
454
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
455
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
456
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
457
|
+
}, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
|
|
458
|
+
key: z.ZodString;
|
|
459
|
+
slug: z.ZodString;
|
|
460
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
461
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
462
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
463
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
464
|
+
key: z.ZodString;
|
|
465
|
+
slug: z.ZodString;
|
|
466
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
467
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
468
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
343
469
|
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
344
470
|
repositories: z.ZodArray<z.ZodObject<{
|
|
345
471
|
key: z.ZodString;
|
|
@@ -385,18 +511,36 @@ export declare const inventorySchema: z.ZodObject<{
|
|
|
385
511
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
386
512
|
schemaVersion: z.ZodString;
|
|
387
513
|
resources: z.ZodObject<{
|
|
388
|
-
projects: z.ZodArray<z.ZodObject<{
|
|
514
|
+
projects: z.ZodArray<z.ZodEffects<z.ZodObject<{
|
|
389
515
|
key: z.ZodString;
|
|
390
516
|
slug: z.ZodString;
|
|
391
|
-
|
|
517
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
518
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
519
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
392
520
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
393
521
|
key: z.ZodString;
|
|
394
522
|
slug: z.ZodString;
|
|
395
|
-
|
|
523
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
524
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
525
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
396
526
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
397
527
|
key: z.ZodString;
|
|
398
528
|
slug: z.ZodString;
|
|
399
|
-
|
|
529
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
530
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
531
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
532
|
+
}, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
|
|
533
|
+
key: z.ZodString;
|
|
534
|
+
slug: z.ZodString;
|
|
535
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
536
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
537
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
538
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
539
|
+
key: z.ZodString;
|
|
540
|
+
slug: z.ZodString;
|
|
541
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
542
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
543
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
400
544
|
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
401
545
|
repositories: z.ZodArray<z.ZodObject<{
|
|
402
546
|
key: z.ZodString;
|
|
@@ -439,18 +583,36 @@ export declare const inventorySchema: z.ZodObject<{
|
|
|
439
583
|
}, z.ZodTypeAny, "passthrough">>>;
|
|
440
584
|
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
441
585
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
442
|
-
projects: z.ZodArray<z.ZodObject<{
|
|
586
|
+
projects: z.ZodArray<z.ZodEffects<z.ZodObject<{
|
|
443
587
|
key: z.ZodString;
|
|
444
588
|
slug: z.ZodString;
|
|
445
|
-
|
|
589
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
590
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
591
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
446
592
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
447
593
|
key: z.ZodString;
|
|
448
594
|
slug: z.ZodString;
|
|
449
|
-
|
|
595
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
596
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
597
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
598
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
599
|
+
key: z.ZodString;
|
|
600
|
+
slug: z.ZodString;
|
|
601
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
602
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
603
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
604
|
+
}, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
|
|
605
|
+
key: z.ZodString;
|
|
606
|
+
slug: z.ZodString;
|
|
607
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
608
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
609
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
450
610
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
451
611
|
key: z.ZodString;
|
|
452
612
|
slug: z.ZodString;
|
|
453
|
-
|
|
613
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
614
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
615
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
454
616
|
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
455
617
|
repositories: z.ZodArray<z.ZodObject<{
|
|
456
618
|
key: z.ZodString;
|
|
@@ -493,18 +655,36 @@ export declare const inventorySchema: z.ZodObject<{
|
|
|
493
655
|
}, z.ZodTypeAny, "passthrough">>>;
|
|
494
656
|
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
495
657
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
496
|
-
projects: z.ZodArray<z.ZodObject<{
|
|
658
|
+
projects: z.ZodArray<z.ZodEffects<z.ZodObject<{
|
|
497
659
|
key: z.ZodString;
|
|
498
660
|
slug: z.ZodString;
|
|
499
|
-
|
|
661
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
662
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
663
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
500
664
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
501
665
|
key: z.ZodString;
|
|
502
666
|
slug: z.ZodString;
|
|
503
|
-
|
|
667
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
668
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
669
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
670
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
671
|
+
key: z.ZodString;
|
|
672
|
+
slug: z.ZodString;
|
|
673
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
674
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
675
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
676
|
+
}, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
|
|
677
|
+
key: z.ZodString;
|
|
678
|
+
slug: z.ZodString;
|
|
679
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
680
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
681
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
504
682
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
505
683
|
key: z.ZodString;
|
|
506
684
|
slug: z.ZodString;
|
|
507
|
-
|
|
685
|
+
kind: z.ZodOptional<z.ZodString>;
|
|
686
|
+
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
687
|
+
libraryRepository: z.ZodOptional<z.ZodString>;
|
|
508
688
|
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
509
689
|
repositories: z.ZodArray<z.ZodObject<{
|
|
510
690
|
key: z.ZodString;
|
package/dist/platform/schemas.js
CHANGED
|
@@ -10,8 +10,13 @@ const repositorySchema = z.object({
|
|
|
10
10
|
const projectSchema = z.object({
|
|
11
11
|
key: z.string().min(1),
|
|
12
12
|
slug: z.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/u),
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
kind: z.string().optional(),
|
|
14
|
+
primaryRepository: z.string().min(1).optional(),
|
|
15
|
+
libraryRepository: z.string().min(1).optional()
|
|
16
|
+
}).passthrough().superRefine((project, context) => {
|
|
17
|
+
if (!project.primaryRepository && project.kind !== "content") context.addIssue({ code: "custom", path: ["primaryRepository"], message: "Software projects require a primary source repository." });
|
|
18
|
+
if (project.kind === "content" && !project.libraryRepository) context.addIssue({ code: "custom", path: ["libraryRepository"], message: "Content projects require a library repository." });
|
|
19
|
+
});
|
|
15
20
|
const inventorySchema = z.object({
|
|
16
21
|
schemaVersion: z.string().min(1),
|
|
17
22
|
resources: z.object({
|
package/dist/platform/workset.js
CHANGED
|
@@ -56,11 +56,15 @@ function planPlatformWorkset(input) {
|
|
|
56
56
|
const requested = new Set(selection.projects.length || profileProjects.length ? [...profileProjects, ...selection.projects] : [...projectCatalog.keys()]);
|
|
57
57
|
selection.exclude.forEach((slug) => requested.delete(slug));
|
|
58
58
|
requested.delete("platform");
|
|
59
|
+
for (const slug of requested) {
|
|
60
|
+
const project = projectCatalog.get(slug);
|
|
61
|
+
if (project?.kind === "content" && !project.primaryRepository) requested.delete(slug);
|
|
62
|
+
}
|
|
59
63
|
const repositories = new Map(input.inventory.resources.repositories.map((repository) => [repository.key, repository]));
|
|
60
64
|
const entries = [...requested].sort().map((slug) => {
|
|
61
65
|
const project = projectCatalog.get(slug);
|
|
62
66
|
if (!project) throw new Error(`Unknown project ${slug}.`);
|
|
63
|
-
const repository = repositories.get(project.primaryRepository);
|
|
67
|
+
const repository = project.primaryRepository ? repositories.get(project.primaryRepository) : void 0;
|
|
64
68
|
if (!repository || repository.role !== "primary") throw new Error(`Project ${slug} has no primary source repository.`);
|
|
65
69
|
const branch = repository.repositoryPolicy?.stagingBranch ?? repository.defaultBranch;
|
|
66
70
|
const remote = input.remote ?? systemRemote;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import sodium from "libsodium-wrappers-sumo";
|
|
2
1
|
async function encryptGitHubActionsSecret(value, providerPublicKey) {
|
|
2
|
+
const { default: sodium } = await import("libsodium-wrappers-sumo");
|
|
3
3
|
await sodium.ready;
|
|
4
4
|
if (!value) throw new Error("GitHub Actions secret value is required.");
|
|
5
5
|
const key = sodium.from_base64(providerPublicKey, sodium.base64_variants.ORIGINAL);
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import type { CredentialAuthorityScheme, ServiceCapabilityType } from './service-provider-contracts.js';
|
|
2
2
|
export declare const PROVIDER_ADAPTER_KINDS: readonly ["repository-hosting", "workflow-execution", "workflow-configuration", "object-storage", "webhook-ingress"];
|
|
3
3
|
export type ProviderAdapterKind = (typeof PROVIDER_ADAPTER_KINDS)[number];
|
|
4
|
+
/** Bounded delivery requirements attached to a workflow-execution binding.
|
|
5
|
+
* Values and vault login material never belong in this declaration.
|
|
6
|
+
*/
|
|
7
|
+
export type WorkflowConfigurationDeclaration = {
|
|
8
|
+
workflowPath: string;
|
|
9
|
+
repositoryBindingId: string;
|
|
10
|
+
kind: 'secrets' | 'variables';
|
|
11
|
+
scope: 'repository' | 'environment';
|
|
12
|
+
environment?: string | null;
|
|
13
|
+
names: string[];
|
|
14
|
+
};
|
|
15
|
+
export type WorkflowConfigurationPolicy = {
|
|
16
|
+
workflowConfiguration: WorkflowConfigurationDeclaration[];
|
|
17
|
+
};
|
|
4
18
|
export type ProviderCredentialAuthority = {
|
|
5
19
|
id: string;
|
|
6
20
|
teamId: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export declare const SERVICE_PROVIDER_IDS: readonly ["github", "cloudflare", "railway"];
|
|
2
|
-
export declare const SERVICE_CAPABILITY_TYPES: readonly ["repository-hosting", "workflow-execution", "
|
|
1
|
+
export declare const SERVICE_PROVIDER_IDS: readonly ["github", "cloudflare", "railway", "hyperstack"];
|
|
2
|
+
export declare const SERVICE_CAPABILITY_TYPES: readonly ["repository-hosting", "workflow-execution", "frontend-hosting", "backend-hosting", "dns-management", "object-storage", "state-encryption", "database-hosting", "capacity-runtime-hosting", "private-knowledge-index-hosting", "artifact-hosting", "ai-inference-hosting", "ai-training-hosting"];
|
|
3
3
|
export declare const SERVICE_CONNECTION_STATUSES: readonly ["draft", "active", "degraded", "validation-failed", "reentry-required", "reauthorization-required", "disconnected"];
|
|
4
4
|
export declare const SERVICE_CAPABILITY_STATUSES: readonly ["configured", "disabled", "blocked", "planned"];
|
|
5
5
|
export type ServiceProviderId = (typeof SERVICE_PROVIDER_IDS)[number];
|
|
@@ -11,6 +11,8 @@ export type ServiceFieldDefinition = {
|
|
|
11
11
|
label: string;
|
|
12
12
|
description: string;
|
|
13
13
|
required: boolean;
|
|
14
|
+
requiredForCapabilities?: ServiceCapabilityType[];
|
|
15
|
+
pattern?: string;
|
|
14
16
|
sensitive: boolean;
|
|
15
17
|
input: 'text' | 'password' | 'url';
|
|
16
18
|
placeholder?: string;
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
const SERVICE_PROVIDER_IDS = ["github", "cloudflare", "railway"];
|
|
1
|
+
const SERVICE_PROVIDER_IDS = ["github", "cloudflare", "railway", "hyperstack"];
|
|
2
2
|
const SERVICE_CAPABILITY_TYPES = [
|
|
3
3
|
"repository-hosting",
|
|
4
4
|
"workflow-execution",
|
|
5
|
-
"workflow-configuration",
|
|
6
|
-
"secret-enclave",
|
|
7
5
|
"frontend-hosting",
|
|
8
6
|
"backend-hosting",
|
|
9
7
|
"dns-management",
|
|
@@ -12,7 +10,9 @@ const SERVICE_CAPABILITY_TYPES = [
|
|
|
12
10
|
"database-hosting",
|
|
13
11
|
"capacity-runtime-hosting",
|
|
14
12
|
"private-knowledge-index-hosting",
|
|
15
|
-
"artifact-hosting"
|
|
13
|
+
"artifact-hosting",
|
|
14
|
+
"ai-inference-hosting",
|
|
15
|
+
"ai-training-hosting"
|
|
16
16
|
];
|
|
17
17
|
const SERVICE_CONNECTION_STATUSES = [
|
|
18
18
|
"draft",
|
|
@@ -49,9 +49,7 @@ const SERVICE_PROVIDER_CATALOG = [
|
|
|
49
49
|
],
|
|
50
50
|
capabilities: [
|
|
51
51
|
{ type: "repository-hosting", label: "Repository hosting", description: "Own source and knowledge repositories.", credentialProfileIds: ["github-repository-app", "github-repository-token"], status: "available" },
|
|
52
|
-
{ type: "workflow-execution", label: "
|
|
53
|
-
{ type: "workflow-configuration", label: "Workflow configuration", description: "Manage the scoped variables required by allowlisted workflows.", credentialProfileIds: ["github-workflow-app", "github-workflow-token"], status: "available" },
|
|
54
|
-
{ type: "secret-enclave", label: "Actions secret enclave", description: "Write GitHub-encrypted values to Actions without making them readable by TreeSeed.", credentialProfileIds: ["github-workflow-app", "github-workflow-token"], status: "available" }
|
|
52
|
+
{ type: "workflow-execution", label: "Run workflows", description: "Run project workflows and supply their declared configuration securely. Vault credentials remain authoritative; provider secrets are delivery destinations.", credentialProfileIds: ["github-workflow-app", "github-workflow-token"], status: "available" }
|
|
55
53
|
],
|
|
56
54
|
credentialProfiles: [
|
|
57
55
|
{
|
|
@@ -81,10 +79,10 @@ const SERVICE_PROVIDER_CATALOG = [
|
|
|
81
79
|
{
|
|
82
80
|
id: "github-workflow-app",
|
|
83
81
|
label: "Workflow Connector App",
|
|
84
|
-
description: "Installation authority for
|
|
85
|
-
capabilities: ["workflow-execution"
|
|
82
|
+
description: "Installation authority for workflow execution and explicitly declared configuration delivery.",
|
|
83
|
+
capabilities: ["workflow-execution"],
|
|
86
84
|
fields: [],
|
|
87
|
-
permissions: ["Metadata: read", "Contents: read", "Actions: read and write", "
|
|
85
|
+
permissions: ["Metadata: read", "Contents: read", "Actions: read and write", "Only when declared: Secrets write and/or Variables write"],
|
|
88
86
|
sharing: "capability-scoped",
|
|
89
87
|
unattendedCompatible: true,
|
|
90
88
|
authoritySchemes: ["app-installation"],
|
|
@@ -93,10 +91,10 @@ const SERVICE_PROVIDER_CATALOG = [
|
|
|
93
91
|
{
|
|
94
92
|
id: "github-workflow-token",
|
|
95
93
|
label: "Workflow token authority",
|
|
96
|
-
description: "Fine-grained token authority for
|
|
97
|
-
capabilities: ["workflow-execution"
|
|
94
|
+
description: "Fine-grained token authority for workflow execution and explicitly declared configuration delivery.",
|
|
95
|
+
capabilities: ["workflow-execution"],
|
|
98
96
|
fields: [field("accessToken", "Fine-grained token", "Stored in core OpenBao; used only by authorized operations.", true, true)],
|
|
99
|
-
permissions: ["Metadata: read", "Contents: read", "Actions: read and write", "
|
|
97
|
+
permissions: ["Metadata: read", "Contents: read", "Actions: read and write", "Only when declared: Secrets write and/or Variables write"],
|
|
100
98
|
sharing: "capability-scoped",
|
|
101
99
|
unattendedCompatible: true,
|
|
102
100
|
authoritySchemes: ["openbao"],
|
|
@@ -112,26 +110,18 @@ const SERVICE_PROVIDER_CATALOG = [
|
|
|
112
110
|
description: "Connect a Cloudflare account with separately scoped capability tokens.",
|
|
113
111
|
knowledgePageIds: ["provider.cloudflare"],
|
|
114
112
|
connectionFields: [
|
|
115
|
-
field("deploymentEnvironment", "Deployment environment", "The exact TreeSeed deployment environment. Use staging or production; one connection must never span both."),
|
|
116
113
|
field("accountId", "Account ID", "The non-secret Cloudflare account identifier."),
|
|
117
|
-
field("
|
|
118
|
-
field("stateBucket", "OpenTofu state bucket", "Optional R2 bucket name used only by a state-backend connection.", false),
|
|
119
|
-
field("stateEndpoint", "OpenTofu state endpoint", "Optional HTTPS S3-compatible R2 endpoint used only by a state-backend connection.", false),
|
|
120
|
-
field("stateRegion", "OpenTofu state region", "Optional S3-compatible region; omit to use auto.", false),
|
|
121
|
-
field("stateEncryptionKeyRef", "State encryption key reference", "Optional non-secret team-vault key name used to encrypt this backend state.", false)
|
|
114
|
+
{ ...field("domain", "Domain", "Enter the domain listed in Cloudflare (for example, example.com), without https:// or a path. TreeSeed verifies its zone when you check the DNS account access.", false), requiredForCapabilities: ["dns-management"], placeholder: "example.com", pattern: "(?:[a-zA-Z0-9](?:[a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z](?:[a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?" }
|
|
122
115
|
],
|
|
123
116
|
capabilities: [
|
|
124
117
|
{ type: "frontend-hosting", label: "Frontend hosting", description: "Pages and Workers application hosting.", credentialProfileIds: ["cloudflare-runtime"], status: "available" },
|
|
125
118
|
{ type: "dns-management", label: "DNS management", description: "Scoped DNS record management.", credentialProfileIds: ["cloudflare-dns"], status: "available" },
|
|
126
|
-
{ type: "object-storage", label: "Object storage", description: "R2-backed immutable publication
|
|
127
|
-
{ type: "state-encryption", label: "State encryption", description: "Independent encryption authority for OpenTofu state and plan files.", credentialProfileIds: ["opentofu-state-encryption"], status: "available" }
|
|
119
|
+
{ type: "object-storage", label: "Object storage", description: "R2-backed immutable publication and private artifact storage.", credentialProfileIds: ["cloudflare-storage"], status: "available" }
|
|
128
120
|
],
|
|
129
121
|
credentialProfiles: [
|
|
130
122
|
{ id: "cloudflare-runtime", label: "Pages and Workers token", description: "A token limited to application deployment resources.", capabilities: ["frontend-hosting"], fields: [field("apiToken", "API token", "Stored in core OpenBao and used only by authorized operations.", true, true)], permissions: ["Account: Workers Scripts Edit", "Account: Pages Edit"], sharing: "capability-scoped", unattendedCompatible: true, authoritySchemes: ["openbao"], knowledgePageIds: ["provider.cloudflare", "services.credentials", "vault.rotation"] },
|
|
131
|
-
{ id: "cloudflare-dns", label: "DNS token", description: "A token restricted to
|
|
132
|
-
{ id: "cloudflare-storage", label: "Storage management authority", description: "Vault-custodied token used only to reconcile authorized R2 resources.", capabilities: ["object-storage"], fields: [field("apiToken", "Storage API token", "Encrypted separately and used only to reconcile authorized R2 resources.", true, true)], permissions: ["Account: Workers R2 Storage Edit"], sharing: "capability-scoped", unattendedCompatible: true, authoritySchemes: ["openbao"], knowledgePageIds: ["provider.cloudflare", "services.credentials", "vault.rotation"] }
|
|
133
|
-
{ id: "s3-state-session", label: "OpenTofu state session", description: "S3-compatible credentials limited to the selected team state prefix.", capabilities: ["object-storage"], fields: [field("accessKeyId", "R2 access key ID", "Vault-custodied S3-compatible access key identifier for encrypted OpenTofu state.", true, true), field("secretAccessKey", "R2 secret access key", "Vault-custodied S3-compatible secret key for encrypted OpenTofu state.", true, true), field("sessionToken", "R2 session token", "Optional short-lived S3-compatible session token.", false, true)], permissions: ["Object read and write for only the managed team state prefix"], sharing: "capability-scoped", unattendedCompatible: true, authoritySchemes: ["openbao"], knowledgePageIds: ["provider.cloudflare", "services.credentials", "vault.rotation"] },
|
|
134
|
-
{ id: "opentofu-state-encryption", label: "OpenTofu state encryption", description: "Independent encryption material that is never stored with the R2 state object.", capabilities: ["state-encryption"], fields: [field("stateEncryptionKey", "OpenTofu state encryption key", "A 32-byte hexadecimal key stored separately in core OpenBao.", true, true)], permissions: ["Encrypt and decrypt only the selected team OpenTofu state"], sharing: "capability-scoped", unattendedCompatible: true, authoritySchemes: ["openbao"], knowledgePageIds: ["provider.cloudflare", "services.credentials", "vault.rotation"] }
|
|
123
|
+
{ id: "cloudflare-dns", label: "DNS token", description: "A token restricted to the domain you entered. Zone Read lets TreeSeed find its zone; DNS Edit lets it manage records.", capabilities: ["dns-management"], fields: [field("apiToken", "DNS API token", "Encrypted separately from deployment authority.", true, true)], permissions: ["Zone: Zone Read for the managed domain", "Zone: DNS Edit for the managed domain"], sharing: "capability-scoped", unattendedCompatible: true, authoritySchemes: ["openbao"], knowledgePageIds: ["provider.cloudflare", "services.credentials", "vault.rotation"] },
|
|
124
|
+
{ id: "cloudflare-storage", label: "Storage management authority", description: "Vault-custodied token used only to reconcile authorized R2 resources.", capabilities: ["object-storage"], fields: [field("apiToken", "Storage API token", "Encrypted separately and used only to reconcile authorized R2 resources.", true, true)], permissions: ["Account: Workers R2 Storage Edit"], sharing: "capability-scoped", unattendedCompatible: true, authoritySchemes: ["openbao"], knowledgePageIds: ["provider.cloudflare", "services.credentials", "vault.rotation"] }
|
|
135
125
|
]
|
|
136
126
|
},
|
|
137
127
|
{
|
|
@@ -150,14 +140,13 @@ const SERVICE_PROVIDER_CATALOG = [
|
|
|
150
140
|
capabilities: [
|
|
151
141
|
{ type: "backend-hosting", label: "Backend hosting", description: "API and backend service hosting.", credentialProfileIds: ["railway-workspace"], status: "available" },
|
|
152
142
|
{ type: "database-hosting", label: "Database hosting", description: "Managed database placement.", credentialProfileIds: ["railway-workspace"], status: "available" },
|
|
153
|
-
{ type: "capacity-runtime-hosting", label: "Capacity runtime hosting", description: "Future capacity provider placement.", credentialProfileIds: ["railway-workspace"], status: "planned" },
|
|
154
143
|
{ type: "private-knowledge-index-hosting", label: "Private knowledge hosting", description: "Private TreeDX knowledge-plane placement.", credentialProfileIds: ["railway-workspace"], status: "available" }
|
|
155
144
|
],
|
|
156
145
|
credentialProfiles: [{
|
|
157
146
|
id: "railway-workspace",
|
|
158
147
|
label: "Railway workspace token",
|
|
159
148
|
description: "Railway currently exposes broad workspace authority. Sharing it increases the blast radius across enabled capabilities.",
|
|
160
|
-
capabilities: ["backend-hosting", "database-hosting", "
|
|
149
|
+
capabilities: ["backend-hosting", "database-hosting", "private-knowledge-index-hosting"],
|
|
161
150
|
fields: [field("apiToken", "Workspace token", "Stored in core OpenBao and used only by authorized operations.", true, true)],
|
|
162
151
|
permissions: ["Workspace access required by the selected operations"],
|
|
163
152
|
sharing: "provider-shared",
|
|
@@ -165,6 +154,31 @@ const SERVICE_PROVIDER_CATALOG = [
|
|
|
165
154
|
authoritySchemes: ["openbao"],
|
|
166
155
|
knowledgePageIds: ["provider.railway", "services.credentials", "vault.rotation"]
|
|
167
156
|
}]
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
id: "hyperstack",
|
|
160
|
+
label: "Hyperstack",
|
|
161
|
+
logoKey: "hyperstack",
|
|
162
|
+
documentationUrl: "https://docs.hyperstack.cloud/docs/api-reference/quickstart/",
|
|
163
|
+
description: "Host TreeAI inference and training on rented GPUs. This is AI hosting, not capacity-provider hosting.",
|
|
164
|
+
knowledgePageIds: ["provider.hyperstack"],
|
|
165
|
+
connectionFields: [],
|
|
166
|
+
capabilities: [
|
|
167
|
+
{ type: "ai-inference-hosting", label: "Provide AI service", description: "Host the TreeAI vLLM inference engine on a rented GPU.", credentialProfileIds: ["hyperstack-runtime"], status: "available" },
|
|
168
|
+
{ type: "ai-training-hosting", label: "Run training", description: "Host the TreeAI Axolotl training engine, independently or alongside inference with managed GPU admission.", credentialProfileIds: ["hyperstack-runtime"], status: "available" }
|
|
169
|
+
],
|
|
170
|
+
credentialProfiles: [{
|
|
171
|
+
id: "hyperstack-runtime",
|
|
172
|
+
label: "Hyperstack API key",
|
|
173
|
+
description: "Authorize GPU hosting. Saving this key does not rent a machine. Deployments select hardware, schedules and storage separately.",
|
|
174
|
+
capabilities: ["ai-inference-hosting", "ai-training-hosting"],
|
|
175
|
+
fields: [field("apiToken", "API key", "Stored in your team vault and used only for authorized hosting operations.", true, true)],
|
|
176
|
+
permissions: ["Read environments for account verification", "Manage virtual machines and attached resources for deployment"],
|
|
177
|
+
sharing: "provider-shared",
|
|
178
|
+
unattendedCompatible: true,
|
|
179
|
+
authoritySchemes: ["openbao"],
|
|
180
|
+
knowledgePageIds: ["provider.hyperstack", "services.credentials", "vault.rotation"]
|
|
181
|
+
}]
|
|
168
182
|
}
|
|
169
183
|
];
|
|
170
184
|
function getServiceProviderDefinition(providerId) {
|