@fourier-labs/harbour-contracts 0.97.0 → 0.98.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.
Files changed (32) hide show
  1. package/contract-release.json +23 -23
  2. package/dist/gen-ts/ai-governance-decision.d.ts +1 -0
  3. package/dist/gen-ts/ai-policy-snapshot.d.ts +7 -3
  4. package/dist/gen-ts/ai-pricing-revision.d.ts +1 -1
  5. package/dist/gen-ts/ai-runtime-contract.d.ts +1 -0
  6. package/dist/gen-ts/ai-trace-event.d.ts +2 -2
  7. package/dist/gen-ts/binding-classification-subject.d.ts +1 -1
  8. package/dist/gen-ts/contract-release.d.ts +6 -6
  9. package/dist/gen-ts/contract-release.js +6 -6
  10. package/dist/gen-ts/deploy-request.d.ts +2 -2
  11. package/dist/gen-ts/promotion-request.d.ts +2 -2
  12. package/dist/gen-ts/sanitized-binding-evidence.d.ts +1 -1
  13. package/dist/resolver/index.d.ts +2 -1
  14. package/dist/resolver/index.js +6 -6
  15. package/gen-ts/ai-governance-decision.ts +1 -0
  16. package/gen-ts/ai-policy-snapshot.ts +34 -3
  17. package/gen-ts/ai-pricing-revision.ts +11 -1
  18. package/gen-ts/ai-runtime-contract.ts +1 -0
  19. package/gen-ts/ai-trace-event.ts +22 -2
  20. package/gen-ts/binding-classification-subject.ts +1 -1
  21. package/gen-ts/contract-release.ts +6 -6
  22. package/gen-ts/deploy-request.ts +4 -2
  23. package/gen-ts/promotion-request.ts +4 -2
  24. package/gen-ts/sanitized-binding-evidence.ts +1 -1
  25. package/package.json +1 -1
  26. package/schema/ai-governance-decision.schema.json +2 -1
  27. package/schema/ai-policy-snapshot.schema.json +5 -4
  28. package/schema/ai-pricing-revision.schema.json +1 -1
  29. package/schema/ai-runtime-contract.schema.json +2 -1
  30. package/schema/ai-trace-event.schema.json +2 -2
  31. package/schema/binding-classification-subject.schema.json +1 -1
  32. package/schema/sanitized-binding-evidence.schema.json +1 -1
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "schema": "harbour.contract-release/1.0",
3
- "repositoryVersion": "0.97.0.0",
4
- "publishVersion": "0.97.0",
5
- "publishTag": "v0.97.0",
6
- "schemasDigest": "sha256:96d7ca6fc25f98bb0b35598d8d72eb68cabd841d4b8b644330dea37fbed0916f",
3
+ "repositoryVersion": "0.98.0.0",
4
+ "publishVersion": "0.98.0",
5
+ "publishTag": "v0.98.0",
6
+ "schemasDigest": "sha256:c5ae6c789021697c7e00bf65bb1f072b4d8a61f151a9b31e1a74486992c6c196",
7
7
  "aiFixturesDigest": "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6",
8
- "generatedGoDigest": "sha256:628254d6676684c7356611eaa434890fa28ad7cf78a487ec407d33b4aa8dad0a",
9
- "generatedTypeScriptDigest": "sha256:db0823b4134a04e599b159fab0fd439c88160541bdf67c58b568758c98a8dfcc",
8
+ "generatedGoDigest": "sha256:d8ea139537eae467b12402fac22e1a44f4e6dc50cad71e02a0083dfa6b63ee3d",
9
+ "generatedTypeScriptDigest": "sha256:95a22d7dd80f7a020e556f42a1b269a13bad0168f2872a96500deb4a184720d1",
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)"
@@ -19,14 +19,14 @@
19
19
  "schema/ai-deployment-gate-decision.schema.json": "sha256:bae1bdf91777b9a78f8da5a29f06b5de7f1e235789cf16b1bb507e85ad0243ff",
20
20
  "schema/ai-gateway-key-lifecycle-event.schema.json": "sha256:ba5cb862abe73227bee714b25247b4cacb34f11fdd1476bb5f920923fd75e2a9",
21
21
  "schema/ai-gateway-key-lookup.schema.json": "sha256:7d362ded73c0da6b433f3c73afeabea4c38c5d6fc92c391c7ded727324deddf2",
22
- "schema/ai-governance-decision.schema.json": "sha256:d650762a428350748deafd6b251cbd4a03ba564650e74204f1a77bbe923e145f",
22
+ "schema/ai-governance-decision.schema.json": "sha256:0b7bffb67306087eea0f80a0a15c748e206a6e0df7184d77bf13eae8cf2a7047",
23
23
  "schema/ai-metering-policy.schema.json": "sha256:044115938d254d914feac162219d20ee48f741cd7ad32df4613b45f9c862fe8c",
24
- "schema/ai-policy-snapshot.schema.json": "sha256:40c0c4af4245a479c9b6d11d79f107ae3a6002a83de632ee9a92deb9ae9a630b",
25
- "schema/ai-pricing-revision.schema.json": "sha256:5ddb40c23712c0cec37b733678e4bb34811f5db44a233773c21a7dfaec188375",
24
+ "schema/ai-policy-snapshot.schema.json": "sha256:e1b1c5f3006b2ff19e3f374e77a6bd107fd93b7c09e6cdecf87ecd45300ca88f",
25
+ "schema/ai-pricing-revision.schema.json": "sha256:a507c5b3d186e2dcf197715a88ee0365807e9952f402ad5f98b88ee40ae10892",
26
26
  "schema/ai-runtime-binding.schema.json": "sha256:e99f983e78478b50114e0b2c940bb5bb30a4645cfd7fbddb7e0cf161d6d28502",
27
- "schema/ai-runtime-contract.schema.json": "sha256:bfa2f8968b1c0678b328c178c7b9c6563f7a363ae04bf74a1078a1cd9679fa14",
27
+ "schema/ai-runtime-contract.schema.json": "sha256:02e0d919de3bdc1823cd51b9c0cb51ee6ecb5f4bd5c242d3ecb962e8055c90c7",
28
28
  "schema/ai-trace-event-v2.schema.json": "sha256:b479199bb6e44ea23a1da53f69943cb8f3886c433914fdb9bf9e9bdbc3dd767d",
