backoffice-agents/
├── Cargo.toml # workspace
├── deny.toml rust-toolchain.toml
├── app/ # THE LOCO APP
│ ├── Cargo.toml
│ ├── src/
│ │ ├── bin/main.rs
│ │ ├── lib.rs
│ │ ├── app.rs # Hooks impl
│ │ ├── settings.rs # typed `settings:` block
│ │ ├── platform.rs # Platform: definitions + adapters + compiled graphs
│ │ ├── definitions/ # YAML structs + loader + validation
│ │ ├── kinds/ # task kinds (Rust behaviour YAML composes)
│ │ ├── engine/ # YAML→graph compiler, SeaORM session storage
│ │ ├── controllers/ # agui.rs agents.rs webhooks.rs documents.rs
│ │ ├── workers/ # ingest.rs drive_workflow.rs
│ │ ├── tasks/ # config_validate.rs schema_export.rs retention.rs
│ │ ├── initializers/ # (optional) extra router layers
│ │ └── models/ # SeaORM entities (+ _entities/ generated)
│ └── tests/
├── migration/ # SeaORM migrations (Loco convention)
│ ├── src/ # one Rust file per migration
│ └── sql/0001_init.sql # schema, indexes, row-level security
├── crates/ # framework-free libraries (unchanged ports)
│ ├── core/ agui/ llm/ documents/ integrations/ telemetry/
├── config/
│ ├── development.yaml production.yaml test.yaml
│ ├── development.local.yaml # git-ignored overrides
│ └── agents/
│ ├── models.yaml # model catalogue + license allow-list
│ ├── rbac.yaml
│ ├── policies.yaml # rate limits, PII, retention, injection guards
│ ├── prompts/*.yaml
│ ├── schemas/*.yaml # extraction schemas (JSON Schema written in YAML)
│ ├── connectors/*.yaml
│ ├── tools/*.yaml
│ ├── workflows/*.yaml
│ └── tenants/*.yaml # per-tenant overrides
├── schemas/ # generated JSON Schemas for editor validation
├── web/ # Next.js + CopilotKit
├── evals/
└── deploy/ # docker-compose.yml, Dockerfiles, otel-collector.yaml