/** * Shared TypeScript interfaces for ForgeOS engine response types. * * Used by both the MCP server transport and the CLI binary so type definitions * are never duplicated. Interfaces are intentionally minimal — only the fields * callers actually inspect. Engine responses may contain additional fields that * are preserved as `unknown` pass-throughs. * * Sprint 2 additions : * ForgeResponse — standard JSON envelope for all MCP and CLI --output json responses * NextAction — re-exported from errors.ts for convenience */ export interface NextAction { /** CLI command the agent should run. e.g. "forge gate check --initiative " */ command: string; /** Why this action is recommended. */ reason: string; } export interface ForgeResponse { schema_version: "1.0"; /** Tool / CLI command name that was called. */ command: string; /** "ok" = success, "error" = failure, "blocked" = gate not yet satisfied. */ status: "ok" | "error" | "blocked"; /** The actual response payload. */ data: T; /** Structured recommended follow-up actions for agents. */ next_actions: NextAction[]; /** * SHA-256 idempotency token — identical for repeated calls with the same * arguments within a 5-minute window. Agents can use this to deduplicate. */ idempotency_token: string; meta: { timestamp: string; duration_ms: number; }; } export interface Project { id: string; name: string; platform: string; shadow_mode?: boolean; } export interface ProjectList { projects: Project[]; } export interface Initiative { id: string; title: string; description?: string; priority: string; status: string; } export interface Changeset { id: string; changeset_id?: string; description: string; modules_affected: string[]; files_changed: string[]; risk_score: number; gate_recommendation?: GateRecommendation | null; } export interface Gate { gate_id: string; gate_name: string; order: number; status: string; required_evidence: string[]; required_roles: string[]; } export interface GateRecommendation { recommended_gates: Gate[]; risk_analysis: Record; } export interface Evidence { id: string; type: string; summary: string; submitted_by: string; } export interface Review { id: string; role: string; status: string; findings?: ReviewFinding[]; } export interface ReviewFinding { category: string; severity: string; observation: string; recommendation: string; } export interface Session { id: string; project_id: string; status: string; started_at: string; ended_at?: string; } export interface Observation { id: string; domain: string; observation_type: string; content: string; confidence: number; } export interface KnowledgeNode { domain: string; patterns: string[]; anti_patterns: string[]; fix_recipes: string[]; } export interface QualityWarning { type: string; message: string; severity: string; source: string; } export interface FederationConsent { share_governance_patterns: boolean; share_usage_metrics: boolean; receive_ecosystem_insights: boolean; } export interface FederationStatus { enabled: boolean; hub_url: string; instance_id: string | null; push_interval_hours?: number; consent?: FederationConsent; last_push_at?: string | null; last_pull_at?: string | null; last_push_pattern_count?: number; last_push_error?: string | null; last_pull_error?: string | null; /** @deprecated Use last_push_at */ last_push?: string; /** @deprecated Use last_pull_at */ last_pull?: string; } export interface LedgerEntry { seq: number; timestamp: string; entry_type: string; previous_hash: string; } export interface Scorecard { setup_complete: boolean; items: ScorecardItem[]; } export interface ScorecardItem { name: string; status: "complete" | "incomplete"; } //# sourceMappingURL=types.d.ts.map