@labacacia/nps-sdk 1.0.0-alpha.1 → 1.0.0-alpha.3
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.cn.md +57 -0
- package/CHANGELOG.md +57 -0
- package/CONTRIBUTING.cn.md +35 -0
- package/CONTRIBUTING.md +2 -0
- package/README.cn.md +155 -0
- package/README.md +5 -3
- package/dist/core/anchor-cache.d.ts +0 -0
- package/dist/core/anchor-cache.d.ts.map +0 -0
- package/dist/core/cache.d.ts +0 -0
- package/dist/core/cache.d.ts.map +0 -0
- package/dist/core/canonical-json.d.ts +0 -0
- package/dist/core/canonical-json.d.ts.map +0 -0
- package/dist/core/codec.d.ts +0 -0
- package/dist/core/codec.d.ts.map +0 -0
- package/dist/core/codecs/index.d.ts +0 -0
- package/dist/core/codecs/index.d.ts.map +0 -0
- package/dist/core/codecs/ncp-codec.d.ts +0 -0
- package/dist/core/codecs/ncp-codec.d.ts.map +0 -0
- package/dist/core/codecs/tier1-json-codec.d.ts +0 -0
- package/dist/core/codecs/tier1-json-codec.d.ts.map +0 -0
- package/dist/core/codecs/tier2-msgpack-codec.d.ts +0 -0
- package/dist/core/codecs/tier2-msgpack-codec.d.ts.map +0 -0
- package/dist/core/crypto-provider.d.ts +0 -0
- package/dist/core/crypto-provider.d.ts.map +0 -0
- package/dist/core/exceptions.d.ts +0 -0
- package/dist/core/exceptions.d.ts.map +0 -0
- package/dist/core/frame-header.d.ts +0 -0
- package/dist/core/frame-header.d.ts.map +0 -0
- package/dist/core/frame-registry.d.ts +0 -0
- package/dist/core/frame-registry.d.ts.map +0 -0
- package/dist/core/frames.d.ts +1 -0
- package/dist/core/frames.d.ts.map +1 -1
- package/dist/core/index.cjs +90 -9
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.ts +6 -4
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +405 -9
- package/dist/core/index.js.map +1 -1
- package/dist/core/registry.d.ts +0 -0
- package/dist/core/registry.d.ts.map +0 -0
- package/dist/core/status-codes.d.ts +0 -0
- package/dist/core/status-codes.d.ts.map +0 -0
- package/dist/index.cjs +3 -1551
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -9
- package/dist/index.js.map +1 -1
- package/dist/ncp/frames/anchor-frame.d.ts +0 -0
- package/dist/ncp/frames/anchor-frame.d.ts.map +0 -0
- package/dist/ncp/frames/caps-frame.d.ts +0 -0
- package/dist/ncp/frames/caps-frame.d.ts.map +0 -0
- package/dist/ncp/frames/diff-frame.d.ts +0 -0
- package/dist/ncp/frames/diff-frame.d.ts.map +0 -0
- package/dist/ncp/frames/error-frame.d.ts +0 -0
- package/dist/ncp/frames/error-frame.d.ts.map +0 -0
- package/dist/ncp/frames/hello-frame.d.ts +0 -0
- package/dist/ncp/frames/hello-frame.d.ts.map +0 -0
- package/dist/ncp/frames/stream-frame.d.ts +0 -0
- package/dist/ncp/frames/stream-frame.d.ts.map +0 -0
- package/dist/ncp/frames.d.ts +18 -0
- package/dist/ncp/frames.d.ts.map +1 -1
- package/dist/ncp/handshake.d.ts +0 -0
- package/dist/ncp/handshake.d.ts.map +0 -0
- package/dist/ncp/index.cjs +364 -164
- package/dist/ncp/index.cjs.map +1 -1
- package/dist/ncp/index.d.ts +0 -0
- package/dist/ncp/index.d.ts.map +0 -0
- package/dist/ncp/index.js +368 -12
- package/dist/ncp/index.js.map +1 -1
- package/dist/ncp/ncp-error-codes.d.ts +0 -0
- package/dist/ncp/ncp-error-codes.d.ts.map +0 -0
- package/dist/ncp/ncp-patch-format.d.ts +0 -0
- package/dist/ncp/ncp-patch-format.d.ts.map +0 -0
- package/dist/ncp/registry.d.ts +0 -0
- package/dist/ncp/registry.d.ts.map +1 -1
- package/dist/ncp/stream-manager.d.ts +0 -0
- package/dist/ncp/stream-manager.d.ts.map +0 -0
- package/dist/ndp/frames.d.ts +0 -0
- package/dist/ndp/frames.d.ts.map +0 -0
- package/dist/ndp/index.cjs +0 -0
- package/dist/ndp/index.cjs.map +0 -0
- package/dist/ndp/index.d.ts +0 -0
- package/dist/ndp/index.d.ts.map +0 -0
- package/dist/ndp/index.js +223 -6
- package/dist/ndp/index.js.map +1 -1
- package/dist/ndp/ndp-registry.d.ts +0 -0
- package/dist/ndp/ndp-registry.d.ts.map +0 -0
- package/dist/ndp/registry.d.ts +0 -0
- package/dist/ndp/registry.d.ts.map +0 -0
- package/dist/ndp/validator.d.ts +0 -0
- package/dist/ndp/validator.d.ts.map +0 -0
- package/dist/nip/frames.d.ts +0 -0
- package/dist/nip/frames.d.ts.map +0 -0
- package/dist/nip/identity.d.ts +0 -0
- package/dist/nip/identity.d.ts.map +0 -0
- package/dist/nip/index.cjs +0 -0
- package/dist/nip/index.cjs.map +0 -0
- package/dist/nip/index.d.ts +0 -0
- package/dist/nip/index.d.ts.map +0 -0
- package/dist/nip/index.js +187 -5
- package/dist/nip/index.js.map +1 -1
- package/dist/nip/registry.d.ts +0 -0
- package/dist/nip/registry.d.ts.map +0 -0
- package/dist/nop/client.d.ts +0 -0
- package/dist/nop/client.d.ts.map +0 -0
- package/dist/nop/frames.d.ts +0 -0
- package/dist/nop/frames.d.ts.map +0 -0
- package/dist/nop/index.cjs +62 -1
- package/dist/nop/index.cjs.map +1 -1
- package/dist/nop/index.d.ts +0 -0
- package/dist/nop/index.d.ts.map +0 -0
- package/dist/nop/index.js +789 -6
- package/dist/nop/index.js.map +1 -1
- package/dist/nop/models.d.ts +0 -0
- package/dist/nop/models.d.ts.map +0 -0
- package/dist/nop/nop-types.d.ts +0 -0
- package/dist/nop/nop-types.d.ts.map +0 -0
- package/dist/nop/registry.d.ts +0 -0
- package/dist/nop/registry.d.ts.map +0 -0
- package/dist/nwp/client.d.ts +0 -0
- package/dist/nwp/client.d.ts.map +0 -0
- package/dist/nwp/frames.d.ts +0 -0
- package/dist/nwp/frames.d.ts.map +0 -0
- package/dist/nwp/index.cjs +64 -2
- package/dist/nwp/index.cjs.map +1 -1
- package/dist/nwp/index.d.ts +0 -0
- package/dist/nwp/index.d.ts.map +0 -0
- package/dist/nwp/index.js +693 -5
- package/dist/nwp/index.js.map +1 -1
- package/dist/nwp/registry.d.ts +0 -0
- package/dist/nwp/registry.d.ts.map +0 -0
- package/dist/setup.d.ts +0 -0
- package/dist/setup.d.ts.map +0 -0
- package/doc/nps-sdk.core.cn.md +321 -0
- package/doc/nps-sdk.core.md +326 -0
- package/doc/nps-sdk.ncp.cn.md +270 -0
- package/doc/nps-sdk.ncp.md +276 -0
- package/doc/nps-sdk.ndp.cn.md +267 -0
- package/doc/nps-sdk.ndp.md +273 -0
- package/doc/nps-sdk.nip.cn.md +235 -0
- package/doc/nps-sdk.nip.md +242 -0
- package/doc/nps-sdk.nop.cn.md +329 -0
- package/doc/nps-sdk.nop.md +332 -0
- package/doc/nps-sdk.nwp.cn.md +217 -0
- package/doc/nps-sdk.nwp.md +224 -0
- package/doc/overview.cn.md +149 -0
- package/doc/overview.md +153 -0
- package/package.json +21 -4
- package/src/core/frames.ts +1 -0
- package/src/core/index.ts +37 -5
- package/src/index.ts +1 -1
- package/src/ncp/frames.ts +52 -0
- package/src/ncp/registry.ts +2 -1
- package/dist/codec-CmHeovTV.d.cts +0 -120
- package/dist/codec-CmHeovTV.d.ts +0 -120
- package/dist/core/anchor-cache.js +0 -104
- package/dist/core/anchor-cache.js.map +0 -1
- package/dist/core/cache.js +0 -80
- package/dist/core/cache.js.map +0 -1
- package/dist/core/canonical-json.js +0 -44
- package/dist/core/canonical-json.js.map +0 -1
- package/dist/core/codec.js +0 -119
- package/dist/core/codec.js.map +0 -1
- package/dist/core/codecs/index.js +0 -6
- package/dist/core/codecs/index.js.map +0 -1
- package/dist/core/codecs/ncp-codec.js +0 -93
- package/dist/core/codecs/ncp-codec.js.map +0 -1
- package/dist/core/codecs/tier1-json-codec.js +0 -28
- package/dist/core/codecs/tier1-json-codec.js.map +0 -1
- package/dist/core/codecs/tier2-msgpack-codec.js +0 -26
- package/dist/core/codecs/tier2-msgpack-codec.js.map +0 -1
- package/dist/core/crypto-provider.js +0 -10
- package/dist/core/crypto-provider.js.map +0 -1
- package/dist/core/exceptions.js +0 -52
- package/dist/core/exceptions.js.map +0 -1
- package/dist/core/frame-header.js +0 -185
- package/dist/core/frame-header.js.map +0 -1
- package/dist/core/frame-registry.js +0 -63
- package/dist/core/frame-registry.js.map +0 -1
- package/dist/core/frames.js +0 -153
- package/dist/core/frames.js.map +0 -1
- package/dist/core/index.d.cts +0 -41
- package/dist/core/registry.js +0 -17
- package/dist/core/registry.js.map +0 -1
- package/dist/core/status-codes.js +0 -38
- package/dist/core/status-codes.js.map +0 -1
- package/dist/frames-B3qLdl_g.d.cts +0 -77
- package/dist/frames-Ff7-ZPUl.d.ts +0 -77
- package/dist/index.d.cts +0 -21
- package/dist/ncp/frames/anchor-frame.js +0 -54
- package/dist/ncp/frames/anchor-frame.js.map +0 -1
- package/dist/ncp/frames/caps-frame.js +0 -29
- package/dist/ncp/frames/caps-frame.js.map +0 -1
- package/dist/ncp/frames/diff-frame.js +0 -37
- package/dist/ncp/frames/diff-frame.js.map +0 -1
- package/dist/ncp/frames/error-frame.js +0 -13
- package/dist/ncp/frames/error-frame.js.map +0 -1
- package/dist/ncp/frames/hello-frame.js +0 -25
- package/dist/ncp/frames/hello-frame.js.map +0 -1
- package/dist/ncp/frames/stream-frame.js +0 -18
- package/dist/ncp/frames/stream-frame.js.map +0 -1
- package/dist/ncp/frames.js +0 -147
- package/dist/ncp/frames.js.map +0 -1
- package/dist/ncp/handshake.js +0 -80
- package/dist/ncp/handshake.js.map +0 -1
- package/dist/ncp/index.d.cts +0 -6
- package/dist/ncp/ncp-error-codes.js +0 -32
- package/dist/ncp/ncp-error-codes.js.map +0 -1
- package/dist/ncp/ncp-patch-format.js +0 -13
- package/dist/ncp/ncp-patch-format.js.map +0 -1
- package/dist/ncp/registry.js +0 -12
- package/dist/ncp/registry.js.map +0 -1
- package/dist/ncp/stream-manager.js +0 -163
- package/dist/ncp/stream-manager.js.map +0 -1
- package/dist/ndp/frames.js +0 -87
- package/dist/ndp/frames.js.map +0 -1
- package/dist/ndp/index.d.cts +0 -86
- package/dist/ndp/ndp-registry.js +0 -79
- package/dist/ndp/ndp-registry.js.map +0 -1
- package/dist/ndp/registry.js +0 -10
- package/dist/ndp/registry.js.map +0 -1
- package/dist/ndp/validator.js +0 -48
- package/dist/ndp/validator.js.map +0 -1
- package/dist/nip/frames.js +0 -81
- package/dist/nip/frames.js.map +0 -1
- package/dist/nip/identity.js +0 -94
- package/dist/nip/identity.js.map +0 -1
- package/dist/nip/index.d.cts +0 -65
- package/dist/nip/registry.js +0 -10
- package/dist/nip/registry.js.map +0 -1
- package/dist/nop/client.js +0 -90
- package/dist/nop/client.js.map +0 -1
- package/dist/nop/frames.js +0 -148
- package/dist/nop/frames.js.map +0 -1
- package/dist/nop/index.d.cts +0 -155
- package/dist/nop/models.js +0 -50
- package/dist/nop/models.js.map +0 -1
- package/dist/nop/nop-types.js +0 -44
- package/dist/nop/nop-types.js.map +0 -1
- package/dist/nop/registry.js +0 -11
- package/dist/nop/registry.js.map +0 -1
- package/dist/nwp/client.js +0 -101
- package/dist/nwp/client.js.map +0 -1
- package/dist/nwp/frames.js +0 -81
- package/dist/nwp/frames.js.map +0 -1
- package/dist/nwp/index.d.cts +0 -65
- package/dist/nwp/registry.js +0 -9
- package/dist/nwp/registry.js.map +0 -1
- package/dist/setup.js +0 -29
- package/dist/setup.js.map +0 -1
package/dist/core/frames.js
DELETED
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
// Copyright 2026 INNO LOTUS PTY LTD
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
/**
|
|
4
|
-
* NPS wire-level frame primitives: FrameType, FrameFlags, EncodingTier, FrameHeader.
|
|
5
|
-
*/
|
|
6
|
-
import { NpsFrameError } from "./exceptions.js";
|
|
7
|
-
// ── FrameType ────────────────────────────────────────────────────────────────
|
|
8
|
-
/** Unified frame byte namespace for the full NPS suite (NPS-0 §9). */
|
|
9
|
-
export var FrameType;
|
|
10
|
-
(function (FrameType) {
|
|
11
|
-
// NCP 0x01–0x0F
|
|
12
|
-
FrameType[FrameType["ANCHOR"] = 1] = "ANCHOR";
|
|
13
|
-
FrameType[FrameType["DIFF"] = 2] = "DIFF";
|
|
14
|
-
FrameType[FrameType["STREAM"] = 3] = "STREAM";
|
|
15
|
-
FrameType[FrameType["CAPS"] = 4] = "CAPS";
|
|
16
|
-
FrameType[FrameType["ALIGN"] = 5] = "ALIGN";
|
|
17
|
-
// NWP 0x10–0x1F
|
|
18
|
-
FrameType[FrameType["QUERY"] = 16] = "QUERY";
|
|
19
|
-
FrameType[FrameType["ACTION"] = 17] = "ACTION";
|
|
20
|
-
// NIP 0x20–0x2F
|
|
21
|
-
FrameType[FrameType["IDENT"] = 32] = "IDENT";
|
|
22
|
-
FrameType[FrameType["TRUST"] = 33] = "TRUST";
|
|
23
|
-
FrameType[FrameType["REVOKE"] = 34] = "REVOKE";
|
|
24
|
-
// NDP 0x30–0x3F
|
|
25
|
-
FrameType[FrameType["ANNOUNCE"] = 48] = "ANNOUNCE";
|
|
26
|
-
FrameType[FrameType["RESOLVE"] = 49] = "RESOLVE";
|
|
27
|
-
FrameType[FrameType["GRAPH"] = 50] = "GRAPH";
|
|
28
|
-
// NOP 0x40–0x4F
|
|
29
|
-
FrameType[FrameType["TASK"] = 64] = "TASK";
|
|
30
|
-
FrameType[FrameType["DELEGATE"] = 65] = "DELEGATE";
|
|
31
|
-
FrameType[FrameType["SYNC"] = 66] = "SYNC";
|
|
32
|
-
FrameType[FrameType["ALIGN_STREAM"] = 67] = "ALIGN_STREAM";
|
|
33
|
-
// Reserved / System 0xF0–0xFF
|
|
34
|
-
FrameType[FrameType["ERROR"] = 254] = "ERROR";
|
|
35
|
-
})(FrameType || (FrameType = {}));
|
|
36
|
-
// ── EncodingTier ─────────────────────────────────────────────────────────────
|
|
37
|
-
/**
|
|
38
|
-
* Wire encoding tier, stored in the lower 2 bits of the flags byte (NPS-1 §3.2).
|
|
39
|
-
* 0x00 = Tier-1 JSON — human-readable; development / compatibility.
|
|
40
|
-
* 0x01 = Tier-2 MsgPack — binary, ~60 % smaller; production default.
|
|
41
|
-
*/
|
|
42
|
-
export var EncodingTier;
|
|
43
|
-
(function (EncodingTier) {
|
|
44
|
-
EncodingTier[EncodingTier["JSON"] = 0] = "JSON";
|
|
45
|
-
EncodingTier[EncodingTier["MSGPACK"] = 1] = "MSGPACK";
|
|
46
|
-
})(EncodingTier || (EncodingTier = {}));
|
|
47
|
-
// ── FrameFlags ───────────────────────────────────────────────────────────────
|
|
48
|
-
/**
|
|
49
|
-
* Flags byte in the NPS frame header (NPS-1 §3.2).
|
|
50
|
-
* Bit layout (LSB = bit 0):
|
|
51
|
-
* Bits 0–1 (T0,T1) : Encoding tier
|
|
52
|
-
* Bit 2 (FINAL) : Last chunk of a StreamFrame; non-stream frames MUST set this
|
|
53
|
-
* Bit 3 (ENC) : Payload encrypted
|
|
54
|
-
* Bits 4–6 (RSV) : Reserved — sender MUST write 0
|
|
55
|
-
* Bit 7 (EXT) : Extended 8-byte header
|
|
56
|
-
*/
|
|
57
|
-
export const FrameFlags = {
|
|
58
|
-
NONE: 0x00,
|
|
59
|
-
TIER1_JSON: 0x00,
|
|
60
|
-
TIER2_MSGPACK: 0x01,
|
|
61
|
-
FINAL: 0x04,
|
|
62
|
-
ENCRYPTED: 0x08,
|
|
63
|
-
EXT: 0x80,
|
|
64
|
-
};
|
|
65
|
-
// ── Constants ─────────────────────────────────────────────────────────────────
|
|
66
|
-
export const DEFAULT_HEADER_SIZE = 4;
|
|
67
|
-
export const EXTENDED_HEADER_SIZE = 8;
|
|
68
|
-
export const DEFAULT_MAX_PAYLOAD = 0xffff; // 65 535 bytes
|
|
69
|
-
export const EXTENDED_MAX_PAYLOAD = 0xffffffff; // 4 GiB - 1
|
|
70
|
-
// ── FrameHeader ──────────────────────────────────────────────────────────────
|
|
71
|
-
/**
|
|
72
|
-
* NPS frame header, present at the start of every wire message (NPS-1 §3.1).
|
|
73
|
-
*
|
|
74
|
-
* Default (4 bytes, EXT=0):
|
|
75
|
-
* Byte 0 : FrameType
|
|
76
|
-
* Byte 1 : Flags
|
|
77
|
-
* Byte 2–3 : PayloadLength (big-endian uint16)
|
|
78
|
-
*
|
|
79
|
-
* Extended (8 bytes, EXT=1):
|
|
80
|
-
* Byte 0 : FrameType
|
|
81
|
-
* Byte 1 : Flags (bit 7 = 1)
|
|
82
|
-
* Byte 2–3 : Reserved (must be 0)
|
|
83
|
-
* Byte 4–7 : PayloadLength (big-endian uint32)
|
|
84
|
-
*/
|
|
85
|
-
export class FrameHeader {
|
|
86
|
-
frameType;
|
|
87
|
-
flags;
|
|
88
|
-
payloadLength;
|
|
89
|
-
constructor(frameType, flags, payloadLength) {
|
|
90
|
-
this.frameType = frameType;
|
|
91
|
-
this.flags = flags;
|
|
92
|
-
this.payloadLength = payloadLength;
|
|
93
|
-
}
|
|
94
|
-
get isExtended() {
|
|
95
|
-
return (this.flags & FrameFlags.EXT) !== 0;
|
|
96
|
-
}
|
|
97
|
-
get headerSize() {
|
|
98
|
-
return this.isExtended ? EXTENDED_HEADER_SIZE : DEFAULT_HEADER_SIZE;
|
|
99
|
-
}
|
|
100
|
-
get encodingTier() {
|
|
101
|
-
return (this.flags & 0x03);
|
|
102
|
-
}
|
|
103
|
-
get isFinal() {
|
|
104
|
-
return (this.flags & 0x04) !== 0;
|
|
105
|
-
}
|
|
106
|
-
get isEncrypted() {
|
|
107
|
-
return (this.flags & 0x08) !== 0;
|
|
108
|
-
}
|
|
109
|
-
// ── Parsing ───────────────────────────────────────────────────────────────
|
|
110
|
-
static parse(buf) {
|
|
111
|
-
if (buf.length < 2) {
|
|
112
|
-
throw new NpsFrameError(`Buffer too small to read frame type and flags: need >= 2 bytes, got ${buf.length}.`);
|
|
113
|
-
}
|
|
114
|
-
const flags = buf[1];
|
|
115
|
-
const ext = (flags & FrameFlags.EXT) !== 0;
|
|
116
|
-
if (ext) {
|
|
117
|
-
if (buf.length < EXTENDED_HEADER_SIZE) {
|
|
118
|
-
throw new NpsFrameError(`Buffer too small for extended frame header: need ${EXTENDED_HEADER_SIZE} bytes, got ${buf.length}.`);
|
|
119
|
-
}
|
|
120
|
-
const view = new DataView(buf.buffer, buf.byteOffset);
|
|
121
|
-
const payloadLength = view.getUint32(4, false); // big-endian
|
|
122
|
-
return new FrameHeader(buf[0], flags, payloadLength);
|
|
123
|
-
}
|
|
124
|
-
if (buf.length < DEFAULT_HEADER_SIZE) {
|
|
125
|
-
throw new NpsFrameError(`Buffer too small for frame header: need ${DEFAULT_HEADER_SIZE} bytes, got ${buf.length}.`);
|
|
126
|
-
}
|
|
127
|
-
const view = new DataView(buf.buffer, buf.byteOffset);
|
|
128
|
-
const payloadLength = view.getUint16(2, false); // big-endian
|
|
129
|
-
return new FrameHeader(buf[0], flags, payloadLength);
|
|
130
|
-
}
|
|
131
|
-
// ── Serialisation ─────────────────────────────────────────────────────────
|
|
132
|
-
toBytes() {
|
|
133
|
-
if (this.isExtended) {
|
|
134
|
-
const buf = new Uint8Array(EXTENDED_HEADER_SIZE);
|
|
135
|
-
const view = new DataView(buf.buffer);
|
|
136
|
-
view.setUint8(0, this.frameType);
|
|
137
|
-
view.setUint8(1, this.flags);
|
|
138
|
-
view.setUint16(2, 0, false); // reserved
|
|
139
|
-
view.setUint32(4, this.payloadLength, false);
|
|
140
|
-
return buf;
|
|
141
|
-
}
|
|
142
|
-
const buf = new Uint8Array(DEFAULT_HEADER_SIZE);
|
|
143
|
-
const view = new DataView(buf.buffer);
|
|
144
|
-
view.setUint8(0, this.frameType);
|
|
145
|
-
view.setUint8(1, this.flags);
|
|
146
|
-
view.setUint16(2, this.payloadLength, false);
|
|
147
|
-
return buf;
|
|
148
|
-
}
|
|
149
|
-
toString() {
|
|
150
|
-
return `FrameHeader(frameType=0x${this.frameType.toString(16).padStart(2, "0")}, flags=0x${this.flags.toString(16).padStart(2, "0")}, payloadLength=${this.payloadLength})`;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
//# sourceMappingURL=frames.js.map
|
package/dist/core/frames.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"frames.js","sourceRoot":"","sources":["../../src/core/frames.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,sCAAsC;AAEtC;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,gFAAgF;AAEhF,sEAAsE;AACtE,MAAM,CAAN,IAAY,SA8BX;AA9BD,WAAY,SAAS;IACnB,iBAAiB;IACjB,6CAAmB,CAAA;IACnB,yCAAmB,CAAA;IACnB,6CAAmB,CAAA;IACnB,yCAAmB,CAAA;IACnB,2CAAmB,CAAA;IAEnB,iBAAiB;IACjB,4CAAmB,CAAA;IACnB,8CAAmB,CAAA;IAEnB,iBAAiB;IACjB,4CAAmB,CAAA;IACnB,4CAAmB,CAAA;IACnB,8CAAmB,CAAA;IAEnB,iBAAiB;IACjB,kDAAmB,CAAA;IACnB,gDAAmB,CAAA;IACnB,4CAAmB,CAAA;IAEnB,iBAAiB;IACjB,0CAAmB,CAAA;IACnB,kDAAmB,CAAA;IACnB,0CAAmB,CAAA;IACnB,0DAAmB,CAAA;IAEnB,+BAA+B;IAC/B,6CAAmB,CAAA;AACrB,CAAC,EA9BW,SAAS,KAAT,SAAS,QA8BpB;AAED,gFAAgF;AAEhF;;;;GAIG;AACH,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,+CAAc,CAAA;IACd,qDAAc,CAAA;AAChB,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAED,gFAAgF;AAEhF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAW,IAAI;IACnB,UAAU,EAAK,IAAI;IACnB,aAAa,EAAE,IAAI;IACnB,KAAK,EAAU,IAAI;IACnB,SAAS,EAAM,IAAI;IACnB,GAAG,EAAY,IAAI;CACX,CAAC;AAEX,iFAAiF;AAEjF,MAAM,CAAC,MAAM,mBAAmB,GAAI,CAAC,CAAC;AACtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,MAAM,CAAC,MAAM,mBAAmB,GAAI,MAAM,CAAC,CAAQ,eAAe;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC,CAAI,YAAY;AAE/D,gFAAgF;AAEhF;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,WAAW;IAEJ;IACA;IACA;IAHlB,YACkB,SAAoB,EACpB,KAAa,EACb,aAAqB;QAFrB,cAAS,GAAT,SAAS,CAAW;QACpB,UAAK,GAAL,KAAK,CAAQ;QACb,kBAAa,GAAb,aAAa,CAAQ;IACpC,CAAC;IAEJ,IAAI,UAAU;QACZ,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,mBAAmB,CAAC;IACtE,CAAC;IAED,IAAI,YAAY;QACd,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAiB,CAAC;IAC7C,CAAC;IAED,IAAI,OAAO;QACT,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,6EAA6E;IAE7E,MAAM,CAAC,KAAK,CAAC,GAAe;QAC1B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,aAAa,CACrB,uEAAuE,GAAG,CAAC,MAAM,GAAG,CACrF,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QACtB,MAAM,GAAG,GAAK,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,GAAG,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;gBACtC,MAAM,IAAI,aAAa,CACrB,oDAAoD,oBAAoB,eAAe,GAAG,CAAC,MAAM,GAAG,CACrG,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;YACtD,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,aAAa;YAC7D,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAe,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;YACrC,MAAM,IAAI,aAAa,CACrB,2CAA2C,mBAAmB,eAAe,GAAG,CAAC,MAAM,GAAG,CAC3F,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,aAAa;QAC7D,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAe,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IACrE,CAAC;IAED,6EAA6E;IAE7E,OAAO;QACL,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,GAAG,GAAI,IAAI,UAAU,CAAC,oBAAoB,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAa,WAAW;YACpD,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAC7C,OAAO,GAAG,CAAC;QACb,CAAC;QACD,MAAM,GAAG,GAAI,IAAI,UAAU,CAAC,mBAAmB,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,GAAG,CAAC;IACb,CAAC;IAED,QAAQ;QACN,OAAO,2BAA2B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,mBAAmB,IAAI,CAAC,aAAa,GAAG,CAAC;IAC9K,CAAC;CACF"}
|
package/dist/core/index.d.cts
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
export { D as DEFAULT_HEADER_SIZE, a as DEFAULT_MAX_PAYLOAD, E as EXTENDED_HEADER_SIZE, b as EXTENDED_MAX_PAYLOAD, c as EncodingTier, d as FrameClass, e as FrameFlags, f as FrameHeader, F as FrameRegistry, g as FrameType, N as NpsFrame, h as NpsFrameCodec, T as Tier1JsonCodec, i as Tier2MsgPackCodec } from '../codec-CmHeovTV.cjs';
|
|
2
|
-
import { A as AnchorFrame, F as FrameSchema } from '../frames-B3qLdl_g.cjs';
|
|
3
|
-
|
|
4
|
-
/** Base class for all NPS errors. */
|
|
5
|
-
declare class NpsError extends Error {
|
|
6
|
-
constructor(message: string);
|
|
7
|
-
}
|
|
8
|
-
/** Raised when a wire buffer cannot be parsed as a valid NPS frame. */
|
|
9
|
-
declare class NpsFrameError extends NpsError {
|
|
10
|
-
}
|
|
11
|
-
/** Raised when frame serialisation or deserialisation fails. */
|
|
12
|
-
declare class NpsCodecError extends NpsError {
|
|
13
|
-
}
|
|
14
|
-
/** Raised when an anchor_id is not found in the cache. */
|
|
15
|
-
declare class NpsAnchorNotFoundError extends NpsError {
|
|
16
|
-
readonly anchorId: string;
|
|
17
|
-
constructor(anchorId: string);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Raised when the same anchor_id is stored with a different schema (NPS-1 §7.2).
|
|
21
|
-
* This indicates a potential anchor-poisoning attack.
|
|
22
|
-
*/
|
|
23
|
-
declare class NpsAnchorPoisonError extends NpsError {
|
|
24
|
-
readonly anchorId: string;
|
|
25
|
-
constructor(anchorId: string);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
declare class AnchorFrameCache {
|
|
29
|
-
private readonly _store;
|
|
30
|
-
clock: () => number;
|
|
31
|
-
set(frame: AnchorFrame): string;
|
|
32
|
-
get(anchorId: string): AnchorFrame | undefined;
|
|
33
|
-
getRequired(anchorId: string): AnchorFrame;
|
|
34
|
-
invalidate(anchorId: string): void;
|
|
35
|
-
get size(): number;
|
|
36
|
-
static computeAnchorId(schema: FrameSchema): string;
|
|
37
|
-
private _evictExpired;
|
|
38
|
-
private static _schemasEqual;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export { AnchorFrameCache, NpsAnchorNotFoundError, NpsAnchorPoisonError, NpsCodecError, NpsError, NpsFrameError };
|
package/dist/core/registry.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
// Copyright 2026 INNO LOTUS PTY LTD
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { NpsFrameError } from "./exceptions.js";
|
|
4
|
-
export class FrameRegistry {
|
|
5
|
-
_map = new Map();
|
|
6
|
-
register(frameType, cls) {
|
|
7
|
-
this._map.set(frameType, cls);
|
|
8
|
-
}
|
|
9
|
-
resolve(frameType) {
|
|
10
|
-
const cls = this._map.get(frameType);
|
|
11
|
-
if (cls === undefined) {
|
|
12
|
-
throw new NpsFrameError(`No frame class registered for type 0x${frameType.toString(16).padStart(2, "0")}.`);
|
|
13
|
-
}
|
|
14
|
-
return cls;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,sCAAsC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAQhD,MAAM,OAAO,aAAa;IACP,IAAI,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEzD,QAAQ,CAAC,SAAoB,EAAE,GAAe;QAC5C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,SAAoB;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,aAAa,CACrB,wCAAwC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CACnF,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
-
// Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD
|
|
3
|
-
//
|
|
4
|
-
// NPS native status codes — per spec/status-codes.md
|
|
5
|
-
/** NPS native status code constants. */
|
|
6
|
-
export const NpsStatusCodes = {
|
|
7
|
-
// Success
|
|
8
|
-
NPS_OK: "NPS-OK",
|
|
9
|
-
NPS_OK_ACCEPTED: "NPS-OK-ACCEPTED",
|
|
10
|
-
NPS_OK_NO_CONTENT: "NPS-OK-NO-CONTENT",
|
|
11
|
-
// Auth
|
|
12
|
-
NPS_AUTH_UNAUTHENTICATED: "NPS-AUTH-UNAUTHENTICATED",
|
|
13
|
-
NPS_AUTH_FORBIDDEN: "NPS-AUTH-FORBIDDEN",
|
|
14
|
-
// Client errors
|
|
15
|
-
NPS_CLIENT_BAD_FRAME: "NPS-CLIENT-BAD-FRAME",
|
|
16
|
-
NPS_CLIENT_BAD_PARAM: "NPS-CLIENT-BAD-PARAM",
|
|
17
|
-
NPS_CLIENT_NOT_FOUND: "NPS-CLIENT-NOT-FOUND",
|
|
18
|
-
NPS_CLIENT_CONFLICT: "NPS-CLIENT-CONFLICT",
|
|
19
|
-
NPS_CLIENT_GONE: "NPS-CLIENT-GONE",
|
|
20
|
-
NPS_CLIENT_UNPROCESSABLE: "NPS-CLIENT-UNPROCESSABLE",
|
|
21
|
-
// Server errors
|
|
22
|
-
NPS_SERVER_INTERNAL: "NPS-SERVER-INTERNAL",
|
|
23
|
-
NPS_SERVER_UNAVAILABLE: "NPS-SERVER-UNAVAILABLE",
|
|
24
|
-
NPS_SERVER_TIMEOUT: "NPS-SERVER-TIMEOUT",
|
|
25
|
-
NPS_SERVER_ENCODING_UNSUPPORTED: "NPS-SERVER-ENCODING-UNSUPPORTED",
|
|
26
|
-
// Stream
|
|
27
|
-
NPS_STREAM_SEQ_GAP: "NPS-STREAM-SEQ-GAP",
|
|
28
|
-
NPS_STREAM_NOT_FOUND: "NPS-STREAM-NOT-FOUND",
|
|
29
|
-
NPS_STREAM_LIMIT: "NPS-STREAM-LIMIT",
|
|
30
|
-
// Limit
|
|
31
|
-
NPS_LIMIT_RATE: "NPS-LIMIT-RATE",
|
|
32
|
-
NPS_LIMIT_BUDGET: "NPS-LIMIT-BUDGET",
|
|
33
|
-
NPS_LIMIT_PAYLOAD: "NPS-LIMIT-PAYLOAD",
|
|
34
|
-
NPS_LIMIT_EXCEEDED: "NPS-LIMIT-EXCEEDED",
|
|
35
|
-
// Protocol
|
|
36
|
-
NPS_PROTO_VERSION_INCOMPATIBLE: "NPS-PROTO-VERSION-INCOMPATIBLE",
|
|
37
|
-
};
|
|
38
|
-
//# sourceMappingURL=status-codes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"status-codes.js","sourceRoot":"","sources":["../../src/core/status-codes.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,oDAAoD;AACpD,EAAE;AACF,qDAAqD;AAErD,wCAAwC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,UAAU;IACV,MAAM,EAAE,QAAQ;IAChB,eAAe,EAAE,iBAAiB;IAClC,iBAAiB,EAAE,mBAAmB;IAEtC,OAAO;IACP,wBAAwB,EAAE,0BAA0B;IACpD,kBAAkB,EAAE,oBAAoB;IAExC,gBAAgB;IAChB,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,mBAAmB,EAAE,qBAAqB;IAC1C,eAAe,EAAE,iBAAiB;IAClC,wBAAwB,EAAE,0BAA0B;IAEpD,gBAAgB;IAChB,mBAAmB,EAAE,qBAAqB;IAC1C,sBAAsB,EAAE,wBAAwB;IAChD,kBAAkB,EAAE,oBAAoB;IACxC,+BAA+B,EAAE,iCAAiC;IAElE,SAAS;IACT,kBAAkB,EAAE,oBAAoB;IACxC,oBAAoB,EAAE,sBAAsB;IAC5C,gBAAgB,EAAE,kBAAkB;IAEpC,QAAQ;IACR,cAAc,EAAE,gBAAgB;IAChC,gBAAgB,EAAE,kBAAkB;IACpC,iBAAiB,EAAE,mBAAmB;IACtC,kBAAkB,EAAE,oBAAoB;IAExC,WAAW;IACX,8BAA8B,EAAE,gCAAgC;CACxD,CAAC"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { N as NpsFrame, g as FrameType, c as EncodingTier } from './codec-CmHeovTV.cjs';
|
|
2
|
-
|
|
3
|
-
interface SchemaField {
|
|
4
|
-
name: string;
|
|
5
|
-
type: string;
|
|
6
|
-
semantic?: string;
|
|
7
|
-
nullable?: boolean;
|
|
8
|
-
}
|
|
9
|
-
interface FrameSchema {
|
|
10
|
-
fields: readonly SchemaField[];
|
|
11
|
-
}
|
|
12
|
-
declare class AnchorFrame implements NpsFrame {
|
|
13
|
-
readonly anchorId: string;
|
|
14
|
-
readonly schema: FrameSchema;
|
|
15
|
-
readonly ttl: number;
|
|
16
|
-
readonly frameType = FrameType.ANCHOR;
|
|
17
|
-
readonly preferredTier = EncodingTier.MSGPACK;
|
|
18
|
-
constructor(anchorId: string, schema: FrameSchema, ttl?: number);
|
|
19
|
-
toDict(): Record<string, unknown>;
|
|
20
|
-
static fromDict(data: Record<string, unknown>): AnchorFrame;
|
|
21
|
-
}
|
|
22
|
-
interface JsonPatchOperation {
|
|
23
|
-
op: string;
|
|
24
|
-
path: string;
|
|
25
|
-
value?: unknown;
|
|
26
|
-
}
|
|
27
|
-
declare class DiffFrame implements NpsFrame {
|
|
28
|
-
readonly anchorRef: string;
|
|
29
|
-
readonly baseSeq: number;
|
|
30
|
-
readonly patch: readonly JsonPatchOperation[];
|
|
31
|
-
readonly entityId?: string | undefined;
|
|
32
|
-
readonly frameType = FrameType.DIFF;
|
|
33
|
-
readonly preferredTier = EncodingTier.MSGPACK;
|
|
34
|
-
constructor(anchorRef: string, baseSeq: number, patch: readonly JsonPatchOperation[], entityId?: string | undefined);
|
|
35
|
-
toDict(): Record<string, unknown>;
|
|
36
|
-
static fromDict(data: Record<string, unknown>): DiffFrame;
|
|
37
|
-
}
|
|
38
|
-
declare class StreamFrame implements NpsFrame {
|
|
39
|
-
readonly streamId: string;
|
|
40
|
-
readonly seq: number;
|
|
41
|
-
readonly isLast: boolean;
|
|
42
|
-
readonly data: readonly Record<string, unknown>[];
|
|
43
|
-
readonly anchorRef?: string | undefined;
|
|
44
|
-
readonly windowSize?: number | undefined;
|
|
45
|
-
readonly frameType = FrameType.STREAM;
|
|
46
|
-
readonly preferredTier = EncodingTier.MSGPACK;
|
|
47
|
-
constructor(streamId: string, seq: number, isLast: boolean, data: readonly Record<string, unknown>[], anchorRef?: string | undefined, windowSize?: number | undefined);
|
|
48
|
-
toDict(): Record<string, unknown>;
|
|
49
|
-
static fromDict(data: Record<string, unknown>): StreamFrame;
|
|
50
|
-
}
|
|
51
|
-
declare class CapsFrame implements NpsFrame {
|
|
52
|
-
readonly anchorRef: string;
|
|
53
|
-
readonly count: number;
|
|
54
|
-
readonly data: readonly Record<string, unknown>[];
|
|
55
|
-
readonly nextCursor?: string | undefined;
|
|
56
|
-
readonly tokenEst?: number | undefined;
|
|
57
|
-
readonly cached?: boolean | undefined;
|
|
58
|
-
readonly tokenizerUsed?: string | undefined;
|
|
59
|
-
readonly frameType = FrameType.CAPS;
|
|
60
|
-
readonly preferredTier = EncodingTier.MSGPACK;
|
|
61
|
-
constructor(anchorRef: string, count: number, data: readonly Record<string, unknown>[], nextCursor?: string | undefined, tokenEst?: number | undefined, cached?: boolean | undefined, tokenizerUsed?: string | undefined);
|
|
62
|
-
toDict(): Record<string, unknown>;
|
|
63
|
-
static fromDict(data: Record<string, unknown>): CapsFrame;
|
|
64
|
-
}
|
|
65
|
-
declare class ErrorFrame implements NpsFrame {
|
|
66
|
-
readonly status: string;
|
|
67
|
-
readonly error: string;
|
|
68
|
-
readonly message?: string | undefined;
|
|
69
|
-
readonly details?: Record<string, unknown> | undefined;
|
|
70
|
-
readonly frameType = FrameType.ERROR;
|
|
71
|
-
readonly preferredTier = EncodingTier.MSGPACK;
|
|
72
|
-
constructor(status: string, error: string, message?: string | undefined, details?: Record<string, unknown> | undefined);
|
|
73
|
-
toDict(): Record<string, unknown>;
|
|
74
|
-
static fromDict(data: Record<string, unknown>): ErrorFrame;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export { AnchorFrame as A, CapsFrame as C, DiffFrame as D, ErrorFrame as E, type FrameSchema as F, type JsonPatchOperation as J, type SchemaField as S, StreamFrame as a };
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { N as NpsFrame, g as FrameType, c as EncodingTier } from './codec-CmHeovTV.js';
|
|
2
|
-
|
|
3
|
-
interface SchemaField {
|
|
4
|
-
name: string;
|
|
5
|
-
type: string;
|
|
6
|
-
semantic?: string;
|
|
7
|
-
nullable?: boolean;
|
|
8
|
-
}
|
|
9
|
-
interface FrameSchema {
|
|
10
|
-
fields: readonly SchemaField[];
|
|
11
|
-
}
|
|
12
|
-
declare class AnchorFrame implements NpsFrame {
|
|
13
|
-
readonly anchorId: string;
|
|
14
|
-
readonly schema: FrameSchema;
|
|
15
|
-
readonly ttl: number;
|
|
16
|
-
readonly frameType = FrameType.ANCHOR;
|
|
17
|
-
readonly preferredTier = EncodingTier.MSGPACK;
|
|
18
|
-
constructor(anchorId: string, schema: FrameSchema, ttl?: number);
|
|
19
|
-
toDict(): Record<string, unknown>;
|
|
20
|
-
static fromDict(data: Record<string, unknown>): AnchorFrame;
|
|
21
|
-
}
|
|
22
|
-
interface JsonPatchOperation {
|
|
23
|
-
op: string;
|
|
24
|
-
path: string;
|
|
25
|
-
value?: unknown;
|
|
26
|
-
}
|
|
27
|
-
declare class DiffFrame implements NpsFrame {
|
|
28
|
-
readonly anchorRef: string;
|
|
29
|
-
readonly baseSeq: number;
|
|
30
|
-
readonly patch: readonly JsonPatchOperation[];
|
|
31
|
-
readonly entityId?: string | undefined;
|
|
32
|
-
readonly frameType = FrameType.DIFF;
|
|
33
|
-
readonly preferredTier = EncodingTier.MSGPACK;
|
|
34
|
-
constructor(anchorRef: string, baseSeq: number, patch: readonly JsonPatchOperation[], entityId?: string | undefined);
|
|
35
|
-
toDict(): Record<string, unknown>;
|
|
36
|
-
static fromDict(data: Record<string, unknown>): DiffFrame;
|
|
37
|
-
}
|
|
38
|
-
declare class StreamFrame implements NpsFrame {
|
|
39
|
-
readonly streamId: string;
|
|
40
|
-
readonly seq: number;
|
|
41
|
-
readonly isLast: boolean;
|
|
42
|
-
readonly data: readonly Record<string, unknown>[];
|
|
43
|
-
readonly anchorRef?: string | undefined;
|
|
44
|
-
readonly windowSize?: number | undefined;
|
|
45
|
-
readonly frameType = FrameType.STREAM;
|
|
46
|
-
readonly preferredTier = EncodingTier.MSGPACK;
|
|
47
|
-
constructor(streamId: string, seq: number, isLast: boolean, data: readonly Record<string, unknown>[], anchorRef?: string | undefined, windowSize?: number | undefined);
|
|
48
|
-
toDict(): Record<string, unknown>;
|
|
49
|
-
static fromDict(data: Record<string, unknown>): StreamFrame;
|
|
50
|
-
}
|
|
51
|
-
declare class CapsFrame implements NpsFrame {
|
|
52
|
-
readonly anchorRef: string;
|
|
53
|
-
readonly count: number;
|
|
54
|
-
readonly data: readonly Record<string, unknown>[];
|
|
55
|
-
readonly nextCursor?: string | undefined;
|
|
56
|
-
readonly tokenEst?: number | undefined;
|
|
57
|
-
readonly cached?: boolean | undefined;
|
|
58
|
-
readonly tokenizerUsed?: string | undefined;
|
|
59
|
-
readonly frameType = FrameType.CAPS;
|
|
60
|
-
readonly preferredTier = EncodingTier.MSGPACK;
|
|
61
|
-
constructor(anchorRef: string, count: number, data: readonly Record<string, unknown>[], nextCursor?: string | undefined, tokenEst?: number | undefined, cached?: boolean | undefined, tokenizerUsed?: string | undefined);
|
|
62
|
-
toDict(): Record<string, unknown>;
|
|
63
|
-
static fromDict(data: Record<string, unknown>): CapsFrame;
|
|
64
|
-
}
|
|
65
|
-
declare class ErrorFrame implements NpsFrame {
|
|
66
|
-
readonly status: string;
|
|
67
|
-
readonly error: string;
|
|
68
|
-
readonly message?: string | undefined;
|
|
69
|
-
readonly details?: Record<string, unknown> | undefined;
|
|
70
|
-
readonly frameType = FrameType.ERROR;
|
|
71
|
-
readonly preferredTier = EncodingTier.MSGPACK;
|
|
72
|
-
constructor(status: string, error: string, message?: string | undefined, details?: Record<string, unknown> | undefined);
|
|
73
|
-
toDict(): Record<string, unknown>;
|
|
74
|
-
static fromDict(data: Record<string, unknown>): ErrorFrame;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export { AnchorFrame as A, CapsFrame as C, DiffFrame as D, ErrorFrame as E, type FrameSchema as F, type JsonPatchOperation as J, type SchemaField as S, StreamFrame as a };
|
package/dist/index.d.cts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export { AnchorFrameCache, NpsAnchorNotFoundError, NpsAnchorPoisonError, NpsCodecError, NpsError, NpsFrameError } from './core/index.cjs';
|
|
2
|
-
import { F as FrameRegistry } from './codec-CmHeovTV.cjs';
|
|
3
|
-
export { D as DEFAULT_HEADER_SIZE, a as DEFAULT_MAX_PAYLOAD, E as EXTENDED_HEADER_SIZE, b as EXTENDED_MAX_PAYLOAD, c as EncodingTier, d as FrameClass, e as FrameFlags, f as FrameHeader, g as FrameType, N as NpsFrame, h as NpsFrameCodec, T as Tier1JsonCodec, i as Tier2MsgPackCodec } from './codec-CmHeovTV.cjs';
|
|
4
|
-
export { A as AnchorFrame, C as CapsFrame, D as DiffFrame, E as ErrorFrame, F as FrameSchema, J as JsonPatchOperation, S as SchemaField, a as StreamFrame } from './frames-B3qLdl_g.cjs';
|
|
5
|
-
export { registerNcpFrames } from './ncp/index.cjs';
|
|
6
|
-
export { ActionFrame, AsyncActionResponse, NwpClient, QueryFrame, QueryOrderClause, VectorSearchOptions, asyncActionResponseFromDict, registerNwpFrames } from './nwp/index.cjs';
|
|
7
|
-
export { IdentFrame, IdentMetadata, NipIdentity, RevokeFrame, TrustFrame, registerNipFrames } from './nip/index.cjs';
|
|
8
|
-
export { AnnounceFrame, GraphFrame, InMemoryNdpRegistry, NdpAddress, NdpAnnounceResult, NdpAnnounceValidator, NdpGraphNode, NdpResolveResult, ResolveFrame, registerNdpFrames } from './ndp/index.cjs';
|
|
9
|
-
export { AggregateStrategy, AlignStreamFrame, BackoffStrategy, DagEdge, DagNode, DelegateFrame, NopClient, NopTaskStatus, RetryPolicy, StreamError, SyncFrame, TaskContext, TaskDag, TaskFrame, TaskPriority, TaskState, computeDelayMs, registerNopFrames } from './nop/index.cjs';
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Registry factory helpers — lives outside core/ to avoid circular imports.
|
|
13
|
-
* Use createDefaultRegistry() for NCP-only, createFullRegistry() for all protocols.
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
/** NCP frames only (ANCHOR, DIFF, STREAM, CAPS, ERROR). */
|
|
17
|
-
declare function createDefaultRegistry(): FrameRegistry;
|
|
18
|
-
/** All 5 protocols (NCP + NWP + NIP + NDP + NOP). */
|
|
19
|
-
declare function createFullRegistry(): FrameRegistry;
|
|
20
|
-
|
|
21
|
-
export { FrameRegistry, createDefaultRegistry, createFullRegistry };
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
-
// Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD
|
|
3
|
-
//
|
|
4
|
-
// AnchorFrame (0x01) — Schema anchor for global reference
|
|
5
|
-
// NPS-1 §4.1
|
|
6
|
-
import { createHash } from "node:crypto";
|
|
7
|
-
// canonicalize ships CJS with TS `export default` — NodeNext resolves as namespace
|
|
8
|
-
import canonicalizeDefault from "canonicalize";
|
|
9
|
-
const canonicalize = canonicalizeDefault;
|
|
10
|
-
import { NcpError } from "../../core/frame-header.js";
|
|
11
|
-
// ---------------------------------------------------------------------------
|
|
12
|
-
// Types
|
|
13
|
-
// ---------------------------------------------------------------------------
|
|
14
|
-
const VALID_FIELD_TYPES = [
|
|
15
|
-
"string", "uint64", "int64", "decimal", "bool",
|
|
16
|
-
"timestamp", "bytes", "object", "array",
|
|
17
|
-
];
|
|
18
|
-
// ---------------------------------------------------------------------------
|
|
19
|
-
// anchor_id computation (RFC 8785 JCS + SHA-256)
|
|
20
|
-
// ---------------------------------------------------------------------------
|
|
21
|
-
/**
|
|
22
|
-
* Compute anchor_id from schema using RFC 8785 JCS canonicalization + SHA-256.
|
|
23
|
-
* Format: "sha256:{64 lowercase hex chars}"
|
|
24
|
-
*/
|
|
25
|
-
export function computeAnchorId(schema) {
|
|
26
|
-
const canonical = canonicalize(schema);
|
|
27
|
-
if (!canonical) {
|
|
28
|
-
throw new NcpError("NCP-ANCHOR-SCHEMA-INVALID", "Schema cannot be canonicalized");
|
|
29
|
-
}
|
|
30
|
-
const hash = createHash("sha256").update(canonical).digest("hex");
|
|
31
|
-
return `sha256:${hash}`;
|
|
32
|
-
}
|
|
33
|
-
// ---------------------------------------------------------------------------
|
|
34
|
-
// Validation
|
|
35
|
-
// ---------------------------------------------------------------------------
|
|
36
|
-
/**
|
|
37
|
-
* Validate an AnchorFrame.
|
|
38
|
-
* @throws {NcpError} NCP-ANCHOR-SCHEMA-INVALID if anchor_id doesn't match or schema is invalid.
|
|
39
|
-
*/
|
|
40
|
-
export function validateAnchorFrame(frame) {
|
|
41
|
-
// Validate schema field types
|
|
42
|
-
for (const field of frame.schema.fields) {
|
|
43
|
-
if (!VALID_FIELD_TYPES.includes(field.type)) {
|
|
44
|
-
throw new NcpError("NCP-ANCHOR-SCHEMA-INVALID", `Unsupported field type "${field.type}" for field "${field.name}". ` +
|
|
45
|
-
`Valid types: ${VALID_FIELD_TYPES.join(", ")}`);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
// Validate anchor_id matches computed hash
|
|
49
|
-
const expected = computeAnchorId(frame.schema);
|
|
50
|
-
if (frame.anchor_id !== expected) {
|
|
51
|
-
throw new NcpError("NCP-ANCHOR-SCHEMA-INVALID", `anchor_id mismatch: expected ${expected}, got ${frame.anchor_id}`);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=anchor-frame.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anchor-frame.js","sourceRoot":"","sources":["../../../src/ncp/frames/anchor-frame.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,oDAAoD;AACpD,EAAE;AACF,0DAA0D;AAC1D,aAAa;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,mFAAmF;AACnF,OAAO,mBAAmB,MAAM,cAAc,CAAC;AAC/C,MAAM,YAAY,GAAG,mBAAwE,CAAC;AAC9F,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,MAAM,iBAAiB,GAAG;IACxB,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM;IAC9C,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO;CAC/B,CAAC;AAsBX,8EAA8E;AAC9E,iDAAiD;AACjD,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAmB;IACjD,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,QAAQ,CAAC,2BAA2B,EAAE,gCAAgC,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClE,OAAO,UAAU,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAkB;IACpD,8BAA8B;IAC9B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACxC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAuB,CAAC,EAAE,CAAC;YAC/D,MAAM,IAAI,QAAQ,CAChB,2BAA2B,EAC3B,2BAA2B,KAAK,CAAC,IAAI,gBAAgB,KAAK,CAAC,IAAI,KAAK;gBAClE,gBAAgB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACjD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,QAAQ,CAChB,2BAA2B,EAC3B,gCAAgC,QAAQ,SAAS,KAAK,CAAC,SAAS,EAAE,CACnE,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
-
// Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD
|
|
3
|
-
//
|
|
4
|
-
// CapsFrame (0x04) — Capsule response envelope
|
|
5
|
-
// NPS-1 §4.4
|
|
6
|
-
import { NcpError } from "../../core/frame-header.js";
|
|
7
|
-
import { computeAnchorId, } from "./anchor-frame.js";
|
|
8
|
-
/**
|
|
9
|
-
* Validate a CapsFrame.
|
|
10
|
-
*
|
|
11
|
-
* Checks:
|
|
12
|
-
* - count matches data.length (NPS-CLIENT-BAD-FRAME)
|
|
13
|
-
* - if inline_anchor present, recomputes anchor_id and validates match (NCP-ANCHOR-SCHEMA-INVALID)
|
|
14
|
-
*
|
|
15
|
-
* @throws {NcpError} NPS-CLIENT-BAD-FRAME if count doesn't match data length.
|
|
16
|
-
* @throws {NcpError} NCP-ANCHOR-SCHEMA-INVALID if inline_anchor.anchor_id doesn't match schema.
|
|
17
|
-
*/
|
|
18
|
-
export function validateCapsFrame(frame) {
|
|
19
|
-
if (frame.count !== frame.data.length) {
|
|
20
|
-
throw new NcpError("NPS-CLIENT-BAD-FRAME", `CapsFrame count mismatch: count=${frame.count}, data.length=${frame.data.length}`);
|
|
21
|
-
}
|
|
22
|
-
if (frame.inline_anchor !== undefined) {
|
|
23
|
-
const computed = computeAnchorId(frame.inline_anchor.schema);
|
|
24
|
-
if (frame.inline_anchor.anchor_id !== computed) {
|
|
25
|
-
throw new NcpError("NCP-ANCHOR-SCHEMA-INVALID", `inline_anchor anchor_id mismatch: expected ${computed}, got ${frame.inline_anchor.anchor_id}`);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=caps-frame.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"caps-frame.js","sourceRoot":"","sources":["../../../src/ncp/frames/caps-frame.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,oDAAoD;AACpD,EAAE;AACF,+CAA+C;AAC/C,aAAa;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EACL,eAAe,GAGhB,MAAM,mBAAmB,CAAC;AAoB3B;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAgB;IAChD,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,IAAI,QAAQ,CAChB,sBAAsB,EACtB,mCAAmC,KAAK,CAAC,KAAK,iBAAiB,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CACnF,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,KAAK,CAAC,aAAa,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC/C,MAAM,IAAI,QAAQ,CAChB,2BAA2B,EAC3B,8CAA8C,QAAQ,SAAS,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,CAC/F,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
-
// Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD
|
|
3
|
-
//
|
|
4
|
-
// DiffFrame (0x02) — Incremental data patch
|
|
5
|
-
// NPS-1 §4.2
|
|
6
|
-
import { NcpError, EncodingTier } from "../../core/frame-header.js";
|
|
7
|
-
import { isValidPatchFormat } from "../ncp-patch-format.js";
|
|
8
|
-
/**
|
|
9
|
-
* Validate DiffFrame base_seq against current sequence.
|
|
10
|
-
* @throws {NcpError} NCP-STREAM-SEQ-GAP if sequences don't match.
|
|
11
|
-
*/
|
|
12
|
-
export function validateDiffSeq(frame, currentSeq) {
|
|
13
|
-
if (frame.base_seq !== currentSeq) {
|
|
14
|
-
throw new NcpError("NCP-STREAM-SEQ-GAP", `DiffFrame base_seq=${frame.base_seq} does not match current seq=${currentSeq}`);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Validate DiffFrame patch_format against the encoding tier.
|
|
19
|
-
*
|
|
20
|
-
* binary_bitset is only supported on Tier-2 (MsgPack) frames.
|
|
21
|
-
* Unknown patch_format values are also rejected.
|
|
22
|
-
*
|
|
23
|
-
* @throws {NcpError} NCP-DIFF-FORMAT-UNSUPPORTED if binary_bitset on non-Tier-2,
|
|
24
|
-
* or if patch_format is an unknown value.
|
|
25
|
-
*/
|
|
26
|
-
export function validateDiffFrame(frame, encodingTier) {
|
|
27
|
-
const fmt = frame.patch_format;
|
|
28
|
-
// Unknown patch_format
|
|
29
|
-
if (fmt !== undefined && !isValidPatchFormat(fmt)) {
|
|
30
|
-
throw new NcpError("NCP-DIFF-FORMAT-UNSUPPORTED", `Unknown patch_format "${String(fmt)}"`);
|
|
31
|
-
}
|
|
32
|
-
// binary_bitset requires Tier-2 MsgPack
|
|
33
|
-
if (fmt === "binary_bitset" && encodingTier !== EncodingTier.MsgPack) {
|
|
34
|
-
throw new NcpError("NCP-DIFF-FORMAT-UNSUPPORTED", "patch_format=binary_bitset requires Tier-2 MsgPack encoding");
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=diff-frame.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diff-frame.js","sourceRoot":"","sources":["../../../src/ncp/frames/diff-frame.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,oDAAoD;AACpD,EAAE;AACF,4CAA4C;AAC5C,aAAa;AAEb,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAoB,MAAM,wBAAwB,CAAC;AAkB9E;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAgB,EAAE,UAAkB;IAClE,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAClC,MAAM,IAAI,QAAQ,CAChB,oBAAoB,EACpB,sBAAsB,KAAK,CAAC,QAAQ,+BAA+B,UAAU,EAAE,CAChF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAgB,EAChB,YAAmC;IAEnC,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC;IAE/B,uBAAuB;IACvB,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,QAAQ,CAChB,6BAA6B,EAC7B,yBAAyB,MAAM,CAAC,GAAG,CAAC,GAAG,CACxC,CAAC;IACJ,CAAC;IAED,wCAAwC;IACxC,IAAI,GAAG,KAAK,eAAe,IAAI,YAAY,KAAK,YAAY,CAAC,OAAO,EAAE,CAAC;QACrE,MAAM,IAAI,QAAQ,CAChB,6BAA6B,EAC7B,6DAA6D,CAC9D,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
-
// Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD
|
|
3
|
-
//
|
|
4
|
-
// ErrorFrame (0xFE) — Unified error frame for all NPS protocol layers
|
|
5
|
-
// NPS-1 §4.7
|
|
6
|
-
/** Type guard for ErrorFrame. */
|
|
7
|
-
export function isErrorFrame(obj) {
|
|
8
|
-
if (typeof obj !== "object" || obj === null)
|
|
9
|
-
return false;
|
|
10
|
-
const o = obj;
|
|
11
|
-
return o.frame === "0xFE" && typeof o.status === "string" && typeof o.error === "string";
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=error-frame.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-frame.js","sourceRoot":"","sources":["../../../src/ncp/frames/error-frame.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,oDAAoD;AACpD,EAAE;AACF,sEAAsE;AACtE,aAAa;AAgBb,iCAAiC;AACjC,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC1D,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC;AAC3F,CAAC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
-
// Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD
|
|
3
|
-
//
|
|
4
|
-
// HelloFrame (0x06) — Native-mode client handshake
|
|
5
|
-
// NPS-1 §4.6
|
|
6
|
-
import { NcpError } from "../../core/frame-header.js";
|
|
7
|
-
/**
|
|
8
|
-
* Validate a HelloFrame.
|
|
9
|
-
*
|
|
10
|
-
* Required fields: nps_version, supported_encodings (non-empty), supported_protocols (non-empty).
|
|
11
|
-
*
|
|
12
|
-
* @throws {NcpError} NPS-CLIENT-BAD-FRAME if any required field is missing or empty.
|
|
13
|
-
*/
|
|
14
|
-
export function validateHelloFrame(frame) {
|
|
15
|
-
if (!frame.nps_version) {
|
|
16
|
-
throw new NcpError("NPS-CLIENT-BAD-FRAME", "HelloFrame missing required field: nps_version");
|
|
17
|
-
}
|
|
18
|
-
if (!frame.supported_encodings || frame.supported_encodings.length === 0) {
|
|
19
|
-
throw new NcpError("NPS-CLIENT-BAD-FRAME", "HelloFrame missing required field: supported_encodings (must be non-empty)");
|
|
20
|
-
}
|
|
21
|
-
if (!frame.supported_protocols || frame.supported_protocols.length === 0) {
|
|
22
|
-
throw new NcpError("NPS-CLIENT-BAD-FRAME", "HelloFrame missing required field: supported_protocols (must be non-empty)");
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=hello-frame.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hello-frame.js","sourceRoot":"","sources":["../../../src/ncp/frames/hello-frame.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,oDAAoD;AACpD,EAAE;AACF,mDAAmD;AACnD,aAAa;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAetD;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAiB;IAClD,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACvB,MAAM,IAAI,QAAQ,CAChB,sBAAsB,EACtB,gDAAgD,CACjD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,QAAQ,CAChB,sBAAsB,EACtB,4EAA4E,CAC7E,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,QAAQ,CAChB,sBAAsB,EACtB,4EAA4E,CAC7E,CAAC;IACJ,CAAC;AACH,CAAC"}
|