@fourier-labs/harbour-contracts 0.63.0 → 0.66.0

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.
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "schema": "harbour.contract-release/1.0",
3
- "repositoryVersion": "0.63.0.0",
4
- "publishVersion": "0.63.0",
5
- "publishTag": "v0.63.0",
6
- "schemasDigest": "sha256:1cfd1fddb8f2620bbf8648784ae1454c44c211b5c4836574fc4d917f3d3a613d",
3
+ "repositoryVersion": "0.66.0.0",
4
+ "publishVersion": "0.66.0",
5
+ "publishTag": "v0.66.0",
6
+ "schemasDigest": "sha256:80c014af364c39472dc57ca097f4994daa0e8d57d094a3e4ca5631985246093e",
7
7
  "aiFixturesDigest": "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6",
8
- "generatedGoDigest": "sha256:47b9abc825fcdfa2794e55cd056703ef262134767cfa7d86792d570b1f3e988b",
9
- "generatedTypeScriptDigest": "sha256:96db6b8ebf81b3677c48f26d10e56fc5948470b68133c087b8326b261a0b2bf0",
8
+ "generatedGoDigest": "sha256:2af05118fbdbb3d3e16a506074f50338d4646288d4ce530a60765028221041b2",
9
+ "generatedTypeScriptDigest": "sha256:39dcf887d9d5b39603eee342a27029feff32e505bb9d8ba79c8607f87d2bca1e",
10
10
  "generatedExclusions": {
11
11
  "gen-go/contract_release.go": "contains the generated aggregate digests (self-reference)",
12
12
  "gen-ts/contract-release.ts": "contains the generated aggregate digests (self-reference)"
@@ -44,6 +44,7 @@
44
44
  "schema/deployment-app-registration.schema.json": "sha256:50bc8e308fca14d014a50d96ef1cf403eeeca5c3caea4a204fe15f0080efed32",
45
45
  "schema/deployment-continuation.schema.json": "sha256:55b6945439f2c91cd851dfe4bc9484e67a64091b7763b2d8267354b4a8bfae8c",
46
46
  "schema/deployment-environment.schema.json": "sha256:35b26cae07da9ee375a842b5e87c4570c8eca06775e9fd6dd46eb9eb8aa0df6c",
47
+ "schema/deployment-preview-retirement.schema.json": "sha256:4f945253c3af015f31d6857ec13661f2239e87f2b9dc76cc0a5109d6d40f2a1a",
47
48
  "schema/deployment-source.schema.json": "sha256:256988b1efbfc90bd0e1ae31a2c5d69b20ef1e4471dc24c9f9aa759278270fbe",
48
49
  "schema/deployment-status-failure.schema.json": "sha256:7cc021d53a07c63b66eb48146d33e8875b64faf77ee927b235795469eb9a1559",
49
50
  "schema/deployment-status-request.schema.json": "sha256:1f9f87adc947a252b53b61f71ae17f8c1b8fbc1166f31301a043d11ac257dc66",
@@ -55,13 +56,13 @@
55
56
  "schema/integration-error-details.schema.json": "sha256:47ad7621c34b092c7e40f912a21e7ccbdc000b974cfb7fa0c9200463e029f8fb",
56
57
  "schema/integration-execute-request.schema.json": "sha256:7a3ebd7a9992a9390d05c9eea6b66762e437655afdca79b64ec992967172c325",
57
58
  "schema/integration-execute-result.schema.json": "sha256:de87c35fb4dfb16f7334cab111f247281fc2300dc27738871ed1f8397ece6753",
58
- "schema/internal-configuration-request.schema.json": "sha256:79bf3b7fa0ffa76d751584bc6b2362ef75855efce210b157ea71b62f4cdd9dc5",
59
+ "schema/internal-configuration-request.schema.json": "sha256:229d44a3458f68dceddfba802e5c1adcd95523a45af29b93b972706b88461a7d",
59
60
  "schema/kit-bundle-manifest.schema.json": "sha256:4a9fcdd52ba0d55718ef4dbdab112b145ef90471d9356d4d3fb41e50fe9e400d",
60
61
  "schema/kit-lock.schema.json": "sha256:a48154d9471e49a893d928f7b0e1e0bc77708a4a7edce4fdf14073203e0e8987",
61
62
  "schema/kvs-routing-entry.schema.json": "sha256:b75f3a5dfa93a428b2764e03222b66b6ef2bed980f8bac8ffac54afdf3526bc5",
62
63
  "schema/promotion-request.schema.json": "sha256:00e96dfd8ddbdba88ea222941d43f3609ff6c815a79e34f6705cab458101c969",
63
64
  "schema/promotion-response.schema.json": "sha256:4129712d2e29d6ef21d93d4bd0bacfd60ada3f2ee0ade852824e64346b817634",
64
- "schema/resolved-app-serving.schema.json": "sha256:efa71abcdab2d183faa3fd349d81560fa74b26c1735102751fcce5ce62e5b7c1",
65
+ "schema/resolved-app-serving.schema.json": "sha256:260e30ca16831ddd96b15f44eadc7daa2a5f87a0025588bd6318b236f349ec6b",
65
66
  "schema/saas-connection.schema.json": "sha256:82ed8018201800a95aa792bde1d22568e86b55b3be926aa094a260c8c78a58d7",
66
67
  "schema/sanitized-binding-evidence.schema.json": "sha256:1191ab88e2764df927e5f17837674cebebe068d480da2b2fdb390e589f96b51f",
67
68
  "schema/secret-reference.schema.json": "sha256:db4e3c2c6a2dbd72d7ea0f9c91cb3b2343a7e67b601996c6818b2ef08e440895",
@@ -111,7 +112,7 @@
111
112
  "gen-go/integration_execute_input_rules.go": "sha256:52a405aa7a97f7b4e2ed3c314a7bd28b7698cc7883ee72ad4c027637be602ab9",
112
113
  "gen-go/integration_execute_input_rules_test.go": "sha256:c437a8406a2f062a0173b9419e4cb176fc6eb54e569506225d5162323f55b40b",
113
114
  "gen-go/schema_documents.go": "sha256:c19c0d540f602ee997a84b90e20702d9bc63ed7d27aec267e76c04655fc182e0",
114
- "gen-go/types.go": "sha256:dc6d4497bdac7ddf8b6cb2d5ff58e1408ecabb8e54c4b31bd8cf1a5abb4ba06f",
115
+ "gen-go/types.go": "sha256:11c13bc1f8f9d953eacd5cff4c5a08ed1b1126b3606a16e0b350af4c5b15dced",
115
116
  "gen-go/version_state.go": "sha256:4ef8abb126414c0025cf2c59bc9c79a74ef4a2ff89e8f316cbf05acc872371c1"
116
117
  },
