Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
132 commits
Select commit Hold shift + click to select a range
5e967b4
feat: Complete Nexus-UMMID hackathon documentation and strategy
mondweep Dec 5, 2025
295fe38
feat: Finalize 13-agent swarm strategy, build guides and documentatio…
mondweep Dec 6, 2025
40a60c8
feat: Add persistent swarm scripts and config
mondweep Dec 6, 2025
774f7c5
feat: Implement Nexus-UMMID Metadata API with full production stack
claude Dec 6, 2025
023f0d3
Merge pull request #1 from mondweep/claude/init-nexus-ummid-012oEX5Es…
mondweep Dec 6, 2025
47df298
docs: Update Hackathon Milestones with Phase 2 progress
claude Dec 6, 2025
cb7b43e
feat: Add platform connectors, AgentDB learning, and Claude-Flow inte…
claude Dec 6, 2025
eace86f
docs: Update README with Claude-Flow integration and Phase 2 progress
claude Dec 6, 2025
6ea7fe5
fix: Resolve TypeScript errors and jest config in metadata-api tests
mondweep Dec 6, 2025
7990b5a
feat: Complete Phase 2 - Vertex AI, RuVector, Production deployment
claude Dec 6, 2025
18fdc87
feat: Deploy Nexus-UMMID API to Cloud Run
claude Dec 6, 2025
03c7356
Merge pull request #2 from mondweep/claude/init-nexus-ummid-012oEX5Es…
mondweep Dec 6, 2025
509c257
Merge pull request #3 from mondweep/main
mondweep Dec 6, 2025
c25e7c1
docs: Update README with live production status
claude Dec 6, 2025
2f057a7
feat: Add Phase 4 Discovery Demo UI
claude Dec 6, 2025
753fdb4
feat: Add deployment script and update cloudbuild for demo UI
claude Dec 6, 2025
94af1d5
fix: Add dir path to cloudbuild.yaml for correct Dockerfile location
claude Dec 6, 2025
158173c
fix: Add step to create Artifact Registry repository before push
claude Dec 6, 2025
fcd29bd
feat: Add Netlify configuration for static deployment
claude Dec 6, 2025
f569801
fix: Add IAM policy binding step for public access
claude Dec 6, 2025
2e60502
docs: Update README with Phase 4 Demo UI status and progressive plan
claude Dec 6, 2025
8dca30d
feat: Add Option 2 - Full Discovery Experience
claude Dec 6, 2025
c9318f6
Merge pull request #4 from mondweep/claude/init-nexus-ummid-012oEX5Es…
mondweep Dec 6, 2025
f4ffe41
docs: Update README with Option 2 complete, Option 3 in progress
claude Dec 6, 2025
180d497
feat: Add Option 3 - Real Metadata Integration with TMDb
claude Dec 6, 2025
f66263c
fix: Make IAM policy step non-blocking in cloudbuild
claude Dec 6, 2025
592f1d0
Merge pull request #5 from mondweep/claude/init-nexus-ummid-012oEX5Es…
mondweep Dec 6, 2025
a05b4d2
docs: Mark Phase 4 Option 3 as complete - all features verified
claude Dec 6, 2025
7b8c6b8
fix: Handle TMDb items for Enrich AI and Platform Validation buttons
claude Dec 6, 2025
1fd9569
docs: Add Enrich AI and Platform Validation feature documentation
claude Dec 6, 2025
4aa5d49
Merge pull request #6 from mondweep/claude/init-nexus-ummid-012oEX5Es…
mondweep Dec 6, 2025
3d18957
feat: Add TMDb mood discovery and learning insights system
claude Dec 6, 2025
1f9f11b
feat: Complete demo experience with TMDb, persistence, and ARW
claude Dec 6, 2025
b3c9ac2
feat: Add TMDb search with natural language query interpretation
claude Dec 6, 2025
3bddeae
fix: Use correct saveLearningInsights function name
claude Dec 6, 2025
fd66572
feat: Add Gemini AI for natural language query interpretation
claude Dec 6, 2025
7a0514d
fix: Add TMDb poster images to Discover and For You grids
claude Dec 6, 2025
ea42de1
Merge pull request #7 from mondweep/claude/init-nexus-ummid-012oEX5Es…
mondweep Dec 6, 2025
01949f2
chore: Add data directory to gitignore for large datasets
claude Dec 6, 2025
ae90796
chore: Add data directory to gitignore for large datasets
claude Dec 7, 2025
1e7cf77
Merge pull request #8 from mondweep/claude/init-nexus-ummid-012oEX5Es…
mondweep Dec 7, 2025
f391526
feat: Add knowledge graph processing pipeline for TMDB → Distribution
claude Dec 7, 2025
ff5223d
feat: Add semantic search and feed generation for knowledge graph
claude Dec 7, 2025
feee951
fix: Add Netlify redirect to serve knowledge-graph.html as root
claude Dec 7, 2025
8ade26a
revert: Remove Netlify redirect to preserve index.html
claude Dec 7, 2025
bfff7f4
feat: Add root cloudbuild.yaml for Cloud Build trigger
claude Dec 7, 2025
8bd2b46
fix: Escape shell variables in cloudbuild.yaml to avoid substitution …
claude Dec 7, 2025
94d80e2
fix: Track package-lock.json for Cloud Build npm ci
claude Dec 7, 2025
8106cb8
fix: Sync package-lock.json with package.json dependencies
claude Dec 7, 2025
ca6c55c
fix: Resolve TypeScript compilation errors in knowledge graph modules
claude Dec 7, 2025
c7d71cf
fix: Resolve remaining TypeScript errors in routes
claude Dec 7, 2025
e18f6b7
fix: Add Artifact Registry repository creation step to cloudbuild
claude Dec 7, 2025
4532353
fix: Improve Firestore handling for Cloud Run environment
claude Dec 7, 2025
03afcfa
fix: Add IAM permissions for Cloud Run service account
claude Dec 7, 2025
714ccdb
feat: Add diagnostics endpoint and improve error handling
claude Dec 7, 2025
ca4ffdf
fix: Add Vertex AI permissions and diagnostics
claude Dec 7, 2025
b0e94b9
fix: Fix semantic search results display
claude Dec 7, 2025
667ad86
feat: Add CSV sample diagnostic endpoint
claude Dec 7, 2025
cb08393
fix: Add missing getGCSReader import
claude Dec 7, 2025
74a3f76
fix: Fix TypeScript cast error in csv-sample endpoint
claude Dec 7, 2025
d88b3d3
fix: Handle comma-separated genres and keywords in TMDB CSV
claude Dec 7, 2025
69665c4
feat: Add clear data endpoint and UI button for clean re-ingestion
claude Dec 7, 2025
af24d29
feat: Add collections diagnostic endpoint to debug movie storage
claude Dec 7, 2025
be9bee4
feat: Add test-one ingestion endpoint for debugging movie storage
claude Dec 7, 2025
2a52f4a
debug: Add more logging to test-one endpoint to diagnose movie storage
claude Dec 7, 2025
f7c562e
fix: Clean movie data before Firestore storage
claude Dec 7, 2025
8a1fc86
fix: Fix clearAll() to properly delete all documents in batches
claude Dec 7, 2025
5fd0c89
docs: Add Knowledge Graph Explorer section to README
claude Dec 7, 2025
8f976c5
Merge origin/main into feature branch - resolve .gitignore conflict
claude Dec 7, 2025
46a74f5
Merge pull request #9 from mondweep/claude/knowledgegrapharw-012oEX5E…
mondweep Dec 7, 2025
70b9c53
feat: Add interactive knowledge graph visualization tab
claude Dec 7, 2025
56dd6b8
feat: Add distribution readiness validation for Netflix, Amazon, and …
claude Dec 7, 2025
a289c8d
fix: Resolve TypeScript errors in platform-validator
claude Dec 7, 2025
7cc0dd1
Merge pull request #10 from mondweep/claude/knowledgegrapharw-012oEX5…
mondweep Dec 7, 2025
1f93563
feat: Rebrand pipeline diagram with TV5Monde
claude Dec 7, 2025
15df817
Merge pull request #11 from mondweep/claude/knowledgegrapharw-012oEX5…
mondweep Dec 7, 2025
018b76a
feat: Expand movie limit options in Visualize tab
claude Dec 7, 2025
7f435be
fix: Increase API limit validation from 100 to 1000 movies
claude Dec 7, 2025
ec66dd1
Merge pull request #12 from mondweep/claude/knowledgegrapharw-012oEX5…
mondweep Dec 7, 2025
df4f45e
feat: Add comprehensive About tab to Knowledge Graph UI
claude Dec 7, 2025
e711e30
feat: Enhance About tab with problem statement and business outcomes
claude Dec 7, 2025
b89bb61
Move About tab to the start
mondweep Dec 7, 2025
3196eb1
feat: Add data export endpoints for backup/migration
claude Dec 8, 2025
4a610fc
Add files via upload
mondweep Dec 8, 2025
5254c37
feat: Add Netlify Functions for serverless API
claude Dec 8, 2025
1d502cc
feat: Add semantic search with pre-computed embeddings support
claude Dec 8, 2025
a31b2e0
feat: Add Gemini-based semantic search support
claude Dec 8, 2025
482a0ec
chore: Add embeddings placeholder file
claude Dec 8, 2025
9192b50
Gemini Embedded movie data
mondweep Dec 8, 2025
5449cc4
Merge pull request #14 from mondweep/antigravity
mondweep Dec 8, 2025
64ce6c8
fix: Use GEMINI_API_KEY env var name to match Netlify config
claude Dec 8, 2025
a70fdb8
fix: Align Netlify function responses with frontend expectations
claude Dec 8, 2025
5cab788
fix: Multiple UI and API fixes for Netlify deployment
claude Dec 8, 2025
bcd1c91
fix: Add backdropPath and other movie details to search results
claude Dec 8, 2025
2df14c9
Merge pull request #15 from mondweep/claude/knowledgegrapharw-012oEX5…
mondweep Dec 8, 2025
130ae9e
feat: Add YouTube trailer playback to movie detail modal
claude Dec 8, 2025
a7a57d3
fix: Update hackathon branding to TV5MONDE Agentics Foundation 2025
claude Dec 8, 2025
7f65cac
feat: Disable GCP ingest features with warning banner
claude Dec 8, 2025
fe4513c
feat: Add Knowledge Graph navigation link to index.html header
claude Dec 8, 2025
6d906d5
feat: Update header to show full UMMID platform name
claude Dec 8, 2025
827d3bf
feat: Add UMMID full name expansion to About tab
claude Dec 8, 2025
173e6db
feat: Add Wider Team Output tab showcasing London Chapter team projects
claude Dec 8, 2025
b74e260
chore: Add images folder with .gitkeep placeholder
claude Dec 8, 2025
219ef90
Add files via upload
mondweep Dec 8, 2025
dac1932
feat: Redesign Wider Team Output tab with investment-ready infographi…
claude Dec 8, 2025
e15d0b1
fix: Move infographic images to deploy folder and fix paths
claude Dec 8, 2025
54a9b77
feat: Make Team Output the landing tab with hackathon banner
claude Dec 8, 2025
69491aa
Merge pull request #16 from mondweep/claude/knowledgegrapharw-012oEX5…
mondweep Dec 8, 2025
2e1b2a2
feat: Optimized Pinecone ingestion script and automated resumption
mondweep Dec 9, 2025
452c873
Merge pull request #17 from mondweep/antigravity
mondweep Dec 9, 2025
a852490
refactor: Switch Netlify function to Pinecone REST API and update ing…
mondweep Dec 9, 2025
89873c7
fix(netlify): remove unused pinecone dependency to fix build
mondweep Dec 9, 2025
00032ee
feat(api): update stats endpoint to pull live vector count from Pinecone
mondweep Dec 9, 2025
7c25e9b
fix(api): correct Pinecone stats property name (camelCase)
mondweep Dec 9, 2025
f03602e
feat(api): project knowledge graph statistics based on live movie count
mondweep Dec 9, 2025
3c452b4
feat(chat): add Gemini-powered chatbot backend for semantic search ex…
mondweep Dec 9, 2025
ce699fd
feat(ui): add floating Gemini chatbot with voice support
mondweep Dec 9, 2025
71167ff
fix(ui): append missing HTML for floating chat interface
mondweep Dec 9, 2025
ea26bba
fix(chat): filter out initial model message to satisfy Gemini API req…
mondweep Dec 9, 2025
b0eb62e
fix(api): add rewrite rule for chat endpoint to netlify.toml
mondweep Dec 9, 2025
a3f195e
fix(api): replace fetch with native https to resolve runtime error
mondweep Dec 9, 2025
04fccc6
fix(api): update Gemini model to gemini-2.0-flash-lite-001
mondweep Dec 9, 2025
66159b1
fix(api): correct function structure and add debug logging for API ke…
mondweep Dec 9, 2025
da56fbb
feat(ui): display detailed backend errors in chat bubble for better d…
mondweep Dec 9, 2025
c078b4e
feat(ui): display friendly message for API quota limits
mondweep Dec 9, 2025
5cdacfc
fix(api): switch to gemini-2.5-flash-lite to avoid rate limits
mondweep Dec 9, 2025
4814c97
chore: add utility scripts for kg generation and debugging
mondweep Dec 9, 2025
f53d762
Merge pull request #18 from mondweep/antigravity
mondweep Dec 9, 2025
a82d3f2
feat(ui): promote Semantic Search to default active tab
mondweep Dec 9, 2025
7e84d66
fix(api): project genre counts based on live Pinecone size
mondweep Dec 9, 2025
2d94a7a
fix(ui): correct malformed Semantic Search button HTML
mondweep Dec 9, 2025
aba009f
Merge pull request #19 from mondweep/antigravity
mondweep Dec 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
167 changes: 167 additions & 0 deletions .github/workflows/metadata-api-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
name: Metadata API CI

