# haibinzhang1/enterpriseagent architecture

> Architecture diagram of the GitHub repository haibinzhang1/enterpriseagent, 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/haibinzhang1/enterpriseagent
- Repository: https://github.com/haibinzhang1/enterpriseagent

## Overview

Enterprise Agent Hub combines a desktop client, a server-side extension hub, and an administration web app. The principal workflow is users signing in, finding or submitting extensions, and administrators reviewing submissions for publication; the desktop also manages locally installed extensions and tools. The tree supports these capability areas, but the README is empty and most implementation excerpts are partial or absent. Accordingly, the graph shows only a few directly evidenced service calls and leaves uncertain wiring out.

Main entry points: [`server/src/main/java/com/enterpriseagent/hub/EnterpriseAgentHubApplication.java`](https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/EnterpriseAgentHubApplication.java) (Hub API), [`server/src/main/java/com/enterpriseagent/hub/review/ReviewTaskController.java`](https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/review/ReviewTaskController.java) (Review tasks), [`desktop/src/renderer/lib/api.ts`](https://github.com/haibinzhang1/enterpriseagent/blob/main/desktop/src/renderer/lib/api.ts) (Renderer API), [`desktop/src/main/lifecycle/local-kit-service.ts`](https://github.com/haibinzhang1/enterpriseagent/blob/main/desktop/src/main/lifecycle/local-kit-service.ts) (Local lifecycle)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Desktop Client"]
  node_desktop_ui["Desktop interface<br/>[App.tsx]"]
  node_desktop_api["Renderer API<br/>[api.ts]"]
  node_preload["Preload bridge<br/>[api.ts]"]
  node_ipc["IPC handlers<br/>[handlers.ts]"]
  node_local_lifecycle["Local lifecycle"]
  node_local_execution["Local executor<br/>[local-executor.ts]"]
  node_desktop_store[("Local database<br/>[local-database.ts]")]
end

subgraph group_hub["Hub API"]
  node_server["Hub API"]
  node_auth["Authentication"]
  node_auth_service["Auth service<br/>[AuthService.java]"]
  node_sessions["Session service"]
end

subgraph group_governance["Extension Governance"]
  node_catalog["Extension catalog"]
  node_catalog_service["Catalog service"]
  node_submission["Submission workflow"]
  node_review_controller["Review tasks"]
  node_review["Review decisions<br/>[ReviewService.java]"]
  node_package_storage["Package storage"]
end

subgraph group_operations["Operations"]
  node_device["Device management"]
  node_events["Client event sync"]
  node_audit["Audit queries"]
end

subgraph group_admin["Administration"]
  node_admin_users["User administration<br/>[UserService.java]"]
  node_settings["Precheck settings"]
  node_admin_web["Admin web app<br/>[App.tsx]"]
end

node_user(("Desktop user"))

node_user -->|"uses"| node_desktop_ui
node_desktop_ui -->|"requests"| node_desktop_api
node_desktop_api -->|"invokes"| node_preload
node_preload -->|"dispatches"| node_ipc
node_ipc -->|"handles local actions"| node_local_lifecycle
node_local_lifecycle -->|"executes operations"| node_local_execution
node_local_lifecycle -->|"stores state"| node_desktop_store
node_desktop_api -->|"calls hub API"| node_server
node_server -->|"routes requests"| node_auth
node_auth -->|"delegates"| node_auth_service
node_auth_service -->|"creates session"| node_sessions
node_server -->|"routes requests"| node_catalog
node_catalog -->|"delegates"| node_catalog_service
node_server -->|"accepts submissions"| node_submission
node_server -->|"routes review tasks"| node_review_controller
node_review_controller -->|"delegates decisions"| node_review
node_review_controller -->|"uses idempotency"| node_submission
node_review_controller -->|"processes pending outbox"| node_package_storage
node_server -->|"manages devices"| node_device
node_server -->|"syncs events"| node_events
node_server -->|"serves audit queries"| node_audit
node_server -->|"administers users"| node_admin_users
node_submission -.->|"reads precheck settings"| node_settings
node_admin_web -->|"uses admin API"| node_server

click node_desktop_ui "https://github.com/haibinzhang1/enterpriseagent/blob/main/desktop/src/renderer/App.tsx"
click node_desktop_api "https://github.com/haibinzhang1/enterpriseagent/blob/main/desktop/src/renderer/lib/api.ts"
click node_preload "https://github.com/haibinzhang1/enterpriseagent/blob/main/desktop/src/preload/api.ts"
click node_ipc "https://github.com/haibinzhang1/enterpriseagent/blob/main/desktop/src/main/ipc/handlers.ts"
click node_local_lifecycle "https://github.com/haibinzhang1/enterpriseagent/blob/main/desktop/src/main/lifecycle/local-kit-service.ts"
click node_local_execution "https://github.com/haibinzhang1/enterpriseagent/blob/main/desktop/src/main/executor/local-executor.ts"
click node_desktop_store "https://github.com/haibinzhang1/enterpriseagent/blob/main/desktop/src/main/db/local-database.ts"
click node_server "https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/EnterpriseAgentHubApplication.java"
click node_auth "https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/auth/AuthController.java"
click node_auth_service "https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/auth/AuthService.java"
click node_sessions "https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/auth/SessionService.java"
click node_catalog "https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/extension/ExtensionCatalogController.java"
click node_catalog_service "https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/extension/ExtensionCatalogService.java"
click node_submission "https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/submission/SubmissionService.java"
click node_review_controller "https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/review/ReviewTaskController.java"
click node_review "https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/review/ReviewService.java"
click node_package_storage "https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/packages/PackageStorageService.java"
click node_device "https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/device/ClientDeviceService.java"
click node_events "https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/localevents/LocalEventSyncService.java"
click node_audit "https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/audit/AuditQueryService.java"
click node_admin_users "https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/organization/UserService.java"
click node_settings "https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/settings/SettingsQueryService.java"
click node_admin_web "https://github.com/haibinzhang1/enterpriseagent/blob/main/web-admin/src/App.tsx"

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_desktop_ui,node_desktop_api,node_preload,node_ipc,node_local_lifecycle,node_local_execution,node_desktop_store,node_user toneBlue
class node_server,node_auth,node_auth_service,node_sessions toneAmber
class node_catalog,node_catalog_service,node_submission,node_review_controller,node_review,node_package_storage toneMint
class node_device,node_events,node_audit toneRose
class node_admin_users,node_settings,node_admin_web toneIndigo
```

## Components

### Desktop Client

- [Desktop interface](https://github.com/haibinzhang1/enterpriseagent/blob/main/desktop/src/renderer/App.tsx): `desktop/src/renderer/App.tsx`
- [Renderer API](https://github.com/haibinzhang1/enterpriseagent/blob/main/desktop/src/renderer/lib/api.ts): `desktop/src/renderer/lib/api.ts`
- [Preload bridge](https://github.com/haibinzhang1/enterpriseagent/blob/main/desktop/src/preload/api.ts): `desktop/src/preload/api.ts`
- [IPC handlers](https://github.com/haibinzhang1/enterpriseagent/blob/main/desktop/src/main/ipc/handlers.ts): `desktop/src/main/ipc/handlers.ts`
- [Local lifecycle](https://github.com/haibinzhang1/enterpriseagent/blob/main/desktop/src/main/lifecycle/local-kit-service.ts): `desktop/src/main/lifecycle/local-kit-service.ts`
- [Local executor](https://github.com/haibinzhang1/enterpriseagent/blob/main/desktop/src/main/executor/local-executor.ts): `desktop/src/main/executor/local-executor.ts`
- [Local database](https://github.com/haibinzhang1/enterpriseagent/blob/main/desktop/src/main/db/local-database.ts): `desktop/src/main/db/local-database.ts`

### Hub API

- [Hub API](https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/EnterpriseAgentHubApplication.java): `server/src/main/java/com/enterpriseagent/hub/EnterpriseAgentHubApplication.java`
- [Authentication](https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/auth/AuthController.java): `server/src/main/java/com/enterpriseagent/hub/auth/AuthController.java`
- [Auth service](https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/auth/AuthService.java): `server/src/main/java/com/enterpriseagent/hub/auth/AuthService.java`
- [Session service](https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/auth/SessionService.java): `server/src/main/java/com/enterpriseagent/hub/auth/SessionService.java`

### Extension Governance

- [Extension catalog](https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/extension/ExtensionCatalogController.java): `server/src/main/java/com/enterpriseagent/hub/extension/ExtensionCatalogController.java`
- [Catalog service](https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/extension/ExtensionCatalogService.java): `server/src/main/java/com/enterpriseagent/hub/extension/ExtensionCatalogService.java`
- [Submission workflow](https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/submission/SubmissionService.java): `server/src/main/java/com/enterpriseagent/hub/submission/SubmissionService.java`
- [Review tasks](https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/review/ReviewTaskController.java): `server/src/main/java/com/enterpriseagent/hub/review/ReviewTaskController.java`
- [Review decisions](https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/review/ReviewService.java): `server/src/main/java/com/enterpriseagent/hub/review/ReviewService.java`
- [Package storage](https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/packages/PackageStorageService.java): `server/src/main/java/com/enterpriseagent/hub/packages/PackageStorageService.java`

### Operations

- [Device management](https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/device/ClientDeviceService.java): `server/src/main/java/com/enterpriseagent/hub/device/ClientDeviceService.java`
- [Client event sync](https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/localevents/LocalEventSyncService.java): `server/src/main/java/com/enterpriseagent/hub/localevents/LocalEventSyncService.java`
- [Audit queries](https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/audit/AuditQueryService.java): `server/src/main/java/com/enterpriseagent/hub/audit/AuditQueryService.java`

### Administration

- [User administration](https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/organization/UserService.java): `server/src/main/java/com/enterpriseagent/hub/organization/UserService.java`
- [Precheck settings](https://github.com/haibinzhang1/enterpriseagent/blob/main/server/src/main/java/com/enterpriseagent/hub/settings/SettingsQueryService.java): `server/src/main/java/com/enterpriseagent/hub/settings/SettingsQueryService.java`
- [Admin web app](https://github.com/haibinzhang1/enterpriseagent/blob/main/web-admin/src/App.tsx): `web-admin/src/App.tsx`

### Other components

- **Desktop user**

## Connections

- Desktop user → Desktop interface: uses
- Desktop interface → Renderer API: requests
- Renderer API → Preload bridge: invokes
- Preload bridge → IPC handlers: dispatches
- IPC handlers → Local lifecycle: handles local actions
- Local lifecycle → Local executor: executes operations
- Local lifecycle → Local database: stores state
- Renderer API → Hub API: calls hub API
- Hub API → Authentication: routes requests
- Authentication → Auth service: delegates
- Auth service → Session service: creates session
- Hub API → Extension catalog: routes requests
- Extension catalog → Catalog service: delegates
- Hub API → Submission workflow: accepts submissions
- Hub API → Review tasks: routes review tasks
- Review tasks → Review decisions: delegates decisions
- Review tasks → Submission workflow: uses idempotency
- Review tasks → Package storage: processes pending outbox
- Hub API → Device management: manages devices
- Hub API → Client event sync: syncs events
- Hub API → Audit queries: serves audit queries
- Hub API → User administration: administers users
- Submission workflow → Precheck settings: reads precheck settings
- Admin web app → Hub API: uses admin API
