@labacacia/nps-sdk 1.0.0-alpha.4 → 1.0.0-alpha.6

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 (363) hide show
  1. package/CHANGELOG.cn.md +2 -73
  2. package/CHANGELOG.md +2 -82
  3. package/CONTRIBUTING.cn.md +0 -0
  4. package/CONTRIBUTING.md +0 -0
  5. package/LICENSE +0 -0
  6. package/NOTICE +0 -0
  7. package/README.cn.md +3 -3
  8. package/README.md +3 -3
  9. package/doc/nps-sdk.core.cn.md +0 -0
  10. package/doc/nps-sdk.core.md +0 -0
  11. package/doc/nps-sdk.ncp.cn.md +0 -0
  12. package/doc/nps-sdk.ncp.md +0 -0
  13. package/doc/nps-sdk.ndp.cn.md +0 -0
  14. package/doc/nps-sdk.ndp.md +0 -0
  15. package/doc/nps-sdk.nip.cn.md +30 -0
  16. package/doc/nps-sdk.nip.md +30 -0
  17. package/doc/nps-sdk.nop.cn.md +0 -0
  18. package/doc/nps-sdk.nop.md +0 -0
  19. package/doc/nps-sdk.nwp.cn.md +71 -0
  20. package/doc/nps-sdk.nwp.md +71 -0
  21. package/doc/overview.cn.md +0 -0
  22. package/doc/overview.md +0 -0
  23. package/nip-ca-server/Dockerfile +0 -0
  24. package/nip-ca-server/README.md +1 -1
  25. package/nip-ca-server/db/001_init.sql +0 -0
  26. package/nip-ca-server/docker-compose.yml +0 -0
  27. package/nip-ca-server/package.json +0 -0
  28. package/nip-ca-server/src/ca.ts +0 -0
  29. package/nip-ca-server/src/db.ts +0 -0
  30. package/nip-ca-server/src/index.ts +0 -0
  31. package/nip-ca-server/tsconfig.json +0 -0
  32. package/package.json +1 -1
  33. package/src/core/anchor-cache.ts +0 -0
  34. package/src/core/cache.ts +0 -0
  35. package/src/core/canonical-json.ts +0 -0
  36. package/src/core/codec.ts +0 -0
  37. package/src/core/codecs/index.ts +0 -0
  38. package/src/core/codecs/ncp-codec.ts +0 -0
  39. package/src/core/codecs/tier1-json-codec.ts +0 -0
  40. package/src/core/codecs/tier2-msgpack-codec.ts +0 -0
  41. package/src/core/crypto-provider.ts +0 -0
  42. package/src/core/exceptions.ts +0 -0
  43. package/src/core/frame-header.ts +0 -0
  44. package/src/core/frame-registry.ts +0 -0
  45. package/src/core/frames.ts +0 -0
  46. package/src/core/index.ts +0 -0
  47. package/src/core/registry.ts +0 -0
  48. package/src/core/status-codes.ts +1 -0
  49. package/src/ncp/frames/anchor-frame.ts +0 -0
  50. package/src/ncp/frames/caps-frame.ts +0 -0
  51. package/src/ncp/frames/diff-frame.ts +0 -0
  52. package/src/ncp/frames/error-frame.ts +0 -0
  53. package/src/ncp/frames/hello-frame.ts +0 -0
  54. package/src/ncp/frames/stream-frame.ts +0 -0
  55. package/src/ncp/frames.ts +0 -0
  56. package/src/ncp/handshake.ts +0 -0
  57. package/src/ncp/ncp-patch-format.ts +0 -0
  58. package/src/ncp/registry.ts +0 -0
  59. package/src/ncp/stream-manager.ts +0 -0
  60. package/src/ndp/dns-txt.ts +86 -0
  61. package/src/ndp/frames.ts +0 -0
  62. package/src/ndp/index.ts +1 -0
  63. package/src/ndp/ndp-registry.ts +34 -0
  64. package/src/ndp/registry.ts +0 -0
  65. package/src/ndp/validator.ts +0 -0
  66. package/src/nip/assurance-level.ts +6 -1
  67. package/src/nip/error-codes.ts +4 -2
  68. package/src/nip/identity.ts +0 -0
  69. package/src/nip/registry.ts +0 -0
  70. package/src/nip/x509/oids.ts +3 -4
  71. package/src/nop/client.ts +1 -1
  72. package/src/nop/frames.ts +0 -0
  73. package/src/nop/index.ts +0 -0
  74. package/src/nop/models.ts +0 -0
  75. package/src/nop/nop-types.ts +0 -0
  76. package/src/nop/registry.ts +0 -0
  77. package/src/nwp/client.ts +4 -4
  78. package/src/nwp/frames.ts +0 -0
  79. package/src/nwp/index.ts +0 -0
  80. package/src/nwp/registry.ts +0 -0
  81. package/src/setup.ts +0 -0
  82. package/tests/core/anchor-cache.test.ts +0 -0
  83. package/tests/core/codec.test.ts +0 -0
  84. package/tests/core/frame-registry.test.ts +0 -0
  85. package/tests/core.test.ts +0 -0
  86. package/tests/ncp/diff-binary-bitset.test.ts +0 -0
  87. package/tests/ncp/e2e-enc-reject.test.ts +0 -0
  88. package/tests/ncp/err-error-frame.test.ts +0 -0
  89. package/tests/ncp/frames.test.ts +0 -0
  90. package/tests/ncp/framing.test.ts +0 -0
  91. package/tests/ncp/hello-frame.test.ts +0 -0
  92. package/tests/ncp/inline-anchor.test.ts +0 -0
  93. package/tests/ncp/security.test.ts +0 -0
  94. package/tests/ncp/stream-window.test.ts +0 -0
  95. package/tests/ncp/stream.test.ts +0 -0
  96. package/tests/ncp/version-negotiation.test.ts +0 -0
  97. package/tests/ndp.test.ts +106 -0
  98. package/tests/nip.test.ts +0 -0
  99. package/tests/nop.test.ts +0 -0
  100. package/tests/nwp.test.ts +0 -0
  101. package/tsconfig.json +0 -0
  102. package/tsup.config.ts +0 -0
  103. package/vitest.config.ts +0 -0
  104. package/dist/core/anchor-cache.d.ts +0 -42
  105. package/dist/core/anchor-cache.d.ts.map +0 -1
  106. package/dist/core/anchor-cache.js +0 -104
  107. package/dist/core/anchor-cache.js.map +0 -1
  108. package/dist/core/cache.d.ts +0 -14
  109. package/dist/core/cache.d.ts.map +0 -1
  110. package/dist/core/cache.js +0 -80
  111. package/dist/core/cache.js.map +0 -1
  112. package/dist/core/canonical-json.d.ts +0 -12
  113. package/dist/core/canonical-json.d.ts.map +0 -1
  114. package/dist/core/canonical-json.js +0 -44
  115. package/dist/core/canonical-json.js.map +0 -1
  116. package/dist/core/codec.d.ts +0 -32
  117. package/dist/core/codec.d.ts.map +0 -1
  118. package/dist/core/codec.js +0 -119
  119. package/dist/core/codec.js.map +0 -1
  120. package/dist/core/codecs/index.d.ts +0 -4
  121. package/dist/core/codecs/index.d.ts.map +0 -1
  122. package/dist/core/codecs/index.js +0 -6
  123. package/dist/core/codecs/index.js.map +0 -1
  124. package/dist/core/codecs/ncp-codec.d.ts +0 -39
  125. package/dist/core/codecs/ncp-codec.d.ts.map +0 -1
  126. package/dist/core/codecs/ncp-codec.js +0 -93
  127. package/dist/core/codecs/ncp-codec.js.map +0 -1
  128. package/dist/core/codecs/tier1-json-codec.d.ts +0 -10
  129. package/dist/core/codecs/tier1-json-codec.d.ts.map +0 -1
  130. package/dist/core/codecs/tier1-json-codec.js +0 -28
  131. package/dist/core/codecs/tier1-json-codec.js.map +0 -1
  132. package/dist/core/codecs/tier2-msgpack-codec.d.ts +0 -10
  133. package/dist/core/codecs/tier2-msgpack-codec.d.ts.map +0 -1
  134. package/dist/core/codecs/tier2-msgpack-codec.js +0 -26
  135. package/dist/core/codecs/tier2-msgpack-codec.js.map +0 -1
  136. package/dist/core/crypto-provider.d.ts +0 -31
  137. package/dist/core/crypto-provider.d.ts.map +0 -1
  138. package/dist/core/crypto-provider.js +0 -10
  139. package/dist/core/crypto-provider.js.map +0 -1
  140. package/dist/core/exceptions.d.ts +0 -27
  141. package/dist/core/exceptions.d.ts.map +0 -1
  142. package/dist/core/exceptions.js +0 -52
  143. package/dist/core/exceptions.js.map +0 -1
  144. package/dist/core/frame-header.d.ts +0 -87
  145. package/dist/core/frame-header.d.ts.map +0 -1
  146. package/dist/core/frame-header.js +0 -185
  147. package/dist/core/frame-header.js.map +0 -1
  148. package/dist/core/frame-registry.d.ts +0 -35
  149. package/dist/core/frame-registry.d.ts.map +0 -1
  150. package/dist/core/frame-registry.js +0 -63
  151. package/dist/core/frame-registry.js.map +0 -1
  152. package/dist/core/frames.d.ts +0 -81
  153. package/dist/core/frames.d.ts.map +0 -1
  154. package/dist/core/frames.js +0 -154
  155. package/dist/core/frames.js.map +0 -1
  156. package/dist/core/index.d.ts +0 -11
  157. package/dist/core/index.d.ts.map +0 -1
  158. package/dist/core/index.js +0 -22
  159. package/dist/core/index.js.map +0 -1
  160. package/dist/core/registry.d.ts +0 -11
  161. package/dist/core/registry.d.ts.map +0 -1
  162. package/dist/core/registry.js +0 -17
  163. package/dist/core/registry.js.map +0 -1
  164. package/dist/core/status-codes.d.ts +0 -28
  165. package/dist/core/status-codes.d.ts.map +0 -1
  166. package/dist/core/status-codes.js +0 -38
  167. package/dist/core/status-codes.js.map +0 -1
  168. package/dist/index.d.ts +0 -2
  169. package/dist/index.d.ts.map +0 -1
  170. package/dist/index.js +0 -10
  171. package/dist/index.js.map +0 -1
  172. package/dist/ncp/frames/anchor-frame.d.ts +0 -29
  173. package/dist/ncp/frames/anchor-frame.d.ts.map +0 -1
  174. package/dist/ncp/frames/anchor-frame.js +0 -54
  175. package/dist/ncp/frames/anchor-frame.js.map +0 -1
  176. package/dist/ncp/frames/caps-frame.d.ts +0 -29
  177. package/dist/ncp/frames/caps-frame.d.ts.map +0 -1
  178. package/dist/ncp/frames/caps-frame.js +0 -29
  179. package/dist/ncp/frames/caps-frame.js.map +0 -1
  180. package/dist/ncp/frames/diff-frame.d.ts +0 -32
  181. package/dist/ncp/frames/diff-frame.d.ts.map +0 -1
  182. package/dist/ncp/frames/diff-frame.js +0 -37
  183. package/dist/ncp/frames/diff-frame.js.map +0 -1
  184. package/dist/ncp/frames/error-frame.d.ts +0 -16
  185. package/dist/ncp/frames/error-frame.d.ts.map +0 -1
  186. package/dist/ncp/frames/error-frame.js +0 -13
  187. package/dist/ncp/frames/error-frame.js.map +0 -1
  188. package/dist/ncp/frames/hello-frame.d.ts +0 -21
  189. package/dist/ncp/frames/hello-frame.d.ts.map +0 -1
  190. package/dist/ncp/frames/hello-frame.js +0 -25
  191. package/dist/ncp/frames/hello-frame.js.map +0 -1
  192. package/dist/ncp/frames/stream-frame.d.ts +0 -16
  193. package/dist/ncp/frames/stream-frame.d.ts.map +0 -1
  194. package/dist/ncp/frames/stream-frame.js +0 -18
  195. package/dist/ncp/frames/stream-frame.js.map +0 -1
  196. package/dist/ncp/frames.d.ts +0 -94
  197. package/dist/ncp/frames.d.ts.map +0 -1
  198. package/dist/ncp/frames.js +0 -192
  199. package/dist/ncp/frames.js.map +0 -1
  200. package/dist/ncp/handshake.d.ts +0 -30
  201. package/dist/ncp/handshake.d.ts.map +0 -1
  202. package/dist/ncp/handshake.js +0 -80
  203. package/dist/ncp/handshake.js.map +0 -1
  204. package/dist/ncp/index.d.ts +0 -12
  205. package/dist/ncp/index.d.ts.map +0 -1
  206. package/dist/ncp/index.js +0 -14
  207. package/dist/ncp/index.js.map +0 -1
  208. package/dist/ncp/ncp-error-codes.d.ts +0 -23
  209. package/dist/ncp/ncp-error-codes.d.ts.map +0 -1
  210. package/dist/ncp/ncp-error-codes.js +0 -34
  211. package/dist/ncp/ncp-error-codes.js.map +0 -1
  212. package/dist/ncp/ncp-patch-format.d.ts +0 -7
  213. package/dist/ncp/ncp-patch-format.d.ts.map +0 -1
  214. package/dist/ncp/ncp-patch-format.js +0 -13
  215. package/dist/ncp/ncp-patch-format.js.map +0 -1
  216. package/dist/ncp/preamble.d.ts +0 -47
  217. package/dist/ncp/preamble.d.ts.map +0 -1
  218. package/dist/ncp/preamble.js +0 -74
  219. package/dist/ncp/preamble.js.map +0 -1
  220. package/dist/ncp/registry.d.ts +0 -3
  221. package/dist/ncp/registry.d.ts.map +0 -1
  222. package/dist/ncp/registry.js +0 -13
  223. package/dist/ncp/registry.js.map +0 -1
  224. package/dist/ncp/stream-manager.d.ts +0 -57
  225. package/dist/ncp/stream-manager.d.ts.map +0 -1
  226. package/dist/ncp/stream-manager.js +0 -163
  227. package/dist/ncp/stream-manager.js.map +0 -1
  228. package/dist/ndp/frames.d.ts +0 -56
  229. package/dist/ndp/frames.d.ts.map +0 -1
  230. package/dist/ndp/frames.js +0 -87
  231. package/dist/ndp/frames.js.map +0 -1
  232. package/dist/ndp/index.d.ts +0 -5
  233. package/dist/ndp/index.d.ts.map +0 -1
  234. package/dist/ndp/index.js +0 -7
  235. package/dist/ndp/index.js.map +0 -1
  236. package/dist/ndp/ndp-registry.d.ts +0 -11
  237. package/dist/ndp/ndp-registry.d.ts.map +0 -1
  238. package/dist/ndp/ndp-registry.js +0 -79
  239. package/dist/ndp/ndp-registry.js.map +0 -1
  240. package/dist/ndp/registry.d.ts +0 -3
  241. package/dist/ndp/registry.d.ts.map +0 -1
  242. package/dist/ndp/registry.js +0 -10
  243. package/dist/ndp/registry.js.map +0 -1
  244. package/dist/ndp/validator.d.ts +0 -18
  245. package/dist/ndp/validator.d.ts.map +0 -1
  246. package/dist/ndp/validator.js +0 -48
  247. package/dist/ndp/validator.js.map +0 -1
  248. package/dist/nip/acme/client.d.ts +0 -31
  249. package/dist/nip/acme/client.d.ts.map +0 -1
  250. package/dist/nip/acme/client.js +0 -136
  251. package/dist/nip/acme/client.js.map +0 -1
  252. package/dist/nip/acme/index.d.ts +0 -6
  253. package/dist/nip/acme/index.d.ts.map +0 -1
  254. package/dist/nip/acme/index.js +0 -8
  255. package/dist/nip/acme/index.js.map +0 -1
  256. package/dist/nip/acme/jws.d.ts +0 -31
  257. package/dist/nip/acme/jws.d.ts.map +0 -1
  258. package/dist/nip/acme/jws.js +0 -76
  259. package/dist/nip/acme/jws.js.map +0 -1
  260. package/dist/nip/acme/messages.d.ts +0 -71
  261. package/dist/nip/acme/messages.d.ts.map +0 -1
  262. package/dist/nip/acme/messages.js +0 -4
  263. package/dist/nip/acme/messages.js.map +0 -1
  264. package/dist/nip/acme/server.d.ts +0 -41
  265. package/dist/nip/acme/server.d.ts.map +0 -1
  266. package/dist/nip/acme/server.js +0 -458
  267. package/dist/nip/acme/server.js.map +0 -1
  268. package/dist/nip/acme/wire.d.ts +0 -19
  269. package/dist/nip/acme/wire.d.ts.map +0 -1
  270. package/dist/nip/acme/wire.js +0 -21
  271. package/dist/nip/acme/wire.js.map +0 -1
  272. package/dist/nip/assurance-level.d.ts +0 -14
  273. package/dist/nip/assurance-level.d.ts.map +0 -1
  274. package/dist/nip/assurance-level.js +0 -33
  275. package/dist/nip/assurance-level.js.map +0 -1
  276. package/dist/nip/cert-format.d.ts +0 -5
  277. package/dist/nip/cert-format.d.ts.map +0 -1
  278. package/dist/nip/cert-format.js +0 -6
  279. package/dist/nip/cert-format.js.map +0 -1
  280. package/dist/nip/error-codes.d.ts +0 -23
  281. package/dist/nip/error-codes.d.ts.map +0 -1
  282. package/dist/nip/error-codes.js +0 -30
  283. package/dist/nip/error-codes.js.map +0 -1
  284. package/dist/nip/frames.d.ts +0 -53
  285. package/dist/nip/frames.d.ts.map +0 -1
  286. package/dist/nip/frames.js +0 -106
  287. package/dist/nip/frames.js.map +0 -1
  288. package/dist/nip/identity.d.ts +0 -18
  289. package/dist/nip/identity.d.ts.map +0 -1
  290. package/dist/nip/identity.js +0 -94
  291. package/dist/nip/identity.js.map +0 -1
  292. package/dist/nip/index.d.ts +0 -10
  293. package/dist/nip/index.d.ts.map +0 -1
  294. package/dist/nip/index.js +0 -13
  295. package/dist/nip/index.js.map +0 -1
  296. package/dist/nip/registry.d.ts +0 -3
  297. package/dist/nip/registry.d.ts.map +0 -1
  298. package/dist/nip/registry.js +0 -10
  299. package/dist/nip/registry.js.map +0 -1
  300. package/dist/nip/verifier.d.ts +0 -23
  301. package/dist/nip/verifier.d.ts.map +0 -1
  302. package/dist/nip/verifier.js +0 -90
  303. package/dist/nip/verifier.js.map +0 -1
  304. package/dist/nip/x509/builder.d.ts +0 -35
  305. package/dist/nip/x509/builder.d.ts.map +0 -1
  306. package/dist/nip/x509/builder.js +0 -59
  307. package/dist/nip/x509/builder.js.map +0 -1
  308. package/dist/nip/x509/index.d.ts +0 -4
  309. package/dist/nip/x509/index.d.ts.map +0 -1
  310. package/dist/nip/x509/index.js +0 -6
  311. package/dist/nip/x509/index.js.map +0 -1
  312. package/dist/nip/x509/oids.d.ts +0 -17
  313. package/dist/nip/x509/oids.d.ts.map +0 -1
  314. package/dist/nip/x509/oids.js +0 -23
  315. package/dist/nip/x509/oids.js.map +0 -1
  316. package/dist/nip/x509/verifier.d.ts +0 -26
  317. package/dist/nip/x509/verifier.d.ts.map +0 -1
  318. package/dist/nip/x509/verifier.js +0 -171
  319. package/dist/nip/x509/verifier.js.map +0 -1
  320. package/dist/nop/client.d.ts +0 -34
  321. package/dist/nop/client.d.ts.map +0 -1
  322. package/dist/nop/client.js +0 -90
  323. package/dist/nop/client.js.map +0 -1
  324. package/dist/nop/frames.d.ts +0 -65
  325. package/dist/nop/frames.d.ts.map +0 -1
  326. package/dist/nop/frames.js +0 -148
  327. package/dist/nop/frames.js.map +0 -1
  328. package/dist/nop/index.d.ts +0 -5
  329. package/dist/nop/index.d.ts.map +0 -1
  330. package/dist/nop/index.js +0 -7
  331. package/dist/nop/index.js.map +0 -1
  332. package/dist/nop/models.d.ts +0 -58
  333. package/dist/nop/models.d.ts.map +0 -1
  334. package/dist/nop/models.js +0 -50
  335. package/dist/nop/models.js.map +0 -1
  336. package/dist/nop/nop-types.d.ts +0 -136
  337. package/dist/nop/nop-types.d.ts.map +0 -1
  338. package/dist/nop/nop-types.js +0 -44
  339. package/dist/nop/nop-types.js.map +0 -1
  340. package/dist/nop/registry.d.ts +0 -3
  341. package/dist/nop/registry.d.ts.map +0 -1
  342. package/dist/nop/registry.js +0 -11
  343. package/dist/nop/registry.js.map +0 -1
  344. package/dist/nwp/client.d.ts +0 -22
  345. package/dist/nwp/client.d.ts.map +0 -1
  346. package/dist/nwp/client.js +0 -101
  347. package/dist/nwp/client.js.map +0 -1
  348. package/dist/nwp/frames.d.ts +0 -46
  349. package/dist/nwp/frames.d.ts.map +0 -1
  350. package/dist/nwp/frames.js +0 -81
  351. package/dist/nwp/frames.js.map +0 -1
  352. package/dist/nwp/index.d.ts +0 -4
  353. package/dist/nwp/index.d.ts.map +0 -1
  354. package/dist/nwp/index.js +0 -6
  355. package/dist/nwp/index.js.map +0 -1
  356. package/dist/nwp/registry.d.ts +0 -3
  357. package/dist/nwp/registry.d.ts.map +0 -1
  358. package/dist/nwp/registry.js +0 -9
  359. package/dist/nwp/registry.js.map +0 -1
  360. package/dist/setup.d.ts +0 -10
  361. package/dist/setup.d.ts.map +0 -1
  362. package/dist/setup.js +0 -29
  363. package/dist/setup.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"ncp-patch-format.d.ts","sourceRoot":"","sources":["../../src/ncp/ncp-patch-format.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,YAAY;;;CAGf,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,OAAO,YAAY,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAEzE,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,WAAW,CAE/D"}
