@labacacia/nps-sdk 1.0.0-alpha.2 → 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 (232) hide show
  1. package/CHANGELOG.cn.md +20 -2
  2. package/CHANGELOG.md +20 -2
  3. package/README.cn.md +1 -1
  4. package/README.md +1 -1
  5. package/dist/core/anchor-cache.d.ts +0 -0
  6. package/dist/core/anchor-cache.d.ts.map +0 -0
  7. package/dist/core/cache.d.ts +0 -0
  8. package/dist/core/cache.d.ts.map +0 -0
  9. package/dist/core/canonical-json.d.ts +0 -0
  10. package/dist/core/canonical-json.d.ts.map +0 -0
  11. package/dist/core/codec.d.ts +0 -0
  12. package/dist/core/codec.d.ts.map +0 -0
  13. package/dist/core/codecs/index.d.ts +0 -0
  14. package/dist/core/codecs/index.d.ts.map +0 -0
  15. package/dist/core/codecs/ncp-codec.d.ts +0 -0
  16. package/dist/core/codecs/ncp-codec.d.ts.map +0 -0
  17. package/dist/core/codecs/tier1-json-codec.d.ts +0 -0
  18. package/dist/core/codecs/tier1-json-codec.d.ts.map +0 -0
  19. package/dist/core/codecs/tier2-msgpack-codec.d.ts +0 -0
  20. package/dist/core/codecs/tier2-msgpack-codec.d.ts.map +0 -0
  21. package/dist/core/crypto-provider.d.ts +0 -0
  22. package/dist/core/crypto-provider.d.ts.map +0 -0
  23. package/dist/core/exceptions.d.ts +0 -0
  24. package/dist/core/exceptions.d.ts.map +0 -0
  25. package/dist/core/frame-header.d.ts +0 -0
  26. package/dist/core/frame-header.d.ts.map +0 -0
  27. package/dist/core/frame-registry.d.ts +0 -0
  28. package/dist/core/frame-registry.d.ts.map +0 -0
  29. package/dist/core/frames.d.ts +0 -0
  30. package/dist/core/frames.d.ts.map +0 -0
  31. package/dist/core/index.cjs +90 -9
  32. package/dist/core/index.cjs.map +1 -1
  33. package/dist/core/index.d.ts +0 -0
  34. package/dist/core/index.d.ts.map +0 -0
  35. package/dist/core/index.js +405 -21
  36. package/dist/core/index.js.map +1 -1
  37. package/dist/core/registry.d.ts +0 -0
  38. package/dist/core/registry.d.ts.map +0 -0
  39. package/dist/core/status-codes.d.ts +0 -0
  40. package/dist/core/status-codes.d.ts.map +0 -0
  41. package/dist/index.cjs +3 -1551
  42. package/dist/index.cjs.map +1 -1
  43. package/dist/index.d.ts +1 -1
  44. package/dist/index.d.ts.map +0 -0
  45. package/dist/index.js +5 -9
  46. package/dist/index.js.map +1 -1
  47. package/dist/ncp/frames/anchor-frame.d.ts +0 -0
  48. package/dist/ncp/frames/anchor-frame.d.ts.map +0 -0
  49. package/dist/ncp/frames/caps-frame.d.ts +0 -0
  50. package/dist/ncp/frames/caps-frame.d.ts.map +0 -0
  51. package/dist/ncp/frames/diff-frame.d.ts +0 -0
  52. package/dist/ncp/frames/diff-frame.d.ts.map +0 -0
  53. package/dist/ncp/frames/error-frame.d.ts +0 -0
  54. package/dist/ncp/frames/error-frame.d.ts.map +0 -0
  55. package/dist/ncp/frames/hello-frame.d.ts +0 -0
  56. package/dist/ncp/frames/hello-frame.d.ts.map +0 -0
  57. package/dist/ncp/frames/stream-frame.d.ts +0 -0
  58. package/dist/ncp/frames/stream-frame.d.ts.map +0 -0
  59. package/dist/ncp/frames.d.ts +0 -0
  60. package/dist/ncp/frames.d.ts.map +0 -0
  61. package/dist/ncp/handshake.d.ts +0 -0
  62. package/dist/ncp/handshake.d.ts.map +0 -0
  63. package/dist/ncp/index.cjs +364 -164
  64. package/dist/ncp/index.cjs.map +1 -1
  65. package/dist/ncp/index.d.ts +0 -0
  66. package/dist/ncp/index.d.ts.map +0 -0
  67. package/dist/ncp/index.js +368 -12
  68. package/dist/ncp/index.js.map +1 -1
  69. package/dist/ncp/ncp-error-codes.d.ts +0 -0
  70. package/dist/ncp/ncp-error-codes.d.ts.map +0 -0
  71. package/dist/ncp/ncp-patch-format.d.ts +0 -0
  72. package/dist/ncp/ncp-patch-format.d.ts.map +0 -0
  73. package/dist/ncp/registry.d.ts +0 -0
  74. package/dist/ncp/registry.d.ts.map +0 -0
  75. package/dist/ncp/stream-manager.d.ts +0 -0
  76. package/dist/ncp/stream-manager.d.ts.map +0 -0
  77. package/dist/ndp/frames.d.ts +0 -0
  78. package/dist/ndp/frames.d.ts.map +0 -0
  79. package/dist/ndp/index.cjs +0 -0
  80. package/dist/ndp/index.cjs.map +0 -0
  81. package/dist/ndp/index.d.ts +0 -0
  82. package/dist/ndp/index.d.ts.map +0 -0
  83. package/dist/ndp/index.js +223 -6
  84. package/dist/ndp/index.js.map +1 -1
  85. package/dist/ndp/ndp-registry.d.ts +0 -0
  86. package/dist/ndp/ndp-registry.d.ts.map +0 -0
  87. package/dist/ndp/registry.d.ts +0 -0
  88. package/dist/ndp/registry.d.ts.map +0 -0
  89. package/dist/ndp/validator.d.ts +0 -0
  90. package/dist/ndp/validator.d.ts.map +0 -0
  91. package/dist/nip/frames.d.ts +0 -0
  92. package/dist/nip/frames.d.ts.map +0 -0
  93. package/dist/nip/identity.d.ts +0 -0
  94. package/dist/nip/identity.d.ts.map +0 -0
  95. package/dist/nip/index.cjs +0 -0
  96. package/dist/nip/index.cjs.map +0 -0
  97. package/dist/nip/index.d.ts +0 -0
  98. package/dist/nip/index.d.ts.map +0 -0
  99. package/dist/nip/index.js +187 -5
  100. package/dist/nip/index.js.map +1 -1
  101. package/dist/nip/registry.d.ts +0 -0
  102. package/dist/nip/registry.d.ts.map +0 -0
  103. package/dist/nop/client.d.ts +0 -0
  104. package/dist/nop/client.d.ts.map +0 -0
  105. package/dist/nop/frames.d.ts +0 -0
  106. package/dist/nop/frames.d.ts.map +0 -0
  107. package/dist/nop/index.cjs +62 -1
  108. package/dist/nop/index.cjs.map +1 -1
  109. package/dist/nop/index.d.ts +0 -0
  110. package/dist/nop/index.d.ts.map +0 -0
  111. package/dist/nop/index.js +789 -6
  112. package/dist/nop/index.js.map +1 -1
  113. package/dist/nop/models.d.ts +0 -0
  114. package/dist/nop/models.d.ts.map +0 -0
  115. package/dist/nop/nop-types.d.ts +0 -0
  116. package/dist/nop/nop-types.d.ts.map +0 -0
  117. package/dist/nop/registry.d.ts +0 -0
  118. package/dist/nop/registry.d.ts.map +0 -0
  119. package/dist/nwp/client.d.ts +0 -0
  120. package/dist/nwp/client.d.ts.map +0 -0
  121. package/dist/nwp/frames.d.ts +0 -0
  122. package/dist/nwp/frames.d.ts.map +0 -0
  123. package/dist/nwp/index.cjs +64 -2
  124. package/dist/nwp/index.cjs.map +1 -1
  125. package/dist/nwp/index.d.ts +0 -0
  126. package/dist/nwp/index.d.ts.map +0 -0
  127. package/dist/nwp/index.js +693 -5
  128. package/dist/nwp/index.js.map +1 -1
  129. package/dist/nwp/registry.d.ts +0 -0
  130. package/dist/nwp/registry.d.ts.map +0 -0
  131. package/dist/setup.d.ts +0 -0
  132. package/dist/setup.d.ts.map +0 -0
  133. package/package.json +1 -1
  134. package/src/index.ts +1 -1
  135. package/.npmrc.publish +0 -1
  136. package/dist/codec-CmHeovTV.d.cts +0 -120
  137. package/dist/codec-CmHeovTV.d.ts +0 -120
  138. package/dist/core/anchor-cache.js +0 -104
  139. package/dist/core/anchor-cache.js.map +0 -1
  140. package/dist/core/cache.js +0 -80
  141. package/dist/core/cache.js.map +0 -1
  142. package/dist/core/canonical-json.js +0 -44
  143. package/dist/core/canonical-json.js.map +0 -1
  144. package/dist/core/codec.js +0 -119
  145. package/dist/core/codec.js.map +0 -1
  146. package/dist/core/codecs/index.js +0 -6
  147. package/dist/core/codecs/index.js.map +0 -1
  148. package/dist/core/codecs/ncp-codec.js +0 -93
  149. package/dist/core/codecs/ncp-codec.js.map +0 -1
  150. package/dist/core/codecs/tier1-json-codec.js +0 -28
  151. package/dist/core/codecs/tier1-json-codec.js.map +0 -1
  152. package/dist/core/codecs/tier2-msgpack-codec.js +0 -26
  153. package/dist/core/codecs/tier2-msgpack-codec.js.map +0 -1
  154. package/dist/core/crypto-provider.js +0 -10
  155. package/dist/core/crypto-provider.js.map +0 -1
  156. package/dist/core/exceptions.js +0 -52
  157. package/dist/core/exceptions.js.map +0 -1
  158. package/dist/core/frame-header.js +0 -185
  159. package/dist/core/frame-header.js.map +0 -1
  160. package/dist/core/frame-registry.js +0 -63
  161. package/dist/core/frame-registry.js.map +0 -1
  162. package/dist/core/frames.js +0 -154
  163. package/dist/core/frames.js.map +0 -1
  164. package/dist/core/index.d.cts +0 -41
  165. package/dist/core/registry.js +0 -17
  166. package/dist/core/registry.js.map +0 -1
  167. package/dist/core/status-codes.js +0 -38
  168. package/dist/core/status-codes.js.map +0 -1
  169. package/dist/frames-B3qLdl_g.d.cts +0 -77
  170. package/dist/frames-Ff7-ZPUl.d.ts +0 -77
  171. package/dist/index.d.cts +0 -21
  172. package/dist/ncp/frames/anchor-frame.js +0 -54
  173. package/dist/ncp/frames/anchor-frame.js.map +0 -1
  174. package/dist/ncp/frames/caps-frame.js +0 -29
  175. package/dist/ncp/frames/caps-frame.js.map +0 -1
  176. package/dist/ncp/frames/diff-frame.js +0 -37
  177. package/dist/ncp/frames/diff-frame.js.map +0 -1
  178. package/dist/ncp/frames/error-frame.js +0 -13
  179. package/dist/ncp/frames/error-frame.js.map +0 -1
  180. package/dist/ncp/frames/hello-frame.js +0 -25
  181. package/dist/ncp/frames/hello-frame.js.map +0 -1
  182. package/dist/ncp/frames/stream-frame.js +0 -18
  183. package/dist/ncp/frames/stream-frame.js.map +0 -1
  184. package/dist/ncp/frames.js +0 -192
  185. package/dist/ncp/frames.js.map +0 -1
  186. package/dist/ncp/handshake.js +0 -80
  187. package/dist/ncp/handshake.js.map +0 -1
  188. package/dist/ncp/index.d.cts +0 -6
  189. package/dist/ncp/ncp-error-codes.js +0 -32
  190. package/dist/ncp/ncp-error-codes.js.map +0 -1
  191. package/dist/ncp/ncp-patch-format.js +0 -13
  192. package/dist/ncp/ncp-patch-format.js.map +0 -1
  193. package/dist/ncp/registry.js +0 -13
  194. package/dist/ncp/registry.js.map +0 -1
  195. package/dist/ncp/stream-manager.js +0 -163
  196. package/dist/ncp/stream-manager.js.map +0 -1
  197. package/dist/ndp/frames.js +0 -87
  198. package/dist/ndp/frames.js.map +0 -1
  199. package/dist/ndp/index.d.cts +0 -86
  200. package/dist/ndp/ndp-registry.js +0 -79
  201. package/dist/ndp/ndp-registry.js.map +0 -1
  202. package/dist/ndp/registry.js +0 -10
  203. package/dist/ndp/registry.js.map +0 -1
  204. package/dist/ndp/validator.js +0 -48
  205. package/dist/ndp/validator.js.map +0 -1
  206. package/dist/nip/frames.js +0 -81
  207. package/dist/nip/frames.js.map +0 -1
  208. package/dist/nip/identity.js +0 -94
  209. package/dist/nip/identity.js.map +0 -1
  210. package/dist/nip/index.d.cts +0 -65
  211. package/dist/nip/registry.js +0 -10
  212. package/dist/nip/registry.js.map +0 -1
  213. package/dist/nop/client.js +0 -90
  214. package/dist/nop/client.js.map +0 -1
  215. package/dist/nop/frames.js +0 -148
  216. package/dist/nop/frames.js.map +0 -1
  217. package/dist/nop/index.d.cts +0 -155
  218. package/dist/nop/models.js +0 -50
  219. package/dist/nop/models.js.map +0 -1
  220. package/dist/nop/nop-types.js +0 -44
  221. package/dist/nop/nop-types.js.map +0 -1
  222. package/dist/nop/registry.js +0 -11
  223. package/dist/nop/registry.js.map +0 -1
  224. package/dist/nwp/client.js +0 -101
  225. package/dist/nwp/client.js.map +0 -1
  226. package/dist/nwp/frames.js +0 -81
  227. package/dist/nwp/frames.js.map +0 -1
  228. package/dist/nwp/index.d.cts +0 -65
  229. package/dist/nwp/registry.js +0 -9
  230. package/dist/nwp/registry.js.map +0 -1
  231. package/dist/setup.js +0 -29
  232. package/dist/setup.js.map +0 -1
