@eddyskywalker/dsh-chatgpt-subscription 0.1.10 → 0.1.12

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 (45) hide show
  1. package/CHANGELOG.md +9 -50
  2. package/README.md +17 -7
  3. package/lib/client.js +442 -28
  4. package/lib/client.js.map +1 -1
  5. package/lib/index.js +718 -247
  6. package/lib/types/client/CodexComposerQuota.d.ts +13 -0
  7. package/lib/types/client/CodexComposerQuota.d.ts.map +1 -0
  8. package/lib/types/client/CodexImageToolView.d.ts +10 -0
  9. package/lib/types/client/CodexImageToolView.d.ts.map +1 -0
  10. package/lib/types/client/CodexSubscriptionSection.d.ts.map +1 -1
  11. package/lib/types/client/api.d.ts +2 -1
  12. package/lib/types/client/api.d.ts.map +1 -1
  13. package/lib/types/client/index.d.ts.map +1 -1
  14. package/lib/types/client/locales.d.ts +168 -114
  15. package/lib/types/client/locales.d.ts.map +1 -1
  16. package/lib/types/client/quota.d.ts +9 -0
  17. package/lib/types/client/quota.d.ts.map +1 -0
  18. package/lib/types/client/styles.d.ts.map +1 -1
  19. package/lib/types/compat.d.ts +7 -0
  20. package/lib/types/compat.d.ts.map +1 -1
  21. package/lib/types/host/codex-images.d.ts +9 -0
  22. package/lib/types/host/codex-images.d.ts.map +1 -0
  23. package/lib/types/host/codex-search.d.ts +11 -0
  24. package/lib/types/host/codex-search.d.ts.map +1 -0
  25. package/lib/types/host/model-catalog.d.ts.map +1 -1
  26. package/lib/types/host/preferences.d.ts +12 -0
  27. package/lib/types/host/preferences.d.ts.map +1 -0
  28. package/lib/types/host/responses-mapper.d.ts.map +1 -1
  29. package/lib/types/host/routes.d.ts +2 -1
  30. package/lib/types/host/routes.d.ts.map +1 -1
  31. package/lib/types/host/search-provider-switcher.d.ts +15 -0
  32. package/lib/types/host/search-provider-switcher.d.ts.map +1 -0
  33. package/lib/types/host/usage-service.d.ts +2 -1
  34. package/lib/types/host/usage-service.d.ts.map +1 -1
  35. package/lib/types/index.d.ts +3 -1
  36. package/lib/types/index.d.ts.map +1 -1
  37. package/lib/types/shared/contracts.d.ts +40 -3
  38. package/lib/types/shared/contracts.d.ts.map +1 -1
  39. package/lib/types/shared/model-catalog.d.ts +81 -0
  40. package/lib/types/shared/model-catalog.d.ts.map +1 -0
  41. package/lib/types/shared/preferences.d.ts +7 -0
  42. package/lib/types/shared/preferences.d.ts.map +1 -0
  43. package/package.json +126 -107
  44. package/lib/types/host/subagent-report-scheduling-compat.d.ts +0 -21
  45. package/lib/types/host/subagent-report-scheduling-compat.d.ts.map +0 -1
