Commit Graph
23 Commits
Author SHA1 Message Date
whit3rabbitandClaude Opus 4.8 ff157dda81 ci: publish new leaf crates to crates.io before proxy
The 0.14.0 proxy gained hard deps on anyllm_pxpipe, anyllm_rtk, and the
anyllm_optimize_* crates, none of which the publish job uploaded. Since
none exist on crates.io, cargo publish -p anyllm_proxy would fail on the
missing deps, and the exit-101 guard (cargo returns 101 for nearly all
errors) masked it as "already published" - proxy never landed while the
job stayed green.

Add publish steps for pxpipe, rtk, optimize_core/passes/scorer in
dependency order before anyllm_proxy, and document the invariant in
CLAUDE.md so future leaf crates get added here too.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 21:31:37 -05:00
whit3rabbitandClaude Opus 4.8 d155bfd148 feat: RTK tool-output compression and opt-in prompt optimizer
RTK (anyllm_rtk crate): command-aware filtering of tool-result text
(test/build/git/log output) via a catalog of 55 declarative filters ported
from OmniRoute (MIT). IO-free, deterministic, prompt-cache safe (cache_control
blocks preserved byte-for-byte). Wired into the Anthropic passthrough (stream +
non-stream) and OpenAI-translate paths, gated per-model via RTK_MODELS.
RTK_COMPRESS env / admin toggle, rtk_compress/rtk_models runtime config.

Optimizer (anyllm_optimize_* crates): opt-in Frozen-Frontier Extractive
Compression of long client-sent conversation history for OpenAI Chat
Completions, the Anthropic translate path, and the Anthropic passthrough path
(client history only, never proxy tool-loop turns). OPTIMIZER_MODE=off|shadow|
live env / admin toggle; live places a cache_control breakpoint at the frontier
over raw bytes. Optional LLMLingua-2 ONNX scorer behind the optimizer-onnx
feature (model fetched on demand, never bundled). New optimizer_* metrics
counters and GET/POST /admin/api/optimizer/model endpoints.

Both features expose runtime config + Settings UI controls and fail open on any
error. Adds workspace members, CI lint/test for the optimizer-onnx feature, and
gitignore rules for downloaded ONNX artifacts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 19:55:33 -05:00
whit3rabbitandClaude Opus 4.8 062f8eaf5a ci: attach Linux and Windows binary archives to GitHub Releases
build-release already compiles x86_64/aarch64 Linux and x86_64 Windows binaries
but only uploaded them as CI artifacts. The release-assets job now packages them
into anyllm-proxy-<ver>-linux-{x86_64,arm64}.tar.gz and
anyllm-proxy-<ver>-windows-x86_64.zip and uploads them to the release, matching
the macOS tarball naming.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 08:45:54 -05:00
whit3rabbitandClaude Opus 4.8 b89e0bd359 feat: hyphenated binary name, TTY-aware logs, one-click admin login
- Emit binary as `anyllm-proxy` (hyphen) via explicit [[bin]]; package/crate
  name stays `anyllm_proxy`. Threads one hyphenated name through deb/brew/
  release archives and CI; drops the rename-in-archive shim.
- Terminal logs default to human-readable on a TTY, JSON when piped
  (Docker/systemd). Override with LOG_FORMAT=json|text.
- On loopback admin binds, startup banner prints a tokenized `?token=` admin
  URL plus a bare Token line; SPA reads `?token=` to auto-login then strips it
  from the address bar. Omitted on non-loopback binds to avoid token leak.
- `--webui`/`--admin` with no backend prints a one-line hint instead of the
  full backend cheat-sheet (UI already covers it).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 15:35:06 -05:00
whit3rabbitandClaude Sonnet 4.6 6a47df31f5 fix: stable catalog reference, pin windows runner
- Providers.tsx: wrap catalog in useMemo so filtered memo doesn't
  re-run on every render when catalogQuery.data is undefined
