# anush0327/forgementor architecture

> Architecture diagram of the GitHub repository anush0327/forgementor, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/anush0327/forgementor
- Repository: https://github.com/anush0327/forgementor

## Overview

ForgeMentor is a VS Code AI software-engineering mentor. The visible workflow is chat or selected code in the webview, a host-mediated request, backend mode handling (ask, hint, or code explanation), and a selected model provider returning mentor text. The backend service and provider flow are sampled; extension-host wiring and several provider implementations are represented only by their paths and roles in the tree, so uncertain connections are omitted.

Main entry points: [`forge/webview/src/components/Chat.tsx`](https://github.com/anush0327/forgementor/blob/main/forge/webview/src/components/Chat.tsx) (Chat interface), [`forge/webview/src/App.tsx`](https://github.com/anush0327/forgementor/blob/main/forge/webview/src/App.tsx) (Chat app), [`forge/src/mentorViewProvider.ts`](https://github.com/anush0327/forgementor/blob/main/forge/src/mentorViewProvider.ts) (Webview provider), [`forge/src/mentorAPIClient.ts`](https://github.com/anush0327/forgementor/blob/main/forge/src/mentorAPIClient.ts) (Backend client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_webview["Mentor chat UI"]
  node_main["Webview entry<br/>[main.tsx]"]
  node_app["Chat app<br/>[App.tsx]"]
  node_chat["Chat interface<br/>[Chat.tsx]"]
end

subgraph group_extension["VS Code extension"]
  node_extension_host["Extension host<br/>[extension.ts]"]
  node_view_provider["Webview provider"]
  node_mentor_service["Mentor service<br/>[mentorService.ts]"]
  node_api_client["Backend client<br/>[mentorAPIClient.ts]"]
  node_models["Request models<br/>[mentorModels.ts]"]
end

subgraph group_backend["Mentor API"]
  node_controller["API endpoints"]
  node_service["Mode orchestration<br/>[MentorService.java]"]
  node_resolver["Provider resolver"]
  node_provider_contract["Provider contract"]
end

subgraph group_providers["AI providers"]
  node_openai["OpenAI provider"]
  node_gemini["Gemini provider"]
  node_mock["Mock provider"]
end

node_developer(("Developer"))
node_editor["VS Code editor"]
node_openai_service(("OpenAI model service"))
node_gemini_service(("Gemini model service"))

node_developer -->|"enters prompt"| node_chat
node_editor -->|"invokes selection command"| node_extension_host
node_main -->|"renders"| node_app
node_app -->|"renders"| node_chat
node_chat -->|"posts messages"| node_view_provider
node_view_provider -->|"sends responses"| node_chat
node_mentor_service -->|"calls endpoint"| node_api_client
node_api_client -->|"POSTs request"| node_controller
node_controller -->|"dispatches mode"| node_service
node_service -->|"resolves model"| node_resolver
node_resolver -->|"selects implementation"| node_provider_contract
node_openai -->|"calls model"| node_openai_service
node_gemini -->|"calls model"| node_gemini_service

click node_main "https://github.com/anush0327/forgementor/blob/main/forge/webview/src/main.tsx"
click node_app "https://github.com/anush0327/forgementor/blob/main/forge/webview/src/App.tsx"
click node_chat "https://github.com/anush0327/forgementor/blob/main/forge/webview/src/components/Chat.tsx"
click node_extension_host "https://github.com/anush0327/forgementor/blob/main/forge/src/extension.ts"
click node_view_provider "https://github.com/anush0327/forgementor/blob/main/forge/src/mentorViewProvider.ts"
click node_mentor_service "https://github.com/anush0327/forgementor/blob/main/forge/src/mentorService.ts"
click node_api_client "https://github.com/anush0327/forgementor/blob/main/forge/src/mentorAPIClient.ts"
click node_models "https://github.com/anush0327/forgementor/blob/main/forge/src/mentorModels.ts"
click node_controller "https://github.com/anush0327/forgementor/blob/main/backend/src/main/java/com/forgementor/backend/controllers/MentorController.java"
click node_service "https://github.com/anush0327/forgementor/blob/main/backend/src/main/java/com/forgementor/backend/services/MentorService.java"
click node_resolver "https://github.com/anush0327/forgementor/blob/main/backend/src/main/java/com/forgementor/backend/providers/MentorProviderResolverImpl.java"
click node_provider_contract "https://github.com/anush0327/forgementor/blob/main/backend/src/main/java/com/forgementor/backend/interfaces/MentorProvider.java"
click node_openai "https://github.com/anush0327/forgementor/blob/main/backend/src/main/java/com/forgementor/backend/providers/OpenAIProvider.java"
click node_gemini "https://github.com/anush0327/forgementor/blob/main/backend/src/main/java/com/forgementor/backend/providers/GeminiProvider.java"
click node_mock "https://github.com/anush0327/forgementor/blob/main/backend/src/main/java/com/forgementor/backend/providers/MockMentorProvider.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_app,node_chat toneBlue
class node_extension_host,node_view_provider,node_mentor_service,node_api_client,node_models toneAmber
class node_controller,node_service,node_resolver,node_provider_contract toneMint
class node_openai,node_gemini,node_mock toneRose
class node_developer,node_editor,node_openai_service,node_gemini_service toneIndigo
```

## Components

### Mentor chat UI

- [Webview entry](https://github.com/anush0327/forgementor/blob/main/forge/webview/src/main.tsx): `forge/webview/src/main.tsx`
- [Chat app](https://github.com/anush0327/forgementor/blob/main/forge/webview/src/App.tsx): `forge/webview/src/App.tsx`
- [Chat interface](https://github.com/anush0327/forgementor/blob/main/forge/webview/src/components/Chat.tsx): `forge/webview/src/components/Chat.tsx`

### VS Code extension

- [Extension host](https://github.com/anush0327/forgementor/blob/main/forge/src/extension.ts): `forge/src/extension.ts`
- [Webview provider](https://github.com/anush0327/forgementor/blob/main/forge/src/mentorViewProvider.ts): `forge/src/mentorViewProvider.ts`
- [Mentor service](https://github.com/anush0327/forgementor/blob/main/forge/src/mentorService.ts): `forge/src/mentorService.ts`
- [Backend client](https://github.com/anush0327/forgementor/blob/main/forge/src/mentorAPIClient.ts): `forge/src/mentorAPIClient.ts`
- [Request models](https://github.com/anush0327/forgementor/blob/main/forge/src/mentorModels.ts): `forge/src/mentorModels.ts`

### Mentor API

- [API endpoints](https://github.com/anush0327/forgementor/blob/main/backend/src/main/java/com/forgementor/backend/controllers/MentorController.java): `backend/src/main/java/com/forgementor/backend/controllers/MentorController.java`
- [Mode orchestration](https://github.com/anush0327/forgementor/blob/main/backend/src/main/java/com/forgementor/backend/services/MentorService.java): `backend/src/main/java/com/forgementor/backend/services/MentorService.java`
- [Provider resolver](https://github.com/anush0327/forgementor/blob/main/backend/src/main/java/com/forgementor/backend/providers/MentorProviderResolverImpl.java): `backend/src/main/java/com/forgementor/backend/providers/MentorProviderResolverImpl.java`
- [Provider contract](https://github.com/anush0327/forgementor/blob/main/backend/src/main/java/com/forgementor/backend/interfaces/MentorProvider.java): `backend/src/main/java/com/forgementor/backend/interfaces/MentorProvider.java`

### AI providers

- [OpenAI provider](https://github.com/anush0327/forgementor/blob/main/backend/src/main/java/com/forgementor/backend/providers/OpenAIProvider.java): `backend/src/main/java/com/forgementor/backend/providers/OpenAIProvider.java`
- [Gemini provider](https://github.com/anush0327/forgementor/blob/main/backend/src/main/java/com/forgementor/backend/providers/GeminiProvider.java): `backend/src/main/java/com/forgementor/backend/providers/GeminiProvider.java`
- [Mock provider](https://github.com/anush0327/forgementor/blob/main/backend/src/main/java/com/forgementor/backend/providers/MockMentorProvider.java): `backend/src/main/java/com/forgementor/backend/providers/MockMentorProvider.java`

### Other components

- **Developer**
- **VS Code editor**
- **OpenAI model service**
- **Gemini model service**

## Connections

- Developer → Chat interface: enters prompt
- VS Code editor → Extension host: invokes selection command
- Webview entry → Chat app: renders
- Chat app → Chat interface: renders
- Chat interface → Webview provider: posts messages
- Webview provider → Chat interface: sends responses
- Mentor service → Backend client: calls endpoint
- Backend client → API endpoints: POSTs request
- API endpoints → Mode orchestration: dispatches mode
- Mode orchestration → Provider resolver: resolves model
- Provider resolver → Provider contract: selects implementation
- OpenAI provider → OpenAI model service: calls model
- Gemini provider → Gemini model service: calls model
