@every-env/cli
Version:
Multi-agent orchestrator for AI-powered development workflows
146 lines • 4.48 kB
JavaScript
import { z } from 'zod';
// Project types supported by every-env
export const ProjectTypeSchema = z.enum([
'node',
'rails',
'python',
'go',
'ruby',
'basic',
'monorepo'
]);
// Base agent configuration
export const AgentBaseSchema = z.object({});
// Claude agent configuration
export const ClaudeAgentSchema = AgentBaseSchema.extend({
cli: z.string().optional(),
args: z.array(z.string()).optional()
});
// Amp agent configuration
export const AmpAgentSchema = AgentBaseSchema.extend({
cli: z.string().optional(),
args: z.array(z.string()).optional()
});
// Codex agent configuration
export const CodexAgentSchema = AgentBaseSchema.extend({
cli: z.string().optional(),
args: z.array(z.string()).optional()
});
// Copy-clipboard agent configuration
export const CopyClipboardAgentSchema = AgentBaseSchema;
// All supported agents
export const AgentsSchema = z.object({
claude: ClaudeAgentSchema.optional(),
'copy-clipboard': CopyClipboardAgentSchema.optional(),
amp: AmpAgentSchema.optional(),
codex: CodexAgentSchema.optional()
}).catchall(z.record(z.unknown())); // Allow unknown agent keys for forward compatibility
// Runtime configuration schema
export const RuntimeConfigSchema = z.object({
projectType: ProjectTypeSchema,
defaultAgent: z.string(),
agents: AgentsSchema,
createdAt: z.string(),
updatedAt: z.string().optional(),
version: z.number(),
validationWarnings: z.array(z.string()).optional(),
signals: z.array(z.string()).optional()
});
// Legacy docs config types (for backward compatibility)
export const FileMatchSchema = z.object({
files: z.array(z.string()),
exclude: z.array(z.string()).optional()
});
export const ContentMatchSchema = z.object({
regex: z.string(),
captureGroup: z.number().optional(),
exclude: z.array(z.string()).optional(),
multiline: z.boolean().optional()
});
export const MatchSchema = z.object({
files: z.array(z.string()).optional(),
exclude: z.array(z.string()).optional(),
content: ContentMatchSchema.optional()
});
export const AgentSchema = z.object({
id: z.string(),
promptFile: z.string(),
output: z.string().optional(),
outputPattern: z.string().optional(),
promptMode: z.string().optional(),
forEach: z.string().optional(),
variables: z.record(z.string()).optional(),
command: z.string().optional(),
flags: z.array(z.string()).optional(),
workingDir: z.string().optional()
});
export const PatternSchema = z.object({
name: z.string(),
description: z.string().optional(),
match: MatchSchema.optional(),
agents: z.array(AgentSchema),
variables: z.record(z.string()).optional()
});
export const DocsConfigSchema = z.object({
defaultCommand: z.string(),
defaultFlags: z.array(z.string()).optional(),
parallelism: z.object({
maxAgents: z.number()
}).optional(),
patterns: z.array(PatternSchema),
variables: z.record(z.string()).optional()
});
export const ConfigSchema = z.object({
$schema: z.string().optional(),
version: z.string(),
docs: DocsConfigSchema,
patterns: z.array(PatternSchema).optional(),
variables: z.record(z.string()).optional()
});
// Available agents for selection
export const AVAILABLE_AGENTS = {
claude: {
name: 'claude',
displayName: 'Claude Code',
defaultCli: 'claude',
description: 'Anthropic Claude via Claude Code CLI'
},
'copy-clipboard': {
name: 'copy-clipboard',
displayName: 'Copy to Clipboard',
description: 'Copy responses to clipboard (no external CLI required)'
},
amp: {
name: 'amp',
displayName: 'Amp',
defaultCli: 'amp',
description: 'Sourcegraph Amp CLI'
},
codex: {
name: 'codex',
displayName: 'OpenAI Codex',
defaultCli: 'codex',
description: 'OpenAI Codex CLI'
}
};
// Default runtime configuration
export const DEFAULT_RUNTIME_CONFIG = {
defaultAgent: 'claude',
version: 1,
agents: {
claude: {
cli: 'claude',
args: ['--dangerously-skip-permissions']
},
'copy-clipboard': {},
amp: {
cli: 'amp',
args: ['--dangerously-allow-all']
},
codex: {
cli: 'codex',
args: ['--dangerously-bypass-approvals-and-sandbox']
}
}
};
//# sourceMappingURL=config.js.map