Skip to content

Release v0.13.0 - #48

Merged
lchoquel merged 6 commits into
mainfrom
release/v0.13.0
Sep 27, 2026
Merged

lchoquel merged 6 commits into
mainfrom
release/v0.13.0

Conversation

@lchoquel

@lchoquel lchoquel commented Sep 27, 2026 •

Copy link
Copy Markdown
Member

Release v0.13.0

Bumps version from 0.12.0 to 0.13.0. Promotes dev → main.

Changelog

Added

  • A failed run's error report on RunFailedError and RunResultFailed: RunFailedError.error and RunResultFailed.error carry the run's stored error report typed as RunErrorReport, so wait_for_result, start_and_wait and download_artifacts now raise with the reason the runner recorded, not only the status. The message of the error is the platform's detail, which names the status and then the report's message. None means the run ended with no report, such as a cancelled run. See docs/run-results.md.
  • ApiResponseError carries the problem document's members: request_id (read from the body, or from the X-Request-ID header when the body has none), type_uri (the problem's type), title, error_domain, error_category, retryable, user_action, errors (the platform's field-level list, typed as FieldError) and problem, the decoded document whole, for any member the SDK does not name. Branch on type_uri, and on error_domain where a runner-rendered problem carries it, as the README now says; code and error_type remain each surface's native code.

Changed

  • RunErrorReport carries every field of the runner's report and moves to pipelex_sdk.error_models (Breaking): import it from pipelex_sdk.error_models instead of pipelex_sdk.product_models. Beside message and error_type it now declares title, type_uri, error_domain, error_category, retryable, user_action, model, provider, provider_metadata, caller_facing_message, validation_errors and migration, every one optional, the model open to fields the runner adds, and each field read leniently — a value that does not fit its type reads as None rather than failing the status read, the run list or the results read that carries the report — so PipelineRun.error in the run lists reads the whole report too.
  • RunRead.error is the typed report, no longer a raw dict (Breaking): error is now declared on RunPublic, so the status read's report is a RunErrorReport rather than the dict that rode model_extra; read run.error.message where code read run.error["message"] or run.model_extra["error"].
  • A failed run's status comes from the results read's run_status member (Breaking): get_run_result no longer parses the status out of the 409's detail sentence; it reads the problem document's run_status member, and a 409 without a status this SDK knows reads as FAILED.
  • Requires mthds 0.16.0 (Breaking): the exact pin moves from 0.15.0 to the version pipelex pins exactly, so pipelex-sdk and pipelex can be installed together again. Nothing in this client's own surface changes: PipelexAPIClient keeps building its User-Agent with pipelex_sdk.user_agent and its own AppInfo, and does not yet use the builder that mthds 0.16.0 adds to MthdsAPIClient.

Removed

  • The Pipelex Gateway inference key is gone from the client (Breaking): create_gateway_api_key and get_gateway_api_key, with the GatewayApiKey and GatewayApiKeyStatus models, are removed — the POST and GET /v1/gateway-api-key routes behind them no longer exist on the hosted API. A caller brings its own provider keys, or runs against the hosted API with a Pipelex API key (list_pipelex_api_keys and friends, which are untouched). This has nothing to do with the hosted HTTP gateway's synchronous-execute ceiling, which is unchanged.

Closes L-260927-0a410e

🤖 Generated with Claude Code

lchoquel and others added 6 commits September 24, 2026 13:35
…o docs/workspace (#46)

The workspace release play moved from the meta-repo's docs/ root to
docs/workspace/, so the /release skill's link to it no longer resolved.
This rewrites the displayed path and the relative link in
.claude/skills/release/SKILL.md to docs/workspace/releasing.md; the play
itself is unchanged.

Closes L-260914-d5ba1e

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Fixes the `/release` skill's link to the workspace release play, which
moved from the meta-repo's `docs/` root to `docs/workspace/`. Updates
the displayed path and relative link in
`.claude/skills/release/SKILL.md` to `docs/workspace/releasing.md`; the
play itself is unchanged. Closes L-260914-d5ba1e.

<sup>Written for commit b743f23.
Summary will update on new commits.</sup>

<a
href="https://cubic.dev/pr/Pipelex/pipelex-sdk-python/pull/46?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>

<!-- End of auto-generated description by cubic. -->

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
The Python SDK no longer exposes the Pipelex Gateway API key: the two
client methods, their models, their tests and their docs entries are
gone. The routes behind them are being deleted from the hosted plane,
and a user now brings their own provider keys or uses a Pipelex API key
against the hosted API.

The hosted HTTP gateway timeout wording is a different thing and is
untouched.

Closes L-260918-4f86fd

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
A failed run's reason now reaches a caller of pipelex-sdk.
RunErrorReport (moved to pipelex_sdk.error_models) types every field of
the runner's stored report, read leniently so a report written by
another runner version never fails the read carrying it, and it is the
one type on RunRead.error, PipelineRun.error, RunResultFailed.error and
the new RunFailedError.error; the status of a failed run comes from the
results read's run_status member instead of a regular expression over
the detail sentence. ApiResponseError now carries the problem document's
request id (body or X-Request-ID header), type_uri, title, error_domain,
error_category, retryable, user_action, errors[] and the decoded
document whole, and the README points consumers at type_uri and
error_domain as the branch fields.

Closes L-260925-f16153

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
A failed run's reason now reaches a caller of pipelex-sdk. The runner's
stored error report is carried whole and typed as `RunErrorReport`
(moved to `pipelex_sdk.error_models`) on `RunRead.error`,
`PipelineRun.error`, `RunResultFailed.error` and the new
`RunFailedError.error`, read leniently so a report written by another
runner version never fails the read carrying it. `ApiResponseError` now
carries the problem document's `request_id`, `type_uri`, `title`,
`error_domain`, `error_category`, `retryable`, `user_action`, `errors[]`
and the decoded document whole, and is raised by the product routes
only.

**Breaking changes**
- Import `RunErrorReport` from `pipelex_sdk.error_models`;
`pipelex_sdk.product_models` no longer exports it.
- `RunRead.error` is the typed report, no longer the raw dict on
`model_extra`.
- A failed run's status comes from the results read's `run_status`
member; a `409` without a known one reads as `FAILED` (was: parsed from
the `detail` sentence).

**Error branching**
- Branch on `type_uri` and, on runner-rendered problems, `error_domain`;
`code` and `error_type` remain each surface's native, finer codes.

<sup>Written for commit ffcb5c6.
Summary will update on new commits.</sup>

<a
href="https://cubic.dev/pr/Pipelex/pipelex-sdk-python/pull/47?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>

<!-- End of auto-generated description by cubic. -->

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The exact mthds pin moves from 0.15.0 to 0.16.0, the version pipelex
pins exactly, so pipelex-sdk and pipelex can be installed together
again. mthds 0.16.0 adds its own User-Agent builder to MthdsAPIClient;
this SDK keeps its own builder and AppInfo for now, so one narrow type
ignore covers the app_info attribute the base now declares, and the docs
say the base's seam is not adopted yet.

Closes L-260924-ce6e2d

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Bumps the exact `mthds` pin from 0.15.0 to 0.16.0, the version `pipelex`
pins, so `pipelex-sdk` and `pipelex` can be installed together again.
`mthds` 0.16.0 adds a User-Agent builder to `MthdsAPIClient`, but
`PipelexAPIClient` keeps its own builder and `AppInfo` for now; one
narrow type ignore covers the base's new `app_info` attribute, and the
docs note the seam is not adopted yet.

<sup>Written for commit 6b856f6.
Summary will update on new commits.</sup>

<a
href="https://cubic.dev/pr/Pipelex/pipelex-sdk-python/pull/49?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>

<!-- End of auto-generated description by cubic. -->

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Brings the mthds==0.16.0 pin into the release, so pipelex-sdk 0.13.0 can be
installed beside pipelex.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@lchoquel
lchoquel merged commit bdda287 into main Sep 27, 2026
20 checks passed
@lchoquel
lchoquel deleted the release/v0.13.0 branch September 27, 2026 10:38
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 27, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants