Skip to content

admin refact#20

Closed
broven wants to merge 22 commits intomainfrom
admin-refact
Closed

admin refact#20
broven wants to merge 22 commits intomainfrom
admin-refact

Conversation

@broven
Copy link
Owner

@broven broven commented Feb 13, 2026

broven and others added 22 commits February 8, 2026 17:56
* feat: add OpenAI format provider support

Add bidirectional format conversion for OpenAI Chat Completions API, enabling fallback providers like OpenRouter, Together AI, and any OpenAI-compatible endpoint.

Changes:
- Add format field to ProviderConfig (anthropic|openai)
- Implement request/response conversion with tool_use support
- Add streaming SSE conversion via TransformStream
- Update admin UI with format selector
- Add 37 comprehensive tests (259 total passing)
- Validate format field at API boundary

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* test: improve format-converter coverage to 99%+

Add tests for edge cases: non-string/non-array content, invalid JSON
in stream, interleaved text+tool_calls, flush with remaining buffer,
and usage in regular chunks.

* chore: add Codecov configuration with relaxed thresholds

Allow coverage to decrease by up to 5% and set patch target to 70%
to prevent CI failures on minor coverage fluctuations.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* feat: test multiple Claude models in testConnection with mapping suggestions

Refactor testProvider to test 4 models (Sonnet, Opus 4, Opus 4.6, Haiku) in
parallel instead of a single hardcoded model. Shows per-model results in the
admin UI and suggests adding model mappings when models fail without one
configured. Also adds claude-opus-4-6-20250415 to CLAUDE_MODELS.

* feat: add provider disable/enable toggle in admin panel

Show Anthropic primary API as fixed first entry with toggle switch.
Replace reorder arrow buttons with enable/disable toggles on all
providers. Disabled providers are skipped during request routing.

* test: add tests for provider disable/enable skipping behavior

Verify disabled Anthropic primary and fallback providers are skipped
during request routing, and that 502 is returned when all are disabled.

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
…error messages, and logging format. Adjust provider configurations and enhance circuit breaker functionality. Remove DEBUG variable from wrangler configuration.
* feat: new fallback algo

* docs: update documentation for circuit breaker implementation

- Update CLAUDE.md with circuit breaker architecture details
- Expand README.md with setup instructions
- Add comprehensive testing guide
- Update environment variables documentation
- Add contribution guidelines
- Expand runbook with troubleshooting steps

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add structured logging and observability

Implements comprehensive observability with structured JSON logging:

- Add structured logger utility with JSON format output
- Generate unique Request ID for end-to-end tracing
- Return Request ID in response headers (X-Request-ID)
- Support client-provided Request ID via header
- Replace all console.log with structured events
- Track latency for all provider attempts
- Add 11 event types: request.*, provider.*, circuit_breaker.*, safety_valve.*, auth.*, config.*

All logs include:
- timestamp (ISO 8601)
- level (debug/info/warn/error)
- event type
- requestId
- structured data (provider, model, status, latency, error)

Benefits:
- Full request tracing via Request ID
- Easy querying in Cloudflare Dashboard
- Ready for Logpush to Grafana/Datadog/Sentry
- Automatic tracing integration (already enabled in wrangler.jsonc)

Documentation:
- Added docs/observability.md with usage guide
- Updated CLAUDE.md with observability section

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* fix: correct Headers type for x-request-id response header

Convert Record<string, string> from cleanHeaders to Headers object
before calling .set() method.

* chore: update

* feat: log reproducible curl command on request failure

When all providers fail, emit a `request.debug_curl` log entry containing
a copy-paste ready curl command that reproduces the original request to
the proxy. Accessible via `npm run tail` for local debugging.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Replace the health check endpoint at / with a 302 redirect to /admin,
preparing for login page support on the admin panel.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add loginPage export to admin.ts that renders a standalone login form.
The page validates the admin token against /admin/config, stores it in
localStorage for session persistence, and redirects to the admin panel
on success.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Switch admin panel fetch calls from passing token as query parameter
to using Authorization: Bearer header. This is more secure as tokens
in query params can leak via server logs and referrer headers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…nel (#16)

* feat: add GET /admin/provider-states endpoint

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add CSS for circuit breaker status badges

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: show circuit breaker status badges on admin provider cards

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add manual reset button for provider circuit breaker

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add implementation plan for admin circuit breaker status

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat(rectifier): add type definitions for rectifier system

* feat(rectifier): implement Anthropic API rectifier system

Add automatic rectifier that detects and fixes Anthropic API request
compatibility issues with third-party providers. Includes thinking
signature rectification (removes thinking blocks, redacted_thinking
blocks, and signature fields) and thinking budget rectification
(adjusts budget_tokens and max_tokens to valid ranges). Each rectifier
retries once per request to prevent infinite loops. Configurable via
admin API endpoints with KV persistence.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add rectifier implementation plans

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add GET /admin/provider-states endpoint

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add CSS for circuit breaker status badges

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: show circuit breaker status badges on admin provider cards

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add manual reset button for provider circuit breaker

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add implementation plan for admin circuit breaker status

* fix: syntax error in reset button onclick handler

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Feb 13, 2026

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
claude-code-fallback d8eb73d Commit Preview URL

Branch Preview URL
Feb 13 2026, 08:12 AM

@broven broven closed this Feb 13, 2026
@broven broven deleted the admin-refact branch February 13, 2026 08:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant