create-skybridge 1.0.2 → 1.0.4

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.js CHANGED
@@ -238,7 +238,7 @@ export async function init(args = process.argv.slice(2)) {
238
238
  "add",
239
239
  "alpic-ai/skybridge",
240
240
  "--skill",
241
- "chatgpt-app-builder",
241
+ "skybridge",
242
242
  "--agent",
243
243
  "universal",
244
244
  "claude-code",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-skybridge",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "author": "Alpic",
@@ -1 +1 @@
1
- This is a ChatGPT/MCP app built with Skybridge. ALWAYS use the `chatgpt-app-builder` skill when planning or updating the codebase.
1
+ This is a ChatGPT/MCP app built with Skybridge. ALWAYS use the `skybridge` skill when planning or updating the codebase.
@@ -50,4 +50,4 @@ EXPOSE 3000
50
50
  # Run the built server directly rather than via `npm start` / `skybridge start`.
51
51
  # Each wrapper adds a process layer that can swallow SIGTERM, which makes
52
52
  # graceful shutdowns time out on platforms like Cloud Run, Fly, and k8s.
53
- CMD ["node", "dist/server.js"]
53
+ CMD ["node", "dist/__entry.js"]
@@ -3,4 +3,5 @@ dist/
3
3
  .env*
4
4
  .DS_store
5
5
  *.tsbuildinfo
6
- .skybridge/
6
+ .skybridge/
7
+ .vercel/
@@ -0,0 +1,21 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/home/runner/work/skybridge/skybridge/node_modules/.pnpm/tsx@4.21.0/node_modules/tsx/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/tsx@4.21.0/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/home/runner/work/skybridge/skybridge/node_modules/.pnpm/tsx@4.21.0/node_modules/tsx/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/tsx@4.21.0/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ if [ -x "$basedir/node" ]; then
18
+ exec "$basedir/node" "$basedir/../tsx/dist/cli.mjs" "$@"
19
+ else
20
+ exec node "$basedir/../tsx/dist/cli.mjs" "$@"
21
+ fi
@@ -13,13 +13,14 @@
13
13
  },
14
14
  "dependencies": {
15
15
  "@modelcontextprotocol/sdk": "^1.29.0",
16
- "skybridge": "^1.0.2",
16
+ "skybridge": "^1.0.4",
17
17
  "vite": "^8.0.3"
18
18
  },
19
19
  "devDependencies": {
20
20
  "@skybridge/devtools": "^1.0.0",
21
21
  "@types/node": "^24.12.0",
22
22
  "alpic": "^1.104.1",
23
+ "tsx": "^4.21.0",
23
24
  "typescript": "^6.0.2"
24
25
  },
