@theokit/sdk 5.9.1 → 5.9.2

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 (146) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/dist/{agent-R5RERYFU.js → agent-GZVZXKME.js} +15 -14
  3. package/dist/{agent-R5RERYFU.js.map → agent-GZVZXKME.js.map} +1 -1
  4. package/dist/{agent-5M7WLUWH.cjs → agent-WQ4LLTSY.cjs} +16 -15
  5. package/dist/{agent-5M7WLUWH.cjs.map → agent-WQ4LLTSY.cjs.map} +1 -1
  6. package/dist/agent-session-store-ODD3IZCW.js +6 -0
  7. package/dist/{agent-session-store-AFML3AXC.js.map → agent-session-store-ODD3IZCW.js.map} +1 -1
  8. package/dist/agent-session-store-SVEJHSUA.cjs +23 -0
  9. package/dist/{agent-session-store-MTSIY3MH.cjs.map → agent-session-store-SVEJHSUA.cjs.map} +1 -1
  10. package/dist/auth/index.cjs +8 -7
  11. package/dist/auth/index.cjs.map +1 -1
  12. package/dist/auth/index.js +3 -2
  13. package/dist/auth/index.js.map +1 -1
  14. package/dist/{chunk-TC4RWP3Y.js → chunk-47Z6LP3I.js} +3 -3
  15. package/dist/{chunk-TC4RWP3Y.js.map → chunk-47Z6LP3I.js.map} +1 -1
  16. package/dist/{chunk-TTBIQTO5.cjs → chunk-DLUCTZ56.cjs} +15 -15
  17. package/dist/{chunk-TTBIQTO5.cjs.map → chunk-DLUCTZ56.cjs.map} +1 -1
  18. package/dist/chunk-EHD25JBZ.cjs +10 -0
  19. package/dist/chunk-EHD25JBZ.cjs.map +1 -0
  20. package/dist/{chunk-NOO6GZTZ.js → chunk-EVH3OUMY.js} +13 -12
  21. package/dist/chunk-EVH3OUMY.js.map +1 -0
  22. package/dist/{chunk-5522X223.js → chunk-EXI7EHDN.js} +4 -4
  23. package/dist/{chunk-5522X223.js.map → chunk-EXI7EHDN.js.map} +1 -1
  24. package/dist/{chunk-PSLCVSCS.cjs → chunk-FR6COQXZ.cjs} +6 -6
  25. package/dist/{chunk-PSLCVSCS.cjs.map → chunk-FR6COQXZ.cjs.map} +1 -1
  26. package/dist/{chunk-JOFVLOFY.js → chunk-FTZTZBCU.js} +12 -4
  27. package/dist/chunk-FTZTZBCU.js.map +1 -0
  28. package/dist/{chunk-HOHR75KF.js → chunk-HI3W37FY.js} +4 -3
  29. package/dist/chunk-HI3W37FY.js.map +1 -0
  30. package/dist/chunk-HU666T3Q.cjs +1891 -0
  31. package/dist/chunk-HU666T3Q.cjs.map +1 -0
  32. package/dist/{chunk-53RDNK3H.js → chunk-I2ORT6QD.js} +3 -3
  33. package/dist/{chunk-53RDNK3H.js.map → chunk-I2ORT6QD.js.map} +1 -1
  34. package/dist/{chunk-56BCEM26.cjs → chunk-JU76WCW7.cjs} +90 -89
  35. package/dist/chunk-JU76WCW7.cjs.map +1 -0
  36. package/dist/{chunk-LL4QA3DI.cjs → chunk-KXKT3HSD.cjs} +4 -4
  37. package/dist/{chunk-LL4QA3DI.cjs.map → chunk-KXKT3HSD.cjs.map} +1 -1
  38. package/dist/{chunk-QCIARBLS.js → chunk-M2CCHC66.js} +3 -3
  39. package/dist/{chunk-QCIARBLS.js.map → chunk-M2CCHC66.js.map} +1 -1
  40. package/dist/{chunk-QDQQYRJI.js → chunk-N7KYUNFO.js} +3 -3
  41. package/dist/{chunk-QDQQYRJI.js.map → chunk-N7KYUNFO.js.map} +1 -1
  42. package/dist/{chunk-UNZOJVVC.js → chunk-OZLQ6ZFM.js} +3 -3
  43. package/dist/{chunk-UNZOJVVC.js.map → chunk-OZLQ6ZFM.js.map} +1 -1
  44. package/dist/{chunk-OOM236Z4.js → chunk-PEIV7LOU.js} +18 -17
  45. package/dist/chunk-PEIV7LOU.js.map +1 -0
  46. package/dist/chunk-Q7GYMXVC.js +8 -0
  47. package/dist/chunk-Q7GYMXVC.js.map +1 -0
  48. package/dist/{chunk-ARMFXTY6.cjs → chunk-QY3CIMUV.cjs} +34 -33
  49. package/dist/chunk-QY3CIMUV.cjs.map +1 -0
  50. package/dist/{chunk-B3XXQX6L.cjs → chunk-RX3CFWQ2.cjs} +6 -6
  51. package/dist/{chunk-B3XXQX6L.cjs.map → chunk-RX3CFWQ2.cjs.map} +1 -1
  52. package/dist/chunk-SGC7LSHF.cjs +18 -0
  53. package/dist/{chunk-R3ZQBPA5.cjs.map → chunk-SGC7LSHF.cjs.map} +1 -1
  54. package/dist/{chunk-RA7IE4NK.cjs → chunk-SKDNCTXG.cjs} +4 -3
  55. package/dist/chunk-SKDNCTXG.cjs.map +1 -0
  56. package/dist/chunk-SVCPJRUB.js +1874 -0
  57. package/dist/chunk-SVCPJRUB.js.map +1 -0
  58. package/dist/{chunk-EJROML3Q.js → chunk-TX56N7FR.js} +4 -3
  59. package/dist/chunk-TX56N7FR.js.map +1 -0
  60. package/dist/{chunk-76PIKR4P.cjs → chunk-VZ2JZ2EH.cjs} +5 -5
  61. package/dist/{chunk-76PIKR4P.cjs.map → chunk-VZ2JZ2EH.cjs.map} +1 -1
  62. package/dist/{chunk-T5KOSR5Y.cjs → chunk-X7Z2FEI7.cjs} +8 -8
  63. package/dist/{chunk-T5KOSR5Y.cjs.map → chunk-X7Z2FEI7.cjs.map} +1 -1
  64. package/dist/{chunk-2WXHA33T.js → chunk-XERM7PDQ.js} +3 -3
  65. package/dist/{chunk-2WXHA33T.js.map → chunk-XERM7PDQ.js.map} +1 -1
  66. package/dist/{chunk-MEUBLCM4.cjs → chunk-YEHQ3SIC.cjs} +4 -3
  67. package/dist/chunk-YEHQ3SIC.cjs.map +1 -0
  68. package/dist/{chunk-YIFFF23U.cjs → chunk-ZAM7BJXJ.cjs} +5 -5
  69. package/dist/{chunk-YIFFF23U.cjs.map → chunk-ZAM7BJXJ.cjs.map} +1 -1
  70. package/dist/{chunk-R2C3HXR3.js → chunk-ZDF2IJKC.js} +3 -3
  71. package/dist/{chunk-R2C3HXR3.js.map → chunk-ZDF2IJKC.js.map} +1 -1
  72. package/dist/{chunk-GZV6AVRL.cjs → chunk-ZWACQM5U.cjs} +11 -3
  73. package/dist/chunk-ZWACQM5U.cjs.map +1 -0
  74. package/dist/{compact-session-RBPLUPCK.cjs → compact-session-4QHBBGEY.cjs} +16 -15
  75. package/dist/{compact-session-RBPLUPCK.cjs.map → compact-session-4QHBBGEY.cjs.map} +1 -1
  76. package/dist/{compact-session-2N3ZYJTW.js → compact-session-PVAWTKKL.js} +7 -6
  77. package/dist/{compact-session-2N3ZYJTW.js.map → compact-session-PVAWTKKL.js.map} +1 -1
  78. package/dist/cron.cjs +15 -14
  79. package/dist/cron.js +14 -13
  80. package/dist/eval.cjs +14 -13
  81. package/dist/eval.cjs.map +1 -1
  82. package/dist/eval.js +13 -12
  83. package/dist/eval.js.map +1 -1
  84. package/dist/fs-session-store-LCZBM3LT.js +10 -0
  85. package/dist/{fs-session-store-STZZFXH2.js.map → fs-session-store-LCZBM3LT.js.map} +1 -1
  86. package/dist/{fs-session-store-JHBJFKVV.cjs → fs-session-store-SVEMRE4K.cjs} +5 -5
  87. package/dist/{fs-session-store-JHBJFKVV.cjs.map → fs-session-store-SVEMRE4K.cjs.map} +1 -1
  88. package/dist/{index-manager-ONQJSWX5.js → index-manager-6B2UF5S3.js} +5 -5
  89. package/dist/{index-manager-ONQJSWX5.js.map → index-manager-6B2UF5S3.js.map} +1 -1
  90. package/dist/{index-manager-ZGJN25FD.cjs → index-manager-M3FHJCHQ.cjs} +6 -6
  91. package/dist/{index-manager-ZGJN25FD.cjs.map → index-manager-M3FHJCHQ.cjs.map} +1 -1
  92. package/dist/index.cjs +55 -54
  93. package/dist/index.cjs.map +1 -1
  94. package/dist/index.d.cts +30 -3
  95. package/dist/index.d.ts +30 -3
  96. package/dist/index.js +18 -17
  97. package/dist/index.js.map +1 -1
  98. package/dist/{inject-session-YNNOE3O6.js → inject-session-O24XGRR6.js} +5 -5
  99. package/dist/{inject-session-YNNOE3O6.js.map → inject-session-O24XGRR6.js.map} +1 -1
  100. package/dist/{inject-session-3FPXJDJP.cjs → inject-session-OMLFL2V3.cjs} +7 -7
  101. package/dist/{inject-session-3FPXJDJP.cjs.map → inject-session-OMLFL2V3.cjs.map} +1 -1
  102. package/dist/internal/memory/adapters/index.cjs +3 -2
  103. package/dist/internal/memory/adapters/index.js +2 -1
  104. package/dist/internal/memory/storage/index.cjs +32 -32
  105. package/dist/internal/memory/storage/index.js +3 -3
  106. package/dist/internal/persistence/persistence-schema.d.cts +1 -1
  107. package/dist/internal/persistence/persistence-schema.d.ts +1 -1
  108. package/dist/internal/providers/catalog-loader.d.ts +30 -3
  109. package/dist/internal/runtime-fetch.d.ts +1 -0
  110. package/dist/models.cjs +12 -11
  111. package/dist/models.cjs.map +1 -1
  112. package/dist/models.js +4 -3
  113. package/dist/models.js.map +1 -1
  114. package/dist/persistence.cjs +7 -7
  115. package/dist/persistence.js +2 -2
  116. package/dist/providers.cjs +6 -5
  117. package/dist/providers.js +4 -3
  118. package/dist/{session-transcript-VTBTCGQX.js → session-transcript-AR7IBICT.js} +3 -3
  119. package/dist/{session-transcript-VTBTCGQX.js.map → session-transcript-AR7IBICT.js.map} +1 -1
  120. package/dist/{session-transcript-LGHSNVY5.cjs → session-transcript-RACG7BK2.cjs} +16 -16
  121. package/dist/{session-transcript-LGHSNVY5.cjs.map → session-transcript-RACG7BK2.cjs.map} +1 -1
  122. package/dist/subscription/index.cjs +2 -1
  123. package/dist/subscription/index.cjs.map +1 -1
  124. package/dist/subscription/index.js +2 -1
  125. package/dist/subscription/index.js.map +1 -1
  126. package/docs/error-codes.md +13 -13
  127. package/package.json +2 -2
  128. package/dist/agent-session-store-AFML3AXC.js +0 -6
  129. package/dist/agent-session-store-MTSIY3MH.cjs +0 -23
  130. package/dist/chunk-56BCEM26.cjs.map +0 -1
  131. package/dist/chunk-ARMFXTY6.cjs.map +0 -1
  132. package/dist/chunk-EJROML3Q.js.map +0 -1
  133. package/dist/chunk-GZV6AVRL.cjs.map +0 -1
  134. package/dist/chunk-HOHR75KF.js.map +0 -1
  135. package/dist/chunk-JOFVLOFY.js.map +0 -1
  136. package/dist/chunk-MEUBLCM4.cjs.map +0 -1
  137. package/dist/chunk-MFZODA5Y.js +0 -583
  138. package/dist/chunk-MFZODA5Y.js.map +0 -1
  139. package/dist/chunk-NOO6GZTZ.js.map +0 -1
  140. package/dist/chunk-OOM236Z4.js.map +0 -1
  141. package/dist/chunk-R3ZQBPA5.cjs +0 -18
  142. package/dist/chunk-RA7IE4NK.cjs.map +0 -1
  143. package/dist/chunk-YRJA2POB.cjs +0 -601
  144. package/dist/chunk-YRJA2POB.cjs.map +0 -1
  145. package/dist/fs-session-store-STZZFXH2.js +0 -10
  146. package/dist/provider-catalog.json +0 -1295
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/providers/registry.ts","../src/internal/providers/catalog-schema.ts","../src/internal/providers/provider-catalog.json","../src/internal/providers/catalog-loader.ts","../src/internal/providers/builtin/anthropic.ts","../src/internal/providers/builtin/bedrock.ts","../src/internal/providers/builtin/openai-compatible.ts","../src/internal/providers/builtin/cerebras.ts","../src/internal/providers/builtin/cohere.ts","../src/internal/providers/builtin/deepinfra.ts","../src/internal/providers/builtin/gemini.ts","../src/internal/providers/builtin/google.ts","../src/internal/providers/builtin/groq.ts","../src/internal/providers/builtin/llamacpp.ts","../src/internal/providers/builtin/lmstudio.ts","../src/internal/providers/builtin/mistral.ts","../src/internal/providers/builtin/ollama.ts","../src/internal/providers/builtin/openai.ts","../src/internal/providers/builtin/openai-chatgpt.ts","../src/internal/providers/builtin/openrouter.ts","../src/internal/providers/builtin/perplexity.ts","../src/internal/providers/builtin/together.ts","../src/internal/providers/builtin/vertex.ts","../src/internal/providers/builtin/xai.ts","../src/internal/providers/builtin/index.ts"],"names":[],"mappings":"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","file":"chunk-SVCPJRUB.js","sourcesContent":["/**\n * Provider registry (T3.2, ADR D107).\n *\n * `registerProvider` is idempotent and surface-warning: re-registering\n * a `name` logs to stderr (D107 last-writer-wins with WARN). Alias\n * collisions also warn (EC-5).\n *\n * @internal\n */\n\nimport { diag } from \"../diagnostics.js\";\nimport { globalSingleton } from \"../global-singleton.js\";\nimport type { ProviderProfile } from \"./types.js\";\n\n/**\n * M44 B1 fix — the registry state lives on `globalThis` keyed by `Symbol.for`, so EVERY bundle copy of this\n * module (tsup bundles each entry separately with `splitting: false` — `dist/index.js` and `dist/models.js`\n * each embed their own copy) shares the SAME maps. Without this, `@theokit/sdk/models`'s\n * `refreshModelCatalog` saw an eternally-empty registry and its patches were invisible to the core bundle's\n * capability/pricing lookups (state duplication made load-bearing by M44).\n */\nconst REGISTRY = globalSingleton(\n \"theokit-sdk.providers.registry\",\n () => new Map<string, ProviderProfile>(),\n);\nconst ALIASES = globalSingleton(\"theokit-sdk.providers.aliases\", () => new Map<string, string>());\n\nexport function registerProvider(profile: ProviderProfile): void {\n if (REGISTRY.has(profile.name)) {\n diag(`[theokit-sdk] Provider \"${profile.name}\" overridden by user plugin.\\n`);\n }\n REGISTRY.set(profile.name, profile);\n for (const alias of profile.aliases ?? []) {\n // EC-5: surface alias collision so operators notice mis-routing.\n const previous = ALIASES.get(alias);\n if (previous !== undefined && previous !== profile.name) {\n diag(`[theokit-sdk] Alias \"${alias}\" collision: was \"${previous}\", now \"${profile.name}\".\\n`);\n }\n ALIASES.set(alias, profile.name);\n }\n}\n\nexport function getProviderProfile(name: string): ProviderProfile | undefined {\n const canonical = ALIASES.get(name) ?? name;\n return REGISTRY.get(canonical);\n}\n\nexport function listProviders(): ProviderProfile[] {\n return Array.from(REGISTRY.values());\n}\n\n/** Test-only reset. @internal */\nexport function _resetProvidersForTests(): void {\n REGISTRY.clear();\n ALIASES.clear();\n}\n","import { z } from \"zod\";\n\n/**\n * M44 — the per-model catalog sub-schema. Field names mirror models.dev VERBATIM (snake_case) so\n * `scripts/refresh-catalog.mjs` regenerates the vendored data mechanically from `api.json` with zero\n * renaming (ADR D1).\n * TOLERANT by design: every field optional, unknown keys ignored — models.dev adds fields over time and\n * additive drift must never break the loader (Blueprint §6.4).\n *\n * theokit extensions beyond models.dev: `structured_output` / `cache_control` (both already exist on the\n * SDK's `ModelCapabilities`; models.dev has no such flags).\n *\n * Semver-exempt: nothing here is declared in `package.json` `exports`. `MODALITIES` is nonetheless\n * reachable from published declarations through the type graph, so it must be EMITTED.\n *\n * NOTE — no internal-visibility tag in this block. `tsconfig.base.json` sets `stripInternal: true`,\n * and TypeScript scans EVERY leading comment range of the declaration that follows; the tag that\n * used to sit here deleted the `MODALITIES` declaration below from the emitted `.d.ts`.\n */\n\nexport const MODALITIES = [\"text\", \"audio\", \"image\", \"video\", \"pdf\"] as const;\n\n/**\n * One input or output medium a model accepts or produces.\n *\n * The union is derived from `MODALITIES`, so it is closed: a models.dev entry whose\n * `modalities.input` or `modalities.output` array contains a string outside this set fails\n * `catalogModelSchema.safeParse`, and `patchIndexFromApiJson` drops that single model rather\n * than the whole payload. Widening the catalog to a new medium means adding it to `MODALITIES`\n * first — nothing else in the schema enumerates media.\n */\nexport type Modality = (typeof MODALITIES)[number];\n\nconst costSchema = z\n .object({\n /** USD per 1M tokens (models.dev convention). */\n input: z.number().nonnegative(),\n output: z.number().nonnegative(),\n cache_read: z.number().nonnegative().optional(),\n cache_write: z.number().nonnegative().optional(),\n })\n .loose();\n\nconst limitSchema = z\n .object({\n context: z.number().positive(),\n input: z.number().positive().optional(),\n output: z.number().positive().optional(),\n })\n .loose();\n\nconst modalitiesSchema = z\n .object({\n input: z.array(z.enum(MODALITIES)).optional(),\n output: z.array(z.enum(MODALITIES)).optional(),\n })\n .loose();\n\nexport const catalogModelSchema = z\n .object({\n name: z.string().optional(),\n release_date: z.string().optional(),\n attachment: z.boolean().optional(),\n reasoning: z.boolean().optional(),\n temperature: z.boolean().optional(),\n tool_call: z.boolean().optional(),\n /** theokit extension — maps to ModelCapabilities.supportsStructuredOutput. */\n structured_output: z.boolean().optional(),\n /** theokit extension — maps to ModelCapabilities.supportsCacheControl. */\n cache_control: z.boolean().optional(),\n cost: costSchema.optional(),\n limit: limitSchema.optional(),\n modalities: modalitiesSchema.optional(),\n status: z.enum([\"alpha\", \"beta\", \"deprecated\"]).optional(),\n })\n .loose();\n\n/**\n * One model entry as it is stored in the vendored catalog and as models.dev publishes it.\n *\n * Every field is optional, so an entry that carries only `name` still parses. Reading a value\n * therefore means handling `undefined` at each level — `model.cost?.cache_read`, not\n * `model.cost.cache_read`. Field names are models.dev's own snake_case, kept verbatim so the\n * refresh script can copy `api.json` across without renaming.\n *\n * The schema is loose rather than strict: unknown keys survive parsing and stay on the returned\n * object instead of being rejected or dropped. That is what lets models.dev add a field without\n * breaking the loader — the cost is that a typo in a key name parses silently, so a caller\n * cannot use \"it parsed\" as evidence that a field it expected was present.\n *\n * `structured_output` and `cache_control` are theokit's own additions; models.dev publishes\n * neither.\n */\nexport type CatalogModel = z.infer<typeof catalogModelSchema>;\n\n/**\n * Per-token pricing for one model, in USD per 1M tokens (models.dev's unit — not per token, and\n * not per 1K).\n *\n * `input` and `output` are required and non-negative; the two cache buckets are optional and\n * absent for models that do not price caching separately. Absent is not zero: a missing\n * `cache_read` means the catalog says nothing about the cost of a cache hit, so a caller that\n * defaults it to 0 is asserting free cache reads on its own authority.\n *\n * Like `CatalogModel`, the shape is loose — unknown pricing keys published upstream are kept on\n * the parsed value.\n */\nexport type CatalogModelCost = z.infer<typeof costSchema>;\n\n/**\n * One provider entry in the vendored catalog.\n *\n * LOOSE like `catalogModelSchema` beside it, and for the same reason: this validates a vendored data\n * file that upstream extends over time, so unknown keys are kept rather than rejected. What it does\n * NOT do is what the hand-rolled check it replaced did — assert. That check tested nine fields with\n * `typeof`/`Array.isArray` and then cast the whole object through `as unknown as CatalogEntry`, so\n * `capabilities`' contents, `aliases`, `modelsUrl`, `hostname`, `extraHeaders` and `models` were\n * declared and never checked. Standing next to zod — one of this package's three runtime\n * dependencies — and reimplementing a worse version of it is the Don't-Reinvent rung of\n * `rules/parsimony-ladder.md`.\n *\n * `apiMode` and `authType` are the closed unions from `types/provider-profile.ts`. Enumerating them\n * here means an entry naming a mode the SDK cannot dispatch is dropped with a WARN at load, instead\n * of reaching `selectTransport` as a string that matches no branch.\n */\nexport const catalogEntrySchema = z\n .object({\n id: z.string().min(1),\n displayName: z.string().min(1),\n apiMode: z.enum([\n \"chat_completions\",\n \"anthropic_messages\",\n \"responses_api\",\n \"bedrock\",\n \"bedrock_anthropic\",\n ]),\n authType: z.enum([\n \"api_key\",\n \"oauth_device_code\",\n \"oauth_external\",\n \"aws_sdk\",\n \"aws_bearer\",\n \"gcp_oauth\",\n \"none\",\n ]),\n baseUrl: z.string(),\n envVars: z.array(z.string()),\n fallbackModels: z.array(z.string()),\n capabilities: z.object({\n supportsToolUse: z.boolean(),\n supportsVision: z.boolean(),\n supportsStructuredOutput: z.boolean(),\n supportsStreaming: z.boolean(),\n supportsCacheControl: z.boolean(),\n maxContextTokens: z.number().int().positive().optional(),\n maxOutputTokens: z.number().int().positive().optional(),\n }),\n aliases: z.array(z.string()).optional(),\n modelsUrl: z.string().optional(),\n hostname: z.string().optional(),\n extraHeaders: z.record(z.string(), z.string()).optional(),\n models: z.record(z.string(), catalogModelSchema).optional(),\n })\n .loose();\n","[\n {\n \"id\": \"openai\",\n \"displayName\": \"OpenAI\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.openai.com/v1\",\n \"envVars\": [\"OPENAI_API_KEY\"],\n \"fallbackModels\": [\"gpt-4o-mini\", \"gpt-4o\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n },\n \"aliases\": [\"openai\", \"openai-chatgpt\"],\n \"models\": {\n \"gpt-4o-mini\": {\n \"name\": \"GPT-4o mini\",\n \"release_date\": \"2024-07-18\",\n \"attachment\": true,\n \"reasoning\": false,\n \"temperature\": true,\n \"tool_call\": true,\n \"structured_output\": true,\n \"cost\": {\n \"input\": 0.15,\n \"output\": 0.6,\n \"cache_read\": 0.075\n },\n \"limit\": {\n \"context\": 128000,\n \"output\": 16384\n },\n \"modalities\": {\n \"input\": [\"text\", \"image\"],\n \"output\": [\"text\"]\n },\n \"cache_control\": false\n },\n \"gpt-4o\": {\n \"name\": \"GPT-4o\",\n \"release_date\": \"2024-05-13\",\n \"attachment\": true,\n \"reasoning\": false,\n \"temperature\": true,\n \"tool_call\": true,\n \"structured_output\": true,\n \"cost\": {\n \"input\": 2.5,\n \"output\": 10,\n \"cache_read\": 1.25\n },\n \"limit\": {\n \"context\": 128000,\n \"output\": 16384\n },\n \"modalities\": {\n \"input\": [\"text\", \"image\"],\n \"output\": [\"text\"]\n },\n \"cache_control\": false\n },\n \"gpt-4-turbo\": {\n \"name\": \"GPT-4 Turbo\",\n \"release_date\": \"2023-11-06\",\n \"attachment\": true,\n \"reasoning\": false,\n \"temperature\": true,\n \"tool_call\": true,\n \"structured_output\": false,\n \"cost\": {\n \"input\": 10,\n \"output\": 30\n },\n \"limit\": {\n \"context\": 128000,\n \"output\": 4096\n },\n \"modalities\": {\n \"input\": [\"text\", \"image\"],\n \"output\": [\"text\"]\n },\n \"cache_control\": false\n },\n \"o1\": {\n \"name\": \"o1\",\n \"release_date\": \"2024-12-05\",\n \"attachment\": true,\n \"reasoning\": true,\n \"temperature\": false,\n \"tool_call\": true,\n \"structured_output\": true,\n \"cost\": {\n \"input\": 15,\n \"output\": 60,\n \"cache_read\": 7.5\n },\n \"limit\": {\n \"context\": 200000,\n \"output\": 100000\n },\n \"modalities\": {\n \"input\": [\"text\"],\n \"output\": [\"text\"]\n },\n \"cache_control\": false\n },\n \"o3\": {\n \"name\": \"o3\",\n \"release_date\": \"2025-04-16\",\n \"attachment\": true,\n \"reasoning\": true,\n \"temperature\": false,\n \"tool_call\": true,\n \"structured_output\": true,\n \"cost\": {\n \"input\": 2,\n \"output\": 8,\n \"cache_read\": 0.5\n },\n \"limit\": {\n \"context\": 200000,\n \"output\": 100000\n },\n \"modalities\": {\n \"input\": [\"text\"],\n \"output\": [\"text\"]\n },\n \"cache_control\": false\n },\n \"gpt-4.1\": {\n \"name\": \"GPT-4.1\",\n \"release_date\": \"2025-04-14\",\n \"attachment\": true,\n \"reasoning\": false,\n \"temperature\": true,\n \"tool_call\": true,\n \"structured_output\": true,\n \"cost\": {\n \"input\": 2,\n \"output\": 8,\n \"cache_read\": 0.5\n },\n \"limit\": {\n \"context\": 1047576,\n \"output\": 32768\n },\n \"modalities\": {\n \"input\": [\"text\", \"image\"],\n \"output\": [\"text\"]\n },\n \"cache_control\": false\n },\n \"gpt-5.4\": {\n \"limit\": {\n \"context\": 400000,\n \"output\": 128000\n }\n },\n \"gpt-5.4-mini\": {\n \"limit\": {\n \"context\": 400000,\n \"output\": 128000\n }\n },\n \"gpt-5.3\": {\n \"limit\": {\n \"context\": 400000,\n \"output\": 128000\n }\n },\n \"gpt-5.2\": {\n \"limit\": {\n \"context\": 400000,\n \"output\": 128000\n }\n }\n }\n },\n {\n \"id\": \"anthropic\",\n \"displayName\": \"Anthropic\",\n \"apiMode\": \"anthropic_messages\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.anthropic.com/v1\",\n \"envVars\": [\"ANTHROPIC_API_KEY\"],\n \"fallbackModels\": [\"claude-sonnet-4-20250514\", \"claude-3-5-haiku-latest\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": false,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": true\n },\n \"aliases\": [\"anthropic\"],\n \"models\": {\n \"claude-3-5-haiku-latest\": {\n \"tool_call\": true,\n \"structured_output\": false,\n \"cache_control\": true,\n \"modalities\": {\n \"input\": [\"text\"]\n },\n \"limit\": {\n \"context\": 200000,\n \"output\": 8192\n }\n },\n \"claude-opus-4-7\": {\n \"name\": \"Claude Opus 4.7\",\n \"release_date\": \"2026-04-14\",\n \"attachment\": true,\n \"reasoning\": true,\n \"temperature\": false,\n \"tool_call\": true,\n \"structured_output\": true,\n \"cost\": {\n \"input\": 5,\n \"output\": 25,\n \"cache_read\": 0.5,\n \"cache_write\": 6.25\n },\n \"limit\": {\n \"context\": 1000000,\n \"output\": 128000\n },\n \"modalities\": {\n \"input\": [\"text\", \"image\", \"pdf\"],\n \"output\": [\"text\"]\n },\n \"cache_control\": true\n },\n \"claude-sonnet-4-6\": {\n \"name\": \"Claude Sonnet 4.6\",\n \"release_date\": \"2026-02-17\",\n \"attachment\": true,\n \"reasoning\": true,\n \"temperature\": true,\n \"tool_call\": true,\n \"structured_output\": true,\n \"cost\": {\n \"input\": 3,\n \"output\": 15,\n \"cache_read\": 0.3,\n \"cache_write\": 3.75\n },\n \"limit\": {\n \"context\": 1000000,\n \"output\": 128000\n },\n \"modalities\": {\n \"input\": [\"text\", \"image\", \"pdf\"],\n \"output\": [\"text\"]\n },\n \"cache_control\": true\n },\n \"claude-haiku-4-5-20251001\": {\n \"name\": \"Claude Haiku 4.5\",\n \"release_date\": \"2025-10-15\",\n \"attachment\": true,\n \"reasoning\": true,\n \"temperature\": true,\n \"tool_call\": true,\n \"structured_output\": true,\n \"cost\": {\n \"input\": 1,\n \"output\": 5,\n \"cache_read\": 0.1,\n \"cache_write\": 1.25\n },\n \"limit\": {\n \"context\": 200000,\n \"output\": 64000\n },\n \"modalities\": {\n \"input\": [\"text\", \"image\", \"pdf\"],\n \"output\": [\"text\"]\n },\n \"cache_control\": true\n },\n \"claude-opus-4\": {\n \"tool_call\": true,\n \"structured_output\": false,\n \"cache_control\": true,\n \"modalities\": {\n \"input\": [\"text\", \"image\"]\n },\n \"limit\": {\n \"context\": 200000,\n \"output\": 32000\n }\n },\n \"claude-sonnet-4\": {\n \"tool_call\": true,\n \"structured_output\": false,\n \"cache_control\": true,\n \"modalities\": {\n \"input\": [\"text\", \"image\"]\n },\n \"limit\": {\n \"context\": 200000,\n \"output\": 16000\n }\n },\n \"claude-3-5-sonnet\": {\n \"tool_call\": true,\n \"structured_output\": false,\n \"cache_control\": true,\n \"modalities\": {\n \"input\": [\"text\", \"image\"]\n },\n \"limit\": {\n \"context\": 200000,\n \"output\": 8192\n }\n },\n \"claude-3-5-sonnet-latest\": {\n \"tool_call\": true,\n \"structured_output\": false,\n \"cache_control\": true,\n \"modalities\": {\n \"input\": [\"text\", \"image\"]\n },\n \"limit\": {\n \"context\": 200000,\n \"output\": 8192\n }\n },\n \"claude-3-haiku\": {\n \"tool_call\": true,\n \"structured_output\": false,\n \"cache_control\": true,\n \"modalities\": {\n \"input\": [\"text\", \"image\"]\n },\n \"limit\": {\n \"context\": 200000,\n \"output\": 4096\n }\n },\n \"claude-3-opus\": {\n \"tool_call\": true,\n \"structured_output\": false,\n \"cache_control\": true,\n \"modalities\": {\n \"input\": [\"text\", \"image\"]\n },\n \"limit\": {\n \"context\": 200000,\n \"output\": 4096\n }\n },\n \"claude-opus-4.1\": {\n \"tool_call\": true,\n \"structured_output\": false,\n \"cache_control\": true,\n \"modalities\": {\n \"input\": [\"text\", \"image\"]\n },\n \"limit\": {\n \"context\": 200000,\n \"output\": 32000\n }\n },\n \"claude-sonnet-4.5\": {\n \"tool_call\": true,\n \"structured_output\": false,\n \"cache_control\": true,\n \"modalities\": {\n \"input\": [\"text\", \"image\"]\n },\n \"limit\": {\n \"context\": 200000,\n \"output\": 16000\n }\n },\n \"claude-3.5-sonnet\": {\n \"tool_call\": true,\n \"structured_output\": false,\n \"cache_control\": true,\n \"modalities\": {\n \"input\": [\"text\", \"image\"]\n },\n \"limit\": {\n \"context\": 200000,\n \"output\": 8192\n }\n }\n }\n },\n {\n \"id\": \"openrouter\",\n \"displayName\": \"OpenRouter\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://openrouter.ai/api/v1\",\n \"envVars\": [\"OPENROUTER_API_KEY\"],\n \"fallbackModels\": [\"openai/gpt-4o-mini\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n },\n \"aliases\": [\"openrouter\"]\n },\n {\n \"id\": \"groq\",\n \"displayName\": \"Groq\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.groq.com/openai/v1\",\n \"envVars\": [\"GROQ_API_KEY\"],\n \"fallbackModels\": [\"llama-3.3-70b-versatile\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n },\n \"models\": {\n \"llama-3.3-70b-versatile\": {\n \"name\": \"Llama 3.3 70B\",\n \"release_date\": \"2024-12-06\",\n \"attachment\": false,\n \"reasoning\": false,\n \"temperature\": true,\n \"tool_call\": true,\n \"cost\": {\n \"input\": 0.59,\n \"output\": 0.79\n },\n \"limit\": {\n \"context\": 131072,\n \"output\": 32768\n },\n \"modalities\": {\n \"input\": [\"text\"],\n \"output\": [\"text\"]\n }\n }\n }\n },\n {\n \"id\": \"mistral\",\n \"displayName\": \"Mistral AI\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.mistral.ai/v1\",\n \"envVars\": [\"MISTRAL_API_KEY\"],\n \"fallbackModels\": [\"mistral-large-latest\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n },\n \"models\": {\n \"mistral-large-latest\": {\n \"name\": \"Mistral Large (latest)\",\n \"release_date\": \"2024-11-01\",\n \"attachment\": true,\n \"reasoning\": false,\n \"temperature\": true,\n \"tool_call\": true,\n \"cost\": {\n \"input\": 0.5,\n \"output\": 1.5\n },\n \"limit\": {\n \"context\": 262144,\n \"output\": 262144\n },\n \"modalities\": {\n \"input\": [\"text\", \"image\"],\n \"output\": [\"text\"]\n }\n }\n }\n },\n {\n \"id\": \"deepseek\",\n \"displayName\": \"DeepSeek\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.deepseek.com/v1\",\n \"envVars\": [\"DEEPSEEK_API_KEY\"],\n \"fallbackModels\": [\"deepseek-chat\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n },\n \"models\": {\n \"deepseek-chat\": {\n \"name\": \"DeepSeek Chat\",\n \"release_date\": \"2025-12-01\",\n \"attachment\": true,\n \"reasoning\": false,\n \"temperature\": true,\n \"tool_call\": true,\n \"cost\": {\n \"input\": 0.14,\n \"output\": 0.28,\n \"cache_read\": 0.0028\n },\n \"limit\": {\n \"context\": 1000000,\n \"output\": 384000\n },\n \"modalities\": {\n \"input\": [\"text\"],\n \"output\": [\"text\"]\n }\n },\n \"deepseek-v4-flash\": {\n \"name\": \"DeepSeek V4 Flash\",\n \"release_date\": \"2026-04-24\",\n \"attachment\": false,\n \"reasoning\": true,\n \"temperature\": true,\n \"tool_call\": true,\n \"structured_output\": false,\n \"cost\": {\n \"input\": 0.14,\n \"output\": 0.28,\n \"cache_read\": 0.0028\n },\n \"limit\": {\n \"context\": 1048576,\n \"output\": 8000\n },\n \"modalities\": {\n \"input\": [\"text\"],\n \"output\": [\"text\"]\n },\n \"cache_control\": false\n },\n \"deepseek-v3.2\": {\n \"tool_call\": true,\n \"structured_output\": false,\n \"cache_control\": false,\n \"modalities\": {\n \"input\": [\"text\"]\n },\n \"limit\": {\n \"context\": 131072,\n \"output\": 8000\n }\n }\n }\n },\n {\n \"id\": \"together\",\n \"displayName\": \"Together AI\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.together.xyz/v1\",\n \"envVars\": [\"TOGETHER_API_KEY\"],\n \"fallbackModels\": [\"meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"fireworks\",\n \"displayName\": \"Fireworks AI\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.fireworks.ai/inference/v1\",\n \"envVars\": [\"FIREWORKS_API_KEY\"],\n \"fallbackModels\": [\"accounts/fireworks/models/llama-v3p1-70b-instruct\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"google-gemini\",\n \"displayName\": \"Google Gemini\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://generativelanguage.googleapis.com/v1beta/openai\",\n \"envVars\": [\"GOOGLE_API_KEY\", \"GEMINI_API_KEY\"],\n \"fallbackModels\": [\"gemini-2.0-flash\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n },\n \"aliases\": [\"gemini\", \"google\"],\n \"models\": {\n \"gemini-2.0-flash\": {\n \"name\": \"Gemini 2.0 Flash\",\n \"release_date\": \"2024-12-11\",\n \"attachment\": true,\n \"reasoning\": false,\n \"temperature\": true,\n \"tool_call\": true,\n \"structured_output\": true,\n \"cost\": {\n \"input\": 0.1,\n \"output\": 0.4,\n \"cache_read\": 0.025\n },\n \"limit\": {\n \"context\": 1048576,\n \"output\": 8192\n },\n \"modalities\": {\n \"input\": [\"text\", \"image\", \"audio\", \"video\", \"pdf\"],\n \"output\": [\"text\"]\n },\n \"status\": \"deprecated\"\n },\n \"gemini-2.5-flash-lite\": {\n \"name\": \"Gemini 2.5 Flash-Lite\",\n \"release_date\": \"2025-06-17\",\n \"attachment\": true,\n \"reasoning\": true,\n \"temperature\": true,\n \"tool_call\": true,\n \"structured_output\": true,\n \"cost\": {\n \"input\": 0.1,\n \"output\": 0.4,\n \"cache_read\": 0.01\n },\n \"limit\": {\n \"context\": 1048576,\n \"output\": 8000\n },\n \"modalities\": {\n \"input\": [\"text\", \"image\"],\n \"output\": [\"text\"]\n },\n \"cache_control\": false\n },\n \"gemini-2.5-pro\": {\n \"name\": \"Gemini 2.5 Pro\",\n \"release_date\": \"2025-06-17\",\n \"attachment\": true,\n \"reasoning\": true,\n \"temperature\": true,\n \"tool_call\": true,\n \"structured_output\": true,\n \"cost\": {\n \"input\": 1.25,\n \"output\": 10,\n \"cache_read\": 0.125\n },\n \"limit\": {\n \"context\": 1048576,\n \"output\": 8000\n },\n \"modalities\": {\n \"input\": [\"text\", \"image\"],\n \"output\": [\"text\"]\n },\n \"cache_control\": false\n }\n }\n },\n {\n \"id\": \"ollama\",\n \"displayName\": \"Ollama\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"none\",\n \"baseUrl\": \"http://localhost:11434/v1\",\n \"envVars\": [],\n \"fallbackModels\": [\"llama3.2\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n },\n \"aliases\": [\"ollama\"]\n },\n {\n \"id\": \"lmstudio\",\n \"displayName\": \"LM Studio\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"none\",\n \"baseUrl\": \"http://localhost:1234/v1\",\n \"envVars\": [],\n \"fallbackModels\": [\"lmstudio-community/default\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n },\n \"aliases\": [\"lmstudio\"]\n },\n {\n \"id\": \"llamacpp\",\n \"displayName\": \"llama.cpp\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"none\",\n \"baseUrl\": \"http://localhost:8080/v1\",\n \"envVars\": [],\n \"fallbackModels\": [\"default\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": false,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n },\n \"aliases\": [\"llamacpp\"]\n },\n {\n \"id\": \"bedrock\",\n \"displayName\": \"AWS Bedrock\",\n \"apiMode\": \"bedrock\",\n \"authType\": \"aws_sdk\",\n \"baseUrl\": \"https://bedrock-runtime.us-east-1.amazonaws.com\",\n \"envVars\": [\"AWS_ACCESS_KEY_ID\", \"AWS_SECRET_ACCESS_KEY\"],\n \"fallbackModels\": [\"anthropic.claude-3-5-sonnet-20241022-v2:0\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": false,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": true\n },\n \"aliases\": [\"bedrock\"]\n },\n {\n \"id\": \"vertex\",\n \"displayName\": \"Google Vertex AI\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"gcp_oauth\",\n \"baseUrl\": \"https://us-central1-aiplatform.googleapis.com/v1\",\n \"envVars\": [\"GOOGLE_APPLICATION_CREDENTIALS\"],\n \"fallbackModels\": [\"gemini-1.5-pro\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n },\n \"aliases\": [\"vertex\"]\n },\n {\n \"id\": \"cohere\",\n \"displayName\": \"Cohere\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.cohere.com/v2\",\n \"envVars\": [\"COHERE_API_KEY\"],\n \"fallbackModels\": [\"command-r-plus\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"perplexity\",\n \"displayName\": \"Perplexity\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.perplexity.ai\",\n \"envVars\": [\"PERPLEXITY_API_KEY\"],\n \"fallbackModels\": [\"llama-3.1-sonar-large-128k-online\"],\n \"capabilities\": {\n \"supportsToolUse\": false,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": false,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"xai\",\n \"displayName\": \"xAI (Grok)\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.x.ai/v1\",\n \"envVars\": [\"XAI_API_KEY\"],\n \"fallbackModels\": [\"grok-2\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n },\n \"aliases\": [\"grok\"]\n },\n {\n \"id\": \"sambanova\",\n \"displayName\": \"SambaNova\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.sambanova.ai/v1\",\n \"envVars\": [\"SAMBANOVA_API_KEY\"],\n \"fallbackModels\": [\"Meta-Llama-3.1-70B-Instruct\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"cerebras\",\n \"displayName\": \"Cerebras\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.cerebras.ai/v1\",\n \"envVars\": [\"CEREBRAS_API_KEY\"],\n \"fallbackModels\": [\"llama3.1-70b\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"deepinfra\",\n \"displayName\": \"DeepInfra\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.deepinfra.com/v1/openai\",\n \"envVars\": [\"DEEPINFRA_API_KEY\"],\n \"fallbackModels\": [\"meta-llama/Meta-Llama-3.1-70B-Instruct\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"huggingface\",\n \"displayName\": \"Hugging Face\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api-inference.huggingface.co/v1\",\n \"envVars\": [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"],\n \"fallbackModels\": [\"meta-llama/Llama-3.2-3B-Instruct\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": false,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"nvidia\",\n \"displayName\": \"NVIDIA NIM\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://integrate.api.nvidia.com/v1\",\n \"envVars\": [\"NVIDIA_API_KEY\"],\n \"fallbackModels\": [\"meta/llama-3.1-70b-instruct\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"lepton\",\n \"displayName\": \"Lepton AI\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://llama3-1-70b.lepton.run/api/v1\",\n \"envVars\": [\"LEPTON_API_KEY\"],\n \"fallbackModels\": [\"llama3-1-70b\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": false,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"anyscale\",\n \"displayName\": \"Anyscale\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.endpoints.anyscale.com/v1\",\n \"envVars\": [\"ANYSCALE_API_KEY\"],\n \"fallbackModels\": [\"meta-llama/Meta-Llama-3-70B-Instruct\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"replicate\",\n \"displayName\": \"Replicate\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://openai-proxy.replicate.com/v1\",\n \"envVars\": [\"REPLICATE_API_TOKEN\"],\n \"fallbackModels\": [\"meta/meta-llama-3-70b-instruct\"],\n \"capabilities\": {\n \"supportsToolUse\": false,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": false,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"ai21\",\n \"displayName\": \"AI21 Labs\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.ai21.com/studio/v1\",\n \"envVars\": [\"AI21_API_KEY\"],\n \"fallbackModels\": [\"jamba-1.5-large\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"aleph-alpha\",\n \"displayName\": \"Aleph Alpha\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.aleph-alpha.com/v1\",\n \"envVars\": [\"ALEPH_ALPHA_API_KEY\"],\n \"fallbackModels\": [\"luminous-extended\"],\n \"capabilities\": {\n \"supportsToolUse\": false,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": false,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"cloudflare\",\n \"displayName\": \"Cloudflare Workers AI\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\",\n \"envVars\": [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_ACCOUNT_ID\"],\n \"fallbackModels\": [\"@cf/meta/llama-3.1-70b-instruct\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": false,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"azure-openai\",\n \"displayName\": \"Azure OpenAI\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://{resource}.openai.azure.com/openai/deployments/{deployment}\",\n \"envVars\": [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_ENDPOINT\"],\n \"fallbackModels\": [\"gpt-4o\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"github-models\",\n \"displayName\": \"GitHub Models\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://models.inference.ai.azure.com\",\n \"envVars\": [\"GITHUB_TOKEN\"],\n \"fallbackModels\": [\"gpt-4o-mini\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"hyperbolic\",\n \"displayName\": \"Hyperbolic\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.hyperbolic.xyz/v1\",\n \"envVars\": [\"HYPERBOLIC_API_KEY\"],\n \"fallbackModels\": [\"meta-llama/Meta-Llama-3.1-70B-Instruct\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"novita\",\n \"displayName\": \"Novita AI\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.novita.ai/v3/openai\",\n \"envVars\": [\"NOVITA_API_KEY\"],\n \"fallbackModels\": [\"meta-llama/llama-3.1-70b-instruct\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"moonshot\",\n \"displayName\": \"Moonshot (Kimi)\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.moonshot.cn/v1\",\n \"envVars\": [\"MOONSHOT_API_KEY\"],\n \"fallbackModels\": [\"moonshot-v1-8k\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": false,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"qwen\",\n \"displayName\": \"Qwen (Alibaba)\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://dashscope.aliyuncs.com/compatible-mode/v1\",\n \"envVars\": [\"DASHSCOPE_API_KEY\"],\n \"fallbackModels\": [\"qwen-plus\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n },\n \"aliases\": [\"dashscope\"],\n \"models\": {\n \"qwen3-coder-30b-a3b-instruct\": {\n \"tool_call\": true,\n \"structured_output\": false,\n \"cache_control\": false,\n \"modalities\": {\n \"input\": [\"text\"]\n },\n \"limit\": {\n \"context\": 160000,\n \"output\": 8000\n }\n }\n }\n },\n {\n \"id\": \"zhipu\",\n \"displayName\": \"Zhipu AI (GLM)\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://open.bigmodel.cn/api/paas/v4\",\n \"envVars\": [\"ZHIPU_API_KEY\"],\n \"fallbackModels\": [\"glm-4-plus\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n },\n \"aliases\": [\"glm\", \"z-ai\"],\n \"models\": {\n \"glm-4.7-flash\": {\n \"name\": \"GLM-4.7-Flash\",\n \"release_date\": \"2026-01-19\",\n \"attachment\": false,\n \"reasoning\": true,\n \"temperature\": true,\n \"tool_call\": true,\n \"cost\": {\n \"input\": 0,\n \"output\": 0,\n \"cache_read\": 0,\n \"cache_write\": 0\n },\n \"limit\": {\n \"context\": 202752,\n \"output\": 8000\n },\n \"modalities\": {\n \"input\": [\"text\"],\n \"output\": [\"text\"]\n },\n \"structured_output\": false,\n \"cache_control\": false\n }\n }\n },\n {\n \"id\": \"minimax\",\n \"displayName\": \"MiniMax\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.minimax.chat/v1\",\n \"envVars\": [\"MINIMAX_API_KEY\"],\n \"fallbackModels\": [\"MiniMax-Text-01\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": false,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"baichuan\",\n \"displayName\": \"Baichuan\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.baichuan-ai.com/v1\",\n \"envVars\": [\"BAICHUAN_API_KEY\"],\n \"fallbackModels\": [\"Baichuan4\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": false,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"voyage\",\n \"displayName\": \"Voyage AI\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.voyageai.com/v1\",\n \"envVars\": [\"VOYAGE_API_KEY\"],\n \"fallbackModels\": [\"voyage-3\"],\n \"capabilities\": {\n \"supportsToolUse\": false,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": false,\n \"supportsStreaming\": false,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"jina\",\n \"displayName\": \"Jina AI\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.jina.ai/v1\",\n \"envVars\": [\"JINA_API_KEY\"],\n \"fallbackModels\": [\"jina-embeddings-v3\"],\n \"capabilities\": {\n \"supportsToolUse\": false,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": false,\n \"supportsStreaming\": false,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"helicone\",\n \"displayName\": \"Helicone (Gateway)\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://oai.helicone.ai/v1\",\n \"envVars\": [\"HELICONE_API_KEY\", \"OPENAI_API_KEY\"],\n \"fallbackModels\": [\"gpt-4o-mini\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n },\n \"models\": {\n \"gpt-4o-mini\": {\n \"name\": \"OpenAI GPT-4o-mini\",\n \"release_date\": \"2024-07-18\",\n \"attachment\": false,\n \"reasoning\": false,\n \"temperature\": true,\n \"tool_call\": true,\n \"cost\": {\n \"input\": 0.15,\n \"output\": 0.6,\n \"cache_read\": 0.075\n },\n \"limit\": {\n \"context\": 128000,\n \"output\": 16384\n },\n \"modalities\": {\n \"input\": [\"text\", \"image\"],\n \"output\": [\"text\"]\n }\n }\n }\n },\n {\n \"id\": \"portkey\",\n \"displayName\": \"Portkey (Gateway)\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.portkey.ai/v1\",\n \"envVars\": [\"PORTKEY_API_KEY\"],\n \"fallbackModels\": [\"gpt-4o-mini\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": true,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"baseten\",\n \"displayName\": \"Baseten\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://bridge.baseten.co/v1\",\n \"envVars\": [\"BASETEN_API_KEY\"],\n \"fallbackModels\": [\"meta-llama/Meta-Llama-3-70B-Instruct\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": true,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n },\n {\n \"id\": \"modal\",\n \"displayName\": \"Modal\",\n \"apiMode\": \"chat_completions\",\n \"authType\": \"api_key\",\n \"baseUrl\": \"https://api.modal.com/v1\",\n \"envVars\": [\"MODAL_TOKEN_ID\", \"MODAL_TOKEN_SECRET\"],\n \"fallbackModels\": [\"meta-llama/Meta-Llama-3-70B-Instruct\"],\n \"capabilities\": {\n \"supportsToolUse\": true,\n \"supportsVision\": false,\n \"supportsStructuredOutput\": false,\n \"supportsStreaming\": true,\n \"supportsCacheControl\": false\n }\n }\n]\n","/**\n * Provider catalog loader (T10.1, ADR D447).\n *\n * Provider metadata, EMBEDDED at build time. Malformed entries are skipped with WARN (EC-1) — never\n * crash.\n *\n * ## Why embedded and not read from disk\n *\n * It used to be `readFileSync` from a directory computed as\n * `dirname(fileURLToPath(import.meta.url))` at module scope. Both halves break on a runtime with no\n * filesystem, in that order, and this file is only model METADATA — so an environment that could not\n * read it could not run a turn at all.\n *\n * Measured end to end on 2026-09-28, driving a real deploy of a TheoKit app (theokit#705):\n *\n * 1. Cloudflare EXECUTES the top-level module during validation, so the upload was refused before\n * any request existed — `The \"path\" argument must be of type string … Received undefined`,\n * code 10021.\n * 2. With `import.meta.url` substituted by the consumer's bundler, the module initialised and the\n * TURN failed: `[unenv] fs.readFileSync is not implemented yet!`\n * 3. With a newer `compatibility_date`, workerd implements `readFileSync` and the error became the\n * honest one: `ENOENT: readAll '/provider-catalog.json'`. The same `ENOENT` reached a deployed\n * Vercel function, whose bundle carries the JS and not the JSON.\n *\n * No consumer's bundler can fix that from outside. Probed from inside a deployed worker, workerd's\n * whole virtual filesystem is `/bundle/worker.js`, an empty `/tmp` and `/dev` — there is nowhere to\n * put this package's private data file such that `join(dirname(<a file URL>), …)` finds it, short of\n * hardcoding our internal layout into their build.\n *\n * `with { type: \"json\" }` follows `internal/budget/pricing-registry.ts`, which has imported a sibling\n * JSON exactly this way in this package for as long as it has existed. Bundlers inline it, so the\n * emitted module carries the data and reaches for nothing.\n *\n * @internal\n */\n\nimport { diag } from \"../diagnostics.js\";\nimport { globalSingleton } from \"../global-singleton.js\";\nimport { type CatalogModel, catalogEntrySchema, catalogModelSchema } from \"./catalog-schema.js\";\nimport embeddedCatalog from \"./provider-catalog.json\" with { type: \"json\" };\nimport { getProviderProfile, registerProvider } from \"./registry.js\";\nimport type { ApiMode, AuthType, ProviderProfile } from \"./types.js\";\n\nexport interface ProviderCapabilities {\n supportsToolUse: boolean;\n supportsVision: boolean;\n supportsStructuredOutput: boolean;\n supportsStreaming: boolean;\n supportsCacheControl: boolean;\n maxContextTokens?: number;\n maxOutputTokens?: number;\n}\n\nexport interface CatalogEntry {\n id: string;\n displayName: string;\n apiMode: ApiMode;\n authType: AuthType;\n baseUrl: string;\n envVars: string[];\n fallbackModels: string[];\n capabilities: ProviderCapabilities;\n aliases?: string[];\n modelsUrl?: string;\n hostname?: string;\n extraHeaders?: Record<string, string>;\n /**\n * M44 — OPTIONAL per-model data (models.dev shape, snake_case — see `catalog-schema.ts`), keyed by the\n * BARE model id. Additive: entries without it behave byte-identically to before. The loader indexes this\n * into the model-info index (`getCatalogModelInfo`) rather than onto `ProviderProfile` (ADR D2 — the\n * builtins-first registration skip means profile-attached data would never reach builtin providers).\n */\n models?: Record<string, CatalogModel>;\n}\n\n/**\n * M44 — the model-info index: `provider/model` → per-model catalog data (the EXACT-map key convention).\n * Populated by the vendored catalog load AND patched by the optional models-dev source (cache entries win\n * per model). The single lookup surface for capability / cost / limit enrichment.\n */\n// M44 B1 fix — index state on globalThis (Symbol.for) so every bundle copy shares the SAME maps (see the\n// identical pattern + rationale in registry.ts).\nconst modelInfoIndex = globalSingleton(\n \"theokit-sdk.providers.model-info-index\",\n () => new Map<string, CatalogModel>(),\n);\n/** M44 M5 fix — keys patched by the live models-dev source (honest pricing provenance). */\nconst patchedModelKeys = globalSingleton(\n \"theokit-sdk.providers.model-info-patched\",\n () => new Set<string>(),\n);\nconst indexState = globalSingleton(\"theokit-sdk.providers.model-info-loaded\", () => ({\n loaded: false,\n}));\n\n/**\n * Look up per-model catalog data by `provider/model` key.\n *\n * Semver-exempt: not declared in `package.json` `exports`, but re-exported by\n * `catalog-source-models-dev.ts`, whose declaration is reachable from published entries — so it\n * must be EMITTED.\n */\nexport function getCatalogModelInfo(key: string): CatalogModel | undefined {\n ensureModelIndexLoaded();\n return modelInfoIndex.get(key);\n}\n\n/** Was this key patched by the LIVE models-dev source (vs the vendored catalog)? @internal */\nexport function isPatchedModelKey(key: string): boolean {\n return patchedModelKeys.has(key);\n}\n\n/**\n * Patch the index with fresher per-model data (the models-dev source). M44 H2 fix — a per-FIELD shallow\n * MERGE, not a wholesale replace: models.dev can never supply the theokit extension fields\n * (`cache_control`, `structured_output` overlays), so a replace would wipe them and silently flip\n * capability answers. Incoming fields win; existing fields survive when the patch omits them.\n * @internal\n */\nexport function patchModelInfo(key: string, model: CatalogModel): void {\n ensureModelIndexLoaded();\n const existing = modelInfoIndex.get(key);\n modelInfoIndex.set(key, existing === undefined ? model : { ...existing, ...model });\n patchedModelKeys.add(key);\n}\n\n/** All indexed `provider/model` keys (for maintenance/tests). @internal */\nexport function listModelInfoKeys(): string[] {\n ensureModelIndexLoaded();\n return [...modelInfoIndex.keys()];\n}\n\nfunction ensureModelIndexLoaded(): void {\n if (indexState.loaded) return;\n indexState.loaded = true;\n // M44 L9 fix — never throw from a capability/pricing lookup: a missing/corrupt vendored catalog degrades\n // to conservative defaults with a WARN (the deleted EXACT map could never throw; keep that property).\n try {\n const catalog = loadProviderCatalog();\n for (const entry of Object.values(catalog)) {\n indexEntryModels(entry);\n }\n } catch (err) {\n diag(\n `[theokit-sdk] WARN: provider catalog unavailable (${(err as Error).message}) — per-model data disabled\\n`,\n );\n }\n}\n\n/**\n * Index an entry's `models` block. Runs for EVERY catalog entry — including those whose PROVIDER\n * registration is skipped builtins-first — so builtin providers still get their per-model data (ADR D2).\n * A malformed model sub-entry drops THAT MODEL with WARN and keeps the provider (EC-1 philosophy extended).\n */\n// PRE-EXISTING debt, exposed when M75 fixed the Biome config that used to abort before\n// sweeping these files (a nested root under refactor/). It is not new code and was not touched\n// by M75; refactoring SDK internals without review would trade a visible problem for a diff\n// risky. Tracked in usetheodev/theokit-sdk#151.\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: one pass over a vendored data file, branching per OPTIONAL field the upstream schema may or may not carry (models, cost, modalities, limits). Splitting it produces N helpers that each re-check the same entry — the branches are field presence, not decisions.\nfunction indexEntryModels(entry: CatalogEntry): void {\n if (entry.models === undefined || typeof entry.models !== \"object\") return;\n for (const [modelId, raw] of Object.entries(entry.models)) {\n const parsed = catalogModelSchema.safeParse(raw);\n if (!parsed.success) {\n diag(\n `[theokit-sdk] WARN: Skipping malformed catalog model \"${entry.id}/${modelId}\": ` +\n `${parsed.error.issues[0]?.message ?? \"invalid\"}\\n`,\n );\n continue;\n }\n // Index under the entry id AND every alias — capability lookups are VENDOR-keyed (e.g.\n // `google/gemini-2.5-pro` while the entry id is `google-gemini` with alias `google`), so alias keys are\n // what make the vendor-keyed convention resolve without a second mapping table.\n modelInfoIndex.set(`${entry.id}/${modelId}`, parsed.data);\n for (const alias of entry.aliases ?? []) {\n const key = `${alias}/${modelId}`;\n if (!modelInfoIndex.has(key)) modelInfoIndex.set(key, parsed.data);\n }\n }\n}\n\n/** Test-only reset for the model-info index. @internal */\nexport function _resetModelInfoIndexForTests(): void {\n modelInfoIndex.clear();\n patchedModelKeys.clear();\n indexState.loaded = false;\n}\n\ninterface LoadOptions {\n _testInjectMalformed?: boolean;\n}\n\nfunction validateEntry(raw: Record<string, unknown>): CatalogEntry | null {\n const parsed = catalogEntrySchema.safeParse(raw);\n // The WARN-and-skip behaviour at the call site is unchanged; only what counts as valid is.\n return parsed.success ? (parsed.data as CatalogEntry) : null;\n}\n\nexport function loadProviderCatalog(opts?: LoadOptions): Record<string, CatalogEntry> {\n // Copied, not aliased: `_testInjectMalformed` below appends to it, and the embedded array is a\n // module-level singleton every caller shares.\n let entries: Record<string, unknown>[] = [...(embeddedCatalog as Record<string, unknown>[])];\n\n if (opts?._testInjectMalformed) {\n entries = [\n ...entries,\n { id: \"malformed-provider\", displayName: \"Bad\" } as Record<string, unknown>,\n ];\n }\n\n const result: Record<string, CatalogEntry> = {};\n for (const raw of entries) {\n const validated = validateEntry(raw as Record<string, unknown>);\n if (validated === null) {\n diag(\n `[theokit-sdk] WARN: Skipping malformed catalog entry: ${JSON.stringify(raw).slice(0, 100)}\\n`,\n );\n continue;\n }\n result[validated.id] = validated;\n }\n return result;\n}\n\nlet _capabilitiesCache: Record<string, ProviderCapabilities> | null = null;\n\n// PRE-EXISTING debt, exposed when M75 fixed the Biome config that used to abort before\n// sweeping these files (a nested root under refactor/). It is not new code and was not touched\n// by M75; refactoring SDK internals without review would trade a visible problem for a diff\n// risky. Tracked in usetheodev/theokit-sdk#151.\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: a lazily-built cache with three states (unbuilt, built-and-hit, built-and-miss) folded into one read. The branch count is the state machine; extracting the build makes the miss path re-enter the same check.\nexport function getCatalogCapabilities(providerId: string): ProviderCapabilities | undefined {\n if (_capabilitiesCache === null) {\n const catalog = loadProviderCatalog();\n _capabilitiesCache = {};\n for (const entry of Object.values(catalog)) {\n _capabilitiesCache[entry.id] = entry.capabilities;\n // M45 review L4 — alias keys too (e.g. entry `google-gemini` alias `google`), consistent with the\n // model-info index's alias-keyed convention.\n for (const alias of entry.aliases ?? []) {\n if (_capabilitiesCache[alias] === undefined) _capabilitiesCache[alias] = entry.capabilities;\n }\n }\n }\n return _capabilitiesCache[providerId];\n}\n\nexport function registerCatalogProviders(opts?: LoadOptions): void {\n const catalog = loadProviderCatalog(opts);\n for (const entry of Object.values(catalog)) {\n // Skip catalog entries that would overwrite first-party builtins.\n // Builtins have richer env-var handling and are registered first.\n // Also skip if any alias collides with an existing provider name.\n if (getProviderProfile(entry.id) !== undefined) continue;\n if (entry.aliases?.some((a) => getProviderProfile(a) !== undefined)) continue;\n\n const profile: ProviderProfile = {\n name: entry.id,\n apiMode: entry.apiMode,\n authType: entry.authType,\n baseUrl: entry.baseUrl,\n envVars: entry.envVars,\n fallbackModels: entry.fallbackModels,\n displayName: entry.displayName,\n aliases: entry.aliases,\n modelsUrl: entry.modelsUrl,\n hostname: entry.hostname,\n extraHeaders: entry.extraHeaders,\n };\n registerProvider(profile);\n }\n}\n","import type { ProviderProfile } from \"../types.js\";\n\nexport const ANTHROPIC: ProviderProfile = {\n name: \"anthropic\",\n apiMode: \"anthropic_messages\",\n envVars: [\"ANTHROPIC_API_KEY\"],\n authType: \"api_key\",\n baseUrl: \"https://api.anthropic.com\",\n modelsUrl: \"https://api.anthropic.com/v1/models\",\n hostname: \"api.anthropic.com\",\n fallbackModels: [\"claude-opus-4-7\", \"claude-sonnet-4-6\", \"claude-haiku-4-5-20251001\"],\n // M45 — the Anthropic beta-features header (interleaved thinking + fine-grained tool streaming). An\n // Anthropic API constant. The\n // SANCTIONED behavior delta of M45 (ADR D4) — consumed by the anthropic transport's extraHeaders wiring.\n extraHeaders: {\n \"anthropic-beta\": \"interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14\",\n },\n};\n","/**\n * AWS Bedrock profile (Adoption Roadmap #8; ADRs D286-D302).\n *\n * Bearer-only auth via `AWS_BEARER_TOKEN_BEDROCK` env (GA Sep 2025).\n * Optional `@aws/bedrock-token-generator` peer dep auto-refreshes short-term\n * tokens (D287). Transport via native `fetch`; no `@aws-sdk/*` dependency.\n *\n * Model IDs follow the `bedrock/{aws-id}` convention so the router can\n * infer the provider via prefix routing (D186). The client strips the\n * `bedrock/` prefix before building the URL.\n *\n * @internal\n */\n\nimport type { ProviderProfile } from \"../types.js\";\n\nexport const BEDROCK: ProviderProfile = {\n name: \"bedrock\",\n apiMode: \"bedrock_anthropic\",\n envVars: [\"AWS_BEARER_TOKEN_BEDROCK\"],\n authType: \"aws_bearer\",\n baseUrl: \"https://bedrock-runtime.us-east-1.amazonaws.com\",\n modelsUrl: undefined,\n hostname: \"bedrock-runtime.amazonaws.com\",\n fallbackModels: [\n \"bedrock/us.anthropic.claude-sonnet-4-5-v1:0\",\n \"bedrock/us.anthropic.claude-opus-4-7-v1:0\",\n \"bedrock/global.anthropic.claude-haiku-4-5-v1:0\",\n ],\n};\n\n/** Strip `\"bedrock/\"` prefix so the raw AWS model id is used in the URL. */\nexport function stripBedrockPrefix(modelId: string): string {\n return modelId.replace(/^bedrock\\//, \"\");\n}\n\n/**\n * Infer AWS region from a Bedrock model id prefix (D290).\n *\n * `global.*` routes via `us-east-1` (AWS default entrypoint for global\n * inference profiles).\n */\nexport function inferRegionFromModelId(modelId: string): string | undefined {\n const id = stripBedrockPrefix(modelId);\n if (id.startsWith(\"global.\")) return \"us-east-1\";\n if (id.startsWith(\"us.\")) return process.env.AWS_REGION ?? \"us-east-1\";\n if (id.startsWith(\"eu.\")) return process.env.AWS_REGION ?? \"eu-west-1\";\n if (id.startsWith(\"apac.\")) return process.env.AWS_REGION ?? \"ap-southeast-1\";\n if (id.startsWith(\"jp.\")) return \"ap-northeast-1\";\n return undefined;\n}\n\n/** Resolve baseUrl from model id; falls back to `AWS_REGION` env or `us-east-1`. */\nexport function resolveBedrockBaseUrl(modelId: string): string {\n const region = inferRegionFromModelId(modelId) ?? process.env.AWS_REGION ?? \"us-east-1\";\n return `https://bedrock-runtime.${region}.amazonaws.com`;\n}\n","import type { ProviderProfile } from \"../types.js\";\n\n/**\n * M45 — the data-only base for OpenAI-compatible chat_completions providers. A profile-map pattern\n * flattened to\n * theokit's data model: leaves declare name/baseUrl/envVars (+ overrides) in ~10 lines; the router's\n * URL-join rule (version-segment detection + `chatCompletionsPath` escape) derives the endpoint.\n *\n * @internal\n */\nexport function openAiCompatibleProfile(\n p: { name: string; baseUrl: string; envVars: readonly string[] } & Partial<ProviderProfile>,\n): ProviderProfile {\n return {\n apiMode: \"chat_completions\",\n authType: \"api_key\",\n fallbackModels: [],\n ...p,\n };\n}\n","import { openAiCompatibleProfile } from \"./openai-compatible.js\";\n\n/**\n * M45 — Cerebras. The integration header value is theokit's own: the header attributes TRAFFIC.\n * Models per models.dev (2026-07 snapshot).\n */\nexport const CEREBRAS = openAiCompatibleProfile({\n name: \"cerebras\",\n baseUrl: \"https://api.cerebras.ai/v1\",\n envVars: [\"CEREBRAS_API_KEY\"],\n fallbackModels: [\"gpt-oss-120b\", \"zai-glm-4.7\"],\n extraHeaders: { \"X-Cerebras-3rd-Party-Integration\": \"theokit\" },\n hostname: \"api.cerebras.ai\",\n});\n","import { openAiCompatibleProfile } from \"./openai-compatible.js\";\n\n/**\n * M45 — Cohere via its OpenAI-compatibility surface (`api.cohere.ai/compatibility/v1` — the native v2 API\n * is NOT chat_completions; the discovery flagged the old catalog baseUrl as doubly wrong). Models per\n * models.dev `cohere` (2026-07 snapshot). SOURCE NOTE (review L2): the compatibility endpoint + `CO_API_KEY`\n * come from Cohere's own docs/python-SDK convention (not vendored in this repo's references) — verify with a\n * live smoke when a key is available.\n */\nexport const COHERE = openAiCompatibleProfile({\n name: \"cohere\",\n baseUrl: \"https://api.cohere.ai/compatibility/v1\",\n envVars: [\"COHERE_API_KEY\", \"CO_API_KEY\"],\n fallbackModels: [\"command-a-03-2025\"],\n hostname: \"api.cohere.ai\",\n});\n","import { openAiCompatibleProfile } from \"./openai-compatible.js\";\n\n/** M45 — DeepInfra. OpenAI-compat surface under /v1/openai (models.dev `deepinfra`). */\nexport const DEEPINFRA = openAiCompatibleProfile({\n name: \"deepinfra\",\n baseUrl: \"https://api.deepinfra.com/v1/openai\",\n envVars: [\"DEEPINFRA_API_KEY\"],\n fallbackModels: [\"Qwen/Qwen3-32B\"],\n hostname: \"api.deepinfra.com\",\n});\n","import type { ProviderProfile } from \"../types.js\";\n\n/**\n * Gemini via OpenRouter passthrough. Direct Gemini API uses a different\n * dialect (`generateContent`); SDK currently routes through OpenRouter's\n * OpenAI-compatible endpoint so the chat_completions transport works.\n *\n * A future plugin `@theokit-provider-gemini-direct` can override this with\n * `apiMode: \"gemini_generate_content\"` once that transport ships.\n */\nexport const GEMINI: ProviderProfile = {\n name: \"gemini\",\n apiMode: \"chat_completions\",\n envVars: [\"OPENROUTER_API_KEY\"],\n authType: \"api_key\",\n baseUrl: \"https://openrouter.ai/api\",\n hostname: \"openrouter.ai\",\n fallbackModels: [\"google/gemini-2.0-flash-001\"],\n};\n","import { openAiCompatibleProfile } from \"./openai-compatible.js\";\n\n/**\n * M45 — Google Gemini via the DIRECT OpenAI-compat endpoint (a Google API key, not OpenRouter). Distinct\n * from the `gemini` builtin (an OpenRouter passthrough) by ADR D3 — two routes, two names. Endpoint + env\n * vars per Google's OpenAI-compatibility docs (mirrored by models.dev `google` + the M44 catalog entry).\n */\nexport const GOOGLE = openAiCompatibleProfile({\n name: \"google\",\n baseUrl: \"https://generativelanguage.googleapis.com/v1beta/openai\",\n envVars: [\"GOOGLE_API_KEY\", \"GEMINI_API_KEY\", \"GOOGLE_GENERATIVE_AI_API_KEY\"],\n fallbackModels: [\"gemini-2.5-pro\", \"gemini-2.5-flash\"],\n hostname: \"generativelanguage.googleapis.com\",\n});\n","import { openAiCompatibleProfile } from \"./openai-compatible.js\";\n\n/** M45 — Groq. Values per models.dev `groq` (2026-07 snapshot); OpenAI-compat surface under /openai/v1. */\nexport const GROQ = openAiCompatibleProfile({\n name: \"groq\",\n baseUrl: \"https://api.groq.com/openai/v1\",\n envVars: [\"GROQ_API_KEY\"],\n fallbackModels: [\"llama-3.3-70b-versatile\", \"llama-3.1-8b-instant\"],\n hostname: \"api.groq.com\",\n});\n","import type { ProviderProfile } from \"../types.js\";\n\n/**\n * llama.cpp server provider profile (T7.2, ADR D189).\n *\n * llama.cpp ships a HTTP server binary (`./server` since b1500+) that\n * implements the OpenAI-compatible `/v1/chat/completions` endpoint on\n * `http://localhost:8080` by default. Inherits `authType: \"none\"` from\n * D182 — no API key required for local use.\n *\n * llama.cpp idiosyncrasies:\n * - Server loads a single GGUF model at startup via `--model` CLI\n * flag. The `model` field in the chat-completions request is\n * cosmetic — any string works; the response comes from the loaded\n * model regardless. This is documented in\n * `.claude/knowledge-base/reviews/edge-case/ollama-integration-edge-cases-2026-05-21.md`\n * as EC-O.\n * - Tool calling support depends entirely on the underlying model.\n *\n * Override the default URL with `LLAMACPP_HOST`.\n *\n * @internal\n */\nexport const LLAMACPP: ProviderProfile = {\n name: \"llamacpp\",\n aliases: [\"llama-cpp\", \"llama.cpp\"],\n apiMode: \"chat_completions\",\n envVars: [\"LLAMACPP_API_KEY\"],\n authType: \"none\",\n baseUrl: \"http://localhost:8080\",\n modelsUrl: \"http://localhost:8080/v1/models\",\n hostname: \"localhost\",\n fallbackModels: [\"loaded-model\"],\n};\n","import type { ProviderProfile } from \"../types.js\";\n\n/**\n * LM Studio provider profile (T7.1, ADR D188).\n *\n * LM Studio exposes an OpenAI-compatible `/v1/chat/completions` endpoint\n * on `http://localhost:1234` by default (configurable via the LM Studio\n * UI under \"Local Server\"). Inherits the `authType: \"none\"` primitive\n * from D182 — no API key required for local use.\n *\n * LM Studio idiosyncrasies:\n * - Loads ONE model at a time via the desktop UI. The `model` field in\n * the chat-completions request is informational only — LM Studio\n * serves whatever model is currently loaded.\n * - `/v1/models` returns a single entry pointing to the loaded model.\n * - Tool calling depends on the underlying model.\n *\n * Override the default URL with `LMSTUDIO_HOST` (mirrors `OLLAMA_HOST`).\n *\n * @internal\n */\nexport const LMSTUDIO: ProviderProfile = {\n name: \"lmstudio\",\n aliases: [\"lm-studio\", \"lm_studio\"],\n apiMode: \"chat_completions\",\n envVars: [\"LMSTUDIO_API_KEY\"],\n authType: \"none\",\n baseUrl: \"http://localhost:1234\",\n modelsUrl: \"http://localhost:1234/v1/models\",\n hostname: \"localhost\",\n fallbackModels: [\"loaded-model\"],\n};\n","import { openAiCompatibleProfile } from \"./openai-compatible.js\";\n\n/** M45 — Mistral (La Plateforme). Values per models.dev `mistral` (2026-07 snapshot). */\nexport const MISTRAL = openAiCompatibleProfile({\n name: \"mistral\",\n baseUrl: \"https://api.mistral.ai/v1\",\n envVars: [\"MISTRAL_API_KEY\"],\n fallbackModels: [\"mistral-large-latest\", \"codestral-latest\"],\n hostname: \"api.mistral.ai\",\n});\n","import type { ProviderProfile } from \"../types.js\";\n\n/**\n * Ollama — local-first LLM runtime (ADR D182).\n *\n * Ships as a builtin so `Agent.create({ model: \"ollama/llama3.2\" })` works\n * with zero configuration when `ollama serve` is running on the default\n * port. `authType: \"none\"` signals the router to skip env-key resolution\n * and use a placeholder credential (Ollama ignores Authorization headers\n * on local installs).\n *\n * Overrides:\n * - `OLLAMA_HOST` — replaces the default `http://localhost:11434` baseUrl\n * (advanced users running Ollama on a remote machine).\n * - `OLLAMA_API_KEY` — replaces the placeholder when Ollama is behind a\n * reverse-proxy with auth or when using Ollama Cloud (paid tier).\n */\nexport const OLLAMA: ProviderProfile = {\n name: \"ollama\",\n apiMode: \"chat_completions\",\n envVars: [\"OLLAMA_API_KEY\"],\n authType: \"none\",\n baseUrl: \"http://localhost:11434\",\n modelsUrl: \"http://localhost:11434/v1/models\",\n hostname: \"localhost\",\n fallbackModels: [\"llama3.2\", \"qwen2.5\", \"mistral\"],\n};\n","import type { ProviderProfile } from \"../types.js\";\n\nexport const OPENAI: ProviderProfile = {\n name: \"openai\",\n apiMode: \"chat_completions\",\n envVars: [\"OPENAI_API_KEY\"],\n authType: \"api_key\",\n baseUrl: \"https://api.openai.com\",\n modelsUrl: \"https://api.openai.com/v1/models\",\n hostname: \"api.openai.com\",\n fallbackModels: [\"gpt-4o\", \"gpt-4o-mini\"],\n};\n","/**\n * M43 — the ChatGPT \"Codex\" backend as a first-class builtin `ProviderProfile`. Migrated from the\n * agent-builder M40 workaround; the SDK now owns the provider, so a consumer only selects\n * `openai-chatgpt/<model>` and logs in — ZERO provider logic in the consumer.\n *\n * The provider-auth model (see the codex-provider-in-sdk blueprint):\n * - static profile + a `transform.fetch` that resolves the LIVE credential per HTTP request (fresh Bearer +\n * dynamic `ChatGPT-Account-Id`), so a mid-turn expiry refreshes transparently with NO agent rebuild;\n * - the protocol values (endpoint, models, oauth config, `originator` header) are SDK-owned constants.\n *\n * @internal\n */\n\nimport { homedir } from \"node:os\";\n\nimport { AuthenticationError } from \"../../../errors.js\";\nimport { readStoredOAuth } from \"../../auth/credential-store.js\";\nimport { resolveCredential } from \"../../auth/resolve-credential.js\";\nimport type { CredentialStoreConfig, OAuthProviderConfig } from \"../../auth/types.js\";\nimport type { ProviderProfile } from \"../types.js\";\n\n/**\n * The SDK-owned ambient credential store the transform reads. Defaults to `~/.theokit/auth.json`. A consumer\n * points it at its existing store dir via the DEDICATED `THEOKIT_AUTH_HOME` env var (NOT `THEOKIT_HOME` — that\n * is the SDK's whole home directory for personality/credential-pool/profiles; overloading it would redirect\n * the entire runtime). The SDK's ambient credential service.\n */\nconst DEFAULT_STORE: CredentialStoreConfig = {\n home: homedir(),\n dirName: \".theokit\",\n fileName: \"auth.json\",\n homeEnvVar: \"THEOKIT_AUTH_HOME\",\n};\n\n/**\n * The OpenAI OAuth config the transform resolves + refreshes against. `provider: \"openai\"` is the STORE\n * provider (what `/login` persists), deliberately distinct from this profile's routing name `openai-chatgpt`\n * — the two-namespace split separates the integration id from the routed provider. Endpoints/clientId/scopes\n * are OpenAI's published OAuth values.\n */\nconst OPENAI_OAUTH_CONFIG: OAuthProviderConfig = {\n provider: \"openai\",\n authorizeEndpoint: \"https://auth.openai.com/oauth/authorize\",\n tokenEndpoint: \"https://auth.openai.com/oauth/token\",\n clientId: \"app_EMoamEEZ73f0CkXaXp7hrann\",\n scopes: [\"openid\", \"profile\", \"email\", \"offline_access\"],\n redirectUri: \"https://auth.openai.com/deviceauth/callback\",\n};\n\n/**\n * Build the per-request fetch: resolve a FRESH (refreshed) Bearer + the LIVE account-id from the ambient\n * store, and inject them as headers. Re-resolves on EVERY call → mid-turn refresh with no rebuild. A\n * `Headers` object is used so `authorization` is set case-insensitively (never doubled). If no credential is\n * logged in, throw a clear error rather than putting the router's `__oauth_lazy_token__` placeholder on the\n * wire (fail-closed — missing-credential semantics).\n */\nfunction codexFetch(): typeof fetch {\n return (async (input: Parameters<typeof fetch>[0], init?: Parameters<typeof fetch>[1]) => {\n const env = process.env as Record<string, string | undefined>;\n const resolved = await resolveCredential({\n provider: \"openai\",\n store: DEFAULT_STORE,\n oauth: OPENAI_OAUTH_CONFIG,\n env,\n });\n if (resolved === undefined) {\n // AuthenticationError, not a bare Error. `isTransientError` is\n // `err instanceof TheokitAgentError && err.isRetryable`, so a bare Error here is permanently\n // non-retryable AND invisible to a consumer branching on `instanceof AuthenticationError` —\n // which is what a caller does when a login has expired. router.ts:378 already throws typed for\n // the same missing-OAuth-credential condition.\n throw new AuthenticationError(\n 'openai-chatgpt: no ChatGPT credential found — run the OpenAI device login (e.g. \"/login openai\") first.',\n { code: \"missing_credential\" },\n );\n }\n const accountId = readStoredOAuth(DEFAULT_STORE, env)?.account_id;\n const headers = new Headers(init?.headers);\n headers.set(\"authorization\", `Bearer ${resolved.apiKey}`);\n if (accountId !== undefined) headers.set(\"ChatGPT-Account-Id\", accountId);\n return fetch(input, { ...init, headers });\n }) as typeof fetch;\n}\n\nexport const OPENAI_CHATGPT: ProviderProfile = {\n name: \"openai-chatgpt\",\n apiMode: \"responses_api\",\n authType: \"oauth_device_code\",\n baseUrl: \"https://chatgpt.com/backend-api/codex\",\n envVars: [],\n fallbackModels: [\n \"openai-chatgpt/gpt-5.4\",\n \"openai-chatgpt/gpt-5.4-mini\",\n \"openai-chatgpt/gpt-5.5\",\n ],\n // #165 — this shipped as `codex_cli_rs`, another vendor's client identifier. Claiming to be a different\n // vendor's client is a false statement of identity. Third-party clients send their OWN name against\n // this same endpoint, which also shows the route is not restricted to the official client.\n extraHeaders: { originator: \"theokit\" },\n // usetheokit/theokit-sdk#383 — carry the model's encrypted reasoning between the rounds of a turn.\n // On for THIS profile and no other because this is the endpoint the issue measured: OpenAI Codex\n // sends `include: [\"reasoning.encrypted_content\"]` with `reasoning.context: \"all_turns\"` to the\n // same backend, same model, on the same account, so acceptance is observed rather than assumed.\n // The issue's measurement — a third of our bytes, 2.8x our tokens — is what this closes together\n // with `prompt_cache_key`.\n encryptedReasoning: true,\n transform: {\n // Only `fetch` (async) can await the credential refresh; `headers` is sync and cannot.\n fetch: () => codexFetch(),\n },\n};\n","import type { ProviderProfile } from \"../types.js\";\n\nexport const OPENROUTER: ProviderProfile = {\n name: \"openrouter\",\n apiMode: \"chat_completions\",\n aliases: [\"or\"],\n // Ordered fallback (EC-10): OPENROUTER_API_KEY preferred, OPENAI_API_KEY as compat.\n envVars: [\"OPENROUTER_API_KEY\", \"OPENAI_API_KEY\"],\n authType: \"api_key\",\n baseUrl: \"https://openrouter.ai/api\",\n modelsUrl: \"https://openrouter.ai/api/v1/models\",\n hostname: \"openrouter.ai\",\n // M45 — models refreshed (claude-3-haiku retired upstream).\n fallbackModels: [\"openai/gpt-4o-mini\", \"anthropic/claude-haiku-4-5\"],\n // M45 — OpenRouter app-attribution headers. VALUES are\n // theokit's own — copying another app's referer would misattribute traffic).\n extraHeaders: { \"HTTP-Referer\": \"https://usetheo.dev\", \"X-Title\": \"theokit\" },\n};\n","import { openAiCompatibleProfile } from \"./openai-compatible.js\";\n\n/**\n * M45 — Perplexity. Its endpoint is UNVERSIONED (`/chat/completions`) — the explicit `chatCompletionsPath`\n * escape expresses it (the sonar-online model family was retired; models per models.dev `perplexity`).\n */\nexport const PERPLEXITY = openAiCompatibleProfile({\n name: \"perplexity\",\n baseUrl: \"https://api.perplexity.ai\",\n chatCompletionsPath: \"/chat/completions\",\n envVars: [\"PERPLEXITY_API_KEY\"],\n fallbackModels: [\"sonar-pro\", \"sonar\"],\n hostname: \"api.perplexity.ai\",\n});\n","import { openAiCompatibleProfile } from \"./openai-compatible.js\";\n\n/** M45 — Together AI (models.dev id `togetherai` — kept as an alias). Values per the 2026-07 snapshot. */\nexport const TOGETHER = openAiCompatibleProfile({\n name: \"together\",\n aliases: [\"togetherai\"],\n baseUrl: \"https://api.together.xyz/v1\",\n envVars: [\"TOGETHER_API_KEY\"],\n fallbackModels: [\"Qwen/Qwen2.5-7B-Instruct-Turbo\"],\n hostname: \"api.together.xyz\",\n});\n","/**\n * GCP Vertex AI profile (Adoption Roadmap #8; ADRs D286-D302).\n *\n * Required peer dep: `google-auth-library` (D288). Resolves access tokens\n * via ADC (env → gcloud → metadata server → WIF).\n *\n * Model IDs follow the convention `vertex/{dialect}/{model}`:\n * - `vertex/google/gemini-2.0-flash-001` → OpenAI-compat endpoint (D291)\n * - `vertex/anthropic/claude-sonnet-4-5@20250929` → :rawPredict (D292)\n *\n * @internal\n */\n\nimport type { ProviderProfile } from \"../types.js\";\n\nexport const VERTEX: ProviderProfile = {\n name: \"vertex\",\n apiMode: \"anthropic_messages\", // sub-dispatched in selectTransport by profile.name\n envVars: [\"GOOGLE_APPLICATION_CREDENTIALS\"],\n authType: \"gcp_oauth\",\n baseUrl: \"https://us-central1-aiplatform.googleapis.com\",\n modelsUrl: undefined,\n hostname: \"aiplatform.googleapis.com\",\n fallbackModels: [\n \"vertex/anthropic/claude-sonnet-4-5@20250929\",\n \"vertex/google/gemini-2.0-flash-001\",\n ],\n};\n\n/**\n * D293 absorbed: when location === \"global\", use `aiplatform.googleapis.com`\n * (no `global-` prefix) — known bug `streamRawPredict` 404 at\n * `global-aiplatform.googleapis.com` (a peer#10287).\n */\nexport function resolveVertexBaseUrl(opts: {\n projectId: string;\n location: string;\n modelDialect: \"anthropic\" | \"gemini\";\n}): string {\n const host =\n opts.location === \"global\"\n ? \"aiplatform.googleapis.com\"\n : `${opts.location}-aiplatform.googleapis.com`;\n if (opts.modelDialect === \"gemini\") {\n // OpenAI-compat endpoint (D291) — the client appends `/chat/completions`.\n return `https://${host}/v1/projects/${opts.projectId}/locations/${opts.location}/endpoints/openapi`;\n }\n // Anthropic — base URL up to `/publishers/anthropic` (model id appended by client).\n return `https://${host}/v1/projects/${opts.projectId}/locations/${opts.location}/publishers/anthropic`;\n}\n\n/** Detect dialect from a `vertex/{dialect}/{model}` id. Default: gemini. */\nexport function inferModelDialect(modelId: string): \"anthropic\" | \"gemini\" {\n if (modelId.includes(\"/anthropic/\")) return \"anthropic\";\n if (modelId.includes(\"/google/\")) return \"gemini\";\n return \"gemini\";\n}\n\n/** Strip the `vertex/{dialect}/` prefix so the raw model id is used in the URL. */\nexport function stripVertexPrefix(modelId: string): string {\n return modelId.replace(/^vertex\\/(anthropic|google)\\//, \"\");\n}\n","import { openAiCompatibleProfile } from \"./openai-compatible.js\";\n\n/** M45 — xAI (Grok). Values per models.dev `xai` (2026-07 snapshot; grok-2 retired). */\nexport const XAI = openAiCompatibleProfile({\n name: \"xai\",\n aliases: [\"grok\"],\n baseUrl: \"https://api.x.ai/v1\",\n envVars: [\"XAI_API_KEY\"],\n fallbackModels: [\"grok-4.5\", \"grok-4.3\"],\n hostname: \"api.x.ai\",\n});\n","/**\n * Eager registration of builtin providers (T3.3). Side-effect import:\n * importing this module registers the 4 builtins with the registry.\n *\n * Lazy user-plugin discovery is handled by `discovery.ts` (T3.4).\n *\n * @internal\n */\n\nimport { globalSingleton } from \"../../global-singleton.js\";\nimport { registerCatalogProviders } from \"../catalog-loader.js\";\nimport { registerProvider } from \"../registry.js\";\nimport { ANTHROPIC } from \"./anthropic.js\";\nimport { BEDROCK } from \"./bedrock.js\";\nimport { CEREBRAS } from \"./cerebras.js\";\nimport { COHERE } from \"./cohere.js\";\nimport { DEEPINFRA } from \"./deepinfra.js\";\nimport { GEMINI } from \"./gemini.js\";\nimport { GOOGLE } from \"./google.js\";\nimport { GROQ } from \"./groq.js\";\nimport { LLAMACPP } from \"./llamacpp.js\";\nimport { LMSTUDIO } from \"./lmstudio.js\";\nimport { MISTRAL } from \"./mistral.js\";\nimport { OLLAMA } from \"./ollama.js\";\nimport { OPENAI } from \"./openai.js\";\nimport { OPENAI_CHATGPT } from \"./openai-chatgpt.js\";\nimport { OPENROUTER } from \"./openrouter.js\";\nimport { PERPLEXITY } from \"./perplexity.js\";\nimport { TOGETHER } from \"./together.js\";\nimport { VERTEX } from \"./vertex.js\";\nimport { XAI } from \"./xai.js\";\n\n// M45 review M2 — the guard lives on globalThis like the registry itself (M44 B1): a process importing both\n// bundle copies (`@theokit/sdk` + `@theokit/sdk/models`) must not re-register 19 builtins with bogus\n// \"overridden by user plugin\" WARNs.\nconst _registeredState = globalSingleton(\"theokit-sdk.providers.builtins-registered\", () => ({\n done: false,\n}));\n\nexport function registerBuiltins(): void {\n if (_registeredState.done) return;\n _registeredState.done = true;\n // First-party builtins (take priority — registered first)\n registerProvider(ANTHROPIC);\n registerProvider(OPENAI);\n registerProvider(OPENAI_CHATGPT);\n registerProvider(OPENROUTER);\n registerProvider(GEMINI);\n registerProvider(OLLAMA);\n registerProvider(LMSTUDIO);\n registerProvider(LLAMACPP);\n registerProvider(BEDROCK);\n registerProvider(VERTEX);\n // M45 — the data-provider fleet (one file each on the openai-compatible base).\n registerProvider(GOOGLE);\n registerProvider(MISTRAL);\n registerProvider(GROQ);\n registerProvider(COHERE);\n registerProvider(DEEPINFRA);\n registerProvider(TOGETHER);\n registerProvider(XAI);\n registerProvider(PERPLEXITY);\n registerProvider(CEREBRAS);\n // Dynamic catalog — 40+ providers from JSON (T10.1, ADR D447)\n registerCatalogProviders();\n}\n\n/** Test-only reset. @internal */\nexport function _resetBuiltinsRegistered(): void {\n _registeredState.done = false;\n}\n\nexport {\n ANTHROPIC,\n BEDROCK,\n GEMINI,\n LLAMACPP,\n LMSTUDIO,\n OLLAMA,\n OPENAI,\n OPENAI_CHATGPT,\n OPENROUTER,\n VERTEX,\n};\n"]}
@@ -1,5 +1,6 @@
1
1
  import { writeCredential, authFilePath, readStoredOAuth, readAuthFile } from './chunk-5Q4RTLMP.js';
