Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
129 commits
Select commit Hold shift + click to select a range
dfaf766
feat: Added nebius token factory provider support
Radheshg04 Dec 5, 2025
8a485ec
docs: documented nebius token factory
Radheshg04 Dec 5, 2025
083cf7f
fix: minor doc updates + added query param support
Radheshg04 Dec 11, 2025
2619dbd
feat: add enable feature for API keys
slyang08 Dec 12, 2025
630809c
Merge branch 'main' into feature/nebius-provider-988
akshaydeo Dec 13, 2025
c8669f9
feat: force sync datasheet and above 200k pricing
Dec 10, 2025
9fab592
feat: custom key selection by name using headers
Dec 11, 2025
1d904e8
fix: structured output in gemini and bedrock
TejasGhatte Dec 13, 2025
8dd07c8
feat: recalculate missing costs
hpbyte Dec 14, 2025
c23e0fa
fix: address cmts
hpbyte Dec 14, 2025
2526f1b
fix: address cmt
hpbyte Dec 14, 2025
1062c73
fix: address cmt
hpbyte Dec 14, 2025
4470dd2
Merge pull request #1080 from maximhq/12-13-fix_structured_output_in_…
akshaydeo Dec 15, 2025
296d1e5
Merge pull request #992 from slyang08/11-17-feat-option-disable-key
akshaydeo Dec 15, 2025
dbfff2b
adds batch apis support
akshaydeo Nov 28, 2025
80b55ad
Merge pull request #955 from maximhq/11-28-batch-apis
akshaydeo Dec 15, 2025
a9df060
dependabot fixes
akshaydeo Dec 15, 2025
8a1ccdc
feat: force sync datasheet and above 200k pricing (#1042)
akshaydeo Dec 15, 2025
b6c0b2e
feat: custom key selection by name using headers (#1050)
akshaydeo Dec 15, 2025
ab08d70
Merge pull request #1087 from maximhq/12-15-dependabot_fixes
akshaydeo Dec 15, 2025
988624c
Merge branch 'main' into feature/nebius-provider-988
akshaydeo Dec 15, 2025
44f4efd
Merge pull request #1007 from Radheshg04/feature/nebius-provider-988
akshaydeo Dec 15, 2025
d40ea2a
fix: x-stainless-timeout allowed header
Dec 15, 2025
60be211
Merge pull request #1094 from maximhq/12-15-fix_x-stainless-timeout_a…
akshaydeo Dec 15, 2025
d4fc1ad
batch request logging
akshaydeo Dec 15, 2025
5be232e
Merge pull request #1090 from maximhq/12-15-batch_request_logging
akshaydeo Dec 15, 2025
6bd1a15
feat: x-bf-eh extra header key
Dec 11, 2025
4a0c9f9
fixes core tests for batches
akshaydeo Dec 15, 2025
5932efd
Merge pull request #1096 from maximhq/12-15-fixes_core_tests_for_batches
akshaydeo Dec 15, 2025
4a63f58
Merge pull request #1053 from maximhq/12-11-feat_x-bf-eh_extra_header…
akshaydeo Dec 15, 2025
50d0563
adds new file-supported-batch flag for tests
akshaydeo Dec 15, 2025
b5df028
Merge pull request #1097 from maximhq/12-15-adds_new_file-supported-b…
akshaydeo Dec 15, 2025
258f572
fixes bedrock tests
akshaydeo Dec 15, 2025
d959f9b
Merge pull request #1098 from maximhq/12-16-fixes_bedrock_tests
akshaydeo Dec 15, 2025
9366ed0
fixes release pipeline to add missing env variables
akshaydeo Dec 15, 2025
a322564
Merge pull request #1099 from maximhq/12-16-fixes_release_pipeline_to…
akshaydeo Dec 15, 2025
7ced31c
removes azure from batch unsupported
akshaydeo Dec 15, 2025
7ad009b
Merge pull request #1100 from maximhq/12-16-removes_azure_from_batch_…
akshaydeo Dec 15, 2025
314519d
fixed skipping azure for file and batch unsupported test
akshaydeo Dec 15, 2025
25728cf
Merge pull request #1101 from maximhq/12-16-fixed_skipping_azure_for_…
akshaydeo Dec 15, 2025
740e309
framework: bump core to v1.2.38 --skip-pipeline
github-actions[bot] Dec 15, 2025
43af5a1
plugins/governance: bump core to v1.2.38 and framework to v1.1.48 --s…
github-actions[bot] Dec 15, 2025
cbd923c
plugins/jsonparser: bump core to v1.2.38 and framework to v1.1.48 --s…
github-actions[bot] Dec 15, 2025
fb60948
plugins/logging: bump core to v1.2.38 and framework to v1.1.48 --skip…
github-actions[bot] Dec 15, 2025
ee46cdc
plugins/maxim: bump core to v1.2.38 and framework to v1.1.48 --skip-p…
github-actions[bot] Dec 15, 2025
1bc71c1
plugins/mocker: bump core to v1.2.38 and framework to v1.1.48 --skip-…
github-actions[bot] Dec 15, 2025
afdcb4b
plugins/otel: bump core to v1.2.38 and framework to v1.1.48 --skip-pi…
github-actions[bot] Dec 15, 2025
0fc9840
plugins/semanticcache: bump core to v1.2.38 and framework to v1.1.48 …
github-actions[bot] Dec 15, 2025
ef06302
plugins/telemetry: bump core to v1.2.38 and framework to v1.1.48 --sk…
github-actions[bot] Dec 15, 2025
3472c29
fixed middleware test cases
akshaydeo Dec 16, 2025
777f24b
Merge pull request #1102 from maximhq/12-16-fixed_middleware_test_cases
akshaydeo Dec 16, 2025
7010760
transports: update dependencies --skip-pipeline
github-actions[bot] Dec 16, 2025
cb7c4af
Adds changelog for v1.3.49 --skip-pipeline
github-actions[bot] Dec 16, 2025
e5cdc01
fixed release notes parsing
akshaydeo Dec 16, 2025
d818172
Merge pull request #1103 from maximhq/12-16-fixed_release_notes_parsing
akshaydeo Dec 16, 2025
b9fda31
fix: address cmts
hpbyte Dec 16, 2025
c84f880
fix api docs
akshaydeo Dec 15, 2025
e662b17
Merge pull request #1084 from maximhq/12-15-fix_api_docs
akshaydeo Dec 16, 2025
c429649
increase timeout limit to 48 hours for providers
akshaydeo Dec 16, 2025
991b5aa
increase timeout limit to 48 hours for providers (#1106)
akshaydeo Dec 16, 2025
0891208
fixes documentation for remove a provider
akshaydeo Dec 16, 2025
5dd798c
Merge pull request #1109 from maximhq/12-16-fixes_documentation_for_r…
akshaydeo Dec 16, 2025
008355e
Merge pull request #1082 from hpbyte/12-14-recalculate_missing_costs
akshaydeo Dec 16, 2025
363dd44
Feature/987 mistral audio transcription support (#1016)
Vivek1898 Dec 16, 2025
e28991b
update direct-key doc links
Georgehe4 Dec 17, 2025
2540b60
Add bedrock
Georgehe4 Dec 17, 2025
31999f2
Merge pull request #1110 from Georgehe4/update-direct-key-docs
akshaydeo Dec 17, 2025
93c6ab1
batch config for each key
akshaydeo Dec 16, 2025
6e483b1
fixes blur issue on char type in Headers table
akshaydeo Dec 17, 2025
47b8dc0
batch config for each key (#1104)
akshaydeo Dec 17, 2025
a6b4098
fixes blur issue on char type in Headers table (#1111)
akshaydeo Dec 17, 2025
0d6747b
moves config items into sidebar
akshaydeo Dec 17, 2025
3a84ae8
moves config items into sidebar (#1115)
akshaydeo Dec 17, 2025
d0747ad
feat: add cache control support for claude models (#979)
Pratham-Mishra04 Dec 17, 2025
5692d16
feat: langchain thinking test cases and docs (#1116)
TejasGhatte Dec 17, 2025
6fc2461
build fixes (#1123)
akshaydeo Dec 17, 2025
17b5905
moves config views into their own paths
akshaydeo Dec 17, 2025
5b24de3
moves config views into their own paths (#1124)
akshaydeo Dec 17, 2025
b98d355
adds router based redirect to proxy view
akshaydeo Dec 17, 2025
f324fb5
Merge pull request #1125 from maximhq/12-17-adds_router_based_redirec…
akshaydeo Dec 17, 2025
8dcfb43
feat: http response parsing support added
Pratham-Mishra04 Dec 16, 2025
f109532
chore: minor refactor and changelogs
Pratham-Mishra04 Dec 16, 2025
e8b50ea
refactor: openai and mistral audio refactor
Pratham-Mishra04 Dec 16, 2025
4490ef2
feat: added audio support in azure
Pratham-Mishra04 Dec 16, 2025
5c049c8
feat: audio gen support added to openai chat completions
Pratham-Mishra04 Dec 16, 2025
b90fba0
feat: add handling for HTML and empty responses from providers (#1105)
akshaydeo Dec 17, 2025
c7dc0d7
refactor: openai and mistral audio refactored (#1112)
akshaydeo Dec 17, 2025
3e16ec6
feat: add transcription and speech support for Azure (#1113)
akshaydeo Dec 17, 2025
0de1856
feat: added audio support to chat completions (#1114)
akshaydeo Dec 17, 2025
fa04082
framework: bump core to v1.2.39 --skip-pipeline
github-actions[bot] Dec 17, 2025
ee6238e
plugins/governance: bump core to v1.2.39 and framework to v1.1.49 --s…
github-actions[bot] Dec 17, 2025
597766f
plugins/jsonparser: bump core to v1.2.39 and framework to v1.1.49 --s…
github-actions[bot] Dec 17, 2025
dd1d58a
plugins/logging: bump core to v1.2.39 and framework to v1.1.49 --skip…
github-actions[bot] Dec 17, 2025
5a0e89e
plugins/maxim: bump core to v1.2.39 and framework to v1.1.49 --skip-p…
github-actions[bot] Dec 17, 2025
85cb682
plugins/mocker: bump core to v1.2.39 and framework to v1.1.49 --skip-…
github-actions[bot] Dec 17, 2025
00a1c7b
plugins/otel: bump core to v1.2.39 and framework to v1.1.49 --skip-pi…
github-actions[bot] Dec 17, 2025
4ec1020
plugins/semanticcache: bump core to v1.2.39 and framework to v1.1.49 …
github-actions[bot] Dec 17, 2025
9661e15
plugins/telemetry: bump core to v1.2.39 and framework to v1.1.49 --sk…
github-actions[bot] Dec 17, 2025
835ddca
transports: update dependencies --skip-pipeline
github-actions[bot] Dec 17, 2025
859db4c
adds new macos update for new golang version
akshaydeo Dec 17, 2025
35721f1
Merge pull request #1126 from maximhq/12-17-adds_new_macos_update_for…
akshaydeo Dec 17, 2025
628fb20
Adds changelog for v1.3.50 --skip-pipeline
github-actions[bot] Dec 17, 2025
1986320
fix(mcp): ensure properties field is always set for tools with no par…
CryptoFewka Dec 18, 2025
511efc8
chore: send back full html instead
Pratham-Mishra04 Dec 18, 2025
6b1a28c
checks if schemaType is empty and defaults it to object regardless
CryptoFewka Dec 19, 2025
30a27ff
Update changelog.md for PR 1131
CryptoFewka Dec 19, 2025
eacf889
Merge pull request #1131 from CryptoFewka/cryptofewka/fix-no-param-in…
akshaydeo Dec 19, 2025
d072fac
Merge pull request #1128 from maximhq/12-18-chore_send_back_full_html…
akshaydeo Dec 19, 2025
f21dcc2
fix(perplexity): correct search_domain_filter json tag (#1135)
hnoguchigr Dec 19, 2025
ed34784
feat: huggingface provider added (#1006)
qwerty-dvorak Dec 19, 2025
21dd198
fix: deduplicate model ids in single response of azure (#1134)
TejasGhatte Dec 19, 2025
38df059
adds support for CA in proxy settings (#1137)
akshaydeo Dec 19, 2025
986471a
fix: handle single content blocks and empty ARN in Bedrock and Anthro…
Pratham-Mishra04 Dec 19, 2025
ed724ce
chore: test fixes (#1140)
Pratham-Mishra04 Dec 19, 2025
7a66b34
framework: bump core to v1.2.40 --skip-pipeline
github-actions[bot] Dec 19, 2025
bf88333
plugins/governance: bump core to v1.2.40 and framework to v1.1.50 --s…
github-actions[bot] Dec 19, 2025
a1e729b
plugins/jsonparser: bump core to v1.2.40 and framework to v1.1.50 --s…
github-actions[bot] Dec 19, 2025
0979f64
plugins/logging: bump core to v1.2.40 and framework to v1.1.50 --skip…
github-actions[bot] Dec 19, 2025
3e55393
plugins/maxim: bump core to v1.2.40 and framework to v1.1.50 --skip-p…
github-actions[bot] Dec 19, 2025
8f4bcf7
plugins/mocker: bump core to v1.2.40 and framework to v1.1.50 --skip-…
github-actions[bot] Dec 19, 2025
7a3de85
plugins/otel: bump core to v1.2.40 and framework to v1.1.50 --skip-pi…
github-actions[bot] Dec 19, 2025
8ed2886
plugins/semanticcache: bump core to v1.2.40 and framework to v1.1.50 …
github-actions[bot] Dec 19, 2025
ceea171
plugins/telemetry: bump core to v1.2.40 and framework to v1.1.50 --sk…
github-actions[bot] Dec 19, 2025
f87f010
transports: update dependencies --skip-pipeline
github-actions[bot] Dec 19, 2025
47fe4ed
Adds changelog for v1.3.51 --skip-pipeline
github-actions[bot] Dec 19, 2025
31f1ad5
fix: gemini thought signature handling
TejasGhatte Dec 20, 2025
4e0d43a
fix: gemini thought signature handling (#1142)
akshaydeo Dec 22, 2025
73467e0
scim okta free account fixes
akshaydeo Dec 22, 2025
e9a86c2
Merge pull request #1151 from maximhq/12-22-scim_okta_free_account_fixes
akshaydeo Dec 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion .github/workflows/pr-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.24.3"
go-version: "1.25.5"

- name: Set up Python
uses: actions/setup-python@v5
Expand Down Expand Up @@ -115,6 +115,7 @@ jobs:
COHERE_API_KEY: ${{ secrets.COHERE_API_KEY }}
VERTEX_CREDENTIALS: ${{ secrets.VERTEX_CREDENTIALS }}
VERTEX_PROJECT_ID: ${{ secrets.VERTEX_PROJECT_ID }}
HUGGING_FACE_API_KEY: ${{ secrets.HUGGING_FACE_API_KEY }}
run: |
echo "Running tests for PR #${{ github.event.pull_request.number || 'manual run' }}"
./.github/workflows/scripts/run-tests.sh
Expand Down
14 changes: 10 additions & 4 deletions .github/workflows/release-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.24.3"
go-version: "1.25.5"
- name: Configure Git
run: |
git config user.name "GitHub Actions Bot"
Expand Down Expand Up @@ -115,6 +115,9 @@ jobs:
VERTEX_CREDENTIALS: ${{ secrets.VERTEX_CREDENTIALS }}
VERTEX_PROJECT_ID: ${{ secrets.VERTEX_PROJECT_ID }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
HUGGING_FACE_API_KEY: ${{ secrets.HUGGING_FACE_API_KEY }}
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
AWS_BEDROCK_ROLE_ARN: ${{ secrets.AWS_BEDROCK_ROLE_ARN }}
run: ./.github/workflows/scripts/release-core.sh "${{ needs.detect-changes.outputs.core-version }}"

framework-release:
Expand All @@ -137,7 +140,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.24.3"
go-version: "1.25.5"

- name: Configure Git
run: |
Expand Down Expand Up @@ -187,6 +190,7 @@ jobs:
VERTEX_CREDENTIALS: ${{ secrets.VERTEX_CREDENTIALS }}
VERTEX_PROJECT_ID: ${{ secrets.VERTEX_PROJECT_ID }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
HUGGING_FACE_API_KEY: ${{ secrets.HUGGING_FACE_API_KEY }}
run: ./.github/workflows/scripts/release-framework.sh "${{ needs.detect-changes.outputs.framework-version }}"

plugins-release:
Expand All @@ -213,7 +217,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.24.3"
go-version: "1.25.5"

- name: Configure Git
run: |
Expand Down Expand Up @@ -263,6 +267,7 @@ jobs:
VERTEX_CREDENTIALS: ${{ secrets.VERTEX_CREDENTIALS }}
VERTEX_PROJECT_ID: ${{ secrets.VERTEX_PROJECT_ID }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
HUGGING_FACE_API_KEY: ${{ secrets.HUGGING_FACE_API_KEY }}
run: ./.github/workflows/scripts/release-all-plugins.sh '${{ needs.detect-changes.outputs.changed-plugins }}'

bifrost-http-release:
Expand Down Expand Up @@ -292,7 +297,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.24.3"
go-version: "1.25.5"

- name: Set up Node.js
uses: actions/setup-node@v4
Expand Down Expand Up @@ -351,6 +356,7 @@ jobs:
VERTEX_CREDENTIALS: ${{ secrets.VERTEX_CREDENTIALS }}
VERTEX_PROJECT_ID: ${{ secrets.VERTEX_PROJECT_ID }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
HUGGING_FACE_API_KEY: ${{ secrets.HUGGING_FACE_API_KEY }}
run: ./.github/workflows/scripts/release-bifrost-http.sh "${{ needs.detect-changes.outputs.transport-version }}"

# Docker build amd64
Expand Down
22 changes: 11 additions & 11 deletions .github/workflows/scripts/install-cross-compilers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,42 +27,42 @@ sudo ln -sf /usr/bin/aarch64-linux-gnu-g++ /usr/local/bin/aarch64-linux-musl-g++
echo "🍎 Setting up Darwin cross-compilation..."

# Where to install SDK
SDK_DIR="/opt/MacOSX11.3.sdk"
SDK_URL="https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX11.3.sdk.tar.xz"
SDK_DIR="/opt/MacOSX12.3.sdk"
SDK_URL="https://github.com/phracker/MacOSX-SDKs/releases/download/12.3/MacOSX12.3.sdk.tar.xz"
Comment on lines +30 to +31
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Verify SDK URL availability—the primary source does not host macOS 12.3.

The phracker/MacOSX-SDKs repository contains SDKs compiled from various Xcode releases, covering up to MacOSX11.3.sdk. The script's primary URL references version 12.3 from this repository, which is unavailable. The joseluisq/macosx-sdks repository provides the macOS 12.3 SDK at https://github.com/joseluisq/macosx-sdks/releases/download/12.3/MacOSX12.3.sdk.tar.xz, as do alternative sources. Ensure your download script has appropriate fallback handling or update to use an available source. The SDK upgrade from 11.3 to 12.3 may also affect your project's minimum supported macOS version for built binaries.

🤖 Prompt for AI Agents
.github/workflows/scripts/install-cross-compilers.sh lines 30-31: the script
points to a nonexistent SDK URL in the phracker repo for MacOSX12.3.sdk; replace
that URL with a known working mirror (for example joseluisq's release URL) or
add fallback logic that attempts the primary URL then retries one or more
alternate URLs (e.g., joseluisq/macosx-sdks) and exits with a clear error if all
attempts fail; also ensure any change documents that switching to SDK 12.3 may
raise the minimum supported macOS deployment target so update build flags or CI
variables accordingly.


# Download and extract macOS SDK if not already installed
if [ ! -d "$SDK_DIR" ]; then
echo "📦 Downloading macOS SDK..."
# Use -f to fail on HTTP errors, -L to follow redirects
if ! curl -fL "$SDK_URL" -o /tmp/MacOSX11.3.sdk.tar.xz; then
if ! curl -fL "$SDK_URL" -o /tmp/MacOSX12.3.sdk.tar.xz; then
echo "❌ Failed to download macOS SDK from primary URL, trying alternative..."
SDK_URL_ALT="https://github.com/joseluisq/macosx-sdks/releases/download/11.3/MacOSX11.3.sdk.tar.xz"
curl -fL "$SDK_URL_ALT" -o /tmp/MacOSX11.3.sdk.tar.xz
SDK_URL_ALT="https://github.com/joseluisq/macosx-sdks/releases/download/12.3/MacOSX12.3.sdk.tar.xz"
curl -fL "$SDK_URL_ALT" -o /tmp/MacOSX12.3.sdk.tar.xz
fi
sudo mkdir -p /opt
sudo tar -xf /tmp/MacOSX11.3.sdk.tar.xz -C /opt
rm -f /tmp/MacOSX11.3.sdk.tar.xz
sudo tar -xf /tmp/MacOSX12.3.sdk.tar.xz -C /opt
rm -f /tmp/MacOSX12.3.sdk.tar.xz
fi

# Create wrapper scripts with proper shebang and linker configuration
sudo tee /usr/local/bin/o64-clang > /dev/null << 'WRAPPER_EOF'
#!/bin/bash
exec clang -target x86_64-apple-darwin --sysroot=/opt/MacOSX11.3.sdk -fuse-ld=lld -Wno-unused-command-line-argument "$@"
exec clang -target x86_64-apple-darwin --sysroot=/opt/MacOSX12.3.sdk -fuse-ld=lld -Wno-unused-command-line-argument "$@"
WRAPPER_EOF

sudo tee /usr/local/bin/o64-clang++ > /dev/null << 'WRAPPER_EOF'
#!/bin/bash
exec clang++ -target x86_64-apple-darwin --sysroot=/opt/MacOSX11.3.sdk -fuse-ld=lld -Wno-unused-command-line-argument "$@"
exec clang++ -target x86_64-apple-darwin --sysroot=/opt/MacOSX12.3.sdk -fuse-ld=lld -Wno-unused-command-line-argument "$@"
WRAPPER_EOF

sudo tee /usr/local/bin/oa64-clang > /dev/null << 'WRAPPER_EOF'
#!/bin/bash
exec clang -target arm64-apple-darwin --sysroot=/opt/MacOSX11.3.sdk -fuse-ld=lld -Wno-unused-command-line-argument "$@"
exec clang -target arm64-apple-darwin --sysroot=/opt/MacOSX12.3.sdk -fuse-ld=lld -Wno-unused-command-line-argument "$@"
WRAPPER_EOF

sudo tee /usr/local/bin/oa64-clang++ > /dev/null << 'WRAPPER_EOF'
#!/bin/bash
exec clang++ -target arm64-apple-darwin --sysroot=/opt/MacOSX11.3.sdk -fuse-ld=lld -Wno-unused-command-line-argument "$@"
exec clang++ -target arm64-apple-darwin --sysroot=/opt/MacOSX12.3.sdk -fuse-ld=lld -Wno-unused-command-line-argument "$@"
WRAPPER_EOF

sudo chmod +x /usr/local/bin/o64-clang /usr/local/bin/o64-clang++ \
Expand Down
22 changes: 11 additions & 11 deletions .github/workflows/snyk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: Snyk checks

on:
push:
branches: [main, master, '**/*']
branches: [main, master, "**/*"]
pull_request:
branches: ['**/*']
branches: ["**/*"]
workflow_dispatch:

permissions:
Expand Down Expand Up @@ -44,17 +44,17 @@ jobs:
- name: Setup Node (for UI)
uses: actions/setup-node@v4
with:
node-version: '20'
node-version: "20"

- name: Setup Python (for tests tooling)
uses: actions/setup-python@v5
with:
python-version: '3.11'
python-version: "3.11"

- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.24.3'
go-version: "1.25.5"

- name: Install Snyk CLI
uses: snyk/actions/setup@master
Expand Down Expand Up @@ -82,22 +82,22 @@ jobs:
- name: Setup Node (for UI)
uses: actions/setup-node@v4
with:
node-version: '20'
node-version: "20"

- name: Setup Python (for tests tooling)
uses: actions/setup-python@v5
with:
python-version: '3.11'
python-version: "3.11"

- name: Setup Python (for tests tooling)
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
python-version: "3.11"
cache: "pip"
cache-dependency-path: |
tests/integrations/requirements.txt
tests/governance/requirements.txt

Comment on lines 87 to +100
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Duplicate "Setup Python" step detected.

There are two consecutive "Setup Python (for tests tooling)" steps (lines 87-95 and 92-99). The second step at lines 92-99 includes cache configuration while the first at 87-91 does not. This appears to be an unintended duplication—the first step can likely be removed.

🔎 Proposed fix: Remove duplicate step
-      - name: Setup Python (for tests tooling)
-        uses: actions/setup-python@v5
-        with:
-          python-version: "3.11"
-
       - name: Setup Python (for tests tooling)
         uses: actions/setup-python@v5
         with:
           python-version: "3.11"
           cache: "pip"
           cache-dependency-path: |
             tests/integrations/requirements.txt
             tests/governance/requirements.txt
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Setup Python (for tests tooling)
uses: actions/setup-python@v5
with:
python-version: '3.11'
python-version: "3.11"
- name: Setup Python (for tests tooling)
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
python-version: "3.11"
cache: "pip"
cache-dependency-path: |
tests/integrations/requirements.txt
tests/governance/requirements.txt
- name: Setup Python (for tests tooling)
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: "pip"
cache-dependency-path: |
tests/integrations/requirements.txt
tests/governance/requirements.txt
🤖 Prompt for AI Agents
.github/workflows/snyk.yml around lines 87 to 100: there are two consecutive
"Setup Python (for tests tooling)" steps; remove the first duplicate (lines
~87-91) so only the second step with the cache and cache-dependency-path
remains, ensuring no other steps rely on the removed stub; keep the
setup-python@v5 usage with python-version "3.11" and cache settings in the
remaining step.

- name: Install Python dependencies (tests tooling)
run: |
python -m pip install --disable-pip-version-check \
Expand All @@ -107,7 +107,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.24.3'
go-version: "1.25.5"

- name: Build
run: make build
Expand Down
92 changes: 75 additions & 17 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ help: ## Show this help message
@echo "$(YELLOW)Test Configuration:$(NC)"
@echo " TEST_REPORTS_DIR Directory for HTML test reports (default: test-reports)"
@echo " GOTESTSUM_FORMAT Test output format: testname|dots|pkgname|standard-verbose (default: testname)"
@echo " PATTERN Substring pattern to filter tests (alternative to TESTCASE)"

cleanup-enterprise: ## Clean up enterprise directories if present
@echo "$(GREEN)Cleaning up enterprise...$(NC)"
Expand Down Expand Up @@ -148,11 +149,9 @@ build: build-ui ## Build bifrost-http binary
echo "$(GREEN)╚═══════════════════════════════════════╝$(NC)"; \
fi
@if [ -n "$(DYNAMIC)" ]; then \
echo "$(YELLOW)Note: This will create a dynamically linked build.$(NC)"; \
echo "$(YELLOW)To build with dynamic plugin support.$(NC)"; \
echo "$(YELLOW)Note: This will create a dynamically linked build.$(NC)"; \
else \
echo "$(YELLOW)Note: This will create a statically linked build.$(NC)"; \
echo "$(YELLOW)To build with dynamic plugin support.$(NC)"; \
echo "$(YELLOW)Note: This will create a statically linked build.$(NC)"; \
fi
@mkdir -p ./tmp
@TARGET_OS="$(GOOS)"; \
Expand Down Expand Up @@ -214,7 +213,7 @@ _build-with-docker: # Internal target for Docker-based cross-compilation
-e GOOS=$(TARGET_OS) \
-e GOARCH=$(TARGET_ARCH) \
$(if $(LOCAL),,-e GOWORK=off) \
golang:1.24.3-alpine3.22 \
golang:1.25.5-alpine3.22 \
sh -c "apk add --no-cache gcc musl-dev && \
go build \
-ldflags='-w -s -X main.Version=v$(VERSION)' \
Expand All @@ -231,7 +230,7 @@ _build-with-docker: # Internal target for Docker-based cross-compilation
-e GOOS=$(TARGET_OS) \
-e GOARCH=$(TARGET_ARCH) \
$(if $(LOCAL),,-e GOWORK=off) \
golang:1.24.3-alpine3.22 \
golang:1.25.5-alpine3.22 \
sh -c "apk add --no-cache gcc musl-dev && \
go build \
-ldflags='-w -s -extldflags "-static" -X main.Version=v$(VERSION)' \
Expand Down Expand Up @@ -334,9 +333,14 @@ test: install-gotestsum ## Run tests for bifrost-http
echo "$(CYAN)JUnit XML report: $(TEST_REPORTS_DIR)/bifrost-http.xml$(NC)"; \
fi

test-core: install-gotestsum ## Run core tests (Usage: make test-core PROVIDER=openai TESTCASE=SpeechSynthesisStreamAdvanced/MultipleVoices_Streaming/StreamingVoice_echo)
test-core: install-gotestsum ## Run core tests (Usage: make test-core PROVIDER=openai TESTCASE=TestName or PATTERN=substring)
@echo "$(GREEN)Running core tests...$(NC)"
@mkdir -p $(TEST_REPORTS_DIR)
@if [ -n "$(PATTERN)" ] && [ -n "$(TESTCASE)" ]; then \
echo "$(RED)Error: PATTERN and TESTCASE are mutually exclusive$(NC)"; \
echo "$(YELLOW)Use PATTERN for substring matching or TESTCASE for exact match$(NC)"; \
exit 1; \
fi
@TEST_FAILED=0; \
REPORT_FILE=""; \
if [ -n "$(PROVIDER)" ]; then \
Expand Down Expand Up @@ -382,6 +386,30 @@ test-core: install-gotestsum ## Run core tests (Usage: make test-core PROVIDER=o
echo ""; \
echo "$(CYAN)JUnit XML report: $$REPORT_FILE$(NC)"; \
fi; \
elif [ -n "$(PATTERN)" ]; then \
echo "$(CYAN)Running tests matching '$(PATTERN)' for $${PROVIDER_TEST_NAME}...$(NC)"; \
REPORT_FILE="$(TEST_REPORTS_DIR)/core-$(PROVIDER)-$(PATTERN).xml"; \
cd core/providers/$(PROVIDER) && GOWORK=off gotestsum \
--format=$(GOTESTSUM_FORMAT) \
--junitfile=../../../$$REPORT_FILE \
-- -v -run ".*$(PATTERN).*" || TEST_FAILED=1; \
cd ../../..; \
$(MAKE) cleanup-junit-xml REPORT_FILE=$$REPORT_FILE; \
if [ -z "$$CI" ] && [ -z "$$GITHUB_ACTIONS" ] && [ -z "$$GITLAB_CI" ] && [ -z "$$CIRCLECI" ] && [ -z "$$JENKINS_HOME" ]; then \
if which junit-viewer > /dev/null 2>&1; then \
echo "$(YELLOW)Generating HTML report...$(NC)"; \
junit-viewer --results=$$REPORT_FILE --save=$${REPORT_FILE%.xml}.html 2>/dev/null || true; \
echo ""; \
echo "$(CYAN)HTML report: $${REPORT_FILE%.xml}.html$(NC)"; \
echo "$(CYAN)Open with: open $${REPORT_FILE%.xml}.html$(NC)"; \
else \
echo ""; \
echo "$(CYAN)JUnit XML report: $$REPORT_FILE$(NC)"; \
fi; \
else \
echo ""; \
echo "$(CYAN)JUnit XML report: $$REPORT_FILE$(NC)"; \
fi; \
else \
echo "$(CYAN)Running Test$${PROVIDER_TEST_NAME}...$(NC)"; \
REPORT_FILE="$(TEST_REPORTS_DIR)/core-$(PROVIDER).xml"; \
Expand Down Expand Up @@ -413,11 +441,20 @@ test-core: install-gotestsum ## Run core tests (Usage: make test-core PROVIDER=o
echo "$(YELLOW)Usage: make test-core PROVIDER=openai TESTCASE=SpeechSynthesisStreamAdvanced/MultipleVoices_Streaming/StreamingVoice_echo$(NC)"; \
exit 1; \
fi; \
REPORT_FILE="$(TEST_REPORTS_DIR)/core-all.xml"; \
cd core && GOWORK=off gotestsum \
--format=$(GOTESTSUM_FORMAT) \
--junitfile=../$$REPORT_FILE \
-- -v ./providers/... || TEST_FAILED=1; \
if [ -n "$(PATTERN)" ]; then \
echo "$(CYAN)Running tests matching '$(PATTERN)' across all providers...$(NC)"; \
REPORT_FILE="$(TEST_REPORTS_DIR)/core-all-$(PATTERN).xml"; \
cd core && GOWORK=off gotestsum \
--format=$(GOTESTSUM_FORMAT) \
--junitfile=../$$REPORT_FILE \
-- -v -run ".*$(PATTERN).*" ./providers/... || TEST_FAILED=1; \
else \
REPORT_FILE="$(TEST_REPORTS_DIR)/core-all.xml"; \
cd core && GOWORK=off gotestsum \
--format=$(GOTESTSUM_FORMAT) \
--junitfile=../$$REPORT_FILE \
-- -v ./providers/... || TEST_FAILED=1; \
fi; \
cd ..; \
$(MAKE) cleanup-junit-xml REPORT_FILE=$$REPORT_FILE; \
if [ -z "$$CI" ] && [ -z "$$GITHUB_ACTIONS" ] && [ -z "$$GITLAB_CI" ] && [ -z "$$CIRCLECI" ] && [ -z "$$JENKINS_HOME" ]; then \
Expand Down Expand Up @@ -569,12 +606,17 @@ test-chatbot: ## Run interactive chatbot integration test (Usage: RUN_CHATBOT_TE
fi
@cd core && RUN_CHATBOT_TEST=1 go test -v -run TestChatbot

test-integrations: ## Run Python integration tests (Usage: make test-integrations [INTEGRATION=openai] [TESTCASE=test_name] [VERBOSE=1])
test-integrations: ## Run Python integration tests (Usage: make test-integrations [INTEGRATION=openai] [TESTCASE=test_name] [PATTERN=substring] [VERBOSE=1])
@echo "$(GREEN)Running Python integration tests...$(NC)"
@if [ ! -d "tests/integrations" ]; then \
echo "$(RED)Error: tests/integrations directory not found$(NC)"; \
exit 1; \
fi; \
if [ -n "$(PATTERN)" ] && [ -n "$(TESTCASE)" ]; then \
echo "$(RED)Error: PATTERN and TESTCASE are mutually exclusive$(NC)"; \
echo "$(YELLOW)Use PATTERN for substring matching or TESTCASE for exact match$(NC)"; \
exit 1; \
fi; \
if [ -n "$(TESTCASE)" ] && [ -z "$(INTEGRATION)" ]; then \
echo "$(RED)Error: TESTCASE requires INTEGRATION to be specified$(NC)"; \
echo "$(YELLOW)Usage: make test-integrations INTEGRATION=anthropic TESTCASE=test_05_end2end_tool_calling$(NC)"; \
Expand Down Expand Up @@ -633,13 +675,21 @@ test-integrations: ## Run Python integration tests (Usage: make test-integration
if [ -n "$(TESTCASE)" ]; then \
echo "$(CYAN)Running $(INTEGRATION) integration test: $(TESTCASE)...$(NC)"; \
cd tests/integrations && pytest tests/test_$(INTEGRATION).py::$(TESTCASE) $(if $(VERBOSE),-v,-q) || TEST_FAILED=1; \
elif [ -n "$(PATTERN)" ]; then \
echo "$(CYAN)Running $(INTEGRATION) integration tests matching '$(PATTERN)'...$(NC)"; \
cd tests/integrations && pytest tests/test_$(INTEGRATION).py -k "$(PATTERN)" $(if $(VERBOSE),-v,-q) || TEST_FAILED=1; \
else \
echo "$(CYAN)Running $(INTEGRATION) integration tests...$(NC)"; \
cd tests/integrations && pytest tests/test_$(INTEGRATION).py $(if $(VERBOSE),-v,-q) || TEST_FAILED=1; \
fi; \
else \
echo "$(CYAN)Running all integration tests...$(NC)"; \
cd tests/integrations && pytest $(if $(VERBOSE),-v,-q) || TEST_FAILED=1; \
if [ -n "$(PATTERN)" ]; then \
echo "$(CYAN)Running all integration tests matching '$(PATTERN)'...$(NC)"; \
cd tests/integrations && pytest -k "$(PATTERN)" $(if $(VERBOSE),-v,-q) || TEST_FAILED=1; \
else \
echo "$(CYAN)Running all integration tests...$(NC)"; \
cd tests/integrations && pytest $(if $(VERBOSE),-v,-q) || TEST_FAILED=1; \
fi; \
fi; \
else \
echo "$(CYAN)Using uv (fast mode)$(NC)"; \
Expand All @@ -652,13 +702,21 @@ test-integrations: ## Run Python integration tests (Usage: make test-integration
if [ -n "$(TESTCASE)" ]; then \
echo "$(CYAN)Running $(INTEGRATION) integration test: $(TESTCASE)...$(NC)"; \
uv run pytest tests/test_$(INTEGRATION).py::$(TESTCASE) $(if $(VERBOSE),-v,-q) || TEST_FAILED=1; \
elif [ -n "$(PATTERN)" ]; then \
echo "$(CYAN)Running $(INTEGRATION) integration tests matching '$(PATTERN)'...$(NC)"; \
uv run pytest tests/test_$(INTEGRATION).py -k "$(PATTERN)" $(if $(VERBOSE),-v,-q) || TEST_FAILED=1; \
else \
echo "$(CYAN)Running $(INTEGRATION) integration tests...$(NC)"; \
uv run pytest tests/test_$(INTEGRATION).py $(if $(VERBOSE),-v,-q) || TEST_FAILED=1; \
fi; \
else \
echo "$(CYAN)Running all integration tests...$(NC)"; \
uv run pytest $(if $(VERBOSE),-v,-q) || TEST_FAILED=1; \
if [ -n "$(PATTERN)" ]; then \
echo "$(CYAN)Running all integration tests matching '$(PATTERN)'...$(NC)"; \
uv run pytest -k "$(PATTERN)" $(if $(VERBOSE),-v,-q) || TEST_FAILED=1; \
else \
echo "$(CYAN)Running all integration tests...$(NC)"; \
uv run pytest $(if $(VERBOSE),-v,-q) || TEST_FAILED=1; \
fi; \
fi; \
fi; \
if [ $$BIFROST_STARTED -eq 1 ] && [ -n "$$BIFROST_PID" ]; then \
Expand Down
Loading
Loading