@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.
Files changed (251) hide show
  1. package/CHANGELOG.cn.md +57 -0
  2. package/CHANGELOG.md +57 -0
  3. package/CONTRIBUTING.cn.md +35 -0
  4. package/CONTRIBUTING.md +2 -0
  5. package/README.cn.md +155 -0
  6. package/README.md +5 -3
  7. package/dist/core/anchor-cache.d.ts +0 -0
  8. package/dist/core/anchor-cache.d.ts.map +0 -0
  9. package/dist/core/cache.d.ts +0 -0
  10. package/dist/core/cache.d.ts.map +0 -0
  11. package/dist/core/canonical-json.d.ts +0 -0
  12. package/dist/core/canonical-json.d.ts.map +0 -0
  13. package/dist/core/codec.d.ts +0 -0
  14. package/dist/core/codec.d.ts.map +0 -0
  15. package/dist/core/codecs/index.d.ts +0 -0
  16. package/dist/core/codecs/index.d.ts.map +0 -0
  17. package/dist/core/codecs/ncp-codec.d.ts +0 -0
  18. package/dist/core/codecs/ncp-codec.d.ts.map +0 -0
  19. package/dist/core/codecs/tier1-json-codec.d.ts +0 -0
  20. package/dist/core/codecs/tier1-json-codec.d.ts.map +0 -0
  21. package/dist/core/codecs/tier2-msgpack-codec.d.ts +0 -0
  22. package/dist/core/codecs/tier2-msgpack-codec.d.ts.map +0 -0
  23. package/dist/core/crypto-provider.d.ts +0 -0
  24. package/dist/core/crypto-provider.d.ts.map +0 -0
  25. package/dist/core/exceptions.d.ts +0 -0
  26. package/dist/core/exceptions.d.ts.map +0 -0
  27. package/dist/core/frame-header.d.ts +0 -0
  28. package/dist/core/frame-header.d.ts.map +0 -0
  29. package/dist/core/frame-registry.d.ts +0 -0
  30. package/dist/core/frame-registry.d.ts.map +0 -0
  31. package/dist/core/frames.d.ts +1 -0
  32. package/dist/core/frames.d.ts.map +1 -1
  33. package/dist/core/index.cjs +90 -9
  34. package/dist/core/index.cjs.map +1 -1
  35. package/dist/core/index.d.ts +6 -4
  36. package/dist/core/index.d.ts.map +1 -1
  37. package/dist/core/index.js +405 -9
  38. package/dist/core/index.js.map +1 -1
  39. package/dist/core/registry.d.ts +0 -0
  40. package/dist/core/registry.d.ts.map +0 -0
  41. package/dist/core/status-codes.d.ts +0 -0
  42. package/dist/core/status-codes.d.ts.map +0 -0
  43. package/dist/index.cjs +3 -1551
  44. package/dist/index.cjs.map +1 -1
  45. package/dist/index.d.ts +1 -1
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +5 -9
  48. package/dist/index.js.map +1 -1
  49. package/dist/ncp/frames/anchor-frame.d.ts +0 -0
  50. package/dist/ncp/frames/anchor-frame.d.ts.map +0 -0
  51. package/dist/ncp/frames/caps-frame.d.ts +0 -0
  52. package/dist/ncp/frames/caps-frame.d.ts.map +0 -0
  53. package/dist/ncp/frames/diff-frame.d.ts +0 -0
  54. package/dist/ncp/frames/diff-frame.d.ts.map +0 -0
  55. package/dist/ncp/frames/error-frame.d.ts +0 -0
  56. package/dist/ncp/frames/error-frame.d.ts.map +0 -0
  57. package/dist/ncp/frames/hello-frame.d.ts +0 -0
  58. package/dist/ncp/frames/hello-frame.d.ts.map +0 -0
  59. package/dist/ncp/frames/stream-frame.d.ts +0 -0
  60. package/dist/ncp/frames/stream-frame.d.ts.map +0 -0
  61. package/dist/ncp/frames.d.ts +18 -0
  62. package/dist/ncp/frames.d.ts.map +1 -1
  63. package/dist/ncp/handshake.d.ts +0 -0
  64. package/dist/ncp/handshake.d.ts.map +0 -0
  65. package/dist/ncp/index.cjs +364 -164
  66. package/dist/ncp/index.cjs.map +1 -1
  67. package/dist/ncp/index.d.ts +0 -0
  68. package/dist/ncp/index.d.ts.map +0 -0
  69. package/dist/ncp/index.js +368 -12
  70. package/dist/ncp/index.js.map +1 -1
  71. package/dist/ncp/ncp-error-codes.d.ts +0 -0
  72. package/dist/ncp/ncp-error-codes.d.ts.map +0 -0
  73. package/dist/ncp/ncp-patch-format.d.ts +0 -0
  74. package/dist/ncp/ncp-patch-format.d.ts.map +0 -0
  75. package/dist/ncp/registry.d.ts +0 -0
  76. package/dist/ncp/registry.d.ts.map +1 -1
  77. package/dist/ncp/stream-manager.d.ts +0 -0
  78. package/dist/ncp/stream-manager.d.ts.map +0 -0
  79. package/dist/ndp/frames.d.ts +0 -0
  80. package/dist/ndp/frames.d.ts.map +0 -0
  81. package/dist/ndp/index.cjs +0 -0
  82. package/dist/ndp/index.cjs.map +0 -0
  83. package/dist/ndp/index.d.ts +0 -0
  84. package/dist/ndp/index.d.ts.map +0 -0
  85. package/dist/ndp/index.js +223 -6
  86. package/dist/ndp/index.js.map +1 -1
  87. package/dist/ndp/ndp-registry.d.ts +0 -0
  88. package/dist/ndp/ndp-registry.d.ts.map +0 -0
  89. package/dist/ndp/registry.d.ts +0 -0
  90. package/dist/ndp/registry.d.ts.map +0 -0
  91. package/dist/ndp/validator.d.ts +0 -0
  92. package/dist/ndp/validator.d.ts.map +0 -0
  93. package/dist/nip/frames.d.ts +0 -0
  94. package/dist/nip/frames.d.ts.map +0 -0
  95. package/dist/nip/identity.d.ts +0 -0
  96. package/dist/nip/identity.d.ts.map +0 -0
  97. package/dist/nip/index.cjs +0 -0
  98. package/dist/nip/index.cjs.map +0 -0
  99. package/dist/nip/index.d.ts +0 -0
  100. package/dist/nip/index.d.ts.map +0 -0
  101. package/dist/nip/index.js +187 -5
  102. package/dist/nip/index.js.map +1 -1
  103. package/dist/nip/registry.d.ts +0 -0
  104. package/dist/nip/registry.d.ts.map +0 -0
  105. package/dist/nop/client.d.ts +0 -0
  106. package/dist/nop/client.d.ts.map +0 -0
  107. package/dist/nop/frames.d.ts +0 -0
  108. package/dist/nop/frames.d.ts.map +0 -0
  109. package/dist/nop/index.cjs +62 -1
  110. package/dist/nop/index.cjs.map +1 -1
  111. package/dist/nop/index.d.ts +0 -0
  112. package/dist/nop/index.d.ts.map +0 -0
  113. package/dist/nop/index.js +789 -6
  114. package/dist/nop/index.js.map +1 -1
  115. package/dist/nop/models.d.ts +0 -0
  116. package/dist/nop/models.d.ts.map +0 -0
  117. package/dist/nop/nop-types.d.ts +0 -0
  118. package/dist/nop/nop-types.d.ts.map +0 -0
  119. package/dist/nop/registry.d.ts +0 -0
  120. package/dist/nop/registry.d.ts.map +0 -0
  121. package/dist/nwp/client.d.ts +0 -0
  122. package/dist/nwp/client.d.ts.map +0 -0
  123. package/dist/nwp/frames.d.ts +0 -0
  124. package/dist/nwp/frames.d.ts.map +0 -0
  125. package/dist/nwp/index.cjs +64 -2
  126. package/dist/nwp/index.cjs.map +1 -1
  127. package/dist/nwp/index.d.ts +0 -0
  128. package/dist/nwp/index.d.ts.map +0 -0
  129. package/dist/nwp/index.js +693 -5
  130. package/dist/nwp/index.js.map +1 -1
  131. package/dist/nwp/registry.d.ts +0 -0
  132. package/dist/nwp/registry.d.ts.map +0 -0
  133. package/dist/setup.d.ts +0 -0
  134. package/dist/setup.d.ts.map +0 -0
  135. package/doc/nps-sdk.core.cn.md +321 -0
  136. package/doc/nps-sdk.core.md +326 -0
  137. package/doc/nps-sdk.ncp.cn.md +270 -0
  138. package/doc/nps-sdk.ncp.md +276 -0
  139. package/doc/nps-sdk.ndp.cn.md +267 -0
  140. package/doc/nps-sdk.ndp.md +273 -0
  141. package/doc/nps-sdk.nip.cn.md +235 -0
  142. package/doc/nps-sdk.nip.md +242 -0
  143. package/doc/nps-sdk.nop.cn.md +329 -0
  144. package/doc/nps-sdk.nop.md +332 -0
  145. package/doc/nps-sdk.nwp.cn.md +217 -0
  146. package/doc/nps-sdk.nwp.md +224 -0
  147. package/doc/overview.cn.md +149 -0
  148. package/doc/overview.md +153 -0
  149. package/package.json +21 -4
  150. package/src/core/frames.ts +1 -0
  151. package/src/core/index.ts +37 -5
  152. package/src/index.ts +1 -1
  153. package/src/ncp/frames.ts +52 -0
  154. package/src/ncp/registry.ts +2 -1
  155. package/dist/codec-CmHeovTV.d.cts +0 -120
  156. package/dist/codec-CmHeovTV.d.ts +0 -120
  157. package/dist/core/anchor-cache.js +0 -104
  158. package/dist/core/anchor-cache.js.map +0 -1
  159. package/dist/core/cache.js +0 -80
  160. package/dist/core/cache.js.map +0 -1
  161. package/dist/core/canonical-json.js +0 -44
  162. package/dist/core/canonical-json.js.map +0 -1
  163. package/dist/core/codec.js +0 -119
  164. package/dist/core/codec.js.map +0 -1
  165. package/dist/core/codecs/index.js +0 -6
  166. package/dist/core/codecs/index.js.map +0 -1
  167. package/dist/core/codecs/ncp-codec.js +0 -93
  168. package/dist/core/codecs/ncp-codec.js.map +0 -1
  169. package/dist/core/codecs/tier1-json-codec.js +0 -28
  170. package/dist/core/codecs/tier1-json-codec.js.map +0 -1
  171. package/dist/core/codecs/tier2-msgpack-codec.js +0 -26
  172. package/dist/core/codecs/tier2-msgpack-codec.js.map +0 -1
  173. package/dist/core/crypto-provider.js +0 -10
  174. package/dist/core/crypto-provider.js.map +0 -1
  175. package/dist/core/exceptions.js +0 -52
  176. package/dist/core/exceptions.js.map +0 -1
  177. package/dist/core/frame-header.js +0 -185
  178. package/dist/core/frame-header.js.map +0 -1
  179. package/dist/core/frame-registry.js +0 -63
  180. package/dist/core/frame-registry.js.map +0 -1
  181. package/dist/core/frames.js +0 -153
  182. package/dist/core/frames.js.map +0 -1
  183. package/dist/core/index.d.cts +0 -41
  184. package/dist/core/registry.js +0 -17
  185. package/dist/core/registry.js.map +0 -1
  186. package/dist/core/status-codes.js +0 -38
  187. package/dist/core/status-codes.js.map +0 -1
  188. package/dist/frames-B3qLdl_g.d.cts +0 -77
  189. package/dist/frames-Ff7-ZPUl.d.ts +0 -77
  190. package/dist/index.d.cts +0 -21
  191. package/dist/ncp/frames/anchor-frame.js +0 -54
  192. package/dist/ncp/frames/anchor-frame.js.map +0 -1
  193. package/dist/ncp/frames/caps-frame.js +0 -29
  194. package/dist/ncp/frames/caps-frame.js.map +0 -1
  195. package/dist/ncp/frames/diff-frame.js +0 -37
  196. package/dist/ncp/frames/diff-frame.js.map +0 -1
  197. package/dist/ncp/frames/error-frame.js +0 -13
  198. package/dist/ncp/frames/error-frame.js.map +0 -1
  199. package/dist/ncp/frames/hello-frame.js +0 -25
  200. package/dist/ncp/frames/hello-frame.js.map +0 -1
  201. package/dist/ncp/frames/stream-frame.js +0 -18
  202. package/dist/ncp/frames/stream-frame.js.map +0 -1
  203. package/dist/ncp/frames.js +0 -147
  204. package/dist/ncp/frames.js.map +0 -1
  205. package/dist/ncp/handshake.js +0 -80
  206. package/dist/ncp/handshake.js.map +0 -1
  207. package/dist/ncp/index.d.cts +0 -6
  208. package/dist/ncp/ncp-error-codes.js +0 -32
  209. package/dist/ncp/ncp-error-codes.js.map +0 -1
  210. package/dist/ncp/ncp-patch-format.js +0 -13
  211. package/dist/ncp/ncp-patch-format.js.map +0 -1
  212. package/dist/ncp/registry.js +0 -12
  213. package/dist/ncp/registry.js.map +0 -1
  214. package/dist/ncp/stream-manager.js +0 -163
  215. package/dist/ncp/stream-manager.js.map +0 -1
  216. package/dist/ndp/frames.js +0 -87
  217. package/dist/ndp/frames.js.map +0 -1
  218. package/dist/ndp/index.d.cts +0 -86
  219. package/dist/ndp/ndp-registry.js +0 -79
  220. package/dist/ndp/ndp-registry.js.map +0 -1
  221. package/dist/ndp/registry.js +0 -10
  222. package/dist/ndp/registry.js.map +0 -1
  223. package/dist/ndp/validator.js +0 -48
  224. package/dist/ndp/validator.js.map +0 -1
  225. package/dist/nip/frames.js +0 -81
  226. package/dist/nip/frames.js.map +0 -1
  227. package/dist/nip/identity.js +0 -94
  228. package/dist/nip/identity.js.map +0 -1
  229. package/dist/nip/index.d.cts +0 -65
  230. package/dist/nip/registry.js +0 -10
  231. package/dist/nip/registry.js.map +0 -1
  232. package/dist/nop/client.js +0 -90
  233. package/dist/nop/client.js.map +0 -1
  234. package/dist/nop/frames.js +0 -148
  235. package/dist/nop/frames.js.map +0 -1
  236. package/dist/nop/index.d.cts +0 -155
  237. package/dist/nop/models.js +0 -50
  238. package/dist/nop/models.js.map +0 -1
  239. package/dist/nop/nop-types.js +0 -44
  240. package/dist/nop/nop-types.js.map +0 -1
  241. package/dist/nop/registry.js +0 -11
  242. package/dist/nop/registry.js.map +0 -1
  243. package/dist/nwp/client.js +0 -101
  244. package/dist/nwp/client.js.map +0 -1
  245. package/dist/nwp/frames.js +0 -81
  246. package/dist/nwp/frames.js.map +0 -1
  247. package/dist/nwp/index.d.cts +0 -65
  248. package/dist/nwp/registry.js +0 -9
  249. package/dist/nwp/registry.js.map +0 -1
  250. package/dist/setup.js +0 -29
  251. package/dist/setup.js.map +0 -1
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"frames.js","sourceRoot":"","sources":["../../src/core/frames.ts"],"names":[],"mappings":"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"}
@@ -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 };
@@ -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"}