/** * SLOPE function registry — discoverable API surface for the search() tool. */ export interface FunctionRegistryEntry { name: string; module: 'core' | 'fs' | 'constants' | 'store' | 'flows' | 'inspirations' | 'init' | 'testing' | 'workflow'; description: string; signature: string; example: string; availability?: 'execute' | 'mcp_tool'; } export declare const SLOPE_REGISTRY: FunctionRegistryEntry[]; /** * Key TypeScript type definitions for agent reference. * Agents call search({ module: 'types' }) to retrieve this. */ export declare const SLOPE_TYPES = "// \u2500\u2500\u2500 Core Scoring Enums \u2500\u2500\u2500\ntype ClubSelection = 'driver' | 'long_iron' | 'short_iron' | 'wedge' | 'putter';\ntype ShotResult = 'fairway' | 'green' | 'in_the_hole' | 'missed_long' | 'missed_short' | 'missed_left' | 'missed_right';\ntype HazardType = 'bunker' | 'water' | 'ob' | 'rough' | 'trees';\ntype ConditionType = 'wind' | 'rain' | 'frost_delay' | 'altitude' | 'pin_position';\ntype SpecialPlay = 'gimme' | 'mulligan' | 'provisional' | 'lay_up' | 'scramble';\ntype MissDirection = 'long' | 'short' | 'left' | 'right';\ntype ScoreLabel = 'eagle' | 'birdie' | 'par' | 'bogey' | 'double_bogey' | 'triple_plus';\ntype SprintType = 'feature' | 'feedback' | 'infra' | 'bugfix' | 'research' | 'flow' | 'test-coverage' | 'audit';\n\n// \u2500\u2500\u2500 Record Types \u2500\u2500\u2500\ninterface HazardHit { type: HazardType; description: string; gotcha_id?: string; }\ninterface ShotRecord { ticket_key: string; title: string; club: ClubSelection; result: ShotResult; hazards: HazardHit[]; provisional_declared?: boolean; notes?: string; }\ninterface ConditionRecord { type: ConditionType; description: string; impact: 'none' | 'minor' | 'major'; }\n\n// \u2500\u2500\u2500 Scoring Types \u2500\u2500\u2500\ninterface HoleStats { fairways_hit: number; fairways_total: number; greens_in_regulation: number; greens_total: number; putts: number; penalties: number; hazards_hit: number; hazard_penalties: number; miss_directions: Record; }\ninterface HoleScore { sprint_number: number; theme: string; par: 3 | 4 | 5; slope: number; score: number; score_label: ScoreLabel; shots: ShotRecord[]; conditions: ConditionRecord[]; special_plays: SpecialPlay[]; stats: HoleStats; }\n\n// \u2500\u2500\u2500 Full Scorecard \u2500\u2500\u2500\ninterface GolfScorecard extends HoleScore { type?: SprintType; player?: string; date: string; training?: TrainingSession[]; nutrition?: NutritionEntry[]; yardage_book_updates: string[]; bunker_locations: string[]; course_management_notes: string[]; nineteenth_hole?: NineteenthHole; }\n\n// \u2500\u2500\u2500 Handicap \u2500\u2500\u2500\ninterface RollingStats { handicap: number; fairway_pct: number; gir_pct: number; avg_putts: number; penalties_per_round: number; miss_pattern: Record; mulligans: number; gimmes: number; }\ninterface HandicapCard { last_5: RollingStats; last_10: RollingStats; all_time: RollingStats; }\n\n// \u2500\u2500\u2500 Dispersion \u2500\u2500\u2500\ninterface DispersionReport { total_shots: number; total_misses: number; miss_rate_pct: number; by_direction: Record; dominant_miss: MissDirection | null; systemic_issues: string[]; }\ninterface AreaReport { by_sprint_type: Record; by_club: Record; par_performance: Record; }\n\n// \u2500\u2500\u2500 Config & Loader \u2500\u2500\u2500\ninterface SlopeConfig { scorecardDir: string; scorecardPattern: string; minSprint: number; commonIssuesPath: string; sessionsPath: string; registry: 'file' | 'api'; claimsPath: string; registryApiUrl?: string; currentSprint?: number; store?: string; store_path?: string; }\n\n// \u2500\u2500\u2500 Store \u2500\u2500\u2500\ninterface SlopeSession { session_id: string; role: 'primary' | 'secondary' | 'observer'; ide: string; worktree_path?: string; branch?: string; started_at: string; last_heartbeat_at: string; metadata?: Record; agent_role?: string; swarm_id?: string; }\ninterface SprintClaim { id: string; sprint_number: number; player: string; target: string; scope: ClaimScope; claimed_at: string; notes?: string; session_id?: string; expires_at?: string; metadata?: Record; }\n\n// \u2500\u2500\u2500 Standup \u2500\u2500\u2500\ninterface StandupReport { sessionId: string; agent_role?: string; ticketKey?: string; status: 'working' | 'blocked' | 'complete'; progress: string; blockers: string[]; decisions: string[]; handoffs: HandoffEntry[]; timestamp: string; }\ninterface HandoffEntry { target: string; description: string; for_role?: string; }\n\n// \u2500\u2500\u2500 Roles \u2500\u2500\u2500\ninterface RoleDefinition { id: string; name: string; description: string; focusAreas: string[]; clubPreferences: Partial>; briefingFilter: { emphasize: string[]; deemphasize: string[] }; }\n\n// \u2500\u2500\u2500 Builder Input \u2500\u2500\u2500\ninterface AgentBreakdown { session_id: string; agent_role: string; shots: ShotRecord[]; score: number; stats: HoleStats; }\ninterface AgentShotInput { session_id: string; agent_role: string; shots: ShotRecord[]; }\ninterface ScorecardShotInput { ticket_key?: string; ticket?: string; title?: string; club: ClubSelection; result: ShotResult; hazards?: Array; provisional_declared?: boolean; notes?: string; }\ninterface ScorecardInput { sprint_number: number; theme: string; par: 3 | 4 | 5; slope: number; date: string; shots: ScorecardShotInput[]; putts?: number; penalties?: number; score?: number; type?: SprintType; conditions?: ConditionRecord[]; special_plays?: SpecialPlay[]; training?: TrainingSession[]; nutrition?: NutritionEntry[]; nineteenth_hole?: NineteenthHole; bunker_locations?: string[]; yardage_book_updates?: string[]; course_management_notes?: string[]; agents?: AgentBreakdown[]; }\n\n// \u2500\u2500\u2500 Escalation \u2500\u2500\u2500\ntype EscalationTrigger = 'blocker_timeout' | 'claim_conflict' | 'test_failure_cascade' | 'manual';\ntype EscalationSeverity = 'warning' | 'critical';\ntype EscalationAction = 'log_event' | 'mark_blocked' | 'notify_standup';\ninterface EscalationConfig { blocker_timeout?: number; claim_conflict?: boolean; test_failure_cascade?: number; actions?: EscalationAction[]; }\ninterface EscalationResult { trigger: EscalationTrigger; severity: EscalationSeverity; description: string; session_id?: string; agent_role?: string; actions: EscalationAction[]; }\n\n// \u2500\u2500\u2500 Team Handicap \u2500\u2500\u2500\ninterface RoleHandicap { role: string; sprints_participated: number; total_shots: number; stats: RollingStats; }\ninterface SwarmEfficiency { total_sprints: number; total_agents: number; avg_agents_per_sprint: number; total_shots: number; total_score: number; avg_score_vs_par: number; coordination_events: number; efficiency_ratio: number; }\ninterface RoleCombinationStats { roles: string[]; sprint_count: number; avg_score_vs_par: number; total_hazards: number; }\ninterface TeamHandicapCard { overall: RollingStats; by_role: RoleHandicap[]; swarm_efficiency: SwarmEfficiency; role_combinations: RoleCombinationStats[]; }\n\n// \u2500\u2500\u2500 PR Signals \u2500\u2500\u2500\ntype PRPlatform = 'github' | 'gitlab' | 'bitbucket' | 'unknown';\ntype PRReviewDecision = 'APPROVED' | 'CHANGES_REQUESTED' | 'REVIEW_REQUIRED' | 'COMMENTED' | 'NONE';\ninterface PRSignal { platform: PRPlatform; pr_number: number; review_cycles: number; change_request_count: number; time_to_merge_minutes: number | null; ci_checks_passed: number; ci_checks_failed: number; file_count: number; additions: number; deletions: number; comment_count: number; review_decision: PRReviewDecision; }\n\n// \u2500\u2500\u2500 Advisor \u2500\u2500\u2500\ninterface ExecutionTrace { planned_scope_paths: string[]; modified_files: string[]; test_results: { suite: string; passed: boolean; first_run: boolean }[]; reverts: number; elapsed_minutes: number; hazards_encountered: HazardHit[]; }\ninterface ShotClassification { result: ShotResult; miss_direction: MissDirection | null; confidence: number; reasoning: string; }\ninterface CombinedSignals { trace: ExecutionTrace; ci?: CISignal; pr?: PRSignal; events?: SlopeEvent[]; }\ninterface ClubRecommendation { club: ClubSelection; confidence: number; reasoning: string; provisional_suggestion?: string; }\ninterface TrainingRecommendation { area: string; type: TrainingType; description: string; priority: 'high' | 'medium' | 'low'; instruction_adjustment?: string; }\ninterface RecommendClubInput { ticketComplexity: 'trivial' | 'small' | 'medium' | 'large'; scorecards: GolfScorecard[]; slopeFactors?: string[]; }\ninterface TrainingPlanInput { handicap: HandicapCard; dispersion: DispersionReport; recentScorecards: GolfScorecard[]; }\n\n// \u2500\u2500\u2500 Roadmap \u2500\u2500\u2500\ntype RoadmapClub = 'driver' | 'long_iron' | 'short_iron' | 'wedge' | 'putter';\ninterface RoadmapTicket { key: string; id?: string; title: string; club: RoadmapClub; complexity: 'trivial' | 'small' | 'standard' | 'moderate' | 'multi_package' | 'multi-package' | 'risky'; depends_on?: string[]; github_issue?: number | number[]; }\ninterface RoadmapSprint { id: number; theme: string; par: 3 | 4 | 5; slope: number; type: string; tickets: RoadmapTicket[]; depends_on?: number[]; }\ninterface RoadmapPhase { name: string; sprints: number[]; }\ninterface RoadmapDefinition { name: string; description?: string; phases: RoadmapPhase[]; sprints: RoadmapSprint[]; }\ninterface RoadmapValidationResult { valid: boolean; errors: RoadmapValidationError[]; warnings: RoadmapValidationWarning[]; }\ninterface RoadmapValidationError { type: 'error'; sprint?: number; ticket?: string; message: string; }\ninterface RoadmapValidationWarning { type: 'warning'; sprint?: number; ticket?: string; message: string; }\ninterface CriticalPathResult { path: number[]; length: number; totalPar: number; }\ninterface ParallelGroup { sprints: number[]; reason: string; }\n\n// \u2500\u2500\u2500 Player (Multi-Developer) \u2500\u2500\u2500\ninterface PlayerHandicap { player: string; scorecardCount: number; handicapCard: HandicapCard; }\ninterface LeaderboardEntry { rank: number; player: string; handicap: number; scorecardCount: number; improvementTrend: number; fairwayPct: number; girPct: number; }\ninterface Leaderboard { entries: LeaderboardEntry[]; generatedAt: string; }\n\n// \u2500\u2500\u2500 Flows \u2500\u2500\u2500\ninterface FlowStep { name: string; description: string; file_paths: string[]; notes?: string; }\ninterface FlowDefinition { id: string; title: string; description: string; entry_point: string; steps: FlowStep[]; files: string[]; tags: string[]; last_verified_sha: string; last_verified_at: string; }\ninterface FlowsFile { version: '1'; last_generated: string; flows: FlowDefinition[]; }\n\n// \u2500\u2500\u2500 Briefing \u2500\u2500\u2500\ninterface RecurringPattern { id: number; title: string; category: string; sprints_hit: number[]; gotcha_refs: string[]; description: string; prevention: string; reported_by?: string[]; }\ninterface CommonIssuesFile { recurring_patterns: RecurringPattern[]; }\ninterface SessionEntry { id: number; date: string; sprint: string; summary: string; where_left_off: string; }\ninterface BriefingFilter { categories?: string[]; keywords?: string[]; }\n\n// \u2500\u2500\u2500 Tournament \u2500\u2500\u2500\ninterface TournamentReview { id: string; name: string; dateRange: { start: string; end: string }; sprints: TournamentSprintEntry[]; scoring: TournamentScoring; stats: TournamentStats; hazardIndex: TournamentHazard[]; clubPerformance: Record; takeaways: string[]; improvements: string[]; reflection?: string; }\ninterface TournamentSprintEntry { sprintNumber: number; theme: string; par: number; slope: number; score: number; scoreLabel: ScoreLabel; ticketCount: number; ticketsLanded: number; }\ninterface TournamentScoring { totalPar: number; totalScore: number; differential: number; avgScoreLabel: string; bestSprint: { sprintNumber: number; label: ScoreLabel }; worstSprint: { sprintNumber: number; label: ScoreLabel }; sprintCount: number; ticketCount: number; ticketsLanded: number; landingRate: number; }\n\n// \u2500\u2500\u2500 Analyzers \u2500\u2500\u2500\ntype AnalyzerName = 'stack' | 'structure' | 'git' | 'testing' | 'ci' | 'docs';\ninterface StackProfile { primaryLanguage: string; languages: Record; frameworks: string[]; packageManager?: string; runtime?: string; buildTool?: string; }\ninterface StructureProfile { totalFiles: number; sourceFiles: number; testFiles: number; maxDepth: number; isMonorepo: boolean; modules: Array<{ name: string; path: string; fileCount: number }>; largeFiles: Array<{ path: string; lines: number }>; }\ninterface GitProfile { totalCommits: number; commitsLast90d: number; commitsPerWeek: number; contributors: Array<{ name: string; email: string; commits: number }>; activeBranches: string[]; lastRelease?: { tag: string; date: string }; inferredCadence: 'daily' | 'weekly' | 'biweekly' | 'monthly' | 'sporadic'; }\ninterface TestProfile { framework?: string; testFileCount: number; hasTestScript: boolean; hasCoverage: boolean; testDirs: string[]; }\ninterface CIProfile { system?: 'github-actions' | 'circleci' | 'gitlab-ci' | 'jenkins' | 'travis'; configFiles: string[]; hasTestStage: boolean; hasBuildStage: boolean; hasDeployStage: boolean; }\ninterface DocsProfile { hasReadme: boolean; readmeSummary?: string; hasContributing: boolean; hasChangelog: boolean; hasAdr: boolean; hasApiDocs: boolean; }\ninterface RepoProfile { analyzedAt: string; analyzersRun: AnalyzerName[]; stack: StackProfile; structure: StructureProfile; git: GitProfile; testing: TestProfile; ci: CIProfile; docs: DocsProfile; }\n\n// \u2500\u2500\u2500 Complexity \u2500\u2500\u2500\ninterface ComplexityProfile { estimatedPar: 3 | 4 | 5; estimatedSlope: number; slopeFactors: string[]; riskAreas: Array<{ module: string; reason: string }>; busFactor: Array<{ module: string; topContributor: string; pct: number }>; }\n\n// \u2500\u2500\u2500 Backlog \u2500\u2500\u2500\ninterface TodoEntry { type: 'TODO' | 'FIXME' | 'HACK' | 'XXX'; text: string; file: string; line: number; }\ninterface BacklogAnalysis { todos: TodoEntry[]; todosByModule: Record; changelogUnreleased?: string[]; }\n\n// \u2500\u2500\u2500 GitHub Backlog \u2500\u2500\u2500\ninterface GitHubIssue { number: number; title: string; state: 'open' | 'closed'; labels: string[]; milestone?: { number: number; title: string }; body?: string; createdAt: string; }\ninterface GitHubMilestone { number: number; title: string; description?: string; state: 'open' | 'closed'; openIssues: number; closedIssues: number; dueOn?: string; }\ninterface GitHubBacklogAnalysis { issues: GitHubIssue[]; issuesByLabel: Record; issuesByMilestone: Record; highPriority: GitHubIssue[]; milestones: GitHubMilestone[]; }\ninterface MergedBacklog { local: BacklogAnalysis; remote?: GitHubBacklogAnalysis; totalItems: number; }\n\n// \u2500\u2500\u2500 Generators \u2500\u2500\u2500\ninterface GeneratedConfig { projectName: string; metaphor: string; techStack: string[]; sprintCadence: 'weekly' | 'biweekly' | 'monthly'; team: Record; }\ninterface GeneratedSprint { roadmap: RoadmapDefinition; sprint: RoadmapSprint; }\n\n// \u2500\u2500\u2500 Vision \u2500\u2500\u2500\ninterface VisionDocument { purpose: string; audience?: string; priorities: string[]; techDirection?: string; nonGoals?: string[]; createdAt: string; updatedAt: string; }\n"; import type { McpToolParam, McpToolMeta } from '../core/docs.js'; export type { McpToolParam, McpToolMeta }; export declare const MCP_TOOL_REGISTRY: readonly McpToolMeta[]; //# sourceMappingURL=registry.d.ts.map