Release/v0.9.0 - #79
Merged
Merged
Conversation
* fix readme * bump version
* Add docs for github commands * swe_from_file_cmd use PipeCode the same way as swe_from_repo_cmd added some pipe codes to enum * Renamed write_changelog_v2 to write_changelog_enhanced * Rename check_docs_consistency to check_doc_inconsistencies
* fix/cursor_rules * fix rules
* Split CLI code of all commands: ### Changed - **Major CLI restructuring**: Reorganized flat command structure into logical command groups for better organization and maintainability - `repox` → `repox convert` (repository processing commands) - `swe-*` commands → `swe *` subcommands (e.g., `swe-from-repo` → `swe from-repo`) - `validate` → `validation validate` (with additional `validation dry-run` and `validation check-config` options) - **Improved CLI architecture**: Extracted command implementations from main CLI module into co-located packages (`cocode/repox/repox_cli.py`, `cocode/swe/swe_cli.py`, etc.) for better code organization - **Updated documentation**: All examples and references updated to reflect new command structure ### Added - Command group structure with `app.add_typer()` for better CLI organization - `cocode/common.py` module with shared utilities (`PipeCode` enum, `validate_repo_path()`, `get_output_dir()`) - Alternative command names for flexibility (e.g., `repox repo` alongside `repox convert`) ### Deprecated - Direct `cocode validate` command (still works but shows deprecation notice; use `cocode validation validate` instead) **Migration**: Replace hyphens with spaces in SWE commands (e.g., `swe-from-repo` → `swe from-repo`) and use `repox convert` instead of `repox`. All old functionality remains available in the new structure. * use github repos with temp clones * Fix linting * Cleanup imports * Lint format
# Conflicts: # CHANGELOG.md
- Bump `pipelex` to `v0.10.2`: See `Pipelex` changelog [here](https://docs.pipelex.com/changelog/)
# Conflicts: # CHANGELOG.md
* fix/clean cli commands * update changelog * remove blackbox
* Duplicate changelog as analyze * cli to Analyze
* refactor/For Pipelex 0.11.x * WIP update Pipelex * Update config and libraries * Ignore patterns OK * Rename ignore_patterns to exclude_patterns * Cleanup dependencies * Move pipelines * Adapt to Pipelex * Pipelex deb dev * Restore gemini via Pipelex inference
# Conflicts: # .pipelex/inference/backends/pipelex_inference.toml # CHANGELOG.md # cocode/pipelines/swe_diff/swe_diff.plx # pyproject.toml # uv.lock
* Adapt to pipelex new syntax for multiplicity * Adapt more details * Agent rules
# Conflicts: # cocode/pipelines/swe_diff/write_changelog_enhanced.plx
* Fix dupe biundles * - Upgraded `pipelex` dependency from to `0.15.2`
# Conflicts: # pyproject.toml # uv.lock
* Before tests, check_is_initialized * update pipelex and pytest * cleanup imports
* Use Pipelex Gateway (local dep) * PLX fixes related to new checks * Update for Pipelex * Use feature/Chicago * Pipelex dep * Cleanup imports * CI --disable-inference to run without Pipelex Service agreement + cleaned up agent rules * Use Chicago b2 * Rename .plx to .mthds, reorganize inference deck, and remove redundant AI instruction files Migrate pipeline files from .plx to .mthds extension, restructure the inference deck into separate files (llm, img_gen, extract, custom), update backend configs, and consolidate AI coding instructions into CLAUDE.md by removing .blackboxrules, .cursor/rules, .windsurfrules.md, AGENTS.md, and .github/copilot-instructions.md. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Fix NameError in changelog_struct by using builtin list type Replace typing.List with builtin list[str] and remove unnecessary from __future__ import annotations to fix annotation resolution failure after pipelex update. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Update pipelex dependency to feature/Chicago branch Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Update stuff * Consume pipelex public validation API in validation CLI and tests Replace the hand-rolled load_all_pipeline_libraries / dry_run_all_pipes helpers with pipelex's new public composers: load_libraries_and_activate (the open/set/load ceremony) and BundleValidator.validate_current_library (no-teardown sweep of the active library). Rewire the validation CLI commands, the test conftest (both the inference and --disable-inference branches), and the test_basic dry-run smoke test. Update the conftest disable-inference branch to the current Pipelex.make(needs_inference=False) API in place of the removed disable_inference kwarg. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Enhance model deck configurations and add runtime trace ignore patterns * Pin pipelex to released 0.31.0 and bump pyright to 1.1.410 Switch the pipelex dependency from the local editable ../pipelex source to the published 0.31.0 release on PyPI and drop the [tool.uv.sources] override. Raise the pyright dev floor to 1.1.410 and regenerate uv.lock accordingly. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Replace removed llm_for_large_codebase preset and tidy test bootstrap Point doc_proofread and text_utils pipes at the engineering-codebase-analysis preset (the old llm_for_large_codebase alias was removed with base_deck.toml under pipelex 0.31). Also align test fixtures on PIPELINE_LIBRARY_DIRS_FOR_TESTS, bump best-gemini to gemini-pro-latest, and drop the stale hello_world xfail. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Louis Choquel <8851983+lchoquel@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Reconcile dev with the v0.7.0 release (#73), which was dev's work squash-released plus a cleanup pass. Resolved all conflicts by taking main's side: - CLAUDE.md: slim cocode-specific guide (drop vendored Pipelex rules block) - cocode/common.py: package-anchored PIPELINE_LIBRARY_DIRS via Path(__file__) - tests/conftest.py: Path-based test library dirs - pyproject.toml: drop .cursor from ruff exclude - .pipelex/telemetry.toml: deleted (matches main; unreferenced) Cleaned up dev-only files main had removed/gitignored: untracked the .pipelex config-sync backups, mthds_schema.json and pipelex_service.toml (kept on disk), and removed the wip/ brief and the obsolete pipelex migration doc. Verified: make agent-check, make agent-test, pipelex validate --all all pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…rotocol (#75) * chore: track pipelex keyword-only refactor + migrate to PipelexMTHDSProtocol Pin pipelex to the keyword-only-arguments refactor branch (git rev) and migrate the SWE runner off the removed PipelexRunner class. - pyproject/uv.lock: pipelex ==0.32.1 -> ==0.33.0 via git rev 529b9082 - swe_cmd.py + integration test: PipelexRunner -> PipelexMTHDSProtocol, execute_pipeline() -> execute() (response.pipe_output unchanged) make agent-check and agent-test pass; uv lock --check is consistent. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * chore: bump pinned pipelex rev to 755b8211 (keyword-only arg reorderings) Tracks the latest pipelex keyword-only refactor commit, which reorders several function signatures to keyword-only. No call-site changes needed here — every call site already passes the affected args by keyword. agent-check + agent-test green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * chore: re-pin pipelex to 0e32c8c0 (positional-subject consolidation) Bumps the pinned pipelex git rev 755b8211 -> 0e32c8c0. That commit makes all remaining non-subject params keyword-only (no reordering); all call sites here already pass by keyword, so this is a no-op bump. agent-check + agent-test green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * Refactor configuration and update dependencies - Removed experimental feature flags from pipelex.toml. - Updated VSCode settings to enable format on save and organize imports. - Cleaned up ai_instruction_update.mthds by removing combined_output. - Adjusted changelog.mthds template formatting for consistency. - Removed combined_output from swe_docs.mthds. - Renamed TestingStrategyDoc to TestStrategyDoc in swe_docs.py and updated references. - Updated pipelex.toml to remove pipeline tracking and reporting flags. - Specified exact version for ruff in pyproject.toml and updated dependencies. - Updated uv.lock to reflect changes in package versions and sources. * use pipelex from pypi --------- Co-authored-by: Louis Choquel <8851983+lchoquel@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
# Conflicts: # CHANGELOG.md
* Drop Python 3.10 support, add 3.14 to CI, bump pipelex to 0.39.0 Upstream pipelex removed its own 3.10 support and deleted the StrEnum re-export we relied on, so we now import StrEnum from stdlib enum and raise our own minimum to 3.11. Also test against 3.14 in CI and point mypy at local paths instead of module names so an editable pipelex checkout doesn't drag that repo's tests into our type check. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Cg7xzRtbshzke25awsYEud * chore: sweep onto pipelex 0.41.0 (#78) Bumps pipelex[...]==0.39.0 -> ==0.41.0, crossing two release cycles. The blast radius is small despite 0.41.0 being the largest breaking core release of the year, and that is worth recording: cocode drives pipelex through its public run surface rather than reaching into internals, so the parser move out of core/, the Pipe-machinery move, the pipelex.providers vendor rename and the Concept-becomes-pure-data change all miss this repo entirely. Two addresses moved. pipelex.hub is deleted with no shim and split by owning layer, so get_required_concept now comes from pipelex.interpreter_hub; and PipeRunMode moved to pipelex.system.pipe_run_mode. agent-check and agent-test green. Claude-Session: https://claude.ai/code/session_015XjPhRAkJnL9YoSkR2GEoD Co-authored-by: Louis Choquel <8851983+lchoquel@users.noreply.github.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com> * ci: bump actions/setup-python from v4 to v6 in lint and test workflows v4 targets the Node 16 runtime, which the runners only still execute via a forced fallback (they warn about it on every run). v6 is the first major on Node 24. v5 would not have helped -- it targets the equally deprecated Node 20. This is not the fix for the review comment that prompted it: setup-python resolves interpreters from the python-versions manifest at run time, so v4 provisions Python 3.14 fine, as the 3.14 matrix legs passing on acf0b31 ("Successfully set up CPython (3.14.6)") already showed. The stale runtime is a separate, real problem. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V4dkSibzHHERhpPsPdGYqU --------- Co-authored-by: Louis Choquel <8851983+lchoquel@users.noreply.github.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Confidence Score: 5/5The PR appears safe to merge with no concrete changed-code defect identified. The dependency migration updates the known moved APIs, removes conflicting duplicate registrations, and aligns package metadata and CI with the new supported Python range. Reviews (1): Last reviewed commit: "Release v0.9.0" | Re-trigger Greptile |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release v0.9.0
Bumps version from
0.8.0to0.9.0.Changelog
Changed
pipelex0.42.0 (pipelex[...]==0.39.0→==0.42.0, crossing three release cycles). Despite 0.41.0 being the largest breaking core release of the year, the blast radius here is small — cocode drives pipelex through its public run surface rather than its internals, so only two addresses moved:pipelex.hubwas deleted with no shim (split intopipelex.runtime_hub/pipelex.interpreter_hubby owning layer, andget_required_conceptis interpreter-layer), andPipeRunModemoved frompipelex.pipe_run.pipe_run_modetopipelex.system.pipe_run_mode. Nothing in the parser move, the Pipe-machinery move, thepipelex.providersvendor rename, or theConcept-becomes-pure-data change reaches this repo. From 0.42.0, the only change that reaches us is strict PipeFunc name collisions — see the fix below.@pipe_func()decorator; the redundant manualfunc_registry.register_function(...)calls indoc_proofread/file_utils.pyandpipelines/text_utils.pyare gone.split_text_by_identifiersgains the decorator it was missing, so it no longer depends on the class-registry scan importing its module as a side effect.actions/setup-pythonfromv4tov6in the lint and test workflows.v4targets the Node 16 runtime, which the runners only still execute via a forced fallback;v6is the first major on Node 24. Note thatv5would not have helped — it targets the equally deprecated Node 20.StrEnumfrom the stdlibenummodule instead of thepipelex.typesre-export, which upstream deleted along with its own 3.10 support.files) rather than module names (packages), so an editablepipelexcheckout on the import path no longer drags that repo's test suite into our type check.Fixed
cocodecommand crashed at startup onpipelex0.42.0 withFuncRegistryError: Function name 'read_file_content' is already registered by a different function.file_utils.pyregisteredread_file_contenttwice — once when imported as a package module byswe_cmd.py, once when pipelex's folder scan re-imported the same file by path under a mangled module name — and 0.42.0 turned that silent overwrite into a hard error. Dropping the manual registration leaves the decorator-driven scan as the single registration path.Removed
🤖 Generated with Claude Code
Summary by cubic
Release v0.9.0 upgrades to
pipelex0.42.0, standardizes PipeFunc registration, and drops Python 3.10. Fixes a startup crash caused by duplicate function registration and updates CI to test Python 3.11–3.14.Dependencies
pipelexto0.42.0; updated imports topipelex.interpreter_hubandpipelex.system.pipe_run_mode.enum.StrEnum(upstream removed thepipelex.typesre-export).>=3.11(breaking) and added 3.14 to CI.actions/setup-pythontov6; bumpedpyrightto>=1.1.411.filespaths to avoid pulling in editablepipelextests.Bug Fixes
@pipe_func()exclusively.split_text_by_identifiers.FuncRegistryErroron startup underpipelex0.42.0 caused by duplicate registration ofread_file_content.Written for commit c0e664e. Summary will update on new commits.