@treeseed/sdk 0.13.0-rc.64 → 0.13.0-rc.65

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.
@@ -214,8 +214,8 @@ export declare function validatePortableContentData(model: string, value: unknow
214
214
  value?: unknown;
215
215
  }>>>;
216
216
  }, "strict", import("zod").ZodTypeAny, {
217
- capabilityId: string;
218
217
  requirement: "required" | "preferred";
218
+ capabilityId: string;
219
219
  versionRange: string;
220
220
  configuration?: Record<string, {
221
221
  requirement: "required" | "preferred";
@@ -224,8 +224,8 @@ export declare function validatePortableContentData(model: string, value: unknow
224
224
  alternativeGroup?: string | null | undefined;
225
225
  requiredFeatures?: string[] | undefined;
226
226
  }, {
227
- capabilityId: string;
228
227
  requirement: "required" | "preferred";
228
+ capabilityId: string;
229
229
  versionRange: string;
230
230
  configuration?: Record<string, {
231
231
  requirement: "required" | "preferred";
@@ -902,8 +902,8 @@ export declare function validatePortableContentData(model: string, value: unknow
902
902
  revision: number;
903
903
  }[] | undefined;
904
904
  capabilityRequirements?: {
905
- capabilityId: string;
906
905
  requirement: "required" | "preferred";
906
+ capabilityId: string;
907
907
  versionRange: string;
908
908
  configuration?: Record<string, {
909
909
  requirement: "required" | "preferred";
@@ -1074,8 +1074,8 @@ export declare function validatePortableContentData(model: string, value: unknow
1074
1074
  revision: number;
1075
1075
  }[] | undefined;
1076
1076
  capabilityRequirements?: {
1077
- capabilityId: string;
1078
1077
  requirement: "required" | "preferred";
1078
+ capabilityId: string;
1079
1079
  versionRange: string;
1080
1080
  configuration?: Record<string, {
1081
1081
  requirement: "required" | "preferred";
@@ -1246,8 +1246,8 @@ export declare function validatePortableContentData(model: string, value: unknow
1246
1246
  revision: number;
1247
1247
  }[] | undefined;
1248
1248
  capabilityRequirements?: {
1249
- capabilityId: string;
1250
1249
  requirement: "required" | "preferred";
1250
+ capabilityId: string;
1251
1251
  versionRange: string;
1252
1252
  configuration?: Record<string, {
1253
1253
  requirement: "required" | "preferred";
@@ -1418,8 +1418,8 @@ export declare function validatePortableContentData(model: string, value: unknow
1418
1418
  revision: number;
1419
1419
  }[] | undefined;
1420
1420
  capabilityRequirements?: {
1421
- capabilityId: string;
1422
1421
  requirement: "required" | "preferred";
1422
+ capabilityId: string;
1423
1423
  versionRange: string;
1424
1424
  configuration?: Record<string, {
1425
1425
  requirement: "required" | "preferred";
@@ -3961,6 +3961,117 @@ export declare const componentReleaseSchema: z.ZodEffects<z.ZodObject<{
3961
3961
  vulnerabilities: string[];
3962
3962
  };
3963
3963
  }>;
3964
+ export declare const hostInitializationProfileSchema: z.ZodEffects<z.ZodObject<{
3965
+ schemaVersion: z.ZodLiteral<"treeseed.host-initialization-profile/v1">;
3966
+ id: z.ZodString;
3967
+ role: z.ZodUnion<[z.ZodEnum<["integrated", "capacity-provider", "control-plane", "knowledge", "ai-gpu", "edge"]>, z.ZodString]>;
3968
+ runtime: z.ZodObject<{
3969
+ management: z.ZodLiteral<"managed">;
3970
+ environment: z.ZodEnum<["track-default", "production", "development"]>;
3971
+ }, "strict", z.ZodTypeAny, {
3972
+ environment: "development" | "production" | "track-default";
3973
+ management: "managed";
3974
+ }, {
3975
+ environment: "development" | "production" | "track-default";
3976
+ management: "managed";
3977
+ }>;
3978
+ components: z.ZodArray<z.ZodString, "many">;
3979
+ security: z.ZodObject<{
3980
+ requirement: z.ZodEnum<["required", "optional", "none"]>;
3981
+ }, "strict", z.ZodTypeAny, {
3982
+ requirement: "required" | "none" | "optional";
3983
+ }, {
3984
+ requirement: "required" | "none" | "optional";
3985
+ }>;
3986
+ inputs: z.ZodDefault<z.ZodArray<z.ZodObject<{
3987
+ name: z.ZodString;
3988
+ required: z.ZodBoolean;
3989
+ sensitive: z.ZodBoolean;
3990
+ description: z.ZodString;
3991
+ }, "strict", z.ZodTypeAny, {
3992
+ name: string;
3993
+ required: boolean;
3994
+ sensitive: boolean;
3995
+ description: string;
3996
+ }, {
3997
+ name: string;
3998
+ required: boolean;
3999
+ sensitive: boolean;
4000
+ description: string;
4001
+ }>, "many">>;
4002
+ }, "strict", z.ZodTypeAny, {
4003
+ role: string;
4004
+ schemaVersion: "treeseed.host-initialization-profile/v1";
4005
+ id: string;
4006
+ runtime: {
4007
+ environment: "development" | "production" | "track-default";
4008
+ management: "managed";
4009
+ };
4010
+ components: string[];
4011
+ inputs: {
4012
+ name: string;
4013
+ required: boolean;
4014
+ sensitive: boolean;
4015
+ description: string;
4016
+ }[];
4017
+ security: {
4018
+ requirement: "required" | "none" | "optional";
4019
+ };
4020
+ }, {
4021
+ role: string;
4022
+ schemaVersion: "treeseed.host-initialization-profile/v1";
4023
+ id: string;
4024
+ runtime: {
4025
+ environment: "development" | "production" | "track-default";
4026
+ management: "managed";
4027
+ };
4028
+ components: string[];
4029
+ security: {
4030
+ requirement: "required" | "none" | "optional";
4031
+ };
4032
+ inputs?: {
4033
+ name: string;
4034
+ required: boolean;
4035
+ sensitive: boolean;
4036
+ description: string;
4037
+ }[] | undefined;
4038
+ }>, {
4039
+ role: string;
4040
+ schemaVersion: "treeseed.host-initialization-profile/v1";
4041
+ id: string;
4042
+ runtime: {
4043
+ environment: "development" | "production" | "track-default";
4044
+ management: "managed";
4045
+ };
4046
+ components: string[];
4047
+ inputs: {
4048
+ name: string;
4049
+ required: boolean;
4050
+ sensitive: boolean;
4051
+ description: string;
4052
+ }[];
4053
+ security: {
4054
+ requirement: "required" | "none" | "optional";
4055
+ };
4056
+ }, {
4057
+ role: string;
4058
+ schemaVersion: "treeseed.host-initialization-profile/v1";
4059
+ id: string;
4060
+ runtime: {
4061
+ environment: "development" | "production" | "track-default";
4062
+ management: "managed";
4063
+ };
4064
+ components: string[];
4065
+ security: {
4066
+ requirement: "required" | "none" | "optional";
4067
+ };
4068
+ inputs?: {
4069
+ name: string;
4070
+ required: boolean;
4071
+ sensitive: boolean;
4072
+ description: string;
4073
+ }[] | undefined;
4074
+ }>;
3964
4075
  export declare const integrationReleaseSchema: z.ZodEffects<z.ZodObject<{
3965
4076
  schemaVersion: z.ZodLiteral<"treeseed.integration-release/v1">;
3966
4077
  release: z.ZodString;
@@ -4021,6 +4132,31 @@ export declare const integrationReleaseSchema: z.ZodEffects<z.ZodObject<{
4021
4132
  };
4022
4133
  packageName: string;
4023
4134
  }>, "many">;
4135
+ hostProfiles: z.ZodDefault<z.ZodArray<z.ZodObject<{
4136
+ id: z.ZodString;
4137
+ artifact: z.ZodObject<{
4138
+ url: z.ZodString;
4139
+ sha256: z.ZodString;
4140
+ }, "strict", z.ZodTypeAny, {
4141
+ sha256: string;
4142
+ url: string;
4143
+ }, {
4144
+ sha256: string;
4145
+ url: string;
4146
+ }>;
4147
+ }, "strict", z.ZodTypeAny, {
4148
+ id: string;
4149
+ artifact: {
4150
+ sha256: string;
4151
+ url: string;
4152
+ };
4153
+ }, {
4154
+ id: string;
4155
+ artifact: {
4156
+ sha256: string;
4157
+ url: string;
4158
+ };
4159
+ }>, "many">>;
4024
4160
  components: z.ZodArray<z.ZodObject<{
4025
4161
  componentId: z.ZodString;
4026
4162
  release: z.ZodString;
@@ -4129,6 +4265,13 @@ export declare const integrationReleaseSchema: z.ZodEffects<z.ZodObject<{
4129
4265
  };
4130
4266
  packageName: string;
4131
4267
  }[];
4268
+ hostProfiles: {
4269
+ id: string;
4270
+ artifact: {
4271
+ sha256: string;
4272
+ url: string;
4273
+ };
4274
+ }[];
4132
4275
  }, {
4133
4276
  schemaVersion: "treeseed.integration-release/v1";
4134
4277
  release: string;
@@ -4169,6 +4312,13 @@ export declare const integrationReleaseSchema: z.ZodEffects<z.ZodObject<{
4169
4312
  };
4170
4313
  packageName: string;
4171
4314
  }[];
4315
+ hostProfiles?: {
4316
+ id: string;
4317
+ artifact: {
4318
+ sha256: string;
4319
+ url: string;
4320
+ };
4321
+ }[] | undefined;
4172
4322
  }>, {
4173
4323
  schemaVersion: "treeseed.integration-release/v1";
4174
4324
  release: string;
@@ -4209,6 +4359,13 @@ export declare const integrationReleaseSchema: z.ZodEffects<z.ZodObject<{
4209
4359
  };
4210
4360
  packageName: string;
4211
4361
  }[];
4362
+ hostProfiles: {
4363
+ id: string;
4364
+ artifact: {
4365
+ sha256: string;
4366
+ url: string;
4367
+ };
4368
+ }[];
4212
4369
  }, {
4213
4370
  schemaVersion: "treeseed.integration-release/v1";
4214
4371
  release: string;
@@ -4249,6 +4406,13 @@ export declare const integrationReleaseSchema: z.ZodEffects<z.ZodObject<{
4249
4406
  };
4250
4407
  packageName: string;
4251
4408
  }[];
4409
+ hostProfiles?: {
4410
+ id: string;
4411
+ artifact: {
4412
+ sha256: string;
4413
+ url: string;
4414
+ };
4415
+ }[] | undefined;
4252
4416
  }>;
4253
4417
  export declare const releaseCatalogSchema: z.ZodEffects<z.ZodObject<{
4254
4418
  schemaVersion: z.ZodLiteral<"treeseed.release-catalog/v1">;
@@ -5649,6 +5813,117 @@ export declare const releaseCatalogSchema: z.ZodEffects<z.ZodObject<{
5649
5813
  vulnerabilities: string[];
5650
5814
  };
5651
5815
  }>, "many">;
5816
+ hostProfiles: z.ZodDefault<z.ZodArray<z.ZodEffects<z.ZodObject<{
5817
+ schemaVersion: z.ZodLiteral<"treeseed.host-initialization-profile/v1">;
5818
+ id: z.ZodString;
5819
+ role: z.ZodUnion<[z.ZodEnum<["integrated", "capacity-provider", "control-plane", "knowledge", "ai-gpu", "edge"]>, z.ZodString]>;
5820
+ runtime: z.ZodObject<{
5821
+ management: z.ZodLiteral<"managed">;
5822
+ environment: z.ZodEnum<["track-default", "production", "development"]>;
5823
+ }, "strict", z.ZodTypeAny, {
5824
+ environment: "development" | "production" | "track-default";
5825
+ management: "managed";
5826
+ }, {
5827
+ environment: "development" | "production" | "track-default";
5828
+ management: "managed";
5829
+ }>;
5830
+ components: z.ZodArray<z.ZodString, "many">;
5831
+ security: z.ZodObject<{
5832
+ requirement: z.ZodEnum<["required", "optional", "none"]>;
5833
+ }, "strict", z.ZodTypeAny, {
5834
+ requirement: "required" | "none" | "optional";
5835
+ }, {
5836
+ requirement: "required" | "none" | "optional";
5837
+ }>;
5838
+ inputs: z.ZodDefault<z.ZodArray<z.ZodObject<{
5839
+ name: z.ZodString;
5840
+ required: z.ZodBoolean;
5841
+ sensitive: z.ZodBoolean;
5842
+ description: z.ZodString;
5843
+ }, "strict", z.ZodTypeAny, {
5844
+ name: string;
5845
+ required: boolean;
5846
+ sensitive: boolean;
5847
+ description: string;
5848
+ }, {
5849
+ name: string;
5850
+ required: boolean;
5851
+ sensitive: boolean;
5852
+ description: string;
5853
+ }>, "many">>;
5854
+ }, "strict", z.ZodTypeAny, {
5855
+ role: string;
5856
+ schemaVersion: "treeseed.host-initialization-profile/v1";
5857
+ id: string;
5858
+ runtime: {
5859
+ environment: "development" | "production" | "track-default";
5860
+ management: "managed";
5861
+ };
5862
+ components: string[];
5863
+ inputs: {
5864
+ name: string;
5865
+ required: boolean;
5866
+ sensitive: boolean;
5867
+ description: string;
5868
+ }[];
5869
+ security: {
5870
+ requirement: "required" | "none" | "optional";
5871
+ };
5872
+ }, {
5873
+ role: string;
5874
+ schemaVersion: "treeseed.host-initialization-profile/v1";
5875
+ id: string;
5876
+ runtime: {
5877
+ environment: "development" | "production" | "track-default";
5878
+ management: "managed";
5879
+ };
5880
+ components: string[];
5881
+ security: {
5882
+ requirement: "required" | "none" | "optional";
5883
+ };
5884
+ inputs?: {
5885
+ name: string;
5886
+ required: boolean;
5887
+ sensitive: boolean;
5888
+ description: string;
5889
+ }[] | undefined;
5890
+ }>, {
5891
+ role: string;
5892
+ schemaVersion: "treeseed.host-initialization-profile/v1";
5893
+ id: string;
5894
+ runtime: {
5895
+ environment: "development" | "production" | "track-default";
5896
+ management: "managed";
5897
+ };
5898
+ components: string[];
5899
+ inputs: {
5900
+ name: string;
5901
+ required: boolean;
5902
+ sensitive: boolean;
5903
+ description: string;
5904
+ }[];
5905
+ security: {
5906
+ requirement: "required" | "none" | "optional";
5907
+ };
5908
+ }, {
5909
+ role: string;
5910
+ schemaVersion: "treeseed.host-initialization-profile/v1";
5911
+ id: string;
5912
+ runtime: {
5913
+ environment: "development" | "production" | "track-default";
5914
+ management: "managed";
5915
+ };
5916
+ components: string[];
5917
+ security: {
5918
+ requirement: "required" | "none" | "optional";
5919
+ };
5920
+ inputs?: {
5921
+ name: string;
5922
+ required: boolean;
5923
+ sensitive: boolean;
5924
+ description: string;
5925
+ }[] | undefined;
5926
+ }>, "many">>;
5652
5927
  createdAt: z.ZodString;
5653
5928
  }, "strict", z.ZodTypeAny, {
5654
5929
  schemaVersion: "treeseed.release-catalog/v1";
@@ -5792,6 +6067,25 @@ export declare const releaseCatalogSchema: z.ZodEffects<z.ZodObject<{
5792
6067
  release: string;
5793
6068
  catalogDigest: string;
5794
6069
  } | null;
6070
+ hostProfiles: {
6071
+ role: string;
6072
+ schemaVersion: "treeseed.host-initialization-profile/v1";
6073
+ id: string;
6074
+ runtime: {
6075
+ environment: "development" | "production" | "track-default";
6076
+ management: "managed";
6077
+ };
6078
+ components: string[];
6079
+ inputs: {
6080
+ name: string;
6081
+ required: boolean;
6082
+ sensitive: boolean;
6083
+ description: string;
6084
+ }[];
6085
+ security: {
6086
+ requirement: "required" | "none" | "optional";
6087
+ };
6088
+ }[];
5795
6089
  }, {
5796
6090
  schemaVersion: "treeseed.release-catalog/v1";
5797
6091
  release: string;
@@ -5934,6 +6228,25 @@ export declare const releaseCatalogSchema: z.ZodEffects<z.ZodObject<{
5934
6228
  release: string;
5935
6229
  catalogDigest: string;
5936
6230
  } | null;
6231
+ hostProfiles?: {
6232
+ role: string;
6233
+ schemaVersion: "treeseed.host-initialization-profile/v1";
6234
+ id: string;
6235
+ runtime: {
6236
+ environment: "development" | "production" | "track-default";
6237
+ management: "managed";
6238
+ };
6239
+ components: string[];
6240
+ security: {
6241
+ requirement: "required" | "none" | "optional";
6242
+ };
6243
+ inputs?: {
6244
+ name: string;
6245
+ required: boolean;
6246
+ sensitive: boolean;
6247
+ description: string;
6248
+ }[] | undefined;
6249
+ }[] | undefined;
5937
6250
  }>, {
5938
6251
  schemaVersion: "treeseed.release-catalog/v1";
5939
6252
  release: string;
@@ -6076,6 +6389,25 @@ export declare const releaseCatalogSchema: z.ZodEffects<z.ZodObject<{
6076
6389
  release: string;
6077
6390
  catalogDigest: string;
6078
6391
  } | null;
6392
+ hostProfiles: {
6393
+ role: string;
6394
+ schemaVersion: "treeseed.host-initialization-profile/v1";
6395
+ id: string;
6396
+ runtime: {
6397
+ environment: "development" | "production" | "track-default";
6398
+ management: "managed";
6399
+ };
6400
+ components: string[];
6401
+ inputs: {
6402
+ name: string;
6403
+ required: boolean;
6404
+ sensitive: boolean;
6405
+ description: string;
6406
+ }[];
6407
+ security: {
6408
+ requirement: "required" | "none" | "optional";
6409
+ };
6410
+ }[];
6079
6411
  }, {
6080
6412
  schemaVersion: "treeseed.release-catalog/v1";
6081
6413
  release: string;
@@ -6218,6 +6550,25 @@ export declare const releaseCatalogSchema: z.ZodEffects<z.ZodObject<{
6218
6550
  release: string;
6219
6551
  catalogDigest: string;
6220
6552
  } | null;
6553
+ hostProfiles?: {
6554
+ role: string;
6555
+ schemaVersion: "treeseed.host-initialization-profile/v1";
6556
+ id: string;
6557
+ runtime: {
6558
+ environment: "development" | "production" | "track-default";
6559
+ management: "managed";
6560
+ };
6561
+ components: string[];
6562
+ security: {
6563
+ requirement: "required" | "none" | "optional";
6564
+ };
6565
+ inputs?: {
6566
+ name: string;
6567
+ required: boolean;
6568
+ sensitive: boolean;
6569
+ description: string;
6570
+ }[] | undefined;
6571
+ }[] | undefined;
6221
6572
  }>;
6222
6573
  export declare const hostPlanSchema: z.ZodObject<{
6223
6574
  schemaVersion: z.ZodLiteral<"treeseed.host-plan/v1">;
@@ -6712,6 +7063,7 @@ export type PackageEndpoint = z.infer<typeof packageEndpointSchema>;
6712
7063
  export type ComponentRelease = z.infer<typeof componentReleaseSchema>;
6713
7064
  export type ReleaseCatalog = z.infer<typeof releaseCatalogSchema>;
6714
7065
  export type IntegrationRelease = z.infer<typeof integrationReleaseSchema>;
7066
+ export type HostInitializationProfile = z.infer<typeof hostInitializationProfileSchema>;
6715
7067
  export type HostPlan = z.infer<typeof hostPlanSchema>;
6716
7068
  export type HostBootstrap = z.infer<typeof hostBootstrapSchema>;
6717
7069
  export type HostUpdate = z.infer<typeof hostUpdateSchema>;
@@ -257,6 +257,25 @@ const componentReleaseSchema = z.object({
257
257
  if (release.track === "stable" && release.stableBase) context.addIssue({ code: z.ZodIssueCode.custom, path: ["stableBase"], message: "Stable releases cannot be overlays." });
258
258
  });
259
259
  const lockedArtifactSchema = z.object({ url: z.string().url(), sha256: z.string().regex(/^[a-f0-9]{64}$/u) }).strict();
260
+ const initializationInputName = z.string().regex(/^[a-z][A-Za-z0-9]{1,63}$/u);
261
+ const hostInitializationProfileSchema = z.object({
262
+ schemaVersion: z.literal("treeseed.host-initialization-profile/v1"),
263
+ id: identifier,
264
+ role: hostRoleSchema,
265
+ runtime: z.object({ management: z.literal("managed"), environment: z.enum(["track-default", "production", "development"]) }).strict(),
266
+ components: z.array(identifier).min(1),
267
+ security: z.object({ requirement: z.enum(["required", "optional", "none"]) }).strict(),
268
+ inputs: z.array(z.object({
269
+ name: initializationInputName,
270
+ required: z.boolean(),
271
+ sensitive: z.boolean(),
272
+ description: z.string().min(1).max(512)
273
+ }).strict()).default([])
274
+ }).strict().superRefine((profile, context) => {
275
+ for (const [path, values] of [["components", profile.components], ["inputs", profile.inputs.map(({ name }) => name)]]) {
276
+ if (new Set(values).size !== values.length) context.addIssue({ code: z.ZodIssueCode.custom, path: [path], message: `Host initialization profile ${path} must be unique.` });
277
+ }
278
+ });
260
279
  const integrationReleaseSchema = z.object({
261
280
  schemaVersion: z.literal("treeseed.integration-release/v1"),
262
281
  release: packageVersion,
@@ -266,6 +285,7 @@ const integrationReleaseSchema = z.object({
266
285
  platform: z.object({ repository: z.literal("treeseed-ai/platform"), commit: gitCommit }).strict(),
267
286
  deployment: z.object({ repository: z.literal("treeseed-ai/deployment"), commit: gitCommit, tag: z.string().min(1) }).strict(),
268
287
  hostPayloads: z.array(z.object({ id: identifier, packageName: z.string().min(1), version: packageVersion, artifact: lockedArtifactSchema }).strict()),
288
+ hostProfiles: z.array(z.object({ id: identifier, artifact: lockedArtifactSchema }).strict()).default([]),
269
289
  components: z.array(z.object({
270
290
  componentId: identifier,
271
291
  release: packageVersion,
@@ -276,6 +296,8 @@ const integrationReleaseSchema = z.object({
276
296
  }).strict().superRefine((release, context) => {
277
297
  const components = release.components.map((component) => component.componentId);
278
298
  if (new Set(components).size !== components.length) context.addIssue({ code: z.ZodIssueCode.custom, path: ["components"], message: "Integration releases cannot select a component more than once." });
299
+ const profiles = release.hostProfiles.map((profile) => profile.id);
300
+ if (new Set(profiles).size !== profiles.length) context.addIssue({ code: z.ZodIssueCode.custom, path: ["hostProfiles"], message: "Integration releases cannot select a host profile more than once." });
279
301
  });
280
302
  const releaseCatalogSchema = z.object({
281
303
  schemaVersion: z.literal("treeseed.release-catalog/v1"),
@@ -286,6 +308,7 @@ const releaseCatalogSchema = z.object({
286
308
  catalogDigest: digest,
287
309
  stableBase: z.object({ release: packageVersion, catalogDigest: digest }).strict().nullable(),
288
310
  components: z.array(componentReleaseSchema),
311
+ hostProfiles: z.array(hostInitializationProfileSchema).default([]),
289
312
  createdAt: z.string().datetime()
290
313
  }).strict().superRefine((catalog, context) => {
291
314
  if (catalog.track === "development" && !catalog.stableBase) context.addIssue({ code: z.ZodIssueCode.custom, path: ["stableBase"], message: "Development catalogs require an exact stable base." });
@@ -293,6 +316,12 @@ const releaseCatalogSchema = z.object({
293
316
  if (catalog.track === "development" && catalog.stableBase) for (const [index, component] of catalog.components.entries()) {
294
317
  if (component.track !== "development" || component.stableBase?.catalogDigest !== catalog.stableBase.catalogDigest) context.addIssue({ code: z.ZodIssueCode.custom, path: ["components", index, "stableBase", "catalogDigest"], message: "Catalog ingestion must bind every development component to the exact selected stable base." });
295
318
  }
319
+ const profileIds = catalog.hostProfiles.map((profile) => profile.id);
320
+ if (new Set(profileIds).size !== profileIds.length) context.addIssue({ code: z.ZodIssueCode.custom, path: ["hostProfiles"], message: "Release catalogs cannot contain duplicate host profiles." });
321
+ const components = new Set(catalog.components.map((component) => component.componentId));
322
+ for (const [profileIndex, profile] of catalog.hostProfiles.entries()) for (const [componentIndex, componentId] of profile.components.entries()) {
323
+ if (!components.has(componentId)) context.addIssue({ code: z.ZodIssueCode.custom, path: ["hostProfiles", profileIndex, "components", componentIndex], message: `Host profile ${profile.id} selects unavailable component ${componentId}.` });
324
+ }
296
325
  });
297
326
  const hostPlanSchema = z.object({ schemaVersion: z.literal("treeseed.host-plan/v1"), planId: identifier, configurationDigest: digest, catalogDigest: digest, changes: z.array(z.object({ componentId: identifier, action: z.enum(["install", "upgrade", "reconfigure", "remove", "noop"]), from: packageVersion.nullable(), to: packageVersion.nullable() }).strict()), blockers: z.array(z.object({ code: identifier, message: z.string().min(1) }).strict()) }).strict();
298
327
  const hostBootstrapSchema = z.object({
@@ -368,6 +397,7 @@ export {
368
397
  hostConfigurationSchema,
369
398
  hostConnectionBindingSchema,
370
399
  hostCredentialInitializerSchema,
400
+ hostInitializationProfileSchema,
371
401
  hostMigrationSchema,
372
402
  hostPlanSchema,
373
403
  hostReceiptSchema,
@@ -80,6 +80,7 @@ const operationBindings = {
80
80
  "host bootstrap enroll": local("local.host.bootstrap.enroll"),
81
81
  "host reset": local("local.host.reset"),
82
82
  "host uninstall": local("local.host.uninstall"),
83
+ "host initialize": local("local.host.initialize"),
83
84
  "dev session start": local("local.dev.session.start"),
84
85
  "dev session stop": local("local.dev.session.stop"),
85
86
  "dev use": local("local.dev.use"),
@@ -217,6 +218,19 @@ function hostUninstall() {
217
218
  value.resultSchemaId = "treeseed.host-uninstall-result/v1";
218
219
  return value;
219
220
  }
221
+ function hostInitialize() {
222
+ const value = leaf("initialize", "mutation", void 0, "authority");
223
+ if (value.nodeType !== "leaf") throw new Error("Host initialize must be a leaf command.");
224
+ value.description = "Initialize the generic host foundation from an immutable catalog-bound profile.";
225
+ value.options = [
226
+ ...value.options ?? [],
227
+ { name: "--profile", description: "Catalog-bound host initialization profile.", type: "string", required: true },
228
+ { name: "--confirm", description: "Confirm installation of the reviewed profile plan.", type: "boolean" },
229
+ { name: "--yes", description: "Confirm non-interactive execution after reviewing the plan.", type: "boolean" }
230
+ ];
231
+ value.resultSchemaId = "treeseed.host-initialization-result/v1";
232
+ return value;
233
+ }
220
234
  function hostSecurityInitialize() {
221
235
  const value = leaf("initialize", "mutation", void 0, "credential");
222
236
  if (value.nodeType !== "leaf") throw new Error("Host security initialization must be a leaf command.");
@@ -369,6 +383,7 @@ const commandTree = {
369
383
  developmentCommand("verify", "mutation", void 0, [{ name: "--session", description: "Development session identity.", type: "string" }, { name: "--candidate", description: "Candidate identity.", type: "string" }])
370
384
  ]),
371
385
  branch("host", [
386
+ hostInitialize(),
372
387
  leaf("status"),
373
388
  leaf("doctor"),
374
389
  leaf("plan"),
@@ -14,6 +14,7 @@ export declare function communicationOperations(): {
14
14
  projectId: string;
15
15
  invocationId: string | null;
16
16
  completedAt: string | null;
17
+ requirement: "required" | "optional";
17
18
  agentSlug: string;
18
19
  capacity: {
19
20
  status: string | null;
@@ -57,7 +58,6 @@ export declare function communicationOperations(): {
57
58
  agentDefinition: string;
58
59
  chatProfile: string;
59
60
  };
60
- requirement: "required" | "optional";
61
61
  parentInvocationId: string | null;
62
62
  depth: number;
63
63
  requestedAt: string;
@@ -78,9 +78,9 @@ export declare function communicationOperations(): {
78
78
  createdAt: string;
79
79
  assignmentId: string | null;
80
80
  invocationId: string;
81
+ requirement: "required" | "optional";
81
82
  agentSlug: string;
82
83
  projectSlug: string;
83
- requirement: "required" | "optional";
84
84
  messageRef: string;
85
85
  markdown: string;
86
86
  }[];
@@ -131,6 +131,7 @@ export declare function communicationOperations(): {
131
131
  projectId: string;
132
132
  invocationId: string | null;
133
133
  completedAt: string | null;
134
+ requirement: "required" | "optional";
134
135
  agentSlug: string;
135
136
  capacity: {
136
137
  status: string | null;
@@ -174,7 +175,6 @@ export declare function communicationOperations(): {
174
175
  agentDefinition: string;
175
176
  chatProfile: string;
176
177
  };
177
- requirement: "required" | "optional";
178
178
  parentInvocationId: string | null;
179
179
  depth: number;
180
180
  requestedAt: string;
@@ -195,9 +195,9 @@ export declare function communicationOperations(): {
195
195
  createdAt: string;
196
196
  assignmentId: string | null;
197
197
  invocationId: string;
198
+ requirement: "required" | "optional";
198
199
  agentSlug: string;
199
200
  projectSlug: string;
200
- requirement: "required" | "optional";
201
201
  messageRef: string;
202
202
  markdown: string;
203
203
  }[];