@haddowg/json-api-mcp 1.2.1 → 1.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.
package/dist/index.cjs CHANGED
@@ -97,9 +97,11 @@ const SELF_COUNT = "_self_";
97
97
  //#region src/flatten.ts
98
98
  /**
99
99
  * Flatten the client's materialised results into plain tool output. A resource becomes
100
- * `{ id, type, ...attributes, relation }`, where a relation is an id (ids for a to-many, or type
101
- * and id for a polymorphic relation), or the flattened related resource when it was included.
102
- * Links and meta on resources are dropped; a collection keeps only its pagination links.
100
+ * `{ id, type, ...attributes, relation, links? }`, where a relation is an id (ids for a to-many,
101
+ * or type and id for a polymorphic relation), or the flattened related resource when it was
102
+ * included, and `links` holds only the links the type names. Generic links such as `self` and
103
+ * resource meta are dropped. Results go back in a JSON:API-like envelope of `data`, `links` and
104
+ * `meta`, where `links` only carries a collection's pagination.
103
105
  */
104
106
  /** A materialised related value carries `$raw` when it was included, not when it's only linkage. */
105
107
  const isIncluded = (value) => "$raw" in value;
@@ -109,14 +111,36 @@ function identifier(value, polymorphic) {
109
111
  id: value["id"]
110
112
  } : value["id"];
111
113
  }
114
+ /** A link as a flattened resource carries it: `{ href, type?, title?, meta? }`. */
115
+ function flatLink(link) {
116
+ if (typeof link === "string") return { href: link };
117
+ if (!isObject(link) || typeof link["href"] !== "string") return;
118
+ const out = { href: link["href"] };
119
+ if (typeof link["type"] === "string") out["type"] = link["type"];
120
+ if (typeof link["title"] === "string") out["title"] = link["title"];
121
+ if (isObject(link["meta"])) out["meta"] = link["meta"];
122
+ return out;
123
+ }
124
+ /** The links of a resource its type names, or undefined when it carries none of them. */
125
+ function namedLinks(value, names) {
126
+ const links = value.$links;
127
+ if (names === void 0 || !isObject(links)) return;
128
+ const out = {};
129
+ for (const name of names) {
130
+ const link = flatLink(links[name]);
131
+ if (link !== void 0) out[name] = link;
132
+ }
133
+ return Object.keys(out).length > 0 ? out : void 0;
134
+ }
112
135
  /**
113
136
  * Flatten one materialised resource. A resource already on the path, or one more than
114
- * `maxDepth` relationships from the root, is cut back to its id.
137
+ * `includeDepth` relationships from the root, is cut back to its id.
115
138
  */
