combine to /src/utils/profiles.js; add codex and claude code profiles

This commit is contained in:
Joe Danziger
2025-05-27 15:45:08 -04:00
parent 9681c9171c
commit 08ad455463
20 changed files with 587 additions and 253 deletions

View File

@@ -0,0 +1,62 @@
// Claude Code profile for rule-transformer
import path from 'path';
import fs from 'fs';
import { isSilentMode, log } from '../modules/utils.js';
// Lifecycle functions for Claude Code profile
function onAddRulesProfile(targetDir) {
const sourceFile = path.join(process.cwd(), 'assets', 'AGENTS.md');
const destFile = path.join(targetDir, 'CLAUDE.md');
if (fs.existsSync(sourceFile)) {
try {
fs.copyFileSync(sourceFile, destFile);
log('debug', `[Claude] Copied AGENTS.md to ${destFile}`);
} catch (err) {
log('debug', `[Claude] Failed to copy AGENTS.md: ${err.message}`);
}
} else {
log('debug', `[Claude] AGENTS.md not found at ${sourceFile}`);
}
}
function onRemoveRulesProfile(targetDir) {
log('debug', `[Claude] onRemoveRulesProfile called for ${targetDir}`);
const claudeFile = path.join(targetDir, 'CLAUDE.md');
if (fs.existsSync(claudeFile)) {
try {
fs.rmSync(claudeFile, { force: true });
log('debug', `[Claude] Removed CLAUDE.md from ${targetDir}`);
} catch (err) {
log('debug', `[Claude] Failed to remove CLAUDE.md: ${err.message}`);
}
}
log('debug', `[Claude] onRemoveRulesProfile completed for ${targetDir}`);
}
function onPostConvertRulesProfile(targetDir) {
onAddRulesProfile(targetDir);
}
// Simple filename function
function getTargetRuleFilename(sourceFilename) {
return sourceFilename;
}
// Simple profile configuration - bypasses base-profile system
export const claudeProfile = {
profileName: 'claude',
displayName: 'Claude Code',
profileDir: '.', // Root directory
rulesDir: '.', // No rules directory needed
mcpConfig: false, // No MCP config needed
mcpConfigName: null,
mcpConfigPath: null,
conversionConfig: {},
fileMap: {},
globalReplacements: [],
getTargetRuleFilename,
onAddRulesProfile,
onRemoveRulesProfile,
onPostConvertRulesProfile
};

62
scripts/profiles/codex.js Normal file
View File

@@ -0,0 +1,62 @@
// Codex profile for rule-transformer
import path from 'path';
import fs from 'fs';
import { isSilentMode, log } from '../modules/utils.js';
// Lifecycle functions for Codex profile
function onAddRulesProfile(targetDir) {
const sourceFile = path.join(process.cwd(), 'assets', 'AGENTS.md');
const destFile = path.join(targetDir, 'AGENTS.md');
if (fs.existsSync(sourceFile)) {
try {
fs.copyFileSync(sourceFile, destFile);
log('debug', `[Codex] Copied AGENTS.md to ${destFile}`);
} catch (err) {
log('debug', `[Codex] Failed to copy AGENTS.md: ${err.message}`);
}
} else {
log('debug', `[Codex] AGENTS.md not found at ${sourceFile}`);
}
}
function onRemoveRulesProfile(targetDir) {
log('debug', `[Codex] onRemoveRulesProfile called for ${targetDir}`);
const agentsFile = path.join(targetDir, 'AGENTS.md');
if (fs.existsSync(agentsFile)) {
try {
fs.rmSync(agentsFile, { force: true });
log('debug', `[Codex] Removed AGENTS.md from ${targetDir}`);
} catch (err) {
log('debug', `[Codex] Failed to remove AGENTS.md: ${err.message}`);
}
}
log('debug', `[Codex] onRemoveRulesProfile completed for ${targetDir}`);
}
function onPostConvertRulesProfile(targetDir) {
onAddRulesProfile(targetDir);
}
// Simple filename function
function getTargetRuleFilename(sourceFilename) {
return sourceFilename;
}
// Simple profile configuration - bypasses base-profile system
export const codexProfile = {
profileName: 'codex',
displayName: 'Codex',
profileDir: '.', // Root directory
rulesDir: '.', // No rules directory needed
mcpConfig: false, // No MCP config needed
mcpConfigName: null,
mcpConfigPath: null,
conversionConfig: {},
fileMap: {},
globalReplacements: [],
getTargetRuleFilename,
onAddRulesProfile,
onRemoveRulesProfile,
onPostConvertRulesProfile
};

View File

@@ -1,6 +1,8 @@
// Profile exports for centralized importing
export * as clineProfile from './cline.js';
export * as cursorProfile from './cursor.js';
export * as rooProfile from './roo.js';
export * as traeProfile from './trae.js';
export * as windsurfProfile from './windsurf.js';
export { claudeProfile } from './claude.js';
export { clineProfile } from './cline.js';
export { codexProfile } from './codex.js';
export { cursorProfile } from './cursor.js';
export { rooProfile } from './roo.js';
export { traeProfile } from './trae.js';
export { windsurfProfile } from './windsurf.js';