From da637d4a74bf532adefeff0ae3a471b46caed530 Mon Sep 17 00:00:00 2001 From: Marc Mintel Date: Fri, 6 Mar 2026 01:50:30 +0100 Subject: [PATCH] feat: integrate Payload CMS context-aware Agent (@mintel/payload-ai) natively into payload.config.ts --- .env.example | 6 ++++++ next.config.mjs | 1 + package.json | 3 ++- payload.config.ts | 8 +++++++- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index 35710677..f291b5f9 100644 --- a/.env.example +++ b/.env.example @@ -48,6 +48,12 @@ 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 +OPENROUTER_API_KEY= + # ──────────────────────────────────────────────────────────────────────────── # Payload Infrastructure (Dockerized) # ──────────────────────────────────────────────────────────────────────────── diff --git a/next.config.mjs b/next.config.mjs index 103c4165..fc8425db 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -7,6 +7,7 @@ import { withPayload } from '@payloadcms/next/withPayload'; const isProd = process.env.NODE_ENV === 'production'; /** @type {import('next').NextConfig} */ const nextConfig = { + serverExternalPackages: ['@mintel/payload-ai'], onDemandEntries: { // Make sure entries are not disposed too quickly maxInactiveAge: 60 * 1000, diff --git a/package.json b/package.json index 317bc82a..149db1cd 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "@mintel/next-config": "^1.9.0", "@mintel/next-feedback": "^1.9.0", "@mintel/next-utils": "^1.9.0", + "@mintel/payload-ai": "^1.9.15", "@payloadcms/db-postgres": "^3.77.0", "@payloadcms/email-nodemailer": "^3.77.0", "@payloadcms/next": "^3.77.0", @@ -104,7 +105,7 @@ "vitest": "^4.0.16" }, "scripts": { - "dev": "bash -c 'trap \"COMPOSE_PROJECT_NAME=klz-2026 docker-compose -f docker-compose.dev.yml down\" EXIT INT TERM; docker network create infra 2>/dev/null || true && COMPOSE_PROJECT_NAME=klz-2026 docker-compose -f docker-compose.dev.yml down && COMPOSE_PROJECT_NAME=klz-2026 docker-compose -f docker-compose.dev.yml up klz-app klz-db --remove-orphans'", + "dev": "bash -c '[ -f .env ] || (cp .env.example .env && sed -i.bak \"s/TRAEFIK_HOST=klz-cables.com/TRAEFIK_HOST=klz.localhost/\" .env && rm -f .env.bak && echo \"✅ Created .env from .env.example\"); trap \"COMPOSE_PROJECT_NAME=klz-2026 docker-compose -f docker-compose.dev.yml down\" EXIT INT TERM; docker network create infra 2>/dev/null || true && COMPOSE_PROJECT_NAME=klz-2026 docker-compose -f docker-compose.dev.yml down && COMPOSE_PROJECT_NAME=klz-2026 docker-compose -f docker-compose.dev.yml up klz-app klz-db klz-proxy --remove-orphans'", "dev:local": "bash -c 'trap \"COMPOSE_PROJECT_NAME=klz-2026 docker-compose -f docker-compose.dev.yml down\" EXIT INT TERM; COMPOSE_PROJECT_NAME=klz-2026 docker-compose -f docker-compose.dev.yml up -d klz-db klz-proxy && POSTGRES_URI=NODE_ENV=development next dev --webpack --port 3100 --hostname 0.0.0.0'", "dev:infra": "COMPOSE_PROJECT_NAME=klz-2026 docker-compose -f docker-compose.dev.yml up -d klz-db klz-proxy", "build": "next build", diff --git a/payload.config.ts b/payload.config.ts index 289ba29c..1007f153 100644 --- a/payload.config.ts +++ b/payload.config.ts @@ -22,6 +22,7 @@ import { FormSubmissions } from './src/payload/collections/FormSubmissions'; import { Products } from './src/payload/collections/Products'; import { Pages } from './src/payload/collections/Pages'; import { seedDatabase } from './src/payload/seed'; +import { payloadChatPlugin } from '@mintel/payload-ai'; const filename = fileURLToPath(import.meta.url); const dirname = path.dirname(filename); @@ -98,5 +99,10 @@ export default buildConfig({ }) : undefined, sharp, - plugins: [], + plugins: [ + payloadChatPlugin({ + enabled: true, + mcpServers: [], + }), + ], });