@acosmi/sdk-ts 1.5.1 → 1.6.0
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.
- package/CHANGELOG.md +27 -1
- package/README.md +20 -1
- package/dist/browser/index.mjs +46 -6
- package/dist/browser/index.mjs.map +1 -1
- package/dist/index.mjs +46 -6
- package/dist/index.mjs.map +1 -1
- package/dist/node/adapters/anthropic.cjs +11 -2
- package/dist/node/adapters/anthropic.cjs.map +1 -1
- package/dist/node/adapters/anthropic.d.cts +1 -1
- package/dist/node/adapters/anthropic.d.ts +1 -1
- package/dist/node/adapters/anthropic.mjs +11 -2
- package/dist/node/adapters/anthropic.mjs.map +1 -1
- package/dist/node/adapters/openai.cjs +3 -0
- package/dist/node/adapters/openai.cjs.map +1 -1
- package/dist/node/adapters/openai.d.cts +2 -2
- package/dist/node/adapters/openai.d.ts +2 -2
- package/dist/node/adapters/openai.mjs +3 -0
- package/dist/node/adapters/openai.mjs.map +1 -1
- package/dist/node/{index-nvLKgCm9.d.cts → index-Bah9A83R.d.cts} +1 -1
- package/dist/node/{index-nvLKgCm9.d.ts → index-Bah9A83R.d.ts} +1 -1
- package/dist/node/{index-DEA6LXw6.d.cts → index-C9X5Yuyk.d.cts} +10 -1
- package/dist/node/{index-DEA6LXw6.d.ts → index-C9X5Yuyk.d.ts} +10 -1
- package/dist/node/index.cjs +48 -5
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +30 -7
- package/dist/node/index.d.ts +30 -7
- package/dist/node/index.mjs +46 -6
- package/dist/node/index.mjs.map +1 -1
- package/dist/node/{openai-vfUUgdvL.d.ts → openai-BqKAhbSc.d.ts} +2 -2
- package/dist/node/{openai-BDodfhsG.d.cts → openai-C_UKadSX.d.cts} +2 -2
- package/dist/node/sanitize/index.d.cts +1 -1
- package/dist/node/sanitize/index.d.ts +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,7 +5,33 @@ All notable changes to `@acosmi/sdk-ts` will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [
|
|
8
|
+
## [1.6.0] - 2026-05-24
|
|
9
|
+
|
|
10
|
+
### Added — 业务侧终端用户 id (endUserId) + 请求保活
|
|
11
|
+
|
|
12
|
+
- `ChatRequest.endUserId?: string` — 业务侧终端用户 id, 跨 provider 通用语义。
|
|
13
|
+
序列化规则:
|
|
14
|
+
- OpenAI wire: 顶层 `body["user_id"]`
|
|
15
|
+
- Anthropic wire: 合并到 `body["metadata"]["user_id"]`; caller `metadata` 显式键优先
|
|
16
|
+
- 约束: 长度 ≤ 512, 字符集 `[a-zA-Z0-9_-]+`, **禁止包含用户隐私信息** (邮箱/手机/真名等).
|
|
17
|
+
- 公开 helper `validateEndUserId(s)`, `isSSECommentLine(line)`, 常量 `maxEndUserIdLength`.
|
|
18
|
+
- Chat / ChatMessages / ChatStream / ChatMessagesStream 的 per-request timeout 5min → **11min**,
|
|
19
|
+
覆盖 DeepSeek 上游 "开始推理前最大 10min 保活" 窗口。
|
|
20
|
+
- SSE 外层循环显式跳过 `: comment` 注释行 (": keep-alive"), 防止未来添加 else-branch 误抛 JSON parse error。
|
|
21
|
+
- 网关 sanitizer step 4.4 做最终校验 + 派生 + 注入; caller 显式覆盖需 `scope=endusr.set`,
|
|
22
|
+
无授权时 endUserId 被丢弃, 上游收到的是网关 HMAC 派生值 (32 字符稳定 id)。
|
|
23
|
+
|
|
24
|
+
### Security — devDep upgrade(消除 4 项 moderate Dependabot alerts)
|
|
25
|
+
|
|
26
|
+
- `vitest` `^1.0.0` → `^4.1.7`(跨 3 major),传递性把 `vite` `5.4.21` → `8.0.14`
|
|
27
|
+
/ `esbuild` 路径升到 fixed 区间,消除:
|
|
28
|
+
- **GHSA-67mh-4wv8-2f99** — esbuild dev server CORS bypass(fix: 0.25.0)
|
|
29
|
+
- **GHSA-4w7w-66w2-5vf9** — vite path traversal in optimized deps `.map` handling(fix: 6.4.2)
|
|
30
|
+
- **Consumer 零影响**:vitest/vite/esbuild 全在 devDependencies,dist tarball 与
|
|
31
|
+
package.json `engines.node >=18` 不变;不需要打 tag / 发新版。
|
|
32
|
+
- 验证:`npm audit` 0 vulnerabilities / `vitest 4.1.7` 17 文件 214 case
|
|
33
|
+
全绿 / typecheck / lint / build / test:pack consumer 视角 PASS / docs 重生
|
|
34
|
+
无新增 errors。
|
|
9
35
|
|
|
10
36
|
---
|
|
11
37
|
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
## 状态
|
|
8
8
|
|
|
9
9
|
- 主实现 / 事实标准:本 TS SDK 现为 Acosmi SDK 的主力实现。Go SDK [acosmi-sdk-go](https://github.com/acosmi/acosmi-sdk-go) 已暂停维护,待 TS 稳定后再从 TS 反向翻译补齐
|
|
10
|
-
- 当前版本:**1.
|
|
10
|
+
- 当前版本:**1.6.0**(v1.6.0 新增 `ChatRequest.endUserId` 业务侧终端用户 id + SSE keep-alive 注释行自动跳过 + per-request 超时 5min→11min 覆盖上游"开始推理前最长 10min 保活"窗口;详见下方"用户隔离 (v1.6.0+)"+ [CHANGELOG](./CHANGELOG.md))。`1.5.x` 文档复核 + `src/shared/` 跨域 DTO + compliance gateway S1-S6 rollup;`1.4.x` `src/` 按业务域重组 + 浏览器 Web OAuth;`1.3.x` `client.compliance` 合规域客户端
|
|
11
11
|
- 测试:发布前需通过 typecheck/lint/vitest/build/packed-tarball smoke (`npm run test:pack`)
|
|
12
12
|
- API 参考文档:`npm run docs` 经 TypeDoc 生成到 `docs/api/`
|
|
13
13
|
- 包链接:[npm](https://www.npmjs.com/package/@acosmi/sdk-ts) · [GitHub Releases](https://github.com/acosmi/sdk-ts/releases)
|
|
@@ -29,10 +29,29 @@ await client.login('My App', allScopes());
|
|
|
29
29
|
const resp = await client.chat('claude-opus-4-7', {
|
|
30
30
|
messages: [{ role: 'user', content: 'Hello' }],
|
|
31
31
|
max_tokens: 1024, // ChatRequest 走 snake_case wire 字段(与上游 Go json tag 对齐)
|
|
32
|
+
endUserId: 'user-abc-123', // v1.6.0+ 业务侧稳定 id, 启用上游隔离 / KV-cache / 调度策略
|
|
32
33
|
});
|
|
33
34
|
console.log(resp.content);
|
|
34
35
|
```
|
|
35
36
|
|
|
37
|
+
### 用户隔离 (v1.6.0+)
|
|
38
|
+
|
|
39
|
+
`ChatRequest.endUserId` — 业务侧终端用户的稳定标识, **跨 provider 通用语义**, 不绑死 DeepSeek。SDK 自动按 wire-format 注入: OpenAI 顶层 `user_id` / Anthropic `metadata.user_id`; 网关侧校验并派生后送达上游, 命中三项隔离能力 (内容安全 / KV-cache / 调度)。
|
|
40
|
+
|
|
41
|
+
**约束**: 字符集 `[a-zA-Z0-9_-]+`, 长度 ≤ 512, **禁止包含 PII** (邮箱 / 手机 / 真名等)。可用 `validateEndUserId(s)` helper 自校验。
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
import { validateEndUserId } from '@acosmi/sdk-ts';
|
|
45
|
+
|
|
46
|
+
const err = validateEndUserId(uid);
|
|
47
|
+
if (err) {
|
|
48
|
+
// 处理: PII / 长度 / 字符集不合规
|
|
49
|
+
throw new Error(err);
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
不传 `endUserId` 时网关从认证身份 HMAC-SHA256 自动派生 32 字符稳定 id, 业务无感知。流式 + 同步 + Anthropic + OpenAI 四条路径均支持。
|
|
54
|
+
|
|
36
55
|
## 双格式红线(设计核心)
|
|
37
56
|
|
|
38
57
|
SDK 同时提供 **Anthropic + OpenAI 两条 endpoint**,**等地位**,对应两个不同下游产品。
|
package/dist/browser/index.mjs
CHANGED
|
@@ -365,8 +365,17 @@ var init_anthropic = __esm({
|
|
|
365
365
|
body["effort"] = req.effort;
|
|
366
366
|
}
|
|
367
367
|
}
|
|
368
|
-
if (req.metadata) {
|
|
369
|
-
|
|
368
|
+
if (req.metadata || req.endUserId && req.endUserId !== "") {
|
|
369
|
+
const meta = {};
|
|
370
|
+
if (req.metadata) {
|
|
371
|
+
for (const [k, v] of Object.entries(req.metadata)) {
|
|
372
|
+
meta[k] = v;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
if (req.endUserId && req.endUserId !== "" && meta["user_id"] === void 0) {
|
|
376
|
+
meta["user_id"] = req.endUserId;
|
|
377
|
+
}
|
|
378
|
+
body["metadata"] = meta;
|
|
370
379
|
}
|
|
371
380
|
const allTools = [];
|
|
372
381
|
if (req.tools != null) {
|
|
@@ -710,6 +719,9 @@ var init_openai = __esm({
|
|
|
710
719
|
body[k] = v;
|
|
711
720
|
}
|
|
712
721
|
}
|
|
722
|
+
if (req.endUserId && req.endUserId !== "") {
|
|
723
|
+
body["user_id"] = req.endUserId;
|
|
724
|
+
}
|
|
713
725
|
if (req.stream === true) {
|
|
714
726
|
body["stream_options"] = { include_usage: true };
|
|
715
727
|
}
|
|
@@ -1773,6 +1785,30 @@ function extractAnthropicBlockMeta(eventType, data, blockTypeMap) {
|
|
|
1773
1785
|
// src/core/client.ts
|
|
1774
1786
|
init_openai();
|
|
1775
1787
|
|
|
1788
|
+
// src/models/enduser.ts
|
|
1789
|
+
var maxEndUserIdLength = 512;
|
|
1790
|
+
function validateEndUserId(s) {
|
|
1791
|
+
if (!s) return null;
|
|
1792
|
+
if (s.length > maxEndUserIdLength) {
|
|
1793
|
+
return `endUserId length ${s.length} > ${maxEndUserIdLength}`;
|
|
1794
|
+
}
|
|
1795
|
+
for (let i = 0; i < s.length; i++) {
|
|
1796
|
+
const c = s.charCodeAt(i);
|
|
1797
|
+
const ok = c >= 97 && c <= 122 || // a-z
|
|
1798
|
+
c >= 65 && c <= 90 || // A-Z
|
|
1799
|
+
c >= 48 && c <= 57 || // 0-9
|
|
1800
|
+
c === 95 || // _
|
|
1801
|
+
c === 45;
|
|
1802
|
+
if (!ok) {
|
|
1803
|
+
return `endUserId contains invalid char code 0x${c.toString(16)} at offset ${i} (allowed: [a-zA-Z0-9_-])`;
|
|
1804
|
+
}
|
|
1805
|
+
}
|
|
1806
|
+
return null;
|
|
1807
|
+
}
|
|
1808
|
+
function isSSECommentLine(line) {
|
|
1809
|
+
return line.length > 0 && line.charCodeAt(0) === 58;
|
|
1810
|
+
}
|
|
1811
|
+
|
|
1776
1812
|
// src/core/http.ts
|
|
1777
1813
|
init_errors();
|
|
1778
1814
|
var maxDownloadSize = 50 * 1024 * 1024;
|
|
@@ -1963,6 +1999,7 @@ var FilterStatusUnknown = "";
|
|
|
1963
1999
|
var ErrOAuthCORSBlocked = "oauth_cors_blocked";
|
|
1964
2000
|
var ErrRefreshProxyFailed = "refresh_proxy_failed";
|
|
1965
2001
|
var ErrTokenExpired = "token_expired";
|
|
2002
|
+
var CHAT_REQUEST_TIMEOUT_MS = 11 * 60 * 1e3;
|
|
1966
2003
|
function newDeferred() {
|
|
1967
2004
|
let resolve;
|
|
1968
2005
|
let reject;
|
|
@@ -2556,7 +2593,7 @@ var Client = class _Client {
|
|
|
2556
2593
|
*/
|
|
2557
2594
|
async chat(modelID, req, signal) {
|
|
2558
2595
|
req.stream = false;
|
|
2559
|
-
const ctl = withRequestTimeout(
|
|
2596
|
+
const ctl = withRequestTimeout(CHAT_REQUEST_TIMEOUT_MS, signal);
|
|
2560
2597
|
try {
|
|
2561
2598
|
const { body, adapter } = await this.buildChatRequest(modelID, req, ctl.signal);
|
|
2562
2599
|
const endpoint = `/managed-models/${encodeURIComponent(modelID)}${adapter.endpointSuffix()}`;
|
|
@@ -2603,7 +2640,7 @@ var Client = class _Client {
|
|
|
2603
2640
|
}
|
|
2604
2641
|
async chatMessagesAnthropic(modelID, req, adapter, signal) {
|
|
2605
2642
|
req.stream = false;
|
|
2606
|
-
const ctl = withRequestTimeout(
|
|
2643
|
+
const ctl = withRequestTimeout(CHAT_REQUEST_TIMEOUT_MS, signal);
|
|
2607
2644
|
try {
|
|
2608
2645
|
const caps = this.getCachedCapabilities(modelID) ?? zeroModelCapabilities();
|
|
2609
2646
|
const body = adapter.buildRequestBody(caps, req);
|
|
@@ -2640,7 +2677,7 @@ var Client = class _Client {
|
|
|
2640
2677
|
}
|
|
2641
2678
|
async chatMessagesOpenAI(modelID, req, adapter, signal) {
|
|
2642
2679
|
req.stream = false;
|
|
2643
|
-
const ctl = withRequestTimeout(
|
|
2680
|
+
const ctl = withRequestTimeout(CHAT_REQUEST_TIMEOUT_MS, signal);
|
|
2644
2681
|
try {
|
|
2645
2682
|
const caps = this.getCachedCapabilities(modelID) ?? zeroModelCapabilities();
|
|
2646
2683
|
const body = adapter.buildRequestBody(caps, req);
|
|
@@ -2721,6 +2758,7 @@ var Client = class _Client {
|
|
|
2721
2758
|
}
|
|
2722
2759
|
let currentEvent = "";
|
|
2723
2760
|
for await (const line of iterSSELines(resp.body)) {
|
|
2761
|
+
if (isSSECommentLine(line)) continue;
|
|
2724
2762
|
if (line.startsWith("event:")) {
|
|
2725
2763
|
currentEvent = line.slice("event:".length).trim();
|
|
2726
2764
|
} else if (line.startsWith("data:")) {
|
|
@@ -2786,6 +2824,7 @@ var Client = class _Client {
|
|
|
2786
2824
|
if (adapter.format() === 1 /* OpenAI */) {
|
|
2787
2825
|
const converter = newOpenAIStreamConverter();
|
|
2788
2826
|
for await (const line of iterSSELines(resp.body)) {
|
|
2827
|
+
if (isSSECommentLine(line)) continue;
|
|
2789
2828
|
if (line.startsWith("event:")) {
|
|
2790
2829
|
line.slice("event:".length).trim();
|
|
2791
2830
|
} else if (line.startsWith("data:")) {
|
|
@@ -2799,6 +2838,7 @@ var Client = class _Client {
|
|
|
2799
2838
|
const blockTypeMap = /* @__PURE__ */ new Map();
|
|
2800
2839
|
let currentEvent = "";
|
|
2801
2840
|
for await (const line of iterSSELines(resp.body)) {
|
|
2841
|
+
if (isSSECommentLine(line)) continue;
|
|
2802
2842
|
if (line.startsWith("event:")) {
|
|
2803
2843
|
currentEvent = line.slice("event:".length).trim();
|
|
2804
2844
|
} else if (line.startsWith("data:")) {
|
|
@@ -6086,6 +6126,6 @@ Client.prototype.getBugReport = async function(bugID, signal) {
|
|
|
6086
6126
|
return resp.data;
|
|
6087
6127
|
};
|
|
6088
6128
|
|
|
6089
|
-
export { AgentRunStreamError, AgentRunsClient, AnthropicAdapter, BucketClassCommercial, BucketClassGeneric, BusinessError, Client, ComplianceClient, CompliancePollError, LocalStorageTokenStore as DefaultBrowserTokenStore, DefaultRetryPolicy, ErrAuthDenied, ErrBillingCallbackCannotCommit, ErrBillingCommitRequiresLocalVerify, ErrBillingS2sForbidden, ErrBrowserOpen, ErrComplianceStepUpRequired, ErrDiscovery, ErrEnvelopeGateClosed, ErrOAuthCORSBlocked, ErrProviderNotConfigured, ErrProviderUnknownNoRetry, ErrRefreshProxyFailed, ErrRegistration, ErrSSLProxy, ErrSealApprovalContractHashMismatch, ErrSealApprovalExpired, ErrSealApprovalLocationMismatch, ErrSealApprovalNonceUsed, ErrSealApprovalNotApproved, ErrSealApprovalSealMismatch, ErrSealApprovalTransactorMismatch, ErrSealUseAlreadyConsumed, ErrStateMismatch, ErrTimeout, ErrTokenExchange, ErrTokenExpired, EventAuthURL, EventComplete, EventError, FileTokenStore, FilterStatusAdminBypass, FilterStatusDisabledByFlag, FilterStatusFallbackMissingUser, FilterStatusFallbackNoBuckets, FilterStatusFallbackTkdistError, FilterStatusFallbackTkdistSkew, FilterStatusInternalBypass, FilterStatusOK, FilterStatusUnknown, HTTPError, IdempotencyKeyHeader, InMemoryTokenStore, LocalStorageTokenStore, ModelNotFoundError, NetworkError, OpenAIAdapter, OrderTerminalError, ProviderFormat, RETRY_ADVICE_REASONS, RateLimitError, ScopeAI, ScopeAccount, ScopeComplianceContractSigningRead, ScopeComplianceContractSigningWrite, ScopeComplianceContractTemplateRead, ScopeComplianceContractTemplateWrite, ScopeComplianceEvidenceRead, ScopeComplianceEvidenceWrite, ScopeComplianceReportsPublish, ScopeComplianceReportsRead, ScopeComplianceReportsWrite, ScopeComplianceSealApprovalApprove, ScopeComplianceSealApprovalRequest, ScopeComplianceSealManage, ScopeComplianceSealUseExecute, ScopeComplianceTimestampIssue, ScopeComplianceTimestampVerify, ScopeEntitlements, ScopeModels, ScopeModelsChat, ScopeProfile, ScopeSkillStore, ScopeSkills, ScopeTokenPackages, ScopeTools, ScopeToolsExecute, ScopeWallet, ScopeWalletReadonly, ServerToolTypeWebSearch, StreamError, ThinkingHigh, ThinkingHighMinMaxTokens, ThinkingMax, ThinkingMaxFallbackMaxTokens, ThinkingOff, allScopes, anthropicResponseTextContent, anthropicResponseThinkingContent, anthropicResponseToolUseBlocks, apiResponseBusinessError, apiResponseGetMessage, authorize, bucketInfoIsCommercial, bucketRowIsCommercial, buildBetas, classifyComplianceError, commerceScopes, completeWebAuthorizationRequest, complianceErrorToRetryAdvice, complianceScopes, computeBackoff, createWebAuthorizationRequest, defaultRetryable, defaultSafeToRetry, discover, discoverWebOAuthMetadata, discoverWithProfile, effectivePolicy, exchangeCode, extractAnthropicBlockMeta, fileLockDefaults, findDesktopVisualUnderstandingModel, findFirstModelByInputModality, generateState, getAdapter, getAdapterForModel, isBillingConfirmable, isComplianceBusinessError, isComplianceTerminalError, isSSLError, modelScopes, modelSupportsImageInput, modelSupportsInputModality, newFileTokenStore, newThinkingConfig, newTokenSet, newWebSearchTool, parseNotificationEvent, parseSettlement, parseSourcesEvent, refreshToken, register, registerWebOAuthClient, retryReasonForComplianceKey, retryReasonForOAuthError, revokeToken, sanitize_exports as sanitize, skillScopes, tokenSetIsExpired, uniqueMerge };
|
|
6129
|
+
export { AgentRunStreamError, AgentRunsClient, AnthropicAdapter, BucketClassCommercial, BucketClassGeneric, BusinessError, Client, ComplianceClient, CompliancePollError, LocalStorageTokenStore as DefaultBrowserTokenStore, DefaultRetryPolicy, ErrAuthDenied, ErrBillingCallbackCannotCommit, ErrBillingCommitRequiresLocalVerify, ErrBillingS2sForbidden, ErrBrowserOpen, ErrComplianceStepUpRequired, ErrDiscovery, ErrEnvelopeGateClosed, ErrOAuthCORSBlocked, ErrProviderNotConfigured, ErrProviderUnknownNoRetry, ErrRefreshProxyFailed, ErrRegistration, ErrSSLProxy, ErrSealApprovalContractHashMismatch, ErrSealApprovalExpired, ErrSealApprovalLocationMismatch, ErrSealApprovalNonceUsed, ErrSealApprovalNotApproved, ErrSealApprovalSealMismatch, ErrSealApprovalTransactorMismatch, ErrSealUseAlreadyConsumed, ErrStateMismatch, ErrTimeout, ErrTokenExchange, ErrTokenExpired, EventAuthURL, EventComplete, EventError, FileTokenStore, FilterStatusAdminBypass, FilterStatusDisabledByFlag, FilterStatusFallbackMissingUser, FilterStatusFallbackNoBuckets, FilterStatusFallbackTkdistError, FilterStatusFallbackTkdistSkew, FilterStatusInternalBypass, FilterStatusOK, FilterStatusUnknown, HTTPError, IdempotencyKeyHeader, InMemoryTokenStore, LocalStorageTokenStore, ModelNotFoundError, NetworkError, OpenAIAdapter, OrderTerminalError, ProviderFormat, RETRY_ADVICE_REASONS, RateLimitError, ScopeAI, ScopeAccount, ScopeComplianceContractSigningRead, ScopeComplianceContractSigningWrite, ScopeComplianceContractTemplateRead, ScopeComplianceContractTemplateWrite, ScopeComplianceEvidenceRead, ScopeComplianceEvidenceWrite, ScopeComplianceReportsPublish, ScopeComplianceReportsRead, ScopeComplianceReportsWrite, ScopeComplianceSealApprovalApprove, ScopeComplianceSealApprovalRequest, ScopeComplianceSealManage, ScopeComplianceSealUseExecute, ScopeComplianceTimestampIssue, ScopeComplianceTimestampVerify, ScopeEntitlements, ScopeModels, ScopeModelsChat, ScopeProfile, ScopeSkillStore, ScopeSkills, ScopeTokenPackages, ScopeTools, ScopeToolsExecute, ScopeWallet, ScopeWalletReadonly, ServerToolTypeWebSearch, StreamError, ThinkingHigh, ThinkingHighMinMaxTokens, ThinkingMax, ThinkingMaxFallbackMaxTokens, ThinkingOff, allScopes, anthropicResponseTextContent, anthropicResponseThinkingContent, anthropicResponseToolUseBlocks, apiResponseBusinessError, apiResponseGetMessage, authorize, bucketInfoIsCommercial, bucketRowIsCommercial, buildBetas, classifyComplianceError, commerceScopes, completeWebAuthorizationRequest, complianceErrorToRetryAdvice, complianceScopes, computeBackoff, createWebAuthorizationRequest, defaultRetryable, defaultSafeToRetry, discover, discoverWebOAuthMetadata, discoverWithProfile, effectivePolicy, exchangeCode, extractAnthropicBlockMeta, fileLockDefaults, findDesktopVisualUnderstandingModel, findFirstModelByInputModality, generateState, getAdapter, getAdapterForModel, isBillingConfirmable, isComplianceBusinessError, isComplianceTerminalError, isSSECommentLine, isSSLError, maxEndUserIdLength, modelScopes, modelSupportsImageInput, modelSupportsInputModality, newFileTokenStore, newThinkingConfig, newTokenSet, newWebSearchTool, parseNotificationEvent, parseSettlement, parseSourcesEvent, refreshToken, register, registerWebOAuthClient, retryReasonForComplianceKey, retryReasonForOAuthError, revokeToken, sanitize_exports as sanitize, skillScopes, tokenSetIsExpired, uniqueMerge, validateEndUserId };
|
|
6090
6130
|
//# sourceMappingURL=index.mjs.map
|
|
6091
6131
|
//# sourceMappingURL=index.mjs.map
|