cortexweaver
Version:
CortexWeaver is a command-line interface (CLI) tool that orchestrates a swarm of specialized AI agents, powered by Claude Code and Gemini CLI, to assist in software development. It transforms a high-level project plan (plan.md) into a series of coordinate
178 lines (148 loc) • 4.66 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.DockerBaseTemplates = void 0;
const fs = __importStar(require("fs"));
const path = __importStar(require("path"));
/**
* DockerBaseTemplates handles basic Docker files like Dockerfile and .dockerignore
*/
class DockerBaseTemplates {
static async createDockerfile(projectRoot) {
const dockerfilePath = path.join(projectRoot, 'Dockerfile');
if (fs.existsSync(dockerfilePath)) {
return; // Don't overwrite existing Dockerfile
}
const dockerfileContent = `# CortexWeaver Project Dockerfile
FROM node:18-alpine
# Set working directory
WORKDIR /app
# Copy package files
COPY package*.json ./
# Install dependencies
RUN npm ci --only=production
# Copy source code
COPY . .
# Build the application
RUN npm run build
# Create non-root user
RUN addgroup -g 1001 -S cortexweaver && \\
adduser -S cortexweaver -u 1001
# Change ownership of the app directory
RUN chown -R cortexweaver:cortexweaver /app
# Switch to non-root user
USER cortexweaver
# Expose port
EXPOSE 3000
# Health check
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \\
CMD curl -f http://localhost:3000/health || exit 1
# Start the application
CMD ["npm", "start"]
`;
fs.writeFileSync(dockerfilePath, dockerfileContent);
}
static async createDockerIgnore(projectRoot) {
const dockerIgnorePath = path.join(projectRoot, '.dockerignore');
if (fs.existsSync(dockerIgnorePath)) {
return; // Don't overwrite existing .dockerignore
}
const dockerIgnoreContent = `# CortexWeaver Docker ignore file
# Git
.git
.gitignore
# Documentation
README.md
docs/
# Development files
.env.example
.env.local
.env.development.local
# Node modules (will be installed in container)
node_modules/
npm-debug.log*
# Build artifacts
dist/
build/
# IDE files
.vscode/
.idea/
# OS files
.DS_Store
Thumbs.db
# Test files
coverage/
.nyc_output
# CortexWeaver specific
.cortex-history/
.cortex-cache/
prototypes/
`;
fs.writeFileSync(dockerIgnorePath, dockerIgnoreContent);
}
static async createDockerfileDev(projectRoot) {
const dockerfileDevPath = path.join(projectRoot, 'Dockerfile.dev');
if (fs.existsSync(dockerfileDevPath)) {
return; // Don't overwrite existing development Dockerfile
}
const dockerfileDevContent = `# Development Dockerfile for CortexWeaver
FROM node:18-alpine
# Install development tools
RUN apk add --no-cache curl
# Set working directory
WORKDIR /app
# Copy package files
COPY package*.json ./
# Install all dependencies (including dev dependencies)
RUN npm ci
# Copy source code
COPY . .
# Create non-root user for development
RUN addgroup -g 1001 -S cortexweaver && \\
adduser -S cortexweaver -u 1001
# Change ownership of the app directory
RUN chown -R cortexweaver:cortexweaver /app
# Switch to non-root user
USER cortexweaver
# Expose port and debugging port
EXPOSE 3000 9229
# Development command with hot reload and debugging
CMD ["npm", "run", "dev"]
`;
fs.writeFileSync(dockerfileDevPath, dockerfileDevContent);
}
}
exports.DockerBaseTemplates = DockerBaseTemplates;
//# sourceMappingURL=docker-base-templates.js.map