@bastani/pi-ai 0.9.40-alpha.2 → 0.9.41-alpha.1

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 (113) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +28 -0
  3. package/dist/api/anthropic-messages.d.ts.map +1 -1
  4. package/dist/api/anthropic-messages.js +7 -10
  5. package/dist/api/anthropic-messages.js.map +1 -1
  6. package/dist/api/azure-openai-responses.js +2 -2
  7. package/dist/api/azure-openai-responses.js.map +1 -1
  8. package/dist/api/bedrock-converse-stream.d.ts.map +1 -1
  9. package/dist/api/bedrock-converse-stream.js +12 -0
  10. package/dist/api/bedrock-converse-stream.js.map +1 -1
  11. package/dist/api/classifier-shared.d.ts.map +1 -1
  12. package/dist/api/classifier-shared.js +4 -3
  13. package/dist/api/classifier-shared.js.map +1 -1
  14. package/dist/api/google-generative-ai.js +4 -4
  15. package/dist/api/google-generative-ai.js.map +1 -1
  16. package/dist/api/google-vertex.d.ts.map +1 -1
  17. package/dist/api/google-vertex.js +9 -9
  18. package/dist/api/google-vertex.js.map +1 -1
  19. package/dist/api/llama-cpp-classify.d.ts.map +1 -1
  20. package/dist/api/llama-cpp-classify.js +2 -1
  21. package/dist/api/llama-cpp-classify.js.map +1 -1
  22. package/dist/api/mistral-conversations.js +2 -2
  23. package/dist/api/mistral-conversations.js.map +1 -1
  24. package/dist/api/openai-codex-responses.d.ts.map +1 -1
  25. package/dist/api/openai-codex-responses.js +12 -9
  26. package/dist/api/openai-codex-responses.js.map +1 -1
  27. package/dist/api/openai-completions.d.ts.map +1 -1
  28. package/dist/api/openai-completions.js +4 -4
  29. package/dist/api/openai-completions.js.map +1 -1
  30. package/dist/api/openai-responses.d.ts.map +1 -1
  31. package/dist/api/openai-responses.js +15 -7
  32. package/dist/api/openai-responses.js.map +1 -1
  33. package/dist/api/openrouter-images.d.ts.map +1 -1
  34. package/dist/api/openrouter-images.js +4 -3
  35. package/dist/api/openrouter-images.js.map +1 -1
  36. package/dist/api/pi-messages.d.ts.map +1 -1
  37. package/dist/api/pi-messages.js +3 -3
  38. package/dist/api/pi-messages.js.map +1 -1
  39. package/dist/api/simple-options.d.ts.map +1 -1
  40. package/dist/api/simple-options.js +1 -0
  41. package/dist/api/simple-options.js.map +1 -1
  42. package/dist/auth/oauth/anthropic.d.ts.map +1 -1
  43. package/dist/auth/oauth/anthropic.js +15 -2
  44. package/dist/auth/oauth/anthropic.js.map +1 -1
  45. package/dist/auth/oauth/github-copilot.d.ts.map +1 -1
  46. package/dist/auth/oauth/github-copilot.js +7 -2
  47. package/dist/auth/oauth/github-copilot.js.map +1 -1
  48. package/dist/auth/oauth/kimi-coding.d.ts.map +1 -1
  49. package/dist/auth/oauth/kimi-coding.js +24 -21
  50. package/dist/auth/oauth/kimi-coding.js.map +1 -1
  51. package/dist/auth/oauth/meta.d.ts.map +1 -1
  52. package/dist/auth/oauth/meta.js +7 -2
  53. package/dist/auth/oauth/meta.js.map +1 -1
  54. package/dist/auth/oauth/openai-chatgpt.d.ts.map +1 -1
  55. package/dist/auth/oauth/openai-chatgpt.js +10 -0
  56. package/dist/auth/oauth/openai-chatgpt.js.map +1 -1
  57. package/dist/auth/oauth/openai-codex.d.ts.map +1 -1
  58. package/dist/auth/oauth/openai-codex.js +11 -2
  59. package/dist/auth/oauth/openai-codex.js.map +1 -1
  60. package/dist/auth/oauth/radius.d.ts.map +1 -1
  61. package/dist/auth/oauth/radius.js +24 -8
  62. package/dist/auth/oauth/radius.js.map +1 -1
  63. package/dist/auth/oauth/xai.d.ts.map +1 -1
  64. package/dist/auth/oauth/xai.js +11 -0
  65. package/dist/auth/oauth/xai.js.map +1 -1
  66. package/dist/auth/oauth-refresh-errors.d.ts +46 -0
  67. package/dist/auth/oauth-refresh-errors.d.ts.map +1 -0
  68. package/dist/auth/oauth-refresh-errors.js +150 -0
  69. package/dist/auth/oauth-refresh-errors.js.map +1 -0
  70. package/dist/auth/resolve.d.ts +23 -0
  71. package/dist/auth/resolve.d.ts.map +1 -1
  72. package/dist/auth/resolve.js +194 -5
  73. package/dist/auth/resolve.js.map +1 -1
  74. package/dist/index.d.ts +3 -0
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +3 -0
  77. package/dist/index.js.map +1 -1
  78. package/dist/models.d.ts +4 -1
  79. package/dist/models.d.ts.map +1 -1
  80. package/dist/models.js +15 -4
  81. package/dist/models.js.map +1 -1
  82. package/dist/providers/data/.manifest.json +1 -1
  83. package/dist/providers/data/amazon-bedrock.json +1 -1
  84. package/dist/providers/data/baseten.json +1 -1
  85. package/dist/providers/data/cerebras.json +1 -1
  86. package/dist/providers/data/github-copilot.json +1 -1
  87. package/dist/providers/data/groq.json +1 -1
  88. package/dist/providers/data/huggingface.json +1 -1
  89. package/dist/providers/data/nvidia.json +1 -1
  90. package/dist/providers/data/opencode.json +1 -1
  91. package/dist/providers/data/openrouter.json +1 -1
  92. package/dist/providers/data/radius.json +1 -1
  93. package/dist/providers/data/together.json +1 -1
  94. package/dist/providers/data/vercel-ai-gateway.json +1 -1
  95. package/dist/types.d.ts +6 -0
  96. package/dist/types.d.ts.map +1 -1
  97. package/dist/types.js.map +1 -1
  98. package/dist/utils/identity.d.ts +65 -0
  99. package/dist/utils/identity.d.ts.map +1 -0
  100. package/dist/utils/identity.js +142 -0
  101. package/dist/utils/identity.js.map +1 -0
  102. package/dist/utils/retry.d.ts.map +1 -1
  103. package/dist/utils/retry.js +9 -8
  104. package/dist/utils/retry.js.map +1 -1
  105. package/dist/utils/version.d.ts +2 -0
  106. package/dist/utils/version.d.ts.map +1 -0
  107. package/dist/utils/version.js +3 -0
  108. package/dist/utils/version.js.map +1 -0
  109. package/package.json +1 -1
  110. package/dist/utils/pi-user-agent.d.ts +0 -2
  111. package/dist/utils/pi-user-agent.d.ts.map +0 -1
  112. package/dist/utils/pi-user-agent.js +0 -12
  113. package/dist/utils/pi-user-agent.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/auth/resolve.ts"],"names":[],"mappings":"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","sourcesContent":["import { normalizeProviderId } from \"../provider-id.ts\";\nimport type { ProviderEnv } from \"../types.ts\";\nimport { operationSignal, raceWithAbortSignal } from \"../utils/abort.ts\";\nimport { ModelsError } from \"../utils/models-error.ts\";\n\nexport { ModelsError, type ModelsErrorCode } from \"../utils/models-error.ts\";\n\nimport type {\n\tApiKeyAuth,\n\tApiKeyCredential,\n\tAuthContext,\n\tAuthResult,\n\tCredential,\n\tCredentialStore,\n\tOAuthAuth,\n\tOAuthCredential,\n\tProviderAuth,\n} from \"./types.ts\";\n\n/** Bound for pre-transport request-auth work: credential read, OAuth refresh, and toAuth. */\nexport const REQUEST_AUTH_PREPARATION_TIMEOUT_MS = 15_000;\n\n/** Source-neutral diagnostic when pre-transport request auth exceeds {@link REQUEST_AUTH_PREPARATION_TIMEOUT_MS}. */\nexport function requestAuthTimeoutMessage(providerId: string): string {\n\treturn `Request authentication timed out for ${providerId}. Check the provider's credential source and try again.`;\n}\n\nexport interface AuthResolutionOverrides {\n\tapiKey?: string;\n\tenv?: ProviderEnv;\n\t/** Require this much remaining OAuth-token validity; defaults to five minutes. */\n\tminOAuthValidityMs?: number;\n\tsignal?: AbortSignal;\n}\n\n/**\n * Auth resolution shared by all operations in a `Models` collection.\n * A stored credential owns the provider: ambient/env is consulted only when\n * nothing is stored. A provider that borrows credentials reads only its\n * lenders' (see `readProviderCredential`). No silent env fallback after a failed\n * refresh or for a credential type without a matching handler.\n */\nexport function resolveProviderAuth(\n\tprovider: { id: string; auth: ProviderAuth },\n\tcredentials: CredentialStore,\n\tauthContext: AuthContext,\n\toverrides?: AuthResolutionOverrides,\n): Promise<AuthResult | undefined> {\n\tconst caller = operationSignal(overrides?.signal);\n\tconst timeout = new AbortController();\n\tconst timer = setTimeout(() => {\n\t\ttimeout.abort();\n\t}, REQUEST_AUTH_PREPARATION_TIMEOUT_MS);\n\tconst signal = AbortSignal.any([caller, timeout.signal]);\n\tconst operation = resolveProviderAuthWithSignal(\n\t\tprovider,\n\t\tcredentials,\n\t\tauthContext,\n\t\t{ ...overrides, signal },\n\t\tsignal,\n\t);\n\treturn raceWithAbortSignal(operation, signal)\n\t\t.catch((error: unknown) => {\n\t\t\tif (timeout.signal.aborted && !caller.aborted) {\n\t\t\t\tthrow new ModelsError(\"auth\", requestAuthTimeoutMessage(provider.id));\n\t\t\t}\n\t\t\tthrow error;\n\t\t})\n\t\t.finally(() => {\n\t\t\tclearTimeout(timer);\n\t\t});\n}\n\nasync function resolveProviderAuthWithSignal(\n\tprovider: { id: string; auth: ProviderAuth },\n\tcredentials: CredentialStore,\n\tauthContext: AuthContext,\n\toverrides: AuthResolutionOverrides | undefined,\n\tsignal: AbortSignal,\n): Promise<AuthResult | undefined> {\n\tsignal.throwIfAborted();\n\tconst requestAuthContext = overrides?.env ? overlayEnvAuthContext(authContext, overrides.env) : authContext;\n\n\tif (overrides?.apiKey !== undefined && provider.auth.apiKey) {\n\t\treturn resolveApiKey(\n\t\t\trequestAuthContext,\n\t\t\tprovider.auth.apiKey,\n\t\t\tprovider.id,\n\t\t\t{\n\t\t\t\ttype: \"api_key\",\n\t\t\t\tkey: overrides.apiKey,\n\t\t\t\tenv: overrides.env,\n\t\t\t},\n\t\t\tsignal,\n\t\t);\n\t}\n\n\tconst stored = await readProviderCredential(credentials, provider, signal);\n\tif (stored) {\n\t\tif (stored.type === \"oauth\" && provider.auth.oauth) {\n\t\t\treturn resolveStoredOAuth(\n\t\t\t\tcredentials,\n\t\t\t\tprovider.id,\n\t\t\t\tprovider.auth.oauth,\n\t\t\t\tstored,\n\t\t\t\tsignal,\n\t\t\t\toverrides?.minOAuthValidityMs,\n\t\t\t);\n\t\t}\n\t\tif (stored.type === \"api_key\" && provider.auth.apiKey) {\n\t\t\tconst credential = overrides?.env ? { ...stored, env: { ...stored.env, ...overrides.env } } : stored;\n\t\t\treturn resolveApiKey(requestAuthContext, provider.auth.apiKey, provider.id, credential, signal);\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t// Ambient (env vars, AWS profiles, ADC files).\n\treturn provider.auth.apiKey\n\t\t? resolveApiKey(requestAuthContext, provider.auth.apiKey, provider.id, undefined, signal)\n\t\t: undefined;\n}\n\nfunction overlayEnvAuthContext(base: AuthContext, env: ProviderEnv): AuthContext {\n\treturn {\n\t\tenv: async (name) => env[name] || (await base.env(name)),\n\t\tfileExists: (path) => base.fileExists(path),\n\t};\n}\n\nconst DEFAULT_OAUTH_MINIMUM_VALIDITY_MS = 5 * 60 * 1000;\nconst DEFAULT_OAUTH_REFRESH_TIMEOUT_MS = 60_000;\n\n/** Cancellation stops waiting for the credential lock, not an already started token rotation. */\nexport async function refreshStoredOAuthCredential(\n\tcredentials: CredentialStore,\n\tproviderId: string,\n\toauth: OAuthAuth,\n\tneedsRefresh: (credential: OAuthCredential) => boolean,\n\tsignal: AbortSignal,\n): Promise<OAuthCredential | undefined> {\n\tlet post: Credential | undefined;\n\tconst lockWait = new AbortController();\n\tconst cancelLockWait = () => lockWait.abort(signal.reason);\n\tsignal.addEventListener(\"abort\", cancelLockWait, { once: true });\n\tif (signal.aborted) cancelLockWait();\n\ttry {\n\t\tpost = await credentials.modify(\n\t\t\tproviderId,\n\t\t\tasync (current) => {\n\t\t\t\tsignal.removeEventListener(\"abort\", cancelLockWait);\n\t\t\t\tsignal.throwIfAborted();\n\t\t\t\tif (current?.type !== \"oauth\") return undefined;\n\t\t\t\tif (!needsRefresh(current)) return undefined;\n\t\t\t\ttry {\n\t\t\t\t\tconst refreshSignal = AbortSignal.timeout(DEFAULT_OAUTH_REFRESH_TIMEOUT_MS);\n\t\t\t\t\treturn await raceWithAbortSignal(oauth.refresh(current, refreshSignal), refreshSignal);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthrow new ModelsError(\"oauth\", `OAuth refresh failed for ${providerId}`, { cause: error });\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ signal: lockWait.signal },\n\t\t);\n\t} catch (error) {\n\t\tif (error instanceof ModelsError) throw error;\n\t\tsignal.throwIfAborted();\n\t\tthrow new ModelsError(\"auth\", `Credential store modify failed for ${providerId}`, { cause: error });\n\t} finally {\n\t\tsignal.removeEventListener(\"abort\", cancelLockWait);\n\t}\n\treturn post?.type === \"oauth\" ? post : undefined;\n}\n\n/** Refresh expiring tokens under the credential-store lock and persist rotation before releasing it. */\nasync function resolveStoredOAuth(\n\tcredentials: CredentialStore,\n\tproviderId: string,\n\toauth: OAuthAuth,\n\tstored: OAuthCredential,\n\tsignal: AbortSignal,\n\tminOAuthValidityMs?: number,\n): Promise<AuthResult | undefined> {\n\tconst minimumValidityMs = Math.max(DEFAULT_OAUTH_MINIMUM_VALIDITY_MS, minOAuthValidityMs ?? 0);\n\tconst expiresSoon = (credential: OAuthCredential) => Date.now() + minimumValidityMs >= credential.expires;\n\tlet credential = stored;\n\n\tif (expiresSoon(credential)) {\n\t\t// Optimistic check said expired; the authoritative check runs under the lock.\n\t\tconst post = await refreshStoredOAuthCredential(credentials, providerId, oauth, expiresSoon, signal);\n\t\tif (!post) return undefined;\n\t\tcredential = post;\n\t\t// The normal five-minute window triggers a refresh but does not impose a\n\t\t// provider contract. Explicit callers (such as bearer-token export) do\n\t\t// require the requested minimum after the refresh.\n\t\tif (minOAuthValidityMs !== undefined && expiresSoon(credential)) {\n\t\t\tthrow new ModelsError(\"oauth\", `OAuth refresh returned a token that expires too soon for ${providerId}`);\n\t\t}\n\t}\n\n\ttry {\n\t\treturn { auth: await oauth.toAuth(credential), source: \"OAuth\" };\n\t} catch (error) {\n\t\tthrow new ModelsError(\"oauth\", `OAuth auth derivation failed for ${providerId}`, { cause: error });\n\t}\n}\n\nasync function resolveApiKey(\n\tauthContext: AuthContext,\n\tapiKey: ApiKeyAuth,\n\tproviderId: string,\n\tcredential: ApiKeyCredential | undefined,\n\tsignal: AbortSignal,\n): Promise<AuthResult | undefined> {\n\ttry {\n\t\treturn await apiKey.resolve({ ctx: authContext, credential, signal });\n\t} catch (error) {\n\t\tthrow new ModelsError(\"auth\", `API key auth failed for provider ${providerId}`, { cause: error });\n\t}\n}\n\n/**\n * The stored credential that supplies auth for `provider`. A provider that\n * declares `apiKey.borrowCredentialsFrom` has no credential of its own: it\n * uses the first usable api-key credential among those providers. Any other\n * provider uses its own. Shared by request auth and availability checks so\n * both agree on which credential applies.\n */\nexport async function readProviderCredential(\n\tcredentials: CredentialStore,\n\tprovider: { id: string; auth: ProviderAuth },\n\tsignal: AbortSignal,\n): Promise<Credential | undefined> {\n\tconst lenders = provider.auth.apiKey?.borrowCredentialsFrom;\n\tif (!lenders) return readCredential(credentials, provider.id, signal);\n\tfor (const sourceId of lenders) {\n\t\tconst borrowed = await readCredential(credentials, normalizeProviderId(sourceId), signal);\n\t\tif (borrowed?.type === \"api_key\" && borrowed.key) return borrowed;\n\t}\n\treturn undefined;\n}\n\nasync function readCredential(\n\tcredentials: CredentialStore,\n\tproviderId: string,\n\tsignal: AbortSignal,\n): Promise<Credential | undefined> {\n\ttry {\n\t\tconst credential = await credentials.read(providerId, { signal });\n\t\treturn (\n\t\t\tcredential ??\n\t\t\t(providerId === \"azure\" ? await credentials.read(\"azure-openai-responses\", { signal }) : undefined)\n\t\t);\n\t} catch (error) {\n\t\tthrow new ModelsError(\"auth\", `Credential store read failed for ${providerId}`, { cause: error });\n\t}\n}\n"]}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/auth/resolve.ts"],"names":[],"mappings":"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","sourcesContent":["import { normalizeProviderId } from \"../provider-id.ts\";\nimport type { ProviderEnv } from \"../types.ts\";\nimport { operationSignal, raceWithAbortSignal } from \"../utils/abort.ts\";\nimport { formatThrownValue } from \"../utils/diagnostics.ts\";\nimport { ModelsError } from \"../utils/models-error.ts\";\nimport {\n\tfindPermanentRefreshRejectionInText,\n\tisOAuthRefreshRejectedError,\n\tsafeOAuthErrorCode,\n\tsafeOAuthErrorDescription,\n} from \"./oauth-refresh-errors.ts\";\n\nexport { ModelsError, type ModelsErrorCode } from \"../utils/models-error.ts\";\n\nimport type {\n\tApiKeyAuth,\n\tApiKeyCredential,\n\tAuthContext,\n\tAuthResult,\n\tCredential,\n\tCredentialStore,\n\tOAuthAuth,\n\tOAuthCredential,\n\tProviderAuth,\n} from \"./types.ts\";\n\n/** Bound for pre-transport request-auth work: credential read, OAuth refresh, and toAuth. */\nexport const REQUEST_AUTH_PREPARATION_TIMEOUT_MS = 15_000;\n\n/** Source-neutral diagnostic when pre-transport request auth exceeds {@link REQUEST_AUTH_PREPARATION_TIMEOUT_MS}. */\nexport function requestAuthTimeoutMessage(providerId: string): string {\n\treturn `Request authentication timed out for ${providerId}. Check the provider's credential source and try again.`;\n}\n\nexport interface AuthResolutionOverrides {\n\tapiKey?: string;\n\tenv?: ProviderEnv;\n\t/** Require this much remaining OAuth-token validity; defaults to five minutes. */\n\tminOAuthValidityMs?: number;\n\tsignal?: AbortSignal;\n}\n\n/**\n * Auth resolution shared by all operations in a `Models` collection.\n * A stored credential owns the provider: ambient/env is consulted only when\n * nothing is stored. A provider that borrows credentials reads only its\n * lenders' (see `readProviderCredential`). No silent env fallback after a failed\n * refresh or for a credential type without a matching handler.\n */\nexport function resolveProviderAuth(\n\tprovider: { id: string; auth: ProviderAuth },\n\tcredentials: CredentialStore,\n\tauthContext: AuthContext,\n\toverrides?: AuthResolutionOverrides,\n): Promise<AuthResult | undefined> {\n\tconst caller = operationSignal(overrides?.signal);\n\tconst timeout = new AbortController();\n\tconst timer = setTimeout(() => {\n\t\ttimeout.abort();\n\t}, REQUEST_AUTH_PREPARATION_TIMEOUT_MS);\n\tconst signal = AbortSignal.any([caller, timeout.signal]);\n\tconst operation = resolveProviderAuthWithSignal(\n\t\tprovider,\n\t\tcredentials,\n\t\tauthContext,\n\t\t{ ...overrides, signal },\n\t\tsignal,\n\t);\n\treturn raceWithAbortSignal(operation, signal)\n\t\t.catch((error: unknown) => {\n\t\t\tif (timeout.signal.aborted && !caller.aborted) {\n\t\t\t\tthrow new ModelsError(\"auth\", requestAuthTimeoutMessage(provider.id));\n\t\t\t}\n\t\t\tthrow error;\n\t\t})\n\t\t.finally(() => {\n\t\t\tclearTimeout(timer);\n\t\t});\n}\n\nasync function resolveProviderAuthWithSignal(\n\tprovider: { id: string; auth: ProviderAuth },\n\tcredentials: CredentialStore,\n\tauthContext: AuthContext,\n\toverrides: AuthResolutionOverrides | undefined,\n\tsignal: AbortSignal,\n): Promise<AuthResult | undefined> {\n\tsignal.throwIfAborted();\n\tconst requestAuthContext = overrides?.env ? overlayEnvAuthContext(authContext, overrides.env) : authContext;\n\n\tif (overrides?.apiKey !== undefined && provider.auth.apiKey) {\n\t\treturn resolveApiKey(\n\t\t\trequestAuthContext,\n\t\t\tprovider.auth.apiKey,\n\t\t\tprovider.id,\n\t\t\t{\n\t\t\t\ttype: \"api_key\",\n\t\t\t\tkey: overrides.apiKey,\n\t\t\t\tenv: overrides.env,\n\t\t\t},\n\t\t\tsignal,\n\t\t);\n\t}\n\n\tconst stored = await readProviderCredential(credentials, provider, signal);\n\tif (stored) {\n\t\tif (stored.type === \"oauth\" && provider.auth.oauth) {\n\t\t\treturn resolveStoredOAuth(\n\t\t\t\tcredentials,\n\t\t\t\tprovider.id,\n\t\t\t\tprovider.auth.oauth,\n\t\t\t\tstored,\n\t\t\t\tsignal,\n\t\t\t\toverrides?.minOAuthValidityMs,\n\t\t\t);\n\t\t}\n\t\tif (stored.type === \"api_key\" && provider.auth.apiKey) {\n\t\t\tconst credential = overrides?.env ? { ...stored, env: { ...stored.env, ...overrides.env } } : stored;\n\t\t\treturn resolveApiKey(requestAuthContext, provider.auth.apiKey, provider.id, credential, signal);\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t// Ambient (env vars, AWS profiles, ADC files).\n\treturn provider.auth.apiKey\n\t\t? resolveApiKey(requestAuthContext, provider.auth.apiKey, provider.id, undefined, signal)\n\t\t: undefined;\n}\n\nfunction overlayEnvAuthContext(base: AuthContext, env: ProviderEnv): AuthContext {\n\treturn {\n\t\tenv: async (name) => env[name] || (await base.env(name)),\n\t\tfileExists: (path) => base.fileExists(path),\n\t};\n}\n\nconst DEFAULT_OAUTH_MINIMUM_VALIDITY_MS = 5 * 60 * 1000;\n/** How long a refresh keeps its caller waiting for one token exchange. */\nexport const OAUTH_REFRESH_TIMEOUT_MS = 60_000;\n\n/**\n * How long a refresh keeps the credential lock while its token exchange is still running, so no other refresh\n * presents a token the exchange may already have rotated. A response after this is still persisted, lock-free.\n */\nexport const OAUTH_REFRESH_LOCK_HOLD_MS = 2 * OAUTH_REFRESH_TIMEOUT_MS;\n\n/**\n * Signal handed to a provider's token exchange. Nothing aborts it: once sent, the provider may already have\n * rotated the refresh token, so only the exchange's own response can tell us the replacement.\n */\nconst TOKEN_EXCHANGE_SIGNAL = new AbortController().signal;\n\n/**\n * How long a graceful shutdown waits for token exchanges still in flight, and for persisting their results, before\n * the process exits (see {@link drainPendingOAuthRotations}).\n *\n * Abrupt termination (SIGKILL, a crash, power loss) cannot wait. If the provider already rotated the refresh token\n * when that happens, its response never reaches the process and the stored login keeps the replaced token; the\n * next refresh then fails and `/login <provider>` signs in again.\n */\nexport const OAUTH_SHUTDOWN_DRAIN_MS = 3_000;\n\n/** One entry per started token exchange, settled once its result is persisted or given up on. */\nconst pendingTokenExchanges = new Set<Promise<void>>();\n\nfunction trackTokenExchange(): () => void {\n\tlet settle!: () => void;\n\tconst pending = new Promise<void>((resolve) => {\n\t\tsettle = resolve;\n\t});\n\tpendingTokenExchanges.add(pending);\n\treturn () => {\n\t\tpendingTokenExchanges.delete(pending);\n\t\tsettle();\n\t};\n}\n\n/**\n * Waits for every started OAuth token exchange to settle and its result to be persisted, at most `timeoutMs`.\n * Callers stop waiting for an exchange after {@link OAUTH_REFRESH_TIMEOUT_MS} while it keeps running, so a process\n * that exits gracefully calls this first: the provider may already have rotated the token. Resolves `true` once none\n * is in flight, `false` when the bound passes first; never rejects.\n */\nexport async function drainPendingOAuthRotations(timeoutMs: number = OAUTH_SHUTDOWN_DRAIN_MS): Promise<boolean> {\n\tconst deadline = Date.now() + timeoutMs;\n\twhile (pendingTokenExchanges.size > 0) {\n\t\tconst remainingMs = deadline - Date.now();\n\t\tif (remainingMs <= 0) return false;\n\t\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\t\tconst expired = new Promise<void>((resolve) => {\n\t\t\ttimer = setTimeout(resolve, remainingMs);\n\t\t});\n\t\ttry {\n\t\t\tawait Promise.race([Promise.all(pendingTokenExchanges), expired]);\n\t\t} finally {\n\t\t\tclearTimeout(timer);\n\t\t}\n\t}\n\treturn true;\n}\n\nconst MAX_ERROR_CHAIN_DEPTH = 5;\n\n/**\n * The provider's error code (or HTTP status) and description for a refresh it rejected because the stored login is\n * revoked or expired: an {@link OAuthRefreshRejectedError} anywhere in the cause chain, or a permanent OAuth error\n * code in a custom refresher's message. Never request bodies, URLs, or tokens.\n */\nfunction describeRejectedLogin(error: unknown, presented: OAuthCredential): string | undefined {\n\tconst secrets = [presented.refresh, presented.access];\n\tconst describe = (code: string, description: string | undefined) => {\n\t\tconst safeDescription = safeOAuthErrorDescription(description, secrets);\n\t\treturn safeDescription ? `${code} (${safeDescription})` : code;\n\t};\n\tlet current = error;\n\tfor (let depth = 0; depth < MAX_ERROR_CHAIN_DEPTH && current !== undefined && current !== null; depth++) {\n\t\tif (current instanceof Error && isOAuthRefreshRejectedError(current)) {\n\t\t\treturn describe(safeOAuthErrorCode(current.code) ?? `HTTP ${current.status}`, current.description);\n\t\t}\n\t\tcurrent = current instanceof Error ? current.cause : undefined;\n\t}\n\tcurrent = error;\n\tfor (let depth = 0; depth < MAX_ERROR_CHAIN_DEPTH && current !== undefined && current !== null; depth++) {\n\t\tconst rejection = findPermanentRefreshRejectionInText(formatThrownValue(current));\n\t\tconst code = safeOAuthErrorCode(rejection?.code);\n\t\tif (code !== undefined) return describe(code, rejection?.description);\n\t\tcurrent = current instanceof Error ? current.cause : undefined;\n\t}\n\treturn undefined;\n}\n\n/**\n * Per credential store and provider, why the last late rotation could not be saved: only the save error's `code` or\n * `name`, never its message, which may contain paths or tokens. Keyed by store so one store's lost save is never\n * reported against another's login. Cleared by a later save or rotation, or once a refresh failure reports it.\n */\nconst unsavedLateRotations = new WeakMap<CredentialStore, Map<string, string>>();\n\nfunction unsavedLateRotationsFor(credentials: CredentialStore): Map<string, string> {\n\tlet byProvider = unsavedLateRotations.get(credentials);\n\tif (byProvider === undefined) {\n\t\tbyProvider = new Map();\n\t\tunsavedLateRotations.set(credentials, byProvider);\n\t}\n\treturn byProvider;\n}\n\nfunction safeSaveErrorReason(error: unknown): string {\n\tif (error instanceof Error) {\n\t\tconst code = \"code\" in error ? error.code : undefined;\n\t\treturn typeof code === \"string\" && /^[A-Z][A-Z0-9_]{0,63}$/.test(code) ? code : error.name;\n\t}\n\treturn \"unknown error\";\n}\n\n/** The sentence explaining a lost late rotation for `providerId` in `credentials`, reported once. */\nfunction takeUnsavedLateRotationNote(credentials: CredentialStore, providerId: string): string {\n\tconst byProvider = unsavedLateRotations.get(credentials);\n\tconst reason = byProvider?.get(providerId);\n\tif (reason === undefined) return \"\";\n\tbyProvider?.delete(providerId);\n\treturn ` An earlier refresh for ${providerId} succeeded, but its new login could not be saved (${reason}).`;\n}\n\nfunction oauthRefreshFailure(\n\tcredentials: CredentialStore,\n\tproviderId: string,\n\terror: unknown,\n\tpresented: OAuthCredential,\n): ModelsError {\n\tconst rejectedLogin = describeRejectedLogin(error, presented);\n\tconst unsavedNote = takeUnsavedLateRotationNote(credentials, providerId);\n\tif (rejectedLogin === undefined) {\n\t\tconst message = unsavedNote\n\t\t\t? `OAuth refresh failed for ${providerId}.${unsavedNote}`\n\t\t\t: `OAuth refresh failed for ${providerId}`;\n\t\treturn new ModelsError(\"oauth\", message, { cause: error });\n\t}\n\treturn new ModelsError(\n\t\t\"oauth\",\n\t\t`OAuth refresh failed for ${providerId}: ${rejectedLogin}. The provider rejected the stored login; run /login ${providerId} to sign in again.${unsavedNote}`,\n\t);\n}\n\n/** A token exchange that settles after its timeout already rotated the token server-side, so keep its result. */\nfunction persistLateRotation(\n\tcredentials: CredentialStore,\n\tproviderId: string,\n\trotatedFrom: OAuthCredential,\n\trotation: Promise<OAuthCredential>,\n): void {\n\tconst settled = trackTokenExchange();\n\tvoid rotation\n\t\t.then(\n\t\t\t(late) =>\n\t\t\t\tcredentials\n\t\t\t\t\t.modify(providerId, async (current) =>\n\t\t\t\t\t\tcurrent?.type === \"oauth\" && current.refresh === rotatedFrom.refresh ? late : undefined,\n\t\t\t\t\t)\n\t\t\t\t\t.then(\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\tunsavedLateRotations.get(credentials)?.delete(providerId);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t(saveError: unknown) => {\n\t\t\t\t\t\t\tunsavedLateRotationsFor(credentials).set(providerId, safeSaveErrorReason(saveError));\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t// The exchange itself failed: nothing was rotated that could be lost.\n\t\t\t() => undefined,\n\t\t)\n\t\t.finally(settled);\n}\n\n/**\n * Runs one token exchange under the credential lock. The caller stops waiting after {@link OAUTH_REFRESH_TIMEOUT_MS};\n * the lock is kept until the exchange settles or {@link OAUTH_REFRESH_LOCK_HOLD_MS} passes, after which a late\n * response is still persisted.\n */\nasync function rotateOAuthCredential(\n\tcredentials: CredentialStore,\n\tproviderId: string,\n\toauth: OAuthAuth,\n\tcurrent: OAuthCredential,\n\tstopCallerWaiting: (reason: Error) => void,\n): Promise<OAuthCredential> {\n\tconst rotation = oauth.refresh(current, TOKEN_EXCHANGE_SIGNAL);\n\tconst callerWait = AbortSignal.timeout(OAUTH_REFRESH_TIMEOUT_MS);\n\tconst onCallerWaitExpired = () => {\n\t\tstopCallerWaiting(\n\t\t\tnew ModelsError(\"oauth\", `OAuth refresh failed for ${providerId}`, { cause: callerWait.reason }),\n\t\t);\n\t};\n\tcallerWait.addEventListener(\"abort\", onCallerWaitExpired, { once: true });\n\tconst lockHold = AbortSignal.timeout(OAUTH_REFRESH_LOCK_HOLD_MS);\n\ttry {\n\t\treturn await raceWithAbortSignal(rotation, lockHold);\n\t} catch (error) {\n\t\tif (lockHold.aborted) persistLateRotation(credentials, providerId, current, rotation);\n\t\tthrow error;\n\t} finally {\n\t\tcallerWait.removeEventListener(\"abort\", onCallerWaitExpired);\n\t}\n}\n\n/** A login another process saved after this refresh read the store, e.g. its own rotation of the same token. */\nasync function readNewerOAuthCredential(\n\tcredentials: CredentialStore,\n\tproviderId: string,\n\trejected: OAuthCredential,\n): Promise<OAuthCredential | undefined> {\n\tconst latest = await credentials.read(providerId).catch(() => undefined);\n\treturn latest?.type === \"oauth\" && latest.refresh !== rejected.refresh ? latest : undefined;\n}\n\n/** Cancellation stops waiting for the credential lock, not an already started token rotation. */\nexport async function refreshStoredOAuthCredential(\n\tcredentials: CredentialStore,\n\tproviderId: string,\n\toauth: OAuthAuth,\n\tneedsRefresh: (credential: OAuthCredential) => boolean,\n\tsignal: AbortSignal,\n): Promise<OAuthCredential | undefined> {\n\tlet post: Credential | undefined;\n\tconst lockWait = new AbortController();\n\tconst cancelLockWait = () => lockWait.abort(signal.reason);\n\tsignal.addEventListener(\"abort\", cancelLockWait, { once: true });\n\tif (signal.aborted) cancelLockWait();\n\tlet stopCallerWaiting!: (reason: Error) => void;\n\t/** Set once the token exchange starts; settles its pending entry when the transaction that commits it ends. */\n\tlet exchangeSettled: (() => void) | undefined;\n\tconst callerWaitExpired = new Promise<never>((_, reject) => {\n\t\tstopCallerWaiting = reject;\n\t});\n\ttry {\n\t\tconst transaction = credentials.modify(\n\t\t\tproviderId,\n\t\t\tasync (current) => {\n\t\t\t\tsignal.removeEventListener(\"abort\", cancelLockWait);\n\t\t\t\tsignal.throwIfAborted();\n\t\t\t\tif (current?.type !== \"oauth\") return undefined;\n\t\t\t\tif (!needsRefresh(current)) return undefined;\n\t\t\t\ttry {\n\t\t\t\t\texchangeSettled ??= trackTokenExchange();\n\t\t\t\t\tconst rotated = await rotateOAuthCredential(credentials, providerId, oauth, current, stopCallerWaiting);\n\t\t\t\t\tunsavedLateRotations.get(credentials)?.delete(providerId);\n\t\t\t\t\treturn rotated;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconst newer = await readNewerOAuthCredential(credentials, providerId, current);\n\t\t\t\t\tif (newer) return newer;\n\t\t\t\t\tthrow oauthRefreshFailure(credentials, providerId, error, current);\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ signal: lockWait.signal },\n\t\t);\n\t\tconst untrackExchange = () => exchangeSettled?.();\n\t\tvoid transaction.then(untrackExchange, untrackExchange);\n\t\tpost = await Promise.race([transaction, callerWaitExpired]);\n\t} catch (error) {\n\t\tif (error instanceof ModelsError) throw error;\n\t\tsignal.throwIfAborted();\n\t\tthrow new ModelsError(\"auth\", `Credential store modify failed for ${providerId}`, { cause: error });\n\t} finally {\n\t\tsignal.removeEventListener(\"abort\", cancelLockWait);\n\t}\n\treturn post?.type === \"oauth\" ? post : undefined;\n}\n\n/** Refresh expiring tokens under the credential-store lock and persist rotation before releasing it. */\nasync function resolveStoredOAuth(\n\tcredentials: CredentialStore,\n\tproviderId: string,\n\toauth: OAuthAuth,\n\tstored: OAuthCredential,\n\tsignal: AbortSignal,\n\tminOAuthValidityMs?: number,\n): Promise<AuthResult | undefined> {\n\tconst minimumValidityMs = Math.max(DEFAULT_OAUTH_MINIMUM_VALIDITY_MS, minOAuthValidityMs ?? 0);\n\tconst expiresSoon = (credential: OAuthCredential) => Date.now() + minimumValidityMs >= credential.expires;\n\tlet credential = stored;\n\n\tif (expiresSoon(credential)) {\n\t\t// Optimistic check said expired; the authoritative check runs under the lock.\n\t\tconst post = await refreshStoredOAuthCredential(credentials, providerId, oauth, expiresSoon, signal);\n\t\tif (!post) return undefined;\n\t\tcredential = post;\n\t\t// The normal five-minute window triggers a refresh but does not impose a\n\t\t// provider contract. Explicit callers (such as bearer-token export) do\n\t\t// require the requested minimum after the refresh.\n\t\tif (minOAuthValidityMs !== undefined && expiresSoon(credential)) {\n\t\t\tthrow new ModelsError(\"oauth\", `OAuth refresh returned a token that expires too soon for ${providerId}`);\n\t\t}\n\t}\n\n\ttry {\n\t\treturn { auth: await oauth.toAuth(credential), source: \"OAuth\" };\n\t} catch (error) {\n\t\tthrow new ModelsError(\"oauth\", `OAuth auth derivation failed for ${providerId}`, { cause: error });\n\t}\n}\n\nasync function resolveApiKey(\n\tauthContext: AuthContext,\n\tapiKey: ApiKeyAuth,\n\tproviderId: string,\n\tcredential: ApiKeyCredential | undefined,\n\tsignal: AbortSignal,\n): Promise<AuthResult | undefined> {\n\ttry {\n\t\treturn await apiKey.resolve({ ctx: authContext, credential, signal });\n\t} catch (error) {\n\t\tthrow new ModelsError(\"auth\", `API key auth failed for provider ${providerId}`, { cause: error });\n\t}\n}\n\n/**\n * The stored credential that supplies auth for `provider`. A provider that\n * declares `apiKey.borrowCredentialsFrom` has no credential of its own: it\n * uses the first usable api-key credential among those providers. Any other\n * provider uses its own. Shared by request auth and availability checks so\n * both agree on which credential applies.\n */\nexport async function readProviderCredential(\n\tcredentials: CredentialStore,\n\tprovider: { id: string; auth: ProviderAuth },\n\tsignal: AbortSignal,\n): Promise<Credential | undefined> {\n\tconst lenders = provider.auth.apiKey?.borrowCredentialsFrom;\n\tif (!lenders) return readCredential(credentials, provider.id, signal);\n\tfor (const sourceId of lenders) {\n\t\tconst borrowed = await readCredential(credentials, normalizeProviderId(sourceId), signal);\n\t\tif (borrowed?.type === \"api_key\" && borrowed.key) return borrowed;\n\t}\n\treturn undefined;\n}\n\nasync function readCredential(\n\tcredentials: CredentialStore,\n\tproviderId: string,\n\tsignal: AbortSignal,\n): Promise<Credential | undefined> {\n\ttry {\n\t\tconst credential = await credentials.read(providerId, { signal });\n\t\treturn (\n\t\t\tcredential ??\n\t\t\t(providerId === \"azure\" ? await credentials.read(\"azure-openai-responses\", { signal }) : undefined)\n\t\t);\n\t} catch (error) {\n\t\tthrow new ModelsError(\"auth\", `Credential store read failed for ${providerId}`, { cause: error });\n\t}\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -16,6 +16,7 @@ export type { PiMessagesEvent, PiMessagesOptions, PiMessagesRewriteImpact } from
