@fourier-labs/harbour-contracts 0.12.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "schema": "harbour.contract-release/1.0",
3
- "repositoryVersion": "0.12.0.0",
4
- "publishVersion": "0.12.0",
5
- "publishTag": "v0.12.0",
6
- "schemasDigest": "sha256:0e90bbd74c5b1df2e0123ec75d8bec1296e9647b95c4aa88a9e9bb2452872bf4",
7
- "aiFixturesDigest": "sha256:8c406c269e909c028e35eca1321c18de95457ddd6731db8f3fb4cd90726758a8",
8
- "generatedGoDigest": "sha256:b42e736e80decef8ac00823a1e9a2e6ffe21dc9de43c5c9e1c53ebf467d34e2c",
9
- "generatedTypeScriptDigest": "sha256:03ed593ff19141cb265436d6d069b86e0a75f3290d74b76689d48c5b37a52e5b",
3
+ "repositoryVersion": "0.14.0.0",
4
+ "publishVersion": "0.14.0",
5
+ "publishTag": "v0.14.0",
6
+ "schemasDigest": "sha256:c6988f78bbd8f391a9e60809f53f6eabda8dd86dfa1a3a8b0cc0a76af718dc3f",
7
+ "aiFixturesDigest": "sha256:07413b9323004b8afa222b9da0e01fdabd32a8130bc0d5367526f0c8ba169e3e",
8
+ "generatedGoDigest": "sha256:88aa8a5fdc00f593db66606bac3905256c056d9d4bda6dbed2e7053a3a082f14",
9
+ "generatedTypeScriptDigest": "sha256:317e20175e1c367740fc895e15333d95752185d2a34fb67fec0f76849e70b865",
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,12 +19,12 @@
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:e994d4782c9bc4f14d3a1c35c9ac1e7a5ec84284cde5b3af7e3e6022130ddbb3",
22
- "schema/ai-governance-decision.schema.json": "sha256:4d45c8540908bebb68456c45077c0cd453b416a3b955cc710de270950e090f50",
22
+ "schema/ai-governance-decision.schema.json": "sha256:a8e7a30703cebc5476742968edbc3bcc7446400ff544272c5fc6fd1d178fa96d",
23
23
  "schema/ai-metering-policy.schema.json": "sha256:044115938d254d914feac162219d20ee48f741cd7ad32df4613b45f9c862fe8c",
24
24
  "schema/ai-policy-snapshot.schema.json": "sha256:1778de5f1a5f6b034e2e767bd8189ad50daa03194107a05e090efafb5dce0cc1",
25
25
  "schema/ai-pricing-revision.schema.json": "sha256:847fc3abf93ace82a188b028b067f3c3c1e7452e02a3c9ebba9bfbf3af749fd6",
26
26
  "schema/ai-runtime-binding.schema.json": "sha256:e86cac2f70a474997bdef1577ca15f22982ec0ce866921df3f763c4d7f7fa191",
27
- "schema/ai-runtime-contract.schema.json": "sha256:694cf8900ebe07a37ba0f12f50d2eed76e6608dc809e2b65969043e548dc4bba",
27
+ "schema/ai-runtime-contract.schema.json": "sha256:b5df9a26b4ed219f4f84e44699523a07142cb2edbe2807ab95a1d506abf52ee0",
28
28
  "schema/ai-trace-event-v2.schema.json": "sha256:b479199bb6e44ea23a1da53f69943cb8f3886c433914fdb9bf9e9bdbc3dd767d",
29
29
  "schema/ai-trace-event.schema.json": "sha256:47c2268c9b8dbcf6e7908aeef43e71210f8a309bf4be4acc02139f9b59e7c717",
30
30
  "schema/ai-transform-event.schema.json": "sha256:b845762e653b19afdaf959f7bd1624db490cd10c760daa9aaa61fb83f2a86b6e",
