Skip to content

v0.38.0

Latest

Choose a tag to compare

@philipph-askui philipph-askui released this 01 Jul 11:55
e68ed27

v0.38.0

⚠️ Major refactoring release. This version includes a significant refactor of the Agent OS controller layer along with several breaking changes (see below). If you run into problems after upgrading, roll back to a previous version (e.g. pip install "askui==0.37.0") while you work through the migration.

🎉 Overview

v0.38.0 is a feature-packed release centered on three capabilities. A single ComputerAgent can now drive multiple target computers — mixing a local controller with remote gRPC endpoints — and switch between them explicitly or let act() orchestrate across machines. A new secrets system lets agents use sensitive values (passwords, OTPs) without ever exposing them to the model, with placeholder substitution at the OS boundary and defense-in-depth redaction. And PDF documents are now first-class: tools, get(), and file reads can hand PDFs straight to the model for reasoning over text, tables, charts, and layout. This release also refactors the Agent OS controller layer, which changes some public imports.

✨ New Features

  • Multiple target computers — a single ComputerAgent can drive one or more machines via agent_os_target_computers, mixing one LocalComputerTarget (managed controller subprocess) with any number of RemoteComputerTargets reachable over gRPC; the active target can be switched at runtime with agent.tools.os.switch_agent_os_target_computer(...) or scoped with temporary_select(...), and act() gains list/switch/get_current target tools to orchestrate work across machines on its own by @mlikasam-askui in #276
  • Agent secrets — register sensitive values as Secrets that the model only ever sees as <|secret|>NAME<|secret|> placeholders; the real (SecretStr) value is substituted into tool inputs at execution time and any leaked literal is redacted back to its placeholder before reaching the LLM, history, reporter, logs, or cache. Available on all agent types (ComputerAgent, AndroidAgent, WebAgent, WebTestingAgent, MultiDeviceAgent), at agent level or per act() call, and in the deterministic type() method; excluded from telemetry by @mlikasam-askui in #285
  • PDF document support — tools can return a PdfSource to hand a PDF to the model (base64 document block for Anthropic Claude, file content part for OpenAI, binary for AskUI/Google Gemini), and the new LoadPdfTool(base_dir) loads PDFs from disk during act(); ComputerGetFileTool now returns a PdfSource for PDF documents so get() and file reads work over PDFs by @mlikasam-askui in #289

🔧 Improvements

  • Anthropic Claude and OpenAI added to the PDF model-compatibility matrix — PDFs are now passed to the model unchanged (every page as both text and image) with no Markdown conversion by @mlikasam-askui in #289
  • Raised the PDF file-size limit from 20MB to 32MB; larger files raise PdfTooLargeError before any request is sent by @mlikasam-askui in #289
  • New public exports — Secret, SecretVault, LocalComputerTarget, RemoteComputerTarget, PdfSource, Base64PdfSourceParam, and DocumentBlockParam are now importable from the top-level askui package by @mlikasam-askui in #276
  • New documentation and runnable examples for secrets (docs/12_secrets.md, examples/secrets.py), multi-target computers (docs/13_multi_target_computers.md, examples/multi_target_computers.py), and PDF documents (examples/pdf_documents.py) by @mlikasam-askui in #289

⚠️ Breaking Changes

  • The Agent OS controller layer was refactored. AskUiControllerClient and AskUiControllerServer are no longer exported from askui.tools.askui; the module now exposes MultiComputerTargetAgentOS, ComputerTarget, LocalComputerTarget, RemoteComputerTarget, ComputerTargetConnection, and ComputerTargetPool. Code importing AskUiControllerClient must migrate to the new target-based API.
  • When agent_os_target_computers is provided to ComputerAgent, the top-level display argument is ignored — set display on the individual targets instead.
  • PDFs returned from a tool must not exceed 32MB; a larger PDF now raises PdfTooLargeError (previously the limit was 20MB and enforced differently).

Full Changelog: v0.37.0...v0.38.0