context-forge
Version:
AI orchestration platform with autonomous teams, enhancement planning, migration tools, 25+ slash commands, checkpoints & hooks. Multi-IDE: Claude, Cursor, Windsurf, Cline, Copilot
734 lines • 20.4 kB
TypeScript
export type SupportedIDE = 'claude' | 'cursor' | 'roo' | 'cline' | 'windsurf' | 'copilot' | 'gemini';
export interface IDEInfo {
id: SupportedIDE;
name: string;
description: string;
configFiles: string[];
supportsValidation: boolean;
supportsPRP: boolean;
}
export interface ProjectConfig extends Record<string, unknown> {
projectName: string;
projectType: 'web' | 'mobile' | 'desktop' | 'api' | 'fullstack';
description: string;
prd?: {
content: string;
problemStatement?: string;
targetUsers?: string;
userStories?: string[];
};
isRetrofit?: boolean;
plannedFeatures?: string[];
techStack: {
frontend?: string;
backend?: string;
database?: string;
auth?: string;
styling?: string;
stateManagement?: string;
};
features: Feature[];
timeline: 'mvp' | 'standard' | 'enterprise';
teamSize: 'solo' | 'small' | 'medium' | 'large';
deployment: string;
targetIDEs: SupportedIDE[];
extras: {
docker?: boolean;
cicd?: boolean;
testing?: boolean;
linting?: boolean;
examples?: boolean;
prp?: boolean;
aiDocs?: boolean;
claudeCommands?: boolean;
hooks?: boolean;
checkpoints?: boolean;
dartIntegration?: boolean;
};
checkpointConfig?: CheckpointConfig;
prpConfig?: {
type: 'base' | 'planning' | 'spec';
featureName?: string;
includeValidation?: boolean;
includeDiagrams?: boolean;
};
migrationConfig?: MigrationConfig;
enhancementConfig?: EnhancementConfig;
}
export interface Feature {
id: string;
name: string;
description: string;
priority: 'must-have' | 'should-have' | 'nice-to-have';
complexity: 'simple' | 'medium' | 'complex';
category: 'auth' | 'ui' | 'data' | 'integration' | 'infrastructure';
subtasks?: string[];
dependencies?: string[];
}
export interface AIDocItem {
type: 'url' | 'file' | 'doc' | 'docfile';
url?: string;
filename?: string;
reason: string;
content?: string;
}
export interface DatabaseItem {
type: 'table' | 'model' | 'migration' | 'seed' | 'index';
name: string;
description: string;
schema?: string;
relationships?: string[];
}
export interface ConfigItem {
key: string;
value: string | number | boolean;
environment?: string;
description?: string;
required?: boolean;
}
export interface RouteItem {
path: string;
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
description: string;
parameters?: string[];
authentication?: boolean;
responses?: ResponseItem[];
}
export interface ResponseItem {
status: number;
description: string;
schema?: string;
}
export interface EnvironmentItem {
name: string;
value: string;
description?: string;
required?: boolean;
}
export interface TestCaseItem {
name: string;
description: string;
type: 'unit' | 'integration' | 'e2e';
file?: string;
assertions?: string[];
}
export interface ValidationItem {
type: 'syntax' | 'test' | 'integration' | 'deployment';
command: string;
description: string;
expected?: string;
}
export interface ComponentItem {
name: string;
type: 'component' | 'service' | 'utility' | 'hook' | 'store';
description: string;
dependencies?: string[];
props?: string[];
methods?: string[];
}
export interface DecisionItem {
title: string;
description: string;
options: string[];
chosen: string;
rationale: string;
impact: 'low' | 'medium' | 'high';
}
export interface PhaseItem {
name: string;
description: string;
duration: string;
tasks: string[];
dependencies?: string[];
deliverables?: string[];
}
export interface RiskItem {
title: string;
description: string;
probability: 'low' | 'medium' | 'high';
impact: 'low' | 'medium' | 'high';
mitigation: string;
owner?: string;
}
export interface OptimizationItem {
area: string;
description: string;
technique: string;
impact: string;
effort: 'low' | 'medium' | 'high';
}
export interface BenchmarkItem {
name: string;
metric: string;
target: string;
current?: string;
tool?: string;
}
export interface AttackVectorItem {
name: string;
description: string;
severity: 'low' | 'medium' | 'high' | 'critical';
mitigation: string;
status: 'open' | 'mitigated' | 'accepted';
}
export interface MetricItem {
name: string;
type: 'counter' | 'gauge' | 'histogram' | 'summary';
description: string;
unit?: string;
tags?: string[];
}
export interface LoggingItem {
level: 'debug' | 'info' | 'warn' | 'error';
location: string;
message: string;
context?: string[];
}
export interface DocumentationItem {
title: string;
type: 'readme' | 'api' | 'guide' | 'reference' | 'tutorial';
description: string;
audience: 'user' | 'developer' | 'admin';
format: 'markdown' | 'html' | 'pdf';
}
export interface CodeExampleItem {
title: string;
description: string;
language: string;
code: string;
explanation?: string;
}
export interface MilestoneItem {
name: string;
description: string;
dueDate?: string;
deliverables: string[];
criteria: string[];
dependencies?: string[];
}
export interface TechStackItem {
name: string;
category: 'frontend' | 'backend' | 'database' | 'devops' | 'testing' | 'monitoring';
version?: string;
description: string;
rationale: string;
alternatives?: string[];
}
export interface RequirementItem {
id: string;
title: string;
description: string;
priority: 'must-have' | 'should-have' | 'nice-to-have';
acceptance: string[];
dependencies?: string[];
}
export interface EndpointItem {
path: string;
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
description: string;
parameters?: ParameterItem[];
requestBody?: SchemaItem;
responses: ResponseItem[];
authentication?: boolean;
rateLimit?: number;
requestExample?: string;
responseExample?: string;
statusCodes?: {
code: number;
description: string;
}[];
}
export interface ParameterItem {
name: string;
type: 'query' | 'path' | 'header' | 'cookie';
dataType: string;
required: boolean;
description: string;
example?: string;
}
export interface SchemaItem {
type: string;
properties?: Record<string, PropertyItem>;
required?: string[];
example?: unknown;
}
export interface PropertyItem {
type: string;
description?: string;
format?: string;
enum?: string[];
example?: unknown;
}
export interface EntityItem {
name: string;
description: string;
attributes: AttributeItem[];
relationships?: RelationshipItem[];
constraints?: string[];
}
export interface AttributeItem {
name: string;
type: string;
required: boolean;
description?: string;
constraints?: string[];
}
export interface RelationshipItem {
type: 'one-to-one' | 'one-to-many' | 'many-to-many';
entity: string;
description: string;
foreignKey?: string;
}
export interface CheckpointItem {
phaseId: string;
name: string;
description: string;
validationSteps: string[];
dependencies?: string[];
estimatedTime?: string;
}
export interface TechStackInfo {
name: string;
type: 'frontend' | 'backend' | 'database' | 'auth' | 'styling' | 'fullstack';
docs: string;
structure?: string;
dependencies: string[];
devDependencies?: string[];
files?: string[];
folders?: string[];
lintCommand?: string;
testCommand?: string;
buildCommand?: string;
startCommand?: string;
gotchas?: string[];
bestPractices?: string[];
version?: string;
metadata?: {
confidence: number;
detectedFrameworks: Array<{
framework: string;
version?: string;
variant?: string;
confidence: number;
}>;
};
}
export interface Stage {
name: string;
duration: string;
dependencies: string[];
tasks: Task[];
}
export interface Task {
description: string;
subtasks?: string[];
completed: boolean;
}
export interface ValidationCommand {
level: 'syntax' | 'test' | 'integration' | 'deployment';
command: string;
description?: string;
}
export interface PRPTask {
name: string;
action?: 'CREATE' | 'MODIFY' | 'DELETE';
file?: string;
steps: string[];
pseudocode?: string;
}
export interface PRPContext {
projectName: string;
featureName: string;
goal: string;
reasons: string[];
description: string;
successCriteria: string[];
documentation: Array<{
type: 'url' | 'file' | 'doc' | 'docfile';
url?: string;
filename?: string;
reason: string;
}>;
projectStructure: string;
desiredStructure: string;
language: string;
testLanguage: string;
gotchas: string[];
tasks: PRPTask[];
validationCommands: {
syntax: string[];
tests: string[];
start: string;
deployment: string[];
logs?: string;
};
integrationTests: TestCaseItem[];
expectedResult: string;
customValidation: string[];
checklist: string[];
antiPatterns: string[];
hasAiDocs?: boolean;
aiDocs?: AIDocItem[];
versionNotes?: string[];
modelPath?: string;
database?: DatabaseItem[];
config?: ConfigItem[];
routes?: RouteItem[];
environment?: EnvironmentItem[];
testCases?: TestCaseItem[];
edgeCases?: string[];
logPath?: string;
creativeValidation?: ValidationItem[];
commonFixes?: {
syntax: string[];
tests: string[];
};
summary?: string;
executiveSummary?: string;
problemStatement?: string;
subProblems?: string[];
constraints?: string[];
architectureDiagram?: string;
components?: ComponentItem[];
dataFlowDiagram?: string;
decisions?: DecisionItem[];
phases?: PhaseItem[];
phase1Duration?: string;
phase1Tasks?: string[];
phase2Duration?: string;
phase2Tasks?: string[];
phase3Duration?: string;
phase3Tasks?: string[];
risks?: RiskItem[];
expectedUsers?: string;
expectedRPS?: string;
dataVolume?: string;
optimizations?: OptimizationItem[];
benchmarks?: BenchmarkItem[];
attackVectors?: AttackVectorItem[];
securityMeasures?: string[];
coverageTarget?: number;
unitTestAreas?: string[];
performanceTests?: TestCaseItem[];
securityTests?: TestCaseItem[];
metrics?: MetricItem[];
loggingPoints?: LoggingItem[];
traces?: string[];
apiDocFormat?: string;
apiDocLocation?: string;
userDocs?: DocumentationItem[];
devDocs?: DocumentationItem[];
externalResources?: DocumentationItem[];
codeExamples?: CodeExampleItem[];
proofOfConcepts?: CodeExampleItem[];
successMetrics?: MetricItem[];
milestones?: MilestoneItem[];
openQuestions?: string[];
researchNotes?: string;
security?: string[];
performance?: MetricItem[];
monitoring?: MetricItem[];
future?: string[];
technicalDecisions?: DecisionItem[];
implementationPhases?: PhaseItem[];
securityConsiderations?: string[];
performanceRequirements?: RequirementItem[];
monitoringStrategy?: MetricItem[];
version?: string;
status?: string;
author?: string;
date?: string;
createdDate?: string;
lastUpdated?: string;
reviewers?: string;
objective?: string;
primaryObjectives?: string[];
secondaryObjectives?: string[];
inScope?: string[];
outOfScope?: string[];
futureConsiderations?: string[];
systemContextDiagram?: string;
componentDiagram?: string;
techStack?: TechStackItem[];
functionalRequirements?: RequirementItem[];
nonFunctionalRequirements?: RequirementItem[];
nfrs?: RequirementItem[];
endpoints?: EndpointItem[];
hasGraphQL?: boolean;
hasWebSocket?: boolean;
websocketEvents?: RouteItem[];
domainModels?: EntityItem[];
databaseSchema?: string;
indexes?: string[];
hasMigration?: boolean;
migrationScript?: string;
rollbackScript?: string;
algorithms?: string[];
stateDiagram?: string;
businessRules?: string[];
integrations?: string[];
hasMessageQueue?: boolean;
authMethod?: string;
roles?: string[];
resources?: string[];
securityControls?: string[];
dataProtection?: string[];
performanceTargets?: string[];
cachingLayers?: string[];
testPyramid?: string;
unitTestSuites?: TestCaseItem[];
deploymentDiagram?: string;
environments?: EnvironmentItem[];
pipelineDiagram?: string;
pipelineStages?: string[];
logLevels?: string[];
healthChecks?: string[];
dependencies?: string[];
documentationDeliverables?: DocumentationItem[];
training?: DocumentationItem[];
techLead?: string;
productOwner?: string;
securityLead?: string;
architect?: string;
glossary?: string[];
references?: string[];
changelog?: string[];
entities?: EntityItem[];
errorScenarios?: TestCaseItem[];
unitTests?: TestCaseItem[];
securityRequirements?: RequirementItem[];
externalDependencies?: string[];
libraries?: string[];
migrationRequired?: boolean;
migrationSteps?: string[];
rollbackStrategy?: string;
apiEndpoints?: EndpointItem[];
dataEntities?: EntityItem[];
unitTestStrategy?: string[];
integrationTestScenarios?: TestCaseItem[];
taskName?: string;
taskType?: string;
priority?: string;
estimatedTime?: string;
assignee?: string;
problemDescription?: string;
currentBehavior?: string;
expectedBehavior?: string;
usersAffected?: string;
severity?: string;
businessImpact?: string;
solutionSummary?: string;
implementationSteps?: string[];
keyFiles?: string[];
patterns?: string[];
manualTests?: string[];
syntaxCommand?: string;
testCommand?: string;
integrationCommand?: string;
verificationSteps?: string[];
rollbackSteps?: string[];
documentationNeeded?: boolean;
documentationFiles?: DocumentationItem[];
changelogEntry?: string;
relatedItems?: string[];
notes?: string;
lintCommand?: string;
devCommand?: string;
buildCommand?: string;
}
export interface CheckpointConfig {
enabled: boolean;
triggers: CheckpointTrigger[];
customMilestones?: CustomMilestone[];
notifications?: NotificationConfig;
customCommands?: CheckpointCommand[];
}
export interface CheckpointTrigger {
id: string;
name: string;
description: string;
category: 'critical' | 'important' | 'normal';
autoTrigger: boolean;
conditions?: string[];
}
export interface CustomMilestone {
name: string;
description: string;
testInstructions: string[];
verificationPoints: string[];
triggerAfter?: string[];
blocksUntilApproved: boolean;
}
export interface NotificationConfig {
slack?: {
webhook: string;
channel: string;
};
email?: {
to: string[];
template: string;
};
}
export interface CheckpointCommand {
name: string;
category: string;
description: string;
template: string;
triggers: CheckpointTrigger[];
}
export interface MigrationConfig {
strategy: 'big-bang' | 'incremental' | 'parallel-run';
sourceStack: TechStackInfo;
targetStack: TechStackInfo;
sharedResources: SharedResource[];
migrationPhases: MigrationPhase[];
rollbackStrategy: RollbackStrategy;
riskLevel: 'low' | 'medium' | 'high' | 'critical';
checkpoints?: MigrationCheckpoint[];
}
export interface MigrationPhase {
id: string;
name: string;
description: string;
criticalCheckpoints: CheckpointTrigger[];
dependencies: string[];
rollbackPoint: boolean;
estimatedDuration: string;
risks: MigrationRisk[];
validationCriteria: string[];
}
export interface SharedResource {
type: 'database' | 'api' | 'auth' | 'storage' | 'cache' | 'queue';
name: string;
description: string;
criticalityLevel: 'low' | 'medium' | 'high' | 'critical';
migrationStrategy: string;
}
export interface RollbackStrategy {
automatic: boolean;
triggers: RollbackTrigger[];
procedures: RollbackProcedure[];
dataBackupRequired: boolean;
estimatedTime: string;
}
export interface RollbackTrigger {
condition: string;
severity: 'warning' | 'error' | 'critical';
action: 'alert' | 'pause' | 'rollback';
}
export interface RollbackProcedure {
phase: string;
steps: string[];
verificationPoints: string[];
estimatedDuration: string;
}
export interface MigrationRisk {
category: 'data-loss' | 'downtime' | 'compatibility' | 'performance' | 'security';
description: string;
probability: 'low' | 'medium' | 'high';
impact: 'low' | 'medium' | 'high' | 'critical';
mitigation: string;
}
export interface MigrationCheckpoint {
phaseId: string;
name: string;
description: string;
validationSteps: string[];
rollbackEnabled: boolean;
requiresApproval: boolean;
automatedTests?: string[];
}
export interface EnhancementConfig {
projectName: string;
existingStack: TechStackInfo;
features: FeatureRequirement[];
enhancementPhases: EnhancementPhase[];
implementationStrategy: 'sequential' | 'parallel' | 'hybrid';
estimatedDuration: string;
checkpoints?: EnhancementCheckpoint[];
validationStrategy: ValidationStrategy;
}
export interface FeatureRequirement {
id: string;
name: string;
description: string;
category: 'api' | 'ui' | 'database' | 'integration' | 'infrastructure' | 'analytics' | 'security';
priority: 'critical' | 'high' | 'medium' | 'low';
complexity: 'simple' | 'medium' | 'complex' | 'very-complex';
dependencies: string[];
acceptanceCriteria: string[];
technicalRequirements: string[];
estimatedEffort: string;
risks: FeatureRisk[];
integrationPoints: IntegrationPoint[];
}
export interface EnhancementPhase {
id: string;
name: string;
description: string;
features: string[];
tasks: ImplementationTask[];
dependencies: string[];
checkpoints: CheckpointTrigger[];
estimatedDuration: string;
validationCriteria: string[];
rollbackStrategy?: RollbackStrategy;
risks?: FeatureRisk[];
}
export interface ImplementationTask {
id: string;
name: string;
description: string;
type: 'create' | 'modify' | 'refactor' | 'test' | 'document' | 'deploy';
targetFiles?: string[];
subtasks: string[];
estimatedHours: number;
complexity: 'trivial' | 'simple' | 'medium' | 'complex' | 'very-complex';
dependencies: string[];
validationSteps: string[];
aiContext?: string;
}
export interface FeatureRisk {
category: 'technical' | 'integration' | 'performance' | 'security' | 'ux';
description: string;
impact: 'low' | 'medium' | 'high' | 'critical';
probability: 'unlikely' | 'possible' | 'likely' | 'certain';
mitigation: string;
}
export interface IntegrationPoint {
component: string;
type: 'api' | 'database' | 'ui' | 'service' | 'config';
description: string;
requiredChanges: string[];
testingStrategy: string;
}
export interface EnhancementCheckpoint {
phaseId: string;
featureId?: string;
name: string;
description: string;
validationSteps: string[];
automatedTests?: string[];
requiresReview: boolean;
reviewers?: string[];
successCriteria: string[];
}
export interface ValidationStrategy {
unitTests: boolean;
integrationTests: boolean;
e2eTests: boolean;
performanceTests: boolean;
securityScans: boolean;
codeReview: boolean;
stagingDeployment: boolean;
userAcceptance: boolean;
}
export interface HookTemplate {
name: string;
description: string;
script: string;
trigger: 'pre-commit' | 'post-commit' | 'pre-push' | 'post-push' | 'custom';
enabled: boolean;
}
export * from './orchestration';
//# sourceMappingURL=index.d.ts.map