@fourier-labs/harbour-contracts 0.35.0 → 0.42.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.
- package/README.md +4 -0
- package/contract-release.json +25 -25
- package/dist/gen-ts/artifact-contract.d.ts +1 -1
- package/dist/gen-ts/contract-release.d.ts +6 -6
- package/dist/gen-ts/contract-release.js +6 -6
- package/dist/gen-ts/data-source.d.ts +5 -1
- package/dist/gen-ts/deploy-request.d.ts +21 -0
- package/dist/gen-ts/deployment-status-failure.d.ts +6 -1
- package/dist/gen-ts/deployment-status-response.d.ts +5 -0
- package/dist/gen-ts/error-category-registry.d.ts +14 -0
- package/dist/gen-ts/error-category-registry.js +30 -1
- package/dist/gen-ts/transform-report.d.ts +131 -14
- package/dist/gen-ts/transform-report.js +11 -1
- package/dist/gen-ts/well-defined-app-manifest.d.ts +1 -1
- package/gen-ts/artifact-contract.ts +1 -1
- package/gen-ts/contract-release.ts +6 -6
- package/gen-ts/data-source.ts +5 -1
- package/gen-ts/deploy-request.ts +21 -0
- package/gen-ts/deployment-status-failure.ts +6 -1
- package/gen-ts/deployment-status-response.ts +5 -0
- package/gen-ts/error-category-registry.ts +30 -1
- package/gen-ts/transform-report.ts +141 -14
- package/gen-ts/well-defined-app-manifest.ts +1 -1
- package/package.json +1 -1
- package/schema/artifact-contract.schema.json +1 -1
- package/schema/data-source.schema.json +7 -1
- package/schema/deploy-request.schema.json +39 -0
- package/schema/deployment-status-failure.schema.json +15 -1
- package/schema/deployment-status-response.schema.json +12 -0
- package/schema/error-category.enum.json +13 -2
- package/schema/transform-report.schema.json +323 -19
- package/schema/well-defined-app-manifest.schema.json +1 -1
package/README.md
CHANGED
|
@@ -39,6 +39,10 @@ exist here first.
|
|
|
39
39
|
| `sanitized-binding-evidence.schema.json` | Exact-version sanitized runtime-binding allocation receipt | AI governance §5.7 / SEC-UP-02 |
|
|
40
40
|
| `ai-pricing-revision`, `ai-metering-policy`, `ai-budget-ledger-event`, `ai-trace-event-v2` | Additive metering v2 records, including media dimensions and P5 trace attribution; v1 records remain readable | AI governance §9 |
|
|
41
41
|
|
|
42
|
+
Runtime resource profiles are a closed contract shared by transformation, artifacts, and
|
|
43
|
+
well-defined application manifests. The supported profiles are `standard`, `memory-1g`, and
|
|
44
|
+
`memory-2g`; consumers must reject unrecognized raw CPU or memory overrides.
|
|
45
|
+
|
|
42
46
|
Two schemas carry logic beyond structural types, generated into helpers:
|
|
43
47
|
|
|
44
48
|
- **`error-category.enum.json`** → `IsRetryable(category)` (Go) / `isRetryable(category)` (TS),
|
package/contract-release.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "harbour.contract-release/1.0",
|
|
3
|
-
"repositoryVersion": "0.
|
|
4
|
-
"publishVersion": "0.
|
|
5
|
-
"publishTag": "v0.
|
|
6
|
-
"schemasDigest": "sha256:
|
|
3
|
+
"repositoryVersion": "0.42.0.0",
|
|
4
|
+
"publishVersion": "0.42.0",
|
|
5
|
+
"publishTag": "v0.42.0",
|
|
6
|
+
"schemasDigest": "sha256:41d814f34ed6312921ca93d8421cadf9f9c0209bc77a98f7d9761fd659eea505",
|
|
7
7
|
"aiFixturesDigest": "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6",
|
|
8
|
-
"generatedGoDigest": "sha256:
|
|
9
|
-
"generatedTypeScriptDigest": "sha256:
|
|
8
|
+
"generatedGoDigest": "sha256:42a3ac3f628b252930572ae8dd3dd7bf51b5c5176daec6df8fdcc82eb73c718c",
|
|
9
|
+
"generatedTypeScriptDigest": "sha256:30fba235330644792f77657373e9187a1937c6709b3dfc7a75f08807ea673cdb",
|
|
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)"
|
|
@@ -31,20 +31,20 @@
|
|
|
31
31
|
"schema/ai-transform-result.schema.json": "sha256:244e380a36957ab2dcb526ea22aaecb56b53664ce1fda6934d0021c084c99133",
|
|
32
32
|
"schema/ai-verification-evidence.schema.json": "sha256:bdbc762df256d2a8dd0bdda60d4d13915ce40034cd756af9515871d145f10ad9",
|
|
33
33
|
"schema/api-error-response.schema.json": "sha256:3d43d5bdf0b59c944e20509d832e6776c3ecdba4d6c245a9118bbe52062a8304",
|
|
34
|
-
"schema/artifact-contract.schema.json": "sha256:
|
|
34
|
+
"schema/artifact-contract.schema.json": "sha256:8047b461a1c6d07bbe867a259c57bdf5cc0fdf282cf842ec7b683a9e93713b10",
|
|
35
35
|
"schema/binding-classification-subject.schema.json": "sha256:a8825ce652e7e00a18759c4249bd5bcd0cae552dd58440513f867e87f685133c",
|
|
36
36
|
"schema/data-dependency.schema.json": "sha256:89ba8481ccabc935e7dab5d13871c985839a751ad1586710d8382a15e1f3340c",
|
|
37
37
|
"schema/data-grant.schema.json": "sha256:e640553831ecc1c01cc9a37fe388b84d0ffeaa0d0050e63712b48f65fa437c8a",
|
|
38
|
-
"schema/data-source.schema.json": "sha256:
|
|
39
|
-
"schema/deploy-request.schema.json": "sha256:
|
|
38
|
+
"schema/data-source.schema.json": "sha256:aec8d2497dae9a91886a3df9f6fbbdb3d3fcab44b14fbcacc3f5e99b827f1bba",
|
|
39
|
+
"schema/deploy-request.schema.json": "sha256:bfcef417bd76dc64ff97264fa42994d7f5856578ba1a0c4feac5349c280abf12",
|
|
40
40
|
"schema/deploy-response.schema.json": "sha256:09064948abdbba7022738285d802ed44648a16ddc2a5b8c2eeb170ae19a66aeb",
|
|
41
41
|
"schema/deployment-environment.schema.json": "sha256:3f1325d5579b3fc47d02c83b6ac0657108909b1dfb901f68203c9c8b668c2ef4",
|
|
42
42
|
"schema/deployment-source.schema.json": "sha256:256988b1efbfc90bd0e1ae31a2c5d69b20ef1e4471dc24c9f9aa759278270fbe",
|
|
43
|
-
"schema/deployment-status-failure.schema.json": "sha256:
|
|
43
|
+
"schema/deployment-status-failure.schema.json": "sha256:7cc021d53a07c63b66eb48146d33e8875b64faf77ee927b235795469eb9a1559",
|
|
44
44
|
"schema/deployment-status-request.schema.json": "sha256:1f9f87adc947a252b53b61f71ae17f8c1b8fbc1166f31301a043d11ac257dc66",
|
|
45
|
-
"schema/deployment-status-response.schema.json": "sha256:
|
|
45
|
+
"schema/deployment-status-response.schema.json": "sha256:9a49f6a5db4e06e0965a536d6080a6155e539c1105e1625338d7f3a53583b2b8",
|
|
46
46
|
"schema/env-bindings.schema.json": "sha256:ae09bc4ca5508afa698ef854a59153c4c6f99b07017b48cb9b07ce05abad12f2",
|
|
47
|
-
"schema/error-category.enum.json": "sha256:
|
|
47
|
+
"schema/error-category.enum.json": "sha256:2268b8a00dfa1f1ab6db7650c117028247fca980d4a23aa5969ce30b76692be9",
|
|
48
48
|
"schema/error-envelope.schema.json": "sha256:75dccda7dd16fdf8435deda53fc7dbcdc109b65114617a17f11763010c656f90",
|
|
49
49
|
"schema/kvs-routing-entry.schema.json": "sha256:b75f3a5dfa93a428b2764e03222b66b6ef2bed980f8bac8ffac54afdf3526bc5",
|
|
50
50
|
"schema/promotion-request.schema.json": "sha256:00e96dfd8ddbdba88ea222941d43f3609ff6c815a79e34f6705cab458101c969",
|
|
@@ -53,9 +53,9 @@
|
|
|
53
53
|
"schema/secret-reference.schema.json": "sha256:966f7a6d2575b46a4b54804d06dc05c6229ebbcbd9200fe6a6c8d3b4ffb90f9f",
|
|
54
54
|
"schema/security-scan-input.schema.json": "sha256:83502dffb3c07ac2e0698928e6dc123f454fc667d4aacd336bcad6944ef2ac3d",
|
|
55
55
|
"schema/security-verdict.schema.json": "sha256:ec3c2d5c9df3601aeed0909b36c7f427469c7f0eeb3295c5809b96d09bf3fc26",
|
|
56
|
-
"schema/transform-report.schema.json": "sha256:
|
|
56
|
+
"schema/transform-report.schema.json": "sha256:5943c90ad7a8b473119dde5879c59ed384d5dc19253b90bc3507dd1ff4dd9abe",
|
|
57
57
|
"schema/version-state.schema.json": "sha256:3b190007e2f8e3821c41ef11c6f5b226da7d5a18d34d4077f4618004846fd444",
|
|
58
|
-
"schema/well-defined-app-manifest.schema.json": "sha256:
|
|
58
|
+
"schema/well-defined-app-manifest.schema.json": "sha256:75a06690411880e670f133066a7a469150b53560b9dafa2f066a04485e4b50a0"
|
|
59
59
|
},
|
|
60
60
|
"aiFixtures": {
|
|
61
61
|
"fixtures/ai/adversarial-binding-classification-value.json": "sha256:ca009f3f6162a9d93b4ab416d52c1fba12a8a15aca5aed956c5fdcf2171b1e28",
|
|
@@ -92,9 +92,9 @@
|
|
|
92
92
|
"gen-go/binding_digest_helpers.go": "sha256:50462ba2beb16c7931dfc7e10302c12c90bf8111788991f74f08a718125dfbfb",
|
|
93
93
|
"gen-go/contracts_test.go": "sha256:56376287cb1548be1b35ab4c65d6f0b558c5d34885f7a47cb3d9e8d786607bf5",
|
|
94
94
|
"gen-go/doc.go": "sha256:c17bc2d39ed175ce7105c68305f8ae7152f659eb7cd187ecceee7698eb3a65dd",
|
|
95
|
-
"gen-go/error_category.go": "sha256:
|
|
96
|
-
"gen-go/schema_documents.go": "sha256:
|
|
97
|
-
"gen-go/types.go": "sha256:
|
|
95
|
+
"gen-go/error_category.go": "sha256:b2ddea22dcfa030f1a45e721e635485b0bd816cf1f38e7654628a653f5ed4583",
|
|
96
|
+
"gen-go/schema_documents.go": "sha256:b6973afc9e72713062421f4bcc9dee136a971cf998daff4e0724f8be4a2b5051",
|
|
97
|
+
"gen-go/types.go": "sha256:8f6ccab9a9fbef3f3f3e676c94288ea1cdd8fa1dcc131354bbec6b0533c073ca",
|
|
98
98
|
"gen-go/version_state.go": "sha256:4ef8abb126414c0025cf2c59bc9c79a74ef4a2ff89e8f316cbf05acc872371c1"
|
|
99
99
|
},
|
|
100
100
|
"generatedTypeScript": {
|
|
@@ -119,21 +119,21 @@
|
|
|
119
119
|
"gen-ts/ai-transform-result.ts": "sha256:208c66b2aeb425c0cbcc18b7191f6e8989443f2b2c1690648e0e06cc1448ce25",
|
|
120
120
|
"gen-ts/ai-verification-evidence.ts": "sha256:979439d77f8b47631d1eb3b6c3c54ea6fec41089d2a51dc815fd370b1c4917fc",
|
|
121
121
|
"gen-ts/api-error-response.ts": "sha256:0fd73be282e7a5d72d6c343a4e64d09c232556b16161167f0cffd6278ed7e3d3",
|
|
122
|
-
"gen-ts/artifact-contract.ts": "sha256:
|
|
122
|
+
"gen-ts/artifact-contract.ts": "sha256:4a6dc6d2caaeed4bb2066cc8a333e6e09e5a0d4745e0b1038293d54ab9403aeb",
|
|
123
123
|
"gen-ts/binding-classification-digest-helper.ts": "sha256:40fc7d85b4c3f3ffc5caf7d7950c62d013c83ee42058c7453b2100d95817f167",
|
|
124
124
|
"gen-ts/binding-classification-subject.ts": "sha256:c409a3fd7b942b50419632c51d9a79474fb30d6374bdc79c0e25c73618e800c3",
|
|
125
125
|
"gen-ts/data-dependency.ts": "sha256:0572c31d7ae9088eccc104eee1a205bf176d1d6dacfaf0f290d666024e284966",
|
|
126
126
|
"gen-ts/data-grant.ts": "sha256:2358579d8aa1e57b01a6f2b0eacce5531e7f21ef226404c9809925365e0d6155",
|
|
127
|
-
"gen-ts/data-source.ts": "sha256:
|
|
128
|
-
"gen-ts/deploy-request.ts": "sha256:
|
|
127
|
+
"gen-ts/data-source.ts": "sha256:77d6bb3b0eaa355789c5d97dd1f548734add6950329dc69549350b8d17c8d582",
|
|
128
|
+
"gen-ts/deploy-request.ts": "sha256:f685210f3f4e48a04e64983d3e040d6601477df404b4f890d6ea49c91c475256",
|
|
129
129
|
"gen-ts/deploy-response.ts": "sha256:364d9f1acf32e491498237cdd3f402d5f8e102f208db7748034f4ec68c6a6137",
|
|
130
130
|
"gen-ts/deployment-environment.ts": "sha256:bbd6eec3a1631b13a8de6e6b95081696f7be01d0bd2bf1b7a9e3a1db809a727c",
|
|
131
131
|
"gen-ts/deployment-source.ts": "sha256:8ccb55aaa7260eb6d19a00987d6a20a4b514e343564da13f27cd7fee8013500a",
|
|
132
|
-
"gen-ts/deployment-status-failure.ts": "sha256:
|
|
132
|
+
"gen-ts/deployment-status-failure.ts": "sha256:6da2e6eb2f708efa51d416a1ec50f71ea7967cf9be9f93e7ce2e4760dae2cfe3",
|
|
133
133
|
"gen-ts/deployment-status-request.ts": "sha256:7ddccd07ab9f6d0821903a291ab35f903bb055727e03a058b99165ec048f6483",
|
|
134
|
-
"gen-ts/deployment-status-response.ts": "sha256:
|
|
134
|
+
"gen-ts/deployment-status-response.ts": "sha256:70a75c801613a85ebf1946c31d3f5c051451cc99684b352e35b6fd1ccf444f24",
|
|
135
135
|
"gen-ts/env-bindings.ts": "sha256:a167cfe9842352c9fec6412ff0d82bda9c5f5c3a1af541bd5c27a57f54fd0941",
|
|
136
|
-
"gen-ts/error-category-registry.ts": "sha256:
|
|
136
|
+
"gen-ts/error-category-registry.ts": "sha256:7466a502c0723a77db825cdeaa9556a244201b55d9b7acbf2c098e9e84351df1",
|
|
137
137
|
"gen-ts/error-category.ts": "sha256:9bda89180c3b740c9aa8be466216592e8ca9d0d368c274333edf6ea5c45afd8e",
|
|
138
138
|
"gen-ts/error-envelope.ts": "sha256:4457309be794f9d4fc0cf62530cc2d442c007bac9ae84aff66df099cc9e40310",
|
|
139
139
|
"gen-ts/index.ts": "sha256:4aecbb1044a210bf5813deb645c623eefa7bb6af2a8e2557b76ed9ba1d95eba9",
|
|
@@ -145,9 +145,9 @@
|
|
|
145
145
|
"gen-ts/secret-reference.ts": "sha256:a8b65de72705b6f51f57cd8ca58881483108005b1fa4d19106c3e9cf1fa877e7",
|
|
146
146
|
"gen-ts/security-scan-input.ts": "sha256:b31f048be04c34b40f49d3b3ba53277e473cd435ae9216ba3a3b4dac69fb5685",
|
|
147
147
|
"gen-ts/security-verdict.ts": "sha256:fea950cddbd12fe0218e2573c9a29c6748d56612a464559f1e6d688fa97f68c7",
|
|
148
|
-
"gen-ts/transform-report.ts": "sha256:
|
|
148
|
+
"gen-ts/transform-report.ts": "sha256:a4f7f895342cd63048b2add63393a1251abb3e97f057b00e3ebd3f96fd1a510e",
|
|
149
149
|
"gen-ts/version-state-machine.ts": "sha256:c67af3e86ac306743345b850dfd3ae5201c19d10c40e2c149cf8c38258320d5f",
|
|
150
150
|
"gen-ts/version-state.ts": "sha256:a835112930299e7b593a1b8810b7414f6c9e809da2092306c743128170a3b702",
|
|
151
|
-
"gen-ts/well-defined-app-manifest.ts": "sha256:
|
|
151
|
+
"gen-ts/well-defined-app-manifest.ts": "sha256:f29f8f2d0783e9e49d0546d65c2bedee2a6c2cebba0ec291ad52d9b67cb3a2fa"
|
|
152
152
|
}
|
|
153
153
|
}
|
|
@@ -83,7 +83,7 @@ export interface ArtifactContract {
|
|
|
83
83
|
/**
|
|
84
84
|
* Reviewed CPU/memory profile selected for the application container.
|
|
85
85
|
*/
|
|
86
|
-
resource_profile?: 'standard' | 'memory-1g';
|
|
86
|
+
resource_profile?: 'standard' | 'memory-1g' | 'memory-2g';
|
|
87
87
|
/**
|
|
88
88
|
* Background-job execution mode. The sqs mode enables the governed application job queue and queue-aware scale-to-zero.
|
|
89
89
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export declare const ContractRepositoryVersion: "0.
|
|
2
|
-
export declare const ContractPublishVersion: "0.
|
|
3
|
-
export declare const ContractPublishTag: "v0.
|
|
4
|
-
export declare const ContractSchemasDigest: "sha256:
|
|
1
|
+
export declare const ContractRepositoryVersion: "0.42.0.0";
|
|
2
|
+
export declare const ContractPublishVersion: "0.42.0";
|
|
3
|
+
export declare const ContractPublishTag: "v0.42.0";
|
|
4
|
+
export declare const ContractSchemasDigest: "sha256:41d814f34ed6312921ca93d8421cadf9f9c0209bc77a98f7d9761fd659eea505";
|
|
5
5
|
export declare const ContractAiFixturesDigest: "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6";
|
|
6
|
-
export declare const ContractGeneratedGoDigest: "sha256:
|
|
7
|
-
export declare const ContractGeneratedTypeScriptDigest: "sha256:
|
|
6
|
+
export declare const ContractGeneratedGoDigest: "sha256:42a3ac3f628b252930572ae8dd3dd7bf51b5c5176daec6df8fdcc82eb73c718c";
|
|
7
|
+
export declare const ContractGeneratedTypeScriptDigest: "sha256:30fba235330644792f77657373e9187a1937c6709b3dfc7a75f08807ea673cdb";
|
|
@@ -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.
|
|
4
|
-
export const ContractPublishVersion = "0.
|
|
5
|
-
export const ContractPublishTag = "v0.
|
|
6
|
-
export const ContractSchemasDigest = "sha256:
|
|
3
|
+
export const ContractRepositoryVersion = "0.42.0.0";
|
|
4
|
+
export const ContractPublishVersion = "0.42.0";
|
|
5
|
+
export const ContractPublishTag = "v0.42.0";
|
|
6
|
+
export const ContractSchemasDigest = "sha256:41d814f34ed6312921ca93d8421cadf9f9c0209bc77a98f7d9761fd659eea505";
|
|
7
7
|
export const ContractAiFixturesDigest = "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6";
|
|
8
|
-
export const ContractGeneratedGoDigest = "sha256:
|
|
9
|
-
export const ContractGeneratedTypeScriptDigest = "sha256:
|
|
8
|
+
export const ContractGeneratedGoDigest = "sha256:42a3ac3f628b252930572ae8dd3dd7bf51b5c5176daec6df8fdcc82eb73c718c";
|
|
9
|
+
export const ContractGeneratedTypeScriptDigest = "sha256:30fba235330644792f77657373e9187a1937c6709b3dfc7a75f08807ea673cdb";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Closed connector set for the Data-Access MVP.
|
|
3
3
|
*/
|
|
4
|
-
export type DataSourceConnector = 'postgres' | 'redshift' | 'bigquery' | 'databricks';
|
|
4
|
+
export type DataSourceConnector = 'postgres' | 'redshift' | 'bigquery' | 'databricks' | 'mysql';
|
|
5
5
|
/**
|
|
6
6
|
* byo = admin brought existing infrastructure; harbour_managed = Harbour provisioned it.
|
|
7
7
|
*/
|
|
@@ -45,6 +45,10 @@ export interface DataSource {
|
|
|
45
45
|
* Whether builders may request grants against this source.
|
|
46
46
|
*/
|
|
47
47
|
requestableByBuilders: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Explicit tenant-admin permission to use this source during application validation. A source must also be active and granted to the app.
|
|
50
|
+
*/
|
|
51
|
+
allowValidation?: boolean;
|
|
48
52
|
status: DataSourceStatus;
|
|
49
53
|
}
|
|
50
54
|
/**
|
|
@@ -50,6 +50,12 @@ export interface DeployRequest {
|
|
|
50
50
|
*/
|
|
51
51
|
idempotencyKey?: string;
|
|
52
52
|
environmentBindings?: DeployRequestEnvironmentBindings;
|
|
53
|
+
/**
|
|
54
|
+
* Approved external sources available only during validation. Entries refer to names in environmentBindings and never contain credential values.
|
|
55
|
+
*
|
|
56
|
+
* @maxItems 32
|
|
57
|
+
*/
|
|
58
|
+
validationSources?: DeployRequestValidationSource[];
|
|
53
59
|
/**
|
|
54
60
|
* Preview-only. When true, the transformed code is NOT committed back to the source branch (benchmark deploys). Ignored outside preview.
|
|
55
61
|
*/
|
|
@@ -76,6 +82,21 @@ export interface DeployRequestEnvironmentBindings {
|
|
|
76
82
|
*/
|
|
77
83
|
bindings: DeployRequestEnvironmentBinding[];
|
|
78
84
|
}
|
|
85
|
+
export interface DeployRequestValidationSource {
|
|
86
|
+
sourceId: string;
|
|
87
|
+
connector: 'mysql';
|
|
88
|
+
/**
|
|
89
|
+
* Explicit role for each referenced environment binding. Names must be unique within and across validation sources; consumers enforce that semantic constraint.
|
|
90
|
+
*
|
|
91
|
+
* @minItems 1
|
|
92
|
+
* @maxItems 32
|
|
93
|
+
*/
|
|
94
|
+
bindings: DeployRequestValidationSourceBinding[];
|
|
95
|
+
}
|
|
96
|
+
export interface DeployRequestValidationSourceBinding {
|
|
97
|
+
name: string;
|
|
98
|
+
role: 'host' | 'port' | 'database' | 'credential';
|
|
99
|
+
}
|
|
79
100
|
/**
|
|
80
101
|
* Optional transformation-engine selection. New preview deployments default to branch_select; set sequential explicitly for the legacy engine.
|
|
81
102
|
*/
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Frontend-safe failure projection nested in a failed DeploymentStatusResponse.
|
|
2
|
+
* Frontend-safe failure projection nested in a failed DeploymentStatusResponse. Raw provider errors are excluded; a digest-bound diagnosticRef locates the complete redacted terminal diagnostic.
|
|
3
3
|
*/
|
|
4
4
|
export interface DeploymentStatusFailure {
|
|
5
5
|
category: string;
|
|
6
6
|
retryable: boolean;
|
|
7
7
|
message: string;
|
|
8
8
|
remediationHint: string;
|
|
9
|
+
diagnosticRef?: FailureDiagnosticRef;
|
|
10
|
+
}
|
|
11
|
+
export interface FailureDiagnosticRef {
|
|
12
|
+
key: string;
|
|
13
|
+
sha256: string;
|
|
9
14
|
}
|
|
@@ -32,6 +32,11 @@ export interface StatusFailureProjection {
|
|
|
32
32
|
retryable: boolean;
|
|
33
33
|
message: string;
|
|
34
34
|
remediationHint: string;
|
|
35
|
+
diagnosticRef?: StatusDiagnosticRef;
|
|
36
|
+
}
|
|
37
|
+
export interface StatusDiagnosticRef {
|
|
38
|
+
key: string;
|
|
39
|
+
sha256: string;
|
|
35
40
|
}
|
|
36
41
|
export interface StatusProgressEvent {
|
|
37
42
|
/**
|
|
@@ -3,6 +3,7 @@ export declare const ErrorCategories: {
|
|
|
3
3
|
readonly IntakeUnsupportedRuntime: "intake.unsupported-runtime";
|
|
4
4
|
readonly IntakeAttestationMissing: "intake.attestation-missing";
|
|
5
5
|
readonly IntakeMultiAppRepo: "intake.multi-app-repo";
|
|
6
|
+
readonly IntakeSourceInvalid: "intake.source-invalid";
|
|
6
7
|
readonly SecretsUnresolvable: "secrets.unresolvable";
|
|
7
8
|
readonly SecretsReferenceUnresolvable: "secrets.reference-unresolvable";
|
|
8
9
|
readonly SecretsPlaceholderUnresolved: "secrets.placeholder-unresolved";
|
|
@@ -10,8 +11,19 @@ export declare const ErrorCategories: {
|
|
|
10
11
|
readonly StorageSqliteMisclassified: "storage.sqlite-misclassified";
|
|
11
12
|
readonly StorageMappingDrift: "storage.mapping-drift";
|
|
12
13
|
readonly StorageUnavailable: "storage.unavailable";
|
|
14
|
+
readonly AiPlanBlocked: "ai.plan-blocked";
|
|
13
15
|
readonly TransformDeadlineExceeded: "transform.deadline-exceeded";
|
|
16
|
+
readonly TransformAttemptsExhausted: "transform.attempts-exhausted";
|
|
17
|
+
readonly TransformNonRetryable: "transform.non-retryable";
|
|
14
18
|
readonly TransformValidationFailed: "transform.validation-failed";
|
|
19
|
+
readonly AuthValidationSeedUnsupported: "auth.validation-seed-unsupported";
|
|
20
|
+
readonly AuthIdentityEntityUnresolvable: "auth.identity-entity-unresolvable";
|
|
21
|
+
readonly DependencyPythonRuntimeUnsupported: "dependency.python-runtime-unsupported";
|
|
22
|
+
readonly DependencyResolverUnavailable: "dependency.resolver-unavailable";
|
|
23
|
+
readonly DependencyResolutionFailed: "dependency.resolution-failed";
|
|
24
|
+
readonly DependencyLockfileStale: "dependency.lockfile-stale";
|
|
25
|
+
readonly AuroraBundleInvalid: "aurora.bundle-invalid";
|
|
26
|
+
readonly CapabilityUnsupported: "capability.unsupported";
|
|
15
27
|
readonly FrontendEnvInlinedUnfixable: "frontend.env-inlined-unfixable";
|
|
16
28
|
readonly BuildRecipeFailed: "build.recipe-failed";
|
|
17
29
|
readonly BuildImageTooLarge: "build.image-too-large";
|
|
@@ -42,5 +54,7 @@ export declare const ErrorCategories: {
|
|
|
42
54
|
readonly PromotionQueuePublicationFailed: "promotion.queue-publication-failed";
|
|
43
55
|
readonly CutoverFlipFailed: "cutover.flip-failed";
|
|
44
56
|
};
|
|
57
|
+
/** True for an exact registry entry or a concrete member of a documented family. */
|
|
58
|
+
export declare function isKnownErrorCategory(category: string): boolean;
|
|
45
59
|
/** Retryable lookup for a concrete or family-suffixed category. Unknown → false (fail closed). */
|
|
46
60
|
export declare function isRetryable(category: string): boolean;
|
|
@@ -5,6 +5,7 @@ export const ErrorCategories = {
|
|
|
5
5
|
IntakeUnsupportedRuntime: "intake.unsupported-runtime",
|
|
6
6
|
IntakeAttestationMissing: "intake.attestation-missing",
|
|
7
7
|
IntakeMultiAppRepo: "intake.multi-app-repo",
|
|
8
|
+
IntakeSourceInvalid: "intake.source-invalid",
|
|
8
9
|
SecretsUnresolvable: "secrets.unresolvable",
|
|
9
10
|
SecretsReferenceUnresolvable: "secrets.reference-unresolvable",
|
|
10
11
|
SecretsPlaceholderUnresolved: "secrets.placeholder-unresolved",
|
|
@@ -12,8 +13,19 @@ export const ErrorCategories = {
|
|
|
12
13
|
StorageSqliteMisclassified: "storage.sqlite-misclassified",
|
|
13
14
|
StorageMappingDrift: "storage.mapping-drift",
|
|
14
15
|
StorageUnavailable: "storage.unavailable",
|
|
16
|
+
AiPlanBlocked: "ai.plan-blocked",
|
|
15
17
|
TransformDeadlineExceeded: "transform.deadline-exceeded",
|
|
18
|
+
TransformAttemptsExhausted: "transform.attempts-exhausted",
|
|
19
|
+
TransformNonRetryable: "transform.non-retryable",
|
|
16
20
|
TransformValidationFailed: "transform.validation-failed",
|
|
21
|
+
AuthValidationSeedUnsupported: "auth.validation-seed-unsupported",
|
|
22
|
+
AuthIdentityEntityUnresolvable: "auth.identity-entity-unresolvable",
|
|
23
|
+
DependencyPythonRuntimeUnsupported: "dependency.python-runtime-unsupported",
|
|
24
|
+
DependencyResolverUnavailable: "dependency.resolver-unavailable",
|
|
25
|
+
DependencyResolutionFailed: "dependency.resolution-failed",
|
|
26
|
+
DependencyLockfileStale: "dependency.lockfile-stale",
|
|
27
|
+
AuroraBundleInvalid: "aurora.bundle-invalid",
|
|
28
|
+
CapabilityUnsupported: "capability.unsupported",
|
|
17
29
|
FrontendEnvInlinedUnfixable: "frontend.env-inlined-unfixable",
|
|
18
30
|
BuildRecipeFailed: "build.recipe-failed",
|
|
19
31
|
BuildImageTooLarge: "build.image-too-large",
|
|
@@ -49,6 +61,7 @@ const retryableExact = {
|
|
|
49
61
|
"intake.unsupported-runtime": false,
|
|
50
62
|
"intake.attestation-missing": false,
|
|
51
63
|
"intake.multi-app-repo": false,
|
|
64
|
+
"intake.source-invalid": false,
|
|
52
65
|
"secrets.unresolvable": false,
|
|
53
66
|
"secrets.reference-unresolvable": false,
|
|
54
67
|
"secrets.placeholder-unresolved": false,
|
|
@@ -56,8 +69,19 @@ const retryableExact = {
|
|
|
56
69
|
"storage.sqlite-misclassified": false,
|
|
57
70
|
"storage.mapping-drift": false,
|
|
58
71
|
"storage.unavailable": true,
|
|
72
|
+
"ai.plan-blocked": false,
|
|
59
73
|
"transform.deadline-exceeded": true,
|
|
74
|
+
"transform.attempts-exhausted": false,
|
|
75
|
+
"transform.non-retryable": false,
|
|
60
76
|
"transform.validation-failed": true,
|
|
77
|
+
"auth.validation-seed-unsupported": false,
|
|
78
|
+
"auth.identity-entity-unresolvable": false,
|
|
79
|
+
"dependency.python-runtime-unsupported": false,
|
|
80
|
+
"dependency.resolver-unavailable": true,
|
|
81
|
+
"dependency.resolution-failed": false,
|
|
82
|
+
"dependency.lockfile-stale": false,
|
|
83
|
+
"aurora.bundle-invalid": false,
|
|
84
|
+
"capability.unsupported": false,
|
|
61
85
|
"frontend.env-inlined-unfixable": false,
|
|
62
86
|
"build.recipe-failed": false,
|
|
63
87
|
"build.image-too-large": false,
|
|
@@ -90,10 +114,15 @@ const retryableExact = {
|
|
|
90
114
|
};
|
|
91
115
|
const retryableFamilies = {
|
|
92
116
|
"storage.unsupported-engine": false,
|
|
93
|
-
"transform.non-retryable": false,
|
|
94
117
|
"quota.exceeded": false,
|
|
95
118
|
"uncategorized": false,
|
|
96
119
|
};
|
|
120
|
+
/** True for an exact registry entry or a concrete member of a documented family. */
|
|
121
|
+
export function isKnownErrorCategory(category) {
|
|
122
|
+
if (category in retryableExact)
|
|
123
|
+
return true;
|
|
124
|
+
return Object.keys(retryableFamilies).some(prefix => category === prefix || category.startsWith(prefix + '.'));
|
|
125
|
+
}
|
|
97
126
|
/** Retryable lookup for a concrete or family-suffixed category. Unknown → false (fail closed). */
|
|
98
127
|
export function isRetryable(category) {
|
|
99
128
|
if (category in retryableExact)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Structured output an agent must return from one Harbour transformation attempt. Handed to the agent as its output schema, then decoded and semantically re-validated by the control plane, which remains the authority. The enum on applied_playbooks.items is the one dynamic part: the adapter injects the names of the playbooks supplied for that invocation before writing the document, so the model is structurally prevented from naming a playbook it was not given. Application-secret handling was removed platform-wide, so this document carries no redactions and no secrets fields. A deployable report must also carry preservation_plan: the agent's own grounded smoke tests (one to three happy_path user journeys plus a boundary_check per behaviour its playbooks or edits could regress) that the validation cell executes after transformation, and an uncovered list naming every boundary it could not test and why. An unsupported report carries only application.unsupported and no plan.
|
|
2
|
+
* Structured output an agent must return from one Harbour transformation attempt. Handed to the agent as its output schema, then decoded and semantically re-validated by the control plane, which remains the authority. The enum on applied_playbooks.items is the one dynamic part: the adapter injects the names of the playbooks supplied for that invocation before writing the document, so the model is structurally prevented from naming a playbook it was not given. Application-secret handling was removed platform-wide, so this document carries no redactions and no secrets fields. A deployable report must also carry preservation_plan: the agent's own grounded smoke tests (one to three happy_path user journeys plus a boundary_check per behaviour its playbooks or edits could regress) that the validation cell executes after transformation, and an uncovered list naming every boundary it could not test and why. It also carries validation_fixtures: null when no external fixture is needed, or a bounded generic HTTP/WebSocket fixture declaration for that one run. An unsupported report carries only application.unsupported and no plan or fixtures.
|
|
3
3
|
*/
|
|
4
4
|
export type TransformReport = {
|
|
5
5
|
/**
|
|
@@ -29,11 +29,10 @@ export type TransformReport = {
|
|
|
29
29
|
}[];
|
|
30
30
|
};
|
|
31
31
|
database?: {
|
|
32
|
-
mode: 'none' | 'sql'
|
|
32
|
+
mode: 'none' | 'sql';
|
|
33
33
|
changeType: 'none' | 'code_only' | 'schema_only' | 'code_and_schema';
|
|
34
34
|
requiresCodeChanges: boolean;
|
|
35
35
|
requiresSchemaMigration: boolean;
|
|
36
|
-
desiredSchemaPath: string;
|
|
37
36
|
/**
|
|
38
37
|
* @maxItems 128
|
|
39
38
|
*/
|
|
@@ -151,11 +150,58 @@ export type TransformReport = {
|
|
|
151
150
|
detail?: string;
|
|
152
151
|
}[];
|
|
153
152
|
};
|
|
153
|
+
/**
|
|
154
|
+
* A bounded, non-secret fixture program for this transformation's throwaway validation cell. Null means the application needs no external fixture. Bindings use application-owned logical names and explicitly inject only generated fixture URLs; fixtures describe deterministic HTTP or WebSocket exchanges without naming an application or provider and without executable code. The deployment plane semantically verifies unique fixture ids, template references, operation coverage, JSON text and safe config updates before forwarding the spec to the data plane.
|
|
155
|
+
*/
|
|
156
|
+
validation_fixtures?: {
|
|
157
|
+
version: 1;
|
|
158
|
+
/**
|
|
159
|
+
* Bounded per-run fixture requirements. logical_name is an arbitrary application-owned binding name; deployment-plane semantic validation requires it to be unique within this array.
|
|
160
|
+
*
|
|
161
|
+
* @minItems 1
|
|
162
|
+
* @maxItems 32
|
|
163
|
+
*/
|
|
164
|
+
bindings: ValidationFixtureBinding[];
|
|
165
|
+
/**
|
|
166
|
+
* @minItems 1
|
|
167
|
+
* @maxItems 32
|
|
168
|
+
*/
|
|
169
|
+
fixtures: ({
|
|
170
|
+
id: string;
|
|
171
|
+
type: 'http';
|
|
172
|
+
http: ValidationHttpFixture;
|
|
173
|
+
websocket: null;
|
|
174
|
+
} | {
|
|
175
|
+
id: string;
|
|
176
|
+
type: 'websocket';
|
|
177
|
+
http: null;
|
|
178
|
+
websocket: ValidationWebSocketFixture;
|
|
179
|
+
})[];
|
|
180
|
+
} | null;
|
|
154
181
|
application: {
|
|
155
182
|
unsupported?: {
|
|
183
|
+
/**
|
|
184
|
+
* Closed machine category selected independently from the human explanation.
|
|
185
|
+
*/
|
|
186
|
+
category: 'auth.validation-seed-unsupported' | 'auth.identity-entity-unresolvable' | 'capability.unsupported';
|
|
156
187
|
capability: string;
|
|
188
|
+
/**
|
|
189
|
+
* The exact source operation that cannot be preserved, such as a cross-document transactional write. Name a concrete operation, not an engine or product.
|
|
190
|
+
*/
|
|
191
|
+
operation: string;
|
|
157
192
|
constraint: string;
|
|
158
193
|
reason: string;
|
|
194
|
+
/**
|
|
195
|
+
* Exact source locations proving the required operation and the unsupported platform capability. Environment failures and unfinished conversion work are not evidence.
|
|
196
|
+
*
|
|
197
|
+
* @minItems 1
|
|
198
|
+
* @maxItems 32
|
|
199
|
+
*/
|
|
200
|
+
evidence: {
|
|
201
|
+
path: string;
|
|
202
|
+
line: number;
|
|
203
|
+
reason: string;
|
|
204
|
+
}[];
|
|
159
205
|
};
|
|
160
206
|
runtime?: string;
|
|
161
207
|
/**
|
|
@@ -166,22 +212,15 @@ export type TransformReport = {
|
|
|
166
212
|
* Optional bounded workload requirements, carried into the deployment plan and artifact. Null or omitted preserves standard HTTP serving. SQS jobs require platform-selected Kubernetes compute.
|
|
167
213
|
*/
|
|
168
214
|
workload?: {
|
|
169
|
-
resourceProfile: 'standard' | 'memory-1g';
|
|
215
|
+
resourceProfile: 'standard' | 'memory-1g' | 'memory-2g';
|
|
170
216
|
backgroundJobs: 'none' | 'sqs';
|
|
171
217
|
} | null;
|
|
172
218
|
/**
|
|
173
|
-
* Build-only bootstrap for authenticated browser validation. Use null when the application does not require a
|
|
219
|
+
* Build-only PostgreSQL bootstrap for authenticated browser validation. Use null when the application does not require a pre-existing database identity. The SQL file runs only in Harbour's throwaway validation database after migrations and before candidate boot. Harbour supplies the fixed probe subject and lowercased email as transaction-local settings.
|
|
174
220
|
*/
|
|
175
221
|
validationSeed?: {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
* @maxItems 64
|
|
179
|
-
*/
|
|
180
|
-
command: string[];
|
|
181
|
-
/**
|
|
182
|
-
* Existing application-owned environment variable that receives the trusted browser probe email, for example ADMIN_EMAIL.
|
|
183
|
-
*/
|
|
184
|
-
identityEmailEnvironmentVariable: string;
|
|
222
|
+
kind: 'sql';
|
|
223
|
+
path: string;
|
|
185
224
|
} | null;
|
|
186
225
|
buildKind?: 'container' | 'static';
|
|
187
226
|
topology?: 'static' | 'backend' | 'frontend_and_backend';
|
|
@@ -234,3 +273,81 @@ export type TransformReport = {
|
|
|
234
273
|
[k: string]: unknown;
|
|
235
274
|
};
|
|
236
275
|
});
|
|
276
|
+
/**
|
|
277
|
+
* @maxItems 32
|
|
278
|
+
*/
|
|
279
|
+
export type ValidationFixtureNameValuePairs = {
|
|
280
|
+
name: string;
|
|
281
|
+
value: string;
|
|
282
|
+
}[];
|
|
283
|
+
export interface ValidationFixtureBinding {
|
|
284
|
+
logical_name: string;
|
|
285
|
+
/**
|
|
286
|
+
* Optional explicit fixture association for a binding that has no URL mapping, such as a credential-only binding.
|
|
287
|
+
*/
|
|
288
|
+
fixture_id?: string;
|
|
289
|
+
/**
|
|
290
|
+
* @minItems 1
|
|
291
|
+
* @maxItems 5
|
|
292
|
+
*/
|
|
293
|
+
operations: ('http' | 'websocket' | 'email' | 'webhook' | 'ai')[];
|
|
294
|
+
/**
|
|
295
|
+
* Environment variables that receive a generated fixture URL. Values cannot carry arbitrary configuration or secrets.
|
|
296
|
+
*
|
|
297
|
+
* @maxItems 32
|
|
298
|
+
*/
|
|
299
|
+
environment: {
|
|
300
|
+
[k: string]: unknown;
|
|
301
|
+
}[];
|
|
302
|
+
/**
|
|
303
|
+
* Structured JSON or YAML keys that receive a generated fixture URL in a bounded relative application config file.
|
|
304
|
+
*
|
|
305
|
+
* @maxItems 32
|
|
306
|
+
*/
|
|
307
|
+
config: {
|
|
308
|
+
path: string;
|
|
309
|
+
format: 'json' | 'yaml';
|
|
310
|
+
key: string;
|
|
311
|
+
value: string;
|
|
312
|
+
}[];
|
|
313
|
+
}
|
|
314
|
+
export interface ValidationHttpFixture {
|
|
315
|
+
base_path: string;
|
|
316
|
+
/**
|
|
317
|
+
* @minItems 1
|
|
318
|
+
* @maxItems 64
|
|
319
|
+
*/
|
|
320
|
+
routes: {
|
|
321
|
+
operation: 'http' | 'email' | 'webhook' | 'ai';
|
|
322
|
+
request: {
|
|
323
|
+
method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
324
|
+
path: string;
|
|
325
|
+
query: ValidationFixtureNameValuePairs;
|
|
326
|
+
headers: ValidationFixtureNameValuePairs;
|
|
327
|
+
body: string;
|
|
328
|
+
};
|
|
329
|
+
response: {
|
|
330
|
+
status: number;
|
|
331
|
+
headers: ValidationFixtureNameValuePairs;
|
|
332
|
+
body: string;
|
|
333
|
+
};
|
|
334
|
+
}[];
|
|
335
|
+
}
|
|
336
|
+
export interface ValidationWebSocketFixture {
|
|
337
|
+
path: string;
|
|
338
|
+
/**
|
|
339
|
+
* Exact JSON value the fixture expects as the first client message, or null when no client message is required. JSON parsing is a semantic check.
|
|
340
|
+
*/
|
|
341
|
+
expected_json: string | null;
|
|
342
|
+
/**
|
|
343
|
+
* @minItems 1
|
|
344
|
+
* @maxItems 64
|
|
345
|
+
*/
|
|
346
|
+
send_messages: string[];
|
|
347
|
+
close: {
|
|
348
|
+
code: number;
|
|
349
|
+
reason: string;
|
|
350
|
+
} | null;
|
|
351
|
+
}
|
|
352
|
+
/** True iff validation_fixtures.bindings contains no repeated logical_name values. */
|
|
353
|
+
export declare function hasUniqueTransformReportValidationFixturesBindings(input: TransformReport): boolean;
|
|
@@ -1,3 +1,13 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
2
|
// Code generated by tools/gen/gen.mjs from schema/*.json. DO NOT EDIT.
|
|
3
|
-
|
|
3
|
+
/** True iff validation_fixtures.bindings contains no repeated logical_name values. */
|
|
4
|
+
export function hasUniqueTransformReportValidationFixturesBindings(input) {
|
|
5
|
+
const seen = new Set();
|
|
6
|
+
for (const item of input.validation_fixtures?.bindings ?? []) {
|
|
7
|
+
const value = item.logical_name;
|
|
8
|
+
if (seen.has(value))
|
|
9
|
+
return false;
|
|
10
|
+
seen.add(value);
|
|
11
|
+
}
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
@@ -14,7 +14,7 @@ export type Workload = {
|
|
|
14
14
|
* @maxItems 32
|
|
15
15
|
*/
|
|
16
16
|
export type Command = string[];
|
|
17
|
-
export type ResourceProfile = 'standard' | 'memory-1g';
|
|
17
|
+
export type ResourceProfile = 'standard' | 'memory-1g' | 'memory-2g';
|
|
18
18
|
/**
|
|
19
19
|
* Versioned provisioning input emitted by Harbour Transform. It describes runtime wiring and workload lifecycle only; PostgreSQL grants and RLS remain the database authorization authority.
|
|
20
20
|
*/
|
|
@@ -86,7 +86,7 @@ export interface ArtifactContract {
|
|
|
86
86
|
/**
|
|
87
87
|
* Reviewed CPU/memory profile selected for the application container.
|
|
88
88
|
*/
|
|
89
|
-
resource_profile?: 'standard' | 'memory-1g';
|
|
89
|
+
resource_profile?: 'standard' | 'memory-1g' | 'memory-2g';
|
|
90
90
|
/**
|
|
91
91
|
* Background-job execution mode. The sqs mode enables the governed application job queue and queue-aware scale-to-zero.
|
|
92
92
|
*/
|
|
@@ -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.
|
|
5
|
-
export const ContractPublishVersion = "0.
|
|
6
|
-
export const ContractPublishTag = "v0.
|
|
7
|
-
export const ContractSchemasDigest = "sha256:
|
|
4
|
+
export const ContractRepositoryVersion = "0.42.0.0" as const;
|
|
5
|
+
export const ContractPublishVersion = "0.42.0" as const;
|
|
6
|
+
export const ContractPublishTag = "v0.42.0" as const;
|
|
7
|
+
export const ContractSchemasDigest = "sha256:41d814f34ed6312921ca93d8421cadf9f9c0209bc77a98f7d9761fd659eea505" as const;
|
|
8
8
|
export const ContractAiFixturesDigest = "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6" as const;
|
|
9
|
-
export const ContractGeneratedGoDigest = "sha256:
|
|
10
|
-
export const ContractGeneratedTypeScriptDigest = "sha256:
|
|
9
|
+
export const ContractGeneratedGoDigest = "sha256:42a3ac3f628b252930572ae8dd3dd7bf51b5c5176daec6df8fdcc82eb73c718c" as const;
|
|
10
|
+
export const ContractGeneratedTypeScriptDigest = "sha256:30fba235330644792f77657373e9187a1937c6709b3dfc7a75f08807ea673cdb" as const;
|
package/gen-ts/data-source.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
/**
|
|
5
5
|
* Closed connector set for the Data-Access MVP.
|
|
6
6
|
*/
|
|
7
|
-
export type DataSourceConnector = 'postgres' | 'redshift' | 'bigquery' | 'databricks';
|
|
7
|
+
export type DataSourceConnector = 'postgres' | 'redshift' | 'bigquery' | 'databricks' | 'mysql';
|
|
8
8
|
/**
|
|
9
9
|
* byo = admin brought existing infrastructure; harbour_managed = Harbour provisioned it.
|
|
10
10
|
*/
|
|
@@ -49,6 +49,10 @@ export interface DataSource {
|
|
|
49
49
|
* Whether builders may request grants against this source.
|
|
50
50
|
*/
|
|
51
51
|
requestableByBuilders: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Explicit tenant-admin permission to use this source during application validation. A source must also be active and granted to the app.
|
|
54
|
+
*/
|
|
55
|
+
allowValidation?: boolean;
|
|
52
56
|
status: DataSourceStatus;
|
|
53
57
|
}
|
|
54
58
|
/**
|