@@ -42,7 +42,7 @@
42
42
  "schema/deployment-source.schema.json": "sha256:256988b1efbfc90bd0e1ae31a2c5d69b20ef1e4471dc24c9f9aa759278270fbe",
43
43
  "schema/deployment-status-failure.schema.json": "sha256:1a182e603d22467a4be507a37fd10698f6f3178d314d33eaf5de2c7f687c9412",
44
44
  "schema/deployment-status-request.schema.json": "sha256:1f9f87adc947a252b53b61f71ae17f8c1b8fbc1166f31301a043d11ac257dc66",
45
- "schema/deployment-status-response.schema.json": "sha256:9583c36df8100cadbae74c909b59344cbc43585b09b66010c591d721054ece1a",
45
+ "schema/deployment-status-response.schema.json": "sha256:075a9ae537f5e0822828069417d6222c61f04ea6ed5e28f71b29523a4fcaa67b",
46
46
  "schema/env-bindings.schema.json": "sha256:ae09bc4ca5508afa698ef854a59153c4c6f99b07017b48cb9b07ce05abad12f2",
47
47
  "schema/error-category.enum.json": "sha256:e215fe3dc254cf7fca6785f3a12aaeee9d28811b6625916630adda1ed5fc1a14",
48
48
  "schema/error-envelope.schema.json": "sha256:75dccda7dd16fdf8435deda53fc7dbcdc109b65114617a17f11763010c656f90",
@@ -66,13 +66,13 @@
66
66
  "fixtures/ai/valid-failed-trace-event.json": "sha256:3c25816ddae6f4f9448ffd8c6144631c341fe8f19f932efe981757b5e221df87",
67
67
  "fixtures/ai/valid-gateway-key-lifecycle-event.json": "sha256:e8730526f7616adf7f2bc5cc29f566eadcf46d25b61807ed3c083956dd70d323",
68
68
  "fixtures/ai/valid-gateway-key-lookup.json": "sha256:a577cbdd019a7f39631e7efdb12dccb4377e3184d626a79979bfc426d04a50f4",
69
- "fixtures/ai/valid-governance-decision.json": "sha256:0cd3ffc5244e177af00670c6d839814a93048157cf11ccb738ed13b10d875c55",
69
+ "fixtures/ai/valid-governance-decision.json": "sha256:b9d4904b8b6df5f652acc68ec7c8716f192f80d23177ae82b0cc26081bbb9d25",
70
70
  "fixtures/ai/valid-inventory.json": "sha256:3bb29df5525c3a69f6c13c203fbd08bb3d493ae5416fdd2f99125c74bbc11759",
71
71
  "fixtures/ai/valid-metering-policy.json": "sha256:73d10929f0232a09d31b263c5bf61f8985c9c629e1e78ea5c867dd919ff95c96",
72
72
  "fixtures/ai/valid-policy-snapshot.json": "sha256:5ce6df9c261989f7a279eb772ead47d19e425a3e1df78d3a3eeb9043dee04318",
73
73
  "fixtures/ai/valid-pricing-revision.json": "sha256:b8a89816a332397257fa0c40e5142ad9f05c9c6cbb92c37ae700f9b61c31fbce",
74
74
  "fixtures/ai/valid-runtime-binding.json": "sha256:df971a518b8e680bb5260e801e7a0b03dd05076aeb11258205ec5ec205719f53",
75
- "fixtures/ai/valid-runtime-contract.json": "sha256:a6af61297f2612679112675e9d401685966e58b891720014e3a5176426850006",
75
+ "fixtures/ai/valid-runtime-contract.json": "sha256:ee9b3e810bca14e487d55f171597d570a79801d5aba0a8080951d51d7772c233",
76
76
  "fixtures/ai/valid-sanitized-binding-evidence-byo-source.json": "sha256:77f258fdb6cb7232b78a62fc035e293c6d604bed438ca35c54ab398064bc053a",
