@aotter/mantle 0.2.0-alpha.4 → 0.2.0-alpha.5
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/mcp/createMcpSurface.d.ts +5 -2
- package/dist/mcp/createMcpSurface.d.ts.map +1 -1
- package/dist/mcp/createMcpSurface.js +14 -3
- package/dist/mcp/createMcpSurface.js.map +1 -1
- package/dist/mcp/media.d.ts +9 -0
- package/dist/mcp/media.d.ts.map +1 -0
- package/dist/mcp/media.js +33 -0
- package/dist/mcp/media.js.map +1 -0
- package/docs/adr/0031-host-cloud-core-contract.md +62 -1
- package/docs/adr/0032-store-centric-core-and-service-contract.md +17 -0
- package/docs/examples/reference-service/package.json +2 -2
- package/docs/handbook/cloudflare/media-r2.md +59 -8
- package/docs/handbook/concepts/mcp-and-agents.md +12 -4
- package/package.json +1 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { type Diagnostic } from "../spec/kernel/index.js";
|
|
2
2
|
import { type McpTool } from "../spec/domain/index.js";
|
|
3
|
-
import { type Caller, type MantleRuntime, type Surface } from "../core/index.js";
|
|
3
|
+
import { type Caller, type MantleRuntime, type MediaStorage, type Surface } from "../core/index.js";
|
|
4
4
|
import { type McpApps } from "./apps.js";
|
|
5
|
+
import { type MediaMcpTool } from "./media.js";
|
|
5
6
|
export type McpObservation = {
|
|
6
7
|
readonly kind: "request-refused";
|
|
7
8
|
readonly at: number;
|
|
@@ -39,6 +40,8 @@ export interface McpSurfaceOptions {
|
|
|
39
40
|
readonly maxRequestBodySize?: number;
|
|
40
41
|
/** Language tried first when a description is localized. Defaults to `en`. */
|
|
41
42
|
readonly locale?: string;
|
|
43
|
+
/** Optional staff media tools. Needs runtime.site and shares its library with Admin; never enabled on public MCP. */
|
|
44
|
+
readonly media?: MediaStorage;
|
|
42
45
|
/**
|
|
43
46
|
* The scope floor (ADR-0014): every presented credential but a cookie session must carry these before any tool is listed or called,
|
|
44
47
|
* so a token minted for a narrow integration never reaches a tool. Defaults to the one compatibility scope, `["mcp"]`.
|
|
@@ -51,7 +54,7 @@ export interface McpSurfaceOptions {
|
|
|
51
54
|
export declare const APP_TOOL_META_KEY = "net.aotter.mantle/tool";
|
|
52
55
|
/** The surface and the tools it registers for a client without MCP Apps, in its locale. */
|
|
53
56
|
export type McpSurface = Surface & {
|
|
54
|
-
readonly tools: readonly McpTool[];
|
|
57
|
+
readonly tools: readonly (McpTool | MediaMcpTool)[];
|
|
55
58
|
};
|
|
56
59
|
export declare function createMcpSurface(runtime: MantleRuntime, options: McpSurfaceOptions): McpSurface;
|
|
57
60
|
//# sourceMappingURL=createMcpSurface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMcpSurface.d.ts","sourceRoot":"","sources":["../../src/mcp/createMcpSurface.ts"],"names":[],"mappings":"AAOA,OAAO,EAAkD,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1G,OAAO,EAAiF,KAAK,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACtI,OAAO,EAAmB,KAAK,MAAM,EAAE,KAAK,aAAa,EAAE,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"createMcpSurface.d.ts","sourceRoot":"","sources":["../../src/mcp/createMcpSurface.ts"],"names":[],"mappings":"AAOA,OAAO,EAAkD,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1G,OAAO,EAAiF,KAAK,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACtI,OAAO,EAAmB,KAAK,MAAM,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrH,OAAO,EAAqE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAC5G,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG3D,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAA;CAAE,GAC3H;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,CAC1K;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;CAAE,CACzJ,CAAC;AAEJ,MAAM,WAAW,iBAAiB;IAChC,+DAA+D;IAC/D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,uHAAuH;IACvH,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC;IACrC,uGAAuG;IACvG,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpG,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,mDAAmD;IACnD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,qHAAqH;IACrH,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,0JAA0J;IAC1J,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1E;AAmBD,yEAAyE;AACzE,eAAO,MAAM,iBAAiB,2BAA2B,CAAC;AAE1D,2FAA2F;AAC3F,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,CAAA;CAAE,CAAC;AAE3F,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU,CA+H/F"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The MCP surface (ADR-0032 decision 9): a Fetch function over the runtime.
|
|
3
|
-
* Trigger) and Views, never from a Schema. A Procedure's tool is `invokeProcedure`; a View's tool is `store.as(caller).view`, so both
|
|
2
|
+
* The MCP surface (ADR-0032 decision 9): a Fetch function over the runtime. Plan tools come from Procedures (through an `mcp`
|
|
3
|
+
* Trigger) and Views, never from a Schema; optional staff media tools use the existing site library. A Procedure's tool is `invokeProcedure`; a View's tool is `store.as(caller).view`, so both
|
|
4
4
|
* run the same auth, guard and validation as every other source.
|
|
5
5
|
*/
|
|
6
6
|
import { McpServer, createMcpHandler, fromJsonSchema, isJsonContentType, readRequestBody } from "@modelcontextprotocol/server";
|
|
7
7
|
import { RESOURCE_MIME_TYPE, registerAppResource, registerAppTool } from "@modelcontextprotocol/ext-apps/server";
|
|
8
8
|
import { DiagnosticError, makeDiagnostic, redactForWire } from "../spec/kernel/index.js";
|
|
9
9
|
import { mcpTools } from "../spec/domain/index.js";
|
|
10
|
+
import { evaluateAuthAll } from "../core/index.js";
|
|
10
11
|
import { appHtml, appMeta, clientUiSupport, linkApps } from "./apps.js";
|
|
12
|
+
import { mediaTools } from "./media.js";
|
|
11
13
|
import { observe } from "../core/observation.js";
|
|
12
14
|
const CONTEXT_KEY = "mantle.caller";
|
|
13
15
|
const UI_KEY = "mantle.clientUi";
|
|
@@ -28,7 +30,10 @@ export function createMcpSurface(runtime, options) {
|
|
|
28
30
|
const base = options.basePath.replace(/\/+$/, "") || "/";
|
|
29
31
|
const maxBody = options.maxRequestBodySize ?? 1024 * 1024;
|
|
30
32
|
const requiredScopes = options.requiredScopes ?? ["mcp"];
|
|
31
|
-
const
|
|
33
|
+
const library = options.surface === "staff" && options.media && runtime.site?.media(options.media);
|
|
34
|
+
const tools = [...mcpTools(runtime.plan, options.surface, options.locale ?? "en"), ...(library ? mediaTools(library, runtime.site) : [])];
|
|
35
|
+
if (new Set(tools.map((t) => t.name)).size !== tools.length)
|
|
36
|
+
throw new TypeError("MCP media tool name collides with a declared Procedure or View.");
|
|
32
37
|
const byName = new Map(tools.map((t) => [t.name, t]));
|
|
33
38
|
// a surface whose every tool needs identity is closed to anonymous from `initialize` on, as the staff surface is: a client
|
|
34
39
|
// decides whether to sign in when it connects, so a 401 that waits for the first tool call never shows it a sign-in. A
|
|
@@ -76,6 +81,12 @@ export function createMcpSurface(runtime, options) {
|
|
|
76
81
|
let outcome = "succeeded";
|
|
77
82
|
let code;
|
|
78
83
|
try {
|
|
84
|
+
if (tool.kind === "media") {
|
|
85
|
+
const denied = evaluateAuthAll(tool.requires, caller, `MCP ${tool.name}`);
|
|
86
|
+
if (denied)
|
|
87
|
+
throw new DiagnosticError(denied);
|
|
88
|
+
return result(await tool.run(input));
|
|
89
|
+
}
|
|
79
90
|
if (tool.kind === "procedure")
|
|
80
91
|
return result(await runtime.invokeProcedure({ procedure: tool.source, input, caller, cause }));
|
|
81
92
|
const { limit, cursor, ...rest } = input;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMcpSurface.js","sourceRoot":"","sources":["../../src/mcp/createMcpSurface.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createMcpSurface.js","sourceRoot":"","sources":["../../src/mcp/createMcpSurface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Optional staff product tools over the same library Admin uses; media bytes never enter MCP. */
|
|
2
|
+
import type { MediaLibrary, MantleSite } from "../core/index.js";
|
|
3
|
+
import { type McpTool } from "../spec/domain/index.js";
|
|
4
|
+
export type MediaMcpTool = Omit<McpTool, "kind"> & {
|
|
5
|
+
readonly kind: "media";
|
|
6
|
+
readonly run: (input: Record<string, unknown>) => Promise<unknown>;
|
|
7
|
+
};
|
|
8
|
+
export declare function mediaTools(library: MediaLibrary, site: MantleSite): MediaMcpTool[];
|
|
9
|
+
//# sourceMappingURL=media.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/mcp/media.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAA+G,KAAK,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGpK,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,CAAC;AAMlJ,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,YAAY,EAAE,CAyBlF"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsonSchemaToZod, safeParseJson, firstZodIssueAsJsonPointer } from "../spec/domain/index.js";
|
|
2
|
+
import { DiagnosticError, makeDiagnostic } from "../spec/kernel/index.js";
|
|
3
|
+
const requires = { auth: { all: [{ "ctx.staff": ["owner", "editor"] }] } };
|
|
4
|
+
const string = { type: "string" };
|
|
5
|
+
const texts = { alt: { type: "string", maxLength: 1000 }, caption: { type: "string", maxLength: 1000 } };
|
|
6
|
+
const input = (properties, required = []) => ({ type: "object", properties, required, additionalProperties: false });
|
|
7
|
+
export function mediaTools(library, site) {
|
|
8
|
+
const tool = (name, description, inputSchema, invoke, readOnlyHint = false) => {
|
|
9
|
+
const schema = jsonSchemaToZod(inputSchema);
|
|
10
|
+
return {
|
|
11
|
+
name, source: name, kind: "media", requires, description, inputSchema,
|
|
12
|
+
run: async (args) => {
|
|
13
|
+
const parsed = safeParseJson(schema, args);
|
|
14
|
+
if (!parsed.success) {
|
|
15
|
+
const { instancePath, message } = firstZodIssueAsJsonPointer(parsed.error);
|
|
16
|
+
throw new DiagnosticError(makeDiagnostic({ code: "INPUT_VALIDATION_FAILED", phase: "runtime", severity: "error", path: `MCP ${name}#/input${instancePath}`, expected: message }));
|
|
17
|
+
}
|
|
18
|
+
return invoke(parsed.data);
|
|
19
|
+
},
|
|
20
|
+
annotations: { readOnlyHint, destructiveHint: name === "delete_media_asset", openWorldHint: true },
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
return [
|
|
24
|
+
tool("get_media_upload_policy", "Read declared image purpose MIME slots and byte caps before preparing variants or requesting an upload. Optimization runs locally, never in the host.", input({}), async () => ({ purposes: (await site.read()).media?.purposes ?? [] }), true),
|
|
25
|
+
tool("create_media_upload", "Create short-lived PUT capabilities for image variants. Read site media purpose policy first; optimize images locally. Obtain attachment bytes yourself, then PUT each variant with its requiredHeaders and call commit_media_upload. Never store upload URLs as published images or ask the user to run terminal commands.", input({ filename: { type: "string", maxLength: 255 }, purpose: string, variants: { type: "array", minItems: 1, items: input({ mimeType: string, byteSize: { type: "integer", minimum: 1 }, role: { type: "string", enum: ["primary", "alternate", "fallback"] } }, ["mimeType", "byteSize", "role"]) }, ...texts }, ["filename", "purpose", "variants"]), (args) => library.createUpload(args)),
|
|
26
|
+
tool("commit_media_upload", "Verify all uploaded variants and commit one permanent media asset. Store the returned asset id in fields referencing media_assets.id, never a temporary upload URL. Unknown or expired upload groups require a new create_media_upload.", input({ uploadGroupId: string, ...texts }, ["uploadGroupId"]), ({ uploadGroupId, ...patch }) => library.commitUpload(uploadGroupId, patch)),
|
|
27
|
+
tool("list_media_assets", "List committed image assets, newest first, with their permanent variants and alt/caption. Search matches id, alt or caption; reuse only a returned cursor.", input({ limit: { type: "integer", minimum: 1, maximum: 500 }, cursor: string, search: string }), (args) => library.list(args), true),
|
|
28
|
+
tool("get_media_asset", "Read one committed media asset and its permanent variant URLs.", input({ id: string }, ["id"]), ({ id }) => library.get(id), true),
|
|
29
|
+
tool("update_media_asset", "Update committed asset alt or caption; omitted fields remain unchanged and empty strings clear text.", input({ id: string, ...texts }, ["id"]), ({ id, ...patch }) => library.update(id, patch)),
|
|
30
|
+
tool("delete_media_asset", "Delete an asset's objects and library record. Check application references first. A partial failure can be retried using the same id.", input({ id: string }, ["id"]), ({ id }) => library.delete(id)),
|
|
31
|
+
];
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=media.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/mcp/media.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ADR 0031: Cloud supplies the host Core pin
|
|
2
2
|
|
|
3
|
-
Status: Accepted for mantle-host protocols 2 and
|
|
3
|
+
Status: Accepted for mantle-host protocols 2, 4, 5 and 6.
|
|
4
4
|
|
|
5
5
|
The backend artifact includes `sdkVersion` and `sdkRevision` in its hashed
|
|
6
6
|
bytes. The old host bundled a fixed Core revision. Cloud can run the previous
|
|
@@ -39,3 +39,64 @@ cleanup and deployment policy belong to the Cloud service. Core vendors its exac
|
|
|
39
39
|
helper artifact/checksum and documents the MCP workflow; it gains no provider
|
|
40
40
|
adapter, SQL compiler, runtime wiring or new Manifest grammar. Client-built
|
|
41
41
|
handlers/static files are not represented as server build attestation.
|
|
42
|
+
|
|
43
|
+
## Agent orchestration and offline packing (#1368)
|
|
44
|
+
|
|
45
|
+
Cloud MCP remains protocol 4 and owns lifecycle state and permissions. The plugin
|
|
46
|
+
helper no longer mirrors candidate/deploy state or polls Cloud. Its public bundle
|
|
47
|
+
contains safe Git source transport and offline backend/frontend/source packing.
|
|
48
|
+
The agent discovers MCP schemas, records non-secret operation IDs for identical
|
|
49
|
+
retries, and observes server state before publication. Packaging still uses the
|
|
50
|
+
installed Core compiler; this is not a Core runtime/provider adapter change.
|
|
51
|
+
|
|
52
|
+
`pack backend --contract -` validates the project and Cloud pin. `pack frontend`
|
|
53
|
+
requires the backend commit and ready kit candidate, and emits immutable hashes.
|
|
54
|
+
The agent checks these against reservations and uses native HTTP grant transport.
|
|
55
|
+
Cloud admission and plan/archive verification remain unchanged; handler/static
|
|
56
|
+
bundles remain client-built. The source transport also rejects secret-named files
|
|
57
|
+
in reachable history, without claiming to scan source content for credentials.
|
|
58
|
+
|
|
59
|
+
## Protocol 5: mandatory structural website acceptance
|
|
60
|
+
|
|
61
|
+
A shared artifact validator runs in offline frontend packing and host admission,
|
|
62
|
+
and the host repeats it before new publication. The uploader cannot disable it
|
|
63
|
+
with an artifact flag or a self-reported checklist. A permanent canonical origin
|
|
64
|
+
is bound to the immutable static upload receipt and checked against the selected
|
|
65
|
+
site at reservation. Current rule/version and frontend hash bind the report;
|
|
66
|
+
changing a candidate or bytes requires fresh evidence. Existing stored releases
|
|
67
|
+
remain readable and rollback preserves their historical bytes.
|
|
68
|
+
|
|
69
|
+
The plugin packer requires `--origin` and emits structured missing-check
|
|
70
|
+
diagnostics. The upload MCP contract requires `canonicalOrigin`. This changes
|
|
71
|
+
validation meaning and therefore increments the host protocol, not the Manifest
|
|
72
|
+
grammar or Core runtime. The validator checks built HTML AST structure and
|
|
73
|
+
metadata, deterministic sitemap/robots and SPA routing configuration without
|
|
74
|
+
executing untrusted code or launching a browser. The host provides Admin, OTP
|
|
75
|
+
and media wiring; artifact validation does not certify delivery, uploads,
|
|
76
|
+
arbitrary authorization, visual behavior, content truth or dynamic HTML refresh.
|
|
77
|
+
A REST-only host must report dynamic-content SEO unsupported.
|
|
78
|
+
|
|
79
|
+
## Local preparation and additive continuation (#1381)
|
|
80
|
+
|
|
81
|
+
The existing offline helper may run explicit application check/build argv arrays, pack a clean fixed commit and ordinarily push it in a single `prepare` entry. It returns source-admission arguments and deterministic artifact metadata; no Cloud lifecycle state, HTTP upload, polling or publication is added. Commands cannot silently commit source changes; dirty tracked output fails the existing clean-commit checks. Credentials stay in session memory/stdin. Native host responses may add continuation facts derived from their authoritative resource/lease rows; read-only backend status remains read-only. These additions do not change artifact bytes, admission rules or protocol 5 validation meaning.
|
|
82
|
+
|
|
83
|
+
## Protocol 6: durable publication and read-only handoff (#1385)
|
|
84
|
+
|
|
85
|
+
Publication changes the native MCP sequence: one accepted publication operation
|
|
86
|
+
continues durably in Cloud, including recoverable provider waits, without an
|
|
87
|
+
agent repeatedly advancing deployment steps. The agent observes authoritative
|
|
88
|
+
deployment status until terminal; status reads never start or advance work.
|
|
89
|
+
Interrupted acceptance is recovered through the same immutable operation and
|
|
90
|
+
arguments, not a replacement candidate. Permission revocation and deterministic
|
|
91
|
+
refusals remain terminal until their stated correction; background work does not
|
|
92
|
+
retain a credential or turn a previous authorization into permanent authority.
|
|
93
|
+
|
|
94
|
+
This sequence change requires protocol 6. A client must validate that contract
|
|
95
|
+
before relying on autonomous publication; it cannot merely poll a protocol 5
|
|
96
|
+
host and expect progression. Historical source/release artifacts keep their
|
|
97
|
+
identity and rollback rules. The new sequence does not change Manifest grammar
|
|
98
|
+
or claim server build attestation. Local preparation and builds stay in the
|
|
99
|
+
agent environment; the helper gains no deployment scheduler or build container.
|
|
100
|
+
An accepted operation, ready preview or expired preview is not evidence of a
|
|
101
|
+
serving release or completed cleanup. Terminal state, access policy and literal
|
|
102
|
+
publication URL come from Cloud's authoritative status.
|
|
@@ -365,3 +365,20 @@ The three contracts #1188 made ADR gates are accepted only with these cases, run
|
|
|
365
365
|
## Implementation status
|
|
366
366
|
|
|
367
367
|
Proposed. Nothing in decisions 1–13 is implemented beyond the ADR-0030 slices already on `develop`.
|
|
368
|
+
|
|
369
|
+
## 2026-10-08 amendment — optional staff media MCP
|
|
370
|
+
|
|
371
|
+
Issue #1384 restores the pre-consolidation media lifecycle without adding
|
|
372
|
+
Schema CRUD or a new Runtime path. `createMcpSurface` may receive `media:
|
|
373
|
+
MediaStorage`; only a staff surface with `runtime.site` advertises the native
|
|
374
|
+
media policy/create/commit/list/get/update/delete tools. They delegate to the
|
|
375
|
+
same `runtime.site.media(media)` library as Admin and use its editor/owner
|
|
376
|
+
permission, purpose/type/size validation, expiry and object verification.
|
|
377
|
+
The surface retains its shared credential scope floor and invocation
|
|
378
|
+
observations; a collision with a manifest Procedure/View fails at assembly.
|
|
379
|
+
Media bytes remain direct PUT capabilities. The deliberately removed base64
|
|
380
|
+
variant-upload tool is not restored. No grammar, portable Runtime execution,
|
|
381
|
+
storage schema or provider ownership changes. Application-owned/generated
|
|
382
|
+
service files pass their chosen adapter to both Admin and staff MCP; the
|
|
383
|
+
preset cannot invent object-storage credentials. Admin WebMCP continues to
|
|
384
|
+
list manifest tools; its native media operations remain REST-backed.
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
"check": "mantle generate && mantle generate --check && tsc --noEmit && node smoke.mjs"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@aotter/mantle": "0.2.0-alpha.
|
|
12
|
-
"@aotter/mantle-ui": "0.2.0-alpha.
|
|
11
|
+
"@aotter/mantle": "0.2.0-alpha.5",
|
|
12
|
+
"@aotter/mantle-ui": "0.2.0-alpha.5",
|
|
13
13
|
"@better-auth/cimd": "1.7.7",
|
|
14
14
|
"@better-auth/mcp": "1.7.7",
|
|
15
15
|
"@better-auth/oauth-provider": "1.7.7",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Media uploads in Mantle 0.2.0 on Cloudflare R2 — site media purposes, r2MediaStorage, wiring Admin
|
|
2
|
+
description: Media uploads in Mantle 0.2.0 on Cloudflare R2 — site media purposes, r2MediaStorage, wiring Admin and staff MCP media tools, the presigned upload flow, and what to store in a Schema.
|
|
3
3
|
---
|
|
4
4
|
# Media uploads with R2
|
|
5
5
|
|
|
@@ -37,7 +37,7 @@ export const mantle = createMantle(service, {
|
|
|
37
37
|
} }),
|
|
38
38
|
});
|
|
39
39
|
|
|
40
|
-
// in mount():
|
|
40
|
+
// in mount(): one media storage, shared by Admin and staff MCP
|
|
41
41
|
const media = r2MediaStorage({
|
|
42
42
|
bucket: env.MEDIA,
|
|
43
43
|
signer: new AwsClient({ accessKeyId: env.R2_ACCESS_KEY_ID, secretAccessKey: env.R2_SECRET_ACCESS_KEY, region: "auto", service: "s3" }),
|
|
@@ -45,11 +45,16 @@ const media = r2MediaStorage({
|
|
|
45
45
|
publicBase: env.MEDIA_PUBLIC_BASE,
|
|
46
46
|
});
|
|
47
47
|
const admin = guard(createAdminSurface(runtime, { basePath: "/admin", media, /* …the generated options… */ }));
|
|
48
|
+
const staffMcp = guard(createMcpSurface(runtime, {
|
|
49
|
+
basePath: "/mcp/staff", surface: "staff", media, resourceMetadata,
|
|
50
|
+
}), { resourceMetadata });
|
|
48
51
|
```
|
|
49
52
|
|
|
50
53
|
`aws4fetch` is the application's dependency; Mantle only calls its `sign`.
|
|
51
|
-
Without both `media` and site defaults, every media route answers 501
|
|
52
|
-
`MEDIA_NOT_CONFIGURED
|
|
54
|
+
Without both `media` and site defaults, every Admin media route answers 501
|
|
55
|
+
`MEDIA_NOT_CONFIGURED`, and MCP advertises no media tools. Public MCP never
|
|
56
|
+
advertises media tools. The generated preset does not invent bucket credentials;
|
|
57
|
+
add the same explicit adapter to its application-owned service composition.
|
|
53
58
|
|
|
54
59
|
## 3. The upload flow
|
|
55
60
|
|
|
@@ -75,16 +80,62 @@ retried.
|
|
|
75
80
|
Optimize images where they are made (in the browser or the agent), and upload
|
|
76
81
|
the variants; Mantle does not transform images.
|
|
77
82
|
|
|
83
|
+
## Staff MCP upload flow
|
|
84
|
+
|
|
85
|
+
Connect the tenant's `/mcp/staff` using its own identity, with the `mcp` scope
|
|
86
|
+
and `editor` or `owner` role. Cloud project membership is not tenant staff.
|
|
87
|
+
The verified role is checked again on every call, as in Admin.
|
|
88
|
+
|
|
89
|
+
1. Call `get_media_upload_policy` to read the declared purpose MIME slots and
|
|
90
|
+
byte caps. Obtain the chat attachment bytes in the agent environment and
|
|
91
|
+
optimize/encode the required variants there; do not ask the user to run a
|
|
92
|
+
terminal command.
|
|
93
|
+
2. Call `create_media_upload` with the same body as Admin's create endpoint.
|
|
94
|
+
3. PUT every variant's actual bytes to its capability URL using all returned
|
|
95
|
+
`requiredHeaders`, before `expiresAt`. Bytes never travel as base64 MCP JSON.
|
|
96
|
+
4. Call `commit_media_upload` with `{ uploadGroupId, alt?, caption? }`.
|
|
97
|
+
Verify success before using the returned permanent asset `id`.
|
|
98
|
+
5. Pass that ID to the application's content Procedure. Images are content
|
|
99
|
+
operations, not a new Cloud source build or deploy.
|
|
100
|
+
|
|
101
|
+
`list_media_assets`, `get_media_asset`, `update_media_asset` (`id`, `alt?`,
|
|
102
|
+
`caption?`) and `delete_media_asset` (`id`) share the same library and editor
|
|
103
|
+
permission as Admin. A create refusal publishes nothing. Expired groups need
|
|
104
|
+
new capabilities; partial delete failures can retry the same ID. Keep upload
|
|
105
|
+
capabilities out of logs and persisted content.
|
|
106
|
+
|
|
78
107
|
## Storing media in a Schema
|
|
79
108
|
|
|
80
|
-
Store the asset
|
|
109
|
+
Store the committed asset ID, not its temporary capability URL:
|
|
81
110
|
|
|
82
111
|
```yaml
|
|
83
|
-
|
|
112
|
+
coverAssetId:
|
|
113
|
+
type: string
|
|
114
|
+
x-mantle-ref: media_assets
|
|
115
|
+
x-mcp-hint: media-image
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
The string reference defaults to the native library's `id` and enables Admin's
|
|
119
|
+
existing MediaPicker. The hint alone does not enable the picker. Do not author
|
|
120
|
+
a replacement `media_assets` Schema: the site's library owns that table.
|
|
121
|
+
|
|
122
|
+
An asset ID is not an image URL. Resolve it with the existing site library in
|
|
123
|
+
an application-owned frontend handler, then use a variant's `publicUrl`:
|
|
124
|
+
|
|
125
|
+
```ts
|
|
126
|
+
// The same media adapter used by Admin and staff MCP.
|
|
127
|
+
const asset = await runtime.site!.media(media).get(post.coverAssetId);
|
|
128
|
+
const primary = asset.variants.find((variant) => variant.role === "primary")!;
|
|
129
|
+
// Render primary.publicUrl as the image src; asset.alt as its alt text.
|
|
84
130
|
```
|
|
85
131
|
|
|
86
|
-
|
|
87
|
-
|
|
132
|
+
A public frontend route must enforce the content's publication and visibility
|
|
133
|
+
before resolving its media. Return only public URLs/alt/variant metadata it
|
|
134
|
+
needs; never expose upload capabilities or a staff MCP credential. Native site
|
|
135
|
+
product tables are not manifest Store tables: do not query `media_assets` in
|
|
136
|
+
View/Procedure SQL or widen the SQL grammar to resolve them. A custom handler
|
|
137
|
+
can use the existing library capability while its content reads remain
|
|
138
|
+
caller-scoped.
|
|
88
139
|
|
|
89
140
|
## Stale uploads
|
|
90
141
|
|
|
@@ -17,13 +17,19 @@ Both run behind `withCaller(resolver, …)`, so a tool sees the same
|
|
|
17
17
|
|
|
18
18
|
## Which tools
|
|
19
19
|
|
|
20
|
-
A surface lists
|
|
20
|
+
A surface lists these plan tools:
|
|
21
21
|
|
|
22
22
|
- each Procedure bound by a Trigger `{ kind: mcp, surface: <this surface> }`,
|
|
23
23
|
named after the Procedure in snake case (`place-order` is `place_order`);
|
|
24
24
|
- each View whose `surface` is this one, as a read-only tool with the View's
|
|
25
25
|
`input` plus `limit` and `cursor`.
|
|
26
26
|
|
|
27
|
+
A configured staff surface also offers optional media product tools (see
|
|
28
|
+
[media upload](../cloudflare/media-r2.md)); these delegate to the same site
|
|
29
|
+
library as Admin. Without site defaults or media storage they are absent;
|
|
30
|
+
public MCP never exposes them. A name collision with a plan tool fails at
|
|
31
|
+
assembly rather than replacing either tool.
|
|
32
|
+
|
|
27
33
|
A Schema is never a tool: there are no generated create, update or publish
|
|
28
34
|
record tools. To let an agent change rows, declare a Procedure and an `mcp`
|
|
29
35
|
Trigger for it.
|
|
@@ -74,13 +80,15 @@ const staffMcp = withCaller(resolver,
|
|
|
74
80
|
{ resourceMetadata });
|
|
75
81
|
```
|
|
76
82
|
|
|
77
|
-
`resourceMetadata` is the `/mcp` metadata URL.
|
|
83
|
+
`resourceMetadata` is the `/mcp` metadata URL. Pass the same `media` adapter as Admin to enable media tools. They require
|
|
84
|
+
`editor` or `owner`; a contributor can discover them but cannot call them.
|
|
85
|
+
The staff surface admits only
|
|
78
86
|
callers with a staff role, and the role is read on every request.
|
|
79
87
|
|
|
80
88
|
## WebMCP in Admin
|
|
81
89
|
|
|
82
|
-
`GET /admin/api/webmcp` returns `{ tools, routes }`: the staff tools (
|
|
83
|
-
|
|
90
|
+
`GET /admin/api/webmcp` returns `{ tools, routes }`: the manifest staff tools (in its default locale; optional native media tools
|
|
91
|
+
use the existing Admin media REST routes) and, for each tool, the Admin page
|
|
84
92
|
it belongs to (a Procedure with a `target` maps to its collection, a View to its
|
|
85
93
|
report). A browser agent in the console registers these tools and calls one
|
|
86
94
|
with `POST /admin/api/webmcp/<tool>` and the input as the JSON body. Admin runs
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aotter/mantle",
|
|
3
|
-
"version": "0.2.0-alpha.
|
|
3
|
+
"version": "0.2.0-alpha.5",
|
|
4
4
|
"description": "Mantle: a manifest-driven service core. Store authored as SQL, surfaces as Fetch functions, and the mantle CLI.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://mantle.tools/",
|