sunpeak 0.20.60 → 0.20.64
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/README.md +3 -0
- package/bin/commands/inspect.mjs +10 -7
- package/bin/commands/new.mjs +11 -8
- package/bin/commands/test-init.mjs +1 -0
- package/bin/commands/test.mjs +8 -4
- package/bin/lib/live/chatgpt-page.mjs +40 -25
- package/bin/lib/live/global-setup.mjs +2 -2
- package/bin/lib/live/host-page.mjs +30 -24
- package/bin/lib/resolve-bin.mjs +18 -0
- package/bin/lib/test/base-config.mjs +3 -1
- package/bin/lib/test/test-config.mjs +11 -2
- package/bin/lib/test/test-fixtures.mjs +12 -3
- package/bin/sunpeak.js +4 -2
- package/dist/chatgpt/index.cjs +1 -1
- package/dist/chatgpt/index.js +1 -1
- package/dist/claude/index.cjs +1 -1
- package/dist/claude/index.js +1 -1
- package/dist/embed.css +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/inspector/index.cjs +1 -1
- package/dist/inspector/index.js +1 -1
- package/dist/{inspector-WIO0nm2Q.cjs → inspector-Cl5w_7yQ.cjs} +7 -4
- package/dist/inspector-Cl5w_7yQ.cjs.map +1 -0
- package/dist/{inspector-CFSIZYOm.js → inspector-DPJeSQAd.js} +7 -4
- package/dist/inspector-DPJeSQAd.js.map +1 -0
- package/dist/protocol-DVkrOIAq.cjs.map +1 -1
- package/dist/protocol-fGgeFIiL.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +16 -15
- package/template/README.md +12 -4
- package/template/dist/albums/albums.html +4 -4
- package/template/dist/albums/albums.json +1 -1
- package/template/dist/carousel/carousel.html +7 -7
- package/template/dist/carousel/carousel.json +1 -1
- package/template/dist/map/map.html +7 -7
- package/template/dist/map/map.json +1 -1
- package/template/dist/review/review.html +4 -4
- package/template/dist/review/review.json +1 -1
- package/template/node_modules/.bin/playwright +2 -2
- package/template/node_modules/.bin/vite +2 -2
- package/template/node_modules/.bin/vitest +2 -2
- package/template/node_modules/.vite/deps/_metadata.json +4 -4
- package/template/node_modules/.vite-mcp/deps/_metadata.json +21 -21
- package/template/node_modules/.vite-mcp/deps/embla-carousel-react.js +2 -1
- package/template/node_modules/.vite-mcp/deps/embla-carousel-react.js.map +1 -1
- package/template/node_modules/.vite-mcp/deps/external-D8EJN_Cc.js.map +1 -1
- package/template/node_modules/.vite-mcp/deps/mapbox-gl.js +114 -87
- package/template/node_modules/.vite-mcp/deps/mapbox-gl.js.map +1 -1
- package/template/node_modules/.vite-mcp/deps/tailwind-merge.js.map +1 -1
- package/template/node_modules/.vite-mcp/deps/vitest.js +40 -24
- package/template/node_modules/.vite-mcp/deps/vitest.js.map +1 -1
- package/template/package.json +6 -5
- package/template/tests/e2e/carousel.spec.ts +9 -9
- package/template/tests/e2e/visual.spec.ts-snapshots/albums-dark-chatgpt-darwin.png +0 -0
- package/template/tests/e2e/visual.spec.ts-snapshots/albums-dark-claude-darwin.png +0 -0
- package/template/tests/e2e/visual.spec.ts-snapshots/albums-fullscreen-chatgpt-darwin.png +0 -0
- package/template/tests/e2e/visual.spec.ts-snapshots/albums-fullscreen-claude-darwin.png +0 -0
- package/template/tests/e2e/visual.spec.ts-snapshots/albums-light-chatgpt-darwin.png +0 -0
- package/template/tests/e2e/visual.spec.ts-snapshots/albums-light-claude-darwin.png +0 -0
- package/template/vitest.config.ts +2 -0
- package/dist/inspector-CFSIZYOm.js.map +0 -1
- package/dist/inspector-WIO0nm2Q.cjs.map +0 -1
package/dist/style.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! tailwindcss v4.3.
|
|
1
|
+
/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */
|
|
2
2
|
@layer properties {
|
|
3
3
|
@supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
|
|
4
4
|
*, :before, :after, ::backdrop {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sunpeak",
|
|
3
|
-
"version": "0.20.
|
|
3
|
+
"version": "0.20.64",
|
|
4
4
|
"description": "App framework, testing framework, and inspector for MCP Apps.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -159,42 +159,43 @@
|
|
|
159
159
|
}
|
|
160
160
|
},
|
|
161
161
|
"dependencies": {
|
|
162
|
-
"@ai-sdk/anthropic": "^4.0.
|
|
163
|
-
"@ai-sdk/openai": "^4.0.
|
|
164
|
-
"@clack/prompts": "^1.
|
|
162
|
+
"@ai-sdk/anthropic": "^4.0.8",
|
|
163
|
+
"@ai-sdk/openai": "^4.0.7",
|
|
164
|
+
"@clack/prompts": "^1.7.0",
|
|
165
165
|
"@modelcontextprotocol/ext-apps": "^1.7.4",
|
|
166
166
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
167
167
|
"@vitejs/plugin-react": "^6.0.3",
|
|
168
|
-
"ai": "^7.0.
|
|
168
|
+
"ai": "^7.0.15",
|
|
169
169
|
"clsx": "^2.1.1",
|
|
170
170
|
"esbuild": "^0.28.1",
|
|
171
171
|
"tailwind-merge": "^3.6.0",
|
|
172
|
-
"vite": "8.1.
|
|
172
|
+
"vite": "8.1.3",
|
|
173
173
|
"zod": "^4.4.3"
|
|
174
174
|
},
|
|
175
175
|
"devDependencies": {
|
|
176
|
-
"@playwright/test": "1.
|
|
177
|
-
"@
|
|
178
|
-
"@tailwindcss/
|
|
176
|
+
"@playwright/test": "1.61.1",
|
|
177
|
+
"@rolldown/pluginutils": "^1.0.1",
|
|
178
|
+
"@tailwindcss/cli": "^4.3.2",
|
|
179
|
+
"@tailwindcss/vite": "^4.3.2",
|
|
179
180
|
"@testing-library/jest-dom": "^6.9.1",
|
|
180
181
|
"@testing-library/react": "^16.3.2",
|
|
181
182
|
"@testing-library/user-event": "^14.6.1",
|
|
182
|
-
"@types/node": "^26.0
|
|
183
|
+
"@types/node": "^26.1.0",
|
|
183
184
|
"@types/react": "^19.2.17",
|
|
184
185
|
"@types/react-dom": "^19.2.3",
|
|
185
|
-
"@typescript-eslint/eslint-plugin": "^8.62.
|
|
186
|
-
"@typescript-eslint/parser": "^8.62.
|
|
186
|
+
"@typescript-eslint/eslint-plugin": "^8.62.1",
|
|
187
|
+
"@typescript-eslint/parser": "^8.62.1",
|
|
187
188
|
"eslint": "^9.39.4",
|
|
188
189
|
"eslint-config-prettier": "^10.1.8",
|
|
189
190
|
"eslint-plugin-react": "^7.37.5",
|
|
190
191
|
"eslint-plugin-react-hooks": "^7.1.1",
|
|
191
192
|
"happy-dom": "^20.10.6",
|
|
192
|
-
"prettier": "^3.
|
|
193
|
+
"prettier": "^3.9.4",
|
|
193
194
|
"react": "^19.2.7",
|
|
194
195
|
"react-dom": "^19.2.7",
|
|
195
|
-
"tailwindcss": "^4.3.
|
|
196
|
+
"tailwindcss": "^4.3.2",
|
|
196
197
|
"ts-node": "^10.9.2",
|
|
197
|
-
"tsx": "^4.
|
|
198
|
+
"tsx": "^4.23.0",
|
|
198
199
|
"typescript": "^6.0.3",
|
|
199
200
|
"vite-plugin-dts": "5.0.3",
|
|
200
201
|
"vitest": "^4.1.9"
|
package/template/README.md
CHANGED
|
@@ -76,7 +76,11 @@ pnpm dev
|
|
|
76
76
|
ngrok http 8000
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
-
|
|
79
|
+
If Developer mode is not already enabled, click your user menu in the bottom-left corner and select `Settings > Security and login > Developer mode`.
|
|
80
|
+
|
|
81
|
+
Then return to the ChatGPT homepage and click `Plugins` in the sidebar. Open your app if it is already there, or select the `+` button and connect the tunnel forwarding URL at the `/mcp` path.
|
|
82
|
+
|
|
83
|
+
ChatGPT creates a developer-mode app backed by your MCP server. It appears under `Plugins`, but its MCP App UI and runtime do not change.
|
|
80
84
|
|
|
81
85
|
Once your app is connected, send the name of the app and a tool, like `/sunpeak show review`, to ChatGPT.
|
|
82
86
|
|
|
@@ -86,8 +90,9 @@ Run automated tests against real ChatGPT with `pnpm test:live`. This opens your
|
|
|
86
90
|
|
|
87
91
|
**One-time setup:**
|
|
88
92
|
|
|
89
|
-
1.
|
|
90
|
-
2.
|
|
93
|
+
1. If Developer mode is not already enabled, click your user menu in the bottom-left corner and select `Settings > Security and login > Developer mode`
|
|
94
|
+
2. Return to the ChatGPT homepage and click `Plugins` in the sidebar
|
|
95
|
+
3. Open your app if it is already there, or select `+` and add your tunnel URL at `/mcp`
|
|
91
96
|
|
|
92
97
|
**Run live tests:**
|
|
93
98
|
|
|
@@ -133,6 +138,8 @@ pnpm start -- --json-logs # Structured JSON logging for production
|
|
|
133
138
|
|
|
134
139
|
The server includes a `/health` endpoint for load balancer probes and monitoring. See the [Deployment Guide](https://sunpeak.ai/docs/app-framework/guides/deployment) for production operations details (reverse proxy, process management, Docker).
|
|
135
140
|
|
|
141
|
+
ChatGPT apps are submitted and published as plugins. Deploy this MCP server first, then create a `With MCP` submission in the [OpenAI Platform plugin portal](https://platform.openai.com/plugins). Submit the MCP server URL directly, not an existing ChatGPT app ID. See the [sunpeak publishing guide](https://sunpeak.ai/docs/app-framework/guides/deployment#publish-to-chatgpt) and OpenAI's [plugin submission guide](https://learn.chatgpt.com/docs/submit-plugins).
|
|
142
|
+
|
|
136
143
|
## Add a new UI (Resource)
|
|
137
144
|
|
|
138
145
|
To add a new UI ([MCP Resource](https://sunpeak.ai/docs/mcp-apps/mcp/resources)), create a new directory under `src/resources/` with the following files:
|
|
@@ -162,7 +169,7 @@ If your app doesn't render in ChatGPT or Claude:
|
|
|
162
169
|
|
|
163
170
|
1. **Check your tunnel** is running and pointing to the correct port
|
|
164
171
|
2. **Restart `pnpm dev`** to clear stale connections
|
|
165
|
-
3. **Refresh or re-add the MCP server**
|
|
172
|
+
3. **Refresh or re-add the MCP server** from the host's app or plugin management page
|
|
166
173
|
4. **Hard refresh** the host page (`Cmd+Shift+R` / `Ctrl+Shift+R`)
|
|
167
174
|
5. **Open a new chat** in the host (cached iframes persist per-conversation)
|
|
168
175
|
|
|
@@ -175,3 +182,4 @@ Full guide: [sunpeak.ai/docs/app-framework/guides/troubleshooting](https://sunpe
|
|
|
175
182
|
- [MCP Overview](https://sunpeak.ai/docs/mcp-apps/mcp/overview) · [Tools](https://sunpeak.ai/docs/mcp-apps/mcp/tools) · [Resources](https://sunpeak.ai/docs/mcp-apps/mcp/resources)
|
|
176
183
|
- [MCP Apps SDK](https://github.com/modelcontextprotocol/ext-apps)
|
|
177
184
|
- [ChatGPT Apps SDK Design Guidelines](https://developers.openai.com/apps-sdk/concepts/design-guidelines)
|
|
185
|
+
- [Build ChatGPT Plugins](https://learn.chatgpt.com/docs/build-plugins) · [Submit ChatGPT Plugins](https://learn.chatgpt.com/docs/submit-plugins)
|