Release/v0.19.0#734
Merged
Merged
Conversation
* 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>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
There was a problem hiding this comment.
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.
thomashebrard
approved these changes
Mar 2, 2026
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.
Note
Medium Risk
Adds a new
searchmodel 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
PipeSearchoperator, a new native conceptSearchResult(withSearchResultContent/sources rendering), and a newsearchmodel type with deck presets/aliases/waterfalls plus Linkup provider integration (via optionallinkup-sdk).Extends config/CLI surfaces to support search (env/config backends, routing profiles, agent
modelsoutput/categories, builder talent mappings/spec generation, and newsearchpytest marker excluded from default runs) and bumps the release tov0.19.0(includingmthds/pipelex-toolsversion bumps).Enhances
pipelex validate bundlewith--viewto return a ReactFlow-compatibleViewSpecJSON (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.