coding-tool-x 3.6.6 → 3.6.8

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.
Files changed (56) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/web/assets/{Analytics-CcGKjDkP.js → Analytics-C57ZRDq5.js} +1 -1
  3. package/dist/web/assets/{ConfigTemplates-DPOa1w5D.js → ConfigTemplates-B3qqqL05.js} +1 -1
  4. package/dist/web/assets/Home-CG5XrTNc.js +1 -0
  5. package/dist/web/assets/Home-CIua-b-o.css +1 -0
  6. package/dist/web/assets/{PluginManager-BVbHUdey.js → PluginManager-BhX0LUzr.js} +1 -1
  7. package/dist/web/assets/{ProjectList-BQrz2FKo.js → ProjectList-BQ01OZn9.js} +1 -1
  8. package/dist/web/assets/{SessionList-CRGer64T.js → SessionList-DPv2IOXG.js} +1 -1
  9. package/dist/web/assets/{SkillManager-BhJKtWYM.js → SkillManager-D5CfQm2O.js} +1 -1
  10. package/dist/web/assets/{WorkspaceManager-pc6tpF3m.js → WorkspaceManager-Ce8ggteK.js} +1 -1
  11. package/dist/web/assets/index-CpnFNWqC.js +2 -0
  12. package/dist/web/assets/index-DJ9VFidd.css +1 -0
  13. package/dist/web/assets/{naive-ui-DM897mIP.js → naive-ui-kcWDeJwl.js} +1 -1
  14. package/dist/web/index.html +3 -3
  15. package/package.json +1 -1
  16. package/src/commands/stats.js +1 -1
  17. package/src/config/channel-preset-websites.js +2 -1
  18. package/src/config/paths.js +8 -0
  19. package/src/server/api/agents.js +16 -54
  20. package/src/server/api/claude-hooks.js +1 -1
  21. package/src/server/api/claude-statistics.js +57 -0
  22. package/src/server/api/commands.js +16 -54
  23. package/src/server/api/dashboard.js +2 -2
  24. package/src/server/api/gemini-channels.js +2 -0
  25. package/src/server/api/hooks.js +4 -1
  26. package/src/server/api/plugins.js +40 -65
  27. package/src/server/api/skills.js +21 -77
  28. package/src/server/api/validation-errors.js +34 -0
  29. package/src/server/gemini-proxy-server.js +205 -21
  30. package/src/server/index.js +1 -0
  31. package/src/server/services/agents-service.js +166 -75
  32. package/src/server/services/base/base-channel-service.js +15 -0
  33. package/src/server/services/base/proxy-utils.js +6 -3
  34. package/src/server/services/base/response-usage-parser.js +44 -0
  35. package/src/server/services/channel-balance.js +86 -1
  36. package/src/server/services/claude-statistics-service.js +139 -0
  37. package/src/server/services/commands-service.js +203 -121
  38. package/src/server/services/config-artifact-paths.js +116 -0
  39. package/src/server/services/config-export-service.js +7 -6
  40. package/src/server/services/config-registry-service.js +2 -2
  41. package/src/server/services/config-sync-manager.js +45 -11
  42. package/src/server/services/config-templates-service.js +21 -19
  43. package/src/server/services/format-converter.js +42 -4
  44. package/src/server/services/gemini-channels.js +30 -1
  45. package/src/server/services/gemini-sessions.js +347 -61
  46. package/src/server/services/mcp-client.js +236 -49
  47. package/src/server/services/mcp-service.js +51 -64
  48. package/src/server/services/notification-hooks.js +659 -88
  49. package/src/server/services/opencode-channels.js +15 -0
  50. package/src/server/services/plugins-service.js +771 -63
  51. package/src/server/services/repo-scanner-base.js +6 -29
  52. package/src/server/services/skill-service.js +187 -63
  53. package/dist/web/assets/Home-BP1LxGtp.js +0 -1
  54. package/dist/web/assets/Home-BeGkC4bb.css +0 -1
  55. package/dist/web/assets/index-0isNzXNY.css +0 -1
  56. package/dist/web/assets/index-BsdIJwLf.js +0 -2
@@ -9,6 +9,14 @@ const {
9
9
  } = require('./opencode-settings-manager');
10
10
  const { normalizeGatewaySourceType } = require('./base/proxy-utils');
11
11
 
12
+ function clearChannelBalanceCache(channel) {
13
+ try {
14
+ require('./channel-balance').clearChannelBalanceCache('opencode', channel);
15
+ } catch (_) {
16
+ // Balance cache invalidation is best-effort and should not block channel updates.
17
+ }
18
+ }
19
+
12
20
  /**
13
21
  * OpenCode 渠道管理服务
14
22
  * 存储位置: ~/.cc-tool/opencode-channels.json
@@ -238,6 +246,9 @@ function updateChannel(channelId, updates) {
238
246
  }
239
247
 
240
248
  saveChannels(data);
249
+ if (oldChannel.enabled === false && merged.enabled !== false) {
250
+ clearChannelBalanceCache(merged);
251
+ }
241
252
 
242
253
  if (!isProxyRunning) {
243
254
  if (oldChannel.enabled === false && merged.enabled !== false) {
@@ -313,11 +324,15 @@ function applyChannelToSettings(channelId) {
313
324
  throw new Error('Channel not found');
314
325
  }
315
326
 
327
+ const wasEnabled = channel.enabled !== false;
316
328
  // In single-channel mode, only this channel should be enabled
317
329
  data.channels.forEach(ch => {
318
330
  ch.enabled = ch.id === channelId;
319
331
  });
320
332
  saveChannels(data);
333
+ if (!wasEnabled) {
334
+ clearChannelBalanceCache(channel);
335
+ }
321
336
 
322
337
  setChannelConfig(buildNativeConfigChannel(channel));
323
338