116
- function flattenResource(value, descriptor, path = [], maxDepth = null) {
139
+ function flattenResource(value, ctx, path = []) {
117
140
  const type = String(value["type"]);
118
141
  const key = `${type}:${String(value["id"])}`;
119
- const relations = descriptor[type]?.relations ?? {};
142
+ const relations = ctx.descriptor[type]?.relations ?? {};
143
+ const maxDepth = ctx.includeDepth;
120
144
  const out = {
121
145
  id: value["id"],
122
146
  type
@@ -132,10 +156,12 @@ function flattenResource(value, descriptor, path = [], maxDepth = null) {
132
156
  const one = (item) => {
133
157
  if (!isObject(item)) return item;
134
158
  const itemKey = `${String(item["type"])}:${String(item["id"])}`;
135
- return isIncluded(item) && itemKey !== key && !path.includes(itemKey) && (maxDepth === null || path.length < maxDepth) ? flattenResource(item, descriptor, [...path, key], maxDepth) : identifier(item, polymorphic);
159
+ return isIncluded(item) && itemKey !== key && !path.includes(itemKey) && (maxDepth === null || path.length < maxDepth) ? flattenResource(item, ctx, [...path, key]) : identifier(item, polymorphic);
136
160
  };
137
161
  out[name] = Array.isArray(member) ? member.map(one) : one(member);
138
162
  }
163
+ const links = namedLinks(value, ctx.resourceLinks[type]);
164
+ if (links !== void 0) out["links"] = links;
139
165
  return out;
140
166
  }
141
167
  const PAGE_LINKS = [
@@ -148,15 +174,30 @@ function linkHref(link) {
148
174
  if (typeof link === "string") return link;
149
175
  if (isObject(link) && typeof link["href"] === "string") return link["href"];
150
176
  }
151
- /** Flatten a materialised collection into `{ items, links, meta? }`. */
152
- function flattenCollection(value, descriptor, maxDepth = null) {
177
+ /** The document `meta` a materialised resource came with. */
178
+ function resourceDocumentMeta(value) {
179
+ const document = isObject(value) ? value.$document : void 0;
180
+ return isObject(document?.meta) ? document.meta : void 0;
181
+ }
182
+ /**
183
+ * One resource in its envelope: `{ data, meta? }`, with `data` null when there is none.
184
+ * `fallbackMeta` is the document meta when the value can't carry it, such as a null.
185
+ */
186
+ function resourceEnvelope(value, ctx, fallbackMeta) {
187
+ const out = { data: isObject(value) ? flattenResource(value, ctx) : null };
188
+ const meta = resourceDocumentMeta(value) ?? fallbackMeta;
189
+ if (meta !== void 0) out["meta"] = meta;
190
+ return out;
191
+ }
192
+ /** A materialised collection in its envelope: `{ data, links, meta? }`. */
193
+ function collectionEnvelope(value, ctx) {
153
194
  const links = {};
154
195
  for (const name of PAGE_LINKS) {
155
196
  const href = linkHref(value.$links?.[name]);
156
197
  if (href !== void 0) links[name] = href;
157
198
  }
158
199
  const out = {
159
- items: value.map((item) => isObject(item) ? flattenResource(item, descriptor, [], maxDepth) : item),
200
+ data: value.map((item) => isObject(item) ? flattenResource(item, ctx) : item),
160
201
  links
161
202
  };
162
203
  if (value.$meta !== void 0) out["meta"] = value.$meta;
@@ -181,6 +222,47 @@ function structured(value) {
181
222
  structuredContent: value
182
223
  };
183
224
  }
225
+ /** The `meta` of a JSON:API response body, when it has one. */
226
+ function responseMeta(response) {
227
+ if (response === void 0 || response.body === "") return;
228
+ try {
229
+ const body = JSON.parse(response.body);
230
+ return isObject(body) && isObject(body["meta"]) ? body["meta"] : void 0;
231
+ } catch {
232
+ return;
233
+ }
234
+ }
235
+ /**
236
+ * A result in the shape a model before format 4 describes: `{ item }` for a single read,
237
+ * `{ items, links, meta }` for a collection, the bare resource, meta object or URL otherwise,
238
+ * and a delete as text.
239
+ */
240
+ function legacyResult(entry, envelope, location, id) {
241
+ const data = envelope["data"];
242
+ if (location || entry.result === "resource" || entry.result === "loose") {
243
+ if (Array.isArray(data)) {
244
+ const { data: items, ...rest } = envelope;
245
+ return structured({
246
+ items,
247
+ ...rest
248
+ });
249
+ }
250
+ return isObject(data) ? structured(data) : { content: [text("The action returned no resource.")] };
251
+ }
252
+ switch (entry.result) {
253
+ case "item": return structured({ item: data ?? null });
254
+ case "collection": {
255
+ const { data: items, ...rest } = envelope;
256
+ return structured({
257
+ items,
258
+ ...rest
259
+ });
260
+ }
261
+ case "deleted": return { content: [text(`Deleted ${entry.op.type} ${String(id)}.`)] };
262
+ case "meta": return structured(isObject(envelope["meta"]) ? envelope["meta"] : {});
263
+ default: return structured(envelope);
264
+ }
265
+ }
184
266
  function requireId(args) {
185
267
  const id = args["id"];
186
268
  if (typeof id === "string" && id !== "") return id;
@@ -361,29 +443,62 @@ async function runCall(entry, rawArgs, env) {
361
443
  if (rawArgs !== void 0 && rawArgs !== null && !isObject(rawArgs)) throw new ArgumentError("the arguments must be an object");
362
444
  const args = rawArgs ?? {};
363
445
  if (env.baseUrl === void 0) throw new Error("No base URL: pass baseUrl, return one from requestInit, or give the document a server");
446
+ let last;
447
+ const inner = env.transport ?? _haddowg_json_api_client.fetchTransport;
448
+ const transport = async (request) => {
449
+ last = await inner(request);
450
+ return last;
451
+ };
452
+ const outcome = await callApi(entry, args, {
453
+ ...env,
454
+ baseUrl: env.baseUrl,
455
+ transport
456
+ });
457
+ const id = entry.op.kind === "delete" ? requireId(args) : void 0;
458
+ if (outcome.kind === "content") return outcome.result;
459
+ const location = outcome.kind === "envelope" && outcome.location === true;
460
+ const envelope = outcome.kind === "envelope" ? outcome.envelope : withFallbackMeta(outcome.envelope, responseMeta(last));
461
+ return env.legacyResults ? legacyResult(entry, envelope, location, id) : structured(envelope);
462
+ }
463
+ function withFallbackMeta(envelope, meta) {
464
+ return meta === void 0 || envelope["meta"] !== void 0 ? envelope : {
465
+ ...envelope,
466
+ meta
467
+ };
468
+ }
469
+ const envelope = (value) => ({
470
+ kind: "envelope",
471
+ envelope: value
472
+ });
473
+ async function callApi(entry, args, env) {
364
474
  const { op } = entry;
365
475
  const descriptor = op.kind === "action" ? withAction(env.descriptor, entry) : env.descriptor;
366
476
  const headers = env.headers;
367
477
  const accessor = (0, _haddowg_json_api_client.createClient)(descriptor, {
368
478
  baseUrl: env.baseUrl,
369
- ...env.transport !== void 0 ? { transport: env.transport } : {},
479
+ transport: env.transport,
370
480
  ...headers !== void 0 ? { headers: () => headers } : {}
371
481
  })[op.type];
372
482
  const query = entry.input.query === void 0 ? void 0 : readQuery(args, entry.input.query);
373
483
  if (query !== void 0 && env.signal !== void 0) query.signal = env.signal;
484
+ const flat = {
485
+ descriptor: env.descriptor,
486
+ includeDepth: env.includeDepth,
487
+ resourceLinks: env.resourceLinks
488
+ };
374
489
  switch (op.kind) {
375
490
  case "list":
376
491
  case "related": {
377
- if (entry.result === "item") {
378
- const related = await accessor.id(requireId(args)).rel(op.relation).related(query);
379
- return structured({ item: isObject(related) ? flattenResource(related, env.descriptor, [], env.includeDepth) : null });
380
- }
492
+ if (entry.result === "item") return {
493
+ kind: "bare",
494
+ envelope: resourceEnvelope(await accessor.id(requireId(args)).rel(op.relation).related(query), flat)
495
+ };
381
496
  let collection;
382
497
  if (args["pageLink"] !== void 0 && args["pageLink"] !== null && entry.input.query?.paginated) {
383
498
  const url = checkPageLink(args["pageLink"], env.baseUrl, op.path);
384
499
  const doc = await (0, _haddowg_json_api_client.execute)({
385
500
  baseUrl: env.baseUrl,
386
- transport: env.transport ?? _haddowg_json_api_client.fetchTransport,
501
+ transport: env.transport,
387
502
  ...headers !== void 0 ? { headers: () => headers } : {}
388
503
  }, {
389
504
  method: "GET",
@@ -398,37 +513,44 @@ async function runCall(entry, rawArgs, env) {
398
513
  });
399
514
  } else if (op.kind === "list") collection = await accessor.list(query);
400
515
  else collection = await accessor.id(requireId(args)).rel(op.relation).related(query);
401
- return structured(flattenCollection(Array.isArray(collection) ? collection : [], env.descriptor, env.includeDepth));
402
- }
403
- case "get": {
404
- const resource = await accessor.get(requireId(args), query);
405
- return structured({ item: isObject(resource) ? flattenResource(resource, env.descriptor, [], env.includeDepth) : null });
516
+ return envelope(collectionEnvelope(Array.isArray(collection) ? collection : [], flat));
406
517
  }
518
+ case "get": return {
519
+ kind: "bare",
520
+ envelope: resourceEnvelope(await accessor.get(requireId(args), query), flat)
521
+ };
407
522
  case "create": {
408
523
  const input = writeInput(args, entry.input.write);
409
524
  const created = await accessor.create(input);
410
- return structured(isObject(created) ? flattenResource(created, env.descriptor, [], env.includeDepth) : {
411
- id: String(input["id"] ?? ""),
412
- type: op.type
413
- });
525
+ return {
526
+ kind: "bare",
527
+ envelope: resourceEnvelope(isObject(created) ? created : {
528
+ id: String(input["id"] ?? ""),
529
+ type: op.type
530
+ }, flat)
531
+ };
414
532
  }
415
533
  case "update": {
416
534
  const id = requireId(args);
417
535
  const updated = await accessor.id(id).update(writeInput(args, entry.input.write));
418
- return structured(isObject(updated) ? flattenResource(updated, env.descriptor, [], env.includeDepth) : {
419
- id,
420
- type: op.type
421
- });
422
- }
423
- case "delete": {
424
- const id = requireId(args);
425
- await accessor.id(id).delete();
426
- return { content: [text(`Deleted ${op.type} ${id}.`)] };
536
+ return {
537
+ kind: "bare",
538
+ envelope: resourceEnvelope(isObject(updated) ? updated : {
539
+ id,
540
+ type: op.type
541
+ }, flat)
542
+ };
427
543
  }
428
- case "action": return runAction(entry, args, accessor, env);
544
+ case "delete":
545
+ await accessor.id(requireId(args)).delete();
546
+ return {
547
+ kind: "bare",
548
+ envelope: { data: null }
549
+ };
550
+ case "action": return runAction(entry, args, accessor, env, flat);
429
551
  }
430
552
  }
431
- async function runAction(entry, args, accessor, env) {
553
+ async function runAction(entry, args, accessor, env, flat) {
432
554
  const { op } = entry;
433
555
  const action = op.actionDescriptor;
434
556
  const call = (action.scope === "resource" ? accessor.id(requireId(args)).actions : accessor.actions)[entry.actionKey];
@@ -441,22 +563,36 @@ async function runAction(entry, args, accessor, env) {
441
563
  if (plan.kind === "body" && plan.required && body === void 0) throw new ArgumentError("body is required");
442
564
  result = await call(body, options);
443
565
  }
444
- if (action.location !== void 0 && (0, _haddowg_json_api_client.isActionLocation)(result)) return structured({ ...result });
566
+ if (action.location !== void 0 && (0, _haddowg_json_api_client.isActionLocation)(result)) return {
567
+ kind: "envelope",
568
+ envelope: { data: { ...result } },
569
+ location: true
570
+ };
571
+ const content = (value) => ({
572
+ kind: "content",
573
+ result: { content: [text(value)] }
574
+ });
445
575
  switch (entry.result) {
446
- case "collection": return structured(flattenCollection(Array.isArray(result) ? result : [], env.descriptor, env.includeDepth));
576
+ case "collection": return envelope(collectionEnvelope(Array.isArray(result) ? result : [], flat));
447
577
  case "resource":
448
578
  case "loose":
449
- if (Array.isArray(result)) return structured(flattenCollection(result, env.descriptor, env.includeDepth));
450
- return isObject(result) ? structured(flattenResource(result, env.descriptor, [], env.includeDepth)) : { content: [text("The action returned no resource.")] };
451
- case "meta": return structured(isObject(result) ? result : {});
579
+ if (Array.isArray(result)) return envelope(collectionEnvelope(result, flat));
580
+ return {
581
+ kind: "bare",
582
+ envelope: resourceEnvelope(isObject(result) ? result : null, flat)
583
+ };
584
+ case "meta": return envelope({ meta: isObject(result) ? result : {} });
452
585
  case "raw": {
453
586
  const mimeType = action.rawOutput?.[0]?.mediaType ?? "application/octet-stream";
454
- if (result === void 0) return { content: [text("Done.")] };
455
- if (typeof result === "string") return { content: [text(result)] };
456
- if (result instanceof ArrayBuffer || typeof Blob !== "undefined" && result instanceof Blob) return { content: [await binaryContent(result, `${env.baseUrl}${action.path}`, mimeType)] };
457
- return { content: [text(JSON.stringify(result))] };
587
+ if (result === void 0) return content("Done.");
588
+ if (typeof result === "string") return content(result);
589
+ if (result instanceof ArrayBuffer || typeof Blob !== "undefined" && result instanceof Blob) return {
590
+ kind: "content",
591
+ result: { content: [await binaryContent(result, `${env.baseUrl}${action.path}`, mimeType)] }
592
+ };
593
+ return content(JSON.stringify(result));
458
594
  }
459
- default: return { content: [text("Done.")] };
595
+ default: return content("Done.");
460
596
  }
461
597
  }
462
598
  /** The error a failed call carries, before the host's `mapError`. */
@@ -495,15 +631,18 @@ function errorResult(error) {
495
631
  //#endregion
496
632
  //#region src/model.ts
497
633
  /** The artefact's own format. A runtime refuses a format it doesn't know. */
498
- const MODEL_FORMAT = 3;
634
+ const MODEL_FORMAT = 4;
499
635
  /**
500
636
  * Every format this runtime reads. Format 1 has no `credentialSchemes`. Formats 1 and 2 have no
501
637
  * `includeDepth`, and store each operation's `scopes` and the `security` of its operation object.
638
+ * Formats 1 to 3 have no `resourceLinks`, and their output schemas describe the results before
639
+ * the envelope, which the runtime still returns for them.
502
640
  */
503
641
  const READABLE_FORMATS = [
504
642
  1,
505
643
  2,
506
- 3
644
+ 3,
645
+ 4
507
646
  ];
508
647
  /** The package that writes the artefact. */
509
648
  const MODEL_GENERATOR = "@haddowg/json-api-mcp";
@@ -517,14 +656,16 @@ var McpModelError = class extends Error {
517
656
  /** Check a parsed artefact before the runtime trusts it. */
518
657
  function assertModel(value) {
519
658
  if (!isObject(value) || value["generator"] !== "@haddowg/json-api-mcp") throw new McpModelError(`This isn't a model written by ${MODEL_GENERATOR}. Generate one with the json-api-mcp CLI.`);
520
- if (typeof value["format"] !== "number" || !READABLE_FORMATS.includes(value["format"])) throw new McpModelError(`The model is format ${String(value["format"])} and this runtime reads formats ${READABLE_FORMATS.slice(0, -1).join(", ")} and 3. Regenerate it with the same version of ${MODEL_GENERATOR} the server runs.`);
659
+ if (typeof value["format"] !== "number" || !READABLE_FORMATS.includes(value["format"])) throw new McpModelError(`The model is format ${String(value["format"])} and this runtime reads formats ${READABLE_FORMATS.slice(0, -1).join(", ")} and 4. Regenerate it with the same version of ${MODEL_GENERATOR} the server runs.`);
521
660
  const contract = value["contract"];
522
661
  if (typeof contract !== "number" || contract < 13 || contract > 18) throw new McpModelError(`The model was built from a document with generator contract ${String(contract)}, and this runtime reads contracts 13 to 18.`);
523
662
  if (!isObject(value["descriptor"]) || !Array.isArray(value["tools"])) throw new McpModelError("The model has no descriptor or tools; regenerate it.");
524
663
  const credentialSchemes = value["credentialSchemes"];
525
664
  if (value["format"] !== 1 && (!Array.isArray(credentialSchemes) || !credentialSchemes.every((s) => typeof s === "string"))) throw new McpModelError("The model has no credentialSchemes list; regenerate it.");
526
665
  const includeDepth = value["includeDepth"];
527
- if (value["format"] === 3 && includeDepth !== null && !(typeof includeDepth === "number" && Number.isInteger(includeDepth) && includeDepth >= 0)) throw new McpModelError("The model has no includeDepth; regenerate it.");
666
+ if (value["format"] >= 3 && includeDepth !== null && !(typeof includeDepth === "number" && Number.isInteger(includeDepth) && includeDepth >= 0)) throw new McpModelError("The model has no includeDepth; regenerate it.");
667
+ const resourceLinks = value["resourceLinks"];
668
+ if (value["format"] === 4 && !(isObject(resourceLinks) && Object.values(resourceLinks).every((names) => Array.isArray(names) && names.every((name) => typeof name === "string")))) throw new McpModelError("The model has no resourceLinks; regenerate it.");
528
669
  return value;
529
670
  }
530
671
  /**
@@ -638,6 +779,8 @@ function createJsonApiMcp(options) {
638
779
  const defaultBaseUrl = options.baseUrl ?? model.baseUrl;
639
780
  const credentialSchemes = resolveCredentialSchemes(model, options.credentialSchemes);
640
781
  const includeDepth = model.includeDepth ?? null;
782
+ const resourceLinks = model.resourceLinks ?? {};
783
+ const legacyResults = model.format < 4;
641
784
  async function forRequest(request) {
642
785
  const ctx = request.context;
643
786
  let entries = catalogue.entries;
@@ -677,7 +820,9 @@ function createJsonApiMcp(options) {
677
820
  transport: options.transport,
678
821
  headers: init.headers,
679
822
  signal: callOptions.signal,
680
- includeDepth
823
+ includeDepth,
824
+ resourceLinks,
825
+ legacyResults
681
826
  });
682
827
  } catch (error) {
683
828
  const toolError = toToolError(error);
package/dist/index.d.cts CHANGED
@@ -401,7 +401,7 @@ type ResultShape = 'collection' | 'resource' | 'item' | 'deleted' | 'meta' | 'lo
401
401
  //#endregion
402
402
  //#region src/model.d.ts
403
403
  /** The artefact's own format. A runtime refuses a format it doesn't know. */
404
- declare const MODEL_FORMAT = 3;
404
+ declare const MODEL_FORMAT = 4;
405
405
  /** The package that writes the artefact. */
406
406
  declare const MODEL_GENERATOR = "@haddowg/json-api-mcp";
407
407
  /** One operation, as hooks see it, without the descriptor entries the runtime adds back. */
@@ -448,7 +448,7 @@ interface McpModelTool {
448
448
  }
449
449
  /** The generated artefact. */
450
450
  interface McpModel {
451
- format: 1 | 2 | typeof MODEL_FORMAT;
451
+ format: 1 | 2 | 3 | typeof MODEL_FORMAT;
452
452
  generator: typeof MODEL_GENERATOR;
453
453
  /** The generator contract the source document declared. */
454
454
  contract: number;
@@ -474,6 +474,11 @@ interface McpModel {
474
474
  * declares. Formats 1 and 2 don't carry it and set no cap.
475
475
  */
476
476
  includeDepth?: number | null;
477
+ /**
478
+ * Format 4: the links each type names, its declared links and action links, for the types that
479
+ * name any. A flattened resource carries these under `links`.
480
+ */
481
+ resourceLinks?: Record<string, string[]>;
477
482
  /** The json-api-ts descriptor the client calls through. */
478
483
  descriptor: ApiDescriptor;
479
484
  tools: McpModelTool[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/openapi.ts","../src/contract.ts","../src/types.ts","../src/mcp.ts","../src/portable.ts","../src/inputs.ts","../src/catalogue.ts","../src/model.ts","../src/names.ts","../src/safety.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/openapi.ts","../src/contract.ts","../src/types.ts","../src/mcp.ts","../src/portable.ts","../src/inputs.ts","../src/catalogue.ts","../src/model.ts","../src/names.ts","../src/safety.ts"],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -401,7 +401,7 @@ type ResultShape = 'collection' | 'resource' | 'item' | 'deleted' | 'meta' | 'lo
401
401
  //#endregion
402
402
  //#region src/model.d.ts
403
403
  /** The artefact's own format. A runtime refuses a format it doesn't know. */
404
- declare const MODEL_FORMAT = 3;
404
+ declare const MODEL_FORMAT = 4;
405
405
  /** The package that writes the artefact. */
406
406
  declare const MODEL_GENERATOR = "@haddowg/json-api-mcp";
407
407
  /** One operation, as hooks see it, without the descriptor entries the runtime adds back. */
@@ -448,7 +448,7 @@ interface McpModelTool {
448
448
  }
449
449
  /** The generated artefact. */
450
450
  interface McpModel {
451
- format: 1 | 2 | typeof MODEL_FORMAT;
451
+ format: 1 | 2 | 3 | typeof MODEL_FORMAT;
452
452
  generator: typeof MODEL_GENERATOR;
453
453
  /** The generator contract the source document declared. */
454
454
  contract: number;
@@ -474,6 +474,11 @@ interface McpModel {
474
474
  * declares. Formats 1 and 2 don't carry it and set no cap.
475
475
  */
476
476
  includeDepth?: number | null;
477
+ /**
478
+ * Format 4: the links each type names, its declared links and action links, for the types that
479
+ * name any. A flattened resource carries these under `links`.
480
+ */
481
+ resourceLinks?: Record<string, string[]>;
477
482
  /** The json-api-ts descriptor the client calls through. */
478
483
  descriptor: ApiDescriptor;
479
484
  tools: McpModelTool[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/openapi.ts","../src/contract.ts","../src/types.ts","../src/mcp.ts","../src/portable.ts","../src/inputs.ts","../src/catalogue.ts","../src/model.ts","../src/names.ts","../src/safety.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/openapi.ts","../src/contract.ts","../src/types.ts","../src/mcp.ts","../src/portable.ts","../src/inputs.ts","../src/catalogue.ts","../src/model.ts","../src/names.ts","../src/safety.ts"],"mappings":";;;;;;AAMA;;KAAY,UAAA;EAAA,CAAgB,GAAW;AAAA;AAGvC;AAAA,KAAY,mBAAA,GAAsB,QAAQ,CAAC,MAAA;AAAA,UAE1B,eAAA;EACf,IAAA;EACA,EAAA;EACA,WAAA;EACA,QAAA;EACA,MAAA,GAAS,UAAU;EAAA,CAClB,GAAA;AAAA;AAAA,UAGc,eAAA;EACf,MAAA,GAAS,UAAU;EAAA,CAClB,GAAA;AAAA;AAAA,UAGc,iBAAA;EACf,WAAA;EACA,QAAA;EACA,OAAA,GAAU,MAAM,SAAS,eAAA;EAAA,CACxB,GAAA;AAAA;AAAA,UAGc,cAAA;EACf,WAAA;EACA,OAAA,GAAU,MAAM,SAAS,eAAA;EAAA,CACxB,GAAA;AAAA;AAAA,UAGc,eAAA;EACf,WAAA;EACA,OAAA;EACA,WAAA;EACA,UAAA,IAAc,eAAA;IAAoB,IAAA;EAAA;EAClC,WAAA,GAAc,iBAAA;IAAsB,IAAA;EAAA;EACpC,SAAA,GAAY,MAAA,SAAe,cAAA;IAAmB,IAAA;EAAA;EAC9C,QAAA,GAAW,mBAAA;EAAA,CACV,GAAA;AAAA;AAAA,KAGS,UAAA;AAAA,KAIA,cAAA,GAAiB,OAAA,CAAQ,MAAA,CAAO,UAAA,EAAY,eAAA;EACtD,UAAA,IAAc,eAAA;IAAoB,IAAA;EAAA;EAAA,CACjC,GAAA;AAAA;AAAA,UAGc,eAAA;EACf,OAAA;EACA,IAAA;IAAS,aAAA;MAAkB,QAAA;MAAA,CAAqB,GAAA;IAAA;IAAA,CAA0B,GAAA;EAAA;EAC1E,OAAA;IAAY,GAAA;IAAA,CAAc,GAAA;EAAA;EAC1B,KAAA,GAAQ,MAAA,SAAe,cAAA;EACvB,UAAA;IACE,OAAA,GAAU,MAAA,SAAe,UAAA;IACzB,UAAA,GAAa,MAAA,SAAe,eAAA;IAC5B,aAAA,GAAgB,MAAA,SAAe,iBAAA;IAC/B,SAAA,GAAY,MAAA,SAAe,cAAA;IAAA,CAC1B,GAAA;EAAA;EAEH,QAAA,GAAW,mBAAA;EAAA,CACV,GAAA;AAAA;;;;cCpEU,gBAAA;ADGb;AAAA,cCAa,gBAAA;;;ADA0B;AAGvC;;iBCIgB,cAAA,CAAe,GAAoB,EAAf,eAAe;;;;KCCvC,kBAAA;EACV,KAAA;EACA,YAAA;EACA,eAAA;EACA,cAAA;EACA,aAAA;AAAA;;KAIU,OAAA;EACV,IAAA;EACA,KAAA;EACA,WAAA;EACA,WAAA;IAAe,IAAA;IAAA,CAAiB,GAAA;EAAA;EAChC,YAAA;IAAiB,IAAA;IAAA,CAAiB,GAAA;EAAA;EAClC,WAAA,GAAc,kBAAkB;EAChC,KAAA;IAAA,CAAW,GAAA;EAAA;AAAA;;KAID,UAAA;EACN,IAAA;EAAc,IAAA;AAAA;EACd,IAAA;EAAe,IAAA;EAAc,QAAA;AAAA;EAC7B,IAAA;EAAkB,QAAA;IAAY,GAAA;IAAa,QAAA;IAAmB,IAAA;EAAA;AAAA;;KAGxD,iBAAA;EACV,OAAA,EAAS,UAAU;EACnB,iBAAA;IAAA,CAAuB,GAAA;EAAA;EACvB,OAAA;AAAA;;KAIU,gBAAA;;;;AFZE;UEyBG,YAAA;EACf,WAAA;EACA,QAAA;EACA,IAAA,EAAM,gBAAA;EFpBQ;EEsBd,IAAA;EFrBY;EEuBZ,QAAA;EFtB8B;EEwB9B,MAAA;EF9BA;EEgCA,MAAA;EF9BA;EEgCA,IAAA;EF/Bc;EEiCd,QAAA,EAAU,kBAAA;EFhCV;EEkCA,kBAAA,GAAqB,kBAAA;EFlCe;EEoCpC,gBAAA,GAAmB,gBAAA;EFnCP;EEqCZ,SAAA,EAAW,eAAA;EFrCmC;;;;EE0C9C,QAAA,WAAmB,mBAAA;EFxCP;AAGd;;;EE0CE,MAAA;AAAA;AFtCF;AAAA,KE0CY,aAAA;;UAGK,cAAA;EF7CuC;EE+CtD,OAAA;EF/C2B;EEiD3B,OAAA,GAAU,WAAW;AAAA;;UAIN,kBAAA;EACf,MAAA;EACA,IAAA;EACA,KAAA;EACA,MAAA;EACA,MAAA;IAAW,OAAA;IAAkB,SAAA;IAAoB,MAAA;EAAA;EFrDlC;EEuDf,IAAA;AAAA;;UAIe,YAAA;EFrDY;EEuD3B,MAAA;EACA,OAAA;EACA,MAAA,EAAQ,kBAAkB;EFvDO;EEyDjC,KAAA;AAAA;;UAIe,eAAA;EFzDe;EE2D9B,gBAAA,IAAoB,EAAA,EAAI,YAAA,EAAc,GAAA,EAAK,GAAA,eAAkB,OAAA;EFtE7D;EEwEA,YAAA,IAAgB,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,YAAA,EAAc,GAAA,EAAK,GAAA,KAAQ,OAAA,GAAU,OAAA,CAAQ,OAAA;EFvEvE;EEyET,WAAA,IAAe,EAAA,EAAI,YAAA,EAAc,GAAA,EAAK,GAAA,KAAQ,cAAA,GAAiB,OAAA,CAAQ,cAAA;EFzEvB;EE2EhD,QAAA,IACE,KAAA,EAAO,YAAA,EACP,EAAA,EAAI,YAAA,EACJ,GAAA,EAAK,GAAA,KACF,YAAA,GAAe,OAAA,CAAQ,YAAA;EF9E5B;;;;EEmFA,YAAA,IAAgB,OAAA,qBAA4B,QAAA;EFlFrB;;;;EEuFvB,YAAA,IACE,GAAA,EAAK,GAAA,KAEH,QAAA,CAAS,MAAA,SAAe,aAAA,KACxB,WAAA,SAAoB,aAAA,IACpB,OAAA,CAAQ,QAAA,CAAS,MAAA,SAAe,aAAA,KAAkB,WAAA,SAAoB,aAAA;AAAA;;UAI3D,iBAAA;EF5Fb;;;;EEiGF,KAAA;EFhG6B;EEkG7B,OAAA;EF/FA;EEiGA,SAAA,GAAY,gBAAA;EFhGX;;AAAW;;;EEsGZ,iBAAA;EACA,KAAA,GAAQ,eAAA,CAAgB,GAAA;AAAA;;UAIT,UAAA;ED/KY;AAG7B;;;;ECkLE,aAAA;ED3Kc;EC6Kd,OAAA,EAAS,GAAG;AAAA;;UAIG,cAAA;EACf,MAAA,GAAS,WAAW;AAAA;;UAIL,cAAA;EAAA,SACN,KAAA,WAAgB,OAAA;;EAEzB,QAAA,CAAS,IAAA,UAAc,IAAA,WAAe,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,iBAAA;AAAA;;UAI1D,gBAAA;EACf,WAAA;EACA,MAAM;AAAA;AAzLO;AAAA,UA6LE,UAAA;EAzLE;EAAA,SA2LR,UAAA,WAAqB,YAAA;EArLE;EAAA,SAuLvB,KAAA,WAAgB,OAAA;EA3LzB;EAAA,SA6LS,OAAA,WAAkB,gBAAA;EA3L3B;EAAA,SA6LS,QAAA;EA7LuB;EAAA,SA+LvB,MAAA;IAAA,SAAmB,KAAA;IAAA,SAAwB,IAAA;EAAA;EA7LtC;EAAA,SA+LL,iBAAA;EA9LE;EAgMX,UAAA,CAAW,OAAA,EAAS,UAAA,CAAW,GAAA,IAAO,OAAA,CAAQ,cAAA;AAAA;;;;cCxMnC,iBAAA,GACX,OAAA,qBACA,QAA2B;;;;AHlBU;AAGvC;;;iBGyBgB,iBAAA,CACd,QAAA,WAAmB,mBAAmB,IACtC,OAAA,qBACA,OAAA,IAAU,OAAA,qBAA4B,QAAA,iCACtC,iBAAA;AH7B+C;AAEjD;;;AAFiD,iBG8GjC,gBAAA,gBAAgC,OAAA,EAAS,iBAAA,CAAkB,GAAA,IAAO,UAAA,CAAW,GAAA;;;AH9G5C;AAAA,cIKpC,gBAAA,EAAkB,WAAW;AAAA,KAe9B,OAAA;EACN,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;EAAgB,KAAA,EAAO,QAAA,CAAS,MAAA,SAAe,eAAA;AAAA;EAC/C,IAAA;EAAe,KAAA,EAAO,OAAA;AAAA;AAAA,UAEX,eAAA;EACf,OAAA,EAAS,OAAO;EJhBc;EIkB9B,aAAA;AAAA;;;;UCmBe,SAAA;EACf,MAAA,GAAS,OAAO;EAChB,IAAA;EACA,OAAA;EL7CA;;;;EKkDA,YAAA;EACA,MAAA;EL9Ce;EKgDf,OAAA;EACA,WAAA;EACA,eAAA;ELjDA;EKmDA,SAAA;ELlDC;;AAAW;AAGd;EKoDE,YAAA;AAAA;;UAIe,UAAA;EACf,QAAA;IAAa,WAAA;IAA6B,KAAA;IAA0B,WAAA;EAAA;EACpE,QAAA,EAAU,eAAe;AAAA;ALnD3B;AAAA,UKuDiB,SAAA;EACf,MAAA,EAAQ,QAAA,CAAS,MAAA,SAAe,UAAA;ELtDhB;EKwDhB,QAAA;ELxDA;EK0DA,SAAA;AAAA;;KAIU,cAAA;EACN,IAAA;AAAA;EACA,IAAA;EAAc,KAAA,EAAO,SAAA;AAAA;EAErB,IAAA;EACA,OAAA,EAAS,OAAO;EAChB,QAAA,WLzDO;EK2DP,SAAA;EACA,SAAA;AAAA;;;;KCnEM,WAAA;;;;cCzBC,YAAA;APJoC;AAAA,cOepC,eAAA;;UAGI,iBAAA;EACf,WAAA;EACA,QAAA;EACA,IAAA,EAAM,gBAAA;EACN,IAAA;EACA,QAAA;EACA,MAAA;EPjBS;EOmBT,SAAA;EACA,MAAA;EACA,IAAA;EPjBe;;;;;;EOwBf,SAAA,EAAW,eAAA;EPtBC;AAAA;AAGd;;EOwBE,QAAA,YAAoB,mBAAA;EPrBJ;;;;EO0BhB,MAAA;AAAA;;UAIe,YAAA;EACf,KAAA,GAAQ,SAAA;EACR,KAAA,GAAQ,SAAA;EACR,MAAA,GAAS,cAAA;AAAA;AAAA,UAGM,YAAA;EACf,SAAA,EAAW,iBAAA;EACX,IAAA,EAAM,OAAA;EACN,IAAA,EAAM,YAAA;EACN,MAAA,EAAQ,WAAA;AAAA;;UAIO,QAAA;EACf,MAAA,qBAA2B,YAAA;EAC3B,SAAA,SAAkB,eAAA;;EAElB,QAAA;EPjCc;EOmCd,MAAA;IAAU,KAAA;IAAe,IAAA;EAAA;EPjCK;EOmC9B,OAAA;EPxCA;;;;EO6CA,iBAAA;EP1CA;;;;EO+CA,QAAA,YAAoB,mBAAA;EP9CO;;;;EOmD3B,YAAA;EPjDY;AAAA;AAGd;;EOmDE,aAAA,GAAgB,MAAA;EPnDI;EOqDpB,UAAA,EAAY,aAAA;EACZ,KAAA,EAAO,YAAA;EACP,OAAA,EAAS,gBAAA;AAAA;;cAIE,aAAA,SAAsB,KAAK;cAC1B,OAAA;AAAA;;iBAOE,WAAA,CAAY,KAAA,YAAiB,QAAQ;;;AP9GrD;AAAA,cQDa,iBAAA,EAAiB,MAA0B;;UAGvC,iBAAA;EACf,IAAA,EAAM,gBAAA;EACN,IAAA;EACA,QAAA;EACA,MAAA;ERHgC;EQKhC,MAAA,GAAS,UAAU;AAAA;;;;;iBAeL,gBAAA,CAAiB,WAAA,WAAsB,iBAAiB;;;;;;iBAgCxD,QAAA,CAAS,MAAA,EAAQ,iBAAA,EAAmB,UAAA,EAAY,aAAa;AR5C/D;AAAA,cQ8DD,aAAA,SAAsB,KAAK;EAAA,SAC7B,QAAA;cAEG,QAAA;AAAA;;;;cC/ED,gBAAA;ATGb;AAAA,USAiB,YAAA;EACf,QAAA;EACA,WAAA;EACA,UAAA;AAAA;;;;ATA+C;iBSOjC,gBAAA,CAAiB,SAAA,EAAW,eAAA,GAAkB,YAAY"}