77
77
  "fixtures/ai/valid-sanitized-binding-evidence.json": "sha256:19a4994b9a562305854945643a588f4f7c098db4bc3653da26df6e4284b00190",
78
78
  "fixtures/ai/valid-source-revision-digest.json": "sha256:ec32021dbb636de9a1e47d560bfe59c21451e88f67d647387968aba48691409d",
@@ -87,11 +87,11 @@
87
87
  "gen-go/ai_contracts_test.go": "sha256:5b5aaa331155958ce21d540e9c77a9ef4ca7d072c4ef6f7d9061add1449a7541",
88
88
  "gen-go/ai_gateway_key_token.go": "sha256:859c34383955f21c22589158214df074b74de6907a54bee7c781acfa9dad8679",
89
89
  "gen-go/binding_digest_helpers.go": "sha256:50462ba2beb16c7931dfc7e10302c12c90bf8111788991f74f08a718125dfbfb",
90
- "gen-go/contracts_test.go": "sha256:f15c34da8758ab4f81c4ea3f03382010a1a5a83159dd0dc18abc9c543d77951e",
90
+ "gen-go/contracts_test.go": "sha256:105f72ed711a34778d875b5a957bae3d8afbe67ed006e4809b8031b4cc303ec0",
91
91
  "gen-go/doc.go": "sha256:c17bc2d39ed175ce7105c68305f8ae7152f659eb7cd187ecceee7698eb3a65dd",
92
92
  "gen-go/error_category.go": "sha256:e36745796e32f753cf153a76c5f77c4bdf37a6a228e6607abcf95cac6f4a934b",
93
93
  "gen-go/schema_documents.go": "sha256:c0399930c719b93d850847b257186f08d69a527f3ac1286ed0c49b66327b315a",
94
- "gen-go/types.go": "sha256:6e5c65527e748482a9fa44ebdcd4c8122dbb503d8c006b58baa0c18c360dfed7",
94
+ "gen-go/types.go": "sha256:6fa162e8e36eb1a6d131a00729d414df623bcbd9859a9137f063d0d43546a3a6",
95
95
  "gen-go/version_state.go": "sha256:827f8768359998409b86ea02d9ba1a149981928bae7161e4dc95fe0520ce7410"
96
96
  },