16
16
  export * from "./auth/context.ts";
17
17
  export * from "./auth/credential-store.ts";
18
18
  export * from "./auth/helpers.ts";
19
+ export { isOAuthRefreshRejectedError, isPermanentRefreshRejection, type OAuthErrorDetail, OAuthRefreshRejectedError, type OAuthRefreshRejection, parseOAuthErrorBody, } from "./auth/oauth-refresh-errors.ts";
19
20
  export * from "./auth/types.ts";
20
21
  export type { OAuthAuthInfo, OAuthDeviceCodeInfo, OAuthLoginCallbacks, OAuthPrompt, OAuthSelectOption, OAuthSelectPrompt, } from "./compat/extension-oauth-types.ts";
21
22
  export * from "./decision-models.ts";
@@ -29,6 +30,7 @@ export * from "./types.ts";
29
30
  export * from "./utils/diagnostics.ts";
30
31
  export * from "./utils/event-stream.ts";
31
32
  export { AssistantMessageEventStream } from "./utils/event-stream.ts";
33
+ export * from "./utils/identity.ts";
32
34
  export * from "./utils/json-parse.ts";
33
35
  export * from "./utils/overflow.ts";
34
36
  export * from "./utils/retry.ts";
@@ -38,4 +40,5 @@ export * from "./utils/transcript.ts";
38
40
  export * from "./utils/typebox-helpers.ts";
