@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,193 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { MagpieQuota, MagpieQuotaCheckin, MagpieQuotaWindow } from '../../shared/contracts/subscription.js';
3
+ import type { CodingNsTranslator } from '../locale.js';
4
+ /**
5
+ * 同一厂商的多个账号在订阅弹层里归成一组。
6
+ *
7
+ * 分组键只用上游的 `provider`,不合并 `plan` 或显示名:WorkBuddy 与 WorkBuddy AI 是
8
+ * 两个独立产品,账号之间也不共享额度,按显示名合并会把不同账户体系的余额混在一起。
9
+ */
10
+ export interface SubscriptionQuotaGroup {
11
+ readonly provider: string;
12
+ readonly name: string;
13
+ readonly icon?: string;
14
+ readonly logoDataUrl?: string;
15
+ /** 该厂商的账号;会话实际使用过的账号排在第一位。 */
16
+ readonly accounts: readonly MagpieQuota[];
17
+ /** 组内是否有本会话确认使用过的账号。 */
18
+ readonly hasActive: boolean;
19
+ }
20
+ /**
21
+ * 按厂商分组,保持上游首次出现的顺序。
22
+ *
23
+ * 组内把 `active` 账号提到最前,其余沿用上游顺序;没有 `active` 标记时完全保持原顺序,
24
+ * 不对"哪个账号正在使用"做任何猜测。
25
+ */
26
+ export declare function groupQuotasByProvider(quotas: readonly MagpieQuota[]): readonly SubscriptionQuotaGroup[];
27
+ /** 账号在组内的显示名:用户起的别名优先,其次上游账号名,最后回退到厂商名。 */
28
+ export declare function quotaAccountLabel(quota: MagpieQuota, fallback: string): string;
29
+ /** 单个窗口的剩余百分比;上游只给 `used` 时反推,两者都没有时返回 null。 */
30
+ export declare function quotaWindowRemaining(window: MagpieQuotaWindow): number | null;
31
+ /** 窗口余量的可读数值:优先上游的 `display`,其次 `amount / limit unit`。 */
32
+ export declare function quotaWindowAmount(window: MagpieQuotaWindow): string | null;
33
+ /** 四舍五入到两位小数;整数不补 `.00`,避免 2400 显示成 2400.00。 */
34
+ export declare function formatQuotaNumber(value: number): string;
35
+ export interface QuotaBalance {
36
+ /** 上游原始 `balance` 文本(如 `$74.40`、`12.5 USD`)。 */
37
+ readonly raw: string;
38
+ /** 规范化后的币种符号:`$`、`€`、`¥`、`£`、`₹`、`₩`、`₽` 或大写的三位币种代码。 */
39
+ readonly unit: string;
40
+ readonly amount: number;
41
+ /**
42
+ * 是否为可读金额:带币种符号、小数或币种代码的余额才作为金额展示。
43
+ * 纯整数或 `available` 这类状态词不是金额,不能猜成美元。
44
+ */
45
+ readonly money: boolean;
46
+ }
47
+ /**
48
+ * 解析 Magpie 账号余额文本。
49
+ *
50
+ * Magpie 的 `balance` 是厂商原样文本(Codex 为 `69643.12 credits`,New-API 为
51
+ * `$74.40`),既可能是金额也可能是积分。这里按明确出现的币种符号与小数位识别
52
+ * 金额,`credits` 之类的单位保留原样,避免把积分当成美元。
53
+ */
54
+ export declare function parseQuotaBalance(value: string | null | undefined): QuotaBalance | null;
55
+ /** 金额的展示文本:小数保留到两位,极小金额保留有效位而不是舍成 0.00。 */
56
+ export declare function formatQuotaBalance(balance: QuotaBalance): string;
57
+ /**
58
+ * 上游按积分(而非货币)计量时的余额。
59
+ *
60
+ * WorkBuddy、WorkBuddy AI 这类厂商只提供 `Credits` 窗口,`0 / 350` 就是全部余额,
61
+ * 既没有金额 `balance` 也没有百分比可算(剩余量恒为 0%)。这里把这类"计数额度"
62
+ * 单独读出来,让底部栏显示 `350` 而不是一个永远空着的 `0%` 环。
63
+ */
64
+ export interface QuotaCreditBalance {
65
+ /** 剩余可用的积分。 */
66
+ readonly remaining: number;
67
+ /** 额度上限;上游只给百分比或总数时可能缺失。 */
68
+ readonly limit: number | null;
69
+ /** 上游单位(`credits`、`points` 等);只有窗口名时可退回窗口名。 */
70
+ readonly unit: string;
71
+ /** 上游给出的展示原文(如 `0 / 350`),用于 tooltip 与弹层。 */
72
+ readonly display: string | null;
73
+ }
74
+ /** 单个窗口是否按积分计量,以及它的余量读数;普通百分比窗口返回 null。 */
75
+ export declare function readWindowCreditBalance(window: MagpieQuotaWindow): QuotaCreditBalance | null;
76
+ /**
77
+ * 读取账号的积分余额。
78
+ *
79
+ * 只认带积分含义的窗口或单位,普通的百分比窗口(`5 hours`、`7 days`)不参与,
80
+ * 避免把"剩余 73%"说成"73 积分"。
81
+ */
82
+ export declare function resolveQuotaCreditBalance(quota: {
83
+ readonly windows: readonly MagpieQuotaWindow[];
84
+ }): QuotaCreditBalance | null;
85
+ /**
86
+ * 弹层里的积分文本:`剩余 / 上限 + 单位`。
87
+ *
88
+ * 只在窗口没有百分比时使用(百分比仍是更直接的读法);上游给了 `0 / 350`
89
+ * 这类 display 原文时优先照抄,避免自己再算一遍四舍五入。
90
+ */
91
+ export declare function formatQuotaCredits(credits: QuotaCreditBalance): string;
92
+ /**
93
+ * 底部栏触发按钮上要显示的余额文本。
94
+ *
95
+ * 优先展示金额余额(如 New-API 的 `$74.40`);没有金额但上游按积分计量时展示积分
96
+ * (如 WorkBuddy 的 `350`)。状态词之类的伪余额不显示,由圆形额度环承担。
97
+ * 多个账号时展示会话实际使用的账号,否则取第一个有余额的账号。
98
+ */
99
+ export declare function resolveQuotaBalanceLabel(quotas: readonly MagpieQuota[] | null | undefined): string | null;
100
+ /**
101
+ * 签到状态的语义分类。
102
+ *
103
+ * 只把上游明确表示成功的 `claimed` / `done` 算作已签到;未知枚举按"未签到"处理,
104
+ * 这样新厂商状态不会在界面上被当成成功。
105
+ */
106
+ export type CheckinState = 'claimed' | 'failed' | 'ineligible' | 'inactive' | 'captcha' | 'own-app' | 'pending' | 'unknown';
107
+ export declare function classifyCheckin(quota: MagpieQuota, today: string): CheckinState;
108
+ /** 用本地时区算出"今天",与上游的 `day` 字段比较时必须用同一时区。 */
109
+ export declare function localDayKey(nowMs: number): string;
110
+ /** 签到状态的本地化文案;参数为空对象时表示"今天还没有签到记录"。 */
111
+ export declare function describeCheckin(state: CheckinState, checkin: MagpieQuotaCheckin | null | undefined, t: CodingNsTranslator): string;
112
+ export declare function formatLocalTime(value: string): string;
113
+ /** 一个账号的详情块:窗口条、签到、重置卡、每日消耗与错误摘要。 */
114
+ export declare function createQuotaAccountBlock(quota: MagpieQuota, options: {
115
+ readonly t: CodingNsTranslator;
116
+ readonly nowMs: number;
117
+ /** 组内账号数 > 1 时显示账号名,单账号时由组头承担。 */
118
+ readonly showAccountName: boolean;
119
+ /** 折叠态只画进度条,不画签到、明细与每日用量。 */
120
+ readonly compact: boolean;
121
+ readonly fallbackName: string;
122
+ }): ReactElement;
123
+ /** 厂商组头:图标、名称、账号数与被使用的账号。 */
124
+ export declare function createQuotaGroupHeader(input: {
125
+ readonly group: SubscriptionQuotaGroup;
126
+ readonly t: CodingNsTranslator;
127
+ readonly expanded: boolean;
128
+ readonly onToggle: (() => void) | null;
129
+ }): ReactElement;
130
+ /**
131
+ * 把 Magpie 用量页的配额行按厂商归组。
132
+ *
133
+ * 与订阅弹层共用同一个分组键(只有 `provider`),但保留各自的行类型:
134
+ * 用量页还需要每行自己的 `daily` 明细与历史线。
135
+ */
136
+ export declare function groupQuotaRowsByProvider<T extends {
137
+ readonly provider: string;
138
+ readonly name: string;
139
+ readonly icon?: string;
140
+ readonly logoDataUrl?: string;
141
+ readonly user: string | null;
142
+ }>(rows: readonly T[]): readonly {
143
+ readonly provider: string;
144
+ readonly name: string;
145
+ readonly logoDataUrl?: string;
146
+ readonly accounts: readonly T[];
147
+ }[];
148
+ /**
149
+ * 余额解析只需要账号的 `balance` 与 `windows`。
150
+ *
151
+ * 订阅弹层的 `MagpieQuota` 与用量页的 `MagpieDashboardQuota` 窗口结构略有差异
152
+ * (后者没有 `startsAt`),因此这里只约束实际用到的字段,两处共用同一个解析器。
153
+ */
154
+ export interface QuotaAccountBalanceSource {
155
+ readonly balance: string | null;
156
+ readonly windows: readonly MagpieQuotaWindowLike[];
157
+ }
158
+ /** 余额解析用到的窗口字段;其余字段(`startsAt`、`runsOut` 等)与本逻辑无关。 */
159
+ export interface MagpieQuotaWindowLike {
160
+ readonly name: string;
161
+ readonly usedPercent: number | null;
162
+ readonly remainingPercent: number | null;
163
+ readonly display: string | null;
164
+ readonly amount: number | null;
165
+ readonly limit: number | null;
166
+ readonly unit: string | null;
167
+ }
168
+ /** 账号余额的读法:金额(`$74.14`)或计数额度(`2,077.75 / 2,400 积分`)。 */
169
+ export interface QuotaAccountBalance {
170
+ /** 展示文本;金额已带币种符号。 */
171
+ readonly text: string;
172
+ /** 是否为货币金额;用于决定是否按金额样式(等宽数字、较大字号)渲染。 */
173
+ readonly money: boolean;
174
+ /** 上游原文,放在 tooltip 里供追溯。 */
175
+ readonly raw: string;
176
+ }
177
+ /**
178
+ * 读取一个账号在"没有百分比可言"时的余额。
179
+ *
180
+ * 订阅页的额度卡过去只画百分比进度条,New-API(`$74.14`)、Sub2api(钱包余额
181
+ * `$88018.15`)和按积分计量的 WorkBuddy(`2,077.75 / 2,400 积分`)这类账号
182
+ * 就只剩一条空进度条,看不到真正的余额。这里按 Magpie 原生卡片的顺序取数:
183
+ *
184
+ * 1. 上游给出带币种的 `balance` → 直接就是金额;
185
+ * 2. 某个窗口带明确的币种单位且给了 `amount / limit`(如 Command Code 的
186
+ * `$8.04 / $10.00`)→ 按币种拼成金额文本,符号与原生写法一样放在数值前;
187
+ * 3. 账号上有按积分计量的窗口 → `剩余 / 上限 + 单位`;
188
+ * 4. 只有 `amount / limit` 而没有币种 → 原样拼上单位。
189
+ *
190
+ * 都没有时返回 null,交给调用方显示"未报告额度上限"。
191
+ */
192
+ export declare function resolveQuotaAccountBalance(quota: QuotaAccountBalanceSource): QuotaAccountBalance | null;
193
+ //# sourceMappingURL=subscription-quota-groups.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription-quota-groups.d.ts","sourceRoot":"","sources":["../../../../../src/client/features/subscription-quota-groups.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAChH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAItD;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,8BAA8B;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAA;IACzC,wBAAwB;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,sBAAsB,EAAE,CAqBvG;AAED,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,gDAAgD;AAChD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAI7E;AAED,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAK1E;AAED,gDAAgD;AAChD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED,MAAM,WAAW,YAAY;IAC3B,gDAAgD;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,GAAG,IAAI,CAyBvF;AAsBD,2CAA2C;AAC3C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAMhE;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,eAAe;IACf,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAChC;AAKD,2CAA2C;AAC3C,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,IAAI,CAe5F;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAA;CAAE,GAAG,kBAAkB,GAAG,IAAI,CAM9H;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAMtE;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAazG;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;AAE3H,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAqB/E;AAED,2CAA2C;AAC3C,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED,uCAAuC;AACvC,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,EAAE,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAsBlI;AAgFD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIrD;AAED,qCAAqC;AACrC,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE;IACnE,QAAQ,CAAC,CAAC,EAAE,kBAAkB,CAAA;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,kCAAkC;IAClC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;IACjC,6BAA6B;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAC9B,GAAG,YAAY,CA0Ef;AAED,6BAA6B;AAC7B,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAA;IACtC,QAAQ,CAAC,CAAC,EAAE,kBAAkB,CAAA;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAA;CACvC,GAAG,YAAY,CAsCf;AAqFD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,GAAG,SAAS;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAA;CAAE,EAAE,CAkBtJ;AAED;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,CAAA;CACnD;AAED,sDAAsD;AACtD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,qBAAqB;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,wCAAwC;IACxC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,4BAA4B;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,yBAAyB,GAAG,mBAAmB,GAAG,IAAI,CAwBvG"}