@labacacia/nps-sdk 1.0.0-alpha.1 → 1.0.0-alpha.14

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 (464) hide show
  1. package/CHANGELOG.cn.md +49 -0
  2. package/CHANGELOG.md +65 -0
  3. package/LICENSE +0 -0
  4. package/NOTICE +0 -0
  5. package/README.cn.md +222 -0
  6. package/README.md +75 -6
  7. package/dist/conformance.d.ts +55 -0
  8. package/dist/conformance.d.ts.map +1 -0
  9. package/dist/conformance.js +100 -0
  10. package/dist/conformance.js.map +1 -0
  11. package/dist/core/anchor-cache.d.ts +0 -0
  12. package/dist/core/anchor-cache.d.ts.map +0 -0
  13. package/dist/core/anchor-cache.js +0 -0
  14. package/dist/core/anchor-cache.js.map +0 -0
  15. package/dist/core/cache.d.ts +0 -0
  16. package/dist/core/cache.d.ts.map +0 -0
  17. package/dist/core/cache.js +0 -0
  18. package/dist/core/cache.js.map +0 -0
  19. package/dist/core/canonical-json.d.ts +0 -0
  20. package/dist/core/canonical-json.d.ts.map +0 -0
  21. package/dist/core/canonical-json.js +0 -0
  22. package/dist/core/canonical-json.js.map +0 -0
  23. package/dist/core/codec.d.ts +0 -0
  24. package/dist/core/codec.d.ts.map +0 -0
  25. package/dist/core/codec.js +0 -0
  26. package/dist/core/codec.js.map +0 -0
  27. package/dist/core/codecs/index.d.ts +0 -0
  28. package/dist/core/codecs/index.d.ts.map +0 -0
  29. package/dist/core/codecs/index.js +0 -0
  30. package/dist/core/codecs/index.js.map +0 -0
  31. package/dist/core/codecs/ncp-codec.d.ts +0 -0
  32. package/dist/core/codecs/ncp-codec.d.ts.map +0 -0
  33. package/dist/core/codecs/ncp-codec.js +0 -0
  34. package/dist/core/codecs/ncp-codec.js.map +0 -0
  35. package/dist/core/codecs/tier1-json-codec.d.ts +0 -0
  36. package/dist/core/codecs/tier1-json-codec.d.ts.map +0 -0
  37. package/dist/core/codecs/tier1-json-codec.js +0 -0
  38. package/dist/core/codecs/tier1-json-codec.js.map +0 -0
  39. package/dist/core/codecs/tier2-msgpack-codec.d.ts +0 -0
  40. package/dist/core/codecs/tier2-msgpack-codec.d.ts.map +0 -0
  41. package/dist/core/codecs/tier2-msgpack-codec.js +0 -0
  42. package/dist/core/codecs/tier2-msgpack-codec.js.map +0 -0
  43. package/dist/core/crypto-provider.d.ts +0 -0
  44. package/dist/core/crypto-provider.d.ts.map +0 -0
  45. package/dist/core/crypto-provider.js +0 -0
  46. package/dist/core/crypto-provider.js.map +0 -0
  47. package/dist/core/exceptions.d.ts +0 -0
  48. package/dist/core/exceptions.d.ts.map +0 -0
  49. package/dist/core/exceptions.js +0 -0
  50. package/dist/core/exceptions.js.map +0 -0
  51. package/dist/core/frame-header.d.ts +1 -0
  52. package/dist/core/frame-header.d.ts.map +1 -1
  53. package/dist/core/frame-header.js +1 -0
  54. package/dist/core/frame-header.js.map +1 -1
  55. package/dist/core/frame-registry.d.ts +0 -0
  56. package/dist/core/frame-registry.d.ts.map +1 -1
  57. package/dist/core/frame-registry.js +1 -0
  58. package/dist/core/frame-registry.js.map +1 -1
  59. package/dist/core/frames.d.ts +3 -0
  60. package/dist/core/frames.d.ts.map +1 -1
  61. package/dist/core/frames.js +3 -0
  62. package/dist/core/frames.js.map +1 -1
  63. package/dist/core/index.d.ts +6 -4
  64. package/dist/core/index.d.ts.map +1 -1
  65. package/dist/core/index.js +17 -5
  66. package/dist/core/index.js.map +1 -1
  67. package/dist/core/registry.d.ts +0 -0
  68. package/dist/core/registry.d.ts.map +0 -0
  69. package/dist/core/registry.js +0 -0
  70. package/dist/core/registry.js.map +0 -0
  71. package/dist/core/status-codes.d.ts +20 -0
  72. package/dist/core/status-codes.d.ts.map +1 -1
  73. package/dist/core/status-codes.js +51 -0
  74. package/dist/core/status-codes.js.map +1 -1
  75. package/dist/index.d.ts +1 -1
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +1 -1
  78. package/dist/index.js.map +1 -1
  79. package/dist/ncp/frames/anchor-frame.d.ts +0 -0
  80. package/dist/ncp/frames/anchor-frame.d.ts.map +0 -0
  81. package/dist/ncp/frames/anchor-frame.js +0 -0
  82. package/dist/ncp/frames/anchor-frame.js.map +0 -0
  83. package/dist/ncp/frames/caps-frame.d.ts +0 -0
  84. package/dist/ncp/frames/caps-frame.d.ts.map +0 -0
  85. package/dist/ncp/frames/caps-frame.js +0 -0
  86. package/dist/ncp/frames/caps-frame.js.map +0 -0
  87. package/dist/ncp/frames/diff-frame.d.ts +0 -0
  88. package/dist/ncp/frames/diff-frame.d.ts.map +0 -0
  89. package/dist/ncp/frames/diff-frame.js +0 -0
  90. package/dist/ncp/frames/diff-frame.js.map +0 -0
  91. package/dist/ncp/frames/error-frame.d.ts +0 -0
  92. package/dist/ncp/frames/error-frame.d.ts.map +0 -0
  93. package/dist/ncp/frames/error-frame.js +0 -0
  94. package/dist/ncp/frames/error-frame.js.map +0 -0
  95. package/dist/ncp/frames/hello-frame.d.ts +0 -0
  96. package/dist/ncp/frames/hello-frame.d.ts.map +0 -0
  97. package/dist/ncp/frames/hello-frame.js +0 -0
  98. package/dist/ncp/frames/hello-frame.js.map +0 -0
  99. package/dist/ncp/frames/stream-frame.d.ts +0 -0
  100. package/dist/ncp/frames/stream-frame.d.ts.map +0 -0
  101. package/dist/ncp/frames/stream-frame.js +0 -0
  102. package/dist/ncp/frames/stream-frame.js.map +0 -0
  103. package/dist/ncp/frames.d.ts +25 -0
  104. package/dist/ncp/frames.d.ts.map +1 -1
  105. package/dist/ncp/frames.js +61 -0
  106. package/dist/ncp/frames.js.map +1 -1
  107. package/dist/ncp/handshake.d.ts +0 -0
  108. package/dist/ncp/handshake.d.ts.map +0 -0
  109. package/dist/ncp/handshake.js +0 -0
  110. package/dist/ncp/handshake.js.map +0 -0
  111. package/dist/ncp/index.d.ts +1 -0
  112. package/dist/ncp/index.d.ts.map +1 -1
  113. package/dist/ncp/index.js +1 -0
  114. package/dist/ncp/index.js.map +1 -1
  115. package/dist/ncp/ncp-error-codes.d.ts +5 -0
  116. package/dist/ncp/ncp-error-codes.d.ts.map +1 -1
  117. package/dist/ncp/ncp-error-codes.js +27 -0
  118. package/dist/ncp/ncp-error-codes.js.map +1 -1
  119. package/dist/ncp/ncp-patch-format.d.ts +0 -0
  120. package/dist/ncp/ncp-patch-format.d.ts.map +0 -0
  121. package/dist/ncp/ncp-patch-format.js +0 -0
  122. package/dist/ncp/ncp-patch-format.js.map +0 -0
  123. package/dist/ncp/preamble.d.ts +47 -0
  124. package/dist/ncp/preamble.d.ts.map +1 -0
  125. package/dist/ncp/preamble.js +74 -0
  126. package/dist/ncp/preamble.js.map +1 -0
  127. package/dist/ncp/registry.d.ts +0 -0
  128. package/dist/ncp/registry.d.ts.map +1 -1
  129. package/dist/ncp/registry.js +2 -1
  130. package/dist/ncp/registry.js.map +1 -1
  131. package/dist/ncp/stream-manager.d.ts +0 -0
  132. package/dist/ncp/stream-manager.d.ts.map +0 -0
  133. package/dist/ncp/stream-manager.js +0 -0
  134. package/dist/ncp/stream-manager.js.map +0 -0
  135. package/dist/ndp/dns-txt.d.ts +35 -0
  136. package/dist/ndp/dns-txt.d.ts.map +1 -0
  137. package/dist/ndp/dns-txt.js +67 -0
  138. package/dist/ndp/dns-txt.js.map +1 -0
  139. package/dist/ndp/frames.d.ts +34 -9
  140. package/dist/ndp/frames.d.ts.map +1 -1
  141. package/dist/ndp/frames.js +54 -15
  142. package/dist/ndp/frames.js.map +1 -1
  143. package/dist/ndp/index.d.ts +3 -0
  144. package/dist/ndp/index.d.ts.map +1 -1
  145. package/dist/ndp/index.js +3 -0
  146. package/dist/ndp/index.js.map +1 -1
  147. package/dist/ndp/ndp-error-codes.d.ts +25 -0
  148. package/dist/ndp/ndp-error-codes.d.ts.map +1 -0
  149. package/dist/ndp/ndp-error-codes.js +48 -0
  150. package/dist/ndp/ndp-error-codes.js.map +1 -0
  151. package/dist/ndp/ndp-registry.d.ts +2 -0
  152. package/dist/ndp/ndp-registry.d.ts.map +1 -1
  153. package/dist/ndp/ndp-registry.js +25 -0
  154. package/dist/ndp/ndp-registry.js.map +1 -1
  155. package/dist/ndp/registry.d.ts +0 -0
  156. package/dist/ndp/registry.d.ts.map +0 -0
  157. package/dist/ndp/registry.js +0 -0
  158. package/dist/ndp/registry.js.map +0 -0
  159. package/dist/ndp/security.d.ts +8 -0
  160. package/dist/ndp/security.d.ts.map +1 -0
  161. package/dist/ndp/security.js +9 -0
  162. package/dist/ndp/security.js.map +1 -0
  163. package/dist/ndp/validator.d.ts +0 -0
  164. package/dist/ndp/validator.d.ts.map +0 -0
  165. package/dist/ndp/validator.js +0 -0
  166. package/dist/ndp/validator.js.map +0 -0
  167. package/dist/nip/acme/client.d.ts +31 -0
  168. package/dist/nip/acme/client.d.ts.map +1 -0
  169. package/dist/nip/acme/client.js +136 -0
  170. package/dist/nip/acme/client.js.map +1 -0
  171. package/dist/nip/acme/index.d.ts +6 -0
  172. package/dist/nip/acme/index.d.ts.map +1 -0
  173. package/dist/nip/acme/index.js +8 -0
  174. package/dist/nip/acme/index.js.map +1 -0
  175. package/dist/nip/acme/jws.d.ts +31 -0
  176. package/dist/nip/acme/jws.d.ts.map +1 -0
  177. package/dist/nip/acme/jws.js +76 -0
  178. package/dist/nip/acme/jws.js.map +1 -0
  179. package/dist/nip/acme/messages.d.ts +71 -0
  180. package/dist/nip/acme/messages.d.ts.map +1 -0
  181. package/dist/nip/acme/messages.js +4 -0
  182. package/dist/nip/acme/messages.js.map +1 -0
  183. package/dist/nip/acme/server.d.ts +41 -0
  184. package/dist/nip/acme/server.d.ts.map +1 -0
  185. package/dist/nip/acme/server.js +458 -0
  186. package/dist/nip/acme/server.js.map +1 -0
  187. package/dist/nip/acme/wire.d.ts +19 -0
  188. package/dist/nip/acme/wire.d.ts.map +1 -0
  189. package/dist/nip/acme/wire.js +21 -0
  190. package/dist/nip/acme/wire.js.map +1 -0
  191. package/dist/nip/assurance-level.d.ts +19 -0
  192. package/dist/nip/assurance-level.d.ts.map +1 -0
  193. package/dist/nip/assurance-level.js +38 -0
  194. package/dist/nip/assurance-level.js.map +1 -0
  195. package/dist/nip/ca-client.d.ts +93 -0
  196. package/dist/nip/ca-client.d.ts.map +1 -0
  197. package/dist/nip/ca-client.js +83 -0
  198. package/dist/nip/ca-client.js.map +1 -0
  199. package/dist/nip/cert-format.d.ts +5 -0
  200. package/dist/nip/cert-format.d.ts.map +1 -0
  201. package/dist/nip/cert-format.js +6 -0
  202. package/dist/nip/cert-format.js.map +1 -0
  203. package/dist/nip/error-codes.d.ts +44 -0
  204. package/dist/nip/error-codes.d.ts.map +1 -0
  205. package/dist/nip/error-codes.js +97 -0
  206. package/dist/nip/error-codes.js.map +1 -0
  207. package/dist/nip/frames.d.ts +19 -1
  208. package/dist/nip/frames.d.ts.map +1 -1
  209. package/dist/nip/frames.js +39 -4
  210. package/dist/nip/frames.js.map +1 -1
  211. package/dist/nip/identity.d.ts +0 -0
  212. package/dist/nip/identity.d.ts.map +0 -0
  213. package/dist/nip/identity.js +0 -0
  214. package/dist/nip/identity.js.map +0 -0
  215. package/dist/nip/index.d.ts +8 -0
  216. package/dist/nip/index.d.ts.map +1 -1
  217. package/dist/nip/index.js +10 -0
  218. package/dist/nip/index.js.map +1 -1
  219. package/dist/nip/registry.d.ts +0 -0
  220. package/dist/nip/registry.d.ts.map +0 -0
  221. package/dist/nip/registry.js +0 -0
  222. package/dist/nip/registry.js.map +0 -0
  223. package/dist/nip/reputation-client.d.ts +116 -0
  224. package/dist/nip/reputation-client.d.ts.map +1 -0
  225. package/dist/nip/reputation-client.js +261 -0
  226. package/dist/nip/reputation-client.js.map +1 -0
  227. package/dist/nip/verifier.d.ts +23 -0
  228. package/dist/nip/verifier.d.ts.map +1 -0
  229. package/dist/nip/verifier.js +90 -0
  230. package/dist/nip/verifier.js.map +1 -0
  231. package/dist/nip/x509/builder.d.ts +35 -0
  232. package/dist/nip/x509/builder.d.ts.map +1 -0
  233. package/dist/nip/x509/builder.js +59 -0
  234. package/dist/nip/x509/builder.js.map +1 -0
  235. package/dist/nip/x509/index.d.ts +4 -0
  236. package/dist/nip/x509/index.d.ts.map +1 -0
  237. package/dist/nip/x509/index.js +6 -0
  238. package/dist/nip/x509/index.js.map +1 -0
  239. package/dist/nip/x509/oids.d.ts +16 -0
  240. package/dist/nip/x509/oids.d.ts.map +1 -0
  241. package/dist/nip/x509/oids.js +22 -0
  242. package/dist/nip/x509/oids.js.map +1 -0
  243. package/dist/nip/x509/verifier.d.ts +26 -0
  244. package/dist/nip/x509/verifier.d.ts.map +1 -0
  245. package/dist/nip/x509/verifier.js +171 -0
  246. package/dist/nip/x509/verifier.js.map +1 -0
  247. package/dist/nop/client.d.ts +0 -0
  248. package/dist/nop/client.d.ts.map +0 -0
  249. package/dist/nop/client.js +0 -0
  250. package/dist/nop/client.js.map +1 -1
  251. package/dist/nop/dag-validator.d.ts +15 -0
  252. package/dist/nop/dag-validator.d.ts.map +1 -0
  253. package/dist/nop/dag-validator.js +91 -0
  254. package/dist/nop/dag-validator.js.map +1 -0
  255. package/dist/nop/frames.d.ts +8 -3
  256. package/dist/nop/frames.d.ts.map +1 -1
  257. package/dist/nop/frames.js +21 -6
  258. package/dist/nop/frames.js.map +1 -1
  259. package/dist/nop/index.d.ts +3 -0
  260. package/dist/nop/index.d.ts.map +1 -1
  261. package/dist/nop/index.js +3 -0
  262. package/dist/nop/index.js.map +1 -1
  263. package/dist/nop/models.d.ts +13 -2
  264. package/dist/nop/models.d.ts.map +1 -1
  265. package/dist/nop/models.js +9 -0
  266. package/dist/nop/models.js.map +1 -1
  267. package/dist/nop/nop-error-codes.d.ts +31 -0
  268. package/dist/nop/nop-error-codes.d.ts.map +1 -0
  269. package/dist/nop/nop-error-codes.js +61 -0
  270. package/dist/nop/nop-error-codes.js.map +1 -0
  271. package/dist/nop/nop-types.d.ts +0 -0
  272. package/dist/nop/nop-types.d.ts.map +0 -0
  273. package/dist/nop/nop-types.js +0 -0
  274. package/dist/nop/nop-types.js.map +0 -0
  275. package/dist/nop/orchestrator.d.ts +66 -0
  276. package/dist/nop/orchestrator.d.ts.map +1 -0
  277. package/dist/nop/orchestrator.js +229 -0
  278. package/dist/nop/orchestrator.js.map +1 -0
  279. package/dist/nop/registry.d.ts +0 -0
  280. package/dist/nop/registry.d.ts.map +0 -0
  281. package/dist/nop/registry.js +0 -0
  282. package/dist/nop/registry.js.map +0 -0
  283. package/dist/nwp/anchor-client.d.ts +109 -0
  284. package/dist/nwp/anchor-client.d.ts.map +1 -0
  285. package/dist/nwp/anchor-client.js +279 -0
  286. package/dist/nwp/anchor-client.js.map +1 -0
  287. package/dist/nwp/anchor-server.d.ts +127 -0
  288. package/dist/nwp/anchor-server.d.ts.map +1 -0
  289. package/dist/nwp/anchor-server.js +649 -0
  290. package/dist/nwp/anchor-server.js.map +1 -0
  291. package/dist/nwp/bridge.d.ts +24 -0
  292. package/dist/nwp/bridge.d.ts.map +1 -0
  293. package/dist/nwp/bridge.js +26 -0
  294. package/dist/nwp/bridge.js.map +1 -0
  295. package/dist/nwp/cgn.d.ts +19 -0
  296. package/dist/nwp/cgn.d.ts.map +1 -0
  297. package/dist/nwp/cgn.js +29 -0
  298. package/dist/nwp/cgn.js.map +1 -0
  299. package/dist/nwp/client.d.ts +10 -3
  300. package/dist/nwp/client.d.ts.map +1 -1
  301. package/dist/nwp/client.js +58 -7
  302. package/dist/nwp/client.js.map +1 -1
  303. package/dist/nwp/frames.d.ts +56 -2
  304. package/dist/nwp/frames.d.ts.map +1 -1
  305. package/dist/nwp/frames.js +88 -5
  306. package/dist/nwp/frames.js.map +1 -1
  307. package/dist/nwp/http-headers.d.ts +24 -0
  308. package/dist/nwp/http-headers.d.ts.map +1 -0
  309. package/dist/nwp/http-headers.js +29 -0
  310. package/dist/nwp/http-headers.js.map +1 -0
  311. package/dist/nwp/index.d.ts +10 -0
  312. package/dist/nwp/index.d.ts.map +1 -1
  313. package/dist/nwp/index.js +10 -0
  314. package/dist/nwp/index.js.map +1 -1
  315. package/dist/nwp/manifest.d.ts +75 -0
  316. package/dist/nwp/manifest.d.ts.map +1 -0
  317. package/dist/nwp/manifest.js +5 -0
  318. package/dist/nwp/manifest.js.map +1 -0
  319. package/dist/nwp/memory-node-server.d.ts +70 -0
  320. package/dist/nwp/memory-node-server.d.ts.map +1 -0
  321. package/dist/nwp/memory-node-server.js +315 -0
  322. package/dist/nwp/memory-node-server.js.map +1 -0
  323. package/dist/nwp/native-server.d.ts +37 -0
  324. package/dist/nwp/native-server.d.ts.map +1 -0
  325. package/dist/nwp/native-server.js +109 -0
  326. package/dist/nwp/native-server.js.map +1 -0
  327. package/dist/nwp/nwp-error-codes.d.ts +48 -0
  328. package/dist/nwp/nwp-error-codes.d.ts.map +1 -0
  329. package/dist/nwp/nwp-error-codes.js +108 -0
  330. package/dist/nwp/nwp-error-codes.js.map +1 -0
  331. package/dist/nwp/registry.d.ts +0 -0
  332. package/dist/nwp/registry.d.ts.map +0 -0
  333. package/dist/nwp/registry.js +0 -0
  334. package/dist/nwp/registry.js.map +0 -0
  335. package/dist/nwp/reputation.d.ts +37 -0
  336. package/dist/nwp/reputation.d.ts.map +1 -0
  337. package/dist/nwp/reputation.js +118 -0
  338. package/dist/nwp/reputation.js.map +1 -0
  339. package/dist/setup.d.ts +0 -0
  340. package/dist/setup.d.ts.map +0 -0
  341. package/dist/setup.js +0 -0
  342. package/dist/setup.js.map +0 -0
  343. package/doc/nps-sdk.core.cn.md +321 -0
  344. package/doc/nps-sdk.core.md +326 -0
  345. package/doc/nps-sdk.ncp.cn.md +270 -0
  346. package/doc/nps-sdk.ncp.md +276 -0
  347. package/doc/nps-sdk.ndp.cn.md +267 -0
  348. package/doc/nps-sdk.ndp.md +273 -0
  349. package/doc/nps-sdk.nip.cn.md +265 -0
  350. package/doc/nps-sdk.nip.md +272 -0
  351. package/doc/nps-sdk.nop.cn.md +329 -0
  352. package/doc/nps-sdk.nop.md +332 -0
  353. package/doc/nps-sdk.nwp.cn.md +288 -0
  354. package/doc/nps-sdk.nwp.md +295 -0
  355. package/doc/overview.cn.md +149 -0
  356. package/doc/overview.md +153 -0
  357. package/package.json +37 -4
  358. package/CONTRIBUTING.md +0 -33
  359. package/dist/codec-CmHeovTV.d.cts +0 -120
  360. package/dist/codec-CmHeovTV.d.ts +0 -120
  361. package/dist/core/index.cjs +0 -371
  362. package/dist/core/index.cjs.map +0 -1
  363. package/dist/core/index.d.cts +0 -41
  364. package/dist/frames-B3qLdl_g.d.cts +0 -77
  365. package/dist/frames-Ff7-ZPUl.d.ts +0 -77
  366. package/dist/index.cjs +0 -1556
  367. package/dist/index.cjs.map +0 -1
  368. package/dist/index.d.cts +0 -21
  369. package/dist/ncp/index.cjs +0 -188
  370. package/dist/ncp/index.cjs.map +0 -1
  371. package/dist/ncp/index.d.cts +0 -6
  372. package/dist/ndp/index.cjs +0 -252
  373. package/dist/ndp/index.cjs.map +0 -1
  374. package/dist/ndp/index.d.cts +0 -86
  375. package/dist/nip/index.cjs +0 -214
  376. package/dist/nip/index.cjs.map +0 -1
  377. package/dist/nip/index.d.cts +0 -65
  378. package/dist/nop/index.cjs +0 -762
  379. package/dist/nop/index.cjs.map +0 -1
  380. package/dist/nop/index.d.cts +0 -155
  381. package/dist/nwp/index.cjs +0 -658
  382. package/dist/nwp/index.cjs.map +0 -1
  383. package/dist/nwp/index.d.cts +0 -65
  384. package/nip-ca-server/Dockerfile +0 -27
  385. package/nip-ca-server/README.md +0 -45
  386. package/nip-ca-server/db/001_init.sql +0 -25
  387. package/nip-ca-server/docker-compose.yml +0 -29
  388. package/nip-ca-server/package.json +0 -23
  389. package/nip-ca-server/src/ca.ts +0 -155
  390. package/nip-ca-server/src/db.ts +0 -104
  391. package/nip-ca-server/src/index.ts +0 -157
  392. package/nip-ca-server/tsconfig.json +0 -13
  393. package/src/core/anchor-cache.ts +0 -129
  394. package/src/core/cache.ts +0 -93
  395. package/src/core/canonical-json.ts +0 -50
  396. package/src/core/codec.ts +0 -158
  397. package/src/core/codecs/index.ts +0 -5
  398. package/src/core/codecs/ncp-codec.ts +0 -170
  399. package/src/core/codecs/tier1-json-codec.ts +0 -33
  400. package/src/core/codecs/tier2-msgpack-codec.ts +0 -30
  401. package/src/core/crypto-provider.ts +0 -47
  402. package/src/core/exceptions.ts +0 -57
  403. package/src/core/frame-header.ts +0 -282
  404. package/src/core/frame-registry.ts +0 -91
  405. package/src/core/frames.ts +0 -183
  406. package/src/core/index.ts +0 -10
  407. package/src/core/registry.ts +0 -28
  408. package/src/core/status-codes.ts +0 -46
  409. package/src/index.ts +0 -10
  410. package/src/ncp/frames/anchor-frame.ts +0 -87
  411. package/src/ncp/frames/caps-frame.ts +0 -59
  412. package/src/ncp/frames/diff-frame.ts +0 -69
  413. package/src/ncp/frames/error-frame.ts +0 -26
  414. package/src/ncp/frames/hello-frame.ts +0 -50
  415. package/src/ncp/frames/stream-frame.ts +0 -35
  416. package/src/ncp/frames.ts +0 -199
  417. package/src/ncp/handshake.ts +0 -95
  418. package/src/ncp/index.ts +0 -12
  419. package/src/ncp/ncp-error-codes.ts +0 -34
  420. package/src/ncp/ncp-patch-format.ts +0 -16
  421. package/src/ncp/registry.ts +0 -14
  422. package/src/ncp/stream-manager.ts +0 -212
  423. package/src/ndp/frames.ts +0 -124
  424. package/src/ndp/index.ts +0 -7
  425. package/src/ndp/ndp-registry.ts +0 -82
  426. package/src/ndp/registry.ts +0 -12
  427. package/src/ndp/validator.ts +0 -64
  428. package/src/nip/frames.ts +0 -106
  429. package/src/nip/identity.ts +0 -113
  430. package/src/nip/index.ts +0 -6
  431. package/src/nip/registry.ts +0 -12
  432. package/src/nop/client.ts +0 -103
  433. package/src/nop/frames.ts +0 -181
  434. package/src/nop/index.ts +0 -7
  435. package/src/nop/models.ts +0 -79
  436. package/src/nop/nop-types.ts +0 -208
  437. package/src/nop/registry.ts +0 -13
  438. package/src/nwp/client.ts +0 -114
  439. package/src/nwp/frames.ts +0 -116
  440. package/src/nwp/index.ts +0 -6
  441. package/src/nwp/registry.ts +0 -11
  442. package/src/setup.ts +0 -32
  443. package/tests/core/anchor-cache.test.ts +0 -242
  444. package/tests/core/codec.test.ts +0 -205
  445. package/tests/core/frame-registry.test.ts +0 -46
  446. package/tests/core.test.ts +0 -327
  447. package/tests/ncp/diff-binary-bitset.test.ts +0 -107
  448. package/tests/ncp/e2e-enc-reject.test.ts +0 -93
  449. package/tests/ncp/err-error-frame.test.ts +0 -152
  450. package/tests/ncp/frames.test.ts +0 -359
  451. package/tests/ncp/framing.test.ts +0 -233
  452. package/tests/ncp/hello-frame.test.ts +0 -122
  453. package/tests/ncp/inline-anchor.test.ts +0 -88
  454. package/tests/ncp/security.test.ts +0 -184
  455. package/tests/ncp/stream-window.test.ts +0 -167
  456. package/tests/ncp/stream.test.ts +0 -242
  457. package/tests/ncp/version-negotiation.test.ts +0 -123
  458. package/tests/ndp.test.ts +0 -271
  459. package/tests/nip.test.ts +0 -184
  460. package/tests/nop.test.ts +0 -344
  461. package/tests/nwp.test.ts +0 -237
  462. package/tsconfig.json +0 -20
  463. package/tsup.config.ts +0 -20
  464. package/vitest.config.ts +0 -10
