@acosmi/sdk-ts 2.11.0 → 2.13.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 +24 -0
- package/README.md +1 -0
- package/dist/browser/index.mjs +91 -2
- package/dist/browser/index.mjs.map +1 -1
- package/dist/index.mjs +91 -2
- package/dist/index.mjs.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- package/dist/node/{index-RoHp_9g8.d.cts → index-BI-Y3iOO.d.cts} +34 -1
- package/dist/node/{index-RoHp_9g8.d.ts → index-BI-Y3iOO.d.ts} +34 -1
- package/dist/node/index.cjs +92 -1
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +83 -5
- package/dist/node/index.d.ts +83 -5
- package/dist/node/index.mjs +91 -2
- package/dist/node/index.mjs.map +1 -1
- package/dist/node/{openai-DnFW4Ryl.d.ts → openai-CcGS1DkW.d.ts} +1 -1
- package/dist/node/{openai-Dpl3GSEJ.d.cts → openai-DTKQS8kL.d.cts} +1 -1
- package/package.json +1 -1
package/dist/node/index.cjs
CHANGED
|
@@ -107,6 +107,19 @@ function isWindowLimitStreamError(err) {
|
|
|
107
107
|
}
|
|
108
108
|
return false;
|
|
109
109
|
}
|
|
110
|
+
function isContinuableWindowLimitError(err) {
|
|
111
|
+
return isWindowLimitError(err) && err.windowOverridable === true;
|
|
112
|
+
}
|
|
113
|
+
function getWindowLimitStreamDetails(err) {
|
|
114
|
+
if (!isWindowLimitStreamError(err)) return null;
|
|
115
|
+
const e = err ?? {};
|
|
116
|
+
const kind = e.windowKind === "FIVE_HOUR" || e.windowKind === "WEEKLY" ? e.windowKind : void 0;
|
|
117
|
+
return {
|
|
118
|
+
windowKind: kind,
|
|
119
|
+
windowResetAt: typeof e.windowResetAt === "string" ? e.windowResetAt : void 0,
|
|
120
|
+
windowOverridable: typeof e.windowOverridable === "boolean" ? e.windowOverridable : void 0
|
|
121
|
+
};
|
|
122
|
+
}
|
|
110
123
|
exports.RateLimitError = void 0; exports.BusinessError = void 0; exports.OrderTerminalError = void 0; exports.ModelNotFoundError = void 0; exports.HTTPError = void 0; exports.NetworkError = void 0; exports.StreamError = void 0; var windowLimitErrorCode, windowLimitStreamCode;
|
|
111
124
|
var init_errors = __esm({
|
|
112
125
|
"src/shared/errors.ts"() {
|
|
@@ -160,6 +173,12 @@ var init_errors = __esm({
|
|
|
160
173
|
windowKind;
|
|
161
174
|
/** 窗口限额场景: 预计恢复时间 (ISO-8601 UTC); 缺失为 undefined */
|
|
162
175
|
windowResetAt;
|
|
176
|
+
/**
|
|
177
|
+
* [W1 2026-07-11 软限额] 窗口限额场景: 该 429 可否被用户「继续」开关豁免 —
|
|
178
|
+
* true = 5 小时软限额严格模式 (客户端可提示「继续任务」以消耗周配额继续);
|
|
179
|
+
* false/缺失 = 周窗/显式禁止/灰度关 (硬等待, 无豁免路径, 老网关不返回时为 undefined)。
|
|
180
|
+
*/
|
|
181
|
+
windowOverridable;
|
|
163
182
|
constructor(statusCode, opts = {}) {
|
|
164
183
|
let msg;
|
|
165
184
|
if (opts.type) {
|
|
@@ -180,6 +199,7 @@ var init_errors = __esm({
|
|
|
180
199
|
this.errorCode = opts.errorCode;
|
|
181
200
|
this.windowKind = opts.windowKind;
|
|
182
201
|
this.windowResetAt = opts.windowResetAt;
|
|
202
|
+
this.windowOverridable = opts.windowOverridable;
|
|
183
203
|
}
|
|
184
204
|
};
|
|
185
205
|
exports.NetworkError = class extends Error {
|
|
@@ -1960,6 +1980,7 @@ function parseHTTPErrorWithHeader(statusCode, body, header) {
|
|
|
1960
1980
|
let errorCode;
|
|
1961
1981
|
let windowKind;
|
|
1962
1982
|
let windowResetAt;
|
|
1983
|
+
let windowOverridable;
|
|
1963
1984
|
try {
|
|
1964
1985
|
const obj = JSON.parse(bodyStr);
|
|
1965
1986
|
if (obj && typeof obj === "object") {
|
|
@@ -1975,10 +1996,20 @@ function parseHTTPErrorWithHeader(statusCode, body, header) {
|
|
|
1975
1996
|
if (typeof top.errorCode === "string") errorCode = top.errorCode;
|
|
1976
1997
|
if (top.windowKind === "FIVE_HOUR" || top.windowKind === "WEEKLY") windowKind = top.windowKind;
|
|
1977
1998
|
if (typeof top.windowResetAt === "string") windowResetAt = top.windowResetAt;
|
|
1999
|
+
if (typeof top.windowOverridable === "boolean") windowOverridable = top.windowOverridable;
|
|
1978
2000
|
}
|
|
1979
2001
|
} catch {
|
|
1980
2002
|
}
|
|
1981
|
-
return new exports.HTTPError(statusCode, {
|
|
2003
|
+
return new exports.HTTPError(statusCode, {
|
|
2004
|
+
type,
|
|
2005
|
+
message,
|
|
2006
|
+
retryAfter,
|
|
2007
|
+
body: bodyStr,
|
|
2008
|
+
errorCode,
|
|
2009
|
+
windowKind,
|
|
2010
|
+
windowResetAt,
|
|
2011
|
+
windowOverridable
|
|
2012
|
+
});
|
|
1982
2013
|
}
|
|
1983
2014
|
function classifyTransport(op, urlStr, err) {
|
|
1984
2015
|
const ne = new exports.NetworkError(op, urlStr, err);
|
|
@@ -2767,6 +2798,64 @@ var Client = class _Client {
|
|
|
2767
2798
|
);
|
|
2768
2799
|
return resp.data;
|
|
2769
2800
|
}
|
|
2801
|
+
/**
|
|
2802
|
+
* [W1 2026-07-11 软限额] 设置当前用户 5 小时窗口软限额「继续」开关 (v2.12+)。
|
|
2803
|
+
*
|
|
2804
|
+
* enabled=true = 软限额 (到达 5h 后继续消耗周配额, 默认); false = 严格模式 (到达即等待逐步恢复)。
|
|
2805
|
+
* userId 由网关从鉴权态解析 (客户端永不传), 故只需 enabled + 可选 source (审计: web /
|
|
2806
|
+
* crabcode-gui / crabcode-tui / dialog)。用于个人中心开关、429 严格模式「重新开启继续」续跑。
|
|
2807
|
+
*
|
|
2808
|
+
* @returns 网关回显的新状态 { enabled }。
|
|
2809
|
+
*/
|
|
2810
|
+
async setWindowContinuePreference(enabled, opts) {
|
|
2811
|
+
const resp = await this.doJSON(
|
|
2812
|
+
"POST",
|
|
2813
|
+
"/entitlements/window-continue-pref",
|
|
2814
|
+
{ enabled, source: opts?.source },
|
|
2815
|
+
opts?.signal
|
|
2816
|
+
);
|
|
2817
|
+
return { enabled: resp.data.enabled };
|
|
2818
|
+
}
|
|
2819
|
+
/**
|
|
2820
|
+
* [W-MEMBERSHIP 2026-08-01 邀请奖励] 查询当前用户窗口重置券总览 (v2.13+)。
|
|
2821
|
+
*
|
|
2822
|
+
* 重置券由邀请奖励发放 (被邀请人激活并达到用量门槛后计一次), 每张可清空一次滚动窗口已用量
|
|
2823
|
+
* (见 redeemWindowReset)。userId 由网关从鉴权态解析, 客户端永不传。
|
|
2824
|
+
* 用于个人中心邀请栏与 429 窗口限额弹窗展示"还剩几张券 + 最近到期时间 + 邀请进度"。
|
|
2825
|
+
*
|
|
2826
|
+
* @returns 券余量 / 最近到期 / 累计发放与使用 / 邀请已达标与待达标数。
|
|
2827
|
+
*/
|
|
2828
|
+
async getWindowResetSummary(signal) {
|
|
2829
|
+
const resp = await this.doJSON(
|
|
2830
|
+
"GET",
|
|
2831
|
+
"/entitlements/window-reset/summary",
|
|
2832
|
+
null,
|
|
2833
|
+
signal
|
|
2834
|
+
);
|
|
2835
|
+
return resp.data;
|
|
2836
|
+
}
|
|
2837
|
+
/**
|
|
2838
|
+
* [W-MEMBERSHIP 2026-08-01 邀请奖励] 消费一张窗口重置券, 清空当前滚动窗口已用量 (v2.13+)。
|
|
2839
|
+
*
|
|
2840
|
+
* **幂等键语义**: 传 `clientRequestId` 时同一 ID 重放**不会二次扣券** — 网关按该键返回首次
|
|
2841
|
+
* 结果 (`remaining` 与首次一致)。网络重试 / 用户连点必须**复用同一 ID**; 换 ID = 换一次真实
|
|
2842
|
+
* 扣券。不传则不幂等, 每次调用都是一次真实扣券。
|
|
2843
|
+
*
|
|
2844
|
+
* 业务错 (信封 `code != 0`) 按 SDK 惯例抛 `BusinessError` (message 含机器码), 常见两种:
|
|
2845
|
+
* - `NO_AVAILABLE_CREDIT` — 无可用券 (未发放 / 已用尽 / 已过期)
|
|
2846
|
+
* - `NO_WINDOW_USAGE` — 当前窗口无已用量, 无可重置 (不扣券)
|
|
2847
|
+
*
|
|
2848
|
+
* @returns 扣减后剩余可用券张数 { remaining }。
|
|
2849
|
+
*/
|
|
2850
|
+
async redeemWindowReset(opts) {
|
|
2851
|
+
const resp = await this.doJSON(
|
|
2852
|
+
"POST",
|
|
2853
|
+
"/entitlements/window-reset/redeem",
|
|
2854
|
+
{ clientRequestId: opts?.clientRequestId },
|
|
2855
|
+
opts?.signal
|
|
2856
|
+
);
|
|
2857
|
+
return { remaining: resp.data.remaining };
|
|
2858
|
+
}
|
|
2770
2859
|
/**
|
|
2771
2860
|
* 查询单个模型的能力矩阵
|
|
2772
2861
|
* 优先从 listModels 缓存读取, miss 时调用 listModels 刷新
|
|
@@ -7724,10 +7813,12 @@ exports.findFirstModelByInputModality = findFirstModelByInputModality;
|
|
|
7724
7813
|
exports.generateState = generateState;
|
|
7725
7814
|
exports.getAdapter = getAdapter;
|
|
7726
7815
|
exports.getAdapterForModel = getAdapterForModel;
|
|
7816
|
+
exports.getWindowLimitStreamDetails = getWindowLimitStreamDetails;
|
|
7727
7817
|
exports.isBillingConfirmable = isBillingConfirmable;
|
|
7728
7818
|
exports.isChannelInboundEvent = isChannelInboundEvent;
|
|
7729
7819
|
exports.isComplianceBusinessError = isComplianceBusinessError;
|
|
7730
7820
|
exports.isComplianceTerminalError = isComplianceTerminalError;
|
|
7821
|
+
exports.isContinuableWindowLimitError = isContinuableWindowLimitError;
|
|
7731
7822
|
exports.isIntegrationStatus = isIntegrationStatus;
|
|
7732
7823
|
exports.isInvalidGrantError = isInvalidGrantError;
|
|
7733
7824
|
exports.isPlatform = isPlatform;
|