Commit Graph
351 Commits
Author SHA1 Message Date
whit3rabbitandClaude Sonnet 4.6 b5930eee51 chore: update Cargo.lock for 0.9.8 version bump
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 22:40:44 -05:00
whit3rabbitandClaude Sonnet 4.6 ad4fbf8dd4 style: cargo fmt, fix CHANGELOG release instruction
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v0.9.8
2026-06-12 22:39:39 -05:00
whit3rabbitandClaude Sonnet 4.6 681b0d47d9 chore: bump to 0.9.8, add CHANGELOG, cargo update
- Version: 0.9.7 → 0.9.8 (workspace + all pinned inter-crate deps)
- New: AnthropicMessagesClient passthrough client
- New: RetryPolicy struct, retry_transport_errors flag, extra_header builder
- New: ssrf_allow_loopback, ssrf_allow_private, extra_headers in HttpClientConfig
- New: ChatMessage::effective_text(), claude-fable-5 in provider catalog
- Fix: relaxed serde defaults for lax local backends (Ollama, llama.cpp)
- Fix: warn on empty choices in openai_to_anthropic_response
- ci: create-release now uses CHANGELOG section as release body
- docs: CHANGELOG.md created, release process documented in CLAUDE.md
- deps: cargo update (~105 packages, tokio 1.52, axum 0.8.9, rustls 0.23.40)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 22:37:09 -05:00
whit3rabbit 517b6f4ea4 Bump version to 0.9.7 2026-06-07 15:51:43 -05:00
whit3rabbit 8b4abfdf7d chore: bump version to 0.9.7 v0.9.7 2026-06-07 15:38:56 -05:00
whit3rabbit d87a72cc66 Merge pull request #22 from whit3rabbit/codex/batch-builds-ci
[codex] preserve Anthropic tool context and provider catalog
2026-06-07 12:57:57 -05:00
whit3rabbit 878097b3b0 Merge remote-tracking branch 'origin/main' into codex/batch-builds-ci
# Conflicts:
#	crates/proxy/src/main.rs
#	crates/proxy/src/server/chat_completions.rs
2026-06-07 12:52:57 -05:00
whit3rabbit 88f18ee33a fix: use hardened HTTP client for provider model refresh (#20) 2026-06-07 11:31:49 -05:00
whit3rabbit a8c4330e58 Fix chat cache key collisions for Anthropic extensions (#19) 2026-06-07 11:31:35 -05:00
dependabot[bot] ee0d8276bd chore(deps): bump react-router and react-router-dom (#21)
Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) to 6.30.4 and updates ancestor dependency [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom). These dependencies need to be updated together.


Updates `react-router` from 6.30.3 to 6.30.4
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/react-router@6.30.4/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@6.30.4/packages/react-router)

Updates `react-router-dom` from 6.30.3 to 6.30.4
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/react-router-dom@6.30.4/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.30.4/packages/react-router-dom)

---
updated-dependencies:
- dependency-name: react-router
  dependency-version: 6.30.4
  dependency-type: indirect
- dependency-name: react-router-dom
  dependency-version: 6.30.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-07 11:31:17 -05:00
