{"action":{"additionalProperties":false,"description":"One action the agent takes per step.\n\nThe agent picks ONE action_type per step:\n  query_transactions — pull transaction rows for an account\n  lookup_account     — get full profile of one account\n  flag_account       — mark an account as suspicious\n  submit_report      — final move, name the suspect, ends episode","properties":{"metadata":{"additionalProperties":true,"description":"Additional metadata for the action","title":"Metadata","type":"object"},"action_type":{"description":"One of: query_transactions | lookup_account | flag_account | submit_report","title":"Action Type","type":"string"},"account_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Account ID to query, look up, or flag","title":"Account Id"},"date_from":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Start date filter YYYY-MM-DD","title":"Date From"},"date_to":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"End date filter YYYY-MM-DD","title":"Date To"},"min_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Minimum transaction amount filter","title":"Min Amount"},"max_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Maximum transaction amount filter","title":"Max Amount"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Why this account is being flagged","title":"Reason"},"primary_suspect":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Account ID of the main suspect","title":"Primary Suspect"},"associates":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"List of associate account IDs","title":"Associates"},"case_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"One of: card_scheme | layering_scheme | coordinated_scheme","title":"Case Type"},"evidence_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Agent's written summary of evidence found","title":"Evidence Summary"}},"required":["action_type"],"title":"VeritasAction","type":"object"},"observation":{"additionalProperties":false,"description":"What the agent receives back after every reset() and step().\n\nImportant: done, reward, metadata are already defined in the\nbase Observation class — do NOT redefine them here.\nWe only add Veritas-specific fields.","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"},"case_id":{"default":"","description":"Unique ID for this investigation case","title":"Case Id","type":"string"},"task_id":{"default":"","description":"Which task is active this episode","title":"Task Id","type":"string"},"difficulty":{"default":"","description":"easy | medium | hard","title":"Difficulty","type":"string"},"task_description":{"default":"","description":"Full text of what the agent must accomplish","title":"Task Description","type":"string"},"initial_alerts":{"description":"System alerts that opened this case, given at reset()","items":{"additionalProperties":true,"type":"object"},"title":"Initial Alerts","type":"array"},"accounts_in_scope":{"description":"Account IDs the agent is allowed to investigate","items":{"type":"string"},"title":"Accounts In Scope","type":"array"},"action_result":{"anyOf":[{},{"type":"null"}],"default":null,"description":"Data returned by the last action","title":"Action Result"},"action_error":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Error message if the last action was invalid","title":"Action Error"},"flagged_accounts":{"description":"Accounts the agent has flagged so far","items":{"type":"string"},"title":"Flagged Accounts","type":"array"},"partial_score":{"default":0.0,"description":"Grader score 0.0-1.0, updated on submit_report","title":"Partial Score","type":"number"},"feedback":{"default":"","description":"Human-readable hint about current progress","title":"Feedback","type":"string"},"steps_taken":{"default":0,"description":"Steps used so far this episode","title":"Steps Taken","type":"integer"},"max_steps":{"default":10,"description":"Maximum steps allowed this episode","title":"Max Steps","type":"integer"}},"title":"VeritasObservation","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"}}