165 lines
4.0 KiB
Markdown
165 lines
4.0 KiB
Markdown
# Horus Workspace Structure
|
|
|
|
The Horus workspace consolidates all Hero ecosystem components into a single, well-organized monorepo.
|
|
|
|
## Workspace Members
|
|
|
|
### Binaries (`bin/`)
|
|
|
|
#### `bin/supervisor/`
|
|
- **Package**: `hero-supervisor`
|
|
- **Description**: Main supervisor for managing actor runners
|
|
- **Binaries**: `supervisor`
|
|
- **Library**: `hero_supervisor`
|
|
|
|
#### `bin/osiris/`
|
|
- **Package**: `osiris-server`
|
|
- **Description**: Osiris HTTP server for object storage
|
|
- **Binaries**: `osiris`
|
|
|
|
#### `bin/runners/sal/`
|
|
- **Package**: `runner-sal`
|
|
- **Description**: System Abstraction Layer (SAL) runner
|
|
- **Binaries**: `runner_sal`
|
|
|
|
#### `bin/runners/osiris/`
|
|
- **Package**: `runner-osiris`
|
|
- **Description**: Osiris-backed runner with database support
|
|
- **Binaries**: `runner_osiris`
|
|
|
|
### Libraries (`lib/`)
|
|
|
|
#### Models (`lib/models/`)
|
|
|
|
##### `lib/models/job/`
|
|
- **Package**: `hero-job`
|
|
- **Description**: Job model types and builders
|
|
- **Library**: `hero_job`
|
|
|
|
#### Clients (`lib/clients/`)
|
|
|
|
##### `lib/clients/job/`
|
|
- **Package**: `hero-job-client`
|
|
- **Description**: Redis-based job client
|
|
- **Library**: `hero_job_client`
|
|
|
|
##### `lib/clients/supervisor/`
|
|
- **Package**: `hero-supervisor-openrpc-client`
|
|
- **Description**: OpenRPC client for supervisor (native + WASM)
|
|
- **Library**: `hero_supervisor_openrpc_client`
|
|
|
|
##### `lib/clients/osiris/`
|
|
- **Package**: `osiris-client`
|
|
- **Description**: Client library for Osiris
|
|
- **Library**: `osiris_client`
|
|
|
|
#### Core Libraries
|
|
|
|
##### `lib/runner/`
|
|
- **Package**: `hero-runner`
|
|
- **Description**: Core runner library for executing jobs
|
|
- **Library**: `hero_runner`
|
|
|
|
##### `lib/osiris/core/`
|
|
- **Package**: `osiris-core`
|
|
- **Description**: Osiris core - object storage and indexing
|
|
- **Library**: `osiris`
|
|
|
|
##### `lib/osiris/derive/`
|
|
- **Package**: `osiris-derive`
|
|
- **Description**: Derive macros for Osiris
|
|
- **Type**: Procedural macro crate
|
|
|
|
## Dependency Graph
|
|
|
|
```
|
|
bin/supervisor
|
|
├── lib/models/job
|
|
├── lib/clients/job
|
|
└── (jsonrpsee, redis, tokio, etc.)
|
|
|
|
bin/osiris
|
|
└── lib/osiris/core
|
|
└── lib/osiris/derive
|
|
|
|
bin/runners/sal
|
|
├── lib/runner
|
|
│ ├── lib/models/job
|
|
│ └── lib/clients/job
|
|
└── (SAL modules from herolib_rust)
|
|
|
|
bin/runners/osiris
|
|
├── lib/runner
|
|
│ ├── lib/models/job
|
|
│ └── lib/clients/job
|
|
└── lib/osiris/core
|
|
|
|
lib/clients/supervisor
|
|
├── lib/models/job
|
|
└── (jsonrpsee, WASM support)
|
|
|
|
lib/clients/osiris
|
|
├── lib/models/job
|
|
└── lib/clients/supervisor
|
|
|
|
lib/clients/job
|
|
└── lib/models/job
|
|
```
|
|
|
|
## Build Commands
|
|
|
|
```bash
|
|
# Check entire workspace
|
|
cargo check --workspace
|
|
|
|
# Build entire workspace
|
|
cargo build --workspace
|
|
|
|
# Build specific package
|
|
cargo build -p hero-supervisor
|
|
cargo build -p osiris-core
|
|
cargo build -p runner-sal
|
|
|
|
# Run binaries
|
|
cargo run -p hero-supervisor --bin supervisor
|
|
cargo run -p osiris-server --bin osiris
|
|
cargo run -p runner-sal --bin runner_sal
|
|
cargo run -p runner-osiris --bin runner_osiris
|
|
```
|
|
|
|
## Migration Notes
|
|
|
|
### From External Repos
|
|
|
|
The following components were migrated into this workspace:
|
|
|
|
1. **Job** (`/herocode/job/rust`) → `lib/models/job` + `lib/clients/job`
|
|
2. **Runner** (`/herocode/runner/rust`) → `lib/runner` + `bin/runners/*`
|
|
3. **Osiris** (`/herocode/osiris`) → `lib/osiris/*` + `bin/osiris` + `lib/clients/osiris`
|
|
4. **Supervisor** (already in workspace) → `bin/supervisor` + `lib/clients/supervisor`
|
|
|
|
### Path Dependencies
|
|
|
|
All internal dependencies now use path-based references:
|
|
- `hero-job = { path = "../../lib/models/job" }`
|
|
- `osiris-core = { path = "../../lib/osiris/core" }`
|
|
- etc.
|
|
|
|
External dependencies (SAL modules, heromodels, etc.) remain as git dependencies.
|
|
|
|
## Workspace Configuration
|
|
|
|
Shared dependencies are defined in the root `Cargo.toml` under `[workspace.dependencies]`:
|
|
- tokio, async-trait
|
|
- serde, serde_json
|
|
- redis, uuid, chrono
|
|
- jsonrpsee, axum, tower
|
|
- And more...
|
|
|
|
Individual crates reference these with `.workspace = true`:
|
|
```toml
|
|
[dependencies]
|
|
tokio.workspace = true
|
|
serde.workspace = true
|
|
```
|