on:
push:
branches: [main, preview, 'claude/**']
paths:
- 'apps/metadata-api/**'
- '.github/workflows/metadata-api-ci.yml'
pull_request:
branches: [main, preview]
paths:
- 'apps/metadata-api/**'
- '.github/workflows/metadata-api-ci.yml'
workflow_dispatch:

env:
NODE_VERSION: '18'
WORKING_DIR: apps/metadata-api

jobs:
lint:
name: Lint & Type Check
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
cache-dependency-path: ${{ env.WORKING_DIR }}/package-lock.json

- name: Install dependencies
working-directory: ${{ env.WORKING_DIR }}
run: npm ci

- name: Run ESLint
working-directory: ${{ env.WORKING_DIR }}
run: npm run lint

- name: Run TypeScript type check
working-directory: ${{ env.WORKING_DIR }}
run: npm run typecheck

test:
name: Test Suite
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
cache-dependency-path: ${{ env.WORKING_DIR }}/package-lock.json

- name: Install dependencies
working-directory: ${{ env.WORKING_DIR }}
run: npm ci

- name: Run Jest tests
working-directory: ${{ env.WORKING_DIR }}
run: npm test -- --coverage --ci
env:
CI: true

- name: Upload coverage reports
uses: codecov/codecov-action@v4
if: always()
with:
files: ${{ env.WORKING_DIR }}/coverage/lcov.info
flags: metadata-api
name: metadata-api-coverage
fail_ci_if_error: false

