@eddyskywalker/dsh-chatgpt-subscription 0.10.0 → 0.10.1

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 (44) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +39 -1
  3. package/lib/client.js +1569 -205
  4. package/lib/client.js.map +1 -1
  5. package/lib/index.js +4775 -1030
  6. package/lib/types/client/ProviderHubSection.d.ts.map +1 -1
  7. package/lib/types/client/index.d.ts +2 -0
  8. package/lib/types/client/index.d.ts.map +1 -1
  9. package/lib/types/client/minimax-code/MinimaxCodeComposerQuota.d.ts +27 -0
  10. package/lib/types/client/minimax-code/MinimaxCodeComposerQuota.d.ts.map +1 -0
  11. package/lib/types/client/minimax-code/MinimaxCodeSection.d.ts +49 -0
  12. package/lib/types/client/minimax-code/MinimaxCodeSection.d.ts.map +1 -0
  13. package/lib/types/client/minimax-code/api.d.ts +5 -0
  14. package/lib/types/client/minimax-code/api.d.ts.map +1 -0
  15. package/lib/types/client/minimax-code/locales.d.ts +341 -0
  16. package/lib/types/client/minimax-code/locales.d.ts.map +1 -0
  17. package/lib/types/client/minimax-code/styles.d.ts +12 -0
  18. package/lib/types/client/minimax-code/styles.d.ts.map +1 -0
  19. package/lib/types/client/styles.d.ts.map +1 -1
  20. package/lib/types/compat.d.ts +1 -0
  21. package/lib/types/compat.d.ts.map +1 -1
  22. package/lib/types/host/minimax-code/account-pool.d.ts +219 -0
  23. package/lib/types/host/minimax-code/account-pool.d.ts.map +1 -0
  24. package/lib/types/host/minimax-code/adapter.d.ts +168 -0
  25. package/lib/types/host/minimax-code/adapter.d.ts.map +1 -0
  26. package/lib/types/host/minimax-code/client.d.ts +184 -0
  27. package/lib/types/host/minimax-code/client.d.ts.map +1 -0
  28. package/lib/types/host/minimax-code/mapper.d.ts +143 -0
  29. package/lib/types/host/minimax-code/mapper.d.ts.map +1 -0
  30. package/lib/types/host/minimax-code/model-catalog.d.ts +146 -0
  31. package/lib/types/host/minimax-code/model-catalog.d.ts.map +1 -0
  32. package/lib/types/host/minimax-code/oauth.d.ts +204 -0
  33. package/lib/types/host/minimax-code/oauth.d.ts.map +1 -0
  34. package/lib/types/host/minimax-code/routes.d.ts +79 -0
  35. package/lib/types/host/minimax-code/routes.d.ts.map +1 -0
  36. package/lib/types/host/minimax-code/token-store.d.ts +238 -0
  37. package/lib/types/host/minimax-code/token-store.d.ts.map +1 -0
  38. package/lib/types/host/minimax-code/types.d.ts +206 -0
  39. package/lib/types/host/minimax-code/types.d.ts.map +1 -0
  40. package/lib/types/index.d.ts +10 -0
  41. package/lib/types/index.d.ts.map +1 -1
  42. package/lib/types/shared/minimax-code-contracts.d.ts +166 -0
  43. package/lib/types/shared/minimax-code-contracts.d.ts.map +1 -0
  44. package/package.json +1 -1
