Compare commits

...

6 Commits

Author SHA1 Message Date
6d109a7636 chore: fix pnpm patch path and bump version to 2.3.10
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 12s
Build & Deploy / 🧪 QA (push) Failing after 26s
Build & Deploy / 🏗️ Build (push) Has been skipped
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 2s
2026-04-09 22:09:19 +02:00
849c4808b8 chore: bump version to 2.3.9 and harden deploy pipeline
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 31s
Build & Deploy / 🏗️ Build (push) Has been skipped
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 3s
2026-04-09 22:00:05 +02:00
40e35cd013 fix(build): transpile @mintel/payload-ai and bump version to 2.3.8 to resolve @payload-config resolution error
Some checks failed
Build & Deploy / 🧪 QA (push) Failing after 18s
Build & Deploy / 🔍 Prepare (push) Successful in 18s
Build & Deploy / 🏗️ Build (push) Has been skipped
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 2s
2026-04-09 21:50:06 +02:00
ec6379c582 chore: align @mintel dependencies to 1.9.11 and fix AI model patch
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 17s
Build & Deploy / 🧪 QA (push) Successful in 2m48s
Build & Deploy / 🏗️ Build (push) Failing after 5m42s
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 3s
2026-04-09 13:22:49 +02:00
9623ca4b0d chore: deploy v2.3.6 (sync deps to 1.9.17, root v2.3.6, middleware fix)
Some checks failed
Build & Deploy / 🔍 Prepare (push) Failing after 12s
Build & Deploy / 🧪 QA (push) Has been skipped
Build & Deploy / 🏗️ Build (push) Has been skipped
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 2s
2026-04-09 12:30:38 +02:00
49f5c67aa2 fix(prod): resolve middleware piping error and AI model ID
Some checks failed
Build & Deploy / 🧪 QA (push) Failing after 1m44s
Build & Deploy / 🔍 Prepare (push) Successful in 16s
Build & Deploy / 🏗️ Build (push) Has been skipped
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 3s
2026-04-09 11:33:35 +02:00
10 changed files with 204 additions and 253 deletions

111
.env.bak Normal file
View File

@@ -0,0 +1,111 @@
# ============================================================================
# KLZ Cables - Environment Configuration
# ============================================================================
# Copy this file to .env for local development
# For production, use .env.production as a template
# ============================================================================
# ────────────────────────────────────────────────────────────────────────────
# Application Configuration
# ────────────────────────────────────────────────────────────────────────────
NODE_ENV=development
NEXT_PUBLIC_BASE_URL=http://localhost:3000
# TARGET is used to differentiate between environments (testing, staging, production)
# NEXT_PUBLIC_TARGET makes this information available to the frontend
TARGET=development
NEXT_PUBLIC_FEEDBACK_ENABLED=false
NEXT_PUBLIC_RECORD_MODE_ENABLED=true
# ────────────────────────────────────────────────────────────────────────────
# Analytics (Umami)
# ────────────────────────────────────────────────────────────────────────────
# Optional: Leave empty to disable analytics
UMAMI_WEBSITE_ID=
UMAMI_API_ENDPOINT=https://analytics.infra.mintel.me
# ────────────────────────────────────────────────────────────────────────────
# Error Tracking (GlitchTip/Sentry)
# ────────────────────────────────────────────────────────────────────────────
# Optional: Leave empty to disable error tracking
SENTRY_DSN=
# ────────────────────────────────────────────────────────────────────────────
# Email Configuration (SMTP)
# ────────────────────────────────────────────────────────────────────────────
# Required for contact form functionality
MAIL_HOST=smtp.eu.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_FROM=KLZ Cables <noreply@klz-cables.com>
MAIL_RECIPIENTS=info@klz-cables.com
# ────────────────────────────────────────────────────────────────────────────
# Logging
# ────────────────────────────────────────────────────────────────────────────
LOG_LEVEL=info
GATEKEEPER_PASSWORD=klz2026
SENTRY_DSN=
# SENTRY_ENVIRONMENT is set automatically by CI
# ────────────────────────────────────────────────────────────────────────────
# AI Agent (Payload CMS Agent via OpenRouter)
# ────────────────────────────────────────────────────────────────────────────
# Required for the Payload CMS AI Chat Agent
MISTRAL_API_KEY=
# ────────────────────────────────────────────────────────────────────────────
# Payload Infrastructure (Dockerized)
# ────────────────────────────────────────────────────────────────────────────
# The POSTGRES_URI and PAYLOAD_SECRET are automatically constructed and injected
# by docker-compose.yml using these base DB credentials, so you don't need to
# manually write the connection strings here.
PAYLOAD_DB_NAME=payload
PAYLOAD_DB_USER=payload
PAYLOAD_DB_PASSWORD=120in09oenaoinsd9iaidon
# ────────────────────────────────────────────────────────────────────────────
# Deployment Configuration (CI/CD only)
# ────────────────────────────────────────────────────────────────────────────
# These are typically set by the CI/CD workflow
IMAGE_TAG=latest
TRAEFIK_HOST=klz-cables.com
ENV_FILE=.env
# IMGPROXY_URL: The backend URL of the imgproxy instance (e.g. img.infra.mintel.me)
# Next.js will proxy requests from /_img to this URL.
IMGPROXY_URL=https://img.infra.mintel.me
# ────────────────────────────────────────────────────────────────────────────
# Varnish Configuration
# ────────────────────────────────────────────────────────────────────────────
VARNISH_CACHE_SIZE=256M
# ============================================================================
# IMPORTANT NOTES
# ============================================================================
#
# BUILD-TIME vs RUNTIME Variables:
# ─────────────────────────────────
# • NEXT_PUBLIC_* variables are baked into the client bundle at BUILD time
# They must be provided as --build-arg when building the Docker image
#
# • All other variables are used at RUNTIME only
# They are loaded from the .env file by docker-compose
#
# Docker Deployment:
# ──────────────────
# 1. Build-time: Only NEXT_PUBLIC_* vars are needed (via --build-arg)
# 2. Runtime: All vars are loaded from .env file on the server
# 3. Branch Deployments:
# - main branch uses .env.prod
# - staging branch uses .env.staging
# - CI/CD supports STAGING_ prefix for all secrets to override defaults
# - TRAEFIK_HOST is automatically derived from NEXT_PUBLIC_BASE_URL
#
# Security:
# ─────────
# • NEVER commit .env files with real credentials to git
# • Use Gitea/GitHub secrets for CI/CD workflows
# • Store production .env file securely on the server only
#
# ============================================================================

