Skip to content
Merged

V1.5.0 #2245

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
213 commits
Select commit Hold shift + click to select a range
daba2a0
refactor: standardize empty array conventions for VK Provider & MCP C…
Pratham-Mishra04 Mar 18, 2026
3fd203c
feat: add MCP auto tool injection toggle (#1933)
Pratham-Mishra04 Mar 18, 2026
0e21321
feat: VK MCP config now works as an AllowList (#1940)
Pratham-Mishra04 Mar 18, 2026
bc9a928
refactor: standardize empty array conventions for VK Provider Config …
Pratham-Mishra04 Mar 18, 2026
812ed9a
refactor: standardize empty array conventions for allowed models (#2113)
Pratham-Mishra04 Mar 18, 2026
52acd3b
refactor: replace string slices with WhiteList for allowlist fields (…
Pratham-Mishra04 Mar 18, 2026
4cce7f8
feat: add request-level extra headers support for MCP tool execution …
Pratham-Mishra04 Mar 18, 2026
c221d60
fix: apply MCP tool filtering headers to tools/list response when usi…
Pratham-Mishra04 Mar 18, 2026
92174e1
refactor: parallelize model listing for providers to speed up startup…
Pratham-Mishra04 Mar 18, 2026
2285886
fix: reorder migrations and set AllowAllKeys to true for virtual key …
Pratham-Mishra04 Mar 18, 2026
0e42b45
Merge branch 'main' into v1.5.0
Pratham-Mishra04 Mar 19, 2026
c09ed7f
feat: implement scoped pricing override
jerkeyray Feb 27, 2026
18a5f10
refactor: custom pricing refactor
Pratham-Mishra04 Mar 19, 2026
6ffb56b
Merge branch 'main' into v1.5.0
Pratham-Mishra04 Mar 22, 2026
723809a
Merge branch 'main' into v1.5.0
Pratham-Mishra04 Mar 23, 2026
adc3bd2
fix: resolve merge conflicts in config loading and governance functio…
Pratham-Mishra04 Mar 23, 2026
83d0f14
feat: add Stability AI model support for Bedrock image generation (#2…
Pratham-Mishra04 Mar 23, 2026
d41b51a
feat: add Stability AI image edit models support to Bedrock provider …
Radheshg04 Mar 23, 2026
11f1f5f
Merge branch 'main' into v1.5.0
Pratham-Mishra04 Mar 23, 2026
e204b3d
fix: send back accumulated usage in MCP agent mode (#2246)
Pratham-Mishra04 Mar 24, 2026
dce2cbb
[codemode]: fixing string escape corruption, enable top-level control…
Madhuvod Mar 24, 2026
0e06156
logging in plugins (#2215)
akshaydeo Mar 24, 2026
dc6d9c5
fix: handling text, vtt, srt response format for transcriptions (#2102)
sammaji Mar 25, 2026
de0fa75
feat: add virtual key access management for MCP clients (#2255)
Pratham-Mishra04 Mar 25, 2026
d756b63
feat: adds option to allow MCP clients to run on all virtual keys (#2…
Pratham-Mishra04 Mar 25, 2026
5853172
Merge branch 'main' into v1.5.0
Pratham-Mishra04 Mar 25, 2026
06af82a
feat: add provider keys CRUD to configstore and in-memory store (#2159)
danpiths Mar 25, 2026
7211143
feat: add provider keys HTTP handlers and refactor optional keys (#2160)
danpiths Mar 25, 2026
72f4ba2
feat: migrate frontend to dedicated provider keys API (#2161)
danpiths Mar 25, 2026
3dddc13
refactor: replace string slice with WhiteList type for model restrict…
Pratham-Mishra04 Mar 25, 2026
8fc9bf3
feat: add Plus icon and responsive text to pricing override create bu…
Pratham-Mishra04 Mar 25, 2026
511804c
Merge branch 'main' into v1.5.0
Pratham-Mishra04 Mar 26, 2026
e92af44
refactor: blacklist models on new convention (#2305)
TejasGhatte Mar 27, 2026
e4ebff1
minor fix add blacklisted model field in tableKeyFromSchemaKey (#2324)
TejasGhatte Mar 27, 2026
b855438
feat: add image edit input view on logs (#2321)
Radheshg04 Mar 27, 2026
16efb70
refactor: extract size conversion logic to shared utils for image pro…
Radheshg04 Mar 27, 2026
2dd45b0
Merge branch 'main' into v1.5.0
akshaydeo Mar 28, 2026
c390fac
Merge branch 'main' into v1.5.0 (#2388)
impoiler Mar 30, 2026
3f1ac35
feat: add virtual key support to model filtering and selection (#2378)
Pratham-Mishra04 Mar 30, 2026
a221382
Merge branch 'main' into v1.5.0
akshaydeo Mar 30, 2026
3f1dcb8
feat: updated debugging form for better ux (#2390)
Radheshg04 Apr 1, 2026
c18481f
Merge branch 'main' into v1.5.0
Pratham-Mishra04 Apr 1, 2026
87679ff
chore: adds migration guide for 1.5 and test fixes (#2224)
Pratham-Mishra04 Apr 1, 2026
1418ca2
docs: remove image edits support from Replicate generations endpoint …
Radheshg04 Apr 1, 2026
78ab31d
Merge branch 'main' into v1.5.0
akshaydeo Apr 1, 2026
1d2ecdd
1.5.0-pretelease1 (#2447)
akshaydeo Apr 1, 2026
908dd1c
docs: changelog updates (#2449)
Pratham-Mishra04 Apr 1, 2026
dee8e7d
fix version detection for minor patches (#2451)
akshaydeo Apr 1, 2026
a44ef5c
feat: adds support for multiple deployments in ollama and sgl (#2386)
sammaji Apr 1, 2026
39c7555
helm chart upgrade --skip-pipeline (#2452)
akshaydeo Apr 1, 2026
7d25b14
chore: standardize model allowlist configuration with wildcard defaul…
Pratham-Mishra04 Apr 1, 2026
7c1189f
framework: bump core to v1.5.0 --skip-pipeline
github-actions[bot] Apr 1, 2026
891cb93
plugins/governance: bump core to v1.5.0 and framework to v1.3.0 --ski…
github-actions[bot] Apr 1, 2026
d62d540
plugins/jsonparser: bump core to v1.5.0 and framework to v1.3.0 --ski…
github-actions[bot] Apr 1, 2026
0431545
plugins/litellmcompat: bump core to v1.5.0 and framework to v1.3.0 --…
github-actions[bot] Apr 1, 2026
bbda3b3
plugins/logging: bump core to v1.5.0 and framework to v1.3.0 --skip-p…
github-actions[bot] Apr 1, 2026
e645a8e
plugins/maxim: bump core to v1.5.0 and framework to v1.3.0 --skip-pip…
github-actions[bot] Apr 1, 2026
3876bee
plugins/mocker: bump core to v1.5.0 and framework to v1.3.0 --skip-pi…
github-actions[bot] Apr 1, 2026
0345f1a
plugins/otel: bump core to v1.5.0 and framework to v1.3.0 --skip-pipe…
github-actions[bot] Apr 1, 2026
24559a1
plugins/semanticcache: bump core to v1.5.0 and framework to v1.3.0 --…
github-actions[bot] Apr 1, 2026
d90a15d
plugins/telemetry: bump core to v1.5.0 and framework to v1.3.0 --skip…
github-actions[bot] Apr 1, 2026
9fa9785
transports: update dependencies --skip-pipeline
github-actions[bot] Apr 1, 2026
b510f1e
Adds changelog for v1.5.0-prerelease1 --skip-pipeline
github-actions[bot] Apr 1, 2026
d2e4979
feat: add rule chaining support to routing engine (#2319)
Pratham-Mishra04 Apr 2, 2026
21fb8d2
feat: add routing rules tree visualization (#2297)
Pratham-Mishra04 Apr 2, 2026
e15ec70
feat: add model alias (#2355)
Pratham-Mishra04 Apr 2, 2026
1bc01aa
feat: fixes routing rules tree view with better layout and node UI (#…
roroghost17 Apr 2, 2026
48868d4
docs: adds changelogs and migration guides (#2474)
Pratham-Mishra04 Apr 2, 2026
f32e177
access profiles (#2363)
akshaydeo Apr 6, 2026
449224d
user level oauth for mcp gateway (#2418)
akshaydeo Apr 6, 2026
1250e01
docs: adds model alias docs (#2501)
Pratham-Mishra04 Apr 6, 2026
63f2caa
fix: vertex endpoint correction (#2519)
TejasGhatte Apr 6, 2026
b88477f
fix: Build fix for provider config (#2391)
roroghost17 Apr 6, 2026
34e0c61
fix: disable SQLite foreign key checks during migration (#2523)
danpiths Apr 6, 2026
3aedafb
feat: adds-prompts-plugin-with-direct-key-header-resolver (#2375)
roroghost17 Apr 6, 2026
a55b566
feat: add selective message inclusion when committing prompt sessions…
impoiler Apr 6, 2026
cf9908d
docs: Adds documentation for prompt plugin (#2524)
roroghost17 Apr 6, 2026
29ba145
fix: preserve routing rule targets for genai and bedrock paths (#2522)
Pratham-Mishra04 Apr 6, 2026
017fd86
fix: include raw model ID in list-models output alongside aliases (#2…
Pratham-Mishra04 Apr 6, 2026
9878c76
test: add v1.5.0-prerelease1 migration coverage and handle dropped co…
Pratham-Mishra04 Apr 6, 2026
887999d
fix: sqlite migration conns and error handling + vk not found message…
danpiths Apr 7, 2026
aa27216
feat: add realtime provider interfaces, schemas, and engine hooks (#2…
danpiths Apr 7, 2026
9c0078e
feat: add session log storage and realtime request normalization (#2338)
danpiths Apr 7, 2026
949b562
feat: add realtime turn logging to logging plugin (#2339)
danpiths Apr 7, 2026
7db9c05
feat: add realtime session state and transport context helpers (#2340)
danpiths Apr 7, 2026
aa4376b
feat: add realtime WebSocket, WebRTC, and client secret handlers (#2341)
danpiths Apr 7, 2026
a08e761
feat: add realtime session browsing and log filtering UI (#2342)
danpiths Apr 7, 2026
2f6ec55
test: add realtime WebSocket and client secret integration tests (#2343)
danpiths Apr 7, 2026
e18a838
feat: add embeddings, image gen, edit and variation to bedrock integr…
Radheshg04 Apr 7, 2026
a3e9e4a
adds support for tracking userId, teamId, customerId, and businessUni…
akshaydeo Apr 7, 2026
2ae64e6
Merge branch 'main' into v1.5.0
akshaydeo Apr 7, 2026
a811d83
Merge branch 'main' into v1.5.0
akshaydeo Apr 8, 2026
9442749
feat: add per-user OAuth consent flow with identity selection and MCP…
Pratham-Mishra04 Apr 8, 2026
b783fce
fix: provider level multiline budget duplication issue and unfiltered…
danpiths Apr 8, 2026
1452af6
fix: minor fixes and doc additions (#2562)
Pratham-Mishra04 Apr 8, 2026
51ec9b0
feat: add IsSet method to EnvVar and improve provider auth validation…
impoiler Apr 8, 2026
75cb667
fix: auto-redact env-backed values in EnvVar JSON serialization (#2540)
impoiler Apr 8, 2026
dc7bd24
prerelease 2 cut (#2568)
akshaydeo Apr 8, 2026
6c5f942
test fixes (#2569)
akshaydeo Apr 8, 2026
047d101
test fixes (#2570)
akshaydeo Apr 8, 2026
d9d12b1
fixes failing tests (#2571)
akshaydeo Apr 8, 2026
d787154
framework: bump core to v1.5.1 --skip-pipeline
github-actions[bot] Apr 8, 2026
3c10ee3
plugins/governance: bump core to v1.5.1 and framework to v1.3.1 --ski…
github-actions[bot] Apr 8, 2026
412a2ad
plugins/jsonparser: bump core to v1.5.1 and framework to v1.3.1 --ski…
github-actions[bot] Apr 8, 2026
27e997f
plugins/litellmcompat: bump core to v1.5.1 and framework to v1.3.1 --…
github-actions[bot] Apr 8, 2026
40251d4
plugins/logging: bump core to v1.5.1 and framework to v1.3.1 --skip-p…
github-actions[bot] Apr 8, 2026
4c4903b
plugins/maxim: bump core to v1.5.1 and framework to v1.3.1 --skip-pip…
github-actions[bot] Apr 8, 2026
9c63165
plugins/mocker: bump core to v1.5.1 and framework to v1.3.1 --skip-pi…
github-actions[bot] Apr 8, 2026
d086ad1
plugins/otel: bump core to v1.5.1 and framework to v1.3.1 --skip-pipe…
github-actions[bot] Apr 8, 2026
7bd2315
plugins/telemetry: bump core to v1.5.1 and framework to v1.3.1 --skip…
github-actions[bot] Apr 8, 2026
65bcce7
updated mocker in semanticcache plugin (#2572)
akshaydeo Apr 8, 2026
a18a864
update mocker to 1.5.1 (#2573)
akshaydeo Apr 8, 2026
8dc5ca8
transports: update dependencies --skip-pipeline
github-actions[bot] Apr 8, 2026
33504cf
Adds changelog for v1.5.0-prerelease2 --skip-pipeline
github-actions[bot] Apr 8, 2026
e5e4b41
refactor: restructure model catalog with parallel syncs (#2542)
Pratham-Mishra04 Apr 9, 2026
4371d4c
streaming blocker fix (#2589)
akshaydeo Apr 9, 2026
fa2920e
cve fixes (#2607)
akshaydeo Apr 9, 2026
0318d3f
fix: cleanup OAuth sessions on virtual key deletion and prevent race …
Pratham-Mishra04 Apr 9, 2026
068f528
migration fix (#2579)
akshaydeo Apr 10, 2026
0e48702
refactor: improve key validation error handling and logging (#2609)
Pratham-Mishra04 Apr 10, 2026
1015b06
fix: replace find-then-upsert with atomic ON CONFLICT to prevent dead…
Pratham-Mishra04 Apr 10, 2026
37f0d07
feat: add version 1 compatibility mode for v1.4.x allow-list semantic…
Pratham-Mishra04 Apr 10, 2026
897e7b0
fix: litellm compat (#2039)
sammaji Apr 10, 2026
68cf584
fix: core test fixes (#2593)
TejasGhatte Apr 10, 2026
6acfb4e
add object store support for log_store to avoid bloating db (#2509)
akshaydeo Apr 11, 2026
99bc2a9
Merge branch 'main' into v1.5.0
akshaydeo Apr 13, 2026
ab8973c
chore: merge build fixes (#2674)
Pratham-Mishra04 Apr 13, 2026
c54aaa3
feat: add flex and 272k token tier pricing overrides fields (#2677)
Pratham-Mishra04 Apr 13, 2026
762f897
feat: add link to create a provider if none present (#2678)
BearTS Apr 13, 2026
e9d467f
exception fixes (#2676)
akshaydeo Apr 13, 2026
8d99da7
build fixes (#2684)
akshaydeo Apr 13, 2026
40b64b3
build fixes v2 (#2685)
akshaydeo Apr 13, 2026
389c2a3
test case fix for bifrost-http (#2687)
akshaydeo Apr 13, 2026
1755117
fixes pricing tests (#2688)
akshaydeo Apr 13, 2026
70e8179
config test fixes (#2689)
akshaydeo Apr 13, 2026
4b49560
framework: bump core to v1.5.2 --skip-pipeline
github-actions[bot] Apr 13, 2026
c8091f2
plugins/compat: bump core to v1.5.2 and framework to v1.3.2 --skip-pi…
github-actions[bot] Apr 13, 2026
e5bb986
plugins/governance: bump core to v1.5.2 and framework to v1.3.2 --ski…
github-actions[bot] Apr 13, 2026
ae03e6a
plugins/jsonparser: bump core to v1.5.2 and framework to v1.3.2 --ski…
github-actions[bot] Apr 13, 2026
e8f6b4d
plugins/logging: bump core to v1.5.2 and framework to v1.3.2 --skip-p…
github-actions[bot] Apr 13, 2026
3a77376
plugins/maxim: bump core to v1.5.2 and framework to v1.3.2 --skip-pip…
github-actions[bot] Apr 13, 2026
eb4b08a
plugins/mocker: bump core to v1.5.2 and framework to v1.3.2 --skip-pi…
github-actions[bot] Apr 13, 2026
f245262
plugins/otel: bump core to v1.5.2 and framework to v1.3.2 --skip-pipe…
github-actions[bot] Apr 13, 2026
251c867
plugins/prompts: bump core to v1.5.2 and framework to v1.3.2 --skip-p…
github-actions[bot] Apr 13, 2026
001eef1
plugins/semanticcache: bump core to v1.5.2 and framework to v1.3.2 --…
github-actions[bot] Apr 13, 2026
813ec77
plugins/telemetry: bump core to v1.5.2 and framework to v1.3.2 --skip…
github-actions[bot] Apr 13, 2026
c2c01ae
transports: update dependencies --skip-pipeline
github-actions[bot] Apr 13, 2026
200ec73
Adds changelog for v1.5.0-prerelease3 --skip-pipeline
github-actions[bot] Apr 13, 2026
b5c32ff
fix: allow custom providers without a list models endpoint to pass in…
danpiths Apr 14, 2026
c87048d
feat: per-request overrides for raw request/response capture (#2671)
Pratham-Mishra04 Apr 14, 2026
6b64a64
feat: NextJS to ReactJS + Vite + TanStack Router (#2554)
impoiler Apr 14, 2026
9d32f2f
docs: add frontend code guidelines and update UI tech stack to React …
impoiler Apr 14, 2026
d8b161c
Fix: removed unused dependencies (#2629)
impoiler Apr 14, 2026
c14e522
feat: use oxfmt and oxlint instead of eslint and prettier (#2632)
impoiler Apr 14, 2026
c23e736
feat: optimize bundle size to the last bit (#2643)
impoiler Apr 14, 2026
d533858
refactor: remove unused imports and fix lint errors (#2668)
impoiler Apr 14, 2026
8ccf66f
refactor: format the frontend codebase with new tooling (#2696)
impoiler Apr 14, 2026
0f6222c
feat: optimize UI dependency installation with conditional npm ci (#2…
impoiler Apr 14, 2026
280f4e7
feat: add self-service virtual key quota endpoint (#2675)
impoiler Apr 14, 2026
5684471
feat: add service provider logos and update branding to webp format (…
impoiler Apr 14, 2026
4e093e3
feat: removed Next.js-related content from the codebase (#2707)
impoiler Apr 14, 2026
bc36820
refactor: update documentation and configs from Next.js to React + Vi…
impoiler Apr 14, 2026
50e29e5
helm fixes (#2713)
akshaydeo Apr 14, 2026
b1a1533
fix: clear trace id in async request for logging (#2709)
TejasGhatte Apr 14, 2026
c3d8543
updates helm-chart checks (#2718)
akshaydeo Apr 14, 2026
3b2a06b
fixed helm-release action (#2720)
akshaydeo Apr 14, 2026
9d0a8d3
fixes validate schema from config.go (#2721)
akshaydeo Apr 14, 2026
d28297a
actions fix for helm release (#2722)
akshaydeo Apr 14, 2026
225199f
fix: add proper checks for non existent provider configs while checki…
danpiths Apr 15, 2026
cee3909
fix: added the .next entry back to .gitignore for backward compatibil…
impoiler Apr 15, 2026
10463b2
fix: read values from scim_config instead of saml_config due to misma…
BearTS Apr 15, 2026
30e61a0
fixes helm release cut for non-main branch (#2733)
akshaydeo Apr 15, 2026
48fbbf8
helm fix (#2735)
akshaydeo Apr 15, 2026
394723f
feat: add provider validation on virtual keys (#2705)
BearTS Apr 15, 2026
5df15d8
refactor: hardcode azure, sgl, and nebius provider icon sizes to 14px…
impoiler Apr 15, 2026
d56fa10
docs update (#2704)
akshaydeo Apr 15, 2026
09ce541
adds all providers and virtual keys to helm example (#2758)
akshaydeo Apr 16, 2026
42e49ca
ci: support extraEnv map on helm values (#2764)
BearTS Apr 16, 2026
fa6b690
refactor: remove unused sheet imports and header from sidebar compone…
impoiler Apr 16, 2026
a9ddf68
feat: add Pulse hot reloading support as alternative to Air (#2254)
Pratham-Mishra04 Apr 16, 2026
38db2a1
refactor: implement key rotation on rate-limit retries (#2654)
Pratham-Mishra04 Apr 16, 2026
8bd4a88
fix: batch VK config retrieval for list mcp api (#2701)
Pratham-Mishra04 Apr 16, 2026
a9e4357
feat: add user-facing success rate metric for fallback chains (#2714)
Pratham-Mishra04 Apr 16, 2026
5b574dd
docs: add retries docs and enhanced provider specific configuration g…
Pratham-Mishra04 Apr 16, 2026
29df156
feat: add sidebar filters to logs page (#2731)
impoiler Apr 16, 2026
432e945
refactor: replace FilterPopover with LogsSidebar in dashboard layout …
impoiler Apr 16, 2026
a54826f
refactor: move LogsSidebar to shared LogsFilterSidebar component and …
impoiler Apr 16, 2026
fcb64cb
refactor: replace MCP logs filter dropdown with dedicated sidebar (#2…
impoiler Apr 16, 2026
f68bec0
refactor: extract header components and add collapsible filter sideba…
impoiler Apr 16, 2026
daa3b09
refactor: improve chart card spacing and remove unused routing logic …
impoiler Apr 16, 2026
18e9062
feat: replace skeleton loading states with NumberFlow animations in l…
impoiler Apr 16, 2026
b4e1487
feat: add variables support to prompt sessions and versions with pers…
impoiler Apr 16, 2026
6eeba0a
feat: add variables support to prompt sessions and versions with data…
impoiler Apr 16, 2026
e66d191
refactor: extract CEL rule builder into reusable component and add me…
impoiler Apr 16, 2026
75d7903
refactor: deleted subpages from the prompt repo (#2327)
impoiler Apr 16, 2026
27019f1
feat: add prompt deployment view to settings panel with updated styli…
impoiler Apr 16, 2026
5baca4b
refactor: Extracts routing utilites to a separate package (#2544)
roroghost17 Apr 16, 2026
4f81099
feat: updates prompts plugin flow (#2545)
roroghost17 Apr 16, 2026
a1680a6
refactor: updates prompt model parameters UI (#2548)
roroghost17 Apr 16, 2026
46c171b
feat: wires prompt plugin selections into logs view (#2592)
roroghost17 Apr 16, 2026
84cd58f
docs: updates docs for prompts plugin (#2763)
roroghost17 Apr 16, 2026
55ab7c1
docs: restructure helm guide into comprehensive multi-page reference …
BearTS Apr 16, 2026
fca5492
feat: add dynamic metadata columns to logs table (#2766)
impoiler Apr 17, 2026
34e3ce5
docs: add doc for config json (#2790)
BearTS Apr 17, 2026
c75a802
feat: assign virtual keys on teams page directly (#2757)
BearTS Apr 17, 2026
f2687a2
feat: add model details endpoint (#2803)
BearTS Apr 17, 2026
34d5d79
feat: consolidate user identity context key and propagate user name (…
danpiths Apr 17, 2026
a77f037
feat: show live access-profile-backed usage in virtual key views (#2761)
danpiths Apr 17, 2026
1269897
feat: surface user identity in log detail view and filters (#2762)
danpiths Apr 17, 2026
f6b481c
Merge branch 'main' into v1.5.0
akshaydeo Apr 18, 2026
676eb7a
backmerge (#2821)
akshaydeo Apr 18, 2026
0da189c
Merge branch 'main' into v1.5.0
akshaydeo Apr 18, 2026
f42eac2
docs updates
akshaydeo Apr 18, 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
20 changes: 15 additions & 5 deletions .github/workflows/helm-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ on:
branches:
- main
paths:
- 'helm-charts/bifrost/**'
- '.github/workflows/helm-release.yml'
- "helm-charts/bifrost/**"
- ".github/workflows/helm-release.yml"
workflow_dispatch:

permissions:
Expand Down Expand Up @@ -46,6 +46,11 @@ jobs:
with:
version: v4.0.0

- name: Set up Go
uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0
with:
go-version: "1.26.2"

- name: Run chart-testing (lint)
run: |
helm lint helm-charts/bifrost
Expand All @@ -60,6 +65,11 @@ jobs:
chmod +x .github/workflows/scripts/validate-helm-config-fields.sh
.github/workflows/scripts/validate-helm-config-fields.sh

- name: Validate Go ↔ config.schema.json ↔ helm-chart sync (schemasync)
run: |
chmod +x .github/workflows/scripts/validate-schema-sync.sh
.github/workflows/scripts/validate-schema-sync.sh

- name: Get chart version
id: chart-version
run: |
Expand Down Expand Up @@ -108,12 +118,12 @@ jobs:

- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e # v4.0.0
if: github.ref == 'refs/heads/main'
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/v1.5.0'
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Restrict deploy branch gate to main only.

Line 111 still permits deployment from refs/heads/v1.5.0 (via workflow_dispatch), which re-opens maintenance-branch publishing to GitHub Pages and undermines the main-only release policy.

Suggested fix
-        if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/v1.5.0'
+        if: github.ref == 'refs/heads/main'
📝 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
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/v1.5.0'
if: github.ref == 'refs/heads/main'
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/helm-release.yml at line 111, The branch gating condition
currently allows both 'refs/heads/main' and 'refs/heads/v1.5.0' in the workflow
if expression; update the if expression used for the deploy gate to only permit
'refs/heads/main' (remove the 'refs/heads/v1.5.0' alternative) so deployment via
workflow_dispatch cannot target the maintenance branch; locate the conditional
expression (the if: github.ref == 'refs/heads/main' || github.ref ==
'refs/heads/v1.5.0') and change it to only check for 'refs/heads/main'.

with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./helm-charts
destination_dir: helm-charts
keep_files: false
enable_jekyll: false
user_name: 'github-actions[bot]'
user_email: 'github-actions[bot]@users.noreply.github.com'
user_name: "github-actions[bot]"
user_email: "github-actions[bot]@users.noreply.github.com"
Loading
Loading