Clean up FrenoCorp repo: move project code to correct repositories (FRE-4529)
- Removed literal $AGENT_HOME/ directory artifact - Moved Lendair iOS code to ~/code/lendair/iOS/Lendair/ - Moved marketing/ to ~/code/scripter/ - Moved ShieldAI workflow doc to ~/code/ShieldAI/ - Moved CI/CD workflows and load-test scripts to ~/code/lendair/ - Moved web configs (vercel.json, .env.example, index.html) to ~/code/lendair/web/ - Removed root-level project configs (package.json, tsconfig.json, vite.config.ts, etc.) - Removed shared/exports/ and scripts/ - Updated all 8 agent AGENTS.md files with Repository Rules section - Clarified: FrenoCorp is for agent notes/memories/plans only, not project code Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
@@ -1,69 +0,0 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
async function compareBaseline() {
|
||||
const reportsDir = path.join(__dirname, 'reports');
|
||||
const baselinePath = path.join(reportsDir, 'baseline.json');
|
||||
const currentPath = path.join(reportsDir, 'current.json');
|
||||
|
||||
const baselineThreshold = parseFloat(process.env.BASELINE_THRESHOLD) || 0.1;
|
||||
|
||||
if (!fs.existsSync(baselinePath)) {
|
||||
console.log('No baseline found, creating initial baseline');
|
||||
createBaseline();
|
||||
return;
|
||||
}
|
||||
|
||||
const baseline = JSON.parse(fs.readFileSync(baselinePath, 'utf8'));
|
||||
const current = JSON.parse(fs.readFileSync(currentPath, 'utf8'));
|
||||
|
||||
const avgTimeChange = (current.avgResponseTime - baseline.avgResponseTime) / baseline.avgResponseTime;
|
||||
const successRateChange = current.successRate - baseline.successRate;
|
||||
|
||||
console.log('\n=== Baseline Comparison ===');
|
||||
console.log(`Baseline Avg Response Time: ${baseline.avgResponseTime.toFixed(2)}ms`);
|
||||
console.log(`Current Avg Response Time: ${current.avgResponseTime.toFixed(2)}ms`);
|
||||
console.log(`Change: ${(avgTimeChange * 100).toFixed(2)}%`);
|
||||
console.log(`Baseline Success Rate: ${baseline.successRate.toFixed(2)}%`);
|
||||
console.log(`Current Success Rate: ${current.successRate.toFixed(2)}%`);
|
||||
console.log(`Change: ${successRateChange.toFixed(2)}%`);
|
||||
|
||||
const passed = Math.abs(avgTimeChange) <= baselineThreshold && successRateChange >= -1;
|
||||
|
||||
if (passed) {
|
||||
console.log('\n✓ Performance baseline check PASSED');
|
||||
process.exit(0);
|
||||
} else {
|
||||
console.log('\n✗ Performance baseline check FAILED');
|
||||
if (Math.abs(avgTimeChange) > baselineThreshold) {
|
||||
console.log(` - Response time changed by ${(avgTimeChange * 100).toFixed(2)}% (threshold: ${baselineThreshold * 100}%)`);
|
||||
}
|
||||
if (successRateChange < -1) {
|
||||
console.log(` - Success rate dropped by ${successRateChange.toFixed(2)}%`);
|
||||
}
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
function createBaseline() {
|
||||
const reportsDir = path.join(__dirname, 'reports');
|
||||
const baseline = {
|
||||
avgResponseTime: 100,
|
||||
successRate: 99.0,
|
||||
createdAt: new Date().toISOString()
|
||||
};
|
||||
|
||||
if (!fs.existsSync(reportsDir)) {
|
||||
fs.mkdirSync(reportsDir, { recursive: true });
|
||||
}
|
||||
|
||||
fs.writeFileSync(baselinePath, JSON.stringify(baseline, null, 2));
|
||||
console.log('Initial baseline created');
|
||||
}
|
||||
|
||||
const baselinePath = path.join(__dirname, 'reports', 'baseline.json');
|
||||
if (!fs.existsSync(baselinePath)) {
|
||||
createBaseline();
|
||||
} else {
|
||||
compareBaseline();
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"name": "frenocorp-load-tests",
|
||||
"version": "1.0.0",
|
||||
"description": "Load testing suite for FrenoCorp API",
|
||||
"scripts": {
|
||||
"load-test": "node run-load-test.js",
|
||||
"baseline": "node run-baseline-test.js",
|
||||
"compare-baseline": "node compare-baseline.js",
|
||||
"create-baseline": "node create-baseline.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"k6": "^0.1.0",
|
||||
"axios": "^1.6.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"vitest": "^1.0.0"
|
||||
}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"avgResponseTime": 100,
|
||||
"successRate": 99.0,
|
||||
"createdAt": "2026-05-09T00:00:00.000Z",
|
||||
"description": "Initial baseline for FRE-4931 load testing implementation"
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
const axios = require('axios');
|
||||
|
||||
const API_BASE_URL = process.env.API_BASE_URL || 'https://api.frenocorp.com';
|
||||
const CONCURRENCY = parseInt(process.env.LOAD_TEST_CONCURRENCY) || 10;
|
||||
const DURATION = parseInt(process.env.LOAD_TEST_DURATION) || 60;
|
||||
|
||||
const endpoints = [
|
||||
'/api/v1/auth/status',
|
||||
'/api/v1/users/profile',
|
||||
'/api/v1/activities/recent',
|
||||
'/api/v1/plans/current'
|
||||
];
|
||||
|
||||
async function runLoadTest() {
|
||||
console.log(`Starting load test with ${CONCURRENCY} concurrent users for ${DURATION}s`);
|
||||
console.log(`Target: ${API_BASE_URL}`);
|
||||
|
||||
const results = {
|
||||
totalRequests: 0,
|
||||
successful: 0,
|
||||
failed: 0,
|
||||
avgResponseTime: 0,
|
||||
responseTimes: []
|
||||
};
|
||||
|
||||
const startTime = Date.now();
|
||||
const endTime = startTime + (DURATION * 1000);
|
||||
|
||||
while (Date.now() < endTime) {
|
||||
const promises = endpoints.map(async (endpoint) => {
|
||||
const requestStart = Date.now();
|
||||
try {
|
||||
const response = await axios.get(`${API_BASE_URL}${endpoint}`);
|
||||
results.successful++;
|
||||
results.responseTimes.push(Date.now() - requestStart);
|
||||
} catch (error) {
|
||||
results.failed++;
|
||||
console.error(`Failed request to ${endpoint}:`, error.message);
|
||||
}
|
||||
results.totalRequests++;
|
||||
});
|
||||
|
||||
await Promise.all(promises);
|
||||
}
|
||||
|
||||
if (results.responseTimes.length > 0) {
|
||||
results.avgResponseTime = results.responseTimes.reduce((a, b) => a + b, 0) / results.responseTimes.length;
|
||||
}
|
||||
|
||||
console.log('\n=== Load Test Results ===');
|
||||
console.log(`Total Requests: ${results.totalRequests}`);
|
||||
console.log(`Successful: ${results.successful}`);
|
||||
console.log(`Failed: ${results.failed}`);
|
||||
console.log(`Success Rate: ${(results.successful / results.totalRequests * 100).toFixed(2)}%`);
|
||||
console.log(`Average Response Time: ${results.avgResponseTime.toFixed(2)}ms`);
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
runLoadTest()
|
||||
.then(() => {
|
||||
console.log('\nLoad test completed successfully');
|
||||
process.exit(0);
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('Load test failed:', error);
|
||||
process.exit(1);
|
||||
});
|
||||
@@ -1,68 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Vercel Project Setup Script for AudiobookPipeline
|
||||
# This script creates and configures the Vercel project
|
||||
# Requires: VERCEL_TOKEN environment variable or `vercel login`
|
||||
|
||||
set -e
|
||||
|
||||
echo "🚀 Setting up Vercel project for AudiobookPipeline..."
|
||||
|
||||
# Check if Vercel CLI is installed
|
||||
if ! npx vercel --version &> /dev/null; then
|
||||
echo "📦 Installing Vercel CLI..."
|
||||
npm install -g vercel
|
||||
fi
|
||||
|
||||
VERCEL_CMD="npx vercel"
|
||||
|
||||
# Use VERCEL_TOKEN if available, otherwise require login
|
||||
if [ -n "$VERCEL_TOKEN" ]; then
|
||||
echo "🔐 Using VERCEL_TOKEN for authentication..."
|
||||
export VERCEL_TOKEN
|
||||
else
|
||||
echo "🔐 Authenticating with Vercel..."
|
||||
$VERCEL_CMD login
|
||||
fi
|
||||
|
||||
# Create Vercel project
|
||||
echo "📁 Creating Vercel project..."
|
||||
PROJECT=$($VERCEL_CMD ls | grep -i audiobookpipeline || echo "")
|
||||
|
||||
if [ -z "$PROJECT" ]; then
|
||||
$VERCEL_CMD init --name audiobookpipeline --framework vite
|
||||
echo "✅ Project created successfully"
|
||||
else
|
||||
echo "ℹ️ Project already exists: $PROJECT"
|
||||
fi
|
||||
|
||||
# Configure environment variables
|
||||
echo "⚙️ Configuring environment variables..."
|
||||
|
||||
# Read from .env.local and set in Vercel
|
||||
if [ -f ".env.local" ]; then
|
||||
while IFS='=' read -r key value; do
|
||||
# Skip comments and empty lines
|
||||
[[ "$key" =~ ^#.*$ ]] && continue
|
||||
[[ -z "$key" ]] && continue
|
||||
|
||||
# Remove any trailing whitespace
|
||||
value=$(echo "$value" | xargs)
|
||||
|
||||
echo "Setting $key..."
|
||||
$VERCEL_CMD env set "$key" "$value" --env production --override
|
||||
$VERCEL_CMD env set "$key" "$value" --env development --override
|
||||
$VERCEL_CMD env set "$key" "$value" --env preview --override
|
||||
done < .env.local
|
||||
|
||||
echo "✅ Environment variables configured"
|
||||
else
|
||||
echo "⚠️ .env.local not found. Please create it with the required variables."
|
||||
fi
|
||||
|
||||
# Deploy to verify configuration
|
||||
echo "🚢 Testing deployment..."
|
||||
$VERCEL_CMD deploy --prod --prebuilt
|
||||
|
||||
echo "✨ Vercel setup complete!"
|
||||
echo "📎 View your deployment at: https://audiobookpipeline.vercel.app"
|
||||
@@ -1,49 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Shift Scripter launch dates forward by one month
|
||||
# May N → June N, then April N → May N (order matters to avoid double-shift)
|
||||
# Also renames relevant directories and files
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
echo "=== Shifting Scripter dates forward by one month ==="
|
||||
|
||||
# 1. Content replacement in files.
|
||||
# Order: May→June FIRST, then April→May.
|
||||
# This avoids double-shifting (Apr→May→Jun).
|
||||
find . -type f \( -name "*.md" -o -name "*.yaml" -o -name "*.yml" \) \
|
||||
-not -path "./.git/*" \
|
||||
-exec sed -i \
|
||||
-e 's/\bMay \([0-9]\+\)/June \1/g' \
|
||||
-e 's/\bApril \([0-9]\+\)/May \1/g' \
|
||||
{} +
|
||||
|
||||
echo " ✅ Updated month references in .md / .yaml / .yml files"
|
||||
|
||||
# 2. Rename the product-hunt-launch directory
|
||||
OLD_DIR="agents/cmo/life/projects/product-hunt-launch-may-2026"
|
||||
NEW_DIR="agents/cmo/life/projects/product-hunt-launch-june-2026"
|
||||
if [ -d "$OLD_DIR" ]; then
|
||||
find . -type f \( -name "*.md" -o -name "*.yaml" -o -name "*.yml" \) \
|
||||
-not -path "./.git/*" \
|
||||
-exec sed -i "s|$OLD_DIR|$NEW_DIR|g" {} +
|
||||
mv "$OLD_DIR" "$NEW_DIR"
|
||||
echo " ✅ Renamed $OLD_DIR → $NEW_DIR"
|
||||
fi
|
||||
|
||||
# 3. Rename memory files dated 2026-05-* → 2026-06-*
|
||||
# (and update cross-references to those filenames)
|
||||
find . -type f -name "2026-05-*.md" \
|
||||
-not -path "./.git/*" \
|
||||
| while read -r f; do
|
||||
newname=$(echo "$f" | sed 's|2026-05-|2026-06-|')
|
||||
oldbase=$(basename "$f")
|
||||
newbase=$(basename "$newname")
|
||||
find . -type f \( -name "*.md" -o -name "*.yaml" -o -name "*.yml" \) \
|
||||
-not -path "./.git/*" \
|
||||
-exec sed -i "s|$oldbase|$newbase|g" {} +
|
||||
mv "$f" "$newname"
|
||||
echo " ✅ Renamed $f → $newname"
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "=== Done! Dates shifted forward by one month ==="
|
||||
Reference in New Issue
Block a user