View File

@@ -121,16 +121,23 @@ jobs:
# ⏳ Wait for Upstream Packages/Images if Tagged
if [[ "${{ github.ref_type }}" == "tag" ]]; then
echo "🔎 Checking for @mintel dependencies in package.json..."
# Extract any @mintel/ version (they should be synced in monorepo)
UPSTREAM_VERSION=$(grep -o '"@mintel/.*": "[^"]*"' package.json | grep -v "next-utils" | cut -d'"' -f4 | sed 's/\^//; s/\~//' | sort -V | tail -1)
TAG_TO_WAIT="v$UPSTREAM_VERSION"
# Extract @mintel versions, cleaning caret/tilde, and filtering out workspace refs
VERSIONS=$(grep "@mintel/" package.json | sed -E 's/.*: "[^0-9]*([0-9]+\.[0-9]+\.[0-9]+).*/\1/' | sort -u)
echo "Found @mintel versions in package.json: $VERSIONS"
if [[ -n "$UPSTREAM_VERSION" && "$UPSTREAM_VERSION" != "workspace:"* ]]; then
UPSTREAM_VERSION=$(echo "$VERSIONS" | sort -V | tail -1)
if [[ -n "$UPSTREAM_VERSION" ]]; then
TAG_TO_WAIT="v$UPSTREAM_VERSION"
echo "🔎 Verifying tag $TAG_TO_WAIT in mmintel/at-mintel..."
# 1. Discovery (Works without token for public repositories)
UPSTREAM_SHA=$(git ls-remote --tags https://git.infra.mintel.me/mmintel/at-mintel.git "$TAG_TO_WAIT" | grep "$TAG_TO_WAIT" | tail -n1 | awk '{print $1}')
if [[ -z "$UPSTREAM_SHA" ]]; then
echo "❌ Error: Tag $TAG_TO_WAIT not found in mmintel/at-mintel."
echo "Full @mintel dependencies in package.json:"
grep "@mintel/" package.json
exit 1
fi
echo "✅ Tag verified: Found upstream SHA $UPSTREAM_SHA for $TAG_TO_WAIT"

View File

@@ -1,64 +0,0 @@
import { NextRequest, NextResponse } from 'next/server';
import { getPayload } from 'payload';
import configPromise from '@payload-config';
import { renderToStream } from '@react-pdf/renderer';
import React from 'react';
import { PDFPage } from '@/lib/pdf-page';
export async function GET(req: NextRequest, { params }: { params: Promise<{ slug: string }> }) {
try {
const { slug } = await params;
// Get Payload App
const payload = await getPayload({ config: configPromise });
// Fetch the page
const pages = await payload.find({
collection: 'pages',
where: {
slug: { equals: slug },
_status: { equals: 'published' },
},
limit: 1,
});
if (pages.totalDocs === 0) {
return new NextResponse('Page not found', { status: 404 });
}
const page = pages.docs[0];
// Determine locale from searchParams or default to 'de'
const searchParams = req.nextUrl.searchParams;
const locale = (searchParams.get('locale') as 'en' | 'de') || 'de';
// Render the React-PDF document into a stream
const stream = await renderToStream(<PDFPage page={page} locale={locale} />);
// Pipe the Node.js Readable stream into a valid fetch/Web Response stream
const body = new ReadableStream({
start(controller) {
stream.on('data', (chunk) => controller.enqueue(chunk));
stream.on('end', () => controller.close());
stream.on('error', (err) => controller.error(err));
},
cancel() {
(stream as any).destroy?.();
},
});
const filename = `${slug}.pdf`;
return new NextResponse(body, {
status: 200,
headers: {
'Content-Type': 'application/pdf',
'Content-Disposition': `attachment; filename="${filename}"`,
// Cache control if needed, skip for now.
},
});
} catch (error) {
console.error('Error generating PDF:', error);
return new NextResponse('Internal Server Error', { status: 500 });
}
}

View File

@@ -112,6 +112,7 @@ services:
- klz_qdrant_data:/qdrant/storage
networks:
- default
ports:
- "16333:6333"
klz-kabelfachmann:

View File

@@ -51,12 +51,26 @@ export default async function middleware(request: NextRequest) {
const hostHeader = headers.get('x-forwarded-host') || headers.get('host') || fallbackHost;
urlObj.protocol = proto;
effectiveRequest = new NextRequest(urlObj, {
headers: request.headers,
method: request.method,
body: request.body,
});
// Do NOT reconstruct NextRequest for GET/HEAD requests to avoid stream locking/piping errors.
// next-intl middleware primarily uses the URL and headers, so a simplified request-like object
// or a redirected URL is often enough. For robustness, we only clone if we really have to.
if (method === 'GET' || method === 'HEAD') {
// In Next.js 15+, we can clone headers but avoid re-passing the body stream.
effectiveRequest = new NextRequest(urlObj, {
headers: new Headers(request.headers),
method: request.method,
// No body for GET/HEAD
});
} else {
// For POST/PUT etc, we must be careful. Re-passing the body can only be done once.
// If we don't need to fix the URL for the body-reading part, we can skip it.
// But usually intl-middleware doesn't care about the body.
effectiveRequest = new NextRequest(urlObj, {
headers: new Headers(request.headers),
method: request.method,
body: request.body,
});
}
if (process.env.NODE_ENV !== 'production' || !process.env.CI) {
console.log(

View File

@@ -7,7 +7,7 @@ import { withPayload } from '@payloadcms/next/withPayload';
const isProd = process.env.NODE_ENV === 'production';
/** @type {import('next').NextConfig} */
const nextConfig = {
transpilePackages: ['react-image-crop', '@react-three/fiber'],
transpilePackages: ['react-image-crop', '@react-three/fiber', '@mintel/payload-ai'],
onDemandEntries: {
// Keep compiled pages/routes in memory for 5 minutes (reduced from 25m to prevent OOM)
maxInactiveAge: 5 * 60 * 1000,

View File

@@ -6,11 +6,11 @@
"dependencies": {
"@ai-sdk/google": "^3.0.31",
"@ai-sdk/openai": "^3.0.36",
"@mintel/mail": "^1.9.0",
"@mintel/next-config": "^1.9.0",
"@mintel/next-feedback": "^1.9.0",
"@mintel/next-utils": "^1.9.0",
"@mintel/payload-ai": "^1.9.15",
"@mintel/mail": "^1.9.17",
"@mintel/next-config": "^1.9.17",
"@mintel/next-feedback": "^1.9.17",
"@mintel/next-utils": "^1.9.17",
"@mintel/payload-ai": "^1.9.17",
"@payloadcms/db-postgres": "^3.77.0",
"@payloadcms/email-nodemailer": "^3.77.0",
"@payloadcms/next": "^3.77.0",
@@ -65,8 +65,8 @@
"@commitlint/config-conventional": "^20.4.0",
"@cspell/dict-de-de": "^4.1.2",
"@lhci/cli": "^0.15.1",
"@mintel/eslint-config": "^1.9.0",
"@mintel/tsconfig": "^1.9.0",
"@mintel/eslint-config": "^1.9.17",
"@mintel/tsconfig": "^1.9.17",
"@next/bundle-analyzer": "^16.1.6",
"@tailwindcss/cli": "^4.1.18",
"@tailwindcss/postcss": "^4.1.18",
@@ -160,7 +160,7 @@
"prepare": "husky",
"preinstall": "npx only-allow pnpm"
},
"version": "2.2.12",
"version": "2.3.10",
"pnpm": {
"onlyBuiltDependencies": [
"@parcel/watcher",
@@ -174,7 +174,7 @@
"minimatch": ">=10.2.2"
},
"patchedDependencies": {
"@mintel/payload-ai@1.9.15": "patches/@mintel__payload-ai@1.9.15.patch"
"@mintel/payload-ai@1.9.17": "patches/@mintel__payload-ai@1.9.17.patch"
}
},
"browserslist": [

View File

@@ -1,131 +0,0 @@
diff --git a/dist/components/ChatWindow/index.js b/dist/components/ChatWindow/index.js
index 90c65bae4abb78beec98d8308e808e8ba341dcc2..f675dbc69ff82b64438288f53599c93a56391b64 100644
--- a/dist/components/ChatWindow/index.js
+++ b/dist/components/ChatWindow/index.js
@@ -2,7 +2,6 @@
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
import { useState } from 'react';
import { useChat } from '@ai-sdk/react';
-import './ChatWindow.scss';
export const ChatWindowProvider = ({ children }) => {
return (_jsxs(_Fragment, { children: [children, _jsx(ChatWindow, {})] }));
};
@@ -14,47 +13,63 @@ const ChatWindow = () => {
initialMessages: []
});
// Basic implementation to toggle chat window and submit messages
- return (_jsxs("div", { className: "payload-mcp-chat-container", children: [_jsx("button", { className: "payload-mcp-chat-toggle", onClick: () => setIsOpen(!isOpen), style: {
- position: 'fixed',
- bottom: '20px',
- right: '20px',
- zIndex: 9999,
- padding: '12px 24px',
- backgroundColor: '#000',
- color: '#fff',
- borderRadius: '8px',
- border: 'none',
- cursor: 'pointer',
- fontWeight: 'bold'
- }, children: isOpen ? 'Close AI Chat' : 'Ask AI' }), isOpen && (_jsxs("div", { className: "payload-mcp-chat-window", style: {
- position: 'fixed',
- bottom: '80px',
- right: '20px',
- width: '400px',
- height: '600px',
- backgroundColor: '#fff',
- border: '1px solid #eaeaea',
- borderRadius: '12px',
- zIndex: 9999,
- display: 'flex',
- flexDirection: 'column',
- boxShadow: '0 10px 40px rgba(0,0,0,0.1)'
- }, children: [_jsx("div", { className: "chat-header", style: { padding: '16px', borderBottom: '1px solid #eaeaea', backgroundColor: '#f9f9f9', borderTopLeftRadius: '12px', borderTopRightRadius: '12px' }, children: _jsx("h3", { style: { margin: 0, fontSize: '16px' }, children: "Payload MCP Chat" }) }), _jsx("div", { className: "chat-messages", style: { flex: 1, padding: '16px', overflowY: 'auto' }, children: messages.map((m) => (_jsx("div", { style: {
- marginBottom: '12px',
- textAlign: m.role === 'user' ? 'right' : 'left'
- }, children: _jsxs("div", { style: {
- display: 'inline-block',
- padding: '8px 12px',
- borderRadius: '8px',
- backgroundColor: m.role === 'user' ? '#000' : '#f0f0f0',
- color: m.role === 'user' ? '#fff' : '#000',
- maxWidth: '80%'
- }, children: [m.role === 'user' ? 'G: ' : 'AI: ', m.content] }) }, m.id))) }), _jsx("form", { onSubmit: handleSubmit, style: { padding: '16px', borderTop: '1px solid #eaeaea' }, children: _jsx("input", { value: input, placeholder: "Ask me anything or use /commands...", onChange: handleInputChange, style: {
- width: '100%',
- padding: '12px',
- borderRadius: '8px',
- border: '1px solid #eaeaea',
- boxSizing: 'border-box'
- } }) })] }))] }));
+ return (_jsxs("div", {
+ className: "payload-mcp-chat-container", children: [_jsx("button", {
+ className: "payload-mcp-chat-toggle", onClick: () => setIsOpen(!isOpen), style: {
+ position: 'fixed',
+ bottom: '20px',
+ right: '20px',
+ zIndex: 9999,
+ padding: '12px 24px',
+ backgroundColor: '#000',
+ color: '#fff',
+ borderRadius: '8px',
+ border: 'none',
+ cursor: 'pointer',
+ fontWeight: 'bold'
+ }, children: isOpen ? 'Close AI Chat' : 'Ask AI'
+ }), isOpen && (_jsxs("div", {
+ className: "payload-mcp-chat-window", style: {
+ position: 'fixed',
+ bottom: '80px',
+ right: '20px',
+ width: '400px',
+ height: '600px',
+ backgroundColor: '#fff',
+ border: '1px solid #eaeaea',
+ borderRadius: '12px',
+ zIndex: 9999,
+ display: 'flex',
+ flexDirection: 'column',
+ boxShadow: '0 10px 40px rgba(0,0,0,0.1)'
+ }, children: [_jsx("div", { className: "chat-header", style: { padding: '16px', borderBottom: '1px solid #eaeaea', backgroundColor: '#f9f9f9', borderTopLeftRadius: '12px', borderTopRightRadius: '12px' }, children: _jsx("h3", { style: { margin: 0, fontSize: '16px' }, children: "Payload MCP Chat" }) }), _jsx("div", {
+ className: "chat-messages", style: { flex: 1, padding: '16px', overflowY: 'auto' }, children: messages.map((m) => (_jsx("div", {
+ style: {
+ marginBottom: '12px',
+ textAlign: m.role === 'user' ? 'right' : 'left'
+ }, children: _jsxs("div", {
+ style: {
+ display: 'inline-block',
+ padding: '8px 12px',
+ borderRadius: '8px',
+ backgroundColor: m.role === 'user' ? '#000' : '#f0f0f0',
+ color: m.role === 'user' ? '#fff' : '#000',
+ maxWidth: '80%'
+ }, children: [m.role === 'user' ? 'G: ' : 'AI: ', m.content]
+ })
+ }, m.id)))
+ }), _jsx("form", {
+ onSubmit: handleSubmit, style: { padding: '16px', borderTop: '1px solid #eaeaea' }, children: _jsx("input", {
+ value: input, placeholder: "Ask me anything or use /commands...", onChange: handleInputChange, style: {
+ width: '100%',
+ padding: '12px',
+ borderRadius: '8px',
+ border: '1px solid #eaeaea',
+ boxSizing: 'border-box'
+ }
+ })
+ })]
+ }))]
+ }));
};
//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/src/components/ChatWindow/index.tsx b/src/components/ChatWindow/index.tsx
index 9081ae77d4eae53ce660e285c1a6babde99ceaab..f262f1dd0fd1199734024cc27905d956e31900a2 100644
--- a/src/components/ChatWindow/index.tsx
+++ b/src/components/ChatWindow/index.tsx
@@ -2,7 +2,6 @@
import React, { useState } from 'react'
import { useChat } from '@ai-sdk/react'
-import './ChatWindow.scss'
export const ChatWindowProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
return (

View File

@@ -0,0 +1,13 @@
diff --git a/dist/endpoints/chatEndpoint.js b/dist/endpoints/chatEndpoint.js
index 85a4a2d1ab757e32a303d9f4b2462436af5e2398..23902b2a18eedb583d8a6ee7028c5e855177880b 100644
--- a/dist/endpoints/chatEndpoint.js
+++ b/dist/endpoints/chatEndpoint.js
@@ -49,7 +49,7 @@ export const handleMcpChat = async (req) => {
try {
const result = streamText({
// @ts-ignore - AI SDK type mismatch
- model: openrouter('google/gemini-3.0-flash'),
+ model: openrouter('google/gemini-3.1-flash-lite-preview'),
messages,
tools: activeTools,
system: `You are a helpful Payload CMS MCP Assistant orchestrating the local Mintel ecosystem.

76
pnpm-lock.yaml generated
View File

@@ -9,9 +9,9 @@ overrides:
minimatch: '>=10.2.2'
patchedDependencies:
'@mintel/payload-ai@1.9.15':
hash: 934315d3f15180552789a94bf76c34624501f601cc7409c24da3dc27af96c8fb
path: patches/@mintel__payload-ai@1.9.15.patch
'@mintel/payload-ai@1.9.11':
hash: b9febebd655d7dfe4db671cf43d3f9030965ca2c0f541aba62df9a1cb8b99496
path: patches/@mintel__payload-ai@1.9.11.patch
importers:
@@ -24,20 +24,20 @@ importers:
specifier: ^3.0.36
version: 3.0.36(zod@3.25.76)
'@mintel/mail':
specifier: ^1.9.0
version: 1.9.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
specifier: 1.9.11
version: 1.9.11(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mintel/next-config':
specifier: ^1.9.0
version: 1.9.5(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.1(@opentelemetry/api@1.9.0))(@swc/helpers@0.5.18)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)(typescript@5.9.3)(webpack@5.105.0(esbuild@0.25.12))
specifier: 1.9.11
version: 1.9.11(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.1(@opentelemetry/api@1.9.0))(@swc/helpers@0.5.18)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)(typescript@5.9.3)(webpack@5.105.0(esbuild@0.25.12))
'@mintel/next-feedback':
specifier: ^1.9.0
version: 1.9.5(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)
specifier: 1.9.11
version: 1.9.11(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)
'@mintel/next-utils':
specifier: ^1.9.0
version: 1.9.5(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.18)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)(typescript@5.9.3)
specifier: 1.9.11
version: 1.9.11(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.18)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)(typescript@5.9.3)
'@mintel/payload-ai':
specifier: ^1.9.15
version: 1.9.15(patch_hash=934315d3f15180552789a94bf76c34624501f601cc7409c24da3dc27af96c8fb)(@payloadcms/next@3.77.0(@types/react@19.2.13)(graphql@16.12.0)(monaco-editor@0.55.1)(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@payloadcms/ui@3.77.0(@types/react@19.2.13)(monaco-editor@0.55.1)(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)(ws@8.19.0)
specifier: 1.9.11
version: 1.9.11(patch_hash=b9febebd655d7dfe4db671cf43d3f9030965ca2c0f541aba62df9a1cb8b99496)(@payloadcms/next@3.77.0(@types/react@19.2.13)(graphql@16.12.0)(monaco-editor@0.55.1)(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@payloadcms/ui@3.77.0(@types/react@19.2.13)(monaco-editor@0.55.1)(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)(ws@8.19.0)
'@payloadcms/db-postgres':
specifier: ^3.77.0
version: 3.77.0(@opentelemetry/api@1.9.0)(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))
@@ -196,11 +196,11 @@ importers:
specifier: ^0.15.1
version: 0.15.1
'@mintel/eslint-config':
specifier: ^1.9.0
version: 1.9.5(@typescript-eslint/parser@8.56.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
specifier: 1.9.11
version: 1.9.11(@typescript-eslint/parser@8.56.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
'@mintel/tsconfig':
specifier: ^1.9.0
version: 1.9.5
specifier: 1.9.11
version: 1.9.11
'@next/bundle-analyzer':
specifier: ^16.1.6
version: 16.1.6
@@ -1801,14 +1801,14 @@ packages:
'@mintel/content-engine@1.9.10':
resolution: {integrity: sha512-rv5vJ1bQkW713q14tPLOgRt5Y7+t4tu76i3H3tJkCADAqGvLrM/QuI9SF6aR9H8/KHzzF7BjRHDFsHPYqzQhpg==, tarball: https://git.infra.mintel.me/api/packages/mmintel/npm/%40mintel%2Fcontent-engine/-/1.9.10/content-engine-1.9.10.tgz}
'@mintel/eslint-config@1.9.5':
resolution: {integrity: sha512-nZylW/99gnzkU/oCQNR5Muj6/gGYsf1EJSM8LSRAU3sU6wR3kUu4cba7LVQPb6uTrfW8CzD2JsL8pzanDqSZzA==, tarball: https://git.infra.mintel.me/api/packages/mmintel/npm/%40mintel%2Feslint-config/-/1.9.5/eslint-config-1.9.5.tgz}
'@mintel/eslint-config@1.9.11':
resolution: {integrity: sha512-g0FfWbSjfNuKAWa9yd4eC02mr9db66Y71TZ+FN3aUrLLMjwn3qqtEHez+8Dbray0loLiGDkm75EI7N0+mgA9yA==, tarball: https://git.infra.mintel.me/api/packages/mmintel/npm/%40mintel%2Feslint-config/-/1.9.11/eslint-config-1.9.11.tgz}
'@mintel/journaling@1.9.10':
resolution: {integrity: sha512-wuOz6bhloVgw1yiA3OhRMxak7pqB5kft62QjxPz1w+LSRaRR4nDXRR1qhSdKlcqLhEJL5+kljJnVMZ3N2UhJnw==, tarball: https://git.infra.mintel.me/api/packages/mmintel/npm/%40mintel%2Fjournaling/-/1.9.10/journaling-1.9.10.tgz}
'@mintel/mail@1.9.5':
resolution: {integrity: sha512-g7+pL2/NFrmjAgMUHHj4GTpWestabdIZBR0UkMiJBsEFpxu7TFJXorFw418w/z+G21JQDKLyQrT/NpNLaCFW+Q==, tarball: https://git.infra.mintel.me/api/packages/mmintel/npm/%40mintel%2Fmail/-/1.9.5/mail-1.9.5.tgz}
'@mintel/mail@1.9.11':
resolution: {integrity: sha512-kvmrYYpFqtyqft5wCCY5kUhgDm7D7ocCLrv0SMPXp6w8ULuv7cuCEPWoJ+BbfJ1eXDGDnCpW3CYJSKGjoVrLIA==, tarball: https://git.infra.mintel.me/api/packages/mmintel/npm/%40mintel%2Fmail/-/1.9.11/mail-1.9.11.tgz}
peerDependencies:
react: ^19.0.0
react-dom: ^19.0.0
@@ -1816,20 +1816,20 @@ packages:
'@mintel/meme-generator@1.9.10':
resolution: {integrity: sha512-Mg89RH4KgKOmpFF1G6DNu/LPzzQg2CgV15lazpsLa8ce/XydcSXOv2QvS2jk3kytGHOgqnu3j3xAn10Yi4KgvA==, tarball: https://git.infra.mintel.me/api/packages/mmintel/npm/%40mintel%2Fmeme-generator/-/1.9.10/meme-generator-1.9.10.tgz}
'@mintel/next-config@1.9.5':
resolution: {integrity: sha512-gnEtpoGXHjFwPIccU5GUoqqkAL1vni1uNtxSJ1XkG4z8HVQ9C3dH4IxxmUqMJaLL0fTSDOZpZKZIV0C1C28iyg==, tarball: https://git.infra.mintel.me/api/packages/mmintel/npm/%40mintel%2Fnext-config/-/1.9.5/next-config-1.9.5.tgz}
'@mintel/next-config@1.9.11':
resolution: {integrity: sha512-9MvrTdXvkl8uneLdlq8DBx2g/5kq7LfN369LkYMm65tKqJMgKFxjBlzzBhbjeMgPZimyj7E87boqEaHcIJZttA==, tarball: https://git.infra.mintel.me/api/packages/mmintel/npm/%40mintel%2Fnext-config/-/1.9.11/next-config-1.9.11.tgz}
'@mintel/next-feedback@1.9.5':
resolution: {integrity: sha512-7h9ClhTiEA86u+8hrdJohoPJUkVGy6txSo9P9/7//wS/CL81c5azV7GrGDS/pdGmAYdkVSp14i3/8Uq9lqTlZA==, tarball: https://git.infra.mintel.me/api/packages/mmintel/npm/%40mintel%2Fnext-feedback/-/1.9.5/next-feedback-1.9.5.tgz}
'@mintel/next-feedback@1.9.11':
resolution: {integrity: sha512-qMmU/LSXnXe4KyQI+8qwv8JpBz9ZdqK7gqHLSla6s2QZyv1woRAIYM3Ryr+Uhho56Ehyv/no50K6sOnra5iKPw==, tarball: https://git.infra.mintel.me/api/packages/mmintel/npm/%40mintel%2Fnext-feedback/-/1.9.11/next-feedback-1.9.11.tgz}
peerDependencies:
react: ^19.0.0
react-dom: ^19.0.0
'@mintel/next-utils@1.9.5':
resolution: {integrity: sha512-Ndcf2AONTccw8zMbsyFudubBsnoXfYuYoRPGq3d5OLcKfzlz+2g0ee8xcsNFwa9fpnAAMlvauYu0mIRGA/ydVA==, tarball: https://git.infra.mintel.me/api/packages/mmintel/npm/%40mintel%2Fnext-utils/-/1.9.5/next-utils-1.9.5.tgz}
'@mintel/next-utils@1.9.11':
resolution: {integrity: sha512-Yxg2EdKbWfjQ9/HcOQN0/TDwVXwCkWaEo1DXKekJF1V2Au3y01py2qD+0yVXZ5l80vLj95ct5/O4s6i6l27MlA==, tarball: https://git.infra.mintel.me/api/packages/mmintel/npm/%40mintel%2Fnext-utils/-/1.9.11/next-utils-1.9.11.tgz}
'@mintel/payload-ai@1.9.15':
resolution: {integrity: sha512-8TZ1imcLgOjXZsBt6fQMVLfkhsIRKz7tJqq5aTnOO28kwCb+TvTh+5AgZWKWxxTSXPYcpc3Zt97kNraOT18dzg==, tarball: https://git.infra.mintel.me/api/packages/mmintel/npm/%40mintel%2Fpayload-ai/-/1.9.15/payload-ai-1.9.15.tgz}
'@mintel/payload-ai@1.9.11':
resolution: {integrity: sha512-Gx+gMdbnrEJy2PWUcRJt97zZzAflg7WdJd6iocMVu+/7GDP9riDfR8JZfbkURav1od/ZuI+/Q9vHkdkNa1PCoQ==, tarball: https://git.infra.mintel.me/api/packages/mmintel/npm/%40mintel%2Fpayload-ai/-/1.9.11/payload-ai-1.9.11.tgz}
peerDependencies:
'@payloadcms/next': '>=3.0.0'
'@payloadcms/ui': '>=3.0.0'
@@ -1840,8 +1840,8 @@ packages:
'@mintel/thumbnail-generator@1.9.10':
resolution: {integrity: sha512-3YcM4w7ysuffsxUJenx7RRSyTFhirDXDTgQ1KbRhNxkQH+9fCQUrH72w9lDNCZmP2776TSmwDPK46KD5CAGKzw==, tarball: https://git.infra.mintel.me/api/packages/mmintel/npm/%40mintel%2Fthumbnail-generator/-/1.9.10/thumbnail-generator-1.9.10.tgz}
'@mintel/tsconfig@1.9.5':
resolution: {integrity: sha512-dxYJoGAE+9vwaPIpQL3NCzyEKMFYuJyDwWmCuUeP0lFo91brgSpHfl4cw98sK8UsrncIP6r4YvAgncooVnovaQ==, tarball: https://git.infra.mintel.me/api/packages/mmintel/npm/%40mintel%2Ftsconfig/-/1.9.5/tsconfig-1.9.5.tgz}
'@mintel/tsconfig@1.9.11':
resolution: {integrity: sha512-nZ6RfIgvcT2kMtskHAprR8SIQFDxStMoIe1X7GMFzA/5lP5QQyv5rGpSQY8KcPwB17Dcz9rxO+QilE0Gj86qkg==, tarball: https://git.infra.mintel.me/api/packages/mmintel/npm/%40mintel%2Ftsconfig/-/1.9.11/tsconfig-1.9.11.tgz}
'@modelcontextprotocol/sdk@1.27.1':
resolution: {integrity: sha512-sr6GbP+4edBwFndLbM60gf07z0FQ79gaExpnsjMGePXqFcSSb7t6iscpjk9DhFhwd+mTEQrzNafGP8/iGGFYaA==}
@@ -10725,7 +10725,7 @@ snapshots:
- ws
- zod
'@mintel/eslint-config@1.9.5(@typescript-eslint/parser@8.56.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)':
'@mintel/eslint-config@1.9.11(@typescript-eslint/parser@8.56.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
'@eslint/eslintrc': 3.3.4
'@eslint/js': 9.39.3
@@ -10752,7 +10752,7 @@ snapshots:
- ws
- zod
'@mintel/mail@1.9.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
'@mintel/mail@1.9.11(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@react-email/components': 0.0.33(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
react: 19.2.4
@@ -10766,7 +10766,7 @@ snapshots:
- ws
- zod
'@mintel/next-config@1.9.5(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.1(@opentelemetry/api@1.9.0))(@swc/helpers@0.5.18)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)(typescript@5.9.3)(webpack@5.105.0(esbuild@0.25.12))':
'@mintel/next-config@1.9.11(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.1(@opentelemetry/api@1.9.0))(@swc/helpers@0.5.18)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)(typescript@5.9.3)(webpack@5.105.0(esbuild@0.25.12))':
dependencies:
'@sentry/nextjs': 10.39.0(@opentelemetry/context-async-hooks@2.5.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.1(@opentelemetry/api@1.9.0))(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3))(react@19.2.4)(webpack@5.105.0(esbuild@0.25.12))
next: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)
@@ -10789,7 +10789,7 @@ snapshots:
- typescript
- webpack
'@mintel/next-feedback@1.9.5(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)':
'@mintel/next-feedback@1.9.11(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)':
dependencies:
'@medv/finder': 4.0.2
clsx: 2.1.1
@@ -10809,7 +10809,7 @@ snapshots:
- babel-plugin-react-compiler
- sass
'@mintel/next-utils@1.9.5(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.18)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)(typescript@5.9.3)':
'@mintel/next-utils@1.9.11(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.18)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)(typescript@5.9.3)':
dependencies:
next: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)
next-intl: 4.8.2(@swc/helpers@0.5.18)(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3))(react@19.2.4)(typescript@5.9.3)
@@ -10826,7 +10826,7 @@ snapshots:
- sass
- typescript
'@mintel/payload-ai@1.9.15(patch_hash=934315d3f15180552789a94bf76c34624501f601cc7409c24da3dc27af96c8fb)(@payloadcms/next@3.77.0(@types/react@19.2.13)(graphql@16.12.0)(monaco-editor@0.55.1)(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@payloadcms/ui@3.77.0(@types/react@19.2.13)(monaco-editor@0.55.1)(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)(ws@8.19.0)':
'@mintel/payload-ai@1.9.11(patch_hash=b9febebd655d7dfe4db671cf43d3f9030965ca2c0f541aba62df9a1cb8b99496)(@payloadcms/next@3.77.0(@types/react@19.2.13)(graphql@16.12.0)(monaco-editor@0.55.1)(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@payloadcms/ui@3.77.0(@types/react@19.2.13)(monaco-editor@0.55.1)(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)(ws@8.19.0)':
dependencies:
'@ai-sdk/openai': 3.0.41(zod@3.25.76)
'@ai-sdk/react': 3.0.118(react@19.2.4)(zod@3.25.76)
@@ -10854,7 +10854,7 @@ snapshots:
dependencies:
replicate: 1.4.0
'@mintel/tsconfig@1.9.5': {}
'@mintel/tsconfig@1.9.11': {}
'@modelcontextprotocol/sdk@1.27.1(zod@3.25.76)':
dependencies: