Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
69568f1
Move the ruff pin to 0.16.2 and take the lint fallout
lchoquel Aug 21, 2026
45f00d2
Take the ruff pin to 0.16.4, the version the extension now bundles
lchoquel Aug 21, 2026
bc17c07
bump mthds to 0.8.2
lchoquel Aug 21, 2026
56d1a5f
Merge pull request #12 from Pipelex/chore/Ruff-0.16.2
lchoquel Aug 21, 2026
05c309b
Record the too-many-statements-in-try-clause decision before it is ne…
lchoquel Aug 21, 2026
0910529
Merge pull request #13 from Pipelex/chore/Ruff-Policy-Ignores
lchoquel Aug 21, 2026
cdd8793
Type method_id as a run option and fix delete_method's contract
lchoquel Aug 24, 2026
321e39a
updates design
lchoquel Aug 25, 2026
78b60e0
Add the implementation tracker for the wip/updates.md design
lchoquel Aug 25, 2026
434b2e3
Type the pipelex-api 0.17/0.18 validate contract and add the views op…
lchoquel Aug 25, 2026
2a8c589
Correct the TokensUsageRecord attribution and drop unopenable citations
lchoquel Aug 25, 2026
5e01c1b
Follow the platform's paged method and run lists and stop requiring n…
lchoquel Aug 25, 2026
cb70fbe
Reject a non-string method_id at the client boundary
lchoquel Aug 25, 2026
a857d02
Make the architecture parity section tell the truth end to end
lchoquel Aug 25, 2026
e57e2d6
Record the PR and the landed SHAs in the implementation tracker
lchoquel Aug 25, 2026
fa8d62a
Bound iterate_runs against a cursor that cycles over non-empty pages
lchoquel Aug 25, 2026
3ac68ac
Finish the Phase 2 citation sweep and correct two stale doc counts
lchoquel Aug 25, 2026
301d96e
Record why the tracker keeps its workspace inbox reference
lchoquel Aug 25, 2026
cb391c9
Fix a broken README import, two toothless tests, and two stale counts
lchoquel Aug 25, 2026
1a967c0
Stop documenting a build_inputs(method_id=…) that does not exist
lchoquel Aug 25, 2026
31f3994
Merge pull request #14 from Pipelex/feature/Typed-method-id-run-option
lchoquel Aug 25, 2026
e9c09e3
Release v0.6.0
lchoquel Aug 25, 2026
eaf4132
Say what is finished, so three docs stop reading as stale
lchoquel Aug 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,34 @@
# Changelog

## [v0.6.0] - 2026-08-25

### Added

- **Paginated catalog surface**: Introduced `iterate_methods` and `iterate_runs` async generators that follow pagination cursors to fetch entire catalogs without silent truncation, backed by new product models (`MethodPage`, `MethodSummary`, `RunPage`, `RunDetail`, `RunErrorReport`, `MethodFile`). A runaway page backstop raises the new `PagingNotTerminatingError` instead of looping forever on a cursor that cycles across non-empty pages.
- **Run details**: Added `get_run_detail(run_id)` to fetch a single run's execution details, including `mthds_contents` and `inputs`, which are excluded from list views for performance.
- **Validation views & typed reports**: Added a `views` parameter to `validate` and `validate_files` for opt-in structured views (e.g. `VALIDATION_VIEW_INPUT_FORM`), and extended `PipelexValidationReport` with typed `warnings`, `liftable_pipes`, and `input_form` fields.
- **Structured repair proposals**: Added `SuggestedFix` and a fix-operation vocabulary (`FixOpKind`, `FixSafety`, etc.) to `ValidationErrorItem`, along with a new `missing_pipe_code` field.
- **Method file parsers**: Added `parse_method_files` and `serialize_method_files` to convert custom Python source files to and from the platform's at-rest catalog string format.
- **Typed `method_id`**: `execute`, `start`, and `start_and_wait` now accept `method_id` as a first-class, typed keyword parameter.

### Changed

- `list_methods` and `list_runs` now return page envelopes (`MethodPage` and `RunPage`) instead of bare arrays, with `q`, `limit`, and `cursor` query parameters forwarded based on presence rather than truthiness. (Breaking)
- `PipelineRun.method_id` and `pipe_code` are now nullable to accurately reflect platform behavior for ad-hoc runs and dynamic pipes. (Breaking)
- `MethodData.python` is now a typed `list[MethodFile]` instead of a raw string, converted automatically at the client boundary. (Breaking)
- `delete_method` now returns a `MethodDeletionAccepted` object instead of `None`, reflecting that deletion is an asynchronous cascade rather than an immediate synchronous action. (Breaking)
- The `extra` parameter on run methods now rejects `method_id`; it must be passed via the dedicated named parameter, and passing a non-string `method_id` raises a `PipelineRequestError` at the client boundary rather than delegating the failure to the server. (Breaking)
- Bumped the `mthds` dependency floor from `>=0.8.1` to `>=0.8.2`.
- **Linting & tooling**: Bumped the `ruff` dev dependency to `0.16.4` to match the version the VS Code extension bundles, converted `pyproject.toml` selector lists to rule names instead of codes, and explicitly ignored `too-many-statements-in-try-clause`.

### Fixed

- **Pagination crash**: Fixed a critical bug where `list_methods` and `list_runs` crashed against the deployed platform after the API shifted to `{items, next_cursor}` envelope responses; tests were updated to mock the correct paginated shape.
- **Docs – parity claims**: Updated `docs/architecture.md` to honestly reflect the parity gaps with the TypeScript `@pipelex/sdk` (e.g. deferring `lint`, `format`, `codegen`) instead of claiming a surface-complete client.
- **Docs – import paths**: Fixed a broken import path in the `README.md` quickstart (`PipelexValidationResult` is owned by this package, not `mthds`).
- **Docs – brand attribution**: Corrected docstrings and architecture docs to attribute `TokensUsageRecord` as a Pipelex runtime extension rather than an MTHDS protocol specification.
- **Docs – dead links**: Replaced unopenable internal repository citations in docstrings and comments with explicit, readable rule descriptions.

## [v0.5.0] - 2026-07-22

### Added
Expand Down
12 changes: 9 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,17 @@ The client is **async-only** (httpx `AsyncClient`) and is an async context manag

```python
from pipelex_sdk.client import PipelexAPIClient
from pipelex_sdk.validation_models import VALIDATION_VIEW_INPUT_FORM


async def main() -> None:
async with PipelexAPIClient() as client:
# 1. Validate an MTHDS bundle. The verdict is always returned (never raised):
# a 200 discriminated on `is_valid`, carrying `rendered_markdown`.
report = await client.validate([bundle_text])
# Structured views are opt-in: asking for `input_form` here is what populates
# `report.input_form` (the per-pipe input-form descriptors); omit `views` and the
# request body carries no `views` key at all.
report = await client.validate([bundle_text], views=[VALIDATION_VIEW_INPUT_FORM])
print(report.rendered_markdown)
if not report.is_valid:
return
Expand Down Expand Up @@ -83,9 +88,10 @@ There is no barrel import — package `__init__.py` files stay empty. Import eac
- **Client & construction** — `from pipelex_sdk.client import PipelexAPIClient, DEFAULT_API_BASE_URL, MthdsFile`
- **Run lifecycle types** — `from pipelex_sdk.runs import RunStatus, RunPublic, RunRead, RunResults, RunResultState, WaitForResultOptions, PollInfo`
- **Product wire models** — `from pipelex_sdk.product_models import UserProfile, MethodData, MethodWriteInput, Membership, MembershipsResponse, SubscriptionResponse, PlanView, InvoiceView, OnboardingSubmission, UploadInput, UploadedFile, PipelineRun, ...`
- **Typed errors** — `from pipelex_sdk.errors import ApiResponseError, ApiUnreachableError, PipelineExecuteTimeoutError, RunFailedError, RunTimeoutError, RunLifecycleUnavailableError, RunStillRunningError`
- **Validation verdict types** — `from pipelex_sdk.validation_models import PipelexValidationResult, PipelexValidationReport, PipelexInvalidReport, ValidationErrorItem, SuggestedFix, VALIDATION_VIEW_INPUT_FORM, ...`
- **Typed errors** — `from pipelex_sdk.errors import ApiResponseError, ApiUnreachableError, PipelineExecuteTimeoutError, PagingNotTerminatingError, RunFailedError, RunTimeoutError, RunLifecycleUnavailableError, RunStillRunningError, ...`
- **Version** — `from pipelex_sdk.version import __version__`
- **Protocol surface** (the MTHDS standard's wire types) comes from the `mthds` dependency — e.g. `from mthds.protocol.exceptions import PipelineRequestError`, `from mthds.runners.api.models import PipelexValidationResult`.
- **Protocol surface** (the MTHDS standard's wire types) comes from the `mthds` dependency — e.g. `from mthds.protocol.exceptions import PipelineRequestError`, `from mthds.protocol.models import ValidationResult` (the neutral verdict union that `PipelexValidationResult` narrows).

## Development

Expand Down
Loading
Loading