@fourier-labs/harbour-contracts 0.5.0 → 0.9.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 (121) hide show
  1. package/README.md +44 -4
  2. package/contract-release.json +134 -0
  3. package/dist/gen-ts/ai-budget-ledger-event.d.ts +21 -0
  4. package/dist/gen-ts/ai-budget-ledger-event.js +3 -0
  5. package/dist/gen-ts/ai-classification-stamp.d.ts +25 -0
  6. package/dist/gen-ts/ai-classification-stamp.js +3 -0
  7. package/dist/gen-ts/ai-composite-policy-digest-helper.d.ts +5 -0
  8. package/dist/gen-ts/ai-composite-policy-digest-helper.js +13 -0
  9. package/dist/gen-ts/ai-composite-policy-digest.d.ts +12 -0
  10. package/dist/gen-ts/ai-composite-policy-digest.js +3 -0
  11. package/dist/gen-ts/ai-deployment-gate-decision.d.ts +27 -0
  12. package/dist/gen-ts/ai-deployment-gate-decision.js +3 -0
  13. package/dist/gen-ts/ai-gateway-key-lifecycle-event.d.ts +49 -0
  14. package/dist/gen-ts/ai-gateway-key-lifecycle-event.js +16 -0
  15. package/dist/gen-ts/ai-governance-decision.d.ts +14 -2
  16. package/dist/gen-ts/ai-metering-policy.d.ts +16 -0
  17. package/dist/gen-ts/ai-metering-policy.js +3 -0
  18. package/dist/gen-ts/ai-policy-snapshot.d.ts +5 -269
  19. package/dist/gen-ts/ai-pricing-revision.d.ts +29 -0
  20. package/dist/gen-ts/ai-pricing-revision.js +3 -0
  21. package/dist/gen-ts/ai-runtime-binding.d.ts +14 -0
  22. package/dist/gen-ts/ai-runtime-binding.js +3 -0
  23. package/dist/gen-ts/ai-runtime-contract.d.ts +16 -1
  24. package/dist/gen-ts/ai-trace-event-v2.d.ts +31 -0
  25. package/dist/gen-ts/ai-trace-event-v2.js +3 -0
  26. package/dist/gen-ts/ai-transform-event.d.ts +2 -21
  27. package/dist/gen-ts/ai-transform-result.d.ts +1 -1
  28. package/dist/gen-ts/ai-verification-evidence.d.ts +2 -1
  29. package/dist/gen-ts/contract-release.d.ts +7 -0
  30. package/dist/gen-ts/contract-release.js +9 -0
  31. package/dist/gen-ts/data-grant.d.ts +1 -1
  32. package/dist/gen-ts/error-category-registry.d.ts +5 -0
  33. package/dist/gen-ts/error-category-registry.js +10 -0
  34. package/dist/gen-ts/index.d.ts +12 -0
  35. package/dist/gen-ts/index.js +12 -0
  36. package/dist/gen-ts/kvs-routing-entry.d.ts +19 -5
  37. package/dist/gen-ts/promotion-request.d.ts +23 -0
  38. package/dist/gen-ts/transform-report.d.ts +102 -0
  39. package/dist/gen-ts/transform-report.js +3 -0
  40. package/fixtures/ai/valid-blocked-trace-event.json +31 -0
  41. package/fixtures/ai/valid-budget-ledger-event.json +15 -0
  42. package/fixtures/ai/valid-classification-stamp.json +19 -0
  43. package/fixtures/ai/valid-composite-policy-digest.json +11 -0
  44. package/fixtures/ai/valid-deployment-gate-decision.json +18 -0
  45. package/fixtures/ai/valid-failed-trace-event.json +50 -0
  46. package/fixtures/ai/valid-gateway-key-lifecycle-event.json +16 -0
  47. package/fixtures/ai/valid-gateway-key-lookup.json +14 -0
  48. package/fixtures/ai/valid-governance-decision.json +53 -0
  49. package/fixtures/ai/valid-inventory.json +30 -0
  50. package/fixtures/ai/valid-metering-policy.json +8 -0
  51. package/fixtures/ai/valid-policy-snapshot.json +117 -0
  52. package/fixtures/ai/valid-pricing-revision.json +14 -0
  53. package/fixtures/ai/valid-runtime-binding.json +7 -0
  54. package/fixtures/ai/valid-runtime-contract.json +24 -0
  55. package/fixtures/ai/valid-trace-event-v2.json +24 -0
  56. package/fixtures/ai/valid-trace-event.json +41 -0
  57. package/fixtures/ai/valid-transform-event.json +32 -0
  58. package/fixtures/ai/valid-transform-result.json +23 -0
  59. package/fixtures/ai/valid-verification-evidence.json +33 -0
  60. package/gen-ts/ai-budget-ledger-event.ts +25 -0
  61. package/gen-ts/ai-callsite-inventory.ts +64 -0
  62. package/gen-ts/ai-classification-stamp.ts +28 -0
  63. package/gen-ts/ai-composite-policy-digest-helper.ts +18 -0
  64. package/gen-ts/ai-composite-policy-digest.ts +16 -0
  65. package/gen-ts/ai-deployment-gate-decision.ts +30 -0
  66. package/gen-ts/ai-gateway-key-lifecycle-event.ts +81 -0
  67. package/gen-ts/ai-gateway-key-lookup.ts +23 -0
  68. package/gen-ts/ai-gateway-key-token.ts +7 -0
  69. package/gen-ts/ai-governance-decision.ts +90 -0
  70. package/gen-ts/ai-metering-policy.ts +20 -0
  71. package/gen-ts/ai-policy-snapshot.ts +169 -0
  72. package/gen-ts/ai-pricing-revision.ts +33 -0
  73. package/gen-ts/ai-runtime-binding.ts +18 -0
  74. package/gen-ts/ai-runtime-contract.ts +46 -0
  75. package/gen-ts/ai-trace-event-v2.ts +35 -0
  76. package/gen-ts/ai-trace-event.ts +72 -0
  77. package/gen-ts/ai-transform-event.ts +51 -0
  78. package/gen-ts/ai-transform-result.ts +36 -0
  79. package/gen-ts/ai-verification-evidence.ts +54 -0
  80. package/gen-ts/api-error-response.ts +16 -0
  81. package/gen-ts/artifact-contract.ts +81 -0
  82. package/gen-ts/contract-release.ts +10 -0
  83. package/gen-ts/data-dependency.ts +46 -0
  84. package/gen-ts/data-grant.ts +71 -0
  85. package/gen-ts/data-source.ts +78 -0
  86. package/gen-ts/deploy-request.ts +66 -0
  87. package/gen-ts/deploy-response.ts +25 -0
  88. package/gen-ts/deployment-environment.ts +7 -0
  89. package/gen-ts/deployment-source.ts +16 -0
  90. package/gen-ts/deployment-status-failure.ts +12 -0
  91. package/gen-ts/deployment-status-request.ts +11 -0
  92. package/gen-ts/deployment-status-response.ts +39 -0
  93. package/gen-ts/env-bindings.ts +64 -0
  94. package/gen-ts/error-category-registry.ts +108 -0
  95. package/gen-ts/error-category.ts +7 -0
  96. package/gen-ts/error-envelope.ts +49 -0
  97. package/gen-ts/index.ts +47 -0
  98. package/gen-ts/kvs-routing-entry.ts +30 -0
  99. package/gen-ts/promotion-request.ts +43 -0
  100. package/gen-ts/promotion-response.ts +20 -0
  101. package/gen-ts/secret-reference.ts +40 -0
  102. package/gen-ts/transform-report.ts +105 -0
  103. package/gen-ts/version-state-machine.ts +52 -0
  104. package/gen-ts/version-state.ts +19 -0
  105. package/package.json +8 -4
  106. package/schema/ai-budget-ledger-event.schema.json +29 -0
  107. package/schema/ai-classification-stamp.schema.json +40 -0
  108. package/schema/ai-composite-policy-digest.schema.json +27 -0
  109. package/schema/ai-deployment-gate-decision.schema.json +38 -0
  110. package/schema/ai-gateway-key-lifecycle-event.schema.json +61 -0
  111. package/schema/ai-governance-decision.schema.json +23 -2
  112. package/schema/ai-metering-policy.schema.json +18 -0
  113. package/schema/ai-pricing-revision.schema.json +38 -0
  114. package/schema/ai-runtime-binding.schema.json +26 -0
  115. package/schema/ai-runtime-contract.schema.json +24 -2
  116. package/schema/ai-trace-event-v2.schema.json +41 -0
  117. package/schema/ai-verification-evidence.schema.json +1 -0
  118. package/schema/error-category.enum.json +6 -1
  119. package/schema/kvs-routing-entry.schema.json +28 -8
  120. package/schema/promotion-request.schema.json +38 -0
  121. package/schema/transform-report.schema.json +204 -0
