# hari27om/vs-code architecture

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

- Interactive diagram: https://gitdiagram.com/hari27om/vs-code
- Repository: https://github.com/hari27om/vs-code

## Overview

Spider-Man 3D Companion is a local VS Code extension paired with an Electron overlay. The main workflow is activation and environment checking, then companion startup and an IPC handshake; the extension also sends settings and window bounds so the overlay can stay aligned and non-disruptive. The companion side includes rendering, character, motion, web-constraint, animation, and autonomous-behavior subsystems. Sampled code confirms the process/window and IPC wiring, but not how the simulation modules are connected to the renderer; those links are therefore omitted.

Main entry points: [`src/extension.ts`](https://github.com/hari27om/vs-code/blob/main/src/extension.ts) (Extension Lifecycle), [`src/companion/companionManager.ts`](https://github.com/hari27om/vs-code/blob/main/src/companion/companionManager.ts) (Companion Manager), [`src/commands/index.ts`](https://github.com/hari27om/vs-code/blob/main/src/commands/index.ts) (Commands), [`companion/window/main.js`](https://github.com/hari27om/vs-code/blob/main/companion/window/main.js) (Window Controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_extension["VS Code Extension"]
  node_extension_entry["Extension Lifecycle<br/>[extension.ts]"]
  node_commands["Commands<br/>[index.ts]"]
  node_settings["Settings<br/>[settings.ts]"]
  node_environment["Environment Check<br/>[environment.ts]"]
  node_bounds["Window Bounds<br/>[bounds.ts]"]
  node_activity["Activity Signals<br/>[activitySignals.ts]"]
  node_manager["Companion Manager"]
  node_transport["Process Transport<br/>[transport.ts]"]
  node_messages["IPC Messages<br/>[messages.ts]"]
end

subgraph group_process["Companion Process"]
  node_electron["Electron Child"]
  node_protocol["IPC Protocol<br/>[protocol.js]"]
end

subgraph group_overlay["Overlay UI"]
  node_window_main["Window Controller<br/>[main.js]"]
  node_renderer["Renderer Page<br/>[index.html]"]
end

subgraph group_simulation["3D Simulation"]
  node_rig["Character Rig<br/>[rig.js]"]
  node_physics["Pendulum Physics<br/>[pendulum.js]"]
  node_web["Web Constraint<br/>[webConstraint.js]"]
  node_behavior["Autonomous Behavior"]
  node_animation["Animation Assets"]
end

node_user(("VS Code User"))
node_vscode["VS Code API"]

node_user -->|"uses"| node_vscode
node_vscode -->|"activates"| node_extension_entry
node_extension_entry -->|"checks support"| node_environment
node_extension_entry -->|"reads settings"| node_settings
node_extension_entry -->|"starts"| node_manager
node_extension_entry -->|"registers"| node_commands
node_extension_entry -->|"normalizes bounds"| node_bounds
node_extension_entry -->|"initializes"| node_activity
node_commands -->|"controls"| node_manager
node_commands -->|"reads"| node_settings
node_manager -->|"spawns"| node_electron
node_manager -->|"sends commands"| node_transport
node_manager -->|"uses types"| node_messages
node_extension_entry -->|"forwards bounds"| node_manager
node_extension_entry -->|"forwards settings"| node_manager
node_transport -->|"writes stdio"| node_electron
node_electron -->|"returns stdout"| node_transport
node_protocol -->|"dispatches messages"| node_window_main
node_window_main -->|"sends replies"| node_protocol
node_window_main -->|"loads page"| node_renderer

click node_extension_entry "https://github.com/hari27om/vs-code/blob/main/src/extension.ts"
click node_commands "https://github.com/hari27om/vs-code/blob/main/src/commands/index.ts"
click node_settings "https://github.com/hari27om/vs-code/blob/main/src/config/settings.ts"
click node_environment "https://github.com/hari27om/vs-code/blob/main/src/platform/environment.ts"
click node_bounds "https://github.com/hari27om/vs-code/blob/main/src/window/bounds.ts"
click node_activity "https://github.com/hari27om/vs-code/blob/main/src/events/activitySignals.ts"
click node_manager "https://github.com/hari27om/vs-code/blob/main/src/companion/companionManager.ts"
click node_transport "https://github.com/hari27om/vs-code/blob/main/src/ipc/transport.ts"
click node_messages "https://github.com/hari27om/vs-code/blob/main/src/ipc/messages.ts"
click node_protocol "https://github.com/hari27om/vs-code/blob/main/companion/ipc/protocol.js"
click node_window_main "https://github.com/hari27om/vs-code/blob/main/companion/window/main.js"
click node_renderer "https://github.com/hari27om/vs-code/blob/main/companion/renderer/index.html"
click node_rig "https://github.com/hari27om/vs-code/blob/main/companion/character/rig.js"
click node_physics "https://github.com/hari27om/vs-code/blob/main/companion/physics/pendulum.js"
click node_web "https://github.com/hari27om/vs-code/blob/main/companion/web/webConstraint.js"
click node_behavior "https://github.com/hari27om/vs-code/blob/main/companion/behavior/behaviorController.js"
click node_animation "https://github.com/hari27om/vs-code/tree/main/companion/animation"

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_entry,node_commands,node_settings,node_environment,node_bounds,node_activity,node_manager,node_transport,node_messages,node_user toneBlue
class node_electron,node_protocol toneAmber
class node_window_main,node_renderer,node_vscode toneMint
class node_rig,node_physics,node_web,node_behavior,node_animation toneRose
```

## Components

### VS Code Extension

- [Extension Lifecycle](https://github.com/hari27om/vs-code/blob/main/src/extension.ts): `src/extension.ts`
- [Commands](https://github.com/hari27om/vs-code/blob/main/src/commands/index.ts): `src/commands/index.ts`
- [Settings](https://github.com/hari27om/vs-code/blob/main/src/config/settings.ts): `src/config/settings.ts`
- [Environment Check](https://github.com/hari27om/vs-code/blob/main/src/platform/environment.ts): `src/platform/environment.ts`
- [Window Bounds](https://github.com/hari27om/vs-code/blob/main/src/window/bounds.ts): `src/window/bounds.ts`
- [Activity Signals](https://github.com/hari27om/vs-code/blob/main/src/events/activitySignals.ts): `src/events/activitySignals.ts`
- [Companion Manager](https://github.com/hari27om/vs-code/blob/main/src/companion/companionManager.ts): `src/companion/companionManager.ts`
- [Process Transport](https://github.com/hari27om/vs-code/blob/main/src/ipc/transport.ts): `src/ipc/transport.ts`
- [IPC Messages](https://github.com/hari27om/vs-code/blob/main/src/ipc/messages.ts): `src/ipc/messages.ts`

### Companion Process

- **Electron Child**
- [IPC Protocol](https://github.com/hari27om/vs-code/blob/main/companion/ipc/protocol.js): `companion/ipc/protocol.js`

### Overlay UI

- [Window Controller](https://github.com/hari27om/vs-code/blob/main/companion/window/main.js): `companion/window/main.js`
- [Renderer Page](https://github.com/hari27om/vs-code/blob/main/companion/renderer/index.html): `companion/renderer/index.html`

### 3D Simulation

- [Character Rig](https://github.com/hari27om/vs-code/blob/main/companion/character/rig.js): `companion/character/rig.js`
- [Pendulum Physics](https://github.com/hari27om/vs-code/blob/main/companion/physics/pendulum.js): `companion/physics/pendulum.js`
- [Web Constraint](https://github.com/hari27om/vs-code/blob/main/companion/web/webConstraint.js): `companion/web/webConstraint.js`
- [Autonomous Behavior](https://github.com/hari27om/vs-code/blob/main/companion/behavior/behaviorController.js): `companion/behavior/behaviorController.js`
- [Animation Assets](https://github.com/hari27om/vs-code/tree/main/companion/animation): `companion/animation`

### Other components

- **VS Code User**
- **VS Code API**

## Connections

- VS Code User → VS Code API: uses
- VS Code API → Extension Lifecycle: activates
- Extension Lifecycle → Environment Check: checks support
- Extension Lifecycle → Settings: reads settings
- Extension Lifecycle → Companion Manager: starts
- Extension Lifecycle → Commands: registers
- Extension Lifecycle → Window Bounds: normalizes bounds
- Extension Lifecycle → Activity Signals: initializes
- Commands → Companion Manager: controls
- Commands → Settings: reads
- Companion Manager → Electron Child: spawns
- Companion Manager → Process Transport: sends commands
- Companion Manager → IPC Messages: uses types
- Extension Lifecycle → Companion Manager: forwards bounds
- Extension Lifecycle → Companion Manager: forwards settings
- Process Transport → Electron Child: writes stdio
- Electron Child → Process Transport: returns stdout
- IPC Protocol → Window Controller: dispatches messages
- Window Controller → IPC Protocol: sends replies
- Window Controller → Renderer Page: loads page