build:
name: Build Application
runs-on: ubuntu-latest
needs: [lint, test]

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
cache-dependency-path: ${{ env.WORKING_DIR }}/package-lock.json

- name: Install dependencies
working-directory: ${{ env.WORKING_DIR }}
run: npm ci

- name: Build TypeScript
working-directory: ${{ env.WORKING_DIR }}
run: npm run build

- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build-artifacts
path: ${{ env.WORKING_DIR }}/dist
retention-days: 7

docker-build:
name: Build Docker Image
runs-on: ubuntu-latest
needs: [lint, test]

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Build Docker image (no push)
uses: docker/build-push-action@v5
with:
context: ${{ env.WORKING_DIR }}
push: false
tags: metadata-api:${{ github.sha }}
cache-from: type=gha
cache-to: type=gha,mode=max
build-args: |
NODE_ENV=production

security-scan:
name: Security Audit
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}

- name: Run npm audit
working-directory: ${{ env.WORKING_DIR }}
run: npm audit --audit-level=moderate
continue-on-error: true

- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@master
with:
scan-type: 'fs'
scan-ref: ${{ env.WORKING_DIR }}
format: 'sarif'
output: 'trivy-results.sarif'
severity: 'CRITICAL,HIGH'

- name: Upload Trivy results to GitHub Security
uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: 'trivy-results.sarif'
191 changes: 191 additions & 0 deletions .github/workflows/metadata-api-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
name: Metadata API Deploy

