-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodels.py
More file actions
31 lines (25 loc) · 1.66 KB
/
Copy pathmodels.py
File metadata and controls
31 lines (25 loc) · 1.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
"""
Data models for CHROME — Cognitive Human Resource Optimization & Market Engine.
Action and Observation Pydantic contracts for the wire protocol.
In practice, MCP tool calls are used instead of raw HRAction,
but these provide type documentation for the API.
"""
from typing import Dict, List, Optional
from pydantic import Field
from openenv.core.env_server.types import Action, Observation
class HRAction(Action):
"""Action the agent can take in the HR environment."""
action_type: str = Field(..., description="One of: hire_candidate, get_team_summary, get_market_ledger")
candidate_id: Optional[int] = Field(default=None, description="ID of the candidate to act on")
team_name: Optional[str] = Field(default=None, description="Target team name")
offered_salary: Optional[float] = Field(default=None, description="Offered salary in Lakhs")
class HRObservation(Observation):
"""Observation returned after each action."""
message: str = Field(default="", description="Human-readable feedback")
available_candidates: List[Dict] = Field(default_factory=list, description="Current candidate queue")
team_status: Dict[str, Dict] = Field(default_factory=dict, description="Team hiring status")
market_ledger_snapshot: Dict[str, float] = Field(default_factory=dict, description="Current salary ledger")
current_revenue_projection: float = Field(default=0.0, description="Accumulated revenue")
step_count: int = Field(default=0, description="Actions taken so far")
budget_remaining: float = Field(default=0.0, description="Remaining budget in Lakhs")
max_possible_revenue: float = Field(default=0.0, description="Oracle-computed max revenue")