@aotter/mantle-runtime 0.1.0-alpha.8 → 0.1.2-alpha.1
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 +74 -4
- package/dist/MantleRuntime.js +12 -4
- package/dist/MantleRuntime.js.map +1 -1
- package/dist/domain/model/EntryRow.d.ts +10 -1
- package/dist/domain/model/EntryRow.d.ts.map +1 -1
- package/dist/domain/model/EntryRow.js +19 -0
- package/dist/domain/model/EntryRow.js.map +1 -1
- package/dist/domain/port/EntryReader.d.ts +34 -0
- package/dist/domain/port/EntryReader.d.ts.map +1 -1
- package/dist/domain/port/EntryRepository.d.ts +5 -0
- package/dist/domain/port/EntryRepository.d.ts.map +1 -1
- package/dist/domain/port/index.d.ts +1 -1
- package/dist/domain/port/index.d.ts.map +1 -1
- package/dist/domain/port/index.js.map +1 -1
- package/dist/domain/service/CallableCapabilityProjector.d.ts +28 -0
- package/dist/domain/service/CallableCapabilityProjector.d.ts.map +1 -0
- package/dist/domain/service/CallableCapabilityProjector.js +67 -0
- package/dist/domain/service/CallableCapabilityProjector.js.map +1 -0
- package/dist/domain/service/EntryMutationDiagnostics.d.ts.map +1 -1
- package/dist/domain/service/EntryMutationDiagnostics.js +11 -1
- package/dist/domain/service/EntryMutationDiagnostics.js.map +1 -1
- package/dist/domain/service/PathMatcher.d.ts +7 -0
- package/dist/domain/service/PathMatcher.d.ts.map +1 -1
- package/dist/domain/service/PathMatcher.js +56 -0
- package/dist/domain/service/PathMatcher.js.map +1 -1
- package/dist/domain/service/RuntimePlanCompiler.d.ts +7 -2
- package/dist/domain/service/RuntimePlanCompiler.d.ts.map +1 -1
- package/dist/domain/service/RuntimePlanCompiler.js +1 -0
- package/dist/domain/service/RuntimePlanCompiler.js.map +1 -1
- package/dist/domain/service/index.d.ts +1 -0
- package/dist/domain/service/index.d.ts.map +1 -1
- package/dist/domain/service/index.js +1 -0
- package/dist/domain/service/index.js.map +1 -1
- package/dist/domain/service/io/JoinedEntryReader.d.ts.map +1 -1
- package/dist/domain/service/io/JoinedEntryReader.js +2 -3
- package/dist/domain/service/io/JoinedEntryReader.js.map +1 -1
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/boot/canonicalMigrations.d.ts +4 -2
- package/dist/infrastructure/boot/canonicalMigrations.d.ts.map +1 -1
- package/dist/infrastructure/boot/canonicalMigrations.js +9 -2
- package/dist/infrastructure/boot/canonicalMigrations.js.map +1 -1
- package/dist/infrastructure/http/createMantleRequestHandler.d.ts +3 -0
- package/dist/infrastructure/http/createMantleRequestHandler.d.ts.map +1 -1
- package/dist/infrastructure/http/createMantleRequestHandler.js +36 -15
- package/dist/infrastructure/http/createMantleRequestHandler.js.map +1 -1
- package/dist/infrastructure/http/readJsonBody.d.ts +8 -0
- package/dist/infrastructure/http/readJsonBody.d.ts.map +1 -0
- package/dist/infrastructure/http/readJsonBody.js +36 -0
- package/dist/infrastructure/http/readJsonBody.js.map +1 -0
- package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts +22 -17
- package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts.map +1 -1
- package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js +74 -69
- package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js.map +1 -1
- package/dist/infrastructure/mcp/McpToolCatalog.d.ts +11 -9
- package/dist/infrastructure/mcp/McpToolCatalog.d.ts.map +1 -1
- package/dist/infrastructure/mcp/McpToolCatalog.js +62 -72
- package/dist/infrastructure/mcp/McpToolCatalog.js.map +1 -1
- package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts +3 -1
- package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts.map +1 -1
- package/dist/infrastructure/persistence/DatabaseEntryRepository.js +141 -20
- package/dist/infrastructure/persistence/DatabaseEntryRepository.js.map +1 -1
- package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.d.ts +2 -0
- package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.d.ts.map +1 -1
- package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js +5 -1
- package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js.map +1 -1
- package/dist/infrastructure/persistence/Pagination.d.ts +6 -0
- package/dist/infrastructure/persistence/Pagination.d.ts.map +1 -1
- package/dist/infrastructure/persistence/Pagination.js +25 -0
- package/dist/infrastructure/persistence/Pagination.js.map +1 -1
- package/dist/infrastructure/storage/SqliteMantleStorageAdapter.d.ts +11 -1
- package/dist/infrastructure/storage/SqliteMantleStorageAdapter.d.ts.map +1 -1
- package/dist/infrastructure/storage/SqliteMantleStorageAdapter.js +7 -3
- package/dist/infrastructure/storage/SqliteMantleStorageAdapter.js.map +1 -1
- package/dist/infrastructure/testing/HttpBenchmarkHarness.d.ts +26 -1
- package/dist/infrastructure/testing/HttpBenchmarkHarness.d.ts.map +1 -1
- package/dist/infrastructure/testing/HttpBenchmarkHarness.js +27 -12
- package/dist/infrastructure/testing/HttpBenchmarkHarness.js.map +1 -1
- package/dist/infrastructure/testing/StorageConformance.d.ts +32 -0
- package/dist/infrastructure/testing/StorageConformance.d.ts.map +1 -0
- package/dist/infrastructure/testing/StorageConformance.js +305 -0
- package/dist/infrastructure/testing/StorageConformance.js.map +1 -0
- package/dist/testing-storage.d.ts +3 -0
- package/dist/testing-storage.d.ts.map +1 -0
- package/dist/testing-storage.js +3 -0
- package/dist/testing-storage.js.map +1 -0
- package/dist/usecase/content/ListEntriesUseCase.d.ts +1 -1
- package/dist/usecase/content/ListEntriesUseCase.d.ts.map +1 -1
- package/dist/usecase/content/ListEntriesUseCase.js +18 -2
- package/dist/usecase/content/ListEntriesUseCase.js.map +1 -1
- package/dist/usecase/dto/content/index.d.ts +2 -0
- package/dist/usecase/dto/content/index.d.ts.map +1 -1
- package/dist/usecase/media/DeleteMediaAssetUseCase.d.ts +3 -3
- package/dist/usecase/media/DeleteMediaAssetUseCase.d.ts.map +1 -1
- package/dist/usecase/media/DeleteMediaAssetUseCase.js +35 -19
- package/dist/usecase/media/DeleteMediaAssetUseCase.js.map +1 -1
- package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts +8 -2
- package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts.map +1 -1
- package/dist/usecase/procedure/InvokeBuiltinUseCase.js +96 -14
- package/dist/usecase/procedure/InvokeBuiltinUseCase.js.map +1 -1
- package/dist/usecase/procedure/InvokeProcedureUseCase.js +2 -2
- package/dist/usecase/procedure/InvokeProcedureUseCase.js.map +1 -1
- package/dist/usecase/site/UpdateSiteSettingsUseCase.d.ts.map +1 -1
- package/dist/usecase/site/UpdateSiteSettingsUseCase.js +8 -1
- package/dist/usecase/site/UpdateSiteSettingsUseCase.js.map +1 -1
- package/package.json +9 -5
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type Diagnostic, type MediaPurposePolicy, type SchemaManifest, type SiteIcon } from "@aotter/mantle-spec";
|
|
2
2
|
import type { HandlerContext } from "../../domain/model/HandlerContext.js";
|
|
3
|
-
import { ArchiveUseCase, CreateDraftUseCase, DeleteEntryUseCase, GetEntryUseCase,
|
|
3
|
+
import { ArchiveUseCase, CreateDraftUseCase, DeleteEntryUseCase, GetEntryUseCase, RequestPublishUseCase, UnpublishUseCase, UpdateDraftUseCase } from "../../usecase/content/index.js";
|
|
4
4
|
import { CommitMediaUploadUseCase, CreateMediaUploadUseCase } from "../../usecase/media/index.js";
|
|
5
5
|
import { ExecuteViewUseCase } from "../../usecase/view/index.js";
|
|
6
|
-
import {
|
|
6
|
+
import type { RuntimeCallableCapability } from "../../domain/service/CallableCapabilityProjector.js";
|
|
7
7
|
import { type McpToolSurface } from "./McpToolCatalog.js";
|
|
8
8
|
export declare const MCP_PROTOCOL_VERSION = "2025-11-25";
|
|
9
9
|
export interface McpServerInfo {
|
|
@@ -22,7 +22,6 @@ export interface McpServerInfo {
|
|
|
22
22
|
* assembly root assembles these alongside everything else).
|
|
23
23
|
*/
|
|
24
24
|
export interface McpUseCases {
|
|
25
|
-
readonly listEntries: ListEntriesUseCase;
|
|
26
25
|
readonly getEntry: GetEntryUseCase;
|
|
27
26
|
readonly createDraft: CreateDraftUseCase;
|
|
28
27
|
readonly updateDraft: UpdateDraftUseCase;
|
|
@@ -31,11 +30,22 @@ export interface McpUseCases {
|
|
|
31
30
|
readonly archive: ArchiveUseCase;
|
|
32
31
|
readonly deleteEntry: DeleteEntryUseCase;
|
|
33
32
|
readonly executeView?: Pick<ExecuteViewUseCase, "execute">;
|
|
34
|
-
/** Optional.
|
|
35
|
-
*
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
/** Optional. Trigger-backed callable capabilities route through the
|
|
34
|
+
* runtime's shared Trigger invocation chokepoint. */
|
|
35
|
+
readonly invokeTrigger?: {
|
|
36
|
+
execute(request: {
|
|
37
|
+
readonly trigger: string;
|
|
38
|
+
readonly input: unknown;
|
|
39
|
+
readonly ctx: HandlerContext;
|
|
40
|
+
readonly pathPrefix?: string;
|
|
41
|
+
}): Promise<{
|
|
42
|
+
readonly ok: true;
|
|
43
|
+
readonly data: unknown;
|
|
44
|
+
} | {
|
|
45
|
+
readonly ok: false;
|
|
46
|
+
readonly diagnostic: Diagnostic;
|
|
47
|
+
}>;
|
|
48
|
+
};
|
|
39
49
|
/** Optional. When set, `create_media_upload` and
|
|
40
50
|
* `commit_media_upload` appear in the catalog and route here.
|
|
41
51
|
* `purposes` is the declared taxonomy (#272 shape — name +
|
|
@@ -60,21 +70,16 @@ export declare class McpJsonRpcDispatcher {
|
|
|
60
70
|
* collection name. */
|
|
61
71
|
private readonly schemaBySegment;
|
|
62
72
|
private readonly readOnlyCollections;
|
|
63
|
-
private readonly
|
|
64
|
-
/** tool-name → Procedure manifest, for MCP triggers (#281). */
|
|
65
|
-
private readonly procedureByToolName;
|
|
73
|
+
private readonly capabilityByToolName;
|
|
66
74
|
constructor(useCases: McpUseCases, schemas: ReadonlyArray<SchemaManifest>, options?: {
|
|
67
75
|
readonly surface?: McpToolSurface;
|
|
68
|
-
readonly
|
|
69
|
-
/** Procedures exposed on this MCP surface via
|
|
70
|
-
* `Trigger.source.kind: "mcp"` (#281). Adapter pre-filters
|
|
71
|
-
* by surface; dispatcher trusts the slice. */
|
|
72
|
-
readonly procedures?: ReadonlyArray<ProcedureManifest>;
|
|
76
|
+
readonly capabilities?: readonly RuntimeCallableCapability[];
|
|
73
77
|
readonly serverInfo?: McpServerInfo;
|
|
74
78
|
});
|
|
75
79
|
dispatch(req: Request, ctx: HandlerContext): Promise<Response>;
|
|
76
80
|
private handleToolCall;
|
|
77
81
|
private dispatchToolByName;
|
|
82
|
+
private assertStaffRole;
|
|
78
83
|
private assertEntryMutable;
|
|
79
84
|
}
|
|
80
85
|
//# sourceMappingURL=McpJsonRpcDispatcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpJsonRpcDispatcher.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/mcp/McpJsonRpcDispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"McpJsonRpcDispatcher.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/mcp/McpJsonRpcDispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { DiagnosticError, redactForWire, runtimeDiagnostic, } from "@aotter/mantle-spec";
|
|
2
|
-
import {
|
|
3
|
-
import { CREATE_DRAFT_PREFIX, CREATE_RECORD_PREFIX, QUERY_VIEW_PREFIX, UPDATE_DRAFT_PREFIX, UPDATE_RECORD_PREFIX, buildMcpToolCatalog, extractCollectionSegment, } from "./McpToolCatalog.js";
|
|
1
|
+
import { DiagnosticError, meetsRole, mcpToolNameSegment, redactForWire, runtimeDiagnostic, resolveLifecycle, } from "@aotter/mantle-spec";
|
|
2
|
+
import { CREATE_DRAFT_PREFIX, CONTENT_LIFECYCLE_TOOLS, CREATE_RECORD_PREFIX, UPDATE_DRAFT_PREFIX, UPDATE_RECORD_PREFIX, buildMcpToolCatalog, extractCollectionSegment, } from "./McpToolCatalog.js";
|
|
4
3
|
import { jsonRpcError, jsonRpcOk, jsonRpcOkRaw, } from "./McpResponses.js";
|
|
5
4
|
import packageJson from "../../../package.json" with { type: "json" };
|
|
5
|
+
import { JsonBodyTooLargeError, readJsonBody } from "../http/readJsonBody.js";
|
|
6
6
|
export const MCP_PROTOCOL_VERSION = "2025-11-25";
|
|
7
7
|
export class McpJsonRpcDispatcher {
|
|
8
8
|
useCases;
|
|
@@ -17,9 +17,7 @@ export class McpJsonRpcDispatcher {
|
|
|
17
17
|
* collection name. */
|
|
18
18
|
schemaBySegment;
|
|
19
19
|
readOnlyCollections;
|
|
20
|
-
|
|
21
|
-
/** tool-name → Procedure manifest, for MCP triggers (#281). */
|
|
22
|
-
procedureByToolName;
|
|
20
|
+
capabilityByToolName;
|
|
23
21
|
constructor(useCases, schemas, options = {}) {
|
|
24
22
|
this.useCases = useCases;
|
|
25
23
|
this.schemas = schemas;
|
|
@@ -28,8 +26,7 @@ export class McpJsonRpcDispatcher {
|
|
|
28
26
|
surface: options.surface ?? "staff",
|
|
29
27
|
mediaEnabled: useCases.media !== undefined,
|
|
30
28
|
mediaPurposes: useCases.media?.purposes,
|
|
31
|
-
|
|
32
|
-
procedures: options.procedures,
|
|
29
|
+
capabilities: options.capabilities,
|
|
33
30
|
});
|
|
34
31
|
this.catalogWireJson = `{"tools":${JSON.stringify(this.catalog)}}`;
|
|
35
32
|
this.catalogToolNames = new Set(this.catalog.map((tool) => tool.name));
|
|
@@ -38,15 +35,9 @@ export class McpJsonRpcDispatcher {
|
|
|
38
35
|
for (const s of schemas)
|
|
39
36
|
map.set(mcpToolNameSegment(s.metadata.name), s.metadata.name);
|
|
40
37
|
this.schemaBySegment = map;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
this.viewBySegment = views;
|
|
45
|
-
const procs = new Map();
|
|
46
|
-
for (const p of options.procedures ?? []) {
|
|
47
|
-
procs.set(mcpToolNameSegment(p.metadata.name), p);
|
|
48
|
-
}
|
|
49
|
-
this.procedureByToolName = procs;
|
|
38
|
+
this.capabilityByToolName = new Map((options.capabilities ?? [])
|
|
39
|
+
.filter((item) => item.surface === (options.surface ?? "staff"))
|
|
40
|
+
.map((item) => [item.name, item]));
|
|
50
41
|
}
|
|
51
42
|
async dispatch(req, ctx) {
|
|
52
43
|
if (req.method !== "POST") {
|
|
@@ -54,9 +45,12 @@ export class McpJsonRpcDispatcher {
|
|
|
54
45
|
}
|
|
55
46
|
let body;
|
|
56
47
|
try {
|
|
57
|
-
body = (await req
|
|
48
|
+
body = (await readJsonBody(req));
|
|
58
49
|
}
|
|
59
|
-
catch {
|
|
50
|
+
catch (error) {
|
|
51
|
+
if (error instanceof JsonBodyTooLargeError) {
|
|
52
|
+
return new Response(error.message, { status: 413 });
|
|
53
|
+
}
|
|
60
54
|
return jsonRpcError(null, -32700, "parse error");
|
|
61
55
|
}
|
|
62
56
|
if (!body
|
|
@@ -123,17 +117,12 @@ export class McpJsonRpcDispatcher {
|
|
|
123
117
|
}
|
|
124
118
|
}
|
|
125
119
|
async dispatchToolByName(name, args, ctx) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
// collision check runs at boot so we don't have to disambiguate
|
|
130
|
-
// here.
|
|
131
|
-
const procedure = this.procedureByToolName.get(name);
|
|
132
|
-
if (procedure) {
|
|
133
|
-
if (!this.useCases.invokeProcedure)
|
|
120
|
+
const capability = this.capabilityByToolName.get(name);
|
|
121
|
+
if (capability?.kind === "procedure") {
|
|
122
|
+
if (!this.useCases.invokeTrigger)
|
|
134
123
|
return UNKNOWN_TOOL;
|
|
135
|
-
const result = await this.useCases.
|
|
136
|
-
|
|
124
|
+
const result = await this.useCases.invokeTrigger.execute({
|
|
125
|
+
trigger: capability.trigger,
|
|
137
126
|
input: args,
|
|
138
127
|
ctx,
|
|
139
128
|
pathPrefix: `MCP ${name}`,
|
|
@@ -142,20 +131,15 @@ export class McpJsonRpcDispatcher {
|
|
|
142
131
|
throw new DiagnosticError(result.diagnostic);
|
|
143
132
|
return result.data;
|
|
144
133
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
// resolve a staff View while staff MCP can list and invoke it.
|
|
148
|
-
const viewSegment = extractCollectionSegment(name, QUERY_VIEW_PREFIX);
|
|
149
|
-
if (viewSegment) {
|
|
150
|
-
const view = this.viewBySegment.get(viewSegment);
|
|
151
|
-
if (!view || !this.useCases.executeView)
|
|
134
|
+
if (capability?.kind === "view") {
|
|
135
|
+
if (!this.useCases.executeView)
|
|
152
136
|
return UNKNOWN_TOOL;
|
|
153
137
|
// Use the adapter-normalized caller so the executeView use case can
|
|
154
138
|
// evaluate `requires.auth.all`. Without
|
|
155
139
|
// this, every auth-gated public-surface View returned
|
|
156
140
|
// UNAUTHENTICATED for every caller including authenticated staff.
|
|
157
141
|
const result = await this.useCases.executeView.execute({
|
|
158
|
-
view,
|
|
142
|
+
view: capability.manifest,
|
|
159
143
|
options: {
|
|
160
144
|
params: stripViewReservedArgs(args),
|
|
161
145
|
page: typeof args["page"] === "number" ? args["page"] : undefined,
|
|
@@ -171,35 +155,10 @@ export class McpJsonRpcDispatcher {
|
|
|
171
155
|
if ((this.options.surface ?? "staff") === "public") {
|
|
172
156
|
return UNKNOWN_TOOL;
|
|
173
157
|
}
|
|
158
|
+
const minimumRole = genericStaffToolMinimumRole(name);
|
|
159
|
+
if (minimumRole)
|
|
160
|
+
this.assertStaffRole(name, ctx, minimumRole);
|
|
174
161
|
switch (name) {
|
|
175
|
-
case "list_entries": {
|
|
176
|
-
const collection = args["collection"];
|
|
177
|
-
if (typeof collection !== "string")
|
|
178
|
-
return MISSING_ARG;
|
|
179
|
-
// MCP exposes the cursored shape so agents can walk pages
|
|
180
|
-
// through `nextCursor`. App code reaches for `execute()`
|
|
181
|
-
// instead and gets a flat array.
|
|
182
|
-
return this.useCases.listEntries.executePage({
|
|
183
|
-
collection,
|
|
184
|
-
status: args["status"],
|
|
185
|
-
search: typeof args["search"] === "string" ? args["search"] : undefined,
|
|
186
|
-
sort: typeof args["sort"] === "string"
|
|
187
|
-
? {
|
|
188
|
-
field: args["sort"],
|
|
189
|
-
direction: args["direction"] === "asc" ? "asc" : "desc",
|
|
190
|
-
}
|
|
191
|
-
: undefined,
|
|
192
|
-
limit: typeof args["limit"] === "number" ? args["limit"] : undefined,
|
|
193
|
-
cursor: typeof args["cursor"] === "string" ? args["cursor"] : undefined,
|
|
194
|
-
cursorDirection: args["cursorDirection"] === "backward" ? "backward" : "forward",
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
case "get_entry": {
|
|
198
|
-
const id = args["id"];
|
|
199
|
-
if (typeof id !== "string")
|
|
200
|
-
return MISSING_ARG;
|
|
201
|
-
return this.useCases.getEntry.execute({ id });
|
|
202
|
-
}
|
|
203
162
|
case "request_publish": {
|
|
204
163
|
const id = args["id"];
|
|
205
164
|
if (typeof id !== "string")
|
|
@@ -321,9 +280,7 @@ export class McpJsonRpcDispatcher {
|
|
|
321
280
|
const expected = args["expected_version"];
|
|
322
281
|
if (typeof id !== "string" || typeof expected !== "number")
|
|
323
282
|
return MISSING_ARG;
|
|
324
|
-
|
|
325
|
-
// the collection on the chokepoint args because UpdateDraft
|
|
326
|
-
// looks it up from the existing row.
|
|
283
|
+
await this.assertEntryMutable(id, name, collection);
|
|
327
284
|
const data = stripReservedArgs(args);
|
|
328
285
|
return this.useCases.updateDraft.execute({
|
|
329
286
|
id,
|
|
@@ -337,8 +294,35 @@ export class McpJsonRpcDispatcher {
|
|
|
337
294
|
}
|
|
338
295
|
}
|
|
339
296
|
}
|
|
340
|
-
|
|
297
|
+
assertStaffRole(toolName, ctx, minimumRole) {
|
|
298
|
+
const role = ctx.staff?.role;
|
|
299
|
+
if (role && meetsRole(role, minimumRole))
|
|
300
|
+
return;
|
|
301
|
+
throw new DiagnosticError(runtimeDiagnostic({
|
|
302
|
+
code: "AUTH_DENIED",
|
|
303
|
+
severity: "error",
|
|
304
|
+
path: `MCP ${toolName}`,
|
|
305
|
+
expected: `${minimumRole} role or higher for the signed-in staff user`,
|
|
306
|
+
message: `Tool '${toolName}' requires the ${minimumRole} role.`,
|
|
307
|
+
}));
|
|
308
|
+
}
|
|
309
|
+
async assertEntryMutable(id, toolName, collection) {
|
|
341
310
|
const entry = await this.useCases.getEntry.execute({ id });
|
|
311
|
+
if (collection !== undefined && entry.collection !== collection) {
|
|
312
|
+
throw new DiagnosticError(runtimeDiagnostic({
|
|
313
|
+
code: "NOT_FOUND", severity: "error", path: `MCP ${toolName}`,
|
|
314
|
+
value: id, expected: `entry in '${collection}'`,
|
|
315
|
+
message: `No entry with id '${id}' in collection '${collection}'.`,
|
|
316
|
+
}));
|
|
317
|
+
}
|
|
318
|
+
const schema = this.schemas.find((s) => s.metadata.name === entry.collection);
|
|
319
|
+
if (CONTENT_LIFECYCLE_TOOLS.has(toolName) && (!schema || resolveLifecycle(schema) === "operational")) {
|
|
320
|
+
throw new DiagnosticError(runtimeDiagnostic({
|
|
321
|
+
code: "CONFLICT", severity: "error", path: `MCP ${toolName}`,
|
|
322
|
+
value: entry.collection, expected: "a content lifecycle",
|
|
323
|
+
message: `Tool '${toolName}' requires a content lifecycle; '${entry.collection}' does not support publishing transitions. Use its declared Procedures.`,
|
|
324
|
+
}));
|
|
325
|
+
}
|
|
342
326
|
if (!this.readOnlyCollections.has(entry.collection))
|
|
343
327
|
return;
|
|
344
328
|
throw new DiagnosticError(runtimeDiagnostic({
|
|
@@ -353,6 +337,27 @@ export class McpJsonRpcDispatcher {
|
|
|
353
337
|
}
|
|
354
338
|
const UNKNOWN_TOOL = Symbol("unknown-tool");
|
|
355
339
|
const MISSING_ARG = Symbol("missing-arg");
|
|
340
|
+
const EDITOR_GENERIC_TOOLS = new Set([
|
|
341
|
+
"request_publish",
|
|
342
|
+
"unpublish_entry",
|
|
343
|
+
"archive_entry",
|
|
344
|
+
"delete_entry",
|
|
345
|
+
"create_media_upload",
|
|
346
|
+
"commit_media_upload",
|
|
347
|
+
]);
|
|
348
|
+
function genericStaffToolMinimumRole(name) {
|
|
349
|
+
if (EDITOR_GENERIC_TOOLS.has(name))
|
|
350
|
+
return "editor";
|
|
351
|
+
if (extractCollectionSegment(name, CREATE_RECORD_PREFIX) ||
|
|
352
|
+
extractCollectionSegment(name, UPDATE_RECORD_PREFIX)) {
|
|
353
|
+
return "editor";
|
|
354
|
+
}
|
|
355
|
+
if (extractCollectionSegment(name, CREATE_DRAFT_PREFIX) ||
|
|
356
|
+
extractCollectionSegment(name, UPDATE_DRAFT_PREFIX)) {
|
|
357
|
+
return "contributor";
|
|
358
|
+
}
|
|
359
|
+
return null;
|
|
360
|
+
}
|
|
356
361
|
/**
|
|
357
362
|
* Strip the `id` + `expected_version` envelope keys before passing
|
|
358
363
|
* the rest to the chokepoint as `data`. Per-collection update tools
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpJsonRpcDispatcher.js","sourceRoot":"","sources":["../../../src/infrastructure/mcp/McpJsonRpcDispatcher.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"McpJsonRpcDispatcher.js","sourceRoot":"","sources":["../../../src/infrastructure/mcp/McpJsonRpcDispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { type MediaPurposePolicy, type
|
|
1
|
+
import { type MediaPurposePolicy, type SchemaManifest } from "@aotter/mantle-spec";
|
|
2
|
+
import type { RuntimeCallableCapability } from "../../domain/service/CallableCapabilityProjector.js";
|
|
2
3
|
/**
|
|
3
|
-
* MCP tool catalog. Mix of generic tools
|
|
4
|
-
* that take only an `id`) plus per-collection emitted authoring
|
|
4
|
+
* MCP tool catalog. Mix of generic lifecycle tools plus per-collection emitted authoring
|
|
5
5
|
* tools (`create_draft_*` / `update_draft_*` for authored content,
|
|
6
6
|
* `create_record_*` / `update_record_*` for operational records)
|
|
7
7
|
* with the Schema's properties inlined into the tool's `inputSchema`
|
|
@@ -29,8 +29,12 @@ import { type MediaPurposePolicy, type ProcedureManifest, type SchemaManifest, t
|
|
|
29
29
|
*/
|
|
30
30
|
export interface McpToolDefinition {
|
|
31
31
|
readonly name: string;
|
|
32
|
+
readonly title?: string;
|
|
32
33
|
readonly description: string;
|
|
33
34
|
readonly inputSchema: Record<string, unknown>;
|
|
35
|
+
readonly annotations?: {
|
|
36
|
+
readonly readOnlyHint?: boolean;
|
|
37
|
+
};
|
|
34
38
|
}
|
|
35
39
|
export declare const COMMIT_MEDIA_UPLOAD_TOOL: McpToolDefinition;
|
|
36
40
|
export declare const GENERIC_TOOLS: readonly McpToolDefinition[];
|
|
@@ -60,14 +64,12 @@ export interface BuildMcpToolCatalogOpts {
|
|
|
60
64
|
/** Staff surface exposes authoring / lifecycle tools. Public
|
|
61
65
|
* surface exposes only read-only View queries for v0.1. */
|
|
62
66
|
readonly surface?: McpToolSurface;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
* matching Procedures here. The catalog factory does NOT re-filter
|
|
67
|
-
* by surface — caller is authoritative. */
|
|
68
|
-
readonly procedures?: ReadonlyArray<ProcedureManifest>;
|
|
67
|
+
/** Sealed-plan callable projection. The same descriptors drive
|
|
68
|
+
* discovery and tools/call routing. */
|
|
69
|
+
readonly capabilities?: readonly RuntimeCallableCapability[];
|
|
69
70
|
}
|
|
70
71
|
export declare function buildMcpToolCatalog(schemas: ReadonlyArray<SchemaManifest>, opts?: BuildMcpToolCatalogOpts): readonly McpToolDefinition[];
|
|
72
|
+
export declare const CONTENT_LIFECYCLE_TOOLS: ReadonlySet<string>;
|
|
71
73
|
/** Re-export the naming util from `domain/service/` so existing
|
|
72
74
|
* consumers of `McpToolCatalog` (the dispatcher) keep their import
|
|
73
75
|
* surface stable. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpToolCatalog.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/mcp/McpToolCatalog.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"McpToolCatalog.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/mcp/McpToolCatalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAaL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAEV,yBAAyB,EAE1B,MAAM,qDAAqD,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrB,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;KACjC,CAAC;CACH;AAED,eAAO,MAAM,wBAAwB,EAAE,iBAiBtC,CAAC;AAqGF,eAAO,MAAM,aAAa,EAAE,SAAS,iBAAiB,EAqCrD,CAAC;AAEF,eAAO,MAAM,mBAAmB,kBAA0B,CAAC;AAC3D,eAAO,MAAM,mBAAmB,kBAA0B,CAAC;AAC3D,eAAO,MAAM,oBAAoB,mBAA2B,CAAC;AAC7D,eAAO,MAAM,oBAAoB,mBAA2B,CAAC;AAC7D,eAAO,MAAM,iBAAiB,gBAAwB,CAAC;AAEvD,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhD;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC;;uCAEmC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;sDAKkD;IAClD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACvD;gEAC4D;IAC5D,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;IAClC;4CACwC;IACxC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAC;CAC9D;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,EACtC,IAAI,GAAE,uBAA4B,GACjC,SAAS,iBAAiB,EAAE,CA2B9B;AAED,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAEtD,CAAC;AAqFH;;sBAEsB;AACtB;oEACoE;AACpE,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,IAAI,CAIf"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MANTLE_BIND_KEYWORD, MCP_CREATE_DRAFT_PREFIX, MCP_CREATE_RECORD_PREFIX, MCP_QUERY_VIEW_PREFIX, MCP_UPDATE_DRAFT_PREFIX, MCP_UPDATE_RECORD_PREFIX, mcpToolNameSegment, expandPolicyRequired, resolveLifecycle, resolveLocalizedText, } from "@aotter/mantle-spec";
|
|
1
|
+
import { MANTLE_BIND_KEYWORD, MCP_CREATE_DRAFT_PREFIX, MCP_CREATE_RECORD_PREFIX, MCP_QUERY_VIEW_PREFIX, MCP_UPDATE_DRAFT_PREFIX, MCP_UPDATE_RECORD_PREFIX, mcpToolNameSegment, expandPolicyRequired, resolveLifecycle, schemaSortableFields, resolveLocalizedText, } from "@aotter/mantle-spec";
|
|
2
2
|
export const COMMIT_MEDIA_UPLOAD_TOOL = {
|
|
3
3
|
name: "commit_media_upload",
|
|
4
4
|
description: "Commit a previously-PUT variant bundle. Verifies every variant landed at the storage backend (HEAD + bytes per declared mime) and writes the committed MediaAsset to the media_assets table. Returns the asset with its variants populated; write the returned MediaAsset.id into the relevant media asset id field via the authoring tools. Only registered when the runtime has a media storage adapter bound and a media.purposes taxonomy declared.",
|
|
@@ -95,33 +95,6 @@ function buildCreateMediaUploadTool(mediaPurposes = []) {
|
|
|
95
95
|
};
|
|
96
96
|
}
|
|
97
97
|
export const GENERIC_TOOLS = [
|
|
98
|
-
{
|
|
99
|
-
name: "list_entries",
|
|
100
|
-
description: "Search, sort, and page through entries in a collection. Result is { rows, previousCursor?, nextCursor? }; cursors are opaque.",
|
|
101
|
-
inputSchema: {
|
|
102
|
-
type: "object",
|
|
103
|
-
properties: {
|
|
104
|
-
collection: { type: "string" },
|
|
105
|
-
status: { type: "string", enum: ["draft", "published", "archived"] },
|
|
106
|
-
search: { type: "string", description: "Substring matched against entry id and the Schema's searchableFields." },
|
|
107
|
-
sort: { type: "string", description: "id, status, updatedAt, or a Schema-indexed required scalar field." },
|
|
108
|
-
direction: { type: "string", enum: ["asc", "desc"] },
|
|
109
|
-
limit: { type: "number" },
|
|
110
|
-
cursor: { type: "string", description: "Opaque continuation token from a previous list_entries response." },
|
|
111
|
-
cursorDirection: { type: "string", enum: ["forward", "backward"] },
|
|
112
|
-
},
|
|
113
|
-
required: ["collection"],
|
|
114
|
-
},
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
name: "get_entry",
|
|
118
|
-
description: "Fetch a single entry by id.",
|
|
119
|
-
inputSchema: {
|
|
120
|
-
type: "object",
|
|
121
|
-
properties: { id: { type: "string" } },
|
|
122
|
-
required: ["id"],
|
|
123
|
-
},
|
|
124
|
-
},
|
|
125
98
|
{
|
|
126
99
|
name: "request_publish",
|
|
127
100
|
description: "Publish a draft immediately. Not available for operational records.",
|
|
@@ -166,14 +139,22 @@ export const UPDATE_RECORD_PREFIX = MCP_UPDATE_RECORD_PREFIX;
|
|
|
166
139
|
export const QUERY_VIEW_PREFIX = MCP_QUERY_VIEW_PREFIX;
|
|
167
140
|
export function buildMcpToolCatalog(schemas, opts = {}) {
|
|
168
141
|
const surface = opts.surface ?? "staff";
|
|
169
|
-
const
|
|
142
|
+
const capabilities = (opts.capabilities ?? []).filter((item) => item.surface === surface);
|
|
143
|
+
const callableTools = capabilities.map(buildCallableTool);
|
|
170
144
|
if (surface === "public") {
|
|
171
|
-
return collapseToolSchemaAnnotations(
|
|
172
|
-
...(opts.views ?? []).map(buildQueryViewTool),
|
|
173
|
-
...procedureTools,
|
|
174
|
-
]);
|
|
145
|
+
return collapseToolSchemaAnnotations(callableTools);
|
|
175
146
|
}
|
|
176
|
-
const
|
|
147
|
+
const writable = schemas.filter((s) => s.spec.schema.readOnly !== true);
|
|
148
|
+
const content = writable.filter((s) => resolveLifecycle(s) !== "operational");
|
|
149
|
+
const out = GENERIC_TOOLS.flatMap((tool) => {
|
|
150
|
+
const targets = CONTENT_LIFECYCLE_TOOLS.has(tool.name) ? content
|
|
151
|
+
: tool.name === "delete_entry" ? writable : schemas;
|
|
152
|
+
if (targets.length === 0)
|
|
153
|
+
return [];
|
|
154
|
+
const summary = targets.map((s) => `${s.metadata.name} (${resolveLifecycle(s)}${s.spec.schema.readOnly ? "; Procedure-only writes" : ""}; search: ${["id", ...(s.spec.searchableFields ?? [])].join(", ")}; sort: ${["id", "status", "updatedAt", ...schemaSortableFields(s)].join(", ")})`).join("; ");
|
|
155
|
+
return [{ ...tool, description: `${tool.description} Collections: ${summary}. Prefer declared business Procedures and Views when available.`,
|
|
156
|
+
}];
|
|
157
|
+
});
|
|
177
158
|
if (opts.mediaEnabled)
|
|
178
159
|
out.push(...buildMediaTools(opts.mediaPurposes ?? []));
|
|
179
160
|
for (const s of schemas) {
|
|
@@ -182,10 +163,12 @@ export function buildMcpToolCatalog(schemas, opts = {}) {
|
|
|
182
163
|
out.push(buildCreateTool(s));
|
|
183
164
|
out.push(buildUpdateTool(s));
|
|
184
165
|
}
|
|
185
|
-
out.push(...
|
|
186
|
-
out.push(...procedureTools);
|
|
166
|
+
out.push(...callableTools);
|
|
187
167
|
return collapseToolSchemaAnnotations(out);
|
|
188
168
|
}
|
|
169
|
+
export const CONTENT_LIFECYCLE_TOOLS = new Set([
|
|
170
|
+
"request_publish", "unpublish_entry", "archive_entry",
|
|
171
|
+
]);
|
|
189
172
|
function collapseToolSchemaAnnotations(tools) {
|
|
190
173
|
return tools.map((tool) => ({
|
|
191
174
|
...tool,
|
|
@@ -242,6 +225,23 @@ function collapseSchemaAnnotations(schema) {
|
|
|
242
225
|
function isRecord(value) {
|
|
243
226
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
244
227
|
}
|
|
228
|
+
const OBSERVED_VERSION_DESCRIPTION = "Observed native entry.version at read time (not version+1). A successful write still bumps storage to this value + 1. First-party Admin/SDK bind this field automatically; other callers must send the version they read.";
|
|
229
|
+
function annotateExpectedVersion(schema) {
|
|
230
|
+
const properties = schema["properties"];
|
|
231
|
+
if (!isRecord(properties) || !isRecord(properties["expectedVersion"]))
|
|
232
|
+
return schema;
|
|
233
|
+
const current = properties["expectedVersion"];
|
|
234
|
+
const description = current["description"];
|
|
235
|
+
if (typeof description === "string" && description.trim())
|
|
236
|
+
return schema;
|
|
237
|
+
return {
|
|
238
|
+
...schema,
|
|
239
|
+
properties: {
|
|
240
|
+
...properties,
|
|
241
|
+
expectedVersion: { ...current, description: OBSERVED_VERSION_DESCRIPTION },
|
|
242
|
+
},
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
245
|
/** Re-export the naming util from `domain/service/` so existing
|
|
246
246
|
* consumers of `McpToolCatalog` (the dispatcher) keep their import
|
|
247
247
|
* surface stable. */
|
|
@@ -275,7 +275,7 @@ function buildUpdateTool(schema) {
|
|
|
275
275
|
id: { type: "string", description: "Entry id to update." },
|
|
276
276
|
expected_version: {
|
|
277
277
|
type: "number",
|
|
278
|
-
description: "
|
|
278
|
+
description: "Observed native entry.version at read time (not version+1). A successful write still bumps storage to this value + 1.",
|
|
279
279
|
},
|
|
280
280
|
...properties,
|
|
281
281
|
},
|
|
@@ -291,8 +291,7 @@ function buildUpdateTool(schema) {
|
|
|
291
291
|
* Per-Procedure MCP tool factory (#281). The Procedure's `input`
|
|
292
292
|
* JSON Schema becomes the tool's `inputSchema`; localized schema
|
|
293
293
|
* annotations are collapsed at the catalog boundary. The
|
|
294
|
-
* description comes from
|
|
295
|
-
* generic stub naming the Procedure. `output` is not surfaced — MCP
|
|
294
|
+
* description comes from the projected Procedure contract. `output` is not surfaced — MCP
|
|
296
295
|
* clients infer the response shape from the `tools/call` result.
|
|
297
296
|
*
|
|
298
297
|
* Naming: the tool name is the Procedure's metadata name mangled
|
|
@@ -300,39 +299,26 @@ function buildUpdateTool(schema) {
|
|
|
300
299
|
* that the mangled name does not collide with generic tools, media
|
|
301
300
|
* tools, or per-schema authoring tools.
|
|
302
301
|
*/
|
|
303
|
-
function
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
// localized admin-UI surface, so collapse to `en` (or the map's first
|
|
310
|
-
// entry) here rather than passing a locale map through.
|
|
311
|
-
const description = resolveLocalizedText(input.description, "en") ??
|
|
312
|
-
`Invoke Procedure '${procedure.metadata.name}'. Input shape declared by the manifest.`;
|
|
302
|
+
function buildCallableTool(capability) {
|
|
303
|
+
return capability.kind === "view"
|
|
304
|
+
? buildQueryViewTool(capability)
|
|
305
|
+
: buildProcedureTool(capability);
|
|
306
|
+
}
|
|
307
|
+
function buildProcedureTool(capability) {
|
|
313
308
|
return {
|
|
314
|
-
name:
|
|
315
|
-
|
|
316
|
-
|
|
309
|
+
name: capability.name,
|
|
310
|
+
...(capability.title ? { title: capability.title } : {}),
|
|
311
|
+
description: `${capability.description}${authorizationSummary(capability.manifest.spec.requires)}`,
|
|
312
|
+
inputSchema: annotateExpectedVersion(capability.inputSchema),
|
|
317
313
|
};
|
|
318
314
|
}
|
|
319
|
-
function buildQueryViewTool(
|
|
320
|
-
const params = view.spec.params;
|
|
321
|
-
const properties = {
|
|
322
|
-
...(params?.properties ?? {}),
|
|
323
|
-
page: { type: "number", description: "Optional 1-based page number." },
|
|
324
|
-
show: { type: "number", description: "Optional page size, capped by the View limit." },
|
|
325
|
-
};
|
|
326
|
-
const inputSchema = {
|
|
327
|
-
type: "object",
|
|
328
|
-
properties,
|
|
329
|
-
};
|
|
330
|
-
if (params?.required?.length)
|
|
331
|
-
inputSchema["required"] = params.required;
|
|
315
|
+
function buildQueryViewTool(capability) {
|
|
332
316
|
return {
|
|
333
|
-
name:
|
|
334
|
-
|
|
335
|
-
|
|
317
|
+
name: capability.name,
|
|
318
|
+
...(capability.title ? { title: capability.title } : {}),
|
|
319
|
+
description: `${capability.description}${authorizationSummary(capability.manifest.spec.requires)}`,
|
|
320
|
+
inputSchema: capability.inputSchema,
|
|
321
|
+
annotations: { readOnlyHint: true },
|
|
336
322
|
};
|
|
337
323
|
}
|
|
338
324
|
function authorizationSummary(requires) {
|
|
@@ -356,12 +342,16 @@ function describeCreateTool(schema) {
|
|
|
356
342
|
const base = resolveLifecycle(schema) === "operational"
|
|
357
343
|
? `Create a live operational record in '${schema.metadata.name}'.`
|
|
358
344
|
: `Create a new draft entry in '${schema.metadata.name}'.`;
|
|
359
|
-
|
|
345
|
+
const description = resolveLocalizedText(schema.spec.description, "en");
|
|
346
|
+
return description ? `${base} ${description}` : base;
|
|
360
347
|
}
|
|
361
348
|
function describeUpdateTool(schema) {
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
349
|
+
const occ = " Send expected_version as the observed native entry.version from read time, not version+1.";
|
|
350
|
+
const base = resolveLifecycle(schema) === "operational"
|
|
351
|
+
? `Update an operational record in '${schema.metadata.name}' with optimistic-concurrency check.${occ}`
|
|
352
|
+
: `Update a draft entry in '${schema.metadata.name}' with optimistic-concurrency check.${occ}`;
|
|
353
|
+
const description = resolveLocalizedText(schema.spec.description, "en");
|
|
354
|
+
return description ? `${base} ${description}` : base;
|
|
365
355
|
}
|
|
366
356
|
/**
|
|
367
357
|
* Strip server-stamped properties (those carrying `x-mantle-bind`) from
|