@earendil-works/pi-ai 0.80.6 → 0.80.8

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 (252) hide show
  1. package/README.md +79 -24
  2. package/dist/api/anthropic-messages.d.ts.map +1 -1
  3. package/dist/api/anthropic-messages.js +95 -46
  4. package/dist/api/anthropic-messages.js.map +1 -1
  5. package/dist/api/bedrock-converse-stream.d.ts.map +1 -1
  6. package/dist/api/bedrock-converse-stream.js +14 -7
  7. package/dist/api/bedrock-converse-stream.js.map +1 -1
  8. package/dist/api/lazy.d.ts.map +1 -1
  9. package/dist/api/lazy.js +9 -10
  10. package/dist/api/lazy.js.map +1 -1
  11. package/dist/api/openai-codex-responses.d.ts +1 -0
  12. package/dist/api/openai-codex-responses.d.ts.map +1 -1
  13. package/dist/api/openai-codex-responses.js +9 -5
  14. package/dist/api/openai-codex-responses.js.map +1 -1
  15. package/dist/api/openai-completions.d.ts.map +1 -1
  16. package/dist/api/openai-completions.js +12 -3
  17. package/dist/api/openai-completions.js.map +1 -1
  18. package/dist/api/openai-responses-shared.d.ts +3 -1
  19. package/dist/api/openai-responses-shared.d.ts.map +1 -1
  20. package/dist/api/openai-responses-shared.js +51 -0
  21. package/dist/api/openai-responses-shared.js.map +1 -1
  22. package/dist/api/openai-responses.d.ts +1 -0
  23. package/dist/api/openai-responses.d.ts.map +1 -1
  24. package/dist/api/openai-responses.js +26 -8
  25. package/dist/api/openai-responses.js.map +1 -1
  26. package/dist/api/pi-messages.d.ts +97 -0
  27. package/dist/api/pi-messages.d.ts.map +1 -0
  28. package/dist/api/pi-messages.js +309 -0
  29. package/dist/api/pi-messages.js.map +1 -0
  30. package/dist/api/pi-messages.lazy.d.ts +3 -0
  31. package/dist/api/pi-messages.lazy.d.ts.map +1 -0
  32. package/dist/api/pi-messages.lazy.js +3 -0
  33. package/dist/api/pi-messages.lazy.js.map +1 -0
  34. package/dist/auth/credential-store.d.ts +2 -1
  35. package/dist/auth/credential-store.d.ts.map +1 -1
  36. package/dist/auth/credential-store.js +3 -0
  37. package/dist/auth/credential-store.js.map +1 -1
  38. package/dist/auth/helpers.d.ts.map +1 -1
  39. package/dist/auth/helpers.js +3 -3
  40. package/dist/auth/helpers.js.map +1 -1
  41. package/dist/auth/oauth/anthropic.d.ts +9 -0
  42. package/dist/auth/oauth/anthropic.d.ts.map +1 -0
  43. package/dist/{utils → auth}/oauth/anthropic.js +51 -116
  44. package/dist/auth/oauth/anthropic.js.map +1 -0
  45. package/dist/auth/oauth/device-code.d.ts.map +1 -0
  46. package/dist/auth/oauth/device-code.js.map +1 -0
  47. package/dist/auth/oauth/github-copilot.d.ts +6 -0
  48. package/dist/auth/oauth/github-copilot.d.ts.map +1 -0
  49. package/dist/{utils → auth}/oauth/github-copilot.js +18 -77
  50. package/dist/auth/oauth/github-copilot.js.map +1 -0
  51. package/dist/auth/oauth/load.d.ts +23 -0
  52. package/dist/auth/oauth/load.d.ts.map +1 -0
  53. package/dist/auth/oauth/load.js +49 -0
  54. package/dist/auth/oauth/load.js.map +1 -0
  55. package/dist/auth/oauth/oauth-page.d.ts.map +1 -0
  56. package/dist/auth/oauth/oauth-page.js.map +1 -0
  57. package/dist/auth/oauth/openai-codex.d.ts +9 -0
  58. package/dist/auth/oauth/openai-codex.d.ts.map +1 -0
  59. package/dist/{utils → auth}/oauth/openai-codex.js +61 -155
  60. package/dist/auth/oauth/openai-codex.js.map +1 -0
  61. package/dist/auth/oauth/pkce.d.ts.map +1 -0
  62. package/dist/auth/oauth/pkce.js.map +1 -0
  63. package/dist/auth/oauth/radius.d.ts +16 -0
  64. package/dist/auth/oauth/radius.d.ts.map +1 -0
  65. package/dist/auth/oauth/radius.js +318 -0
  66. package/dist/auth/oauth/radius.js.map +1 -0
  67. package/dist/auth/oauth/xai.d.ts +6 -0
  68. package/dist/auth/oauth/xai.d.ts.map +1 -0
  69. package/dist/auth/oauth/xai.js +184 -0
  70. package/dist/auth/oauth/xai.js.map +1 -0
  71. package/dist/auth/resolve.d.ts +2 -4
  72. package/dist/auth/resolve.d.ts.map +1 -1
  73. package/dist/auth/resolve.js +9 -7
  74. package/dist/auth/resolve.js.map +1 -1
  75. package/dist/auth/types.d.ts +47 -10
  76. package/dist/auth/types.d.ts.map +1 -1
  77. package/dist/auth/types.js.map +1 -1
  78. package/dist/bun-oauth.d.ts +3 -0
  79. package/dist/bun-oauth.d.ts.map +1 -0
  80. package/dist/bun-oauth.js +17 -0
  81. package/dist/bun-oauth.js.map +1 -0
  82. package/dist/cli.d.ts.map +1 -1
  83. package/dist/cli.js +58 -76
  84. package/dist/cli.js.map +1 -1
  85. package/dist/compat/extension-oauth-types.d.ts +39 -0
  86. package/dist/compat/extension-oauth-types.d.ts.map +1 -0
  87. package/dist/compat/extension-oauth-types.js +2 -0
  88. package/dist/compat/extension-oauth-types.js.map +1 -0
  89. package/dist/compat.d.ts +2 -0
  90. package/dist/compat.d.ts.map +1 -1
  91. package/dist/compat.js +25 -8
  92. package/dist/compat.js.map +1 -1
  93. package/dist/env-api-keys.d.ts.map +1 -1
  94. package/dist/env-api-keys.js +1 -0
  95. package/dist/env-api-keys.js.map +1 -1
  96. package/dist/images-models.d.ts +4 -2
  97. package/dist/images-models.d.ts.map +1 -1
  98. package/dist/images-models.js +5 -4
  99. package/dist/images-models.js.map +1 -1
  100. package/dist/index.d.ts +3 -1
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +1 -0
  103. package/dist/index.js.map +1 -1
  104. package/dist/models-store.d.ts +25 -0
  105. package/dist/models-store.d.ts.map +1 -0
  106. package/dist/models-store.js +14 -0
  107. package/dist/models-store.js.map +1 -0
  108. package/dist/models.d.ts +66 -30
  109. package/dist/models.d.ts.map +1 -1
  110. package/dist/models.generated.d.ts +570 -163
  111. package/dist/models.generated.d.ts.map +1 -1
  112. package/dist/models.js +214 -29
  113. package/dist/models.js.map +1 -1
  114. package/dist/oauth.d.ts +2 -1
  115. package/dist/oauth.d.ts.map +1 -1
  116. package/dist/oauth.js +1 -1
  117. package/dist/oauth.js.map +1 -1
  118. package/dist/providers/all.d.ts +11 -6
  119. package/dist/providers/all.d.ts.map +1 -1
  120. package/dist/providers/all.js +3 -0
  121. package/dist/providers/all.js.map +1 -1
  122. package/dist/providers/amazon-bedrock.d.ts.map +1 -1
  123. package/dist/providers/amazon-bedrock.js +51 -6
  124. package/dist/providers/amazon-bedrock.js.map +1 -1
  125. package/dist/providers/amazon-bedrock.models.d.ts +60 -0
  126. package/dist/providers/amazon-bedrock.models.d.ts.map +1 -1
  127. package/dist/providers/amazon-bedrock.models.js +54 -0
  128. package/dist/providers/amazon-bedrock.models.js.map +1 -1
  129. package/dist/providers/anthropic.d.ts.map +1 -1
  130. package/dist/providers/anthropic.js +1 -1
  131. package/dist/providers/anthropic.js.map +1 -1
  132. package/dist/providers/azure-openai-responses.models.d.ts +17 -0
  133. package/dist/providers/azure-openai-responses.models.d.ts.map +1 -1
  134. package/dist/providers/azure-openai-responses.models.js +17 -0
  135. package/dist/providers/azure-openai-responses.models.js.map +1 -1
  136. package/dist/providers/cerebras.models.d.ts.map +1 -1
  137. package/dist/providers/cerebras.models.js +1 -1
  138. package/dist/providers/cerebras.models.js.map +1 -1
  139. package/dist/providers/cloudflare-ai-gateway.d.ts.map +1 -1
  140. package/dist/providers/cloudflare-ai-gateway.js +4 -3
  141. package/dist/providers/cloudflare-ai-gateway.js.map +1 -1
  142. package/dist/providers/cloudflare-ai-gateway.models.d.ts +92 -0
  143. package/dist/providers/cloudflare-ai-gateway.models.d.ts.map +1 -1
  144. package/dist/providers/cloudflare-ai-gateway.models.js +72 -0
  145. package/dist/providers/cloudflare-ai-gateway.models.js.map +1 -1
  146. package/dist/providers/cloudflare-auth.d.ts.map +1 -1
  147. package/dist/providers/cloudflare-auth.js +22 -26
  148. package/dist/providers/cloudflare-auth.js.map +1 -1
  149. package/dist/providers/cloudflare-stream.d.ts +8 -0
  150. package/dist/providers/cloudflare-stream.d.ts.map +1 -0
  151. package/dist/providers/cloudflare-stream.js +21 -0
  152. package/dist/providers/cloudflare-stream.js.map +1 -0
  153. package/dist/providers/cloudflare-workers-ai.d.ts.map +1 -1
  154. package/dist/providers/cloudflare-workers-ai.js +2 -1
  155. package/dist/providers/cloudflare-workers-ai.js.map +1 -1
  156. package/dist/providers/github-copilot.d.ts.map +1 -1
  157. package/dist/providers/github-copilot.js +11 -1
  158. package/dist/providers/github-copilot.js.map +1 -1
  159. package/dist/providers/github-copilot.models.d.ts +93 -6
  160. package/dist/providers/github-copilot.models.d.ts.map +1 -1
  161. package/dist/providers/github-copilot.models.js +60 -3
  162. package/dist/providers/github-copilot.models.js.map +1 -1
  163. package/dist/providers/google-vertex.d.ts.map +1 -1
  164. package/dist/providers/google-vertex.js +56 -5
  165. package/dist/providers/google-vertex.js.map +1 -1
  166. package/dist/providers/kimi-coding.models.d.ts +20 -0
  167. package/dist/providers/kimi-coding.models.d.ts.map +1 -1
  168. package/dist/providers/kimi-coding.models.js +18 -0
  169. package/dist/providers/kimi-coding.models.js.map +1 -1
  170. package/dist/providers/openai-codex.d.ts.map +1 -1
  171. package/dist/providers/openai-codex.js +1 -1
  172. package/dist/providers/openai-codex.js.map +1 -1
  173. package/dist/providers/openai-codex.models.d.ts +18 -0
  174. package/dist/providers/openai-codex.models.d.ts.map +1 -1
  175. package/dist/providers/openai-codex.models.js +6 -0
  176. package/dist/providers/openai-codex.models.js.map +1 -1
  177. package/dist/providers/openai.models.d.ts +38 -0
  178. package/dist/providers/openai.models.d.ts.map +1 -1
  179. package/dist/providers/openai.models.js +24 -0
  180. package/dist/providers/openai.models.js.map +1 -1
  181. package/dist/providers/opencode.models.d.ts +123 -0
  182. package/dist/providers/opencode.models.d.ts.map +1 -1
  183. package/dist/providers/opencode.models.js +74 -1
  184. package/dist/providers/opencode.models.js.map +1 -1
  185. package/dist/providers/openrouter.models.d.ts +28 -43
  186. package/dist/providers/openrouter.models.d.ts.map +1 -1
  187. package/dist/providers/openrouter.models.js +186 -203
  188. package/dist/providers/openrouter.models.js.map +1 -1
  189. package/dist/providers/radius-config.d.ts +26 -0
  190. package/dist/providers/radius-config.d.ts.map +1 -0
  191. package/dist/providers/radius-config.js +59 -0
  192. package/dist/providers/radius-config.js.map +1 -0
  193. package/dist/providers/radius.d.ts +9 -0
  194. package/dist/providers/radius.d.ts.map +1 -0
  195. package/dist/providers/radius.js +54 -0
  196. package/dist/providers/radius.js.map +1 -0
  197. package/dist/providers/vercel-ai-gateway.models.d.ts +71 -106
  198. package/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -1
  199. package/dist/providers/vercel-ai-gateway.models.js +89 -136
  200. package/dist/providers/vercel-ai-gateway.models.js.map +1 -1
  201. package/dist/providers/xai.d.ts +1 -1
  202. package/dist/providers/xai.d.ts.map +1 -1
  203. package/dist/providers/xai.js +11 -3
  204. package/dist/providers/xai.js.map +1 -1
  205. package/dist/providers/xai.models.d.ts +6 -4
  206. package/dist/providers/xai.models.d.ts.map +1 -1
  207. package/dist/providers/xai.models.js +3 -2
  208. package/dist/providers/xai.models.js.map +1 -1
  209. package/dist/types.d.ts +25 -6
  210. package/dist/types.d.ts.map +1 -1
  211. package/dist/types.js.map +1 -1
  212. package/dist/utils/deferred-tools.d.ts +9 -0
  213. package/dist/utils/deferred-tools.d.ts.map +1 -0
  214. package/dist/utils/deferred-tools.js +36 -0
  215. package/dist/utils/deferred-tools.js.map +1 -0
  216. package/dist/utils/estimate.d.ts.map +1 -1
  217. package/dist/utils/estimate.js +18 -5
  218. package/dist/utils/estimate.js.map +1 -1
  219. package/package.json +6 -1
  220. package/dist/utils/oauth/anthropic.d.ts +0 -27
  221. package/dist/utils/oauth/anthropic.d.ts.map +0 -1
  222. package/dist/utils/oauth/anthropic.js.map +0 -1
  223. package/dist/utils/oauth/device-code.d.ts.map +0 -1
  224. package/dist/utils/oauth/device-code.js.map +0 -1
  225. package/dist/utils/oauth/github-copilot.d.ts +0 -32
  226. package/dist/utils/oauth/github-copilot.d.ts.map +0 -1
  227. package/dist/utils/oauth/github-copilot.js.map +0 -1
  228. package/dist/utils/oauth/index.d.ts +0 -58
  229. package/dist/utils/oauth/index.d.ts.map +0 -1
  230. package/dist/utils/oauth/index.js +0 -122
  231. package/dist/utils/oauth/index.js.map +0 -1
  232. package/dist/utils/oauth/load.d.ts +0 -5
  233. package/dist/utils/oauth/load.d.ts.map +0 -1
  234. package/dist/utils/oauth/load.js +0 -22
  235. package/dist/utils/oauth/load.js.map +0 -1
  236. package/dist/utils/oauth/oauth-page.d.ts.map +0 -1
  237. package/dist/utils/oauth/oauth-page.js.map +0 -1
  238. package/dist/utils/oauth/openai-codex.d.ts +0 -45
  239. package/dist/utils/oauth/openai-codex.d.ts.map +0 -1
  240. package/dist/utils/oauth/openai-codex.js.map +0 -1
  241. package/dist/utils/oauth/pkce.d.ts.map +0 -1
  242. package/dist/utils/oauth/pkce.js.map +0 -1
  243. package/dist/utils/oauth/types.d.ts +0 -64
  244. package/dist/utils/oauth/types.d.ts.map +0 -1
  245. package/dist/utils/oauth/types.js +0 -2
  246. package/dist/utils/oauth/types.js.map +0 -1
  247. /package/dist/{utils → auth}/oauth/device-code.d.ts +0 -0
  248. /package/dist/{utils → auth}/oauth/device-code.js +0 -0
  249. /package/dist/{utils → auth}/oauth/oauth-page.d.ts +0 -0
  250. /package/dist/{utils → auth}/oauth/oauth-page.js +0 -0
  251. /package/dist/{utils → auth}/oauth/pkce.d.ts +0 -0
  252. /package/dist/{utils → auth}/oauth/pkce.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare-auth.js","sourceRoot":"","sources":["../../src/providers/cloudflare-auth.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ApiKeyAuth, ApiKeyCredential, AuthContext } from \"../auth/types.ts\";\nimport type { Api, ImagesApi, ImagesModel, Model, ProviderEnv } from \"../types.ts\";\n\nconst CLOUDFLARE_API_KEY = \"CLOUDFLARE_API_KEY\";\nconst CLOUDFLARE_ACCOUNT_ID = \"CLOUDFLARE_ACCOUNT_ID\";\nconst CLOUDFLARE_GATEWAY_ID = \"CLOUDFLARE_GATEWAY_ID\";\n\ntype CloudflareAuthKind = \"workers-ai\" | \"ai-gateway\";\n\nasync function resolveValue(\n\tname: string,\n\tctx: AuthContext,\n\tcredential: ApiKeyCredential | undefined,\n): Promise<string | undefined> {\n\tif (credential) {\n\t\tif (name === CLOUDFLARE_API_KEY) return credential.key;\n\t\treturn credential.env?.[name];\n\t}\n\treturn ctx.env(name);\n}\n\nfunction resolveCloudflareBaseUrl(\n\tmodel: Model<Api> | ImagesModel<ImagesApi>,\n\taccountId: string,\n\tgatewayId: string | undefined,\n): string {\n\treturn model.baseUrl\n\t\t.replaceAll(`{${CLOUDFLARE_ACCOUNT_ID}}`, accountId)\n\t\t.replaceAll(`{${CLOUDFLARE_GATEWAY_ID}}`, gatewayId ?? \"\");\n}\n\nasync function resolveCloudflareEnv(\n\tkind: CloudflareAuthKind,\n\tmodel: Model<Api> | ImagesModel<ImagesApi>,\n\tctx: AuthContext,\n\tcredential: ApiKeyCredential | undefined,\n): Promise<{ apiKey: string; env: ProviderEnv; baseUrl: string; source: string } | undefined> {\n\tconst apiKey = await resolveValue(CLOUDFLARE_API_KEY, ctx, credential);\n\tconst accountId = await resolveValue(CLOUDFLARE_ACCOUNT_ID, ctx, credential);\n\tconst gatewayId = kind === \"ai-gateway\" ? await resolveValue(CLOUDFLARE_GATEWAY_ID, ctx, credential) : undefined;\n\n\tif (!apiKey || !accountId || (kind === \"ai-gateway\" && !gatewayId)) return undefined;\n\n\treturn {\n\t\tapiKey,\n\t\tenv: {\n\t\t\tCLOUDFLARE_ACCOUNT_ID: accountId,\n\t\t\t...(gatewayId ? { CLOUDFLARE_GATEWAY_ID: gatewayId } : {}),\n\t\t},\n\t\tbaseUrl: resolveCloudflareBaseUrl(model, accountId, gatewayId),\n\t\tsource: credential ? \"stored credential\" : CLOUDFLARE_API_KEY,\n\t};\n}\n\nexport function cloudflareWorkersAIAuth(): ApiKeyAuth {\n\treturn {\n\t\tname: \"Cloudflare API key\",\n\t\tlogin: async (callbacks) => {\n\t\t\tconst key = await callbacks.prompt({ type: \"secret\", message: \"Enter Cloudflare API key\" });\n\t\t\tconst accountId = await callbacks.prompt({ type: \"text\", message: \"Enter Cloudflare account ID\" });\n\t\t\treturn { type: \"api_key\", key, env: { CLOUDFLARE_ACCOUNT_ID: accountId } };\n\t\t},\n\t\tresolve: async ({ model, ctx, credential }) => {\n\t\t\tconst resolved = await resolveCloudflareEnv(\"workers-ai\", model, ctx, credential);\n\t\t\tif (!resolved) return undefined;\n\t\t\treturn {\n\t\t\t\tauth: { apiKey: resolved.apiKey, baseUrl: resolved.baseUrl },\n\t\t\t\tenv: resolved.env,\n\t\t\t\tsource: resolved.source,\n\t\t\t};\n\t\t},\n\t};\n}\n\nexport function cloudflareAIGatewayAuth(): ApiKeyAuth {\n\treturn {\n\t\tname: \"Cloudflare API key\",\n\t\tlogin: async (callbacks) => {\n\t\t\tconst key = await callbacks.prompt({ type: \"secret\", message: \"Enter Cloudflare API key\" });\n\t\t\tconst accountId = await callbacks.prompt({ type: \"text\", message: \"Enter Cloudflare account ID\" });\n\t\t\tconst gatewayId = await callbacks.prompt({ type: \"text\", message: \"Enter Cloudflare AI Gateway ID\" });\n\t\t\treturn {\n\t\t\t\ttype: \"api_key\",\n\t\t\t\tkey,\n\t\t\t\tenv: { CLOUDFLARE_ACCOUNT_ID: accountId, CLOUDFLARE_GATEWAY_ID: gatewayId },\n\t\t\t};\n\t\t},\n\t\tresolve: async ({ model, ctx, credential }) => {\n\t\t\tconst resolved = await resolveCloudflareEnv(\"ai-gateway\", model, ctx, credential);\n\t\t\tif (!resolved) return undefined;\n\t\t\treturn {\n\t\t\t\tauth: {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"cf-aig-authorization\": `Bearer ${resolved.apiKey}`,\n\t\t\t\t\t\tAuthorization: null,\n\t\t\t\t\t\t\"x-api-key\": null,\n\t\t\t\t\t},\n\t\t\t\t\tbaseUrl: resolved.baseUrl,\n\t\t\t\t},\n\t\t\t\tenv: resolved.env,\n\t\t\t\tsource: resolved.source,\n\t\t\t};\n\t\t},\n\t};\n}\n"]}