39
41
  export { uuidv7 } from "./utils/uuid.ts";
40
42
  export * from "./utils/validation.ts";
43
+ export { PI_AI_VERSION } from "./utils/version.ts";
41
44
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAO/B,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC/G,YAAY,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AACnF,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC/F,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,YAAY,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAClG,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,cAAc,eAAe,CAAC;AAC9B,YAAY,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,YAAY,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACnH,YAAY,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACxG,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,YAAY,EACX,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,GACjB,MAAM,mCAAmC,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC/F,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAO/B,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC/G,YAAY,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AACnF,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC/F,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,YAAY,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAClG,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,cAAc,eAAe,CAAC;AAC9B,YAAY,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,YAAY,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACnH,YAAY,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACxG,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACN,2BAA2B,EAC3B,2BAA2B,EAC3B,KAAK,gBAAgB,EACrB,yBAAyB,EACzB,KAAK,qBAAqB,EAC1B,mBAAmB,GACnB,MAAM,gCAAgC,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,YAAY,EACX,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,GACjB,MAAM,mCAAmC,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC/F,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -3,6 +3,7 @@ export * from "./api/lazy.js";
3
3
  export * from "./auth/context.js";
4
4
  export * from "./auth/credential-store.js";
5
5
  export * from "./auth/helpers.js";
