@sema-agent/sdk 24.0.0 → 26.0.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/README.md +243 -6
- package/dist/client.d.ts +6 -5
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +8 -6
- package/dist/client.js.map +1 -1
- package/dist/device/index.d.ts +76 -12
- package/dist/device/index.d.ts.map +1 -1
- package/dist/device/index.js +90 -33
- package/dist/device/index.js.map +1 -1
- package/dist/errors.d.ts +162 -30
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +71 -35
- package/dist/errors.js.map +1 -1
- package/dist/events.d.ts +53 -13
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +3 -2
- package/dist/events.js.map +1 -1
- package/dist/health.d.ts +25 -0
- package/dist/health.d.ts.map +1 -1
- package/dist/health.js.map +1 -1
- package/dist/index.d.ts +44 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -6
- package/dist/index.js.map +1 -1
- package/dist/model-route-env/index.d.ts +129 -0
- package/dist/model-route-env/index.d.ts.map +1 -0
- package/dist/model-route-env/index.js +131 -0
- package/dist/model-route-env/index.js.map +1 -0
- package/dist/resources/adoption.d.ts +8 -2
- package/dist/resources/adoption.d.ts.map +1 -1
- package/dist/resources/adoption.js.map +1 -1
- package/dist/resources/approvals.d.ts +38 -4
- package/dist/resources/approvals.d.ts.map +1 -1
- package/dist/resources/approvals.js +19 -4
- package/dist/resources/approvals.js.map +1 -1
- package/dist/resources/fleet.d.ts +73 -18
- package/dist/resources/fleet.d.ts.map +1 -1
- package/dist/resources/fleet.js.map +1 -1
- package/dist/resources/ops.d.ts +113 -0
- package/dist/resources/ops.d.ts.map +1 -1
- package/dist/resources/ops.js +10 -0
- package/dist/resources/ops.js.map +1 -1
- package/dist/resources/principal-inbox.d.ts +62 -0
- package/dist/resources/principal-inbox.d.ts.map +1 -0
- package/dist/resources/principal-inbox.js +51 -0
- package/dist/resources/principal-inbox.js.map +1 -0
- package/dist/resources/rules.d.ts +2 -5
- package/dist/resources/rules.d.ts.map +1 -1
- package/dist/resources/rules.js.map +1 -1
- package/dist/resources/session-sync.d.ts +27 -32
- package/dist/resources/session-sync.d.ts.map +1 -1
- package/dist/resources/session-sync.js +25 -39
- package/dist/resources/session-sync.js.map +1 -1
- package/dist/resources/tool-approvals.d.ts +251 -115
- package/dist/resources/tool-approvals.d.ts.map +1 -1
- package/dist/resources/tool-approvals.js +222 -69
- package/dist/resources/tool-approvals.js.map +1 -1
- package/dist/settings.d.ts +83 -1
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +0 -24
- package/dist/settings.js.map +1 -1
- package/dist/sse.d.ts +5 -1
- package/dist/sse.d.ts.map +1 -1
- package/dist/sse.js +6 -2
- package/dist/sse.js.map +1 -1
- package/dist/sync.d.ts +5 -5
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +13 -55
- package/dist/sync.js.map +1 -1
- package/dist/transport.d.ts +2 -0
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +3 -0
- package/dist/transport.js.map +1 -1
- package/dist/types.d.ts +298 -123
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +10 -3
- package/dist/types.js.map +1 -1
- package/openapi.yaml +1014 -572
- package/package.json +6 -2
- package/dist/resources/workspace.d.ts +0 -95
- package/dist/resources/workspace.d.ts.map +0 -1
- package/dist/resources/workspace.js +0 -60
- package/dist/resources/workspace.js.map +0 -1
package/dist/device/index.d.ts
CHANGED
|
@@ -35,9 +35,11 @@
|
|
|
35
35
|
*
|
|
36
36
|
* ══ 三行上手(executor 实现者视角)═════════════════════════════════════════════════════════════
|
|
37
37
|
* ```ts
|
|
38
|
-
* import { buildHelloSignaturePayload, DEVICE_WS_PATH } from "@sema-agent/sdk/device";
|
|
38
|
+
* import { buildHelloSignaturePayload, DEVICE_PROTOCOL_VERSION, DEVICE_WS_PATH } from "@sema-agent/sdk/device";
|
|
39
39
|
* import { sign } from "node:crypto";
|
|
40
|
-
*
|
|
40
|
+
* // 声明的修订号 = 自己实现的最高号与 challenge 帧所带号的较小者(对 7.132.x 及更老的 server 声明 2 会被拒):
|
|
41
|
+
* const protocolVersion = Math.min(DEVICE_PROTOCOL_VERSION, challenge.protocolVersion);
|
|
42
|
+
* const signatureB64 = sign(null, buildHelloSignaturePayload({ nonce, deviceId, epoch, protocolVersion }), privateKey).toString("base64");
|
|
41
43
|
* ```
|
|
42
44
|
*
|
|
43
45
|
* 协议的**散文**真源 = server 仓 `docs/DEVICE-EXECUTOR-PROTOCOL.md`(§1.3 = 签名字节 + 固定向量 +
|
|
@@ -47,8 +49,18 @@
|
|
|
47
49
|
* 🔴 刻意**不**硬编码在 executor 里:它也从 `capabilities.deviceExecutor.wsPath` 上 wire,那一位才是
|
|
48
50
|
* 「这台 server 的路径」的活答案;本常量是本镜像所锚的那一版的值。 */
|
|
49
51
|
export declare const DEVICE_WS_PATH = "/v1/device/ws";
|
|
50
|
-
/**
|
|
51
|
-
|
|
52
|
+
/**
|
|
53
|
+
* server 铸/认的协议**修订号**(wire 上的 `protocolVersion`;server ≥7.133.0 = 2,7.132.x 及以前 = 1)。
|
|
54
|
+
*
|
|
55
|
+
* 规则(§5.6):加帧 / 加字段 = additive 不升号;改语义 = 升号;**executor → server 方向的闭集加词也升号** —— 修订号是 executor 在发 hello 之前
|
|
56
|
+
* 唯一能读到的「这台 server 受理什么」的事实(challenge 帧带它),所以 server 受理的词集必须是修订号的函数
|
|
57
|
+
* ({@link DEVICE_OUTCOME_ERROR_CODES_BY_REVISION}),不另发第二份列表。
|
|
58
|
+
*
|
|
59
|
+
* 🔴 **executor 声明哪个号**:取「自己实现的最高修订号」与「`challenge.protocolVersion`」的**较小者** —— 本常量是本镜像所锚那一版 server 的号,
|
|
60
|
+
* 不是 executor 该无条件写进 hello 的值:对 7.132.x 及更老的 server(窗 `[1,1]`)直接声明 2 会被 `protocol_version_unsupported` 响亮拒。
|
|
61
|
+
* 声明的号还决定能发哪些结局码:见 {@link deviceOutcomeErrorCodesAt}。
|
|
62
|
+
*/
|
|
63
|
+
export declare const DEVICE_PROTOCOL_VERSION: DeviceProtocolRevision;
|
|
52
64
|
/** 低于此版本 ⇒ `helloReject: protocol_version_unsupported`(响亮拒,不静默降级)。 */
|
|
53
65
|
export declare const DEVICE_MIN_PROTOCOL_VERSION = 1;
|
|
54
66
|
/** 握手签名的 domain tag —— 换域即换 tag,防止别处的 Ed25519 签名被拿来当握手用。 */
|
|
@@ -101,16 +113,27 @@ export type DeviceCancelState = (typeof DEVICE_CANCEL_STATES)[number];
|
|
|
101
113
|
export declare const DEVICE_INSTRUCTION_KINDS: readonly ["exec", "execStream", "readTextFile", "readTextLines", "readBinaryFile", "writeFile", "writeFileExclusive", "writeFileGuarded", "appendFile", "fileInfo", "listDir", "canonicalPath", "exists", "readLink", "createDir", "remove", "createTempDir", "createTempFile", "statBatch"];
|
|
102
114
|
export type DeviceInstructionKind = (typeof DEVICE_INSTRUCTION_KINDS)[number];
|
|
103
115
|
/**
|
|
104
|
-
* 结果帧的错误码闭集 = core 的 `FileErrorCode ∪ ExecutionErrorCode`(§5.1「error code
|
|
105
|
-
*
|
|
116
|
+
* 结果帧的错误码闭集 = core 的 `FileErrorCode ∪ ExecutionErrorCode`(§5.1「error code 全闭集」:未知值在 server 侧映射为协议错误而非透传 string)——
|
|
117
|
+
* **按修订号分行的增量表,是这个闭集唯一的一份来源**:修订号 N 的词集 = 行 ≤ N 的并({@link deviceOutcomeErrorCodesAt}),
|
|
118
|
+
* {@link DEVICE_OUTCOME_ERROR_CODES} 是当前修订号的那一份(派生)。已发布修订号的行不许改;加词 = server 抬修订号 + 加一行。
|
|
106
119
|
*
|
|
107
|
-
* ⚠️ 镜像与 server 的**一处形差,刻意如此**:server 侧这张表带
|
|
108
|
-
*
|
|
109
|
-
|
|
110
|
-
|
|
120
|
+
* ⚠️ 镜像与 server 的**一处形差,刻意如此**:server 侧这张表带 `satisfies readonly (FileErrorCode | ExecutionErrorCode)[]`,拿 core 的型当编译期对账的另一半。
|
|
121
|
+
* 本包零运行时依赖、也不 devDep core,所以这里**没有**那一半 —— 它由锚门格②(逐成员深等)从 server 发布字节那边看住。别在这里补一个「差不多」的本地联合:那会变成第二个判据。
|
|
122
|
+
*/
|
|
123
|
+
export declare const DEVICE_OUTCOME_ERROR_CODES_BY_REVISION: {
|
|
124
|
+
readonly 1: readonly ["aborted", "already_exists", "auth_failed", "callback_error", "invalid", "is_directory", "not_directory", "not_found", "not_supported", "outcome_unknown", "permission_denied", "precondition_failed", "shell_unavailable", "spawn_error", "suspended", "target_unavailable", "timeout", "transport_lost", "unknown"];
|
|
125
|
+
readonly 2: readonly ["liveness_no_output"];
|
|
126
|
+
};
|
|
127
|
+
/** 本包认得的协议修订号(= 增量表的行键)。 */
|
|
128
|
+
export type DeviceProtocolRevision = keyof typeof DEVICE_OUTCOME_ERROR_CODES_BY_REVISION;
|
|
129
|
+
export type DeviceOutcomeErrorCode = (typeof DEVICE_OUTCOME_ERROR_CODES_BY_REVISION)[DeviceProtocolRevision][number];
|
|
130
|
+
/**
|
|
131
|
+
* 协议修订号 `revision` 受理的结局码全集(行 ≤ revision 的并,字典序)。executor 按**自己声明的修订号**取这一份来裁剪自己会发的词。
|
|
132
|
+
* 不是本包认得的修订号 ⇒ 抛 `RangeError`(不静默给空集或全集)。
|
|
111
133
|
*/
|
|
112
|
-
export declare
|
|
113
|
-
|
|
134
|
+
export declare function deviceOutcomeErrorCodesAt(revision: number): readonly DeviceOutcomeErrorCode[];
|
|
135
|
+
/** 当前修订号受理的结局码全集(派生自增量表;server 解析 `result` 帧时判的就是它)。 */
|
|
136
|
+
export declare const DEVICE_OUTCOME_ERROR_CODES: readonly DeviceOutcomeErrorCode[];
|
|
114
137
|
/** 设备文件面的 wire 投影(云侧 adapter 负责映射到 core `FileInfo`;协议层只冻结形)。 */
|
|
115
138
|
export interface WireFileInfo {
|
|
116
139
|
path: string;
|
|
@@ -252,6 +275,7 @@ export type DeviceChallengeFrame = {
|
|
|
252
275
|
export type DeviceHelloAckFrame = {
|
|
253
276
|
t: "helloAck";
|
|
254
277
|
ok: true;
|
|
278
|
+
/** 六个数值位(本位与 `maxInflight` 与下面四个宽限位)的合法域见 {@link DEVICE_HELLO_ACK_BOUNDS};server 起服校验,wire 上恒在界。 */
|
|
255
279
|
heartbeatIntervalMs: number;
|
|
256
280
|
maxInflight: number;
|
|
257
281
|
/** ⚠️ canonical 十进制**字符串**(SQL BIGINT 超 2^53,wire 不声明装不下 SQL 类型的字段)。 */
|
|
@@ -278,6 +302,46 @@ export type DeviceHelloRejectFrame = {
|
|
|
278
302
|
code: DeviceHelloRejectCode;
|
|
279
303
|
minProtocolVersion?: number;
|
|
280
304
|
};
|
|
305
|
+
/**
|
|
306
|
+
* helloAck 六个数值位的**合法域**(闭区间、整数)—— 一处成文:server 创建汇聚端时按它校验(越界 ⇒ 响亮拒启,不夹取、不换成缺省)。
|
|
307
|
+
* 所以 **wire 上恒在界**:executor 读到越界值 ⇒ 当协议违例关连接(与 `bad_shape` 同形),**不**读成缺省。
|
|
308
|
+
*
|
|
309
|
+
* · ms 位下界 `0` = 该计时器不留宽限(立即到点)—— 真含义,放行;`heartbeatIntervalMs` 下界 `1`(`0` 的心跳周期无法执行,且汇聚端据它判 STALE);
|
|
310
|
+
* · ms 位上界 = 2147483647(汇聚端自己拿这些值武装 `setTimeout`,更大的值被折成 1 ms —— 宽限被静默抹掉);
|
|
311
|
+
* · `maxInflight` 下界 `1`(`0` ⇒ 每次派发都 `device.busy`),无上界(安全整数内)。
|
|
312
|
+
*/
|
|
313
|
+
export declare const DEVICE_HELLO_ACK_BOUNDS: {
|
|
314
|
+
readonly heartbeatIntervalMs: {
|
|
315
|
+
readonly min: 1;
|
|
316
|
+
readonly max: 2147483647;
|
|
317
|
+
};
|
|
318
|
+
readonly maxInflight: {
|
|
319
|
+
readonly min: 1;
|
|
320
|
+
readonly max: number;
|
|
321
|
+
};
|
|
322
|
+
readonly reconnectGraceMs: {
|
|
323
|
+
readonly min: 0;
|
|
324
|
+
readonly max: 2147483647;
|
|
325
|
+
};
|
|
326
|
+
readonly cancelGraceMs: {
|
|
327
|
+
readonly min: 0;
|
|
328
|
+
readonly max: 2147483647;
|
|
329
|
+
};
|
|
330
|
+
readonly chunkGapTimeoutMs: {
|
|
331
|
+
readonly min: 0;
|
|
332
|
+
readonly max: 2147483647;
|
|
333
|
+
};
|
|
334
|
+
readonly executionCeilingGraceMs: {
|
|
335
|
+
readonly min: 0;
|
|
336
|
+
readonly max: 2147483647;
|
|
337
|
+
};
|
|
338
|
+
};
|
|
339
|
+
export type DeviceHelloAckNumericField = keyof typeof DEVICE_HELLO_ACK_BOUNDS;
|
|
340
|
+
/**
|
|
341
|
+
* helloAck 某数值位的值是否在界:在界 ⇒ `null`;越界(含非数 / NaN / 小数)⇒ 一句话(`must be an integer in [0, 2147483647]`)。
|
|
342
|
+
* executor 收到 helloAck 后用它判(越界 ⇒ 协议违例)。值不是数时同样越界(`unknown` 入参:直接喂 `JSON.parse` 的字段)。
|
|
343
|
+
*/
|
|
344
|
+
export declare function deviceHelloAckNumberFlaw(field: DeviceHelloAckNumericField, value: unknown): string | null;
|
|
281
345
|
export type DeviceInstructionFrame = {
|
|
282
346
|
[K in DeviceInstructionKind]: {
|
|
283
347
|
t: "instruction";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/device/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/device/index.ts"],"names":[],"mappings":"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"}
|
package/dist/device/index.js
CHANGED
|
@@ -35,9 +35,11 @@
|
|
|
35
35
|
*
|
|
36
36
|
* ══ 三行上手(executor 实现者视角)═════════════════════════════════════════════════════════════
|
|
37
37
|
* ```ts
|
|
38
|
-
* import { buildHelloSignaturePayload, DEVICE_WS_PATH } from "@sema-agent/sdk/device";
|
|
38
|
+
* import { buildHelloSignaturePayload, DEVICE_PROTOCOL_VERSION, DEVICE_WS_PATH } from "@sema-agent/sdk/device";
|
|
39
39
|
* import { sign } from "node:crypto";
|
|
40
|
-
*
|
|
40
|
+
* // 声明的修订号 = 自己实现的最高号与 challenge 帧所带号的较小者(对 7.132.x 及更老的 server 声明 2 会被拒):
|
|
41
|
+
* const protocolVersion = Math.min(DEVICE_PROTOCOL_VERSION, challenge.protocolVersion);
|
|
42
|
+
* const signatureB64 = sign(null, buildHelloSignaturePayload({ nonce, deviceId, epoch, protocolVersion }), privateKey).toString("base64");
|
|
41
43
|
* ```
|
|
42
44
|
*
|
|
43
45
|
* 协议的**散文**真源 = server 仓 `docs/DEVICE-EXECUTOR-PROTOCOL.md`(§1.3 = 签名字节 + 固定向量 +
|
|
@@ -50,8 +52,18 @@
|
|
|
50
52
|
* 🔴 刻意**不**硬编码在 executor 里:它也从 `capabilities.deviceExecutor.wsPath` 上 wire,那一位才是
|
|
51
53
|
* 「这台 server 的路径」的活答案;本常量是本镜像所锚的那一版的值。 */
|
|
52
54
|
export const DEVICE_WS_PATH = "/v1/device/ws";
|
|
53
|
-
/**
|
|
54
|
-
|
|
55
|
+
/**
|
|
56
|
+
* server 铸/认的协议**修订号**(wire 上的 `protocolVersion`;server ≥7.133.0 = 2,7.132.x 及以前 = 1)。
|
|
57
|
+
*
|
|
58
|
+
* 规则(§5.6):加帧 / 加字段 = additive 不升号;改语义 = 升号;**executor → server 方向的闭集加词也升号** —— 修订号是 executor 在发 hello 之前
|
|
59
|
+
* 唯一能读到的「这台 server 受理什么」的事实(challenge 帧带它),所以 server 受理的词集必须是修订号的函数
|
|
60
|
+
* ({@link DEVICE_OUTCOME_ERROR_CODES_BY_REVISION}),不另发第二份列表。
|
|
61
|
+
*
|
|
62
|
+
* 🔴 **executor 声明哪个号**:取「自己实现的最高修订号」与「`challenge.protocolVersion`」的**较小者** —— 本常量是本镜像所锚那一版 server 的号,
|
|
63
|
+
* 不是 executor 该无条件写进 hello 的值:对 7.132.x 及更老的 server(窗 `[1,1]`)直接声明 2 会被 `protocol_version_unsupported` 响亮拒。
|
|
64
|
+
* 声明的号还决定能发哪些结局码:见 {@link deviceOutcomeErrorCodesAt}。
|
|
65
|
+
*/
|
|
66
|
+
export const DEVICE_PROTOCOL_VERSION = 2;
|
|
55
67
|
/** 低于此版本 ⇒ `helloReject: protocol_version_unsupported`(响亮拒,不静默降级)。 */
|
|
56
68
|
export const DEVICE_MIN_PROTOCOL_VERSION = 1;
|
|
57
69
|
/** 握手签名的 domain tag —— 换域即换 tag,防止别处的 Ed25519 签名被拿来当握手用。 */
|
|
@@ -119,37 +131,82 @@ export const DEVICE_INSTRUCTION_KINDS = [
|
|
|
119
131
|
"statBatch",
|
|
120
132
|
];
|
|
121
133
|
/**
|
|
122
|
-
* 结果帧的错误码闭集 = core 的 `FileErrorCode ∪ ExecutionErrorCode`(§5.1「error code
|
|
123
|
-
*
|
|
134
|
+
* 结果帧的错误码闭集 = core 的 `FileErrorCode ∪ ExecutionErrorCode`(§5.1「error code 全闭集」:未知值在 server 侧映射为协议错误而非透传 string)——
|
|
135
|
+
* **按修订号分行的增量表,是这个闭集唯一的一份来源**:修订号 N 的词集 = 行 ≤ N 的并({@link deviceOutcomeErrorCodesAt}),
|
|
136
|
+
* {@link DEVICE_OUTCOME_ERROR_CODES} 是当前修订号的那一份(派生)。已发布修订号的行不许改;加词 = server 抬修订号 + 加一行。
|
|
124
137
|
*
|
|
125
|
-
* ⚠️ 镜像与 server 的**一处形差,刻意如此**:server 侧这张表带
|
|
126
|
-
*
|
|
127
|
-
* 本包零运行时依赖、也不 devDep core,所以这里**没有**那一半 —— 它由锚门格②(逐成员深等)从
|
|
128
|
-
* server 发布字节那边看住。别在这里补一个「差不多」的本地联合:那会变成第二个判据。
|
|
138
|
+
* ⚠️ 镜像与 server 的**一处形差,刻意如此**:server 侧这张表带 `satisfies readonly (FileErrorCode | ExecutionErrorCode)[]`,拿 core 的型当编译期对账的另一半。
|
|
139
|
+
* 本包零运行时依赖、也不 devDep core,所以这里**没有**那一半 —— 它由锚门格②(逐成员深等)从 server 发布字节那边看住。别在这里补一个「差不多」的本地联合:那会变成第二个判据。
|
|
129
140
|
*/
|
|
130
|
-
export const
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
141
|
+
export const DEVICE_OUTCOME_ERROR_CODES_BY_REVISION = {
|
|
142
|
+
1: [
|
|
143
|
+
"aborted",
|
|
144
|
+
"already_exists",
|
|
145
|
+
"auth_failed",
|
|
146
|
+
"callback_error",
|
|
147
|
+
"invalid",
|
|
148
|
+
"is_directory",
|
|
149
|
+
"not_directory",
|
|
150
|
+
"not_found",
|
|
151
|
+
"not_supported",
|
|
152
|
+
"outcome_unknown",
|
|
153
|
+
"permission_denied",
|
|
154
|
+
"precondition_failed",
|
|
155
|
+
"shell_unavailable",
|
|
156
|
+
"spawn_error",
|
|
157
|
+
"suspended",
|
|
158
|
+
"target_unavailable",
|
|
159
|
+
"timeout",
|
|
160
|
+
"transport_lost",
|
|
161
|
+
"unknown",
|
|
162
|
+
],
|
|
163
|
+
// server ≥7.132.0(core 7.52.0 #1795)加词、≥7.133.0 补抬到修订号 2:执行流在活性窗内一个字节都没出 = 静默切断,取代此前与墙钟共用的 `timeout`(墙钟仍是 `timeout`)。
|
|
164
|
+
2: ["liveness_no_output"],
|
|
165
|
+
};
|
|
166
|
+
/**
|
|
167
|
+
* 协议修订号 `revision` 受理的结局码全集(行 ≤ revision 的并,字典序)。executor 按**自己声明的修订号**取这一份来裁剪自己会发的词。
|
|
168
|
+
* 不是本包认得的修订号 ⇒ 抛 `RangeError`(不静默给空集或全集)。
|
|
169
|
+
*/
|
|
170
|
+
export function deviceOutcomeErrorCodesAt(revision) {
|
|
171
|
+
if (!Number.isInteger(revision) || revision < 1 || revision > DEVICE_PROTOCOL_VERSION) {
|
|
172
|
+
throw new RangeError(`device-ws: no outcome-code set for protocol revision ${String(revision)} (this package knows revisions 1..${DEVICE_PROTOCOL_VERSION})`);
|
|
173
|
+
}
|
|
174
|
+
const out = [];
|
|
175
|
+
for (const [rev, codes] of Object.entries(DEVICE_OUTCOME_ERROR_CODES_BY_REVISION)) {
|
|
176
|
+
if (Number(rev) <= revision)
|
|
177
|
+
out.push(...codes);
|
|
178
|
+
}
|
|
179
|
+
return out.sort();
|
|
180
|
+
}
|
|
181
|
+
/** 当前修订号受理的结局码全集(派生自增量表;server 解析 `result` 帧时判的就是它)。 */
|
|
182
|
+
export const DEVICE_OUTCOME_ERROR_CODES = deviceOutcomeErrorCodesAt(DEVICE_PROTOCOL_VERSION);
|
|
183
|
+
/**
|
|
184
|
+
* helloAck 六个数值位的**合法域**(闭区间、整数)—— 一处成文:server 创建汇聚端时按它校验(越界 ⇒ 响亮拒启,不夹取、不换成缺省)。
|
|
185
|
+
* 所以 **wire 上恒在界**:executor 读到越界值 ⇒ 当协议违例关连接(与 `bad_shape` 同形),**不**读成缺省。
|
|
186
|
+
*
|
|
187
|
+
* · ms 位下界 `0` = 该计时器不留宽限(立即到点)—— 真含义,放行;`heartbeatIntervalMs` 下界 `1`(`0` 的心跳周期无法执行,且汇聚端据它判 STALE);
|
|
188
|
+
* · ms 位上界 = 2147483647(汇聚端自己拿这些值武装 `setTimeout`,更大的值被折成 1 ms —— 宽限被静默抹掉);
|
|
189
|
+
* · `maxInflight` 下界 `1`(`0` ⇒ 每次派发都 `device.busy`),无上界(安全整数内)。
|
|
190
|
+
*/
|
|
191
|
+
export const DEVICE_HELLO_ACK_BOUNDS = {
|
|
192
|
+
heartbeatIntervalMs: { min: 1, max: 2_147_483_647 },
|
|
193
|
+
maxInflight: { min: 1, max: Number.MAX_SAFE_INTEGER },
|
|
194
|
+
reconnectGraceMs: { min: 0, max: 2_147_483_647 },
|
|
195
|
+
cancelGraceMs: { min: 0, max: 2_147_483_647 },
|
|
196
|
+
chunkGapTimeoutMs: { min: 0, max: 2_147_483_647 },
|
|
197
|
+
executionCeilingGraceMs: { min: 0, max: 2_147_483_647 },
|
|
198
|
+
};
|
|
199
|
+
/**
|
|
200
|
+
* helloAck 某数值位的值是否在界:在界 ⇒ `null`;越界(含非数 / NaN / 小数)⇒ 一句话(`must be an integer in [0, 2147483647]`)。
|
|
201
|
+
* executor 收到 helloAck 后用它判(越界 ⇒ 协议违例)。值不是数时同样越界(`unknown` 入参:直接喂 `JSON.parse` 的字段)。
|
|
202
|
+
*/
|
|
203
|
+
export function deviceHelloAckNumberFlaw(field, value) {
|
|
204
|
+
const bounds = DEVICE_HELLO_ACK_BOUNDS[field];
|
|
205
|
+
const inBounds = typeof value === "number" && Number.isSafeInteger(value) && value >= bounds.min && value <= bounds.max;
|
|
206
|
+
if (inBounds)
|
|
207
|
+
return null;
|
|
208
|
+
return `must be ${bounds.max === Number.MAX_SAFE_INTEGER ? `an integer ≥ ${bounds.min}` : `an integer in [${bounds.min}, ${bounds.max}]`}`;
|
|
209
|
+
}
|
|
153
210
|
// ═════════════════════════════════════════════════════════════════════════════════════════════════
|
|
154
211
|
// 握手签名(编码冻结 —— 本文件里唯一有运行时行为的一段)
|
|
155
212
|
// ═════════════════════════════════════════════════════════════════════════════════════════════════
|
package/dist/device/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/device/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/device/index.ts"],"names":[],"mappings":"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"}
|