better-ccflare 3.5.77 → 3.5.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -820,7 +820,7 @@ Inspired by [snipeship/ccflare](https://github.com/snipeship/ccflare) - thanks f
820
820
  - [@aaapl](https://github.com/aaapl) — [#433](https://github.com/tombii/better-ccflare/pull/433), [#435](https://github.com/tombii/better-ccflare/pull/435)
821
821
  - [@mjonuschat](https://github.com/mjonuschat) — [#436](https://github.com/tombii/better-ccflare/pull/436)
822
822
  - [@anony253](https://github.com/anony253) — [#452](https://github.com/tombii/better-ccflare/pull/452)
823
- - [@valentinyanakiev](https://github.com/valentinyanakiev) — [#450](https://github.com/tombii/better-ccflare/pull/450), [#454](https://github.com/tombii/better-ccflare/pull/454)
823
+ - [@valentinyanakiev](https://github.com/valentinyanakiev) — [#450](https://github.com/tombii/better-ccflare/pull/450), [#454](https://github.com/tombii/better-ccflare/pull/454), [#459](https://github.com/tombii/better-ccflare/pull/459)
824
824
 
825
825
  ## Contributing
826
826
 
@@ -841,3 +841,42 @@ MIT - See [LICENSE](LICENSE) for details
841
841
  <p align="center">
842
842
  Built with ❤️ for developers who ship
843
843
  </p>
844
+
845
+ ### Claude Messages continuation on Codex (opt-in)
846
+
847
+ Set `CCFLARE_CODEX_MESSAGES_CONTINUATION=1` to let the Codex provider retain
848
+ server-owned Responses continuation while serving `/v1/messages` clients. It
849
+ requires an authenticated API key, a selected account, and a nonempty prompt
850
+ cache key (normally derived from Claude session metadata on OpenAI endpoints).
851
+ The first request sends the full translated history, implicit GPT cache options
852
+ with a 30-minute TTL, and a developer-prefix breakpoint. Subsequent exact
853
+ history/configuration matches send only new input and the stored response ID.
854
+ Claude cache markers and signatures never become GPT input artifacts.
855
+
856
+ State is separated by account, model, authenticated caller, session, and client
857
+ protocol. Changed history/tools, expiration, process restart, unknown output,
858
+ failed or ambiguous terminal events, and cancellation cannot create a reusable
859
+ checkpoint. Streaming remains incremental, but checkpoint promotion requires
860
+ clean upstream EOF. Opaque GPT reasoning remains upstream; the proxy retains
861
+ only bounded in-memory response IDs and replay digests. Public responses remain
862
+ Claude-compatible and cache telemetry continues to label this ingress `legacy`.
863
+
864
+ This switch does not change model selection or fallback policy. It defaults off;
865
+ disabling it restores the prior Messages request format. It does not transfer
866
+ Anthropic caches or guarantee a cache-hit percentage. Custom endpoints must
867
+ support these Responses controls when this bridge is enabled; authenticated
868
+ Messages requests may then derive cache keys from ordinary session metadata.
869
+ Caller-provided native input, identity, and response IDs remain untrusted.
870
+
871
+ HTTP continuation requires the endpoint to retain the referenced response. If it
872
+ returns `previous_response_not_found` (or a typed invalid previous-response ID),
873
+ the bridge retries the original full history once on the same account and model,
874
+ then suspends continuation for that chain for 30 minutes. GPT cache controls
875
+ remain active. This does not change `store:false` or enable provider-side
876
+ retention. Backend retention and actual cache reuse need endpoint-specific
877
+ validation; local response-ID existence is not proof of backend availability.
878
+
879
+ Optionally set `CCFLARE_CODEX_MESSAGES_CONTINUATION_MODELS` to a comma-separated
880
+ list of exact resolved model names to limit this feature to validated models.
881
+ Unset means all models when enabled; an empty list enables none. This scope
882
+ controls adapter features, not model selection or fallback routes.
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "better-ccflare",
3
- "version": "3.5.77",
3
+ "version": "3.5.78",
4
4
  "description": "Load balancer proxy for Claude API with intelligent distribution across multiple OAuth accounts to avoid rate limiting",
5
5
  "license": "MIT",
6
6
  "repository": {