nitrostack 1.0.50 → 1.0.52
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/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +125 -30
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/dev.js +0 -3
- package/dist/cli/commands/dev.js.map +1 -1
- package/dist/core/server.d.ts.map +1 -1
- package/dist/core/server.js +35 -3
- package/dist/core/server.js.map +1 -1
- package/dist/ui-next/index.d.ts +0 -1
- package/dist/ui-next/index.d.ts.map +1 -1
- package/dist/ui-next/index.js +125 -126
- package/dist/ui-next/index.js.map +1 -1
- package/package.json +3 -3
- package/src/studio/components/WidgetRenderer.tsx +15 -24
- package/src/studio/middleware.ts +1 -6
- package/src/studio/next.config.js +0 -5
- package/templates/typescript-auth/src/modules/products/products.tools.ts +29 -29
- package/templates/typescript-oauth/src/widgets/package-lock.json +4464 -0
- package/package/src/studio/middleware.ts +0 -28
- package/package/src/studio/next.config.js +0 -40
- package/templates/typescript-auth/.env.example +0 -23
- package/templates/typescript-auth-api-key/.env.example +0 -4
- package/templates/typescript-oauth/.env.example +0 -102
- package/templates/typescript-oauth/src/widgets/.next/BUILD_ID +0 -1
- package/templates/typescript-oauth/src/widgets/.next/app-build-manifest.json +0 -32
- package/templates/typescript-oauth/src/widgets/.next/app-path-routes-manifest.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/build-manifest.json +0 -32
- package/templates/typescript-oauth/src/widgets/.next/cache/webpack/client-production/0.pack +0 -0
- package/templates/typescript-oauth/src/widgets/.next/cache/webpack/client-production/index.pack +0 -0
- package/templates/typescript-oauth/src/widgets/.next/cache/webpack/edge-server-production/0.pack +0 -0
- package/templates/typescript-oauth/src/widgets/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/templates/typescript-oauth/src/widgets/.next/cache/webpack/server-production/0.pack +0 -0
- package/templates/typescript-oauth/src/widgets/.next/cache/webpack/server-production/index.pack +0 -0
- package/templates/typescript-oauth/src/widgets/.next/export-detail.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/export-marker.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/images-manifest.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/next-minimal-server.js.nft.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/next-server.js.nft.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/package.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/prerender-manifest.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/react-loadable-manifest.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/required-server-files.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/routes-manifest.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/app/_not-found/page.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/app/_not-found/page.js.nft.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/app/_not-found/page_client-reference-manifest.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/app/_not-found.html +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/app/_not-found.meta +0 -6
- package/templates/typescript-oauth/src/widgets/.next/server/app/_not-found.rsc +0 -9
- package/templates/typescript-oauth/src/widgets/.next/server/app/calculator-operations/page.js +0 -6
- package/templates/typescript-oauth/src/widgets/.next/server/app/calculator-operations/page.js.nft.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/app/calculator-operations/page_client-reference-manifest.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/app/calculator-operations.html +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/app/calculator-operations.meta +0 -5
- package/templates/typescript-oauth/src/widgets/.next/server/app/calculator-operations.rsc +0 -7
- package/templates/typescript-oauth/src/widgets/.next/server/app/calculator-result/page.js +0 -6
- package/templates/typescript-oauth/src/widgets/.next/server/app/calculator-result/page.js.nft.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/app/calculator-result/page_client-reference-manifest.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/app/calculator-result.html +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/app/calculator-result.meta +0 -5
- package/templates/typescript-oauth/src/widgets/.next/server/app/calculator-result.rsc +0 -7
- package/templates/typescript-oauth/src/widgets/.next/server/app-paths-manifest.json +0 -5
- package/templates/typescript-oauth/src/widgets/.next/server/chunks/682.js +0 -6
- package/templates/typescript-oauth/src/widgets/.next/server/chunks/819.js +0 -3
- package/templates/typescript-oauth/src/widgets/.next/server/chunks/font-manifest.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/font-manifest.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/functions-config-manifest.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/interception-route-rewrite-manifest.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/middleware-build-manifest.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/middleware-manifest.json +0 -6
- package/templates/typescript-oauth/src/widgets/.next/server/middleware-react-loadable-manifest.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/next-font-manifest.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/next-font-manifest.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/pages/404.html +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/pages/500.html +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/pages/_app.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/pages/_app.js.nft.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/pages/_document.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/pages/_document.js.nft.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/pages/_error.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/pages/_error.js.nft.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/pages-manifest.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/server-reference-manifest.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/server-reference-manifest.json +0 -1
- package/templates/typescript-oauth/src/widgets/.next/server/webpack-runtime.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/static/WU9THacVqL52RZbrZOLS1/_buildManifest.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/static/WU9THacVqL52RZbrZOLS1/_ssgManifest.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/static/chunks/117-eb57c7ef86f964a4.js +0 -2
- package/templates/typescript-oauth/src/widgets/.next/static/chunks/app/_not-found/page-dcb83ba3e4d0aafd.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/static/chunks/app/calculator-operations/page-b8913a740073ea8a.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/static/chunks/app/calculator-result/page-ddaaab2fce95dea2.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/static/chunks/app/layout-cbd3ebdc4ecc5247.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/static/chunks/fd9d1056-749e5812300142af.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/static/chunks/framework-f66176bb897dc684.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/static/chunks/main-76df43fcef3db344.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/static/chunks/main-app-f9c40224d04023c5.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/static/chunks/pages/_app-72b849fbd24ac258.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/static/chunks/pages/_error-7ba65e1336b92748.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/static/chunks/webpack-100b9e646d9c912e.js +0 -1
- package/templates/typescript-oauth/src/widgets/.next/trace +0 -14
- package/templates/typescript-oauth/src/widgets/.next/types/app/calculator-operations/page.ts +0 -79
- package/templates/typescript-oauth/src/widgets/.next/types/app/calculator-result/page.ts +0 -79
- package/templates/typescript-oauth/src/widgets/.next/types/app/layout.ts +0 -79
- package/templates/typescript-oauth/src/widgets/.next/types/package.json +0 -1
- package/templates/typescript-oauth/src/widgets/next-env.d.ts +0 -5
- package/templates/typescript-starter/.env.example +0 -4
package/dist/ui-next/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import { execSync } from 'node:child_process';
|
|
|
2
2
|
import * as fs from 'node:fs';
|
|
3
3
|
import * as path from 'node:path';
|
|
4
4
|
import { createComponent } from '../core/component.js';
|
|
5
|
-
|
|
5
|
+
function inlineHtmlWithAssets(htmlPath, outDir) {
|
|
6
6
|
let html = fs.readFileSync(htmlPath, 'utf8');
|
|
7
7
|
// Inline <link rel="stylesheet" href="...">
|
|
8
8
|
html = html.replace(/<link[^>]*rel=["']stylesheet["'][^>]*href=["']([^"']+)["'][^>]*>/g, (_m, href) => {
|
|
@@ -162,14 +162,14 @@ export function createComponentFromNextRoute(arg1, arg2) {
|
|
|
162
162
|
// Try flat structure (route-name.html)
|
|
163
163
|
outPath = path.resolve(projectDir, 'out', `${routePath}.html`);
|
|
164
164
|
if (!fs.existsSync(outPath)) {
|
|
165
|
-
throw new Error(`Exported HTML for route '${routePath}' not found. Tried
|
|
166
|
-
` - ${path.resolve(projectDir, 'out', routePath, 'index.html')}
|
|
165
|
+
throw new Error(`Exported HTML for route '${routePath}' not found. Tried:\n` +
|
|
166
|
+
` - ${path.resolve(projectDir, 'out', routePath, 'index.html')}\n` +
|
|
167
167
|
` - ${path.resolve(projectDir, 'out', `${routePath}.html`)}`);
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
|
-
//
|
|
171
|
-
|
|
172
|
-
const widgetHtml =
|
|
170
|
+
// For Next.js widgets, we need to create a simple renderer that works with data
|
|
171
|
+
// Instead of using complex Next.js hydration, generate simple HTML dynamically
|
|
172
|
+
const widgetHtml = generateSimpleWidgetHtml(routePath, id);
|
|
173
173
|
return createComponent({
|
|
174
174
|
id,
|
|
175
175
|
name,
|
|
@@ -185,188 +185,187 @@ export function createComponentFromNextRoute(arg1, arg2) {
|
|
|
185
185
|
*/
|
|
186
186
|
function generateSimpleWidgetHtml(routePath, widgetId) {
|
|
187
187
|
// Base template that all widgets use
|
|
188
|
-
const baseTemplate =
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
* { box-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
font - family: -apple - system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans - serif;
|
|
188
|
+
const baseTemplate = `<!DOCTYPE html>
|
|
189
|
+
<html>
|
|
190
|
+
<head>
|
|
191
|
+
<meta charset="UTF-8">
|
|
192
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
193
|
+
<style>
|
|
194
|
+
* { box-sizing: border-box; }
|
|
195
|
+
body {
|
|
196
|
+
margin: 16px;
|
|
197
|
+
padding: 0;
|
|
198
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
|
|
200
199
|
background: #ffffff;
|
|
201
200
|
color: #1a1a1a;
|
|
202
|
-
min
|
|
201
|
+
min-height: 100px;
|
|
203
202
|
}
|
|
204
|
-
.widget
|
|
203
|
+
.widget-container {
|
|
205
204
|
background: #ffffff;
|
|
206
205
|
border: 1px solid #e5e7eb;
|
|
207
|
-
border
|
|
206
|
+
border-radius: 12px;
|
|
208
207
|
padding: 0;
|
|
209
208
|
overflow: hidden;
|
|
210
|
-
max
|
|
211
|
-
box
|
|
209
|
+
max-width: 100%;
|
|
210
|
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
212
211
|
}
|
|
213
|
-
.widget
|
|
212
|
+
.widget-header {
|
|
214
213
|
padding: 20px;
|
|
215
|
-
background: linear
|
|
214
|
+
background: linear-gradient(135deg, #D4AF37 0%, #F5C842 100%);
|
|
216
215
|
color: #000;
|
|
217
|
-
font
|
|
218
|
-
font
|
|
216
|
+
font-weight: 700;
|
|
217
|
+
font-size: 18px;
|
|
219
218
|
}
|
|
220
|
-
.widget
|
|
219
|
+
.widget-body {
|
|
221
220
|
padding: 20px;
|
|
222
221
|
}
|
|
223
|
-
.success {
|
|
224
|
-
color: #D4AF37;
|
|
225
|
-
font
|
|
226
|
-
margin
|
|
227
|
-
font
|
|
222
|
+
.success {
|
|
223
|
+
color: #D4AF37;
|
|
224
|
+
font-weight: 700;
|
|
225
|
+
margin-bottom: 16px;
|
|
226
|
+
font-size: 18px;
|
|
228
227
|
display: flex;
|
|
229
|
-
align
|
|
228
|
+
align-items: center;
|
|
230
229
|
gap: 8px;
|
|
231
230
|
}
|
|
232
|
-
.error {
|
|
233
|
-
color: #ef4444;
|
|
234
|
-
font
|
|
235
|
-
margin
|
|
236
|
-
font
|
|
231
|
+
.error {
|
|
232
|
+
color: #ef4444;
|
|
233
|
+
font-weight: 700;
|
|
234
|
+
margin-bottom: 16px;
|
|
235
|
+
font-size: 18px;
|
|
237
236
|
}
|
|
238
|
-
.profile
|
|
237
|
+
.profile-img {
|
|
239
238
|
width: 100px;
|
|
240
239
|
height: 100px;
|
|
241
|
-
border
|
|
242
|
-
object
|
|
240
|
+
border-radius: 50%;
|
|
241
|
+
object-fit: cover;
|
|
243
242
|
border: 4px solid #D4AF37;
|
|
244
|
-
margin
|
|
245
|
-
box
|
|
243
|
+
margin-bottom: 16px;
|
|
244
|
+
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
|
246
245
|
}
|
|
247
|
-
.product
|
|
248
|
-
width: 100
|
|
246
|
+
.product-img {
|
|
247
|
+
width: 100%;
|
|
249
248
|
height: 200px;
|
|
250
|
-
object
|
|
251
|
-
border
|
|
252
|
-
margin
|
|
249
|
+
object-fit: cover;
|
|
250
|
+
border-radius: 8px;
|
|
251
|
+
margin-bottom: 12px;
|
|
253
252
|
}
|
|
254
|
-
.card {
|
|
255
|
-
border: 1px solid #e5e7eb;
|
|
256
|
-
padding: 16px;
|
|
257
|
-
border
|
|
253
|
+
.card {
|
|
254
|
+
border: 1px solid #e5e7eb;
|
|
255
|
+
padding: 16px;
|
|
256
|
+
border-radius: 12px;
|
|
258
257
|
background: #f9fafb;
|
|
259
|
-
margin
|
|
258
|
+
margin-bottom: 12px;
|
|
260
259
|
transition: all 0.2s ease;
|
|
261
|
-
box
|
|
260
|
+
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
262
261
|
}
|
|
263
262
|
.card:hover {
|
|
264
|
-
border
|
|
265
|
-
box
|
|
263
|
+
border-color: #D4AF37;
|
|
264
|
+
box-shadow: 0 4px 6px rgba(212, 175, 55, 0.2);
|
|
266
265
|
transform: translateY(-2px);
|
|
267
266
|
}
|
|
268
|
-
.field { margin: 10px 0; font
|
|
269
|
-
.label { color: #6b7280; font
|
|
270
|
-
.token {
|
|
271
|
-
margin
|
|
272
|
-
padding: 12px;
|
|
273
|
-
background: #f3f4f6;
|
|
274
|
-
border
|
|
275
|
-
font
|
|
276
|
-
word
|
|
277
|
-
font
|
|
267
|
+
.field { margin: 10px 0; font-size: 14px; color: #374151; }
|
|
268
|
+
.label { color: #6b7280; font-size: 13px; margin-right: 8px; font-weight: 500; }
|
|
269
|
+
.token {
|
|
270
|
+
margin-top: 12px;
|
|
271
|
+
padding: 12px;
|
|
272
|
+
background: #f3f4f6;
|
|
273
|
+
border-radius: 8px;
|
|
274
|
+
font-size: 12px;
|
|
275
|
+
word-break: break-all;
|
|
276
|
+
font-family: monospace;
|
|
278
277
|
border: 1px solid #D4AF37;
|
|
279
278
|
color: #D4AF37;
|
|
280
279
|
}
|
|
281
|
-
.grid {
|
|
282
|
-
display: grid;
|
|
283
|
-
grid
|
|
284
|
-
gap: 16px;
|
|
280
|
+
.grid {
|
|
281
|
+
display: grid;
|
|
282
|
+
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
|
|
283
|
+
gap: 16px;
|
|
285
284
|
}
|
|
286
|
-
.product
|
|
287
|
-
border: 1px solid #e5e7eb;
|
|
288
|
-
border
|
|
285
|
+
.product-card {
|
|
286
|
+
border: 1px solid #e5e7eb;
|
|
287
|
+
border-radius: 12px;
|
|
289
288
|
background: #ffffff;
|
|
290
289
|
transition: all 0.3s ease;
|
|
291
290
|
cursor: pointer;
|
|
292
291
|
overflow: hidden;
|
|
293
|
-
box
|
|
292
|
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
294
293
|
}
|
|
295
|
-
.product
|
|
296
|
-
border
|
|
297
|
-
box
|
|
294
|
+
.product-card:hover {
|
|
295
|
+
border-color: #D4AF37;
|
|
296
|
+
box-shadow: 0 8px 16px rgba(212, 175, 55, 0.3);
|
|
298
297
|
transform: translateY(-4px);
|
|
299
298
|
}
|
|
300
|
-
.product
|
|
301
|
-
width: 100
|
|
299
|
+
.product-card-img {
|
|
300
|
+
width: 100%;
|
|
302
301
|
height: 200px;
|
|
303
|
-
object
|
|
302
|
+
object-fit: cover;
|
|
304
303
|
background: #f9fafb;
|
|
305
304
|
}
|
|
306
|
-
.product
|
|
305
|
+
.product-card-body {
|
|
307
306
|
padding: 16px;
|
|
308
307
|
}
|
|
309
|
-
.product
|
|
310
|
-
font
|
|
311
|
-
font
|
|
312
|
-
margin
|
|
313
|
-
line
|
|
308
|
+
.product-name {
|
|
309
|
+
font-weight: 700;
|
|
310
|
+
font-size: 16px;
|
|
311
|
+
margin-bottom: 8px;
|
|
312
|
+
line-height: 1.3;
|
|
314
313
|
color: #1a1a1a;
|
|
315
314
|
}
|
|
316
|
-
.product
|
|
317
|
-
font
|
|
315
|
+
.product-desc {
|
|
316
|
+
font-size: 13px;
|
|
318
317
|
color: #6b7280;
|
|
319
|
-
margin
|
|
320
|
-
line
|
|
318
|
+
margin-bottom: 12px;
|
|
319
|
+
line-height: 1.5;
|
|
321
320
|
}
|
|
322
|
-
.empty {
|
|
323
|
-
color: #9ca3af;
|
|
324
|
-
text
|
|
325
|
-
padding: 60px 20px;
|
|
326
|
-
font
|
|
321
|
+
.empty {
|
|
322
|
+
color: #9ca3af;
|
|
323
|
+
text-align: center;
|
|
324
|
+
padding: 60px 20px;
|
|
325
|
+
font-size: 15px;
|
|
327
326
|
}
|
|
328
327
|
.price {
|
|
329
328
|
color: #D4AF37;
|
|
330
|
-
font
|
|
331
|
-
font
|
|
329
|
+
font-weight: 700;
|
|
330
|
+
font-size: 20px;
|
|
332
331
|
}
|
|
333
|
-
.stock
|
|
334
|
-
display: inline
|
|
332
|
+
.stock-badge {
|
|
333
|
+
display: inline-block;
|
|
335
334
|
padding: 6px 12px;
|
|
336
|
-
border
|
|
337
|
-
font
|
|
338
|
-
font
|
|
335
|
+
border-radius: 6px;
|
|
336
|
+
font-size: 12px;
|
|
337
|
+
font-weight: 600;
|
|
339
338
|
background: rgba(212, 175, 55, 0.1);
|
|
340
339
|
color: #D4AF37;
|
|
341
340
|
border: 1px solid rgba(212, 175, 55, 0.3);
|
|
342
|
-
margin
|
|
341
|
+
margin-top: 8px;
|
|
343
342
|
}
|
|
344
343
|
</style>
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
344
|
+
</head>
|
|
345
|
+
<body>
|
|
346
|
+
<div id="root">Loading...</div>
|
|
347
|
+
<script>
|
|
348
|
+
(function() {
|
|
349
|
+
function render() {
|
|
350
|
+
const data = (window.openai && window.openai.toolOutput) || {};
|
|
351
|
+
const root = document.getElementById('root');
|
|
353
352
|
|
|
354
353
|
${getWidgetRenderFunction(routePath)}
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
354
|
+
|
|
355
|
+
root.innerHTML = html;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
// Render immediately if data available
|
|
359
|
+
if (window.openai && window.openai.toolOutput) {
|
|
360
|
+
render();
|
|
361
|
+
} else {
|
|
362
|
+
// Wait for data to be injected
|
|
363
|
+
setTimeout(render, 50);
|
|
364
|
+
}
|
|
365
|
+
})();
|
|
367
366
|
</script>
|
|
368
|
-
|
|
369
|
-
|
|
367
|
+
</body>
|
|
368
|
+
</html>`;
|
|
370
369
|
return baseTemplate;
|
|
371
370
|
}
|
|
372
371
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui-next/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,eAAe,EAAa,MAAM,sBAAsB,CAAC;AAGlE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui-next/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nitrostack",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.52",
|
|
4
4
|
"description": "NitroStack - Build powerful MCP servers with TypeScript",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/core/index.js",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
36
|
"scripts": {
|
|
37
|
-
"build": "tsc &&
|
|
37
|
+
"build": "tsc && chmod +x dist/cli/index.js",
|
|
38
38
|
"dev": "tsc --watch",
|
|
39
39
|
"test": "jest",
|
|
40
40
|
"prepublishOnly": "npm run build"
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"commander": "^12.1.0",
|
|
63
63
|
"cors": "^2.8.5",
|
|
64
64
|
"dotenv": "^17.2.3",
|
|
65
|
-
"esbuild": "^0.
|
|
65
|
+
"esbuild": "^0.27.0",
|
|
66
66
|
"express": "^4.21.2",
|
|
67
67
|
"fs-extra": "^11.3.2",
|
|
68
68
|
"http-proxy-middleware": "^3.0.3",
|
|
@@ -11,7 +11,7 @@ interface WidgetRendererProps {
|
|
|
11
11
|
|
|
12
12
|
export function WidgetRenderer({ uri, data, className = '' }: WidgetRendererProps) {
|
|
13
13
|
const iframeRef = useRef<HTMLIFrameElement>(null);
|
|
14
|
-
|
|
14
|
+
|
|
15
15
|
// Check if we're in dev mode (localhost)
|
|
16
16
|
const isDevMode =
|
|
17
17
|
typeof window !== 'undefined' &&
|
|
@@ -26,9 +26,9 @@ export function WidgetRenderer({ uri, data, className = '' }: WidgetRendererProp
|
|
|
26
26
|
// Remove leading slash if present
|
|
27
27
|
const widgetPath = uri.startsWith('/') ? uri.substring(1) : uri;
|
|
28
28
|
const widgetUrl = `http://localhost:3001/${widgetPath}`;
|
|
29
|
-
|
|
29
|
+
|
|
30
30
|
console.log('Loading widget in dev mode:', { uri, widgetPath, widgetUrl, data });
|
|
31
|
-
|
|
31
|
+
|
|
32
32
|
// Set up onload handler BEFORE setting src
|
|
33
33
|
iframeRef.current.onload = () => {
|
|
34
34
|
console.log('Widget iframe loaded, posting data...');
|
|
@@ -48,7 +48,7 @@ export function WidgetRenderer({ uri, data, className = '' }: WidgetRendererProp
|
|
|
48
48
|
}
|
|
49
49
|
}, 300);
|
|
50
50
|
};
|
|
51
|
-
|
|
51
|
+
|
|
52
52
|
// Set src AFTER onload handler is set
|
|
53
53
|
iframeRef.current.src = widgetUrl;
|
|
54
54
|
} else {
|
|
@@ -56,25 +56,16 @@ export function WidgetRenderer({ uri, data, className = '' }: WidgetRendererProp
|
|
|
56
56
|
const loadProductionWidget = async () => {
|
|
57
57
|
try {
|
|
58
58
|
// Convert widget route/path to resource URI format if needed
|
|
59
|
-
// Routes like "/calculator-result" or "calculator-result" should become "
|
|
60
|
-
// But if it's already a full URI, use it.
|
|
59
|
+
// Routes like "/calculator-result" or "calculator-result" should become "widget://calculator-result"
|
|
61
60
|
let resourceUri = uri;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
// Remove .html extension if present in ID to avoid double extension
|
|
67
|
-
const cleanId = widgetId.replace(/\.html$/, '');
|
|
68
|
-
resourceUri = `ui://widget/${cleanId}.html`;
|
|
69
|
-
} else if (uri.startsWith('widget://')) {
|
|
70
|
-
// Legacy support or if user manually used widget://
|
|
71
|
-
// Convert to ui://widget/ if needed, or just use as is if the server supports it.
|
|
72
|
-
// But component.ts uses ui://widget/
|
|
73
|
-
// Let's assume the server resource map uses the full URI as key.
|
|
61
|
+
if (!uri.startsWith('widget://') && !uri.startsWith('http://') && !uri.startsWith('https://')) {
|
|
62
|
+
// Remove leading slash if present
|
|
63
|
+
const widgetPath = uri.startsWith('/') ? uri.substring(1) : uri;
|
|
64
|
+
resourceUri = `widget://${widgetPath}`;
|
|
74
65
|
}
|
|
75
|
-
|
|
66
|
+
|
|
76
67
|
console.log('Loading widget in production mode:', { originalUri: uri, resourceUri, data });
|
|
77
|
-
|
|
68
|
+
|
|
78
69
|
const response = await fetch(`/api/resources/${encodeURIComponent(resourceUri)}`);
|
|
79
70
|
const result = await response.json();
|
|
80
71
|
|
|
@@ -97,9 +88,9 @@ export function WidgetRenderer({ uri, data, className = '' }: WidgetRendererProp
|
|
|
97
88
|
console.warn('⚠️ Widget resource found but no content:', { resourceUri, result });
|
|
98
89
|
}
|
|
99
90
|
} catch (error) {
|
|
100
|
-
console.error('❌ Failed to load widget:', {
|
|
101
|
-
originalUri: uri,
|
|
102
|
-
resourceUri,
|
|
91
|
+
console.error('❌ Failed to load widget:', {
|
|
92
|
+
originalUri: uri,
|
|
93
|
+
resourceUri,
|
|
103
94
|
error: error instanceof Error ? error.message : String(error),
|
|
104
95
|
stack: error instanceof Error ? error.stack : undefined
|
|
105
96
|
});
|
|
@@ -111,7 +102,7 @@ export function WidgetRenderer({ uri, data, className = '' }: WidgetRendererProp
|
|
|
111
102
|
}, [uri, data, isDevMode]);
|
|
112
103
|
|
|
113
104
|
const isInChat = className?.includes('widget-in-chat');
|
|
114
|
-
|
|
105
|
+
|
|
115
106
|
return (
|
|
116
107
|
<iframe
|
|
117
108
|
ref={iframeRef}
|
package/src/studio/middleware.ts
CHANGED
|
@@ -5,20 +5,15 @@ import type { NextRequest } from 'next/server';
|
|
|
5
5
|
export function middleware(request: NextRequest) {
|
|
6
6
|
const { pathname } = request.nextUrl;
|
|
7
7
|
|
|
8
|
-
console.log(`[DEBUG] Middleware hit: ${pathname}`);
|
|
9
|
-
console.log(`[DEBUG] NODE_ENV: ${process.env.NODE_ENV}`);
|
|
10
|
-
console.log(`[DEBUG] WIDGETS_DEV_MODE: ${process.env.WIDGETS_DEV_MODE}`);
|
|
11
|
-
|
|
12
8
|
// In development, proxy widget requests to the widget dev server
|
|
13
9
|
if (process.env.NODE_ENV === 'development' && process.env.WIDGETS_DEV_MODE === 'true') {
|
|
14
10
|
const widgetsDevPort = process.env.WIDGETS_DEV_PORT || '3001';
|
|
15
|
-
console.log(`[Middleware] Proxying widgets to port ${widgetsDevPort}`);
|
|
16
11
|
|
|
17
12
|
// Proxy /widgets/* to widget dev server
|
|
18
13
|
if (pathname.startsWith('/widgets/')) {
|
|
19
14
|
const widgetPath = pathname.replace('/widgets/', '');
|
|
20
15
|
const targetUrl = `http://localhost:${widgetsDevPort}/${widgetPath}`;
|
|
21
|
-
|
|
16
|
+
|
|
22
17
|
return NextResponse.rewrite(new URL(targetUrl));
|
|
23
18
|
}
|
|
24
19
|
}
|
|
@@ -6,9 +6,6 @@ const __filename = fileURLToPath(import.meta.url);
|
|
|
6
6
|
const __dirname = path.dirname(__filename);
|
|
7
7
|
const require = createRequire(import.meta.url);
|
|
8
8
|
|
|
9
|
-
console.log('[DEBUG] Loading next.config.js');
|
|
10
|
-
console.log('[DEBUG] WIDGETS_DEV_MODE:', process.env.WIDGETS_DEV_MODE);
|
|
11
|
-
|
|
12
9
|
/** @type {import('next').NextConfig} */
|
|
13
10
|
const nextConfig = {
|
|
14
11
|
images: {
|
|
@@ -34,8 +31,6 @@ const nextConfig = {
|
|
|
34
31
|
env: {
|
|
35
32
|
MCP_SERVER_PORT: process.env.MCP_SERVER_PORT,
|
|
36
33
|
MCP_TRANSPORT_TYPE: process.env.MCP_TRANSPORT_TYPE,
|
|
37
|
-
WIDGETS_DEV_MODE: process.env.WIDGETS_DEV_MODE,
|
|
38
|
-
WIDGETS_DEV_PORT: process.env.WIDGETS_DEV_PORT,
|
|
39
34
|
},
|
|
40
35
|
};
|
|
41
36
|
|