@@ -0,0 +1,13 @@
1
+ import type { SnapshotStore } from '@deepseek-ai/dsh-client-runtime/client';
2
+ import type { ModelDirectoryState } from '@deepseek-ai/dsh-client-ui-model-selection/client';
3
+ import type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
4
+ import { SubscriptionApi } from './api.ts';
5
+ import { NS } from './locales.ts';
6
+ type Props = PropsRuntime<'conversation.input.right'> & PropsLocale<typeof NS> & {
7
+ api: SubscriptionApi;
8
+ directory: SnapshotStore<ModelDirectoryState>;
9
+ loadModelDirectory: () => void;
10
+ };
11
+ export declare function CodexComposerQuota({ api, directory, loadModelDirectory, t }: Props): React.JSX.Element | null;
12
+ export {};
13
+ //# sourceMappingURL=CodexComposerQuota.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodexComposerQuota.d.ts","sourceRoot":"","sources":["../../../src/client/CodexComposerQuota.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAA;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAA;AAC5F,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAGjF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAGjC,KAAK,KAAK,GAAG,YAAY,CAAC,0BAA0B,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,GAAG;IAC/E,GAAG,EAAE,eAAe,CAAA;IACpB,SAAS,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAA;IAC7C,kBAAkB,EAAE,MAAM,IAAI,CAAA;CAC/B,CAAA;AAED,wBAAgB,kBAAkB,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAwD7G"}
@@ -0,0 +1,10 @@
1
+ import type { ImageAttachmentRef } from '@deepseek-ai/dsh-attachment';
2
+ import type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
3
+ import { NS } from './locales.ts';
4
+ export type ImageLoader = (attachment: ImageAttachmentRef) => Promise<string>;
5
+ type Props = PropsRuntime<'tool.call.toolview'> & PropsLocale<typeof NS> & {
6
+ loadImage: ImageLoader;
7
+ };
8
+ export declare function CodexImageToolView({ block, loadImage, t }: Props): React.JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=CodexImageToolView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodexImageToolView.d.ts","sourceRoot":"","sources":["../../../src/client/CodexImageToolView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAErE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AACjF,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAEjC,MAAM,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,kBAAkB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAE7E,KAAK,KAAK,GAAG,YAAY,CAAC,oBAAoB,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,GAAG;IACzE,SAAS,EAAE,WAAW,CAAA;CACvB,CAAA;AAED,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAiBpF"}
@@ -1 +1 @@
1
- {"version":3,"file":"CodexSubscriptionSection.d.ts","sourceRoot":"","sources":["../../../src/client/CodexSubscriptionSection.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAmC,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEnH,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAEjC,KAAK,KAAK,GAAG,YAAY,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAA;AAEtE,KAAK,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;AAI3B,wBAAgB,wBAAwB,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAoMxE;AAiBD,wBAAgB,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAM5F;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAM7F;AAUD,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,CAAC;IAAC,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAczH;AAMD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAQxE;AAWD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAUnD"}
1
+ {"version":3,"file":"CodexSubscriptionSection.d.ts","sourceRoot":"","sources":["../../../src/client/CodexSubscriptionSection.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAmC,cAAc,EAAoC,MAAM,wBAAwB,CAAA;AAGrJ,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAGjC,KAAK,KAAK,GAAG,YAAY,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAA;AAEtE,KAAK,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;AAE3B,wBAAgB,wBAAwB,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAuOxE;AAiBD,wBAAgB,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAM5F;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAM7F;AAcD,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,CAAC;IAAC,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAczH;AAMD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAQxE;AAqBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAUnD"}
@@ -1,4 +1,4 @@
1
- import type { LoginEventDto, LoginStartDto, PluginStatusDto, QuotaStatusDto, ConnectionTestDto } from '../shared/contracts.ts';
1
+ import type { LoginEventDto, LoginStartDto, PluginStatusDto, QuotaStatusDto, ConnectionTestDto, SubscriptionPreferencesDto, SubscriptionPreferencesUpdateDto } from '../shared/contracts.ts';
2
2
  export declare class SubscriptionApi {
3
3
  status(): Promise<PluginStatusDto>;
4
4
  startLogin(): Promise<LoginStartDto>;
@@ -11,6 +11,7 @@ export declare class SubscriptionApi {
11
11
  refresh(): Promise<PluginStatusDto>;
12
12
  refreshQuota(): Promise<QuotaStatusDto>;
13
13
  testConnection(): Promise<ConnectionTestDto>;
14
+ updatePreferences(patch: SubscriptionPreferencesUpdateDto): Promise<SubscriptionPreferencesDto>;
14
15
  events(loginId: string): EventSource;
15
16
  }
16
17
  export declare function parseLoginEvent(event: MessageEvent<string>): LoginEventDto | null;
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/client/api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,iBAAiB,EAClB,MAAM,wBAAwB,CAAA;AAE/B,qBAAa,eAAe;IAC1B,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC;IAIlC,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IAIpC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAI7D,MAAM,IAAI,OAAO,CAAC;QAAE,aAAa,EAAE,KAAK,CAAA;KAAE,CAAC;IAI3C,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;IAInC,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC;IAIvC,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAI5C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;CAGrC;AAmBD,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,aAAa,GAAG,IAAI,CAOjF"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/client/api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,0BAA0B,EAC1B,gCAAgC,EACjC,MAAM,wBAAwB,CAAA;AAE/B,qBAAa,eAAe;IAC1B,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC;IAIlC,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IAIpC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAI7D,MAAM,IAAI,OAAO,CAAC;QAAE,aAAa,EAAE,KAAK,CAAA;KAAE,CAAC;IAI3C,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;IAInC,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC;IAIvC,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAI5C,iBAAiB,CAAC,KAAK,EAAE,gCAAgC,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAI/F,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;CAGrC;AAmBD,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,aAAa,GAAG,IAAI,CAOjF"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAA;AAK3E,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAA;AAG/D,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAU,kBAAkB;QAC1B,0BAA0B,EAAE,SAAS,CAAA;KACtC;CACF;AAED,eAAO,MAAM,MAAM,UAAsB,CAAA;AAEzC,wBAAgB,KAAK,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAU9C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAA;AAa3E,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAA;AAG/D,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAU,kBAAkB;QAC1B,0BAA0B,EAAE,SAAS,CAAA;KACtC;CACF;AAED,eAAO,MAAM,MAAM,UAA0D,CAAA;AAE7E,wBAAgB,KAAK,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAkC9C"}
@@ -1,115 +1,169 @@
1
- export declare const NS: "dsh-chatgpt-subscription";
2
- export declare const zh: {
3
- readonly title: "Codex 订阅";
4
- readonly intro: "使用 ChatGPT 账号登录,在 DSH 中使用订阅可用的 Codex 模型。";
5
- readonly account: "账号";
6
- readonly signedOut: "尚未登录";
7
- readonly signedIn: "已登录";
8
- readonly plan: "套餐";
9
- readonly accountId: "账号 ID";
10
- readonly expires: "令牌到期";
11
- readonly storage: "凭据存储";
12
- readonly storageWindows: "Windows DPAPI(当前用户加密)";
13
- readonly storageLinuxFile: "Linux 用户私有文件(权限 0600)";
14
- readonly storageMemory: "仅 Host 内存(不持久化)";
15
- readonly storageUnavailable: "凭据存储不可用";
16
- readonly securityWindows: "令牌 Windows CurrentUser DPAPI 加密。";
17
- readonly securityLinuxFile: "令牌仅写入 Host 上当前 Linux 用户可读的 0600 文件。";
18
- readonly securityMemory: "令牌仅保留在 Host 内存中,Host 退出后丢失。";
19
- readonly securityUnavailable: "Host 无法安全访问凭据存储;请修复文件所有者或权限后重试。";
20
- readonly signIn: "使用 ChatGPT 登录";
21
- readonly signInAgain: "重新登录";
22
- readonly cancel: "取消登录";
23
- readonly signOut: "注销";
24
- readonly refreshToken: "刷新凭据";
25
- readonly pending: "请在浏览器中完成登录。";
26
- readonly popupBlocked: "浏览器拦截了登录窗口,请使用下面的链接继续。";
27
- readonly continueLogin: "打开 ChatGPT 登录页";
28
- readonly loading: "正在读取状态…";
29
- readonly connection: "连接";
30
- readonly provider: "Provider";
31
- readonly connectionState: "连接状态";
32
- readonly connected: "可用";
33
- readonly untested: "尚未测试";
34
- readonly testConnection: "测试连接";
35
- readonly testing: "测试中…";
36
- readonly latency: "最近延迟";
37
- readonly models: "可用模型";
38
- readonly quota: "用量与限额";
39
- readonly quotaIntro: "数据来自 ChatGPT Codex 用量服务。页面可见时最多每 60 秒刷新一次。";
40
- readonly refreshQuota: "刷新用量";
41
- readonly refreshing: "刷新中…";
42
- readonly noQuota: "当前套餐未返回可显示的限额窗口。";
43
- readonly quotaSignedOut: "登录后可查看订阅限额。";
44
- readonly stale: "显示的是上次成功获取的数据。";
45
- readonly updated: "更新时间";
46
- readonly primary: "主要窗口";
47
- readonly secondary: "次要窗口";
48
- readonly limitWindow: "额度";
49
- readonly used: "已使用";
50
- readonly remaining: "剩余";
51
- readonly exhausted: "额度已用尽";
52
- readonly resets: "重置";
53
- readonly retry: "重试";
54
- readonly unknown: "未知";
55
- };
56
- export declare const en: Record<keyof typeof zh, string>;
57
- export type LocaleKey = keyof typeof zh;
58
- export declare const dictionaries: {
59
- zh: {
60
- readonly title: "Codex 订阅";
61
- readonly intro: "使用 ChatGPT 账号登录,在 DSH 中使用订阅可用的 Codex 模型。";
62
- readonly account: "账号";
63
- readonly signedOut: "尚未登录";
64
- readonly signedIn: "已登录";
65
- readonly plan: "套餐";
66
- readonly accountId: "账号 ID";
67
- readonly expires: "令牌到期";
68
- readonly storage: "凭据存储";
69
- readonly storageWindows: "Windows DPAPI(当前用户加密)";
70
- readonly storageLinuxFile: "Linux 用户私有文件(权限 0600)";
71
- readonly storageMemory: "仅 Host 内存(不持久化)";
72
- readonly storageUnavailable: "凭据存储不可用";
73
- readonly securityWindows: "令牌由 Host 使用 Windows CurrentUser DPAPI 加密,不会进入浏览器、settings.yaml 或日志。";
74
- readonly securityLinuxFile: "令牌仅写入 Host 上当前 Linux 用户可读的 0600 文件,但不会额外加密;同 UID 进程、root、备份和磁盘快照仍可能读取。";
75
- readonly securityMemory: "令牌仅保留在 Host 内存中,Host 退出后丢失。";
76
- readonly securityUnavailable: "Host 无法安全访问凭据存储;请修复文件所有者或权限后重试。";
77
- readonly signIn: "使用 ChatGPT 登录";
78
- readonly signInAgain: "重新登录";
79
- readonly cancel: "取消登录";
80
- readonly signOut: "注销";
81
- readonly refreshToken: "刷新凭据";
82
- readonly pending: "请在浏览器中完成登录。";
83
- readonly popupBlocked: "浏览器拦截了登录窗口,请使用下面的链接继续。";
84
- readonly continueLogin: "打开 ChatGPT 登录页";
85
- readonly loading: "正在读取状态…";
86
- readonly connection: "连接";
87
- readonly provider: "Provider";
88
- readonly connectionState: "连接状态";
89
- readonly connected: "可用";
90
- readonly untested: "尚未测试";
91
- readonly testConnection: "测试连接";
92
- readonly testing: "测试中…";
93
- readonly latency: "最近延迟";
94
- readonly models: "可用模型";
95
- readonly quota: "用量与限额";
96
- readonly quotaIntro: "数据来自 ChatGPT Codex 用量服务。页面可见时最多每 60 秒刷新一次。";
97
- readonly refreshQuota: "刷新用量";
98
- readonly refreshing: "刷新中…";
99
- readonly noQuota: "当前套餐未返回可显示的限额窗口。";
100
- readonly quotaSignedOut: "登录后可查看订阅限额。";
101
- readonly stale: "显示的是上次成功获取的数据。";
102
- readonly updated: "更新时间";
103
- readonly primary: "主要窗口";
104
- readonly secondary: "次要窗口";
105
- readonly limitWindow: "额度";
106
- readonly used: "已使用";
107
- readonly remaining: "剩余";
108
- readonly exhausted: "额度已用尽";
109
- readonly resets: "重置";
110
- readonly retry: "重试";
111
- readonly unknown: "未知";
112
- };
113
- en: Record<"quota" | "account" | "storage" | "stale" | "pending" | "title" | "intro" | "signedOut" | "signedIn" | "plan" | "accountId" | "expires" | "storageWindows" | "storageLinuxFile" | "storageMemory" | "storageUnavailable" | "securityWindows" | "securityLinuxFile" | "securityMemory" | "securityUnavailable" | "signIn" | "signInAgain" | "cancel" | "signOut" | "refreshToken" | "popupBlocked" | "continueLogin" | "loading" | "connection" | "provider" | "connectionState" | "connected" | "untested" | "testConnection" | "testing" | "latency" | "models" | "quotaIntro" | "refreshQuota" | "refreshing" | "noQuota" | "quotaSignedOut" | "updated" | "primary" | "secondary" | "limitWindow" | "used" | "remaining" | "exhausted" | "resets" | "retry" | "unknown", string>;
114
- };
1
+ export declare const NS: "dsh-chatgpt-subscription";
2
+ export declare const zh: {
3
+ readonly title: "Codex 订阅";
4
+ readonly intro: "使用 ChatGPT 账号登录,在 DSH 中使用订阅可用的 Codex 模型。";
5
+ readonly account: "账号";
6
+ readonly signedOut: "尚未登录";
7
+ readonly signedIn: "已登录";
8
+ readonly plan: "套餐";
9
+ readonly accountId: "账号 ID";
10
+ readonly expires: "令牌到期";
11
+ readonly storage: "凭据存储";
12
+ readonly storageWindows: "Windows DPAPI(当前用户加密)";
13
+ readonly storageLinuxFile: "Linux 用户私有文件(权限 0600)";
14
+ readonly storageMemory: "仅 Host 内存(不持久化)";
15
+ readonly storageUnavailable: "凭据存储不可用";
16
+ readonly securityWindows: "令牌由 Host 使用 Windows CurrentUser DPAPI 加密,不会进入浏览器、settings.yaml 或日志。";
17
+ readonly securityLinuxFile: "令牌仅写入 Host 上当前 Linux 用户可读的 0600 文件,但不会额外加密;同 UID 进程、root、备份和磁盘快照仍可能读取。";
18
+ readonly securityMemory: "令牌仅保留在 Host 内存中,Host 退出后丢失。";
19
+ readonly securityUnavailable: "Host 无法安全访问凭据存储;请修复文件所有者或权限后重试。";
20
+ readonly signIn: "使用 ChatGPT 登录";
21
+ readonly signInAgain: "重新登录";
22
+ readonly cancel: "取消登录";
23
+ readonly signOut: "注销";
24
+ readonly refreshToken: "刷新凭据";
25
+ readonly pending: "请在浏览器中完成登录。";
26
+ readonly popupBlocked: "浏览器拦截了登录窗口,请使用下面的链接继续。";
27
+ readonly continueLogin: "打开 ChatGPT 登录页";
28
+ readonly loading: "正在读取状态…";
29
+ readonly connection: "连接";
30
+ readonly provider: "Provider";
31
+ readonly connectionState: "连接状态";
32
+ readonly connected: "可用";
33
+ readonly untested: "尚未测试";
34
+ readonly testConnection: "测试连接";
35
+ readonly testing: "测试中…";
36
+ readonly latency: "最近延迟";
37
+ readonly models: "可用模型";
38
+ readonly enhancements: "增强功能";
39
+ readonly searchProvider: "搜索来源";
40
+ readonly searchProviderHint: "选择 DSH Web 搜索工具使用默认来源,或改用当前 ChatGPT 订阅的 Codex 搜索来源。";
41
+ readonly searchProviderDsh: "DSH 默认";
42
+ readonly searchProviderCodex: "Codex 订阅";
43
+ readonly quickQuota: "在输入框旁显示快捷用量";
44
+ readonly quickQuotaHint: "仅在当前会话选中 codex-chatgpt 模型时显示。";
45
+ readonly quota: "用量与限额";
46
+ readonly quotaIntro: "数据来自 ChatGPT Codex 用量服务。页面可见时最多每 60 秒刷新一次。";
47
+ readonly refreshQuota: "刷新用量";
48
+ readonly refreshing: "刷新中…";
49
+ readonly noQuota: "当前套餐未返回可显示的限额窗口。";
50
+ readonly quotaSignedOut: "登录后可查看订阅限额。";
51
+ readonly stale: "显示的是上次成功获取的数据。";
52
+ readonly updated: "更新时间";
53
+ readonly primary: "主要窗口";
54
+ readonly secondary: "次要窗口";
55
+ readonly limitWindow: "额度";
56
+ readonly used: "已使用";
57
+ readonly remaining: "剩余";
58
+ readonly available: "可用";
59
+ readonly unavailable: "不可用";
60
+ readonly unlimited: "无限";
61
+ readonly credits: "Credits";
62
+ readonly monthlySpend: "月度消费控制";
63
+ readonly resetCredits: "重置次数";
64
+ readonly spendControlReached: "已触发月度消费控制,新的订阅调用可能被限制。";
65
+ readonly limit: "上限";
66
+ readonly exhausted: "额度已用尽";
67
+ readonly resets: "重置";
68
+ readonly quickQuotaLabel: "Codex 剩余";
69
+ readonly quickQuotaLoading: "用量…";
70
+ readonly imageToolRunning: "正在生成图片";
71
+ readonly imageToolDone: "已生成图片";
72
+ readonly imageToolFailed: "图片生成失败";
73
+ readonly image: "图片";
74
+ readonly openImage: "打开图片";
75
+ readonly openNamedImage: "打开 {name}";
76
+ readonly imageLoading: "加载图片…";
77
+ readonly imageLoadFailed: "图片加载失败,点击重试";
78
+ readonly imagePreviewClose: "关闭";
79
+ readonly imagePreviewOpenOriginal: "打开原图";
80
+ readonly retry: "重试";
81
+ readonly unknown: "未知";
82
+ };
83
+ export declare const en: Record<keyof typeof zh, string>;
84
+ export type LocaleKey = keyof typeof zh;
85
+ export declare const dictionaries: {
86
+ zh: {
87
+ readonly title: "Codex 订阅";
88
+ readonly intro: "使用 ChatGPT 账号登录,在 DSH 中使用订阅可用的 Codex 模型。";
89
+ readonly account: "账号";
90
+ readonly signedOut: "尚未登录";
91
+ readonly signedIn: "已登录";
92
+ readonly plan: "套餐";
93
+ readonly accountId: "账号 ID";
94
+ readonly expires: "令牌到期";
95
+ readonly storage: "凭据存储";
96
+ readonly storageWindows: "Windows DPAPI(当前用户加密)";
97
+ readonly storageLinuxFile: "Linux 用户私有文件(权限 0600)";
98
+ readonly storageMemory: "仅 Host 内存(不持久化)";
99
+ readonly storageUnavailable: "凭据存储不可用";
100
+ readonly securityWindows: "令牌由 Host 使用 Windows CurrentUser DPAPI 加密,不会进入浏览器、settings.yaml 或日志。";
101
+ readonly securityLinuxFile: "令牌仅写入 Host 上当前 Linux 用户可读的 0600 文件,但不会额外加密;同 UID 进程、root、备份和磁盘快照仍可能读取。";
102
+ readonly securityMemory: "令牌仅保留在 Host 内存中,Host 退出后丢失。";
103
+ readonly securityUnavailable: "Host 无法安全访问凭据存储;请修复文件所有者或权限后重试。";
104
+ readonly signIn: "使用 ChatGPT 登录";
105
+ readonly signInAgain: "重新登录";
106
+ readonly cancel: "取消登录";
107
+ readonly signOut: "注销";
108
+ readonly refreshToken: "刷新凭据";
109
+ readonly pending: "请在浏览器中完成登录。";
110
+ readonly popupBlocked: "浏览器拦截了登录窗口,请使用下面的链接继续。";
111
+ readonly continueLogin: "打开 ChatGPT 登录页";
112
+ readonly loading: "正在读取状态…";
113
+ readonly connection: "连接";
114
+ readonly provider: "Provider";
115
+ readonly connectionState: "连接状态";
116
+ readonly connected: "可用";
117
+ readonly untested: "尚未测试";
118
+ readonly testConnection: "测试连接";
119
+ readonly testing: "测试中…";
120
+ readonly latency: "最近延迟";
121
+ readonly models: "可用模型";
122
+ readonly enhancements: "增强功能";
123
+ readonly searchProvider: "搜索来源";
124
+ readonly searchProviderHint: "选择 DSH Web 搜索工具使用默认来源,或改用当前 ChatGPT 订阅的 Codex 搜索来源。";
125
+ readonly searchProviderDsh: "DSH 默认";
126
+ readonly searchProviderCodex: "Codex 订阅";
127
+ readonly quickQuota: "在输入框旁显示快捷用量";
128
+ readonly quickQuotaHint: "仅在当前会话选中 codex-chatgpt 模型时显示。";
129
+ readonly quota: "用量与限额";
130
+ readonly quotaIntro: "数据来自 ChatGPT Codex 用量服务。页面可见时最多每 60 秒刷新一次。";
131
+ readonly refreshQuota: "刷新用量";
132
+ readonly refreshing: "刷新中…";
133
+ readonly noQuota: "当前套餐未返回可显示的限额窗口。";
134
+ readonly quotaSignedOut: "登录后可查看订阅限额。";
135
+ readonly stale: "显示的是上次成功获取的数据。";
136
+ readonly updated: "更新时间";
137
+ readonly primary: "主要窗口";
138
+ readonly secondary: "次要窗口";
139
+ readonly limitWindow: "额度";
140
+ readonly used: "已使用";
141
+ readonly remaining: "剩余";
142
+ readonly available: "可用";
143
+ readonly unavailable: "不可用";
144
+ readonly unlimited: "无限";
145
+ readonly credits: "Credits";
146
+ readonly monthlySpend: "月度消费控制";
147
+ readonly resetCredits: "重置次数";
148
+ readonly spendControlReached: "已触发月度消费控制,新的订阅调用可能被限制。";
149
+ readonly limit: "上限";
150
+ readonly exhausted: "额度已用尽";
151
+ readonly resets: "重置";
152
+ readonly quickQuotaLabel: "Codex 剩余";
153
+ readonly quickQuotaLoading: "用量…";
154
+ readonly imageToolRunning: "正在生成图片";
155
+ readonly imageToolDone: "已生成图片";
156
+ readonly imageToolFailed: "图片生成失败";
157
+ readonly image: "图片";
158
+ readonly openImage: "打开图片";
159
+ readonly openNamedImage: "打开 {name}";
160
+ readonly imageLoading: "加载图片…";
161
+ readonly imageLoadFailed: "图片加载失败,点击重试";
162
+ readonly imagePreviewClose: "关闭";
163
+ readonly imagePreviewOpenOriginal: "打开原图";
164
+ readonly retry: "重试";
165
+ readonly unknown: "未知";
166
+ };
167
+ en: Record<"pending" | "title" | "intro" | "account" | "signedOut" | "signedIn" | "plan" | "accountId" | "expires" | "storage" | "storageWindows" | "storageLinuxFile" | "storageMemory" | "storageUnavailable" | "securityWindows" | "securityLinuxFile" | "securityMemory" | "securityUnavailable" | "signIn" | "signInAgain" | "cancel" | "signOut" | "refreshToken" | "popupBlocked" | "continueLogin" | "loading" | "connection" | "provider" | "connectionState" | "connected" | "untested" | "testConnection" | "testing" | "latency" | "models" | "enhancements" | "searchProvider" | "searchProviderHint" | "searchProviderDsh" | "searchProviderCodex" | "quickQuota" | "quickQuotaHint" | "quota" | "quotaIntro" | "refreshQuota" | "refreshing" | "noQuota" | "quotaSignedOut" | "stale" | "updated" | "primary" | "secondary" | "limitWindow" | "used" | "remaining" | "available" | "unavailable" | "unlimited" | "credits" | "monthlySpend" | "resetCredits" | "spendControlReached" | "limit" | "exhausted" | "resets" | "quickQuotaLabel" | "quickQuotaLoading" | "imageToolRunning" | "imageToolDone" | "imageToolFailed" | "image" | "openImage" | "openNamedImage" | "imageLoading" | "imageLoadFailed" | "imagePreviewClose" | "imagePreviewOpenOriginal" | "retry" | "unknown", string>;
168
+ };
115
169
  //# sourceMappingURL=locales.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../src/client/locales.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,EAAE,EAAG,0BAAmC,CAAA;AAErD,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDL,CAAA;AAEV,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,OAAO,EAAE,EAAE,MAAM,CAqD9C,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,EAAE,CAAA;AACvC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAa,CAAA"}
1
+ {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../src/client/locales.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,EAAE,EAAG,0BAAmC,CAAA;AAErD,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFL,CAAA;AAEV,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,OAAO,EAAE,EAAE,MAAM,CAgF9C,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,EAAE,CAAA;AACvC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAa,CAAA"}
@@ -0,0 +1,9 @@
1
+ import type { QuotaBucketDto, QuotaStatusDto, QuotaWindowDto } from '../shared/contracts.ts';
2
+ export interface SelectedQuotaWindow {
3
+ bucket: QuotaBucketDto;
4
+ window: QuotaWindowDto;
5
+ remainingPercent: number;
6
+ }
7
+ export declare function selectQuotaForModel(quota: QuotaStatusDto | undefined, modelId: string | undefined): SelectedQuotaWindow | null;
8
+ export declare function quotaWindows(bucket: QuotaBucketDto): QuotaWindowDto[];
9
+ //# sourceMappingURL=quota.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quota.d.ts","sourceRoot":"","sources":["../../../src/client/quota.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAE5F,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,cAAc,CAAA;IACtB,MAAM,EAAE,cAAc,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB,GAAG,IAAI,CAmB9H;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,EAAE,CAGrE"}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/client/styles.ts"],"names":[],"mappings":"AAiDA,wBAAgB,aAAa,IAAI,MAAM,IAAI,CAQ1C"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/client/styles.ts"],"names":[],"mappings":"AA8EA,wBAAgB,aAAa,IAAI,MAAM,IAAI,CAQ1C"}
@@ -15,10 +15,17 @@ export declare const OAUTH_LOGIN_TIMEOUT_MS: number;
15
15
  export declare const TOKEN_REFRESH_MARGIN_MS = 60000;
16
16
  export declare const ROUTE_PREFIX: "/api/dsh-chatgpt-subscription";
17
17
  export declare const PLUGIN_VERSION: "0.1.0-alpha.0";
18
+ export declare const CODEX_CHATGPT_PROVIDER_ID: "codex-chatgpt";
18
19
  export declare const CODEX_API_BASE: "https://chatgpt.com/backend-api/codex";
19
20
  export declare const CODEX_RESPONSES_URL: "https://chatgpt.com/backend-api/codex/responses";
21
+ export declare const CODEX_IMAGE_GENERATION_URL: "https://chatgpt.com/backend-api/codex/images/generations";
22
+ export declare const CODEX_SEARCH_URL: "https://chatgpt.com/backend-api/codex/alpha/search";
20
23
  export declare const CODEX_USAGE_URL: "https://chatgpt.com/backend-api/wham/usage";
21
24
  export declare const CODEX_ORIGINATOR: "opencode";
25
+ export declare const CODEX_ENHANCED_ORIGINATOR: "pi";
26
+ export declare const CODEX_IMAGE_TOOL_NAME: "codex_image_generate";
27
+ export declare const CODEX_IMAGE_MODEL: "gpt-image-2";
28
+ export declare const CODEX_SEARCH_PROVIDER_ID: "codex-subscription";
22
29
  export declare const QUOTA_CACHE_MS = 60000;
23
30
  export declare const QUOTA_MIN_UPSTREAM_INTERVAL_MS = 15000;
24
31
  export declare const OAUTH_AUTHORIZE_URL: "https://auth.openai.com/oauth/authorize";
@@ -1 +1 @@
1
- {"version":3,"file":"compat.d.ts","sourceRoot":"","sources":["../../src/compat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAG,yBAAkC,CAAA;AACtE,eAAO,MAAM,uBAAuB,EAAG,8BAAuC,CAAA;AAC9E,eAAO,MAAM,mBAAmB,EAAG,WAAoB,CAAA;AACvD,eAAO,MAAM,mBAAmB,EAAG,IAAa,CAAA;AAChD,eAAO,MAAM,mBAAmB,EAAG,gBAAyB,CAAA;AAC5D,eAAO,MAAM,kBAAkB,uCAAwF,CAAA;AACvH,eAAO,MAAM,WAAW,EAAG,qCAA8C,CAAA;AACzE,eAAO,MAAM,gBAAgB,EAAG,UAAmB,CAAA;AACnD,eAAO,MAAM,sBAAsB,QAAa,CAAA;AAChD,eAAO,MAAM,uBAAuB,QAAS,CAAA;AAC7C,eAAO,MAAM,YAAY,EAAG,+BAAwC,CAAA;AACpE,eAAO,MAAM,cAAc,EAAG,eAAwB,CAAA;AAEtD,eAAO,MAAM,cAAc,EAAG,uCAAgD,CAAA;AAC9E,eAAO,MAAM,mBAAmB,mDAAyC,CAAA;AACzE,eAAO,MAAM,eAAe,EAAG,4CAAqD,CAAA;AACpF,eAAO,MAAM,gBAAgB,EAAG,UAAmB,CAAA;AACnD,eAAO,MAAM,cAAc,QAAS,CAAA;AACpC,eAAO,MAAM,8BAA8B,QAAS,CAAA;AAEpD,eAAO,MAAM,mBAAmB,2CAAqD,CAAA;AACrF,eAAO,MAAM,eAAe,uCAAiD,CAAA"}
1
+ {"version":3,"file":"compat.d.ts","sourceRoot":"","sources":["../../src/compat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAG,yBAAkC,CAAA;AACtE,eAAO,MAAM,uBAAuB,EAAG,8BAAuC,CAAA;AAC9E,eAAO,MAAM,mBAAmB,EAAG,WAAoB,CAAA;AACvD,eAAO,MAAM,mBAAmB,EAAG,IAAa,CAAA;AAChD,eAAO,MAAM,mBAAmB,EAAG,gBAAyB,CAAA;AAC5D,eAAO,MAAM,kBAAkB,uCAAwF,CAAA;AACvH,eAAO,MAAM,WAAW,EAAG,qCAA8C,CAAA;AACzE,eAAO,MAAM,gBAAgB,EAAG,UAAmB,CAAA;AACnD,eAAO,MAAM,sBAAsB,QAAa,CAAA;AAChD,eAAO,MAAM,uBAAuB,QAAS,CAAA;AAC7C,eAAO,MAAM,YAAY,EAAG,+BAAwC,CAAA;AACpE,eAAO,MAAM,cAAc,EAAG,eAAwB,CAAA;AACtD,eAAO,MAAM,yBAAyB,EAAG,eAAwB,CAAA;AAEjE,eAAO,MAAM,cAAc,EAAG,uCAAgD,CAAA;AAC9E,eAAO,MAAM,mBAAmB,mDAAyC,CAAA;AACzE,eAAO,MAAM,0BAA0B,4DAAkD,CAAA;AACzF,eAAO,MAAM,gBAAgB,sDAA4C,CAAA;AACzE,eAAO,MAAM,eAAe,EAAG,4CAAqD,CAAA;AACpF,eAAO,MAAM,gBAAgB,EAAG,UAAmB,CAAA;AACnD,eAAO,MAAM,yBAAyB,EAAG,IAAa,CAAA;AACtD,eAAO,MAAM,qBAAqB,EAAG,sBAA+B,CAAA;AACpE,eAAO,MAAM,iBAAiB,EAAG,aAAsB,CAAA;AACvD,eAAO,MAAM,wBAAwB,EAAG,oBAA6B,CAAA;AACrE,eAAO,MAAM,cAAc,QAAS,CAAA;AACpC,eAAO,MAAM,8BAA8B,QAAS,CAAA;AAEpD,eAAO,MAAM,mBAAmB,2CAAqD,CAAA;AACrF,eAAO,MAAM,eAAe,uCAAiD,CAAA"}
@@ -0,0 +1,9 @@
1
+ import type { AttachmentStore } from '@deepseek-ai/dsh-attachment';
2
+ import { OAuthService } from './oauth-service.ts';
3
+ type FetchLike = typeof fetch;
4
+ export interface CodexImageToolOptions {
5
+ fetchFn?: FetchLike;
6
+ }
7
+ export declare function createCodexImageTool(oauth: OAuthService, attachments: AttachmentStore, options?: CodexImageToolOptions): import("@deepseek-ai/dsh-tools").ToolDefinition;
8
+ export {};
9
+ //# sourceMappingURL=codex-images.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-images.d.ts","sourceRoot":"","sources":["../../../src/host/codex-images.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,6BAA6B,CAAA;AAUtF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAIjD,KAAK,SAAS,GAAG,OAAO,KAAK,CAAA;AAE7B,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,SAAS,CAAA;CACpB;AAiBD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,eAAe,EAC5B,OAAO,GAAE,qBAA0B,mDA8GpC"}
@@ -0,0 +1,11 @@
1
+ import { type WebSearchProvider } from '@deepseek-ai/dsh-web';
2
+ import { OAuthService } from './oauth-service.ts';
3
+ type FetchLike = typeof fetch;
4
+ export interface CodexSearchProviderOptions {
5
+ fetchFn?: FetchLike;
6
+ model?: string;
7
+ idFactory?: () => string;
8
+ }
9
+ export declare function createCodexSearchProvider(oauth: OAuthService, options?: CodexSearchProviderOptions): WebSearchProvider;
10
+ export {};
11
+ //# sourceMappingURL=codex-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-search.d.ts","sourceRoot":"","sources":["../../../src/host/codex-search.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,iBAAiB,EAAqE,MAAM,sBAAsB,CAAA;AAM1I,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAIjD,KAAK,SAAS,GAAG,OAAO,KAAK,CAAA;AAE7B,MAAM,WAAW,0BAA0B;IACzC,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,MAAM,CAAA;CACzB;AAID,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE,0BAA+B,GACvC,iBAAiB,CA8BnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../../src/host/model-catalog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAE9E,eAAO,MAAM,WAAW,EAAG,eAAwB,CAAA;AACnD,eAAO,MAAM,aAAa,EAAG,uCAA4B,CAAA;AA8BzD,wBAAgB,eAAe,IAAI,YAAY,EAAE,CAOhD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAiBrE"}
1
+ {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../../src/host/model-catalog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAI9E,eAAO,MAAM,WAAW,iBAA4B,CAAA;AACpD,eAAO,MAAM,aAAa,EAAG,uCAA4B,CAAA;AAUzD,wBAAgB,eAAe,IAAI,YAAY,EAAE,CAOhD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAkBrE"}
@@ -0,0 +1,12 @@
1
+ import { type SettingsProvider } from '@deepseek-ai/dsh-settings';
2
+ import type { SubscriptionPreferencesDto, SubscriptionPreferencesUpdateDto } from '../shared/contracts.ts';
3
+ export interface SubscriptionPreferenceStore {
4
+ status(): SubscriptionPreferencesDto;
5
+ update(patch: SubscriptionPreferencesUpdateDto): Promise<SubscriptionPreferencesDto>;
6
+ watch(callback: (next: SubscriptionPreferencesDto, prev: SubscriptionPreferencesDto) => void | Promise<void>): () => void;
7
+ }
8
+ export declare function registerPreferenceStore(settings: SettingsProvider): SubscriptionPreferenceStore;
9
+ export declare class PreferenceError extends Error {
10
+ constructor(message: string);
11
+ }
12
+ //# sourceMappingURL=preferences.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../../src/host/preferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,gBAAgB,EAAsB,MAAM,2BAA2B,CAAA;AASxG,OAAO,KAAK,EACV,0BAA0B,EAC1B,gCAAgC,EACjC,MAAM,wBAAwB,CAAA;AAE/B,MAAM,WAAW,2BAA2B;IAC1C,MAAM,IAAI,0BAA0B,CAAA;IACpC,MAAM,CAAC,KAAK,EAAE,gCAAgC,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAA;IACpF,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,0BAA0B,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAA;CAC1H;AAID,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,2BAA2B,CAS/F;AAyBD,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAG5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"responses-mapper.d.ts","sourceRoot":"","sources":["../../../src/host/responses-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAsC,MAAM,6BAA6B,CAAA;AACtG,OAAO,KAAK,EAAgB,eAAe,EAAW,MAAM,sBAAsB,CAAA;AAElF,MAAM,WAAW,gBAAiB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/D,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACrC,MAAM,EAAE,IAAI,CAAA;IACZ,KAAK,EAAE,KAAK,CAAA;CACb;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEhG,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,SAAS,CAAA;CACpB;AAQD,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,CAKnF;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,EAC/F,cAAc,GAAE,oBAAyB,GACxC,OAAO,CAAC,gBAAgB,CAAC,CA6F3B"}
1
+ {"version":3,"file":"responses-mapper.d.ts","sourceRoot":"","sources":["../../../src/host/responses-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAsC,MAAM,6BAA6B,CAAA;AACtG,OAAO,KAAK,EAAgB,eAAe,EAAW,MAAM,sBAAsB,CAAA;AAGlF,MAAM,WAAW,gBAAiB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/D,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACrC,MAAM,EAAE,IAAI,CAAA;IACZ,KAAK,EAAE,KAAK,CAAA;CACb;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEhG,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,SAAS,CAAA;CACpB;AAQD,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,CAKnF;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,EAC/F,cAAc,GAAE,oBAAyB,GACxC,OAAO,CAAC,gBAAgB,CAAC,CA+F3B"}
@@ -1,5 +1,6 @@
1
1
  import type { Context } from '@deepseek-ai/cordis';
2
2
  import { OAuthService } from './oauth-service.ts';
3
+ import { type SubscriptionPreferenceStore } from './preferences.ts';
3
4
  import { UsageService } from './usage-service.ts';
4
- export declare function registerRoutes(ctx: Context, oauth: OAuthService, usage: UsageService): () => void;
5
+ export declare function registerRoutes(ctx: Context, oauth: OAuthService, usage: UsageService, preferences: SubscriptionPreferenceStore): () => void;
5
6
  //# sourceMappingURL=routes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/host/routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAIlD,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAA;AAIpE,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,IAAI,CAwIjG"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/host/routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAIlD,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAmB,KAAK,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AACpF,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAA;AAIpE,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,2BAA2B,GAAG,MAAM,IAAI,CA+I3I"}
@@ -0,0 +1,15 @@
1
+ import type { Entry } from '@deepseek-ai/cordis-plugin-loader';
2
+ import type { SearchProviderPreference } from '../shared/contracts.ts';
3
+ interface LoaderLike {
4
+ entries(): Iterable<Entry>;
5
+ }
6
+ export declare class SearchProviderSwitcher {
7
+ private readonly loader;
8
+ private originalProvider;
9
+ private initialized;
10
+ constructor(loader: LoaderLike);
11
+ select(preference: SearchProviderPreference): Promise<void>;
12
+ private findWebEntry;
13
+ }
14
+ export {};
15
+ //# sourceMappingURL=search-provider-switcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-provider-switcher.d.ts","sourceRoot":"","sources":["../../../src/host/search-provider-switcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAA;AAG9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AAEtE,UAAU,UAAU;IAClB,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAA;CAC3B;AAED,qBAAa,sBAAsB;IAIrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,gBAAgB,CAAoB;IAC5C,OAAO,CAAC,WAAW,CAAQ;gBAEE,MAAM,EAAE,UAAU;IAEzC,MAAM,CAAC,UAAU,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBjE,OAAO,CAAC,YAAY;CAOrB"}
@@ -1,4 +1,4 @@
1
- import type { ConnectionTestDto, PublicErrorDto, QuotaBucketDto, QuotaStatusDto } from '../shared/contracts.ts';
1
+ import type { ConnectionTestDto, PublicErrorDto, QuotaBucketDto, QuotaUsageDto, QuotaStatusDto } from '../shared/contracts.ts';
2
2
  import { OAuthService } from './oauth-service.ts';
3
3
  type FetchLike = typeof fetch;
4
4
  export interface UsageServiceOptions {
@@ -29,5 +29,6 @@ export declare class UsageServiceError extends Error {
29
29
  constructor(publicError: PublicErrorDto);
30
30
  }
31
31
  export declare function mapCodexUsage(value: unknown): QuotaBucketDto[];
32
+ export declare function parseCodexUsage(value: unknown): QuotaUsageDto;
32
33
  export {};
33
34
  //# sourceMappingURL=usage-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usage-service.d.ts","sourceRoot":"","sources":["../../../src/host/usage-service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EAEf,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAIjD,KAAK,SAAS,GAAG,OAAO,KAAK,CAAA;AAQ7B,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED,qBAAa,YAAY;IASX,OAAO,CAAC,QAAQ,CAAC,KAAK;IARlC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;IAClC,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,cAAc,CAAI;IAC1B,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAuC;gBAE1B,KAAK,EAAE,YAAY,EAAE,OAAO,GAAE,mBAAwB;IAK7E,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;IA2B5E,UAAU,IAAI,IAAI;IAIlB,KAAK,IAAI,IAAI;IAMP,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC;YASpC,eAAe;IAmC7B,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,OAAO;CAGhB;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAC9B,QAAQ,CAAC,WAAW,EAAE,cAAc;gBAA3B,WAAW,EAAE,cAAc;CAGjD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,EAAE,CAQ9D"}
1
+ {"version":3,"file":"usage-service.d.ts","sourceRoot":"","sources":["../../../src/host/usage-service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,aAAa,EACb,cAAc,EAEf,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAIjD,KAAK,SAAS,GAAG,OAAO,KAAK,CAAA;AAgB7B,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED,qBAAa,YAAY;IASX,OAAO,CAAC,QAAQ,CAAC,KAAK;IARlC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;IAClC,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,cAAc,CAAI;IAC1B,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAuC;gBAE1B,KAAK,EAAE,YAAY,EAAE,OAAO,GAAE,mBAAwB;IAK7E,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;IA2B5E,UAAU,IAAI,IAAI;IAIlB,KAAK,IAAI,IAAI;IAMP,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC;YASpC,eAAe;IAmC7B,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,OAAO;CAGhB;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAC9B,QAAQ,CAAC,WAAW,EAAE,cAAc;gBAA3B,WAAW,EAAE,cAAc;CAGjD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,EAAE,CAE9D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAwB7D"}
@@ -3,8 +3,10 @@ export declare const inject: string[];
3
3
  export declare function apply(ctx: Context): void;
4
4
  export { OAuthService } from './host/oauth-service.ts';
5
5
  export { CodexChatGptAdapter } from './host/adapter.ts';
6
+ export { createCodexImageTool } from './host/codex-images.ts';
7
+ export { createCodexSearchProvider } from './host/codex-search.ts';
6
8
  export { ResponsesClient, parseResponsesStream } from './host/responses-client.ts';
7
- export { UsageService, mapCodexUsage } from './host/usage-service.ts';
9
+ export { UsageService, mapCodexUsage, parseCodexUsage } from './host/usage-service.ts';
8
10
  export { createPlatformTokenStore } from './host/platform-token-store.ts';
9
11
  export { LinuxFileTokenStore } from './host/token-store-linux.ts';
10
12
  export { WindowsDpapiTokenStore } from './host/token-store-windows.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAalD,eAAO,MAAM,MAAM,UAAgD,CAAA;AAEnE,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAqBxC;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,YAAY,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAmBlD,eAAO,MAAM,MAAM,UAA4E,CAAA;AAE/F,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAgCxC;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,YAAY,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA"}