29
- "schema/ai-trace-event.schema.json": "sha256:96d095805ce35ceac2a4cb76ebcca9188f5dd8689ed6c67e93f33c5412d2a78b",
29
+ "schema/ai-trace-event.schema.json": "sha256:d3834d8066880a7021f0d63e0042e874a8399c290b41b2c9873ff81f318a2308",
30
30
  "schema/ai-transform-event.schema.json": "sha256:b845762e653b19afdaf959f7bd1624db490cd10c760daa9aaa61fb83f2a86b6e",
31
31
  "schema/ai-transform-result.schema.json": "sha256:244e380a36957ab2dcb526ea22aaecb56b53664ce1fda6934d0021c084c99133",
32
32
  "schema/ai-verification-evidence.schema.json": "sha256:bdbc762df256d2a8dd0bdda60d4d13915ce40034cd756af9515871d145f10ad9",
@@ -34,7 +34,7 @@
34
34
  "schema/app-integrations-declaration.schema.json": "sha256:ae22b89a3ff17b6720e7eaa2b9062d09bfb9bde479b97c74e290984e94a4270b",
35
35
  "schema/app-sign-in.schema.json": "sha256:2093740131b84a69757c2e474d16e32ff5d0bf0edd6f6f8de62ede7f82988f29",
36
36
  "schema/artifact-contract.schema.json": "sha256:8047b461a1c6d07bbe867a259c57bdf5cc0fdf282cf842ec7b683a9e93713b10",
37
- "schema/binding-classification-subject.schema.json": "sha256:a8825ce652e7e00a18759c4249bd5bcd0cae552dd58440513f867e87f685133c",
37
+ "schema/binding-classification-subject.schema.json": "sha256:94028f6914ee7b657824accba27330cf7f5e4e94fd8ed1c2b95521037f49f377",
38
38
  "schema/builder-input-proposal.schema.json": "sha256:fe85cffa6d76b1e1effe1f5d75525f8fe0e1eaa3be4a304e491aa23ad72c0e72",
39
39
  "schema/data-dependency.schema.json": "sha256:b4cc2b2484e982cfed64c0f56b8f1e9d1363c71854cd71f845b24fbe7d85c971",
40
40
  "schema/data-grant-v2.schema.json": "sha256:3e3c6ef3d3b68b40479b6c15b79c5b0960b8270b84c9b5d17f59365c47512534",
@@ -69,7 +69,7 @@
69
69
  "schema/promotion-response.schema.json": "sha256:4129712d2e29d6ef21d93d4bd0bacfd60ada3f2ee0ade852824e64346b817634",
70
70
  "schema/resolved-app-serving.schema.json": "sha256:3b49268e189429310c2a5dcfd45e9d2187c80b6dbb9d329a0177e96e065c31c0",
71
71
  "schema/saas-connection.schema.json": "sha256:2f3fa1cc2ab40105a46ad5f446dd30c7c8b723c776bd6e5886d8285b55af32b1",
72
- "schema/sanitized-binding-evidence.schema.json": "sha256:1191ab88e2764df927e5f17837674cebebe068d480da2b2fdb390e589f96b51f",
72
+ "schema/sanitized-binding-evidence.schema.json": "sha256:8aca62c4955771aa379574d3e7f78267c9c4f8018f637ed3f1feb2e47d1bf31b",
73
73
  "schema/secret-reference.schema.json": "sha256:db4e3c2c6a2dbd72d7ea0f9c91cb3b2343a7e67b601996c6818b2ef08e440895",
74
74
  "schema/security-scan-input-v2.schema.json": "sha256:0d418342078c9b5046ea6f4bef3c2c57539285dfee99cc0850d4f0d03739ee13",
75
75
  "schema/security-verdict.schema.json": "sha256:f4a1c109ed27779374c52daccb0a96589613db4f3cf030a8b0e4713bf1b3dbff",
@@ -118,7 +118,7 @@
118
118
  "gen-go/integration_execute_input_rules_test.go": "sha256:bc107e6c638512d9a3ffbc98800c181f642d8310bad96f2a528f493cc243b249",
119
119
  "gen-go/integration_operations.go": "sha256:b53b3cd092908db26db28e17fb035dfaeb476d922b6a3930eb9614267cb806f0",
120
120
  "gen-go/schema_documents.go": "sha256:c19c0d540f602ee997a84b90e20702d9bc63ed7d27aec267e76c04655fc182e0",
121
- "gen-go/types.go": "sha256:7c19400ceaa52ce8ffc92803cd050aa07db4c4e98b7df21c3b1659a940d91c2c",
121
+ "gen-go/types.go": "sha256:3eff8027970500245559d3cfd3aea2b4ee763e8c0e116d1c730138cbe844205a",
122
122
  "gen-go/version_state.go": "sha256:4ef8abb126414c0025cf2c59bc9c79a74ef4a2ff89e8f316cbf05acc872371c1"
123
123
  },
