@adversity/coding-tool-x 3.1.1 → 3.1.3
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/CHANGELOG.md +41 -0
- package/dist/web/assets/Analytics-BIqc8Rin.css +1 -0
- package/dist/web/assets/Analytics-D2V09DHH.js +39 -0
- package/dist/web/assets/{ConfigTemplates-ZrK_s7ma.js → ConfigTemplates-Bf_11LhH.js} +1 -1
- package/dist/web/assets/Home-BRnW4FTS.js +1 -0
- package/dist/web/assets/Home-CyCIx4BA.css +1 -0
- package/dist/web/assets/{PluginManager-BD7QUZbU.js → PluginManager-B9J32GhW.js} +1 -1
- package/dist/web/assets/{ProjectList-DRb1DuHV.js → ProjectList-5a19MWJk.js} +1 -1
- package/dist/web/assets/SessionList-CXUr6S7w.css +1 -0
- package/dist/web/assets/SessionList-Cxg5bAdT.js +1 -0
- package/dist/web/assets/{SkillManager-C1xG5B4Q.js → SkillManager-CVBr0CLi.js} +1 -1
- package/dist/web/assets/{Terminal-DksBo_lM.js → Terminal-D2Xe_Q0H.js} +1 -1
- package/dist/web/assets/{WorkspaceManager-Burx7XOo.js → WorkspaceManager-C7dwV94C.js} +1 -1
- package/dist/web/assets/icons-BxcwoY5F.js +1 -0
- package/dist/web/assets/index-BS9RA6SN.js +2 -0
- package/dist/web/assets/index-DUNAVDGb.css +1 -0
- package/dist/web/assets/naive-ui-BIXcURHZ.js +1 -0
- package/dist/web/assets/{vendors-CO3Upi1d.js → vendors-i5CBGnlm.js} +1 -1
- package/dist/web/assets/{vue-vendor-DqyWIXEb.js → vue-vendor-PKd8utv_.js} +1 -1
- package/dist/web/index.html +6 -6
- package/package.json +1 -1
- package/src/config/default.js +7 -27
- package/src/config/loader.js +6 -3
- package/src/config/model-metadata.js +167 -0
- package/src/config/model-metadata.json +125 -0
- package/src/config/model-pricing.js +23 -93
- package/src/server/api/channels.js +16 -39
- package/src/server/api/codex-channels.js +15 -43
- package/src/server/api/commands.js +0 -77
- package/src/server/api/config.js +4 -1
- package/src/server/api/gemini-channels.js +16 -40
- package/src/server/api/opencode-channels.js +108 -56
- package/src/server/api/opencode-proxy.js +42 -33
- package/src/server/api/opencode-sessions.js +4 -69
- package/src/server/api/sessions.js +11 -68
- package/src/server/api/settings.js +138 -0
- package/src/server/api/skills.js +0 -44
- package/src/server/api/statistics.js +115 -1
- package/src/server/codex-proxy-server.js +32 -59
- package/src/server/gemini-proxy-server.js +21 -18
- package/src/server/index.js +13 -7
- package/src/server/opencode-proxy-server.js +1232 -197
- package/src/server/proxy-server.js +8 -8
- package/src/server/services/codex-sessions.js +105 -6
- package/src/server/services/commands-service.js +0 -29
- package/src/server/services/config-templates-service.js +38 -28
- package/src/server/services/env-checker.js +97 -9
- package/src/server/services/env-manager.js +29 -1
- package/src/server/services/opencode-channels.js +3 -1
- package/src/server/services/opencode-sessions.js +486 -218
- package/src/server/services/opencode-settings-manager.js +172 -36
- package/src/server/services/plugins-service.js +37 -28
- package/src/server/services/pty-manager.js +22 -18
- package/src/server/services/response-decoder.js +21 -0
- package/src/server/services/skill-service.js +1 -49
- package/src/server/services/speed-test.js +40 -3
- package/src/server/services/statistics-service.js +238 -1
- package/src/server/utils/pricing.js +51 -60
- package/src/server/websocket-server.js +24 -5
- package/dist/web/assets/Home-B8YfhZ3c.js +0 -1
- package/dist/web/assets/Home-Di2qsylF.css +0 -1
- package/dist/web/assets/SessionList-BGJWyneI.css +0 -1
- package/dist/web/assets/SessionList-lZ0LKzfT.js +0 -1
- package/dist/web/assets/icons-kcfLIMBB.js +0 -1
- package/dist/web/assets/index-Ufv5rCa5.css +0 -1
- package/dist/web/assets/index-lAkrRC3h.js +0 -2
- package/dist/web/assets/naive-ui-CSrLusZZ.js +0 -1
- package/src/server/api/convert.js +0 -260
- package/src/server/services/session-converter.js +0 -577
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,47 @@
|
|
|
4
4
|
|
|
5
5
|
该项目遵循 [Semantic Versioning](https://semver.org/)。
|
|
6
6
|
|
|
7
|
+
## [3.1.3] - 2026-02-28
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- ✨ **用量分析页面** - 新增独立 `/analytics` 页面,支持按模型/渠道/工具类型的 Token 用量、费用、请求数趋势图表
|
|
11
|
+
- ✨ **多工具数据聚合** - 分析图表合并 Claude / Codex / Gemini / OpenCode 四个工具的统计数据
|
|
12
|
+
- ✨ **堆叠柱状图 & 累计趋势图** - 基于 ECharts,支持柱状图/折线图切换、全屏展示
|
|
13
|
+
- ✨ **灵活时间范围** - 支持 1d/3d/7d/30d/90d 及自定义日期区间,自动选择小时/天粒度
|
|
14
|
+
- ✨ **数据导出** - 支持 CSV 和 JSON 格式导出趋势数据
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
- 🔄 **1天视图步长调整** - 从每2小时改为每4小时,减少数据点密度
|
|
18
|
+
- 🔄 **3天视图步长调整** - 从每6小时改为每12小时,图表更清晰
|
|
19
|
+
- 🔄 **X 轴日期格式精简** - 从 `2026-02-06` 改为 `02/06`,小时标签改为 `02/06 14:00`
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
- 🐛 **步长参数未传递** - 修复后端路由未解构 `step` 参数导致步长设置无效的问题
|
|
23
|
+
|
|
24
|
+
## [3.1.2] - 2026-02-27
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
- ✨ **模型元数据覆盖 API** - 新增 `GET/POST/DELETE /api/settings/model-metadata`,支持自定义模型定价与参数限制
|
|
28
|
+
- ✨ **Prompt Caching 支持** - 自动注入 `cache_control` 断点,与 OpenCode SDK 缓存策略对齐
|
|
29
|
+
- ✨ **推理努力级别支持** - 支持 `reasoning_effort` 参数向 Claude/Gemini 的转换
|
|
30
|
+
- ✨ **渠道允许模型列表** - 渠道新增 `allowedModels` 字段,支持显式指定可用模型
|
|
31
|
+
- ✨ **Chat Completions 流式中继** - 实现标准 OpenAI `chat/completions` 流式响应转换
|
|
32
|
+
- ✨ **Gemini 内置工具支持** - 支持 `googleSearch`、`codeExecution`、`urlContext` 等原生工具
|
|
33
|
+
- ✨ **多媒体内容规范化** - 支持 Base64 和 URL 形式的图像、文档内容块转换
|
|
34
|
+
|
|
35
|
+
### Changed
|
|
36
|
+
- 🔄 **OpenCode 会话数据迁移至 SQLite** - 从文件系统 JSON 迁移到 SQLite 查询,提升性能与一致性
|
|
37
|
+
- 🔄 **模型定价配置统一管理** - 从 `model-metadata.js` 动态生成定价表,消除重复维护
|
|
38
|
+
- 🔄 **渠道变更自动同步代理配置** - 创建/更新/删除渠道后自动刷新 OpenCode 代理设置
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
- 🐛 **Token 统计修复** - 修复缓存 Token 重复计算,正确处理 `cacheCreation` / `cacheRead` 统计
|
|
42
|
+
- 🐛 **代理流式响应压缩冲突** - 禁用上游 `accept-encoding`,防止双消费者竞争导致响应异常
|
|
43
|
+
- 🐛 **Gateway 路径规范化** - 修复末尾斜杠问题,确保 `/v1/responses` 与 `/responses` 路径正确识别
|
|
44
|
+
- 🐛 **环境变量冲突误报** - 修复删除配置后仍提示冲突的问题,同步清理进程中的同名变量
|
|
45
|
+
- 🐛 **Shell 配置文件检查补全** - 补充 `.bash_login`、`.zshenv`、`.zlogin` 等遗漏文件检查
|
|
46
|
+
- 🐛 **Chat Completions 流终止消息** - 补充最终 usage chunk,满足 `stream_options.include_usage` 规范
|
|
47
|
+
|
|
7
48
|
## [3.1.1] - 2026-02-26
|
|
8
49
|
|
|
9
50
|
### Added
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.analytics-page[data-v-89d9bff7]{height:100%;background:var(--bg-primary);overflow-y:auto;padding:16px 20px;box-sizing:border-box;display:flex;flex-direction:column;gap:14px}.analytics-header[data-v-89d9bff7]{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;flex-wrap:wrap;gap:10px}.page-title[data-v-89d9bff7]{margin:0;font-size:18px;font-weight:700;color:var(--text-primary)}.toolbar[data-v-89d9bff7]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.range-buttons[data-v-89d9bff7]{display:flex;align-items:center;gap:4px}.range-btn[data-v-89d9bff7]{padding:4px 10px;font-size:12px;border:1px solid var(--border-color, #e0e0e6);background:transparent;color:var(--text-secondary);border-radius:4px;cursor:pointer;transition:all .15s}.range-btn[data-v-89d9bff7]:hover{border-color:var(--primary-color, #18a058);color:var(--primary-color, #18a058)}.range-btn.active[data-v-89d9bff7]{background:var(--primary-color, #18a058);border-color:var(--primary-color, #18a058);color:#fff}.custom-range-wrapper[data-v-89d9bff7]{margin-left:4px}.loading-overlay[data-v-89d9bff7]{display:flex;justify-content:center;padding:20px 0}.summary-cards[data-v-89d9bff7]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;flex-shrink:0}.summary-card[data-v-89d9bff7]{background:var(--bg-secondary);border:1px solid var(--border-color, #e0e0e6);border-radius:8px;padding:14px 16px}.summary-label[data-v-89d9bff7]{font-size:11px;color:var(--text-secondary);margin-bottom:6px;text-transform:uppercase;letter-spacing:.05em}.summary-value[data-v-89d9bff7]{font-size:22px;font-weight:700;color:var(--text-primary);line-height:1.2}.chart-section[data-v-89d9bff7]{background:var(--bg-secondary);border:1px solid var(--border-color, #e0e0e6);border-radius:8px;padding:14px 16px;flex-shrink:0}.chart-section.fullscreen[data-v-89d9bff7]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;border-radius:0;padding:20px;background:var(--bg-secondary);overflow:auto}.cumulative-section[data-v-89d9bff7]{margin-bottom:8px}.chart-section-header[data-v-89d9bff7]{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.chart-title[data-v-89d9bff7]{font-size:13px;font-weight:600;color:var(--text-primary)}.chart-controls[data-v-89d9bff7]{display:flex;align-items:center;gap:8px}.chart-type-toggle[data-v-89d9bff7]{display:flex;border:1px solid var(--border-color, #e0e0e6);border-radius:4px;overflow:hidden}.toggle-btn[data-v-89d9bff7]{padding:3px 10px;font-size:12px;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .15s}.toggle-btn.active[data-v-89d9bff7]{background:var(--primary-color, #18a058);color:#fff}.icon-btn[data-v-89d9bff7]{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--border-color, #e0e0e6);border-radius:4px;background:transparent;cursor:pointer;color:var(--text-secondary);transition:all .15s}.icon-btn[data-v-89d9bff7]:hover{border-color:var(--primary-color, #18a058);color:var(--primary-color, #18a058)}.main-chart[data-v-89d9bff7]{height:560px;width:100%}.chart-section.fullscreen .main-chart[data-v-89d9bff7]{height:calc(100vh - 100px)}.cumulative-chart[data-v-89d9bff7]{height:200px;width:100%}.empty-state[data-v-89d9bff7]{height:120px;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);font-size:13px}@media (max-width: 768px){.analytics-page[data-v-89d9bff7]{padding:10px 12px}.summary-cards[data-v-89d9bff7]{grid-template-columns:repeat(2,1fr)}.analytics-header[data-v-89d9bff7]{flex-direction:column;align-items:flex-start}.toolbar[data-v-89d9bff7]{width:100%}}@media (max-width: 480px){.summary-cards[data-v-89d9bff7]{grid-template-columns:1fr 1fr}.summary-value[data-v-89d9bff7]{font-size:18px}}
|