Skip to content

Latest commit

 

History

History
105 lines (94 loc) · 3.42 KB

File metadata and controls

105 lines (94 loc) · 3.42 KB

OpenCodeCommit Architecture

graph TB
    subgraph "Rust CLI + TUI"
        CLI["CLI<br/><code>occ commit / occ branch</code>"]
        TUI["TUI<br/><code>occ tui</code><br/>(Ratatui)"]
        MAIN["main.rs<br/>Clap CLI dispatcher"]
        CFG["config.rs<br/>Load config.toml"]
        GIT["git.rs<br/>diff, branch, log,<br/>stage/unstage, commit"]
        CTX["context.rs<br/>Gather diff + commits<br/>+ branch + file contents"]
        SENS_RS["sensitive.rs<br/>60+ regex patterns"]
        PROMPT["prompt.rs<br/>Build prompt from context<br/>+ language + format + rules"]
        LANG["languages.rs<br/>11 languages"]
        RESP["response.rs<br/>Parse AI output<br/>Extract conventional commit"]
        BACKEND_RS["backend.rs<br/>Detect & invoke CLI"]
        SIDEBAR["File Sidebar<br/>staged / unstaged / untracked"]
        DIFF["Diff Viewer<br/>unified diff"]
        OUTPUT["Output Panel<br/>commit preview, menus"]
        ACTIONS["actions.rs<br/>commit, branch, PR,<br/>changelog generation"]
        GUARD["guard.rs<br/>repo-local prepare-commit-msg guard"]
    end

    subgraph "VS Code Extension (TypeScript)"
        EXT["extension.ts<br/>Command registration, UI"]
        EXT_CTX["context.ts<br/>Git diff, branch, commits"]
        EXT_SENS["sensitive.ts<br/>Mirrors Rust patterns"]
        EXT_GEN["generator.ts<br/>Prompt building + response parsing"]
        EXT_GUARD["guard.ts<br/>one-shot preserve tokens"]
        EXT_CLI["cli.ts<br/>Spawn backend CLI"]
        EXT_PR["pr.ts<br/>PR title/body generation"]
    end

    subgraph "AI Backend CLIs"
        OPENCODE["OpenCode"]
        CLAUDE["Claude"]
        CODEX["Codex"]
        AGY["Antigravity"]
    end

    subgraph "Direct API Backends"
        API["OpenAI-compatible HTTP APIs<br/>OpenAI, Anthropic, Gemini,<br/>OpenRouter, OpenCode Zen,<br/>Ollama, LM Studio, custom"]
    end

    %% Rust CLI flow
    CLI --> MAIN
    TUI --> MAIN
    MAIN --> CFG
    MAIN --> CTX
    CTX --> GIT
    CTX --> SENS_RS
    CTX -->|"CommitContext"| PROMPT
    PROMPT --> LANG
    CFG -->|"mode, language,<br/>custom rules"| PROMPT
    PROMPT -->|"built prompt"| BACKEND_RS

    %% Rust backend
    BACKEND_RS --> OPENCODE
    BACKEND_RS --> CLAUDE
    BACKEND_RS --> CODEX
    BACKEND_RS --> AGY
    BACKEND_RS --> API

    %% Rust response
    BACKEND_RS -->|"raw AI output"| RESP
    RESP -->|"ParsedCommit"| OUTPUT

    %% TUI internals
    MAIN -->|"tui mode"| SIDEBAR
    MAIN -->|"tui mode"| DIFF
    SIDEBAR -->|"select file"| GIT
    GIT -->|"diff text"| DIFF
    ACTIONS --> CTX
    OUTPUT -->|"user confirms"| GIT
    GUARD -->|"intercepts raw git commit"| MAIN

    %% Extension flow (independent parallel pipeline)
    EXT --> EXT_CTX
    EXT --> EXT_SENS
    EXT_CTX --> EXT_GEN
    EXT_SENS --> EXT_GEN
    EXT_GEN --> EXT_GUARD
    EXT_GEN --> EXT_CLI
    EXT --> EXT_PR
    EXT_PR --> EXT_CLI

    %% Extension spawns backend CLIs directly
    EXT_CLI --> OPENCODE
    EXT_CLI --> CLAUDE
    EXT_CLI --> CODEX
    EXT_CLI --> GEMINI
    EXT_CLI --> API

    style CLI fill:#4a9eff,color:#fff
    style TUI fill:#4a9eff,color:#fff
    style EXT fill:#4a9eff,color:#fff
    style SENS_RS fill:#ff6b6b,color:#fff
    style EXT_SENS fill:#ff6b6b,color:#fff
    style GUARD fill:#ff6b6b,color:#fff
    style OPENCODE fill:#22c55e,color:#fff
    style CLAUDE fill:#22c55e,color:#fff
    style CODEX fill:#22c55e,color:#fff
    style GEMINI fill:#22c55e,color:#fff
    style API fill:#22c55e,color:#fff
Loading