@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.
Files changed (52) hide show
  1. package/dist/.treeseed-build-complete.json +1 -1
  2. package/dist/agent-capacity/contracts/capacity/assignments/assignment-context-pack.d.ts +6 -6
  3. package/dist/agent-capacity/validation/agent-definition-schema.d.ts +144 -144
  4. package/dist/capacity-provider/environment-catalog.d.ts +12 -12
  5. package/dist/capacity-provider/index.d.ts +1 -0
  6. package/dist/capacity-provider/index.js +1 -0
  7. package/dist/capacity-provider/install-configuration.d.ts +39 -0
  8. package/dist/capacity-provider/install-configuration.js +18 -0
  9. package/dist/configuration/secrets-capability.d.ts +3 -0
  10. package/dist/configuration/secrets-capability.js +3 -0
  11. package/dist/content/validation/agent-operational-content-schemas.d.ts +16 -16
  12. package/dist/content/validation/auxiliary-content-schemas.d.ts +20 -20
  13. package/dist/content/validation/content-model-schemas.d.ts +304 -304
  14. package/dist/content/validation/portable-content-data.d.ts +28 -28
  15. package/dist/deployment/ai-hosting.d.ts +297 -0
  16. package/dist/deployment/ai-hosting.js +63 -0
  17. package/dist/deployment/ai-instance.d.ts +48 -0
  18. package/dist/deployment/ai-instance.js +23 -0
  19. package/dist/deployment/hosted-topology-template.d.ts +24 -24
  20. package/dist/deployment/hosted-topology.d.ts +114 -114
  21. package/dist/deployment/index.d.ts +2 -0
  22. package/dist/deployment/index.js +2 -0
  23. package/dist/deployment/schemas.d.ts +38 -38
  24. package/dist/development/schemas.d.ts +76 -76
  25. package/dist/operator-contracts/canonical-command-tree.js +3 -10
  26. package/dist/operator-contracts/catalog/communication-operations.d.ts +5 -5
  27. package/dist/operator-contracts/catalog/hosted-topology-operations.d.ts +21 -21
  28. package/dist/operator-contracts/catalog/inbox-operations.d.ts +8 -8
  29. package/dist/operator-contracts/catalog/infrastructure/ai-instance-operations.d.ts +29 -0
  30. package/dist/operator-contracts/catalog/infrastructure/ai-instance-operations.js +18 -0
  31. package/dist/operator-contracts/catalog/infrastructure/command-tree-paths.d.ts +3 -0
  32. package/dist/operator-contracts/catalog/infrastructure/command-tree-paths.js +15 -0
  33. package/dist/operator-contracts/communication/contracts.d.ts +34 -34
  34. package/dist/operator-contracts/control-plane-operations.d.ts +63 -34
  35. package/dist/operator-contracts/control-plane-operations.js +3 -17
  36. package/dist/operator-contracts/inbox/contracts.d.ts +30 -30
  37. package/dist/operator-contracts/operation-builder.d.ts +1 -0
  38. package/dist/operator-contracts/operation-builder.js +17 -0
  39. package/dist/platform/schemas.d.ts +220 -40
  40. package/dist/platform/schemas.js +7 -2
  41. package/dist/platform/workset.js +5 -1
  42. package/dist/secrets-capability/github-actions-encryption.js +1 -1
  43. package/dist/secrets-capability/provider-operation-contracts.d.ts +14 -0
  44. package/dist/secrets-capability/service-provider-contracts.d.ts +4 -2
  45. package/dist/secrets-capability/service-provider-contracts.js +41 -27
  46. package/dist/secrets-capability/shared-access.d.ts +51 -0
  47. package/dist/secrets-capability/shared-access.js +36 -0
  48. package/dist/secrets-capability/shared-resources.d.ts +376 -0
  49. package/dist/secrets-capability/shared-resources.js +91 -0
  50. package/dist/secrets-capability/vault-contracts.d.ts +132 -0
  51. package/dist/secrets-capability/vault-contracts.js +56 -0
  52. 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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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
- primaryRepository: z.ZodString;
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;
@@ -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
- primaryRepository: z.string().min(1)
14
- }).passthrough();
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({
@@ -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", "workflow-configuration", "secret-enclave", "frontend-hosting", "backend-hosting", "dns-management", "object-storage", "state-encryption", "database-hosting", "capacity-runtime-hosting", "private-knowledge-index-hosting", "artifact-hosting"];
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: "Workflow execution", description: "Run allowlisted GitHub Actions workflows.", credentialProfileIds: ["github-workflow-app", "github-workflow-token"], status: "available" },
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 dispatch, run observation, and separately enabled secret and variable configuration.",
85
- capabilities: ["workflow-execution", "workflow-configuration", "secret-enclave"],
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", "Secrets: read and write", "Variables: 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 Actions and explicitly enabled secret or variable scopes.",
97
- capabilities: ["workflow-execution", "workflow-configuration", "secret-enclave"],
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", "Secrets: read and write", "Variables: 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("zoneId", "Zone ID", "Optional non-secret zone identifier used by reviewed DNS and TLS topology resources.", false),
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, private artifact storage, and scoped S3 state access.", credentialProfileIds: ["cloudflare-storage", "s3-state-session"], status: "available" },
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 selected zones.", capabilities: ["dns-management"], fields: [field("apiToken", "DNS API token", "Encrypted separately from deployment authority.", true, true)], permissions: ["Zone: DNS Edit for only the managed zones"], sharing: "capability-scoped", unattendedCompatible: true, authoritySchemes: ["openbao"], knowledgePageIds: ["provider.cloudflare", "services.credentials", "vault.rotation"] },
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", "capacity-runtime-hosting", "private-knowledge-index-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) {