import type { MethodologyName, DepthLevel } from './enums.js'; import type { z } from 'zod'; import { ProjectTypeSchema, WebAppConfigSchema, BackendConfigSchema, CliConfigSchema, LibraryConfigSchema, MobileAppConfigSchema, DataPipelineConfigSchema, MlConfigSchema, BrowserExtensionConfigSchema, GameConfigSchema, ResearchConfigSchema, DataScienceConfigSchema, Web3ConfigSchema, McpServerConfigSchema, MacosNativeConfigSchema } from '../config/schema.js'; /** Step enablement entry used in presets and overlays. */ export interface StepEnablementEntry { enabled: boolean; conditional?: 'if-needed'; } /** Per-step override in custom methodology config. */ export interface CustomStepConfig { enabled?: boolean; depth?: DepthLevel; } /** Custom methodology configuration object in config.yml. */ export interface CustomConfig { default_depth?: DepthLevel; steps?: Record; } /** Valid project types — derived from Zod schema (single source of truth). */ export type ProjectType = z.infer; /** Web app configuration — derived from Zod schema (single source of truth). */ export type WebAppConfig = z.infer; /** Backend configuration — derived from Zod schema (single source of truth). */ export type BackendConfig = z.infer; /** CLI tool configuration — derived from Zod schema (single source of truth). */ export type CliConfig = z.infer; /** Library configuration — derived from Zod schema (single source of truth). */ export type LibraryConfig = z.infer; /** Mobile app configuration — derived from Zod schema (single source of truth). */ export type MobileAppConfig = z.infer; /** Data pipeline configuration — derived from Zod schema (single source of truth). */ export type DataPipelineConfig = z.infer; /** ML project configuration — derived from Zod schema (single source of truth). */ export type MlConfig = z.infer; /** Browser extension configuration — derived from Zod schema (single source of truth). */ export type BrowserExtensionConfig = z.infer; /** Research project configuration — derived from Zod schema (single source of truth). */ export type ResearchConfig = z.infer; /** Data science project configuration — derived from Zod schema (single source of truth). */ export type DataScienceConfig = z.infer; /** Web3 (smart-contract / EVM protocol) configuration — derived from Zod schema (single source of truth). */ export type Web3Config = z.infer; /** MCP server configuration — derived from Zod schema (single source of truth). */ export type McpServerConfig = z.infer; /** * Game-specific configuration — derived from Zod schema (single source of truth). * Only valid when projectType === 'game'. */ export type GameConfig = z.infer; /** Game engine options — derived from GameConfig (single source of truth). */ export type GameEngine = GameConfig['engine']; /** macOS-native (Swift/SwiftUI/AppKit) configuration — derived from Zod schema (single source of truth). */ export type MacosNativeConfig = z.infer; /** * Discriminated union for detected project configuration (v3.10+). * Replaces the single `gameConfig` field with a polymorphic shape * so any project type's config can flow through the same channel. */ export type DetectedConfig = { type: 'web-app'; config: WebAppConfig; } | { type: 'backend'; config: BackendConfig; } | { type: 'cli'; config: CliConfig; } | { type: 'library'; config: LibraryConfig; } | { type: 'mobile-app'; config: MobileAppConfig; } | { type: 'data-pipeline'; config: DataPipelineConfig; } | { type: 'ml'; config: MlConfig; } | { type: 'browser-extension'; config: BrowserExtensionConfig; } | { type: 'game'; config: GameConfig; } | { type: 'macos-native'; config: MacosNativeConfig; } | { type: 'research'; config: ResearchConfig; } | { type: 'data-science'; config: DataScienceConfig; } | { type: 'web3'; config: Web3Config; } | { type: 'mcp-server'; config: McpServerConfig; }; /** Override entry for knowledge injection. */ export interface KnowledgeOverride { append: string[]; } /** Override entry for reads remapping. */ export interface ReadsOverride { replace?: Record; append?: string[]; } /** Override entry for dependency remapping. */ export interface DependencyOverride { replace?: Record; append?: string[]; } /** Override entry for cross-reads (append-only; Wave 3c+1). */ export interface CrossReadsOverride { append: Array<{ service: string; step: string; }>; } /** Pipeline overlay definition (project-type or structural). */ export interface PipelineOverlay { name: string; description: string; projectType?: ProjectType; stepOverrides: Record; knowledgeOverrides: Record; readsOverrides: Record; dependencyOverrides: Record; crossReadsOverrides: Record; } /** Service configuration — mirrors ServiceSchema structure for manual type declarations. */ export interface ServiceConfig { name: string; description?: string; projectType: ProjectType; backendConfig?: BackendConfig; webAppConfig?: WebAppConfig; researchConfig?: ResearchConfig; libraryConfig?: LibraryConfig; cliConfig?: CliConfig; mobileAppConfig?: MobileAppConfig; dataPipelineConfig?: DataPipelineConfig; mlConfig?: MlConfig; gameConfig?: GameConfig; macosNativeConfig?: MacosNativeConfig; browserExtensionConfig?: BrowserExtensionConfig; dataScienceConfig?: DataScienceConfig; web3Config?: Web3Config; mcpServerConfig?: McpServerConfig; path?: string; /** Pipeline step slugs this service exposes for cross-service reference. Closed by default. */ exports?: Array<{ step: string; }>; } /** Project characteristics from config.yml. */ export interface ProjectConfig { name?: string; platforms?: Array<'web' | 'mobile' | 'desktop'>; projectType?: ProjectType; gameConfig?: GameConfig; macosNativeConfig?: MacosNativeConfig; webAppConfig?: WebAppConfig; backendConfig?: BackendConfig; cliConfig?: CliConfig; libraryConfig?: LibraryConfig; mobileAppConfig?: MobileAppConfig; dataPipelineConfig?: DataPipelineConfig; mlConfig?: MlConfig; browserExtensionConfig?: BrowserExtensionConfig; researchConfig?: ResearchConfig; dataScienceConfig?: DataScienceConfig; web3Config?: Web3Config; mcpServerConfig?: McpServerConfig; services?: ServiceConfig[]; [key: string]: unknown; } /** * Scaffold v2 project configuration (.scaffold/config.yml). * See config-yml-schema.md. */ export interface ScaffoldConfig { version: 2; methodology: MethodologyName; custom?: CustomConfig; platforms: Array<'claude-code' | 'codex'>; project?: ProjectConfig; /** D10a: step slug → existing incumbent artifact path (project-root-relative). */ artifact_map?: Record; [key: string]: unknown; } /** Methodology preset definition (from methodology/deep.yml, mvp.yml, custom-defaults.yml). */ export interface MethodologyPreset { name: string; description: string; default_depth: DepthLevel; steps: Record; } //# sourceMappingURL=config.d.ts.map