"""Tiny Computer Agent - an agentic harness that drives a real computer with a tiny, fully local model. The harness is deliberately boring: it owns the loop, the closed action vocabulary, perception and the safety gates, so the model only ever answers one question - "which item from this short menu, and which verb?" Nothing here needs a network call at run time, and the core imports nothing outside the standard library. from tiny_computer_agent import AgentLoop, GrabScreen, IndexedScreen, OcrDetector from tiny_computer_agent.models import TextPlannerBrain screen = IndexedScreen(GrabScreen(), OcrDetector()) # pixels -> labels brain = TextPlannerBrain() # 0.5B, CPU-friendly loop = AgentLoop(screen=screen, brain=brain) # dry run by default episode = loop.run("save the document") print(episode.render()) """ from tiny_computer_agent.act import ( ActionResult, DryRunExecutor, Executor, InputUnavailable, PyAutoGuiExecutor, resolve_point, ) from tiny_computer_agent.actions import ( ACTION_KINDS, ACTION_MENU, Action, ActionError, parse_action, ) from tiny_computer_agent.brain import ( Brain, BrainError, DecisionMenu, GoalUnreachable, MenuItem, MockBrain, ModelBrain, PlannerBrain, extract_json_object, extract_json_objects, parse_decision, ) from tiny_computer_agent.loop import AgentLoop, Episode, Step from tiny_computer_agent.models import ( DEFAULT_TEXT_MODEL, DEFAULT_VISION_MODEL, MODEL_BRAINS, TextPlannerBrain, VLMBrain, make_model_brain, model_cached, model_dependencies, resolve_device, ) from tiny_computer_agent.observe import ( Element, FakeScreen, GrabScreen, Observation, ScreenSource, ScreenUnavailable, normalise_label, ) from tiny_computer_agent.perception import ( Detector, DetectorUnavailable, IndexedScreen, OcrDetector, detector_available, make_detector, ) from tiny_computer_agent.safety import Policy, PolicyViolation __version__ = "0.2.0" __all__ = [ "ACTION_KINDS", "ACTION_MENU", "Action", "ActionError", "ActionResult", "AgentLoop", "Brain", "BrainError", "DEFAULT_TEXT_MODEL", "DEFAULT_VISION_MODEL", "DecisionMenu", "Detector", "DetectorUnavailable", "DryRunExecutor", "Element", "Episode", "Executor", "FakeScreen", "GoalUnreachable", "GrabScreen", "IndexedScreen", "InputUnavailable", "MODEL_BRAINS", "MenuItem", "MockBrain", "ModelBrain", "Observation", "OcrDetector", "PlannerBrain", "Policy", "PolicyViolation", "PyAutoGuiExecutor", "ScreenSource", "ScreenUnavailable", "Step", "TextPlannerBrain", "VLMBrain", "detector_available", "extract_json_object", "extract_json_objects", "make_detector", "make_model_brain", "model_cached", "model_dependencies", "normalise_label", "parse_action", "parse_decision", "resolve_device", "resolve_point", "__version__", ]