@@ -33,7 +33,7 @@ export type AiPolicyEmbeddedJsonSchema = {
33
33
  * @minItems 1
34
34
  * @maxItems 64
35
35
  */
36
- enum?: [string | number | number | boolean | null, ...(string | number | number | boolean | null)[]];
36
+ enum?: (string | number | boolean | null)[];
37
37
  minimum?: number;
38
38
  maximum?: number;
39
39
  minLength?: number;
@@ -93,7 +93,7 @@ export interface AiPolicyModel {
93
93
  * @minItems 1
94
94
  * @maxItems 2
95
95
  */
96
- capabilities: ['generation' | 'embeddings'] | ['generation' | 'embeddings', 'generation' | 'embeddings'];
96
+ capabilities: ('generation' | 'embeddings')[];
97
97
  approved: boolean;
98
98
  pricing: AiPolicyPricing;
99
99
  }
@@ -110,139 +110,7 @@ export interface AiPolicyRoute {
110
110
  * @minItems 1
111
111
  * @maxItems 16
112
112
  */
113
- targets: [AiPolicyRouteTarget] | [AiPolicyRouteTarget, AiPolicyRouteTarget] | [AiPolicyRouteTarget, AiPolicyRouteTarget, AiPolicyRouteTarget] | [AiPolicyRouteTarget, AiPolicyRouteTarget, AiPolicyRouteTarget, AiPolicyRouteTarget] | [AiPolicyRouteTarget, AiPolicyRouteTarget, AiPolicyRouteTarget, AiPolicyRouteTarget, AiPolicyRouteTarget] | [
114
- AiPolicyRouteTarget,
115
- AiPolicyRouteTarget,
116
- AiPolicyRouteTarget,
117
- AiPolicyRouteTarget,
118
- AiPolicyRouteTarget,
119
- AiPolicyRouteTarget
120
- ] | [
121
- AiPolicyRouteTarget,
122
- AiPolicyRouteTarget,
123
- AiPolicyRouteTarget,
124
- AiPolicyRouteTarget,
125
- AiPolicyRouteTarget,
126
- AiPolicyRouteTarget,
127
- AiPolicyRouteTarget
128
- ] | [
129
- AiPolicyRouteTarget,
130
- AiPolicyRouteTarget,
131
- AiPolicyRouteTarget,
132
- AiPolicyRouteTarget,
133
- AiPolicyRouteTarget,
134
- AiPolicyRouteTarget,
135
- AiPolicyRouteTarget,
136
- AiPolicyRouteTarget
137
- ] | [
138
- AiPolicyRouteTarget,
139
- AiPolicyRouteTarget,
140
- AiPolicyRouteTarget,
141
- AiPolicyRouteTarget,
142
- AiPolicyRouteTarget,
143
- AiPolicyRouteTarget,
144
- AiPolicyRouteTarget,
145
- AiPolicyRouteTarget,
146
- AiPolicyRouteTarget
147
- ] | [
148
- AiPolicyRouteTarget,
149
- AiPolicyRouteTarget,
150
- AiPolicyRouteTarget,
151
- AiPolicyRouteTarget,
152
- AiPolicyRouteTarget,
153
- AiPolicyRouteTarget,
154
- AiPolicyRouteTarget,
155
- AiPolicyRouteTarget,
156
- AiPolicyRouteTarget,
157
- AiPolicyRouteTarget
158
- ] | [
159
- AiPolicyRouteTarget,
160
- AiPolicyRouteTarget,
161
- AiPolicyRouteTarget,
162
- AiPolicyRouteTarget,
163
- AiPolicyRouteTarget,
164
- AiPolicyRouteTarget,
165
- AiPolicyRouteTarget,
166
- AiPolicyRouteTarget,
167
- AiPolicyRouteTarget,
168
- AiPolicyRouteTarget,
169
- AiPolicyRouteTarget
170
- ] | [
171
- AiPolicyRouteTarget,
172
- AiPolicyRouteTarget,
173
- AiPolicyRouteTarget,
174
- AiPolicyRouteTarget,
175
- AiPolicyRouteTarget,
176
- AiPolicyRouteTarget,
177
- AiPolicyRouteTarget,
178
- AiPolicyRouteTarget,
179
- AiPolicyRouteTarget,
180
- AiPolicyRouteTarget,
181
- AiPolicyRouteTarget,
182
- AiPolicyRouteTarget
183
- ] | [
184
- AiPolicyRouteTarget,
185
- AiPolicyRouteTarget,
186
- AiPolicyRouteTarget,
187
- AiPolicyRouteTarget,
188
- AiPolicyRouteTarget,
189
- AiPolicyRouteTarget,
190
- AiPolicyRouteTarget,
191
- AiPolicyRouteTarget,
192
- AiPolicyRouteTarget,
193
- AiPolicyRouteTarget,
194
- AiPolicyRouteTarget,
195
- AiPolicyRouteTarget,
196
- AiPolicyRouteTarget
197
- ] | [
198
- AiPolicyRouteTarget,
199
- AiPolicyRouteTarget,
200
- AiPolicyRouteTarget,
201
- AiPolicyRouteTarget,
202
- AiPolicyRouteTarget,
203
- AiPolicyRouteTarget,
204
- AiPolicyRouteTarget,
205
- AiPolicyRouteTarget,
206
- AiPolicyRouteTarget,
207
- AiPolicyRouteTarget,
208
- AiPolicyRouteTarget,
209
- AiPolicyRouteTarget,
210
- AiPolicyRouteTarget,
211
- AiPolicyRouteTarget
212
- ] | [
213
- AiPolicyRouteTarget,
214
- AiPolicyRouteTarget,
215
- AiPolicyRouteTarget,
216
- AiPolicyRouteTarget,
217
- AiPolicyRouteTarget,
218
- AiPolicyRouteTarget,
219
- AiPolicyRouteTarget,
220
- AiPolicyRouteTarget,
221
- AiPolicyRouteTarget,
222
- AiPolicyRouteTarget,
223
- AiPolicyRouteTarget,
224
- AiPolicyRouteTarget,
225
- AiPolicyRouteTarget,
226
- AiPolicyRouteTarget,
227
- AiPolicyRouteTarget
228
- ] | [
229
- AiPolicyRouteTarget,
230
- AiPolicyRouteTarget,
231
- AiPolicyRouteTarget,
232
- AiPolicyRouteTarget,
233
- AiPolicyRouteTarget,
234
- AiPolicyRouteTarget,
235
- AiPolicyRouteTarget,
236
- AiPolicyRouteTarget,
237
- AiPolicyRouteTarget,
238
- AiPolicyRouteTarget,
239
- AiPolicyRouteTarget,
240
- AiPolicyRouteTarget,
241
- AiPolicyRouteTarget,
242
- AiPolicyRouteTarget,
243
- AiPolicyRouteTarget,
244
- AiPolicyRouteTarget
245
- ];
113
+ targets: AiPolicyRouteTarget[];
246
114
  retryCount: number;
247
115
  timeoutMs: number;
248
116
  }
@@ -275,7 +143,7 @@ export interface AiPolicyGuardrailParameters {
275
143
  * @minItems 1
276
144
  * @maxItems 64
277
145
  */
278
- allowedTools?: [string, ...string[]];
146
+ allowedTools?: string[];
279
147
  jsonSchema?: AiPolicyEmbeddedJsonSchema;
280
148
  jsonSchemaRef?: AiPolicyDigest;
281
149
  }
@@ -293,137 +161,5 @@ export interface AiPolicyRetention {
293
161
  /**
294
162
  * @maxItems 16
295
163
  */
296
- revealRoles: [] | [AiPolicyIdentifier] | [AiPolicyIdentifier, AiPolicyIdentifier] | [AiPolicyIdentifier, AiPolicyIdentifier, AiPolicyIdentifier] | [AiPolicyIdentifier, AiPolicyIdentifier, AiPolicyIdentifier, AiPolicyIdentifier] | [AiPolicyIdentifier, AiPolicyIdentifier, AiPolicyIdentifier, AiPolicyIdentifier, AiPolicyIdentifier] | [
297
- AiPolicyIdentifier,
298
- AiPolicyIdentifier,
299
- AiPolicyIdentifier,
300
- AiPolicyIdentifier,
301
- AiPolicyIdentifier,
302
- AiPolicyIdentifier
303
- ] | [
304
- AiPolicyIdentifier,
305
- AiPolicyIdentifier,
306
- AiPolicyIdentifier,
307
- AiPolicyIdentifier,
308
- AiPolicyIdentifier,
309
- AiPolicyIdentifier,
310
- AiPolicyIdentifier
311
- ] | [
312
- AiPolicyIdentifier,
313
- AiPolicyIdentifier,
314
- AiPolicyIdentifier,
315
- AiPolicyIdentifier,
316
- AiPolicyIdentifier,
317
- AiPolicyIdentifier,
318
- AiPolicyIdentifier,
319
- AiPolicyIdentifier
320
- ] | [
321
- AiPolicyIdentifier,
322
- AiPolicyIdentifier,
323
- AiPolicyIdentifier,
324
- AiPolicyIdentifier,
325
- AiPolicyIdentifier,
326
- AiPolicyIdentifier,
327
- AiPolicyIdentifier,
328
- AiPolicyIdentifier,
329
- AiPolicyIdentifier
330
- ] | [
331
- AiPolicyIdentifier,
332
- AiPolicyIdentifier,
333
- AiPolicyIdentifier,
334
- AiPolicyIdentifier,
335
- AiPolicyIdentifier,
336
- AiPolicyIdentifier,
337
- AiPolicyIdentifier,
338
- AiPolicyIdentifier,
339
- AiPolicyIdentifier,
340
- AiPolicyIdentifier
341
- ] | [
342
- AiPolicyIdentifier,
343
- AiPolicyIdentifier,
344
- AiPolicyIdentifier,
345
- AiPolicyIdentifier,
346
- AiPolicyIdentifier,
347
- AiPolicyIdentifier,
348
- AiPolicyIdentifier,
349
- AiPolicyIdentifier,
350
- AiPolicyIdentifier,
351
- AiPolicyIdentifier,
352
- AiPolicyIdentifier
353
- ] | [
354
- AiPolicyIdentifier,
355
- AiPolicyIdentifier,
356
- AiPolicyIdentifier,
357
- AiPolicyIdentifier,
358
- AiPolicyIdentifier,
359
- AiPolicyIdentifier,
360
- AiPolicyIdentifier,
361
- AiPolicyIdentifier,
362
- AiPolicyIdentifier,
363
- AiPolicyIdentifier,
364
- AiPolicyIdentifier,
365
- AiPolicyIdentifier
366
- ] | [
367
- AiPolicyIdentifier,
368
- AiPolicyIdentifier,
369
- AiPolicyIdentifier,
370
- AiPolicyIdentifier,
371
- AiPolicyIdentifier,
372
- AiPolicyIdentifier,
373
- AiPolicyIdentifier,
374
- AiPolicyIdentifier,
375
- AiPolicyIdentifier,
376
- AiPolicyIdentifier,
377
- AiPolicyIdentifier,
378
- AiPolicyIdentifier,
379
- AiPolicyIdentifier
380
- ] | [
381
- AiPolicyIdentifier,
382
- AiPolicyIdentifier,
383
- AiPolicyIdentifier,
384
- AiPolicyIdentifier,
385
- AiPolicyIdentifier,
386
- AiPolicyIdentifier,
387
- AiPolicyIdentifier,
388
- AiPolicyIdentifier,
389
- AiPolicyIdentifier,
390
- AiPolicyIdentifier,
391
- AiPolicyIdentifier,
392
- AiPolicyIdentifier,
393
- AiPolicyIdentifier,
394
- AiPolicyIdentifier
395
- ] | [
396
- AiPolicyIdentifier,
397
- AiPolicyIdentifier,
398
- AiPolicyIdentifier,
399
- AiPolicyIdentifier,
400
- AiPolicyIdentifier,
401
- AiPolicyIdentifier,
402
- AiPolicyIdentifier,
403
- AiPolicyIdentifier,
404
- AiPolicyIdentifier,
405
- AiPolicyIdentifier,
406
- AiPolicyIdentifier,
407
- AiPolicyIdentifier,
408
- AiPolicyIdentifier,
409
- AiPolicyIdentifier,
410
- AiPolicyIdentifier
411
- ] | [
412
- AiPolicyIdentifier,
413
- AiPolicyIdentifier,
414
- AiPolicyIdentifier,
415
- AiPolicyIdentifier,
416
- AiPolicyIdentifier,
417
- AiPolicyIdentifier,
418
- AiPolicyIdentifier,
419
- AiPolicyIdentifier,
420
- AiPolicyIdentifier,
421
- AiPolicyIdentifier,
422
- AiPolicyIdentifier,
423
- AiPolicyIdentifier,
424
- AiPolicyIdentifier,
425
- AiPolicyIdentifier,
426
- AiPolicyIdentifier,
427
- AiPolicyIdentifier
428
- ];
164
+ revealRoles: AiPolicyIdentifier[];
429
165
  }
@@ -0,0 +1,29 @@
1
+ export type AiPricingIdentifier = string;
2
+ export type AiPricingDigest = string;
3
+ /**
4
+ * Immutable v2 line-item pricing revision. A correction is a new revision; published records are never edited.
5
+ */
6
+ export interface AiPricingRevision {
7
+ schema: 'harbour.ai-pricing-revision/2.0';
8
+ revisionId: AiPricingIdentifier;
9
+ provider: 'openai' | 'anthropic' | 'gemini' | 'openrouter';
10
+ providerModel: string;
11
+ region?: AiPricingIdentifier;
12
+ currency: 'USD';
13
+ /**
14
+ * @minItems 1
15
+ * @maxItems 64
16
+ */
17
+ dimensions: PriceDimension[];
18
+ supersedesRevisionId?: AiPricingIdentifier;
19
+ revisionDigest: AiPricingDigest;
20
+ effectiveAt: string;
21
+ publishedAt: string;
22
+ }
23
+ export interface PriceDimension {
24
+ dimension: AiPricingIdentifier;
25
+ direction: 'input' | 'output';
26
+ unit: AiPricingIdentifier;
27
+ scale: number;
28
+ microUsdPerScale: number;
29
+ }
@@ -0,0 +1,3 @@
1
+ /* eslint-disable */
2
+ // Code generated by tools/gen/gen.mjs from schema/*.json. DO NOT EDIT.
3
+ export {};
@@ -0,0 +1,14 @@
1
+ /**
2
+ * A value-free hierarchical identifier. Schemes are an additive reviewed registry; userinfo, ports, percent encoding, query strings, fragments and empty path segments are unrepresentable.
3
+ */
4
+ export type AiRuntimeSafeReference = string;
5
+ /**
6
+ * Platform-neutral, value-free binding of one workload identity to one version-scoped Harbour Gateway secret. Platform adapters may add implementation details internally; they never enter this contract.
7
+ */
8
+ export interface AiRuntimeBinding {
9
+ schema: 'harbour.ai-runtime-binding/1.0';
10
+ platform: string;
11
+ workloadIdentityRef: AiRuntimeSafeReference;
12
+ secretRef: AiRuntimeSafeReference;
13
+ runtimeBindingDigest: string;
14
+ }
@@ -0,0 +1,3 @@
1
+ /* eslint-disable */
2
+ // Code generated by tools/gen/gen.mjs from schema/*.json. DO NOT EDIT.
3
+ export {};
@@ -1,6 +1,10 @@
1
1
  export type AiRuntimeIdentifier = string;
2
2
  export type AiRuntimeModelAlias = string;
3
3
  export type AiRuntimeDigest = string;
4
+ /**
5
+ * Platform-neutral value-free hierarchical reference using the additive reviewed scheme registry; no userinfo, query, fragment, port or percent encoding.
6
+ */
7
+ export type AiRuntimeContractSafeReference = string;
4
8
  /**
5
9
  * Immutable deployment runtime contract derived by an AI Governance PLAN decision. Contains only scoped configuration and a Secrets Manager reference, never key plaintext.
6
10
  */
@@ -19,9 +23,20 @@ export interface AiRuntimeContract {
19
23
  embeddings?: AiRuntimeModelAlias;
20
24
  };
21
25
  policyDigest: AiRuntimeDigest;
26
+ runtimeBinding?: AiRuntimeContractBinding;
22
27
  /**
23
28
  * @minItems 1
24
29
  * @maxItems 2
25
30
  */
26
- requiredStrategies: ['deployment_injection' | 'deterministic_adapter'] | ['deployment_injection' | 'deterministic_adapter', 'deployment_injection' | 'deterministic_adapter'];
31
+ requiredStrategies: ('deployment_injection' | 'deterministic_adapter')[];
32
+ }
33
+ /**
34
+ * Optional additive platform-neutral binding. Existing 1.0 records without it remain valid.
35
+ */
36
+ export interface AiRuntimeContractBinding {
37
+ schema: 'harbour.ai-runtime-binding/1.0';
38
+ platform: string;
39
+ workloadIdentityRef: AiRuntimeContractSafeReference;
40
+ secretRef: AiRuntimeContractSafeReference;
41
+ runtimeBindingDigest: AiRuntimeDigest;
27
42
  }
