@dsh-ft/dsh-fft-ftshare 0.3.0 → 0.4.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.
- package/README.md +4 -2
- package/catalog.json +222 -335
- package/catalog.meta.json +2 -2
- package/lib/client.d.ts +3 -0
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +40 -5
- package/lib/client.js.map +1 -1
- package/lib/contract.d.ts +42 -18
- package/lib/contract.d.ts.map +1 -1
- package/lib/contract.js +11 -6
- package/lib/contract.js.map +1 -1
- package/lib/errors.d.ts +54 -60
- package/lib/errors.d.ts.map +1 -1
- package/lib/errors.js +184 -174
- package/lib/errors.js.map +1 -1
- package/lib/index.d.ts +47 -6
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +147 -36
- package/lib/index.js.map +1 -1
- package/lib/project.d.ts +3 -0
- package/lib/project.d.ts.map +1 -1
- package/lib/project.js +10 -1
- package/lib/project.js.map +1 -1
- package/lib/status.d.ts +103 -0
- package/lib/status.d.ts.map +1 -0
- package/lib/status.js +134 -0
- package/lib/status.js.map +1 -0
- package/lib/tools.d.ts +12 -5
- package/lib/tools.d.ts.map +1 -1
- package/lib/tools.js +65 -19
- package/lib/tools.js.map +1 -1
- package/lib/transport.d.ts +12 -0
- package/lib/transport.d.ts.map +1 -1
- package/lib/transport.js +28 -14
- package/lib/transport.js.map +1 -1
- package/locale/en.json +6 -0
- package/locale/zh.json +6 -0
- package/package.json +27 -10
package/catalog.meta.json
CHANGED
package/lib/client.d.ts
CHANGED
|
@@ -14,6 +14,9 @@
|
|
|
14
14
|
* 这个模块是**只读子集**:不碰凭据、不碰网关地址、不维护接口表。它只认两样输入——
|
|
15
15
|
* 随包的目录与被注入的 `fetch`;`@dsh-ft/dsh-fft-ftshare/route` 与网关常量都不在这里的
|
|
16
16
|
* 依赖里,`scripts/test-crossplane.mjs` 会 grep 产物把这条钉住。
|
|
17
|
+
*
|
|
18
|
+
* 过桥时只做「形状收敛」,不解释内容:`notice.code` 可缺省(上游不给码就省略),
|
|
19
|
+
* `notice.upstream` 原样保留(面板要定位时用)。
|
|
17
20
|
* @module @dsh-ft/dsh-fft-ftshare/client
|
|
18
21
|
*/
|
|
19
22
|
import { type CatalogEntry } from './catalog.js';
|
package/lib/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAgE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAC9G,OAAO,EAA8F,KAAK,kBAAkB,EAA4C,MAAM,eAAe,CAAA;AAE7L,oCAAoC;AACpC,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAElF,kBAAkB;AAClB,MAAM,WAAW,oBAAoB;IACnC,2CAA2C;IAC3C,OAAO,EAAE,OAAO,CAAA;IAChB,iDAAiD;IACjD,KAAK,EAAE,YAAY,CAAA;IACnB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oCAAoC;IACpC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;CACjB;AAED,wDAAwD;AACxD,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAAA;CACtD;AAmDD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,oBAAoB,CA6FvF"}
|
package/lib/client.js
CHANGED
|
@@ -14,6 +14,9 @@
|
|
|
14
14
|
* 这个模块是**只读子集**:不碰凭据、不碰网关地址、不维护接口表。它只认两样输入——
|
|
15
15
|
* 随包的目录与被注入的 `fetch`;`@dsh-ft/dsh-fft-ftshare/route` 与网关常量都不在这里的
|
|
16
16
|
* 依赖里,`scripts/test-crossplane.mjs` 会 grep 产物把这条钉住。
|
|
17
|
+
*
|
|
18
|
+
* 过桥时只做「形状收敛」,不解释内容:`notice.code` 可缺省(上游不给码就省略),
|
|
19
|
+
* `notice.upstream` 原样保留(面板要定位时用)。
|
|
17
20
|
* @module @dsh-ft/dsh-fft-ftshare/client
|
|
18
21
|
*/
|
|
19
22
|
import { asCatalog, catalogEntryOf, missingRequiredArgs } from './catalog.js';
|
|
@@ -30,6 +33,37 @@ const STATES = new Set(['available', 'empty', 'denied', 'failed']);
|
|
|
30
33
|
function isRecord(value) {
|
|
31
34
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
32
35
|
}
|
|
36
|
+
/** 读一个非空字符串;其余 undefined。 */
|
|
37
|
+
function asText(value) {
|
|
38
|
+
return typeof value === 'string' && value.trim() !== '' ? value : undefined;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* 收敛宿主过桥的 `notice`:只校验「有说明」,不要求「有码」。
|
|
42
|
+
* @param value - 过桥的 notice。
|
|
43
|
+
* @returns 收敛后的 notice;形状不符时 undefined。
|
|
44
|
+
*/
|
|
45
|
+
function normalizeNotice(value) {
|
|
46
|
+
if (!isRecord(value) || typeof value.message !== 'string')
|
|
47
|
+
return undefined;
|
|
48
|
+
const code = asText(value.code);
|
|
49
|
+
const requiredPlan = asText(value.requiredPlan);
|
|
50
|
+
const upgradeUrl = asText(value.upgradeUrl);
|
|
51
|
+
const upstream = isRecord(value.upstream) && typeof value.upstream.raw === 'string'
|
|
52
|
+
? {
|
|
53
|
+
raw: value.upstream.raw,
|
|
54
|
+
...typeof value.upstream.status === 'number' ? { status: value.upstream.status } : {},
|
|
55
|
+
fingerprint: typeof value.upstream.fingerprint === 'string' ? value.upstream.fingerprint : '',
|
|
56
|
+
}
|
|
57
|
+
: undefined;
|
|
58
|
+
return {
|
|
59
|
+
...code !== undefined ? { code } : {},
|
|
60
|
+
message: value.message,
|
|
61
|
+
...requiredPlan !== undefined ? { requiredPlan } : {},
|
|
62
|
+
...upgradeUrl !== undefined ? { upgradeUrl } : {},
|
|
63
|
+
retryable: value.retryable === true,
|
|
64
|
+
...upstream !== undefined ? { upstream } : {},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
33
67
|
/**
|
|
34
68
|
* 造一个客户端 `ftshareData`。
|
|
35
69
|
* @param options - 见 {@link FtshareClientOptions}。
|
|
@@ -62,16 +96,17 @@ export function createFtshareClient(options) {
|
|
|
62
96
|
if (!isRecord(value.source))
|
|
63
97
|
return undefined;
|
|
64
98
|
const notice = value.notice;
|
|
65
|
-
const
|
|
99
|
+
const normalizedNotice = notice === undefined ? undefined : normalizeNotice(notice);
|
|
100
|
+
// notice 存在但形状不对(没有 message)时按形状不符处理,不吞掉失败原因。
|
|
101
|
+
if (notice !== undefined && normalizedNotice === undefined)
|
|
102
|
+
return undefined;
|
|
103
|
+
return {
|
|
66
104
|
ok: value.ok,
|
|
67
105
|
state: state,
|
|
68
106
|
rows: value.rows.filter(isRecord),
|
|
69
107
|
source: value.source,
|
|
70
|
-
...
|
|
71
|
-
? { notice: { ...notice, retryable: notice.retryable === true } }
|
|
72
|
-
: {},
|
|
108
|
+
...normalizedNotice === undefined ? {} : { notice: normalizedNotice },
|
|
73
109
|
};
|
|
74
|
-
return normalized;
|
|
75
110
|
};
|
|
76
111
|
return {
|
|
77
112
|
async call(interfaceName, args = {}, callOptions) {
|
package/lib/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/lib/contract.d.ts
CHANGED
|
@@ -5,10 +5,12 @@
|
|
|
5
5
|
* 不依赖本包的实现、传输层或 MCP SDK。本模块只有类型与常量,没有运行时依赖,
|
|
6
6
|
* 因此宿主插件与测试都能安全引用。
|
|
7
7
|
*
|
|
8
|
-
* 设计要点是 **四态归一**:FTShare
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* 设计要点是 **四态归一**:FTShare 网关把「真的没有数据」「上游拒绝(401/403)」
|
|
9
|
+
* 「取数失败」三种情况都表现为「空」,调用方若只判断空数组就会把「拒绝」误读成
|
|
10
|
+
* 「没有数据」。{@link FtshareCallResult.state} 强制区分这四种结局。
|
|
11
|
+
*
|
|
12
|
+
* 失败说明({@link FtshareNotice})只**抄上游事实**:码、HTTP 状态、原文、重试提示。
|
|
13
|
+
* 本包不翻译、不归因、不编造 remedy;是不是配额、要不要升级,由原文与消费方判断。
|
|
12
14
|
* @module @dsh-ft/dsh-fft-ftshare/contract
|
|
13
15
|
*/
|
|
14
16
|
/** 服务在 cordis `Context` 上的名字,也是 `ctx.provide` 的键。 */
|
|
@@ -19,16 +21,18 @@ export declare const FTSHARE_DATA_SERVICE: "ftshareData";
|
|
|
19
21
|
* Host/Origin 围栏与浏览器鉴权由载体负责。
|
|
20
22
|
*/
|
|
21
23
|
export declare const FTSHARE_DATA_ROUTE: "/api/ftshare-data";
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
+
/**
|
|
25
|
+
* 用户可升级订阅的页面,{@link FtshareNotice.upgradeUrl} 的默认值(仅 `denied` 带)。
|
|
26
|
+
* `utm_source=dsh-fft` 与申请页同口径:站点据此把「从插件来的购买」和自然流量分开。
|
|
27
|
+
*/
|
|
28
|
+
export declare const FTSHARE_UPGRADE_URL: "https://ftai.chat/me/profile?tab=subscription&utm_source=dsh-fft";
|
|
24
29
|
/**
|
|
25
30
|
* 一次取数的四态结局。
|
|
26
31
|
*
|
|
27
32
|
* - `available`:调用成功且至少返回了一行;
|
|
28
|
-
* - `empty
|
|
29
|
-
* - `denied
|
|
30
|
-
*
|
|
31
|
-
* - `failed`:连接、超时、参数或上游 5xx 等其他失败。
|
|
33
|
+
* - `empty`:调用成功,且载荷里有**正向证据**(已知数据容器存在且为空数组);
|
|
34
|
+
* - `denied`:上游以 HTTP 401/403 拒绝—— **不是**「没有数据」;
|
|
35
|
+
* - `failed`:连接、超时、参数、上游 5xx 等其他失败,或成功信封无法识别。
|
|
32
36
|
*/
|
|
33
37
|
export type FtshareCallState = 'available' | 'empty' | 'denied' | 'failed';
|
|
34
38
|
/**
|
|
@@ -48,23 +52,43 @@ export interface FtshareCallResult {
|
|
|
48
52
|
state: FtshareCallState;
|
|
49
53
|
/** 归一后的明细行;`available` 之外通常为空数组,绝不是权限判断依据。 */
|
|
50
54
|
rows: Record<string, unknown>[];
|
|
51
|
-
/**
|
|
55
|
+
/** 需要向用户/模型解释的异常;成功时为 undefined。 */
|
|
52
56
|
notice?: FtshareNotice;
|
|
53
57
|
/** 取数来源与时点,用于在报告里给出处。 */
|
|
54
58
|
source: FtshareSource;
|
|
55
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* 上游失败的现场。
|
|
62
|
+
*
|
|
63
|
+
* 只放事实:网关说了什么、HTTP 状态是多少、同一类失败怎么聚在一起。不存
|
|
64
|
+
* 「原因」或「补救办法」——那两样会随上游文案一起失效。
|
|
65
|
+
*/
|
|
66
|
+
export interface FtshareUpstream {
|
|
67
|
+
/** 上游原文(剥掉 SDK 包装后的可读报文),最多 2 KB。 */
|
|
68
|
+
raw: string;
|
|
69
|
+
/** HTTP 状态:`Error.code`、信封 `upstream_code`,或文本里带分界的写法。 */
|
|
70
|
+
status?: number;
|
|
71
|
+
/** 失败指纹:同工具、同状态、同码、同归一文案的失败聚合用(数字已归一)。 */
|
|
72
|
+
fingerprint: string;
|
|
73
|
+
}
|
|
56
74
|
/** 面向用户/模型的异常说明。 */
|
|
57
75
|
export interface FtshareNotice {
|
|
58
|
-
/**
|
|
59
|
-
|
|
60
|
-
|
|
76
|
+
/**
|
|
77
|
+
* 上游错误码,**照抄**(如 `UPSTREAM_UNAVAILABLE`);没有信封码但拿到 401/403 时,
|
|
78
|
+
* 用 HTTP 状态字符串 `"401"`/`"403"`(事实,不是编造)。本地失败码(目录外接口、
|
|
79
|
+
* 缺参、传输失败)由调用方自己给。
|
|
80
|
+
*/
|
|
81
|
+
code?: string;
|
|
82
|
+
/** 面向展示的说明:上游原文(`上游原文:…`)或本地失败的事实描述。 */
|
|
61
83
|
message: string;
|
|
62
|
-
/**
|
|
84
|
+
/** 上游信封真给了所需档位才写,不做推断。 */
|
|
63
85
|
requiredPlan?: string;
|
|
64
|
-
/**
|
|
86
|
+
/** 升级入口,只有 `denied` 带。 */
|
|
65
87
|
upgradeUrl?: string;
|
|
66
|
-
/**
|
|
88
|
+
/** 是否值得原样重试:上游 hint,缺失时按 HTTP/传输事实推导。 */
|
|
67
89
|
retryable: boolean;
|
|
90
|
+
/** 上游失败的现场;本地失败(目录外、缺参)没有。 */
|
|
91
|
+
upstream?: FtshareUpstream;
|
|
68
92
|
}
|
|
69
93
|
/** 取数来源与时点。 */
|
|
70
94
|
export interface FtshareSource {
|
|
@@ -74,7 +98,7 @@ export interface FtshareSource {
|
|
|
74
98
|
}
|
|
75
99
|
/** 单次调用的可选项。 */
|
|
76
100
|
export interface FtshareCallOptions {
|
|
77
|
-
/**
|
|
101
|
+
/** 调用方取消信号;已取消时立刻返回 `failed`,不发起连接。 */
|
|
78
102
|
signal?: AbortSignal;
|
|
79
103
|
}
|
|
80
104
|
/** 上游 FTShare MCP 网关暴露的一个工具。 */
|
package/lib/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,qDAAqD;AACrD,eAAO,MAAM,oBAAoB,EAAG,aAAsB,CAAA;AAE1D;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAG,mBAA4B,CAAA;AAE9D;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAG,kEAA2E,CAAA;AAE9G;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAE1E;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,EAAE,EAAE,OAAO,CAAA;IACX,uCAAuC;IACvC,KAAK,EAAE,gBAAgB,CAAA;IACvB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAC/B,oCAAoC;IACpC,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,yBAAyB;IACzB,MAAM,EAAE,aAAa,CAAA;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,GAAG,EAAE,MAAM,CAAA;IACX,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,oBAAoB;AACpB,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAA;IACf,0BAA0B;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,yCAAyC;IACzC,SAAS,EAAE,OAAO,CAAA;IAClB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,eAAe,CAAA;CAC3B;AAED,eAAe;AACf,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAA;IACf,qBAAqB;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,gBAAgB;AAChB,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,gCAAgC;AAChC,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mDAAmD;IACnD,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;OAMG;IACH,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACrH;;;;;OAKG;IACH,SAAS,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAAA;CACjD;AAED,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,OAAO;QACf,WAAW,EAAE,kBAAkB,CAAA;KAChC;CACF"}
|
package/lib/contract.js
CHANGED
|
@@ -5,10 +5,12 @@
|
|
|
5
5
|
* 不依赖本包的实现、传输层或 MCP SDK。本模块只有类型与常量,没有运行时依赖,
|
|
6
6
|
* 因此宿主插件与测试都能安全引用。
|
|
7
7
|
*
|
|
8
|
-
* 设计要点是 **四态归一**:FTShare
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* 设计要点是 **四态归一**:FTShare 网关把「真的没有数据」「上游拒绝(401/403)」
|
|
9
|
+
* 「取数失败」三种情况都表现为「空」,调用方若只判断空数组就会把「拒绝」误读成
|
|
10
|
+
* 「没有数据」。{@link FtshareCallResult.state} 强制区分这四种结局。
|
|
11
|
+
*
|
|
12
|
+
* 失败说明({@link FtshareNotice})只**抄上游事实**:码、HTTP 状态、原文、重试提示。
|
|
13
|
+
* 本包不翻译、不归因、不编造 remedy;是不是配额、要不要升级,由原文与消费方判断。
|
|
12
14
|
* @module @dsh-ft/dsh-fft-ftshare/contract
|
|
13
15
|
*/
|
|
14
16
|
/** 服务在 cordis `Context` 上的名字,也是 `ctx.provide` 的键。 */
|
|
@@ -19,6 +21,9 @@ export const FTSHARE_DATA_SERVICE = 'ftshareData';
|
|
|
19
21
|
* Host/Origin 围栏与浏览器鉴权由载体负责。
|
|
20
22
|
*/
|
|
21
23
|
export const FTSHARE_DATA_ROUTE = '/api/ftshare-data';
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
+
/**
|
|
25
|
+
* 用户可升级订阅的页面,{@link FtshareNotice.upgradeUrl} 的默认值(仅 `denied` 带)。
|
|
26
|
+
* `utm_source=dsh-fft` 与申请页同口径:站点据此把「从插件来的购买」和自然流量分开。
|
|
27
|
+
*/
|
|
28
|
+
export const FTSHARE_UPGRADE_URL = 'https://ftai.chat/me/profile?tab=subscription&utm_source=dsh-fft';
|
|
24
29
|
//# sourceMappingURL=contract.js.map
|
package/lib/contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,qDAAqD;AACrD,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAsB,CAAA;AAE1D;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAA4B,CAAA;AAE9D;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,kEAA2E,CAAA"}
|
package/lib/errors.d.ts
CHANGED
|
@@ -1,93 +1,87 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* 加一个四态结局。
|
|
2
|
+
* 上游失败的观测与四态归一的**薄**层。
|
|
4
3
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* 只做四件事:抄事实、判 HTTP 语义、留现场、算指纹。**不解释上游**:不维护错误码表,
|
|
5
|
+
* 不按中文文案猜「配额/权限/凭据」,不编造 remedy。上游改名、改文案、加码,这里一行
|
|
6
|
+
* 都不用改。
|
|
7
|
+
*
|
|
8
|
+
* 判定只剩两条 HTTP 语义(稳定、不会随上游文案变):
|
|
9
|
+
*
|
|
10
|
+
* - `401` / `403` → `denied`(面板遮罩要用);
|
|
11
|
+
* - 其余 → `failed`。
|
|
12
|
+
*
|
|
13
|
+
* `empty` 不在这里判定:它由成功载荷的**正向证据**决定(见 `./index.ts` 的
|
|
14
|
+
* `observePayload`)。「成功信封里带权限标记」是载荷事实,由
|
|
15
|
+
* {@link permissionNoticeFromPayload} 识别,同样不是文案猜测。
|
|
10
16
|
* @module @dsh-ft/dsh-fft-ftshare/errors
|
|
11
17
|
*/
|
|
12
18
|
import { type FtshareNotice } from './contract.js';
|
|
13
|
-
/**
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
/** 失败从哪条通道来:成功信封内、HTTP 非 2xx、传输层、纯文本。 */
|
|
20
|
+
export type FailureSurface = 'envelope' | 'http' | 'transport' | 'text';
|
|
21
|
+
/** 一次失败的观测事实。只记事实,不下结论。 */
|
|
22
|
+
export interface UpstreamFailure {
|
|
23
|
+
/** 观测通道。 */
|
|
24
|
+
surface: FailureSurface;
|
|
25
|
+
/** 剥掉 SDK 包装后的可读文本;单行。 */
|
|
18
26
|
message: string;
|
|
27
|
+
/** 上游信封里的码,原样大小写;不猜、不改写。 */
|
|
28
|
+
code?: string;
|
|
29
|
+
/** HTTP 状态:`Error.code`、信封 `upstream_code`,或文本里有分界的写法。 */
|
|
30
|
+
status?: number;
|
|
31
|
+
/** 上游自己的 retryable hint;只有信封里有,只作提示。 */
|
|
32
|
+
retryable?: boolean;
|
|
33
|
+
/** 上游真给了才带上。 */
|
|
19
34
|
requiredPlan?: string;
|
|
35
|
+
/** 原始报文(未截断),用于指纹与 fixture 草稿。 */
|
|
36
|
+
raw: string;
|
|
37
|
+
/** 稳定短指纹,见 {@link fingerprintOf}。 */
|
|
38
|
+
fingerprint: string;
|
|
20
39
|
}
|
|
21
|
-
/** 配额用尽时附在失败提示后的文案。 */
|
|
22
|
-
export declare const FTSHARE_QUOTA_NOTICE = "\u514D\u8D39\u914D\u989D\u7528\u5C3D\uFF0C\u914D\u7F6E FTShare API Key \u6216\u7A0D\u540E\u91CD\u8BD5";
|
|
23
|
-
/**
|
|
24
|
-
* 一个码或一句话是否表达「额度用尽」。
|
|
25
|
-
* @param code - 归一后的上游错误码。
|
|
26
|
-
* @param upstreamCode - 信封里的上游 HTTP 状态码,可能没有。
|
|
27
|
-
* @param message - 上游说明。
|
|
28
|
-
* @returns 是否属于额度用尽。
|
|
29
|
-
*/
|
|
30
|
-
export declare function isQuotaSignal(code: string | undefined, upstreamCode: string | undefined, message: string): boolean;
|
|
31
40
|
/** 判断一个值是不是可当对象读的记录。 */
|
|
32
41
|
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
33
42
|
/** 读一个非空字符串;其余一律 undefined。 */
|
|
34
43
|
export declare function asText(value: unknown): string | undefined;
|
|
44
|
+
/** 不依赖 `node:crypto` 的稳定指纹:FNV-1a 64 位,十六进制 16 位。 */
|
|
45
|
+
export declare function hashText(text: string): string;
|
|
35
46
|
/**
|
|
36
|
-
*
|
|
37
|
-
* @param code - 上游错误码,可能没有。
|
|
38
|
-
* @param message - 上游错误文案,可能为空串。
|
|
39
|
-
* @returns 是否属于权限失败。
|
|
40
|
-
*/
|
|
41
|
-
export declare function isPermissionSignal(code: string | undefined, message: string): boolean;
|
|
42
|
-
/**
|
|
43
|
-
* 一个码是否值得原样重试。
|
|
44
|
-
* @param code - 归一后的上游错误码。
|
|
45
|
-
* @param message - 上游说明。
|
|
46
|
-
* @param upstreamCode - 信封里的上游 HTTP 状态码:`UPSTREAM_UNAVAILABLE` 包裹的 502/504 仍可重试。
|
|
47
|
-
*/
|
|
48
|
-
export declare function isRetryableSignal(code: string | undefined, message: string, upstreamCode?: string): boolean;
|
|
49
|
-
/**
|
|
50
|
-
* 从 MCP 客户端抛出的错误(其 message 常是被字符串化的一段上游 JSON)里抽出码与说明。
|
|
47
|
+
* 失败指纹:同工具、同状态、同码、同归一文案的失败聚合用。
|
|
51
48
|
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
* @param
|
|
55
|
-
* @
|
|
49
|
+
* 文案里的数字会归一成 `#`,否则「请等待 N 小时」会让每次失败都算新指纹。
|
|
50
|
+
* @param status - HTTP 状态。
|
|
51
|
+
* @param code - 上游码。
|
|
52
|
+
* @param message - 可读文案。
|
|
53
|
+
* @returns 16 位十六进制指纹。
|
|
56
54
|
*/
|
|
57
|
-
export declare function
|
|
55
|
+
export declare function fingerprintOf(status: number | undefined, code: string | undefined, message: string): string;
|
|
58
56
|
/**
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* 档位只在上游自己给了 `required_plan` 时才写进提示:接口名里的版本号与订阅档位
|
|
63
|
-
* 没有可复核的对应关系,按它猜一个档位会把用户引向错误的套餐。
|
|
64
|
-
* @param tool - 上游工具名。
|
|
65
|
-
* @param code - 上游错误码,缺省按 `route_not_allowed` 记。
|
|
66
|
-
* @param message - 上游说明。
|
|
67
|
-
* @param requiredPlan - 上游信封里给出的所需档位;没给就不猜。
|
|
68
|
-
* @returns 可直接展示的提示。
|
|
57
|
+
* 把一次抛出物归一成 {@link UpstreamFailure}(只记事实)。
|
|
58
|
+
* @param value - 抛出物或上游返回的文本。
|
|
59
|
+
* @returns 观测事实。
|
|
69
60
|
*/
|
|
70
|
-
export declare function
|
|
61
|
+
export declare function observeFailure(value: unknown): UpstreamFailure;
|
|
71
62
|
/**
|
|
72
63
|
* 把一次失败折成结局与提示。
|
|
64
|
+
*
|
|
65
|
+
* 顺序即语义:`401/403` 是上游拒绝 → `denied`;其余一律 `failed`。不再按文案细分
|
|
66
|
+
* 配额/凭据/档位——原文已经带出这些信息。
|
|
73
67
|
* @param error - 抛出物。
|
|
74
|
-
* @param tool -
|
|
75
|
-
* @returns
|
|
68
|
+
* @param tool - 上游工具名(只用于调用方日志,不写进提示)。
|
|
69
|
+
* @returns 结局与可直接展示的提示。
|
|
76
70
|
*/
|
|
77
71
|
export declare function classifyFailure(error: unknown, tool: string): {
|
|
78
72
|
state: 'denied' | 'failed';
|
|
79
73
|
notice: FtshareNotice;
|
|
74
|
+
failure: UpstreamFailure;
|
|
80
75
|
};
|
|
81
76
|
/**
|
|
82
77
|
* 从「调用成功但信封说自己无权」的载荷里读出权限提示。
|
|
83
78
|
*
|
|
84
|
-
* 部分网关把订阅门禁放在成功信封的 `metadata.permissions`
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
* @param tool -
|
|
79
|
+
* 部分网关把订阅门禁放在成功信封的 `metadata.permissions` 或 `permission` 里,而不是
|
|
80
|
+
* 返回错误;只看空数组就会把这种情况读成「没有数据」。这里只认**显式标记**(
|
|
81
|
+
* `access_denied` 之类布尔标记)或 `401/403` 状态码,不按文案猜。
|
|
82
|
+
* @param tool - 上游工具名(只用于调用方日志,不写进提示)。
|
|
88
83
|
* @param value - 上游返回的结构化载荷。
|
|
89
84
|
* @returns 权限提示;没有标记时 undefined。
|
|
90
85
|
*/
|
|
91
86
|
export declare function permissionNoticeFromPayload(tool: string, value: unknown): FtshareNotice | undefined;
|
|
92
|
-
export {};
|
|
93
87
|
//# sourceMappingURL=errors.d.ts.map
|
package/lib/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAuB,KAAK,aAAa,EAAwB,MAAM,eAAe,CAAA;AAE7F,yCAAyC;AACzC,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAA;AAEvE,2BAA2B;AAC3B,MAAM,WAAW,eAAe;IAC9B,YAAY;IACZ,OAAO,EAAE,cAAc,CAAA;IACvB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wCAAwC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,gBAAgB;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kCAAkC;IAClC,GAAG,EAAE,MAAM,CAAA;IACX,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAA;CACpB;AAoBD,wBAAwB;AACxB,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED,+BAA+B;AAC/B,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAEzD;AAaD,qDAAqD;AACrD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO7C;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAG3G;AA8DD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CA+B9D;AAiBD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CA6B7I;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CA+BnG"}
|