@code-yeongyu/senpi-ai 2026.9.22 → 2026.9.23-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 (120) hide show
  1. package/README.md +3 -3
  2. package/dist/api/anthropic-messages.js +2 -2
  3. package/dist/api/anthropic-messages.js.map +1 -1
  4. package/dist/api/azure-openai-responses.js +1 -1
  5. package/dist/api/azure-openai-responses.js.map +1 -1
  6. package/dist/api/bedrock-converse-stream.js +1 -1
  7. package/dist/api/bedrock-converse-stream.js.map +1 -1
  8. package/dist/api/openai-codex-responses/fallback-state.d.ts +3 -3
  9. package/dist/api/openai-codex-responses/fallback-state.d.ts.map +1 -1
  10. package/dist/api/openai-codex-responses/fallback-state.js.map +1 -1
  11. package/dist/api/openai-codex-responses.d.ts +5 -5
  12. package/dist/api/openai-codex-responses.d.ts.map +1 -1
  13. package/dist/api/openai-codex-responses.js +10 -10
  14. package/dist/api/openai-codex-responses.js.map +1 -1
  15. package/dist/api/openai-prompt-cache.d.ts +1 -1
  16. package/dist/api/openai-prompt-cache.d.ts.map +1 -1
  17. package/dist/api/openai-prompt-cache.js +1 -1
  18. package/dist/api/openai-prompt-cache.js.map +1 -1
  19. package/dist/api/openai-responses-shared.js +1 -1
  20. package/dist/api/openai-responses-shared.js.map +1 -1
  21. package/dist/api/openai-responses.js +1 -1
  22. package/dist/api/openai-responses.js.map +1 -1
  23. package/dist/auth/oauth/{openai-codex.d.ts → chatgpt-subscription.d.ts} +3 -3
  24. package/dist/auth/oauth/chatgpt-subscription.d.ts.map +1 -0
  25. package/dist/auth/oauth/{openai-codex.js → chatgpt-subscription.js} +35 -35
  26. package/dist/auth/oauth/chatgpt-subscription.js.map +1 -0
  27. package/dist/auth/oauth/load.d.ts +2 -2
  28. package/dist/auth/oauth/load.d.ts.map +1 -1
  29. package/dist/auth/oauth/load.js +4 -3
  30. package/dist/auth/oauth/load.js.map +1 -1
  31. package/dist/auth/pool/slots.d.ts +7 -0
  32. package/dist/auth/pool/slots.d.ts.map +1 -1
  33. package/dist/auth/pool/slots.js +20 -2
  34. package/dist/auth/pool/slots.js.map +1 -1
  35. package/dist/bun-oauth.js +2 -2
  36. package/dist/bun-oauth.js.map +1 -1
  37. package/dist/compat.d.ts +1 -0
  38. package/dist/compat.d.ts.map +1 -1
  39. package/dist/compat.js +1 -0
  40. package/dist/compat.js.map +1 -1
  41. package/dist/image-models.generated.d.ts +15 -0
  42. package/dist/image-models.generated.d.ts.map +1 -1
  43. package/dist/image-models.generated.js +15 -0
  44. package/dist/image-models.generated.js.map +1 -1
  45. package/dist/index.d.ts +3 -2
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +2 -1
  48. package/dist/index.js.map +1 -1
  49. package/dist/legacy-provider-ids.d.ts +28 -0
  50. package/dist/legacy-provider-ids.d.ts.map +1 -0
  51. package/dist/legacy-provider-ids.js +82 -0
  52. package/dist/legacy-provider-ids.js.map +1 -0
  53. package/dist/models.d.ts.map +1 -1
  54. package/dist/models.generated.d.ts +2 -2
  55. package/dist/models.generated.d.ts.map +1 -1
  56. package/dist/models.generated.js +2 -2
  57. package/dist/models.generated.js.map +1 -1
  58. package/dist/models.js +4 -2
  59. package/dist/models.js.map +1 -1
  60. package/dist/providers/all.d.ts.map +1 -1
  61. package/dist/providers/all.js +2 -2
  62. package/dist/providers/all.js.map +1 -1
  63. package/dist/providers/chatgpt-subscription.d.ts +3 -0
  64. package/dist/providers/chatgpt-subscription.d.ts.map +1 -0
  65. package/dist/providers/chatgpt-subscription.js +22 -0
  66. package/dist/providers/chatgpt-subscription.js.map +1 -0
  67. package/dist/providers/chatgpt-subscription.models.d.ts +4 -0
  68. package/dist/providers/chatgpt-subscription.models.d.ts.map +1 -0
  69. package/dist/providers/chatgpt-subscription.models.js +6 -0
  70. package/dist/providers/chatgpt-subscription.models.js.map +1 -0
  71. package/dist/providers/data/.manifest.json +1 -1
  72. package/dist/providers/data/amazon-bedrock.json +1 -1
  73. package/dist/providers/data/anthropic.json +1 -1
  74. package/dist/providers/data/azure-openai-responses.json +1 -1
  75. package/dist/providers/data/chatgpt-subscription.json +1 -0
  76. package/dist/providers/data/cloudflare-workers-ai.json +1 -1
  77. package/dist/providers/data/github-copilot.json +1 -1
  78. package/dist/providers/data/openai.json +1 -1
  79. package/dist/providers/data/opencode-go.json +1 -1
  80. package/dist/providers/data/opencode.json +1 -1
  81. package/dist/providers/data/opengateway.json +1 -1
  82. package/dist/providers/data/openrouter.json +1 -1
  83. package/dist/providers/data/venice.json +1 -1
  84. package/dist/providers/data/vercel-ai-gateway.json +1 -1
  85. package/dist/providers/data/xai.json +1 -1
  86. package/dist/providers/data/xiaomi-token-plan-ams.json +1 -1
  87. package/dist/providers/data/xiaomi-token-plan-cn.json +1 -1
  88. package/dist/providers/data/xiaomi-token-plan-sgp.json +1 -1
  89. package/dist/providers/data/xiaomi.json +1 -1
  90. package/dist/types.d.ts +1 -1
  91. package/dist/types.d.ts.map +1 -1
  92. package/dist/types.js.map +1 -1
  93. package/dist/utils/{openai-codex-auth.d.ts → chatgpt-subscription-auth.d.ts} +3 -3
  94. package/dist/utils/chatgpt-subscription-auth.d.ts.map +1 -0
  95. package/dist/utils/{openai-codex-auth.js → chatgpt-subscription-auth.js} +4 -4
  96. package/dist/utils/chatgpt-subscription-auth.js.map +1 -0
  97. package/dist/utils/prompt-cache-ttl.d.ts.map +1 -1
  98. package/dist/utils/prompt-cache-ttl.js +6 -2
  99. package/dist/utils/prompt-cache-ttl.js.map +1 -1
  100. package/dist/utils/retry-profile/classifiers.d.ts.map +1 -1
  101. package/dist/utils/retry-profile/classifiers.js +5 -1
  102. package/dist/utils/retry-profile/classifiers.js.map +1 -1
  103. package/dist/utils/retry.d.ts +16 -0
  104. package/dist/utils/retry.d.ts.map +1 -1
  105. package/dist/utils/retry.js +21 -0
  106. package/dist/utils/retry.js.map +1 -1
  107. package/package.json +2 -2
  108. package/dist/auth/oauth/openai-codex.d.ts.map +0 -1
  109. package/dist/auth/oauth/openai-codex.js.map +0 -1
  110. package/dist/providers/data/openai-codex.json +0 -1
  111. package/dist/providers/openai-codex.d.ts +0 -3
  112. package/dist/providers/openai-codex.d.ts.map +0 -1
  113. package/dist/providers/openai-codex.js +0 -22
  114. package/dist/providers/openai-codex.js.map +0 -1
  115. package/dist/providers/openai-codex.models.d.ts +0 -4
  116. package/dist/providers/openai-codex.models.d.ts.map +0 -1
  117. package/dist/providers/openai-codex.models.js +0 -6
  118. package/dist/providers/openai-codex.models.js.map +0 -1
  119. package/dist/utils/openai-codex-auth.d.ts.map +0 -1
  120. package/dist/utils/openai-codex-auth.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"fallback-state.d.ts","sourceRoot":"","sources":["../../../src/api/openai-codex-responses/fallback-state.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oCAAoC,QAAS,CAAC;AAE3D,MAAM,WAAW,8BAA8B;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAKD,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,MAAM,GAAG,8BAA8B,CAkBhG;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,8BAA8B,GAAG,SAAS,CAGpG;AAED,wBAAgB,2BAA2B,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAQpE;AAED,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAcnF;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAK9E;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAQ1F"}
