@jingyi0605/codingns4dsh 0.2.1-rc.2 → 0.2.1-rc.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.
Files changed (202) hide show
  1. package/README.en.md +6 -4
  2. package/README.md +6 -6
  3. package/data/build/dist/bootstrap/dsh-connection-adapter.d.ts +1 -1
  4. package/data/build/dist/bootstrap/index.d.ts +1 -1
  5. package/data/build/dist/client/bundle.js +5306 -493
  6. package/data/build/dist/client/bundle.js.map +1 -1
  7. package/data/build/dist/client/client.magpie-model-tag.js +155 -5
  8. package/data/build/dist/client/client.magpie-model-tag.js.map +1 -1
  9. package/data/build/dist/client/client.native-workspace-store.js +30 -4
  10. package/data/build/dist/client/client.native-workspace-store.js.map +1 -1
  11. package/data/build/dist/client/client.transport.js +725 -48
  12. package/data/build/dist/client/client.transport.js.map +1 -1
  13. package/data/build/dist/client/desktop-assistant.js +931 -185
  14. package/data/build/dist/client/feature-requirement.d.ts +43 -0
  15. package/data/build/dist/client/feature-requirement.d.ts.map +1 -0
  16. package/data/build/dist/client/feature-requirement.js +105 -0
  17. package/data/build/dist/client/feature-requirement.js.map +1 -0
  18. package/data/build/dist/client/features/index.d.ts +1 -0
  19. package/data/build/dist/client/features/index.d.ts.map +1 -1
  20. package/data/build/dist/client/features/index.js +3 -0
  21. package/data/build/dist/client/features/index.js.map +1 -1
  22. package/data/build/dist/client/features/magpie-management-controls.d.ts +46 -0
  23. package/data/build/dist/client/features/magpie-management-controls.d.ts.map +1 -0
  24. package/data/build/dist/client/features/magpie-management-controls.js +759 -0
  25. package/data/build/dist/client/features/magpie-management-controls.js.map +1 -0
  26. package/data/build/dist/client/features/magpie-management-page.d.ts +124 -0
  27. package/data/build/dist/client/features/magpie-management-page.d.ts.map +1 -0
  28. package/data/build/dist/client/features/magpie-management-page.js +1256 -0
  29. package/data/build/dist/client/features/magpie-management-page.js.map +1 -0
  30. package/data/build/dist/client/features/magpie-management.d.ts +7 -0
  31. package/data/build/dist/client/features/magpie-management.d.ts.map +1 -0
  32. package/data/build/dist/client/features/magpie-management.js +154 -0
  33. package/data/build/dist/client/features/magpie-management.js.map +1 -0
  34. package/data/build/dist/client/features/magpie-mark.d.ts +10 -0
  35. package/data/build/dist/client/features/magpie-mark.d.ts.map +1 -0
  36. package/data/build/dist/client/features/magpie-mark.js +21 -0
  37. package/data/build/dist/client/features/magpie-mark.js.map +1 -0
  38. package/data/build/dist/client/features/magpie-provider-logo.d.ts +11 -0
  39. package/data/build/dist/client/features/magpie-provider-logo.d.ts.map +1 -0
  40. package/data/build/dist/client/features/magpie-provider-logo.js +35 -0
  41. package/data/build/dist/client/features/magpie-provider-logo.js.map +1 -0
  42. package/data/build/dist/client/features/subscription-quota-groups.d.ts +193 -0
  43. package/data/build/dist/client/features/subscription-quota-groups.d.ts.map +1 -0
  44. package/data/build/dist/client/features/subscription-quota-groups.js +548 -0
  45. package/data/build/dist/client/features/subscription-quota-groups.js.map +1 -0
  46. package/data/build/dist/client/git-management.d.ts.map +1 -1
  47. package/data/build/dist/client/git-management.js +11 -9
  48. package/data/build/dist/client/git-management.js.map +1 -1
  49. package/data/build/dist/client/git-panel-styles.js +1 -0
  50. package/data/build/dist/client/git-panel-styles.js.map +1 -1
  51. package/data/build/dist/client/index.d.ts +1 -1
  52. package/data/build/dist/client/index.d.ts.map +1 -1
  53. package/data/build/dist/client/index.js +1 -1
  54. package/data/build/dist/client/index.js.map +1 -1
  55. package/data/build/dist/client/locale.d.ts.map +1 -1
  56. package/data/build/dist/client/locale.js +7 -0
  57. package/data/build/dist/client/locale.js.map +1 -1
  58. package/data/build/dist/client/locales/magpie.d.ts +4 -0
  59. package/data/build/dist/client/locales/magpie.d.ts.map +1 -0
  60. package/data/build/dist/client/locales/magpie.js +622 -0
  61. package/data/build/dist/client/locales/magpie.js.map +1 -0
  62. package/data/build/dist/client/locales/usage.d.ts.map +1 -1
  63. package/data/build/dist/client/locales/usage.js +52 -0
  64. package/data/build/dist/client/locales/usage.js.map +1 -1
  65. package/data/build/dist/client/magpie-model-tag.d.ts +9 -1
  66. package/data/build/dist/client/magpie-model-tag.d.ts.map +1 -1
  67. package/data/build/dist/client/magpie-model-tag.js +15 -3
  68. package/data/build/dist/client/magpie-model-tag.js.map +1 -1
  69. package/data/build/dist/client/provider-icons.d.ts +8 -0
  70. package/data/build/dist/client/provider-icons.d.ts.map +1 -1
  71. package/data/build/dist/client/provider-icons.js +122 -2
  72. package/data/build/dist/client/provider-icons.js.map +1 -1
  73. package/data/build/dist/client/settings-bridge.d.ts +1 -0
  74. package/data/build/dist/client/settings-bridge.d.ts.map +1 -1
  75. package/data/build/dist/client/settings-bridge.js +29 -10
  76. package/data/build/dist/client/settings-bridge.js.map +1 -1
  77. package/data/build/dist/client/settings-section.d.ts.map +1 -1
  78. package/data/build/dist/client/settings-section.js +21 -3
  79. package/data/build/dist/client/settings-section.js.map +1 -1
  80. package/data/build/dist/client/style.css +224 -221
  81. package/data/build/dist/client/subscription-slot.d.ts +20 -0
  82. package/data/build/dist/client/subscription-slot.d.ts.map +1 -1
  83. package/data/build/dist/client/subscription-slot.js +321 -18
  84. package/data/build/dist/client/subscription-slot.js.map +1 -1
  85. package/data/build/dist/dsh-capabilities/client/global-panel-adapter.d.ts +27 -0
  86. package/data/build/dist/dsh-capabilities/client/global-panel-adapter.d.ts.map +1 -0
  87. package/data/build/dist/dsh-capabilities/client/global-panel-adapter.js +109 -0
  88. package/data/build/dist/dsh-capabilities/client/global-panel-adapter.js.map +1 -0
  89. package/data/build/dist/dsh-capabilities/host/session-title-adapter.d.ts +2 -1
  90. package/data/build/dist/dsh-capabilities/host/session-title-adapter.d.ts.map +1 -1
  91. package/data/build/dist/dsh-capabilities/host/session-title-adapter.js +32 -2
  92. package/data/build/dist/dsh-capabilities/host/session-title-adapter.js.map +1 -1
  93. package/data/build/dist/dsh-capabilities/matrix.d.ts.map +1 -1
  94. package/data/build/dist/dsh-capabilities/matrix.js +12 -11
  95. package/data/build/dist/dsh-capabilities/matrix.js.map +1 -1
  96. package/data/build/dist/dsh-capabilities/routes.d.ts.map +1 -1
  97. package/data/build/dist/dsh-capabilities/routes.js +12 -9
  98. package/data/build/dist/dsh-capabilities/routes.js.map +1 -1
  99. package/data/build/dist/dsh-capabilities/types.d.ts +1 -1
  100. package/data/build/dist/dsh-capabilities/types.d.ts.map +1 -1
  101. package/data/build/dist/dsh-capabilities/types.js.map +1 -1
  102. package/data/build/dist/host/cli-adapters/acp-cli-driver.d.ts +27 -0
  103. package/data/build/dist/host/cli-adapters/acp-cli-driver.d.ts.map +1 -1
  104. package/data/build/dist/host/cli-adapters/acp-cli-driver.js +88 -13
  105. package/data/build/dist/host/cli-adapters/acp-cli-driver.js.map +1 -1
  106. package/data/build/dist/host/cli-adapters/codex-driver.d.ts +10 -0
  107. package/data/build/dist/host/cli-adapters/codex-driver.d.ts.map +1 -1
  108. package/data/build/dist/host/cli-adapters/codex-driver.js +32 -1
  109. package/data/build/dist/host/cli-adapters/codex-driver.js.map +1 -1
  110. package/data/build/dist/host/cli-adapters/command-code-acp-loader.d.ts +6 -5
  111. package/data/build/dist/host/cli-adapters/command-code-acp-loader.d.ts.map +1 -1
  112. package/data/build/dist/host/cli-adapters/command-code-acp-loader.js +72 -12
  113. package/data/build/dist/host/cli-adapters/command-code-acp-loader.js.map +1 -1
  114. package/data/build/dist/host/cli-adapters/command-code-driver.d.ts.map +1 -1
  115. package/data/build/dist/host/cli-adapters/command-code-driver.js +26 -1
  116. package/data/build/dist/host/cli-adapters/command-code-driver.js.map +1 -1
  117. package/data/build/dist/host/cli-adapters/dsh-message-projector.d.ts.map +1 -1
  118. package/data/build/dist/host/cli-adapters/dsh-message-projector.js +15 -2
  119. package/data/build/dist/host/cli-adapters/dsh-message-projector.js.map +1 -1
  120. package/data/build/dist/host/cli-adapters/feature.d.ts +13 -0
  121. package/data/build/dist/host/cli-adapters/feature.d.ts.map +1 -1
  122. package/data/build/dist/host/cli-adapters/feature.js +390 -6
  123. package/data/build/dist/host/cli-adapters/feature.js.map +1 -1
  124. package/data/build/dist/host/cli-adapters/grok-driver.js +5 -0
  125. package/data/build/dist/host/cli-adapters/grok-driver.js.map +1 -1
  126. package/data/build/dist/host/cli-adapters/magpie-detection.d.ts +72 -0
  127. package/data/build/dist/host/cli-adapters/magpie-detection.d.ts.map +1 -0
  128. package/data/build/dist/host/cli-adapters/magpie-detection.js +298 -0
  129. package/data/build/dist/host/cli-adapters/magpie-detection.js.map +1 -0
  130. package/data/build/dist/host/cli-adapters/magpie-management.d.ts +50 -0
  131. package/data/build/dist/host/cli-adapters/magpie-management.d.ts.map +1 -0
  132. package/data/build/dist/host/cli-adapters/magpie-management.js +1268 -0
  133. package/data/build/dist/host/cli-adapters/magpie-management.js.map +1 -0
  134. package/data/build/dist/host/cli-adapters/magpie-update.d.ts +59 -0
  135. package/data/build/dist/host/cli-adapters/magpie-update.d.ts.map +1 -0
  136. package/data/build/dist/host/cli-adapters/magpie-update.js +249 -0
  137. package/data/build/dist/host/cli-adapters/magpie-update.js.map +1 -0
  138. package/data/build/dist/host/cli-adapters/magpie-usage.d.ts +66 -8
  139. package/data/build/dist/host/cli-adapters/magpie-usage.d.ts.map +1 -1
  140. package/data/build/dist/host/cli-adapters/magpie-usage.js +846 -122
  141. package/data/build/dist/host/cli-adapters/magpie-usage.js.map +1 -1
  142. package/data/build/dist/host/cli-adapters/magpie-web.d.ts +54 -0
  143. package/data/build/dist/host/cli-adapters/magpie-web.d.ts.map +1 -0
  144. package/data/build/dist/host/cli-adapters/magpie-web.js +407 -0
  145. package/data/build/dist/host/cli-adapters/magpie-web.js.map +1 -0
  146. package/data/build/dist/host/cli-adapters/process-utils.d.ts +2 -0
  147. package/data/build/dist/host/cli-adapters/process-utils.d.ts.map +1 -1
  148. package/data/build/dist/host/cli-adapters/process-utils.js +4 -0
  149. package/data/build/dist/host/cli-adapters/process-utils.js.map +1 -1
  150. package/data/build/dist/host/dsh-gateway-feature.d.ts.map +1 -1
  151. package/data/build/dist/host/dsh-gateway-feature.js +26 -3
  152. package/data/build/dist/host/dsh-gateway-feature.js.map +1 -1
  153. package/data/build/dist/host/features/host-status.d.ts +25 -0
  154. package/data/build/dist/host/features/host-status.d.ts.map +1 -1
  155. package/data/build/dist/host/features/host-status.js +60 -6
  156. package/data/build/dist/host/features/host-status.js.map +1 -1
  157. package/data/build/dist/host/features/lan-access-dsh.d.ts.map +1 -1
  158. package/data/build/dist/host/features/lan-access-dsh.js +61 -10
  159. package/data/build/dist/host/features/lan-access-dsh.js.map +1 -1
  160. package/data/build/dist/host/features/session-translation-protection.d.ts.map +1 -1
  161. package/data/build/dist/host/features/session-translation-protection.js +2 -1
  162. package/data/build/dist/host/features/session-translation-protection.js.map +1 -1
  163. package/data/build/dist/host/lan-access-dsh.d.ts.map +1 -1
  164. package/data/build/dist/host/lan-access-dsh.js +6 -2
  165. package/data/build/dist/host/lan-access-dsh.js.map +1 -1
  166. package/data/build/dist/host/modules/pwa/pwa-session-notifications.js +2 -1
  167. package/data/build/dist/host/modules/pwa/pwa-session-notifications.js.map +1 -1
  168. package/data/build/dist/host/rpc.d.ts +15 -2
  169. package/data/build/dist/host/rpc.d.ts.map +1 -1
  170. package/data/build/dist/host/rpc.js +47 -6
  171. package/data/build/dist/host/rpc.js.map +1 -1
  172. package/data/build/dist/host/settings.d.ts.map +1 -1
  173. package/data/build/dist/host/settings.js +5 -0
  174. package/data/build/dist/host/settings.js.map +1 -1
  175. package/data/build/dist/shared/contracts/config.d.ts +18 -0
  176. package/data/build/dist/shared/contracts/config.d.ts.map +1 -1
  177. package/data/build/dist/shared/contracts/config.js +8 -0
  178. package/data/build/dist/shared/contracts/config.js.map +1 -1
  179. package/data/build/dist/shared/contracts/errors.d.ts +2 -2
  180. package/data/build/dist/shared/contracts/feature.d.ts +7 -0
  181. package/data/build/dist/shared/contracts/feature.d.ts.map +1 -1
  182. package/data/build/dist/shared/contracts/magpie-management.d.ts +395 -0
  183. package/data/build/dist/shared/contracts/magpie-management.d.ts.map +1 -0
  184. package/data/build/dist/shared/contracts/magpie-management.js +2 -0
  185. package/data/build/dist/shared/contracts/magpie-management.js.map +1 -0
  186. package/data/build/dist/shared/contracts/subscription.d.ts +75 -1
  187. package/data/build/dist/shared/contracts/subscription.d.ts.map +1 -1
  188. package/data/build/dist/shared/contracts/subscription.js.map +1 -1
  189. package/data/build/dist/shared/contracts/version.d.ts +4 -4
  190. package/data/build/dist/shared/contracts/version.js +3 -3
  191. package/data/build/dist/shared/index.d.ts +2 -1
  192. package/data/build/dist/shared/index.d.ts.map +1 -1
  193. package/data/build/dist/shared/index.js +1 -1
  194. package/data/build/dist/shared/index.js.map +1 -1
  195. package/data/build/dist/shared/session-title.d.ts.map +1 -1
  196. package/data/build/dist/shared/session-title.js +10 -4
  197. package/data/build/dist/shared/session-title.js.map +1 -1
  198. package/package.json +29 -29
  199. package/profile/README.md +2 -2
  200. package/profile/package.json +3 -3
  201. package/profile/version.json +3 -3
  202. package/version.json +3 -3
