sunpeak 0.12.11 → 0.12.13

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.
Files changed (75) hide show
  1. package/bin/commands/dev.mjs +65 -65
  2. package/package.json +1 -1
  3. package/template/dist/albums/albums.json +1 -1
  4. package/template/dist/carousel/carousel.json +1 -1
  5. package/template/dist/map/map.json +1 -1
  6. package/template/dist/review/review.json +1 -1
  7. package/template/node_modules/.vite/deps/_metadata.json +19 -19
  8. package/template/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  9. package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/@openai_apps-sdk-ui_components_Button.js +2 -2
  10. package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/@openai_apps-sdk-ui_components_Select.js +15 -15
  11. package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12/chunk-IFPDCKUT.js → deps_temp_094cfe5e/chunk-24D227QE.js} +5 -5
  12. package/template/src/styles/globals.css +11 -3
  13. package/template/src/styles/app.css +0 -12
  14. package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/@openai_apps-sdk-ui_components_Avatar.js +0 -0
  15. package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/@openai_apps-sdk-ui_components_Avatar.js.map +0 -0
  16. package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/@openai_apps-sdk-ui_components_Button.js.map +0 -0
  17. package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/@openai_apps-sdk-ui_components_Checkbox.js +0 -0
  18. package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/@openai_apps-sdk-ui_components_Checkbox.js.map +0 -0
  19. package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/@openai_apps-sdk-ui_components_Icon.js +0 -0
  20. package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/@openai_apps-sdk-ui_components_Icon.js.map +0 -0
  21. package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/@openai_apps-sdk-ui_components_Input.js +0 -0
  22. package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/@openai_apps-sdk-ui_components_Input.js.map +0 -0
  23. package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/@openai_apps-sdk-ui_components_SegmentedControl.js +4 -4
  24. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/@openai_apps-sdk-ui_components_SegmentedControl.js.map +0 -0
  25. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/@openai_apps-sdk-ui_components_Select.js.map +0 -0
  26. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/@openai_apps-sdk-ui_components_Textarea.js +0 -0
  27. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/@openai_apps-sdk-ui_components_Textarea.js.map +0 -0
  28. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/@openai_apps-sdk-ui_theme.js +0 -0
  29. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/@openai_apps-sdk-ui_theme.js.map +0 -0
  30. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12/chunk-IFPDCKUT.js.map → deps_temp_094cfe5e/chunk-24D227QE.js.map} +0 -0
  31. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-6CR5OFLH.js +0 -0
  32. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-6CR5OFLH.js.map +0 -0
  33. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-EGRHWZRV.js +0 -0
  34. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-EGRHWZRV.js.map +0 -0
  35. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-EXGLAROW.js +0 -0
  36. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-EXGLAROW.js.map +0 -0
  37. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-ILHRZGIS.js +0 -0
  38. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-ILHRZGIS.js.map +0 -0
  39. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-JSPMUVNT.js +0 -0
  40. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-JSPMUVNT.js.map +0 -0
  41. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-L2PWLFDO.js +0 -0
  42. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-L2PWLFDO.js.map +0 -0
  43. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-OMOWBQDU.js +0 -0
  44. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-OMOWBQDU.js.map +0 -0
  45. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-R3BTL4CL.js +0 -0
  46. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-R3BTL4CL.js.map +0 -0
  47. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-SPDZ46BB.js +0 -0
  48. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-SPDZ46BB.js.map +0 -0
  49. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-WSHFT23M.js +0 -0
  50. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-WSHFT23M.js.map +0 -0
  51. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-Y7UNCRGH.js +0 -0
  52. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-Y7UNCRGH.js.map +0 -0
  53. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-ZNFXUT4Q.js +0 -0
  54. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/chunk-ZNFXUT4Q.js.map +0 -0
  55. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/clsx.js +0 -0
  56. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/clsx.js.map +0 -0
  57. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/embla-carousel-react.js +0 -0
  58. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/embla-carousel-react.js.map +0 -0
  59. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/embla-carousel-wheel-gestures.js +0 -0
  60. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/embla-carousel-wheel-gestures.js.map +0 -0
  61. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/mapbox-gl.js +0 -0
  62. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/mapbox-gl.js.map +0 -0
  63. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/package.json +0 -0
  64. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/react-dom.js +0 -0
  65. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/react-dom.js.map +0 -0
  66. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/react-dom_client.js +0 -0
  67. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/react-dom_client.js.map +0 -0
  68. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/react.js +0 -0
  69. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/react.js.map +0 -0
  70. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/react_jsx-dev-runtime.js +0 -0
  71. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/react_jsx-dev-runtime.js.map +0 -0
  72. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/react_jsx-runtime.js +0 -0
  73. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/react_jsx-runtime.js.map +0 -0
  74. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/tailwind-merge.js +0 -0
  75. /package/template/node_modules/.vite-mcp/{deps_temp_e6e57b12 → deps_temp_094cfe5e}/tailwind-merge.js.map +0 -0
