diff --git a/build.ts b/build.ts
index d157b91..c32f431 100644
--- a/build.ts
+++ b/build.ts
@@ -25,45 +25,45 @@ async function buildJs(
}
await Promise.all([
- buildJs("src/index.ts", { outdir: "dist/src" }),
- buildJs("src/react/useApp.tsx", { outdir: "dist/src/react" }),
- buildJs("examples/example-ui-react.tsx", { outdir: "dist/examples" }),
- buildJs("examples/example-ui.ts", { outdir: "dist/examples" }),
- buildJs("examples/example-server.ts", {
- target: "node",
- outdir: "dist/examples",
- }),
+ buildJs("src/app.ts"),
+ buildJs("src/react/index.tsx", { outdir: "dist/react" }),
+ // buildJs("examples/example-ui-react.tsx", { outdir: "dist/examples" }),
+ // buildJs("examples/example-ui.ts", { outdir: "dist/examples" }),
+ // buildJs("examples/example-server.ts", {
+ // target: "node",
+ // outdir: "dist/examples",
+ // }),
]);
-async function inlineHtml(htmlFilePath: string, outputFilePath: string) {
- let html = await readFile(htmlFilePath, "utf-8");
- // Find all src sources, then fetch them, then replace them
- const files = html.matchAll(
- / to prevent premature script tag closing
- // This is the standard way to inline scripts safely
- scriptContent = scriptContent.replace(/<\/script>/gi, "<\\/script>");
- return ``;
- },
- );
- await writeFile(outputFilePath, html);
-}
+// async function inlineHtml(htmlFilePath: string, outputFilePath: string) {
+// let html = await readFile(htmlFilePath, "utf-8");
+// // Find all src sources, then fetch them, then replace them
+// const files = html.matchAll(
+// / to prevent premature script tag closing
+// // This is the standard way to inline scripts safely
+// scriptContent = scriptContent.replace(/<\/script>/gi, "<\\/script>");
+// return ``;
+// },
+// );
+// await writeFile(outputFilePath, html);
+// }
-await inlineHtml("examples/example-ui.html", "dist/examples/example-ui.html");
-await inlineHtml(
- "examples/example-ui-react.html",
- "dist/examples/example-ui-react.html",
-);
+// await inlineHtml("examples/example-ui.html", "dist/examples/example-ui.html");
+// await inlineHtml(
+// "examples/example-ui-react.html",
+// "dist/examples/example-ui-react.html",
+// );
diff --git a/index.ts b/index.ts
deleted file mode 100644
index ef907bf..0000000
--- a/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export { App } from "./app";
-export { PostMessageTransport } from "./message-transport";
-export * from "./types";
diff --git a/package.json b/package.json
index 14accbd..2cf7754 100644
--- a/package.json
+++ b/package.json
@@ -4,11 +4,16 @@
"version": "1.0.0",
"description": "Hey",
"type": "module",
- "main": "./src/index.ts",
+ "main": "./dist/app.js",
"exports": {
- ".": "./src/index.ts",
- "./types": "./src/types.ts",
- "./react/useApp": "./src/react/useApp.tsx"
+ ".": {
+ "types": "./dist/app.d.ts",
+ "default": "./dist/app.js"
+ },
+ "./react": {
+ "types": "./dist/react/index.d.ts",
+ "default": "./dist/react/index.js"
+ }
},
"scripts": {
"start:example-server0": "tsx examples/example-server.ts",
diff --git a/react/useApp.tsx b/react/useApp.tsx
deleted file mode 100644
index 43a8c3a..0000000
--- a/react/useApp.tsx
+++ /dev/null
@@ -1,70 +0,0 @@
-import { useEffect, useState } from "react";
-import { Implementation } from "@modelcontextprotocol/sdk/types.js";
-import { Client } from "@modelcontextprotocol/sdk/client";
-import { App, McpUiAppCapabilities, PostMessageTransport } from "../app";
-export * from "../app";
-
-export interface UseAppOptions {
- appInfo: Implementation;
- capabilities: McpUiAppCapabilities;
- /**
- * Called after client is created but before connection.
- * Use this to register request/notification handlers via
- * client.setRequestHandler() and client.setNotificationHandler().
- */
- onAppCreated?: (app: App) => void;
-}
-
-export interface AppState {
- app: App | null;
- isConnected: boolean;
- error: Error | null;
-}
-
-export function useApp({
- appInfo,
- capabilities,
- onAppCreated,
-}: UseAppOptions): AppState {
- const [app, setApp] = useState(null);
- const [isConnected, setIsConnected] = useState(false);
- const [error, setError] = useState(null);
-
- useEffect(() => {
- let mounted = true;
-
- async function connect() {
- try {
- const transport = new PostMessageTransport(window.parent);
- const app = new App(appInfo, capabilities);
-
- // Register handlers BEFORE connecting
- onAppCreated?.(app);
-
- await app.connect(transport);
-
- if (mounted) {
- setApp(app);
- setIsConnected(true);
- setError(null);
- }
- } catch (error) {
- if (mounted) {
- setApp(null);
- setIsConnected(false);
- setError(
- error instanceof Error ? error : new Error("Failed to connect"),
- );
- }
- }
- }
-
- connect();
-
- return () => {
- mounted = false;
- };
- }, []); // Intentionally not including options to avoid reconnection
-
- return { app, isConnected, error };
-}
diff --git a/react/useAutoResize.ts b/react/useAutoResize.ts
deleted file mode 100644
index ce39c75..0000000
--- a/react/useAutoResize.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { useEffect, RefObject } from "react";
-import { App } from "../app";
-
-/**
- * Custom hook that automatically reports size changes to the parent window.
- *
- * @param client - MCP UI client for sending size notifications
- */
-export function useAutoResize(
- app: App | null,
- elementRef?: RefObject,
-) {
- useEffect(() => {
- if (!app) {
- return;
- }
-
- return app.setupSizeChangeNotifications();
- }, [app, elementRef]);
-}
diff --git a/src/index.ts b/src/index.ts
deleted file mode 100644
index ef907bf..0000000
--- a/src/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export { App } from "./app";
-export { PostMessageTransport } from "./message-transport";
-export * from "./types";
diff --git a/src/peer.ts_ b/src/peer.ts_
deleted file mode 100644
index 495b540..0000000
--- a/src/peer.ts_
+++ /dev/null
@@ -1,351 +0,0 @@
-// import {
-// z,
-// ZodRawShape,
-// ZodLiteral,
-// ZodObject,
-// ZodString,
-// ZodTypeAny,
-// ZodType,
-// ZodTypeDef,
-// ZodOptional,
-// } from "zod";
-// import { Client } from "@modelcontextprotocol/sdk/client/index.js";
-// import {
-// // ToolCallback,
-// RegisteredTool,
-// } from "@modelcontextprotocol/sdk/server/mcp.js";
-// import { Server } from "@modelcontextprotocol/sdk/server/index.js";
-// import {
-// Protocol,
-// type RequestOptions,
-// type RequestHandlerExtra,
-// } from "@modelcontextprotocol/sdk/shared/protocol.js";
-
-// import {
-// CallToolRequestSchema,
-// CallToolResult,
-// CallToolResultSchema,
-// CancelledNotificationSchema,
-// ClientCapabilities,
-// ClientCapabilitiesSchema,
-// Request,
-// Implementation,
-// JSONRPCError,
-// JSONRPCMessage,
-// JSONRPCMessageSchema,
-// JSONRPCNotification,
-// JSONRPCResponse,
-// ListPromptsRequestSchema,
-// ListPromptsResultSchema,
-// ListResourcesRequestSchema,
-// ListResourcesResultSchema,
-// ListResourceTemplatesRequestSchema,
-// ListResourceTemplatesResultSchema,
-// LoggingMessageNotification,
-// LoggingMessageNotificationSchema,
-// MessageExtraInfo,
-// Notification,
-// PromptListChangedNotificationSchema,
-// RequestId,
-// ResourceListChangedNotificationSchema,
-// Result,
-// ServerCapabilities,
-// ServerCapabilitiesSchema,
-// ServerNotification,
-// ServerRequest,
-// ToolAnnotations,
-// ToolListChangedNotificationSchema,
-// } from "@modelcontextprotocol/sdk/types.js";
-// import {
-// Transport,
-// TransportSendOptions,
-// } from "@modelcontextprotocol/sdk/shared/transport.js";
-// import {
-// McpUiToolInputNotification,
-// McpUiToolInputNotificationSchema,
-// McpUiToolResultNotification,
-// McpUiToolResultNotificationSchema,
-// McpUiHostCapabilities,
-// McpUiHostInfo,
-// McpUiInitializedNotification,
-// McpUiInitializeRequest,
-// McpUiInitializeResultSchema,
-// McpUiIntentRequest,
-// McpUiIntentRequestSchema,
-// McpUiIntentResultSchema,
-// McpUiRenderDataRequest,
-// McpUiRenderDataRequestSchema,
-// McpUiMessageRequest,
-// McpUiMessageRequestSchema,
-// McpUiMessageResult,
-// McpUiMessageResultSchema,
-// McpUiOpenLinkRequest,
-// McpUiOpenLinkRequestSchema,
-// McpUiOpenLinkResultSchema,
-// McpUiRenderDataResultSchema,
-// McpUiSizeChangeNotification,
-// McpUiSizeChangeNotificationSchema,
-// } from "./types";
-
-// export { PostMessageTransport } from "./message-transport.js";
-
-// if (false) {
-// let server: Server;
-// let client: Client;
-// }
-
-// const McpUiInitializeRequestSchema = z.object({
-// method: z.literal("ui/initialize"),
-// params: z.object({
-// name: z.string(),
-// version: z.string(),
-// capabilities: ServerCapabilitiesSchema.extend(
-// ClientCapabilitiesSchema.shape,
-// ),
-// }),
-// });
-
-// /**
-// * Converts a provided Zod schema to a Zod object if it is a ZodRawShape,
-// * otherwise returns the schema as is.
-// */
-// function getZodSchemaObject(
-// schema: ZodRawShape | ZodType