@eddyskywalker/dsh-chatgpt-subscription 0.1.0-alpha.0

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 (46) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/LICENSE +21 -0
  3. package/README.md +148 -0
  4. package/cordis.patch.yml +6 -0
  5. package/lib/client.js +673 -0
  6. package/lib/client.js.map +1 -0
  7. package/lib/index.js +1753 -0
  8. package/lib/types/client/CodexSubscriptionSection.d.ts +15 -0
  9. package/lib/types/client/CodexSubscriptionSection.d.ts.map +1 -0
  10. package/lib/types/client/api.d.ts +17 -0
  11. package/lib/types/client/api.d.ts.map +1 -0
  12. package/lib/types/client/index.d.ts +10 -0
  13. package/lib/types/client/index.d.ts.map +1 -0
  14. package/lib/types/client/locales.d.ts +103 -0
  15. package/lib/types/client/locales.d.ts.map +1 -0
  16. package/lib/types/client/styles.d.ts +2 -0
  17. package/lib/types/client/styles.d.ts.map +1 -0
  18. package/lib/types/compat.d.ts +26 -0
  19. package/lib/types/compat.d.ts.map +1 -0
  20. package/lib/types/host/adapter.d.ts +14 -0
  21. package/lib/types/host/adapter.d.ts.map +1 -0
  22. package/lib/types/host/callback-server.d.ts +22 -0
  23. package/lib/types/host/callback-server.d.ts.map +1 -0
  24. package/lib/types/host/model-catalog.d.ts +6 -0
  25. package/lib/types/host/model-catalog.d.ts.map +1 -0
  26. package/lib/types/host/oauth-service.d.ts +69 -0
  27. package/lib/types/host/oauth-service.d.ts.map +1 -0
  28. package/lib/types/host/responses-client.d.ts +21 -0
  29. package/lib/types/host/responses-client.d.ts.map +1 -0
  30. package/lib/types/host/responses-mapper.d.ts +11 -0
  31. package/lib/types/host/responses-mapper.d.ts.map +1 -0
  32. package/lib/types/host/routes.d.ts +5 -0
  33. package/lib/types/host/routes.d.ts.map +1 -0
  34. package/lib/types/host/token-store-windows.d.ts +10 -0
  35. package/lib/types/host/token-store-windows.d.ts.map +1 -0
  36. package/lib/types/host/token-store.d.ts +23 -0
  37. package/lib/types/host/token-store.d.ts.map +1 -0
  38. package/lib/types/host/usage-service.d.ts +33 -0
  39. package/lib/types/host/usage-service.d.ts.map +1 -0
  40. package/lib/types/host/wire-auth.d.ts +5 -0
  41. package/lib/types/host/wire-auth.d.ts.map +1 -0
  42. package/lib/types/index.d.ts +9 -0
  43. package/lib/types/index.d.ts.map +1 -0
  44. package/lib/types/shared/contracts.d.ts +77 -0
  45. package/lib/types/shared/contracts.d.ts.map +1 -0
  46. package/package.json +105 -0
