@nuwax-ai/openui-mcp 0.1.12 → 0.2.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/CHANGELOG.md +13 -0
- package/README.md +66 -289
- package/dist/server/artifact-store.d.ts +14 -6
- package/dist/server/artifact-store.d.ts.map +1 -1
- package/dist/server/artifact-store.js +73 -9
- package/dist/server/artifact-store.js.map +1 -1
- package/dist/server/contracts.d.ts +68 -0
- package/dist/server/contracts.d.ts.map +1 -1
- package/dist/server/contracts.js +42 -0
- package/dist/server/contracts.js.map +1 -1
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/mcp-server.d.ts.map +1 -1
- package/dist/server/mcp-server.js +5 -7
- package/dist/server/mcp-server.js.map +1 -1
- package/dist/server/openui-reference.d.ts +1 -0
- package/dist/server/openui-reference.d.ts.map +1 -1
- package/dist/server/openui-reference.js +8 -1
- package/dist/server/openui-reference.js.map +1 -1
- package/dist/server/project-root.d.ts +11 -0
- package/dist/server/project-root.d.ts.map +1 -0
- package/dist/server/project-root.js +51 -0
- package/dist/server/project-root.js.map +1 -0
- package/dist/server/render-service.d.ts +3 -8
- package/dist/server/render-service.d.ts.map +1 -1
- package/dist/server/render-service.js +21 -26
- package/dist/server/render-service.js.map +1 -1
- package/dist/server/runtime.d.ts +3 -4
- package/dist/server/runtime.d.ts.map +1 -1
- package/dist/server/runtime.js +4 -7
- package/dist/server/runtime.js.map +1 -1
- package/dist/server/stdio.js +8 -9
- package/dist/server/stdio.js.map +1 -1
- package/dist/server/version.d.ts +1 -1
- package/dist/server/version.d.ts.map +1 -1
- package/dist/server/version.js +1 -1
- package/dist/server/version.js.map +1 -1
- package/dist/web/{sidecar.css → runtime.css} +1 -1
- package/dist/web/{sidecar.js → runtime.js} +7578 -7549
- package/package.json +6 -9
- package/dist/server/config.d.ts +0 -14
- package/dist/server/config.d.ts.map +0 -1
- package/dist/server/config.js +0 -50
- package/dist/server/config.js.map +0 -1
- package/dist/server/http-app.d.ts +0 -11
- package/dist/server/http-app.d.ts.map +0 -1
- package/dist/server/http-app.js +0 -88
- package/dist/server/http-app.js.map +0 -1
- package/dist/server/http-server.d.ts +0 -10
- package/dist/server/http-server.d.ts.map +0 -1
- package/dist/server/http-server.js +0 -30
- package/dist/server/http-server.js.map +0 -1
- package/dist/server/http.d.ts +0 -3
- package/dist/server/http.d.ts.map +0 -1
- package/dist/server/http.js +0 -18
- package/dist/server/http.js.map +0 -1
- package/dist/server/page-template.d.ts +0 -2
- package/dist/server/page-template.d.ts.map +0 -1
- package/dist/server/page-template.js +0 -32
- package/dist/server/page-template.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB,EAAG,iBAA0B,CAAC;AAChE,eAAO,MAAM,mBAAmB,EAAG,KAAc,CAAC;AAClD,eAAO,MAAM,gBAAgB,EAAG,qBAA8B,CAAC;AAC/D,eAAO,MAAM,0BAA0B,EAAG,4BAAqC,CAAC;AAChF,eAAO,MAAM,4BAA4B,EAAG,wBAAiC,CAAC;AAC9E,eAAO,MAAM,0BAA0B,EAAG,4BAAqC,CAAC;AAChF,eAAO,MAAM,yBAAyB,EACpC,qCAA8C,CAAC;AAEjD,eAAO,MAAM,0BAA0B;;;;;;;;;;;iBAarC,CAAC;AAEH,QAAA,MAAM,aAAa;;;;;;;iBAIjB,CAAC;AAEH,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB,EAAG,iBAA0B,CAAC;AAChE,eAAO,MAAM,0BAA0B,EAAG,sBAA+B,CAAC;AAC1E,eAAO,MAAM,yBAAyB,EAAG,qBAA8B,CAAC;AACxE,eAAO,MAAM,mBAAmB,EAAG,KAAc,CAAC;AAClD,eAAO,MAAM,gBAAgB,EAAG,qBAA8B,CAAC;AAC/D,eAAO,MAAM,0BAA0B,EAAG,4BAAqC,CAAC;AAChF,eAAO,MAAM,4BAA4B,EAAG,wBAAiC,CAAC;AAC9E,eAAO,MAAM,0BAA0B,EAAG,4BAAqC,CAAC;AAChF,eAAO,MAAM,yBAAyB,EACpC,qCAA8C,CAAC;AAEjD,eAAO,MAAM,0BAA0B;;;;;;;;;;;iBAarC,CAAC;AAEH,QAAA,MAAM,aAAa;;;;;;;iBAIjB,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0ClC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoC/B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwB3B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;iBASlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
package/dist/server/contracts.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export const OPENUI_SCHEMA_VERSION = 'nuwax.openui/v1';
|
|
3
|
+
export const OPENUI_FILE_SCHEMA_VERSION = 'nuwax.openui-file/v1';
|
|
4
|
+
export const OPENUI_REF_SCHEMA_VERSION = 'nuwax.openui-ref/v1';
|
|
3
5
|
export const OPENUI_LANG_VERSION = '0.5';
|
|
4
6
|
export const OPENUI_TOOL_NAME = 'nuwax_render_openui';
|
|
5
7
|
export const OPENUI_REFERENCE_TOOL_NAME = 'nuwax_get_openui_reference';
|
|
@@ -22,6 +24,11 @@ const bindingSchema = z.object({
|
|
|
22
24
|
access: z.enum(['query', 'mutation']),
|
|
23
25
|
});
|
|
24
26
|
export const renderOpenUiInputSchema = z.object({
|
|
27
|
+
artifactId: z
|
|
28
|
+
.string()
|
|
29
|
+
.uuid()
|
|
30
|
+
.optional()
|
|
31
|
+
.describe('Optional stable artifact UUID. Reusing an existing ID atomically replaces data/{artifactId}.openui.json.'),
|
|
25
32
|
schemaVersion: z
|
|
26
33
|
.literal(OPENUI_SCHEMA_VERSION)
|
|
27
34
|
.describe('Always use nuwax.openui/v1.'),
|
|
@@ -88,4 +95,39 @@ export const openUiArtifactSchema = z.object({
|
|
|
88
95
|
createdAt: z.string().datetime(),
|
|
89
96
|
expiresAt: z.string().datetime(),
|
|
90
97
|
});
|
|
98
|
+
export const openUiFileSchema = z.object({
|
|
99
|
+
type: z.literal('nuwax.openui-file'),
|
|
100
|
+
schemaVersion: z.literal(OPENUI_FILE_SCHEMA_VERSION),
|
|
101
|
+
artifactId: z.string().uuid(),
|
|
102
|
+
title: z.string(),
|
|
103
|
+
presentation: z.object({
|
|
104
|
+
mode: z.enum(['inline', 'sidecar']),
|
|
105
|
+
autoOpen: z.boolean(),
|
|
106
|
+
preferredWidth: z.enum(['compact', 'normal', 'wide']).optional(),
|
|
107
|
+
}),
|
|
108
|
+
document: z.object({
|
|
109
|
+
language: z.literal('openui-lang'),
|
|
110
|
+
specVersion: z.literal(OPENUI_LANG_VERSION),
|
|
111
|
+
source: z.string(),
|
|
112
|
+
digest: z.string().regex(/^sha256:[a-f0-9]{64}$/),
|
|
113
|
+
}),
|
|
114
|
+
bindings: z.object({
|
|
115
|
+
tools: z.array(bindingSchema),
|
|
116
|
+
}),
|
|
117
|
+
fallback: z.object({
|
|
118
|
+
markdown: z.string(),
|
|
119
|
+
}),
|
|
120
|
+
createdAt: z.string().datetime(),
|
|
121
|
+
updatedAt: z.string().datetime(),
|
|
122
|
+
});
|
|
123
|
+
export const openUiArtifactRefSchema = z.object({
|
|
124
|
+
type: z.literal('nuwax.openui-ref'),
|
|
125
|
+
schemaVersion: z.literal(OPENUI_REF_SCHEMA_VERSION),
|
|
126
|
+
artifactId: z.string().uuid(),
|
|
127
|
+
path: z.string().regex(/^data\/[0-9a-f-]{36}\.openui\.json$/),
|
|
128
|
+
title: z.string(),
|
|
129
|
+
presentation: openUiFileSchema.shape.presentation,
|
|
130
|
+
digest: z.string().regex(/^sha256:[a-f0-9]{64}$/),
|
|
131
|
+
operation: z.enum(['created', 'updated']),
|
|
132
|
+
});
|
|
91
133
|
//# sourceMappingURL=contracts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/contracts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/contracts.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
|
package/dist/server/index.js
CHANGED
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoBpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,mBAAmB,GACjC,SAAS,CAkJX"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { OPENUI_AUTHORING_PROMPT_NAME, OPENUI_GUIDE_RESOURCE_URI, OPENUI_REFERENCE_TOOL_NAME, OPENUI_SCHEMA_RESOURCE_URI, OPENUI_TOOL_NAME, openUiReferenceInputSchema,
|
|
3
|
+
import { OPENUI_AUTHORING_PROMPT_NAME, OPENUI_GUIDE_RESOURCE_URI, OPENUI_REFERENCE_TOOL_NAME, OPENUI_SCHEMA_RESOURCE_URI, OPENUI_TOOL_NAME, openUiReferenceInputSchema, openUiArtifactRefSchema, renderOpenUiInputSchema, } from './contracts.js';
|
|
4
4
|
import { OPENUI_MCP_VERSION } from './version.js';
|
|
5
|
-
import { getOpenUiDslSchema, getOpenUiReference } from './openui-reference.js';
|
|
5
|
+
import { getOpenUiDslSchema, getOpenUiReference, OPENUI_TOOL_BOUNDARY, } from './openui-reference.js';
|
|
6
6
|
import { OpenUiPolicyError } from './policy.js';
|
|
7
7
|
export function createOpenUiMcpServer(renderService) {
|
|
8
8
|
const server = new McpServer({
|
|
@@ -73,9 +73,9 @@ export function createOpenUiMcpServer(renderService) {
|
|
|
73
73
|
}));
|
|
74
74
|
server.registerTool(OPENUI_TOOL_NAME, {
|
|
75
75
|
title: 'Render Nuwax OpenUI',
|
|
76
|
-
description:
|
|
76
|
+
description: `${OPENUI_TOOL_BOUNDARY}\nCreate or update a durable OpenUI artifact in the active project. Use this whenever the user asks to show, render, visualize, preview, or build a card, dashboard, chart, table, report, form, status panel, or other structured interface—even if they do not mention OpenUI. The tool writes data/{artifactId}.openui.json and returns a lightweight reference. Reuse artifactId to update an existing UI. OpenUI Lang is assignment-based and is NEVER XML/HTML/JSX: start with root = Stack(...), use positional arguments, and reference every defined variable. For complex UI or uncertain component signatures, call nuwax_get_openui_reference first. Reactive filters must handle empty initial bindings, and dynamic pie/radial charts must guard zero totals. Use inline for compact conversation UI and sidecar only for a full page.`,
|
|
77
77
|
inputSchema: renderOpenUiInputSchema,
|
|
78
|
-
outputSchema:
|
|
78
|
+
outputSchema: openUiArtifactRefSchema,
|
|
79
79
|
annotations: {
|
|
80
80
|
readOnlyHint: false,
|
|
81
81
|
destructiveHint: false,
|
|
@@ -89,9 +89,7 @@ export function createOpenUiMcpServer(renderService) {
|
|
|
89
89
|
content: [
|
|
90
90
|
{
|
|
91
91
|
type: 'text',
|
|
92
|
-
text: artifact.presentation.mode
|
|
93
|
-
? `OpenUI inline artifact ready: ${artifact.artifactId}`
|
|
94
|
-
: `OpenUI sidecar artifact ready: ${artifact.artifactId}. The Nuwax Host will open it through the authenticated proxied page URL. Do not expose structuredContent.page.url to the user because it is an internal local Runtime locator.`,
|
|
92
|
+
text: `OpenUI ${artifact.presentation.mode} artifact ${artifact.operation}: ${artifact.path}`,
|
|
95
93
|
},
|
|
96
94
|
],
|
|
97
95
|
structuredContent: artifact,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,gBAAgB,EAChB,0BAA0B,EAC1B,
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/mcp-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { OpenUiReferenceInput } from './contracts.js';
|
|
2
|
+
export declare const OPENUI_TOOL_BOUNDARY = "## Tool Boundary (CRITICAL)\n\n- nuwax_render_openui and nuwax_ask_question are separate tools; nuwax_render_openui is not an alias for nuwax_ask_question.\n- Use nuwax_render_openui to create or update a durable visual Artifact: cards, dashboards, charts, tables, reports, application forms, and interactive pages.\n- Never substitute nuwax_ask_question when the user asks to render, show, preview, demonstrate, or update OpenUI. Load the OpenUI reference, author openui-lang, then call nuwax_render_openui.\n- nuwax_ask_question is only for a blocking clarification or decision that the Agent must receive before it can continue. Its inline/modal/wizard schema is not OpenUI Lang and must never be passed to nuwax_render_openui.\n";
|
|
2
3
|
export declare function getOpenUiReference(profile: OpenUiReferenceInput['profile']): string;
|
|
3
4
|
export declare function getOpenUiDslSchema(): string;
|
|
4
5
|
//# sourceMappingURL=openui-reference.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openui-reference.d.ts","sourceRoot":"","sources":["../../src/openui-reference.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"openui-reference.d.ts","sourceRoot":"","sources":["../../src/openui-reference.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAW3D,eAAO,MAAM,oBAAoB,iuBAMhC,CAAC;AAoBF,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,oBAAoB,CAAC,SAAS,CAAC,GACvC,MAAM,CAMR;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C"}
|
|
@@ -5,6 +5,13 @@ const PROFILE_FOCUS = {
|
|
|
5
5
|
form: 'Focus on Form, FormControl, input components, Buttons/Action, validation rules, bindings, and Modal.',
|
|
6
6
|
all: 'Use any documented component, but prefer the smallest set that satisfies the request.',
|
|
7
7
|
};
|
|
8
|
+
export const OPENUI_TOOL_BOUNDARY = `## Tool Boundary (CRITICAL)
|
|
9
|
+
|
|
10
|
+
- nuwax_render_openui and nuwax_ask_question are separate tools; nuwax_render_openui is not an alias for nuwax_ask_question.
|
|
11
|
+
- Use nuwax_render_openui to create or update a durable visual Artifact: cards, dashboards, charts, tables, reports, application forms, and interactive pages.
|
|
12
|
+
- Never substitute nuwax_ask_question when the user asks to render, show, preview, demonstrate, or update OpenUI. Load the OpenUI reference, author openui-lang, then call nuwax_render_openui.
|
|
13
|
+
- nuwax_ask_question is only for a blocking clarification or decision that the Agent must receive before it can continue. Its inline/modal/wizard schema is not OpenUI Lang and must never be passed to nuwax_render_openui.
|
|
14
|
+
`;
|
|
8
15
|
const REACTIVE_DASHBOARD_GUARDRAILS = `## Nuwax Reactive Dashboard Guardrails (CRITICAL)
|
|
9
16
|
|
|
10
17
|
- Reactive input and select bindings start with an empty value. An optional filter MUST bypass @Filter until its binding is non-empty.
|
|
@@ -22,7 +29,7 @@ export function getOpenUiReference(profile) {
|
|
|
22
29
|
const guardrails = profile === 'dashboard' || profile === 'all'
|
|
23
30
|
? `\n\n${REACTIVE_DASHBOARD_GUARDRAILS}`
|
|
24
31
|
: '';
|
|
25
|
-
return
|
|
32
|
+
return `${OPENUI_TOOL_BOUNDARY}\nAuthoring profile: ${profile}. ${PROFILE_FOCUS[profile]}\nDo not emit XML, HTML, JSX, markdown fences, or explanations inside document.source.${guardrails}\n\n${normalizeGeneratedReference(openuiLibrary.prompt({}))}`;
|
|
26
33
|
}
|
|
27
34
|
export function getOpenUiDslSchema() {
|
|
28
35
|
return JSON.stringify(openuiLibrary.toJSONSchema(), null, 2);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openui-reference.js","sourceRoot":"","sources":["../../src/openui-reference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAI9D,MAAM,aAAa,GAAoD;IACrE,KAAK,EACH,2FAA2F;IAC7F,SAAS,EACP,gFAAgF;IAClF,IAAI,EAAE,sGAAsG;IAC5G,GAAG,EAAE,uFAAuF;CAC7F,CAAC;AAEF,MAAM,6BAA6B,GAAG;;;;;;;;;CASrC,CAAC;AAEF,SAAS,2BAA2B,CAAC,SAAiB;IACpD,OAAO,SAAS,CAAC,OAAO,CACtB,kGAAkG,EAClG,qKAAqK,CACtK,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAwC;IAExC,MAAM,UAAU,GACd,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,KAAK;QAC1C,CAAC,CAAC,OAAO,6BAA6B,EAAE;QACxC,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,
|
|
1
|
+
{"version":3,"file":"openui-reference.js","sourceRoot":"","sources":["../../src/openui-reference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAI9D,MAAM,aAAa,GAAoD;IACrE,KAAK,EACH,2FAA2F;IAC7F,SAAS,EACP,gFAAgF;IAClF,IAAI,EAAE,sGAAsG;IAC5G,GAAG,EAAE,uFAAuF;CAC7F,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;CAMnC,CAAC;AAEF,MAAM,6BAA6B,GAAG;;;;;;;;;CASrC,CAAC;AAEF,SAAS,2BAA2B,CAAC,SAAiB;IACpD,OAAO,SAAS,CAAC,OAAO,CACtB,kGAAkG,EAClG,qKAAqK,CACtK,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAwC;IAExC,MAAM,UAAU,GACd,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,KAAK;QAC1C,CAAC,CAAC,OAAO,6BAA6B,EAAE;QACxC,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,GAAG,oBAAoB,wBAAwB,OAAO,KAAK,aAAa,CAAC,OAAO,CAAC,yFAAyF,UAAU,OAAO,2BAA2B,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC5P,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface McpRootProvider {
|
|
2
|
+
(): Promise<Array<{
|
|
3
|
+
uri: string;
|
|
4
|
+
}>>;
|
|
5
|
+
}
|
|
6
|
+
export declare function createProjectRootResolver(options: {
|
|
7
|
+
env?: NodeJS.ProcessEnv;
|
|
8
|
+
cwd?: string;
|
|
9
|
+
listRoots?: McpRootProvider;
|
|
10
|
+
}): () => Promise<string>;
|
|
11
|
+
//# sourceMappingURL=project-root.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-root.d.ts","sourceRoot":"","sources":["../../src/project-root.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CACrC;AAgBD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B,SAIkB,OAAO,CAAC,MAAM,CAAC,CA8BjC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { realpath, stat } from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
async function validDirectory(candidate) {
|
|
5
|
+
try {
|
|
6
|
+
const resolved = await realpath(path.resolve(candidate));
|
|
7
|
+
if (!(await stat(resolved)).isDirectory())
|
|
8
|
+
return undefined;
|
|
9
|
+
return resolved;
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function looksLikeInstalledPackage(candidate) {
|
|
16
|
+
return /node_modules[\\/]@nuwax-ai[\\/]openui-mcp(?:[\\/]|$)/.test(candidate);
|
|
17
|
+
}
|
|
18
|
+
export function createProjectRootResolver(options) {
|
|
19
|
+
const env = options.env ?? process.env;
|
|
20
|
+
const cwd = options.cwd ?? process.cwd();
|
|
21
|
+
return async () => {
|
|
22
|
+
const explicit = env.NUWAX_OPENUI_PROJECT_ROOT;
|
|
23
|
+
if (explicit) {
|
|
24
|
+
const resolved = await validDirectory(explicit);
|
|
25
|
+
if (!resolved)
|
|
26
|
+
throw new Error(`Invalid NUWAX_OPENUI_PROJECT_ROOT: ${explicit}`);
|
|
27
|
+
return resolved;
|
|
28
|
+
}
|
|
29
|
+
if (options.listRoots) {
|
|
30
|
+
try {
|
|
31
|
+
const roots = await options.listRoots();
|
|
32
|
+
for (const root of roots) {
|
|
33
|
+
if (!root.uri.startsWith('file:'))
|
|
34
|
+
continue;
|
|
35
|
+
const resolved = await validDirectory(fileURLToPath(root.uri));
|
|
36
|
+
if (resolved)
|
|
37
|
+
return resolved;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// Roots are optional. A session-scoped MCP normally inherits the project cwd.
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const resolvedCwd = await validDirectory(cwd);
|
|
45
|
+
if (!resolvedCwd || looksLikeInstalledPackage(resolvedCwd)) {
|
|
46
|
+
throw new Error('Unable to resolve the active project directory. Run this MCP per Agent session, expose an MCP file root, or set NUWAX_OPENUI_PROJECT_ROOT.');
|
|
47
|
+
}
|
|
48
|
+
return resolvedCwd;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=project-root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-root.js","sourceRoot":"","sources":["../../src/project-root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAMzC,KAAK,UAAU,cAAc,CAAC,SAAiB;IAC7C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE;YAAE,OAAO,SAAS,CAAC;QAC5D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,SAAiB;IAClD,OAAO,sDAAsD,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAIzC;IACC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEzC,OAAO,KAAK,IAAqB,EAAE;QACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,yBAAyB,CAAC;QAC/C,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ;gBACX,MAAM,IAAI,KAAK,CAAC,sCAAsC,QAAQ,EAAE,CAAC,CAAC;YACpE,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;gBACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;wBAAE,SAAS;oBAC5C,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC/D,IAAI,QAAQ;wBAAE,OAAO,QAAQ,CAAC;gBAChC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,8EAA8E;YAChF,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,IAAI,yBAAyB,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CACb,4IAA4I,CAC7I,CAAC;QACJ,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type OpenUiArtifactRef } from './contracts.js';
|
|
2
2
|
import type { ArtifactStore } from './artifact-store.js';
|
|
3
|
-
export interface RenderServiceOptions {
|
|
4
|
-
baseUrl: string;
|
|
5
|
-
artifactTtlSeconds: number;
|
|
6
|
-
}
|
|
7
3
|
export declare class RenderOpenUiService {
|
|
8
4
|
private readonly store;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
render(rawInput: unknown): Promise<OpenUiArtifact>;
|
|
5
|
+
constructor(store: ArtifactStore);
|
|
6
|
+
render(rawInput: unknown): Promise<OpenUiArtifactRef>;
|
|
12
7
|
}
|
|
13
8
|
//# sourceMappingURL=render-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-service.d.ts","sourceRoot":"","sources":["../../src/render-service.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"render-service.d.ts","sourceRoot":"","sources":["../../src/render-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,iBAAiB,EAGvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQzD,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,aAAa;IAE3C,MAAM,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAsC5D"}
|
|
@@ -1,30 +1,25 @@
|
|
|
1
1
|
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
-
import {
|
|
2
|
+
import { OPENUI_FILE_SCHEMA_VERSION, openUiArtifactRefSchema, openUiFileSchema, renderOpenUiInputSchema, } from './contracts.js';
|
|
3
3
|
import { validateOpenUiDocument } from './openui-validator.js';
|
|
4
4
|
import { enforceOpenUiPolicy } from './policy.js';
|
|
5
5
|
function createDigest(source) {
|
|
6
6
|
return `sha256:${createHash('sha256').update(source).digest('hex')}`;
|
|
7
7
|
}
|
|
8
|
-
function trimTrailingSlash(value) {
|
|
9
|
-
return value.replace(/\/+$/, '');
|
|
10
|
-
}
|
|
11
8
|
export class RenderOpenUiService {
|
|
12
9
|
store;
|
|
13
|
-
|
|
14
|
-
constructor(store, options) {
|
|
10
|
+
constructor(store) {
|
|
15
11
|
this.store = store;
|
|
16
|
-
this.options = options;
|
|
17
12
|
}
|
|
18
13
|
async render(rawInput) {
|
|
19
14
|
const input = renderOpenUiInputSchema.parse(rawInput);
|
|
20
15
|
enforceOpenUiPolicy(input);
|
|
21
16
|
validateOpenUiDocument(input.document.source);
|
|
22
|
-
const artifactId = randomUUID();
|
|
23
|
-
const
|
|
24
|
-
const
|
|
17
|
+
const artifactId = input.artifactId ?? randomUUID();
|
|
18
|
+
const existing = await this.store.get(artifactId);
|
|
19
|
+
const now = new Date().toISOString();
|
|
25
20
|
const artifact = {
|
|
26
|
-
type: 'nuwax.openui',
|
|
27
|
-
schemaVersion:
|
|
21
|
+
type: 'nuwax.openui-file',
|
|
22
|
+
schemaVersion: OPENUI_FILE_SCHEMA_VERSION,
|
|
28
23
|
artifactId,
|
|
29
24
|
title: input.title,
|
|
30
25
|
presentation: input.presentation,
|
|
@@ -34,21 +29,21 @@ export class RenderOpenUiService {
|
|
|
34
29
|
},
|
|
35
30
|
bindings: input.bindings,
|
|
36
31
|
fallback: input.fallback,
|
|
37
|
-
createdAt: createdAt
|
|
38
|
-
|
|
39
|
-
...(input.presentation.mode === 'sidecar'
|
|
40
|
-
? {
|
|
41
|
-
page: {
|
|
42
|
-
url: `${trimTrailingSlash(this.options.baseUrl)}/openui/pages/${artifactId}`,
|
|
43
|
-
expiresAt: expiresAt.toISOString(),
|
|
44
|
-
sandboxProfile: 'openui-sidecar-v1',
|
|
45
|
-
},
|
|
46
|
-
}
|
|
47
|
-
: {}),
|
|
32
|
+
createdAt: existing?.createdAt ?? now,
|
|
33
|
+
updatedAt: now,
|
|
48
34
|
};
|
|
49
|
-
const validatedArtifact =
|
|
50
|
-
await this.store.put(validatedArtifact);
|
|
51
|
-
return
|
|
35
|
+
const validatedArtifact = openUiFileSchema.parse(artifact);
|
|
36
|
+
const operation = await this.store.put(validatedArtifact);
|
|
37
|
+
return openUiArtifactRefSchema.parse({
|
|
38
|
+
type: 'nuwax.openui-ref',
|
|
39
|
+
schemaVersion: 'nuwax.openui-ref/v1',
|
|
40
|
+
artifactId,
|
|
41
|
+
path: `data/${artifactId}.openui.json`,
|
|
42
|
+
title: validatedArtifact.title,
|
|
43
|
+
presentation: validatedArtifact.presentation,
|
|
44
|
+
digest: validatedArtifact.document.digest,
|
|
45
|
+
operation,
|
|
46
|
+
});
|
|
52
47
|
}
|
|
53
48
|
}
|
|
54
49
|
//# sourceMappingURL=render-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-service.js","sourceRoot":"","sources":["../../src/render-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"render-service.js","sourceRoot":"","sources":["../../src/render-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,GAIxB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,SAAS,YAAY,CAAC,MAAc;IAClC,OAAO,UAAU,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACvE,CAAC;AAED,MAAM,OAAO,mBAAmB;IACD;IAA7B,YAA6B,KAAoB;QAApB,UAAK,GAAL,KAAK,CAAe;IAAG,CAAC;IAErD,KAAK,CAAC,MAAM,CAAC,QAAiB;QAC5B,MAAM,KAAK,GAAsB,uBAAuB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzE,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC3B,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAE9C,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,UAAU,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,MAAM,QAAQ,GAAe;YAC3B,IAAI,EAAE,mBAAmB;YACzB,aAAa,EAAE,0BAA0B;YACzC,UAAU;YACV,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,QAAQ,EAAE;gBACR,GAAG,KAAK,CAAC,QAAQ;gBACjB,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;aAC5C;YACD,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,GAAG;YACrC,SAAS,EAAE,GAAG;SACf,CAAC;QAEF,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC1D,OAAO,uBAAuB,CAAC,KAAK,CAAC;YACnC,IAAI,EAAE,kBAAkB;YACxB,aAAa,EAAE,qBAAqB;YACpC,UAAU;YACV,IAAI,EAAE,QAAQ,UAAU,cAAc;YACtC,KAAK,EAAE,iBAAiB,CAAC,KAAK;YAC9B,YAAY,EAAE,iBAAiB,CAAC,YAAY;YAC5C,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,MAAM;YACzC,SAAS;SACV,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/dist/server/runtime.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { AppConfig } from './config.js';
|
|
1
|
+
import { FileArtifactStore, type ProjectRootResolver } from './artifact-store.js';
|
|
3
2
|
import { RenderOpenUiService } from './render-service.js';
|
|
4
|
-
export declare function createRuntime(
|
|
5
|
-
store:
|
|
3
|
+
export declare function createRuntime(resolveProjectRoot: ProjectRootResolver): {
|
|
4
|
+
store: FileArtifactStore;
|
|
6
5
|
renderService: RenderOpenUiService;
|
|
7
6
|
};
|
|
8
7
|
export type OpenUiRuntime = ReturnType<typeof createRuntime>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,wBAAgB,aAAa,CAAC,kBAAkB,EAAE,mBAAmB;;;EAKpE;AAED,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
package/dist/server/runtime.js
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { FileArtifactStore, } from './artifact-store.js';
|
|
2
2
|
import { RenderOpenUiService } from './render-service.js';
|
|
3
|
-
export function createRuntime(
|
|
4
|
-
const store = new
|
|
5
|
-
const renderService = new RenderOpenUiService(store
|
|
6
|
-
baseUrl: config.baseUrl,
|
|
7
|
-
artifactTtlSeconds: config.artifactTtlSeconds,
|
|
8
|
-
});
|
|
3
|
+
export function createRuntime(resolveProjectRoot) {
|
|
4
|
+
const store = new FileArtifactStore(resolveProjectRoot);
|
|
5
|
+
const renderService = new RenderOpenUiService(store);
|
|
9
6
|
return { store, renderService };
|
|
10
7
|
}
|
|
11
8
|
//# sourceMappingURL=runtime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAElB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,UAAU,aAAa,CAAC,kBAAuC;IACnE,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAErD,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;AAClC,CAAC"}
|
package/dist/server/stdio.js
CHANGED
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import 'dotenv/config';
|
|
3
3
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
|
-
import { loadConfig } from './config.js';
|
|
5
|
-
import { closeHttpServer, startHttpServer } from './http-server.js';
|
|
6
4
|
import { createOpenUiMcpServer } from './mcp-server.js';
|
|
5
|
+
import { createProjectRootResolver } from './project-root.js';
|
|
7
6
|
import { createRuntime } from './runtime.js';
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
const resolveProjectRoot = createProjectRootResolver({
|
|
8
|
+
listRoots: async () => {
|
|
9
|
+
const result = await server.server.listRoots();
|
|
10
|
+
return result.roots;
|
|
11
|
+
},
|
|
12
|
+
});
|
|
13
|
+
const runtime = createRuntime(resolveProjectRoot);
|
|
13
14
|
const { renderService } = runtime;
|
|
14
15
|
const server = createOpenUiMcpServer(renderService);
|
|
15
16
|
const transport = new StdioServerTransport();
|
|
16
17
|
await server.connect(transport);
|
|
17
18
|
async function shutdown() {
|
|
18
19
|
await server.close();
|
|
19
|
-
if (sidecarServer)
|
|
20
|
-
await closeHttpServer(sidecarServer);
|
|
21
20
|
}
|
|
22
21
|
process.on('SIGINT', () => {
|
|
23
22
|
void shutdown().finally(() => process.exit(0));
|
package/dist/server/stdio.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/stdio.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/stdio.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;IACnD,SAAS,EAAE,KAAK,IAAI,EAAE;QACpB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAC/C,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;CACF,CAAC,CAAC;AACH,MAAM,OAAO,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAC;AAClD,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;AAClC,MAAM,MAAM,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;AACpD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAE7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAEhC,KAAK,UAAU,QAAQ;IACrB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;AACvB,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,KAAK,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AACH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;IACzB,KAAK,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC"}
|
package/dist/server/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const OPENUI_MCP_VERSION = "0.1
|
|
1
|
+
export declare const OPENUI_MCP_VERSION = "0.2.1";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,UAAU,CAAC"}
|
package/dist/server/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const OPENUI_MCP_VERSION = '0.1
|
|
1
|
+
export const OPENUI_MCP_VERSION = '0.2.1';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC"}
|