6
+ export { isOAuthRefreshRejectedError, isPermanentRefreshRejection, OAuthRefreshRejectedError, parseOAuthErrorBody, } from "./auth/oauth-refresh-errors.js";
6
7
  export * from "./auth/types.js";
7
8
  export * from "./decision-models.js";
8
9
  export { containsKnownEnvCredential } from "./env-api-keys.js";
@@ -15,6 +16,7 @@ export * from "./types.js";
15
16
  export * from "./utils/diagnostics.js";
16
17
  export * from "./utils/event-stream.js";
17
18
  export { AssistantMessageEventStream } from "./utils/event-stream.js";
19
+ export * from "./utils/identity.js";
18
20
  export * from "./utils/json-parse.js";
19
21
  export * from "./utils/overflow.js";
20
22
  export * from "./utils/retry.js";
@@ -24,4 +26,5 @@ export * from "./utils/transcript.js";
24
26
  export * from "./utils/typebox-helpers.js";
25
27
  export { uuidv7 } from "./utils/uuid.js";
26
28
  export * from "./utils/validation.js";
29
+ export { PI_AI_VERSION } from "./utils/version.js";
27
30
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAa/B,cAAc,eAAe,CAAC;AAO9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAShC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC/F,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,cAAc,uBAAuB,CAAC","sourcesContent":["export type { Static, TSchema } from \"typebox\";\nexport { Type } from \"typebox\";\n\n// Core only, side-effect free: no generated catalogs, no provider factories,\n// no api-registry, no OAuth implementations, no compat. Provider factories\n// live under \"@bastani/pi-ai/providers/*\", API implementations under\n// \"@bastani/pi-ai/api/*\", the old global API under\n// \"@bastani/pi-ai/compat\".\nexport type { AnthropicEffort, AnthropicOptions, AnthropicThinkingDisplay } from \"./api/anthropic-messages.ts\";\nexport type { AzureOpenAIResponsesOptions } from \"./api/azure-openai-responses.ts\";\nexport type { BedrockOptions, BedrockThinkingDisplay } from \"./api/bedrock-converse-stream.ts\";\nexport type { GoogleOptions } from \"./api/google-generative-ai.ts\";\nexport type { GoogleApiThinkingLevel, ResolvedGoogleThinkingLevel } from \"./api/google-shared.ts\";\nexport type { GoogleVertexOptions } from \"./api/google-vertex.ts\";\nexport * from \"./api/lazy.ts\";\nexport type { MistralOptions } from \"./api/mistral-conversations.ts\";\nexport type { OpenAICodexResponsesOptions, OpenAICodexWebSocketDebugStats } from \"./api/openai-codex-responses.ts\";\nexport type { OpenAICompletionsOptions } from \"./api/openai-completions.ts\";\nexport type { OpenAIImagesOptions } from \"./api/openai-images.ts\";\nexport type { OpenAIResponsesOptions } from \"./api/openai-responses.ts\";\nexport type { PiMessagesEvent, PiMessagesOptions, PiMessagesRewriteImpact } from \"./api/pi-messages.ts\";\nexport * from \"./auth/context.ts\";\nexport * from \"./auth/credential-store.ts\";\nexport * from \"./auth/helpers.ts\";\nexport * from \"./auth/types.ts\";\nexport type {\n\tOAuthAuthInfo,\n\tOAuthDeviceCodeInfo,\n\tOAuthLoginCallbacks,\n\tOAuthPrompt,\n\tOAuthSelectOption,\n\tOAuthSelectPrompt,\n} from \"./compat/extension-oauth-types.ts\";\nexport * from \"./decision-models.ts\";\nexport { containsKnownEnvCredential } from \"./env-api-keys.ts\";\nexport * from \"./models.ts\";\nexport * from \"./models-store.ts\";\nexport { normalizeProviderId } from \"./provider-id.ts\";\nexport * from \"./providers/faux.ts\";\nexport * from \"./session-resources.ts\";\nexport * from \"./types.ts\";\nexport * from \"./utils/diagnostics.ts\";\nexport * from \"./utils/event-stream.ts\";\nexport { AssistantMessageEventStream } from \"./utils/event-stream.ts\";\nexport * from \"./utils/json-parse.ts\";\nexport * from \"./utils/overflow.ts\";\nexport * from \"./utils/retry.ts\";\nexport * from \"./utils/stream-deadline.ts\";\nexport { contentText, getSystemMessageText, renderSystemMessageUpdate } from \"./utils/text.ts\";\nexport * from \"./utils/transcript.ts\";\nexport * from \"./utils/typebox-helpers.ts\";\nexport { uuidv7 } from \"./utils/uuid.ts\";\nexport * from \"./utils/validation.ts\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAa/B,cAAc,eAAe,CAAC;AAO9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACN,2BAA2B,EAC3B,2BAA2B,EAE3B,yBAAyB,EAEzB,mBAAmB,GACnB,MAAM,gCAAgC,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAShC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC/F,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC","sourcesContent":["export type { Static, TSchema } from \"typebox\";\nexport { Type } from \"typebox\";\n\n// Core only, side-effect free: no generated catalogs, no provider factories,\n// no api-registry, no OAuth implementations, no compat. Provider factories\n// live under \"@bastani/pi-ai/providers/*\", API implementations under\n// \"@bastani/pi-ai/api/*\", the old global API under\n// \"@bastani/pi-ai/compat\".\nexport type { AnthropicEffort, AnthropicOptions, AnthropicThinkingDisplay } from \"./api/anthropic-messages.ts\";\nexport type { AzureOpenAIResponsesOptions } from \"./api/azure-openai-responses.ts\";\nexport type { BedrockOptions, BedrockThinkingDisplay } from \"./api/bedrock-converse-stream.ts\";\nexport type { GoogleOptions } from \"./api/google-generative-ai.ts\";\nexport type { GoogleApiThinkingLevel, ResolvedGoogleThinkingLevel } from \"./api/google-shared.ts\";\nexport type { GoogleVertexOptions } from \"./api/google-vertex.ts\";\nexport * from \"./api/lazy.ts\";\nexport type { MistralOptions } from \"./api/mistral-conversations.ts\";\nexport type { OpenAICodexResponsesOptions, OpenAICodexWebSocketDebugStats } from \"./api/openai-codex-responses.ts\";\nexport type { OpenAICompletionsOptions } from \"./api/openai-completions.ts\";\nexport type { OpenAIImagesOptions } from \"./api/openai-images.ts\";\nexport type { OpenAIResponsesOptions } from \"./api/openai-responses.ts\";\nexport type { PiMessagesEvent, PiMessagesOptions, PiMessagesRewriteImpact } from \"./api/pi-messages.ts\";\nexport * from \"./auth/context.ts\";\nexport * from \"./auth/credential-store.ts\";\nexport * from \"./auth/helpers.ts\";\nexport {\n\tisOAuthRefreshRejectedError,\n\tisPermanentRefreshRejection,\n\ttype OAuthErrorDetail,\n\tOAuthRefreshRejectedError,\n\ttype OAuthRefreshRejection,\n\tparseOAuthErrorBody,\n} from \"./auth/oauth-refresh-errors.ts\";\nexport * from \"./auth/types.ts\";\nexport type {\n\tOAuthAuthInfo,\n\tOAuthDeviceCodeInfo,\n\tOAuthLoginCallbacks,\n\tOAuthPrompt,\n\tOAuthSelectOption,\n\tOAuthSelectPrompt,\n} from \"./compat/extension-oauth-types.ts\";\nexport * from \"./decision-models.ts\";\nexport { containsKnownEnvCredential } from \"./env-api-keys.ts\";\nexport * from \"./models.ts\";\nexport * from \"./models-store.ts\";\nexport { normalizeProviderId } from \"./provider-id.ts\";\nexport * from \"./providers/faux.ts\";\nexport * from \"./session-resources.ts\";\nexport * from \"./types.ts\";\nexport * from \"./utils/diagnostics.ts\";\nexport * from \"./utils/event-stream.ts\";\nexport { AssistantMessageEventStream } from \"./utils/event-stream.ts\";\nexport * from \"./utils/identity.ts\";\nexport * from \"./utils/json-parse.ts\";\nexport * from \"./utils/overflow.ts\";\nexport * from \"./utils/retry.ts\";\nexport * from \"./utils/stream-deadline.ts\";\nexport { contentText, getSystemMessageText, renderSystemMessageUpdate } from \"./utils/text.ts\";\nexport * from \"./utils/transcript.ts\";\nexport * from \"./utils/typebox-helpers.ts\";\nexport { uuidv7 } from \"./utils/uuid.ts\";\nexport * from \"./utils/validation.ts\";\nexport { PI_AI_VERSION } from \"./utils/version.ts\";\n"]}
package/dist/models.d.ts CHANGED
@@ -2,7 +2,8 @@ import { type AuthResolutionOverrides } from "./auth/resolve.ts";
2
2
  import type { AuthCheck, AuthContext, AuthInteraction, AuthOperationOptions, AuthResult, AuthType, Credential, CredentialStore, LoginOptions, ProviderAuth } from "./auth/types.ts";
