Skip to content

Release/v0.19.0#734

Merged
lchoquel merged 5 commits into
mainfrom
release/v0.19.0
Mar 2, 2026
Merged

Release/v0.19.0#734
lchoquel merged 5 commits into
mainfrom
release/v0.19.0

Conversation

@lchoquel
Copy link
Copy Markdown
Member

@lchoquel lchoquel commented Mar 2, 2026

Note

Medium Risk
Adds a new search model type/operator and extends model deck resolution/validation, which can affect inference routing and bundle execution if misconfigured. Also changes CLI validation output (--view) and bumps core dependencies/version, increasing integration surface area.

Overview
Adds web search as a first-class capability: introduces the PipeSearch operator, a new native concept SearchResult (with SearchResultContent/sources rendering), and a new search model type with deck presets/aliases/waterfalls plus Linkup provider integration (via optional linkup-sdk).

Extends config/CLI surfaces to support search (env/config backends, routing profiles, agent models output/categories, builder talent mappings/spec generation, and new search pytest marker excluded from default runs) and bumps the release to v0.19.0 (including mthds/pipelex-tools version bumps).

Enhances pipelex validate bundle with --view to return a ReactFlow-compatible ViewSpec JSON (without writing files), refactoring graph generation to share a dry-run bundle execution path.

Written by Cursor Bugbot for commit 4b0a52e. This will update automatically on new commits. Configure here.

thomashebrard and others added 4 commits March 2, 2026 02:31
* feat: add search capability with Linkup integration and pipe_search operator

Introduce web search as a new inference modality alongside LLM, image generation, and extraction. Add Linkup as the first search backend with sourced answer and structured output modes. Include search worker abstraction, pipe_search operator, search model deck configuration, and integration tests with a new `search` pytest marker excluded from default test runs. The LinkupSearchWorker lives in pipelex/plugins/linkup/ following the plugin pattern.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test: add E2E tests for PipeSearch operator

Add pipe_search test directory with .mthds definitions, test data, and
test file following the existing pipe_llm/pipe_img_gen e2e patterns.
Also point plxt schema rule at the local derived schema for validation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add prompt template to PipeSearch for composing search queries from inputs

Replace the direct query input approach with a prompt template (using $var syntax)
that composes the search query from structured inputs at runtime, matching the
pattern used by PipeImgGen and PipeLLM.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add custom renderers to SearchResultContent and log PipeSearch runs

SearchResultContent and SearchSourceContent now have dedicated rendered_pretty,
rendered_plain, rendered_html, and rendered_markdown methods instead of falling
back to generic JSON dumps. PipeSearch logs a dev message before executing,
consistent with other model-type workers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: address PR #732 review comments for PipeSearch operator

Lazy-import LinkupSearchWorker to avoid breaking startup without linkup-sdk,
add underscore filter to required_variables(), handle structured output in
dry run via DryRunFactory, fix copy-paste test data query, and add
ModelType.SEARCH to model deck reference tests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* ci: add LINKUP_API_KEY to CI placeholder environment variables

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: resolve waterfall/alias model handles before passing to search worker factory

PipeSearch was passing unresolved waterfall names (e.g., "fast-search") directly
to get_search_worker, which expects a "provider/variant" format. Added a
resolution step via get_required_inference_model to convert waterfalls and aliases
to actual model handles, matching the pattern used by the LLM pipeline.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add --view option to validate bundle and bump pipelex-tools to 0.2.3

Add generate_view_for_bundle() that produces a ViewSpec JSON for client-side
graph rendering without writing files to disk. Refactor graph_rendering to
extract shared _dry_run_bundle() helper. Update CHANGELOG with search
integration and graph view features.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add PipeSearch operator and SearchResult native concept to docs and builder

Add PipeSearch as a new pipe operator across user docs, architecture
overview, mkdocs nav, and the pipe builder system. Document the
SearchResult native concept (SearchResultContent) with its answer and
sources fields. Wire up SearchTalent (web-search, web-search-deep) and
PipeSearchSpec into the builder's spec union, spec map, design pipeline,
and talent preset mappings.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: correct PipeSearch output type guidance to reference SearchResult

The builder prompt and docs incorrectly referenced Text/SearchResultContent
instead of the user-facing SearchResult concept name.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: use Panel for PipeSearchSpec prompt display to avoid Rich markup errors

LLM-generated prompts containing square brackets would cause MarkupError
or silent bracket stripping when passed through Text.from_markup().

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Add Search to ModelCategory

* comment

* fix: add configurable search_default_depth and remove leaked VS Code setting

Replace hardcoded SearchDepth.STANDARD in get_search_setting with a
configurable search_default_depth field on ModelDeck, mirroring the
llm_default_temperature pattern. Remove leaked runPipeCodeLens setting
from .vscode/settings.json. Fix FakeModelDeck and _FakeTalentMappings
test helpers to include search attributes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: update test method names to snake_case for mthds 0.1.0 compatibility

The mthds package now validates that method names in METHODS.toml must be
snake_case. Updated all hyphenated method names in test fixtures to use
underscores, and bumped mthds dependency from >=0.0.7 to >=0.1.0.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: remove unused check_search_choice method from ModelDeck

This method was dead code — never called anywhere. Search choice validation
is handled by check_search_choice_with_deck in model_deck_check.py, consistent
with the extract and img_gen patterns.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: remove StrEnum .value usage and correct mthds version in CHANGELOG

Use StrEnum variables directly instead of .value per coding standards,
and fix CHANGELOG entry to reflect actual mthds bump to >=0.1.0.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: align PipeSearch output constraint with MTHDS spec

Use consistent wording: "SearchResult or a concept that refines SearchResult"
instead of "always SearchResult" or "compatible with SearchResult".

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@lchoquel lchoquel requested a review from thomashebrard March 2, 2026 21:52
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3 issues found across 74 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="pipelex/cli/agent_cli/commands/validate/bundle_cmd.py">

<violation number="1" location="pipelex/cli/agent_cli/commands/validate/bundle_cmd.py:153">
P2: When both `--graph` and `--view` are set, this triggers two dry-run executions (one per helper). Consider reusing a single dry-run result or adding a combined helper to avoid the extra pipeline execution.</violation>
</file>

<file name="pipelex/core/stuffs/search_result_content.py">

<violation number="1" location="pipelex/core/stuffs/search_result_content.py:37">
P2: rendered_html uses the raw source URL as an anchor href without validating its scheme, so a `javascript:`/unsafe URL from search results could be rendered as a clickable link. Add URL validation (or a scheme allowlist) in validate_resources or before rendering.</violation>
</file>

<file name="tests/unit/pipelex/language/test_mthds_schema.py">

<violation number="1" location="tests/unit/pipelex/language/test_mthds_schema.py:101">
P3: Expanding this hard-coded blueprint list continues a duplicate canonical list in tests. Since PipeType already defines the authoritative pipe types, consider deriving `expected_blueprint_names` from PipeType (or a shared helper) so new pipe types don’t require manual updates in two places.

(Based on your team's feedback about avoiding duplicated canonical lists in tests.) [FEEDBACK_USED]</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Comment thread pipelex/cli/agent_cli/commands/validate/bundle_cmd.py
Comment thread pipelex/core/stuffs/search_result_content.py
Comment thread tests/unit/pipelex/language/test_mthds_schema.py
@lchoquel lchoquel merged commit b935838 into main Mar 2, 2026
43 of 44 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Mar 2, 2026
@lchoquel lchoquel deleted the release/v0.19.0 branch March 2, 2026 22:13
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