1
+ {"version":3,"file":"fallback-state.d.ts","sourceRoot":"","sources":["../../../src/api/openai-codex-responses/fallback-state.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oCAAoC,QAAS,CAAC;AAE3D,MAAM,WAAW,sCAAsC;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAKD,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,MAAM,GAAG,sCAAsC,CAkBxG;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,sCAAsC,GAAG,SAAS,CAG5G;AAED,wBAAgB,2BAA2B,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAQpE;AAED,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAcnF;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAK9E;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAQ1F"}
@@ -1 +1 @@
1
- {"version":3,"file":"fallback-state.js","sourceRoot":"","sources":["../../../src/api/openai-codex-responses/fallback-state.ts"],"names":[],"mappings":"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","sourcesContent":["import { formatThrownValue } from \"../../utils/diagnostics.ts\";\n\nexport const CODEX_WEBSOCKET_FALLBACK_COOLDOWN_MS = 60_000;\n\nexport interface OpenAICodexWebSocketDebugStats {\n\trequests: number;\n\tconnectionsCreated: number;\n\tconnectionsReused: number;\n\tcachedContextRequests: number;\n\tstoreTrueRequests: number;\n\tfullContextRequests: number;\n\tdeltaRequests: number;\n\tlastInputItems: number;\n\tlastDeltaInputItems?: number;\n\tlastPreviousResponseId?: string;\n\twebsocketFailures: number;\n\tsseFallbacks: number;\n\twebsocketFallbackActive?: boolean;\n\tlastWebSocketError?: string;\n}\n\nconst websocketDebugStats = new Map<string, OpenAICodexWebSocketDebugStats>();\nconst websocketSseFallbackUntil = new Map<string, number>();\n\nexport function getOrCreateWebSocketDebugStats(sessionId: string): OpenAICodexWebSocketDebugStats {\n\tlet stats = websocketDebugStats.get(sessionId);\n\tif (!stats) {\n\t\tstats = {\n\t\t\trequests: 0,\n\t\t\tconnectionsCreated: 0,\n\t\t\tconnectionsReused: 0,\n\t\t\tcachedContextRequests: 0,\n\t\t\tstoreTrueRequests: 0,\n\t\t\tfullContextRequests: 0,\n\t\t\tdeltaRequests: 0,\n\t\t\tlastInputItems: 0,\n\t\t\twebsocketFailures: 0,\n\t\t\tsseFallbacks: 0,\n\t\t};\n\t\twebsocketDebugStats.set(sessionId, stats);\n\t}\n\treturn stats;\n}\n\nexport function getWebSocketDebugStats(sessionId: string): OpenAICodexWebSocketDebugStats | undefined {\n\tconst stats = websocketDebugStats.get(sessionId);\n\treturn stats ? { ...stats } : undefined;\n}\n\nexport function clearWebSocketFallbackState(sessionId?: string): void {\n\tif (sessionId) {\n\t\twebsocketDebugStats.delete(sessionId);\n\t\twebsocketSseFallbackUntil.delete(sessionId);\n\t\treturn;\n\t}\n\twebsocketDebugStats.clear();\n\twebsocketSseFallbackUntil.clear();\n}\n\nexport function isWebSocketSseFallbackActive(sessionId: string | undefined): boolean {\n\tif (!sessionId) return false;\n\tconst fallbackUntil = websocketSseFallbackUntil.get(sessionId);\n\tif (fallbackUntil === undefined) return false;\n\n\tconst stats = websocketDebugStats.get(sessionId);\n\tif (fallbackUntil > Date.now()) {\n\t\tif (stats) stats.websocketFallbackActive = true;\n\t\treturn true;\n\t}\n\n\twebsocketSseFallbackUntil.delete(sessionId);\n\tif (stats) stats.websocketFallbackActive = false;\n\treturn false;\n}\n\nexport function recordWebSocketSseFallback(sessionId: string | undefined): void {\n\tif (!sessionId) return;\n\tconst stats = getOrCreateWebSocketDebugStats(sessionId);\n\tstats.sseFallbacks++;\n\tstats.websocketFallbackActive = true;\n}\n\nexport function recordWebSocketFailure(sessionId: string | undefined, error: unknown): void {\n\tif (!sessionId) return;\n\twebsocketSseFallbackUntil.set(sessionId, Date.now() + CODEX_WEBSOCKET_FALLBACK_COOLDOWN_MS);\n\n\tconst stats = getOrCreateWebSocketDebugStats(sessionId);\n\tstats.websocketFailures++;\n\tstats.lastWebSocketError = formatThrownValue(error);\n\tstats.websocketFallbackActive = true;\n}\n"]}
1
+ {"version":3,"file":"fallback-state.js","sourceRoot":"","sources":["../../../src/api/openai-codex-responses/fallback-state.ts"],"names":[],"mappings":"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","sourcesContent":["import { formatThrownValue } from \"../../utils/diagnostics.ts\";\n\nexport const CODEX_WEBSOCKET_FALLBACK_COOLDOWN_MS = 60_000;\n\nexport interface ChatGptSubscriptionWebSocketDebugStats {\n\trequests: number;\n\tconnectionsCreated: number;\n\tconnectionsReused: number;\n\tcachedContextRequests: number;\n\tstoreTrueRequests: number;\n\tfullContextRequests: number;\n\tdeltaRequests: number;\n\tlastInputItems: number;\n\tlastDeltaInputItems?: number;\n\tlastPreviousResponseId?: string;\n\twebsocketFailures: number;\n\tsseFallbacks: number;\n\twebsocketFallbackActive?: boolean;\n\tlastWebSocketError?: string;\n}\n\nconst websocketDebugStats = new Map<string, ChatGptSubscriptionWebSocketDebugStats>();\nconst websocketSseFallbackUntil = new Map<string, number>();\n\nexport function getOrCreateWebSocketDebugStats(sessionId: string): ChatGptSubscriptionWebSocketDebugStats {\n\tlet stats = websocketDebugStats.get(sessionId);\n\tif (!stats) {\n\t\tstats = {\n\t\t\trequests: 0,\n\t\t\tconnectionsCreated: 0,\n\t\t\tconnectionsReused: 0,\n\t\t\tcachedContextRequests: 0,\n\t\t\tstoreTrueRequests: 0,\n\t\t\tfullContextRequests: 0,\n\t\t\tdeltaRequests: 0,\n\t\t\tlastInputItems: 0,\n\t\t\twebsocketFailures: 0,\n\t\t\tsseFallbacks: 0,\n\t\t};\n\t\twebsocketDebugStats.set(sessionId, stats);\n\t}\n\treturn stats;\n}\n\nexport function getWebSocketDebugStats(sessionId: string): ChatGptSubscriptionWebSocketDebugStats | undefined {\n\tconst stats = websocketDebugStats.get(sessionId);\n\treturn stats ? { ...stats } : undefined;\n}\n\nexport function clearWebSocketFallbackState(sessionId?: string): void {\n\tif (sessionId) {\n\t\twebsocketDebugStats.delete(sessionId);\n\t\twebsocketSseFallbackUntil.delete(sessionId);\n\t\treturn;\n\t}\n\twebsocketDebugStats.clear();\n\twebsocketSseFallbackUntil.clear();\n}\n\nexport function isWebSocketSseFallbackActive(sessionId: string | undefined): boolean {\n\tif (!sessionId) return false;\n\tconst fallbackUntil = websocketSseFallbackUntil.get(sessionId);\n\tif (fallbackUntil === undefined) return false;\n\n\tconst stats = websocketDebugStats.get(sessionId);\n\tif (fallbackUntil > Date.now()) {\n\t\tif (stats) stats.websocketFallbackActive = true;\n\t\treturn true;\n\t}\n\n\twebsocketSseFallbackUntil.delete(sessionId);\n\tif (stats) stats.websocketFallbackActive = false;\n\treturn false;\n}\n\nexport function recordWebSocketSseFallback(sessionId: string | undefined): void {\n\tif (!sessionId) return;\n\tconst stats = getOrCreateWebSocketDebugStats(sessionId);\n\tstats.sseFallbacks++;\n\tstats.websocketFallbackActive = true;\n}\n\nexport function recordWebSocketFailure(sessionId: string | undefined, error: unknown): void {\n\tif (!sessionId) return;\n\twebsocketSseFallbackUntil.set(sessionId, Date.now() + CODEX_WEBSOCKET_FALLBACK_COOLDOWN_MS);\n\n\tconst stats = getOrCreateWebSocketDebugStats(sessionId);\n\tstats.websocketFailures++;\n\tstats.lastWebSocketError = formatThrownValue(error);\n\tstats.websocketFallbackActive = true;\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import type { ResponseCreateParamsStreaming } from "openai/resources/responses/responses.js";
2
2
  import type { SimpleStreamOptions, StreamFunction, StreamOptions } from "../types.ts";
3
- import { type OpenAICodexWebSocketDebugStats } from "./openai-codex-responses/fallback-state.ts";
3
+ import { type ChatGptSubscriptionWebSocketDebugStats } from "./openai-codex-responses/fallback-state.ts";
4
4
  import { type CodexReasoningSummaryInput } from "./openai-codex-responses/reasoning.ts";
5
5
  export interface OpenAICodexResponsesOptions extends StreamOptions {
6
6
  reasoningEffort?: "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
@@ -11,8 +11,8 @@ export interface OpenAICodexResponsesOptions extends StreamOptions {
11
11
  }
12
12
  export declare const stream: StreamFunction<"openai-codex-responses", OpenAICodexResponsesOptions>;
13
13
  export declare const streamSimple: StreamFunction<"openai-codex-responses", SimpleStreamOptions>;
14
- export type { OpenAICodexWebSocketDebugStats } from "./openai-codex-responses/fallback-state.ts";
15
- export declare function getOpenAICodexWebSocketDebugStats(sessionId: string): OpenAICodexWebSocketDebugStats | undefined;
16
- export declare function resetOpenAICodexWebSocketDebugStats(sessionId?: string): void;
17
- export declare function closeOpenAICodexWebSocketSessions(sessionId?: string): void;
14
+ export type { ChatGptSubscriptionWebSocketDebugStats } from "./openai-codex-responses/fallback-state.ts";
15
+ export declare function getChatGptSubscriptionWebSocketDebugStats(sessionId: string): ChatGptSubscriptionWebSocketDebugStats | undefined;
16
+ export declare function resetChatGptSubscriptionWebSocketDebugStats(sessionId?: string): void;
17
+ export declare function closeChatGptSubscriptionWebSocketSessions(sessionId?: string): void;
18
18
  //# sourceMappingURL=openai-codex-responses.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai-codex-responses.d.ts","sourceRoot":"","sources":["../../src/api/openai-codex-responses.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEX,6BAA6B,EAG7B,MAAM,yCAAyC,CAAC;AAmBjD,OAAO,KAAK,EAOX,mBAAmB,EACnB,cAAc,EACd,aAAa,EAEb,MAAM,aAAa,CAAC;AAgBrB,OAAO,EAKN,KAAK,8BAA8B,EAGnC,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAuB,KAAK,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AA0C7G,MAAM,WAAW,2BAA4B,SAAQ,aAAa;IACjE,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IACnF,gBAAgB,CAAC,EAAE,0BAA0B,CAAC;IAC9C,WAAW,CAAC,EAAE,6BAA6B,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC;IACrE,aAAa,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;CAC1C;AAmID,eAAO,MAAM,MAAM,EAAE,cAAc,CAAC,wBAAwB,EAAE,2BAA2B,CAsRxF,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,wBAAwB,EAAE,mBAAmB,CA2BtF,CAAC;AA0YF,YAAY,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAIjG,wBAAgB,iCAAiC,CAAC,SAAS,EAAE,MAAM,GAAG,8BAA8B,GAAG,SAAS,CAE/G;AAED,wBAAgB,mCAAmC,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAE5E;AAED,wBAAgB,iCAAiC,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAgB1E"}
1
+ {"version":3,"file":"openai-codex-responses.d.ts","sourceRoot":"","sources":["../../src/api/openai-codex-responses.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEX,6BAA6B,EAG7B,MAAM,yCAAyC,CAAC;AAmBjD,OAAO,KAAK,EAOX,mBAAmB,EACnB,cAAc,EACd,aAAa,EAEb,MAAM,aAAa,CAAC;AAgBrB,OAAO,EACN,KAAK,sCAAsC,EAO3C,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAuB,KAAK,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AA0C7G,MAAM,WAAW,2BAA4B,SAAQ,aAAa;IACjE,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IACnF,gBAAgB,CAAC,EAAE,0BAA0B,CAAC;IAC9C,WAAW,CAAC,EAAE,6BAA6B,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC;IACrE,aAAa,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;CAC1C;AAmID,eAAO,MAAM,MAAM,EAAE,cAAc,CAAC,wBAAwB,EAAE,2BAA2B,CAsRxF,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,wBAAwB,EAAE,mBAAmB,CA2BtF,CAAC;AA0YF,YAAY,EAAE,sCAAsC,EAAE,MAAM,4CAA4C,CAAC;AAIzG,wBAAgB,yCAAyC,CACxD,SAAS,EAAE,MAAM,GACf,sCAAsC,GAAG,SAAS,CAEpD;AAED,wBAAgB,2CAA2C,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAEpF;AAED,wBAAgB,yCAAyC,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAgBlF"}
@@ -10,19 +10,19 @@ const _os = loadNodeOs();
10
10
  import { clampThinkingLevel, supportsMax, supportsXhigh } from "../models.js";
11
11
  import { registerSessionResourceCleanup } from "../session-resources.js";
12
12
  import { combineAbortSignals } from "../utils/abort-signals.js";
13
+ import { extractChatGptSubscriptionAccountId } from "../utils/chatgpt-subscription-auth.js";
13
14
  import { splitDeferredTools } from "../utils/deferred-tools.js";
14
15
  import { appendAssistantMessageDiagnostic, createAssistantMessageDiagnostic, formatThrownValue, } from "../utils/diagnostics.js";
15
16
  import { formatProviderError, normalizeProviderError } from "../utils/error-body.js";
16
17
  import { AssistantMessageEventStream } from "../utils/event-stream.js";
17
18
  import { headersToRecord } from "../utils/headers.js";
18
19
  import { resolveHttpProxyUrlForTarget } from "../utils/node-http-proxy.js";
19
- import { extractOpenAiCodexAccountId } from "../utils/openai-codex-auth.js";
20
20
  import { appendRetryAfterMsMarker, extract429RetryAfterMs } from "../utils/retry-hint.js";
21
21
  import { uuidv7 } from "../utils/uuid.js";
22
22
  import { createGrammarToolInputProperties } from "./constrained-sampling.js";
23
23
  import { clearWebSocketFallbackState, getOrCreateWebSocketDebugStats, getWebSocketDebugStats, isWebSocketSseFallbackActive, recordWebSocketFailure, recordWebSocketSseFallback, } from "./openai-codex-responses/fallback-state.js";
24
24
  import { buildCodexReasoning } from "./openai-codex-responses/reasoning.js";
25
- import { applyOpenAICodexCacheAffinityHeaders, clampOpenAIPromptCacheKey } from "./openai-prompt-cache.js";
25
+ import { applyChatGptSubscriptionCacheAffinityHeaders, clampOpenAIPromptCacheKey } from "./openai-prompt-cache.js";
26
26
  import { convertResponsesMessages, convertResponsesTools, processResponsesStream } from "./openai-responses-shared.js";
27
27
  import { applyExtraBody, buildBaseOptions, clampMaxForOpenAI, OPENAI_RESPONSES_RESERVED_BODY_KEYS, } from "./simple-options.js";
28
28
  import { startWebSocketLiveness } from "./websocket-liveness.js";
@@ -38,7 +38,7 @@ const DEFAULT_WEBSOCKET_CONNECT_TIMEOUT_MS = 15_000;
38
38
  // The Codex backend accepts zstd-compressed request bodies on the SSE responses
39
39
  // endpoint (the same endpoint the official Codex client compresses against).
40
40
  const REQUEST_COMPRESSION_ZSTD_LEVEL = 3;
41
- const CODEX_TOOL_CALL_PROVIDERS = new Set(["openai", "openai-codex", "opencode"]);
41
+ const CODEX_TOOL_CALL_PROVIDERS = new Set(["openai", "chatgpt-subscription", "opencode"]);
42
42
  const CODEX_PREVIOUS_RESPONSE_STALE_CODES = new Set(["codex_previous_response_stale"]);
43
43
  const WEBSOCKET_CONNECTION_LIMIT_REACHED_CODE = "websocket_connection_limit_reached";
44
44
  const PREVIOUS_RESPONSE_NOT_FOUND_CODE = "previous_response_not_found";
@@ -675,13 +675,13 @@ const OPENAI_BETA_RESPONSES_WEBSOCKETS = "responses_websockets=2026-02-06";
675
675
  const SESSION_WEBSOCKET_CACHE_TTL_MS = 5 * 60 * 1000;
676
676
  const SESSION_WEBSOCKET_MAX_AGE_MS = 55 * 60 * 1000;
677
677
  const websocketSessionCache = new Map();
678
- export function getOpenAICodexWebSocketDebugStats(sessionId) {
678
+ export function getChatGptSubscriptionWebSocketDebugStats(sessionId) {
679
679
  return getWebSocketDebugStats(sessionId);
680
680
  }
681
- export function resetOpenAICodexWebSocketDebugStats(sessionId) {
681
+ export function resetChatGptSubscriptionWebSocketDebugStats(sessionId) {
682
682
  clearWebSocketFallbackState(sessionId);
683
683
  }
684
- export function closeOpenAICodexWebSocketSessions(sessionId) {
684
+ export function closeChatGptSubscriptionWebSocketSessions(sessionId) {
685
685
  const closeEntry = (entry) => {
686
686
  unparkSessionWebSocket(entry);
687
687
  closeWebSocketSilently(entry.socket, 1000, "debug_close");
@@ -700,7 +700,7 @@ export function closeOpenAICodexWebSocketSessions(sessionId) {
700
700
  websocketSessionCache.clear();
701
701
  clearWebSocketFallbackState();
702
702
  }
703
- registerSessionResourceCleanup(closeOpenAICodexWebSocketSessions);
703
+ registerSessionResourceCleanup(closeChatGptSubscriptionWebSocketSessions);
704
704
  let _cachedWebsocket = null;
705
705
  async function getWebSocketConstructor(env) {
706
706
  if (!env && _cachedWebsocket)
@@ -1277,7 +1277,7 @@ async function parseErrorResponse(response) {
1277
1277
  // Auth & Headers
1278
1278
  // ============================================================================
1279
1279
  function extractAccountId(token) {
1280
- return extractOpenAiCodexAccountId(token);
1280
+ return extractChatGptSubscriptionAccountId(token);
1281
1281
  }
1282
1282
  function buildBaseCodexHeaders(initHeaders, additionalHeaders, accountId, token) {
1283
1283
  const headers = new Headers(initHeaders);
@@ -1307,7 +1307,7 @@ function buildSSEHeaders(initHeaders, additionalHeaders, accountId, token, sessi
1307
1307
  headers.set("OpenAI-Beta", "responses=experimental");
1308
1308
  headers.set("accept", "text/event-stream");
1309
1309
  headers.set("content-type", "application/json");
1310
- applyOpenAICodexCacheAffinityHeaders(headers, sessionId);
1310
+ applyChatGptSubscriptionCacheAffinityHeaders(headers, sessionId);
1311
1311
  return headers;
1312
1312
  }
1313
1313
  function buildWebSocketHeaders(initHeaders, additionalHeaders, accountId, token, requestId) {
@@ -1317,7 +1317,7 @@ function buildWebSocketHeaders(initHeaders, additionalHeaders, accountId, token,
1317
1317
  headers.delete("OpenAI-Beta");
1318
1318
  headers.delete("openai-beta");
1319
1319
  headers.set("OpenAI-Beta", OPENAI_BETA_RESPONSES_WEBSOCKETS);
1320
- applyOpenAICodexCacheAffinityHeaders(headers, requestId);
1320
+ applyChatGptSubscriptionCacheAffinityHeaders(headers, requestId);
1321
1321
  return headers;
1322
1322
  }
1323
1323
  //# sourceMappingURL=openai-codex-responses.js.map