124
124
  "generatedTypeScript": {
@@ -131,14 +131,14 @@
131
131
  "gen-ts/ai-gateway-key-lifecycle-event.ts": "sha256:8f1ab4774be1959e82c97da20ec8b293f3f10262f95393d2ae57e4c7817353cb",
132
132
  "gen-ts/ai-gateway-key-lookup.ts": "sha256:21e1d9020b015272119af8419485aca40f5e075701aec23525906017c7b5eb66",
133
133
  "gen-ts/ai-gateway-key-token.ts": "sha256:ff6551ad3332cc665878d7ec93f42ce185c375e637531b2fbc82c697b877e784",
134
- "gen-ts/ai-governance-decision.ts": "sha256:4a04e116f2ec281104e616a8ba414f23a9d34d398f850888d27510173e39c5c3",
134
+ "gen-ts/ai-governance-decision.ts": "sha256:607806483ae210012cea76625b7b32f70a3d374d17e6187a27d719c7811b8b72",
135
135
  "gen-ts/ai-metering-policy.ts": "sha256:dd261d57646a509cd46efaefac4aad58d018c7f7da98326dd8859e4ce951c56a",
136
- "gen-ts/ai-policy-snapshot.ts": "sha256:d0515a20dae4c6ae25220d1bb5025339918c8c9bc66817ea3fb2090a9b6bed02",
137
- "gen-ts/ai-pricing-revision.ts": "sha256:48afdea7fb09b9a392147a0a62bcee013157a9d536c07e0782ef28781a3000de",
136
+ "gen-ts/ai-policy-snapshot.ts": "sha256:977299257cfd6d7cb64526adbe9c01d470874e533697a8a6bc3efd8933a557e4",
137
+ "gen-ts/ai-pricing-revision.ts": "sha256:48413adcf74e60390296f04bdc536f8c5469ca07f8aaa4449de2a1203e37ed66",
138
138
  "gen-ts/ai-runtime-binding.ts": "sha256:3930989c01e2b90041b5a8f9eaf9d8612854c9088090ca82e5687b85f26e106f",
139
- "gen-ts/ai-runtime-contract.ts": "sha256:6ed3bde6ab7a3f7e2e298c2904eb52d35e06699c5e284f98fb39abfc76858beb",
139
+ "gen-ts/ai-runtime-contract.ts": "sha256:9c252777abc88d154d1a8479dd22f268c6abda28669a0940aa0454868661bb46",
140
140
  "gen-ts/ai-trace-event-v2.ts": "sha256:8c994355f290864da1cf42850c3eceb0e4a1567b45ed989de865213430d3ce0e",
141
- "gen-ts/ai-trace-event.ts": "sha256:53a74d014c59c059256ea855a100a209d9d4e83c5f95ae8e639073e1182c62dd",
141
+ "gen-ts/ai-trace-event.ts": "sha256:6d03ba7848c513a54bb230c138d213cdac7064ad439742e24c0640438335447d",
142
142
  "gen-ts/ai-transform-event.ts": "sha256:c8b520e01ce12b0e3a5ebe03a3ca63cc83368f26e1eef933de732c4fc1c504f9",
143
143
  "gen-ts/ai-transform-result.ts": "sha256:208c66b2aeb425c0cbcc18b7191f6e8989443f2b2c1690648e0e06cc1448ce25",
144
144
  "gen-ts/ai-verification-evidence.ts": "sha256:979439d77f8b47631d1eb3b6c3c54ea6fec41089d2a51dc815fd370b1c4917fc",
@@ -147,13 +147,13 @@
147
147
  "gen-ts/app-sign-in.ts": "sha256:bf88671c00e9d9badb5ffc961a7e803cf92cee5a98c2f6c9e3172bbf5aaf0424",
148
148
  "gen-ts/artifact-contract.ts": "sha256:4a6dc6d2caaeed4bb2066cc8a333e6e09e5a0d4745e0b1038293d54ab9403aeb",
149
149
  "gen-ts/binding-classification-digest-helper.ts": "sha256:40fc7d85b4c3f3ffc5caf7d7950c62d013c83ee42058c7453b2100d95817f167",
150
- "gen-ts/binding-classification-subject.ts": "sha256:c409a3fd7b942b50419632c51d9a79474fb30d6374bdc79c0e25c73618e800c3",
150
+ "gen-ts/binding-classification-subject.ts": "sha256:69a6a9770f667948f7ac258c61a7c8267b774893a32de38eb00daeb3cc6220af",
151
151
  "gen-ts/builder-input-proposal.ts": "sha256:b0108c3787873d3cf1a39f00967379418a6766275d3474cfa55f5a9d93ead174",
152
152
  "gen-ts/data-dependency.ts": "sha256:259f19e2759395d72ead90b8ed74a6dcef0c2641124f4f182823138cfd19bedf",
153
153
  "gen-ts/data-grant-v2.ts": "sha256:87a67c80fc191575ec516c4fa787b9a3f38c8933915a9f1a3edc268929229f0b",
154
154
  "gen-ts/data-grant.ts": "sha256:2358579d8aa1e57b01a6f2b0eacce5531e7f21ef226404c9809925365e0d6155",
155
155
  "gen-ts/data-source.ts": "sha256:2566f0d5c72e44278869f55211cf3d433aeb3552e57ae0ace0ff0b85e769dde6",
156
- "gen-ts/deploy-request.ts": "sha256:913245577a95354849d3a8cb43fbaedbf895efe7b653c8502d25edfa22b7a864",
156
+ "gen-ts/deploy-request.ts": "sha256:9581295f0955caf443bb94bdbdd79f168856ad1fd61009002a729bc3483b113f",
157
157
  "gen-ts/deploy-response.ts": "sha256:364d9f1acf32e491498237cdd3f402d5f8e102f208db7748034f4ec68c6a6137",
158
158
  "gen-ts/deployment-app-registration.ts": "sha256:553583145f210d8ea20e5381054e428f61683a8bde3210f92c75ff16a0cddfb4",
159
159
  "gen-ts/deployment-continuation.ts": "sha256:cc9f63af4d0da5086a79103789e4f043783b75b4ed11c6512f044439a551a79c",
@@ -182,12 +182,12 @@
182
182
  "gen-ts/kit-lock.ts": "sha256:06bddeaf1e2c449c9cc0dbbc696210355a9005349c604d4050eb22385fb4c22e",
183
183
  "gen-ts/kvs-routing-entry.ts": "sha256:d92e85ee9f257d77850d1d3aac9438e2055f38084ff84a48fcedae239d47d4ca",
184
184
  "gen-ts/mail-arrival-event.ts": "sha256:deb342c7f930a2c7bf66a46e4c0973e3b9047cd9725e714ccaeab8c64a89d25f",
185
- "gen-ts/promotion-request.ts": "sha256:9db88cef67f777a16bac628039ec3f582acb9e8cfff6fb592b30d0a0e55abc68",
185
+ "gen-ts/promotion-request.ts": "sha256:ac87da1d4b43cc4418215fd26e154830a78b58dfa9a83ae0e7e073e50ccc871e",
186
186
  "gen-ts/promotion-response.ts": "sha256:f1c9cafac96faeb02a443a31786f67714e818f38d90108e7af41958396524d6f",
187
187
  "gen-ts/resolved-app-serving.ts": "sha256:3264e85827be47bf391781cb13a1e58318d356f7bee8c2ff3e5b00a062253b23",
188
188
  "gen-ts/saas-connection.ts": "sha256:25480a015e27d8e49d68fabcb12e479118ab4a89aeac4e420acb54da3d807a0c",
189
189
  "gen-ts/sanitized-binding-digest-helper.ts": "sha256:c47d7fdc20500e2e72c23fe39ecdd610fc397c47fcba51335ebec3c380fe6872",
190
- "gen-ts/sanitized-binding-evidence.ts": "sha256:f3fb7b1d7d2e0929eb0ea981eaf32db3104010647185f6ae59f67167d42538a9",
190
+ "gen-ts/sanitized-binding-evidence.ts": "sha256:fb3c753ebba1caf71bc85afee13db27172c17208b89258880e46edc7169b2744",
191
191
  "gen-ts/secret-reference.ts": "sha256:731fbcde7315cb4128d5b01bdbe6e6f248f13c7ad8dea04a3a4e927ac4890198",
192
192
  "gen-ts/security-scan-input-v2.ts": "sha256:cccbfc5dae0ea5a328e6b15525ac190a0aae522e3220dffe7e6c80c445d54610",
193
193
  "gen-ts/security-verdict.ts": "sha256:beef7e4e23b385f3b18579f43bb4eb92b19aeef9e5089f3e9a149bf0067be4e8",
@@ -74,6 +74,7 @@ export interface AiDecisionRuntimeContract {
74
74
  image?: string;
75
75
  video?: string;
76
76
  realtime?: string;
77
+ document?: string;
77
78
  };
78
79
  policyDigest: AiDecisionDigest;
79
80
  /**
@@ -90,7 +90,7 @@ export interface AiPolicyClassificationMinimum {
90
90
  }
91
91
  export interface AiPolicyProvider {
92
92
  id: AiPolicyIdentifier;
93
- provider: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'elevenlabs' | 'deepgram' | 'higgsfield';
93
+ provider: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'elevenlabs' | 'deepgram' | 'higgsfield' | 'mistral' | 'datalab';
94
94
  baseUrl?: string;
95
95
  credentialSecretRef: string;
96
96
  enabled: boolean;
@@ -103,7 +103,7 @@ export interface AiPolicyModel {
103
103
  * @minItems 1
104
104
  * @maxItems 2
105
105
  */
106
- capabilities: ('generation' | 'embeddings' | 'transcription' | 'translation' | 'speech' | 'image' | 'video' | 'realtime')[];
106
+ capabilities: ('generation' | 'embeddings' | 'transcription' | 'translation' | 'speech' | 'image' | 'video' | 'realtime' | 'document')[];
107
107
  approved: boolean;
108
108
  pricing: AiPolicyPricing;
109
109
  /**
@@ -138,12 +138,16 @@ export interface AiPolicyPricing {
138
138
  audio_characters?: number;
139
139
  image_count?: number;
140
140
  video_seconds?: number;
141
+ /**
142
+ * Price per page read by document OCR (ADR 0043).
143
+ */
144
+ document_pages?: number;
141
145
  };