@@ -1,18 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- // Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD
3
- //
4
- // StreamFrame (0x03) — Streaming data chunks with flow control
5
- // NPS-1 §4.3
6
- import { NcpError } from "../../core/frame-header.js";
7
- // UUID v4 format: xxxxxxxx-xxxx-4xxx-[89ab]xxx-xxxxxxxxxxxx
8
- const UUID_V4_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
9
- /**
10
- * Validate stream_id is a valid UUID v4.
11
- * @throws {NcpError} NPS-CLIENT-BAD-FRAME if stream_id is not a valid UUID v4.
12
- */
13
- export function validateStreamFrame(frame) {
14
- if (!UUID_V4_RE.test(frame.stream_id)) {
15
- throw new NcpError("NPS-CLIENT-BAD-FRAME", `stream_id "${frame.stream_id}" is not a valid UUID v4`);
16
- }
17
- }
18
- //# sourceMappingURL=stream-frame.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream-frame.js","sourceRoot":"","sources":["../../../src/ncp/frames/stream-frame.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,oDAAoD;AACpD,EAAE;AACF,+DAA+D;AAC/D,aAAa;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAatD,4DAA4D;AAC5D,MAAM,UAAU,GACd,wEAAwE,CAAC;AAE3E;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAkB;IACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,QAAQ,CAChB,sBAAsB,EACtB,cAAc,KAAK,CAAC,SAAS,0BAA0B,CACxD,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,192 +0,0 @@
1
- // Copyright 2026 INNO LOTUS PTY LTD
2
- // SPDX-License-Identifier: Apache-2.0
3
- import { EncodingTier, FrameType } from "../core/frames.js";
4
- // ── AnchorFrame ───────────────────────────────────────────────────────────────
5
- export class AnchorFrame {
6
- anchorId;
7
- schema;
8
- ttl;
9
- frameType = FrameType.ANCHOR;
10
- preferredTier = EncodingTier.MSGPACK;
11
- constructor(anchorId, schema, ttl = 3600) {
12
- this.anchorId = anchorId;
13
- this.schema = schema;
14
- this.ttl = ttl;
15
- }
16
- toDict() {
17
- return {
18
- anchor_id: this.anchorId,
19
- schema: { fields: this.schema.fields.map((f) => ({ ...f })) },
20
- ttl: this.ttl,
21
- };
22
- }
23
- static fromDict(data) {
24
- const schemaRaw = data["schema"];
25
- return new AnchorFrame(data["anchor_id"], { fields: schemaRaw.fields }, data["ttl"] ?? 3600);
26
- }
27
- }
28
- // ── DiffFrame ─────────────────────────────────────────────────────────────────
29
- export class DiffFrame {
30
- anchorRef;
31
- baseSeq;
32
- patch;
33
- entityId;
34
- frameType = FrameType.DIFF;
35
- preferredTier = EncodingTier.MSGPACK;
36
- constructor(anchorRef, baseSeq, patch, entityId) {
37
- this.anchorRef = anchorRef;
38
- this.baseSeq = baseSeq;
39
- this.patch = patch;
40
- this.entityId = entityId;
41
- }
42
- toDict() {
43
- return {
44
- anchor_ref: this.anchorRef,
45
- base_seq: this.baseSeq,
46
- patch: this.patch.map((p) => ({ ...p })),
47
- entity_id: this.entityId ?? null,
48
- };
49
- }
50
- static fromDict(data) {
51
- return new DiffFrame(data["anchor_ref"], data["base_seq"], data["patch"], data["entity_id"] ?? undefined);
52
- }
53
- }
54
- // ── StreamFrame ───────────────────────────────────────────────────────────────
55
- export class StreamFrame {
56
- streamId;
57
- seq;
58
- isLast;
59
- data;
60
- anchorRef;
61
- windowSize;
62
- frameType = FrameType.STREAM;
63
- preferredTier = EncodingTier.MSGPACK;
64
- constructor(streamId, seq, isLast, data, anchorRef, windowSize) {
65
- this.streamId = streamId;
66
- this.seq = seq;
67
- this.isLast = isLast;
68
- this.data = data;
69
- this.anchorRef = anchorRef;
70
- this.windowSize = windowSize;
71
- }
72
- toDict() {
73
- return {
74
- stream_id: this.streamId,
75
- seq: this.seq,
76
- is_last: this.isLast,
77
- data: this.data,
78
- anchor_ref: this.anchorRef ?? null,
79
- window_size: this.windowSize ?? null,
80
- };
81
- }
82
- static fromDict(data) {
83
- return new StreamFrame(data["stream_id"], data["seq"], data["is_last"], data["data"], data["anchor_ref"] ?? undefined, data["window_size"] ?? undefined);
84
- }
85
- }
86
- // ── CapsFrame ─────────────────────────────────────────────────────────────────
87
- export class CapsFrame {
88
- anchorRef;
89
- count;
90
- data;
91
- nextCursor;
92
- tokenEst;
93
- cached;
94
- tokenizerUsed;
95
- frameType = FrameType.CAPS;
96
- preferredTier = EncodingTier.MSGPACK;
97
- constructor(anchorRef, count, data, nextCursor, tokenEst, cached, tokenizerUsed) {
98
- this.anchorRef = anchorRef;
99
- this.count = count;
100
- this.data = data;
101
- this.nextCursor = nextCursor;
102
- this.tokenEst = tokenEst;
103
- this.cached = cached;
104
- this.tokenizerUsed = tokenizerUsed;
105
- }
106
- toDict() {
107
- return {
108
- anchor_ref: this.anchorRef,
109
- count: this.count,
110
- data: this.data,
111
- next_cursor: this.nextCursor ?? null,
112
- token_est: this.tokenEst ?? null,
113
- cached: this.cached ?? null,
114
- tokenizer_used: this.tokenizerUsed ?? null,
115
- };
116
- }
117
- static fromDict(data) {
118
- return new CapsFrame(data["anchor_ref"], data["count"], data["data"], data["next_cursor"] ?? undefined, data["token_est"] ?? undefined, data["cached"] ?? undefined, data["tokenizer_used"] ?? undefined);
119
- }
120
- }
121
- // ── ErrorFrame ────────────────────────────────────────────────────────────────
122
- export class ErrorFrame {
123
- status;
124
- error;
125
- message;
126
- details;
127
- frameType = FrameType.ERROR;
128
- preferredTier = EncodingTier.MSGPACK;
129
- constructor(status, error, message, details) {
130
- this.status = status;
131
- this.error = error;
132
- this.message = message;
133
- this.details = details;
134
- }
135
- toDict() {
136
- return {
137
- status: this.status,
138
- error: this.error,
139
- message: this.message ?? null,
140
- details: this.details ?? null,
141
- };
142
- }
143
- static fromDict(data) {
144
- return new ErrorFrame(data["status"], data["error"], data["message"] ?? undefined, data["details"] ?? undefined);
145
- }
146
- }
147
- // ── HelloFrame ────────────────────────────────────────────────────────────────
148
- // NPS-1 §4.6 — Native-mode handshake (0x06). Always Tier-1 JSON: encoding
149
- // is not yet negotiated when this frame is sent.
150
- export class HelloFrame {
151
- npsVersion;
152
- supportedEncodings;
153
- supportedProtocols;
154
- minVersion;
155
- agentId;
156
- maxFramePayload;
157
- extSupport;
158
- maxConcurrentStreams;
159
- e2eEncAlgorithms;
160
- frameType = FrameType.HELLO;
161
- preferredTier = EncodingTier.JSON;
162
- static DEFAULT_MAX_FRAME_PAYLOAD = 0xFFFF;
163
- static DEFAULT_MAX_CONCURRENT_STREAMS = 32;
164
- constructor(npsVersion, supportedEncodings, supportedProtocols, minVersion, agentId, maxFramePayload = HelloFrame.DEFAULT_MAX_FRAME_PAYLOAD, extSupport = false, maxConcurrentStreams = HelloFrame.DEFAULT_MAX_CONCURRENT_STREAMS, e2eEncAlgorithms) {
165
- this.npsVersion = npsVersion;
166
- this.supportedEncodings = supportedEncodings;
167
- this.supportedProtocols = supportedProtocols;
168
- this.minVersion = minVersion;
169
- this.agentId = agentId;
170
- this.maxFramePayload = maxFramePayload;
171
- this.extSupport = extSupport;
172
- this.maxConcurrentStreams = maxConcurrentStreams;
173
- this.e2eEncAlgorithms = e2eEncAlgorithms;
174
- }
175
- toDict() {
176
- return {
177
- nps_version: this.npsVersion,
178
- supported_encodings: [...this.supportedEncodings],
179
- supported_protocols: [...this.supportedProtocols],
180
- min_version: this.minVersion ?? null,
181
- agent_id: this.agentId ?? null,
182
- max_frame_payload: this.maxFramePayload,
183
- ext_support: this.extSupport,
184
- max_concurrent_streams: this.maxConcurrentStreams,
185
- e2e_enc_algorithms: this.e2eEncAlgorithms ? [...this.e2eEncAlgorithms] : null,
186
- };
187
- }
188
- static fromDict(data) {
189
- return new HelloFrame(data["nps_version"], data["supported_encodings"] ?? [], data["supported_protocols"] ?? [], data["min_version"] ?? undefined, data["agent_id"] ?? undefined, data["max_frame_payload"] ?? HelloFrame.DEFAULT_MAX_FRAME_PAYLOAD, data["ext_support"] ?? false, data["max_concurrent_streams"] ?? HelloFrame.DEFAULT_MAX_CONCURRENT_STREAMS, data["e2e_enc_algorithms"] ?? undefined);
190
- }
191
- }
192
- //# sourceMappingURL=frames.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"frames.js","sourceRoot":"","sources":["../../src/ncp/frames.ts"],"names":[],"mappings":"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"}
@@ -1,80 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- // Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD
3
- //
4
- // Handshake — Version negotiation and encoding negotiation
5
- // NPS-1 §2.6
6
- /**
7
- * Parse a "major.minor" (optionally "major.minor.patch") version string into a
8
- * tuple of numeric components. Invalid parts become NaN which makes subsequent
9
- * comparisons return false in both directions (safe failure).
10
- */
11
- function parseVersion(v) {
12
- return v.split(".").map((p) => Number.parseInt(p, 10));
13
- }
14
- /**
15
- * Numeric component-wise comparison of two version strings.
16
- * Returns negative if a < b, zero if equal, positive if a > b.
17
- * Avoids the lexicographic pitfall where "0.9" > "0.10".
18
- */
19
- function compareVersions(a, b) {
20
- const partsA = parseVersion(a);
21
- const partsB = parseVersion(b);
22
- const len = Math.max(partsA.length, partsB.length);
23
- for (let i = 0; i < len; i += 1) {
24
- const x = partsA[i] ?? 0;
25
- const y = partsB[i] ?? 0;
26
- if (x !== y)
27
- return x - y;
28
- }
29
- return 0;
30
- }
31
- /**
32
- * Negotiate the session NPS version between client and server.
33
- *
34
- * Session version = numeric min of client.nps_version and server.nps_version
35
- * (component-wise — "0.9" < "0.10" < "1.0").
36
- * If the effective client minimum (min_version ?? nps_version) > server.nps_version,
37
- * the versions are incompatible.
38
- *
39
- * Spec: NPS-1 §2.6
40
- */
41
- export function negotiateVersion(client, server) {
42
- const clientMin = client.min_version ?? client.nps_version;
43
- const serverVersion = server.nps_version;
44
- if (compareVersions(clientMin, serverVersion) > 0) {
45
- return {
46
- session_version: serverVersion,
47
- compatible: false,
48
- error_code: "NCP-VERSION-INCOMPATIBLE",
49
- };
50
- }
51
- // Session version = component-wise min of client.nps_version and server.nps_version
52
- const sessionVersion = compareVersions(client.nps_version, serverVersion) <= 0
53
- ? client.nps_version
54
- : serverVersion;
55
- return { session_version: sessionVersion, compatible: true };
56
- }
57
- /**
58
- * Negotiate the encoding between client and server preferred lists.
59
- *
60
- * Returns the first mutually supported encoding, preferring "msgpack" over "json".
61
- * Returns null if there is no intersection.
62
- */
63
- export function negotiateEncoding(client, server) {
64
- const serverSet = new Set(server);
65
- // Prefer msgpack over json (and over any other encoding)
66
- if (client.includes("msgpack") && serverSet.has("msgpack")) {
67
- return { encoding: "msgpack" };
68
- }
69
- if (client.includes("json") && serverSet.has("json")) {
70
- return { encoding: "json" };
71
- }
72
- // Fall back to first intersection in client-preference order
73
- for (const enc of client) {
74
- if (serverSet.has(enc)) {
75
- return { encoding: enc };
76
- }
77
- }
78
- return { encoding: null };
79
- }
80
- //# sourceMappingURL=handshake.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handshake.js","sourceRoot":"","sources":["../../src/ncp/handshake.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,oDAAoD;AACpD,EAAE;AACF,2DAA2D;AAC3D,aAAa;AAEb;;;;GAIG;AACH,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,CAAS,EAAE,CAAS;IAC3C,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAqD,EACrD,MAA+B;IAE/B,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC;IAC3D,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC;IAEzC,IAAI,eAAe,CAAC,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO;YACL,eAAe,EAAE,aAAa;YAC9B,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,0BAA0B;SACvC,CAAC;IACJ,CAAC;IAED,oFAAoF;IACpF,MAAM,cAAc,GAClB,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC;QACrD,CAAC,CAAC,MAAM,CAAC,WAAW;QACpB,CAAC,CAAC,aAAa,CAAC;IAEpB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC/D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAgB,EAChB,MAAgB;IAEhB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAElC,yDAAyD;IACzD,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACjC,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC9B,CAAC;IAED,6DAA6D;IAC7D,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC"}
@@ -1,6 +0,0 @@
1
- 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';
2
- import { F as FrameRegistry } from '../codec-CmHeovTV.cjs';
3
-
4
- declare function registerNcpFrames(registry: FrameRegistry): void;
5
-
6
- export { registerNcpFrames };
@@ -1,32 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- // Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD
3
- //
4
- // NCP Error Codes — All v0.4 protocol error codes
5
- // NPS-1 §6 + §7.4
6
- //
7
- // Implementation-only codes (NCP_FRAME_PARSE_ERROR, NCP_FRAME_INCOMPLETE) cover
8
- // wire-layer parse failures not in spec §6. See test/ncp_test_results.md spec
9
- // question 2 for the proposal to register them upstream.
10
- export const NCP_ERROR_CODES = {
11
- // Implementation-only codes (not in spec §6 — see test_results.md spec question 2)
12
- NCP_FRAME_PARSE_ERROR: "NCP-FRAME-PARSE-ERROR",
13
- NCP_FRAME_INCOMPLETE: "NCP-FRAME-INCOMPLETE",
14
- // Spec-defined codes
15
- NCP_FRAME_UNKNOWN_TYPE: "NCP-FRAME-UNKNOWN-TYPE",
16
- NCP_FRAME_PAYLOAD_TOO_LARGE: "NCP-FRAME-PAYLOAD-TOO-LARGE",
17
- NCP_FRAME_FLAGS_INVALID: "NCP-FRAME-FLAGS-INVALID",
18
- NCP_ANCHOR_NOT_FOUND: "NCP-ANCHOR-NOT-FOUND",
19
- NCP_ANCHOR_SCHEMA_INVALID: "NCP-ANCHOR-SCHEMA-INVALID",
20
- NCP_ANCHOR_ID_MISMATCH: "NCP-ANCHOR-ID-MISMATCH",
21
- NCP_ANCHOR_STALE: "NCP-ANCHOR-STALE",
22
- NCP_STREAM_SEQ_GAP: "NCP-STREAM-SEQ-GAP",
23
- NCP_STREAM_NOT_FOUND: "NCP-STREAM-NOT-FOUND",
24
- NCP_STREAM_LIMIT_EXCEEDED: "NCP-STREAM-LIMIT-EXCEEDED",
25
- NCP_STREAM_WINDOW_OVERFLOW: "NCP-STREAM-WINDOW-OVERFLOW",
26
- NCP_ENCODING_UNSUPPORTED: "NCP-ENCODING-UNSUPPORTED",
27
- NCP_DIFF_FORMAT_UNSUPPORTED: "NCP-DIFF-FORMAT-UNSUPPORTED",
28
- NCP_VERSION_INCOMPATIBLE: "NCP-VERSION-INCOMPATIBLE",
29
- NCP_ENC_NOT_NEGOTIATED: "NCP-ENC-NOT-NEGOTIATED",
30
- NCP_ENC_AUTH_FAILED: "NCP-ENC-AUTH-FAILED",
31
- };
32
- //# sourceMappingURL=ncp-error-codes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ncp-error-codes.js","sourceRoot":"","sources":["../../src/ncp/ncp-error-codes.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,oDAAoD;AACpD,EAAE;AACF,kDAAkD;AAClD,kBAAkB;AAClB,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,yDAAyD;AAEzD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,mFAAmF;IACnF,qBAAqB,EAAE,uBAAuB;IAC9C,oBAAoB,EAAE,sBAAsB;IAC5C,qBAAqB;IACrB,sBAAsB,EAAE,wBAAwB;IAChD,2BAA2B,EAAE,6BAA6B;IAC1D,uBAAuB,EAAE,yBAAyB;IAClD,oBAAoB,EAAE,sBAAsB;IAC5C,yBAAyB,EAAE,2BAA2B;IACtD,sBAAsB,EAAE,wBAAwB;IAChD,gBAAgB,EAAE,kBAAkB;IACpC,kBAAkB,EAAE,oBAAoB;IACxC,oBAAoB,EAAE,sBAAsB;IAC5C,yBAAyB,EAAE,2BAA2B;IACtD,0BAA0B,EAAE,4BAA4B;IACxD,wBAAwB,EAAE,0BAA0B;IACpD,2BAA2B,EAAE,6BAA6B;IAC1D,wBAAwB,EAAE,0BAA0B;IACpD,sBAAsB,EAAE,wBAAwB;IAChD,mBAAmB,EAAE,qBAAqB;CAClC,CAAC"}
@@ -1,13 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- // Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD
3
- //
4
- // NCP Patch Format — DiffFrame patch encoding types
5
- // NPS-1 §4.2
6
- export const PATCH_FORMAT = {
7
- JSON_PATCH: "json_patch",
8
- BINARY_BITSET: "binary_bitset",
9
- };
10
- export function isValidPatchFormat(v) {
11
- return v === PATCH_FORMAT.JSON_PATCH || v === PATCH_FORMAT.BINARY_BITSET;
12
- }
13
- //# sourceMappingURL=ncp-patch-format.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ncp-patch-format.js","sourceRoot":"","sources":["../../src/ncp/ncp-patch-format.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,oDAAoD;AACpD,EAAE;AACF,oDAAoD;AACpD,aAAa;AAEb,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;CACtB,CAAC;AAIX,MAAM,UAAU,kBAAkB,CAAC,CAAU;IAC3C,OAAO,CAAC,KAAK,YAAY,CAAC,UAAU,IAAI,CAAC,KAAK,YAAY,CAAC,aAAa,CAAC;AAC3E,CAAC"}
@@ -1,13 +0,0 @@
1
- // Copyright 2026 INNO LOTUS PTY LTD
2
- // SPDX-License-Identifier: Apache-2.0
3
- import { FrameType } from "../core/frames.js";
4
- import { AnchorFrame, CapsFrame, DiffFrame, ErrorFrame, HelloFrame, StreamFrame } from "./frames.js";
5
- export function registerNcpFrames(registry) {
6
- registry.register(FrameType.ANCHOR, AnchorFrame);
7
- registry.register(FrameType.DIFF, DiffFrame);
8
- registry.register(FrameType.STREAM, StreamFrame);
9
- registry.register(FrameType.CAPS, CapsFrame);
10
- registry.register(FrameType.HELLO, HelloFrame);
11
- registry.register(FrameType.ERROR, ErrorFrame);
12
- }
13
- //# sourceMappingURL=registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/ncp/registry.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,sCAAsC;AAGtC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAErG,MAAM,UAAU,iBAAiB,CAAC,QAAuB;IACvD,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACjD,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAI,SAAS,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACjD,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAI,SAAS,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAG,UAAU,CAAC,CAAC;IAChD,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAG,UAAU,CAAC,CAAC;AAClD,CAAC"}
@@ -1,163 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- // Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD
3
- //
4
- // StreamManager — Concurrent stream tracking, sequence validation, flow control
5
- // NPS-1 §4.3, §7.3
6
- import { NcpError } from "../core/frame-header.js";
7
- import { NCP_ERROR_CODES } from "./ncp-error-codes.js";
8
- /**
9
- * Manages concurrent StreamFrame streams.
10
- *
11
- * - Tracks active streams by stream_id
12
- * - Validates sequential seq numbers
13
- * - Enforces max concurrent stream limit (NPS-1 §7.3, default 32)
14
- * - Detects early termination via error_code
15
- * - Enforces window-based flow control on outgoing streams (NCP-S-07–11)
16
- */
17
- export class StreamManager {
18
- streams = new Map();
19
- outgoing = new Map();
20
- maxConcurrent;
21
- constructor(options) {
22
- this.maxConcurrent = options?.maxConcurrent ?? 32;
23
- }
24
- /**
25
- * Receive a StreamFrame chunk.
26
- *
27
- * @returns true if stream is complete (is_last=true or error_code set).
28
- * @throws {NcpError} NCP-STREAM-LIMIT-EXCEEDED if too many concurrent streams.
29
- * @throws {NcpError} NCP-STREAM-NOT-FOUND if frame.seq > 0 for a stream that was never opened.
30
- * @throws {NcpError} NPS-CLIENT-CONFLICT if the stream_id was already completed (stream-id reuse; see test_cases NCP-S-04).
31
- * @throws {NcpError} NCP-STREAM-SEQ-GAP if sequence number is not expected.
32
- */
33
- receive(frame) {
34
- let stream = this.streams.get(frame.stream_id);
35
- if (!stream) {
36
- // A stream is opened only by seq=0. Any other seq on an unknown stream_id
37
- // means the opener was never seen (NCP-S-13: unknown stream_id).
38
- if (frame.seq !== 0) {
39
- throw new NcpError(NCP_ERROR_CODES.NCP_STREAM_NOT_FOUND, `Unknown stream_id ${frame.stream_id} — first frame must have seq=0`);
40
- }
41
- // New stream — check concurrent limit
42
- if (this.streams.size >= this.maxConcurrent) {
43
- throw new NcpError(NCP_ERROR_CODES.NCP_STREAM_LIMIT_EXCEEDED, `Max concurrent streams (${this.maxConcurrent}) exceeded`);
44
- }
45
- stream = {
46
- streamId: frame.stream_id,
47
- expectedSeq: 0,
48
- chunks: [],
49
- completed: false,
50
- };
51
- this.streams.set(frame.stream_id, stream);
52
- }
53
- // Reject writes to completed streams. Per test_cases NCP-S-04, the spec does
54
- // not assign a dedicated NCP code for stream-id reuse; interim mapping uses
55
- // the NPS-level NPS-CLIENT-CONFLICT until a spec-side code is added.
56
- if (stream.completed) {
57
- throw new NcpError("NPS-CLIENT-CONFLICT", `Stream ${frame.stream_id} is already completed — cannot reuse stream_id`);
58
- }
59
- // Sequence validation
60
- if (frame.seq !== stream.expectedSeq) {
61
- // Duplicate detection — same seq as last accepted
62
- if (frame.seq < stream.expectedSeq) {
63
- // Ignore duplicate (idempotent)
64
- return false;
65
- }
66
- throw new NcpError(NCP_ERROR_CODES.NCP_STREAM_SEQ_GAP, `Expected seq ${stream.expectedSeq}, got ${frame.seq} on stream ${frame.stream_id}`);
67
- }
68
- stream.chunks.push(frame.data);
69
- stream.expectedSeq = frame.seq + 1;
70
- // Early termination via error_code
71
- if (frame.error_code) {
72
- stream.completed = true;
73
- stream.errorCode = frame.error_code;
74
- return true;
75
- }
76
- // Normal completion
77
- if (frame.is_last) {
78
- stream.completed = true;
79
- return true;
80
- }
81
- return false;
82
- }
83
- /**
84
- * Send a StreamFrame on an outgoing stream, enforcing window-based flow control.
85
- *
86
- * - seq=0 with window_size initialises remainingWindow (no decrement for opening frame).
87
- * - Subsequent sends decrement remainingWindow when flow control is active.
88
- * - Throws NCP-STREAM-WINDOW-OVERFLOW when remainingWindow === 0.
89
- *
90
- * @throws {NcpError} NCP-STREAM-WINDOW-OVERFLOW if window is exhausted.
91
- */
92
- send(frame) {
93
- let out = this.outgoing.get(frame.stream_id);
94
- if (!out) {
95
- out = {
96
- streamId: frame.stream_id,
97
- remainingWindow: undefined,
98
- paused: false,
99
- };
100
- this.outgoing.set(frame.stream_id, out);
101
- }
102
- // Opening frame: initialise window from window_size if provided.
103
- if (frame.seq === 0 && frame.window_size !== undefined) {
104
- out.remainingWindow = frame.window_size;
105
- return; // opening frame does not consume a window slot
106
- }
107
- // Flow control check for subsequent frames.
108
- if (out.remainingWindow !== undefined) {
109
- if (out.remainingWindow === 0) {
110
- throw new NcpError(NCP_ERROR_CODES.NCP_STREAM_WINDOW_OVERFLOW, `Window exhausted on stream ${frame.stream_id}`);
111
- }
112
- out.remainingWindow -= 1;
113
- }
114
- }
115
- /**
116
- * Update the send window for a stream.
117
- *
118
- * Called when a reverse-direction StreamFrame arrives with data=[] and window_size set.
119
- * Replaces remainingWindow with new_size. Sets paused=true when new_size === 0.
120
- */
121
- updateWindow(streamId, newSize) {
122
- let out = this.outgoing.get(streamId);
123
- if (!out) {
124
- out = {
125
- streamId,
126
- remainingWindow: newSize,
127
- paused: newSize === 0,
128
- };
129
- this.outgoing.set(streamId, out);
130
- return;
131
- }
132
- out.remainingWindow = newSize;
133
- out.paused = newSize === 0;
134
- }
135
- /**
136
- * Returns true when the outgoing stream is paused (window=0 was received).
137
- * Resumes (returns false) once a non-zero window update arrives.
138
- */
139
- isPaused(streamId) {
140
- return this.outgoing.get(streamId)?.paused ?? false;
141
- }
142
- /** Get reassembled data for a completed stream. */
143
- getData(streamId) {
144
- const stream = this.streams.get(streamId);
145
- if (!stream || !stream.completed)
146
- return null;
147
- return stream.chunks.flat();
148
- }
149
- /** Get error code if stream terminated with error. */
150
- getError(streamId) {
151
- return this.streams.get(streamId)?.errorCode;
152
- }
153
- /** Number of active (non-completed) streams. */
154
- get activeCount() {
155
- let count = 0;
156
- for (const s of this.streams.values()) {
157
- if (!s.completed)
158
- count++;
159
- }
160
- return count;
161
- }
162
- }
163
- //# sourceMappingURL=stream-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream-manager.js","sourceRoot":"","sources":["../../src/ncp/stream-manager.ts"],"names":[],"mappings":"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"}
@@ -1,87 +0,0 @@
1
- // Copyright 2026 INNO LOTUS PTY LTD
2
- // SPDX-License-Identifier: Apache-2.0
3
- import { EncodingTier, FrameType } from "../core/frames.js";
4
- export class AnnounceFrame {
5
- nid;
6
- addresses;
7
- capabilities;
8
- ttl;
9
- timestamp;
10
- signature;
11
- nodeType;
12
- frameType = FrameType.ANNOUNCE;
13
- preferredTier = EncodingTier.MSGPACK;
14
- constructor(nid, addresses, capabilities, ttl, timestamp, signature, nodeType) {
15
- this.nid = nid;
16
- this.addresses = addresses;
17
- this.capabilities = capabilities;
18
- this.ttl = ttl;
19
- this.timestamp = timestamp;
20
- this.signature = signature;
21
- this.nodeType = nodeType;
22
- }
23
- unsignedDict() {
24
- return {
25
- nid: this.nid,
26
- addresses: this.addresses,
27
- capabilities: this.capabilities,
28
- ttl: this.ttl,
29
- timestamp: this.timestamp,
30
- node_type: this.nodeType ?? null,
31
- };
32
- }
33
- toDict() {
34
- return { ...this.unsignedDict(), signature: this.signature };
35
- }
36
- static fromDict(data) {
37
- return new AnnounceFrame(data["nid"], data["addresses"], data["capabilities"], data["ttl"], data["timestamp"], data["signature"], data["node_type"] ?? undefined);
38
- }
39
- }
40
- export class ResolveFrame {
41
- target;
42
- requesterNid;
43
- resolved;
44
- frameType = FrameType.RESOLVE;
45
- preferredTier = EncodingTier.MSGPACK;
46
- constructor(target, requesterNid, resolved) {
47
- this.target = target;
48
- this.requesterNid = requesterNid;
49
- this.resolved = resolved;
50
- }
51
- toDict() {
52
- return {
53
- target: this.target,
54
- requester_nid: this.requesterNid ?? null,
55
- resolved: this.resolved ?? null,
56
- };
57
- }
58
- static fromDict(data) {
59
- return new ResolveFrame(data["target"], data["requester_nid"] ?? undefined, data["resolved"] ?? undefined);
60
- }
61
- }
62
- export class GraphFrame {
63
- seq;
64
- initialSync;
65
- nodes;
66
- patch;
67
- frameType = FrameType.GRAPH;
68
- preferredTier = EncodingTier.MSGPACK;
69
- constructor(seq, initialSync, nodes, patch) {
70
- this.seq = seq;
71
- this.initialSync = initialSync;
72
- this.nodes = nodes;
73
- this.patch = patch;
74
- }
75
- toDict() {
76
- return {
77
- seq: this.seq,
78
- initial_sync: this.initialSync,
79
- nodes: this.nodes ?? null,
80
- patch: this.patch ?? null,
81
- };
82
- }
83
- static fromDict(data) {
84
- return new GraphFrame(data["seq"], data["initial_sync"], data["nodes"] ?? undefined, data["patch"] ?? undefined);
85
- }
86
- }
87
- //# sourceMappingURL=frames.js.map