Conversation
Align every OpenAI Responses filter with the openai_mcp_dispatch gold standard so the registered name, module path, and filter struct agree. Registered names (config-facing, breaking): - openai_responses_format -> openai_format - openai_responses_model_rewrite -> openai_model_rewrite - openai_responses_validate -> openai_validate - openai_responses_rehydrate -> openai_rehydrate - openai_responses_compact -> openai_compact - openai_responses_proxy -> openai_proxy - openai_response_store -> openai_store - responses_to_chat_completions -> openai_responses_to_chat_completions - openai_file_search_callout -> openai_file_search_dispatch - openai_web_search -> openai_web_search_dispatch Module directories renamed to match (Rust paths only): mcp_tool_resolve, tool_parse, responses_proxy, file_search_dispatch, web_search_dispatch. Filter structs renamed for consistency (e.g. StreamEventsFilter, ResponsesValidateFilter, FileSearchDispatchFilter, WebSearchDispatchFilter). Regenerated filter docs, Responses/example READMEs, and updated example configs and integration tests to the new names. BREAKING CHANGE: filter names used in pipeline configs have changed as listed above; update `- filter: <name>` entries accordingly. This is a pre-v1 rename with no compatibility aliases. Signed-off-by: Sébastien Han <seb@redhat.com>
Renaming the filters changed identifier lengths, which shifts nightly rustfmt line-wrapping in the rehydrate, stream_events, responses, and web_search_dispatch test/filter modules. Reformat to satisfy `cargo +nightly fmt --all -- --check`. Signed-off-by: Sébastien Han <seb@redhat.com>
leseb
force-pushed
the
leseb/rename-search-dispatch-filters
branch
from
September 15, 2026 09:42
0a13d78 to
43152ed
Compare
Resolve the merge with main after the openai_<feature> filter rename: - New openai_stream_events tests (praxis-proxy#556/praxis-proxy#1155) referenced the renamed StreamEventsFilter type under its old name; update them. - Regenerate examples/README.md for the merged stream-events example. Signed-off-by: Sébastien Han <seb@redhat.com>
The A/B/C Responses filter normalization left two defect classes that broke CI: - Over-rename: the fixed OpenAI "web_search" tool type / synthetic bridge wire name was rewritten to "web_search_dispatch" in the dispatch bridges, their unit tests, example configs, and vLLM SDK tests. "web_search" is a fixed wire-format string; only the filter was renamed. Reverted every API-contract occurrence back to "web_search". - Under-rename: the IRR dispatcher assertion and the vLLM SDK config builder still used old registered names. Updated to openai_web_search_dispatch / openai_file_search_dispatch and openai_responses_to_chat_completions. Also finished the rename in doc comments, a vacuous validate test seed, and remaining test/helper identifiers, and regenerated examples/README.md. Signed-off-by: Sébastien Han <seb@redhat.com>
The generated apis/src/openai/responses/README.md sorts filters by their registered name. Renaming the Responses filters to openai_<feature> (openai_compact, openai_format, openai_store, openai_validate, openai_responses_to_chat_completions) reorders that list and the pipeline hooks table, but the generated README was not re-synced, so `cargo xtask sync-responses-readme` flagged it stale on CI. Regenerated via `cargo xtask sync-responses-readme --fix`. Descriptions are unchanged; only the alphabetical ordering of the renamed filters differs. Signed-off-by: Sébastien Han <seb@redhat.com>
Integrates praxis-proxy#890 (openai_operation operation-classifier filter) into the OpenAI Responses filter rename branch. Only conflict was the generated docs/filters/reference.md filter table: HEAD carried the renamed filters, origin/main added the openai_operation row. Resolved by regenerating via 'cargo xtask generate-filter-docs', which produces the authoritative union (renamed filters + openai_operation sorted between openai_model_rewrite and openai_proxy). The 4 known praxis-proxy#1166 on_invalid base doc-artifacts were reverted; only reference.md is kept. Verified: workspace build, clippy, nightly fmt, sync-example-readme (no change), sync-responses-readme, check-responses-registry (7 ops), check-inference (24/24), openresponses-coverage, apis lib (3428/0), integration suite examples (362/0). Signed-off-by: Sébastien Han <seb@redhat.com>
Integrates praxis-proxy#1162 (bound file search callout decoding) into the OpenAI Responses filter rename branch. No conflicts. Git replayed praxis-proxy#1162's edits into the renamed file_search_dispatch/ paths (client.rs decode-bounding + tests) and picked up the serde_json raw_value feature it needs. The rename kept the internal test-function names as file_search_callout_*, so praxis-proxy#1162's hunks applied cleanly. Verified: workspace build, clippy --all-targets (0), nightly fmt, sync-responses-readme/sync-example-readme (no change), check-responses-registry (7 ops), check-inference (24/24), openresponses-coverage, apis lib 3435/0 (incl praxis-proxy#1162's new decode-bound tests), integration suite file_search_dispatch example 6/0. Signed-off-by: Sébastien Han <seb@redhat.com>
Integrates praxis-proxy#1181 (fail closed on tenant-unsafe schemas at startup) into the OpenAI Responses filter rename branch. No conflicts: praxis-proxy#1181 is confined to the store backends (apis/src/store/ schemas.rs, sqlite.rs, postgres.rs, tests.rs), which the filter rename never touched, so its changes apply cleanly with no overlap. Verified: workspace build, clippy --all-targets (0 warnings), nightly fmt, sync-responses-readme/sync-example-readme (no change), check-responses-registry (7 ops), check-inference (24/24), openresponses-coverage, apis lib 3441/0 (incl praxis-proxy#1181's new store schema-validation tests). Signed-off-by: Sébastien Han <seb@redhat.com>
franciscojavierarceo
approved these changes
Sep 15, 2026
…ispatch-filters Signed-off-by: Sébastien Han <seb@redhat.com>
…ispatch-filters Signed-off-by: Sébastien Han <seb@redhat.com>
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Normalizes every OpenAI Responses filter to the
openai_<feature>convention set byopenai_mcp_dispatch, so each filter's registered name, module path, and struct agree. This is a pre-v1 rename with no compatibility aliases: config-facing filter names change (e.g.openai_responses_format→openai_format,openai_response_store→openai_store,responses_to_chat_completions→openai_responses_to_chat_completions, and the search filters becomeopenai_file_search_dispatch/openai_web_search_dispatch), module directories and filter structs are renamed to match, and all generated docs, READMEs, example configs, and integration tests are updated accordingly. No behavior changes.Related issue
N/A — internal naming-consistency cleanup (no tracked issue).
Validation
cargo test -p praxis-ai-apis -p praxis-ai-filters(all pass)make buildand full-workspacecargo test --no-runmake lint(clippy, fmt, generated filter-docs, example-tests, README syncs, responses registry, inference coverage, markdown links)make docChecklist
Signed-off-bytrailer.Breaking changes
Filter names used in pipeline configs change (pre-v1, no aliases). Update
- filter: <name>entries:openai_responses_formatopenai_formatopenai_responses_model_rewriteopenai_model_rewriteopenai_responses_validateopenai_validateopenai_responses_rehydrateopenai_rehydrateopenai_responses_compactopenai_compactopenai_responses_proxyopenai_proxyopenai_response_storeopenai_storeresponses_to_chat_completionsopenai_responses_to_chat_completionsopenai_file_search_calloutopenai_file_search_dispatchopenai_web_searchopenai_web_search_dispatch