@maravilla-labs/functions 0.8.3 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -5,6 +5,9 @@ export type { FunctionManifest, FunctionRoute, BuildOptions } from './types.js';
5
5
  export { buildEvents, integrateEventsWithManifest } from './events/build.js';
6
6
  export { discoverEventSources } from './events/discover.js';
7
7
  export type { EventTrigger, EventHandlerDescriptor, EventsManifest, BuildEventsOptions, DiscoveredEventSource, } from './events/types.js';
8
+ export { buildMcp, integrateMcpWithManifest } from './mcp/build.js';
9
+ export { discoverMcpSources } from './mcp/discover.js';
10
+ export type { McpManifest, McpServerInfo, McpToolDescriptor, ToolUiRef, UiTemplateDescriptor, BuildMcpOptions, DiscoveredMcpSource, } from './mcp/types.js';
8
11
  export { buildWorkflows, integrateWorkflowsWithManifest } from './workflows/build.js';
9
12
  export { discoverWorkflowSources } from './workflows/discover.js';
10
13
  export { defineWorkflow } from './workflows/runtime.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAiB,YAAY,EAAE,MAAM,YAAY,CAAC;AAEhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGhF,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EACV,YAAY,EACZ,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,cAAc,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC5F,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,UAAU,EACV,QAAQ,EACR,UAAU,EACV,eAAe,EACf,sBAAsB,EACtB,OAAO,GACR,MAAM,sBAAsB,CAAC;AAE9B,wBAAsB,cAAc,CAAC,OAAO,GAAE,YAAiB,oCAyG9D;AAwCD,wBAAsB,qBAAqB,CACzC,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,gBAAgB,GAAG,IAAI,iBA2C3C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAiB,YAAY,EAAE,MAAM,YAAY,CAAC;AAEhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGhF,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EACV,YAAY,EACZ,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EACV,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC5F,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,UAAU,EACV,QAAQ,EACR,UAAU,EACV,eAAe,EACf,sBAAsB,EACtB,OAAO,GACR,MAAM,sBAAsB,CAAC;AAE9B,wBAAsB,cAAc,CAAC,OAAO,GAAE,YAAiB,oCAyG9D;AAwCD,wBAAsB,qBAAqB,CACzC,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,gBAAgB,GAAG,IAAI,iBA2C3C"}
package/dist/index.js CHANGED
@@ -8,6 +8,9 @@ export { developmentServer } from './dev.js';
8
8
  // Events pipeline (events.ts + events/**/*.ts)
9
9
  export { buildEvents, integrateEventsWithManifest } from './events/build.js';
10
10
  export { discoverEventSources } from './events/discover.js';
11
+ // MCP pipeline (mcp.ts + mcp/**/*.ts)
12
+ export { buildMcp, integrateMcpWithManifest } from './mcp/build.js';
13
+ export { discoverMcpSources } from './mcp/discover.js';
11
14
  // Workflows pipeline (workflows.ts + workflows/**/*.ts)
12
15
  export { buildWorkflows, integrateWorkflowsWithManifest } from './workflows/build.js';
13
16
  export { discoverWorkflowSources } from './workflows/discover.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { BuildMcpOptions, McpManifest } from './types.js';
