fawney19
|
3f1abb6906
|
Format OAuth refresh consistency changes
|
2026-04-28 09:54:35 +08:00 |
|
fawney19
|
29fc0be121
|
Tighten OAuth refresh consistency
|
2026-04-28 09:36:42 +08:00 |
|
fawney19
|
321f21ad49
|
Fix provider OAuth refresh token reuse
|
2026-04-28 02:00:35 +08:00 |
|
fawney19
|
639f26ed5d
|
fix: force http1 for tunnel oauth refresh
|
2026-04-28 01:37:40 +08:00 |
|
fawney19
|
9a67497d8c
|
fix: align oauth tunnel refresh transport
|
2026-04-28 01:10:34 +08:00 |
|
fawney19
|
83e1f99ccf
|
fix: invalidate oauth transport cache after refresh
|
2026-04-27 23:35:05 +08:00 |
|
fawney19
|
ed17147281
|
fix: align provider oauth refresh redirects
|
2026-04-27 22:08:02 +08:00 |
|
fawney19
|
a7a3c9f023
|
Fix OAuth import proxy handling
|
2026-04-27 20:05:43 +08:00 |
|
fawney19
|
4c16b11cb4
|
Align runtime miss tests with skipped candidates
|
2026-04-27 18:09:56 +08:00 |
|
fawney19
|
3e0293ac28
|
Rename local candidate resolution entrypoints
|
2026-04-27 17:24:32 +08:00 |
|
fawney19
|
07fba70a90
|
Guard pool scheduler ranking boundary
|
2026-04-27 17:24:32 +08:00 |
|
fawney19
|
da0e968975
|
Update transport ranking architecture guard
|
2026-04-27 17:24:32 +08:00 |
|
fawney19
|
e9f03d8d29
|
Remove ranked minimal selection compatibility helper
|
2026-04-27 17:24:32 +08:00 |
|
fawney19
|
e5e09b49f4
|
Remove ranked candidate data read wrappers
|
2026-04-27 17:24:32 +08:00 |
|
fawney19
|
dda6f34a07
|
Rename ranked minimal candidate reads
|
2026-04-27 17:24:32 +08:00 |
|
fawney19
|
f10f5f071d
|
Clarify ranked minimal candidate selection
|
2026-04-27 17:24:32 +08:00 |
|
fawney19
|
517e84e5ae
|
Move local ranking test helper into tests
|
2026-04-27 17:24:31 +08:00 |
|
fawney19
|
2101a4ecc7
|
Drop legacy candidate ordering helpers
|
2026-04-27 17:24:31 +08:00 |
|
fawney19
|
a23758808d
|
Isolate core candidate selection helpers
|
2026-04-27 17:24:31 +08:00 |
|
fawney19
|
f52220a8ec
|
Clean up planner candidate modules
|
2026-04-27 17:24:31 +08:00 |
|
fawney19
|
3b542434a2
|
Unify candidate ranking pipeline
|
2026-04-27 17:24:31 +08:00 |
|
fawney19
|
488bd08f04
|
Stabilize Kiro Claude CLI sync tests
|
2026-04-27 00:45:48 +08:00 |
|
fawney19
|
989b27426b
|
refactor formats adapters and matrix ownership
|
2026-04-26 23:59:53 +08:00 |
|
fawney19
|
0ec4b4c8a4
|
guard legacy openai alias compatibility
|
2026-04-26 23:59:53 +08:00 |
|
fawney19
|
4ec591fbf2
|
centralize openai responses alias handling
|
2026-04-26 23:59:53 +08:00 |
|
fawney19
|
ea3dc3257e
|
clean up legacy openai cli adapter names
|
2026-04-26 23:59:53 +08:00 |
|
fawney19
|
5b914aa78c
|
migrate ai format conversion to responses adapters
|
2026-04-26 23:59:53 +08:00 |
|
Entropy.Xu
|
e8763b3bbd
|
fix(kiro): 放行可刷新 OAuth 调度候选 (#340)
|
2026-04-26 23:49:55 +08:00 |
|
fawney19
|
baa0ddd787
|
Improve runtime miss usage diagnostics
|
2026-04-26 01:44:54 +08:00 |
|
Entropy.Xu
|
d784c540b6
|
fix(kiro): 隐藏 OAuth 刷新重试流程 (#339)
|
2026-04-25 21:29:45 +08:00 |
|
fawney19
|
429fdb47e6
|
fix(usage): 简化本地执行错误提示
|
2026-04-25 20:46:22 +08:00 |
|
fawney19
|
f30b1f3f6b
|
fix(usage): 流式终端 usage 以更完整值为准,Codex CLI 显式选择 response 解析器
- 新增 StandardizedUsage::signal_score/is_more_complete_than/choose_more_complete,流式合并与终端落库均按信号完整度择优
- OpenAI Chat/CLI 解析器支持仅 usage 的终结 chunk 与 response.completed usage
- Codex provider 注入 provider_stream_event_api_format=openai:cli,解析器选择改由 report_context 显式决定
- usage_mapper 扩展嵌套 response/message/item 兼容 Claude message_start/message_delta 及 Gemini stream chunks
- usage SQL upsert 在终态(completed/failed/cancelled)时按 GREATEST 写入 token/费用镜像列
|
2026-04-25 00:57:01 +08:00 |
|
AAEE86
|
4618184516
|
fix: 修复账号批量操作快捷多选不生效和今日 Token 不准确 (#328)
* fix(pool): 修复账号批量操作快捷多选不生效
- 解析号池账号列表接口的 quick_selectors 查询参数
- 列表查询复用现有快捷筛选匹配逻辑
- 支持冷却列表与普通列表的快捷筛选后分页
- 更新架构测试中的 pool admin helper 边界断言
* fix(dashboard): 今日 Token 改为按分项汇总口径展示
- /api/dashboard/stats 的 today.tokens 改为 输入+输出+写缓存+读缓存
- “今日 Token”卡片 value 与 subValue 口径保持一致
- 同步更新 dashboard 相关测试断言
|
2026-04-24 18:36:38 +08:00 |
|
Entropy.Xu
|
fb46fcd80f
|
feat(rust): 对齐 SMTP 测试与注册邮件 TLS 链路 (#325)
* feat(rust): 对齐 SMTP 连接测试链路
* fix(rust): 修复注册邮件 TLS provider 初始化
|
2026-04-24 14:59:00 +08:00 |
|
fawney19
|
e0c928fbe8
|
feat(auth): /me 接口返回 has_password 字段,前端 Profile 类型同步调整
|
2026-04-24 14:52:49 +08:00 |
|
fawney19
|
f3c9835759
|
feat(pool): 引入 pro_first 调度预设、Pool 候选持久化跳过与诊断信息优化
- 新增 pro_first 调度预设(Pro 优先),更新 plus_first 仅针对 Plus 计划,移除 free_team_first
- Pool 内部候选(pool_key_index 不为空)跳过 DB 持久化(available/skipped/unused 均适用)
- LRU 排序新增 catalog_lru_score 回退:runtime 无记录时使用 last_used_at_unix_secs
- 执行路径 miss 诊断消息细化为中文,按 reason 分类输出可读说明
- build_local_request_candidate_status_record 补充 extra_data 和 created_at_unix_ms 字段
- OpenAI CLI 计划构建流程补充候选评估进度跟踪与 terminal reason 设置
- 前端 PoolSchedulingDialog 增加 pro_first 预设展示,修复 LRU 默认预设检测逻辑
|
2026-04-24 13:29:05 +08:00 |
|
fawney19
|
f29649e3a8
|
feat(stream): 在流式执行中引入 StreamingStandardTerminalObserver 用量采集
- 在 execute_stream_from_frame_stream 中集成 StreamingStandardTerminalObserver,对流式响应逐行观察并在结束时合并终态摘要
- 新增 observe_stream_usage_bytes / finalize_stream_usage_observer / merge_stream_terminal_summary 辅助函数
- 更新 codex-cli 流式集成测试:补充 response.completed 含完整 usage 字段的 mock 数据,并断言用量写入 usage_repository
|
2026-04-24 11:34:41 +08:00 |
|
fawney19
|
5d710d9d10
|
feat(rust): 支持 image 同步转流式 SSE、free_team_first 调度预设及账户错误自动重试
- openai:image 同步响应桥接为流式 SSE(image_generation.completed / image_edit.completed 事件)
- image 请求解析与前置校验移除模型白名单,支持任意自定义模型名
- 调度器新增 free_team_first 预设(mode: both / free_only / team_only)
- pool config 解析重构:新增 POOL_ALLOWED_SCHEDULING_PRESETS 白名单,规范化 mode 字段
- 错误分类器新增账户/账单错误模式集,升级为 RetryUpstreamFailure 而非 StopSemanticClientError
- 修复 stream execution 中上游 headers 与输出 headers 混用导致 content-type 判断错误的问题
- codex image 工具始终写入 action 字段(generate/edit),仅 generate 操作填充默认 size/quality
- 前端:pool 节点组只展示实际执行过的候选节点,全部 skipped 时折叠为最后一个节点
- Redis 测试就绪检测从 TCP 连接改为 PING/PONG 协议验证
|
2026-04-24 10:07:24 +08:00 |
|
fawney19
|
5148370253
|
fix(usage): 修复含失败信号的 pending 请求被误判为活跃的问题
- pending/streaming 状态含 status_code >= 400 或 error_message 时视为 failed
- 候选状态派生改为 failed 优先于 stale pending/streaming
- 活跃请求轮询时保留失败信号字段的更新
- 图片流支持 partial_image 事件转发及从 response.completed 读取最终图片
|
2026-04-24 03:07:11 +08:00 |
|
fawney19
|
581bc03d4e
|
feat(ai-pipeline): 支持 reasoning signature 及媒体内容块的跨格式流式转换
- 在 CanonicalStreamEvent 中新增 ReasoningSignature 和 ContentPart 变体,CanonicalContentPart 枚举覆盖图片/文件/音频
- Gemini 流解析器提取 thoughtSignature,并对 inlineData/fileData 等非文本 part 生成 ContentPart 事件
- Claude 流聚合支持 thinking_delta / signature_delta,输出 thinking block 携带 signature 字段
- Gemini 同步响应聚合重写,支持媒体 part 和 reasoning signature 的完整还原
- 跨格式矩阵(gemini↔claude↔openai)补全图片块双向转换及 reasoning signature 传递
- 请求转换层(to/from openai_chat)补全 Claude/Gemini 的 thinking、图片、工具调用字段映射
- 新增/扩展测试:inline image 双向重写、thinking signature 聚合、跨格式 sync product 媒体字段
|
2026-04-24 02:18:34 +08:00 |
|
AAEE86
|
ccec46eddd
|
fix(admin-api-keys): 独立余额 Key 统计与时间字段改为直读 api_keys 表 (#319)
- 列表/详情/更新响应中的 `total_requests`、`total_tokens`、`created_at`、`last_used_at` 统一直接读取 `api_keys` 导出记录字段
- 保持“已消费”继续走钱包字段(不改消费口径)
- 在 auth 导出记录中补充 `last_used_at_unix_secs`、`created_at_unix_secs`、`updated_at_unix_secs`
- 扩展 auth SQL 查询与 RETURNING 字段映射,确保时间字段完整回传
- 移除 admin api-keys 路由中对 usage summary token 聚合的依赖
- 更新 admin api-keys 控制层测试,校验 token/时间字段来源与格式
|
2026-04-23 22:32:00 +08:00 |
|
fawney19
|
342d4a268c
|
feat(stream-bridge): 支持上游 sync 响应转 SSE 流式输出,记录 client/upstream 流模式差异
- 新增 sync_to_stream 桥接模块,将非 SSE 上游响应转换为 SSE 格式回传给流式客户端
- stream_pump 检测非 SSE 响应头后缓冲整包并通过桥接逻辑重写为 SSE 帧
- proxy handler 同步支持 sync→stream 聚合与转换(覆盖 openai/claude/gemini 四种格式)
- sync_products 补全 openai:cli 的完整流式事件聚合(text delta、reasoning、tool call 等)
- usage runtime 写入 client_requested_stream / upstream_is_stream 到 request_metadata
- SQL 查询层将两个布尔字段从 request_metadata jsonb 中提取并回传给前端
- 前端 status.ts 新增 resolveUsageStreamLabelSegments,优先读取 client_requested_stream
- RequestDetailDrawer 在流式转换场景下显示"客户端→上游"两段 Badge
|
2026-04-23 21:53:50 +08:00 |
|
fawney19
|
fa328e18a1
|
feat: provider api_formats 可空继承、OpenAI 图片 edit/variation 与用量配额多项补强
- 鉴权: provider_api_keys.api_formats 改为可空,OAuth 托管 key 自动继承 provider endpoints 激活格式,相关 handler/测试同步更新
- 图片 planner: OpenAI 图片路由新增 edit/variation 操作并完善参数校验、响应合并与流式处理
- 用量: user me usage 返回区分 client_requested_stream/upstream_is_stream,前端 usage 列表筛选与展示增强
- 统计: stats_daily_model 新增 cache_creation_ephemeral_5m/1h tokens 字段与回填链路
- 配额/observability: quota repository 新增内存与 SQL 扩展,admin observability usage 字段扩充
- 其它: OAuth 导入/轮询收敛、provider 汇总与 pool admin 读写链路小修、新增 system_config 缓存与 provider template handler
Closes #318
Co-authored-by: Entropy.Xu <53283266+Entropy-Xu@users.noreply.github.com>
|
2026-04-23 14:42:51 +08:00 |
|
Entropy.Xu
|
f55f22d2e8
|
feat(codex-image): 封装 GPT Image 2 图片接口并收紧错误处理
- 新增 openai:image 路由、planner 与 finalize,内部通过 Codex responses image_generation tool 执行生图
- 补充 Codex OAuth/header 兼容、图片 success report 本地处理与相关前后端/集成测试
- 禁止 chat/completions 使用 gpt-image-2,图片接口限制 n=1,并移除 Provider 模型页的图片能力开关
|
2026-04-22 22:46:28 +08:00 |
|
fawney19
|
4374f53315
|
fix(adaptive): 修复 429 计数归零写入及 reset 语义
- sql.rs: UPDATE 时对 concurrent_429_count / rpm_429_count 加 COALESCE(, 0),避免 None 覆写为 NULL
- effects.rs: rpm_429_count 始终写入 Some(projection.rpm_429_count),不再过滤零值;新增 unknown-429 场景下零值持久化的单元测试
- adaptive.rs: reset 接口将两个计数字段置为 Some(0) 而非 None,与数据库默认语义对齐;同步修正集成测试断言
- docker-compose.build.yml: 补充 AETHER_GATEWAY_AUTO_PREPARE_DATABASE 默认开启
- README.md: 同步说明 build compose 也已默认开启自动迁移
|
2026-04-22 22:16:51 +08:00 |
|
fawney19
|
a5e6bd3b62
|
feat(stats): 新增聚合读路径与回填机制并重构 dashboard/usage 读取链路
- 新增 stats_user_summary 及 user_daily_provider/api_format/cost_savings 等聚合表
- 扩展 stats_daily/hourly 有效 token 与响应时间等字段,maintenance runtime 同步写入
- 新增 backfill 模块与 --apply-backfills 命令补齐历史聚合数据
- 重写 dashboard_filters、usage_heatmap、user_rollups 查询改走聚合表
- 同步更新 baseline_v2.sql 与 migration 集,README/dev.sh 补充回填用法
|
2026-04-22 17:29:39 +08:00 |
|
fawney19
|
063ef02306
|
fix(oauth): 系统导入时清理失效标记并强制刷新 refresh_token,前端徽章优先使用 account_id
- 后端 admin 系统导入 OAuth 凭据时重置 expires_at 与失效标记,并在存在 refresh_token 时触发一次本地刷新
- 前端 OAuth 徽章改为优先展示 account_id,采用去前缀后 5 字符的紧凑格式
|
2026-04-21 18:06:39 +08:00 |
|
fawney19
|
25a2b417be
|
refactor: 优化调度候选排序与用量写入链路并改进 Fernet 缓存与前端批量列表
|
2026-04-21 16:19:07 +08:00 |
|
fawney19
|
c5c56ff92f
|
feat(oauth): 允许替换已失效的活跃 OAuth 账号并同步 status_snapshot
- 活跃但 token 已过期或刷新失败的重复账号视为可替换
- 清除失效标记、刷新配额时同步更新 status_snapshot.oauth
- oauth_invalid 清除接口同时识别 invalid_at 与 invalid_reason 两种标记
- 批量导入任务状态区分 created_count / replaced_count,前端据此展示新增/替换统计
- 补充重复替换场景的集成测试,用量测试等待超时从 10s 提升到 30s 以适应并行压力
|
2026-04-20 22:59:02 +08:00 |
|
RWDai
|
cf7d129595
|
fix(proxy-nodes): allow management tokens with json null allowed_ips (#317)
* fix(proxy-nodes): allow management tokens with json null allowed_ips
* style(proxy-nodes): format regression test
|
2026-04-20 21:50:48 +08:00 |
|