@@ -0,0 +1,31 @@
1
+ export type AiTraceV2Digest = string;
2
+ export type AiTraceV2Identifier = string;
3
+ /**
4
+ * Additive metering projection linked to a readable v1 trace. It carries dimension-level reported or estimated usage without changing the v1 event.
5
+ */
6
+ export interface AiTraceEventV2 {
7
+ schema: 'harbour.ai-trace-event/2.0';
8
+ traceId: string;
9
+ requestId: string;
10
+ policyDigest: AiTraceV2Digest;
11
+ outcome: 'succeeded' | 'blocked' | 'failed' | 'cancelled';
12
+ /**
13
+ * @maxItems 256
14
+ */
15
+ usageLineItems: UsageLineItem[];
16
+ totalCostMicroUsd: number;
17
+ reservationId?: string;
18
+ meteringStatus: 'settled' | 'reserved' | 'unknown' | 'repaired';
19
+ occurredAt: string;
20
+ }
21
+ export interface UsageLineItem {
22
+ attempt: number;
23
+ dimension: AiTraceV2Identifier;
24
+ direction: 'input' | 'output';
25
+ quantity: number;
26
+ unit: AiTraceV2Identifier;
27
+ priceRevisionDigest: AiTraceV2Digest;
28
+ scale: number;
29
+ costMicroUsd: number;
30
+ provenance: 'reported' | 'estimated';
31
+ }
@@ -0,0 +1,3 @@
1
+ /* eslint-disable */
2
+ // Code generated by tools/gen/gen.mjs from schema/*.json. DO NOT EDIT.
3
+ export {};
@@ -1,8 +1,6 @@
1
1
  export type AiTransformIdentifier = string;
