nitrostack 1.0.73 → 1.0.75
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/auth/__tests__/api-key.test.d.ts +2 -0
- package/dist/auth/__tests__/api-key.test.d.ts.map +1 -0
- package/dist/auth/__tests__/api-key.test.js +136 -0
- package/dist/auth/__tests__/api-key.test.js.map +1 -0
- package/dist/auth/__tests__/middleware.test.d.ts +2 -0
- package/dist/auth/__tests__/middleware.test.d.ts.map +1 -0
- package/dist/auth/__tests__/middleware.test.js +186 -0
- package/dist/auth/__tests__/middleware.test.js.map +1 -0
- package/dist/auth/__tests__/pkce.test.d.ts +2 -0
- package/dist/auth/__tests__/pkce.test.d.ts.map +1 -0
- package/dist/auth/__tests__/pkce.test.js +110 -0
- package/dist/auth/__tests__/pkce.test.js.map +1 -0
- package/dist/auth/__tests__/secure-secret.test.d.ts +2 -0
- package/dist/auth/__tests__/secure-secret.test.d.ts.map +1 -0
- package/dist/auth/__tests__/secure-secret.test.js +42 -0
- package/dist/auth/__tests__/secure-secret.test.js.map +1 -0
- package/dist/auth/__tests__/simple-jwt.test.d.ts +2 -0
- package/dist/auth/__tests__/simple-jwt.test.d.ts.map +1 -0
- package/dist/auth/__tests__/simple-jwt.test.js +219 -0
- package/dist/auth/__tests__/simple-jwt.test.js.map +1 -0
- package/dist/auth/__tests__/token-store.test.d.ts +2 -0
- package/dist/auth/__tests__/token-store.test.d.ts.map +1 -0
- package/dist/auth/__tests__/token-store.test.js +79 -0
- package/dist/auth/__tests__/token-store.test.js.map +1 -0
- package/dist/auth/__tests__/token-validation.test.d.ts +2 -0
- package/dist/auth/__tests__/token-validation.test.d.ts.map +1 -0
- package/dist/auth/__tests__/token-validation.test.js +23 -0
- package/dist/auth/__tests__/token-validation.test.js.map +1 -0
- package/dist/cli/__tests__/cli-dev.test.d.ts +2 -0
- package/dist/cli/__tests__/cli-dev.test.d.ts.map +1 -0
- package/dist/cli/__tests__/cli-dev.test.js +83 -0
- package/dist/cli/__tests__/cli-dev.test.js.map +1 -0
- package/dist/cli/__tests__/cli-start.test.d.ts +2 -0
- package/dist/cli/__tests__/cli-start.test.d.ts.map +1 -0
- package/dist/cli/__tests__/cli-start.test.js +61 -0
- package/dist/cli/__tests__/cli-start.test.js.map +1 -0
- package/dist/cli/__tests__/cli.test.d.ts +2 -0
- package/dist/cli/__tests__/cli.test.d.ts.map +1 -0
- package/dist/cli/__tests__/cli.test.js +73 -0
- package/dist/cli/__tests__/cli.test.js.map +1 -0
- package/dist/cli/__tests__/commands.test.d.ts +2 -0
- package/dist/cli/__tests__/commands.test.d.ts.map +1 -0
- package/dist/cli/__tests__/commands.test.js +64 -0
- package/dist/cli/__tests__/commands.test.js.map +1 -0
- package/dist/cli/commands/install.d.ts +10 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +79 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/index.d.ts +2 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +76 -45
- package/dist/cli/index.js.map +1 -1
- package/dist/core/__tests__/core-modules.test.d.ts +2 -0
- package/dist/core/__tests__/core-modules.test.d.ts.map +1 -0
- package/dist/core/__tests__/core-modules.test.js +36 -0
- package/dist/core/__tests__/core-modules.test.js.map +1 -0
- package/dist/core/__tests__/errors.test.d.ts +2 -0
- package/dist/core/__tests__/errors.test.d.ts.map +1 -0
- package/dist/core/__tests__/errors.test.js +109 -0
- package/dist/core/__tests__/errors.test.js.map +1 -0
- package/dist/core/__tests__/logger.test.d.ts +2 -0
- package/dist/core/__tests__/logger.test.d.ts.map +1 -0
- package/dist/core/__tests__/logger.test.js +83 -0
- package/dist/core/__tests__/logger.test.js.map +1 -0
- package/dist/core/__tests__/models.test.d.ts +2 -0
- package/dist/core/__tests__/models.test.d.ts.map +1 -0
- package/dist/core/__tests__/models.test.js +142 -0
- package/dist/core/__tests__/models.test.js.map +1 -0
- package/dist/core/__tests__/module.test.d.ts +2 -0
- package/dist/core/__tests__/module.test.d.ts.map +1 -0
- package/dist/core/__tests__/module.test.js +60 -0
- package/dist/core/__tests__/module.test.js.map +1 -0
- package/dist/core/__tests__/prompt.test.d.ts +2 -0
- package/dist/core/__tests__/prompt.test.d.ts.map +1 -0
- package/dist/core/__tests__/prompt.test.js +126 -0
- package/dist/core/__tests__/prompt.test.js.map +1 -0
- package/dist/core/__tests__/resource.test.d.ts +2 -0
- package/dist/core/__tests__/resource.test.d.ts.map +1 -0
- package/dist/core/__tests__/resource.test.js +173 -0
- package/dist/core/__tests__/resource.test.js.map +1 -0
- package/dist/core/__tests__/server.test.d.ts +2 -0
- package/dist/core/__tests__/server.test.d.ts.map +1 -0
- package/dist/core/__tests__/server.test.js +120 -0
- package/dist/core/__tests__/server.test.js.map +1 -0
- package/dist/core/__tests__/transports.test.d.ts +2 -0
- package/dist/core/__tests__/transports.test.d.ts.map +1 -0
- package/dist/core/__tests__/transports.test.js +12 -0
- package/dist/core/__tests__/transports.test.js.map +1 -0
- package/dist/core/decorators/__tests__/decorators.test.d.ts +2 -0
- package/dist/core/decorators/__tests__/decorators.test.d.ts.map +1 -0
- package/dist/core/decorators/__tests__/decorators.test.js +103 -0
- package/dist/core/decorators/__tests__/decorators.test.js.map +1 -0
- package/dist/core/decorators/__tests__/extended-decorators.test.d.ts +2 -0
- package/dist/core/decorators/__tests__/extended-decorators.test.d.ts.map +1 -0
- package/dist/core/decorators/__tests__/extended-decorators.test.js +194 -0
- package/dist/core/decorators/__tests__/extended-decorators.test.js.map +1 -0
- package/dist/core/di/__tests__/container.test.d.ts +2 -0
- package/dist/core/di/__tests__/container.test.d.ts.map +1 -0
- package/dist/core/di/__tests__/container.test.js +88 -0
- package/dist/core/di/__tests__/container.test.js.map +1 -0
- package/dist/core/events/__tests__/events.test.d.ts +2 -0
- package/dist/core/events/__tests__/events.test.d.ts.map +1 -0
- package/dist/core/events/__tests__/events.test.js +177 -0
- package/dist/core/events/__tests__/events.test.js.map +1 -0
- package/dist/core/filters/__tests__/filters.test.d.ts +2 -0
- package/dist/core/filters/__tests__/filters.test.d.ts.map +1 -0
- package/dist/core/filters/__tests__/filters.test.js +72 -0
- package/dist/core/filters/__tests__/filters.test.js.map +1 -0
- package/dist/core/guards/__tests__/guards.test.d.ts +2 -0
- package/dist/core/guards/__tests__/guards.test.d.ts.map +1 -0
- package/dist/core/guards/__tests__/guards.test.js +55 -0
- package/dist/core/guards/__tests__/guards.test.js.map +1 -0
- package/dist/core/health/__tests__/health.test.d.ts +2 -0
- package/dist/core/health/__tests__/health.test.d.ts.map +1 -0
- package/dist/core/health/__tests__/health.test.js +31 -0
- package/dist/core/health/__tests__/health.test.js.map +1 -0
- package/dist/core/interceptors/__tests__/interceptors.test.d.ts +2 -0
- package/dist/core/interceptors/__tests__/interceptors.test.d.ts.map +1 -0
- package/dist/core/interceptors/__tests__/interceptors.test.js +52 -0
- package/dist/core/interceptors/__tests__/interceptors.test.js.map +1 -0
- package/dist/core/middleware/__tests__/middleware.test.d.ts +2 -0
- package/dist/core/middleware/__tests__/middleware.test.d.ts.map +1 -0
- package/dist/core/middleware/__tests__/middleware.test.js +105 -0
- package/dist/core/middleware/__tests__/middleware.test.js.map +1 -0
- package/dist/core/pipes/__tests__/pipes.test.d.ts +2 -0
- package/dist/core/pipes/__tests__/pipes.test.d.ts.map +1 -0
- package/dist/core/pipes/__tests__/pipes.test.js +164 -0
- package/dist/core/pipes/__tests__/pipes.test.js.map +1 -0
- package/dist/core/transports/__tests__/transports.test.d.ts +2 -0
- package/dist/core/transports/__tests__/transports.test.d.ts.map +1 -0
- package/dist/core/transports/__tests__/transports.test.js +249 -0
- package/dist/core/transports/__tests__/transports.test.js.map +1 -0
- package/dist/core/widgets/__tests__/registry.test.d.ts +2 -0
- package/dist/core/widgets/__tests__/registry.test.d.ts.map +1 -0
- package/dist/core/widgets/__tests__/registry.test.js +69 -0
- package/dist/core/widgets/__tests__/registry.test.js.map +1 -0
- package/dist/testing/__tests__/testing.test.d.ts +2 -0
- package/dist/testing/__tests__/testing.test.d.ts.map +1 -0
- package/dist/testing/__tests__/testing.test.js +167 -0
- package/dist/testing/__tests__/testing.test.js.map +1 -0
- package/dist/testing/index.d.ts +0 -6
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/ui-next/__tests__/ui-next.test.d.ts +2 -0
- package/dist/ui-next/__tests__/ui-next.test.d.ts.map +1 -0
- package/dist/ui-next/__tests__/ui-next.test.js +74 -0
- package/dist/ui-next/__tests__/ui-next.test.js.map +1 -0
- package/dist/widgets/__tests__/utils.test.d.ts +2 -0
- package/dist/widgets/__tests__/utils.test.d.ts.map +1 -0
- package/dist/widgets/__tests__/utils.test.js +80 -0
- package/dist/widgets/__tests__/utils.test.js.map +1 -0
- package/dist/widgets/__tests__/widgets.test.d.ts +2 -0
- package/dist/widgets/__tests__/widgets.test.d.ts.map +1 -0
- package/dist/widgets/__tests__/widgets.test.js +245 -0
- package/dist/widgets/__tests__/widgets.test.js.map +1 -0
- package/dist/widgets/hooks/__tests__/hooks.test.d.ts +2 -0
- package/dist/widgets/hooks/__tests__/hooks.test.d.ts.map +1 -0
- package/dist/widgets/hooks/__tests__/hooks.test.js +129 -0
- package/dist/widgets/hooks/__tests__/hooks.test.js.map +1 -0
- package/dist/widgets/hooks/__tests__/use-widget-state.test.d.ts +2 -0
- package/dist/widgets/hooks/__tests__/use-widget-state.test.d.ts.map +1 -0
- package/dist/widgets/hooks/__tests__/use-widget-state.test.js +66 -0
- package/dist/widgets/hooks/__tests__/use-widget-state.test.js.map +1 -0
- package/dist/widgets/runtime/__tests__/widget-polyfill.test.d.ts +2 -0
- package/dist/widgets/runtime/__tests__/widget-polyfill.test.d.ts.map +1 -0
- package/dist/widgets/runtime/__tests__/widget-polyfill.test.js +66 -0
- package/dist/widgets/runtime/__tests__/widget-polyfill.test.js.map +1 -0
- package/package.json +6 -2
- package/src/studio/app/chat/page.tsx +21 -0
- package/src/studio/components/WidgetErrorBoundary.tsx +1 -0
- package/src/studio/components/ops/index.ts +1 -0
- package/src/studio/components/ops/nodes/index.ts +1 -0
- package/src/studio/lib/llm-service.ts +77 -10
- package/templates/typescript-oauth/OAUTH_SETUP.md +592 -0
- package/templates/typescript-oauth/README.md +186 -235
- package/templates/typescript-oauth/package.json +5 -3
- package/templates/typescript-pizzaz/README.md +78 -57
- package/templates/typescript-pizzaz/package.json +32 -30
- package/templates/typescript-starter/README.md +22 -14
- package/templates/typescript-starter/package.json +4 -1
- package/templates/typescript-starter/package-lock.json +0 -4112
|
@@ -466,10 +466,7 @@ User: "list all resources"
|
|
|
466
466
|
} else {
|
|
467
467
|
// Regular user or assistant message
|
|
468
468
|
const parts: GeminiFunctionPart[] = [];
|
|
469
|
-
|
|
470
|
-
if (msg.content) {
|
|
471
|
-
parts.push({ text: msg.content });
|
|
472
|
-
}
|
|
469
|
+
let hasImageData = false;
|
|
473
470
|
|
|
474
471
|
if (msg.role === 'user' && msg.file) {
|
|
475
472
|
// Extract base64 and mime type
|
|
@@ -486,6 +483,7 @@ User: "list all resources"
|
|
|
486
483
|
mimeType.startsWith('audio/');
|
|
487
484
|
|
|
488
485
|
if (isSupported) {
|
|
486
|
+
hasImageData = true;
|
|
489
487
|
parts.push({
|
|
490
488
|
inlineData: {
|
|
491
489
|
mimeType: mimeType,
|
|
@@ -516,10 +514,22 @@ User: "list all resources"
|
|
|
516
514
|
}
|
|
517
515
|
}
|
|
518
516
|
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
parts
|
|
522
|
-
})
|
|
517
|
+
// Add text content - IMPORTANT: Gemini REQUIRES a text prompt when processing images
|
|
518
|
+
if (msg.content) {
|
|
519
|
+
parts.push({ text: msg.content });
|
|
520
|
+
} else if (hasImageData) {
|
|
521
|
+
// If we have image data but no text, add a default prompt
|
|
522
|
+
// Gemini requires at least some text instruction with images
|
|
523
|
+
parts.push({ text: `Please analyze this image (${msg.file?.name || 'uploaded file'}) and process it with the appropriate tool if needed.` });
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
// Only add content if we have parts
|
|
527
|
+
if (parts.length > 0) {
|
|
528
|
+
contents.push({
|
|
529
|
+
role: msg.role === 'assistant' ? 'model' : 'user',
|
|
530
|
+
parts,
|
|
531
|
+
});
|
|
532
|
+
}
|
|
523
533
|
i++;
|
|
524
534
|
}
|
|
525
535
|
}
|
|
@@ -582,8 +592,36 @@ User: "list all resources"
|
|
|
582
592
|
// console.log('Sending tools to Gemini:', JSON.stringify(requestBody.tools, null, 2));
|
|
583
593
|
}
|
|
584
594
|
|
|
595
|
+
// Add generation config to ensure we get a response
|
|
596
|
+
requestBody.generationConfig = {
|
|
597
|
+
temperature: 0.7,
|
|
598
|
+
topP: 0.95,
|
|
599
|
+
topK: 40,
|
|
600
|
+
maxOutputTokens: 8192,
|
|
601
|
+
};
|
|
602
|
+
|
|
603
|
+
// Add safety settings to be more permissive (for image processing)
|
|
604
|
+
requestBody.safetySettings = [
|
|
605
|
+
{ category: 'HARM_CATEGORY_HARASSMENT', threshold: 'BLOCK_ONLY_HIGH' },
|
|
606
|
+
{ category: 'HARM_CATEGORY_HATE_SPEECH', threshold: 'BLOCK_ONLY_HIGH' },
|
|
607
|
+
{ category: 'HARM_CATEGORY_SEXUALLY_EXPLICIT', threshold: 'BLOCK_ONLY_HIGH' },
|
|
608
|
+
{ category: 'HARM_CATEGORY_DANGEROUS_CONTENT', threshold: 'BLOCK_ONLY_HIGH' },
|
|
609
|
+
];
|
|
610
|
+
|
|
611
|
+
// Log request for debugging (truncate large data)
|
|
612
|
+
const debugRequest = JSON.parse(JSON.stringify(requestBody));
|
|
613
|
+
if (debugRequest.contents) {
|
|
614
|
+
debugRequest.contents = debugRequest.contents.map((c: { parts?: Array<{ inlineData?: { data?: string } }> }) => ({
|
|
615
|
+
...c,
|
|
616
|
+
parts: c.parts?.map((p: { inlineData?: { data?: string } }) =>
|
|
617
|
+
p.inlineData ? { ...p, inlineData: { ...p.inlineData, data: '[BASE64_TRUNCATED]' } } : p
|
|
618
|
+
)
|
|
619
|
+
}));
|
|
620
|
+
}
|
|
621
|
+
console.log('Gemini request body (truncated):', JSON.stringify(debugRequest, null, 2));
|
|
622
|
+
|
|
585
623
|
// Use Gemini 2.0 Flash Experimental (latest model with function calling)
|
|
586
|
-
//
|
|
624
|
+
// Fallback to gemini-1.5-flash if issues persist
|
|
587
625
|
const model = 'gemini-2.0-flash-exp';
|
|
588
626
|
const response = await fetch(
|
|
589
627
|
`https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey}`,
|
|
@@ -605,7 +643,36 @@ User: "list all resources"
|
|
|
605
643
|
|
|
606
644
|
const candidate = data.candidates?.[0];
|
|
607
645
|
if (!candidate) {
|
|
608
|
-
|
|
646
|
+
// Check for prompt feedback (content filtering)
|
|
647
|
+
if (data.promptFeedback) {
|
|
648
|
+
const feedback = data.promptFeedback;
|
|
649
|
+
if (feedback.blockReason) {
|
|
650
|
+
throw new Error(`Gemini blocked the request: ${feedback.blockReason}. ${feedback.blockReasonMessage || ''}`);
|
|
651
|
+
}
|
|
652
|
+
if (feedback.safetyRatings) {
|
|
653
|
+
const blockedRatings = feedback.safetyRatings.filter(
|
|
654
|
+
(r: { probability: string }) => r.probability === 'HIGH' || r.probability === 'MEDIUM'
|
|
655
|
+
);
|
|
656
|
+
if (blockedRatings.length > 0) {
|
|
657
|
+
throw new Error(`Gemini safety filter triggered: ${JSON.stringify(blockedRatings)}`);
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
// Check if there's a candidates array but it's empty with finish reason
|
|
663
|
+
if (data.candidates && data.candidates.length === 0) {
|
|
664
|
+
throw new Error('Gemini returned empty candidates - content may have been filtered');
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
// Generic error with full response for debugging
|
|
668
|
+
console.error('Full Gemini response without candidates:', JSON.stringify(data, null, 2));
|
|
669
|
+
throw new Error(`No response from Gemini. Response metadata: ${JSON.stringify(data.usageMetadata || {})}`);
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
// Check if candidate was blocked
|
|
673
|
+
if (candidate.finishReason === 'SAFETY' || candidate.finishReason === 'BLOCKED') {
|
|
674
|
+
const safetyRatings = candidate.safetyRatings || [];
|
|
675
|
+
throw new Error(`Gemini blocked response due to safety: ${JSON.stringify(safetyRatings)}`);
|
|
609
676
|
}
|
|
610
677
|
|
|
611
678
|
const parts = candidate.content?.parts || [];
|