2
2
  import { AuthCallbackError } from './chunk-H3CVJSFC.js';
3
+ import { boundFetch } from './chunk-Q7GYMXVC.js';
3
4
 
4
5
  // src/internal/auth/oauth-engine.ts
5
6
  var REFRESH_SKEW_MS = 6e4;
@@ -142,7 +143,7 @@ async function resolveOAuth(stored, path, opts, env) {
142
143
  };
143
144
  if (opts.oauth === void 0) return base;
144
145
  const deps = {
145
- fetch: opts.deps?.fetch ?? fetch,
146
+ fetch: boundFetch(opts.deps?.fetch),
146
147
  now: opts.deps?.now ?? (() => Date.now())
147
148
  };
148
149
  return ensureFreshCredential(base, { config: opts.oauth, store: opts.store, env }, deps);
@@ -167,5 +168,5 @@ async function resolveCredential(opts) {
167
168
  }
168
169
 
169
170
  export { ensureFreshCredential, exchangeCode, persistOAuthTokens, refreshOAuthTokens, resolveCredential };
170
- //# sourceMappingURL=chunk-EJROML3Q.js.map
171
- //# sourceMappingURL=chunk-EJROML3Q.js.map
171
+ //# sourceMappingURL=chunk-TX56N7FR.js.map
172
+ //# sourceMappingURL=chunk-TX56N7FR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/auth/oauth-engine.ts","../src/internal/auth/resolve-credential.ts"],"names":["fresh"],"mappings":";;;;;AAyBA,IAAM,eAAA,GAAkB,GAAA;AAGxB,SAAS,kBAAA,CAAmB,MAAe,GAAA,EAA0B;AACnE,EAAA,MAAM,CAAA,GAAI,IAAA;AAMV,EAAA,IAAI,OAAO,CAAA,CAAE,YAAA,KAAiB,YAAY,CAAA,CAAE,YAAA,CAAa,WAAW,CAAA,EAAG;AACrE,IAAA,MAAM,IAAI,iBAAA;AAAA,MACR,6BAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,IAAI,OAAO,CAAA,CAAE,aAAA,KAAkB,YAAY,CAAA,CAAE,aAAA,CAAc,WAAW,CAAA,EAAG;AACvE,IAAA,MAAM,IAAI,iBAAA;AAAA,MACR,6BAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,MAAM,YAAY,OAAO,CAAA,CAAE,UAAA,KAAe,QAAA,GAAW,EAAE,UAAA,GAAa,IAAA;AACpE,EAAA,OAAO;AAAA,IACL,QAAQ,CAAA,CAAE,YAAA;AAAA,IACV,SAAS,CAAA,CAAE,aAAA;AAAA,IACX,OAAA,EAAS,MAAM,SAAA,GAAY,GAAA;AAAA,IAC3B,GAAI,OAAO,CAAA,CAAE,UAAA,KAAe,QAAA,GAAW,EAAE,SAAA,EAAW,CAAA,CAAE,UAAA,EAAW,GAAI;AAAC,GACxE;AACF;AAGA,eAAe,SAAA,CACb,MAAA,EACA,IAAA,EACA,IAAA,EACsB;AACtB,EAAA,IAAI,GAAA;AACJ,EAAA,IAAI;AACF,IAAA,GAAA,GAAM,MAAM,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,aAAA,EAAe;AAAA,MAC3C,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,EAAE,cAAA,EAAgB,mCAAA,EAAqC,QAAQ,kBAAA,EAAmB;AAAA,MAC3F,IAAA,EAAM,IAAI,eAAA,CAAgB,IAAI,EAAE,QAAA;AAAS,KAC1C,CAAA;AAAA,EACH,SAAS,GAAA,EAAK;AACZ,IAAA,MAAM,IAAI,iBAAA;AAAA,MACR,6BAAA;AAAA,MACA,CAAA,+BAAA,EAAmC,IAAc,OAAO,CAAA;AAAA,KAC1D;AAAA,EACF;AACA,EAAA,IAAI,CAAC,IAAI,EAAA,EAAI;AAGX,IAAA,MAAM,IAAI,iBAAA;AAAA,MACR,6BAAA;AAAA,MACA,CAAA,6BAAA,EAAgC,IAAI,MAAM,CAAA;AAAA,KAC5C;AAAA,EACF;AACA,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI;AACF,IAAA,IAAA,GAAO,MAAM,IAAI,IAAA,EAAK;AAAA,EACxB,CAAA,CAAA,MAAQ;AAGN,IAAA,MAAM,IAAI,iBAAA,CAAkB,6BAAA,EAA+B,mCAAmC,CAAA;AAAA,EAChG;AACA,EAAA,OAAO,kBAAA,CAAmB,IAAA,EAAM,IAAA,CAAK,GAAA,EAAK,CAAA;AAC5C;AAGO,SAAS,YAAA,CACd,MAAA,EACA,KAAA,EACA,IAAA,EACsB;AACtB,EAAA,OAAO,SAAA;AAAA,IACL,MAAA;AAAA,IACA;AAAA,MACE,UAAA,EAAY,oBAAA;AAAA,MACZ,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,cAAc,MAAA,CAAO,WAAA;AAAA,MACrB,WAAW,MAAA,CAAO,QAAA;AAAA,MAClB,eAAe,KAAA,CAAM;AAAA,KACvB;AAAA,IACA;AAAA,GACF;AACF;AAGO,SAAS,kBAAA,CACd,MAAA,EACA,OAAA,EACA,IAAA,EACsB;AACtB,EAAA,OAAO,SAAA;AAAA,IACL,MAAA;AAAA,IACA,EAAE,UAAA,EAAY,eAAA,EAAiB,eAAe,OAAA,EAAS,SAAA,EAAW,OAAO,QAAA,EAAS;AAAA,IAClF;AAAA,GACF;AACF;AAGO,SAAS,mBACd,QAAA,EACA,MAAA,EACA,KAAA,EACA,GAAA,GAA0C,EAAC,EACnC;AACR,EAAA,OAAO,eAAA;AAAA,IACL;AAAA,MACE,IAAA,EAAM,OAAA;AAAA,MACN,QAAA;AAAA,MACA,QAAQ,MAAA,CAAO,MAAA;AAAA,MACf,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,GAAI,OAAO,SAAA,KAAc,MAAA,GAAY,EAAE,UAAA,EAAY,MAAA,CAAO,SAAA,EAAU,GAAI;AAAC,KAC3E;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACF;AACF;AAQA,IAAM,eAAA,uBAAsB,GAAA,EAAkC;AAQ9D,eAAsB,qBAAA,CACpB,QAAA,EACA,IAAA,EAKA,IAAA,EAC6B;AAC7B,EAAA,IAAI,QAAA,CAAS,IAAA,KAAS,OAAA,EAAS,OAAO,QAAA;AAEtC,EAAA,MAAM,GAAA,GAAM,KAAK,GAAA,EAAI;AACrB,EAAA,IAAI,SAAS,SAAA,KAAc,MAAA,IAAa,QAAA,CAAS,SAAA,GAAY,MAAM,eAAA,EAAiB;AAClF,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,IAAO,EAAC;AACzB,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,IAAA,CAAK,KAAA,EAAO,GAAG,CAAA;AACzC,EAAA,IAAI,OAAA,GAAU,eAAA,CAAgB,GAAA,CAAI,IAAI,CAAA;AACtC,EAAA,IAAI,YAAY,MAAA,EAAW;AACzB,IAAA,OAAA,GAAA,CAAW,YAAkC;AAC3C,MAAA,MAAM,MAAA,GAAS,eAAA,CAAgB,IAAA,CAAK,KAAA,EAAO,GAAG,CAAA;AAC9C,MAAA,IAAI,WAAW,MAAA,EAAW;AAExB,QAAA,MAAM,IAAI,iBAAA;AAAA,UACR,6BAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,MAAMA,SAAQ,MAAM,kBAAA,CAAmB,KAAK,MAAA,EAAQ,MAAA,CAAO,SAAS,IAAI,CAAA;AAKxE,MAAA,MAAM,MAAA,GAAsB;AAAA,QAC1B,GAAGA,MAAAA;AAAA,QACH,SAAA,EAAWA,MAAAA,CAAM,SAAA,IAAa,MAAA,CAAO;AAAA,OACvC;AACA,MAAA,kBAAA,CAAmB,QAAA,CAAS,QAAA,EAAU,MAAA,EAAQ,IAAA,CAAK,OAAO,GAAG,CAAA;AAC7D,MAAA,OAAO,MAAA;AAAA,IACT,CAAA,GAAG;AACH,IAAA,eAAA,CAAgB,GAAA,CAAI,MAAM,OAAO,CAAA;AACjC,IAAA,OAAA,CAAQ,OAAA,CAAQ,MAAM,eAAA,CAAgB,MAAA,CAAO,IAAI,CAAC,CAAA,CAAE,MAAM,MAAM;AAAA,IAAC,CAAC,CAAA;AAAA,EACpE;AAEA,EAAA,MAAM,QAAQ,MAAM,OAAA;AACpB,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,OAAA;AAAA,IACN,UAAU,QAAA,CAAS,QAAA;AAAA,IACnB,QAAQ,KAAA,CAAM,MAAA;AAAA,IACd,QAAQ,QAAA,CAAS,MAAA;AAAA,IACjB,QAAA,EAAU,KAAA;AAAA,IACV,WAAW,KAAA,CAAM;AAAA,GACnB;AACF;;;AC3JA,eAAe,YAAA,CACb,MAAA,EACA,IAAA,EACA,IAAA,EACA,GAAA,EACyC;AACzC,EAAA,IAAI,MAAA,CAAO,QAAA,KAAa,IAAA,CAAK,QAAA,EAAU,OAAO,MAAA;AAC9C,EAAA,MAAM,IAAA,GAA2B;AAAA,IAC/B,IAAA,EAAM,OAAA;AAAA,IACN,UAAU,IAAA,CAAK,QAAA;AAAA,IACf,QAAQ,MAAA,CAAO,MAAA;AAAA,IACf,MAAA,EAAQ,IAAA;AAAA,IACR,QAAA,EAAU,KAAA;AAAA,IACV,WAAW,MAAA,CAAO;AAAA,GACpB;AACA,EAAA,IAAI,IAAA,CAAK,KAAA,KAAU,MAAA,EAAW,OAAO,IAAA;AACrC,EAAA,MAAM,IAAA,GAAiB;AAAA,IACrB,KAAA,EAAO,UAAA,CAAW,IAAA,CAAK,IAAA,EAAM,KAAK,CAAA;AAAA,IAClC,KAAK,IAAA,CAAK,IAAA,EAAM,GAAA,KAAQ,MAAM,KAAK,GAAA,EAAI;AAAA,GACzC;AACA,EAAA,OAAO,qBAAA,CAAsB,IAAA,EAAM,EAAE,MAAA,EAAQ,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,KAAA,EAAO,GAAA,EAAI,EAAG,IAAI,CAAA;AACzF;AAMA,eAAsB,kBACpB,IAAA,EACyC;AACzC,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,IAAO,EAAC;AACzB,EAAA,MAAM,MAAA,GAAS,YAAA,CAAa,IAAA,CAAK,KAAA,EAAO,GAAG,CAAA;AAC3C,EAAA,IAAI,MAAA,KAAW,QAAW,OAAO,MAAA;AAEjC,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,IAAA,CAAK,KAAA,EAAO,GAAG,CAAA;AAEzC,EAAA,IAAI,MAAA,CAAO,SAAS,OAAA,EAAS;AAC3B,IAAA,OAAO,YAAA,CAAa,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAM,GAAG,CAAA;AAAA,EAC7C;AAOA,EAAA,IAAI,MAAA,CAAO,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AACxC,EAAA,IAAI,MAAA,CAAO,QAAA,KAAa,IAAA,CAAK,QAAA,EAAU,OAAO,MAAA;AAC9C,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,KAAA;AAAA,IACN,UAAU,IAAA,CAAK,QAAA;AAAA,IACf,QAAQ,MAAA,CAAO,OAAA;AAAA,IACf,MAAA,EAAQ,IAAA;AAAA,IACR,QAAA,EAAU;AAAA,GACZ;AACF","file":"chunk-TX56N7FR.js","sourcesContent":["/**\n * M42 — the SDK OAuth engine. Promoted DOWN from agent-builder's hardened `agents/lib/oauth.ts` +\n * `oauth-device.ts` (M37), generalized to `provider: string` + a caller-supplied {@link CredentialStoreConfig}\n * (no hardcoded client IDs — the caller declares its provider's endpoints). Ported VERBATIM (ADR D3): the\n * refresh coalescing lock, the no-token-in-error discipline, and the RFC 8628 device grant.\n *\n * Reuses the SDK's typed error taxonomy (`AuthCallbackError` from `server/auth`) for exchange/refresh\n * failures. All network I/O + clock + sleep are INJECTED so the flow is deterministic.\n *\n * The device flows follow their published specs: the RFC 8628 device grant (device_code →\n * authorization_pending / slow_down) and OpenAI's two-step headless flow with JWT-claim account attribution.\n *\n * @internal\n */\nimport { AuthCallbackError } from \"../../server/auth/errors.js\";\nimport { authFilePath, readStoredOAuth, writeCredential } from \"./credential-store.js\";\nimport type {\n CredentialStoreConfig,\n HttpDeps,\n OAuthProviderConfig,\n OAuthTokens,\n ResolvedCredential,\n} from \"./types.js\";\n\n/** Refresh a token this many ms BEFORE it actually expires (avoid a last-second, mid-request expiry). */\nconst REFRESH_SKEW_MS = 60_000;\n\n/** Parse an OAuth token endpoint response into our token triple. Throws a typed error on a bad shape. */\nfunction parseTokenResponse(body: unknown, now: number): OAuthTokens {\n const b = body as {\n access_token?: unknown;\n refresh_token?: unknown;\n expires_in?: unknown;\n account_id?: unknown;\n };\n if (typeof b.access_token !== \"string\" || b.access_token.length === 0) {\n throw new AuthCallbackError(\n \"oauth_token_exchange_failed\",\n \"token response had no access_token\",\n );\n }\n if (typeof b.refresh_token !== \"string\" || b.refresh_token.length === 0) {\n throw new AuthCallbackError(\n \"oauth_token_exchange_failed\",\n \"token response had no refresh_token\",\n );\n }\n const expiresIn = typeof b.expires_in === \"number\" ? b.expires_in : 3600;\n return {\n access: b.access_token,\n refresh: b.refresh_token,\n expires: now + expiresIn * 1000,\n ...(typeof b.account_id === \"string\" ? { accountId: b.account_id } : {}),\n };\n}\n\n/** POST a form-encoded grant to the token endpoint; return the parsed JSON or throw a typed error. */\nasync function postGrant(\n config: OAuthProviderConfig,\n form: Record<string, string>,\n deps: HttpDeps,\n): Promise<OAuthTokens> {\n let res: Response;\n try {\n res = await deps.fetch(config.tokenEndpoint, {\n method: \"POST\",\n headers: { \"content-type\": \"application/x-www-form-urlencoded\", accept: \"application/json\" },\n body: new URLSearchParams(form).toString(),\n });\n } catch (err) {\n throw new AuthCallbackError(\n \"oauth_token_exchange_failed\",\n `token endpoint request failed: ${(err as Error).message}`,\n );\n }\n if (!res.ok) {\n // The body may carry an OAuth `error` code, but never echo it verbatim — it can contain a token in\n // some providers' error payloads. Report the status only.\n throw new AuthCallbackError(\n \"oauth_token_exchange_failed\",\n `token endpoint returned HTTP ${res.status}`,\n );\n }\n let json: unknown;\n try {\n json = await res.json();\n } catch {\n // Do NOT echo the parser message — on a 200 non-JSON body it embeds a snippet of the response, which\n // in a token context can contain access/refresh material.\n throw new AuthCallbackError(\"oauth_token_exchange_failed\", \"token response was not valid JSON\");\n }\n return parseTokenResponse(json, deps.now());\n}\n\n/** Exchange an authorization `code` (+ PKCE verifier) for the token pair. */\nexport function exchangeCode(\n config: OAuthProviderConfig,\n input: { code: string; verifier: string },\n deps: HttpDeps,\n): Promise<OAuthTokens> {\n return postGrant(\n config,\n {\n grant_type: \"authorization_code\",\n code: input.code,\n redirect_uri: config.redirectUri,\n client_id: config.clientId,\n code_verifier: input.verifier,\n },\n deps,\n );\n}\n\n/** Swap a refresh token for a fresh access (and possibly rotated refresh) token. */\nexport function refreshOAuthTokens(\n config: OAuthProviderConfig,\n refresh: string,\n deps: HttpDeps,\n): Promise<OAuthTokens> {\n return postGrant(\n config,\n { grant_type: \"refresh_token\", refresh_token: refresh, client_id: config.clientId },\n deps,\n );\n}\n\n/** Persist a token triple to the store's oauth variant through the hardened 0600 writer. */\nexport function persistOAuthTokens(\n provider: string,\n tokens: OAuthTokens,\n store: CredentialStoreConfig,\n env: Record<string, string | undefined> = {},\n): string {\n return writeCredential(\n {\n type: \"oauth\",\n provider,\n access: tokens.access,\n refresh: tokens.refresh,\n expires: tokens.expires,\n ...(tokens.accountId !== undefined ? { account_id: tokens.accountId } : {}),\n },\n store,\n env,\n );\n}\n\n/**\n * In-flight refreshes, keyed by the auth-file path. Refresh tokens ROTATE (single-use) on many providers,\n * so two concurrent turns must NOT both POST the same refresh token — the second would present an\n * already-consumed token and fail. This coalesces concurrent refreshes of the same store onto one promise.\n * Process-local — the single-credential store is per-user; a cross-process lock would be over-engineering.\n */\nconst inFlightRefresh = new Map<string, Promise<OAuthTokens>>();\n\n/**\n * Return a credential guaranteed fresh enough to use. An `api` credential passes through untouched. An\n * `oauth` credential still valid (beyond the skew window) passes through; an expired one is refreshed,\n * re-persisted 0600, and returned with the new access token. Concurrent refreshes of the same store are\n * coalesced (single-use refresh tokens); the rejected promise is evicted so a failure is not cached-poison.\n */\nexport async function ensureFreshCredential(\n resolved: ResolvedCredential,\n opts: {\n config: OAuthProviderConfig;\n store: CredentialStoreConfig;\n env?: Record<string, string | undefined>;\n },\n deps: HttpDeps,\n): Promise<ResolvedCredential> {\n if (resolved.kind !== \"oauth\") return resolved;\n\n const now = deps.now();\n if (resolved.expiresAt !== undefined && resolved.expiresAt > now + REFRESH_SKEW_MS) {\n return resolved; // still valid — no network, no rewrite\n }\n\n const env = opts.env ?? {};\n const path = authFilePath(opts.store, env);\n let refresh = inFlightRefresh.get(path);\n if (refresh === undefined) {\n refresh = (async (): Promise<OAuthTokens> => {\n const stored = readStoredOAuth(opts.store, env);\n if (stored === undefined) {\n // The resolved credential said oauth but the store no longer holds it — do not fabricate; surface it.\n throw new AuthCallbackError(\n \"oauth_token_exchange_failed\",\n \"no stored oauth credential to refresh\",\n );\n }\n const fresh = await refreshOAuthTokens(opts.config, stored.refresh, deps);\n // M43 D4 fix #1 — the OAuth refresh response returns JWTs, not a top-level `account_id`, so\n // `parseTokenResponse` leaves `fresh.accountId` undefined. Prefer a freshly-derived id, else PRESERVE\n // the stored one (account_id is stable) — otherwise the Codex `ChatGPT-Account-Id` header empties after\n // the first refresh and the backend 401/403s.\n const merged: OAuthTokens = {\n ...fresh,\n accountId: fresh.accountId ?? stored.account_id,\n };\n persistOAuthTokens(resolved.provider, merged, opts.store, env);\n return merged;\n })();\n inFlightRefresh.set(path, refresh);\n refresh.finally(() => inFlightRefresh.delete(path)).catch(() => {});\n }\n\n const fresh = await refresh;\n return {\n kind: \"oauth\",\n provider: resolved.provider,\n apiKey: fresh.access,\n source: resolved.source,\n inferred: false,\n expiresAt: fresh.expires,\n };\n}\n","/**\n * M42 — `resolveCredential`: the public composition entrypoint over the credential store + oauth engine.\n * Given a provider name + a {@link CredentialStoreConfig} (and, for oauth, an {@link OAuthProviderConfig}),\n * read the store and return a FRESH `ResolvedCredential` — an api credential passes through by identity; an\n * oauth credential is transparently refreshed when its access token is within the skew window. Returns\n * `undefined` when the store holds no credential for `provider` (the caller then falls back to env / apiKeys).\n *\n * Mirrors agent-builder's `resolveFreshCredential` composition (store read → oauth → ensureFreshCredential),\n * defaulting `fetch`/`now` to globals. This is the async surface an oauth provider's M41 `transform.fetch`\n * calls at stream time, so a mid-turn token expiry refreshes without rebuilding the agent.\n *\n * Re-exported from `@theokit/sdk/auth`, and therefore PUBLIC, under semver.\n *\n * NOTE — no internal-visibility tag in this block. `tsconfig.base.json` sets `stripInternal: true`,\n * and TypeScript scans EVERY leading comment range of the declaration that follows, including the\n * import right below this one. The tag that used to sit here deleted that import from the emitted\n * `.d.ts`, leaving the types it binds unresolvable for any consumer running type-aware lint\n * (usetheodev/theokit-sdk#283 records the same trap on a declaration).\n */\n\nimport { boundFetch } from \"../runtime-fetch.js\";\nimport { authFilePath, readAuthFile } from \"./credential-store.js\";\nimport { ensureFreshCredential } from \"./oauth-engine.js\";\nimport type {\n CredentialStoreConfig,\n HttpDeps,\n OAuthProviderConfig,\n ResolvedCredential,\n} from \"./types.js\";\n\n/**\n * Input to `resolveCredential`: which provider, which store, and what to inject.\n *\n * `env` and `deps` exist so nothing here reads ambient state. Omitting `env` does NOT fall back to\n * `process.env` — the store's `homeEnvVar` override simply goes unread, so a credential written\n * under a relocated home resolves as absent rather than as an error.\n *\n * `oauth` is required only to REFRESH an oauth credential. Without it an expired oauth entry cannot\n * be renewed, and an api-key-only store needs it never.\n *\n * PUBLIC and under semver, despite the `internal/` directory: `src/auth/index.ts` re-exports this\n * type, and `package.json` publishes that barrel as the '@theokit/sdk/auth' subpath. The directory\n * name is not the authority — the `exports` map is. The semver-exempt class is the sub-paths\n * declared under '@theokit/sdk/internal/*' ('internal/persistence', 'internal/security',\n * 'internal/memory-adapters'); no `exports` entry reaches this file that way.\n */\nexport interface ResolveCredentialOptions {\n /** The provider whose stored credential to resolve. */\n provider: string;\n /** Where the credential store lives. */\n store: CredentialStoreConfig;\n /** Env for the store's optional `homeEnvVar` override. Never an ambient read. */\n env?: Record<string, string | undefined>;\n /** Required to refresh an oauth credential; omit for an api-only store. */\n oauth?: OAuthProviderConfig;\n /** Injected HTTP + clock for deterministic tests; default globals. */\n deps?: { fetch?: typeof fetch; now?: () => number };\n}\n\n/** Resolve (and, when a config is supplied, refresh) the oauth variant for the requested provider. */\nasync function resolveOAuth(\n stored: { provider: string; access: string; expires: number },\n path: string,\n opts: ResolveCredentialOptions,\n env: Record<string, string | undefined>,\n): Promise<ResolvedCredential | undefined> {\n if (stored.provider !== opts.provider) return undefined;\n const base: ResolvedCredential = {\n kind: \"oauth\",\n provider: opts.provider,\n apiKey: stored.access,\n source: path,\n inferred: false,\n expiresAt: stored.expires,\n };\n if (opts.oauth === undefined) return base; // no config to refresh with — return the stored access token\n const deps: HttpDeps = {\n fetch: boundFetch(opts.deps?.fetch),\n now: opts.deps?.now ?? (() => Date.now()),\n };\n return ensureFreshCredential(base, { config: opts.oauth, store: opts.store, env }, deps);\n}\n\n/**\n * Resolve a fresh credential for `provider` from the store, or `undefined` if the store holds none for it.\n * oauth credentials are auto-refreshed when `opts.oauth` is supplied; api credentials pass through.\n */\nexport async function resolveCredential(\n opts: ResolveCredentialOptions,\n): Promise<ResolvedCredential | undefined> {\n const env = opts.env ?? {};\n const stored = readAuthFile(opts.store, env);\n if (stored === undefined) return undefined;\n\n const path = authFilePath(opts.store, env);\n\n if (stored.type === \"oauth\") {\n return resolveOAuth(stored, path, opts, env);\n }\n\n // api variant: require the stored `provider` to MATCH the requested provider (M42 review MEDIUM-2).\n // The generic SDK cannot infer a provider from a key prefix (that was agent-builder app policy), so a\n // provider-less or mismatched stored key is NOT attributed to the requested provider — otherwise a legacy\n // `{api_key:\"sk-ant-…\"}` file could be POSTed to the wrong vendor's endpoint (cross-vendor key exposure).\n // Fail-closed: credential resolution never attributes a key across providers.\n if (stored.api_key.length === 0) return undefined;\n if (stored.provider !== opts.provider) return undefined;\n return {\n kind: \"api\",\n provider: opts.provider,\n apiKey: stored.api_key,\n source: path,\n inferred: false,\n };\n}\n"]}
@@ -3,7 +3,7 @@
3
3
  var chunkKRD3GQAA_cjs = require('./chunk-KRD3GQAA.cjs');