3
3
  import { type ModelsStore, type ModelsStoreEntry } from "./models-store.ts";
4
4
  import type { AnyModel, Api, ApiStreamOptions, AssistantImages, AssistantMessage, AssistantMessageEventStream, ClassifierApi, ClassifierContext, ClassifierModel, ClassifierOptions, ClassifierResult, CompactorModel, Context, DeferredCancelOptions, DeferredFetchOptions, DeferredHandle, ImageApi, ImageApiOptions, ImageModel, ImagesContext, ImagesOptions, Model, ModelCost, ModelServiceTierId, ModelThinkingLevel, ModelType, ModelTypeMap, ProviderClassifier, ProviderHeaders, ProviderImages, ProviderStreams, SimpleStreamOptions, TranscriptContext, Usage } from "./types.ts";
5
- export { ModelsError, type ModelsErrorCode, REQUEST_AUTH_PREPARATION_TIMEOUT_MS, requestAuthTimeoutMessage, } from "./auth/resolve.ts";
5
+ import { type ClientIdentity } from "./utils/identity.ts";
6
+ export { drainPendingOAuthRotations, ModelsError, type ModelsErrorCode, OAUTH_REFRESH_LOCK_HOLD_MS, OAUTH_REFRESH_TIMEOUT_MS, OAUTH_SHUTDOWN_DRAIN_MS, REQUEST_AUTH_PREPARATION_TIMEOUT_MS, requestAuthTimeoutMessage, } from "./auth/resolve.ts";
6
7
  export { assertChatModel, classifierErrorResult, getModelType, imageErrorResult, isModelType, } from "./utils/model-operations.ts";
