# andreas-prouza/obi-extension architecture

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

- Interactive diagram: https://gitdiagram.com/andreas-prouza/obi-extension
- Repository: https://github.com/andreas-prouza/obi-extension

## Overview

OBI is a VS Code extension for preparing and running IBM i builds from locally maintained sources. Users configure project and profiles, curate source filters, inspect changed sources and dependencies, then invoke a build; OBI transfers required files over SSH and presents build results. The graph includes quick search, build history, configuration and diagnostics as supporting capabilities. README documents change detection and dependency ordering, but sampled source does not expose every internal link in that pipeline, so uncertain wiring is omitted.

Main entry points: [`src/extension/obi/OBICommands.ts`](https://github.com/andreas-prouza/obi-extension/blob/main/src/extension/obi/OBICommands.ts) (Build commands), [`src/webview/show_changes/BuildSummary.ts`](https://github.com/andreas-prouza/obi-extension/blob/main/src/webview/show_changes/BuildSummary.ts) (Change and build summary), [`src/webview/controller/OBIController.ts`](https://github.com/andreas-prouza/obi-extension/blob/main/src/webview/controller/OBIController.ts) (Build view), [`src/webview/source_list/SourceListProvider.ts`](https://github.com/andreas-prouza/obi-extension/blob/main/src/webview/source_list/SourceListProvider.ts) (Source filters)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workspace["Workspace setup"]
  node_config["Project and profiles<br/>[AppConfig.ts]"]
  node_workspace_util["Workspace access<br/>[Workspace.ts]"]
  node_controller["Build view<br/>[OBIController.ts]"]
end

subgraph group_sources["Source management"]
  node_source_lists["Source filters"]
  node_local_sources["Local source index<br/>[LocalSourceList.ts]"]
  node_quick_search["Quick search"]
  node_source_config["Source configuration"]
end

subgraph group_build["Build workflow"]
  node_dependencies["Dependency list<br/>[Dependency.ts]"]
  node_commands["Build commands<br/>[OBICommands.ts]"]
  node_build_list["Build list generation<br/>[createBuildList.ts]"]
  node_list_modules["Compile-list operations<br/>[add_sources.ts]"]
  node_ssh["SSH transfer and commands<br/>[SSH_Tasks.ts]"]
end

subgraph group_results["Build results"]
  node_summary["Change and build summary<br/>[BuildSummary.ts]"]
  node_diagnostics["Compile diagnostics"]
  node_history["Build history"]
  node_logs["Log output"]
end

node_developer(("Developer"))
node_vscode(("VS Code"))
node_ibmi[("IBM i host")]

node_developer -->|"initiates work"| node_vscode
node_vscode -->|"opens view"| node_controller
node_controller -->|"loads settings"| node_config
node_controller -->|"dispatches commands"| node_vscode
node_vscode -->|"invokes build actions"| node_commands
node_commands -->|"reads settings"| node_config
node_commands -->|"generates build list"| node_build_list
node_commands -->|"uses dependencies"| node_dependencies
node_commands -->|"transfers and executes"| node_ssh
node_ssh -->|"transfers files and runs commands"| node_ibmi
node_commands -->|"opens build results"| node_summary
node_summary -->|"updates compile list"| node_list_modules
node_summary -->|"shows diagnostics"| node_diagnostics
node_source_lists -->|"resolves workspace"| node_workspace_util
node_source_lists -->|"uses source information"| node_local_sources
node_quick_search -->|"loads source index"| node_local_sources
node_quick_search -->|"opens selected source"| node_vscode
node_history -->|"locates workspace data"| node_workspace_util
node_logs -->|"supports build output"| node_summary

click node_config "https://github.com/andreas-prouza/obi-extension/blob/main/src/shared/AppConfig.ts"
click node_workspace_util "https://github.com/andreas-prouza/obi-extension/blob/main/src/extension/utilities/Workspace.ts"
click node_controller "https://github.com/andreas-prouza/obi-extension/blob/main/src/webview/controller/OBIController.ts"
click node_source_lists "https://github.com/andreas-prouza/obi-extension/blob/main/src/webview/source_list/SourceListProvider.ts"
click node_local_sources "https://github.com/andreas-prouza/obi-extension/blob/main/src/extension/utilities/LocalSourceList.ts"
click node_quick_search "https://github.com/andreas-prouza/obi-extension/blob/main/src/source-quick-search.ts"
click node_source_config "https://github.com/andreas-prouza/obi-extension/blob/main/src/webview/source_list/SourceListConfig.ts"
click node_dependencies "https://github.com/andreas-prouza/obi-extension/blob/main/src/shared/Dependency.ts"
click node_commands "https://github.com/andreas-prouza/obi-extension/blob/main/src/extension/obi/OBICommands.ts"
click node_build_list "https://github.com/andreas-prouza/obi-extension/blob/main/src/extension/obi/compile_list/createBuildList.ts"
click node_list_modules "https://github.com/andreas-prouza/obi-extension/blob/main/src/extension/obi/compile_list/modules/add_sources.ts"
click node_ssh "https://github.com/andreas-prouza/obi-extension/blob/main/src/extension/utilities/SSH_Tasks.ts"
click node_summary "https://github.com/andreas-prouza/obi-extension/blob/main/src/webview/show_changes/BuildSummary.ts"
click node_diagnostics "https://github.com/andreas-prouza/obi-extension/blob/main/src/extension/source/compile-diagnostics.ts"
click node_history "https://github.com/andreas-prouza/obi-extension/blob/main/src/webview/build_history/BuildHistoryProvider.ts"
click node_logs "https://github.com/andreas-prouza/obi-extension/blob/main/src/webview/show_changes/LogOutputProvider.ts"

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_config,node_workspace_util,node_controller toneBlue
class node_source_lists,node_local_sources,node_quick_search,node_source_config,node_ibmi toneAmber
class node_dependencies,node_commands,node_build_list,node_list_modules,node_ssh toneMint
class node_summary,node_diagnostics,node_history,node_logs toneRose
class node_developer,node_vscode toneIndigo
```

## Components

### Workspace setup

- [Project and profiles](https://github.com/andreas-prouza/obi-extension/blob/main/src/shared/AppConfig.ts): `src/shared/AppConfig.ts`
- [Workspace access](https://github.com/andreas-prouza/obi-extension/blob/main/src/extension/utilities/Workspace.ts): `src/extension/utilities/Workspace.ts`
- [Build view](https://github.com/andreas-prouza/obi-extension/blob/main/src/webview/controller/OBIController.ts): `src/webview/controller/OBIController.ts`

### Source management

- [Source filters](https://github.com/andreas-prouza/obi-extension/blob/main/src/webview/source_list/SourceListProvider.ts): `src/webview/source_list/SourceListProvider.ts`
- [Local source index](https://github.com/andreas-prouza/obi-extension/blob/main/src/extension/utilities/LocalSourceList.ts): `src/extension/utilities/LocalSourceList.ts`
- [Quick search](https://github.com/andreas-prouza/obi-extension/blob/main/src/source-quick-search.ts): `src/source-quick-search.ts`
- [Source configuration](https://github.com/andreas-prouza/obi-extension/blob/main/src/webview/source_list/SourceListConfig.ts): `src/webview/source_list/SourceListConfig.ts`

### Build workflow

- [Dependency list](https://github.com/andreas-prouza/obi-extension/blob/main/src/shared/Dependency.ts): `src/shared/Dependency.ts`
- [Build commands](https://github.com/andreas-prouza/obi-extension/blob/main/src/extension/obi/OBICommands.ts): `src/extension/obi/OBICommands.ts`
- [Build list generation](https://github.com/andreas-prouza/obi-extension/blob/main/src/extension/obi/compile_list/createBuildList.ts): `src/extension/obi/compile_list/createBuildList.ts`
- [Compile-list operations](https://github.com/andreas-prouza/obi-extension/blob/main/src/extension/obi/compile_list/modules/add_sources.ts): `src/extension/obi/compile_list/modules/add_sources.ts`
- [SSH transfer and commands](https://github.com/andreas-prouza/obi-extension/blob/main/src/extension/utilities/SSH_Tasks.ts): `src/extension/utilities/SSH_Tasks.ts`

### Build results

- [Change and build summary](https://github.com/andreas-prouza/obi-extension/blob/main/src/webview/show_changes/BuildSummary.ts): `src/webview/show_changes/BuildSummary.ts`
- [Compile diagnostics](https://github.com/andreas-prouza/obi-extension/blob/main/src/extension/source/compile-diagnostics.ts): `src/extension/source/compile-diagnostics.ts`
- [Build history](https://github.com/andreas-prouza/obi-extension/blob/main/src/webview/build_history/BuildHistoryProvider.ts): `src/webview/build_history/BuildHistoryProvider.ts`
- [Log output](https://github.com/andreas-prouza/obi-extension/blob/main/src/webview/show_changes/LogOutputProvider.ts): `src/webview/show_changes/LogOutputProvider.ts`

### Other components

- **Developer**
- **VS Code**
- **IBM i host**

## Connections

- Developer → VS Code: initiates work
- VS Code → Build view: opens view
- Build view → Project and profiles: loads settings
- Build view → VS Code: dispatches commands
- VS Code → Build commands: invokes build actions
- Build commands → Project and profiles: reads settings
- Build commands → Build list generation: generates build list
- Build commands → Dependency list: uses dependencies
- Build commands → SSH transfer and commands: transfers and executes
- SSH transfer and commands → IBM i host: transfers files and runs commands
- Build commands → Change and build summary: opens build results
- Change and build summary → Compile-list operations: updates compile list
- Change and build summary → Compile diagnostics: shows diagnostics
- Source filters → Workspace access: resolves workspace
- Source filters → Local source index: uses source information
- Quick search → Local source index: loads source index
- Quick search → VS Code: opens selected source
- Build history → Workspace access: locates workspace data
- Log output → Change and build summary: supports build output
