@xemahq/api-client-generator 2.1.2 → 2.3.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,5 +1,5 @@
1
1
  {
2
2
  "algorithm": "sha256/len-framed-v1",
3
- "hash": "a6bcafbc4f16ed64ccf62c754aa1d1d81f3e5edef11605d70db039693584ce32",
4
- "fileCount": 22
3
+ "hash": "535a6b2bc1dea247f84cf2a87e915d50e859422ce9d9d675b991082b3e0a4813",
4
+ "fileCount": 23
5
5
  }
package/dist/index.d.ts CHANGED
@@ -5,6 +5,7 @@ export * from './lib/default-stubs';
5
5
  export * from './lib/extract-openapi';
6
6
  export * from './lib/repo-post-process';
7
7
  export * from './lib/client-package';
8
+ export * from './lib/client-changeset';
8
9
  export * from './lib/client-version';
9
10
  export * from './lib/client-surface';
10
11
  export * from './lib/generate-clients';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC"}
package/dist/index.js CHANGED
@@ -21,6 +21,7 @@ __exportStar(require("./lib/default-stubs"), exports);
21
21
  __exportStar(require("./lib/extract-openapi"), exports);
22
22
  __exportStar(require("./lib/repo-post-process"), exports);
23
23
  __exportStar(require("./lib/client-package"), exports);
24
+ __exportStar(require("./lib/client-changeset"), exports);
24
25
  __exportStar(require("./lib/client-version"), exports);
25
26
  __exportStar(require("./lib/client-surface"), exports);
