@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
@@ -1,18 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkYRJA2POB_cjs = require('./chunk-YRJA2POB.cjs');
4
-
5
- // src/providers.ts
6
- function listProviders2() {
7
- chunkYRJA2POB_cjs.registerBuiltins();
8
- return chunkYRJA2POB_cjs.listProviders();
9
- }
10
- function getProviderProfile2(name) {
11
- chunkYRJA2POB_cjs.registerBuiltins();
12
- return chunkYRJA2POB_cjs.getProviderProfile(name);
13
- }
14
-
15
- exports.getProviderProfile = getProviderProfile2;
16
- exports.listProviders = listProviders2;
17
- //# sourceMappingURL=chunk-R3ZQBPA5.cjs.map
18
- //# sourceMappingURL=chunk-R3ZQBPA5.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/internal/auth/oauth-engine.ts","../src/internal/auth/resolve-credential.ts"],"names":["AuthCallbackError","writeCredential","authFilePath","readStoredOAuth","fresh","readAuthFile"],"mappings":"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","file":"chunk-RA7IE4NK.cjs","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 { 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: opts.deps?.fetch ?? 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"]}
@@ -1,601 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkNVXXWAU7_cjs = require('./chunk-NVXXWAU7.cjs');
4
- var chunkRA7IE4NK_cjs = require('./chunk-RA7IE4NK.cjs');
5
- var chunkNAGPKWOD_cjs = require('./chunk-NAGPKWOD.cjs');
6
- var chunkUNFBHV46_cjs = require('./chunk-UNFBHV46.cjs');
7
- var chunk6LHQPOMI_cjs = require('./chunk-6LHQPOMI.cjs');
8
- var fs = require('fs');
9
- var path = require('path');
10
- var url = require('url');
11
- var zod = require('zod');
12
- var os = require('os');
13
-
14
- var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
15
- // src/internal/providers/registry.ts
16
- var REGISTRY = chunkNVXXWAU7_cjs.globalSingleton(
17
- "theokit-sdk.providers.registry",
18
- () => /* @__PURE__ */ new Map()
19
- );
20
- var ALIASES = chunkNVXXWAU7_cjs.globalSingleton("theokit-sdk.providers.aliases", () => /* @__PURE__ */ new Map());
21
- function registerProvider(profile) {
22
- if (REGISTRY.has(profile.name)) {
23
- chunk6LHQPOMI_cjs.diag(`[theokit-sdk] Provider "${profile.name}" overridden by user plugin.
24
- `);
25
- }
26
- REGISTRY.set(profile.name, profile);
27
- for (const alias of profile.aliases ?? []) {
28
- const previous = ALIASES.get(alias);
29
- if (previous !== void 0 && previous !== profile.name) {
30
- chunk6LHQPOMI_cjs.diag(`[theokit-sdk] Alias "${alias}" collision: was "${previous}", now "${profile.name}".
31
- `);
32
- }
33
- ALIASES.set(alias, profile.name);
34
- }
35
- }
36
- function getProviderProfile(name) {
37
- const canonical = ALIASES.get(name) ?? name;
38
- return REGISTRY.get(canonical);
39
- }
40
- function listProviders() {
41
- return Array.from(REGISTRY.values());
42
- }
43
- var MODALITIES = ["text", "audio", "image", "video", "pdf"];
44
- var costSchema = zod.z.object({
45
- /** USD per 1M tokens (models.dev convention). */
46
- input: zod.z.number().nonnegative(),
47
- output: zod.z.number().nonnegative(),
48
- cache_read: zod.z.number().nonnegative().optional(),
49
- cache_write: zod.z.number().nonnegative().optional()
50
- }).loose();
51
- var limitSchema = zod.z.object({
52
- context: zod.z.number().positive(),
53
- input: zod.z.number().positive().optional(),
54
- output: zod.z.number().positive().optional()
55
- }).loose();
56
- var modalitiesSchema = zod.z.object({
57
- input: zod.z.array(zod.z.enum(MODALITIES)).optional(),
58
- output: zod.z.array(zod.z.enum(MODALITIES)).optional()
59
- }).loose();
60
- var catalogModelSchema = zod.z.object({
61
- name: zod.z.string().optional(),
62
- release_date: zod.z.string().optional(),
63
- attachment: zod.z.boolean().optional(),
64
- reasoning: zod.z.boolean().optional(),
65
- temperature: zod.z.boolean().optional(),
66
- tool_call: zod.z.boolean().optional(),
67
- /** theokit extension — maps to ModelCapabilities.supportsStructuredOutput. */
68
- structured_output: zod.z.boolean().optional(),
69
- /** theokit extension — maps to ModelCapabilities.supportsCacheControl. */
70
- cache_control: zod.z.boolean().optional(),
71
- cost: costSchema.optional(),
72
- limit: limitSchema.optional(),
73
- modalities: modalitiesSchema.optional(),
74
- status: zod.z.enum(["alpha", "beta", "deprecated"]).optional()
75
- }).loose();
76
- var catalogEntrySchema = zod.z.object({
77
- id: zod.z.string().min(1),
78
- displayName: zod.z.string().min(1),
79
- apiMode: zod.z.enum([
80
- "chat_completions",
81
- "anthropic_messages",
82
- "responses_api",
83
- "bedrock",
84
- "bedrock_anthropic"
85
- ]),
86
- authType: zod.z.enum([
87
- "api_key",
88
- "oauth_device_code",
89
- "oauth_external",
90
- "aws_sdk",
91
- "aws_bearer",
92
- "gcp_oauth",
93
- "none"
94
- ]),
95
- baseUrl: zod.z.string(),
96
- envVars: zod.z.array(zod.z.string()),
97
- fallbackModels: zod.z.array(zod.z.string()),
98
- capabilities: zod.z.object({
99
- supportsToolUse: zod.z.boolean(),
100
- supportsVision: zod.z.boolean(),
101
- supportsStructuredOutput: zod.z.boolean(),
102
- supportsStreaming: zod.z.boolean(),
103
- supportsCacheControl: zod.z.boolean(),
104
- maxContextTokens: zod.z.number().int().positive().optional(),
105
- maxOutputTokens: zod.z.number().int().positive().optional()
106
- }),
107
- aliases: zod.z.array(zod.z.string()).optional(),
108
- modelsUrl: zod.z.string().optional(),
109
- hostname: zod.z.string().optional(),
110
- extraHeaders: zod.z.record(zod.z.string(), zod.z.string()).optional(),
111
- models: zod.z.record(zod.z.string(), catalogModelSchema).optional()
112
- }).loose();
113
-
114
- // src/internal/providers/catalog-loader.ts
115
- var __dirname_resolved = path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-YRJA2POB.cjs', document.baseURI).href))));
116
- var modelInfoIndex = chunkNVXXWAU7_cjs.globalSingleton(
117
- "theokit-sdk.providers.model-info-index",
118
- () => /* @__PURE__ */ new Map()
119
- );
120
- var patchedModelKeys = chunkNVXXWAU7_cjs.globalSingleton(
121
- "theokit-sdk.providers.model-info-patched",
122
- () => /* @__PURE__ */ new Set()
123
- );
124
- var indexState = chunkNVXXWAU7_cjs.globalSingleton("theokit-sdk.providers.model-info-loaded", () => ({
125
- loaded: false
126
- }));
127
- function getCatalogModelInfo(key) {
128
- ensureModelIndexLoaded();
129
- return modelInfoIndex.get(key);
130
- }
131
- function isPatchedModelKey(key) {
132
- return patchedModelKeys.has(key);
133
- }
134
- function patchModelInfo(key, model) {
135
- ensureModelIndexLoaded();
136
- const existing = modelInfoIndex.get(key);
137
- modelInfoIndex.set(key, existing === void 0 ? model : { ...existing, ...model });
138
- patchedModelKeys.add(key);
139
- }
140
- function ensureModelIndexLoaded() {
141
- if (indexState.loaded) return;
142
- indexState.loaded = true;
143
- try {
144
- const catalog = loadProviderCatalog();
145
- for (const entry of Object.values(catalog)) {
146
- indexEntryModels(entry);
147
- }
148
- } catch (err) {
149
- chunk6LHQPOMI_cjs.diag(
150
- `[theokit-sdk] WARN: provider catalog unavailable (${err.message}) \u2014 per-model data disabled
151
- `
152
- );
153
- }
154
- }
155
- function indexEntryModels(entry) {
156
- if (entry.models === void 0 || typeof entry.models !== "object") return;
157
- for (const [modelId, raw] of Object.entries(entry.models)) {
158
- const parsed = catalogModelSchema.safeParse(raw);
159
- if (!parsed.success) {
160
- chunk6LHQPOMI_cjs.diag(
161
- `[theokit-sdk] WARN: Skipping malformed catalog model "${entry.id}/${modelId}": ${parsed.error.issues[0]?.message ?? "invalid"}
162
- `
163
- );
164
- continue;
165
- }
166
- modelInfoIndex.set(`${entry.id}/${modelId}`, parsed.data);
167
- for (const alias of entry.aliases ?? []) {
168
- const key = `${alias}/${modelId}`;
169
- if (!modelInfoIndex.has(key)) modelInfoIndex.set(key, parsed.data);
170
- }
171
- }
172
- }
173
- function validateEntry(raw) {
174
- const parsed = catalogEntrySchema.safeParse(raw);
175
- return parsed.success ? parsed.data : null;
176
- }
177
- function loadProviderCatalog(opts) {
178
- const catalogPath = path.join(__dirname_resolved, "provider-catalog.json");
179
- const rawText = fs.readFileSync(catalogPath, "utf-8");
180
- let entries = JSON.parse(rawText);
181
- if (opts?._testInjectMalformed) {
182
- entries = [
183
- ...entries,
184
- { id: "malformed-provider", displayName: "Bad" }
185
- ];
186
- }
187
- const result = {};
188
- for (const raw of entries) {
189
- const validated = validateEntry(raw);
190
- if (validated === null) {
191
- chunk6LHQPOMI_cjs.diag(
192
- `[theokit-sdk] WARN: Skipping malformed catalog entry: ${JSON.stringify(raw).slice(0, 100)}
193
- `
194
- );
195
- continue;
196
- }
197
- result[validated.id] = validated;
198
- }
199
- return result;
200
- }
201
- var _capabilitiesCache = null;
202
- function getCatalogCapabilities(providerId) {
203
- if (_capabilitiesCache === null) {
204
- const catalog = loadProviderCatalog();
205
- _capabilitiesCache = {};
206
- for (const entry of Object.values(catalog)) {
207
- _capabilitiesCache[entry.id] = entry.capabilities;
208
- for (const alias of entry.aliases ?? []) {
209
- if (_capabilitiesCache[alias] === void 0) _capabilitiesCache[alias] = entry.capabilities;
210
- }
211
- }
212
- }
213
- return _capabilitiesCache[providerId];
214
- }
215
- function registerCatalogProviders(opts) {
216
- const catalog = loadProviderCatalog(opts);
217
- for (const entry of Object.values(catalog)) {
218
- if (getProviderProfile(entry.id) !== void 0) continue;
219
- if (entry.aliases?.some((a) => getProviderProfile(a) !== void 0)) continue;
220
- const profile = {
221
- name: entry.id,
222
- apiMode: entry.apiMode,
223
- authType: entry.authType,
224
- baseUrl: entry.baseUrl,
225
- envVars: entry.envVars,
226
- fallbackModels: entry.fallbackModels,
227
- displayName: entry.displayName,
228
- aliases: entry.aliases,
229
- modelsUrl: entry.modelsUrl,
230
- hostname: entry.hostname,
231
- extraHeaders: entry.extraHeaders
232
- };
233
- registerProvider(profile);
234
- }
235
- }
236
-
237
- // src/internal/providers/builtin/anthropic.ts
238
- var ANTHROPIC = {
239
- name: "anthropic",
240
- apiMode: "anthropic_messages",
241
- envVars: ["ANTHROPIC_API_KEY"],
242
- authType: "api_key",
243
- baseUrl: "https://api.anthropic.com",
244
- modelsUrl: "https://api.anthropic.com/v1/models",
245
- hostname: "api.anthropic.com",
246
- fallbackModels: ["claude-opus-4-7", "claude-sonnet-4-6", "claude-haiku-4-5-20251001"],
247
- // M45 — the Anthropic beta-features header (interleaved thinking + fine-grained tool streaming). An
248
- // Anthropic API constant. The
249
- // SANCTIONED behavior delta of M45 (ADR D4) — consumed by the anthropic transport's extraHeaders wiring.
250
- extraHeaders: {
251
- "anthropic-beta": "interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14"
252
- }
253
- };
254
-
255
- // src/internal/providers/builtin/bedrock.ts
256
- var BEDROCK = {
257
- name: "bedrock",
258
- apiMode: "bedrock_anthropic",
259
- envVars: ["AWS_BEARER_TOKEN_BEDROCK"],
260
- authType: "aws_bearer",
261
- baseUrl: "https://bedrock-runtime.us-east-1.amazonaws.com",
262
- modelsUrl: void 0,
263
- hostname: "bedrock-runtime.amazonaws.com",
264
- fallbackModels: [
265
- "bedrock/us.anthropic.claude-sonnet-4-5-v1:0",
266
- "bedrock/us.anthropic.claude-opus-4-7-v1:0",
267
- "bedrock/global.anthropic.claude-haiku-4-5-v1:0"
268
- ]
269
- };
270
- function stripBedrockPrefix(modelId) {
271
- return modelId.replace(/^bedrock\//, "");
272
- }
273
- function inferRegionFromModelId(modelId) {
274
- const id = stripBedrockPrefix(modelId);
275
- if (id.startsWith("global.")) return "us-east-1";
276
- if (id.startsWith("us.")) return process.env.AWS_REGION ?? "us-east-1";
277
- if (id.startsWith("eu.")) return process.env.AWS_REGION ?? "eu-west-1";
278
- if (id.startsWith("apac.")) return process.env.AWS_REGION ?? "ap-southeast-1";
279
- if (id.startsWith("jp.")) return "ap-northeast-1";
280
- return void 0;
281
- }
282
- function resolveBedrockBaseUrl(modelId) {
283
- const region = inferRegionFromModelId(modelId) ?? process.env.AWS_REGION ?? "us-east-1";
284
- return `https://bedrock-runtime.${region}.amazonaws.com`;
285
- }
286
-
287
- // src/internal/providers/builtin/openai-compatible.ts
288
- function openAiCompatibleProfile(p) {
289
- return {
290
- apiMode: "chat_completions",
291
- authType: "api_key",
292
- fallbackModels: [],
293
- ...p
294
- };
295
- }
296
-
297
- // src/internal/providers/builtin/cerebras.ts
298
- var CEREBRAS = openAiCompatibleProfile({
299
- name: "cerebras",
300
- baseUrl: "https://api.cerebras.ai/v1",
301
- envVars: ["CEREBRAS_API_KEY"],
302
- fallbackModels: ["gpt-oss-120b", "zai-glm-4.7"],
303
- extraHeaders: { "X-Cerebras-3rd-Party-Integration": "theokit" },
304
- hostname: "api.cerebras.ai"
305
- });
306
-
307
- // src/internal/providers/builtin/cohere.ts
308
- var COHERE = openAiCompatibleProfile({
309
- name: "cohere",
310
- baseUrl: "https://api.cohere.ai/compatibility/v1",
311
- envVars: ["COHERE_API_KEY", "CO_API_KEY"],
312
- fallbackModels: ["command-a-03-2025"],
313
- hostname: "api.cohere.ai"
314
- });
315
-
316
- // src/internal/providers/builtin/deepinfra.ts
317
- var DEEPINFRA = openAiCompatibleProfile({
318
- name: "deepinfra",
319
- baseUrl: "https://api.deepinfra.com/v1/openai",
320
- envVars: ["DEEPINFRA_API_KEY"],
321
- fallbackModels: ["Qwen/Qwen3-32B"],
322
- hostname: "api.deepinfra.com"
323
- });
324
-
325
- // src/internal/providers/builtin/gemini.ts
326
- var GEMINI = {
327
- name: "gemini",
328
- apiMode: "chat_completions",
329
- envVars: ["OPENROUTER_API_KEY"],
330
- authType: "api_key",
331
- baseUrl: "https://openrouter.ai/api",
332
- hostname: "openrouter.ai",
333
- fallbackModels: ["google/gemini-2.0-flash-001"]
334
- };
335
-
336
- // src/internal/providers/builtin/google.ts
337
- var GOOGLE = openAiCompatibleProfile({
338
- name: "google",
339
- baseUrl: "https://generativelanguage.googleapis.com/v1beta/openai",
340
- envVars: ["GOOGLE_API_KEY", "GEMINI_API_KEY", "GOOGLE_GENERATIVE_AI_API_KEY"],
341
- fallbackModels: ["gemini-2.5-pro", "gemini-2.5-flash"],
342
- hostname: "generativelanguage.googleapis.com"
343
- });
344
-
345
- // src/internal/providers/builtin/groq.ts
346
- var GROQ = openAiCompatibleProfile({
347
- name: "groq",
348
- baseUrl: "https://api.groq.com/openai/v1",
349
- envVars: ["GROQ_API_KEY"],
350
- fallbackModels: ["llama-3.3-70b-versatile", "llama-3.1-8b-instant"],
351
- hostname: "api.groq.com"
352
- });
353
-
354
- // src/internal/providers/builtin/llamacpp.ts
355
- var LLAMACPP = {
356
- name: "llamacpp",
357
- aliases: ["llama-cpp", "llama.cpp"],
358
- apiMode: "chat_completions",
359
- envVars: ["LLAMACPP_API_KEY"],
360
- authType: "none",
361
- baseUrl: "http://localhost:8080",
362
- modelsUrl: "http://localhost:8080/v1/models",
363
- hostname: "localhost",
364
- fallbackModels: ["loaded-model"]
365
- };
366
-
367
- // src/internal/providers/builtin/lmstudio.ts
368
- var LMSTUDIO = {
369
- name: "lmstudio",
370
- aliases: ["lm-studio", "lm_studio"],
371
- apiMode: "chat_completions",
372
- envVars: ["LMSTUDIO_API_KEY"],
373
- authType: "none",
374
- baseUrl: "http://localhost:1234",
375
- modelsUrl: "http://localhost:1234/v1/models",
376
- hostname: "localhost",
377
- fallbackModels: ["loaded-model"]
378
- };
379
-
380
- // src/internal/providers/builtin/mistral.ts
381
- var MISTRAL = openAiCompatibleProfile({
382
- name: "mistral",
383
- baseUrl: "https://api.mistral.ai/v1",
384
- envVars: ["MISTRAL_API_KEY"],
385
- fallbackModels: ["mistral-large-latest", "codestral-latest"],
386
- hostname: "api.mistral.ai"
387
- });
388
-
389
- // src/internal/providers/builtin/ollama.ts
390
- var OLLAMA = {
391
- name: "ollama",
392
- apiMode: "chat_completions",
393
- envVars: ["OLLAMA_API_KEY"],
394
- authType: "none",
395
- baseUrl: "http://localhost:11434",
396
- modelsUrl: "http://localhost:11434/v1/models",
397
- hostname: "localhost",
398
- fallbackModels: ["llama3.2", "qwen2.5", "mistral"]
399
- };
400
-
401
- // src/internal/providers/builtin/openai.ts
402
- var OPENAI = {
403
- name: "openai",
404
- apiMode: "chat_completions",
405
- envVars: ["OPENAI_API_KEY"],
406
- authType: "api_key",
407
- baseUrl: "https://api.openai.com",
408
- modelsUrl: "https://api.openai.com/v1/models",
409
- hostname: "api.openai.com",
410
- fallbackModels: ["gpt-4o", "gpt-4o-mini"]
411
- };
412
- var DEFAULT_STORE = {
413
- home: os.homedir(),
414
- dirName: ".theokit",
415
- fileName: "auth.json",
416
- homeEnvVar: "THEOKIT_AUTH_HOME"
417
- };
418
- var OPENAI_OAUTH_CONFIG = {
419
- provider: "openai",
420
- authorizeEndpoint: "https://auth.openai.com/oauth/authorize",
421
- tokenEndpoint: "https://auth.openai.com/oauth/token",
422
- clientId: "app_EMoamEEZ73f0CkXaXp7hrann",
423
- scopes: ["openid", "profile", "email", "offline_access"],
424
- redirectUri: "https://auth.openai.com/deviceauth/callback"
425
- };
426
- function codexFetch() {
427
- return (async (input, init) => {
428
- const env = process.env;
429
- const resolved = await chunkRA7IE4NK_cjs.resolveCredential({
430
- provider: "openai",
431
- store: DEFAULT_STORE,
432
- oauth: OPENAI_OAUTH_CONFIG,
433
- env
434
- });
435
- if (resolved === void 0) {
436
- throw new chunkUNFBHV46_cjs.AuthenticationError(
437
- 'openai-chatgpt: no ChatGPT credential found \u2014 run the OpenAI device login (e.g. "/login openai") first.',
438
- { code: "missing_credential" }
439
- );
440
- }
441
- const accountId = chunkNAGPKWOD_cjs.readStoredOAuth(DEFAULT_STORE, env)?.account_id;
442
- const headers = new Headers(init?.headers);
443
- headers.set("authorization", `Bearer ${resolved.apiKey}`);
444
- if (accountId !== void 0) headers.set("ChatGPT-Account-Id", accountId);
445
- return fetch(input, { ...init, headers });
446
- });
447
- }
448
- var OPENAI_CHATGPT = {
449
- name: "openai-chatgpt",
450
- apiMode: "responses_api",
451
- authType: "oauth_device_code",
452
- baseUrl: "https://chatgpt.com/backend-api/codex",
453
- envVars: [],
454
- fallbackModels: [
455
- "openai-chatgpt/gpt-5.4",
456
- "openai-chatgpt/gpt-5.4-mini",
457
- "openai-chatgpt/gpt-5.5"
458
- ],
459
- // #165 — this shipped as `codex_cli_rs`, another vendor's client identifier. Claiming to be a different
460
- // vendor's client is a false statement of identity. Third-party clients send their OWN name against
461
- // this same endpoint, which also shows the route is not restricted to the official client.
462
- extraHeaders: { originator: "theokit" },
463
- // usetheokit/theokit-sdk#383 — carry the model's encrypted reasoning between the rounds of a turn.
464
- // On for THIS profile and no other because this is the endpoint the issue measured: OpenAI Codex
465
- // sends `include: ["reasoning.encrypted_content"]` with `reasoning.context: "all_turns"` to the
466
- // same backend, same model, on the same account, so acceptance is observed rather than assumed.
467
- // The issue's measurement — a third of our bytes, 2.8x our tokens — is what this closes together
468
- // with `prompt_cache_key`.
469
- encryptedReasoning: true,
470
- transform: {
471
- // Only `fetch` (async) can await the credential refresh; `headers` is sync and cannot.
472
- fetch: () => codexFetch()
473
- }
474
- };
475
-
476
- // src/internal/providers/builtin/openrouter.ts
477
- var OPENROUTER = {
478
- name: "openrouter",
479
- apiMode: "chat_completions",
480
- aliases: ["or"],
481
- // Ordered fallback (EC-10): OPENROUTER_API_KEY preferred, OPENAI_API_KEY as compat.
482
- envVars: ["OPENROUTER_API_KEY", "OPENAI_API_KEY"],
483
- authType: "api_key",
484
- baseUrl: "https://openrouter.ai/api",
485
- modelsUrl: "https://openrouter.ai/api/v1/models",
486
- hostname: "openrouter.ai",
487
- // M45 — models refreshed (claude-3-haiku retired upstream).
488
- fallbackModels: ["openai/gpt-4o-mini", "anthropic/claude-haiku-4-5"],
489
- // M45 — OpenRouter app-attribution headers. VALUES are
490
- // theokit's own — copying another app's referer would misattribute traffic).
491
- extraHeaders: { "HTTP-Referer": "https://usetheo.dev", "X-Title": "theokit" }
492
- };
493
-
494
- // src/internal/providers/builtin/perplexity.ts
495
- var PERPLEXITY = openAiCompatibleProfile({
496
- name: "perplexity",
497
- baseUrl: "https://api.perplexity.ai",
498
- chatCompletionsPath: "/chat/completions",
499
- envVars: ["PERPLEXITY_API_KEY"],
500
- fallbackModels: ["sonar-pro", "sonar"],
501
- hostname: "api.perplexity.ai"
502
- });
503
-
504
- // src/internal/providers/builtin/together.ts
505
- var TOGETHER = openAiCompatibleProfile({
506
- name: "together",
507
- aliases: ["togetherai"],
508
- baseUrl: "https://api.together.xyz/v1",
509
- envVars: ["TOGETHER_API_KEY"],
510
- fallbackModels: ["Qwen/Qwen2.5-7B-Instruct-Turbo"],
511
- hostname: "api.together.xyz"
512
- });
513
-
514
- // src/internal/providers/builtin/vertex.ts
515
- var VERTEX = {
516
- name: "vertex",
517
- apiMode: "anthropic_messages",
518
- // sub-dispatched in selectTransport by profile.name
519
- envVars: ["GOOGLE_APPLICATION_CREDENTIALS"],
520
- authType: "gcp_oauth",
521
- baseUrl: "https://us-central1-aiplatform.googleapis.com",
522
- modelsUrl: void 0,
523
- hostname: "aiplatform.googleapis.com",
524
- fallbackModels: [
525
- "vertex/anthropic/claude-sonnet-4-5@20250929",
526
- "vertex/google/gemini-2.0-flash-001"
527
- ]
528
- };
529
- function resolveVertexBaseUrl(opts) {
530
- const host = opts.location === "global" ? "aiplatform.googleapis.com" : `${opts.location}-aiplatform.googleapis.com`;
531
- if (opts.modelDialect === "gemini") {
532
- return `https://${host}/v1/projects/${opts.projectId}/locations/${opts.location}/endpoints/openapi`;
533
- }
534
- return `https://${host}/v1/projects/${opts.projectId}/locations/${opts.location}/publishers/anthropic`;
535
- }
536
- function inferModelDialect(modelId) {
537
- if (modelId.includes("/anthropic/")) return "anthropic";
538
- if (modelId.includes("/google/")) return "gemini";
539
- return "gemini";
540
- }
541
- function stripVertexPrefix(modelId) {
542
- return modelId.replace(/^vertex\/(anthropic|google)\//, "");
543
- }
544
-
545
- // src/internal/providers/builtin/xai.ts
546
- var XAI = openAiCompatibleProfile({
547
- name: "xai",
548
- aliases: ["grok"],
549
- baseUrl: "https://api.x.ai/v1",
550
- envVars: ["XAI_API_KEY"],
551
- fallbackModels: ["grok-4.5", "grok-4.3"],
552
- hostname: "api.x.ai"
553
- });
554
-
555
- // src/internal/providers/builtin/index.ts
556
- var _registeredState = chunkNVXXWAU7_cjs.globalSingleton("theokit-sdk.providers.builtins-registered", () => ({
557
- done: false
558
- }));
559
- function registerBuiltins() {
560
- if (_registeredState.done) return;
561
- _registeredState.done = true;
562
- registerProvider(ANTHROPIC);
563
- registerProvider(OPENAI);
564
- registerProvider(OPENAI_CHATGPT);
565
- registerProvider(OPENROUTER);
566
- registerProvider(GEMINI);
567
- registerProvider(OLLAMA);
568
- registerProvider(LMSTUDIO);
569
- registerProvider(LLAMACPP);
570
- registerProvider(BEDROCK);
571
- registerProvider(VERTEX);
572
- registerProvider(GOOGLE);
573
- registerProvider(MISTRAL);
574
- registerProvider(GROQ);
575
- registerProvider(COHERE);
576
- registerProvider(DEEPINFRA);
577
- registerProvider(TOGETHER);
578
- registerProvider(XAI);
579
- registerProvider(PERPLEXITY);
580
- registerProvider(CEREBRAS);
581
- registerCatalogProviders();
582
- }
583
-
584
- exports.catalogModelSchema = catalogModelSchema;
585
- exports.getCatalogCapabilities = getCatalogCapabilities;
586
- exports.getCatalogModelInfo = getCatalogModelInfo;
587
- exports.getProviderProfile = getProviderProfile;
588
- exports.inferModelDialect = inferModelDialect;
589
- exports.inferRegionFromModelId = inferRegionFromModelId;
590
- exports.isPatchedModelKey = isPatchedModelKey;
591
- exports.listProviders = listProviders;
592
- exports.loadProviderCatalog = loadProviderCatalog;
593
- exports.patchModelInfo = patchModelInfo;
594
- exports.registerBuiltins = registerBuiltins;
595
- exports.registerProvider = registerProvider;
596
- exports.resolveBedrockBaseUrl = resolveBedrockBaseUrl;
597
- exports.resolveVertexBaseUrl = resolveVertexBaseUrl;
598
- exports.stripBedrockPrefix = stripBedrockPrefix;
599
- exports.stripVertexPrefix = stripVertexPrefix;
600
- //# sourceMappingURL=chunk-YRJA2POB.cjs.map
601
- //# sourceMappingURL=chunk-YRJA2POB.cjs.map