Skip to content

v0.6.0 — probe-research on PyPI, and the client can reach the API again

Choose a tag to compare

@richardwei6 richardwei6 released this 16 Jul 21:20
da705ce

First release published to PyPI — and the first that can actually reach most of the API.

Install

uv tool install --force probe-research

Upgrading from a build installed before 2026-07-16? Read this first. Older installs shipped under a different distribution name and own the same probe executable. uv keeps both tools registered, so a plain install leaves the old build still answering probe — silently, while uv tool list shows the new version sitting right there. Clear it out first (the order matters — doing it afterwards deletes the shared binary out from under the new install):

uv tool uninstall probe-agent 2>/dev/null || true   # no-op if you never had it
uv tool install --force probe-research
probe --version                                     # expect 0.6.0

The distribution name changed

The package is probe-research on PyPI. It previously declared itself probe-agent and was only ever installed from a git URL — but probe-agent on PyPI is an unrelated project by another author, so pip install probe-agent fetches a stranger's package. That name was never ours; this release claims one that is.

import probe and the probe CLI binary are unchanged. Only the distribution name moved.

Installs are also no longer pinned to a moving branch — @main meant two people running the same command got different builds and neither could say which, which is a poor look for a tool whose pitch is reproducibility.

New — the client can reach the API

42 → 60 of 103 backend operations are now reachable (the rest are deliberately not client surface, or tracked as pending). Previously the SDK/CLI had drifted: codegen tracked the backend while the hand-written client stayed blind, and nothing failed to signal it.

  • probe token list | create | revoke — minting goes through the browser device flow, because a token that could mint more tokens would defeat the point.
  • probe group create | list | get | set, and probe run start --group — closes a dead end where a run could accept a group id no client could obtain.
  • probe experiment archive | restore | edges
  • probe run delete | restore | gc | series | metrics
  • probe span list | get
  • probe artifact delete | gc-uploads

Fixed

  • Every CLI usage error printed a traceback instead of returning an exit code. typer vendored click into typer._click, so the except click.ClickException handler silently stopped matching anything typer raises — an unpinned dependency bump was enough, with no test to catch it.
  • research_trace_file called an endpoint that never existed, 404ing into a fallback on every call. It now reports its missing capability honestly without the round trip.

Under the hood

A parity test now diffs the OpenAPI schema against the client's real call sites (resolved from the AST, not grepped) and fails when a backend route has no way to be called. Wired into make regen and CI — which this repo did not have before, and which is precisely why the drift went unnoticed.