HAIP hosts orchestration for its own agents. There is no generic pipeline engine.
| Layer | Role |
|---|---|
| 12 specialists | Deterministic / calibrated agents (demand_forecast, pricing, overbooking, channel_mix, group_pickup, night_audit, housekeeping, cancellation, guest_comms, review_response, ar_collections, deposit_risk) |
RManager (revenue_manager) |
In-product revenue orchestrator: runs demand → levers → one strategy |
| OTAIP | External multi-agent orchestration (air + lodging). Talks to HAIP only via Connect API (/api/v1/connect/*). Option B: PMS stays standalone |
demand_forecast → (pricing | overbooking | channel_mix | group_pickup) → revenue_manager
Source of truth in code: apps/api/src/modules/agent/agent-graph.ts.
Ops and guest/commercial agents run on their own schedules or events — they are not RManager levers.
- HAIP schedules and orchestrates HAIP agents (RManager + external cron + event listeners).
- OTAIP orchestrates OTAIP agents; lodging traffic enters HAIP through Connect credentials.
- HAIP does not import OTAIP orchestrator types or embed an OTAIP runtime.
runScheduleCron defaults live on each agent’s getDefaultConfig(). Revenue levers intentionally have no independent cron so they do not double-run against RManager. Hosted deployments fire agents with scripts/cron/agent-runs.sh — see docs/operations/cron.md.
GET /api/v1/agents/:propertyId/graph— nodes + edges + statusGET /api/v1/agents/:propertyId/orchestration-performance— per-agent metrics + RManager summaryPOST /api/v1/agents/:propertyId/:agentType/run?triggeredBy=schedule|manual— run (default manual)