4
4
  var chunkSWALPLFQ_cjs = require('./chunk-SWALPLFQ.cjs');
5
5
  var chunkGM54F4FE_cjs = require('./chunk-GM54F4FE.cjs');
6
- var chunkGZV6AVRL_cjs = require('./chunk-GZV6AVRL.cjs');
6
+ var chunkZWACQM5U_cjs = require('./chunk-ZWACQM5U.cjs');
7
7
  var chunkP22BZE7G_cjs = require('./chunk-P22BZE7G.cjs');
8
8
  var chunkZF2LDKQQ_cjs = require('./chunk-ZF2LDKQQ.cjs');
9
9
  var chunkJLRLCBJ4_cjs = require('./chunk-JLRLCBJ4.cjs');
@@ -27,7 +27,7 @@ function projectMemoryDir(cwd) {
27
27
  function claudeProjectMemoryDir(cwd) {
28
28
  const home = process.env.CLAUDE_CONFIG_DIR?.trim();
29
29
  const root = home !== void 0 && home.length > 0 ? home : path.join(os.homedir(), ".claude");
30
- return path.join(root, "projects", chunkGZV6AVRL_cjs.encodeProjectDir(chunkSWALPLFQ_cjs.findGitRoot(cwd) ?? cwd), "memory");
30
+ return path.join(root, "projects", chunkZWACQM5U_cjs.encodeProjectDir(chunkSWALPLFQ_cjs.findGitRoot(cwd) ?? cwd), "memory");
31
31
  }
32
32
  function resolveMemoryRoot(cwd, config) {
33
33
  const declared = config?.directory;
@@ -691,7 +691,7 @@ function defaultIndexPath(root) {
691
691
  }
692
692
  function requireLance() {
693
693
  try {
694
- const r = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-76PIKR4P.cjs', document.baseURI).href)));
694
+ const r = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-VZ2JZ2EH.cjs', document.baseURI).href)));
695
695
  return r("@lancedb/lancedb");
696
696
  } catch (cause) {
697
697
  throw new chunkUNFBHV46_cjs.ConfigurationError(
@@ -839,5 +839,5 @@ exports.sha256 = sha256;
839
839
  exports.truncateSnippet = truncateSnippet;
840
840
  exports.wikiDir = wikiDir;
841
841
  exports.writeSessionSummary = writeSessionSummary;
842
- //# sourceMappingURL=chunk-76PIKR4P.cjs.map
843
- //# sourceMappingURL=chunk-76PIKR4P.cjs.map
842
+ //# sourceMappingURL=chunk-VZ2JZ2EH.cjs.map
843
+ //# sourceMappingURL=chunk-VZ2JZ2EH.cjs.map