- ci.yml: pin windows-latest -> windows-2025 ahead of June 15 redirect

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 23:03:14 -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 2713f34336 Bump GitHub Actions to Node 24 releases 2026-05-23 20:47:42 -05:00
whit3rabbit 4cdfef82e3 chore: prepare 0.9.3 release 2026-05-23 12:28:08 -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 Sonnet 4.6 02a9bb91d8 fix: handle crates.io version-already-exists (exit 101) in publish job
- Add continue-on-error: true to publish job (non-blocking for release)
- Add exit code 101 handling per step: already-published = success
- Add missing anyllm_batch_engine publish step

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 14:38:37 -05:00
whit3rabbitandClaude Sonnet 4.6 32272f2420 fix: add create-release job and complete crates.io publish sequence
- Add create-release job before upload jobs (gh release upload requires
  the release to exist first)
- Add anyllm_providers and anyllm_batch_engine to publish sequence;
  proxy depends on both, missing them caused publish to fail
- release-assets and brew-release now depend on create-release

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 14:29:00 -05:00
whit3rabbitandClaude Sonnet 4.6 ccaa4fd32b fix: correct GitHub Actions secrets context usage in if conditions
- secrets context is not allowed in job/step-level if conditions;
  move checks into shell (exit 0 if secret unset)
- Fixes YAML/semantic error causing 0s workflow file issue failures

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 13:53:34 -05:00
whit3rabbitandClaude Sonnet 4.6 d3474792c8 fix: resolve CI YAML parse error and vite 8 peer dep conflict
- Replace heredoc in brew-release job with printf statements to fix YAML
  parse error (heredoc content at col 0 broke YAML literal block scalar)
- Add --legacy-peer-deps to npm ci: @vitejs/plugin-react@4.7.0 peer deps
  only declare vite ^4-7 but is runtime-compatible with vite 8

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 13:35:55 -05:00
whit3rabbitandClaude Sonnet 4.6 e94b4e2acf feat: add Homebrew tap release job and ignore tool/config dirs
Add brew-release CI job that builds versioned macOS tarballs, uploads
them to the GitHub Release, and updates the homebrew-tap cask formula.
Ignore .mcp.json, .repowise/, and .superpowers/ in .gitignore. Add
Makefile.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 03:25:40 -05:00
whit3rabbitandClaude Sonnet 4.6 3980985b17 fix: review feedback - disable service in prerm, clobber on re-upload, remove redundant postinst re-run
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 21:19:27 -05:00
whit3rabbitandClaude Sonnet 4.6 787ca25388 ci: upload deb packages to GitHub releases
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 21:14:45 -05:00
whit3rabbitandClaude Sonnet 4.6 37e7e2827f ci: add deb install verification job
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 21:14:34 -05:00
whit3rabbitandClaude Sonnet 4.6 cd7372a562 ci: build deb packages on Linux targets
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 21:14:12 -05:00
whit3rabbit 6b4c4c93f4 ci: download admin-ui-dist artifact in build-release job 2026-04-05 15:23:28 -05:00
whit3rabbit cc24cc5592 ci: add frontend job (tsc + lint + build) before Rust test job 2026-04-05 15:21:50 -05:00
whit3rabbit c9e9221caf ci: add cargo-audit step to catch crates with known CVEs
Runs after cargo test in the test job. Uses --locked for reproducibility.
2026-03-27 23:45:36 -05:00
whit3rabbitandClaude Sonnet 4.6 0942072b29 chore: docs, CI, and polish for litellm gap fill
Update CLAUDE.md and README.md to document new backends (Azure, Bedrock),
virtual key management, rate limiting, OTEL, and client v0.2.0. Add CI
workflow for the new integration test suite. Final task-list completions
and virtual key integration tests.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 06:36:09 -05:00
whit3rabbitandClaude Opus 4.6 d37d1e25f1 Add phases 12-20: release infra, transparent proxy, model mapping, mTLS, extended thinking, Gemini research
Phases 12-18: release infrastructure (LICENSE, README, Dockerfile, CI,
CHANGELOG), transparent proxy with anthropic-version/anthropic-beta header
passthrough and lossy translation warnings, BIG_MODEL/SMALL_MODEL env-based
model mapping, mTLS client cert support (P12/PEM), max_completion_tokens
and reasoning_effort passthrough via serde flatten, extended thinking type
support (thinking blocks stripped in translation), top_k typed field.

Phase 20: Gemini backend research with docs/gemini-api-diffs.md covering
native API format, tool calling, streaming, auth, schema restrictions,
and Vertex AI OpenAI-compatible endpoint. Task roadmap through Phase 22.

Test count: 169 -> expanded with new fixture and unit tests for all phases.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 20:06:50 -05:00