@@ -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,47 +0,0 @@
1
- /**
2
- * NCP native-mode connection preamble — the 8-byte ASCII constant
3
- * `"NPS/1.0\n"` that every native-mode client MUST emit immediately
4
- * after the transport handshake and before its first HelloFrame.
5
- * Defined by NPS-RFC-0001 and NPS-1 NCP §2.6.1.
6
- *
7
- * HTTP-mode connections do not use the preamble.
8
- */
9
- export declare const PREAMBLE_LITERAL = "NPS/1.0\n";
10
- export declare const PREAMBLE_LENGTH = 8;
11
- export declare const PREAMBLE_BYTES: Uint8Array;
12
- /** Validation timeout in milliseconds (NPS-RFC-0001 §4.1). */
13
- export declare const PREAMBLE_READ_TIMEOUT_MS = 10000;
14
- /** Maximum delay before closing after a mismatch, in milliseconds. */
15
- export declare const PREAMBLE_CLOSE_DEADLINE_MS = 500;
16
- export declare const PREAMBLE_ERROR_CODE = "NCP-PREAMBLE-INVALID";
17
- export declare const PREAMBLE_STATUS_CODE = "NPS-PROTO-PREAMBLE-INVALID";
18
- export declare class NcpPreambleInvalidError extends Error {
19
- readonly errorCode = "NCP-PREAMBLE-INVALID";
20
- readonly statusCode = "NPS-PROTO-PREAMBLE-INVALID";
21
- constructor(reason: string);
22
- }
23
- /**
24
- * Returns `true` iff `buf` starts with the 8-byte NPS/1.0 preamble.
25
- * Safe to call with shorter buffers.
26
- */
27
- export declare function preambleMatches(buf: Uint8Array): boolean;
28
- /**
29
- * Validates a presumed-preamble buffer.
30
- * Returns `{ valid: true, reason: "" }` on success or `{ valid: false, reason }` on failure.
31
- */
32
- export declare function tryValidatePreamble(buf: Uint8Array): {
33
- valid: boolean;
34
- reason: string;
35
- };
36
- /**
37
- * Validates a presumed-preamble buffer, throwing {@link NcpPreambleInvalidError} on mismatch.
38
- */
39
- export declare function validatePreamble(buf: Uint8Array): void;
40
- /**
41
- * Writes the preamble bytes to `writer`.
42
- * `writer` must expose a `write(buf: Uint8Array): void` method (e.g. Node.js `net.Socket`).
43
- */
44
- export declare function writePreamble(writer: {
45
- write(buf: Uint8Array): void;
46
- }): void;
47
- //# sourceMappingURL=preamble.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preamble.d.ts","sourceRoot":"","sources":["../../src/ncp/preamble.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAC5C,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,cAAc,EAAE,UAAuD,CAAC;AACrF,8DAA8D;AAC9D,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAC/C,sEAAsE;AACtE,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C,eAAO,MAAM,mBAAmB,yBAA0B,CAAC;AAC3D,eAAO,MAAM,oBAAoB,+BAA+B,CAAC;AAEjE,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,SAAS,0BAAwB;IAC1C,QAAQ,CAAC,UAAU,gCAAwB;gBAE/B,MAAM,EAAE,MAAM;CAI3B;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAMxD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAavF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAGtD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE;IAAE,KAAK,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAE5E"}
@@ -1,74 +0,0 @@
1
- // Copyright 2026 INNO LOTUS PTY LTD
2
- // SPDX-License-Identifier: Apache-2.0
3
- /**
4
- * NCP native-mode connection preamble — the 8-byte ASCII constant
5
- * `"NPS/1.0\n"` that every native-mode client MUST emit immediately
6
- * after the transport handshake and before its first HelloFrame.
7
- * Defined by NPS-RFC-0001 and NPS-1 NCP §2.6.1.
8
- *
9
- * HTTP-mode connections do not use the preamble.
10
- */
11
- export const PREAMBLE_LITERAL = "NPS/1.0\n";
12
- export const PREAMBLE_LENGTH = 8;
13
- export const PREAMBLE_BYTES = new TextEncoder().encode(PREAMBLE_LITERAL);
14
- /** Validation timeout in milliseconds (NPS-RFC-0001 §4.1). */
15
- export const PREAMBLE_READ_TIMEOUT_MS = 10_000;
16
- /** Maximum delay before closing after a mismatch, in milliseconds. */
17
- export const PREAMBLE_CLOSE_DEADLINE_MS = 500;
18
- export const PREAMBLE_ERROR_CODE = "NCP-PREAMBLE-INVALID";
19
- export const PREAMBLE_STATUS_CODE = "NPS-PROTO-PREAMBLE-INVALID";
20
- export class NcpPreambleInvalidError extends Error {
21
- errorCode = PREAMBLE_ERROR_CODE;
22
- statusCode = PREAMBLE_STATUS_CODE;
23
- constructor(reason) {
24
- super(reason);
25
- this.name = "NcpPreambleInvalidError";
26
- }
27
- }
28
- /**
29
- * Returns `true` iff `buf` starts with the 8-byte NPS/1.0 preamble.
30
- * Safe to call with shorter buffers.
31
- */
32
- export function preambleMatches(buf) {
33
- if (buf.length < PREAMBLE_LENGTH)
34
- return false;
35
- for (let i = 0; i < PREAMBLE_LENGTH; i++) {
36
- if (buf[i] !== PREAMBLE_BYTES[i])
37
- return false;
38
- }
39
- return true;
40
- }
41
- /**
42
- * Validates a presumed-preamble buffer.
43
- * Returns `{ valid: true, reason: "" }` on success or `{ valid: false, reason }` on failure.
44
- */
45
- export function tryValidatePreamble(buf) {
46
- if (buf.length < PREAMBLE_LENGTH) {
47
- return { valid: false, reason: `short read (${buf.length}/${PREAMBLE_LENGTH} bytes); peer is not speaking NCP` };
48
- }
49
- if (!preambleMatches(buf)) {
50
- // "NPS/" = 0x4E 0x50 0x53 0x2F
51
- const isNps = buf[0] === 0x4e && buf[1] === 0x50 && buf[2] === 0x53 && buf[3] === 0x2f;
52
- if (isNps) {
53
- return { valid: false, reason: "future-major-version NPS preamble; close with NPS-PREAMBLE-UNSUPPORTED-VERSION diagnostic" };
54
- }
55
- return { valid: false, reason: "preamble mismatch; peer is not speaking NPS/1.x" };
56
- }
57
- return { valid: true, reason: "" };
58
- }
59
- /**
60
- * Validates a presumed-preamble buffer, throwing {@link NcpPreambleInvalidError} on mismatch.
61
- */
62
- export function validatePreamble(buf) {
63
- const { valid, reason } = tryValidatePreamble(buf);
64
- if (!valid)
65
- throw new NcpPreambleInvalidError(reason);
66
- }
67
- /**
68
- * Writes the preamble bytes to `writer`.
69
- * `writer` must expose a `write(buf: Uint8Array): void` method (e.g. Node.js `net.Socket`).
70
- */
71
- export function writePreamble(writer) {
72
- writer.write(PREAMBLE_BYTES);
73
- }
74
- //# sourceMappingURL=preamble.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preamble.js","sourceRoot":"","sources":["../../src/ncp/preamble.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,sCAAsC;AAEtC;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAC5C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,cAAc,GAAe,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACrF,8DAA8D;AAC9D,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAC/C,sEAAsE;AACtE,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C,MAAM,CAAC,MAAM,mBAAmB,GAAI,sBAAsB,CAAC;AAC3D,MAAM,CAAC,MAAM,oBAAoB,GAAG,4BAA4B,CAAC;AAEjE,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IACvC,SAAS,GAAI,mBAAmB,CAAC;IACjC,UAAU,GAAG,oBAAoB,CAAC;IAE3C,YAAY,MAAc;QACxB,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAe;IAC7C,IAAI,GAAG,CAAC,MAAM,GAAG,eAAe;QAAE,OAAO,KAAK,CAAC;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACjD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAe;IACjD,IAAI,GAAG,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;QACjC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,GAAG,CAAC,MAAM,IAAI,eAAe,mCAAmC,EAAE,CAAC;IACnH,CAAC;IACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,+BAA+B;QAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;QACvF,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,2FAA2F,EAAE,CAAC;QAC/H,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,iDAAiD,EAAE,CAAC;IACrF,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAe;IAC9C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAwC;IACpE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAC/B,CAAC"}
@@ -1,3 +0,0 @@
1
- import { FrameRegistry } from "../core/registry.js";
2
- export declare function registerNcpFrames(registry: FrameRegistry): void;
3
- //# sourceMappingURL=registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/ncp/registry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAO/D"}
@@ -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,57 +0,0 @@
1
- import type { StreamFrame } from "./frames/stream-frame.js";
2
- /**
3
- * Manages concurrent StreamFrame streams.
4
- *
5
- * - Tracks active streams by stream_id
6
- * - Validates sequential seq numbers
7
- * - Enforces max concurrent stream limit (NPS-1 §7.3, default 32)
8
- * - Detects early termination via error_code
9
- * - Enforces window-based flow control on outgoing streams (NCP-S-07–11)
10
- */
11
- export declare class StreamManager {
12
- private readonly streams;
13
- private readonly outgoing;
14
- private readonly maxConcurrent;
15
- constructor(options?: {
16
- maxConcurrent?: number;
17
- });
18
- /**
19
- * Receive a StreamFrame chunk.
20
- *
21
- * @returns true if stream is complete (is_last=true or error_code set).
22
- * @throws {NcpError} NCP-STREAM-LIMIT-EXCEEDED if too many concurrent streams.
23
- * @throws {NcpError} NCP-STREAM-NOT-FOUND if frame.seq > 0 for a stream that was never opened.
24
- * @throws {NcpError} NPS-CLIENT-CONFLICT if the stream_id was already completed (stream-id reuse; see test_cases NCP-S-04).
25
- * @throws {NcpError} NCP-STREAM-SEQ-GAP if sequence number is not expected.
26
- */
27
- receive(frame: StreamFrame): boolean;
28
- /**
29
- * Send a StreamFrame on an outgoing stream, enforcing window-based flow control.
30
- *
31
- * - seq=0 with window_size initialises remainingWindow (no decrement for opening frame).
32
- * - Subsequent sends decrement remainingWindow when flow control is active.
33
- * - Throws NCP-STREAM-WINDOW-OVERFLOW when remainingWindow === 0.
34
- *
35
- * @throws {NcpError} NCP-STREAM-WINDOW-OVERFLOW if window is exhausted.
36
- */
37
- send(frame: StreamFrame): void;
38
- /**
39
- * Update the send window for a stream.
40
- *
41
- * Called when a reverse-direction StreamFrame arrives with data=[] and window_size set.
42
- * Replaces remainingWindow with new_size. Sets paused=true when new_size === 0.
43
- */
44
- updateWindow(streamId: string, newSize: number): void;
45
- /**
46
- * Returns true when the outgoing stream is paused (window=0 was received).
47
- * Resumes (returns false) once a non-zero window update arrives.
48
- */
49
- isPaused(streamId: string): boolean;
50
- /** Get reassembled data for a completed stream. */
51
- getData(streamId: string): unknown[] | null;
52
- /** Get error code if stream terminated with error. */
53
- getError(streamId: string): string | undefined;
54
- /** Number of active (non-completed) streams. */
55
- get activeCount(): number;
56
- }
57
- //# sourceMappingURL=stream-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream-manager.d.ts","sourceRoot":"","sources":["../../src/ncp/stream-manager.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAgB5D;;;;;;;;GAQG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;gBAE3B,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE;IAIhD;;;;;;;;OAQG;IACH,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO;IAwEpC;;;;;;;;OAQG;IACH,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IA8B9B;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAerD;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInC,mDAAmD;IACnD,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,IAAI;IAM3C,sDAAsD;IACtD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI9C,gDAAgD;IAChD,IAAI,WAAW,IAAI,MAAM,CAMxB;CACF"}
@@ -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,56 +0,0 @@
1
- import { EncodingTier, FrameType } from "../core/frames.js";
2
- import type { NpsFrame } from "../core/codec.js";
3
- export interface NdpAddress {
4
- host: string;
5
- port: number;
6
- protocol: string;
7
- }
8
- export interface NdpGraphNode {
9
- nid: string;
10
- addresses: readonly NdpAddress[];
11
- capabilities: readonly string[];
12
- nodeType?: string;
13
- }
14
- export interface NdpResolveResult {
15
- host: string;
16
- port: number;
17
- ttl: number;
18
- certFingerprint?: string;
19
- }
20
- export declare class AnnounceFrame implements NpsFrame {
21
- readonly nid: string;
22
- readonly addresses: readonly NdpAddress[];
23
- readonly capabilities: readonly string[];
24
- readonly ttl: number;
25
- readonly timestamp: string;
26
- readonly signature: string;
27
- readonly nodeType?: string | undefined;
28
- readonly frameType = FrameType.ANNOUNCE;
29
- readonly preferredTier = EncodingTier.MSGPACK;
30
- constructor(nid: string, addresses: readonly NdpAddress[], capabilities: readonly string[], ttl: number, timestamp: string, signature: string, nodeType?: string | undefined);
31
- unsignedDict(): Record<string, unknown>;
32
- toDict(): Record<string, unknown>;
33
- static fromDict(data: Record<string, unknown>): AnnounceFrame;
34
- }
35
- export declare class ResolveFrame implements NpsFrame {
36
- readonly target: string;
37
- readonly requesterNid?: string | undefined;
38
- readonly resolved?: NdpResolveResult | undefined;
39
- readonly frameType = FrameType.RESOLVE;
40
- readonly preferredTier = EncodingTier.MSGPACK;
41
- constructor(target: string, requesterNid?: string | undefined, resolved?: NdpResolveResult | undefined);
42
- toDict(): Record<string, unknown>;
43
- static fromDict(data: Record<string, unknown>): ResolveFrame;
44
- }
45
- export declare class GraphFrame implements NpsFrame {
46
- readonly seq: number;
47
- readonly initialSync: boolean;
48
- readonly nodes?: readonly NdpGraphNode[] | undefined;
49
- readonly patch?: readonly Record<string, unknown>[] | undefined;
50
- readonly frameType = FrameType.GRAPH;
51
- readonly preferredTier = EncodingTier.MSGPACK;
52
- constructor(seq: number, initialSync: boolean, nodes?: readonly NdpGraphNode[] | undefined, patch?: readonly Record<string, unknown>[] | undefined);
53
- toDict(): Record<string, unknown>;
54
- static fromDict(data: Record<string, unknown>): GraphFrame;
55
- }
56
- //# sourceMappingURL=frames.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../src/ndp/frames.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAM,MAAM,CAAC;IACjB,IAAI,EAAM,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAW,MAAM,CAAC;IACrB,SAAS,EAAK,SAAS,UAAU,EAAE,CAAC;IACpC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAK,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAe,MAAM,CAAC;IAC1B,IAAI,EAAe,MAAM,CAAC;IAC1B,GAAG,EAAgB,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAG,MAAM,CAAC;CAC3B;AAED,qBAAa,aAAc,YAAW,QAAQ;aAK1B,GAAG,EAAW,MAAM;aACpB,SAAS,EAAK,SAAS,UAAU,EAAE;aACnC,YAAY,EAAE,SAAS,MAAM,EAAE;aAC/B,GAAG,EAAW,MAAM;aACpB,SAAS,EAAK,MAAM;aACpB,SAAS,EAAK,MAAM;aACpB,QAAQ,CAAC,EAAK,MAAM;IAVtC,QAAQ,CAAC,SAAS,sBAA0B;IAC5C,QAAQ,CAAC,aAAa,wBAAwB;gBAG5B,GAAG,EAAW,MAAM,EACpB,SAAS,EAAK,SAAS,UAAU,EAAE,EACnC,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,GAAG,EAAW,MAAM,EACpB,SAAS,EAAK,MAAM,EACpB,SAAS,EAAK,MAAM,EACpB,QAAQ,CAAC,EAAK,MAAM,YAAA;IAGtC,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAWvC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIjC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa;CAW9D;AAED,qBAAa,YAAa,YAAW,QAAQ;aAKzB,MAAM,EAAS,MAAM;aACrB,YAAY,CAAC,EAAE,MAAM;aACrB,QAAQ,CAAC,EAAM,gBAAgB;IANjD,QAAQ,CAAC,SAAS,qBAAyB;IAC3C,QAAQ,CAAC,aAAa,wBAAwB;gBAG5B,MAAM,EAAS,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,YAAA,EACrB,QAAQ,CAAC,EAAM,gBAAgB,YAAA;IAGjD,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAQjC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY;CAO7D;AAED,qBAAa,UAAW,YAAW,QAAQ;aAKvB,GAAG,EAAU,MAAM;aACnB,WAAW,EAAE,OAAO;aACpB,KAAK,CAAC,EAAO,SAAS,YAAY,EAAE;aACpC,KAAK,CAAC,EAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAPjE,QAAQ,CAAC,SAAS,mBAAuB;IACzC,QAAQ,CAAC,aAAa,wBAAwB;gBAG5B,GAAG,EAAU,MAAM,EACnB,WAAW,EAAE,OAAO,EACpB,KAAK,CAAC,EAAO,SAAS,YAAY,EAAE,YAAA,EACpC,KAAK,CAAC,EAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAA;IAGjE,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IASjC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU;CAQ3D"}
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"frames.js","sourceRoot":"","sources":["../../src/ndp/frames.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,sCAAsC;AAEtC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAuB5D,MAAM,OAAO,aAAa;IAKN;IACA;IACA;IACA;IACA;IACA;IACA;IAVT,SAAS,GAAO,SAAS,CAAC,QAAQ,CAAC;IACnC,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC;IAE9C,YACkB,GAAoB,EACpB,SAAmC,EACnC,YAA+B,EAC/B,GAAoB,EACpB,SAAoB,EACpB,SAAoB,EACpB,QAAoB;QANpB,QAAG,GAAH,GAAG,CAAiB;QACpB,cAAS,GAAT,SAAS,CAA0B;QACnC,iBAAY,GAAZ,YAAY,CAAmB;QAC/B,QAAG,GAAH,GAAG,CAAiB;QACpB,cAAS,GAAT,SAAS,CAAW;QACpB,cAAS,GAAT,SAAS,CAAW;QACpB,aAAQ,GAAR,QAAQ,CAAY;IACnC,CAAC;IAEJ,YAAY;QACV,OAAO;YACL,GAAG,EAAW,IAAI,CAAC,GAAG;YACtB,SAAS,EAAK,IAAI,CAAC,SAAS;YAC5B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,GAAG,EAAW,IAAI,CAAC,GAAG;YACtB,SAAS,EAAK,IAAI,CAAC,SAAS;YAC5B,SAAS,EAAK,IAAI,CAAC,QAAQ,IAAI,IAAI;SACpC,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAC/D,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAA6B;QAC3C,OAAO,IAAI,aAAa,CACtB,IAAI,CAAC,KAAK,CAAoB,EAC9B,IAAI,CAAC,WAAW,CAAoB,EACpC,IAAI,CAAC,cAAc,CAAa,EAChC,IAAI,CAAC,KAAK,CAAoB,EAC9B,IAAI,CAAC,WAAW,CAAc,EAC9B,IAAI,CAAC,WAAW,CAAc,EAC7B,IAAI,CAAC,WAAW,CAAsB,IAAI,SAAS,CACrD,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,YAAY;IAKL;IACA;IACA;IANT,SAAS,GAAO,SAAS,CAAC,OAAO,CAAC;IAClC,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC;IAE9C,YACkB,MAAqB,EACrB,YAAqB,EACrB,QAA+B;QAF/B,WAAM,GAAN,MAAM,CAAe;QACrB,iBAAY,GAAZ,YAAY,CAAS;QACrB,aAAQ,GAAR,QAAQ,CAAuB;IAC9C,CAAC;IAEJ,MAAM;QACJ,OAAO;YACL,MAAM,EAAS,IAAI,CAAC,MAAM;YAC1B,aAAa,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI;YACxC,QAAQ,EAAO,IAAI,CAAC,QAAQ,IAAQ,IAAI;SACzC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAA6B;QAC3C,OAAO,IAAI,YAAY,CACrB,IAAI,CAAC,QAAQ,CAAmB,EAC/B,IAAI,CAAC,eAAe,CAAmB,IAAI,SAAS,EACpD,IAAI,CAAC,UAAU,CAAkC,IAAI,SAAS,CAChE,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,UAAU;IAKH;IACA;IACA;IACA;IAPT,SAAS,GAAO,SAAS,CAAC,KAAK,CAAC;IAChC,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC;IAE9C,YACkB,GAAmB,EACnB,WAAoB,EACpB,KAAoC,EACpC,KAA+C;QAH/C,QAAG,GAAH,GAAG,CAAgB;QACnB,gBAAW,GAAX,WAAW,CAAS;QACpB,UAAK,GAAL,KAAK,CAA+B;QACpC,UAAK,GAAL,KAAK,CAA0C;IAC9D,CAAC;IAEJ,MAAM;QACJ,OAAO;YACL,GAAG,EAAW,IAAI,CAAC,GAAG;YACtB,YAAY,EAAE,IAAI,CAAC,WAAW;YAC9B,KAAK,EAAS,IAAI,CAAC,KAAK,IAAI,IAAI;YAChC,KAAK,EAAS,IAAI,CAAC,KAAK,IAAI,IAAI;SACjC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAA6B;QAC3C,OAAO,IAAI,UAAU,CACnB,IAAI,CAAC,KAAK,CAAoB,EAC9B,IAAI,CAAC,cAAc,CAAY,EAC9B,IAAI,CAAC,OAAO,CAA2B,IAAI,SAAS,EACpD,IAAI,CAAC,OAAO,CAAsC,IAAI,SAAS,CACjE,CAAC;IACJ,CAAC;CACF"}
@@ -1,5 +0,0 @@
1
- export * from "./frames.js";
2
- export * from "./registry.js";
3
- export * from "./ndp-registry.js";
4
- export * from "./validator.js";
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ndp/index.ts"],"names":[],"mappings":"AAGA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
package/dist/ndp/index.js DELETED
@@ -1,7 +0,0 @@
1
- // Copyright 2026 INNO LOTUS PTY LTD
2
- // SPDX-License-Identifier: Apache-2.0
3
- export * from "./frames.js";
4
- export * from "./registry.js";
5
- export * from "./ndp-registry.js";
6
- export * from "./validator.js";
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ndp/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,sCAAsC;AAEtC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
@@ -1,11 +0,0 @@
1
- import type { AnnounceFrame, NdpResolveResult } from "./frames.js";
2
- export declare class InMemoryNdpRegistry {
3
- private readonly _store;
4
- clock: () => number;
5
- announce(frame: AnnounceFrame): void;
6
- getByNid(nid: string): AnnounceFrame | undefined;
7
- resolve(target: string): NdpResolveResult | undefined;
8
- getAll(): AnnounceFrame[];
9
- static nwpTargetMatchesNid(nid: string, target: string): boolean;
10
- }
11
- //# sourceMappingURL=ndp-registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ndp-registry.d.ts","sourceRoot":"","sources":["../../src/ndp/ndp-registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAOnE,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAG3D,KAAK,EAAE,MAAM,MAAM,CAAoB;IAEvC,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IASpC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAUhD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAWrD,MAAM,IAAI,aAAa,EAAE;IAUzB,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;CAyBjE"}