on:
push:
branches: [main]
paths:
- 'apps/metadata-api/**'
- '.github/workflows/metadata-api-deploy.yml'
workflow_dispatch:
inputs:
environment:
description: 'Deployment environment'
required: true
default: 'staging'
type: choice
options:
- staging
- production

env:
NODE_VERSION: '18'
WORKING_DIR: apps/metadata-api
GCP_PROJECT_ID: agentics-foundation25lon-1899
GCP_REGION: us-central1
SERVICE_NAME: metadata-api
MIN_INSTANCES: '1'
MAX_INSTANCES: '100'

jobs:
build-and-deploy:
name: Build & Deploy to Cloud Run
runs-on: ubuntu-latest
environment: ${{ github.event.inputs.environment || 'staging' }}

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
cache-dependency-path: ${{ env.WORKING_DIR }}/package-lock.json

- name: Install dependencies
working-directory: ${{ env.WORKING_DIR }}
run: npm ci

- name: Run tests
working-directory: ${{ env.WORKING_DIR }}
run: npm test -- --ci
env:
CI: true

- name: Build application
working-directory: ${{ env.WORKING_DIR }}
run: npm run build

- name: Authenticate to Google Cloud
uses: google-github-actions/auth@v2
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}

- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@v2

- name: Configure Docker for Artifact Registry
run: |
gcloud auth configure-docker ${{ env.GCP_REGION }}-docker.pkg.dev

