# samsmith00/epictl-vscode architecture

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

- Interactive diagram: https://gitdiagram.com/samsmith00/epictl-vscode
- Repository: https://github.com/samsmith00/epictl-vscode

## Overview

Epictl-vscode is a VS Code extension for browsing and maintaining Epicor BPMs through the epictl CLI. Users configure a workspace, browse directives and BPMs, associate local code with manifests, edit or validate code, then update and apply changes. The graph preserves the README’s major workflows; some feature wiring is documented but not visible in the sampled excerpts, so those links are omitted. The extension entry point and some registrations are represented at their exact tree paths.

Main entry points: [`src/treeView/treeView.ts`](https://github.com/samsmith00/epictl-vscode/blob/development/src/treeView/treeView.ts) (BPM Explorer), [`src/commandRegistry.ts`](https://github.com/samsmith00/epictl-vscode/blob/development/src/commandRegistry.ts) (Command Palette), [`src/webviews/webviewHandlers/bpmWebviewHandlers.ts`](https://github.com/samsmith00/epictl-vscode/blob/development/src/webviews/webviewHandlers/bpmWebviewHandlers.ts) (BPM Actions), [`src/commandHandlers.ts`](https://github.com/samsmith00/epictl-vscode/blob/development/src/commandHandlers.ts) (CLI Operations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["VS Code Experience"]
  node_extension["Extension Setup<br/>[extension.ts]"]
  node_commands["Command Palette<br/>[commandRegistry.ts]"]
  node_context["Context Webview<br/>[contextWebview.ts]"]
  node_bpmview["BPM Webview<br/>[bpmWebview.ts]"]
  node_tree["BPM Explorer<br/>[treeView.ts]"]
  node_notifications["Notifications"]
end

subgraph group_workflow["BPM Workflows"]
  node_bpmhandlers["BPM Actions"]
  node_cliops["CLI Operations<br/>[commandHandlers.ts]"]
  node_prompts["User Prompts<br/>[promptManager.ts]"]
end

subgraph group_workspace["Workspace Data"]
  node_config["Workspace Config<br/>[configManager.ts]"]
  node_manifestmgr["Manifest Manager<br/>[manifestManager.ts]"]
  node_state["BPM State<br/>[stateManager.ts]"]
  node_localdata["Manifests and Code"]
end

subgraph group_integration["Epicor Integration"]
  node_epictl["epictl CLI"]
  node_epicor["Epicor Environment"]
end

node_user(("Developer"))
node_vscode["VS Code"]

node_user -->|"uses"| node_vscode
node_vscode -->|"activates"| node_extension
node_user -->|"invokes commands"| node_commands
node_user -->|"browses BPMs"| node_tree
node_user -->|"configures workspace"| node_context
node_user -->|"edits BPM"| node_bpmview
node_commands -->|"calls operations"| node_cliops
node_tree -->|"queries directives"| node_cliops
node_bpmview -->|"dispatches actions"| node_bpmhandlers
node_bpmhandlers -->|"calls operations"| node_cliops
node_bpmhandlers -->|"requests input"| node_prompts
node_context -->|"executes commands"| node_commands
node_commands -->|"reads and writes"| node_config
node_context -->|"reads settings"| node_config
node_tree -->|"reads executable path"| node_config
node_tree -->|"reads manifests"| node_manifestmgr
node_bpmhandlers -->|"manages manifests"| node_manifestmgr
node_cliops -->|"executes CLI"| node_epictl
node_epictl -->|"queries and updates"| node_epicor
node_manifestmgr -->|"reads and writes"| node_localdata
node_config -->|"stores settings"| node_localdata
node_state -->|"persists state"| node_localdata
node_commands -->|"reports outcomes"| node_notifications
node_tree -->|"tracks selection"| node_state
node_bpmview -->|"displays BPM state"| node_state

click node_extension "https://github.com/samsmith00/epictl-vscode/blob/development/src/extension.ts"
click node_commands "https://github.com/samsmith00/epictl-vscode/blob/development/src/commandRegistry.ts"
click node_context "https://github.com/samsmith00/epictl-vscode/blob/development/src/webviews/contextWebview.ts"
click node_bpmview "https://github.com/samsmith00/epictl-vscode/blob/development/src/webviews/bpmWebview.ts"
click node_tree "https://github.com/samsmith00/epictl-vscode/blob/development/src/treeView/treeView.ts"
click node_bpmhandlers "https://github.com/samsmith00/epictl-vscode/blob/development/src/webviews/webviewHandlers/bpmWebviewHandlers.ts"
click node_cliops "https://github.com/samsmith00/epictl-vscode/blob/development/src/commandHandlers.ts"
click node_prompts "https://github.com/samsmith00/epictl-vscode/blob/development/src/managers/promptManager.ts"
click node_config "https://github.com/samsmith00/epictl-vscode/blob/development/src/managers/configManager.ts"
click node_manifestmgr "https://github.com/samsmith00/epictl-vscode/blob/development/src/managers/manifestManager.ts"
click node_state "https://github.com/samsmith00/epictl-vscode/blob/development/src/managers/stateManager.ts"
click node_notifications "https://github.com/samsmith00/epictl-vscode/blob/development/src/managers/notificationManager.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_extension,node_commands,node_context,node_bpmview,node_tree,node_notifications toneBlue
class node_bpmhandlers,node_cliops,node_prompts toneAmber
class node_config,node_manifestmgr,node_state,node_localdata toneMint
class node_epictl,node_epicor toneRose
class node_user,node_vscode toneIndigo
```

## Components

### VS Code Experience

- [Extension Setup](https://github.com/samsmith00/epictl-vscode/blob/development/src/extension.ts): `src/extension.ts`
- [Command Palette](https://github.com/samsmith00/epictl-vscode/blob/development/src/commandRegistry.ts): `src/commandRegistry.ts`
- [Context Webview](https://github.com/samsmith00/epictl-vscode/blob/development/src/webviews/contextWebview.ts): `src/webviews/contextWebview.ts`
- [BPM Webview](https://github.com/samsmith00/epictl-vscode/blob/development/src/webviews/bpmWebview.ts): `src/webviews/bpmWebview.ts`
- [BPM Explorer](https://github.com/samsmith00/epictl-vscode/blob/development/src/treeView/treeView.ts): `src/treeView/treeView.ts`
- [Notifications](https://github.com/samsmith00/epictl-vscode/blob/development/src/managers/notificationManager.ts): `src/managers/notificationManager.ts`

### BPM Workflows

- [BPM Actions](https://github.com/samsmith00/epictl-vscode/blob/development/src/webviews/webviewHandlers/bpmWebviewHandlers.ts): `src/webviews/webviewHandlers/bpmWebviewHandlers.ts`
- [CLI Operations](https://github.com/samsmith00/epictl-vscode/blob/development/src/commandHandlers.ts): `src/commandHandlers.ts`
- [User Prompts](https://github.com/samsmith00/epictl-vscode/blob/development/src/managers/promptManager.ts): `src/managers/promptManager.ts`

### Workspace Data

- [Workspace Config](https://github.com/samsmith00/epictl-vscode/blob/development/src/managers/configManager.ts): `src/managers/configManager.ts`
- [Manifest Manager](https://github.com/samsmith00/epictl-vscode/blob/development/src/managers/manifestManager.ts): `src/managers/manifestManager.ts`
- [BPM State](https://github.com/samsmith00/epictl-vscode/blob/development/src/managers/stateManager.ts): `src/managers/stateManager.ts`
- **Manifests and Code**

### Epicor Integration

- **epictl CLI**
- **Epicor Environment**

### Other components

- **Developer**
- **VS Code**

## Connections

- Developer → VS Code: uses
- VS Code → Extension Setup: activates
- Developer → Command Palette: invokes commands
- Developer → BPM Explorer: browses BPMs
- Developer → Context Webview: configures workspace
- Developer → BPM Webview: edits BPM
- Command Palette → CLI Operations: calls operations
- BPM Explorer → CLI Operations: queries directives
- BPM Webview → BPM Actions: dispatches actions
- BPM Actions → CLI Operations: calls operations
- BPM Actions → User Prompts: requests input
- Context Webview → Command Palette: executes commands
- Command Palette → Workspace Config: reads and writes
- Context Webview → Workspace Config: reads settings
- BPM Explorer → Workspace Config: reads executable path
- BPM Explorer → Manifest Manager: reads manifests
- BPM Actions → Manifest Manager: manages manifests
- CLI Operations → epictl CLI: executes CLI
- epictl CLI → Epicor Environment: queries and updates
- Manifest Manager → Manifests and Code: reads and writes
- Workspace Config → Manifests and Code: stores settings
- BPM State → Manifests and Code: persists state
- Command Palette → Notifications: reports outcomes
- BPM Explorer → BPM State: tracks selection
- BPM Webview → BPM State: displays BPM state
