Integration testing confirmed gemma-3 (4b/12b/27b) ignores the JSON
schema and returns free text, and nemotron-nano (9b/12b) errors with
"Tool calling is not supported in streaming mode" even on sync calls.
Remove the flag so these models fall back to the tool-call approach.
Also fix test assertions to match (nemotron-nano-3-30b is supported,
gemma-3 and nemotron-nano-12b are not).
Move the source of truth for which Bedrock models support native structured
outputs (outputConfig.textFormat) from a hardcoded substring set
(BEDROCK_NATIVE_STRUCTURED_OUTPUT_MODELS) to the cost JSON via a new
"supports_native_structured_output" flag. This makes it possible to add
support for new models (including Claude Sonnet 4.6, which was missing)
by updating the JSON alone, with no code changes needed.
- fetch fresh decrypted config from DB when store_model_in_db is enabled
so TEST_EMAIL_ADDRESS is correctly resolved in DB mode
- fall back to os.getenv for YAML / env-var deployments (no-op path)
- add silent mode to handleSaveEmailSettings to suppress notifications
when called programmatically from the test email flow
- silently persist form values before triggering email health check so
the backend can read TEST_EMAIL_ADDRESS from DB (DB mode)
- swallow errors in silent mode to allow test flow to proceed using
env-var / YAML config values as fallback
Pin all pip install commands to exact versions and SHA-pin all GitHub
Actions to prevent supply chain attacks. Remove snok/install-poetry
in favor of direct pip install. Delete orphaned load test scripts.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- call decrypt_value_helper with return_original_value=True for slack and email env vars
- supports DB mode (already plaintext) and YAML mode (still encrypted) gracefully
- update test to use fake_decrypt stub and assert correct decrypt call count
- remove duplicate decrypt_value_helper calls for slack and email env vars in get_config
- values from environment_variables are already decrypted, no need to decrypt again
- add test to verify decrypt_value_helper is not called for slack/email config values
Instead of returning a 400 error when return_to is passed without
control_plane_url configured, silently ignore it and proceed with
the normal same-origin SSO flow.
- Use openai/gpt-5 prefix to match existing doc conventions
- Clarify that additional_drop_params must be added to every affected
model entry, not just one
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
OpenCode sends a `reasoningSummary` Responses API param with chat
completion requests. Document how to use `additional_drop_params` to
drop it and avoid 400 errors from the OpenAI API.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>