@@ -0,0 +1,49 @@
1
+ [English Version](./CHANGELOG.md) | 中文版
2
+
3
+ # 变更日志 —— TypeScript SDK (`@labacacia/nps-sdk`)
4
+
5
+ 格式参考 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
6
+
7
+ 在 NPS 达到 v1.0 稳定版之前,套件内所有仓库同步使用同一个预发布版本号。
8
+
9
+ ---
10
+
11
+ ## [1.0.0-alpha.14] —— 2026-06-26
12
+
13
+ ### Added
14
+
15
+ - `@labacacia/nps-sdk/nip` 下新增 `NipCaClient`:远程 NIP CA 的类型化客户端,覆盖 discovery、CRL、agent/node 注册、X.509 注册、续签、撤销和校验。
16
+ - `@labacacia/nps-sdk/nwp` 下新增 `NwpNativeNodeServer`:native-mode NWP 服务端 helper,用于在已建立的 NCP stream 上分发 QueryFrame/ActionFrame。
17
+ - `@labacacia/nps-sdk/conformance`:TC-N1/TC-N2 一致性用例目录、manifest helper 和校验器,用于 CI/自认证流程。
18
+
19
+ ---
20
+
21
+ ## [1.0.0-alpha.2] —— 2026-04-19
22
+
23
+ ### Fixed
24
+
25
+ - **`NpsFrameCodec is not a constructor`** —— `src/core/index.ts` 现显式从 `./codec.js`、`./registry.js`、`./cache.js` 重新导出随包提供的 OOP API(`NpsFrameCodec`、`Tier1JsonCodec`、`Tier2MsgPackCodec`、`FrameRegistry`、`AnchorFrameCache`)。`./codecs/` 下的并行函数式 API 仍可通过直接路径导入,但不再自动导出(与类 API 在 `FrameType` / `EncodingTier` / `FrameHeader` 上冲突)。
26
+ - **缺失的 Ed25519 运行时依赖** —— `@noble/ed25519` 和 `@noble/hashes` 现已声明为运行时依赖。此前已被 `src/nip/identity.ts` 和 `src/ndp/validator.ts` import 但 `package.json` 未声明,导致 npm 消费者安装失败。
27
+
28
+ ### Added
29
+
30
+ - **HelloFrame(NCP 0x06)** —— `src/ncp/frames.ts` 新增 `HelloFrame` 类(snake_case toDict/fromDict),在 `ncp/registry.ts` 中注册。`FrameType.HELLO = 0x06` 加入枚举。
31
+ - **subpath exports** —— `package.json` 的 `exports` 映射新增 `./nwp`、`./nip`、`./ndp`、`./nop`(此前仅声明 `.`、`./core`、`./ncp`,但 README 已示例使用全部六个)。
32
+
33
+ ### Changed
34
+
35
+ - Node 引擎要求升级到 `>=22.0.0`。
36
+ - 264 测试全绿(此前为 158 通过 + 5 个文件失败 + 1 个测试失败)。
37
+
38
+ ### 涵盖模块
39
+
40
+ - core / ncp / nwp / nip / ndp / nop
41
+
42
+ ---
43
+
44
+ ## [1.0.0-alpha.1] —— 2026-04-10
45
+
46
+ 作为 NPS 套件 `v1.0.0-alpha.1` 的一部分首次公开 alpha。
47
+
48
+ [1.0.0-alpha.2]: https://github.com/LabAcacia/nps/releases/tag/v1.0.0-alpha.2
49
+ [1.0.0-alpha.1]: https://github.com/LabAcacia/nps/releases/tag/v1.0.0-alpha.1
package/CHANGELOG.md ADDED
@@ -0,0 +1,65 @@
1
+ English | [中文版](./CHANGELOG.cn.md)
2
+
3
+ # Changelog — TypeScript SDK (`@labacacia/nps-sdk`)
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ Until NPS reaches v1.0 stable, every repository in the suite is synchronized to the same pre-release version tag.
8
+
9
+ ---
10
+
11
+ ## [1.0.0-alpha.14] — 2026-06-26
12
+
13
+ ### Added
14
+ - `NipCaClient` under `@labacacia/nps-sdk/nip`: typed remote NIP CA client for discovery, CRL, agent/node registration, X.509 registration, renewal, revocation, and verification.
15
+ - `NwpNativeNodeServer` under `@labacacia/nps-sdk/nwp`: native-mode NWP serving helper for dispatching QueryFrame/ActionFrame over an already established NCP stream.
16
+ - `@labacacia/nps-sdk/conformance`: TC-N1/TC-N2 conformance catalog, manifest helper, and validator for CI/self-certification flows.
17
+
18
+ ---
19
+
20
+ ## [1.0.0-alpha.11] — 2026-05-28
21
+
22
+ ### Added
23
+
24
+ - NOP saga compensation: `DagNode.compensate_action/compensate_params_mapping`, `TaskFrame.compensation_policy`, `TaskState.COMPENSATING/COMPENSATED`, `CompensationPolicy` constants (alpha.9 parity)
25
+ - NOP `AggregateStrategy.WEIGHTED_FIRST_K` and `MERGE_ALL` (alpha.11)
26
+ - NOP `DelegateFrame.target_cluster_anchor`, `AlignStreamFrame.ack_seq/nak_seq` (alpha.11)
27
+ - NDP security profiles: `SecurityProfile` constants + registry enforcement (alpha.9 parity)
28
+ - NDP ephemeral TTL cap (60 s) in registry (alpha.9 parity)
29
+ - NDP `AnnounceFrame` alpha.9 fields: node_roles, cluster_anchor, spawn_spec_ref, bridge_protocols, activation_mode, activation_endpoint
30
+ - NDP `GraphFrame` / `NdpGraphEdge` redesigned to NPS-4 §5 topology snapshot format (alpha.11)
31
+ - NIP `IdentReputationPolicyHint` and `IdentMetadata.reputation_policy` (alpha.10 parity)
32
+ - NIP `IdentFrame.ocsp_staple` (alpha.11)
33
+ - NWP `SubscribeFrame` and NWM `trust_anchors` field (alpha.11)
34
+
35
+ ---
36
+
37
+ ## [1.0.0-alpha.2] — 2026-04-19
38
+
39
+ ### Fixed
40
+
41
+ - **`NpsFrameCodec is not a constructor`** — `src/core/index.ts` now explicitly re-exports the shipped OOP API (`NpsFrameCodec`, `Tier1JsonCodec`, `Tier2MsgPackCodec`, `FrameRegistry`, `AnchorFrameCache`) from `./codec.js`, `./registry.js`, `./cache.js`. The parallel functional API under `./codecs/` remains reachable by direct path but is no longer auto-exported (it collided on `FrameType` / `EncodingTier` / `FrameHeader`).
42
+ - **Missing Ed25519 runtime deps** — `@noble/ed25519` and `@noble/hashes` are now declared as runtime dependencies. Previously imported by `src/nip/identity.ts` and `src/ndp/validator.ts` but not listed in `package.json`, causing install failures for npm consumers.
43
+
44
+ ### Added
45
+
46
+ - **HelloFrame (NCP 0x06)** — new `HelloFrame` class in `src/ncp/frames.ts` with snake_case toDict/fromDict, registered in `ncp/registry.ts`. `FrameType.HELLO = 0x06` added to the enum.
47
+ - **Subpath exports** — `package.json` `exports` map now includes `./nwp`, `./nip`, `./ndp`, `./nop` (previously only `.`, `./core`, `./ncp` were declared even though README documented all six).
48
+
49
+ ### Changed
50
+
51
+ - Node engine requirement raised to `>=22.0.0`.
52
+ - 264 tests green (up from 158 previously passing + 5 file failures + 1 test failure).
53
+
54
+ ### Covered modules
55
+
56
+ - core / ncp / nwp / nip / ndp / nop
57
+
58
+ ---
59
+
60
+ ## [1.0.0-alpha.1] — 2026-04-10
61
+
62
+ First public alpha as part of the NPS suite `v1.0.0-alpha.1` release.
63
+
64
+ [1.0.0-alpha.2]: https://github.com/LabAcacia/nps/releases/tag/v1.0.0-alpha.2
65
+ [1.0.0-alpha.1]: https://github.com/LabAcacia/nps/releases/tag/v1.0.0-alpha.1
package/LICENSE CHANGED
File without changes
package/NOTICE CHANGED
File without changes
package/README.cn.md ADDED
@@ -0,0 +1,222 @@
1
+ [English Version](./README.md) | 中文版
2
+
3
+ # @labacacia/nps-sdk — TypeScript / Node.js
4
+ [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](../../LICENSE)
5
+ [![Release](https://img.shields.io/badge/release-v1.0.0--alpha.14-orange.svg)](../../CHANGELOG.cn.md)
6
+ [![NCP](https://img.shields.io/badge/NCP-v0.8-5b8cff.svg)]()
7
+ [![NWP](https://img.shields.io/badge/NWP-v0.14-4af0b0.svg)]()
8
+ [![NIP](https://img.shields.io/badge/NIP-v0.10-7b61ff.svg)]()
9
+ [![NDP](https://img.shields.io/badge/NDP-v0.9-f0a050.svg)]()
10
+ [![NOP](https://img.shields.io/badge/NOP-v0.7-ff8c42.svg)]()
11
+
12
+ 面向 **Neural Protocol Suite (NPS)** 的 TypeScript SDK —— 为 AI Agent 设计的协议族。
13
+ 属 [LabAcacia](https://github.com/LabAcacia) / INNO LOTUS PTY LTD 开源生态。
14
+
15
+ ## 状态
16
+
17
+ **v1.0.0-alpha.14 — RFC-0002 跨 SDK 端口波(第三棒)** · 5 个协议 · 271 个测试 · 覆盖率 ≥ 98%
18
+
19
+ Alpha.14 候选新增:远程 NIP CA 类型化客户端(`NipCaClient`)、native-mode NWP 服务端 helper(`NwpNativeNodeServer`)和 TC-N1/TC-N2 一致性 manifest helper(`@labacacia/nps-sdk/conformance`)。
20
+
21
+ | 协议 | 类 | 状态 |
22
+ |------|----|------|
23
+ | NCP — Neural Communication Protocol | 帧、编解码器 | ✅ |
24
+ | NWP — Neural Web Protocol | `NwpClient`、`NwpNativeNodeServer` | ✅ |
25
+ | NIP — Neural Identity Protocol | `NipIdentity`、`NipIdentVerifier`(RFC-0002 §8.1 双信任)、`AssuranceLevel`(RFC-0003)、`nip.x509` + `nip.acme` | ✅ |
26
+ | NDP — Neural Discovery Protocol | `InMemoryNdpRegistry`、`NdpAnnounceValidator` | ✅ |
27
+ | NOP — Neural Orchestration Protocol | `NopClient` | ✅ |
28
+
29
+ **早期新增** —— 完整的 NPS-RFC-0002 X.509 + ACME `agent-01` NID 证书原语:
30
+
31
+ - `nip.x509` —— `issueLeaf` / `issueRoot` / `verify`(基于 `@peculiar/x509` + 原生 Web Crypto Ed25519)。
32
+ - `nip.acme` —— `AcmeClient` + 进程内 `AcmeServer` + JWS / messages helpers(RFC 8555 + RFC 8037 EdDSA)。
33
+ - `IdentFrame` 扩展非破坏性可选构造参数 `assuranceLevel` / `certFormat` / `certChain`;v1 verifier 忽略新字段。
34
+
35
+ ## 安装
36
+
37
+ ```bash
38
+ npm install @labacacia/nps-sdk
39
+ ```
40
+
41
+ > **对等依赖:** Node.js 22+
42
+
43
+ ## 快速开始
44
+
45
+ ### NWP —— 查询节点
46
+
47
+ ```typescript
48
+ import { NwpClient, QueryFrame } from "@labacacia/nps-sdk/nwp";
49
+
50
+ const client = new NwpClient("http://node.example.com:17433");
51
+ const caps = await client.query(new QueryFrame("sha256:<anchor-id>", { active: true }, 20));
52
+ console.log(caps.count, caps.data);
53
+ ```
54
+
55
+ ### NWP —— 流式结果
56
+
57
+ ```typescript
58
+ for await (const chunk of client.stream(new QueryFrame("sha256:<anchor-id>"))) {
59
+ console.log(chunk.seq, chunk.data);
60
+ }
61
+ ```
62
+
63
+ ### NWP —— 调用 Action
64
+
65
+ ```typescript
66
+ import { ActionFrame } from "@labacacia/nps-sdk/nwp";
67
+
68
+ const result = await client.invoke(new ActionFrame("summarise", { maxTokens: 500 }));
69
+ ```
70
+
71
+ ### NWP —— native 服务端
72
+
73
+ ```typescript
74
+ import { NwpNativeNodeServer } from "@labacacia/nps-sdk/nwp";
75
+
76
+ const server = new NwpNativeNodeServer({
77
+ queryHandler: () => [{ id: 42 }],
78
+ actionHandler: (action) => ({ action: action.actionId }),
79
+ });
80
+
81
+ // `source`/`sink` 已完成 NCP preamble、TLS 和 Hello negotiation。
82
+ await server.serve(source, sink);
83
+ ```
84
+
85
+ ### NIP —— Ed25519 身份
86
+
87
+ ```typescript
88
+ import { NipIdentity } from "@labacacia/nps-sdk/nip";
89
+
90
+ // 生成并持久化
91
+ const id = NipIdentity.generate();
92
+ id.save("./my-key.json", process.env.KEY_PASS!);
93
+
94
+ // 加载并签名
95
+ const loaded = NipIdentity.load("./my-key.json", process.env.KEY_PASS!);
96
+ const sig = loaded.sign({ action: "announce", nid: "urn:nps:node:example.com:data" });
97
+ const ok = loaded.verify({ action: "announce", nid: "urn:nps:node:example.com:data" }, sig);
98
+ ```
99
+
100
+ ### NIP —— 远程 CA Client
101
+
102
+ ```typescript
103
+ import { NipCaClient } from "@labacacia/nps-sdk/nip";
104
+
105
+ const ca = new NipCaClient("https://ca.example.com", { routePrefix: "/nip" });
106
+ const discovery = await ca.getDiscovery();
107
+ const ident = await ca.registerAgent(
108
+ { identifier: "agent-a", pub_key: "ed25519:<pub>", capabilities: ["nwp:query"] },
109
+ "token",
110
+ );
111
+ const status = await ca.verifyAgent(ident.nid);
112
+ ```
113
+
114
+ ### 一致性 Manifest
115
+
116
+ ```typescript
117
+ import {
118
+ NODE_L1,
119
+ catalogForProfile,
120
+ createConformanceManifest,
121
+ validateConformanceManifest,
122
+ } from "@labacacia/nps-sdk/conformance";
123
+
124
+ const results = catalogForProfile(NODE_L1).map((c) => ({ id: c.id, result: "pass" as const }));
125
+ const manifest = createConformanceManifest({
126
+ profile: NODE_L1,
127
+ iutName: "my-node",
128
+ iutVersion: "1.0.0-alpha.14",
129
+ iutNid: "urn:nps:node:example.com:my-node",
130
+ peerName: "labacacia-fixture",
131
+ peerVersion: "1.0.0-alpha.14",
132
+ results,
133
+ });
134
+ const validation = validateConformanceManifest(manifest);
135
+ ```
136
+
137
+ ### NDP —— 注册表和签名校验
138
+
139
+ ```typescript
140
+ import { InMemoryNdpRegistry, NdpAnnounceValidator } from "@labacacia/nps-sdk/ndp";
141
+ import { AnnounceFrame } from "@labacacia/nps-sdk/ndp";
142
+
143
+ const registry = new InMemoryNdpRegistry();
144
+ const validator = new NdpAnnounceValidator();
145
+ validator.registerPublicKey(nid, identity.pubKeyString);
146
+
147
+ registry.announce(frame);
148
+ const resolved = registry.resolve("nwp://example.com/data/items");
149
+ ```
150
+
151
+ ### NOP —— 提交并等待任务
152
+
153
+ ```typescript
154
+ import { NopClient, TaskFrame } from "@labacacia/nps-sdk/nop";
155
+
156
+ const client = new NopClient("http://orchestrator.example.com:17433");
157
+ const dag = {
158
+ nodes: [{ id: "classify", action: "classify-text", agent: "urn:nps:node:ml.example.com:classifier" }],
159
+ edges: [],
160
+ };
161
+
162
+ const taskId = await client.submit(new TaskFrame("my-task-1", dag));
163
+ const status = await client.wait(taskId, { timeoutMs: 30_000 });
164
+ console.log(status.state, status.aggregatedResult);
165
+ ```
166
+
167
+ ## 包导出
168
+
169
+ ```typescript
170
+ import { ... } from "@labacacia/nps-sdk"; // 全部
171
+ import { ... } from "@labacacia/nps-sdk/core"; // codec、帧、registry、cache
172
+ import { ... } from "@labacacia/nps-sdk/ncp"; // AnchorFrame、CapsFrame、StreamFrame、HelloFrame、…
173
+ import { ... } from "@labacacia/nps-sdk/nwp"; // NwpClient、QueryFrame、ActionFrame
174
+ import { ... } from "@labacacia/nps-sdk/nip"; // NipIdentity、IdentFrame、TrustFrame、RevokeFrame
175
+ import { ... } from "@labacacia/nps-sdk/ndp"; // InMemoryNdpRegistry、NdpAnnounceValidator、AnnounceFrame、…
176
+ import { ... } from "@labacacia/nps-sdk/nop"; // NopClient、NopTaskStatus、TaskFrame、…
177
+ import { ... } from "@labacacia/nps-sdk/conformance"; // TC-N1/TC-N2 目录和 manifest 校验器
178
+ ```
179
+
180
+ ## NCP 编解码
181
+
182
+ 编解码层支持双 Tier 编码和对线上字节的直接操作:
183
+
184
+ ```typescript
185
+ import { NpsFrameCodec, EncodingTier } from "@labacacia/nps-sdk/core";
186
+ import { createDefaultRegistry } from "@labacacia/nps-sdk";
187
+
188
+ const codec = new NpsFrameCodec(createDefaultRegistry());
189
+
190
+ // 编码(默认 MsgPack)
191
+ const wire = codec.encode(frame);
192
+
193
+ // 编码为 JSON(调试 / 互操作)
194
+ const json = codec.encode(frame, { overrideTier: EncodingTier.JSON });
195
+
196
+ // 解码
197
+ const decoded = codec.decode(wire);
198
+
199
+ // 仅读取帧头,不解码 payload
200
+ const header = NpsFrameCodec.peekHeader(wire);
201
+ console.log(header.frameType, header.isExtended, header.payloadLength);
202
+ ```
203
+
204
+ ## 开发
205
+
206
+ ```bash
207
+ # 安装
208
+ npm install
209
+
210
+ # 测试
211
+ npm test
212
+
213
+ # 测试 + 覆盖率
214
+ npm run test -- --coverage
215
+
216
+ # 构建(ESM + CJS)
217
+ npm run build
218
+ ```
219
+
220
+ ## 许可证
221
+
222
+ Apache 2.0 —— 详见 [LICENSE](https://github.com/labacacia/NPS-Dev/blob/main/LICENSE)。
package/README.md CHANGED
@@ -1,27 +1,44 @@
1
+ English | [中文版](./README.cn.md)
2
+
1
3
  # @labacacia/nps-sdk — TypeScript / Node.js
4
+ [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](../../LICENSE)
5
+ [![Release](https://img.shields.io/badge/release-v1.0.0--alpha.14-orange.svg)](../../CHANGELOG.md)
6
+ [![NCP](https://img.shields.io/badge/NCP-v0.8-5b8cff.svg)]()
7
+ [![NWP](https://img.shields.io/badge/NWP-v0.14-4af0b0.svg)]()
8
+ [![NIP](https://img.shields.io/badge/NIP-v0.10-7b61ff.svg)]()
9
+ [![NDP](https://img.shields.io/badge/NDP-v0.9-f0a050.svg)]()
10
+ [![NOP](https://img.shields.io/badge/NOP-v0.7-ff8c42.svg)]()
2
11
 
3
12
  TypeScript SDK for the **Neural Protocol Suite** (NPS) — a protocol suite designed for AI Agents.
4
13
  Part of the [LabAcacia](https://github.com/LabAcacia) / INNO LOTUS PTY LTD open-source ecosystem.
5
14
 
6
15
  ## Status
7
16
 
8
- **v0.1.0 — Phase 2** · 5 protocols · 139 tests · ≥ 98% coverage
17
+ **v1.0.0-alpha.14RFC-0002 cross-SDK port (third language)** · 5 protocols · 271 tests · ≥ 98% coverage
18
+
19
+ Alpha.14 candidate additions: typed remote NIP CA client (`NipCaClient`), native-mode NWP serving helper (`NwpNativeNodeServer`), and TC-N1/TC-N2 conformance manifest helpers (`@labacacia/nps-sdk/conformance`).
9
20
 
10
21
  | Protocol | Class | Status |
11
22
  |----------|-------|--------|
12
23
  | NCP — Neural Communication Protocol | Framing, codec | ✅ |
13
- | NWP — Neural Web Protocol | `NwpClient` | ✅ |
14
- | NIP — Neural Identity Protocol | `NipIdentity` | ✅ |
24
+ | NWP — Neural Web Protocol | `NwpClient`, `NwpNativeNodeServer` | ✅ |
25
+ | NIP — Neural Identity Protocol | `NipIdentity`, `NipIdentVerifier` (RFC-0002 §8.1 dual-trust), `AssuranceLevel` (RFC-0003), `nip.x509` + `nip.acme` | ✅ |
15
26
  | NDP — Neural Discovery Protocol | `InMemoryNdpRegistry`, `NdpAnnounceValidator` | ✅ |
16
27
  | NOP — Neural Orchestration Protocol | `NopClient` | ✅ |
17
28
 
29
+ **Earlier additions** — Full NPS-RFC-0002 X.509 + ACME `agent-01` NID certificate primitives:
30
+
31
+ - `nip.x509` — `issueLeaf` / `issueRoot` / `verify` (built on `@peculiar/x509` + native Web Crypto Ed25519).
32
+ - `nip.acme` — `AcmeClient` + in-process `AcmeServer` + JWS / message helpers (RFC 8555 + EdDSA per RFC 8037).
33
+ - `IdentFrame` extended with non-breaking `assuranceLevel` / `certFormat` / `certChain` constructor options; v1 verifiers ignore the new fields.
34
+
18
35
  ## Installation
19
36
 
20
37
  ```bash
21
38
  npm install @labacacia/nps-sdk
22
39
  ```
23
40
 
24
- > **Peer requirement:** Node.js 18+
41
+ > **Peer requirement:** Node.js 22+
25
42
 
26
43
  ## Quick Start
27
44
 
@@ -51,6 +68,20 @@ import { ActionFrame } from "@labacacia/nps-sdk/nwp";
51
68
  const result = await client.invoke(new ActionFrame("summarise", { maxTokens: 500 }));
52
69
  ```
53
70
 
71
+ ### NWP — native serving
72
+
73
+ ```typescript
74
+ import { NwpNativeNodeServer } from "@labacacia/nps-sdk/nwp";
75
+
76
+ const server = new NwpNativeNodeServer({
77
+ queryHandler: () => [{ id: 42 }],
78
+ actionHandler: (action) => ({ action: action.actionId }),
79
+ });
80
+
81
+ // `source`/`sink` are already past NCP preamble, TLS, and Hello negotiation.
82
+ await server.serve(source, sink);
83
+ ```
84
+
54
85
  ### NIP — Ed25519 identity
55
86
 
56
87
  ```typescript
@@ -66,6 +97,43 @@ const sig = loaded.sign({ action: "announce", nid: "urn:nps:node:example.com:
66
97
  const ok = loaded.verify({ action: "announce", nid: "urn:nps:node:example.com:data" }, sig);
67
98
  ```
68
99
 
100
+ ### NIP — remote CA client
101
+
102
+ ```typescript
103
+ import { NipCaClient } from "@labacacia/nps-sdk/nip";
104
+
105
+ const ca = new NipCaClient("https://ca.example.com", { routePrefix: "/nip" });
106
+ const discovery = await ca.getDiscovery();
107
+ const ident = await ca.registerAgent(
108
+ { identifier: "agent-a", pub_key: "ed25519:<pub>", capabilities: ["nwp:query"] },
109
+ "token",
110
+ );
111
+ const status = await ca.verifyAgent(ident.nid);
112
+ ```
113
+
114
+ ### Conformance manifest
115
+
116
+ ```typescript
117
+ import {
118
+ NODE_L1,
119
+ catalogForProfile,
120
+ createConformanceManifest,
121
+ validateConformanceManifest,
122
+ } from "@labacacia/nps-sdk/conformance";
123
+
124
+ const results = catalogForProfile(NODE_L1).map((c) => ({ id: c.id, result: "pass" as const }));
125
+ const manifest = createConformanceManifest({
126
+ profile: NODE_L1,
127
+ iutName: "my-node",
128
+ iutVersion: "1.0.0-alpha.14",
129
+ iutNid: "urn:nps:node:example.com:my-node",
130
+ peerName: "labacacia-fixture",
131
+ peerVersion: "1.0.0-alpha.14",
132
+ results,
133
+ });
134
+ const validation = validateConformanceManifest(manifest);
135
+ ```
136
+
69
137
  ### NDP — registry and signature validation
70
138
 
71
139
  ```typescript
@@ -101,11 +169,12 @@ console.log(status.state, status.aggregatedResult);
101
169
  ```typescript
102
170
  import { ... } from "@labacacia/nps-sdk"; // everything
103
171
  import { ... } from "@labacacia/nps-sdk/core"; // codec, frames, registry, cache
104
- import { ... } from "@labacacia/nps-sdk/ncp"; // AnchorFrame, CapsFrame, StreamFrame, …
172
+ import { ... } from "@labacacia/nps-sdk/ncp"; // AnchorFrame, CapsFrame, StreamFrame, HelloFrame,
105
173
  import { ... } from "@labacacia/nps-sdk/nwp"; // NwpClient, QueryFrame, ActionFrame
106
174
  import { ... } from "@labacacia/nps-sdk/nip"; // NipIdentity, IdentFrame, TrustFrame, RevokeFrame
107
175
  import { ... } from "@labacacia/nps-sdk/ndp"; // InMemoryNdpRegistry, NdpAnnounceValidator, AnnounceFrame, …
108
176
  import { ... } from "@labacacia/nps-sdk/nop"; // NopClient, NopTaskStatus, TaskFrame, …
177
+ import { ... } from "@labacacia/nps-sdk/conformance"; // TC-N1/TC-N2 catalogs and manifest validator
109
178
  ```
110
179
 
111
180
  ## NCP Codec
@@ -150,4 +219,4 @@ node node_modules/tsup/dist/cli-default.js
150
219
 
151
220
  ## License
152
221
 
153
- Apache 2.0 — see [LICENSE](../../LICENSE)
222
+ Apache 2.0 — see [LICENSE](https://github.com/labacacia/NPS-Dev/blob/main/LICENSE)
@@ -0,0 +1,55 @@
1
+ export declare const NODE_L1: "NPS-Node-L1";
2
+ export declare const NODE_L2: "NPS-Node-L2";
3
+ export interface NpsConformanceCase {
4
+ id: string;
5
+ profile: string;
6
+ requirement: string;
7
+ title: string;
8
+ optional: boolean;
9
+ }
10
+ export interface NpsConformanceCaseResult {
11
+ id: string;
12
+ result: "pass" | "fail" | "skip" | "na" | string;
13
+ message?: string;
14
+ }
15
+ export interface NpsConformanceActor {
16
+ name: string;
17
+ version: string;
18
+ nid?: string;
19
+ }
20
+ export interface NpsConformanceManifest {
21
+ profile: string;
22
+ profile_version: string;
23
+ iut: NpsConformanceActor;
24
+ peer: NpsConformanceActor;
25
+ run: {
26
+ date: string;
27
+ environment: string;
28
+ };
29
+ cases: readonly NpsConformanceCaseResult[];
30
+ summary: {
31
+ pass: number;
32
+ fail: number;
33
+ skip: number;
34
+ na: number;
35
+ };
36
+ }
37
+ export interface NpsConformanceValidation {
38
+ valid: boolean;
39
+ message: string;
40
+ }
41
+ export declare function createConformanceManifest(args: {
42
+ profile: string;
43
+ iutName: string;
44
+ iutVersion: string;
45
+ iutNid: string;
46
+ peerName: string;
47
+ peerVersion: string;
48
+ results: readonly NpsConformanceCaseResult[];
49
+ environment?: string;
50
+ }): NpsConformanceManifest;
51
+ export declare function catalogForProfile(profile: string): readonly NpsConformanceCase[];
52
+ export declare function validateConformanceManifest(manifest: NpsConformanceManifest): NpsConformanceValidation;
53
+ export declare const NODE_L1_CASES: readonly NpsConformanceCase[];
54
+ export declare const NODE_L2_CASES: readonly NpsConformanceCase[];
55
+ //# sourceMappingURL=conformance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,EAAG,aAAsB,CAAC;AAC9C,eAAO,MAAM,OAAO,EAAG,aAAsB,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAW,MAAM,CAAC;IACpB,OAAO,EAAM,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAQ,MAAM,CAAC;IACpB,QAAQ,EAAK,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAQ,MAAM,CAAC;IACjB,MAAM,EAAI,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAM,MAAM,CAAC;IACjB,OAAO,EAAG,MAAM,CAAC;IACjB,GAAG,CAAC,EAAM,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAU,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,GAAG,EAAc,mBAAmB,CAAC;IACrC,IAAI,EAAa,mBAAmB,CAAC;IACrC,GAAG,EAAc;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,KAAK,EAAY,SAAS,wBAAwB,EAAE,CAAC;IACrD,OAAO,EAAU;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3E;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAI,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,sBAAsB,CAgBzB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,kBAAkB,EAAE,CAIhF;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,sBAAsB,GAAG,wBAAwB,CA2BtG;AAMD,eAAO,MAAM,aAAa,EAAE,SAAS,kBAAkB,EAqBtD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,SAAS,kBAAkB,EAiBtD,CAAC"}
@@ -0,0 +1,100 @@
1
+ // Copyright 2026 INNO LOTUS PTY LTD
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ export const NODE_L1 = "NPS-Node-L1";
4
+ export const NODE_L2 = "NPS-Node-L2";
5
+ export function createConformanceManifest(args) {
6
+ const cases = [...args.results];
7
+ return {
8
+ profile: args.profile,
9
+ profile_version: args.profile === NODE_L2 ? "0.3" : "0.1",
10
+ iut: { name: args.iutName, version: args.iutVersion, nid: args.iutNid },
11
+ peer: { name: args.peerName, version: args.peerVersion },
12
+ run: { date: new Date().toISOString(), environment: args.environment ?? "unspecified" },
13
+ cases,
14
+ summary: {
15
+ pass: cases.filter((c) => c.result === "pass").length,
16
+ fail: cases.filter((c) => c.result === "fail").length,
17
+ skip: cases.filter((c) => c.result === "skip").length,
18
+ na: cases.filter((c) => c.result === "na").length,
19
+ },
20
+ };
21
+ }
22
+ export function catalogForProfile(profile) {
23
+ if (profile === NODE_L1)
24
+ return NODE_L1_CASES;
25
+ if (profile === NODE_L2)
26
+ return NODE_L2_CASES;
27
+ throw new RangeError(`Unknown NPS conformance profile: ${profile}`);
28
+ }
29
+ export function validateConformanceManifest(manifest) {
30
+ const catalog = catalogForProfile(manifest.profile);
31
+ const known = new Map(catalog.map((c) => [c.id, c]));
32
+ const seen = new Set();
33
+ const validResults = new Set(["pass", "fail", "skip", "na"]);
34
+ for (const result of manifest.cases) {
35
+ const knownCase = known.get(result.id);
36
+ if (knownCase === undefined)
37
+ return { valid: false, message: `Unknown conformance case id '${result.id}'.` };
38
+ if (seen.has(result.id))
39
+ return { valid: false, message: `Duplicate conformance case id '${result.id}'.` };
40
+ seen.add(result.id);
41
+ if (!validResults.has(result.result)) {
42
+ return { valid: false, message: `Case '${result.id}' has invalid result '${result.result}'.` };
43
+ }
44
+ if (result.result === "na" && !knownCase.optional) {
45
+ return { valid: false, message: `Case '${result.id}' is required and cannot be marked na.` };
46
+ }
47
+ }
48
+ const missing = catalog.filter((c) => !seen.has(c.id)).map((c) => c.id);
49
+ if (missing.length > 0) {
50
+ return { valid: false, message: `Missing conformance case results: ${missing.join(", ")}.` };
51
+ }
52
+ if (manifest.cases.some((c) => c.result === "fail" || c.result === "skip")) {
53
+ return { valid: false, message: "Conformance manifest contains fail or skip results." };
54
+ }
55
+ return { valid: true, message: "Conformance manifest is valid." };
56
+ }
57
+ function c(id, profile, requirement, title, optional = false) {
58
+ return { id, profile, requirement, title, optional };
59
+ }
60
+ export const NODE_L1_CASES = [
61
+ c("TC-N1-NCP-01", NODE_L1, "N1-NCP-01", "Tier-1 JSON frame round-trip"),
62
+ c("TC-N1-NCP-02", NODE_L1, "N1-NCP-02", "Hello + Anchor handshake"),
63
+ c("TC-N1-NCP-03", NODE_L1, "N1-NCP-03", "Loopback listener default"),
64
+ c("TC-N1-NCP-04", NODE_L1, "N1-NCP-04", "Tier-2 negotiation hygiene"),
65
+ c("TC-N1-NIP-01", NODE_L1, "N1-NIP-01", "Root keypair generation and permission"),
66
+ c("TC-N1-NIP-02", NODE_L1, "N1-NIP-02", "IdentFrame sign and verify"),
67
+ c("TC-N1-NIP-03", NODE_L1, "N1-NIP-03", "NID format"),
68
+ c("TC-N1-NIP-04", NODE_L1, "N1-NIP-04", "Sub-NID issuance", true),
69
+ c("TC-N1-NDP-01", NODE_L1, "N1-NDP-01", "AnnounceFrame carries activation_mode"),
70
+ c("TC-N1-NDP-02", NODE_L1, "N1-NDP-02", "AnnounceFrame signature"),
71
+ c("TC-N1-NDP-03", NODE_L1, "N1-NDP-03", "ResolveFrame response"),
72
+ c("TC-N1-NDP-04", NODE_L1, "N1-NDP-04", "GraphFrame subscription", true),
73
+ c("TC-N1-NWP-01", NODE_L1, "N1-NWP-01", "Inbox accepts ActionFrame"),
74
+ c("TC-N1-NWP-02", NODE_L1, "N1-NWP-02", "Inbox persists across restart"),
75
+ c("TC-N1-NWP-03", NODE_L1, "N1-NWP-03", "NWP pull serves inbox"),
76
+ c("TC-N1-NWP-04", NODE_L1, "N1-NWP-04", "100 QPS baseline"),
77
+ c("TC-N1-NWP-05", NODE_L1, "N1-NWP-05", "Push path", true),
78
+ c("TC-N1-OBS-01", NODE_L1, "N1-OBS-01", "Frame log entry per direction"),
79
+ c("TC-N1-OBS-02", NODE_L1, "N1-OBS-02", "Log entry fields"),
80
+ c("TC-N1-OBS-03", NODE_L1, "N1-OBS-03", "Log destination flexibility"),
81
+ ];
82
+ export const NODE_L2_CASES = [
83
+ c("TC-N2-AnchorTopo-01", NODE_L2, "L2-08", "Snapshot of a 3-member cluster"),
84
+ c("TC-N2-AnchorTopo-02", NODE_L2, "L2-08", "Version monotonicity across joins"),
85
+ c("TC-N2-AnchorTopo-03", NODE_L2, "L2-08", "Sub-Anchor member surfaces"),
86
+ c("TC-N2-AnchorStream-01", NODE_L2, "L2-08", "member_joined on NDP Announce"),
87
+ c("TC-N2-AnchorStream-02", NODE_L2, "L2-08", "member_left on NDP TTL expiry"),
88
+ c("TC-N2-AnchorStream-03", NODE_L2, "L2-08", "Resume from topology.since_version"),
89
+ c("TC-N2-AnchorTopo-04", NODE_L2, "L2-08", "Unauthorized topology access"),
90
+ c("TC-N2-AnchorTopo-05", NODE_L2, "L2-08", "Depth cap exceeded"),
91
+ c("TC-N2-AnchorTopo-06", NODE_L2, "L2-08", "Unsupported topology scope"),
92
+ c("TC-N2-AnchorTopo-07", NODE_L2, "L2-08", "Unsupported topology filter"),
93
+ c("TC-N2-AnchorTopo-08", NODE_L2, "L2-08", "Unsupported reserved topology type"),
94
+ c("TC-N2-AnchorStream-04", NODE_L2, "L2-08", "resync_required when version is too old"),
95
+ c("TC-N2-Tls-01", NODE_L2, "NPS-RFC-0006", "ALPN nps/1.0 negotiated over TLS 1.3"),
96
+ c("TC-N2-Tls-02", NODE_L2, "NPS-RFC-0006", "Mutual TLS required"),
97
+ c("TC-N2-Tls-03", NODE_L2, "NPS-RFC-0006", "Client cert trust anchor and NID binding"),
98
+ c("TC-N2-Tls-04", NODE_L2, "NPS-RFC-0006", "IdentFrame/certificate NID mismatch"),
99
+ ];
100
+ //# sourceMappingURL=conformance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformance.js","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes