diff --git a/agent-blueprint/chatbot-deployment/infrastructure/lib/chatbot-stack.ts b/agent-blueprint/chatbot-deployment/infrastructure/lib/chatbot-stack.ts index 0a79df6..130c0c9 100644 --- a/agent-blueprint/chatbot-deployment/infrastructure/lib/chatbot-stack.ts +++ b/agent-blueprint/chatbot-deployment/infrastructure/lib/chatbot-stack.ts @@ -299,6 +299,9 @@ export class ChatbotStack extends cdk.Stack { `if aws secretsmanager get-secret-value --secret-id "${projectName}/mcp/google-maps-credentials" --region ${this.region} &>/dev/null; then [ -n "$DEFAULT_KEYS" ] && DEFAULT_KEYS="$DEFAULT_KEYS,"; DEFAULT_KEYS="\${DEFAULT_KEYS}google_maps_api_key"; echo " ✓ Google Maps"; fi`, `if aws secretsmanager get-secret-value --secret-id "${projectName}/nova-act-api-key" --region ${this.region} &>/dev/null; then [ -n "$DEFAULT_KEYS" ] && DEFAULT_KEYS="$DEFAULT_KEYS,"; DEFAULT_KEYS="\${DEFAULT_KEYS}nova_act_api_key"; echo " ✓ Nova Act"; fi`, 'echo "Default API keys: $DEFAULT_KEYS"', + `BUILD_DATETIME=$(date -u +%Y%m%d%H%M%S)`, + `APP_VERSION="${process.env.NEXT_PUBLIC_APP_VERSION || '0.0.0'}-$BUILD_DATETIME"`, + 'echo "App Version: $APP_VERSION"', ], }, build: { diff --git a/chatbot-app/frontend/Dockerfile b/chatbot-app/frontend/Dockerfile index 1098f91..d068a70 100644 --- a/chatbot-app/frontend/Dockerfile +++ b/chatbot-app/frontend/Dockerfile @@ -20,6 +20,7 @@ ARG NEXT_PUBLIC_COGNITO_USER_POOL_CLIENT_ID ARG NEXT_PUBLIC_STREAMING_API_URL ARG NEXT_PUBLIC_GOOGLE_MAPS_EMBED_API_KEY ARG NEXT_PUBLIC_DEFAULT_KEYS +ARG NEXT_PUBLIC_APP_VERSION ARG CORS_ORIGINS # Set environment variables for build @@ -29,6 +30,7 @@ ENV NEXT_PUBLIC_COGNITO_USER_POOL_CLIENT_ID=$NEXT_PUBLIC_COGNITO_USER_POOL_CLIEN ENV NEXT_PUBLIC_STREAMING_API_URL=$NEXT_PUBLIC_STREAMING_API_URL ENV NEXT_PUBLIC_GOOGLE_MAPS_EMBED_API_KEY=$NEXT_PUBLIC_GOOGLE_MAPS_EMBED_API_KEY ENV NEXT_PUBLIC_DEFAULT_KEYS=$NEXT_PUBLIC_DEFAULT_KEYS +ENV NEXT_PUBLIC_APP_VERSION=$NEXT_PUBLIC_APP_VERSION ENV CORS_ORIGINS=$CORS_ORIGINS COPY --from=deps /app/node_modules ./node_modules @@ -42,6 +44,7 @@ RUN echo "NEXT_PUBLIC_COGNITO_USER_POOL_CLIENT_ID=$NEXT_PUBLIC_COGNITO_USER_POOL RUN echo "NEXT_PUBLIC_STREAMING_API_URL=$NEXT_PUBLIC_STREAMING_API_URL" RUN echo "NEXT_PUBLIC_GOOGLE_MAPS_EMBED_API_KEY=${NEXT_PUBLIC_GOOGLE_MAPS_EMBED_API_KEY:0:10}..." # Only show first 10 chars for security RUN echo "NEXT_PUBLIC_DEFAULT_KEYS=$NEXT_PUBLIC_DEFAULT_KEYS" +RUN echo "NEXT_PUBLIC_APP_VERSION=$NEXT_PUBLIC_APP_VERSION" RUN echo "CORS_ORIGINS=$CORS_ORIGINS" RUN npm run build diff --git a/chatbot-app/frontend/src/app/api/health/route.ts b/chatbot-app/frontend/src/app/api/health/route.ts index 4136daa..360a0d5 100644 --- a/chatbot-app/frontend/src/app/api/health/route.ts +++ b/chatbot-app/frontend/src/app/api/health/route.ts @@ -3,10 +3,12 @@ */ import { NextResponse } from 'next/server' +const VERSION = process.env.NEXT_PUBLIC_APP_VERSION || '1.0.0'; + export async function GET() { return NextResponse.json({ status: 'healthy', service: 'bff', - version: '2.0.0' + version: VERSION }) } diff --git a/chatbot-app/frontend/src/app/health/route.ts b/chatbot-app/frontend/src/app/health/route.ts index c6080ba..72382e4 100644 --- a/chatbot-app/frontend/src/app/health/route.ts +++ b/chatbot-app/frontend/src/app/health/route.ts @@ -1,5 +1,11 @@ import { NextResponse } from 'next/server'; +import { ENV_CONFIG } from '../../config/environment'; + export async function GET() { - return NextResponse.json({ status: 'healthy', timestamp: new Date().toISOString() }); + return NextResponse.json({ + status: 'healthy', + timestamp: new Date().toISOString(), + appversion: ENV_CONFIG.APP_VERSION + }); } diff --git a/chatbot-app/frontend/src/config/environment.ts b/chatbot-app/frontend/src/config/environment.ts index a338b84..13f6d8c 100644 --- a/chatbot-app/frontend/src/config/environment.ts +++ b/chatbot-app/frontend/src/config/environment.ts @@ -7,6 +7,8 @@ export const ENV_CONFIG = { API_BASE_URL: process.env.NEXT_PUBLIC_API_URL || 'http://localhost:8000', FRONTEND_URL: process.env.NEXT_PUBLIC_FRONTEND_URL || 'http://localhost:3000', + APP_VERSION: process.env.NEXT_PUBLIC_APP_VERSION || '0.0.0', + // Streaming API Configuration (bypasses CloudFront 60s timeout) // This should point to ALB directly for long-running streaming requests STREAMING_API_URL: process.env.NEXT_PUBLIC_STREAMING_API_URL || process.env.NEXT_PUBLIC_API_URL || 'http://localhost:3000',