@@ -0,0 +1,166 @@
1
+ /**
2
+ * MiniMax Code(编程订阅)线路的共享契约。
3
+ *
4
+ * host 与 client 两半只依赖本文件的类型与常量,互不 import。
5
+ * 本文件由调度者冻结:类型名与常量名不得更改,可追加。
6
+ */
7
+ import type { AccountRotationStrategy, PoolAccountSummaryDto } from './account-pool-contracts.ts';
8
+ export declare const MINIMAX_CODE_PROVIDER_ID = "minimax-code";
9
+ export declare const MINIMAX_CODE_PROVIDER_NAME = "MiniMax Code\uFF08\u7F16\u7A0B\u8BA2\u9605\uFF09";
10
+ /** 区域。cn 用 account.minimax.cn / agent.minimax.cn;global 用对应 .io 域名。 */
11
+ export type MinimaxCodeRegion = 'cn' | 'global';
12
+ /** M3.1 的思考档位;M2.7 恒定开启,M3 为开关二态。 */
13
+ export type MinimaxCodeReasoningEffort = 'default' | 'low' | 'medium' | 'high' | 'xhigh' | 'max';
14
+ /**
15
+ * 全线共用的思考档位,按从小到大的顺序排列。
16
+ *
17
+ * 设置卡片只渲染这一份列表:档位是线路级的词汇表(`isMinimaxCodeReasoningEffort`
18
+ * 就是按它校验的),而不是单个模型的能力表。某个模型实际接受哪些档位由
19
+ * `MinimaxCodeModelOption.reasoningEfforts` 单独给出——把两者合成一份会让卡片
20
+ * 在给一个只认 `default` 的模型显示 `max` 时无从判断是模型不支持还是文案没写。
21
+ */
22
+ export declare const MINIMAX_CODE_REASONING_EFFORTS: readonly MinimaxCodeReasoningEffort[];
23
+ /**
24
+ * 路由前缀(host 暴露、client 消费)。
25
+ *
26
+ * 与其余各订阅线路一致:每条线路把自己的设置面挂在 `/<line>/api` 下
27
+ * (antigravity / claude / command-code / kimi-code / workbuddy 都是如此),
28
+ * 而不是挂到 Codex 那条线路的 `/api/dsh-chatgpt-subscription` 前缀下面。
29
+ * 唯一的 `/api/dsh-chatgpt-subscription` 前缀属于 Codex 自己的路由表。
30
+ */
31
+ export declare const MINIMAX_CODE_ROUTE_PREFIX = "/minimax-code/api";
32
+ export interface MinimaxCodeAccount {
33
+ id: string;
34
+ label: string;
35
+ email?: string;
36
+ /** 凭据代数,每次刷新自增;用于诊断两侧刷新争用。 */
37
+ generation: number;
38
+ expiresAtMs: number;
39
+ }
40
+ export interface MinimaxCodeCredentialStorage {
41
+ /** minimax-native = 直接复用 MiniMax Code 的 auth.json;其余为插件自持。 */
42
+ kind: 'minimax-native' | 'dpapi' | 'file';
43
+ path?: string;
44
+ }
45
+ export interface MinimaxCodeWebLogin {
46
+ loginId: string;
47
+ userCode: string;
48
+ verificationUri: string;
49
+ expiresInSec: number;
50
+ }
51
+ /**
52
+ * 一个配额窗口。
53
+ *
54
+ * Token Plan 同时给两个窗口:5 小时滚动窗口与每周窗口。两者都要单独呈现,
55
+ * 因为周窗口还带一个显示倍率(服务端返回 percentage 与 boost 两个值,渲染值
56
+ * 是两者相乘),而把两个窗口合成一个数字会让用户无法判断是哪一边快用完了。
57
+ */
58
+ export interface MinimaxCodeQuotaWindow {
59
+ /** 稳定标识,由客户端本地化成窗口名;不要在这里放展示文案。 */
60
+ key: 'interval' | 'weekly';
61
+ /** 剩余百分比(周窗口已乘上 boost)。服务端未给出时为 null。 */
62
+ remainingPercent: number | null;
63
+ /** 已用百分比;由剩余百分比取反得到。 */
64
+ usedPercent?: number;
65
+ /** 已用/总量;仅当服务端计数与其百分比自洽时才有值(见 host 侧消歧说明)。 */
66
+ used?: number;
67
+ total?: number;
68
+ /** 该窗口重置的绝对时刻(Unix 毫秒)。 */
69
+ resetsAtMs?: number;
70
+ /** 服务端把该窗口标为不限量。 */
71
+ unlimited?: boolean;
72
+ }
73
+ export interface MinimaxCodeQuota {
74
+ label: string;
75
+ usedPercent?: number;
76
+ resetsAtMs?: number;
77
+ /** 每个窗口的明细;服务端只给了一个数字时缺省。 */
78
+ windows?: MinimaxCodeQuotaWindow[];
79
+ /** 本快照读取时刻(Unix 毫秒),便于卡片判断数据新旧。 */
80
+ fetchedAtMs?: number;
81
+ }
82
+ /** 一条模型行的思考形态;取值与 host 目录里的 MinimaxCodeThinkingMode 一致。 */
83
+ export type MinimaxCodeThinkingModeDto = 'always-on' | 'toggle' | 'forced-effort';
84
+ /**
85
+ * 设置卡片渲染的一行模型。
86
+ *
87
+ * 硬编码目录(host 的 `MINIMAX_CODE_MODELS`)带的是「模型是什么」,这里带的是
88
+ * 「这个安装当前怎么用它」:启用与否、生效的上下文窗口、请求缺省输出上限。
89
+ * 两者分开是因为前者随代码发布、后者随用户设置变化;把设置混进目录会让一份
90
+ * 用户数据看起来像一条已发布的目录项。
91
+ */
92
+ export interface MinimaxCodeModelOption {
93
+ id: string;
94
+ name: string;
95
+ /** 是否由 DSH 提供给会话模型选择器。 */
96
+ enabled: boolean;
97
+ /** 目录声明的默认上下文窗口。 */
98
+ defaultContextWindow: number;
99
+ /** 生效窗口:有覆盖值时用覆盖值,否则等于 `defaultContextWindow`。 */
100
+ contextWindow: number;
101
+ /** 调用方不指定时,本线路请求的输出上限。 */
102
+ defaultMaxTokens: number;
103
+ /** 本模型接受的思考档位;没有可选档位时缺省。 */
104
+ reasoningEfforts?: string[];
105
+ /** 会话未指定档位时使用的档位。 */
106
+ defaultReasoningEffort?: string;
107
+ /** 思考形态:恒定开启 / 开关二态 / 强制带档位。 */
108
+ thinking: MinimaxCodeThinkingModeDto;
109
+ description: string | null;
110
+ }
111
+ export interface MinimaxCodeWebStatus {
112
+ /** 线路总开关;关闭时适配器不暴露任何模型。 */
113
+ enabled: boolean;
114
+ authenticated: boolean;
115
+ providerId: typeof MINIMAX_CODE_PROVIDER_ID;
116
+ region: MinimaxCodeRegion;
117
+ storage: MinimaxCodeCredentialStorage;
118
+ account?: MinimaxCodeAccount;
119
+ login?: MinimaxCodeWebLogin;
120
+ /** 硬编码目录渲染成的模型行(远端 `/v1/models` 不可用)。 */
121
+ models: MinimaxCodeModelOption[];
122
+ /** 每条被覆盖的模型当前保存的上下文窗口;未被覆盖的模型不出现。 */
123
+ contextWindowOverrides: Record<string, number>;
124
+ /** 未指定时的全局思考档位;null 表示各模型用自己的默认档位。 */
125
+ defaultReasoningEffort: MinimaxCodeReasoningEffort | null;
126
+ /** 无可用用量快照时为 undefined,UI 应优雅降级。 */
127
+ quota?: MinimaxCodeQuota;
128
+ /**
129
+ * 用量快照缺失、且原因值得告诉用户时给出。
130
+ *
131
+ * - `credential-not-accepted`:端点应答了,但**拒绝本线路持有的凭据类型**——
132
+ * `/v1/token_plan/remains` 只接受平台 API 密钥,MiniMax Code 的
133
+ * `mcode-public` 登录态在四种认证写法下都被拒(`base_resp.status_code: 1004`)。
134
+ * - `unreachable`:没有任何候选主机给出可用应答。
135
+ */
136
+ quotaUnavailable?: 'credential-not-accepted' | 'unreachable';
137
+ /** 本插件是否正在服务该 Provider 路由;被别的适配器占用时为 false。 */
138
+ serving: boolean;
139
+ /** 路由被别的适配器占用时的诊断文案。 */
140
+ conflict: string | null;
141
+ /**
142
+ * 凭据是否由本插件自己持有(即本插件设备码登录写下的那一份)。
143
+ *
144
+ * false 有两种情况:尚未登录,或当前登录态属于 MiniMax Code 桌面端自己
145
+ * (`~/.minimax/auth`)。后者本插件**会**在需要时续期并原子写回(只读优先),
146
+ * 但**不会删除**它——删掉等于把用户从正在运行的官方客户端里踢下线。因此
147
+ * 「登出」对它无效,卡片必须据此禁用按钮并说明原因,而不是给出一个按下去
148
+ * 没有效果的按钮。
149
+ */
150
+ ownedByPlugin: boolean;
151
+ /**
152
+ * 号池里的账号,供设置卡片的「账号管理」渲染。
153
+ *
154
+ * 与其余各线路同构(复用同一个共享卡片与同一份 DTO):每条元素只带非机密的
155
+ * 展示信息,令牌永远不过这条边界。桌面端自有账号在其中会被标为
156
+ * `removable: false`——它归 MiniMax Code 所有,本插件只读与续期。
157
+ */
158
+ accounts?: PoolAccountSummaryDto[];
159
+ /** 下一个请求会使用的账号。 */
160
+ activeAccountId?: string;
161
+ /** 号池调度策略;无号池时缺省为顺序耗尽。 */
162
+ rotationStrategy?: AccountRotationStrategy;
163
+ /** 本进程是否装载了号池。false 时卡片按单凭据模式渲染。 */
164
+ poolInstalled?: boolean;
165
+ }
166
+ //# sourceMappingURL=minimax-code-contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minimax-code-contracts.d.ts","sourceRoot":"","sources":["../../../src/shared/minimax-code-contracts.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eddyskywalker/dsh-chatgpt-subscription",
3
- "version": "0.10.0",
3
+ "version": "0.10.1",
4
4
  "description": "DSH provider plugin for Codex access through a ChatGPT subscription.",
5
5
  "author": {
6
6
  "name": "eddyskywalker",