Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: fix2015/python-sdk
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: askui/python-sdk
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 17 commits
  • 16 files changed
  • 4 contributors

Commits on Jul 30, 2026

  1. Configuration menu
    Copy the full SHA
    cb40764 View commit details
    Browse the repository at this point in the history

Commits on Jul 31, 2026

  1. fix(models): correct thinking config for gateway model IDs and new mo…

    …del generations
    
    - thinking.py now normalizes model IDs to their claude- core, so Bedrock
      (anthropic.claude-..., us.anthropic....-v1:0), LiteLLM
      (anthropic/claude-...), and Vertex (claude-...@Date) IDs classify like
      bare IDs instead of falling into the budget_tokens path (400 on >=4.7
      generation models).
    - Inverted classification: adaptive thinking is the default; only the
      frozen legacy budget_tokens families (2.x/3.x, Haiku 4.5, Sonnet 4/4.5,
      Opus 4/4.1/4.5) keep the integer budget, so unknown future Claude
      models work by default.
    - New accepts_sampling_params() / supports_disabled_thinking() helpers;
      AndroidAgent act defaults now use make_non_thinking_settings(), which
      drops temperature on models that reject sampling params (Opus 4.7+,
      Sonnet 5, Fable 5) and omits thinking "disabled" on always-on models
      (Fable 5 / Mythos 5).
    - EffortLevel gains "xhigh" (supported from the Opus 4.7 generation on).
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
    philipph-askui and claude committed Jul 31, 2026
    Configuration menu
    Copy the full SHA
    7a1ae43 View commit details
    Browse the repository at this point in the history
  2. Merge pull request askui#302 from askui/fix/thinking-model-id-matching

    fix(models): thinking config for gateway model IDs + new model generations
    philipph-askui authored Jul 31, 2026
    Configuration menu
    Copy the full SHA
    d422162 View commit details
    Browse the repository at this point in the history
  3. fix(openai): report cached tokens disjoint from input_tokens

    OpenAI-style usage counts prompt_tokens_details.cached_tokens INSIDE
    prompt_tokens, while UsageParam consumers (conversation statistics
    callback, HTML reporting) treat the fields as disjoint, Anthropic-style —
    so cached tokens were counted and billed twice for OpenAI-route models
    (observed ~5x cost overstatement on cache-heavy Gemini agentic runs).
    Subtract the cached subset at the response boundary so UsageParam means
    the same thing on every route. Guarded so absent/malformed details pass
    through unchanged.
    mlikasam-askui committed Jul 31, 2026
    Configuration menu
    Copy the full SHA
    630c000 View commit details
    Browse the repository at this point in the history
  4. Merge pull request askui#303 from askui/fix/openai-usage-cached-tokens

    fix(openai): report cached tokens disjoint from input_tokens
    mlikasam-askui authored Jul 31, 2026
    Configuration menu
    Copy the full SHA
    c7e094b View commit details
    Browse the repository at this point in the history

Commits on Aug 7, 2026

  1. fix: reject zero-size screen captures before they reach the reporter

    When the AskUI controller returns a 0×0 bitmap (e.g. because the
    display is minimised or unavailable), PIL cannot encode the resulting
    image to PNG. This caused the SimpleHtmlReporter to crash and be
    permanently disabled by ReporterErrorHandler, losing the entire HTML
    report for the run.
    
    Two-layer fix:
    - askui_controller.py: `_check_bitmap_dimensions()` raises
      `AskUiControllerError` immediately after a zero-size bitmap is
      received, before any PIL image is constructed or passed downstream.
    - reporting.py: `normalize_to_pil_images()` now filters out any
      zero-size PIL images as defence-in-depth, so no reporter can crash
      on an empty image regardless of its origin.
    
    Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
    philipph-askui and claude committed Aug 7, 2026
    Configuration menu
    Copy the full SHA
    3279410 View commit details
    Browse the repository at this point in the history
  2. fix: warn when a zero-size image is dropped by normalize_to_pil_images

    Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
    philipph-askui and claude committed Aug 7, 2026
    Configuration menu
    Copy the full SHA
    f5030b9 View commit details
    Browse the repository at this point in the history