whit3rabbit 3eae037f62 Wire Anthropic extensions through proxy 2026-06-07 10:20:07 -05:00
whit3rabbit 69ba9adefd Preserve Anthropic tool context in translation 2026-06-07 10:19:59 -05:00
whit3rabbit 1b902c5310 Add provider catalog runtime support 2026-06-07 10:19:50 -05:00
whit3rabbit dd82b01799 Ignore synrepo cache 2026-06-07 10:19:41 -05:00
github-actions[bot] 2f4f62d0f8 bot: update model pricing from LiteLLM [skip ci] 2026-06-01 07:33:46 +00:00
github-actions[bot] d7e2740a38 bot: update model pricing from LiteLLM [skip ci] 2026-05-25 07:22:42 +00:00
Enes GulesandContext7 Bot 90dc594029 docs: add auto-generated code documentation (#18)
Co-authored-by: Context7 Bot <bot@context7.com>
2026-05-23 21:09:23 -05:00
whit3rabbit 2713f34336 Bump GitHub Actions to Node 24 releases 2026-05-23 20:47:42 -05:00
whit3rabbit 16554668c8 feat: add context7 configuration file with project URL and public key 2026-05-23 20:05:33 -05:00
whit3rabbit 45e18c83d2 chore: bump version to 0.9.6 v0.9.6 2026-05-23 16:39:43 -05:00
whit3rabbit f78c925b6a Align provider catalog with LiteLLM canonical IDs 2026-05-23 16:34:03 -05:00
whit3rabbit c68bb88f85 chore: bump version to 0.9.5 v0.9.5 2026-05-23 15:35:01 -05:00
dependabot[bot]andwhit3rabbit 9d01381166 chore(deps): bump rand from 0.8.5 to 0.8.6 (#5)
Bumps [rand](https://github.com/rust-random/rand) from 0.8.5 to 0.8.6.
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.com/rust-random/rand/blob/0.8.6/CHANGELOG.md)
- [Commits](https://github.com/rust-random/rand/compare/0.8.5...0.8.6)

---
updated-dependencies:
- dependency-name: rand
  dependency-version: 0.8.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: whit3rabbit <whit3rabbit@users.noreply.github.com>
2026-05-23 15:28:28 -05:00
whit3rabbit 24b2af5d50 Require client API key for Anthropic middleware to prevent auth bypass (#10)
* Harden Anthropic middleware with required client API key

* docs: show required middleware client key
2026-05-23 15:23:29 -05:00
dependabot[bot] 2a069dfe08 chore(deps): bump openssl from 0.10.76 to 0.10.80 (#9)
Bumps [openssl](https://github.com/rust-openssl/rust-openssl) from 0.10.76 to 0.10.80.
- [Release notes](https://github.com/rust-openssl/rust-openssl/releases)
- [Commits](https://github.com/rust-openssl/rust-openssl/compare/openssl-v0.10.76...openssl-v0.10.80)

---
updated-dependencies:
- dependency-name: openssl
  dependency-version: 0.10.80
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-23 15:22:43 -05:00
whit3rabbit 5e4a5ae263 fix(cache): isolate response cache by backend/auth context and include Anthropic system prompt (#12)
* fix(cache): scope response cache by auth and backend

* fix: scope cache by all accepted credentials
2026-05-23 15:22:17 -05:00
whit3rabbit bb2d0e6bb3 fix(proxy): enforce virtual-key model allowlist for batch create (#16) 2026-05-23 15:21:09 -05:00
whit3rabbit 85477cee8b fix: enforce virtual-key model allowlist on model-selecting passthrough routes (#15)
* fix(proxy): enforce virtual key model allowlist on passthrough endpoints

* fix: enforce virtual key policy on model passthroughs
2026-05-23 15:20:58 -05:00
whit3rabbit 7161f2b28b fix(proxy): enforce virtual-key TPM when Redis rate limiter is enabled (#14)
* fix(proxy): record virtual-key TPM usage in redis limiter

* fix: keep redis TPM key only in redis builds
2026-05-23 15:20:44 -05:00
whit3rabbit c29b523554 fix: reject unknown models when model router is active (#13)
* fix: reject unknown models when model router is active

* fix: use existing invalid request error for model router
2026-05-23 15:20:29 -05:00
whit3rabbit 98bc1c833a fix: include pricing asset in proxy crate v0.9.4 2026-05-23 15:03:09 -05:00
whit3rabbit 4cdfef82e3 chore: prepare 0.9.3 release v0.9.3 2026-05-23 12:28:08 -05:00
whit3rabbit 1f300d8566 Fix virtual-key accounting across generation routes 2026-05-23 12:22:39 -05:00
whit3rabbit 158815acbd Block virtual-key passthrough bypass 2026-05-23 12:22:39 -05:00
whit3rabbit 025d992ca3 Add in-process chat completion runtime 2026-05-23 12:22:39 -05:00
github-actions[bot] fea7a8e9cd bot: update model pricing from LiteLLM [skip ci] 2026-05-18 07:11:57 +00:00
github-actions[bot] 5618e975e9 bot: update model pricing from LiteLLM [skip ci] 2026-05-11 07:00:50 +00:00
github-actions[bot] 856159684c bot: update model pricing from LiteLLM [skip ci] 2026-04-27 06:45:30 +00:00
github-actions[bot] 69929e494b bot: update model pricing from LiteLLM [skip ci] 2026-04-20 06:37:28 +00:00
whit3rabbitandClaude Opus 4.7 3d62da3a68 chore: fix Rust 1.95 clippy lints
CI runs stable (now 1.95) which surfaces two new lints my 1.94 local
check missed:

- collapsible_match in reverse_message_map.rs: collapse the empty
  guard branch into a match arm with a guard.
- manual_checked_ops in admin/db.rs: replace the explicit zero check
  with checked_div(...).unwrap_or(0).
- collapsible_match in admin/ws.rs: clippy's suggested guard form
  fails to compile because Bytes can't be moved in a pattern guard.
  Apply a targeted #[allow] with a comment explaining why.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
v0.9.2
2026-04-18 19:41:46 -05:00
whit3rabbitandClaude Opus 4.7 4cc854f6ef ci: clean up publish job for tag-triggered crates.io release
Drop job-level continue-on-error: true (was masking real failures since
each step already handles exit 101 inline). Remove the duplicate
anyllm_batch_engine step that lacked the exit-101 swallow. Canonical
publish order is now: translate -> providers -> client -> batch_engine
-> proxy with 30s sleeps for index propagation.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 19:26:36 -05:00
whit3rabbitandClaude Opus 4.7 6de126893f chore: fix all clippy lints across workspace
- tools_map: use std::slice::from_ref over &[clone()] in 4 tests
- gemini_streaming_map: rewrite match as matches!
- backend/mod.rs: move impl BackendClient before #[cfg(test)] mod tests
- middleware: replace .filter().last() with .rfind() (xff parsing)
- middleware: drop dead `|| true` in is_ip_allowed smoke test
- sse: drop blank line between doc comment and assert_sse_ok
- streaming example: collapse nested if-let into outer match arms
- tool_execution tests: array literal over vec! for one-off slices
- live_bedrock: use is_some_and instead of map_or(false, _)
- live_api / live_responses: contains() over iter().any() on &[&str]

All test-only / example changes; no production behavior change.
1130 tests pass, fmt clean, clippy -D warnings clean.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 19:11:35 -05:00
whit3rabbitandClaude Opus 4.7 25f37dd9a4 docs(crates): add READMEs for client, batch_engine, proxy; bump 0.9.2
Each new README places the crate inside the anyllm-proxy workspace and
includes verified library-use examples for downstream consumers.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 19:04:38 -05:00
whit3rabbitandClaude Opus 4.7 857f6e81c5 docs(providers): add README covering purpose, library use, and catalog
Documents the anyllm_providers crate as a pure compile-time metadata
catalog within the anyllm-proxy workspace, with a TUI integration walk-
through defaulting to Ollama and LM Studio and a categorized list of
all 90 registered providers.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 18:49:08 -05:00
whit3rabbitandClaude Opus 4.6 58bd323242 fix(deps): bump rustls-webpki 0.103.10 -> 0.103.12, version 0.9.1
Fixes RUSTSEC-2026-0098 (URI name constraint bypass) and
RUSTSEC-2026-0099 (wildcard name constraint bypass).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
v0.9.1
2026-04-15 20:36:31 -05:00
whit3rabbitandClaude Opus 4.6 d28226a6b2 feat(admin-ui): redesign providers tab with tiered tile grid and detail panel
Replace modal-based add-provider flow with a tile grid grouped by popularity
tier (top, popular, notable, more). Clicking a tile opens a detail panel
overlay showing capabilities, models, configured backends, and inline add-key
form. Extracted tier grouping logic into providerTiers.ts utility.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 20:33:14 -05:00
whit3rabbitandClaude Sonnet 4.6 f583a1bc19 feat(providers): expand provider catalog with models and capabilities
Populate model definitions and refine capability flags across provider
stubs, adding context windows, output limits, and per-model capabilities
for chat, tool use, vision, and streaming where applicable.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 20:05:20 -05:00
whit3rabbitandClaude Sonnet 4.6 de8c534107 fix: allow dead_code on allowed_routes pending enforcement wiring
Field is populated from the DB but scoping enforcement is not yet wired,
so clippy flags it. Keep the field to avoid reshuffling VirtualKeyContext
when enforcement lands.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 18:58:19 -05:00
whit3rabbitandClaude Sonnet 4.6 2ff669a10b style: apply cargo fmt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 18:56:48 -05:00
whit3rabbitandClaude Sonnet 4.6 9ab1166e81 feat: admin UI redesign with sidebar nav, routes tab, and split rate limiters
- Replace top nav with sidebar layout; add shared Modal, Toast, ConfirmDialog, AsyncBoundary components
- Add Routes tab with full CRUD UI backed by new routes_api admin endpoints
- Split admin rate limiter into separate read/write buckets with method-aware middleware
- Add allowed_routes scoping to virtual keys

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 18:15:06 -05:00