2
+ /**
3
+ * Build the MCP bundle and emit `mcp.js` + `mcp.json` into the output
4
+ * directory. Returns the manifest (or null if no `mcp/` sources present).
5
+ *
6
+ * Mirrors `buildEvents` exactly — single-entry strategy, IIFE for the Deno
7
+ * isolate (the worker pool wraps the bundle and looks for
8
+ * `globalThis.handleRequest`) + ESM introspection for `mcp.json`.
9
+ */
10
+ export declare function buildMcp(options?: BuildMcpOptions): Promise<McpManifest | null>;
11
+ /** Merge the MCP manifest into an existing `manifest.json`. The embedded
12
+ * shape mirrors the standalone `mcp.json` so the Rust
13
+ * `platform::mcp::McpManifest` deserializer accepts both. */
14
+ export declare function integrateMcpWithManifest(manifestPath: string, mcpManifest: McpManifest | null): Promise<void>;
15
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/mcp/build.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EAIZ,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAiFzF;AAmFD;;8DAE8D;AAC9D,wBAAsB,wBAAwB,CAC5C,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,WAAW,GAAG,IAAI,GAC9B,OAAO,CAAC,IAAI,CAAC,CAQf"}
@@ -0,0 +1,135 @@
1
+ import { promises as fs } from 'node:fs';
2
+ import { join, resolve } from 'node:path';
3
+ import { pathToFileURL } from 'node:url';
4
+ import * as esbuild from 'esbuild';
5
+ import { discoverMcpSources } from './discover.js';
6
+ import { generateMcpEntry } from './generator.js';
7
+ /**
8
+ * Build the MCP bundle and emit `mcp.js` + `mcp.json` into the output
9
+ * directory. Returns the manifest (or null if no `mcp/` sources present).
10
+ *
11
+ * Mirrors `buildEvents` exactly — single-entry strategy, IIFE for the Deno
12
+ * isolate (the worker pool wraps the bundle and looks for
13
+ * `globalThis.handleRequest`) + ESM introspection for `mcp.json`.
14
+ */
15
+ export async function buildMcp(options = {}) {
16
+ const { projectDir = process.cwd(), outputDir = '.maravilla', minify = false, sourcemap = false, production = false, } = options;
17
+ const resolvedProject = resolve(projectDir);
18
+ const resolvedOut = resolve(outputDir);
19
+ const sources = await discoverMcpSources(resolvedProject);
20
+ if (sources.length === 0)
21
+ return null;
22
+ console.log(`🤖 Building MCP tools (${sources.length} source file${sources.length === 1 ? '' : 's'}):`);
23
+ for (const s of sources)
24
+ console.log(` ${s.relPath}`);
25
+ await fs.mkdir(resolvedOut, { recursive: true });
26
+ const tempDir = join(resolvedOut, '.temp');
27
+ await fs.mkdir(tempDir, { recursive: true });
28
+ const entryPath = join(tempDir, 'mcp-entry.mjs');
29
+ await fs.writeFile(entryPath, generateMcpEntry(sources));
30
+ const iifeBundlePath = join(resolvedOut, 'mcp.js');
31
+ const esmIntrospectPath = join(tempDir, 'mcp.introspect.mjs');
32
+ const sharedOpts = {
33
+ entryPoints: [entryPath],
34
+ bundle: true,
35
+ platform: 'neutral',
36
+ target: 'es2022',
37
+ absWorkingDir: resolvedProject,
38
+ minify: minify || production,
39
+ sourcemap,
40
+ external: ['node:*'],
41
+ define: { 'process.env.NODE_ENV': production ? '"production"' : '"development"' },
42
+ mainFields: ['module', 'main'],
43
+ conditions: ['import', 'module'],
44
+ };
45
+ // (1) IIFE bundle — consumed by the Deno worker pool.
46
+ await esbuild.build({
47
+ ...sharedOpts,
48
+ format: 'iife',
49
+ globalName: '__maravilla_mcp',
50
+ outfile: iifeBundlePath,
51
+ });
52
+ // (2) ESM bundle — only used here, for Node-side introspection of
53
+ // __maravilla_mcp_list. Deleted after introspection.
54
+ await esbuild.build({
55
+ ...sharedOpts,
56
+ format: 'esm',
57
+ outfile: esmIntrospectPath,
58
+ });
59
+ const { server, tools, uiTemplates, serverPublic } = await introspect(esmIntrospectPath);
60
+ await fs.rm(tempDir, { recursive: true, force: true });
61
+ const manifest = {
62
+ version: 1,
63
+ bundle: 'mcp.js',
64
+ server,
65
+ tools,
66
+ uiTemplates,
67
+ public: serverPublic,
68
+ buildTime: new Date().toISOString(),
69
+ };
70
+ await fs.writeFile(join(resolvedOut, 'mcp.json'), JSON.stringify(manifest, null, 2));
71
+ console.log(`✅ MCP build completed: ${tools.length} tool${tools.length === 1 ? '' : 's'}`);
72
+ for (const t of tools)
73
+ console.log(` ${t.id}${t.ui ? ` (ui: ${t.ui.template})` : ''}`);
74
+ return manifest;
75
+ }
76
+ /** Dynamic-import the produced ESM bundle and read `__maravilla_mcp_list`. */
77
+ async function introspect(bundlePath) {
78
+ const fallback = {
79
+ server: { name: 'mcp-server' },
80
+ tools: [],
81
+ uiTemplates: [],
82
+ serverPublic: false,
83
+ };
84
+ const url = pathToFileURL(bundlePath).href + `?t=${Date.now()}`;
85
+ let mod;
86
+ try {
87
+ mod = (await import(url));
88
+ }
89
+ catch (err) {
90
+ console.warn(`⚠️ Failed to introspect MCP bundle: ${err.message}`);
91
+ return fallback;
92
+ }
93
+ const list = mod.__maravilla_mcp_list;
94
+ if (!list || !Array.isArray(list.tools)) {
95
+ console.warn('⚠️ MCP bundle missing __maravilla_mcp_list');
96
+ return fallback;
97
+ }
98
+ const serverSpec = (list.server || {});
99
+ const server = {
100
+ name: serverSpec.name || 'mcp-server',
101
+ version: serverSpec.version,
102
+ instructions: serverSpec.instructions,
103
+ };
104
+ const serverPublic = serverSpec.public === true;
105
+ const uiTemplates = Array.isArray(serverSpec.uiTemplates)
106
+ ? serverSpec.uiTemplates.map((t) => ({ name: t.name, route: t.route, csp: t.csp }))
107
+ : [];
108
+ const tools = list.tools.map((entry) => {
109
+ const spec = entry.spec || {};
110
+ return {
111
+ id: entry.id,
112
+ name: spec.name || entry.id,
113
+ description: spec.description || '',
114
+ inputSchema: spec.inputSchema || { type: 'object' },
115
+ scopes: spec.scopes,
116
+ public: spec.public === true ? true : undefined,
117
+ ui: spec.ui ? { template: spec.ui.template } : undefined,
118
+ export: entry.export,
119
+ };
120
+ });
121
+ return { server, tools, uiTemplates, serverPublic };
122
+ }
123
+ /** Merge the MCP manifest into an existing `manifest.json`. The embedded
124
+ * shape mirrors the standalone `mcp.json` so the Rust
125
+ * `platform::mcp::McpManifest` deserializer accepts both. */
126
+ export async function integrateMcpWithManifest(manifestPath, mcpManifest) {
127
+ if (!mcpManifest)
128
+ return;
129
+ const raw = await fs.readFile(manifestPath, 'utf-8');
130
+ const manifest = JSON.parse(raw);
131
+ manifest.mcp = mcpManifest;
132
+ await fs.writeFile(manifestPath, JSON.stringify(manifest, null, 2));
133
+ console.log('📝 Updated manifest.json with MCP configuration');
134
+ }
135
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/mcp/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { DiscoveredMcpSource } from './types.js';
2
+ /**
3
+ * Discover MCP tool/server source files: `mcp.ts|js|mjs` at the project
4
+ * root and anything under `mcp/`. Falls back to empty list if neither
5
+ * exists. Mirrors `discoverEventSources`.
6
+ */
7
+ export declare function discoverMcpSources(projectDir: string): Promise<DiscoveredMcpSource[]>;
8
+ //# sourceMappingURL=discover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/mcp/discover.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAkB3F"}
@@ -0,0 +1,52 @@
1
+ import { promises as fs } from 'node:fs';
2
+ import { join, relative, resolve } from 'node:path';
3
+ /**
4
+ * Discover MCP tool/server source files: `mcp.ts|js|mjs` at the project
5
+ * root and anything under `mcp/`. Falls back to empty list if neither
6
+ * exists. Mirrors `discoverEventSources`.
7
+ */
8
+ export async function discoverMcpSources(projectDir) {
9
+ const root = resolve(projectDir);
10
+ const sources = [];
11
+ for (const name of ['mcp.ts', 'mcp.js', 'mcp.mjs']) {
12
+ const p = join(root, name);
13
+ if (await exists(p)) {
14
+ sources.push({ absPath: p, relPath: relative(root, p) });
15
+ break;
16
+ }
17
+ }
18
+ const dir = join(root, 'mcp');
19
+ if (await exists(dir)) {
20
+ await walk(dir, root, sources);
21
+ }
22
+ return sources;
23
+ }
24
+ async function walk(dir, root, out) {
25
+ const entries = await fs.readdir(dir, { withFileTypes: true });
26
+ for (const entry of entries) {
27
+ if (entry.name.startsWith('.') || entry.name === 'node_modules' || entry.name === 'dist')
28
+ continue;
29
+ const full = join(dir, entry.name);
30
+ if (entry.isDirectory()) {
31
+ await walk(full, root, out);
32
+ continue;
33
+ }
34
+ if (!entry.isFile())
35
+ continue;
36
+ if (!/\.(ts|js|mjs)$/.test(entry.name))
37
+ continue;
38
+ if (/\.(test|spec)\./.test(entry.name) || entry.name.endsWith('.d.ts'))
39
+ continue;
40
+ out.push({ absPath: full, relPath: relative(root, full) });
41
+ }
42
+ }
43
+ async function exists(p) {
44
+ try {
45
+ await fs.access(p);
46
+ return true;
47
+ }
48
+ catch {
49
+ return false;
50
+ }
51
+ }
52
+ //# sourceMappingURL=discover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/mcp/discover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,UAAkB;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACjC,MAAM,OAAO,GAA0B,EAAE,CAAC;IAE1C,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3B,IAAI,MAAM,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACzD,MAAM;QACR,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9B,IAAI,MAAM,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,GAAW,EAAE,IAAY,EAAE,GAA0B;IACvE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QACnG,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAAE,SAAS;QAC9B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAS;QACjD,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QACjF,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,CAAS;IAC7B,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { DiscoveredMcpSource } from './types.js';
2
+ /**
3
+ * Generate the MCP entry module. Imports each discovered source file as a
4
+ * namespace, collects exports that carry the `__maravilla_mcp` marker (tools)
5
+ * and the optional `__maravilla_mcp_server` marker (server descriptor +
6
+ * UI templates), builds a registry, and exposes:
7
+ *
8
+ * - `globalThis.handleMcpTool(toolId, args, ctx)` — direct dispatcher call.
9
+ * - `globalThis.handleRequest(request)` — synthetic HTTP adapter so the
10
+ * existing Maravilla worker pool (which invokes `handleRequest`) can drive
11
+ * MCP tool calls the same way it drives events. The invoker POSTs
12
+ * `{ tool_id, args, identity }` as JSON and gets `{ ok, result }` back.
13
+ * - `__maravilla_mcp_list` (ESM export, build-time only) — tool + server
14
+ * descriptors for emitting `mcp.json`.
15
+ *
16
+ * Emitted as an ESM entry; the build pipeline produces both an IIFE bundle
17
+ * (for the Deno isolate) and an ESM bundle (for Node introspection) from the
18
+ * same source. Mirrors `generateEventsEntry`.
19
+ */
20
+ export declare function generateMcpEntry(sources: DiscoveredMcpSource[]): string;
21
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/mcp/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAoHvE"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Generate the MCP entry module. Imports each discovered source file as a
3
+ * namespace, collects exports that carry the `__maravilla_mcp` marker (tools)
4
+ * and the optional `__maravilla_mcp_server` marker (server descriptor +
5
+ * UI templates), builds a registry, and exposes:
6
+ *
7
+ * - `globalThis.handleMcpTool(toolId, args, ctx)` — direct dispatcher call.
8
+ * - `globalThis.handleRequest(request)` — synthetic HTTP adapter so the
9
+ * existing Maravilla worker pool (which invokes `handleRequest`) can drive
10
+ * MCP tool calls the same way it drives events. The invoker POSTs
11
+ * `{ tool_id, args, identity }` as JSON and gets `{ ok, result }` back.
12
+ * - `__maravilla_mcp_list` (ESM export, build-time only) — tool + server
13
+ * descriptors for emitting `mcp.json`.
14
+ *
15
+ * Emitted as an ESM entry; the build pipeline produces both an IIFE bundle
16
+ * (for the Deno isolate) and an ESM bundle (for Node introspection) from the
17
+ * same source. Mirrors `generateEventsEntry`.
18
+ */
19
+ export function generateMcpEntry(sources) {
20
+ const imports = sources
21
+ .map((src, i) => `import * as mod_${i} from ${JSON.stringify(src.absPath)};`)
22
+ .join('\n');
23
+ const modsArray = sources.map((_, i) => `mod_${i}`).join(', ');
24
+ return `// Maravilla MCP Entry - auto-generated, do not edit
25
+ ${imports}
26
+
27
+ const MODULES = [${modsArray}];
28
+ const TOOL_KEY = '__maravilla_mcp';
29
+ const SERVER_KEY = '__maravilla_mcp_server';
30
+ const REGISTRY = {};
31
+ let SERVER = null;
32
+
33
+ for (const mod of MODULES) {
34
+ for (const [name, val] of Object.entries(mod)) {
35
+ if (!val || typeof val !== 'object') continue;
36
+ if (SERVER_KEY in val) {
37
+ // Last server descriptor wins; apps declare at most one.
38
+ SERVER = val[SERVER_KEY];
39
+ continue;
40
+ }
41
+ if (TOOL_KEY in val && typeof val.handler === 'function') {
42
+ const spec = val[TOOL_KEY];
43
+ const id = spec.name || name;
44
+ REGISTRY[id] = { export: name, spec, handler: val.handler };
45
+ }
46
+ }
47
+ }
48
+
49
+ function buildCtx(identity) {
50
+ // Mirror globalThis.platform exactly — these are the same names users see
51
+ // everywhere else in their app via getPlatform().
52
+ const platform = (typeof globalThis !== 'undefined' && globalThis.platform) || {};
53
+ const id = identity || {};
54
+ return {
55
+ env: platform.env || {},
56
+ kv: platform.kv,
57
+ database: platform.database,
58
+ storage: platform.storage,
59
+ queue: platform.queue,
60
+ auth: platform.auth,
61
+ push: platform.push,
62
+ tenant: platform.tenant || 'default',
63
+ traceId: (globalThis.crypto?.randomUUID?.() || String(Date.now())),
64
+ // The authenticated end-user behind the token/key (may be null for a
65
+ // pure client-credentials call). Maps identity.* → ctx.user/ctx.client.
66
+ user: id.user_id
67
+ ? { id: id.user_id, email: id.email || '', groups: id.groups || [], scopes: id.scopes || [] }
68
+ : null,
69
+ client: id.client_id ? { id: id.client_id } : null,
70
+ // Escape hatch: full platform object for forward-compatibility.
71
+ platform,
72
+ };
73
+ }
74
+
75
+ async function handleMcpTool(toolId, args, ctx) {
76
+ const entry = REGISTRY[toolId];
77
+ if (!entry) {
78
+ throw new Error('MCP tool not registered: ' + toolId);
79
+ }
80
+ return entry.handler(args, ctx);
81
+ }
82
+
83
+ // Synthetic HTTP adapter — lets the existing worker pool (which expects
84
+ // globalThis.handleRequest) drive MCP tool calls. Invoker sends:
85
+ // POST /__mcp__/<tool_id>
86
+ // body: { "tool_id": "<tool>", "args": { ... }, "identity": { ... } }
87
+ async function handleRequest(request) {
88
+ let toolId = '<unknown>';
89
+ try {
90
+ const bodyText = await request.text();
91
+ const parsed = bodyText ? JSON.parse(bodyText) : {};
92
+ toolId = parsed.tool_id || '<missing>';
93
+ if (!parsed.tool_id) {
94
+ return new Response(
95
+ JSON.stringify({ ok: false, error: 'missing tool id' }),
96
+ { status: 400, headers: { 'content-type': 'application/json' } },
97
+ );
98
+ }
99
+ const ctx = buildCtx(parsed.identity);
100
+ const result = await handleMcpTool(toolId, parsed.args, ctx);
101
+ return new Response(
102
+ JSON.stringify({ ok: true, result: result === undefined ? null : result }),
103
+ { status: 200, headers: { 'content-type': 'application/json' } },
104
+ );
105
+ } catch (err) {
106
+ const msg = (err && (err.stack || err.message)) || String(err);
107
+ console.error('[mcp] tool invocation failed: tool=' + toolId + ' - ' + msg);
108
+ return new Response(
109
+ JSON.stringify({ ok: false, tool: toolId, error: String(err && err.message || err) }),
110
+ { status: 500, headers: { 'content-type': 'application/json' } },
111
+ );
112
+ }
113
+ }
114
+
115
+ if (typeof globalThis !== 'undefined') {
116
+ globalThis.handleMcpTool = handleMcpTool;
117
+ globalThis.handleRequest = handleRequest;
118
+ globalThis.__maravilla_mcp_registry = REGISTRY;
119
+ }
120
+
121
+ // Node-side introspection: adapter build reads this to emit mcp.json.
122
+ export const __maravilla_mcp_list = {
123
+ server: SERVER,
124
+ tools: Object.entries(REGISTRY).map(([id, entry]) => ({
125
+ id,
126
+ export: entry.export,
127
+ spec: entry.spec,
128
+ })),
129
+ };
130
+
131
+ export { handleMcpTool, handleRequest };
132
+ `;
133
+ }
134
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/mcp/generator.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAA8B;IAC7D,MAAM,OAAO,GAAG,OAAO;SACpB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;SAC5E,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE/D,OAAO;EACP,OAAO;;mBAEU,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyG3B,CAAC;AACF,CAAC"}
@@ -0,0 +1,74 @@
1
+ /** Local copy of the MCP manifest shapes — kept structurally in sync with
2
+ * `@maravilla-labs/platform/mcp` and `@maravilla-labs/adapter-core`.
3
+ * Duplicated so this build package has zero runtime dep on either.
4
+ * Rust deserializes the same JSON via `crates/platform/src/mcp/types.rs`. */
5
+ /** Reference from a tool to a declared UI template (iframe mini-app). */
6
+ export interface ToolUiRef {
7
+ /** Name of the `UiTemplateDescriptor` this tool renders with. */
8
+ template: string;
9
+ }
10
+ /** Descriptor for a single MCP tool, advertised in `tools/list`. */
11
+ export interface McpToolDescriptor {
12
+ /** Stable tool id (usually the export name). */
13
+ id: string;
14
+ /** Tool name surfaced to the client in `tools/list`. */
15
+ name: string;
16
+ /** Human-readable description of the tool. */
17
+ description: string;
18
+ /** JSON Schema for the tool input, sent verbatim in `tools/list`. */
19
+ inputSchema: Record<string, unknown>;
20
+ /** Scopes required to call the tool; dispatch enforces `scopes ⊆ identity`. */
21
+ scopes?: string[];
22
+ /** Per-tool public opt-in; callable anonymously even on a private server. */
23
+ public?: boolean;
24
+ /** Optional link to a UI template for iframe mini-app rendering. */
25
+ ui?: ToolUiRef;
26
+ /** Name of the exported member in the MCP bundle. */
27
+ export: string;
28
+ }
29
+ /** A UI template (iframe mini-app) declared via `defineMcpServer`. */
30
+ export interface UiTemplateDescriptor {
31
+ /** Template name referenced by `ToolUiRef.template`. */
32
+ name: string;
33
+ /** Tenant app route that renders the mini-app (e.g. `/_mcp/ui/order-card`). */
34
+ route: string;
35
+ /** Optional Content-Security-Policy applied when framing the template. */
36
+ csp?: string;
37
+ }
38
+ /** Static server identity advertised by the MCP `initialize` handshake. */
39
+ export interface McpServerInfo {
40
+ /** Human-readable server name (e.g. "Acme Tools"). */
41
+ name: string;
42
+ /** Optional semantic version of the server. */
43
+ version?: string;
44
+ /** Optional natural-language usage instructions for the client/model. */
45
+ instructions?: string;
46
+ }
47
+ /** Manifest emitted as the standalone `mcp.json` and merged into `manifest.mcp`. */
48
+ export interface McpManifest {
49
+ version: 1;
50
+ bundle: string;
51
+ server: McpServerInfo;
52
+ tools: McpToolDescriptor[];
53
+ uiTemplates: UiTemplateDescriptor[];
54
+ /** Server-level public flag — projected from the `mcp.public` config / the
55
+ * `defineMcpServer({ public })` spec. Mirrors `McpManifest.public` in Rust. */
56
+ public: boolean;
57
+ buildTime: string;
58
+ }
59
+ export interface BuildMcpOptions {
60
+ /** Project root. Discovery looks for `mcp.ts` and `mcp/**\/*.ts` here. */
61
+ projectDir?: string;
62
+ /** Output directory (default: `.maravilla`). */
63
+ outputDir?: string;
64
+ minify?: boolean;
65
+ sourcemap?: boolean;
66
+ production?: boolean;
67
+ }
68
+ export interface DiscoveredMcpSource {
69
+ /** Absolute path on disk. */
70
+ absPath: string;
71
+ /** Path relative to the project root. */
72
+ relPath: string;
73
+ }
74
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAAA;;;8EAG8E;AAE9E,yEAAyE;AACzE,MAAM,WAAW,SAAS;IACxB,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,oEAAoE;AACpE,MAAM,WAAW,iBAAiB;IAChC,gDAAgD;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oEAAoE;IACpE,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,sEAAsE;AACtE,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,2EAA2E;AAC3E,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,oFAAoF;AACpF,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC;oFACgF;IAChF,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,6 @@
1
+ /** Local copy of the MCP manifest shapes — kept structurally in sync with
2
+ * `@maravilla-labs/platform/mcp` and `@maravilla-labs/adapter-core`.
3
+ * Duplicated so this build package has zero runtime dep on either.
4
+ * Rust deserializes the same JSON via `crates/platform/src/mcp/types.rs`. */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAAA;;;8EAG8E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maravilla-labs/functions",
3
- "version": "0.8.3",
3
+ "version": "0.9.0",
4
4
  "description": "Maravilla Edge Functions bundler and development tools",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",