@@ -86,6 +86,9 @@ export async function dev(projectRoot = process.cwd(), args = []) {
86
86
  // Parse --no-begging flag
87
87
  const noBegging = args.includes('--no-begging');
88
88
 
89
+ // Parse --prod-mcp flag (serve production build files over MCP instead of Vite HMR)
90
+ const prodMcp = args.includes('--prod-mcp');
91
+
89
92
  console.log(`Starting Vite dev server on port ${port}...`);
90
93
 
91
94
  // Check if we're in the sunpeak workspace (directory is named "template")
@@ -177,40 +180,36 @@ export async function dev(projectRoot = process.cwd(), args = []) {
177
180
  }
178
181
  }
179
182
 
180
- // Start MCP server with its own Vite instance
183
+ // Start MCP server with its own Vite instance (unless --prod-mcp is set)
181
184
  if (simulations.length > 0) {
182
- console.log(`\nStarting MCP server with ${simulations.length} simulation(s)...`);
183
-
184
- // Virtual entry module plugin for MCP
185
- // For internal dev (template): Import sunpeak styles directly via JS to avoid CSS @import
186
- // alias issues with Lightning CSS, then import app.css for user customizations.
187
- // For external users: Import OpenAI SDK CSS directly (ensures Tailwind processes @theme static),
188
- // then import globals.css for user's Tailwind config and custom styles.
189
- const styleImports = isTemplate
190
- ? `import '${parentSrc}/style.css';\nimport '/src/styles/app.css';`
191
- : `import '@openai/apps-sdk-ui/css';\nimport '/src/styles/globals.css';`;
192
-
193
- const sunpeakEntryPlugin = () => ({
194
- name: 'sunpeak-entry',
195
- resolveId(id) {
196
- if (id.startsWith('virtual:sunpeak-entry')) {
197
- return id;
198
- }
199
- },
200
- load(id) {
201
- if (id.startsWith('virtual:sunpeak-entry')) {
202
- const url = new URL(id.replace('virtual:sunpeak-entry', 'http://x'));
203
- const srcPath = url.searchParams.get('src');
204
- const componentName = url.searchParams.get('component');
205
-
206
- if (!srcPath || !componentName) {
207
- return 'console.error("Missing src or component param");';
185
+ const mcpMode = prodMcp ? 'production build' : 'Vite HMR';
186
+ console.log(`\nStarting MCP server with ${simulations.length} simulation(s) (${mcpMode})...`);
187
+
188
+ let mcpViteServer = null;
189
+
190
+ if (!prodMcp) {
191
+ // Virtual entry module plugin for MCP
192
+ const sunpeakEntryPlugin = () => ({
193
+ name: 'sunpeak-entry',
194
+ resolveId(id) {
195
+ if (id.startsWith('virtual:sunpeak-entry')) {
196
+ return id;
208
197
  }
198
+ },
199
+ load(id) {
200
+ if (id.startsWith('virtual:sunpeak-entry')) {
201
+ const url = new URL(id.replace('virtual:sunpeak-entry', 'http://x'));
202
+ const srcPath = url.searchParams.get('src');
203
+ const componentName = url.searchParams.get('component');
204
+
205
+ if (!srcPath || !componentName) {
206
+ return 'console.error("Missing src or component param");';
207
+ }
209
208
 
210
- return `
209
+ return `
211
210
  import { createElement } from 'react';
212
211
  import { createRoot } from 'react-dom/client';
213
- ${styleImports}
212
+ import '/src/styles/globals.css';
214
213
  import * as ResourceModule from '${srcPath}';
215
214
 
216
215
  const Component = ResourceModule.default || ResourceModule['${componentName}'];
@@ -220,43 +219,44 @@ if (!Component) {
220
219
  createRoot(document.getElementById('root')).render(createElement(Component));
221
220
  }
222
221
  `;
223
- }
224
- },
225
- });
222
+ }
223
+ },
224
+ });
226
225
 
227
- // Create Vite dev server in middleware mode for MCP
228
- // Use separate cache directory to avoid conflicts with main dev server
229
- const mcpViteServer = await createServer({
230
- root: projectRoot,
231
- cacheDir: 'node_modules/.vite-mcp',
232
- plugins: [react(), tailwindcss(), sunpeakEntryPlugin()],
233
- resolve: {
234
- alias: {
235
- ...(isTemplate && {
236
- sunpeak: parentSrc,
237
- }),
226
+ // Create Vite dev server in middleware mode for MCP
227
+ // Use separate cache directory to avoid conflicts with main dev server
228
+ mcpViteServer = await createServer({
229
+ root: projectRoot,
230
+ cacheDir: 'node_modules/.vite-mcp',
231
+ plugins: [react(), tailwindcss(), sunpeakEntryPlugin()],
232
+ resolve: {
233
+ alias: {
234
+ ...(isTemplate && {
235
+ sunpeak: parentSrc,
236
+ }),
237
+ },
238
238
  },
239
- },
240
- server: {
241
- middlewareMode: true,
242
- allowedHosts: true,
243
- watch: {
244
- // Only watch files that affect the UI bundle (not JSON, tests, etc.)
245
- // MCP resources reload on next tool call, not on file change
246
- ignored: (filePath) => {
247
- if (!filePath.includes('.')) return false; // Watch directories
248
- if (/\.(tsx?|css)$/.test(filePath)) {
249
- return /\.(test|spec)\.tsx?$/.test(filePath); // Ignore tests
250
- }
251
- return true; // Ignore everything else
239
+ server: {
240
+ middlewareMode: true,
241
+ allowedHosts: true,
242
+ watch: {
243
+ // Only watch files that affect the UI bundle (not JSON, tests, etc.)
244
+ // MCP resources reload on next tool call, not on file change
245
+ ignored: (filePath) => {
246
+ if (!filePath.includes('.')) return false; // Watch directories
247
+ if (/\.(tsx?|css)$/.test(filePath)) {
248
+ return /\.(test|spec)\.tsx?$/.test(filePath); // Ignore tests
249
+ }
250
+ return true; // Ignore everything else
251
+ },
252
252
  },
253
253
  },
254
- },
255
- optimizeDeps: {
256
- include: ['react', 'react-dom/client'],
257
- },
258
- appType: 'custom',
259
- });
254
+ optimizeDeps: {
255
+ include: ['react', 'react-dom/client'],
256
+ },
257
+ appType: 'custom',
258
+ });
259
+ }
260
260
 
261
261
  const pkg = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));
262
262
  runMCPServer({
@@ -264,18 +264,18 @@ if (!Component) {
264
264
  version: pkg.version || '0.1.0',
265
265
  simulations,
266
266
  port: 6766,
267
- viteServer: mcpViteServer,
267
+ ...(mcpViteServer && { viteServer: mcpViteServer }),
268
268
  });
269
269
 
270
270
  // Handle signals - close both servers
271
271
  process.on('SIGINT', async () => {
272
- await mcpViteServer.close();
272
+ if (mcpViteServer) await mcpViteServer.close();
273
273
  await server.close();
274
274
  process.exit(0);
275
275
  });
276
276
 
277
277
  process.on('SIGTERM', async () => {
278
- await mcpViteServer.close();
278
+ if (mcpViteServer) await mcpViteServer.close();
279
279
  await server.close();
280
280
  process.exit(0);
281
281
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sunpeak",
3
- "version": "0.12.11",
3
+ "version": "0.12.13",
4
4
  "description": "The ChatGPT App framework. Quickstart, build, & test your ChatGPT App locally!",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -12,5 +12,5 @@
12
12
  ]
13
13
  }
14
14
  },
15
- "uri": "ui://albums-mko50k13"
15
+ "uri": "ui://albums-mkpz4p3k"
16
16
  }
@@ -12,5 +12,5 @@
12
12
  ]
13
13
  }
14
14
  },
15
- "uri": "ui://carousel-mko50k13"
15
+ "uri": "ui://carousel-mkpz4p3k"
16
16
  }
@@ -18,5 +18,5 @@
18
18
  ]
19
19
  }
20
20
  },
21
- "uri": "ui://map-mko50k13"
21
+ "uri": "ui://map-mkpz4p3k"
22
22
  }
@@ -12,5 +12,5 @@
12
12
  ]
13
13
  }
14
14
  },
15
- "uri": "ui://review-mko50k13"
15
+ "uri": "ui://review-mkpz4p3k"
16
16
  }
@@ -7,115 +7,115 @@
7
7
  "react": {
8
8
  "src": "../../../../../../node_modules/.pnpm/react@19.2.3/node_modules/react/index.js",
9
9
  "file": "react.js",
10
- "fileHash": "629c41fc",
10
+ "fileHash": "441eb6b3",
11
11
  "needsInterop": true
12
12
  },
13
13
  "react-dom": {
14
14
  "src": "../../../../../../node_modules/.pnpm/react-dom@19.2.3_react@19.2.3/node_modules/react-dom/index.js",
15
15
  "file": "react-dom.js",
16
- "fileHash": "abb9f37f",
16
+ "fileHash": "47d2cf14",
17
17
  "needsInterop": true
18
18
  },
19
19
  "react/jsx-dev-runtime": {
20
20
  "src": "../../../../../../node_modules/.pnpm/react@19.2.3/node_modules/react/jsx-dev-runtime.js",
21
21
  "file": "react_jsx-dev-runtime.js",
22
- "fileHash": "05449757",
22
+ "fileHash": "dd752797",
23
23
  "needsInterop": true
24
24
  },
25
25
  "react/jsx-runtime": {
26
26
  "src": "../../../../../../node_modules/.pnpm/react@19.2.3/node_modules/react/jsx-runtime.js",
27
27
  "file": "react_jsx-runtime.js",
28
- "fileHash": "cbd5f982",
28
+ "fileHash": "9619edc8",
29
29
  "needsInterop": true
30
30
  },
31
31
  "@openai/apps-sdk-ui/components/Avatar": {
32
32
  "src": "../../../../../../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.8__@types+react@19._10810175a7ab45acace17e46639bb69b/node_modules/@openai/apps-sdk-ui/dist/es/components/Avatar/index.js",
33
33
  "file": "@openai_apps-sdk-ui_components_Avatar.js",
34
- "fileHash": "c36372b2",
34
+ "fileHash": "0ffe9862",
35
35
  "needsInterop": false
36
36
  },
37
37
  "@openai/apps-sdk-ui/components/Button": {
38
38
  "src": "../../../../../../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.8__@types+react@19._10810175a7ab45acace17e46639bb69b/node_modules/@openai/apps-sdk-ui/dist/es/components/Button/index.js",
39
39
  "file": "@openai_apps-sdk-ui_components_Button.js",
40
- "fileHash": "ae624730",
40
+ "fileHash": "051a6dcc",
41
41
  "needsInterop": false
42
42
  },
43
43
  "@openai/apps-sdk-ui/components/Checkbox": {
44
44
  "src": "../../../../../../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.8__@types+react@19._10810175a7ab45acace17e46639bb69b/node_modules/@openai/apps-sdk-ui/dist/es/components/Checkbox/index.js",
45
45
  "file": "@openai_apps-sdk-ui_components_Checkbox.js",
46
- "fileHash": "5fbfa8f1",
46
+ "fileHash": "3dd7e963",
47
47
  "needsInterop": false
48
48
  },
49
49
  "@openai/apps-sdk-ui/components/Icon": {
50
50
  "src": "../../../../../../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.8__@types+react@19._10810175a7ab45acace17e46639bb69b/node_modules/@openai/apps-sdk-ui/dist/es/components/Icon/index.js",
51
51
  "file": "@openai_apps-sdk-ui_components_Icon.js",
52
- "fileHash": "bdc36e34",
52
+ "fileHash": "c1af0784",
53
53
  "needsInterop": false
54
54
  },
55
55
  "@openai/apps-sdk-ui/components/Input": {
56
56
  "src": "../../../../../../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.8__@types+react@19._10810175a7ab45acace17e46639bb69b/node_modules/@openai/apps-sdk-ui/dist/es/components/Input/index.js",
57
57
  "file": "@openai_apps-sdk-ui_components_Input.js",
58
- "fileHash": "aaf5ae7a",
58
+ "fileHash": "0a74dd65",
59
59
  "needsInterop": false
60
60
  },
61
61
  "@openai/apps-sdk-ui/components/SegmentedControl": {
62
62
  "src": "../../../../../../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.8__@types+react@19._10810175a7ab45acace17e46639bb69b/node_modules/@openai/apps-sdk-ui/dist/es/components/SegmentedControl/index.js",
63
63
  "file": "@openai_apps-sdk-ui_components_SegmentedControl.js",
64
- "fileHash": "a7a818bb",
64
+ "fileHash": "e88e1987",
65
65
  "needsInterop": false
66
66
  },
67
67
  "@openai/apps-sdk-ui/components/Select": {
68
68
  "src": "../../../../../../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.8__@types+react@19._10810175a7ab45acace17e46639bb69b/node_modules/@openai/apps-sdk-ui/dist/es/components/Select/index.js",
69
69
  "file": "@openai_apps-sdk-ui_components_Select.js",
70
- "fileHash": "bd3b38ea",
70
+ "fileHash": "97b6970b",
71
71
  "needsInterop": false
72
72
  },
73
73
  "@openai/apps-sdk-ui/components/Textarea": {
74
74
  "src": "../../../../../../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.8__@types+react@19._10810175a7ab45acace17e46639bb69b/node_modules/@openai/apps-sdk-ui/dist/es/components/Textarea/index.js",
75
75
  "file": "@openai_apps-sdk-ui_components_Textarea.js",
76
- "fileHash": "a47608b2",
76
+ "fileHash": "6cff8f57",
77
77
  "needsInterop": false
78
78
  },
79
79
  "@openai/apps-sdk-ui/theme": {
80
80
  "src": "../../../../../../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.8__@types+react@19._10810175a7ab45acace17e46639bb69b/node_modules/@openai/apps-sdk-ui/dist/es/lib/theme.js",
81
81
  "file": "@openai_apps-sdk-ui_theme.js",
82
- "fileHash": "5ca1faa0",
82
+ "fileHash": "5ebbf1e7",
83
83
  "needsInterop": false
84
84
  },
85
85
  "clsx": {
86
86
  "src": "../../../../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs",
87
87
  "file": "clsx.js",
88
- "fileHash": "199ee8ce",
88
+ "fileHash": "bdee1694",
89
89
  "needsInterop": false
90
90
  },
91
91
  "embla-carousel-react": {
92
92
  "src": "../../../../../../node_modules/.pnpm/embla-carousel-react@8.6.0_react@19.2.3/node_modules/embla-carousel-react/esm/embla-carousel-react.esm.js",
93
93
  "file": "embla-carousel-react.js",
94
- "fileHash": "669202e6",
94
+ "fileHash": "d904ef17",
95
95
  "needsInterop": false
96
96
  },
97
97
  "embla-carousel-wheel-gestures": {
98
98
  "src": "../../../../../../node_modules/.pnpm/embla-carousel-wheel-gestures@8.1.0_embla-carousel@8.6.0/node_modules/embla-carousel-wheel-gestures/dist/embla-carousel-wheel-gestures.esm.js",
99
99
  "file": "embla-carousel-wheel-gestures.js",
100
- "fileHash": "7813bd51",
100
+ "fileHash": "0732d1c2",
101
101
  "needsInterop": false
102
102
  },
103
103
  "mapbox-gl": {
104
104
  "src": "../../../../../../node_modules/.pnpm/mapbox-gl@3.17.0/node_modules/mapbox-gl/dist/mapbox-gl.js",
105
105
  "file": "mapbox-gl.js",
106
- "fileHash": "36081ddd",
106
+ "fileHash": "aa95b15a",
107
107
  "needsInterop": true
108
108
  },
109
109
  "react-dom/client": {
110
110
  "src": "../../../../../../node_modules/.pnpm/react-dom@19.2.3_react@19.2.3/node_modules/react-dom/client.js",
111
111
  "file": "react-dom_client.js",
112
- "fileHash": "f1745f48",
112
+ "fileHash": "728aaa33",
113
113
  "needsInterop": true
114
114
  },
115
115
  "tailwind-merge": {
116
116
  "src": "../../../../../../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs",
117
117
  "file": "tailwind-merge.js",
118
- "fileHash": "e2b1b86b",
118
+ "fileHash": "5f485893",
119
119
  "needsInterop": false
120
120
  }
121
121
  },
@@ -1 +1 @@
1
- {"version":"4.0.17","results":[[":src/resources/carousel/carousel-resource.test.tsx",{"duration":266.726488,"failed":false}],[":src/resources/review/review-resource.test.tsx",{"duration":487.17742699999985,"failed":false}],[":src/resources/albums/components/albums.test.tsx",{"duration":306.3141599999999,"failed":false}],[":src/resources/map/components/map-view.test.tsx",{"duration":103.33578599999987,"failed":false}],[":src/resources/map/components/place-inspector.test.tsx",{"duration":392.3076980000001,"failed":false}],[":src/resources/albums/components/fullscreen-viewer.test.tsx",{"duration":271.73823100000027,"failed":false}],[":src/resources/map/components/place-list.test.tsx",{"duration":163.52411200000006,"failed":false}],[":src/resources/map/components/place-card.test.tsx",{"duration":308.0361889999999,"failed":false}],[":src/resources/map/components/place-carousel.test.tsx",{"duration":384.4120569999998,"failed":false}],[":src/resources/albums/components/album-carousel.test.tsx",{"duration":87.76491399999986,"failed":false}],[":src/resources/carousel/components/carousel.test.tsx",{"duration":71.014813,"failed":false}],[":src/resources/map/map-resource.test.tsx",{"duration":281.7631550000001,"failed":false}],[":src/resources/albums/albums-resource.test.tsx",{"duration":244.24904700000002,"failed":false}],[":src/resources/albums/components/film-strip.test.tsx",{"duration":383.1823750000001,"failed":false}],[":src/resources/albums/components/album-card.test.tsx",{"duration":293.7807170000003,"failed":false}],[":src/resources/carousel/components/card.test.tsx",{"duration":85.11133100000006,"failed":false}]]}
1
+ {"version":"4.0.17","results":[[":src/resources/review/review-resource.test.tsx",{"duration":512.2674489999999,"failed":false}],[":src/resources/carousel/carousel-resource.test.tsx",{"duration":237.90826199999992,"failed":false}],[":src/resources/albums/components/albums.test.tsx",{"duration":330.6978569999999,"failed":false}],[":src/resources/map/components/map-view.test.tsx",{"duration":60.96484099999998,"failed":false}],[":src/resources/map/components/place-inspector.test.tsx",{"duration":405.24437899999975,"failed":false}],[":src/resources/albums/components/fullscreen-viewer.test.tsx",{"duration":240.6376250000003,"failed":false}],[":src/resources/map/components/place-list.test.tsx",{"duration":145.28779900000018,"failed":false}],[":src/resources/map/components/place-card.test.tsx",{"duration":308.72127399999977,"failed":false}],[":src/resources/map/components/place-carousel.test.tsx",{"duration":436.47205899999994,"failed":false}],[":src/resources/albums/components/album-carousel.test.tsx",{"duration":105.73330400000009,"failed":false}],[":src/resources/carousel/components/carousel.test.tsx",{"duration":91.21619200000009,"failed":false}],[":src/resources/map/map-resource.test.tsx",{"duration":267.5212469999999,"failed":false}],[":src/resources/albums/albums-resource.test.tsx",{"duration":269.0113309999999,"failed":false}],[":src/resources/albums/components/album-card.test.tsx",{"duration":317.54229399999986,"failed":false}],[":src/resources/albums/components/film-strip.test.tsx",{"duration":316.837258,"failed":false}],[":src/resources/carousel/components/card.test.tsx",{"duration":87.67652199999998,"failed":false}]]}
@@ -2,13 +2,13 @@ import {
2
2
  Button,
3
3
  ButtonLink,
4
4
  CopyButton
5
- } from "./chunk-IFPDCKUT.js";
6
- import "./chunk-ZNFXUT4Q.js";
5
+ } from "./chunk-24D227QE.js";
7
6
  import "./chunk-EXGLAROW.js";
8
7
  import "./chunk-SPDZ46BB.js";
9
8
  import "./chunk-OMOWBQDU.js";
10
9
  import "./chunk-EGRHWZRV.js";
11
10
  import "./chunk-WSHFT23M.js";
11
+ import "./chunk-ZNFXUT4Q.js";
12
12
  import "./chunk-Y7UNCRGH.js";
13
13
  import "./chunk-6CR5OFLH.js";
14
14
  import "./chunk-ILHRZGIS.js";
@@ -1,19 +1,17 @@
1
1
  import {
2
2
  Input
3
3
  } from "./chunk-R3BTL4CL.js";
4
+ import {
5
+ dist_exports,
6
+ dist_exports3 as dist_exports2,
7
+ dist_exports5 as dist_exports3
8
+ } from "./chunk-L2PWLFDO.js";
9
+ import "./chunk-JSPMUVNT.js";
4
10
  import {
5
11
  Button,
6
12
  LoadingIndicator,
7
13
  TransitionGroup
8
- } from "./chunk-IFPDCKUT.js";
9
- import {
10
- Check_default,
11
- ChevronDownVector_default,
12
- DropdownVector_default,
13
- Info_default,
14
- Search_default,
15
- X_default
16
- } from "./chunk-ZNFXUT4Q.js";
14
+ } from "./chunk-24D227QE.js";
17
15
  import {
18
16
  useTimeout
19
17
  } from "./chunk-EXGLAROW.js";
@@ -27,15 +25,17 @@ import {
27
25
  waitForAnimationFrame
28
26
  } from "./chunk-OMOWBQDU.js";
29
27
  import "./chunk-EGRHWZRV.js";
30
- import {
31
- dist_exports,
32
- dist_exports3 as dist_exports2,
33
- dist_exports5 as dist_exports3
34
- } from "./chunk-L2PWLFDO.js";
35
- import "./chunk-JSPMUVNT.js";
36
28
  import {
37
29
  clsx_default
38
30
  } from "./chunk-WSHFT23M.js";
31
+ import {
32
+ Check_default,
33
+ ChevronDownVector_default,
34
+ DropdownVector_default,
35
+ Info_default,
36
+ Search_default,
37
+ X_default
38
+ } from "./chunk-ZNFXUT4Q.js";
39
39
  import {
40
40
  require_jsx_runtime
41
41
  } from "./chunk-Y7UNCRGH.js";
@@ -1,7 +1,3 @@
1
- import {
2
- Check_default,
3
- Copy_default
4
- } from "./chunk-ZNFXUT4Q.js";
5
1
  import {
6
2
  useTimeout
7
3
  } from "./chunk-EXGLAROW.js";
@@ -22,6 +18,10 @@ import {
22
18
  import {
23
19
  clsx_default
24
20
  } from "./chunk-WSHFT23M.js";
21
+ import {
22
+ Check_default,
23
+ Copy_default
24
+ } from "./chunk-ZNFXUT4Q.js";
25
25
  import {
26
26
  require_jsx_runtime
27
27
  } from "./chunk-Y7UNCRGH.js";
@@ -625,4 +625,4 @@ export {
625
625
  ButtonLink,
626
626
  CopyButton
627
627
  };
628
- //# sourceMappingURL=chunk-IFPDCKUT.js.map
628
+ //# sourceMappingURL=chunk-24D227QE.js.map
@@ -1,5 +1,13 @@
1
1
  /* Base styles: Tailwind CSS + OpenAI Apps SDK UI */
2
- @import "sunpeak/style.css";
2
+ @import "sunpeak/chatgpt/globals.css";
3
3
 
4
- /* App-specific configuration and custom styles */
5
- @import "./app.css";
4
+ /* Scan app-specific source files for Tailwind classes */
5
+ @source "../**/*.{ts,tsx}";
6
+
7
+ /* Required for Tailwind to find class references in Apps SDK UI components. */
8
+ @source "../../node_modules/@openai/apps-sdk-ui";
9
+
10
+ /* Configure dark mode to use data-theme attribute (OpenAI SDK standard) */
11
+ @custom-variant dark (&:where([data-theme="dark"], [data-theme="dark"] *));
12
+
13
+ /* Add your custom styles below */
@@ -1,12 +0,0 @@
1
- /* User-specific Tailwind configuration and custom styles */
2
-
3
- /* Scan app-specific source files for Tailwind classes */
4
- @source "../**/*.{ts,tsx}";
5
-
6
- /* Required for Tailwind to find class references in Apps SDK UI components. */
7
- @source "../../node_modules/@openai/apps-sdk-ui";
8
-
9
- /* Configure dark mode to use data-theme attribute (OpenAI SDK standard) */
10
- @custom-variant dark (&:where([data-theme="dark"], [data-theme="dark"] *));
11
-
12
- /* Add your custom styles below */
@@ -1,3 +1,7 @@
1
+ import {
2
+ dist_exports4 as dist_exports
3
+ } from "./chunk-L2PWLFDO.js";
4
+ import "./chunk-JSPMUVNT.js";
1
5
  import {
2
6
  useResizeObserver
3
7
  } from "./chunk-EXGLAROW.js";
@@ -6,10 +10,6 @@ import {
6
10
  waitForAnimationFrame
7
11
  } from "./chunk-OMOWBQDU.js";
8
12
  import "./chunk-EGRHWZRV.js";
9
- import {
10
- dist_exports4 as dist_exports
11
- } from "./chunk-L2PWLFDO.js";
12
- import "./chunk-JSPMUVNT.js";
13
13
  import {
14
14
  clsx_default
15
15
  } from "./chunk-WSHFT23M.js";