2
2
  export type AiTransformDigest = string;
3
3
  export type AiTransformPlanEntry = {
4
- [k: string]: unknown;
5
- } & {
6
4
  callSiteFingerprint: AiTransformDigest;
7
5
  sourcePath: string;
8
6
  expectedSourceFileSha256: AiTransformDigest;
@@ -15,24 +13,7 @@ export type AiTransformPlanEntry = {
15
13
  * @minItems 1
16
14
  * @maxItems 32
17
15
  */
18
- allowedSyntaxKinds: [AiTransformIdentifier, ...AiTransformIdentifier[]];
19
- runtimeShimName?: string;
20
- runtimeShimVersion?: string;
21
- runtimeShimDigest?: AiTransformDigest;
22
- } & {
23
- callSiteFingerprint: AiTransformDigest;
24
- sourcePath: string;
25
- expectedSourceFileSha256: AiTransformDigest;
26
- strategy: 'deployment_injection' | 'deterministic_adapter';
27
- configurationMappingId?: AiTransformIdentifier;
28
- configurationMappingVersion?: string;
29
- transformId?: AiTransformIdentifier;
30
- transformVersion?: string;
31
- /**
32
- * @minItems 1
33
- * @maxItems 32
34
- */
35
- allowedSyntaxKinds: [AiTransformIdentifier, ...AiTransformIdentifier[]];
16
+ allowedSyntaxKinds: AiTransformIdentifier[];
36
17
  runtimeShimName?: string;
37
18
  runtimeShimVersion?: string;
38
19
  runtimeShimDigest?: AiTransformDigest;
@@ -56,7 +37,7 @@ export interface AiTransformEvent {
56
37
  * @minItems 1
57
38
  * @maxItems 1000
58
39
  */
59
- entries: [AiTransformPlanEntry, ...AiTransformPlanEntry[]];
40
+ entries: AiTransformPlanEntry[];
60
41
  }
61
42
  export interface AiTransformWorkspace {
62
43
  bucket: string;
@@ -12,7 +12,7 @@ export interface AiTransformResult {
12
12
  * @minItems 1
13
13
  * @maxItems 1000
14
14
  */
15
- applied: [AiTransformApplied, ...AiTransformApplied[]];
15
+ applied: AiTransformApplied[];
16
16
  }
17
17
  export interface AiTransformResultWorkspace {
18
18
  bucket: string;
@@ -14,6 +14,7 @@ export interface AiVerificationEvidence {
14
14
  interceptionPlanDigest: AiVerificationDigest;
15
15
  runtimeContractDigest: AiVerificationDigest;
16
16
  policyDigest: AiVerificationDigest;
17
+ runtimeBindingDigest?: AiVerificationDigest;
17
18
  finalWorkspaceDigest: AiVerificationDigest;
18
19
  /**
19
20
  * @maxItems 1000
@@ -27,7 +28,7 @@ export interface AiVerificationEvidence {
27
28
  * @minItems 1
28
29
  * @maxItems 32
29
30
  */
30
- endpointChecks: [AiVerificationEndpointCheck, ...AiVerificationEndpointCheck[]];
31
+ endpointChecks: AiVerificationEndpointCheck[];
31
32
  providerCredentialsAbsent: true;
32
33
  smokeTraceId: string;
33
34
  evidenceDigest: AiVerificationDigest;
@@ -0,0 +1,7 @@
1
+ export declare const ContractRepositoryVersion: "0.9.0.0";
2
+ export declare const ContractPublishVersion: "0.9.0";
3
+ export declare const ContractPublishTag: "v0.9.0";
4
+ export declare const ContractSchemasDigest: "sha256:df73090b9fbbac8a39d0ec92e929f4d687bd7920de583fb2463bf8570dc68ebb";
5
+ export declare const ContractAiFixturesDigest: "sha256:180a5f30cf0b6d93fa4c812a217d2365ffe22ac54d11626e71f8072fcf8f67c6";
6
+ export declare const ContractGeneratedGoDigest: "sha256:be376911aec8ee6359a38fdafebf343ce157255e19c544617b7bcccd4329e5de";
7
+ export declare const ContractGeneratedTypeScriptDigest: "sha256:857288e60b476b42dce0304ec05aff6af1f2719278959ed03740ef88af5e736b";
@@ -0,0 +1,9 @@
1
+ /* eslint-disable */
2
+ // Code generated by tools/gen/gen.mjs from schema/*.json. DO NOT EDIT.
3
+ export const ContractRepositoryVersion = "0.9.0.0";
4
+ export const ContractPublishVersion = "0.9.0";
5
+ export const ContractPublishTag = "v0.9.0";
6
+ export const ContractSchemasDigest = "sha256:df73090b9fbbac8a39d0ec92e929f4d687bd7920de583fb2463bf8570dc68ebb";
7
+ export const ContractAiFixturesDigest = "sha256:180a5f30cf0b6d93fa4c812a217d2365ffe22ac54d11626e71f8072fcf8f67c6";
8
+ export const ContractGeneratedGoDigest = "sha256:be376911aec8ee6359a38fdafebf343ce157255e19c544617b7bcccd4329e5de";
9
+ export const ContractGeneratedTypeScriptDigest = "sha256:857288e60b476b42dce0304ec05aff6af1f2719278959ed03740ef88af5e736b";
@@ -27,7 +27,7 @@ export interface DataGrant {
27
27
  *
28
28
  * @minItems 1
29
29
  */
30
- scope: [string, ...string[]];
30
+ scope: string[];
31
31
  mode: DataGrantMode;
32
32
  identityModel: DataGrantIdentityModel;
33
33
  status: DataGrantStatus;
@@ -4,6 +4,8 @@ export declare const ErrorCategories: {
4
4
  readonly IntakeAttestationMissing: "intake.attestation-missing";
5
5
  readonly IntakeMultiAppRepo: "intake.multi-app-repo";
6
6
  readonly SecretsUnresolvable: "secrets.unresolvable";
7
+ readonly SecretsReferenceUnresolvable: "secrets.reference-unresolvable";
8
+ readonly SecretsPlaceholderUnresolved: "secrets.placeholder-unresolved";
7
9
  readonly SecretsLeakedInArtifact: "secrets.leaked-in-artifact";
8
10
  readonly StorageSqliteMisclassified: "storage.sqlite-misclassified";
9
11
  readonly StorageMappingDrift: "storage.mapping-drift";
@@ -12,6 +14,8 @@ export declare const ErrorCategories: {
12
14
  readonly FrontendEnvInlinedUnfixable: "frontend.env-inlined-unfixable";
13
15
  readonly BuildRecipeFailed: "build.recipe-failed";
14
16
  readonly BuildImageTooLarge: "build.image-too-large";
17
+ readonly BrowserProbeFailed: "browser.probe-failed";
18
+ readonly BrowserProbeUnavailable: "browser.probe-unavailable";
15
19
  readonly VerifySmokeFailed: "verify.smoke-failed";
16
20
  readonly VerifyCharacterizationDiverged: "verify.characterization-diverged";
17
21
  readonly VerifyMigrationFromZeroFailed: "verify.migration-from-zero-failed";
@@ -27,6 +31,7 @@ export declare const ErrorCategories: {
27
31
  readonly AdmissionAppNotRegistered: "admission.app-not-registered";
28
32
  readonly DeployCommitNotOnBranch: "deploy.commit-not-on-branch";
29
33
  readonly DeployQueuePublicationFailed: "deploy.queue-publication-failed";
34
+ readonly SourceBranchMoved: "source.branch-moved";
30
35
  readonly PromotionPreviewNotPromotable: "promotion.preview-not-promotable";
31
36
  readonly PromotionProductionBranchMoved: "promotion.production-branch-moved";
32
37
  readonly PromotionSourceTreeMismatch: "promotion.source-tree-mismatch";
@@ -6,6 +6,8 @@ export const ErrorCategories = {
6
6
  IntakeAttestationMissing: "intake.attestation-missing",
7
7
  IntakeMultiAppRepo: "intake.multi-app-repo",
8
8
  SecretsUnresolvable: "secrets.unresolvable",
9
+ SecretsReferenceUnresolvable: "secrets.reference-unresolvable",
10
+ SecretsPlaceholderUnresolved: "secrets.placeholder-unresolved",
9
11
  SecretsLeakedInArtifact: "secrets.leaked-in-artifact",
10
12
  StorageSqliteMisclassified: "storage.sqlite-misclassified",
11
13
  StorageMappingDrift: "storage.mapping-drift",
@@ -14,6 +16,8 @@ export const ErrorCategories = {
14
16
  FrontendEnvInlinedUnfixable: "frontend.env-inlined-unfixable",
15
17
  BuildRecipeFailed: "build.recipe-failed",
16
18
  BuildImageTooLarge: "build.image-too-large",
19
+ BrowserProbeFailed: "browser.probe-failed",
20
+ BrowserProbeUnavailable: "browser.probe-unavailable",
17
21
  VerifySmokeFailed: "verify.smoke-failed",
18
22
  VerifyCharacterizationDiverged: "verify.characterization-diverged",
19
23
  VerifyMigrationFromZeroFailed: "verify.migration-from-zero-failed",
@@ -29,6 +33,7 @@ export const ErrorCategories = {
29
33
  AdmissionAppNotRegistered: "admission.app-not-registered",
30
34
  DeployCommitNotOnBranch: "deploy.commit-not-on-branch",
31
35
  DeployQueuePublicationFailed: "deploy.queue-publication-failed",
36
+ SourceBranchMoved: "source.branch-moved",
32
37
  PromotionPreviewNotPromotable: "promotion.preview-not-promotable",
33
38
  PromotionProductionBranchMoved: "promotion.production-branch-moved",
34
39
  PromotionSourceTreeMismatch: "promotion.source-tree-mismatch",
@@ -44,6 +49,8 @@ const retryableExact = {
44
49
  "intake.attestation-missing": false,
45
50
  "intake.multi-app-repo": false,
46
51
  "secrets.unresolvable": false,
52
+ "secrets.reference-unresolvable": false,
53
+ "secrets.placeholder-unresolved": false,
47
54
  "secrets.leaked-in-artifact": false,
48
55
  "storage.sqlite-misclassified": false,
49
56
  "storage.mapping-drift": false,
@@ -52,6 +59,8 @@ const retryableExact = {
52
59
  "frontend.env-inlined-unfixable": false,
53
60
  "build.recipe-failed": false,
54
61
  "build.image-too-large": false,
62
+ "browser.probe-failed": true,
63
+ "browser.probe-unavailable": false,
55
64
  "verify.smoke-failed": false,
56
65
  "verify.characterization-diverged": false,
57
66
  "verify.migration-from-zero-failed": false,
@@ -67,6 +76,7 @@ const retryableExact = {
67
76
  "admission.app-not-registered": false,
68
77
  "deploy.commit-not-on-branch": false,
69
78
  "deploy.queue-publication-failed": true,
79
+ "source.branch-moved": false,
70
80
  "promotion.preview-not-promotable": false,
71
81
  "promotion.production-branch-moved": false,
72
82
  "promotion.source-tree-mismatch": false,
@@ -1,15 +1,26 @@
1
+ export * from './ai-budget-ledger-event.js';
1
2
  export * from './ai-callsite-inventory.js';
3
+ export * from './ai-classification-stamp.js';
4
+ export * from './ai-composite-policy-digest-helper.js';
5
+ export * from './ai-composite-policy-digest.js';
6
+ export * from './ai-deployment-gate-decision.js';
7
+ export * from './ai-gateway-key-lifecycle-event.js';
2
8
  export * from './ai-gateway-key-lookup.js';
3
9
  export * from './ai-gateway-key-token.js';
4
10
  export * from './ai-governance-decision.js';
11
+ export * from './ai-metering-policy.js';
5
12
  export * from './ai-policy-snapshot.js';
13
+ export * from './ai-pricing-revision.js';
14
+ export * from './ai-runtime-binding.js';
6
15
  export * from './ai-runtime-contract.js';
16
+ export * from './ai-trace-event-v2.js';
7
17
  export * from './ai-trace-event.js';
8
18
  export * from './ai-transform-event.js';
9
19
  export * from './ai-transform-result.js';
10
20
  export * from './ai-verification-evidence.js';
11
21
  export * from './api-error-response.js';
12
22
  export * from './artifact-contract.js';
23
+ export * from './contract-release.js';
13
24
  export * from './data-dependency.js';
14
25
  export * from './data-grant.js';
15
26
  export * from './data-source.js';
@@ -28,5 +39,6 @@ export * from './kvs-routing-entry.js';
28
39
  export * from './promotion-request.js';
29
40
  export * from './promotion-response.js';
30
41
  export * from './secret-reference.js';
42
+ export * from './transform-report.js';
31
43
  export * from './version-state-machine.js';
32
44
  export * from './version-state.js';
@@ -1,17 +1,28 @@
1
1
  /* eslint-disable */
2
2
  // Code generated by tools/gen/gen.mjs from schema/*.json. DO NOT EDIT.
3
+ export * from './ai-budget-ledger-event.js';
3
4
  export * from './ai-callsite-inventory.js';
5
+ export * from './ai-classification-stamp.js';
6
+ export * from './ai-composite-policy-digest-helper.js';
7
+ export * from './ai-composite-policy-digest.js';
8
+ export * from './ai-deployment-gate-decision.js';
9
+ export * from './ai-gateway-key-lifecycle-event.js';
4
10
  export * from './ai-gateway-key-lookup.js';
5
11
  export * from './ai-gateway-key-token.js';
6
12
  export * from './ai-governance-decision.js';
13
+ export * from './ai-metering-policy.js';
7
14
  export * from './ai-policy-snapshot.js';
15
+ export * from './ai-pricing-revision.js';
16
+ export * from './ai-runtime-binding.js';
8
17
  export * from './ai-runtime-contract.js';
18
+ export * from './ai-trace-event-v2.js';
9
19
  export * from './ai-trace-event.js';
10
20
  export * from './ai-transform-event.js';
11
21
  export * from './ai-transform-result.js';
12
22
  export * from './ai-verification-evidence.js';
13
23
  export * from './api-error-response.js';
14
24
  export * from './artifact-contract.js';
25
+ export * from './contract-release.js';
15
26
  export * from './data-dependency.js';
16
27
  export * from './data-grant.js';
17
28
  export * from './data-source.js';
@@ -30,5 +41,6 @@ export * from './kvs-routing-entry.js';
30
41
  export * from './promotion-request.js';
31
42
  export * from './promotion-response.js';
32
43
  export * from './secret-reference.js';
44
+ export * from './transform-report.js';
33
45
  export * from './version-state-machine.js';
34
46
  export * from './version-state.js';