- name: Build and push Docker image
working-directory: ${{ env.WORKING_DIR }}
run: |
IMAGE_TAG="${{ env.GCP_REGION }}-docker.pkg.dev/${{ env.GCP_PROJECT_ID }}/metadata-api/${{ env.SERVICE_NAME }}:${{ github.sha }}"
IMAGE_LATEST="${{ env.GCP_REGION }}-docker.pkg.dev/${{ env.GCP_PROJECT_ID }}/metadata-api/${{ env.SERVICE_NAME }}:latest"

docker build \
--build-arg NODE_ENV=production \
--tag ${IMAGE_TAG} \
--tag ${IMAGE_LATEST} \
.

docker push ${IMAGE_TAG}
docker push ${IMAGE_LATEST}

echo "IMAGE_TAG=${IMAGE_TAG}" >> $GITHUB_ENV

- name: Deploy to Cloud Run
run: |
gcloud run deploy ${{ env.SERVICE_NAME }} \
--image=${{ env.IMAGE_TAG }} \
--platform=managed \
--region=${{ env.GCP_REGION }} \
--project=${{ env.GCP_PROJECT_ID }} \
--allow-unauthenticated \
--memory=2Gi \
--cpu=2 \
--timeout=300 \
--min-instances=${{ env.MIN_INSTANCES }} \
--max-instances=${{ env.MAX_INSTANCES }} \
--concurrency=80 \
--set-env-vars="NODE_ENV=production" \
--set-secrets="GOOGLE_AI_STUDIO_API_KEY=GOOGLE_AI_STUDIO_API_KEY:latest" \
--labels="app=metadata-api,environment=${{ github.event.inputs.environment || 'staging' }},commit=${{ github.sha }}" \
--quiet

