{"action":{"additionalProperties":false,"description":"A single tool call from the agent.\n\nThe agent selects a module and provides a JSON payload.\nThe environment validates the payload against the current (possibly drifted)\nschema and returns the result.\n\nSpecial pre_auth actions:\n    Set module = \"<module>:pre_auth\" to execute the pre-authorisation step\n    required by FLOW_RESTRUCTURE schemas.","properties":{"metadata":{"additionalProperties":true,"description":"Additional metadata for the action","title":"Metadata","type":"object"},"module":{"description":"Target task module. One of: 'airline_rebook', 'bank_dispute', 'insurance_claim', or '<module>:pre_auth' for pre-auth step.","title":"Module","type":"string"},"payload":{"additionalProperties":true,"description":"Key-value fields for the API call. Must match current schema.","title":"Payload","type":"object"}},"required":["module"],"title":"DriftDeskAction","type":"object"},"observation":{"additionalProperties":false,"description":"Full observation returned to the agent after reset or step.\n\nFields the agent uses to decide its next action:\n- policy_doc: natural-language description of current policies/schema hints.\n- tasks: list of task descriptors (module, description, priority, status).\n- last_result: structured result of the last action (success or error body).\n- step_count: how many steps have been taken this episode.\n- episode_id: unique episode identifier.","properties":{"done":{"default":false,"description":"Whether the episode has terminated","title":"Done","type":"boolean"},"reward":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"number"},{"type":"null"}],"default":null,"description":"Reward signal from the last action","title":"Reward"},"metadata":{"additionalProperties":true,"description":"Additional metadata for the observation","title":"Metadata","type":"object"},"policy_doc":{"default":"","description":"Natural-language policy document injected at episode start.","title":"Policy Doc","type":"string"},"tasks":{"description":"List of task descriptors: {module, description, priority, status, completed}. Priority 0 is highest.","items":{"additionalProperties":true,"type":"object"},"title":"Tasks","type":"array"},"last_result":{"additionalProperties":true,"description":"Result of the last env.step() call. On error contains 'code', 'missing_fields', 'changed_fields', 'hint' etc.","title":"Last Result","type":"object"},"step_count":{"default":0,"description":"Steps taken so far in this episode.","title":"Step Count","type":"integer"},"episode_id":{"default":"","description":"Unique episode identifier.","title":"Episode Id","type":"string"}},"title":"DriftDeskObservation","type":"object"},"state":{"additionalProperties":true,"description":"Base class for environment state.\n\nRepresents internal environment state, separate from observations.","properties":{"episode_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Unique identifier for the current episode","title":"Episode Id"},"step_count":{"default":0,"description":"Number of steps taken in the current episode","minimum":0,"title":"Step Count","type":"integer"}},"title":"State","type":"object"}}