@@ -0,0 +1,15 @@
1
+ import type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
2
+ import type { QuotaWindowDto } from '../shared/contracts.ts';
3
+ import { NS } from './locales.ts';
4
+ type Props = PropsRuntime<'settings.section'> & PropsLocale<typeof NS>;
5
+ type Translate = Props['t'];
6
+ export declare function CodexSubscriptionSection({ t }: Props): React.JSX.Element;
7
+ export declare function QuotaBar({ label, window, t }: {
8
+ label: string;
9
+ window: QuotaWindowDto;
10
+ t: Translate;
11
+ }): React.JSX.Element;
12
+ export declare function windowLabel(minutes: number | null, t: Translate): string;
13
+ export declare function formatReset(seconds: number): string;
14
+ export {};
15
+ //# sourceMappingURL=CodexSubscriptionSection.d.ts.map
@@ -0,0 +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,EAAmC,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAE7F,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;AAyBD,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"}
@@ -0,0 +1,17 @@
1
+ import type { LoginEventDto, LoginStartDto, PluginStatusDto, QuotaStatusDto, ConnectionTestDto } from '../shared/contracts.ts';
2
+ export declare class SubscriptionApi {
3
+ status(): Promise<PluginStatusDto>;
4
+ startLogin(): Promise<LoginStartDto>;
5
+ cancelLogin(loginId: string): Promise<{
6
+ cancelled: boolean;
7
+ }>;
8
+ logout(): Promise<{
9
+ authenticated: false;
10
+ }>;
11
+ refresh(): Promise<PluginStatusDto>;
12
+ refreshQuota(): Promise<QuotaStatusDto>;
13
+ testConnection(): Promise<ConnectionTestDto>;
14
+ events(loginId: string): EventSource;
15
+ }
16
+ export declare function parseLoginEvent(event: MessageEvent<string>): LoginEventDto | null;
17
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,10 @@
1
+ import type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client';
2
+ import { type LocaleKey } from './locales.ts';
3
+ declare module '@deepseek-ai/dsh-client-ui-slots' {
4
+ interface LocaleNamespaceMap {
5
+ 'dsh-chatgpt-subscription': LocaleKey;
6
+ }
7
+ }
8
+ export declare const inject: string[];
9
+ export declare function apply(ctx: ClientContext): void;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,103 @@
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 storageValue: "Windows DPAPI(当前用户加密)";
13
+ readonly securityNotice: "令牌仅保存在 Host 端的 DPAPI 加密文件中,不会进入浏览器、settings.yaml 或日志。";
14
+ readonly signIn: "使用 ChatGPT 登录";
15
+ readonly signInAgain: "重新登录";
16
+ readonly cancel: "取消登录";
17
+ readonly signOut: "注销";
18
+ readonly refreshToken: "刷新凭据";
19
+ readonly pending: "请在浏览器中完成登录。";
20
+ readonly popupBlocked: "浏览器拦截了登录窗口,请使用下面的链接继续。";
21
+ readonly continueLogin: "打开 ChatGPT 登录页";
22
+ readonly loading: "正在读取状态…";
23
+ readonly connection: "连接";
24
+ readonly provider: "Provider";
25
+ readonly connectionState: "连接状态";
26
+ readonly connected: "可用";
27
+ readonly untested: "尚未测试";
28
+ readonly testConnection: "测试连接";
29
+ readonly testing: "测试中…";
30
+ readonly latency: "最近延迟";
31
+ readonly models: "可用模型";
32
+ readonly quota: "用量与限额";
33
+ readonly quotaIntro: "数据来自 ChatGPT Codex 用量服务。页面可见时最多每 60 秒刷新一次。";
34
+ readonly refreshQuota: "刷新用量";
35
+ readonly refreshing: "刷新中…";
36
+ readonly noQuota: "当前套餐未返回可显示的限额窗口。";
37
+ readonly quotaSignedOut: "登录后可查看订阅限额。";
38
+ readonly stale: "显示的是上次成功获取的数据。";
39
+ readonly updated: "更新时间";
40
+ readonly primary: "主要窗口";
41
+ readonly secondary: "次要窗口";
42
+ readonly limitWindow: "额度";
43
+ readonly used: "已使用";
44
+ readonly remaining: "剩余";
45
+ readonly exhausted: "额度已用尽";
46
+ readonly resets: "重置";
47
+ readonly retry: "重试";
48
+ readonly unknown: "未知";
49
+ };
50
+ export declare const en: Record<keyof typeof zh, string>;
51
+ export type LocaleKey = keyof typeof zh;
52
+ export declare const dictionaries: {
53
+ zh: {
54
+ readonly title: "Codex 订阅";
55
+ readonly intro: "使用 ChatGPT 账号登录,在 DSH 中使用订阅可用的 Codex 模型。";
56
+ readonly account: "账号";
57
+ readonly signedOut: "尚未登录";
58
+ readonly signedIn: "已登录";
59
+ readonly plan: "套餐";
60
+ readonly accountId: "账号 ID";
61
+ readonly expires: "令牌到期";
62
+ readonly storage: "凭据存储";
63
+ readonly storageValue: "Windows DPAPI(当前用户加密)";
64
+ readonly securityNotice: "令牌仅保存在 Host 端的 DPAPI 加密文件中,不会进入浏览器、settings.yaml 或日志。";
65
+ readonly signIn: "使用 ChatGPT 登录";
66
+ readonly signInAgain: "重新登录";
67
+ readonly cancel: "取消登录";
68
+ readonly signOut: "注销";
69
+ readonly refreshToken: "刷新凭据";
70
+ readonly pending: "请在浏览器中完成登录。";
71
+ readonly popupBlocked: "浏览器拦截了登录窗口,请使用下面的链接继续。";
72
+ readonly continueLogin: "打开 ChatGPT 登录页";
73
+ readonly loading: "正在读取状态…";
74
+ readonly connection: "连接";
75
+ readonly provider: "Provider";
76
+ readonly connectionState: "连接状态";
77
+ readonly connected: "可用";
78
+ readonly untested: "尚未测试";
79
+ readonly testConnection: "测试连接";
80
+ readonly testing: "测试中…";
81
+ readonly latency: "最近延迟";
82
+ readonly models: "可用模型";
83
+ readonly quota: "用量与限额";
84
+ readonly quotaIntro: "数据来自 ChatGPT Codex 用量服务。页面可见时最多每 60 秒刷新一次。";
85
+ readonly refreshQuota: "刷新用量";
86
+ readonly refreshing: "刷新中…";
87
+ readonly noQuota: "当前套餐未返回可显示的限额窗口。";
88
+ readonly quotaSignedOut: "登录后可查看订阅限额。";
89
+ readonly stale: "显示的是上次成功获取的数据。";
90
+ readonly updated: "更新时间";
91
+ readonly primary: "主要窗口";
92
+ readonly secondary: "次要窗口";
93
+ readonly limitWindow: "额度";
94
+ readonly used: "已使用";
95
+ readonly remaining: "剩余";
96
+ readonly exhausted: "额度已用尽";
97
+ readonly resets: "重置";
98
+ readonly retry: "重试";
99
+ readonly unknown: "未知";
100
+ };
101
+ en: Record<"title" | "intro" | "account" | "signedOut" | "signedIn" | "plan" | "accountId" | "expires" | "storage" | "storageValue" | "securityNotice" | "signIn" | "signInAgain" | "cancel" | "signOut" | "refreshToken" | "pending" | "popupBlocked" | "continueLogin" | "loading" | "connection" | "provider" | "connectionState" | "connected" | "untested" | "testConnection" | "testing" | "latency" | "models" | "quota" | "quotaIntro" | "refreshQuota" | "refreshing" | "noQuota" | "quotaSignedOut" | "stale" | "updated" | "primary" | "secondary" | "limitWindow" | "used" | "remaining" | "exhausted" | "resets" | "retry" | "unknown", string>;
102
+ };
103
+ //# sourceMappingURL=locales.d.ts.map
@@ -0,0 +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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CL,CAAA;AAEV,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,OAAO,EAAE,EAAE,MAAM,CA+C9C,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,EAAE,CAAA;AACvC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAa,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function installStyles(): () => void;
2
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/client/styles.ts"],"names":[],"mappings":"AAiDA,wBAAgB,aAAa,IAAI,MAAM,IAAI,CAQ1C"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Compatibility constants for the ChatGPT-backed Codex flow. The backend and
3
+ * OAuth parameters are not a public third-party API contract, so every such
4
+ * value is isolated here for review and rollback.
5
+ */
6
+ export declare const CHATGPT_OAUTH_ISSUER: "https://auth.openai.com";
7
+ export declare const CHATGPT_OAUTH_CLIENT_ID: "app_EMoamEEZ73f0CkXaXp7hrann";
8
+ export declare const OAUTH_CALLBACK_HOST: "localhost";
9
+ export declare const OAUTH_CALLBACK_PORT: 1455;
10
+ export declare const OAUTH_CALLBACK_PATH: "/auth/callback";
11
+ export declare const OAUTH_REDIRECT_URI: "http://localhost:1455/auth/callback";
12
+ export declare const OAUTH_SCOPE: "openid profile email offline_access";
13
+ export declare const OAUTH_ORIGINATOR: "opencode";
14
+ export declare const OAUTH_LOGIN_TIMEOUT_MS: number;
15
+ export declare const TOKEN_REFRESH_MARGIN_MS = 60000;
16
+ export declare const ROUTE_PREFIX: "/api/dsh-chatgpt-subscription";
17
+ export declare const PLUGIN_VERSION: "0.1.0-alpha.0";
18
+ export declare const CODEX_API_BASE: "https://chatgpt.com/backend-api/codex";
19
+ export declare const CODEX_RESPONSES_URL: "https://chatgpt.com/backend-api/codex/responses";
20
+ export declare const CODEX_USAGE_URL: "https://chatgpt.com/backend-api/wham/usage";
21
+ export declare const CODEX_ORIGINATOR: "opencode";
22
+ export declare const QUOTA_CACHE_MS = 60000;
23
+ export declare const QUOTA_MIN_UPSTREAM_INTERVAL_MS = 15000;
24
+ export declare const OAUTH_AUTHORIZE_URL: "https://auth.openai.com/oauth/authorize";
25
+ export declare const OAUTH_TOKEN_URL: "https://auth.openai.com/oauth/token";
26
+ //# sourceMappingURL=compat.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,14 @@
1
+ import { LlmAdapter, type GenerateOptions, type LlmModelInfo, type LlmProviderInfo, type LlmResolvedModelInfo, type ResolvedRetryPolicy, type StreamChunk } from '@deepseek-ai/dsh-llm';
2
+ import { PROVIDER_ID } from './model-catalog.ts';
3
+ import { ResponsesClient } from './responses-client.ts';
4
+ export declare class CodexChatGptAdapter extends LlmAdapter {
5
+ private readonly client;
6
+ constructor(client: ResponsesClient);
7
+ providerInfo(provider: string): LlmProviderInfo;
8
+ providerRetryPolicy(): ResolvedRetryPolicy;
9
+ listModels(): Promise<readonly LlmModelInfo[]>;
10
+ resolveModel(_provider: string, model: string): Promise<LlmResolvedModelInfo>;
11
+ stream(options: GenerateOptions): AsyncIterable<StreamChunk>;
12
+ }
13
+ export { PROVIDER_ID };
14
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/host/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAmB,WAAW,EAAoC,MAAM,oBAAoB,CAAA;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AASvD,qBAAa,mBAAoB,SAAQ,UAAU;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,eAAe;IAIpD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe;IAI/C,mBAAmB,IAAI,mBAAmB;IAIpC,UAAU,IAAI,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;IAI9C,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAInF,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,aAAa,CAAC,WAAW,CAAC;CAG7D;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -0,0 +1,22 @@
1
+ export interface CallbackServerOptions {
2
+ expectedState: string;
3
+ exchange: (code: string, signal: AbortSignal) => Promise<void>;
4
+ }
5
+ /** One-shot localhost OAuth callback listener. */
6
+ export declare class OAuthCallbackServer {
7
+ private readonly options;
8
+ private readonly abortController;
9
+ private server;
10
+ private settled;
11
+ private resolveCompletion;
12
+ private rejectCompletion;
13
+ readonly completion: Promise<void>;
14
+ constructor(options: CallbackServerOptions);
15
+ listen(): Promise<void>;
16
+ cancel(reason: Error): void;
17
+ dispose(): void;
18
+ private handle;
19
+ private finish;
20
+ private close;
21
+ }
22
+ //# sourceMappingURL=callback-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callback-server.d.ts","sourceRoot":"","sources":["../../../src/host/callback-server.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC/D;AAED,kDAAkD;AAClD,qBAAa,mBAAmB;IAWlB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAVpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IACxD,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,gBAAgB,CAAyB;IACjD,QAAQ,CAAC,UAAU,gBAGjB;gBAE2B,OAAO,EAAE,qBAAqB;IAErD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB7B,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI;IAI3B,OAAO,IAAI,IAAI;YAKD,MAAM;IAgCpB,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,KAAK;CAMd"}
@@ -0,0 +1,6 @@
1
+ import type { LlmModelInfo, LlmResolvedModelInfo } from '@deepseek-ai/dsh-llm';
2
+ export declare const PROVIDER_ID: "codex-chatgpt";
3
+ export declare const PROVIDER_NAME: "Codex\uFF08ChatGPT \u8BA2\u9605\uFF09";
4
+ export declare function listCodexModels(): LlmModelInfo[];
5
+ export declare function resolveCodexModel(model: string): LlmResolvedModelInfo;
6
+ //# sourceMappingURL=model-catalog.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,69 @@
1
+ import type { LoginEventDto, LoginStartDto, OAuthStatusDto, PublicErrorDto } from '../shared/contracts.ts';
2
+ import type { StoredOAuthCredentials, TokenStore } from './token-store.ts';
3
+ type FetchLike = typeof fetch;
4
+ type LoginListener = (event: LoginEventDto) => void;
5
+ interface OAuthClaims {
6
+ email?: unknown;
7
+ chatgpt_account_id?: unknown;
8
+ chatgpt_plan_type?: unknown;
9
+ organizations?: Array<{
10
+ id?: unknown;
11
+ }>;
12
+ 'https://api.openai.com/auth'?: {
13
+ chatgpt_account_id?: unknown;
14
+ chatgpt_plan_type?: unknown;
15
+ organizations?: Array<{
16
+ id?: unknown;
17
+ }>;
18
+ };
19
+ }
20
+ export declare class OAuthServiceError extends Error {
21
+ readonly code: PublicErrorDto['code'];
22
+ constructor(code: PublicErrorDto['code'], message: string);
23
+ }
24
+ export interface OAuthServiceOptions {
25
+ fetchFn?: FetchLike;
26
+ now?: () => number;
27
+ random?: (size: number) => Buffer;
28
+ logger?: Pick<Console, 'info' | 'warn'>;
29
+ /** Test seam; production always uses the five-minute compatibility default. */
30
+ loginTimeoutMs?: number;
31
+ }
32
+ export declare class OAuthService {
33
+ private readonly store;
34
+ private readonly fetchFn;
35
+ private readonly now;
36
+ private readonly random;
37
+ private readonly logger;
38
+ private readonly loginTimeoutMs;
39
+ private readonly loginEvents;
40
+ private readonly listeners;
41
+ private activeLogin;
42
+ private refreshPromise;
43
+ private lastLoginError;
44
+ private disposed;
45
+ constructor(store: TokenStore, options?: OAuthServiceOptions);
46
+ status(): Promise<OAuthStatusDto>;
47
+ startLogin(): Promise<LoginStartDto>;
48
+ cancelLogin(loginId: string): void;
49
+ subscribe(loginId: string, listener: LoginListener): (() => void) | null;
50
+ refresh(): Promise<OAuthStatusDto>;
51
+ logout(): Promise<void>;
52
+ credentials(forceRefresh?: boolean): Promise<StoredOAuthCredentials>;
53
+ dispose(): void;
54
+ private exchangeCode;
55
+ private refreshCredentials;
56
+ private performRefresh;
57
+ private loadAuthenticated;
58
+ private statusFromCredentials;
59
+ private completeLogin;
60
+ private failLogin;
61
+ private cancelActive;
62
+ private publish;
63
+ private assertAvailable;
64
+ }
65
+ export declare function buildAuthorizationUrl(verifier: string, state: string): string;
66
+ export declare function parseJwtClaims(token: string | undefined): OAuthClaims | undefined;
67
+ export declare function publicError(error: unknown, fallback?: PublicErrorDto['code']): PublicErrorDto;
68
+ export {};
69
+ //# sourceMappingURL=oauth-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-service.d.ts","sourceRoot":"","sources":["../../../src/host/oauth-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type GenerateOptions, type StreamChunk } from '@deepseek-ai/dsh-llm';
2
+ import { OAuthService } from './oauth-service.ts';
3
+ import type { AttachmentStore } from '@deepseek-ai/dsh-attachment';
4
+ type FetchLike = typeof fetch;
5
+ export interface ResponsesClientOptions {
6
+ fetchFn?: FetchLike;
7
+ onGenerationFinished?: () => void;
8
+ }
9
+ export declare class ResponsesClient {
10
+ private readonly oauth;
11
+ private readonly attachments;
12
+ private readonly fetchFn;
13
+ private readonly onGenerationFinished;
14
+ constructor(oauth: OAuthService, attachments: Pick<AttachmentStore, 'readImage'>, options?: ResponsesClientOptions);
15
+ stream(options: GenerateOptions): AsyncIterable<StreamChunk>;
16
+ private send;
17
+ private request;
18
+ }
19
+ export declare function parseResponsesStream(response: Response, signal?: AbortSignal, hiddenSandboxControls?: ReadonlySet<string>): AsyncIterable<StreamChunk>;
20
+ export {};
21
+ //# sourceMappingURL=responses-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses-client.d.ts","sourceRoot":"","sources":["../../../src/host/responses-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,WAAW,EAEjB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAElE,KAAK,SAAS,GAAG,OAAO,KAAK,CAAA;AAE7B,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAA;CAClC;AAED,qBAAa,eAAe;IAKxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAL9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAY;gBAG9B,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,EAChE,OAAO,GAAE,sBAA2B;IAM/B,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,aAAa,CAAC,WAAW,CAAC;YAYrD,IAAI;YAYJ,OAAO;CAsBtB;AAWD,wBAAuB,oBAAoB,CACzC,QAAQ,EAAE,QAAQ,EAClB,MAAM,CAAC,EAAE,WAAW,EACpB,qBAAqB,GAAE,WAAW,CAAC,MAAM,CAAa,GACrD,aAAa,CAAC,WAAW,CAAC,CA2M5B"}
@@ -0,0 +1,11 @@
1
+ import type { AttachmentStore } from '@deepseek-ai/dsh-attachment';
2
+ import type { GenerateOptions } from '@deepseek-ai/dsh-llm';
3
+ export interface ResponsesPayload extends Record<string, unknown> {
4
+ model: string;
5
+ input: Array<Record<string, unknown>>;
6
+ stream: true;
7
+ store: false;
8
+ }
9
+ export declare function hiddenSandboxControlToolNames(options: GenerateOptions): Set<string>;
10
+ export declare function buildResponsesPayload(options: GenerateOptions, attachments: Pick<AttachmentStore, 'readImage'>): Promise<ResponsesPayload>;
11
+ //# sourceMappingURL=responses-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses-mapper.d.ts","sourceRoot":"","sources":["../../../src/host/responses-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,6BAA6B,CAAA;AACtF,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,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,GAC9C,OAAO,CAAC,gBAAgB,CAAC,CAsF3B"}
@@ -0,0 +1,5 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ import { OAuthService } from './oauth-service.ts';
3
+ import { UsageService } from './usage-service.ts';
4
+ export declare function registerRoutes(ctx: Context, oauth: OAuthService, usage: UsageService): () => void;
5
+ //# sourceMappingURL=routes.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,10 @@
1
+ import type { TokenStore, StoredOAuthCredentials } from './token-store.ts';
2
+ export declare function defaultDpapiCredentialPath(): string;
3
+ export declare class WindowsDpapiTokenStore implements TokenStore {
4
+ private readonly path;
5
+ constructor(path?: string);
6
+ load(): Promise<StoredOAuthCredentials | null>;
7
+ save(value: StoredOAuthCredentials): Promise<void>;
8
+ clear(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=token-store-windows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-store-windows.d.ts","sourceRoot":"","sources":["../../../src/host/token-store-windows.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAiC1E,wBAAgB,0BAA0B,IAAI,MAAM,CAGnD;AAED,qBAAa,sBAAuB,YAAW,UAAU;IAC3C,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,SAA+B;IAK1D,IAAI,IAAI,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAW9C,IAAI,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B"}
@@ -0,0 +1,23 @@
1
+ export interface StoredOAuthCredentials {
2
+ accessToken: string;
3
+ refreshToken: string;
4
+ idToken?: string;
5
+ expiresAt: number;
6
+ accountId?: string;
7
+ email?: string;
8
+ planType?: string;
9
+ }
10
+ export interface TokenStore {
11
+ load(): Promise<StoredOAuthCredentials | null>;
12
+ save(value: StoredOAuthCredentials): Promise<void>;
13
+ clear(): Promise<void>;
14
+ }
15
+ /** Test seam and non-persistent development store. Never used by apply(). */
16
+ export declare class MemoryTokenStore implements TokenStore {
17
+ private value;
18
+ load(): Promise<StoredOAuthCredentials | null>;
19
+ save(value: StoredOAuthCredentials): Promise<void>;
20
+ clear(): Promise<void>;
21
+ }
22
+ export declare function parseStoredCredentials(value: unknown): StoredOAuthCredentials;
23
+ //# sourceMappingURL=token-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-store.d.ts","sourceRoot":"","sources":["../../../src/host/token-store.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,IAAI,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAA;IAC9C,IAAI,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED,6EAA6E;AAC7E,qBAAa,gBAAiB,YAAW,UAAU;IACjD,OAAO,CAAC,KAAK,CAAsC;IAE7C,IAAI,IAAI,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAI9C,IAAI,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAqB7E"}
@@ -0,0 +1,33 @@
1
+ import type { ConnectionTestDto, PublicErrorDto, QuotaBucketDto, QuotaStatusDto } from '../shared/contracts.ts';
2
+ import { OAuthService } from './oauth-service.ts';
3
+ type FetchLike = typeof fetch;
4
+ export interface UsageServiceOptions {
5
+ fetchFn?: FetchLike;
6
+ now?: () => number;
7
+ }
8
+ export declare class UsageService {
9
+ private readonly oauth;
10
+ private readonly fetchFn;
11
+ private readonly now;
12
+ private cache;
13
+ private lastUpstreamAt;
14
+ private blockedUntil;
15
+ private invalidated;
16
+ private inFlight;
17
+ constructor(oauth: OAuthService, options?: UsageServiceOptions);
18
+ status(authenticated: boolean, force?: boolean): Promise<QuotaStatusDto>;
19
+ invalidate(): void;
20
+ clear(): void;
21
+ testConnection(): Promise<ConnectionTestDto>;
22
+ private refreshUpstream;
23
+ private fetch;
24
+ private fromCache;
25
+ private failure;
26
+ }
27
+ export declare class UsageServiceError extends Error {
28
+ readonly publicError: PublicErrorDto;
29
+ constructor(publicError: PublicErrorDto);
30
+ }
31
+ export declare function mapCodexUsage(value: unknown): QuotaBucketDto[];
32
+ export {};
33
+ //# sourceMappingURL=usage-service.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,5 @@
1
+ import type { StoredOAuthCredentials } from './token-store.ts';
2
+ export declare function codexHeaders(credentials: StoredOAuthCredentials, sessionId?: string): Record<string, string>;
3
+ export declare function stableSessionId(value: string | undefined): string;
4
+ export declare function retryAfterMs(headers: Headers): number | undefined;
5
+ //# sourceMappingURL=wire-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire-auth.d.ts","sourceRoot":"","sources":["../../../src/host/wire-auth.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAE9D,wBAAgB,YAAY,CAAC,WAAW,EAAE,sBAAsB,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAS5G;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGjE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAQjE"}
@@ -0,0 +1,9 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ export declare const inject: string[];
3
+ export declare function apply(ctx: Context): void;
4
+ export { OAuthService } from './host/oauth-service.ts';
5
+ export { CodexChatGptAdapter } from './host/adapter.ts';
6
+ export { ResponsesClient, parseResponsesStream } from './host/responses-client.ts';
7
+ export { UsageService, mapCodexUsage } from './host/usage-service.ts';
8
+ export type { TokenStore, StoredOAuthCredentials } from './host/token-store.ts';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAWlD,eAAO,MAAM,MAAM,UAAsC,CAAA;AAEzD,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAiBxC;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,YAAY,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,77 @@
1
+ export interface SanitizedAccountDto {
2
+ email: string | null;
3
+ planType: string | null;
4
+ accountIdSuffix: string | null;
5
+ tokenExpiresAt: number;
6
+ }
7
+ export interface PluginStatusDto {
8
+ authenticated: boolean;
9
+ account: SanitizedAccountDto | null;
10
+ storage: {
11
+ kind: 'windows-dpapi';
12
+ encrypted: true;
13
+ };
14
+ login: {
15
+ active: boolean;
16
+ loginId: string | null;
17
+ expiresAt: number | null;
18
+ };
19
+ quota: QuotaStatusDto;
20
+ error?: PublicErrorDto;
21
+ }
22
+ export type OAuthStatusDto = Omit<PluginStatusDto, 'quota'>;
23
+ export interface QuotaWindowDto {
24
+ usedPercent: number;
25
+ windowDurationMins: number | null;
26
+ resetsAt: number | null;
27
+ }
28
+ export interface QuotaBucketDto {
29
+ id: 'codex' | 'code-review';
30
+ name: string;
31
+ planType: string | null;
32
+ primary: QuotaWindowDto | null;
33
+ secondary: QuotaWindowDto | null;
34
+ }
35
+ export interface QuotaStatusDto {
36
+ state: 'signed-out' | 'empty' | 'ready' | 'stale' | 'error';
37
+ buckets: QuotaBucketDto[];
38
+ fetchedAt: number | null;
39
+ stale: boolean;
40
+ error?: PublicErrorDto;
41
+ }
42
+ export interface ConnectionTestDto {
43
+ connected: true;
44
+ latencyMs: number;
45
+ checkedAt: number;
46
+ }
47
+ export interface LoginStartDto {
48
+ loginId: string;
49
+ authUrl: string;
50
+ expiresAt: number;
51
+ }
52
+ export type LoginEventDto = {
53
+ type: 'pending';
54
+ loginId: string;
55
+ } | {
56
+ type: 'completed';
57
+ loginId: string;
58
+ } | {
59
+ type: 'cancelled';
60
+ loginId: string;
61
+ } | {
62
+ type: 'failed';
63
+ loginId: string;
64
+ error: PublicErrorDto;
65
+ };
66
+ export interface PublicErrorDto {
67
+ code: 'bad-request' | 'csrf-rejected' | 'login-active' | 'login-cancelled' | 'login-expired' | 'oauth-callback-invalid' | 'oauth-token-exchange-failed' | 'not-authenticated' | 'refresh-failed' | 'storage-failed' | 'connection-failed' | 'quota-failed' | 'rate-limited' | 'internal';
68
+ message: string;
69
+ }
70
+ export type ApiEnvelope<T> = {
71
+ ok: true;
72
+ value: T;
73
+ } | {
74
+ ok: false;
75
+ error: PublicErrorDto;
76
+ };
77
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/shared/contracts.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,OAAO,CAAA;IACtB,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAA;IACnC,OAAO,EAAE;QACP,IAAI,EAAE,eAAe,CAAA;QACrB,SAAS,EAAE,IAAI,CAAA;KAChB,CAAA;IACD,KAAK,EAAE;QACL,MAAM,EAAE,OAAO,CAAA;QACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;QACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KACzB,CAAA;IACD,KAAK,EAAE,cAAc,CAAA;IACrB,KAAK,CAAC,EAAE,cAAc,CAAA;CACvB;AAED,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;AAE3D,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,GAAG,aAAa,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAA;IAC9B,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;IAC3D,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,cAAc,CAAA;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,CAAA;AAE9D,MAAM,WAAW,cAAc;IAC7B,IAAI,EACA,aAAa,GACb,eAAe,GACf,cAAc,GACd,iBAAiB,GACjB,eAAe,GACf,wBAAwB,GACxB,6BAA6B,GAC7B,mBAAmB,GACnB,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,cAAc,GACd,cAAc,GACd,UAAU,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACtB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,CAAA"}