@@ -0,0 +1,548 @@
1
+ import { createElement } from 'react';
2
+ import { MagpieProviderLogo } from './magpie-provider-logo.js';
3
+ import { uiFontSize } from '../font-scale.js';
4
+ /**
5
+ * 按厂商分组,保持上游首次出现的顺序。
6
+ *
7
+ * 组内把 `active` 账号提到最前,其余沿用上游顺序;没有 `active` 标记时完全保持原顺序,
8
+ * 不对"哪个账号正在使用"做任何猜测。
9
+ */
10
+ export function groupQuotasByProvider(quotas) {
11
+ const groups = new Map();
12
+ for (const quota of quotas) {
13
+ const provider = quota.provider.trim();
14
+ if (provider === '')
15
+ continue;
16
+ const existing = groups.get(provider);
17
+ if (existing === undefined)
18
+ groups.set(provider, [quota]);
19
+ else
20
+ existing.push(quota);
21
+ }
22
+ return [...groups.entries()].map(([provider, accounts]) => {
23
+ const first = accounts[0];
24
+ const ordered = [...accounts.filter((quota) => quota.active === true), ...accounts.filter((quota) => quota.active !== true)];
25
+ return {
26
+ provider,
27
+ name: first.name,
28
+ ...(first.icon === undefined ? {} : { icon: first.icon }),
29
+ ...(first.logoDataUrl === undefined ? {} : { logoDataUrl: first.logoDataUrl }),
30
+ accounts: ordered,
31
+ hasActive: ordered.some((quota) => quota.active === true),
32
+ };
33
+ });
34
+ }
35
+ /** 账号在组内的显示名:用户起的别名优先,其次上游账号名,最后回退到厂商名。 */
36
+ export function quotaAccountLabel(quota, fallback) {
37
+ return quota.alias?.trim() || quota.user?.trim() || quota.name.trim() || fallback;
38
+ }
39
+ /** 单个窗口的剩余百分比;上游只给 `used` 时反推,两者都没有时返回 null。 */
40
+ export function quotaWindowRemaining(window) {
41
+ if (window.remainingPercent !== null)
42
+ return window.remainingPercent;
43
+ if (window.usedPercent !== null)
44
+ return 100 - window.usedPercent;
45
+ return null;
46
+ }
47
+ /** 窗口余量的可读数值:优先上游的 `display`,其次 `amount / limit unit`。 */
48
+ export function quotaWindowAmount(window) {
49
+ if (window.display !== null)
50
+ return window.display;
51
+ if (window.amount === null || window.limit === null)
52
+ return null;
53
+ const unit = window.unit === null ? '' : ` ${window.unit}`;
54
+ return `${formatQuotaNumber(window.amount)} / ${formatQuotaNumber(window.limit)}${unit}`;
55
+ }
56
+ /** 四舍五入到两位小数;整数不补 `.00`,避免 2400 显示成 2400.00。 */
57
+ export function formatQuotaNumber(value) {
58
+ if (!Number.isFinite(value))
59
+ return '--';
60
+ return String(Math.round(value * 100) / 100);
61
+ }
62
+ /**
63
+ * 解析 Magpie 账号余额文本。
64
+ *
65
+ * Magpie 的 `balance` 是厂商原样文本(Codex 为 `69643.12 credits`,New-API 为
66
+ * `$74.40`),既可能是金额也可能是积分。这里按明确出现的币种符号与小数位识别
67
+ * 金额,`credits` 之类的单位保留原样,避免把积分当成美元。
68
+ */
69
+ export function parseQuotaBalance(value) {
70
+ const raw = value?.trim() ?? '';
71
+ if (raw === '')
72
+ return null;
73
+ // 显式币种符号优先,允许符号在数值前或后(`€1.50` / `1.50 €`)。
74
+ const parsed = /^(?<prefix>\D*?)\s*(?<amount>\d[\d,]*(?:\.\d+)?)\s*(?<suffix>.*)$/u.exec(raw);
75
+ if (parsed === null)
76
+ return null;
77
+ const digits = parsed.groups?.prefix ?? '';
78
+ const amountText = parsed.groups?.amount ?? '';
79
+ const trailer = (parsed.groups?.suffix ?? '').trim();
80
+ const amount = Number(amountText.replace(/,/gu, ''));
81
+ if (!Number.isFinite(amount))
82
+ return null;
83
+ // 币种符号只看前缀与后缀的首个词:`69643.12 credits` 的 `credits` 是单位,不是币种。
84
+ const firstToken = (text) => (text.trim().split(/\s+/u)[0] ?? '').toUpperCase();
85
+ const symbol = QUOTA_CURRENCY_SYMBOLS.get(firstToken(digits))
86
+ ?? QUOTA_CURRENCY_SYMBOLS.get(firstToken(trailer));
87
+ const code = /^[A-Z]{3}$/u.test(firstToken(trailer)) ? firstToken(trailer) : null;
88
+ const unit = symbol ?? code ?? (trailer === '' ? '' : trailer);
89
+ return {
90
+ raw,
91
+ unit,
92
+ amount,
93
+ // 只有带币种(符号或代码)的余额才是金额。裸小数也可能是积分,
94
+ // 例如 `69643.12 credits` 不能显示成 `$69643.12`。
95
+ money: symbol !== undefined || code !== null,
96
+ };
97
+ }
98
+ const QUOTA_CURRENCY_SYMBOLS = new Map([
99
+ ['$', '$'],
100
+ ['US$', '$'],
101
+ ['USD', '$'],
102
+ ['€', '€'],
103
+ ['EUR', '€'],
104
+ ['¥', '¥'],
105
+ ['¥', '¥'],
106
+ ['CNY', '¥'],
107
+ ['RMB', '¥'],
108
+ ['£', '£'],
109
+ ['GBP', '£'],
110
+ ['₹', '₹'],
111
+ ['INR', '₹'],
112
+ ['₩', '₩'],
113
+ ['KRW', '₩'],
114
+ ['₽', '₽'],
115
+ ['RUB', '₽'],
116
+ ]);
117
+ /** 金额的展示文本:小数保留到两位,极小金额保留有效位而不是舍成 0.00。 */
118
+ export function formatQuotaBalance(balance) {
119
+ const amount = balance.amount;
120
+ const rounded = Number.isInteger(amount) && balance.unit === '' ? String(amount) : amount.toFixed(2);
121
+ if (balance.unit === '')
122
+ return rounded;
123
+ if (balance.unit === '$')
124
+ return `$${rounded}`;
125
+ return `${balance.unit}${rounded}`;
126
+ }
127
+ /** 窗口名里表示"按积分计量"的词;这些窗口的 `remaining` 才是人工可读的余额。 */
128
+ const QUOTA_CREDIT_UNIT_PATTERN = /credit|points|积分|点数/iu;
129
+ /** 单个窗口是否按积分计量,以及它的余量读数;普通百分比窗口返回 null。 */
130
+ export function readWindowCreditBalance(window) {
131
+ const unit = window.unit?.trim() ?? '';
132
+ const named = QUOTA_CREDIT_UNIT_PATTERN.test(window.name);
133
+ const typed = unit !== '' && QUOTA_CREDIT_UNIT_PATTERN.test(unit);
134
+ if (!named && !typed)
135
+ return null;
136
+ const unitLabel = unit !== '' ? unit : window.name.trim();
137
+ // 上游按数量记账时,`amount` 就是剩余量(Magpie 契约:`amount of limit used`)。
138
+ if (window.amount !== null && Number.isFinite(window.amount)) {
139
+ const limit = window.limit !== null && Number.isFinite(window.limit) ? window.limit : null;
140
+ return { remaining: window.amount, limit, unit: unitLabel, display: window.display };
141
+ }
142
+ // 没有数量时上游给的是百分比:用百分比乘上限还原剩余量。
143
+ const percent = quotaWindowRemaining(window);
144
+ if (percent === null || window.limit === null || !Number.isFinite(window.limit))
145
+ return null;
146
+ return { remaining: (window.limit * percent) / 100, limit: window.limit, unit: unitLabel, display: window.display };
147
+ }
148
+ /**
149
+ * 读取账号的积分余额。
150
+ *
151
+ * 只认带积分含义的窗口或单位,普通的百分比窗口(`5 hours`、`7 days`)不参与,
152
+ * 避免把"剩余 73%"说成"73 积分"。
153
+ */
154
+ export function resolveQuotaCreditBalance(quota) {
155
+ for (const window of quota.windows) {
156
+ const credit = readWindowCreditBalance(window);
157
+ if (credit !== null)
158
+ return credit;
159
+ }
160
+ return null;
161
+ }
162
+ /**
163
+ * 弹层里的积分文本:`剩余 / 上限 + 单位`。
164
+ *
165
+ * 只在窗口没有百分比时使用(百分比仍是更直接的读法);上游给了 `0 / 350`
166
+ * 这类 display 原文时优先照抄,避免自己再算一遍四舍五入。
167
+ */
168
+ export function formatQuotaCredits(credits) {
169
+ if (credits.display !== null && credits.display.trim() !== '')
170
+ return credits.display.trim();
171
+ const unit = credits.unit === '' ? '' : ` ${credits.unit}`;
172
+ return credits.limit === null
173
+ ? `${formatQuotaNumber(credits.remaining)}${unit}`
174
+ : `${formatQuotaNumber(credits.remaining)} / ${formatQuotaNumber(credits.limit)}${unit}`;
175
+ }
176
+ /**
177
+ * 底部栏触发按钮上要显示的余额文本。
178
+ *
179
+ * 优先展示金额余额(如 New-API 的 `$74.40`);没有金额但上游按积分计量时展示积分
180
+ * (如 WorkBuddy 的 `350`)。状态词之类的伪余额不显示,由圆形额度环承担。
181
+ * 多个账号时展示会话实际使用的账号,否则取第一个有余额的账号。
182
+ */
183
+ export function resolveQuotaBalanceLabel(quotas) {
184
+ // 旧版 Host 或网关不可用时快照没有 `quotas` 字段,这里不能假设数组存在。
185
+ const rows = quotas ?? [];
186
+ const ordered = [...rows.filter((quota) => quota.active === true), ...rows.filter((quota) => quota.active !== true)];
187
+ for (const quota of ordered) {
188
+ const balance = parseQuotaBalance(quota.balance);
189
+ if (balance !== null && balance.money && balance.amount > 0)
190
+ return formatQuotaBalance(balance);
191
+ }
192
+ for (const quota of ordered) {
193
+ const credits = resolveQuotaCreditBalance(quota);
194
+ if (credits !== null && credits.remaining > 0)
195
+ return formatQuotaNumber(credits.remaining);
196
+ }
197
+ return null;
198
+ }
199
+ export function classifyCheckin(quota, today) {
200
+ const checkin = quota.checkin ?? null;
201
+ if (checkin === null)
202
+ return quota.checkins === true ? 'pending' : 'unknown';
203
+ if (checkin.day !== null && checkin.day !== today)
204
+ return quota.checkins === true ? 'pending' : 'unknown';
205
+ switch (checkin.outcome) {
206
+ case 'claimed':
207
+ case 'done':
208
+ return 'claimed';
209
+ case 'failed':
210
+ return 'failed';
211
+ case 'ineligible':
212
+ return 'ineligible';
213
+ case 'inactive':
214
+ return 'inactive';
215
+ case 'captcha':
216
+ return 'captcha';
217
+ case 'own-app':
218
+ return 'own-app';
219
+ default:
220
+ return 'unknown';
221
+ }
222
+ }
223
+ /** 用本地时区算出"今天",与上游的 `day` 字段比较时必须用同一时区。 */
224
+ export function localDayKey(nowMs) {
225
+ const date = new Date(nowMs);
226
+ const month = String(date.getMonth() + 1).padStart(2, '0');
227
+ const day = String(date.getDate()).padStart(2, '0');
228
+ return `${date.getFullYear()}-${month}-${day}`;
229
+ }
230
+ /** 签到状态的本地化文案;参数为空对象时表示"今天还没有签到记录"。 */
231
+ export function describeCheckin(state, checkin, t) {
232
+ switch (state) {
233
+ case 'claimed':
234
+ return t('usage.checkinClaimed', {
235
+ credit: checkin?.credit === null || checkin?.credit === undefined ? '' : ` +${formatQuotaNumber(checkin.credit)}`,
236
+ streak: checkin?.streak === null || checkin?.streak === undefined ? '' : t('usage.checkinStreak', { days: checkin.streak }),
237
+ }).replace(/\s+/gu, ' ').trim();
238
+ case 'failed':
239
+ return t('usage.checkinFailed');
240
+ case 'ineligible':
241
+ return t('usage.checkinIneligible');
242
+ case 'inactive':
243
+ return t('usage.checkinInactive');
244
+ case 'captcha':
245
+ return t('usage.checkinCaptcha');
246
+ case 'own-app':
247
+ return t('usage.checkinOwnApp');
248
+ case 'pending':
249
+ return t('usage.checkinPending');
250
+ default:
251
+ return t('usage.checkinUnknown');
252
+ }
253
+ }
254
+ /** 签到行的状态点:成功/待定/失败三种颜色语义。 */
255
+ function checkinTone(state) {
256
+ if (state === 'claimed')
257
+ return 'ok';
258
+ if (state === 'pending' || state === 'inactive')
259
+ return 'wait';
260
+ return 'bad';
261
+ }
262
+ const CHECKIN_TONE_COLORS = {
263
+ ok: '#16a34a',
264
+ wait: 'GrayText',
265
+ bad: '#dc2626',
266
+ };
267
+ /** 每日消耗的迷你柱状图;没有按日数据时整块不渲染。 */
268
+ function createDailyBars(quota, t) {
269
+ const days = quota.daily?.days ?? [];
270
+ const values = days.map((day) => day.used).filter((value) => value !== null);
271
+ if (values.length < 2)
272
+ return null;
273
+ const max = Math.max(...values, 1);
274
+ return createElement('div', { style: { display: 'grid', gap: 4 } }, createElement('div', { style: dailyBarsRowStyle, 'aria-hidden': true }, ...values.map((value, index) => createElement('span', {
275
+ key: index,
276
+ style: {
277
+ flex: 1,
278
+ minWidth: 3,
279
+ height: Math.max(2, Math.round((value / max) * 22)),
280
+ borderRadius: 2,
281
+ background: 'currentColor',
282
+ opacity: 0.28 + 0.5 * (value / max),
283
+ },
284
+ }))), createElement('span', { style: { fontSize: uiFontSize(11), color: 'GrayText' } }, t('usage.quotaDailyTotal', { amount: formatQuotaNumber(values.reduce((sum, value) => sum + value, 0)) })));
285
+ }
286
+ /** 重置卡明细:数量 + 最近到期的几张。 */
287
+ function createResetCards(quota, t) {
288
+ const resets = quota.resets;
289
+ if (resets === null || resets === undefined)
290
+ return null;
291
+ const count = resets.count;
292
+ if (count === null && resets.fiveHour === null && resets.weekly === null && resets.each.length === 0)
293
+ return null;
294
+ const head = resets.byWindow
295
+ ? t('usage.resetCardsByWindow', { fiveHour: resets.fiveHour ?? 0, weekly: resets.weekly ?? 0 })
296
+ : t('usage.resetCardsCount', { count: count ?? 0 });
297
+ const expiries = resets.each
298
+ .map((card) => card.until)
299
+ .filter((until) => until !== null)
300
+ .sort();
301
+ return createElement('div', { style: { display: 'grid', gap: 3 } }, createElement('div', { style: quotaFooterRowStyle }, createElement('span', undefined, t('usage.resetCardsLabel')), createElement('strong', undefined, head)), expiries.slice(0, 3).map((until, index) => createElement('div', {
302
+ key: `${until}-${index}`,
303
+ style: { fontSize: uiFontSize(11), color: 'GrayText' },
304
+ }, t('usage.resetCardsExpiresAt', { time: formatLocalTime(until) }))));
305
+ }
306
+ /** 窗口的"按当前速度耗尽"提示;上游没给时整行不渲染。 */
307
+ function createRunsOutLine(window, t) {
308
+ const runsOutAt = window.runsOutAt?.trim();
309
+ if (runsOutAt === undefined || runsOutAt === '')
310
+ return null;
311
+ const at = Date.parse(runsOutAt);
312
+ if (!Number.isFinite(at) || at <= Date.now())
313
+ return null;
314
+ return createElement('span', { style: { fontSize: uiFontSize(11), color: 'GrayText' } }, t('usage.quotaRunsOut', {
315
+ amount: window.runsOut === null ? '' : formatQuotaNumber(window.runsOut),
316
+ time: formatLocalTime(runsOutAt),
317
+ }).replace(/\s+/gu, ' ').trim());
318
+ }
319
+ export function formatLocalTime(value) {
320
+ const time = Date.parse(value);
321
+ if (!Number.isFinite(time))
322
+ return value;
323
+ return new Date(time).toLocaleString();
324
+ }
325
+ /** 一个账号的详情块:窗口条、签到、重置卡、每日消耗与错误摘要。 */
326
+ export function createQuotaAccountBlock(quota, options) {
327
+ const { t, nowMs, showAccountName, compact, fallbackName } = options;
328
+ const checkinState = classifyCheckin(quota, localDayKey(nowMs));
329
+ const balance = parseQuotaBalance(quota.balance);
330
+ const hasWindows = quota.windows.length > 0;
331
+ // 金额余额是账户级信息:没有窗口(或窗口读失败)的账号也要显示,折叠态同样保留,
332
+ // 否则 New-API 这类"只有余额、没有窗口"的账号在弹层里会看起来空无一物。
333
+ const balanceRow = balance !== null
334
+ && createElement('div', { style: quotaFooterRowStyle }, createElement('span', undefined, t('usage.creditBalanceLabel')), createElement('strong', { title: balance.raw }, formatQuotaBalance(balance)));
335
+ return createElement('div', { style: accountBlockStyle },
336
+ // 折叠账号只留窗口条(Magpie 原生的 "brief" 卡片也是这个读法):
337
+ // 账号名与套餐属于详情信息,展开后再显示。
338
+ showAccountName && !compact && createElement('div', { style: accountNameRowStyle }, createElement('span', { style: accountNameStyle, title: quota.user ?? undefined }, quotaAccountLabel(quota, fallbackName)), quota.user !== null && quota.alias !== null && createElement('span', { style: accountSecondaryStyle }, quota.user), quota.active === true && createElement('span', { style: activeBadgeStyle }, t('usage.quotaActiveAccount')), quota.plan !== null && createElement('span', { style: accountPlanStyle }, quota.plan)), quota.error !== null && quota.error !== undefined && createElement('div', { style: quotaErrorStyle }, t('usage.quotaReadFailed', { reason: quota.error })), quota.windows.length === 0
339
+ ? quota.error === null || quota.error === undefined
340
+ ? balanceRow ?? createElement('div', { style: { fontSize: uiFontSize(12), color: 'GrayText' } }, t('usage.magpieQuotaNoWindows'))
341
+ : null
342
+ : quota.windows.map((window, index) => {
343
+ const remaining = quotaWindowRemaining(window);
344
+ const amount = quotaWindowAmount(window);
345
+ const runsOut = compact ? null : createRunsOutLine(window, t);
346
+ return createElement('div', { key: `${window.name}-${index}`, style: quotaWindowRowStyle }, createElement('div', { style: quotaFooterRowStyle }, createElement('span', undefined, window.name), remaining === null
347
+ ? amount !== null && createElement('span', undefined, amount)
348
+ : createElement('strong', undefined, `${Math.round(remaining)}%`)), remaining !== null && createElement('div', {
349
+ role: 'progressbar',
350
+ 'aria-label': t('usage.magpieQuotaRemaining', { name: window.name, percent: String(Math.round(remaining)) }),
351
+ 'aria-valuemin': 0,
352
+ 'aria-valuemax': 100,
353
+ 'aria-valuenow': Math.round(remaining),
354
+ style: quotaBarStyle,
355
+ }, createElement('span', { style: { ...quotaBarFillStyle, width: `${Math.max(0, Math.min(100, remaining))}%` } })), compact ? null : createElement('div', { style: quotaWindowMetaStyle }, amount !== null && remaining !== null && createElement('span', undefined, amount), window.resetsAt !== null && createElement('span', undefined, t('usage.magpieQuotaResets', { time: formatLocalTime(window.resetsAt) }))), runsOut);
356
+ }), !compact && hasWindows && balanceRow, !compact && (quota.checkins === true || quota.checkin !== null && quota.checkin !== undefined) && createElement('div', { style: quotaFooterRowStyle }, createElement('span', { style: { display: 'inline-flex', alignItems: 'center', gap: 6, minWidth: 0 } }, createElement('span', { style: { ...checkinDotStyle, background: CHECKIN_TONE_COLORS[checkinTone(checkinState)] }, 'aria-hidden': true }), createElement('span', { style: { fontSize: uiFontSize(12), overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' } }, describeCheckin(checkinState, quota.checkin, t)))), !compact && createResetCards(quota, t), !compact && quota.credits !== null && quota.credits !== undefined && createElement('div', { style: quotaFooterRowStyle }, createElement('span', undefined, t('usage.creditBalanceLabel')), createElement('strong', undefined, quota.credits)), !compact && quota.until !== null && quota.until !== undefined && createElement('div', { style: quotaFooterRowStyle }, createElement('span', undefined, t('usage.quotaPlanUntil')), createElement('span', undefined, `${formatLocalTime(quota.until)}${quota.renew === null || quota.renew === undefined ? '' : ` · ${quota.renew}`}`)), !compact && createDailyBars(quota, t));
357
+ }
358
+ /** 厂商组头:图标、名称、账号数与被使用的账号。 */
359
+ export function createQuotaGroupHeader(input) {
360
+ const { group, t, expanded, onToggle } = input;
361
+ const activeAccount = group.accounts.find((quota) => quota.active === true);
362
+ const summary = activeAccount === undefined
363
+ ? group.accounts[0]
364
+ : activeAccount;
365
+ // 组头摘要:窗口余量优先;没有窗口时退回金额余额(New-API 类厂商只有余额)。
366
+ const summaryBalance = summary === undefined ? null : parseQuotaBalance(summary.balance);
367
+ const summaryLabel = summary !== undefined && summary.windows.length > 0
368
+ ? summary.windows
369
+ .map((window) => {
370
+ const remaining = quotaWindowRemaining(window);
371
+ return remaining === null ? null : `${Math.round(remaining)}%`;
372
+ })
373
+ .filter((value) => value !== null)
374
+ .join(' · ')
375
+ : summaryBalance === null ? '' : formatQuotaBalance(summaryBalance);
376
+ return createElement('div', { style: groupHeaderStyle }, createElement(MagpieProviderLogo, {
377
+ identities: [group.provider, group.name],
378
+ logoDataUrl: group.logoDataUrl,
379
+ size: 22,
380
+ className: 'codingns4dsh-quota-group-logo',
381
+ fallback: 'none',
382
+ }), createElement('strong', { style: { fontSize: uiFontSize(13), minWidth: 0, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' } }, group.name || group.provider), group.accounts.length > 1 && createElement('span', { style: groupCountStyle }, t('usage.quotaGroupAccounts', { count: group.accounts.length })), summaryLabel !== '' && createElement('span', { style: groupSummaryStyle, title: summaryBalance?.raw }, summaryLabel), onToggle !== null && createElement('button', {
383
+ type: 'button',
384
+ className: 'codingns4dsh-quota-group-toggle',
385
+ 'aria-expanded': expanded,
386
+ onClick: onToggle,
387
+ title: expanded ? t('usage.quotaCollapseAccounts') : t('usage.quotaExpandAccounts'),
388
+ 'aria-label': expanded ? t('usage.quotaCollapseAccounts') : t('usage.quotaExpandAccounts'),
389
+ style: groupToggleStyle,
390
+ }, expanded ? '▾' : '▸'));
391
+ }
392
+ const dailyBarsRowStyle = { display: 'flex', alignItems: 'flex-end', gap: 2, height: 22, color: 'GrayText' };
393
+ const accountBlockStyle = { display: 'grid', gap: 8, paddingTop: 6 };
394
+ const accountNameRowStyle = { display: 'flex', alignItems: 'baseline', gap: 7, fontSize: uiFontSize(12), minWidth: 0 };
395
+ const accountNameStyle = { minWidth: 0, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', fontWeight: 600 };
396
+ const accountSecondaryStyle = { minWidth: 0, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', color: 'GrayText' };
397
+ const accountPlanStyle = { marginLeft: 'auto', flex: 'none', color: 'GrayText' };
398
+ const activeBadgeStyle = {
399
+ flex: 'none',
400
+ padding: '1px 6px',
401
+ borderRadius: 999,
402
+ fontSize: uiFontSize(10),
403
+ background: 'rgba(22,119,255,.12)',
404
+ color: 'var(--dsw-alias-state-business-primary,#1677ff)',
405
+ };
406
+ const quotaErrorStyle = { fontSize: uiFontSize(11), color: '#dc2626' };
407
+ const quotaWindowRowStyle = { display: 'grid', gap: 4 };
408
+ const quotaFooterRowStyle = {
409
+ display: 'flex',
410
+ alignItems: 'baseline',
411
+ justifyContent: 'space-between',
412
+ gap: 8,
413
+ fontSize: uiFontSize(12),
414
+ minWidth: 0,
415
+ };
416
+ const quotaWindowMetaStyle = {
417
+ display: 'flex',
418
+ justifyContent: 'space-between',
419
+ gap: 8,
420
+ fontSize: uiFontSize(11),
421
+ color: 'GrayText',
422
+ minWidth: 0,
423
+ };
424
+ const quotaBarStyle = {
425
+ height: 6,
426
+ borderRadius: 999,
427
+ background: 'color-mix(in srgb, GrayText 22%, transparent)',
428
+ overflow: 'hidden',
429
+ };
430
+ const quotaBarFillStyle = {
431
+ display: 'block',
432
+ height: '100%',
433
+ borderRadius: 999,
434
+ background: 'linear-gradient(90deg, var(--dsw-alias-state-business-primary,#1677ff), color-mix(in srgb, var(--dsw-alias-state-business-primary,#1677ff) 55%, transparent))',
435
+ };
436
+ const checkinDotStyle = { flex: 'none', width: 7, height: 7, borderRadius: 999 };
437
+ const groupHeaderStyle = {
438
+ display: 'flex',
439
+ alignItems: 'center',
440
+ gap: 7,
441
+ minWidth: 0,
442
+ paddingBottom: 4,
443
+ };
444
+ const groupCountStyle = {
445
+ flex: 'none',
446
+ padding: '0 6px',
447
+ borderRadius: 999,
448
+ fontSize: uiFontSize(10),
449
+ lineHeight: '16px',
450
+ background: 'color-mix(in srgb, GrayText 16%, transparent)',
451
+ color: 'GrayText',
452
+ };
453
+ const groupSummaryStyle = {
454
+ marginLeft: 'auto',
455
+ flex: 'none',
456
+ fontSize: uiFontSize(11),
457
+ color: 'GrayText',
458
+ fontVariantNumeric: 'tabular-nums',
459
+ };
460
+ const groupToggleStyle = {
461
+ flex: 'none',
462
+ display: 'inline-grid',
463
+ placeItems: 'center',
464
+ width: 20,
465
+ height: 20,
466
+ padding: 0,
467
+ border: 'none',
468
+ borderRadius: 4,
469
+ background: 'transparent',
470
+ color: 'GrayText',
471
+ cursor: 'pointer',
472
+ };
473
+ /**
474
+ * 把 Magpie 用量页的配额行按厂商归组。
475
+ *
476
+ * 与订阅弹层共用同一个分组键(只有 `provider`),但保留各自的行类型:
477
+ * 用量页还需要每行自己的 `daily` 明细与历史线。
478
+ */
479
+ export function groupQuotaRowsByProvider(rows) {
480
+ const groups = new Map();
481
+ for (const row of rows) {
482
+ const provider = row.provider.trim();
483
+ if (provider === '')
484
+ continue;
485
+ const existing = groups.get(provider);
486
+ if (existing === undefined)
487
+ groups.set(provider, [row]);
488
+ else
489
+ existing.push(row);
490
+ }
491
+ return [...groups.entries()].map(([provider, accounts]) => {
492
+ const first = accounts[0];
493
+ return {
494
+ provider,
495
+ name: first.name,
496
+ ...(first.logoDataUrl === undefined ? {} : { logoDataUrl: first.logoDataUrl }),
497
+ accounts,
498
+ };
499
+ });
500
+ }
501
+ /**
502
+ * 读取一个账号在"没有百分比可言"时的余额。
503
+ *
504
+ * 订阅页的额度卡过去只画百分比进度条,New-API(`$74.14`)、Sub2api(钱包余额
505
+ * `$88018.15`)和按积分计量的 WorkBuddy(`2,077.75 / 2,400 积分`)这类账号
506
+ * 就只剩一条空进度条,看不到真正的余额。这里按 Magpie 原生卡片的顺序取数:
507
+ *
508
+ * 1. 上游给出带币种的 `balance` → 直接就是金额;
509
+ * 2. 某个窗口带明确的币种单位且给了 `amount / limit`(如 Command Code 的
510
+ * `$8.04 / $10.00`)→ 按币种拼成金额文本,符号与原生写法一样放在数值前;
511
+ * 3. 账号上有按积分计量的窗口 → `剩余 / 上限 + 单位`;
512
+ * 4. 只有 `amount / limit` 而没有币种 → 原样拼上单位。
513
+ *
514
+ * 都没有时返回 null,交给调用方显示"未报告额度上限"。
515
+ */
516
+ export function resolveQuotaAccountBalance(quota) {
517
+ const money = parseQuotaBalance(quota.balance);
518
+ if (money !== null)
519
+ return { text: formatQuotaBalance(money), money: money.money, raw: money.raw };
520
+ // 先看显式币种窗口:Command Code 的窗口名是「积分」,但 `unit` 是 `$`,
521
+ // 这时 `$8.04 / $10.00` 才是原生读法,不能被积分分支先截走。
522
+ for (const window of quota.windows) {
523
+ if (window.amount === null || window.limit === null)
524
+ continue;
525
+ if (!Number.isFinite(window.amount) || !Number.isFinite(window.limit))
526
+ continue;
527
+ const symbol = QUOTA_CURRENCY_SYMBOLS.get((window.unit?.trim() ?? '').toUpperCase());
528
+ if (symbol === undefined)
529
+ continue;
530
+ // 币种符号按 Magpie 原生写法放在数值前(`$8.04 / $10.00`)。
531
+ const text = `${symbol}${formatQuotaNumber(window.amount)} / ${symbol}${formatQuotaNumber(window.limit)}`;
532
+ return { text, money: true, raw: text };
533
+ }
534
+ const credits = resolveQuotaCreditBalance({ windows: quota.windows });
535
+ if (credits !== null)
536
+ return { text: formatQuotaCredits(credits), money: false, raw: credits.display ?? formatQuotaCredits(credits) };
537
+ for (const window of quota.windows) {
538
+ if (window.amount === null || window.limit === null)
539
+ continue;
540
+ if (!Number.isFinite(window.amount) || !Number.isFinite(window.limit))
541
+ continue;
542
+ const unit = window.unit?.trim() ?? '';
543
+ const text = `${formatQuotaNumber(window.amount)} / ${formatQuotaNumber(window.limit)}${unit === '' ? '' : ` ${unit}`}`;
544
+ return { text, money: false, raw: text };
545
+ }
546
+ return null;
547
+ }
548
+ //# sourceMappingURL=subscription-quota-groups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription-quota-groups.js","sourceRoot":"","sources":["../../../../../src/client/features/subscription-quota-groups.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"git-management.d.ts","sourceRoot":"","sources":["../../../../src/client/git-management.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAIlD,OAAO,KAAK,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,iBAAiB,EAAqB,MAAM,qBAAqB,CAAA;AAUpI,OAAO,EAA6B,KAAK,cAAc,EAA2B,MAAM,aAAa,CAAA;AAoBrG,eAAO,MAAM,eAAe,qBAAqB,CAAA;AACjD,eAAO,MAAM,QAAQ,QAAQ,CAAA;AAG7B,yCAAyC;AACzC,eAAO,MAAM,YAAY,qBAAkB,CAAA;AAY3C,KAAK,WAAW,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAA;CAAE,CAAA;AA+D3K,qDAAqD;AACrD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,GAAG,MAAM,IAAI,CAsCvF;AAwzBD,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAqBhI;AA6PD,eAAO,MAAM,oBAAoB,EAAE,2BAWlC,CAAA"}
1
+ {"version":3,"file":"git-management.d.ts","sourceRoot":"","sources":["../../../../src/client/git-management.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAIlD,OAAO,KAAK,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,iBAAiB,EAAqB,MAAM,qBAAqB,CAAA;AAUpI,OAAO,EAA6B,KAAK,cAAc,EAA2B,MAAM,aAAa,CAAA;AAoBrG,eAAO,MAAM,eAAe,qBAAqB,CAAA;AACjD,eAAO,MAAM,QAAQ,QAAQ,CAAA;AAG7B,yCAAyC;AACzC,eAAO,MAAM,YAAY,qBAAkB,CAAA;AAY3C,KAAK,WAAW,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAA;CAAE,CAAA;AA+D3K,qDAAqD;AACrD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,GAAG,MAAM,IAAI,CAsCvF;AAuzBD,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAqBhI;AA6PD,eAAO,MAAM,oBAAoB,EAAE,2BAWlC,CAAA"}