@capaxle/adapter-mcp 0.1.0-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.
@@ -0,0 +1,349 @@
1
+ import { createHash } from "node:crypto";
2
+ import { canonicalBytes, compareText, dataObject, deepFreeze, GENERATOR_NAME, GENERATOR_VERSION, MCP_TARGET, ProjectionError, resolvedDiscoveryContext, validateDiscoveryContext, verifyCliBinary, verifyDocumentHash, } from "./shared.js";
3
+ const projection = (capability, name) => capability.interfaces[name];
4
+ function compareSemver(left, right) {
5
+ const parse = (value) => {
6
+ const match = /^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?/.exec(value);
7
+ return match
8
+ ? {
9
+ core: [Number(match[1]), Number(match[2]), Number(match[3])],
10
+ pre: match[4]?.split(".") ?? null,
11
+ }
12
+ : null;
13
+ };
14
+ const a = parse(left);
15
+ const b = parse(right);
16
+ if (!a || !b)
17
+ return compareText(left, right);
18
+ for (let index = 0; index < 3; index += 1) {
19
+ const difference = a.core[index] - b.core[index];
20
+ if (difference !== 0)
21
+ return difference;
22
+ }
23
+ if (a.pre === null || b.pre === null)
24
+ return a.pre === b.pre ? compareText(left, right) : a.pre === null ? 1 : -1;
25
+ const length = Math.max(a.pre.length, b.pre.length);
26
+ for (let index = 0; index < length; index += 1) {
27
+ const x = a.pre[index];
28
+ const y = b.pre[index];
29
+ if (x === undefined || y === undefined)
30
+ return x === y ? 0 : x === undefined ? -1 : 1;
31
+ if (x === y)
32
+ continue;
33
+ const xn = /^\d+$/.test(x);
34
+ const yn = /^\d+$/.test(y);
35
+ if (xn !== yn)
36
+ return xn ? -1 : 1;
37
+ return xn ? Number(x) - Number(y) : compareText(x, y);
38
+ }
39
+ return compareText(left, right);
40
+ }
41
+ function lifecycle(capability) {
42
+ const source = capability.lifecycle;
43
+ if (!dataObject(source) || typeof source.status !== "string")
44
+ throw new ProjectionError("CAP_MANIFEST_GENERATION_FAILED", {
45
+ reason: "invalid_lifecycle",
46
+ capabilityId: capability.id,
47
+ });
48
+ const allowed = source.status === "deprecated"
49
+ ? new Set(["status", "since", "deprecatedAt", "sunsetAt", "replacement"])
50
+ : source.status === "experimental" || source.status === "stable"
51
+ ? new Set(["status", "since"])
52
+ : null;
53
+ if (!allowed ||
54
+ Object.keys(source).some((key) => !allowed.has(key)) ||
55
+ Object.entries(source).some(([key, value]) => key !== "status" && typeof value !== "string"))
56
+ throw new ProjectionError("CAP_MANIFEST_GENERATION_FAILED", {
57
+ reason: "invalid_lifecycle",
58
+ capabilityId: capability.id,
59
+ });
60
+ const result = { status: source.status };
61
+ for (const key of ["since", "deprecatedAt", "sunsetAt", "replacement"])
62
+ if (source[key] !== undefined)
63
+ result[key] = source[key];
64
+ return result;
65
+ }
66
+ function validateVisibility(document, visibility) {
67
+ if (!visibility)
68
+ throw new ProjectionError("CAP_MANIFEST_VISIBILITY_INVALID", {
69
+ reason: "missing",
70
+ });
71
+ const result = new Set();
72
+ for (const entry of visibility) {
73
+ if (!dataObject(entry) ||
74
+ Object.keys(entry).sort().join("\0") !== "id\0interface\0version" ||
75
+ typeof entry.id !== "string" ||
76
+ typeof entry.version !== "string" ||
77
+ !["http", "cli", "mcp"].includes(entry.interface))
78
+ throw new ProjectionError("CAP_MANIFEST_VISIBILITY_INVALID", {
79
+ reason: "shape",
80
+ });
81
+ const key = `${entry.id}\0${entry.version}\0${entry.interface}`;
82
+ if (result.has(key))
83
+ throw new ProjectionError("CAP_MANIFEST_VISIBILITY_INVALID", {
84
+ reason: "duplicate",
85
+ });
86
+ const capability = document.capabilities.find((candidate) => candidate.id === entry.id && candidate.version === entry.version);
87
+ if (!capability ||
88
+ projection(capability, entry.interface).enabled !== true ||
89
+ capability.access.exposure[entry.interface] === "disabled")
90
+ throw new ProjectionError("CAP_MANIFEST_VISIBILITY_INVALID", {
91
+ reason: "unknown_or_disabled",
92
+ });
93
+ result.add(key);
94
+ }
95
+ return result;
96
+ }
97
+ const rfc3986 = (value) => encodeURIComponent(value).replace(/[!'()*]/g, (character) => `%${character.charCodeAt(0).toString(16).toUpperCase()}`);
98
+ function manifestCapability(capability, profile, live, discovery, cliBinary) {
99
+ const exposure = {};
100
+ const interfaces = {};
101
+ const describe = {};
102
+ for (const name of ["http", "cli", "mcp"]) {
103
+ const item = projection(capability, name);
104
+ const canonicalExposure = capability.access.exposure[name];
105
+ const selected = item.enabled === true &&
106
+ canonicalExposure !== "disabled" &&
107
+ (profile === "private" ||
108
+ (profile === "public" && canonicalExposure === "public") ||
109
+ (profile === "live" &&
110
+ live.has(`${capability.id}\0${capability.version}\0${name}`)));
111
+ if (!selected)
112
+ continue;
113
+ exposure[name] = canonicalExposure;
114
+ if (name === "http") {
115
+ if (typeof item.method !== "string" || typeof item.path !== "string")
116
+ throw new ProjectionError("CAP_MANIFEST_GENERATION_FAILED");
117
+ interfaces.http = { method: item.method, path: item.path };
118
+ describe.http = discovery.http.detailTemplate.replace("{id}", rfc3986(capability.id));
119
+ }
120
+ else if (name === "cli") {
121
+ verifyCliBinary(cliBinary);
122
+ if (!Array.isArray(item.command) ||
123
+ item.command.some((part) => typeof part !== "string"))
124
+ throw new ProjectionError("CAP_MANIFEST_GENERATION_FAILED");
125
+ interfaces.cli = { command: [cliBinary, ...item.command] };
126
+ describe.cli = [
127
+ cliBinary,
128
+ "capabilities",
129
+ "describe",
130
+ capability.id,
131
+ "--json",
132
+ ];
133
+ }
134
+ else {
135
+ if (typeof item.toolName !== "string")
136
+ throw new ProjectionError("CAP_MANIFEST_GENERATION_FAILED");
137
+ interfaces.mcp = { toolName: item.toolName };
138
+ }
139
+ }
140
+ if (profile !== "private" && Object.keys(interfaces).length === 0)
141
+ return null;
142
+ const effects = capability.effects;
143
+ if (!["read", "write", "destructive"].includes(effects.impact) ||
144
+ !["none", "required"].includes(effects.confirmation) ||
145
+ !["none", "intrinsic", "key"].includes(effects.idempotency))
146
+ throw new ProjectionError("CAP_MANIFEST_GENERATION_FAILED", {
147
+ reason: "unsupported_effects",
148
+ });
149
+ return {
150
+ id: capability.id,
151
+ version: capability.version,
152
+ summary: capability.summary,
153
+ lifecycle: lifecycle(capability),
154
+ exposure,
155
+ effects: {
156
+ impact: effects.impact,
157
+ confirmation: effects.confirmation,
158
+ idempotency: effects.idempotency,
159
+ },
160
+ interfaces,
161
+ describe,
162
+ };
163
+ }
164
+ export function generateAgentManifest(options) {
165
+ verifyDocumentHash(options.document, options.irHash);
166
+ const discovery = validateDiscoveryContext(options.discovery);
167
+ const profile = options.profile ?? "private";
168
+ if (!["private", "public", "live"].includes(profile))
169
+ throw new ProjectionError("CAP_MANIFEST_GENERATION_FAILED", {
170
+ reason: "invalid_profile",
171
+ });
172
+ const live = profile === "live"
173
+ ? validateVisibility(options.document, options.visibility)
174
+ : null;
175
+ if (profile !== "live" && options.visibility !== undefined)
176
+ throw new ProjectionError("CAP_MANIFEST_VISIBILITY_INVALID", {
177
+ reason: "unexpected",
178
+ });
179
+ const capabilities = [...options.document.capabilities]
180
+ .sort((left, right) => compareText(left.id, right.id) ||
181
+ compareSemver(left.version, right.version) ||
182
+ compareText(left.version, right.version))
183
+ .map((capability) => manifestCapability(capability, profile, live, discovery, options.cliBinary))
184
+ .filter((value) => value !== null);
185
+ const namespaces = [
186
+ ...new Set(capabilities.map((entry) => String(entry.id).split(".")[0])),
187
+ ].sort(compareText);
188
+ const service = options.document
189
+ .service;
190
+ if (!dataObject(service) ||
191
+ typeof service.name !== "string" ||
192
+ typeof service.version !== "string")
193
+ throw new ProjectionError("CAP_MANIFEST_GENERATION_FAILED");
194
+ return deepFreeze({
195
+ manifestVersion: "0.1",
196
+ profile,
197
+ service: { name: service.name, version: service.version },
198
+ irVersion: "0.1",
199
+ irHash: options.irHash,
200
+ generatedBy: { name: GENERATOR_NAME, version: GENERATOR_VERSION },
201
+ discovery: {
202
+ http: discovery.http,
203
+ mcp: { endpoint: discovery.mcp.endpoint, target: MCP_TARGET },
204
+ },
205
+ namespaces,
206
+ capabilities,
207
+ });
208
+ }
209
+ const SHA256 = /^sha256:[0-9a-f]{64}$/;
210
+ function verifyLocator(build, payload) {
211
+ if (!dataObject(build))
212
+ throw new ProjectionError("CAP_MANIFEST_GENERATION_FAILED");
213
+ const keys = Object.keys(build).sort().join("\0");
214
+ if (keys !==
215
+ [
216
+ "artifactGraphVersion",
217
+ "buildId",
218
+ "index",
219
+ "indexSha256",
220
+ "payloadArtifactId",
221
+ "payloadSha256",
222
+ ]
223
+ .sort()
224
+ .join("\0") ||
225
+ build.artifactGraphVersion !== "0.2" ||
226
+ build.payloadArtifactId !== "capaxle.agent-manifest" ||
227
+ typeof build.buildId !== "string" ||
228
+ typeof build.indexSha256 !== "string" ||
229
+ typeof build.payloadSha256 !== "string" ||
230
+ !SHA256.test(build.buildId) ||
231
+ !SHA256.test(build.indexSha256) ||
232
+ !SHA256.test(build.payloadSha256) ||
233
+ typeof build.index !== "string" ||
234
+ build.index.startsWith("/") ||
235
+ build.index
236
+ .split("/")
237
+ .some((part) => part === "" || part === "." || part === "..") ||
238
+ build.index.split("/").includes("current.json") ||
239
+ `sha256:${createHash("sha256").update(payload).digest("hex")}` !==
240
+ build.payloadSha256)
241
+ throw new ProjectionError("CAP_MANIFEST_GENERATION_FAILED", {
242
+ reason: "invalid_build_locator",
243
+ });
244
+ }
245
+ export function assembleAgentManifestRoot(context) {
246
+ verifyLocator(context.build, context.payload);
247
+ let payload;
248
+ try {
249
+ payload = JSON.parse(new TextDecoder().decode(context.payload));
250
+ }
251
+ catch {
252
+ throw new ProjectionError("CAP_MANIFEST_GENERATION_FAILED");
253
+ }
254
+ if (!dataObject(payload) ||
255
+ payload.manifestVersion !== "0.1" ||
256
+ Object.hasOwn(payload, "build"))
257
+ throw new ProjectionError("CAP_MANIFEST_GENERATION_FAILED");
258
+ return canonicalBytes({
259
+ ...payload,
260
+ build: context.build,
261
+ });
262
+ }
263
+ export function createAgentManifestArtifactProducer(options = {}) {
264
+ const discoveryAssertion = options.discovery === undefined
265
+ ? undefined
266
+ : validateDiscoveryContext(options.discovery);
267
+ const profile = options.profile ?? "private";
268
+ return deepFreeze({
269
+ id: "capaxle.agent-manifest",
270
+ version: GENERATOR_VERSION,
271
+ staticInputs: {
272
+ profile,
273
+ ...(discoveryAssertion === undefined ? {} : { discoveryAssertion }),
274
+ },
275
+ diagnosticCodes: [
276
+ {
277
+ code: "CAP_BUILD_CONTEXT_INVALID",
278
+ severities: ["error"],
279
+ },
280
+ {
281
+ code: "CAP_DISCOVERY_CONTEXT_MISMATCH",
282
+ severities: ["error"],
283
+ },
284
+ {
285
+ code: "CAP_MANIFEST_GENERATION_FAILED",
286
+ severities: ["error"],
287
+ },
288
+ {
289
+ code: "CAP_MANIFEST_VISIBILITY_INVALID",
290
+ severities: ["error"],
291
+ },
292
+ ],
293
+ artifacts: [
294
+ {
295
+ id: "capaxle.agent-manifest",
296
+ path: "agent-manifest.json",
297
+ mediaType: "application/json",
298
+ target: "capaxle:agent-manifest@0.1",
299
+ dependencies: ["document:capability-ir"],
300
+ produce(context) {
301
+ try {
302
+ const discovery = resolvedDiscoveryContext(context.buildContext.discovery, discoveryAssertion);
303
+ const bytes = context.dependencyBytes.get("document:capability-ir");
304
+ if (!bytes)
305
+ throw new ProjectionError("CAP_MANIFEST_GENERATION_FAILED");
306
+ const document = JSON.parse(new TextDecoder().decode(bytes));
307
+ return {
308
+ ok: true,
309
+ bytes: canonicalBytes(generateAgentManifest({
310
+ document,
311
+ irHash: context.buildContext.irHash,
312
+ discovery,
313
+ profile,
314
+ ...(context.buildContext.cliBinary === undefined
315
+ ? {}
316
+ : { cliBinary: context.buildContext.cliBinary }),
317
+ })),
318
+ diagnostics: [],
319
+ };
320
+ }
321
+ catch (error) {
322
+ const failure = error instanceof ProjectionError
323
+ ? error
324
+ : new ProjectionError("CAP_MANIFEST_GENERATION_FAILED");
325
+ return {
326
+ ok: false,
327
+ diagnostics: [
328
+ {
329
+ code: failure.code,
330
+ severity: "error",
331
+ message: "Agent manifest generation failed.",
332
+ target: "capaxle:agent-manifest@0.1",
333
+ details: failure.details,
334
+ },
335
+ ],
336
+ };
337
+ }
338
+ },
339
+ },
340
+ ],
341
+ rootPublication: {
342
+ payloadArtifactId: "capaxle.agent-manifest",
343
+ rootPath: "capaxle.manifest.json",
344
+ legacyPath: "capabuild.manifest.json",
345
+ assemble: assembleAgentManifestRoot,
346
+ },
347
+ });
348
+ }
349
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
package/dist/mcp.d.ts ADDED
@@ -0,0 +1,167 @@
1
+ import type { JsonSchema, JsonValue } from "@capaxle/ir";
2
+ import type { AdapterIngress, InvocationResult, RuntimeDocument } from "@capaxle/runtime";
3
+ import { MCP_INVOCATION_META, MCP_PROFILE_VERSION, MCP_TARGET, MCP_TOOL_META, type DiscoveryContext } from "./shared.js";
4
+ type Capability = RuntimeDocument["capabilities"][number];
5
+ type Exposure = "disabled" | "private" | "authenticated" | "public";
6
+ type DisclosureProfile = "private" | "public";
7
+ export interface McpToolDefinition {
8
+ readonly name: string;
9
+ readonly description: string;
10
+ readonly inputSchema: JsonSchema;
11
+ readonly outputSchema: JsonSchema;
12
+ readonly annotations: Readonly<Record<string, boolean>>;
13
+ readonly _meta: {
14
+ readonly [MCP_TOOL_META]: {
15
+ readonly profileVersion: typeof MCP_PROFILE_VERSION;
16
+ readonly id: string;
17
+ readonly version: string;
18
+ readonly irHash: string;
19
+ readonly confirmation: string;
20
+ readonly idempotency: string;
21
+ readonly invocationMetadataKey: typeof MCP_INVOCATION_META;
22
+ };
23
+ };
24
+ }
25
+ export interface McpToolResult {
26
+ readonly resultType: "complete";
27
+ readonly isError: boolean;
28
+ readonly structuredContent: InvocationResult;
29
+ readonly content: readonly [{
30
+ readonly type: "text";
31
+ readonly text: string;
32
+ }];
33
+ }
34
+ export interface McpJsonRpcError {
35
+ readonly jsonrpcError: {
36
+ readonly code: number;
37
+ readonly message: string;
38
+ };
39
+ }
40
+ export interface McpCallParams {
41
+ readonly name: string;
42
+ readonly arguments: Readonly<Record<string, unknown>>;
43
+ readonly _meta?: Readonly<Record<string, unknown>>;
44
+ }
45
+ export interface McpRequestContext {
46
+ readonly credentials?: unknown;
47
+ readonly signal?: AbortSignal;
48
+ readonly clientCanSendInvocationMetadata?: boolean;
49
+ readonly discovery?: McpTrustedDiscoveryContext;
50
+ }
51
+ export interface McpTrustedDiscoveryContext {
52
+ readonly visibility: "authenticated" | "private";
53
+ readonly principal?: JsonValue;
54
+ }
55
+ export interface McpToolVisibilityContext {
56
+ readonly visibility: "public" | "authenticated" | "private";
57
+ readonly principal?: JsonValue;
58
+ }
59
+ export interface McpAdapterOptions {
60
+ readonly document: RuntimeDocument;
61
+ readonly irHash: string;
62
+ readonly ingress: AdapterIngress;
63
+ readonly discovery: DiscoveryContext;
64
+ readonly target?: string;
65
+ readonly profile?: DisclosureProfile;
66
+ readonly isToolVisible?: (capability: Readonly<{
67
+ id: string;
68
+ version: string;
69
+ exposure: Exposure;
70
+ }>, context: McpToolVisibilityContext) => boolean | Promise<boolean>;
71
+ }
72
+ export interface McpAdapter {
73
+ readonly target: typeof MCP_TARGET;
74
+ readonly endpoint: string;
75
+ readonly irHash: string;
76
+ readonly discoveryContext: DiscoveryContext;
77
+ listTools(context?: McpRequestContext): Promise<readonly McpToolDefinition[]>;
78
+ callTool(params: unknown, context?: McpRequestContext): Promise<McpToolResult | McpJsonRpcError>;
79
+ }
80
+ export declare function mcpAnnotations(effects: Capability["effects"]): Readonly<Record<string, boolean>>;
81
+ export interface McpSnapshotOptions {
82
+ readonly document: RuntimeDocument;
83
+ readonly irHash: string;
84
+ readonly discovery: DiscoveryContext;
85
+ readonly target?: string;
86
+ readonly profile?: DisclosureProfile;
87
+ }
88
+ export declare function generateMcpSnapshot(options: McpSnapshotOptions): JsonValue;
89
+ export declare function toMcpToolResult(result: InvocationResult): McpToolResult;
90
+ export declare function createMcpAdapter(options: McpAdapterOptions): McpAdapter;
91
+ interface ArtifactContext {
92
+ readonly buildContext: {
93
+ readonly irHash: string;
94
+ readonly discovery: DiscoveryContext;
95
+ };
96
+ readonly dependencyBytes: ReadonlyMap<string, Uint8Array>;
97
+ }
98
+ export declare function createMcpSnapshotArtifactProducer(options?: Readonly<{
99
+ discovery?: DiscoveryContext;
100
+ profile?: DisclosureProfile;
101
+ }>): {
102
+ id: string;
103
+ version: "0.1.0-alpha.1";
104
+ staticInputs: {
105
+ discoveryAssertion?: DiscoveryContext;
106
+ profile: DisclosureProfile;
107
+ };
108
+ diagnosticCodes: ({
109
+ code: "CAP_BUILD_CONTEXT_INVALID";
110
+ severities: "error"[];
111
+ } | {
112
+ code: "CAP_DISCOVERY_CONTEXT_MISMATCH";
113
+ severities: "error"[];
114
+ } | {
115
+ code: "CAP_HTTP_ROUTE_COLLISION";
116
+ severities: "error"[];
117
+ } | {
118
+ code: "CAP_MCP_CLIENT_METADATA_REQUIRED";
119
+ severities: "warning"[];
120
+ } | {
121
+ code: "CAP_MCP_SCHEMA_UNREPRESENTABLE";
122
+ severities: "error"[];
123
+ } | {
124
+ code: "CAP_MCP_TARGET_UNSUPPORTED";
125
+ severities: "error"[];
126
+ } | {
127
+ code: "CAP_MCP_TOOL_NAME_COLLISION";
128
+ severities: "error"[];
129
+ } | {
130
+ code: "CAP_MCP_TOOL_NAME_INVALID";
131
+ severities: "error"[];
132
+ } | {
133
+ code: "CAP_MCP_TOOL_NAME_TOO_LONG";
134
+ severities: "error"[];
135
+ })[];
136
+ artifacts: {
137
+ id: string;
138
+ path: string;
139
+ mediaType: string;
140
+ target: "mcp@2026-07-28/streamable-http/tools-unary-v2";
141
+ dependencies: "document:capability-ir"[];
142
+ produce(context: ArtifactContext): {
143
+ ok: true;
144
+ bytes: Uint8Array<ArrayBufferLike>;
145
+ diagnostics: {
146
+ code: "CAP_MCP_CLIENT_METADATA_REQUIRED";
147
+ severity: "warning";
148
+ message: string;
149
+ target: "mcp@2026-07-28/streamable-http/tools-unary-v2";
150
+ capabilityId: string;
151
+ path: string;
152
+ }[];
153
+ } | {
154
+ ok: false;
155
+ diagnostics: {
156
+ code: `CAP_${string}`;
157
+ severity: "error";
158
+ message: string;
159
+ target: "mcp@2026-07-28/streamable-http/tools-unary-v2";
160
+ details: JsonValue;
161
+ }[];
162
+ bytes?: never;
163
+ };
164
+ }[];
165
+ };
166
+ export {};
167
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}