142
146
  }
143
147
  export interface AiPolicyRoute {
144
148
  alias: AiPolicyIdentifier;
145
149
  version: number;
146
- capability: 'generation' | 'embeddings' | 'transcription' | 'translation' | 'speech' | 'image' | 'video' | 'realtime';
150
+ capability: 'generation' | 'embeddings' | 'transcription' | 'translation' | 'speech' | 'image' | 'video' | 'realtime' | 'document';
147
151
  /**
148
152
  * @minItems 1
149
153
  * @maxItems 16
@@ -6,7 +6,7 @@ export type AiPricingDigest = string;
6
6
  export interface AiPricingRevision {
7
7
  schema: 'harbour.ai-pricing-revision/2.0';
8
8
  revisionId: AiPricingIdentifier;
9
- provider: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'elevenlabs' | 'deepgram' | 'higgsfield';
9
+ provider: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'elevenlabs' | 'deepgram' | 'higgsfield' | 'mistral' | 'datalab';
10
10
  providerModel: string;
11
11
  region?: AiPricingIdentifier;
12
12
  currency: 'USD';
@@ -27,6 +27,7 @@ export interface AiRuntimeContract {
27
27
  image?: AiRuntimeModelAlias;
28
28
  video?: AiRuntimeModelAlias;
29
29
  realtime?: AiRuntimeModelAlias;
30
+ document?: AiRuntimeModelAlias;
30
31
  };
31
32
  policyDigest: AiRuntimeDigest;
32
33
  /**
@@ -14,7 +14,7 @@ export type AiTraceEvent = {
14
14
  routeRevision?: string;
15
15
  requestedModel?: string;
16
16
  governedModelAlias?: string;
17
- provider?: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'elevenlabs' | 'deepgram' | 'higgsfield';
17
+ provider?: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'elevenlabs' | 'deepgram' | 'higgsfield' | 'mistral' | 'datalab';
18
18
  providerModel?: string;
19
19
  outcome: 'succeeded' | 'blocked' | 'failed' | 'cancelled';
20
20
  /**
@@ -45,7 +45,7 @@ export type AiTraceIdentifier = string;
45
45
  export type AiTraceDigest = string;
46
46
  export type AiTraceAttempt = {
47
47
  attempt: number;
48
- provider: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'elevenlabs' | 'deepgram' | 'higgsfield';
48
+ provider: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'elevenlabs' | 'deepgram' | 'higgsfield' | 'mistral' | 'datalab';
49
49
  providerModel: string;
50
50
  priceRevision: AiTraceIdentifier;
51
51
  outcome: 'succeeded' | 'failed' | 'timed_out' | 'cancelled';
@@ -15,7 +15,7 @@ export type BindingClassificationEntry = {
15
15
  category?: BindingClassificationCredentialCategory;
16
16
  requestedAiMappingId?: BindingClassificationIdentifier;
17
17
  };
18
- export type BindingClassificationProviderId = 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield';
18
+ export type BindingClassificationProviderId = 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield' | 'mistral' | 'datalab';
19
19
  /**
20
20
  * Closed current credential category. Add a reviewed contract version before supporting another credential mechanism.
21
21
  */
@@ -1,7 +1,7 @@
1
- export declare const ContractRepositoryVersion: "0.97.0.0";
2
- export declare const ContractPublishVersion: "0.97.0";
3
- export declare const ContractPublishTag: "v0.97.0";
4
- export declare const ContractSchemasDigest: "sha256:96d7ca6fc25f98bb0b35598d8d72eb68cabd841d4b8b644330dea37fbed0916f";
1
+ export declare const ContractRepositoryVersion: "0.98.0.0";
2
+ export declare const ContractPublishVersion: "0.98.0";
3
+ export declare const ContractPublishTag: "v0.98.0";
4
+ export declare const ContractSchemasDigest: "sha256:c5ae6c789021697c7e00bf65bb1f072b4d8a61f151a9b31e1a74486992c6c196";
5
5
  export declare const ContractAiFixturesDigest: "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6";
6
- export declare const ContractGeneratedGoDigest: "sha256:628254d6676684c7356611eaa434890fa28ad7cf78a487ec407d33b4aa8dad0a";
7
- export declare const ContractGeneratedTypeScriptDigest: "sha256:db0823b4134a04e599b159fab0fd439c88160541bdf67c58b568758c98a8dfcc";
6
+ export declare const ContractGeneratedGoDigest: "sha256:d8ea139537eae467b12402fac22e1a44f4e6dc50cad71e02a0083dfa6b63ee3d";
7
+ export declare const ContractGeneratedTypeScriptDigest: "sha256:95a22d7dd80f7a020e556f42a1b269a13bad0168f2872a96500deb4a184720d1";
@@ -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.97.0.0";
4
- export const ContractPublishVersion = "0.97.0";
5
- export const ContractPublishTag = "v0.97.0";
6
- export const ContractSchemasDigest = "sha256:96d7ca6fc25f98bb0b35598d8d72eb68cabd841d4b8b644330dea37fbed0916f";
3
+ export const ContractRepositoryVersion = "0.98.0.0";
4
+ export const ContractPublishVersion = "0.98.0";
5
+ export const ContractPublishTag = "v0.98.0";
6
+ export const ContractSchemasDigest = "sha256:c5ae6c789021697c7e00bf65bb1f072b4d8a61f151a9b31e1a74486992c6c196";
7
7
  export const ContractAiFixturesDigest = "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6";
8
- export const ContractGeneratedGoDigest = "sha256:628254d6676684c7356611eaa434890fa28ad7cf78a487ec407d33b4aa8dad0a";
9
- export const ContractGeneratedTypeScriptDigest = "sha256:db0823b4134a04e599b159fab0fd439c88160541bdf67c58b568758c98a8dfcc";
8
+ export const ContractGeneratedGoDigest = "sha256:d8ea139537eae467b12402fac22e1a44f4e6dc50cad71e02a0083dfa6b63ee3d";
9
+ export const ContractGeneratedTypeScriptDigest = "sha256:95a22d7dd80f7a020e556f42a1b269a13bad0168f2872a96500deb4a184720d1";
@@ -21,7 +21,7 @@ export type DeployRequestEnvironmentBinding1 = {
21
21
  type BindingClassificationEntry = {
22
22
  kind: 'configuration' | 'secret' | 'provider_credential';
23
23
  confidence: 'high' | 'low';
24
- providerId?: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield';
24
+ providerId?: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield' | 'mistral' | 'datalab';
25
25
  /**
26
26
  * Closed current credential category. Add a reviewed contract version before supporting another credential mechanism.
27
27
  */
@@ -144,6 +144,6 @@ interface BindingClassificationSubject {
144
144
  }
145
145
  interface BindingClassificationAiMapping {
146
146
  mappingVersion: string;
147
- providerId: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield';
147
+ providerId: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield' | 'mistral' | 'datalab';
148
148
  }
149
149
  export {};
@@ -21,7 +21,7 @@ export type PromotionRequestSecretBinding1 = {
21
21
  type BindingClassificationEntry = {
22
22
  kind: 'configuration' | 'secret' | 'provider_credential';
23
23
  confidence: 'high' | 'low';
24
- providerId?: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield';
24
+ providerId?: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield' | 'mistral' | 'datalab';
25
25
  /**
26
26
  * Closed current credential category. Add a reviewed contract version before supporting another credential mechanism.
27
27
  */
@@ -94,6 +94,6 @@ interface BindingClassificationSubject {
94
94
  }
95
95
  interface BindingClassificationAiMapping {
96
96
  mappingVersion: string;
97
- providerId: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield';
97
+ providerId: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield' | 'mistral' | 'datalab';
98
98
  }
99
99
  export {};
@@ -13,7 +13,7 @@ export type SanitizedRuntimeBinding = {
13
13
  */
14
14
  secretRef?: string;
15
15
  };
16
- export type SanitizedBindingProviderId = 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield';
16
+ export type SanitizedBindingProviderId = 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield' | 'mistral' | 'datalab';
17
17
  /**
18
18
  * Immutable DCP allocation receipt and sanitized runtime-binding set for one exact allocated version and normalized source revision. DCP persists this evidence atomically with version admission before publish or provisioning. classificationDigest chains to the caller's pre-allocation BindingClassificationSubject; bindings contain only approved configuration, app secrets or approved data-source credential references and never an AI-mapping-owned provider credential.
19
19
  */
@@ -42,7 +42,7 @@ export type { AiPolicySnapshot, AiPolicyGuardrailRule, AiPolicyGuardrailParamete
42
42
  * revision rather than guessed at. Bump on ANY change to the merge rules, the
43
43
  * platform baseline, or the classification minimums. */
44
44
  export declare const RESOLVER_VERSION = "1.0.0";
45
- export type AiProviderType = "openai" | "anthropic" | "gemini" | "openrouter" | "deepseek" | "elevenlabs" | "deepgram" | "higgsfield";
45
+ export type AiProviderType = "openai" | "anthropic" | "gemini" | "openrouter" | "deepseek" | "elevenlabs" | "deepgram" | "higgsfield" | "mistral" | "datalab";
46
46
  export type AiCaptureMode = "OFF" | "BEST_EFFORT" | "REQUIRED";
47
47
  export type AiDataClassification = "Green" | "Yellow" | "Orange" | "Red";
48
48
  export type AiGuardrailAction = "ALLOW" | "OBSERVE" | "REDACT" | "BLOCK";
@@ -160,6 +160,7 @@ export type AiModelAliasAssignment = {
160
160
  image?: string;
161
161
  video?: string;
162
162
  realtime?: string;
163
+ document?: string;
163
164
  };
164
165
  declare const narrowedBrand: unique symbol;
165
166
  /** Granted only by the narrowing combinators (`mergeKeyedFamily`,
@@ -49,9 +49,9 @@ const SECRET_OUTPUT_GUARDRAIL = { ruleId: "platform.secret.output", detectorId:
49
49
  const MAX_REQUEST_BYTES = 20 * 1024 * 1024;
50
50
  export const AI_PLATFORM_BASELINE = {
51
51
  schema: "harbour.ai-platform-baseline/1.0",
52
- artifactVersion: "1.1.0",
52
+ artifactVersion: "1.2.0",
53
53
  controls: {
54
- permittedProviderTypes: ["anthropic", "gemini", "higgsfield", "openai", "openrouter"],
54
+ permittedProviderTypes: ["anthropic", "datalab", "gemini", "higgsfield", "mistral", "openai", "openrouter"],
55
55
  requireApprovedModels: false,
56
56
  maxCaptureMode: "BEST_EFFORT",
57
57
  maxRetentionDays: 90,
@@ -70,11 +70,11 @@ export const AI_PLATFORM_BASELINE = {
70
70
  * and are versioned by `artifactVersion` plus `RESOLVER_VERSION`. */
71
71
  export const AI_CLASSIFICATION_MINIMUMS = {
72
72
  schema: "harbour.ai-classification-minimums/1.0",
73
- artifactVersion: "1.1.0",
73
+ artifactVersion: "1.2.0",
74
74
  defaultClassification: "Yellow",
75
75
  classes: {
76
76
  Green: {
77
- permittedProviderTypes: ["anthropic", "gemini", "higgsfield", "openai", "openrouter"],
77
+ permittedProviderTypes: ["anthropic", "datalab", "gemini", "higgsfield", "mistral", "openai", "openrouter"],
78
78
  requireApprovedModels: false,
79
79
  maxCaptureMode: "BEST_EFFORT",
80
80
  maxRetentionDays: 90,
@@ -88,7 +88,7 @@ export const AI_CLASSIFICATION_MINIMUMS = {
88
88
  requiredGuardrails: [],
89
89
  },
90
90
  Yellow: {
91
- permittedProviderTypes: ["anthropic", "gemini", "higgsfield", "openai", "openrouter"],
91
+ permittedProviderTypes: ["anthropic", "datalab", "gemini", "higgsfield", "mistral", "openai", "openrouter"],
92
92
  requireApprovedModels: true,
93
93
  maxCaptureMode: "BEST_EFFORT",
94
94
  maxRetentionDays: 60,
@@ -276,7 +276,7 @@ export function mergeKeyedFamily(tenant, application, rules) {
276
276
  * another route. `{ ...tenant, ...application }` made the application the
277
277
  * authority for both. */
278
278
  export function mergeModelAliases(tenant, application) {
279
- const merged = ["generation", "embeddings", "transcription", "translation", "speech", "image", "video", "realtime"].map(capability => {
279
+ const merged = ["generation", "embeddings", "transcription", "translation", "speech", "image", "video", "realtime", "document"].map(capability => {
280
280
  const assigned = application[capability];
281
281
  if (assigned === undefined)
282
282
  return {};
@@ -78,6 +78,7 @@ export interface AiDecisionRuntimeContract {
78
78
  image?: string;
79
79
  video?: string;
80
80
  realtime?: string;
81
+ document?: string;
81
82
  };
82
83
  policyDigest: AiDecisionDigest;
83
84
  /**
@@ -94,7 +94,17 @@ export interface AiPolicyClassificationMinimum {
94
94
  }
95
95
  export interface AiPolicyProvider {
96
96
  id: AiPolicyIdentifier;
97
- provider: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'elevenlabs' | 'deepgram' | 'higgsfield';
97
+ provider:
98
+ | 'openai'
99
+ | 'anthropic'
100
+ | 'gemini'
101
+ | 'openrouter'
102
+ | 'deepseek'
103
+ | 'elevenlabs'
104
+ | 'deepgram'
105
+ | 'higgsfield'
106
+ | 'mistral'
107
+ | 'datalab';
98
108
  baseUrl?: string;
99
109
  credentialSecretRef: string;
100
110
  enabled: boolean;
@@ -108,7 +118,15 @@ export interface AiPolicyModel {
108
118
  * @maxItems 2
109
119
  */
110
120
  capabilities: (
111
- 'generation' | 'embeddings' | 'transcription' | 'translation' | 'speech' | 'image' | 'video' | 'realtime'
121
+ | 'generation'
122
+ | 'embeddings'
123
+ | 'transcription'
124
+ | 'translation'
125
+ | 'speech'
126
+ | 'image'
127
+ | 'video'
128
+ | 'realtime'
129
+ | 'document'
112
130
  )[];
113
131
  approved: boolean;
114
132
  pricing: AiPolicyPricing;
@@ -144,12 +162,25 @@ export interface AiPolicyPricing {
144
162
  audio_characters?: number;
145
163
  image_count?: number;
146
164
  video_seconds?: number;
165
+ /**
166
+ * Price per page read by document OCR (ADR 0043).
167
+ */
168
+ document_pages?: number;
147
169
  };
148
170
  }
149
171
  export interface AiPolicyRoute {
150
172
  alias: AiPolicyIdentifier;
151
173
  version: number;
152
- capability: 'generation' | 'embeddings' | 'transcription' | 'translation' | 'speech' | 'image' | 'video' | 'realtime';
174
+ capability:
175
+ | 'generation'
176
+ | 'embeddings'
177
+ | 'transcription'
178
+ | 'translation'
179
+ | 'speech'
180
+ | 'image'
181
+ | 'video'
182
+ | 'realtime'
183
+ | 'document';
153
184
  /**
154
185
  * @minItems 1
155
186
  * @maxItems 16
@@ -10,7 +10,17 @@ export type AiPricingDigest = string;
10
10
  export interface AiPricingRevision {
11
11
  schema: 'harbour.ai-pricing-revision/2.0';
12
12
  revisionId: AiPricingIdentifier;
13
- provider: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'elevenlabs' | 'deepgram' | 'higgsfield';
13
+ provider:
14
+ | 'openai'
15
+ | 'anthropic'
16
+ | 'gemini'
17
+ | 'openrouter'
18
+ | 'deepseek'
19
+ | 'elevenlabs'
20
+ | 'deepgram'
21
+ | 'higgsfield'
22
+ | 'mistral'
23
+ | 'datalab';
14
24
  providerModel: string;
15
25
  region?: AiPricingIdentifier;
16
26
  currency: 'USD';
@@ -31,6 +31,7 @@ export interface AiRuntimeContract {
31
31
  image?: AiRuntimeModelAlias;
32
32
  video?: AiRuntimeModelAlias;
33
33
  realtime?: AiRuntimeModelAlias;
34
+ document?: AiRuntimeModelAlias;
34
35
  };
35
36
  policyDigest: AiRuntimeDigest;
36
37
  /**
@@ -17,7 +17,17 @@ export type AiTraceEvent = {
17
17
  routeRevision?: string;
18
18
  requestedModel?: string;
19
19
  governedModelAlias?: string;
20
- provider?: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'elevenlabs' | 'deepgram' | 'higgsfield';
20
+ provider?:
21
+ | 'openai'
22
+ | 'anthropic'
23
+ | 'gemini'
24
+ | 'openrouter'
25
+ | 'deepseek'
26
+ | 'elevenlabs'
27
+ | 'deepgram'
28
+ | 'higgsfield'
29
+ | 'mistral'
30
+ | 'datalab';
21
31
  providerModel?: string;
22
32
  outcome: 'succeeded' | 'blocked' | 'failed' | 'cancelled';
23
33
  /**
@@ -48,7 +58,17 @@ export type AiTraceIdentifier = string;
48
58
  export type AiTraceDigest = string;
49
59
  export type AiTraceAttempt = {
50
60
  attempt: number;
51
- provider: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'elevenlabs' | 'deepgram' | 'higgsfield';
61
+ provider:
62
+ | 'openai'
63
+ | 'anthropic'
64
+ | 'gemini'
65
+ | 'openrouter'
66
+ | 'deepseek'
67
+ | 'elevenlabs'
68
+ | 'deepgram'
69
+ | 'higgsfield'
70
+ | 'mistral'
71
+ | 'datalab';
52
72
  providerModel: string;
53
73
  priceRevision: AiTraceIdentifier;
54
74
  outcome: 'succeeded' | 'failed' | 'timed_out' | 'cancelled';
@@ -19,7 +19,7 @@ export type BindingClassificationEntry = {
19
19
  requestedAiMappingId?: BindingClassificationIdentifier;
20
20
  };
21
21
  export type BindingClassificationProviderId =
22
- 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield';
22
+ 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield' | 'mistral' | 'datalab';
23
23
  /**
24
24
  * Closed current credential category. Add a reviewed contract version before supporting another credential mechanism.
25
25
  */
@@ -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.97.0.0" as const;
5
- export const ContractPublishVersion = "0.97.0" as const;
6
- export const ContractPublishTag = "v0.97.0" as const;
7
- export const ContractSchemasDigest = "sha256:96d7ca6fc25f98bb0b35598d8d72eb68cabd841d4b8b644330dea37fbed0916f" as const;
4
+ export const ContractRepositoryVersion = "0.98.0.0" as const;
5
+ export const ContractPublishVersion = "0.98.0" as const;
6
+ export const ContractPublishTag = "v0.98.0" as const;
7
+ export const ContractSchemasDigest = "sha256:c5ae6c789021697c7e00bf65bb1f072b4d8a61f151a9b31e1a74486992c6c196" as const;
8
8
  export const ContractAiFixturesDigest = "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6" as const;
9
- export const ContractGeneratedGoDigest = "sha256:628254d6676684c7356611eaa434890fa28ad7cf78a487ec407d33b4aa8dad0a" as const;
10
- export const ContractGeneratedTypeScriptDigest = "sha256:db0823b4134a04e599b159fab0fd439c88160541bdf67c58b568758c98a8dfcc" as const;
9
+ export const ContractGeneratedGoDigest = "sha256:d8ea139537eae467b12402fac22e1a44f4e6dc50cad71e02a0083dfa6b63ee3d" as const;
10
+ export const ContractGeneratedTypeScriptDigest = "sha256:95a22d7dd80f7a020e556f42a1b269a13bad0168f2872a96500deb4a184720d1" as const;
@@ -24,7 +24,8 @@ export type DeployRequestEnvironmentBinding1 = {
24
24
  type BindingClassificationEntry = {
25
25
  kind: 'configuration' | 'secret' | 'provider_credential';
26
26
  confidence: 'high' | 'low';
27
- providerId?: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield';
27
+ providerId?:
28
+ 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield' | 'mistral' | 'datalab';
28
29
  /**
29
30
  * Closed current credential category. Add a reviewed contract version before supporting another credential mechanism.
30
31
  */
@@ -148,5 +149,6 @@ interface BindingClassificationSubject {
148
149
  }
149
150
  interface BindingClassificationAiMapping {
150
151
  mappingVersion: string;
151
- providerId: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield';
152
+ providerId:
153
+ 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield' | 'mistral' | 'datalab';
152
154
  }
@@ -24,7 +24,8 @@ export type PromotionRequestSecretBinding1 = {
24
24
  type BindingClassificationEntry = {
25
25
  kind: 'configuration' | 'secret' | 'provider_credential';
26
26
  confidence: 'high' | 'low';
27
- providerId?: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield';
27
+ providerId?:
28
+ 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield' | 'mistral' | 'datalab';
28
29
  /**
29
30
  * Closed current credential category. Add a reviewed contract version before supporting another credential mechanism.
30
31
  */
@@ -98,5 +99,6 @@ interface BindingClassificationSubject {
98
99
  }
99
100
  interface BindingClassificationAiMapping {
100
101
  mappingVersion: string;
101
- providerId: 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield';
102
+ providerId:
103
+ 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield' | 'mistral' | 'datalab';
102
104
  }
@@ -17,7 +17,7 @@ export type SanitizedRuntimeBinding = {
17
17
  secretRef?: string;
18
18
  };
19
19
  export type SanitizedBindingProviderId =
20
- 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield';
20
+ 'openai' | 'anthropic' | 'gemini' | 'openrouter' | 'deepseek' | 'deepgram' | 'higgsfield' | 'mistral' | 'datalab';
21
21
 
22
22
  /**
23
23
  * Immutable DCP allocation receipt and sanitized runtime-binding set for one exact allocated version and normalized source revision. DCP persists this evidence atomically with version admission before publish or provisioning. classificationDigest chains to the caller's pre-allocation BindingClassificationSubject; bindings contain only approved configuration, app secrets or approved data-source credential references and never an AI-mapping-owned provider credential.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fourier-labs/harbour-contracts",
3
- "version": "0.97.0",
3
+ "version": "0.98.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,
@@ -71,7 +71,8 @@
71
71
  "speech": { "type": "string", "minLength": 3, "maxLength": 160 },
72
72
  "image": { "type": "string", "minLength": 3, "maxLength": 160 },
73
73
  "video": { "type": "string", "minLength": 3, "maxLength": 160 },
74
- "realtime": { "type": "string", "minLength": 3, "maxLength": 160 }
74
+ "realtime": { "type": "string", "minLength": 3, "maxLength": 160 },
75
+ "document": { "type": "string", "minLength": 3, "maxLength": 160 }
75
76
  }
76
77
  },
77
78
  "policyDigest": { "$ref": "#/definitions/AiDecisionDigest" },
@@ -109,7 +109,7 @@
109
109
  "required": ["id", "provider", "credentialSecretRef", "enabled"],
110
110
  "properties": {
111
111
  "id": { "$ref": "#/definitions/AiPolicyIdentifier" },
112
- "provider": { "type": "string", "enum": ["openai", "anthropic", "gemini", "openrouter", "deepseek", "elevenlabs", "deepgram", "higgsfield"] },
112
+ "provider": { "type": "string", "enum": ["openai", "anthropic", "gemini", "openrouter", "deepseek", "elevenlabs", "deepgram", "higgsfield", "mistral", "datalab"] },
113
113
  "baseUrl": { "type": "string", "format": "uri", "maxLength": 512 },
114
114
  "credentialSecretRef": {
115
115
  "type": "string",
@@ -138,7 +138,8 @@
138
138
  "audio_seconds": { "type": "integer", "minimum": 0 },
139
139
  "audio_characters": { "type": "integer", "minimum": 0 },
140
140
  "image_count": { "type": "integer", "minimum": 0 },
141
- "video_seconds": { "type": "integer", "minimum": 0 }
141
+ "video_seconds": { "type": "integer", "minimum": 0 },
142
+ "document_pages": { "type": "integer", "minimum": 0, "description": "Price per page read by document OCR (ADR 0043)." }
142
143
  }
143
144
  }
144
145
  }
@@ -156,7 +157,7 @@
156
157
  "minItems": 1,
157
158
  "maxItems": 2,
158
159
  "uniqueItems": true,
159
- "items": { "type": "string", "enum": ["generation", "embeddings", "transcription", "translation", "speech", "image", "video", "realtime"] }
160
+ "items": { "type": "string", "enum": ["generation", "embeddings", "transcription", "translation", "speech", "image", "video", "realtime", "document"] }
160
161
  },
161
162
  "approved": { "type": "boolean" },
162
163
  "pricing": { "$ref": "#/definitions/AiPolicyPricing" },
@@ -186,7 +187,7 @@
186
187
  "properties": {
187
188
  "alias": { "$ref": "#/definitions/AiPolicyIdentifier" },
188
189
  "version": { "type": "integer", "minimum": 1 },
189
- "capability": { "type": "string", "enum": ["generation", "embeddings", "transcription", "translation", "speech", "image", "video", "realtime"] },
190
+ "capability": { "type": "string", "enum": ["generation", "embeddings", "transcription", "translation", "speech", "image", "video", "realtime", "document"] },
190
191
  "targets": {
191
192
  "type": "array",
192
193
  "minItems": 1,
@@ -9,7 +9,7 @@
9
9
  "properties": {
10
10
  "schema": { "type": "string", "const": "harbour.ai-pricing-revision/2.0" },
11
11
  "revisionId": { "$ref": "#/definitions/AiPricingIdentifier" },
12
- "provider": { "type": "string", "enum": ["openai", "anthropic", "gemini", "openrouter", "deepseek", "elevenlabs", "deepgram", "higgsfield"] },
12
+ "provider": { "type": "string", "enum": ["openai", "anthropic", "gemini", "openrouter", "deepseek", "elevenlabs", "deepgram", "higgsfield", "mistral", "datalab"] },
13
13
  "providerModel": { "type": "string", "minLength": 1, "maxLength": 256 },
14
14
  "region": { "$ref": "#/definitions/AiPricingIdentifier" },
15
15
  "currency": { "type": "string", "const": "USD" },
@@ -55,7 +55,8 @@
55
55
  "speech": { "$ref": "#/definitions/AiRuntimeModelAlias" },
56
56
  "image": { "$ref": "#/definitions/AiRuntimeModelAlias" },
57
57
  "video": { "$ref": "#/definitions/AiRuntimeModelAlias" },
58
- "realtime": { "$ref": "#/definitions/AiRuntimeModelAlias" }
58
+ "realtime": { "$ref": "#/definitions/AiRuntimeModelAlias" },
59
+ "document": { "$ref": "#/definitions/AiRuntimeModelAlias" }
59
60
  }
60
61
  },
61
62
  "policyDigest": { "$ref": "#/definitions/AiRuntimeDigest" },
@@ -42,7 +42,7 @@
42
42
  "routeRevision": { "type": "string", "minLength": 1, "maxLength": 256 },
43
43
  "requestedModel": { "type": "string", "minLength": 1, "maxLength": 256 },
44
44
  "governedModelAlias": { "type": "string", "minLength": 1, "maxLength": 160 },
45
- "provider": { "type": "string", "enum": ["openai", "anthropic", "gemini", "openrouter", "deepseek", "elevenlabs", "deepgram", "higgsfield"] },
45
+ "provider": { "type": "string", "enum": ["openai", "anthropic", "gemini", "openrouter", "deepseek", "elevenlabs", "deepgram", "higgsfield", "mistral", "datalab"] },
46
46
  "providerModel": { "type": "string", "minLength": 1, "maxLength": 256 },
47
47
  "outcome": { "type": "string", "enum": ["succeeded", "blocked", "failed", "cancelled"] },
48
48
  "usage": {
@@ -140,7 +140,7 @@
140
140
  "required": ["attempt", "provider", "providerModel", "priceRevision", "outcome", "usage", "costMicroUsd", "latencyMs"],
141
141
  "properties": {
142
142
  "attempt": { "type": "integer", "minimum": 1, "maximum": 32 },
143
- "provider": { "type": "string", "enum": ["openai", "anthropic", "gemini", "openrouter", "deepseek", "elevenlabs", "deepgram", "higgsfield"] },
143
+ "provider": { "type": "string", "enum": ["openai", "anthropic", "gemini", "openrouter", "deepseek", "elevenlabs", "deepgram", "higgsfield", "mistral", "datalab"] },
144
144
  "providerModel": { "type": "string", "minLength": 1, "maxLength": 256 },
145
145
  "priceRevision": { "$ref": "#/definitions/AiTraceIdentifier" },
146
146
  "outcome": { "type": "string", "enum": ["succeeded", "failed", "timed_out", "cancelled"] },
@@ -64,7 +64,7 @@
64
64
  },
65
65
  "BindingClassificationProviderId": {
66
66
  "type": "string",
67
- "enum": ["openai", "anthropic", "gemini", "openrouter", "deepseek", "deepgram", "higgsfield"]
67
+ "enum": ["openai", "anthropic", "gemini", "openrouter", "deepseek", "deepgram", "higgsfield", "mistral", "datalab"]
68
68
  },
69
69
  "BindingClassificationCredentialCategory": {
70
70
  "description": "Closed current credential category. Add a reviewed contract version before supporting another credential mechanism.",
@@ -62,7 +62,7 @@
62
62
  },
63
63
  "SanitizedBindingProviderId": {
64
64
  "type": "string",
65
- "enum": ["openai", "anthropic", "gemini", "openrouter", "deepseek", "deepgram", "higgsfield"]
65
+ "enum": ["openai", "anthropic", "gemini", "openrouter", "deepseek", "deepgram", "higgsfield", "mistral", "datalab"]
66
66
  },
67
67
  "SanitizedBindingAiMapping": {
68
68
  "type": "object",