117
118
  "generatedTypeScript": {
@@ -150,6 +151,7 @@
150
151
  "gen-ts/deployment-app-registration.ts": "sha256:07f840a82dddd770e54e1020a034cdbfc84e226a94131e3f5a4cdd5da8acc2f0",
151
152
  "gen-ts/deployment-continuation.ts": "sha256:cc9f63af4d0da5086a79103789e4f043783b75b4ed11c6512f044439a551a79c",
152
153
  "gen-ts/deployment-environment.ts": "sha256:fc08cabe2e52ebb93cfe84d2019994260f71734c33d0e50e7c63e40ef5b17cef",
154
+ "gen-ts/deployment-preview-retirement.ts": "sha256:0b30339d6f1d14a9d4a14fa4b59c4c476a5d8aa534be71f7d750c677bb9a2d44",
153
155
  "gen-ts/deployment-source.ts": "sha256:8ccb55aaa7260eb6d19a00987d6a20a4b514e343564da13f27cd7fee8013500a",
154
156
  "gen-ts/deployment-status-failure.ts": "sha256:6da2e6eb2f708efa51d416a1ec50f71ea7967cf9be9f93e7ce2e4760dae2cfe3",
155
157
  "gen-ts/deployment-status-request.ts": "sha256:7ddccd07ab9f6d0821903a291ab35f903bb055727e03a058b99165ec048f6483",
@@ -158,19 +160,19 @@
158
160
  "gen-ts/error-category-registry.ts": "sha256:7466a502c0723a77db825cdeaa9556a244201b55d9b7acbf2c098e9e84351df1",
159
161
  "gen-ts/error-category.ts": "sha256:9bda89180c3b740c9aa8be466216592e8ca9d0d368c274333edf6ea5c45afd8e",
160
162
  "gen-ts/error-envelope.ts": "sha256:4457309be794f9d4fc0cf62530cc2d442c007bac9ae84aff66df099cc9e40310",
161
- "gen-ts/index.ts": "sha256:c260e665bada040c8f1cb29dccc48fbdd33d11fd77ae5583450c1d3430ad1ed4",
163
+ "gen-ts/index.ts": "sha256:01441fefa9a5df07a12663f83444cafca89f28e82567aa80566e8fb9de4af4aa",
162
164
  "gen-ts/integration-connect-result.ts": "sha256:4b10f169b6e1af364e9b418de21caa9fadbfb77b43cbff77d741cfae0b52180c",
163
165
  "gen-ts/integration-error-details.ts": "sha256:ad7ecec9dd4533a6e86b3508886a7d69937052f52105497285797f77106bcc6f",
164
166
  "gen-ts/integration-execute-input-rules.ts": "sha256:0da117ac9f3109462e5862d658edf0f50e4b71fdcbb675d3a9dcb08489bcadd0",
165
167
  "gen-ts/integration-execute-request.ts": "sha256:1008bc1c8b8fec41dd7241a9f6ccb31233473e34c5cf538c0125f4ee6f45d2db",
166
168
  "gen-ts/integration-execute-result.ts": "sha256:b7c9270abb0c12888e651aeb1a9927a658faa135ad6197be6dfbd46d942f2a0a",
167
- "gen-ts/internal-configuration-request.ts": "sha256:945ca34f771664423a34c9bfa3b7bf8909373989356f05bfe7f34ce4f5d6e39d",
169
+ "gen-ts/internal-configuration-request.ts": "sha256:7032437797473fa1c581d134adef2f3d4b4f4132f482cd17743e9d47097886bc",
168
170
  "gen-ts/kit-bundle-manifest.ts": "sha256:2777a268aef8787b81e71d154a7d05f6f5ded09d66f378211ff5493ddb885171",
169
171
  "gen-ts/kit-lock.ts": "sha256:00ceeb97e9b7d0187bec00728f5099fd34e775e9cc44c85c4714f7a3a4118ef6",
170
172
  "gen-ts/kvs-routing-entry.ts": "sha256:d92e85ee9f257d77850d1d3aac9438e2055f38084ff84a48fcedae239d47d4ca",
171
173
  "gen-ts/promotion-request.ts": "sha256:9db88cef67f777a16bac628039ec3f582acb9e8cfff6fb592b30d0a0e55abc68",
172
174
  "gen-ts/promotion-response.ts": "sha256:f1c9cafac96faeb02a443a31786f67714e818f38d90108e7af41958396524d6f",
173
- "gen-ts/resolved-app-serving.ts": "sha256:b5b3f09b29780e285d9aa5f27d2957ffdbc819eb9c0f7eba00f5fa4b883466c1",
175
+ "gen-ts/resolved-app-serving.ts": "sha256:6131a6cc5f784f0d101081d2ce1b96b76b2f904b2c5e7b2809f9ede5878ada1f",
174
176
  "gen-ts/saas-connection.ts": "sha256:a4b7a9b37db0cf747ca1c40db5b1459ade2a86cc067146154c3c42484b76e07a",
175
177
  "gen-ts/sanitized-binding-digest-helper.ts": "sha256:c47d7fdc20500e2e72c23fe39ecdd610fc397c47fcba51335ebec3c380fe6872",
176
178
  "gen-ts/sanitized-binding-evidence.ts": "sha256:f3fb7b1d7d2e0929eb0ea981eaf32db3104010647185f6ae59f67167d42538a9",
@@ -1,7 +1,7 @@
1
- export declare const ContractRepositoryVersion: "0.63.0.0";
2
- export declare const ContractPublishVersion: "0.63.0";
3
- export declare const ContractPublishTag: "v0.63.0";
4
- export declare const ContractSchemasDigest: "sha256:1cfd1fddb8f2620bbf8648784ae1454c44c211b5c4836574fc4d917f3d3a613d";
1
+ export declare const ContractRepositoryVersion: "0.66.0.0";
2
+ export declare const ContractPublishVersion: "0.66.0";
3
+ export declare const ContractPublishTag: "v0.66.0";
4
+ export declare const ContractSchemasDigest: "sha256:80c014af364c39472dc57ca097f4994daa0e8d57d094a3e4ca5631985246093e";
5
5
  export declare const ContractAiFixturesDigest: "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6";
6
- export declare const ContractGeneratedGoDigest: "sha256:47b9abc825fcdfa2794e55cd056703ef262134767cfa7d86792d570b1f3e988b";
7
- export declare const ContractGeneratedTypeScriptDigest: "sha256:96db6b8ebf81b3677c48f26d10e56fc5948470b68133c087b8326b261a0b2bf0";
6
+ export declare const ContractGeneratedGoDigest: "sha256:2af05118fbdbb3d3e16a506074f50338d4646288d4ce530a60765028221041b2";
7
+ export declare const ContractGeneratedTypeScriptDigest: "sha256:39dcf887d9d5b39603eee342a27029feff32e505bb9d8ba79c8607f87d2bca1e";
@@ -1,9 +1,9 @@
1
1
  /* eslint-disable */
2
2
  // Code generated by tools/gen/gen.mjs from schema/*.json. DO NOT EDIT.
3
- export const ContractRepositoryVersion = "0.63.0.0";
4
- export const ContractPublishVersion = "0.63.0";
5
- export const ContractPublishTag = "v0.63.0";
6
- export const ContractSchemasDigest = "sha256:1cfd1fddb8f2620bbf8648784ae1454c44c211b5c4836574fc4d917f3d3a613d";
3
+ export const ContractRepositoryVersion = "0.66.0.0";
4
+ export const ContractPublishVersion = "0.66.0";
5
+ export const ContractPublishTag = "v0.66.0";
6
+ export const ContractSchemasDigest = "sha256:80c014af364c39472dc57ca097f4994daa0e8d57d094a3e4ca5631985246093e";
7
7
  export const ContractAiFixturesDigest = "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6";
8
- export const ContractGeneratedGoDigest = "sha256:47b9abc825fcdfa2794e55cd056703ef262134767cfa7d86792d570b1f3e988b";
9
- export const ContractGeneratedTypeScriptDigest = "sha256:96db6b8ebf81b3677c48f26d10e56fc5948470b68133c087b8326b261a0b2bf0";
8
+ export const ContractGeneratedGoDigest = "sha256:2af05118fbdbb3d3e16a506074f50338d4646288d4ce530a60765028221041b2";
9
+ export const ContractGeneratedTypeScriptDigest = "sha256:39dcf887d9d5b39603eee342a27029feff32e505bb9d8ba79c8607f87d2bca1e";
@@ -0,0 +1,8 @@
1
+ /**
2
+ * IAM-protected POST /v1/deployment/apps/retire-preview request after production is LIVE and the deployment plane holds the preview retirement reservation. Disables only the registered preview version's serving routes and workload authority.
3
+ */
4
+ export interface DeploymentPreviewRetirement {
5
+ tenantId: string;
6
+ appId: string;
7
+ previewVersionId: string;
8
+ }
@@ -0,0 +1,3 @@
1
+ /* eslint-disable */
2
+ // Code generated by tools/gen/gen.mjs from schema/*.json. DO NOT EDIT.
3
+ export {};
@@ -34,6 +34,7 @@ export * from './deploy-response.js';
34
34
  export * from './deployment-app-registration.js';
35
35
  export * from './deployment-continuation.js';
36
36
  export * from './deployment-environment.js';
37
+ export * from './deployment-preview-retirement.js';
37
38
  export * from './deployment-source.js';
38
39
  export * from './deployment-status-failure.js';
39
40
  export * from './deployment-status-request.js';
@@ -36,6 +36,7 @@ export * from './deploy-response.js';
36
36
  export * from './deployment-app-registration.js';
37
37
  export * from './deployment-continuation.js';
38
38
  export * from './deployment-environment.js';
39
+ export * from './deployment-preview-retirement.js';
39
40
  export * from './deployment-source.js';
40
41
  export * from './deployment-status-failure.js';
41
42
  export * from './deployment-status-request.js';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Existing IAM-protected configuration resolver request. appId and preview environment request resolved serving alongside deployment-destination environments, using a ready tenant binding or the platform default.
2
+ * Existing IAM-protected configuration resolver request. appId and environment request resolved serving alongside deployment-destination environments, using a ready tenant binding or the platform default.
3
3
  */
4
4
  export interface InternalConfigurationRequest {
5
5
  tenantId: string;
@@ -8,5 +8,5 @@ export interface InternalConfigurationRequest {
8
8
  */
9
9
  scopes: ('source-control' | 'identity' | 'deployment' | 'custom-domains' | 'deployment-destination')[];
10
10
  appId?: string;
11
- environment?: 'preview';
11
+ environment?: 'preview' | 'production';
12
12
  }
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Governance-selected V2 preview serving facts. Admission resolves once and passes these unchanged to build/provision/publish. Pending tenant bindings cannot supply these facts.
2
+ * Governance-selected V2 preview or production serving facts. Admission resolves once and passes these unchanged to build/provision/publish. Pending tenant bindings cannot supply these facts.
3
3
  */
4
4
  export interface ResolvedAppServing {
5
5
  tenantId: string;
6
6
  appId: string;
7
- environment: 'preview';
7
+ environment: 'preview' | 'production';
8
8
  frontendUrl: string;
9
9
  apiUrl: string;
10
10
  loginHost: string;
@@ -15,4 +15,31 @@ export interface ResolvedAppServing {
15
15
  routingStoreArn: string;
16
16
  distributionId: string;
17
17
  };
18
+ /**
19
+ * The platform cell (LLD §3.7) whose routing store and template distribution serve this app.
20
+ */
21
+ cellId?: string;
22
+ /**
23
+ * The cell's CloudFront KeyValueStore ARN; equals edge.routingStoreArn unless the cell record names its own.
24
+ */
25
+ routingStoreArn?: string;
26
+ /**
27
+ * Bare hostname of frontendUrl.
28
+ */
29
+ pageHost?: string;
30
+ /**
31
+ * Bare hostname of apiUrl.
32
+ */
33
+ apiHost?: string;
34
+ /**
35
+ * Present only when source is tenant: the ready delegated company zone the page and API hosts live under, and the shared gateway/TLS secret the cell serves it with.
36
+ */
37
+ companyDomain?: {
38
+ tenantId: string;
39
+ zone: string;
40
+ pageSuffix: string;
41
+ apiSuffix: string;
42
+ gatewayName: string;
43
+ tlsSecretName: string;
44
+ };
18
45
  }
@@ -43,15 +43,19 @@ export const RESOLVER_VERSION = "1.0.0";
43
43
  const PII_INPUT_GUARDRAIL = { ruleId: "platform.pii.input", detectorId: "harbour.pii", detectorVersion: "1.0", phase: "input", action: "REDACT" };
44
44
  const PII_OUTPUT_GUARDRAIL = { ruleId: "platform.pii.output", detectorId: "harbour.pii", detectorVersion: "1.0", phase: "output", action: "REDACT" };
45
45
  const SECRET_OUTPUT_GUARDRAIL = { ruleId: "platform.secret.output", detectorId: "harbour.secret", detectorVersion: "1.0", phase: "output", action: "BLOCK" };
46
+ /** One request-size ceiling for the baseline and every class: the AI Gateway's
47
+ * JSON transport cap, so a 1-2 MB photo or generated PNG reaches the model.
48
+ * Token ceilings, not bytes, bound what the model reads. */
49
+ const MAX_REQUEST_BYTES = 20 * 1024 * 1024;
46
50
  export const AI_PLATFORM_BASELINE = {
47
51
  schema: "harbour.ai-platform-baseline/1.0",
48
- artifactVersion: "1.0.0",
52
+ artifactVersion: "1.1.0",
49
53
  controls: {
50
54
  permittedProviderTypes: ["anthropic", "gemini", "higgsfield", "openai", "openrouter"],
51
55
  requireApprovedModels: false,
52
56
  maxCaptureMode: "BEST_EFFORT",
53
57
  maxRetentionDays: 90,
54
- maxRequestBytes: 1_000_000,
58
+ maxRequestBytes: MAX_REQUEST_BYTES,
55
59
  maxInputTokens: 200_000,
56
60
  maxOutputTokens: 32_000,
57
61
  maxRequestsPerMinute: 6_000,
@@ -66,7 +70,7 @@ export const AI_PLATFORM_BASELINE = {
66
70
  * and are versioned by `artifactVersion` plus `RESOLVER_VERSION`. */
67
71
  export const AI_CLASSIFICATION_MINIMUMS = {
68
72
  schema: "harbour.ai-classification-minimums/1.0",
69
- artifactVersion: "1.0.0",
73
+ artifactVersion: "1.1.0",
70
74
  defaultClassification: "Yellow",
71
75
  classes: {
72
76
  Green: {
@@ -74,7 +78,7 @@ export const AI_CLASSIFICATION_MINIMUMS = {
74
78
  requireApprovedModels: false,
75
79
  maxCaptureMode: "BEST_EFFORT",
76
80
  maxRetentionDays: 90,
77
- maxRequestBytes: 1_000_000,
81
+ maxRequestBytes: MAX_REQUEST_BYTES,
78
82
  maxInputTokens: 200_000,
79
83
  maxOutputTokens: 32_000,
80
84
  maxRequestsPerMinute: 6_000,
@@ -88,7 +92,7 @@ export const AI_CLASSIFICATION_MINIMUMS = {
88
92
  requireApprovedModels: true,
89
93
  maxCaptureMode: "BEST_EFFORT",
90
94
  maxRetentionDays: 60,
91
- maxRequestBytes: 1_000_000,
95
+ maxRequestBytes: MAX_REQUEST_BYTES,
92
96
  maxInputTokens: 200_000,
93
97
  maxOutputTokens: 32_000,
94
98
  maxRequestsPerMinute: 6_000,
@@ -102,7 +106,7 @@ export const AI_CLASSIFICATION_MINIMUMS = {
102
106
  requireApprovedModels: true,
103
107
  maxCaptureMode: "BEST_EFFORT",
104
108
  maxRetentionDays: 30,
105
- maxRequestBytes: 500_000,
109
+ maxRequestBytes: MAX_REQUEST_BYTES,
106
110
  maxInputTokens: 100_000,
107
111
  maxOutputTokens: 16_000,
108
112
  maxRequestsPerMinute: 1_200,
@@ -116,7 +120,7 @@ export const AI_CLASSIFICATION_MINIMUMS = {
116
120
  requireApprovedModels: true,
117
121
  maxCaptureMode: "OFF",
118
122
  maxRetentionDays: 7,
119
- maxRequestBytes: 200_000,
123
+ maxRequestBytes: MAX_REQUEST_BYTES,
120
124
  maxInputTokens: 50_000,
121
125
  maxOutputTokens: 8_000,
122
126
  maxRequestsPerMinute: 300,
@@ -1,10 +1,10 @@
1
1
  /* eslint-disable */
2
2
  // Code generated by tools/gen/gen.mjs from schema/*.json. DO NOT EDIT.
3
3
 
4
- export const ContractRepositoryVersion = "0.63.0.0" as const;
5
- export const ContractPublishVersion = "0.63.0" as const;
6
- export const ContractPublishTag = "v0.63.0" as const;
7
- export const ContractSchemasDigest = "sha256:1cfd1fddb8f2620bbf8648784ae1454c44c211b5c4836574fc4d917f3d3a613d" as const;
4
+ export const ContractRepositoryVersion = "0.66.0.0" as const;
5
+ export const ContractPublishVersion = "0.66.0" as const;
6
+ export const ContractPublishTag = "v0.66.0" as const;
7
+ export const ContractSchemasDigest = "sha256:80c014af364c39472dc57ca097f4994daa0e8d57d094a3e4ca5631985246093e" as const;
8
8
  export const ContractAiFixturesDigest = "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6" as const;
9
- export const ContractGeneratedGoDigest = "sha256:47b9abc825fcdfa2794e55cd056703ef262134767cfa7d86792d570b1f3e988b" as const;
10
- export const ContractGeneratedTypeScriptDigest = "sha256:96db6b8ebf81b3677c48f26d10e56fc5948470b68133c087b8326b261a0b2bf0" as const;
9
+ export const ContractGeneratedGoDigest = "sha256:2af05118fbdbb3d3e16a506074f50338d4646288d4ce530a60765028221041b2" as const;
10
+ export const ContractGeneratedTypeScriptDigest = "sha256:39dcf887d9d5b39603eee342a27029feff32e505bb9d8ba79c8607f87d2bca1e" as const;
@@ -0,0 +1,11 @@
1
+ /* eslint-disable */
2
+ // Code generated by tools/gen/gen.mjs from schema/*.json. DO NOT EDIT.
3
+
4
+ /**
5
+ * IAM-protected POST /v1/deployment/apps/retire-preview request after production is LIVE and the deployment plane holds the preview retirement reservation. Disables only the registered preview version's serving routes and workload authority.
6
+ */
7
+ export interface DeploymentPreviewRetirement {
8
+ tenantId: string;
9
+ appId: string;
10
+ previewVersionId: string;
11
+ }
package/gen-ts/index.ts CHANGED
@@ -37,6 +37,7 @@ export * from './deploy-response.js';
37
37
  export * from './deployment-app-registration.js';
38
38
  export * from './deployment-continuation.js';
39
39
  export * from './deployment-environment.js';
40
+ export * from './deployment-preview-retirement.js';
40
41
  export * from './deployment-source.js';
41
42
  export * from './deployment-status-failure.js';
42
43
  export * from './deployment-status-request.js';
@@ -2,7 +2,7 @@
2
2
  // Code generated by tools/gen/gen.mjs from schema/*.json. DO NOT EDIT.
3
3
 
4
4
  /**
5
- * Existing IAM-protected configuration resolver request. appId and preview environment request resolved serving alongside deployment-destination environments, using a ready tenant binding or the platform default.
5
+ * Existing IAM-protected configuration resolver request. appId and environment request resolved serving alongside deployment-destination environments, using a ready tenant binding or the platform default.
6
6
  */
7
7
  export interface InternalConfigurationRequest {
8
8
  tenantId: string;
@@ -11,5 +11,5 @@ export interface InternalConfigurationRequest {
11
11
  */
12
12
  scopes: ('source-control' | 'identity' | 'deployment' | 'custom-domains' | 'deployment-destination')[];
13
13
  appId?: string;
14
- environment?: 'preview';
14
+ environment?: 'preview' | 'production';
15
15
  }
@@ -2,12 +2,12 @@
2
2
  // Code generated by tools/gen/gen.mjs from schema/*.json. DO NOT EDIT.
3
3
 
4
4
  /**
5
- * Governance-selected V2 preview serving facts. Admission resolves once and passes these unchanged to build/provision/publish. Pending tenant bindings cannot supply these facts.
5
+ * Governance-selected V2 preview or production serving facts. Admission resolves once and passes these unchanged to build/provision/publish. Pending tenant bindings cannot supply these facts.
6
6
  */
7
7
  export interface ResolvedAppServing {
8
8
  tenantId: string;
9
9
  appId: string;
10
- environment: 'preview';
10
+ environment: 'preview' | 'production';
11
11
  frontendUrl: string;
12
12
  apiUrl: string;
13
13
  loginHost: string;
@@ -18,4 +18,31 @@ export interface ResolvedAppServing {
18
18
  routingStoreArn: string;
19
19
  distributionId: string;
20
20
  };
21
+ /**
22
+ * The platform cell (LLD §3.7) whose routing store and template distribution serve this app.
23
+ */
24
+ cellId?: string;
25
+ /**
26
+ * The cell's CloudFront KeyValueStore ARN; equals edge.routingStoreArn unless the cell record names its own.
27
+ */
28
+ routingStoreArn?: string;
29
+ /**
30
+ * Bare hostname of frontendUrl.
31
+ */
32
+ pageHost?: string;
33
+ /**
34
+ * Bare hostname of apiUrl.
35
+ */
36
+ apiHost?: string;
37
+ /**
38
+ * Present only when source is tenant: the ready delegated company zone the page and API hosts live under, and the shared gateway/TLS secret the cell serves it with.
39
+ */
40
+ companyDomain?: {
41
+ tenantId: string;
42
+ zone: string;
43
+ pageSuffix: string;
44
+ apiSuffix: string;
45
+ gatewayName: string;
46
+ tlsSecretName: string;
47
+ };
21
48
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fourier-labs/harbour-contracts",
3
- "version": "0.63.0",
3
+ "version": "0.66.0",
4
4
  "description": "Single source of truth for every data shape that crosses a boundary between Isomorph components.",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://contracts.harbour.dev/deployment-preview-retirement.schema.json",
4
+ "title": "DeploymentPreviewRetirement",
5
+ "description": "IAM-protected POST /v1/deployment/apps/retire-preview request after production is LIVE and the deployment plane holds the preview retirement reservation. Disables only the registered preview version's serving routes and workload authority.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["tenantId", "appId", "previewVersionId"],
9
+ "properties": {
10
+ "tenantId": { "type": "string", "minLength": 1 },
11
+ "appId": { "type": "string", "minLength": 1 },
12
+ "previewVersionId": { "type": "string", "minLength": 1 }
13
+ }
14
+ }
@@ -2,14 +2,14 @@
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
3
  "$id": "https://contracts.harbour.dev/internal-configuration-request.schema.json",
4
4
  "title": "InternalConfigurationRequest",
5
- "description": "Existing IAM-protected configuration resolver request. appId and preview environment request resolved serving alongside deployment-destination environments, using a ready tenant binding or the platform default.",
5
+ "description": "Existing IAM-protected configuration resolver request. appId and environment request resolved serving alongside deployment-destination environments, using a ready tenant binding or the platform default.",
6
6
  "type": "object", "additionalProperties": false,
7
7
  "required": ["tenantId", "scopes"],
8
8
  "properties": {
9
9
  "tenantId": {"type": "string", "minLength": 1},
10
10
  "scopes": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "enum": ["source-control", "identity", "deployment", "custom-domains", "deployment-destination"]}},
11
11
  "appId": {"type": "string", "minLength": 1},
12
- "environment": {"const": "preview"}
12
+ "environment": {"type": "string", "enum": ["preview", "production"]}
13
13
  },
14
14
  "dependencies": {"appId": ["environment"], "environment": ["appId"]}
15
15
  }
@@ -2,13 +2,13 @@
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
3
  "$id": "https://contracts.harbour.dev/resolved-app-serving.schema.json",
4
4
  "title": "ResolvedAppServing",
5
- "description": "Governance-selected V2 preview serving facts. Admission resolves once and passes these unchanged to build/provision/publish. Pending tenant bindings cannot supply these facts.",
5
+ "description": "Governance-selected V2 preview or production serving facts. Admission resolves once and passes these unchanged to build/provision/publish. Pending tenant bindings cannot supply these facts.",
6
6
  "type": "object", "additionalProperties": false,
7
7
  "required": ["tenantId", "appId", "environment", "frontendUrl", "apiUrl", "loginHost", "bindingVersion", "source", "edge"],
8
8
  "properties": {
9
9
  "tenantId": {"type": "string", "minLength": 1},
10
10
  "appId": {"type": "string", "minLength": 1},
11
- "environment": {"const": "preview"},
11
+ "environment": {"type": "string", "enum": ["preview", "production"]},
12
12
  "frontendUrl": {"type": "string", "format": "uri", "pattern": "^https://"},
13
13
  "apiUrl": {"type": "string", "format": "uri", "pattern": "^https://"},
14
14
  "loginHost": {"type": "string", "format": "hostname"},
@@ -22,6 +22,23 @@
22
22
  "routingStoreArn": {"type": "string", "minLength": 1},
23
23
  "distributionId": {"type": "string", "minLength": 1}
24
24
  }
25
+ },
26
+ "cellId": {"type": "string", "minLength": 1, "description": "The platform cell (LLD §3.7) whose routing store and template distribution serve this app."},
27
+ "routingStoreArn": {"type": "string", "minLength": 1, "description": "The cell's CloudFront KeyValueStore ARN; equals edge.routingStoreArn unless the cell record names its own."},
28
+ "pageHost": {"type": "string", "format": "hostname", "description": "Bare hostname of frontendUrl."},
29
+ "apiHost": {"type": "string", "format": "hostname", "description": "Bare hostname of apiUrl."},
30
+ "companyDomain": {
31
+ "type": "object", "additionalProperties": false,
32
+ "description": "Present only when source is tenant: the ready delegated company zone the page and API hosts live under, and the shared gateway/TLS secret the cell serves it with.",
33
+ "required": ["tenantId", "zone", "pageSuffix", "apiSuffix", "gatewayName", "tlsSecretName"],
34
+ "properties": {
35
+ "tenantId": {"type": "string", "minLength": 1},
36
+ "zone": {"type": "string", "format": "hostname"},
37
+ "pageSuffix": {"type": "string", "format": "hostname"},
38
+ "apiSuffix": {"type": "string", "format": "hostname"},
39
+ "gatewayName": {"type": "string", "minLength": 1},
40
+ "tlsSecretName": {"type": "string", "minLength": 1}
41
+ }
25
42
  }
26
43
  }
27
44
  }