- name: Get service URL
id: get-url
run: |
SERVICE_URL=$(gcloud run services describe ${{ env.SERVICE_NAME }} \
--region=${{ env.GCP_REGION }} \
--project=${{ env.GCP_PROJECT_ID }} \
--format='value(status.url)')
echo "SERVICE_URL=${SERVICE_URL}" >> $GITHUB_OUTPUT
echo "Service deployed to: ${SERVICE_URL}"

- name: Run health check
run: |
sleep 10
curl -f ${{ steps.get-url.outputs.SERVICE_URL }}/health || exit 1

- name: Create deployment summary
run: |
echo "## Deployment Successful ✅" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Service:** ${{ env.SERVICE_NAME }}" >> $GITHUB_STEP_SUMMARY
echo "**Environment:** ${{ github.event.inputs.environment || 'staging' }}" >> $GITHUB_STEP_SUMMARY
echo "**Region:** ${{ env.GCP_REGION }}" >> $GITHUB_STEP_SUMMARY
echo "**URL:** ${{ steps.get-url.outputs.SERVICE_URL }}" >> $GITHUB_STEP_SUMMARY
echo "**Image:** ${{ env.IMAGE_TAG }}" >> $GITHUB_STEP_SUMMARY
echo "**Commit:** ${{ github.sha }}" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### Resources" >> $GITHUB_STEP_SUMMARY
echo "- Memory: 2Gi" >> $GITHUB_STEP_SUMMARY
echo "- CPU: 2" >> $GITHUB_STEP_SUMMARY
echo "- Min Instances: ${{ env.MIN_INSTANCES }}" >> $GITHUB_STEP_SUMMARY
echo "- Max Instances: ${{ env.MAX_INSTANCES }}" >> $GITHUB_STEP_SUMMARY

- name: Notify deployment status
if: always()
uses: actions/github-script@v7
with:
script: |
const status = '${{ job.status }}' === 'success' ? '✅ Success' : '❌ Failed';
const url = '${{ steps.get-url.outputs.SERVICE_URL }}';
const comment = `## Metadata API Deployment ${status}\n\n` +
`**Environment:** ${{ github.event.inputs.environment || 'staging' }}\n` +
`**Service URL:** ${url}\n` +
`**Commit:** ${{ github.sha }}\n` +
`**Triggered by:** @${{ github.actor }}`;

if (context.issue.number) {
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: comment
});
}

rollback:
name: Rollback (Manual)
runs-on: ubuntu-latest
if: failure() && github.event_name == 'workflow_dispatch'
needs: build-and-deploy

steps:
- name: Authenticate to Google Cloud
uses: google-github-actions/auth@v2
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}

- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@v2

- name: Rollback to previous revision
run: |
PREVIOUS_REVISION=$(gcloud run revisions list \
--service=${{ env.SERVICE_NAME }} \
--region=${{ env.GCP_REGION }} \
--project=${{ env.GCP_PROJECT_ID }} \
--limit=2 \
--format='value(name)' | tail -n 1)

gcloud run services update-traffic ${{ env.SERVICE_NAME }} \
--to-revisions=${PREVIOUS_REVISION}=100 \
--region=${{ env.GCP_REGION }} \
--project=${{ env.GCP_PROJECT_ID }}

echo "Rolled back to revision: ${PREVIOUS_REVISION}"
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -167,4 +167,9 @@ claude-flow
# Removed Windows wrapper files per user request
hive-mind-prompt-*.txt
.claude/
.agentic-qe/
.agentic-qe/

# Large datasets (stored in GCP bucket instead)
data/
*.csv
*.zip
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[submodule "mondweep/vibe-cast"]
path = mondweep/vibe-cast
url = https://github.com/mondweep/vibe-cast.git
branch = claude/agentic-hackathon-setup-01MsFnEEndzVH9sYmgJwfLhn
5 changes: 5 additions & 0 deletions apps/demo-ui/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.git
.gitignore
README.md
*.log
.DS_Store
Loading