1
+ {"version":3,"file":"cloudflare-auth.js","sourceRoot":"","sources":["../../src/providers/cloudflare-auth.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ApiKeyAuth, ApiKeyCredential, AuthContext } from \"../auth/types.ts\";\nimport type { ProviderEnv } from \"../types.ts\";\n\nconst CLOUDFLARE_API_KEY = \"CLOUDFLARE_API_KEY\";\nconst CLOUDFLARE_ACCOUNT_ID = \"CLOUDFLARE_ACCOUNT_ID\";\nconst CLOUDFLARE_GATEWAY_ID = \"CLOUDFLARE_GATEWAY_ID\";\n\ntype CloudflareAuthKind = \"workers-ai\" | \"ai-gateway\";\n\nasync function resolveValue(\n\tname: string,\n\tctx: AuthContext,\n\tcredential: ApiKeyCredential | undefined,\n): Promise<string | undefined> {\n\t// Per-field merge: prefer the credential value, fall back to ambient env.\n\t// A credential carrying only the API key must still pick up the account /\n\t// gateway id from the environment.\n\tconst fromCredential = credential\n\t\t? name === CLOUDFLARE_API_KEY\n\t\t\t? credential.key\n\t\t\t: credential.env?.[name]\n\t\t: undefined;\n\treturn fromCredential ?? (await ctx.env(name));\n}\n\nasync function resolveCloudflareEnv(\n\tkind: CloudflareAuthKind,\n\tctx: AuthContext,\n\tcredential: ApiKeyCredential | undefined,\n): Promise<{ apiKey: string; env: ProviderEnv; source: string } | undefined> {\n\tconst apiKey = await resolveValue(CLOUDFLARE_API_KEY, ctx, credential);\n\tconst accountId = await resolveValue(CLOUDFLARE_ACCOUNT_ID, ctx, credential);\n\tconst gatewayId = kind === \"ai-gateway\" ? await resolveValue(CLOUDFLARE_GATEWAY_ID, ctx, credential) : undefined;\n\n\tif (!apiKey || !accountId || (kind === \"ai-gateway\" && !gatewayId)) return undefined;\n\n\treturn {\n\t\tapiKey,\n\t\tenv: {\n\t\t\tCLOUDFLARE_ACCOUNT_ID: accountId,\n\t\t\t...(gatewayId ? { CLOUDFLARE_GATEWAY_ID: gatewayId } : {}),\n\t\t},\n\t\tsource: credential ? \"stored credential\" : CLOUDFLARE_API_KEY,\n\t};\n}\n\nexport function cloudflareWorkersAIAuth(): ApiKeyAuth {\n\treturn {\n\t\tname: \"Cloudflare API key\",\n\t\tlogin: async (interaction) => {\n\t\t\tconst key = await interaction.prompt({ type: \"secret\", message: \"Enter Cloudflare API key\" });\n\t\t\tconst accountId = await interaction.prompt({ type: \"text\", message: \"Enter Cloudflare account ID\" });\n\t\t\treturn { type: \"api_key\", key, env: { CLOUDFLARE_ACCOUNT_ID: accountId } };\n\t\t},\n\t\tresolve: async ({ ctx, credential }) => {\n\t\t\tconst resolved = await resolveCloudflareEnv(\"workers-ai\", ctx, credential);\n\t\t\tif (!resolved) return undefined;\n\t\t\treturn {\n\t\t\t\tauth: { apiKey: resolved.apiKey },\n\t\t\t\tenv: resolved.env,\n\t\t\t\tsource: resolved.source,\n\t\t\t};\n\t\t},\n\t};\n}\n\nexport function cloudflareAIGatewayAuth(): ApiKeyAuth {\n\treturn {\n\t\tname: \"Cloudflare API key\",\n\t\tlogin: async (interaction) => {\n\t\t\tconst key = await interaction.prompt({ type: \"secret\", message: \"Enter Cloudflare API key\" });\n\t\t\tconst accountId = await interaction.prompt({ type: \"text\", message: \"Enter Cloudflare account ID\" });\n\t\t\tconst gatewayId = await interaction.prompt({ type: \"text\", message: \"Enter Cloudflare AI Gateway ID\" });\n\t\t\treturn {\n\t\t\t\ttype: \"api_key\",\n\t\t\t\tkey,\n\t\t\t\tenv: { CLOUDFLARE_ACCOUNT_ID: accountId, CLOUDFLARE_GATEWAY_ID: gatewayId },\n\t\t\t};\n\t\t},\n\t\tresolve: async ({ ctx, credential }) => {\n\t\t\tconst resolved = await resolveCloudflareEnv(\"ai-gateway\", ctx, credential);\n\t\t\tif (!resolved) return undefined;\n\t\t\treturn {\n\t\t\t\tauth: {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"cf-aig-authorization\": `Bearer ${resolved.apiKey}`,\n\t\t\t\t\t\tAuthorization: null,\n\t\t\t\t\t\t\"x-api-key\": null,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tenv: resolved.env,\n\t\t\t\tsource: resolved.source,\n\t\t\t};\n\t\t},\n\t};\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import type { Api, Model, ProviderEnv, ProviderStreams } from "../types.ts";
2
+ export declare function resolveCloudflareModel<TApi extends Api>(model: Model<TApi>, env: ProviderEnv | undefined): Model<TApi>;
3
+ /**
4
+ * Wrap an API implementation so Cloudflare account/gateway endpoint
5
+ * placeholders materialize from the resolved provider env before dispatch.
6
+ */
7
+ export declare function cloudflareStreams(streams: ProviderStreams): ProviderStreams;
8
+ //# sourceMappingURL=cloudflare-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-stream.d.ts","sourceRoot":"","sources":["../../src/providers/cloudflare-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAK5E,wBAAgB,sBAAsB,CAAC,IAAI,SAAS,GAAG,EACtD,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,GAAG,EAAE,WAAW,GAAG,SAAS,GAC1B,KAAK,CAAC,IAAI,CAAC,CAMb;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe,CAO3E","sourcesContent":["import type { Api, Model, ProviderEnv, ProviderStreams } from \"../types.ts\";\n\nconst CLOUDFLARE_ACCOUNT_ID = \"CLOUDFLARE_ACCOUNT_ID\";\nconst CLOUDFLARE_GATEWAY_ID = \"CLOUDFLARE_GATEWAY_ID\";\n\nexport function resolveCloudflareModel<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tenv: ProviderEnv | undefined,\n): Model<TApi> {\n\tif (!env) return model;\n\tconst baseUrl = model.baseUrl\n\t\t.replaceAll(`{${CLOUDFLARE_ACCOUNT_ID}}`, env[CLOUDFLARE_ACCOUNT_ID] ?? `{${CLOUDFLARE_ACCOUNT_ID}}`)\n\t\t.replaceAll(`{${CLOUDFLARE_GATEWAY_ID}}`, env[CLOUDFLARE_GATEWAY_ID] ?? `{${CLOUDFLARE_GATEWAY_ID}}`);\n\treturn baseUrl === model.baseUrl ? model : { ...model, baseUrl };\n}\n\n/**\n * Wrap an API implementation so Cloudflare account/gateway endpoint\n * placeholders materialize from the resolved provider env before dispatch.\n */\nexport function cloudflareStreams(streams: ProviderStreams): ProviderStreams {\n\treturn {\n\t\tstream: (model, context, options) =>\n\t\t\tstreams.stream(resolveCloudflareModel(model, options?.env), context, options),\n\t\tstreamSimple: (model, context, options) =>\n\t\t\tstreams.streamSimple(resolveCloudflareModel(model, options?.env), context, options),\n\t};\n}\n"]}
@@ -0,0 +1,21 @@
1
+ const CLOUDFLARE_ACCOUNT_ID = "CLOUDFLARE_ACCOUNT_ID";
2
+ const CLOUDFLARE_GATEWAY_ID = "CLOUDFLARE_GATEWAY_ID";
3
+ export function resolveCloudflareModel(model, env) {
4
+ if (!env)
5
+ return model;
6
+ const baseUrl = model.baseUrl
7
+ .replaceAll(`{${CLOUDFLARE_ACCOUNT_ID}}`, env[CLOUDFLARE_ACCOUNT_ID] ?? `{${CLOUDFLARE_ACCOUNT_ID}}`)
8
+ .replaceAll(`{${CLOUDFLARE_GATEWAY_ID}}`, env[CLOUDFLARE_GATEWAY_ID] ?? `{${CLOUDFLARE_GATEWAY_ID}}`);
9
+ return baseUrl === model.baseUrl ? model : { ...model, baseUrl };
10
+ }
11
+ /**
12
+ * Wrap an API implementation so Cloudflare account/gateway endpoint
13
+ * placeholders materialize from the resolved provider env before dispatch.
14
+ */
15
+ export function cloudflareStreams(streams) {
16
+ return {
17
+ stream: (model, context, options) => streams.stream(resolveCloudflareModel(model, options?.env), context, options),
18
+ streamSimple: (model, context, options) => streams.streamSimple(resolveCloudflareModel(model, options?.env), context, options),
19
+ };
20
+ }
21
+ //# sourceMappingURL=cloudflare-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-stream.js","sourceRoot":"","sources":["../../src/providers/cloudflare-stream.ts"],"names":[],"mappings":"AAEA,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AACtD,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAEtD,MAAM,UAAU,sBAAsB,CACrC,KAAkB,EAClB,GAA4B,EACd;IACd,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;SAC3B,UAAU,CAAC,IAAI,qBAAqB,GAAG,EAAE,GAAG,CAAC,qBAAqB,CAAC,IAAI,IAAI,qBAAqB,GAAG,CAAC;SACpG,UAAU,CAAC,IAAI,qBAAqB,GAAG,EAAE,GAAG,CAAC,qBAAqB,CAAC,IAAI,IAAI,qBAAqB,GAAG,CAAC,CAAC;IACvG,OAAO,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC;AAAA,CACjE;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAwB,EAAmB;IAC5E,OAAO;QACN,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CACnC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC;QAC9E,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CACzC,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC;KACpF,CAAC;AAAA,CACF","sourcesContent":["import type { Api, Model, ProviderEnv, ProviderStreams } from \"../types.ts\";\n\nconst CLOUDFLARE_ACCOUNT_ID = \"CLOUDFLARE_ACCOUNT_ID\";\nconst CLOUDFLARE_GATEWAY_ID = \"CLOUDFLARE_GATEWAY_ID\";\n\nexport function resolveCloudflareModel<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tenv: ProviderEnv | undefined,\n): Model<TApi> {\n\tif (!env) return model;\n\tconst baseUrl = model.baseUrl\n\t\t.replaceAll(`{${CLOUDFLARE_ACCOUNT_ID}}`, env[CLOUDFLARE_ACCOUNT_ID] ?? `{${CLOUDFLARE_ACCOUNT_ID}}`)\n\t\t.replaceAll(`{${CLOUDFLARE_GATEWAY_ID}}`, env[CLOUDFLARE_GATEWAY_ID] ?? `{${CLOUDFLARE_GATEWAY_ID}}`);\n\treturn baseUrl === model.baseUrl ? model : { ...model, baseUrl };\n}\n\n/**\n * Wrap an API implementation so Cloudflare account/gateway endpoint\n * placeholders materialize from the resolved provider env before dispatch.\n */\nexport function cloudflareStreams(streams: ProviderStreams): ProviderStreams {\n\treturn {\n\t\tstream: (model, context, options) =>\n\t\t\tstreams.stream(resolveCloudflareModel(model, options?.env), context, options),\n\t\tstreamSimple: (model, context, options) =>\n\t\t\tstreams.streamSimple(resolveCloudflareModel(model, options?.env), context, options),\n\t};\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare-workers-ai.d.ts","sourceRoot":"","sources":["../../src/providers/cloudflare-workers-ai.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAI7D,wBAAgB,2BAA2B,IAAI,QAAQ,CAAC,oBAAoB,CAAC,CAQ5E","sourcesContent":["import { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { cloudflareWorkersAIAuth } from \"./cloudflare-auth.ts\";\nimport { CLOUDFLARE_WORKERS_AI_MODELS } from \"./cloudflare-workers-ai.models.ts\";\n\nexport function cloudflareWorkersAIProvider(): Provider<\"openai-completions\"> {\n\treturn createProvider({\n\t\tid: \"cloudflare-workers-ai\",\n\t\tname: \"Cloudflare Workers AI\",\n\t\tauth: { apiKey: cloudflareWorkersAIAuth() },\n\t\tmodels: Object.values(CLOUDFLARE_WORKERS_AI_MODELS),\n\t\tapi: openAICompletionsApi(),\n\t});\n}\n"]}
1
+ {"version":3,"file":"cloudflare-workers-ai.d.ts","sourceRoot":"","sources":["../../src/providers/cloudflare-workers-ai.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7D,wBAAgB,2BAA2B,IAAI,QAAQ,CAAC,oBAAoB,CAAC,CAQ5E","sourcesContent":["import { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { cloudflareWorkersAIAuth } from \"./cloudflare-auth.ts\";\nimport { cloudflareStreams } from \"./cloudflare-stream.ts\";\nimport { CLOUDFLARE_WORKERS_AI_MODELS } from \"./cloudflare-workers-ai.models.ts\";\n\nexport function cloudflareWorkersAIProvider(): Provider<\"openai-completions\"> {\n\treturn createProvider({\n\t\tid: \"cloudflare-workers-ai\",\n\t\tname: \"Cloudflare Workers AI\",\n\t\tauth: { apiKey: cloudflareWorkersAIAuth() },\n\t\tmodels: Object.values(CLOUDFLARE_WORKERS_AI_MODELS),\n\t\tapi: cloudflareStreams(openAICompletionsApi()),\n\t});\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  import { openAICompletionsApi } from "../api/openai-completions.lazy.js";
2
2
  import { createProvider } from "../models.js";
3
3
  import { cloudflareWorkersAIAuth } from "./cloudflare-auth.js";
4
+ import { cloudflareStreams } from "./cloudflare-stream.js";
4
5
  import { CLOUDFLARE_WORKERS_AI_MODELS } from "./cloudflare-workers-ai.models.js";
5
6
  export function cloudflareWorkersAIProvider() {
6
7
  return createProvider({
@@ -8,7 +9,7 @@ export function cloudflareWorkersAIProvider() {
8
9
  name: "Cloudflare Workers AI",
9
10
  auth: { apiKey: cloudflareWorkersAIAuth() },
10
11
  models: Object.values(CLOUDFLARE_WORKERS_AI_MODELS),
11
- api: openAICompletionsApi(),
12
+ api: cloudflareStreams(openAICompletionsApi()),
12
13
  });
13
14
  }
14
15
  //# sourceMappingURL=cloudflare-workers-ai.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare-workers-ai.js","sourceRoot":"","sources":["../../src/providers/cloudflare-workers-ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAEjF,MAAM,UAAU,2BAA2B,GAAmC;IAC7E,OAAO,cAAc,CAAC;QACrB,EAAE,EAAE,uBAAuB;QAC3B,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,EAAE;QAC3C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC;QACnD,GAAG,EAAE,oBAAoB,EAAE;KAC3B,CAAC,CAAC;AAAA,CACH","sourcesContent":["import { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { cloudflareWorkersAIAuth } from \"./cloudflare-auth.ts\";\nimport { CLOUDFLARE_WORKERS_AI_MODELS } from \"./cloudflare-workers-ai.models.ts\";\n\nexport function cloudflareWorkersAIProvider(): Provider<\"openai-completions\"> {\n\treturn createProvider({\n\t\tid: \"cloudflare-workers-ai\",\n\t\tname: \"Cloudflare Workers AI\",\n\t\tauth: { apiKey: cloudflareWorkersAIAuth() },\n\t\tmodels: Object.values(CLOUDFLARE_WORKERS_AI_MODELS),\n\t\tapi: openAICompletionsApi(),\n\t});\n}\n"]}
1
+ {"version":3,"file":"cloudflare-workers-ai.js","sourceRoot":"","sources":["../../src/providers/cloudflare-workers-ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAEjF,MAAM,UAAU,2BAA2B,GAAmC;IAC7E,OAAO,cAAc,CAAC;QACrB,EAAE,EAAE,uBAAuB;QAC3B,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,EAAE;QAC3C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC;QACnD,GAAG,EAAE,iBAAiB,CAAC,oBAAoB,EAAE,CAAC;KAC9C,CAAC,CAAC;AAAA,CACH","sourcesContent":["import { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { cloudflareWorkersAIAuth } from \"./cloudflare-auth.ts\";\nimport { cloudflareStreams } from \"./cloudflare-stream.ts\";\nimport { CLOUDFLARE_WORKERS_AI_MODELS } from \"./cloudflare-workers-ai.models.ts\";\n\nexport function cloudflareWorkersAIProvider(): Provider<\"openai-completions\"> {\n\treturn createProvider({\n\t\tid: \"cloudflare-workers-ai\",\n\t\tname: \"Cloudflare Workers AI\",\n\t\tauth: { apiKey: cloudflareWorkersAIAuth() },\n\t\tmodels: Object.values(CLOUDFLARE_WORKERS_AI_MODELS),\n\t\tapi: cloudflareStreams(openAICompletionsApi()),\n\t});\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"github-copilot.d.ts","sourceRoot":"","sources":["../../src/providers/github-copilot.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAI7D,wBAAgB,qBAAqB,IAAI,QAAQ,CAAC,oBAAoB,GAAG,oBAAoB,GAAG,kBAAkB,CAAC,CAgBlH","sourcesContent":["import { anthropicMessagesApi } from \"../api/anthropic-messages.lazy.ts\";\nimport { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { openAIResponsesApi } from \"../api/openai-responses.lazy.ts\";\nimport { envApiKeyAuth, lazyOAuth } from \"../auth/helpers.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { loadGitHubCopilotOAuth } from \"../utils/oauth/load.ts\";\nimport { GITHUB_COPILOT_MODELS } from \"./github-copilot.models.ts\";\n\nexport function githubCopilotProvider(): Provider<\"anthropic-messages\" | \"openai-completions\" | \"openai-responses\"> {\n\treturn createProvider({\n\t\tid: \"github-copilot\",\n\t\tname: \"GitHub Copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\tauth: {\n\t\t\tapiKey: envApiKeyAuth(\"GitHub Copilot token\", [\"COPILOT_GITHUB_TOKEN\"]),\n\t\t\toauth: lazyOAuth({ name: \"GitHub Copilot\", load: loadGitHubCopilotOAuth }),\n\t\t},\n\t\tmodels: Object.values(GITHUB_COPILOT_MODELS),\n\t\tapi: {\n\t\t\t\"anthropic-messages\": anthropicMessagesApi(),\n\t\t\t\"openai-completions\": openAICompletionsApi(),\n\t\t\t\"openai-responses\": openAIResponsesApi(),\n\t\t},\n\t});\n}\n"]}
1
+ {"version":3,"file":"github-copilot.d.ts","sourceRoot":"","sources":["../../src/providers/github-copilot.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7D,wBAAgB,qBAAqB,IAAI,QAAQ,CAAC,oBAAoB,GAAG,oBAAoB,GAAG,kBAAkB,CAAC,CAyBlH","sourcesContent":["import { anthropicMessagesApi } from \"../api/anthropic-messages.lazy.ts\";\nimport { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { openAIResponsesApi } from \"../api/openai-responses.lazy.ts\";\nimport { envApiKeyAuth, lazyOAuth } from \"../auth/helpers.ts\";\nimport { loadGitHubCopilotOAuth } from \"../auth/oauth/load.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { GITHUB_COPILOT_MODELS } from \"./github-copilot.models.ts\";\n\nexport function githubCopilotProvider(): Provider<\"anthropic-messages\" | \"openai-completions\" | \"openai-responses\"> {\n\treturn createProvider({\n\t\tid: \"github-copilot\",\n\t\tname: \"GitHub Copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\tauth: {\n\t\t\tapiKey: envApiKeyAuth(\"GitHub Copilot token\", [\"COPILOT_GITHUB_TOKEN\"]),\n\t\t\toauth: lazyOAuth({ name: \"GitHub Copilot\", load: loadGitHubCopilotOAuth }),\n\t\t},\n\t\tmodels: Object.values(GITHUB_COPILOT_MODELS),\n\t\tfilterModels: (models, credential) => {\n\t\t\tif (credential?.type !== \"oauth\") return models;\n\t\t\tconst availableModelIds = credential.availableModelIds;\n\t\t\tif (!Array.isArray(availableModelIds) || !availableModelIds.every((id) => typeof id === \"string\")) {\n\t\t\t\treturn models;\n\t\t\t}\n\t\t\tconst available = new Set(availableModelIds);\n\t\t\treturn models.filter((model) => available.has(model.id));\n\t\t},\n\t\tapi: {\n\t\t\t\"anthropic-messages\": anthropicMessagesApi(),\n\t\t\t\"openai-completions\": openAICompletionsApi(),\n\t\t\t\"openai-responses\": openAIResponsesApi(),\n\t\t},\n\t});\n}\n"]}
@@ -2,8 +2,8 @@ import { anthropicMessagesApi } from "../api/anthropic-messages.lazy.js";
2
2
  import { openAICompletionsApi } from "../api/openai-completions.lazy.js";
3
3
  import { openAIResponsesApi } from "../api/openai-responses.lazy.js";
4
4
  import { envApiKeyAuth, lazyOAuth } from "../auth/helpers.js";
5
+ import { loadGitHubCopilotOAuth } from "../auth/oauth/load.js";
5
6
  import { createProvider } from "../models.js";
6
- import { loadGitHubCopilotOAuth } from "../utils/oauth/load.js";
7
7
  import { GITHUB_COPILOT_MODELS } from "./github-copilot.models.js";
8
8
  export function githubCopilotProvider() {
9
9
  return createProvider({
@@ -15,6 +15,16 @@ export function githubCopilotProvider() {
15
15
  oauth: lazyOAuth({ name: "GitHub Copilot", load: loadGitHubCopilotOAuth }),
16
16
  },
17
17
  models: Object.values(GITHUB_COPILOT_MODELS),
18
+ filterModels: (models, credential) => {
19
+ if (credential?.type !== "oauth")
20
+ return models;
21
+ const availableModelIds = credential.availableModelIds;
22
+ if (!Array.isArray(availableModelIds) || !availableModelIds.every((id) => typeof id === "string")) {
23
+ return models;
24
+ }
25
+ const available = new Set(availableModelIds);
26
+ return models.filter((model) => available.has(model.id));
27
+ },
18
28
  api: {
19
29
  "anthropic-messages": anthropicMessagesApi(),
20
30
  "openai-completions": openAICompletionsApi(),
@@ -1 +1 @@
1
- {"version":3,"file":"github-copilot.js","sourceRoot":"","sources":["../../src/providers/github-copilot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,UAAU,qBAAqB,GAA+E;IACnH,OAAO,cAAc,CAAC;QACrB,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,0CAA0C;QACnD,IAAI,EAAE;YACL,MAAM,EAAE,aAAa,CAAC,sBAAsB,EAAE,CAAC,sBAAsB,CAAC,CAAC;YACvE,KAAK,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;SAC1E;QACD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC;QAC5C,GAAG,EAAE;YACJ,oBAAoB,EAAE,oBAAoB,EAAE;YAC5C,oBAAoB,EAAE,oBAAoB,EAAE;YAC5C,kBAAkB,EAAE,kBAAkB,EAAE;SACxC;KACD,CAAC,CAAC;AAAA,CACH","sourcesContent":["import { anthropicMessagesApi } from \"../api/anthropic-messages.lazy.ts\";\nimport { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { openAIResponsesApi } from \"../api/openai-responses.lazy.ts\";\nimport { envApiKeyAuth, lazyOAuth } from \"../auth/helpers.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { loadGitHubCopilotOAuth } from \"../utils/oauth/load.ts\";\nimport { GITHUB_COPILOT_MODELS } from \"./github-copilot.models.ts\";\n\nexport function githubCopilotProvider(): Provider<\"anthropic-messages\" | \"openai-completions\" | \"openai-responses\"> {\n\treturn createProvider({\n\t\tid: \"github-copilot\",\n\t\tname: \"GitHub Copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\tauth: {\n\t\t\tapiKey: envApiKeyAuth(\"GitHub Copilot token\", [\"COPILOT_GITHUB_TOKEN\"]),\n\t\t\toauth: lazyOAuth({ name: \"GitHub Copilot\", load: loadGitHubCopilotOAuth }),\n\t\t},\n\t\tmodels: Object.values(GITHUB_COPILOT_MODELS),\n\t\tapi: {\n\t\t\t\"anthropic-messages\": anthropicMessagesApi(),\n\t\t\t\"openai-completions\": openAICompletionsApi(),\n\t\t\t\"openai-responses\": openAIResponsesApi(),\n\t\t},\n\t});\n}\n"]}
1
+ {"version":3,"file":"github-copilot.js","sourceRoot":"","sources":["../../src/providers/github-copilot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,UAAU,qBAAqB,GAA+E;IACnH,OAAO,cAAc,CAAC;QACrB,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,0CAA0C;QACnD,IAAI,EAAE;YACL,MAAM,EAAE,aAAa,CAAC,sBAAsB,EAAE,CAAC,sBAAsB,CAAC,CAAC;YACvE,KAAK,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;SAC1E;QACD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC;QAC5C,YAAY,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC;YACrC,IAAI,UAAU,EAAE,IAAI,KAAK,OAAO;gBAAE,OAAO,MAAM,CAAC;YAChD,MAAM,iBAAiB,GAAG,UAAU,CAAC,iBAAiB,CAAC;YACvD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC;gBACnG,OAAO,MAAM,CAAC;YACf,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAAA,CACzD;QACD,GAAG,EAAE;YACJ,oBAAoB,EAAE,oBAAoB,EAAE;YAC5C,oBAAoB,EAAE,oBAAoB,EAAE;YAC5C,kBAAkB,EAAE,kBAAkB,EAAE;SACxC;KACD,CAAC,CAAC;AAAA,CACH","sourcesContent":["import { anthropicMessagesApi } from \"../api/anthropic-messages.lazy.ts\";\nimport { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { openAIResponsesApi } from \"../api/openai-responses.lazy.ts\";\nimport { envApiKeyAuth, lazyOAuth } from \"../auth/helpers.ts\";\nimport { loadGitHubCopilotOAuth } from \"../auth/oauth/load.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { GITHUB_COPILOT_MODELS } from \"./github-copilot.models.ts\";\n\nexport function githubCopilotProvider(): Provider<\"anthropic-messages\" | \"openai-completions\" | \"openai-responses\"> {\n\treturn createProvider({\n\t\tid: \"github-copilot\",\n\t\tname: \"GitHub Copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\tauth: {\n\t\t\tapiKey: envApiKeyAuth(\"GitHub Copilot token\", [\"COPILOT_GITHUB_TOKEN\"]),\n\t\t\toauth: lazyOAuth({ name: \"GitHub Copilot\", load: loadGitHubCopilotOAuth }),\n\t\t},\n\t\tmodels: Object.values(GITHUB_COPILOT_MODELS),\n\t\tfilterModels: (models, credential) => {\n\t\t\tif (credential?.type !== \"oauth\") return models;\n\t\t\tconst availableModelIds = credential.availableModelIds;\n\t\t\tif (!Array.isArray(availableModelIds) || !availableModelIds.every((id) => typeof id === \"string\")) {\n\t\t\t\treturn models;\n\t\t\t}\n\t\t\tconst available = new Set(availableModelIds);\n\t\t\treturn models.filter((model) => available.has(model.id));\n\t\t},\n\t\tapi: {\n\t\t\t\"anthropic-messages\": anthropicMessagesApi(),\n\t\t\t\"openai-completions\": openAICompletionsApi(),\n\t\t\t\"openai-responses\": openAIResponsesApi(),\n\t\t},\n\t});\n}\n"]}
@@ -17,6 +17,11 @@ export declare const GITHUB_COPILOT_MODELS: {
17
17
  supportsReasoningEffort: false;
18
18
  };
19
19
  reasoning: true;
20
+ thinkingLevelMap: {
21
+ off: null;
22
+ xhigh: string;
23
+ max: string;
24
+ };
20
25
  input: ("image" | "text")[];
21
26
  cost: {
22
27
  input: number;
@@ -644,6 +649,93 @@ export declare const GITHUB_COPILOT_MODELS: {
644
649
  contextWindow: number;
645
650
  maxTokens: number;
646
651
  };
652
+ readonly "gpt-5.6-luna": {
653
+ id: string;
654
+ name: string;
655
+ api: "openai-responses";
656
+ provider: string;
657
+ baseUrl: string;
658
+ headers: {
659
+ "User-Agent": string;
660
+ "Editor-Version": string;
661
+ "Editor-Plugin-Version": string;
662
+ "Copilot-Integration-Id": string;
663
+ };
664
+ reasoning: true;
665
+ thinkingLevelMap: {
666
+ off: null;
667
+ minimal: string;
668
+ xhigh: string;
669
+ max: string;
670
+ };
671
+ input: ("image" | "text")[];
672
+ cost: {
673
+ input: number;
674
+ output: number;
675
+ cacheRead: number;
676
+ cacheWrite: number;
677
+ };
678
+ contextWindow: number;
679
+ maxTokens: number;
680
+ };
681
+ readonly "gpt-5.6-sol": {
682
+ id: string;
683
+ name: string;
684
+ api: "openai-responses";
685
+ provider: string;
686
+ baseUrl: string;
687
+ headers: {
688
+ "User-Agent": string;
689
+ "Editor-Version": string;
690
+ "Editor-Plugin-Version": string;
691
+ "Copilot-Integration-Id": string;
692
+ };
693
+ reasoning: true;
694
+ thinkingLevelMap: {
695
+ off: null;
696
+ minimal: string;
697
+ xhigh: string;
698
+ max: string;
699
+ };
700
+ input: ("image" | "text")[];
701
+ cost: {
702
+ input: number;
703
+ output: number;
704
+ cacheRead: number;
705
+ cacheWrite: number;
706
+ };
707
+ contextWindow: number;
708
+ maxTokens: number;
709
+ };
710
+ readonly "gpt-5.6-terra": {
711
+ id: string;
712
+ name: string;
713
+ api: "openai-responses";
714
+ provider: string;
715
+ baseUrl: string;
716
+ headers: {
717
+ "User-Agent": string;
718
+ "Editor-Version": string;
719
+ "Editor-Plugin-Version": string;
720
+ "Copilot-Integration-Id": string;
721
+ };
722
+ reasoning: true;
723
+ thinkingLevelMap: {
724
+ off: null;
725
+ minimal: string;
726
+ xhigh: string;
727
+ max: string;
728
+ };
729
+ input: ("image" | "text")[];
730
+ cost: {
731
+ input: number;
732
+ output: number;
733
+ cacheRead: number;
734
+ cacheWrite: number;
735
+ };
736
+ contextWindow: number;
737
+ maxTokens: number;
738
+ };
647
739
  readonly "kimi-k2.7-code": {
648
740
  id: string;
649
741
  name: string;
@@ -675,7 +767,7 @@ export declare const GITHUB_COPILOT_MODELS: {
675
767
  readonly "mai-code-1-flash-picker": {
676
768
  id: string;
677
769
  name: string;
678
- api: "openai-completions";
770
+ api: "openai-responses";
679
771
  provider: string;
680
772
  baseUrl: string;
681
773
  headers: {
@@ -684,11 +776,6 @@ export declare const GITHUB_COPILOT_MODELS: {
684
776
  "Editor-Plugin-Version": string;
685
777
  "Copilot-Integration-Id": string;
686
778
  };
687
- compat: {
688
- supportsStore: false;
689
- supportsDeveloperRole: false;
690
- supportsReasoningEffort: false;
691
- };
692
779
  reasoning: true;
693
780
  input: "text"[];
694
781
  cost: {
@@ -1 +1 @@
1
- {"version":3,"file":"github-copilot.models.d.ts","sourceRoot":"","sources":["../../src/providers/github-copilot.models.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgexB,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport type { Model } from \"../types.ts\";\n\nexport const GITHUB_COPILOT_MODELS = {\n\t\"claude-fable-5\": {\n\t\tid: \"claude-fable-5\",\n\t\tname: \"Claude Fable 5\",\n\t\tapi: \"openai-completions\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsStore\":false,\"supportsDeveloperRole\":false,\"supportsReasoningEffort\":false},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 10,\n\t\t\toutput: 50,\n\t\t\tcacheRead: 1,\n\t\t\tcacheWrite: 12.5,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-completions\">,\n\t\"claude-haiku-4.5\": {\n\t\tid: \"claude-haiku-4.5\",\n\t\tname: \"Claude Haiku 4.5 (latest)\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsEagerToolInputStreaming\":false},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 1,\n\t\t\toutput: 5,\n\t\t\tcacheRead: 0.1,\n\t\t\tcacheWrite: 1.25,\n\t\t},\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 64000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-opus-4.5\": {\n\t\tid: \"claude-opus-4.5\",\n\t\tname: \"Claude Opus 4.5 (latest)\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 25,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 6.25,\n\t\t},\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 32000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-opus-4.6\": {\n\t\tid: \"claude-opus-4.6\",\n\t\tname: \"Claude Opus 4.6\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"forceAdaptiveThinking\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"max\":\"max\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 25,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 6.25,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 32000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-opus-4.7\": {\n\t\tid: \"claude-opus-4.7\",\n\t\tname: \"Claude Opus 4.7\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"forceAdaptiveThinking\":true,\"supportsTemperature\":false},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"max\":\"max\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 25,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 6.25,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 32000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-opus-4.8\": {\n\t\tid: \"claude-opus-4.8\",\n\t\tname: \"Claude Opus 4.8\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"forceAdaptiveThinking\":true,\"supportsTemperature\":false},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"max\":\"max\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 25,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 6.25,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 64000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-sonnet-4\": {\n\t\tid: \"claude-sonnet-4\",\n\t\tname: \"Claude Sonnet 4 (latest)\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsEagerToolInputStreaming\":false},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 3,\n\t\t\toutput: 15,\n\t\t\tcacheRead: 0.3,\n\t\t\tcacheWrite: 3.75,\n\t\t},\n\t\tcontextWindow: 216000,\n\t\tmaxTokens: 16000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-sonnet-4.5\": {\n\t\tid: \"claude-sonnet-4.5\",\n\t\tname: \"Claude Sonnet 4.5 (latest)\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsEagerToolInputStreaming\":false},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 3,\n\t\t\toutput: 15,\n\t\t\tcacheRead: 0.3,\n\t\t\tcacheWrite: 3.75,\n\t\t},\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 32000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-sonnet-4.6\": {\n\t\tid: \"claude-sonnet-4.6\",\n\t\tname: \"Claude Sonnet 4.6\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"forceAdaptiveThinking\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"max\":\"max\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 3,\n\t\t\toutput: 15,\n\t\t\tcacheRead: 0.3,\n\t\t\tcacheWrite: 3.75,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 32000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-sonnet-5\": {\n\t\tid: \"claude-sonnet-5\",\n\t\tname: \"Claude Sonnet 5\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"forceAdaptiveThinking\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"max\":\"max\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 2,\n\t\t\toutput: 10,\n\t\t\tcacheRead: 0.2,\n\t\t\tcacheWrite: 2.5,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"gemini-2.5-pro\": {\n\t\tid: \"gemini-2.5-pro\",\n\t\tname: \"Gemini 2.5 Pro\",\n\t\tapi: \"openai-completions\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsStore\":false,\"supportsDeveloperRole\":false,\"supportsReasoningEffort\":false},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 1.25,\n\t\t\toutput: 10,\n\t\t\tcacheRead: 0.125,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 64000,\n\t} satisfies Model<\"openai-completions\">,\n\t\"gemini-3-flash-preview\": {\n\t\tid: \"gemini-3-flash-preview\",\n\t\tname: \"Gemini 3 Flash Preview\",\n\t\tapi: \"openai-completions\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsStore\":false,\"supportsDeveloperRole\":false,\"supportsReasoningEffort\":false},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 0.5,\n\t\t\toutput: 3,\n\t\t\tcacheRead: 0.05,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 64000,\n\t} satisfies Model<\"openai-completions\">,\n\t\"gemini-3.1-pro-preview\": {\n\t\tid: \"gemini-3.1-pro-preview\",\n\t\tname: \"Gemini 3.1 Pro Preview\",\n\t\tapi: \"openai-completions\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsStore\":false,\"supportsDeveloperRole\":false,\"supportsReasoningEffort\":false},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 2,\n\t\t\toutput: 12,\n\t\t\tcacheRead: 0.2,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 64000,\n\t} satisfies Model<\"openai-completions\">,\n\t\"gemini-3.5-flash\": {\n\t\tid: \"gemini-3.5-flash\",\n\t\tname: \"Gemini 3.5 Flash\",\n\t\tapi: \"openai-completions\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsStore\":false,\"supportsDeveloperRole\":false,\"supportsReasoningEffort\":false},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 1.5,\n\t\t\toutput: 9,\n\t\t\tcacheRead: 0.15,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 64000,\n\t} satisfies Model<\"openai-completions\">,\n\t\"gpt-4.1\": {\n\t\tid: \"gpt-4.1\",\n\t\tname: \"GPT-4.1\",\n\t\tapi: \"openai-completions\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsStore\":false,\"supportsDeveloperRole\":false,\"supportsReasoningEffort\":false},\n\t\treasoning: false,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 2,\n\t\t\toutput: 8,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t} satisfies Model<\"openai-completions\">,\n\t\"gpt-5-mini\": {\n\t\tid: \"gpt-5-mini\",\n\t\tname: \"GPT-5 Mini\",\n\t\tapi: \"openai-responses\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 0.25,\n\t\t\toutput: 2,\n\t\t\tcacheRead: 0.025,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 264000,\n\t\tmaxTokens: 64000,\n\t} satisfies Model<\"openai-responses\">,\n\t\"gpt-5.2\": {\n\t\tid: \"gpt-5.2\",\n\t\tname: \"GPT-5.2\",\n\t\tapi: \"openai-responses\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":\"low\",\"xhigh\":\"xhigh\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 1.75,\n\t\t\toutput: 14,\n\t\t\tcacheRead: 0.175,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 400000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-responses\">,\n\t\"gpt-5.2-codex\": {\n\t\tid: \"gpt-5.2-codex\",\n\t\tname: \"GPT-5.2 Codex\",\n\t\tapi: \"openai-responses\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":\"low\",\"xhigh\":\"xhigh\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 1.75,\n\t\t\toutput: 14,\n\t\t\tcacheRead: 0.175,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 400000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-responses\">,\n\t\"gpt-5.3-codex\": {\n\t\tid: \"gpt-5.3-codex\",\n\t\tname: \"GPT-5.3 Codex\",\n\t\tapi: \"openai-responses\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":\"low\",\"xhigh\":\"xhigh\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 1.75,\n\t\t\toutput: 14,\n\t\t\tcacheRead: 0.175,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-responses\">,\n\t\"gpt-5.4\": {\n\t\tid: \"gpt-5.4\",\n\t\tname: \"GPT-5.4\",\n\t\tapi: \"openai-responses\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":\"low\",\"xhigh\":\"xhigh\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 2.5,\n\t\t\toutput: 15,\n\t\t\tcacheRead: 0.25,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-responses\">,\n\t\"gpt-5.4-mini\": {\n\t\tid: \"gpt-5.4-mini\",\n\t\tname: \"GPT-5.4 mini\",\n\t\tapi: \"openai-responses\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":\"low\",\"xhigh\":\"xhigh\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 0.75,\n\t\t\toutput: 4.5,\n\t\t\tcacheRead: 0.075,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 400000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-responses\">,\n\t\"gpt-5.4-nano\": {\n\t\tid: \"gpt-5.4-nano\",\n\t\tname: \"GPT-5.4 nano\",\n\t\tapi: \"openai-responses\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":\"low\",\"xhigh\":\"xhigh\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 0.2,\n\t\t\toutput: 1.25,\n\t\t\tcacheRead: 0.02,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 400000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-responses\">,\n\t\"gpt-5.5\": {\n\t\tid: \"gpt-5.5\",\n\t\tname: \"GPT-5.5\",\n\t\tapi: \"openai-responses\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":\"low\",\"xhigh\":\"xhigh\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 30,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-responses\">,\n\t\"kimi-k2.7-code\": {\n\t\tid: \"kimi-k2.7-code\",\n\t\tname: \"Kimi K2.7 Code\",\n\t\tapi: \"openai-completions\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsStore\":false,\"supportsDeveloperRole\":false,\"supportsReasoningEffort\":false},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 0.95,\n\t\t\toutput: 4,\n\t\t\tcacheRead: 0.19,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 256000,\n\t\tmaxTokens: 32000,\n\t} satisfies Model<\"openai-completions\">,\n\t\"mai-code-1-flash-picker\": {\n\t\tid: \"mai-code-1-flash-picker\",\n\t\tname: \"MAI-Code-1-Flash\",\n\t\tapi: \"openai-completions\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsStore\":false,\"supportsDeveloperRole\":false,\"supportsReasoningEffort\":false},\n\t\treasoning: true,\n\t\tinput: [\"text\"],\n\t\tcost: {\n\t\t\tinput: 0.75,\n\t\t\toutput: 4.5,\n\t\t\tcacheRead: 0.075,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 256000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-completions\">,\n} as const;\n"]}
1
+ {"version":3,"file":"github-copilot.models.d.ts","sourceRoot":"","sources":["../../src/providers/github-copilot.models.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyhBxB,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport type { Model } from \"../types.ts\";\n\nexport const GITHUB_COPILOT_MODELS = {\n\t\"claude-fable-5\": {\n\t\tid: \"claude-fable-5\",\n\t\tname: \"Claude Fable 5\",\n\t\tapi: \"openai-completions\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsStore\":false,\"supportsDeveloperRole\":false,\"supportsReasoningEffort\":false},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"xhigh\":\"xhigh\",\"max\":\"max\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 10,\n\t\t\toutput: 50,\n\t\t\tcacheRead: 1,\n\t\t\tcacheWrite: 12.5,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-completions\">,\n\t\"claude-haiku-4.5\": {\n\t\tid: \"claude-haiku-4.5\",\n\t\tname: \"Claude Haiku 4.5 (latest)\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsEagerToolInputStreaming\":false},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 1,\n\t\t\toutput: 5,\n\t\t\tcacheRead: 0.1,\n\t\t\tcacheWrite: 1.25,\n\t\t},\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 64000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-opus-4.5\": {\n\t\tid: \"claude-opus-4.5\",\n\t\tname: \"Claude Opus 4.5 (latest)\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 25,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 6.25,\n\t\t},\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 32000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-opus-4.6\": {\n\t\tid: \"claude-opus-4.6\",\n\t\tname: \"Claude Opus 4.6\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"forceAdaptiveThinking\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"max\":\"max\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 25,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 6.25,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 32000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-opus-4.7\": {\n\t\tid: \"claude-opus-4.7\",\n\t\tname: \"Claude Opus 4.7\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"forceAdaptiveThinking\":true,\"supportsTemperature\":false},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"max\":\"max\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 25,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 6.25,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 32000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-opus-4.8\": {\n\t\tid: \"claude-opus-4.8\",\n\t\tname: \"Claude Opus 4.8\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"forceAdaptiveThinking\":true,\"supportsTemperature\":false},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"max\":\"max\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 25,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 6.25,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 64000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-sonnet-4\": {\n\t\tid: \"claude-sonnet-4\",\n\t\tname: \"Claude Sonnet 4 (latest)\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsEagerToolInputStreaming\":false},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 3,\n\t\t\toutput: 15,\n\t\t\tcacheRead: 0.3,\n\t\t\tcacheWrite: 3.75,\n\t\t},\n\t\tcontextWindow: 216000,\n\t\tmaxTokens: 16000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-sonnet-4.5\": {\n\t\tid: \"claude-sonnet-4.5\",\n\t\tname: \"Claude Sonnet 4.5 (latest)\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsEagerToolInputStreaming\":false},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 3,\n\t\t\toutput: 15,\n\t\t\tcacheRead: 0.3,\n\t\t\tcacheWrite: 3.75,\n\t\t},\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 32000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-sonnet-4.6\": {\n\t\tid: \"claude-sonnet-4.6\",\n\t\tname: \"Claude Sonnet 4.6\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"forceAdaptiveThinking\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"max\":\"max\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 3,\n\t\t\toutput: 15,\n\t\t\tcacheRead: 0.3,\n\t\t\tcacheWrite: 3.75,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 32000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-sonnet-5\": {\n\t\tid: \"claude-sonnet-5\",\n\t\tname: \"Claude Sonnet 5\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"forceAdaptiveThinking\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"max\":\"max\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 2,\n\t\t\toutput: 10,\n\t\t\tcacheRead: 0.2,\n\t\t\tcacheWrite: 2.5,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"gemini-2.5-pro\": {\n\t\tid: \"gemini-2.5-pro\",\n\t\tname: \"Gemini 2.5 Pro\",\n\t\tapi: \"openai-completions\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsStore\":false,\"supportsDeveloperRole\":false,\"supportsReasoningEffort\":false},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 1.25,\n\t\t\toutput: 10,\n\t\t\tcacheRead: 0.125,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 64000,\n\t} satisfies Model<\"openai-completions\">,\n\t\"gemini-3-flash-preview\": {\n\t\tid: \"gemini-3-flash-preview\",\n\t\tname: \"Gemini 3 Flash Preview\",\n\t\tapi: \"openai-completions\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsStore\":false,\"supportsDeveloperRole\":false,\"supportsReasoningEffort\":false},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 0.5,\n\t\t\toutput: 3,\n\t\t\tcacheRead: 0.05,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 64000,\n\t} satisfies Model<\"openai-completions\">,\n\t\"gemini-3.1-pro-preview\": {\n\t\tid: \"gemini-3.1-pro-preview\",\n\t\tname: \"Gemini 3.1 Pro Preview\",\n\t\tapi: \"openai-completions\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsStore\":false,\"supportsDeveloperRole\":false,\"supportsReasoningEffort\":false},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 2,\n\t\t\toutput: 12,\n\t\t\tcacheRead: 0.2,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 64000,\n\t} satisfies Model<\"openai-completions\">,\n\t\"gemini-3.5-flash\": {\n\t\tid: \"gemini-3.5-flash\",\n\t\tname: \"Gemini 3.5 Flash\",\n\t\tapi: \"openai-completions\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsStore\":false,\"supportsDeveloperRole\":false,\"supportsReasoningEffort\":false},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 1.5,\n\t\t\toutput: 9,\n\t\t\tcacheRead: 0.15,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 64000,\n\t} satisfies Model<\"openai-completions\">,\n\t\"gpt-4.1\": {\n\t\tid: \"gpt-4.1\",\n\t\tname: \"GPT-4.1\",\n\t\tapi: \"openai-completions\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsStore\":false,\"supportsDeveloperRole\":false,\"supportsReasoningEffort\":false},\n\t\treasoning: false,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 2,\n\t\t\toutput: 8,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t} satisfies Model<\"openai-completions\">,\n\t\"gpt-5-mini\": {\n\t\tid: \"gpt-5-mini\",\n\t\tname: \"GPT-5 Mini\",\n\t\tapi: \"openai-responses\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 0.25,\n\t\t\toutput: 2,\n\t\t\tcacheRead: 0.025,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 264000,\n\t\tmaxTokens: 64000,\n\t} satisfies Model<\"openai-responses\">,\n\t\"gpt-5.2\": {\n\t\tid: \"gpt-5.2\",\n\t\tname: \"GPT-5.2\",\n\t\tapi: \"openai-responses\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":\"low\",\"xhigh\":\"xhigh\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 1.75,\n\t\t\toutput: 14,\n\t\t\tcacheRead: 0.175,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 400000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-responses\">,\n\t\"gpt-5.2-codex\": {\n\t\tid: \"gpt-5.2-codex\",\n\t\tname: \"GPT-5.2 Codex\",\n\t\tapi: \"openai-responses\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":\"low\",\"xhigh\":\"xhigh\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 1.75,\n\t\t\toutput: 14,\n\t\t\tcacheRead: 0.175,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 400000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-responses\">,\n\t\"gpt-5.3-codex\": {\n\t\tid: \"gpt-5.3-codex\",\n\t\tname: \"GPT-5.3 Codex\",\n\t\tapi: \"openai-responses\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":\"low\",\"xhigh\":\"xhigh\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 1.75,\n\t\t\toutput: 14,\n\t\t\tcacheRead: 0.175,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-responses\">,\n\t\"gpt-5.4\": {\n\t\tid: \"gpt-5.4\",\n\t\tname: \"GPT-5.4\",\n\t\tapi: \"openai-responses\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":\"low\",\"xhigh\":\"xhigh\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 2.5,\n\t\t\toutput: 15,\n\t\t\tcacheRead: 0.25,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-responses\">,\n\t\"gpt-5.4-mini\": {\n\t\tid: \"gpt-5.4-mini\",\n\t\tname: \"GPT-5.4 mini\",\n\t\tapi: \"openai-responses\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":\"low\",\"xhigh\":\"xhigh\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 0.75,\n\t\t\toutput: 4.5,\n\t\t\tcacheRead: 0.075,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 400000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-responses\">,\n\t\"gpt-5.4-nano\": {\n\t\tid: \"gpt-5.4-nano\",\n\t\tname: \"GPT-5.4 nano\",\n\t\tapi: \"openai-responses\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":\"low\",\"xhigh\":\"xhigh\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 0.2,\n\t\t\toutput: 1.25,\n\t\t\tcacheRead: 0.02,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 400000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-responses\">,\n\t\"gpt-5.5\": {\n\t\tid: \"gpt-5.5\",\n\t\tname: \"GPT-5.5\",\n\t\tapi: \"openai-responses\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":\"low\",\"xhigh\":\"xhigh\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 30,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-responses\">,\n\t\"gpt-5.6-luna\": {\n\t\tid: \"gpt-5.6-luna\",\n\t\tname: \"GPT-5.6 Luna\",\n\t\tapi: \"openai-responses\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":\"low\",\"xhigh\":\"xhigh\",\"max\":\"max\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 1,\n\t\t\toutput: 6,\n\t\t\tcacheRead: 0.1,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 1050000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-responses\">,\n\t\"gpt-5.6-sol\": {\n\t\tid: \"gpt-5.6-sol\",\n\t\tname: \"GPT-5.6 Sol\",\n\t\tapi: \"openai-responses\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":\"low\",\"xhigh\":\"xhigh\",\"max\":\"max\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 30,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 1050000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-responses\">,\n\t\"gpt-5.6-terra\": {\n\t\tid: \"gpt-5.6-terra\",\n\t\tname: \"GPT-5.6 Terra\",\n\t\tapi: \"openai-responses\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":\"low\",\"xhigh\":\"xhigh\",\"max\":\"max\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 2.5,\n\t\t\toutput: 15,\n\t\t\tcacheRead: 0.25,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 1050000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-responses\">,\n\t\"kimi-k2.7-code\": {\n\t\tid: \"kimi-k2.7-code\",\n\t\tname: \"Kimi K2.7 Code\",\n\t\tapi: \"openai-completions\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\tcompat: {\"supportsStore\":false,\"supportsDeveloperRole\":false,\"supportsReasoningEffort\":false},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 0.95,\n\t\t\toutput: 4,\n\t\t\tcacheRead: 0.19,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 256000,\n\t\tmaxTokens: 32000,\n\t} satisfies Model<\"openai-completions\">,\n\t\"mai-code-1-flash-picker\": {\n\t\tid: \"mai-code-1-flash-picker\",\n\t\tname: \"MAI-Code-1-Flash\",\n\t\tapi: \"openai-responses\",\n\t\tprovider: \"github-copilot\",\n\t\tbaseUrl: \"https://api.individual.githubcopilot.com\",\n\t\theaders: {\"User-Agent\":\"GitHubCopilotChat/0.35.0\",\"Editor-Version\":\"vscode/1.107.0\",\"Editor-Plugin-Version\":\"copilot-chat/0.35.0\",\"Copilot-Integration-Id\":\"vscode-chat\"},\n\t\treasoning: true,\n\t\tinput: [\"text\"],\n\t\tcost: {\n\t\t\tinput: 0.75,\n\t\t\toutput: 4.5,\n\t\t\tcacheRead: 0.075,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 256000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-responses\">,\n} as const;\n"]}
@@ -10,6 +10,7 @@ export const GITHUB_COPILOT_MODELS = {
10
10
  headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
11
11
  compat: { "supportsStore": false, "supportsDeveloperRole": false, "supportsReasoningEffort": false },
12
12
  reasoning: true,
13
+ thinkingLevelMap: { "off": null, "xhigh": "xhigh", "max": "max" },
13
14
  input: ["text", "image"],
14
15
  cost: {
15
16
  input: 10,
@@ -249,7 +250,7 @@ export const GITHUB_COPILOT_MODELS = {
249
250
  cacheRead: 0.2,
250
251
  cacheWrite: 0,
251
252
  },
252
- contextWindow: 200000,
253
+ contextWindow: 1000000,
253
254
  maxTokens: 64000,
254
255
  },
255
256
  "gemini-3.5-flash": {
@@ -442,6 +443,63 @@ export const GITHUB_COPILOT_MODELS = {
442
443
  contextWindow: 1000000,
443
444
  maxTokens: 128000,
444
445
  },
446
+ "gpt-5.6-luna": {
447
+ id: "gpt-5.6-luna",
448
+ name: "GPT-5.6 Luna",
449
+ api: "openai-responses",
450
+ provider: "github-copilot",
451
+ baseUrl: "https://api.individual.githubcopilot.com",
452
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
453
+ reasoning: true,
454
+ thinkingLevelMap: { "off": null, "minimal": "low", "xhigh": "xhigh", "max": "max" },
455
+ input: ["text", "image"],
456
+ cost: {
457
+ input: 1,
458
+ output: 6,
459
+ cacheRead: 0.1,
460
+ cacheWrite: 0,
461
+ },
462
+ contextWindow: 1050000,
463
+ maxTokens: 128000,
464
+ },
465
+ "gpt-5.6-sol": {
466
+ id: "gpt-5.6-sol",
467
+ name: "GPT-5.6 Sol",
468
+ api: "openai-responses",
469
+ provider: "github-copilot",
470
+ baseUrl: "https://api.individual.githubcopilot.com",
471
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
472
+ reasoning: true,
473
+ thinkingLevelMap: { "off": null, "minimal": "low", "xhigh": "xhigh", "max": "max" },
474
+ input: ["text", "image"],
475
+ cost: {
476
+ input: 5,
477
+ output: 30,
478
+ cacheRead: 0.5,
479
+ cacheWrite: 0,
480
+ },
481
+ contextWindow: 1050000,
482
+ maxTokens: 128000,
483
+ },
484
+ "gpt-5.6-terra": {
485
+ id: "gpt-5.6-terra",
486
+ name: "GPT-5.6 Terra",
487
+ api: "openai-responses",
488
+ provider: "github-copilot",
489
+ baseUrl: "https://api.individual.githubcopilot.com",
490
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
491
+ reasoning: true,
492
+ thinkingLevelMap: { "off": null, "minimal": "low", "xhigh": "xhigh", "max": "max" },
493
+ input: ["text", "image"],
494
+ cost: {
495
+ input: 2.5,
496
+ output: 15,
497
+ cacheRead: 0.25,
498
+ cacheWrite: 0,
499
+ },
500
+ contextWindow: 1050000,
501
+ maxTokens: 128000,
502
+ },
445
503
  "kimi-k2.7-code": {
446
504
  id: "kimi-k2.7-code",
447
505
  name: "Kimi K2.7 Code",
@@ -464,11 +522,10 @@ export const GITHUB_COPILOT_MODELS = {
464
522
  "mai-code-1-flash-picker": {
465
523
  id: "mai-code-1-flash-picker",
466
524
  name: "MAI-Code-1-Flash",
467
- api: "openai-completions",
525
+ api: "openai-responses",
468
526
  provider: "github-copilot",
469
527
  baseUrl: "https://api.individual.githubcopilot.com",
470
528
  headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
471
- compat: { "supportsStore": false, "supportsDeveloperRole": false, "supportsReasoningEffort": false },
472
529
  reasoning: true,
473
530
  input: ["text"],
474
531
  cost: {