Commits on Aug 10, 2026

  1. Merge pull request askui#304 from askui/fix/empty-screenshot-reporter

    fix: reject zero-size screen captures before they reach the reporter
    philipph-askui authored Aug 10, 2026
    Configuration menu
    Copy the full SHA
    9fc6cfa View commit details
    Browse the repository at this point in the history

Commits on Aug 12, 2026

  1. bump version to 0.43.0

    mlikasam-askui committed Aug 12, 2026
    Configuration menu
    Copy the full SHA
    dc333cf View commit details
    Browse the repository at this point in the history
  2. Merge pull request askui#306 from askui/bump-version-to-0.43.0

    bump version to 0.43.0
    mlikasam-askui authored Aug 12, 2026
    Configuration menu
    Copy the full SHA
    f89313f View commit details
    Browse the repository at this point in the history
  3. fix: split Desktop Agent OS errors into recoverable vs unfixable

    Reading a remote file or directory that does not exist raised a
    DesktopAgentOsError that inherited from BaseException, so the tool-calling
    loop's `except Exception` handler never caught it. The error propagated all
    the way up and crashed the run instead of being surfaced to the agent as a
    tool error result, as recoverable tool failures are everywhere else.
    
    Introduce two error types that map onto the existing fatal/recoverable
    handling in the tool-calling loop:
    
    - DesktopAgentOsException (recoverable): a plain Exception for failures the
      agent can work around (path not found, undecodable file contents). The
      loop's generic `except Exception` catches it and returns it to the agent.
    - DesktopAgentOsError (unfixable): now inherits from AutomationError for
      protocol violations (unexpected response type, missing error and response).
      The loop's existing `except (AgentError, AutomationError): raise` re-raises
      it, terminating the run cleanly instead of crashing on an uncaught
      BaseException.
    
    Controller operation failures (res.error) and undecodable payloads now raise
    the recoverable type; contract violations keep the fatal type. No changes to
    the generic tool-calling loop are required.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    philipph-askui and claude committed Aug 12, 2026
    Configuration menu
    Copy the full SHA
    163af42 View commit details
    Browse the repository at this point in the history
  4. fix(models): request visible thinking summaries on adaptive-thinking …

    …models
    
    Models of the Sonnet 5 generation onward default the thinking `display`
    setting to "omitted": the API returns thinking blocks whose text is empty
    while the full thinking tokens are still billed. Any consumer relying on
    make_thinking_settings() therefore silently loses all visible reasoning in
    reports and logs on the newest models.
    
    Set display: "summarized" explicitly in the adaptive branch. Billing is
    identical for both display modes, so this only restores visibility.
    Verified end-to-end against Vertex claude-sonnet-5 (empty before, 3k chars
    of summarized thinking after).
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
    philipph-askui and claude committed Aug 12, 2026
    Configuration menu
    Copy the full SHA
    d4d63c4 View commit details
    Browse the repository at this point in the history
  5. docs: clarify get_file_names_tool returns files only, not folders

    Make the tool description explicit that the tool lists only regular files
    and never includes folders/subdirectories, so the agent does not try to use
    it to discover or navigate directories.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    philipph-askui and claude committed Aug 12, 2026
    Configuration menu
    Copy the full SHA
    47ba795 View commit details
    Browse the repository at this point in the history
  6. Merge pull request askui#309 from askui/fix/get-file-names-tool-descr…

    …iption
    
    docs: clarify get_file_names_tool returns files only, not folders
    philipph-askui authored Aug 12, 2026
    Configuration menu
    Copy the full SHA
    a746c16 View commit details
    Browse the repository at this point in the history

Commits on Aug 13, 2026

  1. Merge pull request askui#308 from askui/fix/thinking-display-summarized

    fix(models): request visible thinking summaries on adaptive-thinking models
    philipph-askui authored Aug 13, 2026
    Configuration menu
    Copy the full SHA
    988991d View commit details
    Browse the repository at this point in the history
  2. Merge pull request askui#307 from askui/fix/desktop-agent-os-recovera…

    …ble-exception
    
    fix: split Desktop Agent OS errors into recoverable vs unfixable
    philipph-askui authored Aug 13, 2026
    Configuration menu
    Copy the full SHA
    69b4cca View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    f0b99ba View commit details
    Browse the repository at this point in the history
Loading