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 +1 -1
- package/package.json +1 -1
- package/templates/blank/AGENTS.md +1 -1
- package/templates/blank/Dockerfile +1 -1
- package/templates/blank/_gitignore +2 -1
- package/templates/blank/node_modules/.bin/tsx +21 -0
- package/templates/blank/package.json +2 -1
- package/templates/blank/src/server.ts +0 -5
- package/templates/demo/AGENTS.md +1 -1
- package/templates/demo/Dockerfile +1 -1
- package/templates/demo/_gitignore +2 -1
- package/templates/demo/package.json +1 -1
- package/templates/demo/src/server.ts +23 -6
- package/templates/demo/src/views/components/steps/tool-output.tsx +2 -2
- package/templates/blank/src/vite-manifest.d.ts +0 -4
- package/templates/demo/src/vite-manifest.d.ts +0 -4
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
This is a ChatGPT/MCP app built with Skybridge. ALWAYS use the `
|
|
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/
|
|
53
|
+
CMD ["node", "dist/__entry.js"]
|
|
@@ -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.
|
|
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;
|
package/templates/demo/AGENTS.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
This is a ChatGPT/MCP app built with Skybridge. ALWAYS use the `
|
|
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/
|
|
53
|
+
CMD ["node", "dist/__entry.js"]
|
|
@@ -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
|
|
27
|
-
to see
|
|
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>
|