hkfires
5d12d4ce33
feat(amp): add response rewriter for model name substitution in responses
2025-12-06 14:15:44 +08:00
hkfires
55cd31fb96
fix(amp): suppress ErrAbortHandler panics in reverse proxy handler
2025-12-05 21:28:58 +08:00
hkfires
caa48e7c6f
fix(amp): improve proxy state management and request logging behavior
2025-12-05 21:09:53 +08:00
hkfires
acdfb3bceb
feat(amp): add root-level /threads routes for CLI compatibility
2025-12-05 18:14:10 +08:00
hkfires
89d68962b1
fix(amp): filter amp request logging to only provider endpoint
2025-12-05 18:14:09 +08:00
hkfires
9426be7a5c
fix(amp): update log message wording for disabled proxy state
2025-12-04 21:36:16 +08:00
hkfires
4a135f1986
feat(amp): add hot-reload support for upstream URL and localhost restriction
2025-12-04 21:30:59 +08:00
hkfires
c4c02f4ad0
feat(amp): add partial reload support with config change detection
2025-12-04 21:30:59 +08:00
hkfires
db03ae9663
feat(watcher): add AmpCode config change detection
2025-12-04 19:50:54 +08:00
hkfires
969ff6bb68
fix(amp): update explicit API key on config change
2025-12-04 19:32:44 +08:00
hkfires
b5de004c01
refactor(api): remove legacy generative-language-api-key endpoints and duplicate GetConfigYAML
2025-12-03 18:35:08 +08:00
hkfires
c4a5be6edf
style(amp): standardize log message capitalization
2025-12-03 13:53:18 +08:00
hkfires
651179a642
refactor(config): add detailed logging for legacy configuration migration
2025-12-03 13:39:10 +08:00
hkfires
8c42b21e66
refactor(config): improve OpenAI compatibility target matching logic
2025-12-03 12:41:17 +08:00
hkfires
b693d632d2
docs(config): comment out example API key configurations
2025-12-03 12:31:41 +08:00
hkfires
b5033c22d8
refactor(config): auto-persist migrated legacy configuration fields
2025-12-03 12:26:04 +08:00
hkfires
df0fd1add1
refactor(config): remove deprecated AMP configuration keys during save
2025-12-03 11:42:15 +08:00
hkfires
b6bdbe78ef
refactor(config): relocate legacy migration helpers to end of file
2025-12-03 11:23:11 +08:00
hkfires
06c0d2bab2
refactor(config): remove deprecated legacy API key fields
2025-12-03 11:01:56 +08:00
hkfires
bd1678457b
refactor(config): consolidate Amp settings into AmpCode struct
2025-12-03 10:42:28 +08:00
hkfires
559b7df404
refactor(config): restructure and uncomment example configuration
2025-12-03 10:29:36 +08:00
hkfires
3ebbab0a9a
Revert watcher.go in "fix: enable hot reload for amp-model-mappings config"
2025-12-02 22:17:54 +08:00
hkfires
480cd714b2
feat(config): add pruning of stale YAML mapping keys during config save
2025-12-02 21:38:54 +08:00
hkfires
75e278c7a5
feat(registry): add thinking support to gemini models
2025-11-30 20:56:29 +08:00
hkfires
7b7871ede2
feat(api): add oauth excluded model management
2025-11-30 13:38:23 +08:00
hkfires
c4e3646b75
docs(config): expand model exclusion examples
2025-11-30 11:55:47 +08:00
hkfires
022aa81be1
feat(cliproxy): support wildcard exclusions for models
2025-11-30 08:02:00 +08:00
hkfires
c43f0ea7b1
refactor(config): rename model blacklist fields to excluded models
2025-11-29 21:23:47 +08:00
hkfires
6a191358af
fix(auth): fix runtime auth reload on oauth blacklist change
2025-11-29 20:30:11 +08:00
hkfires
5983e3ec87
feat(auth): add oauth provider model blacklist
2025-11-28 10:37:10 +08:00
hkfires
f8cebb9343
feat(config): add per-key model blacklist for providers
2025-11-27 21:57:07 +08:00
hkfires
6c17dbc4da
style(amp): tidy whitespace in proxy module and tests
2025-11-26 18:57:26 +08:00
hkfires
943a8c74df
feat(logs): add limit query param to cap returned logs
2025-11-24 19:59:24 +08:00
hkfires
62bfd62871
fix(aistudio): strip Gemini generation config overrides
...
Remove generationConfig.maxOutputTokens, generationConfig.responseMimeType and generationConfig.responseJsonSchema from the Gemini payload in translateRequest so we no longer send unsupported or conflicting response configuration fields. This lets the backend or caller control response formatting and output limits and helps prevent potential API errors caused by these keys.
2025-11-23 19:44:03 +08:00
hkfires
166fa9e2e6
fix(gemini): parse stream usage from JSON, skip thoughtSignature
2025-11-22 16:07:12 +08:00
hkfires
88e566281e
fix(gemini): filter SSE usage metadata in streams
2025-11-22 15:53:36 +08:00
hkfires
d32bb9db6b
fix(runtime): treat non-empty finishReason as terminal
2025-11-22 15:39:46 +08:00
hkfires
8356b35320
fix(executor): expire stop chunks without usage metadata
2025-11-22 15:27:47 +08:00
hkfires
19a048879c
feat(runtime): track antigravity usage and token counts
2025-11-22 14:04:28 +08:00
hkfires
1061354b2f
fix: handle empty and non-JSON SSE chunks safely
2025-11-22 13:49:23 +08:00
hkfires
46b4110ff3
fix: preserve SSE usage metadata-only trailing chunks
2025-11-22 13:25:25 +08:00
hkfires
c29931e093
fix(translator): ignore empty JSON chunks in OpenAI responses
2025-11-22 13:09:16 +08:00
hkfires
b05cfd9f84
fix(translator): include empty text chunks in responses
2025-11-22 13:03:50 +08:00
hkfires
8ce22b8403
fix(sse): preserve usage metadata for stop chunks
2025-11-22 12:50:23 +08:00
hkfires
dc8d3201e1
feat(translator): support image size and googleSearch tools
2025-11-22 10:36:52 +08:00
hkfires
abc2465b29
fix(gemini-cli): ignore thoughtSignature and empty parts
2025-11-21 17:12:56 +08:00
hkfires
4ba5b43d82
feat(executor): share SSE usage filtering across streams
2025-11-21 16:51:05 +08:00
hkfires
27faf718a3
fix(auth): use fixed antigravity callback port 51121
2025-11-21 13:56:33 +08:00
hkfires
3f4f8b3b2d
feat(iflow): add cookie-based authentication endpoint
2025-11-20 18:23:43 +08:00
hkfires
b285b07986
fix(iflow): adjust auth filename email sanitization
2025-11-19 19:50:06 +08:00
hkfires
8a33f3ef69
fix: detect HTML error bodies without text/html content type
2025-11-19 14:45:33 +08:00
hkfires
b52a5cc066
feat(auth): add iFlow cookie-based authentication support
2025-11-18 22:35:35 +08:00
hkfires
1ba057112a
fix: use underscore suffix in short name mapping
...
Replace the "~<n>" suffix with "_<n>" when generating unique short names in codex translators (Claude, Gemini, OpenAI chat).
This avoids using a special character in identifiers, improving compatibility with downstream APIs while preserving length constraints.
2025-11-18 16:59:25 +08:00
hkfires
43095de162
fix(management): exclude disabled runtime-only auths from file entries
2025-11-10 08:32:42 +08:00
hkfires
51d2766d5c
fix(management): sanitize keys and normalize headers
2025-11-09 12:13:02 +08:00
hkfires
a00ba77604
refactor(config): rename SyncGeminiKeys; use Sanitize* methods
2025-11-09 08:29:47 +08:00
hkfires
cfb9cb8951
feat(config): support HTTP headers across providers
2025-11-08 20:52:05 +08:00
hkfires
1f6a384c9a
fix(api): omit auth file entries lacking path unless runtime-only
2025-11-07 19:15:54 +08:00
hkfires
c9fc033cf5
feat(management): support in-memory auth listing with disk fallback
2025-11-07 19:04:54 +08:00
hkfires
d60040b222
fix(translator): accept camelCase thinking config in OpenAI→Gemini
2025-11-07 16:45:31 +08:00
hkfires
2021ae3891
fix(config): skip persisting empty API key and compat entries
2025-10-31 15:56:47 +08:00
hkfires
4883349795
Update doc
2025-10-31 15:22:09 +08:00
hkfires
5c65938113
fix(config): stabilize YAML sequence merges by reordering items
2025-10-31 15:21:58 +08:00
hkfires
16be3f0a12
fix(config): dedupe and normalize Gemini keys and headers
2025-10-31 13:20:10 +08:00
hkfires
7c1c4ee60b
feat(gemini): add Gemini API key endpoints
2025-10-31 11:09:28 +08:00
hkfires
a53c84d0d1
feat(gemini): apply default safety settings across request translators
2025-10-31 08:22:16 +08:00
hkfires
a517290726
refactor(executor): summarize API error bodies of html in debug logs
2025-10-31 06:58:38 +08:00
hkfires
24446a4dc4
feat(cliproxy): skip persisting runtime-only websocket auths
2025-10-29 21:49:35 +08:00
hkfires
475f473dab
docs: add AI Studio setup
2025-10-29 21:10:14 +08:00
hkfires
1bbbd16df6
chore(logging): clarify 429 rate-limit retries in Gemini executor
2025-10-29 19:19:18 +08:00
hkfires
5cb378256b
feat(gemini-translators): set include_thoughts when mapping thinking
2025-10-29 19:19:18 +08:00
hkfires
3ac5f05e8c
feat(gemini): prefer official reasoning fields, add extra_body(cherry studio) fallback
2025-10-29 19:19:18 +08:00
hkfires
58d30369b4
fix(gemini-cli): correctly strip/normalize thinking config by model
2025-10-29 19:19:18 +08:00
hkfires
7dd93a4a25
fix(executor): only apply thinking config to supported models
2025-10-29 19:19:17 +08:00
hkfires
2a3ee8d0e3
fix(translators): normalize thinking budgets
2025-10-29 19:19:17 +08:00
hkfires
41577bce07
feat(claude): map Anthropic 'thinking' to Gemini thinkingBudget
2025-10-29 19:19:17 +08:00
hkfires
3d7aca22c0
feat(registry): add thinking budget support; populate Gemini models
2025-10-29 19:19:17 +08:00
hkfires
680b3f5010
fix(translator): avoid default thinkingConfig in Gemini requests
2025-10-29 19:19:17 +08:00
hkfires
c99d0dfb33
fix(aistudio): remove no-op executor unregister on WS disconnect
2025-10-28 19:51:05 +08:00
hkfires
663b9b35ab
fix(executor): pass authID to relay instead of provider
2025-10-28 19:28:26 +08:00
hkfires
5dced4c0a6
feat(registry): unify Gemini models and add AI Studio set
2025-10-28 19:00:25 +08:00
hkfires
e370f86f63
fix(gemini-executor): uppercase responseModalities
2025-10-26 21:26:15 +08:00
hkfires
7f266aa19e
fix(aistudio): ensure colon-spaced JSON in responses
2025-10-26 20:21:45 +08:00
hkfires
f3f31274e8
refactor(wsrelay): rename RoundTrip to NonStream
2025-10-26 20:01:46 +08:00
hkfires
7061cd6058
fix(gemini): map responseModalities to uppercase IMAGE/TEXT
2025-10-26 19:35:22 +08:00
hkfires
7459c2c81a
fix(aistudio): remove generationConfig and tools when action is countTokens
2025-10-26 16:28:20 +08:00
hkfires
359b8de44e
feat(ws): add WebSocket auth
2025-10-26 07:46:04 +08:00
hkfires
ea6065f1b1
fix(aistudio): strip usage metadata from non-final stream chunks
2025-10-26 07:46:04 +08:00
hkfires
8aaed4cf09
feat(aistudio): support non-streaming responses
2025-10-26 07:46:04 +08:00
hkfires
c32e013605
feat(aistudio): track Gemini usage and improve stream errors
2025-10-26 07:46:04 +08:00
hkfires
3839d93ba0
feat: add websocket routing and executor unregister API
...
- Introduce Server.AttachWebsocketRoute(path, handler) to mount websocket
upgrade handlers on the Gin engine.
- Track registered WS paths via wsRoutes with wsRouteMu to prevent
duplicate registrations; initialize in NewServer and import sync.
- Add Manager.UnregisterExecutor(provider) for clean executor lifecycle
management.
- Add github.com/gorilla/websocket v1.5.3 dependency and update go.sum.
Motivation: enable services to expose WS endpoints through the core server
and allow removing auth executors dynamically while avoiding duplicate
route setup. No breaking changes.
2025-10-26 07:46:03 +08:00
hkfires
f8dcd707a6
feat(mgmt): support YAML config retrieval and updates via /config.yaml
2025-10-19 21:56:29 +08:00
hkfires
4504ba5329
feat(iflow): add masked token logs; increase refresh lead to 24h
2025-10-19 10:56:29 +08:00
hkfires
d16599fa1d
feat: prefer util.WritablePath() for logs and local storage
2025-10-19 10:19:55 +08:00
hkfires
9f45806106
feat(logging): centralize sensitive header masking
2025-10-18 17:16:00 +08:00
hkfires
9319602812
UPDATE README
2025-10-16 22:57:44 +08:00
Chén Mù and GitHub
8e95c5e0a8
Merge pull request #134 from router-for-me/hg
...
feat(managementasset): add MANAGEMENT_STATIC_PATH override
2025-10-16 22:25:05 +08:00
hkfires
93f0e65cef
docs: document MANAGEMENT_STATIC_PATH for management.html location
2025-10-16 22:15:17 +08:00
hkfires
c75e524fe5
feat(managementasset): add MANAGEMENT_STATIC_PATH override
2025-10-16 21:52:59 +08:00
Chén Mù and GitHub
f58d0faf8c
Merge pull request #130 from router-for-me/log
...
feat(management): add log retrieval and cleanup endpoints
2025-10-16 12:39:06 +08:00