7
8
  export interface ModelsPublication {
8
9
  /** Provider-selected persisted catalog. Omit to leave storage unchanged; null deletes it. */
@@ -207,6 +208,8 @@ export interface CreateModelsOptions {
207
208
  credentials?: CredentialStore;
208
209
  modelsStore?: ModelsStore;
209
210
  authContext?: AuthContext;
211
+ /** Default identity of every request; a request's `identity` overrides it field by field. */
212
+ identity?: ClientIdentity;
210
213
  }
211
214
  export declare function normalizeProvider(provider: Provider): Provider;
212
215
  export declare function createModels(options?: CreateModelsOptions): MutableModels;
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
package/dist/models.js CHANGED
@@ -5,9 +5,10 @@ import { ModelsError, readProviderCredential, refreshStoredOAuthCredential, reso
5
5
  import { InMemoryModelsStore } from "./models-store.js";
6
6
  import { normalizeProviderId } from "./provider-id.js";
7
7
  import { operationSignal, raceWithAbortSignal } from "./utils/abort.js";
8
+ import { getOpenCodeSessionHeaders, mergeClientIdentity } from "./utils/identity.js";
8
9
  import { assertChatModel, assertClassifierInputSupported, assertClassifierModel, assertImageModel, classifierErrorResult, getModelType, imageErrorResult, isModelType, } from "./utils/model-operations.js";
9
10
  import { normalizeContext } from "./utils/transcript.js";
10
- export { ModelsError, REQUEST_AUTH_PREPARATION_TIMEOUT_MS, requestAuthTimeoutMessage, } from "./auth/resolve.js";
11
+ export { drainPendingOAuthRotations, ModelsError, OAUTH_REFRESH_LOCK_HOLD_MS, OAUTH_REFRESH_TIMEOUT_MS, OAUTH_SHUTDOWN_DRAIN_MS, REQUEST_AUTH_PREPARATION_TIMEOUT_MS, requestAuthTimeoutMessage, } from "./auth/resolve.js";
11
12
  export { assertChatModel, classifierErrorResult, getModelType, imageErrorResult, isModelType, } from "./utils/model-operations.js";
12
13
  const KNOWN_MODEL_TYPES = { chat: true, image: true, classifier: true, compactor: true };
13
14
  /** Models from stores and remote sources may have types that only newer versions know. */
@@ -62,6 +63,7 @@ class ModelsImpl {
62
63
  credentials;
63
64
  modelsStore;
64
65
  authContext;
66
+ identity;
65
67
  refreshGenerations = new Map();
66
68
  refreshControllers = new Map();
67
69
  publicationChains = new Map();
@@ -69,6 +71,7 @@ class ModelsImpl {
69
71
  this.credentials = options?.credentials ?? new InMemoryCredentialStore();
70
72
  this.modelsStore = options?.modelsStore ?? new InMemoryModelsStore();
71
73
  this.authContext = options?.authContext ?? defaultAuthContext();
74
+ this.identity = options?.identity;
72
75
  }
73
76
  setProvider(provider) {
74
77
  provider = normalizeProvider(provider);
@@ -455,13 +458,21 @@ class ModelsImpl {
455
458
  const auth = resolution.auth;
456
459
  // Explicit request options win per-field; the Models-only transform runs last.
457
460
  const apiKey = options?.apiKey ?? auth.apiKey;
458
- let headers = mergeHeaders(auth.headers, options?.headers);
461
+ const requestModel = auth.baseUrl ? { ...model, baseUrl: auth.baseUrl } : model;
462
+ const sessionId = options && "sessionId" in options && typeof options.sessionId === "string" ? options.sessionId : undefined;
463
+ let headers = mergeHeaders(mergeHeaders(getOpenCodeSessionHeaders(requestModel, sessionId), auth.headers), options?.headers);
459
464
  if (options?.transformHeaders)
460
465
  headers = await options.transformHeaders(headers ?? {});
461
466
  const env = resolution.env || options?.env ? { ...(resolution.env ?? {}), ...(options?.env ?? {}) } : undefined;
462
- const requestModel = auth.baseUrl ? { ...model, baseUrl: auth.baseUrl } : model;
467
+ const identity = mergeClientIdentity(this.identity, options?.identity);
463
468
  const { transformHeaders: _transformHeaders, ...providerOptions } = options ?? {};
464
- const requestOptions = { ...providerOptions, apiKey, headers, env };
469
+ const requestOptions = {
470
+ ...providerOptions,
471
+ apiKey,
472
+ headers,
473
+ env,
474
+ ...(identity === undefined ? {} : { identity }),
475
+ };
465
476
  return { requestModel, requestOptions };
466
477
  }
467
478
  stream(model, context, options) {