@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/README.md +10 -0
- package/dist/cli.d.mts +1 -1
- package/dist/cli.mjs +1 -1
- package/dist/{generate-CiLuqQJ0.mjs → generate-BcqHRSxB.mjs} +166 -43
- package/dist/generate-BcqHRSxB.mjs.map +1 -0
- package/dist/{generate-CuWnYJUB.d.mts → generate-D0kx-DHv.d.mts} +8 -3
- package/dist/{generate-CuWnYJUB.d.mts.map → generate-D0kx-DHv.d.mts.map} +1 -1
- package/dist/generate.d.mts +1 -1
- package/dist/generate.mjs +1 -1
- package/dist/index.cjs +196 -51
- package/dist/index.d.cts +7 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +7 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +196 -51
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -1
- package/dist/generate-CiLuqQJ0.mjs.map +0 -1
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,
|
|
101
|
-
* and id for a polymorphic relation), or the flattened related resource when it was
|
|
102
|
-
*
|
|
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
|
-
* `
|
|
137
|
+
* `includeDepth` relationships from the root, is cut back to its id.
|
|
115
138
|
*/
|
|
116
|
-
function flattenResource(value,
|
|
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,
|
|
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
|
-
/**
|
|
152
|
-
function
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
379
|
-
|
|
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
|
|
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
|
|
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
|
|
411
|
-
|
|
412
|
-
|
|
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
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
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 "
|
|
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
|
|
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
|
|
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
|
|
450
|
-
return
|
|
451
|
-
|
|
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
|
|
455
|
-
if (typeof result === "string") return
|
|
456
|
-
if (result instanceof ArrayBuffer || typeof Blob !== "undefined" && result instanceof Blob) return {
|
|
457
|
-
|
|
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
|
|
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 =
|
|
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
|
|
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"]
|
|
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 =
|
|
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[];
|
package/dist/index.d.cts.map
CHANGED
|
@@ -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 =
|
|
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[];
|
package/dist/index.d.mts.map
CHANGED
|
@@ -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":"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"}
|