25
26
  "engines": {
@@ -11,11 +11,6 @@ const server = new McpServer(
11
11
  // Register tools with `server.registerTool(...)`.
12
12
  // Docs: https://docs.skybridge.tech/api-reference/register-tool
13
13
 
14
- if (process.env.NODE_ENV === "production") {
15
- const { default: manifest } = await import("./vite-manifest.js");
16
- server.setViteManifest(manifest);
17
- }
18
-
19
14
  export default await server.run();
20
15
 
21
16
  export type AppType = typeof server;
@@ -1 +1 @@
1
- This is a ChatGPT/MCP app built with Skybridge. ALWAYS use the `chatgpt-app-builder` skill when planning or updating the codebase.
1
+ This is a ChatGPT/MCP app built with Skybridge. ALWAYS use the `skybridge` skill when planning or updating the codebase.
@@ -50,4 +50,4 @@ EXPOSE 3000
50
50
  # Run the built server directly rather than via `npm start` / `skybridge start`.
51
51
  # Each wrapper adds a process layer that can swallow SIGTERM, which makes
52
52
  # graceful shutdowns time out on platforms like Cloud Run, Fly, and k8s.
53
- CMD ["node", "dist/server.js"]
53
+ CMD ["node", "dist/__entry.js"]
@@ -3,4 +3,5 @@ dist/
3
3
  .env*
4
4
  .DS_store
5
5
  *.tsbuildinfo
6
- .skybridge/
6
+ .skybridge/
7
+ .vercel/
@@ -17,7 +17,7 @@
17
17
  "lucide-react": "^1.14.0",
18
18
  "react": "^19.2.4",
19
19
  "react-dom": "^19.2.4",
20
- "skybridge": "^1.0.2",
20
+ "skybridge": "^1.0.4",
21
21
  "sonner": "^2.0.7",
22
22
  "tw-animate-css": "^1.4.0",
23
23
  "vite": "^8.0.3",
@@ -15,8 +15,20 @@ const server = new McpServer(
15
15
  inputSchema: {
16
16
  name: z.string().optional().describe("The user name."),
17
17
  },
18
+ annotations: {
19
+ title: "Start Skybridge onboarding",
20
+ readOnlyHint: true,
21
+ destructiveHint: false,
22
+ openWorldHint: false,
23
+ },
24
+ _meta: {
25
+ "openai/toolInvocation/invoking": "Starting the Skybridge onboarding…",
26
+ "openai/toolInvocation/invoked": "Onboarding ready.",
27
+ },
18
28
  view: {
19
29
  component: "onboarding",
30
+ // Replace with the URL your widget will be served from in production.
31
+ domain: "https://skybridge.tech",
20
32
  description: "Onboarding deck",
21
33
  csp: {
22
34
  resourceDomains: [
@@ -30,7 +42,7 @@ const server = new McpServer(
30
42
  async ({ name }) => {
31
43
  return {
32
44
  structuredContent: { name },
33
- content: [{ type: "text", text: `User name: ${name}` }],
45
+ content: [{ type: "text", text: `User name: ${name ?? "friend"}` }],
34
46
  isError: false,
35
47
  };
36
48
  },
@@ -39,6 +51,16 @@ const server = new McpServer(
39
51
  {
40
52
  name: "get-fortune-cookie",
41
53
  description: "Get fortune cookie",
54
+ annotations: {
55
+ title: "Get a fortune cookie",
56
+ readOnlyHint: true,
57
+ destructiveHint: false,
58
+ openWorldHint: false,
59
+ },
60
+ _meta: {
61
+ "openai/toolInvocation/invoking": "Cracking open a fortune cookie…",
62
+ "openai/toolInvocation/invoked": "Fortune revealed.",
63
+ },
42
64
  },
43
65
  async () => {
44
66
  const predictions = [
@@ -67,11 +89,6 @@ const server = new McpServer(
67
89
  },
68
90
  );
69
91
 
70
- if (process.env.NODE_ENV === "production") {
71
- const { default: manifest } = await import("./vite-manifest.js");
72
- server.setViteManifest(manifest);
73
- }
74
-
75
92
  export default await server.run();
76
93
 
77
94
  export type AppType = typeof server;
@@ -23,8 +23,8 @@ export default function ToolOutput() {
23
23
  ) : (
24
24
  <p>
25
25
  The view reads the <strong>tool output</strong>, but no{" "}
26
- <code>name</code> was passed this time. Try again with you surname
27
- to see with this view personalize.
26
+ <code>name</code> was passed this time. Try again with your surname
27
+ to see how this view personalizes.
28
28
  </p>
29
29
  )}
30
30
  </div>
@@ -1,4 +0,0 @@
1
- // Typed shim for the Vite manifest emitted by `skybridge build`. The actual
2
- // `vite-manifest.js` is generated alongside this file and gitignored.
3
- declare const manifest: Record<string, { file: string }>;
4
- export default manifest;
@@ -1,4 +0,0 @@
1
- // Typed shim for the Vite manifest emitted by `skybridge build`. The actual
2
- // `vite-manifest.js` is generated alongside this file and gitignored.
3
- declare const manifest: Record<string, { file: string }>;
4
- export default manifest;