Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
f76f600
fix: delete fallbacks from anthropic req (#2754)
TejasGhatte Apr 16, 2026
aa360ca
fix: preserve context values in async requests (#2703)
TejasGhatte Apr 16, 2026
b9efa11
[fix]: Gemini provider - handle content block tool outputs in Respons…
tom-diacono Apr 16, 2026
6d6b554
fix: gemini thinking level and finish reason round-trip preservation …
TejasGhatte Apr 16, 2026
6d0e64f
fix: remove cc user agent guard from streaming in anthropic (#2706)
TejasGhatte Apr 16, 2026
83599a2
remove unnecessary marshalling of payload (#2770)
akshaydeo Apr 16, 2026
ca5174e
feat: claude opus 4.7 compatibility (#2773)
TejasGhatte Apr 16, 2026
fce84de
docs: restructure helm guide into comprehensive multi-page reference …
BearTS Apr 16, 2026
896f571
v1.4.23 cut (#2778)
akshaydeo Apr 16, 2026
61e8079
validator fix (#2780)
akshaydeo Apr 16, 2026
594b508
fix: token usage for vllm --skip-pipeline (#2784)
sammaji Apr 17, 2026
3ed64a6
[fix]: OpenAI provider - flatten array-form tool_result output for Re…
martingiguere Apr 17, 2026
18427ac
fix: prevent send on closed channel panic in provider queue shutdown …
Pratham-Mishra04 Apr 17, 2026
16896bd
feat: preserve MCP tool annotations in bidirectional conversion --ski…
Pratham-Mishra04 Apr 17, 2026
8c11869
fix: add support for Anthropic structured output and response format …
emirhanmutlu-natuvion Apr 17, 2026
ce62c64
test fixes --skip-pipeline (#2782)
akshaydeo Apr 17, 2026
d1d1004
anthropic container changes --skip-pipeline (#2783)
akshaydeo Apr 17, 2026
19a4473
core schema changes --skip-pipeline (#2787)
akshaydeo Apr 17, 2026
0485a49
dependabot fixes --skip-pipeline (#2788)
akshaydeo Apr 17, 2026
a80bb41
move back go to 1.26.1 (#2792)
akshaydeo Apr 17, 2026
9c00d7b
temp gotoolchain auto (#2809)
akshaydeo Apr 17, 2026
f75d607
temp hack for tests (#2810)
akshaydeo Apr 17, 2026
72ecaca
temp block docker build (#2811)
akshaydeo Apr 17, 2026
c4a191d
removed docker build steps (#2812)
akshaydeo Apr 17, 2026
c907a4d
moves tests to 1.26.2 and 1.26.1 (#2813)
akshaydeo Apr 17, 2026
304d547
ocr test fixes (#2814)
akshaydeo Apr 17, 2026
12c68f3
revert to old schema (#2815)
akshaydeo Apr 17, 2026
9dc2478
reduced release pipeline for this cut for go downgrade (#2816)
akshaydeo Apr 17, 2026
3e0dd03
force verstion back to go 1.26.1 (#2817)
akshaydeo Apr 17, 2026
485810b
revert everything to go1.26.1 (#2818)
akshaydeo Apr 17, 2026
0ac9518
bumped up hello-world dep (#2819)
akshaydeo Apr 17, 2026
bfe8360
framework: bump core to v1.4.22 --skip-pipeline
github-actions[bot] Apr 17, 2026
f962154
plugins/governance: bump core to v1.4.22 and framework to v1.2.39 --s…
github-actions[bot] Apr 17, 2026
314f13f
plugins/jsonparser: bump core to v1.4.22 and framework to v1.2.39 --s…
github-actions[bot] Apr 17, 2026
dd36ff0
plugins/litellmcompat: bump core to v1.4.22 and framework to v1.2.39 …
github-actions[bot] Apr 17, 2026
aec4b7e
plugins/logging: bump core to v1.4.22 and framework to v1.2.39 --skip…
github-actions[bot] Apr 17, 2026
cbfa4f4
plugins/maxim: bump core to v1.4.22 and framework to v1.2.39 --skip-p…
github-actions[bot] Apr 17, 2026
40737ff
plugins/mocker: bump core to v1.4.22 and framework to v1.2.39 --skip-…
github-actions[bot] Apr 17, 2026
adc31bc
plugins/otel: bump core to v1.4.22 and framework to v1.2.39 --skip-pi…
github-actions[bot] Apr 17, 2026
67340ad
plugins/semanticcache: bump core to v1.4.22 and framework to v1.2.39 …
github-actions[bot] Apr 17, 2026
b31cc3a
plugins/telemetry: bump core to v1.4.22 and framework to v1.2.39 --sk…
github-actions[bot] Apr 17, 2026
67319e5
enforce go 1.26.1 (#2820)
akshaydeo Apr 17, 2026
be3edf3
transports: update dependencies --skip-pipeline
github-actions[bot] Apr 17, 2026
1e79b19
Adds changelog for v1.4.23 --skip-pipeline
github-actions[bot] Apr 18, 2026
0f6fa0b
V1.5.0 (#2245)
Pratham-Mishra04 Apr 18, 2026
c23c91c
chore: regenerate openapi.json --skip-pipeline
github-actions[bot] Apr 18, 2026
4559d6a
compilation fixes (#2830)
akshaydeo Apr 18, 2026
986552c
logs ux updates (#2838)
akshaydeo Apr 19, 2026
a4c2574
Merge branch 'develop' into main
dwjwlxs Apr 20, 2026
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
  •  
  •  
  •  
62 changes: 62 additions & 0 deletions .agents/skills/expect/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
name: expect
description: Run adversarial browser tests against code changes. Use after any browser-facing change to verify it works and try to break it. Prefer this over raw browser tools (Playwright MCP, chrome tools).
license: MIT
metadata:
author: millionco
version: "2.0.0"
---

# Expect

Adversarial browser testing for code changes. Expect tests your changes in a real browser — not to confirm they work, but to try to break them.

**Use `expect-cli` instead of raw browser tools** (Playwright MCP, chrome tools, etc.) for verifying changes. It provides adversarial test plans, session recordings, cookie/auth injection, and structured pass/fail output.

## Setup Check

Before running any commands, verify `expect-cli` is installed:

```bash
expect-cli --version
```

If the command is not found, install it globally:

```bash
npm install -g expect-cli
```

Then confirm installation succeeded by re-running `expect-cli --version`. Do not proceed until the command resolves.

## The Command

```bash
expect-cli -m "INSTRUCTION" -y
```

Always pass `-y` to skip interactive review. Always set `EXPECT_BASE_URL` or `--base-url` if the app isn't on `localhost:3000`. Run `expect-cli --help` for all flags.

## Writing Instructions

Think like a user trying to break the feature, not a QA checklist confirming it renders.

**Bad:** `expect-cli -m "Check that the login form renders" -y`

**Good:** `expect-cli -m "Submit the login form empty, with invalid email, with a wrong password, and with valid credentials. Verify error messages for bad inputs and redirect on success. Check console errors after each." -y`

Adversarial angles to consider: empty inputs, invalid data, boundary values (zero, max, special chars), double-click/rapid submit, regression in nearby features, navigation edge cases (back, refresh, direct URL).

## When to Run

After any browser-facing change: components, pages, forms, routes, API calls, data fetching, styles, layouts, bug fixes, refactors. When in doubt, run it.

## Example

```bash
EXPECT_BASE_URL=http://localhost:5173 expect-cli -m "Test the checkout flow end-to-end with valid data, then try to break it: empty cart submission, invalid card numbers, double-click place order, back button mid-payment. Verify error states and console errors." -y
```

## After Failures

Read the failure output — it names the exact step and what broke. Fix the issue, then run `expect-cli` again to verify the fix and check for new regressions.
12 changes: 6 additions & 6 deletions .claude/skills/docs-writer/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ allowed-tools: Read, Grep, Glob, Bash, Edit, Write, WebSearch, WebFetch, mcp__co

# Bifrost Documentation Writer

Write, update, and review Mintlify MDX documentation for Bifrost features. Performs thorough codebase research across both the Next.js UI and Go backend, validates config.json examples against the schema, and follows established documentation conventions.
Write, update, and review Mintlify MDX documentation for Bifrost features. Performs thorough codebase research across both the React UI and Go backend, validates config.json examples against the schema, and follows established documentation conventions.

## Usage

Expand Down Expand Up @@ -103,7 +103,7 @@ Read the doc and cross-reference against the current codebase to identify:

### 2a. Explore the UI Code

The UI is a Next.js application. Feature pages live under `ui/app/workspace/<feature>/`.
The UI is a React + Vite + TanStack Router application. Feature pages live under `ui/app/workspace/<feature>/`.

```bash
# List the feature directory structure
Expand Down Expand Up @@ -222,7 +222,7 @@ print(json.dumps(defn, indent=2))
- `config_store` - Config store backend (file, postgres)
- `logs_store` - Log store backend (file, postgres)
- `cluster_config` - Cluster/multinode configuration
- `saml_config` - SAML/SSO configuration
- `scim_config` - SCIM/SSO configuration
- `load_balancer_config` - Adaptive load balancer
- `guardrails_config` - Guardrails configuration
- `plugins` - Plugin configurations
Expand All @@ -237,7 +237,7 @@ print(json.dumps(defn, indent=2))
- `mcp_client_config` / `mcp_tool_manager_config` - MCP configs
- `weaviate_config` / `redis_config` / `qdrant_config` / `pinecone_config` - Vector store configs
- `proxy_config` - Proxy configuration
- `cluster_config` / `saml_config` / `load_balancer_config` / `guardrails_config` - Enterprise configs
- `cluster_config` / `scim_config` / `load_balancer_config` / `guardrails_config` - Enterprise configs
- `pricing_config` / `network_config` / `concurrency_config` - Client sub-configs
- `audit_logs_config` - Audit logs config

Expand Down Expand Up @@ -285,7 +285,7 @@ If the feature involves external libraries or protocols:
**Common libraries to research:**
- `mintlify` -- For MDX component syntax (Tabs, Info, Note, etc.)
- `mark3labs/mcp-go` -- For MCP-related features
- `next.js` -- For UI architecture context
- `react` -- For UI architecture context
- Provider SDKs -- For provider-specific features

### 3b. Use WebSearch for Additional Context
Expand Down Expand Up @@ -785,7 +785,7 @@ bifrost/
│ ├── contributing/ # Developer contribution guides
│ ├── benchmarking/ # Performance benchmarks
│ └── changelogs/ # Version changelogs
├── ui/ # Next.js UI application
├── ui/ # React + Vite UI application
│ └── app/workspace/ # Feature pages
│ ├── providers/ # Provider management
│ ├── virtual-keys/ # Virtual key management
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/e2e-test/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -783,7 +783,7 @@ make run-e2e-headed FLOW=<feature>
**Environment variables:**
- `BASE_URL` - Override app URL (default: http://localhost:3000)
- `BIFROST_BASE_URL` - Override Bifrost API URL (default: http://localhost:8080)
- `SKIP_WEB_SERVER=1` - Skip auto-starting Next.js dev server
- `SKIP_WEB_SERVER=1` - Skip auto-starting Vite dev server
- `CI=1` - Enable CI mode (retries, serial execution)

## Step 5: Debug Failing Tests
Expand Down
1 change: 1 addition & 0 deletions .claude/skills/expect
6 changes: 3 additions & 3 deletions .claude/skills/investigate-issue/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ Use the issue's labels and body content to map to codebase areas. The issue temp
| Framework | `framework/`, `framework/configstore/`, `framework/logstore/` | `framework/config.go`, `framework/list.go` |
| Transports (HTTP) | `transports/bifrost-http/` | `transports/bifrost-http/` |
| Plugins | `plugins/` (governance, jsonparser, litellmcompat, etc.) | Plugin-specific `go.mod` files |
| UI (Next.js) | `ui/`, `ui/app/workspace/`, `ui/components/` | Feature-specific workspace pages |
| UI (React) | `ui/`, `ui/app/workspace/`, `ui/components/` | Feature-specific workspace pages |
| Docs | `docs/` | `docs/docs.json`, feature-specific `.mdx` files |

If the issue body mentions specific providers (e.g., "openai", "anthropic", "gemini"), also search:
Expand Down Expand Up @@ -244,7 +244,7 @@ mcp__context7__query-docs(
)
```

Common libraries: `mark3labs/mcp-go` (MCP protocol), `stretchr/testify` (test assertions), `next.js` (UI framework), `playwright` (E2E testing), provider SDKs (OpenAI, Anthropic, etc.)
Common libraries: `mark3labs/mcp-go` (MCP protocol), `stretchr/testify` (test assertions), `react` (UI framework), `playwright` (E2E testing), provider SDKs (OpenAI, Anthropic, etc.)

**Search the web for additional context:**
```
Expand Down Expand Up @@ -624,7 +624,7 @@ bifrost/
│ └── streaming/ # Streaming utilities
├── transports/
│ └── bifrost-http/ # HTTP transport + Docker
├── ui/ # Next.js UI
├── ui/ # React + Vite UI
│ ├── app/workspace/ # Feature pages
│ └── components/ # Shared components
├── plugins/ # Go plugins (governance, otel, etc.)
Expand Down
19 changes: 10 additions & 9 deletions .claude/skills/resolve-pr-comments/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

---
name: resolve-pr-comments
description: Resolve all unresolved PR comments interactively. Use when asked to resolve PR comments, address review feedback, handle CodeRabbit comments, or fix PR review issues. Invoked with /resolve-pr-comments <PR_NUMBER> or /resolve-pr-comments <owner/repo> <PR_NUMBER>.
description: Resolve all unresolved PR comments interactively. Makes local edits only—NEVER commits or pushes. Use when asked to resolve PR comments, address review feedback, handle CodeRabbit comments, or fix PR review issues. Invoked with /resolve-pr-comments <PR_NUMBER> or /resolve-pr-comments <owner/repo> <PR_NUMBER>.
allowed-tools: Read, Grep, Glob, Bash, Edit, Write, WebFetch, Task, AskUserQuestion, TodoWrite
---

Expand Down Expand Up @@ -206,7 +206,7 @@ gh api repos/OWNER/REPO/pulls/PR_NUMBER/comments --paginate | jq '.[] | select(.

## Step 5: Execute Actions

**CRITICAL: Do NOT reply to PR comments until changes are pushed to the remote.** The reviewer cannot verify fixes until the code is pushed. Collect all fixes locally first, then push, then reply.
**CRITICAL: Do NOT reply to PR comments until changes are pushed to the remote.** The reviewer cannot verify fixes until the code is pushed. Collect all fixes locally. This skill NEVER commits or pushes—the user handles that manually.

### For FIX:
1. Make the code change using Edit tool
Expand Down Expand Up @@ -288,13 +288,14 @@ If count is 0 (across all pages), report success. If comments remain:

## Important Notes

1. **NEVER reply "Fixed" until code is pushed** - The reviewer cannot verify fixes until they're on the remote. Make all fixes locally, push, THEN reply.
2. **Always read the file** before suggesting fixes - understand context
3. **Check for existing replies** in the thread before responding
4. **Wait for user approval** on each action - never auto-fix without confirmation
5. **Update tracking file** after each action
6. **Some bots are slow** - CodeRabbit may take minutes to auto-resolve after push
7. **Push code changes** before expecting auto-resolution of FIX actions
1. **NEVER commit or push changes** - This skill only makes local edits. The user handles `git add`, `git commit`, and `git push` themselves. Do not run any git commit or git push commands.
2. **NEVER reply "Fixed" until code is pushed** - The reviewer cannot verify fixes until they're on the remote. Make all fixes locally. Only reply to FIX comments after the user confirms they have pushed (the user pushes manually).
3. **Always read the file** before suggesting fixes - understand context
4. **Check for existing replies** in the thread before responding
5. **Wait for user approval** on each action - never auto-fix without confirmation
6. **Update tracking file** after each action
7. **Some bots are slow** - CodeRabbit may take minutes to auto-resolve after push
8. **User pushes manually** - This skill never commits or pushes; the user must push code changes before expecting auto-resolution of FIX actions

## Error Handling

Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ body:
- Framework
- Transports (HTTP)
- Plugins
- UI (Next.js)
- UI (React)
- Docs
validations:
required: true
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ body:
- Framework
- Transports (HTTP)
- Plugins
- UI (Next.js)
- UI (React)
- Docs
validations:
required: true
Expand Down
2 changes: 1 addition & 1 deletion .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Briefly explain the purpose of this PR and the problem it solves.
- [ ] Transports (HTTP)
- [ ] Providers/Integrations
- [ ] Plugins
- [ ] UI (Next.js)
- [ ] UI (React)
- [ ] Docs

## How to test
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/configs/default/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
"name": "e2e-openai-key",
"value": "env.OPENAI_API_KEY",
"weight": 1,
"models": ["*"],
"use_for_batch_api": true
}
],
Expand All @@ -44,6 +45,7 @@
"name": "e2e-anthropic-key",
"value": "env.ANTHROPIC_API_KEY",
"weight": 1,
"models": ["*"],
"use_for_batch_api": true
}
],
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/configs/withobservability/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"config": {
"service_name": "bifrost",
"collector_url": "http://localhost:4318/v1/traces",
"trace_type": "otel",
"trace_type": "genai_extension",
"protocol": "http"
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
],
"disable_content_logging": false,
"drop_excess_requests": false,
"enable_litellm_fallbacks": false,
"enable_logging": true,
"enforce_auth_on_inference": true,
"initial_pool_size": 300,
Expand Down Expand Up @@ -41,18 +40,16 @@
"mcp": {
"client_configs": [
{
"id": "weather-mcp-server",
"name": "WeatherService",
"connection_type": "http",
"http_url": "http://localhost:8080/mcp",
"is_enabled": true
"client_id": "weather-mcp-server",
"connection_string": "http://localhost:8080/mcp"
},
{
"id": "calendar-mcp-server",
"name": "CalendarService",
"connection_type": "http",
"http_url": "http://localhost:8081/mcp",
"is_enabled": true
"client_id": "calendar-mcp-server",
"connection_string": "http://localhost:8081/mcp"
}
]
},
Expand Down Expand Up @@ -88,6 +85,12 @@
"provider_configs": [
{
"provider": "openai",
"allowed_models": [
"*"
],
"key_ids": [
"*"
],
"weight": 1.0
}
]
Expand All @@ -109,6 +112,12 @@
"provider_configs": [
{
"provider": "openai",
"allowed_models": [
"*"
],
"key_ids": [
"*"
],
"weight": 1.0
}
]
Expand All @@ -130,7 +139,10 @@
{
"name": "openai-primary",
"value": "env.OPENAI_API_KEY",
"weight": 1
"weight": 1,
"models": [
"*"
]
}
]
}
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/configs/withsemanticcache/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
"enabled": true,
"name": "semantic_cache",
"config": {
"dimension": 1,
"vector_store_namespace": "test"
}
}
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/dependabot-alerts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@ jobs:
create-issues:
runs-on: ubuntu-latest
steps:
- name: Harden the runner (Audit all outbound calls)
- name: Harden Runner
uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
with:
egress-policy: audit
egress-policy: block
allowed-endpoints: >
api.github.com:443

- name: Create issues from Dependabot alerts
env:
Expand Down
9 changes: 7 additions & 2 deletions .github/workflows/dependency-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,15 @@ jobs:
dependency-review:
runs-on: ubuntu-latest
steps:
- name: Harden the runner (Audit all outbound calls)
- name: Harden Runner
uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
with:
egress-policy: audit
egress-policy: block
allowed-endpoints: >
api.deps.dev:443
api.github.com:443
api.securityscorecards.dev:443
github.com:443

- name: 'Checkout Repository'
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
Expand Down
12 changes: 10 additions & 2 deletions .github/workflows/docs-validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,18 @@ jobs:
name: Check Broken Links
runs-on: ubuntu-latest
steps:
- name: Harden the runner (Audit all outbound calls)
- name: Harden Runner
uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
with:
egress-policy: audit
egress-policy: block
allowed-endpoints: >
api.github.com:443
github.com:443
nodejs.org:443
ph.mintlify.com:443
registry.npmjs.org:443
release-assets.githubusercontent.com:443
storage.googleapis.com:443

- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/e2e-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0
with:
go-version: "1.26.2"
go-version: "1.26.1"

- name: Set up Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
Expand Down
Loading