97
97
  "generatedTypeScript": {
@@ -104,12 +104,12 @@
104
104
  "gen-ts/ai-gateway-key-lifecycle-event.ts": "sha256:8f1ab4774be1959e82c97da20ec8b293f3f10262f95393d2ae57e4c7817353cb",
105
105
  "gen-ts/ai-gateway-key-lookup.ts": "sha256:e55fc9a2252d5e7e1a383a58c8b92f22d8147ee4862a893a6cfe815b4225fc00",
106
106
  "gen-ts/ai-gateway-key-token.ts": "sha256:ff6551ad3332cc665878d7ec93f42ce185c375e637531b2fbc82c697b877e784",
107
- "gen-ts/ai-governance-decision.ts": "sha256:efc422971a06d741e048c81f299ce258d7fdd4b7f036a2b9dda7aaca0679e950",
107
+ "gen-ts/ai-governance-decision.ts": "sha256:f61737a8eb15dc52bf85623483be473d35112bc0adae7d4fb05affc2674cc9a2",
108
108
  "gen-ts/ai-metering-policy.ts": "sha256:dd261d57646a509cd46efaefac4aad58d018c7f7da98326dd8859e4ce951c56a",
109
109
  "gen-ts/ai-policy-snapshot.ts": "sha256:9a8c65936674a957979048a2a0c6d08c887c87f2c4d5e7e8127dcf31d33eccbc",
110
110
  "gen-ts/ai-pricing-revision.ts": "sha256:6e09e8354025dc859023295753ecc3674b5bc198b77317413654f1b7d2327a39",
111
111
  "gen-ts/ai-runtime-binding.ts": "sha256:176c830d400ce44c508f8d249bb3c9724b2d595b78262615487cdafc4790263e",
112
- "gen-ts/ai-runtime-contract.ts": "sha256:fc60f5c45edfee7d6f37e99ed9a60e4e5c22bba5793593aa259f028e1c7d0c6e",
112
+ "gen-ts/ai-runtime-contract.ts": "sha256:80d2c0a1d9b71a6aaccbbdd2bae1a1ad84f07b63ce850c040dcb5c8efb0f7e84",
113
113
  "gen-ts/ai-trace-event-v2.ts": "sha256:8c994355f290864da1cf42850c3eceb0e4a1567b45ed989de865213430d3ce0e",
114
114
  "gen-ts/ai-trace-event.ts": "sha256:1e714996dc4622e94c6ae144a7bdb09147306940db47ae788aafd6f7f8311b0c",
115
115
  "gen-ts/ai-transform-event.ts": "sha256:c8b520e01ce12b0e3a5ebe03a3ca63cc83368f26e1eef933de732c4fc1c504f9",
@@ -128,7 +128,7 @@
128
128
  "gen-ts/deployment-source.ts": "sha256:8ccb55aaa7260eb6d19a00987d6a20a4b514e343564da13f27cd7fee8013500a",
129
129
  "gen-ts/deployment-status-failure.ts": "sha256:3ffe268e32240f9da3172b161b8e99e06aa2d21d8c37b30f340506a337c64047",
130
130
  "gen-ts/deployment-status-request.ts": "sha256:7ddccd07ab9f6d0821903a291ab35f903bb055727e03a058b99165ec048f6483",
131
- "gen-ts/deployment-status-response.ts": "sha256:b6916c226a6965368642d821d4b9c029649d00d27d7e09996fc1927fcc698401",
131
+ "gen-ts/deployment-status-response.ts": "sha256:b35822ccfcedec8f83306e636eb27e0fdde6390aea40b6da97881ac5e6bda26e",
132
132
  "gen-ts/env-bindings.ts": "sha256:a167cfe9842352c9fec6412ff0d82bda9c5f5c3a1af541bd5c27a57f54fd0941",
133
133
  "gen-ts/error-category-registry.ts": "sha256:327a75153684b161f07ed3f5321048ff928147acdde6b52db9cafd59c48b17c4",
134
134
  "gen-ts/error-category.ts": "sha256:9bda89180c3b740c9aa8be466216592e8ca9d0d368c274333edf6ea5c45afd8e",
@@ -68,6 +68,7 @@ export interface AiDecisionRuntimeContract {
68
68
  modelAliases: {
69
69
  generation?: string;
70
70
  embeddings?: string;
71
+ realtime?: string;
71
72
  };
72
73
  policyDigest: AiDecisionDigest;
73
74
  runtimeBinding?: AiDecisionRuntimeBinding;
@@ -21,6 +21,7 @@ export interface AiRuntimeContract {
21
21
  modelAliases: {
22
22
  generation?: AiRuntimeModelAlias;
23
23
  embeddings?: AiRuntimeModelAlias;
24
+ realtime?: AiRuntimeModelAlias;
24
25
  };
25
26
  policyDigest: AiRuntimeDigest;
26
27
  runtimeBinding?: AiRuntimeContractBinding;
@@ -1,7 +1,7 @@
1
- export declare const ContractRepositoryVersion: "0.12.0.0";
2
- export declare const ContractPublishVersion: "0.12.0";
3
- export declare const ContractPublishTag: "v0.12.0";
4
- export declare const ContractSchemasDigest: "sha256:0e90bbd74c5b1df2e0123ec75d8bec1296e9647b95c4aa88a9e9bb2452872bf4";
5
- export declare const ContractAiFixturesDigest: "sha256:8c406c269e909c028e35eca1321c18de95457ddd6731db8f3fb4cd90726758a8";
6
- export declare const ContractGeneratedGoDigest: "sha256:b42e736e80decef8ac00823a1e9a2e6ffe21dc9de43c5c9e1c53ebf467d34e2c";
7
- export declare const ContractGeneratedTypeScriptDigest: "sha256:03ed593ff19141cb265436d6d069b86e0a75f3290d74b76689d48c5b37a52e5b";
1
+ export declare const ContractRepositoryVersion: "0.14.0.0";
2
+ export declare const ContractPublishVersion: "0.14.0";
3
+ export declare const ContractPublishTag: "v0.14.0";
4
+ export declare const ContractSchemasDigest: "sha256:c6988f78bbd8f391a9e60809f53f6eabda8dd86dfa1a3a8b0cc0a76af718dc3f";
5
+ export declare const ContractAiFixturesDigest: "sha256:07413b9323004b8afa222b9da0e01fdabd32a8130bc0d5367526f0c8ba169e3e";
6
+ export declare const ContractGeneratedGoDigest: "sha256:88aa8a5fdc00f593db66606bac3905256c056d9d4bda6dbed2e7053a3a082f14";
7
+ export declare const ContractGeneratedTypeScriptDigest: "sha256:317e20175e1c367740fc895e15333d95752185d2a34fb67fec0f76849e70b865";
@@ -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.12.0.0";
4
- export const ContractPublishVersion = "0.12.0";
5
- export const ContractPublishTag = "v0.12.0";
6
- export const ContractSchemasDigest = "sha256:0e90bbd74c5b1df2e0123ec75d8bec1296e9647b95c4aa88a9e9bb2452872bf4";
7
- export const ContractAiFixturesDigest = "sha256:8c406c269e909c028e35eca1321c18de95457ddd6731db8f3fb4cd90726758a8";
8
- export const ContractGeneratedGoDigest = "sha256:b42e736e80decef8ac00823a1e9a2e6ffe21dc9de43c5c9e1c53ebf467d34e2c";
9
- export const ContractGeneratedTypeScriptDigest = "sha256:03ed593ff19141cb265436d6d069b86e0a75f3290d74b76689d48c5b37a52e5b";
3
+ export const ContractRepositoryVersion = "0.14.0.0";
4
+ export const ContractPublishVersion = "0.14.0";
5
+ export const ContractPublishTag = "v0.14.0";
6
+ export const ContractSchemasDigest = "sha256:c6988f78bbd8f391a9e60809f53f6eabda8dd86dfa1a3a8b0cc0a76af718dc3f";
7
+ export const ContractAiFixturesDigest = "sha256:07413b9323004b8afa222b9da0e01fdabd32a8130bc0d5367526f0c8ba169e3e";
8
+ export const ContractGeneratedGoDigest = "sha256:88aa8a5fdc00f593db66606bac3905256c056d9d4bda6dbed2e7053a3a082f14";
9
+ export const ContractGeneratedTypeScriptDigest = "sha256:317e20175e1c367740fc895e15333d95752185d2a34fb67fec0f76849e70b865";
@@ -15,6 +15,12 @@ export interface DeploymentStatusResponse {
15
15
  updatedAt: string;
16
16
  url?: string;
17
17
  failure?: StatusFailureProjection;
18
+ /**
19
+ * Bounded chronological trail (oldest first) of human-renderable progress moments observed while this version deployed. Ephemeral and best-effort: a deploy that recorded none — including every deploy that predates this field — simply omits it, so absence means 'no progress view available', never failure.
20
+ *
21
+ * @maxItems 50
22
+ */
23
+ progress?: StatusProgressEvent[];
18
24
  }
19
25
  export interface StatusFailureProjection {
20
26
  category: string;
@@ -22,3 +28,25 @@ export interface StatusFailureProjection {
22
28
  message: string;
23
29
  remediationHint: string;
24
30
  }
31
+ export interface StatusProgressEvent {
32
+ /**
33
+ * ISO-8601 UTC instant the moment was observed.
34
+ */
35
+ at: string;
36
+ /**
37
+ * Deliberately a bounded string, not a closed enum: this vocabulary is produced and grown in the data plane, and closing it here would turn every new narration moment into a lockstep contracts release — the drift failure this project has already paid for twice. A consumer must render an unrecognised token generically and must never reject the response for it. Known values today: job.started, transform.attempt-started, transform.attempt-finished, transform.contract-rejected, build.started, build.finished, workspace.published, report.published, agent.heartbeat, job.finished.
38
+ */
39
+ event: string;
40
+ /**
41
+ * Coarse pipeline stage the moment belongs to, e.g. build.
42
+ */
43
+ stage?: string;
44
+ /**
45
+ * 1-based attempt number when the moment belongs to a retried step.
46
+ */
47
+ attempt?: number;
48
+ /**
49
+ * Short frontend-safe detail. Like the failure projection, it carries no internal identifiers, raw provider errors or secrets.
50
+ */
51
+ detail?: string;
52
+ }
@@ -148,6 +148,7 @@ export type AiEffectivePolicy = AiScopePolicySet & {
148
148
  export type AiModelAliasAssignment = {
149
149
  generation?: string;
150
150
  embeddings?: string;
151
+ realtime?: string;
151
152
  };
152
153
  declare const narrowedBrand: unique symbol;
153
154
  /** Granted only by the narrowing combinators (`mergeKeyedFamily`,
@@ -272,7 +272,7 @@ export function mergeKeyedFamily(tenant, application, rules) {
272
272
  * another route. `{ ...tenant, ...application }` made the application the
273
273
  * authority for both. */
274
274
  export function mergeModelAliases(tenant, application) {
275
- const merged = ["generation", "embeddings"].map(capability => {
275
+ const merged = ["generation", "embeddings", "realtime"].map(capability => {
276
276
  const assigned = application[capability];
277
277
  if (assigned === undefined)
278
278
  return {};
@@ -38,7 +38,7 @@
38
38
  "mode": "enforce",
39
39
  "gatewayBaseUrl": "https://ai.harbour.example/v1",
40
40
  "gatewayKeySecretRef": "aws-sm://harbour/ai/fourier/support-assistant/preview/versions/000124/gateway-key",
41
- "modelAliases": { "generation": "harbour/standard" },
41
+ "modelAliases": { "generation": "harbour/standard", "realtime": "harbour/realtime" },
42
42
  "policyDigest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
43
43
  "runtimeBinding": {
44
44
  "schema": "harbour.ai-runtime-binding/1.0",
@@ -10,7 +10,8 @@
10
10
  "gatewayKeySecretRef": "aws-sm://harbour/ai/fourier/support-assistant/preview/versions/000124/gateway-key",
11
11
  "modelAliases": {
12
12
  "generation": "harbour/standard",
13
- "embeddings": "harbour/embeddings"
13
+ "embeddings": "harbour/embeddings",
14
+ "realtime": "harbour/realtime"
14
15
  },
15
16
  "policyDigest": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
16
17
  "runtimeBinding": {
@@ -72,6 +72,7 @@ export interface AiDecisionRuntimeContract {
72
72
  modelAliases: {
73
73
  generation?: string;
74
74
  embeddings?: string;
75
+ realtime?: string;
75
76
  };
76
77
  policyDigest: AiDecisionDigest;
77
78
  runtimeBinding?: AiDecisionRuntimeBinding;
@@ -25,6 +25,7 @@ export interface AiRuntimeContract {
25
25
  modelAliases: {
26
26
  generation?: AiRuntimeModelAlias;
27
27
  embeddings?: AiRuntimeModelAlias;
28
+ realtime?: AiRuntimeModelAlias;
28
29
  };
29
30
  policyDigest: AiRuntimeDigest;
30
31
  runtimeBinding?: AiRuntimeContractBinding;
@@ -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.12.0.0" as const;
5
- export const ContractPublishVersion = "0.12.0" as const;
6
- export const ContractPublishTag = "v0.12.0" as const;
7
- export const ContractSchemasDigest = "sha256:0e90bbd74c5b1df2e0123ec75d8bec1296e9647b95c4aa88a9e9bb2452872bf4" as const;
8
- export const ContractAiFixturesDigest = "sha256:8c406c269e909c028e35eca1321c18de95457ddd6731db8f3fb4cd90726758a8" as const;
9
- export const ContractGeneratedGoDigest = "sha256:b42e736e80decef8ac00823a1e9a2e6ffe21dc9de43c5c9e1c53ebf467d34e2c" as const;
10
- export const ContractGeneratedTypeScriptDigest = "sha256:03ed593ff19141cb265436d6d069b86e0a75f3290d74b76689d48c5b37a52e5b" as const;
4
+ export const ContractRepositoryVersion = "0.14.0.0" as const;
5
+ export const ContractPublishVersion = "0.14.0" as const;
6
+ export const ContractPublishTag = "v0.14.0" as const;
7
+ export const ContractSchemasDigest = "sha256:c6988f78bbd8f391a9e60809f53f6eabda8dd86dfa1a3a8b0cc0a76af718dc3f" as const;
8
+ export const ContractAiFixturesDigest = "sha256:07413b9323004b8afa222b9da0e01fdabd32a8130bc0d5367526f0c8ba169e3e" as const;
9
+ export const ContractGeneratedGoDigest = "sha256:88aa8a5fdc00f593db66606bac3905256c056d9d4bda6dbed2e7053a3a082f14" as const;
10
+ export const ContractGeneratedTypeScriptDigest = "sha256:317e20175e1c367740fc895e15333d95752185d2a34fb67fec0f76849e70b865" as const;
@@ -30,6 +30,12 @@ export interface DeploymentStatusResponse {
30
30
  updatedAt: string;
31
31
  url?: string;
32
32
  failure?: StatusFailureProjection;
33
+ /**
34
+ * Bounded chronological trail (oldest first) of human-renderable progress moments observed while this version deployed. Ephemeral and best-effort: a deploy that recorded none — including every deploy that predates this field — simply omits it, so absence means 'no progress view available', never failure.
35
+ *
36
+ * @maxItems 50
37
+ */
38
+ progress?: StatusProgressEvent[];
33
39
  }
34
40
  export interface StatusFailureProjection {
35
41
  category: string;
@@ -37,3 +43,25 @@ export interface StatusFailureProjection {
37
43
  message: string;
38
44
  remediationHint: string;
39
45
  }
46
+ export interface StatusProgressEvent {
47
+ /**
48
+ * ISO-8601 UTC instant the moment was observed.
49
+ */
50
+ at: string;
51
+ /**
52
+ * Deliberately a bounded string, not a closed enum: this vocabulary is produced and grown in the data plane, and closing it here would turn every new narration moment into a lockstep contracts release — the drift failure this project has already paid for twice. A consumer must render an unrecognised token generically and must never reject the response for it. Known values today: job.started, transform.attempt-started, transform.attempt-finished, transform.contract-rejected, build.started, build.finished, workspace.published, report.published, agent.heartbeat, job.finished.
53
+ */
54
+ event: string;
55
+ /**
56
+ * Coarse pipeline stage the moment belongs to, e.g. build.
57
+ */
58
+ stage?: string;
59
+ /**
60
+ * 1-based attempt number when the moment belongs to a retried step.
61
+ */
62
+ attempt?: number;
63
+ /**
64
+ * Short frontend-safe detail. Like the failure projection, it carries no internal identifiers, raw provider errors or secrets.
65
+ */
66
+ detail?: string;
67
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fourier-labs/harbour-contracts",
3
- "version": "0.12.0",
3
+ "version": "0.14.0",
4
4
  "description": "Single source of truth for every data shape that crosses a boundary between Harbour components.",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,
@@ -65,7 +65,8 @@
65
65
  "minProperties": 1,
66
66
  "properties": {
67
67
  "generation": { "type": "string", "minLength": 3, "maxLength": 160 },
68
- "embeddings": { "type": "string", "minLength": 3, "maxLength": 160 }
68
+ "embeddings": { "type": "string", "minLength": 3, "maxLength": 160 },
69
+ "realtime": { "type": "string", "minLength": 3, "maxLength": 160 }
69
70
  }
70
71
  },
71
72
  "policyDigest": { "$ref": "#/definitions/AiDecisionDigest" },
@@ -49,7 +49,8 @@
49
49
  "minProperties": 1,
50
50
  "properties": {
51
51
  "generation": { "$ref": "#/definitions/AiRuntimeModelAlias" },
52
- "embeddings": { "$ref": "#/definitions/AiRuntimeModelAlias" }
52
+ "embeddings": { "$ref": "#/definitions/AiRuntimeModelAlias" },
53
+ "realtime": { "$ref": "#/definitions/AiRuntimeModelAlias" }
53
54
  }
54
55
  },
55
56
  "policyDigest": { "$ref": "#/definitions/AiRuntimeDigest" },
@@ -52,6 +52,12 @@
52
52
  },
53
53
  "failure": {
54
54
  "$ref": "#/definitions/StatusFailureProjection"
55
+ },
56
+ "progress": {
57
+ "type": "array",
58
+ "maxItems": 50,
59
+ "description": "Bounded chronological trail (oldest first) of human-renderable progress moments observed while this version deployed. Ephemeral and best-effort: a deploy that recorded none — including every deploy that predates this field — simply omits it, so absence means 'no progress view available', never failure.",
60
+ "items": { "$ref": "#/definitions/StatusProgressEvent" }
55
61
  }
56
62
  },
57
63
  "definitions": {
@@ -74,6 +80,41 @@
74
80
  "type": "string"
75
81
  }
76
82
  }
83
+ },
84
+ "StatusProgressEvent": {
85
+ "type": "object",
86
+ "additionalProperties": false,
87
+ "required": ["at", "event"],
88
+ "properties": {
89
+ "at": {
90
+ "type": "string",
91
+ "format": "date-time",
92
+ "description": "ISO-8601 UTC instant the moment was observed."
93
+ },
94
+ "event": {
95
+ "type": "string",
96
+ "minLength": 1,
97
+ "maxLength": 64,
98
+ "pattern": "^[a-z][a-z0-9]*(\\.[a-z0-9-]+)+$",
99
+ "description": "Deliberately a bounded string, not a closed enum: this vocabulary is produced and grown in the data plane, and closing it here would turn every new narration moment into a lockstep contracts release — the drift failure this project has already paid for twice. A consumer must render an unrecognised token generically and must never reject the response for it. Known values today: job.started, transform.attempt-started, transform.attempt-finished, transform.contract-rejected, build.started, build.finished, workspace.published, report.published, agent.heartbeat, job.finished."
100
+ },
101
+ "stage": {
102
+ "type": "string",
103
+ "minLength": 1,
104
+ "maxLength": 32,
105
+ "description": "Coarse pipeline stage the moment belongs to, e.g. build."
106
+ },
107
+ "attempt": {
108
+ "type": "integer",
109
+ "minimum": 1,
110
+ "description": "1-based attempt number when the moment belongs to a retried step."
111
+ },
112
+ "detail": {
113
+ "type": "string",
114
+ "maxLength": 256,
115
+ "description": "Short frontend-safe detail. Like the failure projection, it carries no internal identifiers, raw provider errors or secrets."
116
+ }
117
+ }
77
118
  }
78
119
  }
79
120
  }