26
27
  __exportStar(require("./lib/generate-clients"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,uDAAqC;AACrC,kDAAgC;AAChC,yDAAuC;AACvC,sDAAoC;AACpC,wDAAsC;AACtC,0DAAwC;AACxC,uDAAqC;AACrC,uDAAqC;AACrC,uDAAqC;AACrC,yDAAuC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,uDAAqC;AACrC,kDAAgC;AAChC,yDAAuC;AACvC,sDAAoC;AACpC,wDAAsC;AACtC,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC;AACvC,uDAAqC;AACrC,uDAAqC;AACrC,yDAAuC"}
@@ -5,20 +5,6 @@ export interface OperationResponseShape {
5
5
  readonly successCodes: readonly string[];
6
6
  readonly declaresResponseSchema: boolean;
7
7
  }
8
- export interface StructuralExemption {
9
- readonly serviceId: string;
10
- readonly operationId: string;
11
- readonly reason: string;
12
- }
13
- export interface PendingDeclaration {
14
- readonly serviceId: string;
15
- readonly operationId: string;
16
- readonly reason: string;
17
- readonly declaredOn: string;
18
- readonly fixBy: string;
19
- }
20
- export declare const STRUCTURAL_EXEMPTIONS: readonly StructuralExemption[];
21
- export declare const PENDING_DECLARATIONS: readonly PendingDeclaration[];
22
8
  export interface ResponseShapeDocument {
23
9
  readonly paths?: Record<string, Record<string, unknown> | undefined>;
24
10
  }
@@ -26,16 +12,10 @@ export declare function collectOperationResponseShapes(doc: ResponseShapeDocumen
26
12
  export interface DeclaredGetResponseSummary {
27
13
  readonly gets: number;
28
14
  readonly declared: number;
29
- readonly exempt: number;
30
- readonly pending: number;
31
- readonly pendingResolved: number;
32
15
  }
33
16
  export interface DeclaredGetResponseInput {
34
17
  readonly serviceId: string;
35
18
  readonly shapes: readonly OperationResponseShape[];
36
- readonly today?: Date;
37
- readonly structuralExemptions?: readonly StructuralExemption[];
38
- readonly pendingDeclarations?: readonly PendingDeclaration[];
39
19
  }
40
20
  export declare function assertDeclaredGetResponses(input: DeclaredGetResponseInput): DeclaredGetResponseSummary;
41
21
  export declare function formatDeclaredGetResponseSummary(summary: DeclaredGetResponseSummary): string;
@@ -1 +1 @@
1
- {"version":3,"file":"assert-declared-get-responses.d.ts","sourceRoot":"","sources":["../../src/lib/assert-declared-get-responses.ts"],"names":[],"mappings":"AA8CA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAEzC,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;CAC1C;AAkBD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AASD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAK5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AASD,eAAO,MAAM,qBAAqB,EAAE,SAAS,mBAAmB,EAyH/D,CAAC;AAeF,eAAO,MAAM,oBAAoB,EAAE,SAAS,kBAAkB,EAgG7D,CAAC;AAGF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;CACtE;AAoBD,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,qBAAqB,GACzB,sBAAsB,EAAE,CA6C1B;AAmBD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAEnD,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC/D,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAC9D;AA+BD,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,wBAAwB,GAC9B,0BAA0B,CAwH5B;AAGD,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,0BAA0B,GAClC,MAAM,CAQR"}
1
+ {"version":3,"file":"assert-declared-get-responses.d.ts","sourceRoot":"","sources":["../../src/lib/assert-declared-get-responses.ts"],"names":[],"mappings":"AAgDA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAEzC,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;CAC1C;AAsBD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;CACtE;AAoBD,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,qBAAqB,GACzB,sBAAsB,EAAE,CA6C1B;AAmBD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACpD;AAkBD,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,wBAAwB,GAC9B,0BAA0B,CAmD5B;AAGD,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,0BAA0B,GAClC,MAAM,CAER"}
@@ -1,182 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PENDING_DECLARATIONS = exports.STRUCTURAL_EXEMPTIONS = void 0;
4
3
  exports.collectOperationResponseShapes = collectOperationResponseShapes;
5
4
  exports.assertDeclaredGetResponses = assertDeclaredGetResponses;
6
5
  exports.formatDeclaredGetResponseSummary = formatDeclaredGetResponseSummary;
7
6
  const BODILESS_SUCCESS_CODES = new Set(['204', '205']);
8
- exports.STRUCTURAL_EXEMPTIONS = [
9
- ...[
10
- 'artifact-store-api',
11
- 'audit-log-api',
12
- 'knowledge-base-api',
13
- 'project-registry-api',
14
- 'backlog-api',
15
- 'scm-connector-api',
16
- 'search-api',
17
- ].map((serviceId) => ({
18
- serviceId,
19
- operationId: 'McpController_handleGet',
20
- reason: 'MCP Streamable-HTTP transport is POST-only here; this GET only ever ' +
21
- 'writes a 405 JSON-RPC error to @Res(). It has no success body, so there ' +
22
- 'is no schema to declare — the 200 in the document is the framework ' +
23
- 'default for an @Res() handler.',
24
- })),
25
- {
26
- serviceId: 'activity-feed-api',
27
- operationId: 'realtime_stream',
28
- reason: 'SSE edge contributed by @xemahq/realtime-stream (operationId ' +
29
- '`realtime.stream`, see src/realtime/realtime-stream-classification.ts). ' +
30
- 'Emits text/event-stream frames to @Res(); there is no JSON body.',
31
- },
32
- {
33
- serviceId: 'activity-feed-api',
34
- operationId: 'realtime_session_stream',
35
- reason: 'SSE edge contributed by @xemahq/realtime-stream (operationId ' +
36
- '`realtime.sessionStream`). Emits text/event-stream frames to @Res(); ' +
37
- 'there is no JSON body.',
38
- },
39
- {
40
- serviceId: 'workflow-engine-api',
41
- operationId: 'RunStreamController_stream',
42
- reason: 'SSE run stream (@RawResponse, src/runs/run-stream.controller.ts). Polls ' +
43
- 'Temporal and writes snapshot-delta events plus heartbeats to @Res() ' +
44
- 'until the run is terminal; it returns Promise<void> for real.',
45
- },
46
- {
47
- serviceId: 'biome-host-api',
48
- operationId: 'BundleBytesController_download',
49
- reason: 'Streams the granted biome bundle tarball (raw gzip) to @Res() for a ' +
50
- 'dispatched adapter host (@RawResponse, src/bundle-bytes/). Bytes, not a ' +
51
- 'JSON document.',
52
- },
53
- {
54
- serviceId: 'document-render-api',
55
- operationId: 'RendersController_download',
56
- reason: 'Streams the rendered file bytes with a service-chosen Content-Type and ' +
57
- 'filename (src/renders/renders.controller.ts). The typed record is a ' +
58
- 'separate route, `RendersController_get`, which does declare its DTO.',
59
- },
60
- {
61
- serviceId: 'workflow-engine-api',
62
- operationId: 'DslSchemasController_workflow',
63
- reason: 'Serves the JSON Schema for `kind: Workflow` as application/schema+json, ' +
64
- 'generated at boot from the kernel Zod schema. The body is a schema ' +
65
- 'document, not a DTO.',
66
- },
67
- {
68
- serviceId: 'workflow-engine-api',
69
- operationId: 'DslSchemasController_reusableWorkflow',
70
- reason: 'Serves the JSON Schema for `kind: ReusableWorkflow` as ' +
71
- 'application/schema+json, generated at boot from the kernel Zod schema.',
72
- },
73
- {
74
- serviceId: 'workflow-engine-api',
75
- operationId: 'DslSchemasController_action',
76
- reason: 'Serves the JSON Schema for `kind: Action` as application/schema+json, ' +
77
- 'generated at boot from the kernel Zod schema.',
78
- },
79
- {
80
- serviceId: 'deliverable-specs-api',
81
- operationId: 'SchemasController_deliverableSpec',
82
- reason: 'Serves the JSON Schema for `kind: DeliverableSpec` as ' +
83
- 'application/schema+json, generated at boot from the kernel Zod schema.',
84
- },
85
- {
86
- serviceId: 'deliverable-specs-api',
87
- operationId: 'SchemasController_deliverableSpecOverlay',
88
- reason: 'Serves the JSON Schema for `kind: DeliverableSpecOverlay` as ' +
89
- 'application/schema+json, generated at boot from the kernel Zod schema.',
90
- },
91
- ];
92
- exports.PENDING_DECLARATIONS = [
93
- {
94
- serviceId: 'container-registry-api',
95
- operationId: 'RepositoriesController_list',
96
- reason: 'Returns Promise<ListRepositoriesResponseDto> — the DTO class already ' +
97
- 'exists, decorated, at src/repositories/dto/repository.dto.ts. The route ' +
98
- 'carries @ApiOperation but no response decorator, so the extracted spec ' +
99
- 'has nothing. One @ApiDataResponse(ListRepositoriesResponseDto) fixes it.',
100
- declaredOn: '2026-08-27',
101
- fixBy: '2026-10-15',
102
- },
103
- {
104
- serviceId: 'container-registry-api',
105
- operationId: 'TokenController_issueToken',
106
- reason: 'Returns Promise<TokenResponse> — the Distribution Token Spec body ' +
107
- '(token/expires_in/issued_at), a fixed and externally specified shape. ' +
108
- 'Needs a decorated DTO class; the route declares no response today.',
109
- declaredOn: '2026-08-27',
110
- fixBy: '2026-10-15',
111
- },
112
- {
113
- serviceId: 'biome-adapter-host',
114
- operationId: 'SidecarController_manifest',
115
- reason: 'Returns SidecarManifestResponse from @xemahq/biome-sdk/adapter — a TYPE ' +
116
- 'import, so nothing survives to runtime and no schema can be derived. ' +
117
- 'The shape is fully known (adapterKind, provider, displayName, ' +
118
- 'credentialKind, resourceTypes, actionNames, optional verifier) and needs ' +
119
- 'a decorated DTO class. NOT the /webhook/verify route, which is a ' +
120
- 'separate POST handler on the same controller.',
121
- declaredOn: '2026-08-27',
122
- fixBy: '2026-10-15',
123
- },
124
- {
125
- serviceId: 'app-platform-api',
126
- operationId: 'DelegatedSessionJwksController_jwks',
127
- reason: 'Returns Promise<JwksDocument> — an RFC 7517 JWK Set. Served raw ' +
128
- '(@RawResponse) so external verifiers get an unenveloped document, which ' +
129
- 'is a reason to skip the envelope, not a reason to omit the schema: ' +
130
- '{ keys: JWK[] } is declarable.',
131
- declaredOn: '2026-08-27',
132
- fixBy: '2026-10-15',
133
- },
134
- {
135
- serviceId: 'org-database-pool-api',
136
- operationId: 'PoolController_list',
137
- reason: 'src/pool/pool.controller.ts `list()` has no return-type annotation and ' +
138
- 'no response decorator; it returns PoolService.listPools(). Being fixed ' +
139
- 'alongside the other pool controllers.',
140
- declaredOn: '2026-08-27',
141
- fixBy: '2026-10-15',
142
- },
143
- {
144
- serviceId: 'org-database-pool-api',
145
- operationId: 'PoolController_get',
146
- reason: 'src/pool/pool.controller.ts `get()` has no return-type annotation and no ' +
147
- 'response decorator; it returns PoolService.getPoolForOrg(). This is the ' +
148
- 'browser-facing Public-surface route, so the generated void is reaching a ' +
149
- 'real UI caller.',
150
- declaredOn: '2026-08-27',
151
- fixBy: '2026-10-15',
152
- },
153
- {
154
- serviceId: 'org-database-pool-api',
155
- operationId: 'MigrationController_listByDatabase',
156
- reason: 'src/migration/migration.controller.ts `listByDatabase()` has no ' +
157
- 'return-type annotation and no response decorator; it returns ' +
158
- 'MigrationService.listByDatabase(). Public surface.',
159
- declaredOn: '2026-08-27',
160
- fixBy: '2026-10-15',
161
- },
162
- {
163
- serviceId: 'org-database-pool-api',
164
- operationId: 'MigrationController_get',
165
- reason: 'src/migration/migration.controller.ts `get()` has no return-type ' +
166
- 'annotation and no response decorator; it returns ' +
167
- 'MigrationService.getMigrationRun().',
168
- declaredOn: '2026-08-27',
169
- fixBy: '2026-10-15',
170
- },
171
- {
172
- serviceId: 'redis-pool-api',
173
- operationId: 'PoolController_list',
174
- reason: 'src/pool/pool.controller.ts `list()` has no return-type annotation and ' +
175
- 'no response decorator; it returns PoolService.listPools().',
176
- declaredOn: '2026-08-27',
177
- fixBy: '2026-10-15',
178
- },
179
- ];
180
7
  const HTTP_METHODS = new Set([
181
8
  'get',
182
9
  'post',
@@ -233,11 +60,10 @@ function isUndeclaredGet(shape) {
233
60
  return !shape.successCodes.every((code) => BODILESS_SUCCESS_CODES.has(code));
234
61
  }
235
62
  function formatSummaryLine(summary) {
236
- return (`${summary.declared}/${summary.gets} GET response(s) declared, ` +
237
- `${summary.exempt} structurally exempt, ${summary.pending} pending`);
63
+ return `${summary.declared}/${summary.gets} GET response(s) declared`;
238
64
  }
239
65
  function assertDeclaredGetResponses(input) {
240
- const { serviceId, shapes, today = new Date(), structuralExemptions = exports.STRUCTURAL_EXEMPTIONS, pendingDeclarations = exports.PENDING_DECLARATIONS, } = input;
66
+ const { serviceId, shapes } = input;
241
67
  if (shapes.length === 0) {
242
68
  throw new Error(`api-client-generator: ${serviceId} — the declared-GET-response check ` +
243
69
  `examined ZERO operations, so it proved nothing. Either the document ` +
@@ -247,66 +73,18 @@ function assertDeclaredGetResponses(input) {
247
73
  }
248
74
  const gets = shapes.filter((s) => s.method === 'get');
249
75
  const undeclared = shapes.filter(isUndeclaredGet);
250
- const undeclaredIds = new Set(undeclared.map((s) => s.operationId));
251
- const allOperationIds = new Set(shapes.map((s) => s.operationId));
252
- const structural = structuralExemptions.filter((e) => e.serviceId === serviceId);
253
- const pending = pendingDeclarations.filter((e) => e.serviceId === serviceId);
254
- const covered = new Set([
255
- ...structural.map((e) => e.operationId),
256
- ...pending.map((e) => e.operationId),
257
- ]);
258
76
  const failures = [];
259
- const refused = undeclared.filter((s) => !covered.has(s.operationId));
260
- for (const shape of refused) {
77
+ for (const shape of undeclared) {
261
78
  failures.push(` ${shape.operationId} (GET ${shape.route}) declares ` +
262
79
  `${shape.successCodes.join('/')} with no response schema. The ` +
263
80
  `generated client types it \`Promise<void>\` — "returns nothing", when ` +
264
81
  `what is true is "nobody declared". Add a response decorator naming the ` +
265
- `DTO the handler returns.`);
266
- }
267
- for (const entry of structural) {
268
- if (!allOperationIds.has(entry.operationId)) {
269
- failures.push(` STALE structural exemption: ${entry.operationId} is not an operation ` +
270
- `of ${serviceId} any more. Remove the entry from ` +
271
- `STRUCTURAL_EXEMPTIONS.`);
272
- continue;
273
- }
274
- if (!undeclaredIds.has(entry.operationId)) {
275
- failures.push(` STALE structural exemption: ${entry.operationId} now declares a ` +
276
- `response schema, so the exemption suppresses nothing. Remove it from ` +
277
- `STRUCTURAL_EXEMPTIONS.`);
278
- }
279
- }
280
- const todayIso = today.toISOString().slice(0, 10);
281
- let pendingResolved = 0;
282
- for (const entry of pending) {
283
- const expired = entry.fixBy < todayIso;
284
- if (!allOperationIds.has(entry.operationId)) {
285
- failures.push(` STALE pending declaration: ${entry.operationId} is not an operation ` +
286
- `of ${serviceId} any more. Remove the entry from ` +
287
- `PENDING_DECLARATIONS.`);
288
- continue;
289
- }
290
- const resolvedNow = !undeclaredIds.has(entry.operationId);
291
- if (resolvedNow) {
292
- pendingResolved += 1;
293
- }
294
- if (expired) {
295
- failures.push(` EXPIRED pending declaration: ${entry.operationId} was accepted until ` +
296
- `${entry.fixBy} (declared ${entry.declaredOn}) and that date has ` +
297
- `passed. ${resolvedNow
298
- ? 'The route now declares a response — delete the entry.'
299
- : 'Declare the response, or move the entry to ' +
300
- 'STRUCTURAL_EXEMPTIONS with a reason that says why the route ' +
301
- 'has no body.'}`);
302
- }
82
+ `DTO the handler returns, or — for a body that is not JSON — the media ` +
83
+ `type it carries and its schema.`);
303
84
  }
304
85
  const summary = {
305
86
  gets: gets.length,
306
87
  declared: gets.length - undeclared.length,
307
- exempt: structural.length,
308
- pending: pending.length,
309
- pendingResolved,
310
88
  };
311
89
  if (failures.length > 0) {
312
90
  throw new Error(`api-client-generator: ${serviceId} — ${failures.length} declared-GET-` +
@@ -321,9 +99,6 @@ function assertDeclaredGetResponses(input) {
321
99
  return summary;
322
100
  }
323
101
  function formatDeclaredGetResponseSummary(summary) {
324
- const resolved = summary.pendingResolved > 0
325
- ? `, ${summary.pendingResolved} pending RESOLVED — remove the entr${summary.pendingResolved === 1 ? 'y' : 'ies'}`
326
- : '';
327
- return `${formatSummaryLine(summary)}${resolved}`;
102
+ return formatSummaryLine(summary);
328
103
  }
329
104
  //# sourceMappingURL=assert-declared-get-responses.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"assert-declared-get-responses.js","sourceRoot":"","sources":["../../src/lib/assert-declared-get-responses.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assert-declared-get-responses.js","sourceRoot":"","sources":["../../src/lib/assert-declared-get-responses.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { type BumpClass } from './client-version';
2
+ export interface ClientChangesetPackage {
3
+ readonly name: string;
4
+ readonly version: string;
5
+ }
6
+ export declare function generatedChangesetFileName(serviceId: string): string;
7
+ export declare function applyClientChangesets(args: {
8
+ readonly repoRoot: string;
9
+ readonly serviceId: string;
10
+ readonly bumpClass: BumpClass;
11
+ readonly packages: readonly ClientChangesetPackage[];
12
+ }): string[];
13
+ //# sourceMappingURL=client-changeset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-changeset.d.ts","sourceRoot":"","sources":["../../src/lib/client-changeset.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;AAwB1B,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpE;AAmCD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACtD,GAAG,MAAM,EAAE,CA2DX"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generatedChangesetFileName = generatedChangesetFileName;
4
+ exports.applyClientChangesets = applyClientChangesets;
5
+ const node_fs_1 = require("node:fs");
6
+ const node_path_1 = require("node:path");
7
+ const client_version_1 = require("./client-version");
8
+ const CHANGESET_DIR = '.changeset';
9
+ const FRONT_MATTER = /^---\n([\s\S]*?)\n---\n/;
10
+ const RELEASE_LINE = /^(['"]?)(@?[^'":\s]+)\1:\s*(patch|minor|major)\s*$/;
11
+ function generatedChangesetFileName(serviceId) {
12
+ return `generated-client-${serviceId}.md`;
13
+ }
14
+ function readReleases(text, file) {
15
+ const match = FRONT_MATTER.exec(text);
16
+ if (!match) {
17
+ throw new Error(`api-client-generator: changeset ${file} has no front matter, so the class it declares cannot be read.`);
18
+ }
19
+ const releases = new Map();
20
+ for (const line of (match[1] ?? '').split('\n')) {
21
+ const parsed = RELEASE_LINE.exec(line.trim());
22
+ if (parsed?.[2] && parsed[3]) {
23
+ releases.set(parsed[2], parsed[3]);
24
+ }
25
+ }
26
+ return releases;
27
+ }
28
+ function raiseRelease(text, name, level) {
29
+ return text
30
+ .split('\n')
31
+ .map((line) => {
32
+ const parsed = RELEASE_LINE.exec(line.trim());
33
+ return parsed && parsed[2] === name ? `'${name}': ${level}` : line;
34
+ })
35
+ .join('\n');
36
+ }
37
+ function applyClientChangesets(args) {
38
+ const { repoRoot, serviceId, bumpClass, packages } = args;
39
+ const dir = (0, node_path_1.join)(repoRoot, CHANGESET_DIR);
40
+ if (!(0, node_fs_1.existsSync)(dir)) {
41
+ throw new Error(`api-client-generator: ${dir} does not exist, so the ${bumpClass} release of ${serviceId}'s clients cannot be recorded. ` +
42
+ 'Initialise changesets in this repository; the generator will not write a version instead.');
43
+ }
44
+ const files = (0, node_fs_1.readdirSync)(dir)
45
+ .filter((f) => f.endsWith('.md') && f !== 'README.md')
46
+ .sort();
47
+ const contents = new Map(files.map((f) => [f, (0, node_fs_1.readFileSync)((0, node_path_1.join)(dir, f), 'utf8')]));
48
+ const actions = [];
49
+ const toCreate = [];
50
+ for (const pkg of packages) {
51
+ const level = (0, client_version_1.changesetLevelFor)(pkg.version, bumpClass);
52
+ let holder;
53
+ for (const [file, text] of contents) {
54
+ const declared = readReleases(text, file).get(pkg.name);
55
+ if (declared && (!holder || (0, client_version_1.bumpClassExceeds)(declared, holder.level))) {
56
+ holder = { file, level: declared };
57
+ }
58
+ }
59
+ if (!holder) {
60
+ toCreate.push({ name: pkg.name, level });
61
+ }
62
+ else if ((0, client_version_1.bumpClassExceeds)(level, holder.level)) {
63
+ contents.set(holder.file, raiseRelease(contents.get(holder.file), pkg.name, level));
64
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(dir, holder.file), contents.get(holder.file));
65
+ actions.push(`raised ${holder.file}: ${pkg.name} ${holder.level} -> ${level}`);
66
+ }
67
+ }
68
+ if (toCreate.length > 0) {
69
+ const file = generatedChangesetFileName(serviceId);
70
+ const existing = contents.get(file);
71
+ const lines = toCreate.map((c) => `'${c.name}': ${c.level}`);
72
+ if (existing) {
73
+ const match = FRONT_MATTER.exec(existing);
74
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(dir, file), existing.replace(match[0], `---\n${match[1]}\n${lines.join('\n')}\n---\n`));
75
+ }
76
+ else {
77
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(dir, file), `---\n${lines.join('\n')}\n---\n\n` +
78
+ `Regenerated the ${serviceId} API clients: the generated surface changed (${bumpClass}).\n`);
79
+ }
80
+ actions.push(`${existing ? 'extended' : 'created'} ${file}: ${toCreate.map((c) => `${c.name} ${c.level}`).join(', ')}`);
81
+ }
82
+ return actions;
83
+ }
84
+ //# sourceMappingURL=client-changeset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-changeset.js","sourceRoot":"","sources":["../../src/lib/client-changeset.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"client-package.d.ts","sourceRoot":"","sources":["../../src/lib/client-package.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAO1D,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAiID,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgCtE;AAqDD,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,sBAAsB,EAC3B,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAsJ1C"}
1
+ {"version":3,"file":"client-package.d.ts","sourceRoot":"","sources":["../../src/lib/client-package.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAO1D,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAiID,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgCtE;AAoDD,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,sBAAsB,EAC3B,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAwJ1C"}
@@ -130,7 +130,7 @@ function ensureClientPackage(ctx, surface, version, repositoryUrl, license) {
130
130
  const pkg = {
131
131
  ...existing,
132
132
  name: packageName,
133
- version,
133
+ version: typeof existing.version === 'string' ? existing.version : version,
134
134
  ...(existing.repository === undefined ? { repository } : {}),
135
135
  main: './dist/index.js',
136
136
  types: './dist/index.d.ts',
@@ -1 +1 @@
1
- {"version":3,"file":"client-package.js","sourceRoot":"","sources":["../../src/lib/client-package.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client-package.js","sourceRoot":"","sources":["../../src/lib/client-package.ts"],"names":[],"mappings":"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"}
@@ -6,15 +6,9 @@ export declare function parseBumpClass(raw: string, origin: string): BumpClass;
6
6
  export declare function bumpClassExceeds(a: BumpClass, b: BumpClass): boolean;
7
7
  export declare function parseVersionCore(v: string): [number, number, number] | null;
8
8
  export declare function compareVersionCore(a: string, b: string): number;
9
- export declare function bumpPatch(version: string): string;
10
- export declare function applyBumpClass(version: string, bumpClass: BumpClass): string;
9
+ export declare function changesetLevelFor(version: string, bumpClass: BumpClass): Exclude<BumpClass, 'none'>;
11
10
  export declare function resolveClientVersionBaseline(existingClientVersions: readonly string[], serviceVersion: string): string;
12
- export declare function advanceClientVersionLine(args: {
13
- readonly baseline: string;
14
- readonly contentChanged: boolean;
15
- readonly hadExistingClients: boolean;
16
- readonly bumpClass: BumpClass;
17
- }): string;
11
+ export declare function readClientVersion(clientDir: string): string;
18
12
  export declare function readExistingClientVersions(ctx: ResolvedServiceContext): {
19
13
  surface: ApiSurface;
20
14
  version: string;
@@ -1 +1 @@
1
- {"version":3,"file":"client-version.d.ts","sourceRoot":"","sources":["../../src/lib/client-version.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAExE,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAC;AA2E1B,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAW7D,eAAO,MAAM,YAAY,EAAE,SAAS,SAAS,EAK5C,CAAC;AASF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAUrE;AAGD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAEpE;AAGD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAG3E;AAOD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAmB/D;AAGD,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAUjD;AAuBD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,CAqB5E;AASD,wBAAgB,4BAA4B,CAC1C,sBAAsB,EAAE,SAAS,MAAM,EAAE,EACzC,cAAc,EAAE,MAAM,GACrB,MAAM,CAcR;AAsBD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B,GAAG,MAAM,CAcT;AAaD,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,sBAAsB,GAC1B;IAAE,OAAO,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAiC5C;AAGD,eAAO,MAAM,kBAAkB,kCAAmC,CAAC;AAGnE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AA4BD,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,GAChB,mBAAmB,EAAE,CAYvB;AAmDD,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAkBpE"}
1
+ {"version":3,"file":"client-version.d.ts","sourceRoot":"","sources":["../../src/lib/client-version.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAExE,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAC;AA4E1B,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAW7D,eAAO,MAAM,YAAY,EAAE,SAAS,SAAS,EAK5C,CAAC;AASF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAUrE;AAGD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAEpE;AAGD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAG3E;AAOD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAmB/D;AAsBD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAkB5B;AASD,wBAAgB,4BAA4B,CAC1C,sBAAsB,EAAE,SAAS,MAAM,EAAE,EACzC,cAAc,EAAE,MAAM,GACrB,MAAM,CAcR;AAGD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAY3D;AAaD,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,sBAAsB,GAC1B;IAAE,OAAO,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAiC5C;AAGD,eAAO,MAAM,kBAAkB,kCAAmC,CAAC;AAGnE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AA4BD,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,GAChB,mBAAmB,EAAE,CAYvB;AAmDD,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAkBpE"}
@@ -5,10 +5,9 @@ exports.parseBumpClass = parseBumpClass;
5
5
  exports.bumpClassExceeds = bumpClassExceeds;
6
6
  exports.parseVersionCore = parseVersionCore;
7
7
  exports.compareVersionCore = compareVersionCore;
8
- exports.bumpPatch = bumpPatch;
9
- exports.applyBumpClass = applyBumpClass;
8
+ exports.changesetLevelFor = changesetLevelFor;
10
9
  exports.resolveClientVersionBaseline = resolveClientVersionBaseline;
11
- exports.advanceClientVersionLine = advanceClientVersionLine;
10
+ exports.readClientVersion = readClientVersion;
12
11
  exports.readExistingClientVersions = readExistingClientVersions;
13
12
  exports.listGeneratedSubtreeFiles = listGeneratedSubtreeFiles;
14
13
  exports.fingerprintGeneratedOutput = fingerprintGeneratedOutput;
@@ -63,34 +62,20 @@ function compareVersionCore(a, b) {
63
62
  }
64
63
  return aPatch - bPatch;
65
64
  }
66
- function bumpPatch(version) {
65
+ function changesetLevelFor(version, bumpClass) {
67
66
  const parsed = parseVersionCore(version);
68
67
  if (!parsed) {
69
- throw new Error(`api-client-generator: cannot advance client version "${version}" — it is not ` +
68
+ throw new Error(`api-client-generator: cannot decide a changeset level for client version "${version}" — it is not ` +
70
69
  'release semver `x.y.z`.');
71
70
  }
72
- const [major, minor, patch] = parsed;
73
- return `${major}.${minor}.${patch + 1}`;
74
- }
75
- function applyBumpClass(version, bumpClass) {
76
- const parsed = parseVersionCore(version);
77
- if (!parsed) {
78
- throw new Error(`api-client-generator: cannot advance client version "${version}" — it is not ` +
79
- 'release semver `x.y.z`.');
80
- }
81
- const [major, minor, patch] = parsed;
82
71
  if (bumpClass === 'none') {
83
- return `${major}.${minor}.${patch}`;
72
+ throw new Error('api-client-generator: a changeset level was requested for bump class "none"; ' +
73
+ 'there is nothing to release.');
84
74
  }
85
- const stable = major >= 1;
86
- switch (bumpClass) {
87
- case 'major':
88
- return stable ? `${major + 1}.0.0` : `${major}.${minor + 1}.0`;
89
- case 'minor':
90
- return stable ? `${major}.${minor + 1}.0` : `${major}.${minor}.${patch + 1}`;
91
- case 'patch':
92
- return `${major}.${minor}.${patch + 1}`;
75
+ if (parsed[0] >= 1) {
76
+ return bumpClass;
93
77
  }
78
+ return bumpClass === 'major' ? 'minor' : 'patch';
94
79
  }
95
80
  function resolveClientVersionBaseline(existingClientVersions, serviceVersion) {
96
81
  if (existingClientVersions.length === 0) {
@@ -103,18 +88,14 @@ function resolveClientVersionBaseline(existingClientVersions, serviceVersion) {
103
88
  }
104
89
  return existingClientVersions.reduce((highest, candidate) => compareVersionCore(candidate, highest) > 0 ? candidate : highest);
105
90
  }
106
- function advanceClientVersionLine(args) {
107
- const { baseline, contentChanged, hadExistingClients, bumpClass } = args;
108
- if (!contentChanged || !hadExistingClients) {
109
- return baseline;
110
- }
111
- if (bumpClass === 'none') {
112
- throw new Error('api-client-generator: regeneration changed the generated output but the ' +
113
- 'resolved bump class is "none". Changed bytes under an already-published ' +
114
- 'version is what the version-coverage gate refuses; the class must say how ' +
115
- 'far the line moves.');
116
- }
117
- return applyBumpClass(baseline, bumpClass);
91
+ function readClientVersion(clientDir) {
92
+ const pkgPath = (0, node_path_1.join)(clientDir, 'package.json');
93
+ const parsed = JSON.parse((0, node_fs_1.readFileSync)(pkgPath, 'utf8'));
94
+ if (typeof parsed.version !== 'string' || !parseVersionCore(parsed.version)) {
95
+ throw new Error(`api-client-generator: ${pkgPath} carries no usable release version ` +
96
+ `(saw ${JSON.stringify(parsed.version)}).`);
97
+ }
98
+ return parsed.version;
118
99
  }
119
100
  function readExistingClientVersions(ctx) {
120
101
  const found = [];
@@ -1 +1 @@
1
- {"version":3,"file":"client-version.js","sourceRoot":"","sources":["../../src/lib/client-version.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client-version.js","sourceRoot":"","sources":["../../src/lib/client-version.ts"],"names":[],"mappings":";;;AA8GA,wCAUC;AAGD,4CAEC;AAGD,4CAGC;AAOD,gDAmBC;AAsBD,8CAqBC;AASD,oEAiBC;AAGD,8CAYC;AAaD,gEAmCC;AAsCD,8DAcC;AAmDD,gEAkBC;AA1ZD,6CAAyC;AACzC,qCAA0E;AAC1E,yCAAiC;AAEjC,6DAAwE;AAExE,qDAG0B;AA+E1B,MAAM,eAAe,GAAwC;IAC3D,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;CACT,CAAC;AAGW,QAAA,YAAY,GAAyB;IAChD,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;CACR,CAAC;AASF,SAAgB,cAAc,CAAC,GAAW,EAAE,MAAc;IACxD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,oBAAY,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,yBAAyB,MAAM,QAAQ,GAAG,gCAAgC;YACxE,cAAc,oBAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAC5C,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAGD,SAAgB,gBAAgB,CAAC,CAAY,EAAE,CAAY;IACzD,OAAO,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC;AAGD,SAAgB,gBAAgB,CAAC,CAAS;IACxC,MAAM,CAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/D,CAAC;AAOD,SAAgB,kBAAkB,CAAC,CAAS,EAAE,CAAS;IACrD,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,yDAAyD,CAAC,UAAU,CAAC,MAAM;YACzE,2EAA2E;YAC3E,gDAAgD,CACnD,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;IACpC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,GAAG,MAAM,CAAC;AACzB,CAAC;AAsBD,SAAgB,iBAAiB,CAC/B,OAAe,EACf,SAAoB;IAEpB,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,6EAA6E,OAAO,gBAAgB;YAClG,yBAAyB,CAC5B,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,+EAA+E;YAC7E,8BAA8B,CACjC,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;AACnD,CAAC;AASD,SAAgB,4BAA4B,CAC1C,sBAAyC,EACzC,cAAsB;IAEtB,IAAI,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CACb,8CAA8C,cAAc,mBAAmB;gBAC7E,yEAAyE;gBACzE,iDAAiD,CACpD,CAAC;QACJ,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAC1D,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CACjE,CAAC;AACJ,CAAC;AAGD,SAAgB,iBAAiB,CAAC,SAAiB;IACjD,MAAM,OAAO,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,OAAO,EAAE,MAAM,CAAC,CAEtD,CAAC;IACF,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CACb,yBAAyB,OAAO,qCAAqC;YACnE,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAC7C,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC;AAaD,SAAgB,0BAA0B,CACxC,GAA2B;IAE3B,MAAM,KAAK,GAA+C,EAAE,CAAC;IAC7D,KAAK,MAAM,OAAO,IAAI,8BAAY,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,IAAA,gBAAI,EAAC,IAAA,iCAAgB,EAAC,GAAG,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC;QACrE,IAAI,CAAC,IAAA,oBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QACD,IAAI,MAA6B,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,OAAO,EAAE,MAAM,CAAC,CAEhD,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,yBAAyB,OAAO,kCAAkC;gBAChE,IAAK,KAAe,CAAC,OAAO,mDAAmD;gBAC/E,yEAAyE,CAC5E,CAAC;QACJ,CAAC;QACD,IACE,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;YAClC,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EACjC,CAAC;YACD,MAAM,IAAI,KAAK,CACb,yBAAyB,OAAO,qCAAqC;gBACnE,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,uCAAuC;gBAC7E,2EAA2E;gBAC3E,0CAA0C,CAC7C,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAGY,QAAA,kBAAkB,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAU,CAAC;AAmCnE,SAAgB,yBAAyB,CACvC,SAAiB;IAEjB,MAAM,KAAK,GAA0B,EAAE,CAAC;IACxC,KAAK,MAAM,OAAO,IAAI,0BAAkB,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,IAAA,oBAAU,EAAC,IAAI,CAAC,EAAE,CAAC;YACtB,SAAS;QACX,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,IAAA,gBAAI,EAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAmDD,SAAgB,0BAA0B,CAAC,SAAiB;IAC1D,MAAM,IAAI,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC;IAQlC,IAAI,CAAC,IAAA,oBAAU,EAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,oBAAoB,CAAC,SAAS,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,IAAA,sBAAY,EAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AASD,SAAS,oBAAoB,CAAC,IAAY,EAAE,MAAM,GAAG,EAAE;IACrD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,IAAA,qBAAW,EAAC,IAAA,gBAAI,EAAC,IAAI,EAAE,MAAM,CAAC,EAAE;QAClD,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,MAAM,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAInE,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE;YACrC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE;gBACd,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAA,kBAAQ,EAAC,IAAA,gBAAI,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,WAAW,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const CANONICAL_CUSTOM_FETCH = "/**\n * Configurable fetch wrapper for Orval-generated clients.\n *\n * AUTO-GENERATED by `@xemahq/api-client-generator` \u2014 DO NOT EDIT. Every client\n * in the fleet ships this file byte-for-byte; a hand edit is erased by the next\n * regeneration and, until then, makes this one client speak to the platform\n * differently from all of its siblings.\n *\n * Canonical source: `CANONICAL_CUSTOM_FETCH` in\n * `packages/sdks/api-client-generator/src/lib/custom-fetch-template.ts`\n * (repository `xema-kernel-sdk`). Change it there.\n *\n * Regenerate, from the root of THIS repository:\n * pnpm --filter <owning-service> run openapi\n * pnpm --filter <owning-service> run client:generate\n * A mirror of this client under `xema-host-web` is not regenerated there: it\n * is written by the frontend bridge, `tooling/frontend-bridge` in the\n * xema-monorepo aggregator.\n *\n * Consumers must call `configureClient()` before using any endpoint function.\n * The baseUrl is prepended to the relative paths generated by Orval.\n *\n * By default this transport issues exactly ONE request and adds no delay of its\n * own, so a slow call is a slow server. Retrying is opt-in, and opting in\n * requires supplying an observer \u2014 see `maxRetries` / `onRetry` below.\n */\n\n/** What {@link ClientConfig.onRetry} is told before each re-attempt. */\nexport interface RetryNotice {\n /** 1-based index of the re-attempt about to be made. */\n attempt: number;\n /** The configured budget this re-attempt is spending from. */\n maxRetries: number;\n /** The response status that made the previous attempt retryable. */\n status: number;\n /** Delay before the re-attempt, in ms \u2014 from `Retry-After` when the server sent one. */\n waitMs: number;\n /** Whether {@link waitMs} came from the server's `Retry-After` header. */\n retryAfterHonoured: boolean;\n /** Absolute URL being re-requested. */\n url: string;\n /** HTTP method being re-requested. */\n method: string;\n}\n\n/**\n * Per-request context handed to the callbacks this transport awaits BEFORE it\n * sends the request.\n *\n * `signal` is the request's own `AbortSignal` (`options.signal`). It is the\n * CALLER's cancellation: a callback may use it to stop work that is private to\n * this request, but a callback serving several requests from one shared,\n * single-flight acquisition (a token refresh) must NOT abort that shared work\n * because one caller stopped \u2014 every other caller waiting on it would fail.\n * The transport stops WAITING on its own regardless, so a callback that\n * ignores the signal still cannot hold an aborted request.\n */\nexport interface ClientCallbackOptions {\n signal?: AbortSignal;\n}\n\nexport interface ClientConfig {\n /**\n * Static base URL (e.g. 'http://localhost:3140') \u2014 no trailing slash.\n * Mutually exclusive with `baseUrlResolver`; exactly one MUST be set.\n */\n baseUrl?: string;\n /**\n * Per-request base-URL resolver. When set, the peer URL is resolved from\n * the service registry on EVERY request (boot-order-safe). Wired by\n * `configureOrvalClientResolved` from `@xemahq/platform-common`.\n */\n baseUrlResolver?: (\n options?: ClientCallbackOptions,\n ) => string | Promise<string>;\n /**\n * Optional async callback to get an auth token. Auto-sets Authorization\n * header on every request. Receives the request's signal \u2014 see\n * {@link ClientCallbackOptions} for what it may and may not abort.\n */\n getAuthToken?: (options?: ClientCallbackOptions) => Promise<string>;\n /** Optional callback returning headers to inject on every request. Per-call headers take precedence. */\n getHeaders?: () => Record<string, string> | Promise<Record<string, string>>;\n /**\n * Optional resolver for the CORRELATION ID of the request being made \u2014 the\n * handle that ties one causal chain together across every service hop.\n *\n * WHY IT IS A CALLBACK AND NOT A VALUE. `ClientConfig` is process-global\n * (`configureClient` is called once at wiring time), and a correlation id is\n * per-request. This is invoked INSIDE the request, so a server can point it\n * at whatever carries its ambient request context and get the CURRENT id\n * rather than the one that happened to be live at boot.\n *\n * WHY THE TRANSPORT DOES NOT MINT ONE. Returning `undefined` sends no header,\n * and the receiving service's `RequestContextMiddleware` mints its own \u2014 a\n * new trace, which is honest. A transport that minted per call would produce\n * a FRESH id on every hop while looking like propagation, which is strictly\n * worse than none: every row would carry a correlation id and no two rows\n * that belong together would share one. That is the exact defect this exists\n * to fix, so the transport must not reproduce it one layer down.\n *\n * A caller-supplied `X-Correlation-Id` header always wins, and so does one\n * from `getHeaders`.\n */\n getCorrelationId?: () =>\n | string\n | undefined\n | Promise<string | undefined>;\n /**\n * Optional callback invoked on a 401 before ONE re-attempt. Supplying it is\n * what opts this client into that re-attempt; without it a 401 comes back to\n * the caller as a `ClientError` like any other 4xx.\n */\n onUnauthorized?: () => Promise<void>;\n /**\n * Re-attempts for a retryable status. **Defaults to 0 \u2014 no retry.**\n *\n * Setting it above 0 REQUIRES `onRetry`; `configureClient` throws otherwise.\n * See the block above `customFetch` for why the budget is opt-in and why an\n * observer is mandatory rather than advisory.\n */\n maxRetries?: number;\n /**\n * Called immediately before every re-attempt, with the reason and the delay.\n *\n * Mandatory whenever `maxRetries` is above 0. It is the difference between a\n * retry and a hidden degradation path: without it a caller cannot tell a slow\n * server from this transport sleeping between attempts.\n */\n onRetry?: (notice: RetryNotice) => void;\n}\n\n/**\n * Cross-package identity for `ClientError`.\n *\n * \u2500\u2500 THE OUTAGE THIS IS FOR \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n *\n * PRODUCTION, 2026-09-22. A session launch aborted on\n * `HTTP 503 from http://skill-registry-api\u2026/skills`. A 503 is the archetypal\n * TRANSIENT \u2014 agent-session's launch taxonomy already listed it as retryable \u2014\n * but it was classified PERMANENT and the launch was abandoned.\n *\n * The cause was this file. Every generated client package gets its OWN copy of\n * `ClientError`, so there are as many classes as there are clients (81 at the\n * time of writing), all byte-identical and all DIFFERENT OBJECTS. A consumer\n * naturally writes `err instanceof ClientError` against the one client it\n * imported \u2014 which reads as obviously correct and is silently package-local. An\n * error from any OTHER client fails it, falls past every status check, and lands\n * on whatever the default is.\n *\n * That was not the first time: biome-host had already switched to structural\n * detection for the same reason, and canopy imports TWO `ClientError` classes\n * and tests both. Three more call sites elsewhere carry the same shape.\n *\n * \u2500\u2500 WHY A BRAND AND NOT A SHARED PACKAGE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n *\n * The obvious fix is one shared runtime class every client imports. It was\n * rejected on measurement: the 81 generated clients are DEPENDENCY-FREE by\n * design (exactly one has any dependency at all), and a shared class would have\n * to be a PEER dependency to be safe \u2014 a normal dependency can be installed\n * twice under version skew, which reinstates this identical bug in a form that\n * is HARDER to see, because the classes then look like they ought to match.\n *\n * `Symbol.for` is a process-wide registry keyed by STRING, so every copy of\n * this template resolves the same symbol without importing anything. The brand\n * costs no dependency, cannot skew, and needs no new package.\n *\n * `Symbol.hasInstance` then makes plain `instanceof` mean the right thing\n * fleet-wide: an error from ANY generated client satisfies `instanceof\n * ClientError` in ANY other. A helper would have made the safe pattern\n * available; this makes the dangerous pattern impossible.\n *\n * Narrow on purpose \u2014 the brand is set only by this constructor, so an unrelated\n * error carrying a `status` is not admitted.\n */\nconst CLIENT_ERROR_BRAND: unique symbol = Symbol.for(\n 'xema.generatedClientError',\n) as never;\n\nexport class ClientError extends Error {\n constructor(\n public readonly status: number,\n public readonly url: string,\n public readonly body: unknown,\n ) {\n super(`HTTP ${status} from ${url}`);\n this.name = 'ClientError';\n // Non-enumerable: it must not appear in JSON, logs or snapshots \u2014 it is an\n // identity marker, not payload.\n Object.defineProperty(this, CLIENT_ERROR_BRAND, { value: true });\n }\n\n // `override` because the member shadows `Function.prototype[Symbol.hasInstance]`,\n // which a class constructor inherits: TypeScript 5.9+ reports TS4114 without it\n // under `noImplicitOverride`. Measured to compile on 5.5.4, 5.9.3, 6.0.3 and\n // 7.0.2 with the flag on AND off \u2014 pinned by\n // tests/custom-fetch-compiles-standalone.test.cjs.\n static override [Symbol.hasInstance](candidate: unknown): boolean {\n return (\n typeof candidate === 'object' &&\n candidate !== null &&\n CLIENT_ERROR_BRAND in candidate\n );\n }\n}\n\nlet clientConfig: ClientConfig | null = null;\n\n/**\n * THE MOUNT SCOPE \u2014 how one process can host several services without their\n * clients speaking for each other.\n *\n * `clientConfig` below is a MODULE global, and in a single-service process\n * that is correct: one writer, one configuration. Compose two services into one\n * process and both call `configureClient` on THIS SAME module instance, so the\n * second overwrites the first and every outbound call from BOTH services leaves\n * as whichever wired itself last \u2014 wrong base URL, and, because\n * `getAuthToken` is part of the config, WRONG BEARER. That is one tenant's\n * service calling a peer holding another tenant's credential, and it is silent.\n *\n * A composing host installs a hook under this well-known symbol that answers\n * one question: WHICH MOUNT is currently on the stack. Nothing else crosses.\n * `configureClient` then files the config under that mount, and\n * `getClientConfig` reads it back out under the same key.\n *\n * Three properties make this safe rather than clever:\n *\n * - The CONFIG is still built by the mount's own wiring, exactly as today.\n * The hook never supplies one. So a mount's base URL and bearer are\n * resolved FROM THE MOUNT; the scope only decides which drawer they go in.\n * A hook that RETURNED configuration would be a mount taking its identity\n * from ambient storage a neighbour can write \u2014 the inversion to refuse.\n * - The key is an OPAQUE OBJECT and the store is a `WeakMap`, so a mount's\n * configuration becomes unreachable when the host drops the mount, and no\n * client can enumerate the mounts or reach a sibling's entry.\n * - With NO hook installed \u2014 every process in the fleet today \u2014 both\n * functions behave exactly as they did before this existed.\n *\n * `Symbol.for` is the seam because a generated client must keep its\n * dependency surface at zero and a host cannot enumerate the clients a process\n * happens to load. It is the same instrument, and the same reasoning, as the\n * `ClientError` brand above.\n */\nconst XEMA_CLIENT_CONFIG_SCOPE = Symbol.for('xema.client-config-scope');\n\ntype MountScopeHook = () => object | undefined;\n\nfunction mountScopeHook(): MountScopeHook | undefined {\n const hook = (globalThis as Record<symbol, unknown>)[\n XEMA_CLIENT_CONFIG_SCOPE\n ];\n return typeof hook === 'function' ? (hook as MountScopeHook) : undefined;\n}\n\nfunction currentMountKey(): object | undefined {\n return mountScopeHook()?.();\n}\n\nconst perMountConfig = new WeakMap<object, ClientConfig>();\n\n\nexport function configureClient(config: ClientConfig): void {\n // Fail at WIRING time, not on the request that happens to be retried. A\n // client configured to retry without an observer is the exact defect this\n // transport was rebuilt to remove, so it must not be constructible.\n if ((config.maxRetries ?? 0) > 0 && !config.onRetry) {\n throw new Error(\n 'configureClient: maxRetries above 0 requires onRetry. A retry nothing ' +\n 'reports is indistinguishable from a slow server, which is how two ' +\n 'silent re-attempts were read as a 3,312ms call.',\n );\n }\n const hook = mountScopeHook();\n if (hook !== undefined) {\n const mount = hook();\n if (mount === undefined) {\n // A composing host is installed and no member is on the stack, so this\n // configuration belongs to NO member. Filing it in the module global\n // would hand it to every member that did not configure this client \u2014\n // someone else's base URL and bearer, silently.\n throw new Error(\n 'configureClient: called in a composed process outside every member. ' +\n 'Configure the client inside the member that uses it (its providers ' +\n 'and factories already run there).',\n );\n }\n perMountConfig.set(mount, config);\n return;\n }\n clientConfig = config;\n}\n\nexport function getClientConfig(): ClientConfig {\n const mount = currentMountKey();\n if (mount !== undefined) {\n const scoped = perMountConfig.get(mount);\n if (scoped) {\n return scoped;\n }\n // A member that never configured THIS client behaves exactly like a\n // dedicated service that did not either: it is refused. It used to fall\n // through to the module global, which in a composed process can only have\n // been written by some OTHER code \u2014 so the member called peers under a\n // base URL and bearer that were never its own.\n throw new Error(\n 'Client not configured for this member. Call configureClient({ baseUrl }) ' +\n 'inside the member before using endpoint functions.',\n );\n }\n if (!clientConfig) {\n throw new Error(\n 'Client not configured. Call configureClient({ baseUrl }) before using endpoint functions.',\n );\n }\n return clientConfig;\n}\n\n/*\n * RETRYING IS OPT-IN, OBSERVED, AND NARROW. Do not widen any of the three.\n *\n * This transport used to retry up to `maxRetries` (defaulting to THREE) over\n * 429/502/503/504 AND over any thrown network error, backing off from 1000ms,\n * with no log line anywhere. Three properties were wrong:\n *\n * 1. The DEFAULT was on. ~99% of the fleet's client configurations never\n * mention `maxRetries`, so two re-attempts could add ~3s to any call with\n * nothing to distinguish that from a slow peer. Every caller that DID set\n * it set it LOWER \u2014 canopy's control plane to 1, \"so a hard outage\n * surfaces inside the turn's latency budget rather than after three\n * backoffs\"; two llm-registry callers to 1; a test to 0. Nobody ever\n * raised it. A default three separate call sites work around is not a\n * default, and `configureOrvalClientResolved` cannot express the field at\n * all, so most callers could not have opted out if they had wanted to.\n * 2. It retried AMBIGUOUS failures. 502 and 504 mean a gateway did not get a\n * timely answer from upstream \u2014 the upstream may well have APPLIED the\n * request. So did a thrown network error mid-flight. Re-sending a POST in\n * either case is a duplicate write, and no amount of logging makes that\n * safe. Only 429 and 503 state positively that the request was NOT\n * processed, so only those are retried; everything else surfaces at once.\n * 3. Nothing reported it. Now `onRetry` is mandatory whenever the budget is\n * above 0, enforced in `configureClient`.\n *\n * Also note `baseUrlResolver` is awaited ONCE, above the loop: a re-attempt\n * returns to the same resolved instance. In a registry-resolved fleet the cure\n * for an unhealthy peer is re-resolution, which lives above this file \u2014 which\n * is a further reason not to lean on retrying here.\n *\n * Retry policy a caller genuinely wants belongs in `@xemahq/managed-fetch`,\n * which has backoff, a circuit breaker, a token bucket and health reporting,\n * and reports what it did.\n *\n * Enforced fleet-wide by `check-client-transport-envelope`, which compares\n * every client's transport to this template.\n */\n\n/** The only statuses that state the request was NOT processed. See above. */\nconst RETRYABLE_STATUSES = [429, 503];\n\n/**\n * The platform's correlation header, spelled once.\n *\n * Value-identical to what `RequestContextMiddleware` reads in\n * `@xemahq/platform-common`. It is a literal here rather than an import\n * because this file has ZERO imports on purpose: it ships byte-identical into\n * browser-target clients as well as server-target ones, and a dependency on a\n * NestJS-peer package would follow it into every one of them.\n */\nconst CORRELATION_ID_HEADER = 'X-Correlation-Id';\n\n/** Backoff floor, doubling per attempt up to {@link MAX_BACKOFF_MS}. */\nconst BASE_BACKOFF_MS = 1000;\n\n/** Ceiling on a single backoff, however many attempts have elapsed. */\nconst MAX_BACKOFF_MS = 30_000;\n\n/*\n * CALLER CANCELLATION REACHES EVERY WAIT BEFORE THE REQUEST IS SENT.\n *\n * `fetch` always honoured `options.signal`, but everything this transport\n * awaits BEFORE `fetch` \u2014 base-URL resolution, the header callbacks, the auth\n * token \u2014 did not, so a caller that aborted while a token was being minted sat\n * out the mint and then, at best, had its request refused. The only way to\n * cancel that wait was a process-wide interceptor aborting every outbound\n * request, which also aborts a SHARED single-flight token refresh and so fails\n * every other caller waiting on it.\n *\n * So each pre-send wait is RACED against the signal: the caller stops waiting\n * at once, and the work it was waiting on carries on for anybody else. The\n * rejection is the signal's own reason \u2014 exactly what `fetch` rejects with \u2014\n * so a caller sees ONE abort shape whenever it aborts. An aborted request is\n * never retried. Without a signal nothing here changes.\n */\nfunction abortedReason(signal: AbortSignal): unknown {\n // `abort()` with no argument sets a DOMException reason, so this is only\n // ever `undefined` for a hand-built signal; say so rather than throw it.\n return signal.reason ?? new DOMException('This operation was aborted', 'AbortError');\n}\n\nfunction throwIfAborted(signal: AbortSignal | undefined): void {\n if (signal?.aborted) {\n throw abortedReason(signal);\n }\n}\n\nfunction raceAbort<V>(\n pending: V | Promise<V>,\n signal: AbortSignal | undefined,\n): Promise<V> {\n const promise = Promise.resolve(pending);\n if (!signal) {\n return promise;\n }\n if (signal.aborted) {\n promise.catch(() => undefined);\n return Promise.reject(abortedReason(signal));\n }\n return new Promise<V>((resolve, reject) => {\n const onAbort = (): void => {\n // The pending work may be shared; it carries on, and its eventual\n // rejection must not surface as an unhandled one on this side.\n promise.catch(() => undefined);\n reject(abortedReason(signal));\n };\n signal.addEventListener('abort', onAbort, { once: true });\n promise.then(\n (value) => {\n signal.removeEventListener('abort', onAbort);\n resolve(value);\n },\n (err: unknown) => {\n signal.removeEventListener('abort', onAbort);\n reject(err);\n },\n );\n });\n}\n\nasync function buildHeaders(\n config: ClientConfig,\n callerHeaders: RequestInit['headers'],\n signal: AbortSignal | undefined,\n): Promise<Headers> {\n const headers = new Headers(callerHeaders);\n\n // Global headers from config (caller-provided headers take precedence)\n if (config.getHeaders) {\n const globalHeaders = await raceAbort(config.getHeaders(), signal);\n for (const [key, value] of Object.entries(globalHeaders)) {\n if (!headers.has(key)) {\n headers.set(key, value);\n }\n }\n }\n\n // Correlation id (caller and global headers still take precedence).\n //\n // Without this, every server-to-server hop through a generated client started\n // a NEW trace: the id is read-or-minted per hop by the receiving service's\n // RequestContextMiddleware, and nothing carried it outbound \u2014 so an audit\n // journal could record a whole causal chain and offer no way to join it back\n // together.\n //\n // Absent resolver, or a resolver that answers `undefined`: NO header. The\n // receiver mints and a new trace begins, which is the truthful outcome when\n // there is nothing to continue.\n if (config.getCorrelationId && !headers.has(CORRELATION_ID_HEADER)) {\n const correlationId = await raceAbort(config.getCorrelationId(), signal);\n if (correlationId) {\n headers.set(CORRELATION_ID_HEADER, correlationId);\n }\n }\n\n // Auth token (caller or global headers take precedence)\n if (config.getAuthToken && !headers.has('Authorization')) {\n const token = await raceAbort(\n config.getAuthToken(signal ? { signal } : undefined),\n signal,\n );\n headers.set('Authorization', `Bearer ${token}`);\n }\n\n return headers;\n}\n\n/*\n * THE TRANSPORT RETURNS THE BODY UNCHANGED. Do not reintroduce an unwrap here.\n *\n * Xema services wrap every 2xx payload in a { data: T } envelope via the global\n * ResponseEnvelopeInterceptor (platform-common), and the generator emits types\n * that describe THAT ENVELOPE \u2014 every endpoint returns Promise<XDataEnvelope>\n * or Promise<XPaginatedEnvelope>, never a bare inner T. Consumers read the data\n * property themselves.\n *\n * This template used to peel data, justified by a comment claiming generated\n * types describe the inner T. That stopped being true when the generator moved\n * to envelope-typed returns, and the comment outlived the fact \u2014 so the peel\n * then contradicted every type in every package it seeded. Four clients shipped\n * that way (resource-governance x3, workload-runtime-api): declared\n * *DataEnvelope, returned the already-peeled inner object, so .data read\n * undefined at runtime on every non-paginated endpoint. Paginated calls hid it,\n * because the old peel deliberately preserved an envelope carrying pagination.\n *\n * Four MORE shipped it in repositories the gate could not see \u2014 license-api and\n * license-internal-api in xema-operator, plus their host-web mirrors \u2014 because\n * the gate ran in xema-base only. That is why it now runs in every repository\n * that ships a client, and why this file is generator-owned rather than seeded.\n */\n\nexport const customFetch = async <T>(\n url: string,\n options: RequestInit,\n): Promise<T> => {\n const config = getClientConfig();\n const signal = options.signal ?? undefined;\n throwIfAborted(signal);\n const base = config.baseUrlResolver\n ? await raceAbort(\n config.baseUrlResolver(signal ? { signal } : undefined),\n signal,\n )\n : config.baseUrl;\n if (base === undefined) {\n throw new Error(\n 'Client not configured: set baseUrl or baseUrlResolver via configureClient().',\n );\n }\n const fullUrl = `${base}${url}`;\n const maxRetries = config.maxRetries ?? 0;\n\n // A caller that supplied its own Authorization header owns that credential.\n // `buildHeaders` lets it win, so refreshing the CLIENT-WIDE token and\n // re-sending would replay the identical failing request with the identical\n // credential: one wasted round trip, plus a global refresh nobody asked for.\n const callerSuppliedAuth = new Headers(options.headers).has('Authorization');\n\n const headers = await buildHeaders(config, options.headers, signal);\n const requestInit: RequestInit = { ...options, headers };\n\n let delay = BASE_BACKOFF_MS;\n\n for (let attempt = 0; ; attempt++) {\n const response = await fetch(fullUrl, requestInit);\n\n if (\n response.status === 401 &&\n config.onUnauthorized &&\n !callerSuppliedAuth &&\n attempt === 0\n ) {\n await raceAbort(config.onUnauthorized(), signal);\n const refreshedHeaders = await buildHeaders(\n config,\n options.headers,\n signal,\n );\n const retryResponse = await fetch(fullUrl, {\n ...options,\n headers: refreshedHeaders,\n });\n const retryBody = await parseBody(retryResponse);\n if (retryResponse.status >= 400) {\n throw new ClientError(retryResponse.status, fullUrl, retryBody);\n }\n return retryBody as T;\n }\n\n if (\n !RETRYABLE_STATUSES.includes(response.status) ||\n attempt >= maxRetries\n ) {\n const body = await parseBody(response);\n if (response.status >= 400) {\n throw new ClientError(response.status, fullUrl, body);\n }\n return body as T;\n }\n\n const retryAfter = parseRetryAfter(response.headers.get('Retry-After'));\n const waitMs = retryAfter ?? addJitter(delay);\n // Non-null: `configureClient` refuses a budget above 0 without an observer,\n // and this line is unreachable unless `maxRetries` is above 0.\n (config.onRetry as (notice: RetryNotice) => void)({\n attempt: attempt + 1,\n maxRetries,\n status: response.status,\n waitMs,\n retryAfterHonoured: retryAfter !== undefined,\n url: fullUrl,\n method: options.method ?? 'GET',\n });\n await sleep(waitMs, signal);\n delay = Math.min(delay * 2, MAX_BACKOFF_MS);\n }\n};\n\n/**\n * Does this media type carry JSON?\n *\n * \u2500\u2500 THE OUTAGE THIS FIXES \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n *\n * This used to be `contentType?.includes('application/json')`, and EVERY error\n * this fleet returns failed that test. The platform's `GlobalExceptionFilter`\n * emits RFC 9457 problem documents and sets the media type explicitly \u2014\n * `.type(PROBLEM_DETAILS_CONTENT_TYPE)` before `.json()`, so it cannot be\n * overridden \u2014 and that constant is `application/problem+json`, which does NOT\n * contain the substring `application/json`: after `application/` comes\n * `problem+json`.\n *\n * So every non-2xx body fell through to `response.text()` and reached the\n * caller as an UNPARSED STRING. `ClientError.body` is typed `unknown`, so\n * nothing complained; every consumer that reads a machine-readable code off an\n * error \u2014 `error.body.code`, `error.body.details.code` \u2014 silently read\n * `undefined` instead, for every error, in every service.\n *\n * Measured in production on 2026-09-15: skill-registry-api's\n * `resolveOrNull()` absorbs `RELEASE_CHANNEL_NOT_FOUND` into `null` by exactly\n * that read. With the code unreadable the absorb never fired, a routine \"no\n * pointer on this channel\" 404 became a 500 on `GET /skills` and\n * `GET /describe-objects`, and agent-session-api's `apply_control_bundle` step\n * aborted EVERY session launch in the organisation \u2014 7,871 failed resolutions\n * an hour. A fix written for that exact page months earlier was present in the\n * running image and could not help, because the classifier it repaired was\n * being handed a string.\n *\n * \u2500\u2500 WHY THE STRUCTURED SUFFIX, NOT A SECOND SUBSTRING \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n *\n * Adding `|| includes('application/problem+json')` would fix this one media\n * type and leave the next one \u2014 `application/vnd.api+json`, and anything else\n * a service legitimately emits. RFC 6839 defines `+json` as the structured\n * syntax suffix meaning \"this is JSON\"; that is the actual rule, so it is the\n * rule implemented. Parameters are stripped first, because\n * `application/problem+json; charset=utf-8` is the same media type.\n */\nfunction isJsonMediaType(contentType: string | null): boolean {\n if (contentType === null) {\n return false;\n }\n const essence = contentType.split(';')[0]?.trim().toLowerCase() ?? '';\n return essence === 'application/json' || essence.endsWith('+json');\n}\n\nasync function parseBody(response: Response): Promise<unknown> {\n // 204 FIRST, and deliberately \u2014 this ORDER is carried from `develop`, which\n // fixed the same defect independently and got this half right where `main`\n // did not. A 204 carries no body, so `response.json()` on one throws\n // SyntaxError; and a 204 whose headers STILL declare a JSON content type is\n // ordinary, because the framework sets the header before the handler returns\n // nothing. With the JSON branch first, a documented `undefined` becomes a\n // thrown parse error. Pinned by a case in `transport-problem-json.test.cjs`.\n if (response.status === 204) {\n return undefined;\n }\n const contentType = response.headers.get('content-type');\n if (isJsonMediaType(contentType)) {\n return response.json();\n }\n return response.text();\n}\n\nfunction parseRetryAfter(value: string | null): number | undefined {\n if (!value) return undefined;\n const seconds = Number(value);\n if (!isNaN(seconds) && seconds >= 0) return seconds * 1000;\n const date = new Date(value);\n if (!isNaN(date.getTime())) return Math.max(0, date.getTime() - Date.now());\n return undefined;\n}\n\nfunction addJitter(delay: number): number {\n return delay + (Math.random() * 2 - 1) * delay * 0.25;\n}\n\n/** A retry backoff; the caller's signal ends it at once and is never retried. */\nfunction sleep(ms: number, signal: AbortSignal | undefined): Promise<void> {\n if (!signal) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n if (signal.aborted) {\n return Promise.reject(abortedReason(signal));\n }\n return new Promise((resolve, reject) => {\n const onAbort = (): void => {\n clearTimeout(timer);\n reject(abortedReason(signal));\n };\n const timer = setTimeout(() => {\n signal.removeEventListener('abort', onAbort);\n resolve();\n }, ms);\n signal.addEventListener('abort', onAbort, { once: true });\n });\n}\n\nexport default customFetch;\n";
1
+ export declare const CANONICAL_CUSTOM_FETCH = "/**\n * Configurable fetch wrapper for Orval-generated clients.\n *\n * AUTO-GENERATED by `@xemahq/api-client-generator` \u2014 DO NOT EDIT. Every client\n * in the fleet ships this file byte-for-byte; a hand edit is erased by the next\n * regeneration and, until then, makes this one client speak to the platform\n * differently from all of its siblings.\n *\n * Canonical source: `CANONICAL_CUSTOM_FETCH` in\n * `packages/sdks/api-client-generator/src/lib/custom-fetch-template.ts`\n * (repository `xema-kernel-sdk`). Change it there.\n *\n * Regenerate, from the root of THIS repository:\n * pnpm --filter <owning-service> run openapi\n * pnpm --filter <owning-service> run client:generate\n * A mirror of this client under `xema-host-web` is not regenerated there: it\n * is written by the frontend bridge, `tooling/frontend-bridge` in the\n * xema-monorepo aggregator.\n *\n * Consumers must call `configureClient()` before using any endpoint function.\n * The baseUrl is prepended to the relative paths generated by Orval.\n *\n * By default this transport issues exactly ONE request and adds no delay of its\n * own, so a slow call is a slow server. Retrying is opt-in, and opting in\n * requires supplying an observer \u2014 see `maxRetries` / `onRetry` below.\n */\n\n/** What {@link ClientConfig.onRetry} is told before each re-attempt. */\nexport interface RetryNotice {\n /** 1-based index of the re-attempt about to be made. */\n attempt: number;\n /** The configured budget this re-attempt is spending from. */\n maxRetries: number;\n /** The response status that made the previous attempt retryable. */\n status: number;\n /** Delay before the re-attempt, in ms \u2014 from `Retry-After` when the server sent one. */\n waitMs: number;\n /** Whether {@link waitMs} came from the server's `Retry-After` header. */\n retryAfterHonoured: boolean;\n /** Absolute URL being re-requested. */\n url: string;\n /** HTTP method being re-requested. */\n method: string;\n}\n\n/**\n * Per-request context handed to the callbacks this transport awaits BEFORE it\n * sends the request.\n *\n * `signal` is the request's own `AbortSignal` (`options.signal`). It is the\n * CALLER's cancellation: a callback may use it to stop work that is private to\n * this request, but a callback serving several requests from one shared,\n * single-flight acquisition (a token refresh) must NOT abort that shared work\n * because one caller stopped \u2014 every other caller waiting on it would fail.\n * The transport stops WAITING on its own regardless, so a callback that\n * ignores the signal still cannot hold an aborted request.\n */\nexport interface ClientCallbackOptions {\n signal?: AbortSignal;\n}\n\nexport interface ClientConfig {\n /**\n * Static base URL (e.g. 'http://localhost:3140') \u2014 no trailing slash.\n * Mutually exclusive with `baseUrlResolver`; exactly one MUST be set.\n */\n baseUrl?: string;\n /**\n * Per-request base-URL resolver. When set, the peer URL is resolved from\n * the service registry on EVERY request (boot-order-safe). Wired by\n * `configureOrvalClientResolved` from `@xemahq/platform-common`.\n */\n baseUrlResolver?: (\n options?: ClientCallbackOptions,\n ) => string | Promise<string>;\n /**\n * Optional async callback to get an auth token. Auto-sets Authorization\n * header on every request. Receives the request's signal \u2014 see\n * {@link ClientCallbackOptions} for what it may and may not abort.\n */\n getAuthToken?: (options?: ClientCallbackOptions) => Promise<string>;\n /** Optional callback returning headers to inject on every request. Per-call headers take precedence. */\n getHeaders?: () => Record<string, string> | Promise<Record<string, string>>;\n /**\n * Optional resolver for the CORRELATION ID of the request being made \u2014 the\n * handle that ties one causal chain together across every service hop.\n *\n * WHY IT IS A CALLBACK AND NOT A VALUE. `ClientConfig` is process-global\n * (`configureClient` is called once at wiring time), and a correlation id is\n * per-request. This is invoked INSIDE the request, so a server can point it\n * at whatever carries its ambient request context and get the CURRENT id\n * rather than the one that happened to be live at boot.\n *\n * WHY THE TRANSPORT DOES NOT MINT ONE. Returning `undefined` sends no header,\n * and the receiving service's `RequestContextMiddleware` mints its own \u2014 a\n * new trace, which is honest. A transport that minted per call would produce\n * a FRESH id on every hop while looking like propagation, which is strictly\n * worse than none: every row would carry a correlation id and no two rows\n * that belong together would share one. That is the exact defect this exists\n * to fix, so the transport must not reproduce it one layer down.\n *\n * A caller-supplied `X-Correlation-Id` header always wins, and so does one\n * from `getHeaders`.\n */\n getCorrelationId?: () =>\n | string\n | undefined\n | Promise<string | undefined>;\n /**\n * Optional callback invoked on a 401 before ONE re-attempt. Supplying it is\n * what opts this client into that re-attempt; without it a 401 comes back to\n * the caller as a `ClientError` like any other 4xx.\n */\n onUnauthorized?: () => Promise<void>;\n /**\n * Re-attempts for a retryable status. **Defaults to 0 \u2014 no retry.**\n *\n * Setting it above 0 REQUIRES `onRetry`; `configureClient` throws otherwise.\n * See the block above `customFetch` for why the budget is opt-in and why an\n * observer is mandatory rather than advisory.\n */\n maxRetries?: number;\n /**\n * Called immediately before every re-attempt, with the reason and the delay.\n *\n * Mandatory whenever `maxRetries` is above 0. It is the difference between a\n * retry and a hidden degradation path: without it a caller cannot tell a slow\n * server from this transport sleeping between attempts.\n */\n onRetry?: (notice: RetryNotice) => void;\n}\n\n/**\n * Cross-package identity for `ClientError`.\n *\n * \u2500\u2500 THE OUTAGE THIS IS FOR \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n *\n * PRODUCTION, 2026-09-22. A session launch aborted on\n * `HTTP 503 from http://skill-registry-api\u2026/skills`. A 503 is the archetypal\n * TRANSIENT \u2014 agent-session's launch taxonomy already listed it as retryable \u2014\n * but it was classified PERMANENT and the launch was abandoned.\n *\n * The cause was this file. Every generated client package gets its OWN copy of\n * `ClientError`, so there are as many classes as there are clients (81 at the\n * time of writing), all byte-identical and all DIFFERENT OBJECTS. A consumer\n * naturally writes `err instanceof ClientError` against the one client it\n * imported \u2014 which reads as obviously correct and is silently package-local. An\n * error from any OTHER client fails it, falls past every status check, and lands\n * on whatever the default is.\n *\n * That was not the first time: biome-host had already switched to structural\n * detection for the same reason, and canopy imports TWO `ClientError` classes\n * and tests both. Three more call sites elsewhere carry the same shape.\n *\n * \u2500\u2500 WHY A BRAND AND NOT A SHARED PACKAGE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n *\n * The obvious fix is one shared runtime class every client imports. It was\n * rejected on measurement: the 81 generated clients are DEPENDENCY-FREE by\n * design (exactly one has any dependency at all), and a shared class would have\n * to be a PEER dependency to be safe \u2014 a normal dependency can be installed\n * twice under version skew, which reinstates this identical bug in a form that\n * is HARDER to see, because the classes then look like they ought to match.\n *\n * `Symbol.for` is a process-wide registry keyed by STRING, so every copy of\n * this template resolves the same symbol without importing anything. The brand\n * costs no dependency, cannot skew, and needs no new package.\n *\n * `Symbol.hasInstance` then makes plain `instanceof` mean the right thing\n * fleet-wide: an error from ANY generated client satisfies `instanceof\n * ClientError` in ANY other. A helper would have made the safe pattern\n * available; this makes the dangerous pattern impossible.\n *\n * Narrow on purpose \u2014 the brand is set only by this constructor, so an unrelated\n * error carrying a `status` is not admitted.\n */\nconst CLIENT_ERROR_BRAND: unique symbol = Symbol.for(\n 'xema.generatedClientError',\n) as never;\n\nexport class ClientError extends Error {\n constructor(\n public readonly status: number,\n public readonly url: string,\n public readonly body: unknown,\n ) {\n super(`HTTP ${status} from ${url}`);\n this.name = 'ClientError';\n // Non-enumerable: it must not appear in JSON, logs or snapshots \u2014 it is an\n // identity marker, not payload.\n Object.defineProperty(this, CLIENT_ERROR_BRAND, { value: true });\n }\n\n // `override` because the member shadows `Function.prototype[Symbol.hasInstance]`,\n // which a class constructor inherits: TypeScript 5.9+ reports TS4114 without it\n // under `noImplicitOverride`. Measured to compile on 5.5.4, 5.9.3, 6.0.3 and\n // 7.0.2 with the flag on AND off \u2014 pinned by\n // tests/custom-fetch-compiles-standalone.test.cjs.\n static override [Symbol.hasInstance](candidate: unknown): boolean {\n return (\n typeof candidate === 'object' &&\n candidate !== null &&\n CLIENT_ERROR_BRAND in candidate\n );\n }\n}\n\nlet clientConfig: ClientConfig | null = null;\n\n/**\n * THE MOUNT SCOPE \u2014 how one process can host several services without their\n * clients speaking for each other.\n *\n * `clientConfig` below is a MODULE global, and in a single-service process\n * that is correct: one writer, one configuration. Compose two services into one\n * process and both call `configureClient` on THIS SAME module instance, so the\n * second overwrites the first and every outbound call from BOTH services leaves\n * as whichever wired itself last \u2014 wrong base URL, and, because\n * `getAuthToken` is part of the config, WRONG BEARER. That is one tenant's\n * service calling a peer holding another tenant's credential, and it is silent.\n *\n * A composing host installs a hook under this well-known symbol that answers\n * one question: WHICH MOUNT is currently on the stack. Nothing else crosses.\n * `configureClient` then files the config under that mount, and\n * `getClientConfig` reads it back out under the same key.\n *\n * Three properties make this safe rather than clever:\n *\n * - The CONFIG is still built by the mount's own wiring, exactly as today.\n * The hook never supplies one. So a mount's base URL and bearer are\n * resolved FROM THE MOUNT; the scope only decides which drawer they go in.\n * A hook that RETURNED configuration would be a mount taking its identity\n * from ambient storage a neighbour can write \u2014 the inversion to refuse.\n * - The key is an OPAQUE OBJECT and the store is a `WeakMap`, so a mount's\n * configuration becomes unreachable when the host drops the mount, and no\n * client can enumerate the mounts or reach a sibling's entry.\n * - With NO hook installed \u2014 every process in the fleet today \u2014 both\n * functions behave exactly as they did before this existed.\n *\n * `Symbol.for` is the seam because a generated client must keep its\n * dependency surface at zero and a host cannot enumerate the clients a process\n * happens to load. It is the same instrument, and the same reasoning, as the\n * `ClientError` brand above.\n */\nconst XEMA_CLIENT_CONFIG_SCOPE = Symbol.for('xema.client-config-scope');\n\ntype MountScopeHook = () => object | undefined;\n\nfunction mountScopeHook(): MountScopeHook | undefined {\n const hook = (globalThis as Record<symbol, unknown>)[\n XEMA_CLIENT_CONFIG_SCOPE\n ];\n return typeof hook === 'function' ? (hook as MountScopeHook) : undefined;\n}\n\nfunction currentMountKey(): object | undefined {\n return mountScopeHook()?.();\n}\n\nconst perMountConfig = new WeakMap<object, ClientConfig>();\n\n\nexport function configureClient(config: ClientConfig): void {\n // Fail at WIRING time, not on the request that happens to be retried. A\n // client configured to retry without an observer is the exact defect this\n // transport was rebuilt to remove, so it must not be constructible.\n if ((config.maxRetries ?? 0) > 0 && !config.onRetry) {\n throw new Error(\n 'configureClient: maxRetries above 0 requires onRetry. A retry nothing ' +\n 'reports is indistinguishable from a slow server, which is how two ' +\n 'silent re-attempts were read as a 3,312ms call.',\n );\n }\n const hook = mountScopeHook();\n if (hook !== undefined) {\n const mount = hook();\n if (mount === undefined) {\n // A composing host is installed and no member is on the stack, so this\n // configuration belongs to NO member. Filing it in the module global\n // would hand it to every member that did not configure this client \u2014\n // someone else's base URL and bearer, silently.\n throw new Error(\n 'configureClient: called in a composed process outside every member. ' +\n 'Configure the client inside the member that uses it (its providers ' +\n 'and factories already run there).',\n );\n }\n perMountConfig.set(mount, config);\n return;\n }\n clientConfig = config;\n}\n\nexport function getClientConfig(): ClientConfig {\n const mount = currentMountKey();\n if (mount !== undefined) {\n const scoped = perMountConfig.get(mount);\n if (scoped) {\n return scoped;\n }\n // A member that never configured THIS client behaves exactly like a\n // dedicated service that did not either: it is refused. It used to fall\n // through to the module global, which in a composed process can only have\n // been written by some OTHER code \u2014 so the member called peers under a\n // base URL and bearer that were never its own.\n throw new Error(\n 'Client not configured for this member. Call configureClient({ baseUrl }) ' +\n 'inside the member before using endpoint functions.',\n );\n }\n if (!clientConfig) {\n throw new Error(\n 'Client not configured. Call configureClient({ baseUrl }) before using endpoint functions.',\n );\n }\n return clientConfig;\n}\n\n/*\n * RETRYING IS OPT-IN, OBSERVED, AND NARROW. Do not widen any of the three.\n *\n * This transport used to retry up to `maxRetries` (defaulting to THREE) over\n * 429/502/503/504 AND over any thrown network error, backing off from 1000ms,\n * with no log line anywhere. Three properties were wrong:\n *\n * 1. The DEFAULT was on. ~99% of the fleet's client configurations never\n * mention `maxRetries`, so two re-attempts could add ~3s to any call with\n * nothing to distinguish that from a slow peer. Every caller that DID set\n * it set it LOWER \u2014 canopy's control plane to 1, \"so a hard outage\n * surfaces inside the turn's latency budget rather than after three\n * backoffs\"; two llm-registry callers to 1; a test to 0. Nobody ever\n * raised it. A default three separate call sites work around is not a\n * default, and `configureOrvalClientResolved` cannot express the field at\n * all, so most callers could not have opted out if they had wanted to.\n * 2. It retried AMBIGUOUS failures. 502 and 504 mean a gateway did not get a\n * timely answer from upstream \u2014 the upstream may well have APPLIED the\n * request. So did a thrown network error mid-flight. Re-sending a POST in\n * either case is a duplicate write, and no amount of logging makes that\n * safe. Only 429 and 503 state positively that the request was NOT\n * processed, so only those are retried; everything else surfaces at once.\n * 3. Nothing reported it. Now `onRetry` is mandatory whenever the budget is\n * above 0, enforced in `configureClient`.\n *\n * Also note `baseUrlResolver` is awaited ONCE, above the loop: a re-attempt\n * returns to the same resolved instance. In a registry-resolved fleet the cure\n * for an unhealthy peer is re-resolution, which lives above this file \u2014 which\n * is a further reason not to lean on retrying here.\n *\n * Retry policy a caller genuinely wants belongs in `@xemahq/managed-fetch`,\n * which has backoff, a circuit breaker, a token bucket and health reporting,\n * and reports what it did.\n *\n * Enforced fleet-wide by `check-client-transport-envelope`, which compares\n * every client's transport to this template.\n */\n\n/** The only statuses that state the request was NOT processed. See above. */\nconst RETRYABLE_STATUSES = [429, 503];\n\n/**\n * The platform's correlation header, spelled once.\n *\n * Value-identical to what `RequestContextMiddleware` reads in\n * `@xemahq/platform-common`. It is a literal here rather than an import\n * because this file has ZERO imports on purpose: it ships byte-identical into\n * browser-target clients as well as server-target ones, and a dependency on a\n * NestJS-peer package would follow it into every one of them.\n */\nconst CORRELATION_ID_HEADER = 'X-Correlation-Id';\n\n/** Backoff floor, doubling per attempt up to {@link MAX_BACKOFF_MS}. */\nconst BASE_BACKOFF_MS = 1000;\n\n/** Ceiling on a single backoff, however many attempts have elapsed. */\nconst MAX_BACKOFF_MS = 30_000;\n\n/*\n * CALLER CANCELLATION REACHES EVERY WAIT BEFORE THE REQUEST IS SENT.\n *\n * `fetch` always honoured `options.signal`, but everything this transport\n * awaits BEFORE `fetch` \u2014 base-URL resolution, the header callbacks, the auth\n * token \u2014 did not, so a caller that aborted while a token was being minted sat\n * out the mint and then, at best, had its request refused. The only way to\n * cancel that wait was a process-wide interceptor aborting every outbound\n * request, which also aborts a SHARED single-flight token refresh and so fails\n * every other caller waiting on it.\n *\n * So each pre-send wait is RACED against the signal: the caller stops waiting\n * at once, and the work it was waiting on carries on for anybody else. The\n * rejection is the signal's own reason \u2014 exactly what `fetch` rejects with \u2014\n * so a caller sees ONE abort shape whenever it aborts. An aborted request is\n * never retried. Without a signal nothing here changes.\n */\nfunction abortedReason(signal: AbortSignal): unknown {\n // `abort()` with no argument sets a DOMException reason, so this is only\n // ever `undefined` for a hand-built signal; say so rather than throw it.\n return signal.reason ?? new DOMException('This operation was aborted', 'AbortError');\n}\n\nfunction throwIfAborted(signal: AbortSignal | undefined): void {\n if (signal?.aborted) {\n throw abortedReason(signal);\n }\n}\n\nfunction raceAbort<V>(\n pending: V | Promise<V>,\n signal: AbortSignal | undefined,\n): Promise<V> {\n const promise = Promise.resolve(pending);\n if (!signal) {\n return promise;\n }\n if (signal.aborted) {\n promise.catch(() => undefined);\n return Promise.reject(abortedReason(signal));\n }\n return new Promise<V>((resolve, reject) => {\n const onAbort = (): void => {\n // The pending work may be shared; it carries on, and its eventual\n // rejection must not surface as an unhandled one on this side.\n promise.catch(() => undefined);\n reject(abortedReason(signal));\n };\n signal.addEventListener('abort', onAbort, { once: true });\n promise.then(\n (value) => {\n signal.removeEventListener('abort', onAbort);\n resolve(value);\n },\n (err: unknown) => {\n signal.removeEventListener('abort', onAbort);\n reject(err);\n },\n );\n });\n}\n\nasync function buildHeaders(\n config: ClientConfig,\n callerHeaders: RequestInit['headers'],\n signal: AbortSignal | undefined,\n): Promise<Headers> {\n const headers = new Headers(callerHeaders);\n\n // Global headers from config (caller-provided headers take precedence)\n if (config.getHeaders) {\n const globalHeaders = await raceAbort(config.getHeaders(), signal);\n for (const [key, value] of Object.entries(globalHeaders)) {\n if (!headers.has(key)) {\n headers.set(key, value);\n }\n }\n }\n\n // Correlation id (caller and global headers still take precedence).\n //\n // Without this, every server-to-server hop through a generated client started\n // a NEW trace: the id is read-or-minted per hop by the receiving service's\n // RequestContextMiddleware, and nothing carried it outbound \u2014 so an audit\n // journal could record a whole causal chain and offer no way to join it back\n // together.\n //\n // Absent resolver, or a resolver that answers `undefined`: NO header. The\n // receiver mints and a new trace begins, which is the truthful outcome when\n // there is nothing to continue.\n if (config.getCorrelationId && !headers.has(CORRELATION_ID_HEADER)) {\n const correlationId = await raceAbort(config.getCorrelationId(), signal);\n if (correlationId) {\n headers.set(CORRELATION_ID_HEADER, correlationId);\n }\n }\n\n // Auth token (caller or global headers take precedence)\n if (config.getAuthToken && !headers.has('Authorization')) {\n const token = await raceAbort(\n config.getAuthToken(signal ? { signal } : undefined),\n signal,\n );\n headers.set('Authorization', `Bearer ${token}`);\n }\n\n return headers;\n}\n\n/*\n * THE TRANSPORT RETURNS THE BODY UNCHANGED. Do not reintroduce an unwrap here.\n *\n * Xema services wrap every 2xx payload in a { data: T } envelope via the global\n * ResponseEnvelopeInterceptor (platform-common), and the generator emits types\n * that describe THAT ENVELOPE \u2014 every endpoint returns Promise<XDataEnvelope>\n * or Promise<XPaginatedEnvelope>, never a bare inner T. Consumers read the data\n * property themselves.\n *\n * This template used to peel data, justified by a comment claiming generated\n * types describe the inner T. That stopped being true when the generator moved\n * to envelope-typed returns, and the comment outlived the fact \u2014 so the peel\n * then contradicted every type in every package it seeded. Four clients shipped\n * that way (resource-governance x3, workload-runtime-api): declared\n * *DataEnvelope, returned the already-peeled inner object, so .data read\n * undefined at runtime on every non-paginated endpoint. Paginated calls hid it,\n * because the old peel deliberately preserved an envelope carrying pagination.\n *\n * Four MORE shipped it in repositories the gate could not see \u2014 license-api and\n * license-internal-api in xema-operator, plus their host-web mirrors \u2014 because\n * the gate ran in xema-base only. That is why it now runs in every repository\n * that ships a client, and why this file is generator-owned rather than seeded.\n */\n\nexport const customFetch = async <T>(\n url: string,\n options: RequestInit,\n): Promise<T> => {\n const config = getClientConfig();\n const signal = options.signal ?? undefined;\n throwIfAborted(signal);\n const base = config.baseUrlResolver\n ? await raceAbort(\n config.baseUrlResolver(signal ? { signal } : undefined),\n signal,\n )\n : config.baseUrl;\n if (base === undefined) {\n throw new Error(\n 'Client not configured: set baseUrl or baseUrlResolver via configureClient().',\n );\n }\n const fullUrl = `${base}${url}`;\n const maxRetries = config.maxRetries ?? 0;\n\n // A caller that supplied its own Authorization header owns that credential.\n // `buildHeaders` lets it win, so refreshing the CLIENT-WIDE token and\n // re-sending would replay the identical failing request with the identical\n // credential: one wasted round trip, plus a global refresh nobody asked for.\n const callerSuppliedAuth = new Headers(options.headers).has('Authorization');\n\n const headers = await buildHeaders(config, options.headers, signal);\n const requestInit: RequestInit = { ...options, headers };\n\n let delay = BASE_BACKOFF_MS;\n\n for (let attempt = 0; ; attempt++) {\n const response = await fetch(fullUrl, requestInit);\n\n if (\n response.status === 401 &&\n config.onUnauthorized &&\n !callerSuppliedAuth &&\n attempt === 0\n ) {\n await raceAbort(config.onUnauthorized(), signal);\n const refreshedHeaders = await buildHeaders(\n config,\n options.headers,\n signal,\n );\n const retryResponse = await fetch(fullUrl, {\n ...options,\n headers: refreshedHeaders,\n });\n const retryBody = await parseBody(retryResponse);\n if (retryResponse.status >= 400) {\n throw new ClientError(retryResponse.status, fullUrl, retryBody);\n }\n return retryBody as T;\n }\n\n if (\n !RETRYABLE_STATUSES.includes(response.status) ||\n attempt >= maxRetries\n ) {\n const body = await parseBody(response);\n if (response.status >= 400) {\n throw new ClientError(response.status, fullUrl, body);\n }\n return body as T;\n }\n\n const retryAfter = parseRetryAfter(response.headers.get('Retry-After'));\n const waitMs = retryAfter ?? addJitter(delay);\n // Non-null: `configureClient` refuses a budget above 0 without an observer,\n // and this line is unreachable unless `maxRetries` is above 0.\n (config.onRetry as (notice: RetryNotice) => void)({\n attempt: attempt + 1,\n maxRetries,\n status: response.status,\n waitMs,\n retryAfterHonoured: retryAfter !== undefined,\n url: fullUrl,\n method: options.method ?? 'GET',\n });\n await sleep(waitMs, signal);\n delay = Math.min(delay * 2, MAX_BACKOFF_MS);\n }\n};\n\n/**\n * Does this media type carry JSON?\n *\n * \u2500\u2500 THE OUTAGE THIS FIXES \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n *\n * This used to be `contentType?.includes('application/json')`, and EVERY error\n * this fleet returns failed that test. The platform's `GlobalExceptionFilter`\n * emits RFC 9457 problem documents and sets the media type explicitly \u2014\n * `.type(PROBLEM_DETAILS_CONTENT_TYPE)` before `.json()`, so it cannot be\n * overridden \u2014 and that constant is `application/problem+json`, which does NOT\n * contain the substring `application/json`: after `application/` comes\n * `problem+json`.\n *\n * So every non-2xx body fell through to `response.text()` and reached the\n * caller as an UNPARSED STRING. `ClientError.body` is typed `unknown`, so\n * nothing complained; every consumer that reads a machine-readable code off an\n * error \u2014 `error.body.code`, `error.body.details.code` \u2014 silently read\n * `undefined` instead, for every error, in every service.\n *\n * Measured in production on 2026-09-15: skill-registry-api's\n * `resolveOrNull()` absorbs `RELEASE_CHANNEL_NOT_FOUND` into `null` by exactly\n * that read. With the code unreadable the absorb never fired, a routine \"no\n * pointer on this channel\" 404 became a 500 on `GET /skills` and\n * `GET /describe-objects`, and agent-session-api's `apply_control_bundle` step\n * aborted EVERY session launch in the organisation \u2014 7,871 failed resolutions\n * an hour. A fix written for that exact page months earlier was present in the\n * running image and could not help, because the classifier it repaired was\n * being handed a string.\n *\n * \u2500\u2500 WHY THE STRUCTURED SUFFIX, NOT A SECOND SUBSTRING \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n *\n * Adding `|| includes('application/problem+json')` would fix this one media\n * type and leave the next one \u2014 `application/vnd.api+json`, and anything else\n * a service legitimately emits. RFC 6839 defines `+json` as the structured\n * syntax suffix meaning \"this is JSON\"; that is the actual rule, so it is the\n * rule implemented. Parameters are stripped first, because\n * `application/problem+json; charset=utf-8` is the same media type.\n */\nfunction isJsonMediaType(contentType: string | null): boolean {\n if (contentType === null) {\n return false;\n }\n const essence = contentType.split(';')[0]?.trim().toLowerCase() ?? '';\n return essence === 'application/json' || essence.endsWith('+json');\n}\n\n/**\n * Does this media type carry TEXT a caller reads as a string?\n *\n * The response body is decoded by its declared media type, in three classes,\n * and each class matches what the generated function's return type says for\n * the schema such a route declares:\n *\n * - JSON (`application/json` or an RFC 6839 `+json` suffix) \u2192 parsed;\n * - TEXT (`text/*` \u2014 including `text/event-stream` \u2014 `application/javascript`,\n * `application/ecmascript`, `application/xml` or an RFC 7303 `+xml`\n * suffix) \u2192 a string, which is what a `{ type: string }` schema generates;\n * - anything else \u2014 `application/octet-stream`, `application/gzip`,\n * `application/pdf`, an Office document type, any `format: binary` body \u2014\n * \u2192 a `Blob`, which is what a `format: binary` schema generates.\n *\n * Reading every non-JSON body as text, as this transport did until 2026-10-04,\n * handed a caller typed `Blob` a string: `response.text()` decodes the bytes\n * as UTF-8, so a PDF or a gzip tarball arrived corrupted under a type that\n * promised the bytes.\n *\n * A response with NO content type is read as text, so an empty body stays the\n * empty string it always was.\n */\nfunction isTextMediaType(contentType: string): boolean {\n const essence = contentType.split(';')[0]?.trim().toLowerCase() ?? '';\n return (\n essence.startsWith('text/') ||\n essence === 'application/javascript' ||\n essence === 'application/ecmascript' ||\n essence === 'application/xml' ||\n essence.endsWith('+xml')\n );\n}\n\nasync function parseBody(response: Response): Promise<unknown> {\n // 204 FIRST, and deliberately \u2014 this ORDER is carried from `develop`, which\n // fixed the same defect independently and got this half right where `main`\n // did not. A 204 carries no body, so `response.json()` on one throws\n // SyntaxError; and a 204 whose headers STILL declare a JSON content type is\n // ordinary, because the framework sets the header before the handler returns\n // nothing. With the JSON branch first, a documented `undefined` becomes a\n // thrown parse error. Pinned by a case in `transport-problem-json.test.cjs`.\n if (response.status === 204) {\n return undefined;\n }\n const contentType = response.headers.get('content-type');\n if (isJsonMediaType(contentType)) {\n return response.json();\n }\n if (contentType === null || isTextMediaType(contentType)) {\n return response.text();\n }\n return response.blob();\n}\n\nfunction parseRetryAfter(value: string | null): number | undefined {\n if (!value) return undefined;\n const seconds = Number(value);\n if (!isNaN(seconds) && seconds >= 0) return seconds * 1000;\n const date = new Date(value);\n if (!isNaN(date.getTime())) return Math.max(0, date.getTime() - Date.now());\n return undefined;\n}\n\nfunction addJitter(delay: number): number {\n return delay + (Math.random() * 2 - 1) * delay * 0.25;\n}\n\n/** A retry backoff; the caller's signal ends it at once and is never retried. */\nfunction sleep(ms: number, signal: AbortSignal | undefined): Promise<void> {\n if (!signal) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n if (signal.aborted) {\n return Promise.reject(abortedReason(signal));\n }\n return new Promise((resolve, reject) => {\n const onAbort = (): void => {\n clearTimeout(timer);\n reject(abortedReason(signal));\n };\n const timer = setTimeout(() => {\n signal.removeEventListener('abort', onAbort);\n resolve();\n }, ms);\n signal.addEventListener('abort', onAbort, { once: true });\n });\n}\n\nexport default customFetch;\n";
2
2
  //# sourceMappingURL=custom-fetch-template.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"custom-fetch-template.d.ts","sourceRoot":"","sources":["../../src/lib/custom-fetch-template.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,sBAAsB,sk9BAsrBlC,CAAC"}
1
+ {"version":3,"file":"custom-fetch-template.d.ts","sourceRoot":"","sources":["../../src/lib/custom-fetch-template.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,sBAAsB,ksgCA2tBlC,CAAC"}
@@ -642,6 +642,40 @@ function isJsonMediaType(contentType: string | null): boolean {
642
642
  return essence === 'application/json' || essence.endsWith('+json');
643
643
  }
644
644
 
645
+ /**
646
+ * Does this media type carry TEXT a caller reads as a string?
647
+ *
648
+ * The response body is decoded by its declared media type, in three classes,
649
+ * and each class matches what the generated function's return type says for
650
+ * the schema such a route declares:
651
+ *
652
+ * - JSON (\`application/json\` or an RFC 6839 \`+json\` suffix) → parsed;
653
+ * - TEXT (\`text/*\` — including \`text/event-stream\` — \`application/javascript\`,
654
+ * \`application/ecmascript\`, \`application/xml\` or an RFC 7303 \`+xml\`
655
+ * suffix) → a string, which is what a \`{ type: string }\` schema generates;
656
+ * - anything else — \`application/octet-stream\`, \`application/gzip\`,
657
+ * \`application/pdf\`, an Office document type, any \`format: binary\` body —
658
+ * → a \`Blob\`, which is what a \`format: binary\` schema generates.
659
+ *
660
+ * Reading every non-JSON body as text, as this transport did until 2026-10-04,
661
+ * handed a caller typed \`Blob\` a string: \`response.text()\` decodes the bytes
662
+ * as UTF-8, so a PDF or a gzip tarball arrived corrupted under a type that
663
+ * promised the bytes.
664
+ *
665
+ * A response with NO content type is read as text, so an empty body stays the
666
+ * empty string it always was.
667
+ */
668
+ function isTextMediaType(contentType: string): boolean {
669
+ const essence = contentType.split(';')[0]?.trim().toLowerCase() ?? '';
670
+ return (
671
+ essence.startsWith('text/') ||
672
+ essence === 'application/javascript' ||
673
+ essence === 'application/ecmascript' ||
674
+ essence === 'application/xml' ||
675
+ essence.endsWith('+xml')
676
+ );
677
+ }
678
+
645
679
  async function parseBody(response: Response): Promise<unknown> {
646
680
  // 204 FIRST, and deliberately — this ORDER is carried from \`develop\`, which
647
681
  // fixed the same defect independently and got this half right where \`main\`
@@ -657,7 +691,10 @@ async function parseBody(response: Response): Promise<unknown> {
657
691
  if (isJsonMediaType(contentType)) {
658
692
  return response.json();
659
693
  }
660
- return response.text();
694
+ if (contentType === null || isTextMediaType(contentType)) {
695
+ return response.text();
696
+ }
697
+ return response.blob();
661
698
  }
662
699
 
663
700
  function parseRetryAfter(value: string | null): number | undefined {
@@ -1 +1 @@
1
- {"version":3,"file":"custom-fetch-template.js","sourceRoot":"","sources":["../../src/lib/custom-fetch-template.ts"],"names":[],"mappings":";;;AAoBa,QAAA,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsrBrC,CAAC"}
1
+ {"version":3,"file":"custom-fetch-template.js","sourceRoot":"","sources":["../../src/lib/custom-fetch-template.ts"],"names":[],"mappings":";;;AAoBa,QAAA,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2tBrC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-clients.d.ts","sourceRoot":"","sources":["../../src/lib/generate-clients.ts"],"names":[],"mappings":"AAKA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAWxE,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;AA+N1B,MAAM,WAAW,sBAAsB;IAQrC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAE3C,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/C;AAgGD,wBAAsB,yBAAyB,CAC7C,UAAU,GAAE,MAAsB,EAClC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,UAAU,EAAE,CAAC,CA0LvB;AAmBD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG;IACjF,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9C,CA8BA;AAGD,wBAAgB,oBAAoB,IAAI,IAAI,CAe3C"}
1
+ {"version":3,"file":"generate-clients.d.ts","sourceRoot":"","sources":["../../src/lib/generate-clients.ts"],"names":[],"mappings":"AAKA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAYxE,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;AA2M1B,MAAM,WAAW,sBAAsB;IAQrC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAE3C,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/C;AAgGD,wBAAsB,yBAAyB,CAC7C,UAAU,GAAE,MAAsB,EAClC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,UAAU,EAAE,CAAC,CAoLvB;AAmBD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG;IACjF,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9C,CA8BA;AAGD,wBAAgB,oBAAoB,IAAI,IAAI,CAe3C"}
@@ -8,6 +8,7 @@ const node_fs_1 = require("node:fs");
8
8
  const node_path_1 = require("node:path");
9
9
  const node_url_1 = require("node:url");
10
10
  const xema_decorators_1 = require("@xemahq/xema-decorators");
11
+ const client_changeset_1 = require("./client-changeset");
11
12
  const client_package_1 = require("./client-package");
12
13
  const client_readme_1 = require("./client-readme");
13
14
  const client_repository_1 = require("./client-repository");
@@ -82,15 +83,6 @@ function assertNoOrphanedSurfaceClients(ctx, surfacesWithSpec) {
82
83
  `has. Delete the package (and its workspace consumers) or restore the ` +
83
84
  `surface classification.`);
84
85
  }
85
- function restampClientVersion(clientDir, version) {
86
- const pkgPath = (0, node_path_1.join)(clientDir, 'package.json');
87
- const pkg = JSON.parse((0, node_fs_1.readFileSync)(pkgPath, 'utf8'));
88
- if (pkg.version === version) {
89
- return;
90
- }
91
- pkg.version = version;
92
- (0, node_fs_1.writeFileSync)(pkgPath, `${JSON.stringify(pkg, null, 2)}\n`, 'utf8');
93
- }
94
86
  function resolveSurfaceBumpClass(args) {
95
87
  const { serviceId, surfaces, surfacesBefore, surfacesAfter, contentChanged, explicit, explicitOrigin, } = args;
96
88
  const verdicts = surfaces.map((surface) => {
@@ -146,11 +138,6 @@ async function generateClientsForService(serviceDir = process.cwd(), options = {
146
138
  assertNoOrphanedSurfaceClients(ctx, surfacesWithSpec);
147
139
  const existingClientVersions = (0, client_version_1.readExistingClientVersions)(ctx);
148
140
  const baseline = (0, client_version_1.resolveClientVersionBaseline)(existingClientVersions.map((c) => c.version), ctx.version);
149
- const split = new Set(existingClientVersions.map((c) => c.version));
150
- if (split.size > 1) {
151
- console.warn(`[xema-client-generate] ${ctx.api.serviceId}: surface clients were SPLIT across ` +
152
- `${[...split].sort().join(', ')} — realigning all surfaces to ${baseline}.`);
153
- }
154
141
  const generated = [];
155
142
  const clientDirs = new Map();
156
143
  let contentChanged = false;
@@ -209,19 +196,22 @@ async function generateClientsForService(serviceDir = process.cwd(), options = {
209
196
  (0, generated_output_snapshot_1.discardGeneratedOutputSnapshot)(snapshot);
210
197
  }
211
198
  }
212
- const resolvedVersion = (0, client_version_1.advanceClientVersionLine)({
213
- baseline,
214
- contentChanged,
215
- hadExistingClients: existingClientVersions.length > 0,
216
- bumpClass,
217
- });
218
- for (const surface of generated) {
219
- restampClientVersion(clientDirs.get(surface), resolvedVersion);
220
- }
221
- console.log(`[xema-client-generate] ${ctx.api.serviceId}: generated ${generated.length} client(s) → ${generated.join(', ') || '(none)'} @ ${resolvedVersion}` +
222
- (resolvedVersion === baseline
223
- ? ' (unchanged output — version line held)'
224
- : ` (output changed, ${bumpClass} — advanced from ${baseline})`));
199
+ const hadExistingClients = existingClientVersions.length > 0;
200
+ const changesets = contentChanged && hadExistingClients
201
+ ? (0, client_changeset_1.applyClientChangesets)({
202
+ repoRoot: ctx.repoRoot,
203
+ serviceId: ctx.api.serviceId,
204
+ bumpClass,
205
+ packages: generated.map((surface) => ({
206
+ name: (0, service_config_1.surfaceClientPackageName)(ctx.api.serviceId, surface),
207
+ version: (0, client_version_1.readClientVersion)(clientDirs.get(surface)),
208
+ })),
209
+ })
210
+ : [];
211
+ console.log(`[xema-client-generate] ${ctx.api.serviceId}: generated ${generated.length} client(s) → ${generated.join(', ') || '(none)'}; versions untouched` +
212
+ (changesets.length === 0
213
+ ? ' (no changeset needed)'
214
+ : ` (output changed, ${bumpClass} — ${changesets.join('; ')})`));
225
215
  return generated;
226
216
  }
227
217
  function readCliBumpClass(argv, env) {
@@ -1 +1 @@
1
- {"version":3,"file":"generate-clients.js","sourceRoot":"","sources":["../../src/lib/generate-clients.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-clients.js","sourceRoot":"","sources":["../../src/lib/generate-clients.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xemahq/api-client-generator",
3
- "version": "2.1.2",
3
+ "version": "2.3.0",
4
4
  "description": "Layer 1 — the single, central OpenAPI + ORVAL client generator for every Xema NestJS service. Replaces the per-service orval.config.ts / scripts/extract-openapi.ts / scripts/build-client-index.js trio with two bins (xema-openapi, xema-client-generate). Extracts one OpenAPI document per ApiSurface (public/internal/operator) using the @XemaApiSurface decorator metadata, generates one ORVAL client package per non-empty surface (every surface of a service landing on ONE derived version — the highest its clients already carry, advanced a patch when the generated output changes), and stamps deterministic `xema` provenance metadata into each generated client package.json. No heuristics: a route ships in a surface only if it (or its controller) is explicitly classified, and no client version is ever typed by hand.",
5
5
  "keywords": [
6
6
  "xema",
@@ -62,8 +62,8 @@
62
62
  "prettier": "3.6.2",
63
63
  "reflect-metadata": "0.2.2",
64
64
  "typescript": "5.9.3",
65
- "@xemahq/eslint-config": "0.10.0",
66
- "@xemahq/xema-decorators": "0.21.0"
65
+ "@xemahq/eslint-config": "0.12.0",
66
+ "@xemahq/xema-decorators": "0.24.0"
67
67
  },
68
68
  "exports": {
69
69
  ".": {
@@ -79,5 +79,8 @@
79
79
  "lint": "eslint .",
80
80
  "test": "node --test \"tests/**/*.test.cjs\"",
81
81
  "typecheck": "tsc -p tsconfig.json --noEmit"
82
+ },
83
+ "xemaRelease": {
84
+ "sourceDigest": "sha256:b692df4e952c3f4e0960cb36cb98965c1c0a220404147fc4bb77ff0c1fd73bdc"
82
85
  }
83
- }
86
+ }